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

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

  • Upload
    ontico

  • View
    78

  • Download
    9

Embed Size (px)

Citation preview

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

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

3.0

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

$ who am i

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

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

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

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

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

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

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

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

Page 4: NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (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

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

Пропасть отзывчивостиУстройство Задержка Если бы доступ к 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: NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)

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

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

– устройство

– контроллер

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

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

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

NVMe NAND(не Wikibon)

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

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

• $ за IOPS · ТБ ?

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

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

со временем

• Объём

• Коридор IOPS

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

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

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

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

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

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

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

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

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

Серверные платформы с 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: NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)

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

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

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

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

Теплопакет…

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

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

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

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

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

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

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

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

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

MSI-X (message-signaled

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

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

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

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

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

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

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

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

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

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

NVMe против AHCI

NVMe

-

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

65535 очередей

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

AHCI

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

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

1 очередь

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

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

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

/dev/nvme0n1p2

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

“LUN для NVMe”

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

одного

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

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

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

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

NVMe Data Set Management

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

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

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

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

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

• TRIM

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

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

Мониторинг SMART

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

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

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

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

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

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

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

• NAND – тот же

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

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

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

низкая цена?

• NAND тот же!

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

Micron 3D-XPoint, Intel Optane: coming soon

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

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

PCIe (NVMe)

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

и 5×NAND

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Infiniband

RoCE(RDMA over Converged Ethernet)

iWARP(Internet Wide-area RDMA Protocol)

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

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

2010-е

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

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

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

2000-еДорого

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

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

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

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

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

iSER

• iSCSI Extensions for RDMA

SRP

• SCSI RDMA protocol

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

NVMf !

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

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

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

NVMf

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

FibreChannel

RDMA

Inifniband

iWARP

RoCE

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

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

Стандарт

NVMe Express Oraganization

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

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

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

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

Connect, Property Get, Property Set

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

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

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

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

Intel SPDK(Storage

Performance Development Kit)

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

• Лицензия BSD

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

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

Ядро Linux

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

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

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

2015

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

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

выпущено

2 октября 2016

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

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

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

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

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

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

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

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

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

nvmet[arget]

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

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

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

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

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

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

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

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

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

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

nvme-cli 0.8

Модули nvmet, nvmet-rdma

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

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

Обнаруживаем и подключаем!# 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: NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)

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

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

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

IOPS на чтение

IOPS на запись

Случайное

Задержка

Cеть?

• 4K и другие

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

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

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

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

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

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

hdparm

--directdd

iflag=direct oflag=direct

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

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

iometer

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

fio

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

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

Размер блока

4k

1k 16k 64k 256k

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

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

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

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

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

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

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

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

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

Начиная с Sandy Bridge

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

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

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

NUMA: тюнинг

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

cpus_allowed

numa_cpu_nodes

numa_mem_policy

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

taskset --cpu-list

udev-rules

cgroups

numad

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

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

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

1 × Xeon E5

1 × Xeon E5

Connect X3

Connect X3

NVMe

NVMe

40 Гбит/c

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

Тест от Samsung

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

24 × NVMe 960 ГБ

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

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

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

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

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

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

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

IOPS в тесте Samsung

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

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

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

Oracle Database

SLOB CALIBRATE_IO Orion

MySQL PostgreSQL

Sysbench? iostat, pt-diskstats?

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

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

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

Oracle Database, ASM и ACFS

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

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

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

• Oracle Database

• IBM DB2

• SAP [Sybase] ASE

• Aerospike

• MySQL [InnoDB]

/dev/raw, raw → O_DIRECT

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

Oracle ASM

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

как в Exadata)

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

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

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

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

Швейцария)

• 2 × HP ML 350 G9

• Oracle RAC 12c

• Flashgrid

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

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: NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)

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

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

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

PostgreSQL

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

• Без RAID? dm-mirror?

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

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

для них?

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

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

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

NVMf для Kubernetes PV Plugin

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

NFS iSCSI RBD Cinder … HostPath

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

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

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

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

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

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

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

NFS iSCSI RBD Cinder NVMf HostPath

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

OpenStackMirantis for Cinder

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

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

25 октября 2016

• На базе Intel SPDK

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

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

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

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

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

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

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

Поможет ли 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: NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)

SDS

Ceph

GlusterFS

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

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

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

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

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

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

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

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

Массив Mangstor

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

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

• 10 млн IOPS

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

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

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

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

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

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

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

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

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

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

пула

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

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

Главное чудо 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Тб/с”