69
NVMf: 5 млн IOPS по сети своими руками 3.0

Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

  • Upload
    ibs

  • View
    248

  • Download
    5

Embed Size (px)

Citation preview

Page 1: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

NVMf:5 млн IOPS по сетисвоими руками

3.0

Page 2: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

$ who am i

Системный архитектор в системном интеграторе (IBS)

• Текущие трудовые вопросы: серийные аппаратно-программные комплексы на несанкционном оборудовании и ПО

Только личное мнение и личный опыт

• Никаких коммерческих и рекламных интересов

• Никаких мнений от имени работодателя или его партнёров

• Могу ошибаться или заблуждаться, но искренне и не ради выгоды

Page 3: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

Современность и новая нормальностьПропускные способности, задержки, цены: новые компоненты, смены трендов

Page 4: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

Пропускные способности…Гбит/с

100

64

56

40

32

1063

2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016

Infiniband QDR / 40 GbE

PCIe 2.0 ×4

10 GbESAS 1, SATA II

SAS 1, SATA II

Infiniband FDR / 56 GbE

Infiniband EDR

PCIe 3.0 ×4

Page 5: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

Пропасть отзывчивостиУстройство Задержка Если бы доступ к L1-кэшу был бы 1 сек

Процессорный кэш L1 0,5 нс 1 сек

ОЗУ 20 нс 40 сек

Коммутатор 100 GbE 1 мкс 33 мин 33 сек

3D XPoint / Optane 7 мкс 3 ч 53 мин 20 сек

NVMe NAND, запись 30 мкс 16 ч 40 мин 10 сек

NVMe NAND, чтение 80 мкс 1 день 20 ч 26 мин 2 сек

PCIe-флэш-массив DSSD D5 100 мкс 2 дня 7 ч 33 мин 20 сек

SATA NAND, чтение 120 мкс 2 дня 18 ч 40 мин 10 сек

SAS-диск 100 мс 6 лет 4 мес. 2 дня 17 ч 20 мин …

Посетить также: Михаил Конюхов. HDD, SSD, RAM, RAID, и кого на ком кэшировать // HighLoad++–2016, Дели – Калькутта, 8 ноября 2016 18:00

Page 6: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

Кто задерживает?

График – Амбер Хаффман, ©2016

– устройство

– контроллер

– программная обработка

Page 7: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

Цена терабайта: сейчас и в перспективе

NVMe NAND(не Wikibon)

Page 8: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

Вопросы экономики

• $ за IOPS · ТБ ?

• $ за IOPS / задержка ?

Зависят от контекста и быстро меняются

со временем

• Объём

• Коридор IOPS

• Коридор задержки

Отправные ограничения $ за ТБ

Page 9: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

Ингредиент 0:

Page 10: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

Форматы для PCI-Express-накопителейБортовой ×4, ×8 M.2 U.2

Изображения Дмитрий Носачёв, CC-SA 4.0, 2016; ©Samsung, 2016; ©Lenovo, 2016

В сервер, рабочую станцию (1 – 2 устройства)

Page 11: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

Серверные платформы с U.2

Supermicro:

• 2 U, 48 NVMe

• 24 Гбит/с на чтение и 750 тыс. IOPS на устройство

Quanta:

• 4 узла в 2 U

• 8 NVMe в каждом

Посетить также: Андрей Чернышёв. Как FB, Apple и Googleразрушают традиции в компьютерном бизнесе, и почему это для индустрии хорошо// HighLoad++–2016, Сингапур, 7 ноября 2016 17:00

Го

ря

ча

я з

ам

ен

а

Page 12: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

Пределы близки

2 × Intel Xeon E5 – 80 линий PCIe

•80/4 = 20 устройств?

•А ещё сетевые адаптеры…

Теплопакет…

Page 13: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

NVM Express: забыть всё прошлое

Упрощённый набор команд

11 команд ввода-вывода (3 обязательных)

16 команд управления

(10 обязательных)

Глубокие очереди

65 тыс. очередей

65 тыс. команд на очередь

MSI-X (message-signaled

interrupts)Параллелизм

До 2048 прерываний

Привязка к ближнему NUMA-узлу

Page 14: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

Очереди постановки и выполнения

Изображение ©NVM Express Organization, 2014

Page 15: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

Последовательность выполнения

Изображение ©NVM Express Organization, 2014

Page 16: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

NVMe против AHCI

NVMe

-

Неблокирующий, сигнальный регистр на очередь

65535 очередей

65535 команд на очередь

AHCI

4 регистровых чтения на команду (8000 циклов)

Выполнение команды требует синхронной блокировки

1 очередь

32 команды на очередь

Page 17: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

Пространства имён

/dev/nvme0n1p2

Номер устройства Номер пространства имён Раздел

“LUN для NVMe”

Позволяют сделать несколько полноценных устройств из

одного

Все NVMe-команды параметризированы пространством имён

Многопутевой ввод-вывод с разделяемым доступом к

пространствам имён

Page 18: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

NVMe Data Set Management

• Размер доступа в логических блоках

• Последовательное чтение, последовательная запись

• Задержка (поменьше, побольше)

• Частота доступа (по чтению, по записи, часто/редко)

Оптимизационные «подсказки»

• TRIM

Управляющие команды

Page 19: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

Мониторинг SMART

Состояние NVMeконтролируется через SMART

• «Как только тает зарезервированная область – пора менять»

Но: не со всеми устройствами всё хорошо

• …падает производительность, а SMART ничего не показывает…

Page 20: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

Зерно сомнения: несколько SATA SSD против одного NVMe?Зрелая технология

• NVMe – стабильный стандарт

• NAND – тот же

Доступность аппаратных RAID

• появились RAID для PCI Express

• меньше и меньше RAID-конфигураций в реальной жизни

низкая цена?

• NAND тот же!

Page 21: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

Micron 3D-XPoint, Intel Optane: coming soon

Новая технология (не NAND)

Для установки в DDR (NVDIMM) и в

PCIe (NVMe)

Предположительно $/1 TB = × 0,5 RAM

и 5×NAND

Page 22: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

… рекламируется и обещается недорогим

Графика: ©Intel, 2015

Page 23: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

3D XPoint / Optane: Смещение задержки

График: ©Джек Жан, Intel, 2014

Page 24: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

Ингредиент 1: безубыточная сеть

Page 25: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

Изображение: ©Mellanox, 2013

Page 26: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

Прямой доступ к удалённой памяти

Zero-copy для сети: мимо циклов ЦПУ и буферов ОС

Прямой доступ к удалённому ОЗУ

Разгрузка ЦПУ

Реализации (язык Verbs)

Infiniband

RoCE(RDMA over Converged Ethernet)

iWARP(Internet Wide-area RDMA Protocol)

Page 27: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

RDMA-сети: от недоверия к внедрению

2010-е

Сближение с массовым классом по цене

Свободное ПО (OFED), поддержка в дистрибутивах

Адаптационные библиотеки (Accelio)

2000-еДорого

(«забава для высокобюджетных HPC»)

«Непонятное ПО»Нужно переписывать

сетевую часть ПО («нельзя просто открыть сокет»)

Page 28: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

Подключаем блочные устройства по безубыточной сети…

iSER

• iSCSI Extensions for RDMA

SRP

• SCSI RDMA protocol

SCSI-команды по сети? А если NVMe-команды по сети?

NVMf !

Page 29: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

И0 + И1 → NVMfNVM Express over Fabrics[NVMeoF] [NVMef]

Page 30: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

NVMf

Способ разговора на языке NVMe по сети

FibreChannel

RDMA

Inifniband

iWARP

RoCE

«Фабрики будущего»

Page 31: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

Стандарт

NVMe Express Oraganization

Работа над стандартизацией с 2014 года

5 июня 2016: спецификация NVM Express Over Fabrics, версия 1.0

Необходимые для сети уровни абстракции и команды

«Капсулы» (вместо очередей в разделяемой памяти)

Connect, Property Get, Property Set

Контроллер обнаружения (NQN вместо PCIe-шинной идентификации)

Page 32: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

Ранние реализации

HGST• Проброс NVMe-команд через SRP с преобразованием

Intel SPDK(Storage

Performance Development Kit)

• С использованием Intel Dataplane Development Kit

• Лицензия BSD

• Драйвер в пользовательском пространстве

Page 33: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

Ядро Linux

• рабочая группа

• список рассылки

• приватный git-репозиторий

2015

• Добавлено в ядро 4.8

6 июня 2016• Ядро 4.8

выпущено

2 октября 2016

Page 34: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками
Page 35: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

Инициатор и цель

Хост-драйвер

• Поддержка RDMA-транспорта –Infiniband, RoCE, iWARP, OmniPath

• Множественный Connect/Disconnect

• Передача в транспорт команд NVMe и данных, полученных от ядра NVMe

• Сервис обнаружения

• Многопутевой ввод-вывод (multipath)

• Поддержка соедения (keep-alive)

nvmet[arget]

• Поддержка обязательных сетевых и NVMe-команд

• Поддержка множественных хостов, подсистем, пространств имён

• Сервис обнаружения

• Поддерживает любое блочное устройство (NVMe, SCSI, ramdisk, virtio…)

Page 36: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

Объём кода хост-драйвера по назначению

Диаграмма: ©Кристоф Хельвиг, 2016

Page 37: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

Дело за малым – настроить!

Kernel 4.8.2 (выпуск 16 октября 2016)

nvme-cli 0.8

Модули nvmet, nvmet-rdma

https://community.mellanox.com/docs/DOC-2504

Page 38: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

Обнаруживаем и подключаем!# nvme discover -t rdma -a 192.168.0.2 -s 1023

<…>

Discovery Log Number of Records 1, Generation counter 1

=====Discovery Log Entry 0======

<…>

subnqn: nvmes0

<…>

# nvme connect –t rdma –n nvmes0 -a 192.168.0.2 -s 1023

# lsblk | grep nvme

nvme0n1 259:0 0 1G 0 disk

Page 39: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

ЗамерыЧто и как замерять, замеры и некоторые их результаты

Page 40: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

Что замерять?

IOPS на чтение

IOPS на запись

Случайное

Задержка

Cеть?

• 4K и другие

• 128K, 4K и другие

• Но и последовательное

• Достаточность

• Сбалансированность

Page 41: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

Чем замерять?

hdparm

--directdd

iflag=direct oflag=direct

Линейная скорость

Прикидочный тест

iometer

Есть сомнительные результаты…

fio

Стандарт де-факто

Множество настроек

Размер блока

4k

1k 16k 64k 256k

«замеряйте реальную нагрузку,

а не гоняйте синтетику»

Если она типична, и её

можно захватить и

прогнать – то так и надо

Page 42: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

NUMA: для PCIe – имеет значение

Изображение: ©Кристофер Пакен, 2016

Хаб ввода-вывода на каждом NUMA-узле (а не один за систему)

Начиная с Sandy Bridge

NVMe-накопители и сетевые карты– на PCIe

Важна NUMA-локальность

Page 43: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

NUMA: тюнинг

Правильный FIO:

cpus_allowed

numa_cpu_nodes

numa_mem_policy

Эксплуатационный тюнинг

taskset --cpu-list

udev-rules

cgroups

numad

Page 44: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

Замеры: что даёт сеть?

График – Zeta Systems, ©2016

1 × Xeon E5

1 × Xeon E5

Connect X3

Connect X3

NVMe

NVMe

40 Гбит/c

Page 45: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

Тест от Samsung

Изображение: ©Samsung, 2016

24 × NVMe 960 ГБ

Page 46: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

Задержки в тесте Samsung

Page 47: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

Приросты задержки

Изображение: ©Samsung, 2016

Количество устройств

Page 48: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

IOPS в тесте Samsung

Изображение: ©Samsung, 2016

Page 49: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

Замеры СУБД (SQL IOPS)

Oracle Database

SLOB CALIBRATE_IO Orion

MySQL PostgreSQL

Sysbench? iostat, pt-diskstats?

Сходить также: Андрей Николаенко. Как получать и интерпретировать показатели производительности СУБД? // Технологии баз данных, 29–30 ноября, 2016

Page 50: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

СУБДСУБД над сырыми устройствами

Oracle Database, ASM и ACFS

Файлово-ориентированные

Page 51: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

СУБД над сырыми устройствами

• Oracle Database

• IBM DB2

• SAP [Sybase] ASE

• Aerospike

• MySQL [InnoDB]

/dev/raw, raw → O_DIRECT

Page 52: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

Oracle ASM

ACFS – кластерная файловая система над ASM

NVMf даёт прямую возможность собрать инфраструктуру грида

Ядро 4.8? Это RHEL 8? Oracle supported platforms…

Automatic Storage ManagementПрограммно-определяемая сеть хранения и менеджер томов для Oracle Database

…над любыми блочными устройствами

Управляемая избыточность Локальность чтения

Page 53: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

Флэш в грид– в Oracle ASM и Oracle RAC

Калифорнийский стартап (2015)

Акцент на возможности самосборной

инфраструктуры вместо all-flash-массивов

Свободное ПО –конфигурирование и

обслуживание сетевой флэш-инфраструктуры

Коммерческая поддержка

Page 54: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

Флэшгрид: конструкции

Гиперконвергетнаябеcкоммутаторная

Гиперконвергетнаямасштабируемая

Дезагрегированная(с выделенными узлами хранения,

как в Exadata)

Изображения: ©Flashgrid, 2015

Page 55: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

5,6 млн IOPS на паре машин…

Евстатиос Евстатиу(Федеральное ИТ-бюро,

Швейцария)

• 2 × HP ML 350 G9

• Oracle RAC 12c

• Flashgrid

Page 56: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

MySQL, MariaDB

• innodb_data_file_path = /dev/raw/raw1:20000Mnewraw;

• Oracle ACFS• доступно при приобретении поддержки на любой продукт Oracle – Oracle Linux,

MySQL, Oracle VM

См. также: Ilmar Kerm (Affecto). Making MySQL available highly available using Oracle Grid Infrastructure // OUGE, 2016

Page 57: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

Файлово-POSIX-ортодоксальные СУБД

• Множественные вопросы в условиях программно-определяемых сетей хранения (fsync())

• Не ориентированы на кластеры с общими ресурсами хранения

PostgreSQL

• Большой и сверхотзывчивый пул под управлением одного узла

• Без RAID? dm-mirror?

• Горячий резерв без [WAL-]репликации

NVMf –возможность и

для них?

Page 58: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

КонтейнерыDocker everywhere

Page 59: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

NVMf для Kubernetes PV Plugin

Но в Kubernetes есть PV (persistent volumes)– тома для постоянного хранения

NFS iSCSI RBD Cinder … HostPath

В docker-мире содержимое контейнера обычно уничтожается после останова…

Page 60: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

Изображение: ©Samsung, 2016

Результат NVMf неотличим от локально-паспортного

Page 61: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

Спрос: новый тип устройства для Kubernetes PV

Но в Kubernetes есть PV (persistent volumes)– тома для постоянного хранения

NFS iSCSI RBD Cinder NVMf HostPath

Page 62: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

OpenStackMirantis for Cinder

Page 63: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

NVMf-драйвер для Cinder

25 октября 2016

• На базе Intel SPDK

• Драйвер для Cinder

• Доработки для Nova

Возможность отдать NVMf-том виртуальной машине

Page 64: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

Нужна ли NVMf кластернымсистемам, у которых сеть –неотъемлемая часть конструкции?Программно-определяемые сети хранения

Кластеры распределённой обработки

Page 65: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

Поможет ли NVMf для Hadoop?

Hadoop Classic = HDD + 10GbE

Уже есть HiBD(Университет Огайо)

Hadoop над программно-определяемой сетью (если

задействует NVMf?)

• ↓↓ $ / ТБ

• RDMA-Hadoop-2.x (HDFS на Vebrs)

• RDMA-Spark

• RDMA-Hbase

• CephFS

• GlusterFS

• Taychon (IMDG)

Page 66: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

SDS

Ceph

GlusterFS

Возможность: разделение слоя устройств

и слоя доступа

• Поддерживается RDMA (через Accelio)

• Отчёты о применении SPDK-драйвера для NVMe

• Реализован Infiniband/RDMA

• Например, флэш-массив на 3 узлах, роздан по NVMf SDS-кластеру из 12 узлов

Page 67: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

Альтернативы: аппаратура

Массив Mangstor

• “5 млн IOPS на NVMf уже сделали за вас”

Массив DSSD5 на PCIe-расширителях

• 10 млн IOPS

PCI-Express-коммутаторы

Изображения: ©Mangstor, ©Dell (EMC), ©Dolhpin

Page 68: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

Связанная альтернатива: «программно-определяемая память»

Plexistor – свободный P[ersistent]MoF

Слойка из NVDIMM + NVMe Презентуется как память …и как блочное устройство

ScaleMPНа каждый узел – специализированная

виртуальная машинаВиртуальная память из ОЗУ + NVMe из

нескольких узлов – в общий пул

Виртуальным машинам раздаются «виртуальные NUMA-узлы» из общего

пула

Растягиваем ОЗУ на NVMe и продлеваем по сети

Page 69: Андрей Николаенко, IBS. NVMf: 5 млн IOPS по сети своими руками

Главное чудо NVMf: возможность, ранее доступная только на уровне hi-end-all-flash-массивов

Сверхотзывчивый и масштабируемый блочный NVMe-массивна оборудовании массового класса

Миллионы IOPS (и десятки миллионов IOPS достижимы)

Десятки и сотни терабайт

Посетить также: Сергей Платонов (Raidix), «Поговорим о NVMe over Fabrics» // Linux Piter, 11–12 ноября, 2016

“Представлю результаты сравнительного тестирования производительности NVMe over RDMA с другими протоколами, использующими удаленный прямой доступ к памяти (iSER, SRP, SMB Direct) на кластере с суммарной пропускной способностью более 4Тб/с”