В выпуске 4.8 ядра Linux появилась поддержка NVMf (NVM Express over Fabrics) — стандартизованной возможности присоединять по сети как блочные устройства твердотельные накопители, установленные в разъёмы PCI Express. NVMf лишён многих недостатков iSCSI, повторяющего по сети SCSI-команды со всеми их издержками времён дисковых накопителей, и главное — позволяет по полной использовать возможности сетей с прямым доступом к оперативной памяти (RDMA). Таким образом, можно под управлением одного узла собрать сверхбыстрый и сверхотзывчивый пул блочных устройств, не прибегая к покупке дорогого флэш-массива. Но как воспользоваться этим пулом, не загубив теоретические показатели программными обёртками?
В докладе будут рассмотрены варианты применения NVMf для различных конфигураций PostgreSQL, Oracle Database, Hadoop, файловых хранилищ, о разработках в направлении «программно-определяемой памяти» с применением NVMe-устройств, доступных по сети, обсуждены текущие проблемы, ограничения и перспективы. Особое внимание будет уделено практическим способам измерения производительности ввода-вывода с учётом задачи, решаемой подсистемой хранения.
2. $ who am i
Системный архитектор в системном интеграторе (IBS)
• Текущие трудовые вопросы: серийные аппаратно-программные
комплексы на несанкционном оборудовании и ПО
Только личное мнение и личный опыт
• Никаких коммерческих и рекламных интересов
• Никаких мнений от имени работодателя или его партнёров
• Могу ошибаться или заблуждаться, но искренне и не ради выгоды
5. Пропасть отзывчивости
Устройство Задержка Если бы доступ к 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
8. Вопросы экономики
• $ за IOPS · ТБ ?
• $ за IOPS / задержка ?
Зависят от контекста
и быстро меняются
со временем
• Объём
• Коридор IOPS
• Коридор задержки
Отправные
ограничения $ за ТБ
11. Серверные платформы с 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
Горячаязамена
12. Пределы близки
2 × Intel Xeon E5 – 80 линий PCIe
•80/4 = 20 устройств?
•А ещё сетевые адаптеры…
Теплопакет…
13. NVM Express: забыть всё прошлое
Упрощённый
набор команд
11 команд
ввода-вывода
(3 обязательных)
16 команд
управления
(10 обязательных)
Глубокие
очереди
65 тыс.
очередей
65 тыс.
команд на
очередь
MSI-X (message-
signaled
interrupts)
Параллелизм
До 2048
прерываний
Привязка к
ближнему
NUMA-узлу
16. NVMe против AHCI
NVMe
-
Неблокирующий, сигнальный регистр
на очередь
65535 очередей
65535 команд на очередь
AHCI
4 регистровых чтения на команду
(8000 циклов)
Выполнение команды требует
синхронной блокировки
1 очередь
32 команды на очередь
17. Пространства имён
/dev/nvme0n1p2
Номер устройства Номер пространства имён Раздел
“LUN для NVMe”
Позволяют сделать несколько
полноценных устройств из
одного
Все NVMe-команды
параметризированы
пространством имён
Многопутевой ввод-вывод с
разделяемым доступом к
пространствам имён
18. NVMe Data Set Management
• Размер доступа в логических блоках
• Последовательное чтение, последовательная запись
• Задержка (поменьше, побольше)
• Частота доступа (по чтению, по записи, часто/редко)
Оптимизационные «подсказки»
• TRIM
Управляющие команды
19. Мониторинг SMART
Состояние NVMe
контролируется через SMART
• «Как только тает зарезервированная
область – пора менять»
Но: не со всеми
устройствами всё хорошо
• …падает производительность, а
SMART ничего не показывает…
20. Зерно сомнения:
несколько SATA SSD против одного NVMe?
Зрелая технология
• NVMe – стабильный стандарт
• NAND – тот же
Доступность аппаратных RAID
• появились RAID для PCI Express
• меньше и меньше RAID-конфигураций в реальной жизни
низкая цена?
• NAND тот же!
21. Micron 3D-XPoint, Intel Optane: coming soon
Новая технология
(не NAND)
Для установки в
DDR (NVDIMM) и в
PCIe (NVMe)
Предположительно
$/1 TB = × 0,5 RAM
и 5×NAND
26. Прямой доступ к удалённой памяти
Zero-copy для сети: мимо циклов
ЦПУ и буферов ОС
Прямой доступ к удалённому ОЗУ
Разгрузка ЦПУ
Реализации
(язык Verbs)
Infiniband
RoCE
(RDMA over Converged Ethernet)
iWARP
(Internet Wide-area RDMA Protocol)
27. RDMA-сети: от недоверия к внедрению
2010-е
Сближение с массовым классом
по цене
Свободное ПО (OFED),
поддержка в дистрибутивах
Адаптационные библиотеки (Accelio)
2000-е
Дорого
(«забава для
высокобюджетных HPC»)
«Непонятное ПО»
Нужно переписывать
сетевую часть ПО
(«нельзя просто открыть сокет»)
28. Подключаем блочные устройства
по безубыточной сети…
iSER
• iSCSI Extensions for RDMA
SRP
• SCSI RDMA protocol
SCSI-команды по сети?
А если NVMe-команды по сети?
NVMf !
30. NVMf
Способ разговора на языке NVMe по сети
Fibre
Channel
RDMA
Inifniband
iWARP
RoCE
«Фабрики будущего»
31. Стандарт
NVMe Express
Oraganization
Работа над стандартизацией с 2014 года
5 июня 2016: спецификация NVM Express
Over Fabrics, версия 1.0
Необходимые для сети
уровни абстракции и команды
«Капсулы»
(вместо очередей в разделяемой памяти)
Connect, Property Get, Property Set
Контроллер обнаружения
(NQN вместо PCIe-шинной идентификации)
32. Ранние реализации
HGST
• Проброс NVMe-команд через SRP с преобразованием
Intel SPDK
(Storage
Performance
Development Kit)
• С использованием Intel Dataplane
Development Kit
• Лицензия BSD
• Драйвер в пользовательском пространстве
33. Ядро Linux
• рабочая группа
• список рассылки
• приватный git-
репозиторий
2015
• Добавлено в
ядро 4.8
6 июня 2016
• Ядро 4.8
выпущено
2 октября
2016
34.
35. Инициатор и цель
Хост-драйвер
• Поддержка RDMA-транспорта –
Infiniband, RoCE, iWARP, OmniPath
• Множественный Connect/Disconnect
• Передача в транспорт команд NVMe и
данных, полученных от ядра NVMe
• Сервис обнаружения
• Многопутевой ввод-вывод (multipath)
• Поддержка соедения (keep-alive)
nvmet[arget]
• Поддержка обязательных сетевых и
NVMe-команд
• Поддержка множественных хостов,
подсистем, пространств имён
• Сервис обнаружения
• Поддерживает любое блочное
устройство (NVMe, SCSI, ramdisk,
virtio…)
40. Что замерять?
IOPS на чтение
IOPS на запись
Случайное
Задержка
Cеть?
• 4K и другие
• 128K, 4K и другие
• Но и последовательное
• Достаточность
• Сбалансированность
49. Замеры СУБД (SQL IOPS)
Oracle Database
SLOB CALIBRATE_IO Orion
MySQL PostgreSQL
Sysbench? iostat, pt-diskstats?
Сходить также: Андрей Николаенко. Как получать и
интерпретировать показатели производительности СУБД?
// Технологии баз данных, 29–30 ноября, 2016
50. СУБД
СУБД над сырыми устройствами
Oracle Database, ASM и ACFS
Файлово-ориентированные
51. СУБД над сырыми устройствами
• Oracle Database
• IBM DB2
• SAP [Sybase] ASE
• Aerospike
• MySQL [InnoDB]
/dev/raw, raw → O_DIRECT
52. Oracle ASM
ACFS – кластерная файловая система над ASM
NVMf даёт прямую возможность собрать инфраструктуру грида
Ядро 4.8? Это RHEL 8? Oracle supported platforms…
Automatic Storage Management
Программно-определяемая
сеть хранения и менеджер
томов для Oracle Database
…над любыми блочными
устройствами
Управляемая избыточность Локальность чтения
53. Флэш в грид
– в Oracle ASM и Oracle RAC
Калифорнийский
стартап (2015)
Акцент на возможности
самосборной
инфраструктуры вместо
all-flash-массивов
Свободное ПО –
конфигурирование и
обслуживание сетевой
флэш-инфраструктуры
Коммерческая
поддержка
55. 5,6 млн IOPS на паре машин…
Евстатиос Евстатиу
(Федеральное ИТ-бюро,
Швейцария)
• 2 × HP ML 350 G9
• Oracle RAC 12c
• Flashgrid
56. 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
57. Файлово-POSIX-ортодоксальные СУБД
• Множественные вопросы в условиях программно-
определяемых сетей хранения (fsync())
• Не ориентированы на кластеры с общими ресурсами
хранения
PostgreSQL
• Большой и сверхотзывчивый пул под управлением
одного узла
• Без RAID? dm-mirror?
• Горячий резерв без [WAL-]репликации
NVMf –
возможность и
для них?
59. NVMf для Kubernetes PV Plugin
Но в Kubernetes есть PV (persistent volumes)
– тома для постоянного хранения
NFS iSCSI RBD Cinder … HostPath
В docker-мире содержимое контейнера обычно уничтожается после останова…
61. Спрос: новый тип устройства для
Kubernetes PV
Но в Kubernetes есть PV (persistent volumes)
– тома для постоянного хранения
NFS iSCSI RBD Cinder NVMf HostPath
63. NVMf-драйвер для Cinder
25 октября 2016
• На базе Intel SPDK
• Драйвер для Cinder
• Доработки для Nova
Возможность отдать NVMf-том виртуальной
машине
64. Нужна ли NVMf кластерным
системам, у которых сеть –
неотъемлемая часть конструкции?
Программно-определяемые сети хранения
Кластеры распределённой обработки
65. Поможет ли NVMf для Hadoop?
Hadoop Classic = HDD + 10GbE
Уже есть HiBD
(Университет Огайо)
Hadoop над программно-
определяемой сетью (если
задействует NVMf?)
• ↓↓ $ / ТБ
• RDMA-Hadoop-2.x (HDFS на Vebrs)
• RDMA-Spark
• RDMA-Hbase
• CephFS
• GlusterFS
• Taychon (IMDG)
66. SDS
Ceph
GlusterFS
Возможность:
разделение слоя устройств
и слоя доступа
• Поддерживается RDMA (через Accelio)
• Отчёты о применении SPDK-драйвера
для NVMe
• Реализован Infiniband/RDMA
• Например, флэш-массив на 3 узлах,
роздан по NVMf SDS-кластеру из 12
узлов
68. Связанная альтернатива:
«программно-определяемая память»
Plexistor – свободный P[ersistent]MoF
Слойка из NVDIMM + NVMe Презентуется как память …и как блочное устройство
ScaleMP
На каждый узел – специализированная
виртуальная машина
Виртуальная память из ОЗУ + NVMe из
нескольких узлов – в общий пул
Виртуальным машинам раздаются
«виртуальные NUMA-узлы» из общего
пула
Растягиваем ОЗУ на NVMe и продлеваем по сети
69. Главное чудо 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Тб/с”