Upload
ibs
View
248
Download
5
Embed Size (px)
Citation preview
NVMf:5 млн IOPS по сетисвоими руками
3.0
$ who am i
Системный архитектор в системном интеграторе (IBS)
• Текущие трудовые вопросы: серийные аппаратно-программные комплексы на несанкционном оборудовании и ПО
Только личное мнение и личный опыт
• Никаких коммерческих и рекламных интересов
• Никаких мнений от имени работодателя или его партнёров
• Могу ошибаться или заблуждаться, но искренне и не ради выгоды
Современность и новая нормальностьПропускные способности, задержки, цены: новые компоненты, смены трендов
Пропускные способности…Гбит/с
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
Пропасть отзывчивостиУстройство Задержка Если бы доступ к 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
Кто задерживает?
График – Амбер Хаффман, ©2016
– устройство
– контроллер
– программная обработка
Цена терабайта: сейчас и в перспективе
NVMe NAND(не Wikibon)
Вопросы экономики
• $ за IOPS · ТБ ?
• $ за IOPS / задержка ?
Зависят от контекста и быстро меняются
со временем
• Объём
• Коридор IOPS
• Коридор задержки
Отправные ограничения $ за ТБ
Ингредиент 0:
Форматы для PCI-Express-накопителейБортовой ×4, ×8 M.2 U.2
Изображения Дмитрий Носачёв, CC-SA 4.0, 2016; ©Samsung, 2016; ©Lenovo, 2016
В сервер, рабочую станцию (1 – 2 устройства)
Серверные платформы с 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
Го
ря
ча
я з
ам
ен
а
Пределы близки
2 × Intel Xeon E5 – 80 линий PCIe
•80/4 = 20 устройств?
•А ещё сетевые адаптеры…
Теплопакет…
NVM Express: забыть всё прошлое
Упрощённый набор команд
11 команд ввода-вывода (3 обязательных)
16 команд управления
(10 обязательных)
Глубокие очереди
65 тыс. очередей
65 тыс. команд на очередь
MSI-X (message-signaled
interrupts)Параллелизм
До 2048 прерываний
Привязка к ближнему NUMA-узлу
Очереди постановки и выполнения
Изображение ©NVM Express Organization, 2014
Последовательность выполнения
Изображение ©NVM Express Organization, 2014
NVMe против AHCI
NVMe
-
Неблокирующий, сигнальный регистр на очередь
65535 очередей
65535 команд на очередь
AHCI
4 регистровых чтения на команду (8000 циклов)
Выполнение команды требует синхронной блокировки
1 очередь
32 команды на очередь
Пространства имён
/dev/nvme0n1p2
Номер устройства Номер пространства имён Раздел
“LUN для NVMe”
Позволяют сделать несколько полноценных устройств из
одного
Все NVMe-команды параметризированы пространством имён
Многопутевой ввод-вывод с разделяемым доступом к
пространствам имён
NVMe Data Set Management
• Размер доступа в логических блоках
• Последовательное чтение, последовательная запись
• Задержка (поменьше, побольше)
• Частота доступа (по чтению, по записи, часто/редко)
Оптимизационные «подсказки»
• TRIM
Управляющие команды
Мониторинг SMART
Состояние NVMeконтролируется через SMART
• «Как только тает зарезервированная область – пора менять»
Но: не со всеми устройствами всё хорошо
• …падает производительность, а SMART ничего не показывает…
Зерно сомнения: несколько SATA SSD против одного NVMe?Зрелая технология
• NVMe – стабильный стандарт
• NAND – тот же
Доступность аппаратных RAID
• появились RAID для PCI Express
• меньше и меньше RAID-конфигураций в реальной жизни
низкая цена?
• NAND тот же!
Micron 3D-XPoint, Intel Optane: coming soon
Новая технология (не NAND)
Для установки в DDR (NVDIMM) и в
PCIe (NVMe)
Предположительно $/1 TB = × 0,5 RAM
и 5×NAND
… рекламируется и обещается недорогим
Графика: ©Intel, 2015
3D XPoint / Optane: Смещение задержки
График: ©Джек Жан, Intel, 2014
Ингредиент 1: безубыточная сеть
Изображение: ©Mellanox, 2013
Прямой доступ к удалённой памяти
Zero-copy для сети: мимо циклов ЦПУ и буферов ОС
Прямой доступ к удалённому ОЗУ
Разгрузка ЦПУ
Реализации (язык Verbs)
Infiniband
RoCE(RDMA over Converged Ethernet)
iWARP(Internet Wide-area RDMA Protocol)
RDMA-сети: от недоверия к внедрению
2010-е
Сближение с массовым классом по цене
Свободное ПО (OFED), поддержка в дистрибутивах
Адаптационные библиотеки (Accelio)
2000-еДорого
(«забава для высокобюджетных HPC»)
«Непонятное ПО»Нужно переписывать
сетевую часть ПО («нельзя просто открыть сокет»)
Подключаем блочные устройства по безубыточной сети…
iSER
• iSCSI Extensions for RDMA
SRP
• SCSI RDMA protocol
SCSI-команды по сети? А если NVMe-команды по сети?
NVMf !
И0 + И1 → NVMfNVM Express over Fabrics[NVMeoF] [NVMef]
NVMf
Способ разговора на языке NVMe по сети
FibreChannel
RDMA
Inifniband
iWARP
RoCE
«Фабрики будущего»
Стандарт
NVMe Express Oraganization
Работа над стандартизацией с 2014 года
5 июня 2016: спецификация NVM Express Over Fabrics, версия 1.0
Необходимые для сети уровни абстракции и команды
«Капсулы» (вместо очередей в разделяемой памяти)
Connect, Property Get, Property Set
Контроллер обнаружения (NQN вместо PCIe-шинной идентификации)
Ранние реализации
HGST• Проброс NVMe-команд через SRP с преобразованием
Intel SPDK(Storage
Performance Development Kit)
• С использованием Intel Dataplane Development Kit
• Лицензия BSD
• Драйвер в пользовательском пространстве
Ядро Linux
• рабочая группа
• список рассылки
• приватный git-репозиторий
2015
• Добавлено в ядро 4.8
6 июня 2016• Ядро 4.8
выпущено
2 октября 2016
Инициатор и цель
Хост-драйвер
• Поддержка RDMA-транспорта –Infiniband, RoCE, iWARP, OmniPath
• Множественный Connect/Disconnect
• Передача в транспорт команд NVMe и данных, полученных от ядра NVMe
• Сервис обнаружения
• Многопутевой ввод-вывод (multipath)
• Поддержка соедения (keep-alive)
nvmet[arget]
• Поддержка обязательных сетевых и NVMe-команд
• Поддержка множественных хостов, подсистем, пространств имён
• Сервис обнаружения
• Поддерживает любое блочное устройство (NVMe, SCSI, ramdisk, virtio…)
Объём кода хост-драйвера по назначению
Диаграмма: ©Кристоф Хельвиг, 2016
Дело за малым – настроить!
Kernel 4.8.2 (выпуск 16 октября 2016)
nvme-cli 0.8
Модули nvmet, nvmet-rdma
https://community.mellanox.com/docs/DOC-2504
Обнаруживаем и подключаем!# 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
ЗамерыЧто и как замерять, замеры и некоторые их результаты
Что замерять?
IOPS на чтение
IOPS на запись
Случайное
Задержка
Cеть?
• 4K и другие
• 128K, 4K и другие
• Но и последовательное
• Достаточность
• Сбалансированность
Чем замерять?
hdparm
--directdd
iflag=direct oflag=direct
Линейная скорость
Прикидочный тест
iometer
Есть сомнительные результаты…
fio
Стандарт де-факто
Множество настроек
Размер блока
4k
1k 16k 64k 256k
«замеряйте реальную нагрузку,
а не гоняйте синтетику»
Если она типична, и её
можно захватить и
прогнать – то так и надо
NUMA: для PCIe – имеет значение
Изображение: ©Кристофер Пакен, 2016
Хаб ввода-вывода на каждом NUMA-узле (а не один за систему)
Начиная с Sandy Bridge
NVMe-накопители и сетевые карты– на PCIe
Важна NUMA-локальность
NUMA: тюнинг
Правильный FIO:
cpus_allowed
numa_cpu_nodes
numa_mem_policy
Эксплуатационный тюнинг
taskset --cpu-list
udev-rules
cgroups
numad
Замеры: что даёт сеть?
График – Zeta Systems, ©2016
1 × Xeon E5
1 × Xeon E5
Connect X3
Connect X3
NVMe
NVMe
40 Гбит/c
Тест от Samsung
Изображение: ©Samsung, 2016
24 × NVMe 960 ГБ
Задержки в тесте Samsung
Приросты задержки
Изображение: ©Samsung, 2016
Количество устройств
IOPS в тесте Samsung
Изображение: ©Samsung, 2016
Замеры СУБД (SQL IOPS)
Oracle Database
SLOB CALIBRATE_IO Orion
MySQL PostgreSQL
Sysbench? iostat, pt-diskstats?
Сходить также: Андрей Николаенко. Как получать и интерпретировать показатели производительности СУБД? // Технологии баз данных, 29–30 ноября, 2016
СУБДСУБД над сырыми устройствами
Oracle Database, ASM и ACFS
Файлово-ориентированные
СУБД над сырыми устройствами
• Oracle Database
• IBM DB2
• SAP [Sybase] ASE
• Aerospike
• MySQL [InnoDB]
/dev/raw, raw → O_DIRECT
Oracle ASM
ACFS – кластерная файловая система над ASM
NVMf даёт прямую возможность собрать инфраструктуру грида
Ядро 4.8? Это RHEL 8? Oracle supported platforms…
Automatic Storage ManagementПрограммно-определяемая сеть хранения и менеджер томов для Oracle Database
…над любыми блочными устройствами
Управляемая избыточность Локальность чтения
Флэш в грид– в Oracle ASM и Oracle RAC
Калифорнийский стартап (2015)
Акцент на возможности самосборной
инфраструктуры вместо all-flash-массивов
Свободное ПО –конфигурирование и
обслуживание сетевой флэш-инфраструктуры
Коммерческая поддержка
Флэшгрид: конструкции
Гиперконвергетнаябеcкоммутаторная
Гиперконвергетнаямасштабируемая
Дезагрегированная(с выделенными узлами хранения,
как в Exadata)
Изображения: ©Flashgrid, 2015
5,6 млн IOPS на паре машин…
Евстатиос Евстатиу(Федеральное ИТ-бюро,
Швейцария)
• 2 × HP ML 350 G9
• Oracle RAC 12c
• Flashgrid
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
Файлово-POSIX-ортодоксальные СУБД
• Множественные вопросы в условиях программно-определяемых сетей хранения (fsync())
• Не ориентированы на кластеры с общими ресурсами хранения
PostgreSQL
• Большой и сверхотзывчивый пул под управлением одного узла
• Без RAID? dm-mirror?
• Горячий резерв без [WAL-]репликации
NVMf –возможность и
для них?
КонтейнерыDocker everywhere
NVMf для Kubernetes PV Plugin
Но в Kubernetes есть PV (persistent volumes)– тома для постоянного хранения
NFS iSCSI RBD Cinder … HostPath
В docker-мире содержимое контейнера обычно уничтожается после останова…
Изображение: ©Samsung, 2016
Результат NVMf неотличим от локально-паспортного
Спрос: новый тип устройства для Kubernetes PV
Но в Kubernetes есть PV (persistent volumes)– тома для постоянного хранения
NFS iSCSI RBD Cinder NVMf HostPath
OpenStackMirantis for Cinder
NVMf-драйвер для Cinder
25 октября 2016
• На базе Intel SPDK
• Драйвер для Cinder
• Доработки для Nova
Возможность отдать NVMf-том виртуальной машине
Нужна ли NVMf кластернымсистемам, у которых сеть –неотъемлемая часть конструкции?Программно-определяемые сети хранения
Кластеры распределённой обработки
Поможет ли NVMf для Hadoop?
Hadoop Classic = HDD + 10GbE
Уже есть HiBD(Университет Огайо)
Hadoop над программно-определяемой сетью (если
задействует NVMf?)
• ↓↓ $ / ТБ
• RDMA-Hadoop-2.x (HDFS на Vebrs)
• RDMA-Spark
• RDMA-Hbase
• CephFS
• GlusterFS
• Taychon (IMDG)
SDS
Ceph
GlusterFS
Возможность: разделение слоя устройств
и слоя доступа
• Поддерживается RDMA (через Accelio)
• Отчёты о применении SPDK-драйвера для NVMe
• Реализован Infiniband/RDMA
• Например, флэш-массив на 3 узлах, роздан по NVMf SDS-кластеру из 12 узлов
Альтернативы: аппаратура
Массив Mangstor
• “5 млн IOPS на NVMf уже сделали за вас”
Массив DSSD5 на PCIe-расширителях
• 10 млн IOPS
PCI-Express-коммутаторы
Изображения: ©Mangstor, ©Dell (EMC), ©Dolhpin
Связанная альтернатива: «программно-определяемая память»
Plexistor – свободный P[ersistent]MoF
Слойка из NVDIMM + NVMe Презентуется как память …и как блочное устройство
ScaleMPНа каждый узел – специализированная
виртуальная машинаВиртуальная память из ОЗУ + NVMe из
нескольких узлов – в общий пул
Виртуальным машинам раздаются «виртуальные NUMA-узлы» из общего
пула
Растягиваем ОЗУ на NVMe и продлеваем по сети
Главное чудо 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Тб/с”