Тестирование NVMe-совместимого PCI-E SSD HGST SN150.
17.02.16
Что такое NVMe и зачем он нужен
NVMe (NVM Express, NVMHCI, Non-Volatile Memory Host Controller Interface Specification) — набор спецификаций, определяющих протоколы доступа к накопителям на основе энергонезависимой памяти через шину PCI Express. Подробную информацию о NVMe можно получить на сайте рабочей группы, в состав которой входят такие известные компании, как Intel, Oracle, HGST, PMC, Seagate, Micron, Sandisk и NetApp.
NVMe разрабатывался как новый промышленный стандарт для высокопроизводительных SSD, подключаемых напрямую к PCI Express. Разработка новой системы команд позволила существенно сократить задержки в сравнении с SAS и AHCI. NVMe уже давно не находится на стадии прототитипов — готовые продукты выпускаются уже несколько лет, драйверы для всех актуальных ОС готовы.
Чем плохи AHCI и SAS?
AHCI и SAS хорошо работают с традиционными механическими HDD. При последовательном доступе к носителю вполне достаточно однопоточной работы с дисковой очередью сравнительно небольшой глубины (32 для AHCI). NVMe поддерживает 64k (65536) очередей с глубиной 64k каждая, а существенно упрощённый набор команд позволяет тратить меньше процессорных тактов на обслуживание ввода-вывода. Всё это позволяет наращивать производительность одиночного накопителя — использовать более производительный контроллер, увеличить объём буфера и число каналов доступа к NAND. Самые производительные SSD с интерфейсом SAS3.0 на сегодняшний день могут обеспечить порядка 270 тыс. IOPS на чтение. Дальнейшее увеличение производительности одиночного SSD SAS, а тем более SATA имеет мало смысла — снизить уровень задержек уже нельзя. Использование массива из нескольких SAS или SATA SSD сейчас позволяет получить более миллиона IOPS с одного SAS HBA, но не решает проблему с задержкой. C одного NVMe HGST SN150 можно получить 750 тыс. IOPS при более низких задержках — например, при достаточной глубине очереди (8 потоков с QD 4) можно получить разницу в 200-300 микросекунд.
SSD в форм-факторе PCI-E плат существовали и раньше. В чём преимущество NVMe?
Во-первых, стоит обратить внимание на тот факт, что многие PCI-E SSD представляют из себя всё тот же AHCI или SAS HBA контроллер с несколькими подключенными к нему SATA или SAS SSD, это простая экономия кабелей и дисковых отсёков. Пример — Intel SSD 910, предшественник сегодняшних NVMe накопителей Intel, состоял из SAS HBA на базе чипа LSI 2008 и четырёх SAS SSD HGST Ultrastar SSD400S.
Существуют и «настоящие» PCI-E SSD. Пожалуй, самые известные из них — Fusion IO (в настоящее время — Sandisk). Уже несколько лет назад они могли обеспечить сотни тысяч IOPS при задержках от 20-30 микросекунд. Современные Micron P420m, HGST Flashmax II/III, Huawei ES3000 V2 при своей действительно высокой производительности (те же 400-750 тыс. IOPS на чтение 4k, задержка на запись от 15-30 мкс) не являются NVMe накопителями, они используют собственные уникальные способы повышения эффективности работы с флэш-памятью.
Основное преимущество NVMe SSD перед другими PCI-E SSD заключается в унификации — любое NVMe устройство может работать со стандартными драйверами NVMe:
- Microsoft Windows 8.1 и Windows Server 2012 R2 — драйвер встроен. Windows 7/8 и Windows Server 2008 R2, Server 2012 — драйвер доступен в виде пакетов обновления.
- Linux — драйвер интегрирован в ядро с марта 2012 года.
- FreeBSD — драйвер интегрирован в ядро начиная с FreeBSD 10.2. Драйвер доступен для дистрибутивов 9-й ветки.
- VMware ESXi — драйвер интегрирован начиная с ESXi 6.0, доступен для 5.5.
- Solaris — поддерживается в Oracle Solaris 11.2.
- UEFI — поддерживается в большинстве современных системных плат. Например, UEFI во всех платах Supermicro X9/X10/X11 поддерживает NVMe.
Второе преимущество — кроме обычный плат расширения серверные накопители NVMe существуют в форм-факторе U.2. Это корпус 2,5" высотой 15 мм и разъёмом SFF-8639 — для замены накопителя не нужно выдвигать сервер из стойки и снимать крышку, процедура замены накопителя U.2 ничем не отличается от таковой для обычных дисков. Разъём SFF-8639 интересен тем, что его ответная часть имеет обратную совместимость с SFF-8482, т.е. в бэкплейн с разъёмами SFF-8639 можно подключить не только NVMe, но и обычные диски SAS и SATA. Обычно на входе такой универсальный бэкплейн имеет разъём SFF-8643, он же miniSAS HD x4: подключаем контроллер SAS и SAS/SATA диски, а если появляется необходимость существенно нарастить производительность дисковой подсистемы — ставим накопители NVMe, подключаем бэкплейн к специальному порту на системной плате или к дополнительной плате-ретаймеру.
Дисковых отсеков с поддержкой NVMe в сервере может быть несколько. Всё начиналось с четырёх или восьми, но сейчас появились платформы Supermicro с поддержкой десяти NVMe в корпусе 1U, 24-х и даже 48-ми NVMe в корпусе 2U.
HGST серии SN100/150
NVMe-совместимые накопители HGST SN100 и SN150 — это линейка из 10 моделей, отличающихся объёмом (800-3200ГБ), форм-фактором (2,5" U.2 или низкопрофильная плата PCI-E) и поддержкой шифрования. Накопители SN100 отличаются от SN150 только форм-фактором и наличием модели объёмом 800ГБ. О начале отгрузок SN150 компания HGST заявила в апреле 2015 года. В данном обзоре мы планируем измерить производительность HGST SN150 объёмом 1600ГБ и сравнить результаты с конкурентами: HGST Flashmax III 2200ГБ (SSD с интерфейсом PCI-E, не являющийся NVMe-совместимым) и Intel P3600 1600ГБ.
HGST SN150 поставляется в картонной коробке. Форм-фактор — низкопрофильная плата (HH/HL), в комплект входит дополнительная планка полной высоты. На лицевой стороне платы расположен закрытый небольшим квадратным радиатором контроллер, за ним — двухэтажная конструкция с чипами NAND.
На обратной стороне — дополнительная обвязка и 5 чипов памяти DDR3.HGST SN150 может работать со штатным драйвером NVMe, но для работы утилиты Hitachi Device Manager (HDM) требуется установка NVMe-драйвера от Hitachi.
Характеристики HGST SN150
- Объём: 1600ГБ, 3200ГБ
- Форм-фактор: низкопрофильная плата PCI-E
- Интерфейс: PCI-E 3.0 x4
- Производительность
- Последовательный доступ (блок 128КиБ): чтение — 3000 МБ/с, запись — 1600 МБ/с
- Случайный доступ (блок 4КиБ): чтение — 743000 IOPS, запись — 140000 IOPS
- Случайный доступ (блок 8иБ): чтение — 385000 IOPS, запись — 75000 IOPS, 70/30 чтение/запись — 310000 IOPS
- Задержка (блок 512 байт): 20 мкс
- Ресурс: 3 DWPD
- Максимальное энергопотребление: 25 Вт
- Гарантийный срок: 5 лет
Результаты тестирования
Условия тестирования
Конфигурация тестового стенда:- Процессор Intel Xeon E5-2660 V3 (10 ядер, 2,6 ГГц, HT включен)
- 32 ГБ памяти
- Системная плата Supermicro X10SRi-F (1x socket R3, Intel C612)
- CentOS Linux 6.7 X86_64
- Для генерации нагрузки применялся FIO версии 2.5
- Драйвер nvme-hgst-1.1.1508.1410
- HGST Ultrastar SN150 HUSPR3216AHP301 1,6 ТБ
- Серийный номер: 15D0A029TZQ1
- Прошивка: KMGNP120
- Объём: 1600321314816 байт (1,46 ТиБ)*
Использованы модифицированные тесты из SNIA Solid State Storage Performance Test Specification Enterprise v1.1. Данная спецификация описывает алгоритмы различных тестов и формат отчетов. Ниже приведены параметры тестов и отличия от SNIA PTS:
- IOPS Test. Измеряется количество IOPS (операций ввода-вывода в секунду) для блоков различного размера (1024КиБ, 128КиБ, 64КиБ, 32КиБ, 16КиБ, 8КиБ, 4КиБ, 0.5КиБ) и случайного доступа с различным соотношением чтение/запись (100/0, 95/5, 65/35, 50/50, 35/65, 5/95, 0/100). Параметры: 16 потоков с глубиной очереди 16. Отличие от спецификации — из теста был исключён блок 0,5КиБ.
- Throughput Test. Тестируется пропускная способность при последовательном доступе: чтение и запись блоками 1МиБ и 128КиБ.
- Latency Test. Измеряется значение средней и максимальной задержки для различных размеров блока (8КиБ, 4КиБ, 0.5КиБ) и соотношений чтение/запись (100/0, 65/35, 0/100) при минимальной глубине очереди (1 поток с QD=1). Отличие от спецификации: добавлена глубина очереди 32, исключён блок 0,5КиБ, приводятся не только средние и максимальные значения, но и перцентили 99% и 99,99%.
- Write Saturation Test. Тестируется изменение производительности (IOPS и задержка) при непрерывной нагрузке (600 раундов по 1 минуте) на случайную запись блоками 4КиБ. Цель — добиться перехода SSD в режим насыщения, при котором контроллеру приходится непрерывно заниматься сборкой мусора для подготовки пригодных для записи блоков NAND. Отличие от спецификации — дополнительные графики перцентилей задержки (99%, 99,99%, 99,99%) помимо среднего и максимального значения.
- Host Idle Recovery. Тестируется эффективность работы алгоритмов сборки мусора. После перехода в режим насыщения: непрерывная нагрузка на случайную запись чередуется с облегчённой нагрузкой (5 секунд + паузы 5, 10, 15, 25, 50 секунд).
Для первых трех тестов проводится серия замеров из 25 раундов длительностью 1 минута каждый. Перед тестом производится зануление (в данном случае — Secure Erase через HDM:./hdm secure-erase --force --type user --path /dev/nvme0
), затем — предварительная нагрузка: последовательная запись блоками 128КиБ до достижения 2-кратной емкости. Далее выбирается по одной из величин окно установившегося состояния (4 раунда), которое проверяется построением графика. Критерии установившегося состояния: линейная аппроксимация в пределах окна не должна выходить за границы 90%/110% среднего значения.
Для теста Write Saturation Test используется 600 раундов длительностью 1 минута каждый. Среднее и максимальное значение задержки замеряется в пределах каждого раунда.
SNIA PTS: IOPS test (IOPS при варьировании размера блока и соотношения чтение/запись)
Сравним результаты с заявленными:- 4 КиБ чтение: 725 тыс. IOPS (заявлено 743)
- 4 КиБ запись: 379 тыс. IOPS (140)
- 8 КиБ чтение: 373 тыс. IOPS (385)
- 8 КиБ запись: 215 тыс. IOPS (75)
- 8 КиБ 65/35 чтение/запись: 283 тыс. IOPS (310 для 70/30)
SNIA PTS: throughtput test
Пропускная способность при последовательном однопоточном доступе блоками 128 КиБ с глубиной очереди 128:Для сравнения приведены результаты HGST Flashmax III и конкурента — NVMe SSD Intel P3600. Характеристики Intel P3600 взяты из документации Intel. При этом Intel прямо указывает на то, что результаты приведены в десятичных мегабайтах (1 МБ = 106 байт), так что был произведен соотвествующий пересчёт (1 МиБ = 220 байт).
HGST SN150 демонстрирует высокую производительность на последовательном доступе и уступает лишь не представленному на графике Intel P3608 с его 4768 МиБ/с на чтение. Но P3608 представляет из себя сдвоенный P3600 на шине PCI-E x8 и теплопакетом в 40 Вт.
SNIA PTS: latency test
В данных таблицах приведены значения задержки в микросекундах (средняя, максимальная и перцентили 99%, 99.99%) при одном потоке с глубиной очереди 1 в зависимости от размера блока и соотношения чтение/запись (100% чтение, 65/35 чтение/запись, 0/100 = 100% запись).
HGST SN150 | HGST Flashmax III | Intel P3600 | Toshiba PX02SM | |||||
Задержка | 4КиБ | 8КиБ | 4КиБ | 8КиБ | 4КиБ | 8КиБ | 4КиБ | 8КиБ |
Средняя | ||||||||
Чтение | 94 | 104 | 143 | 154 | 120 | н/д | 188 | 184 |
Запись | 21 | 24 | 41 | 53 | 30 | н/д | 57 | 79 |
Чтение/запись 65/35% | 203 | 269 | 192 | 220 | н/д | н/д | 252 | 287 |
99% | ||||||||
Чтение | 251 | 175 | 159 | 178 | 120 | н/д | 673 | 259 |
Запись | 36 | 39 | 124 | 200 | 90 | н/д | 108 | 143 |
Чтение/запись 65/35% | 2030 | 2820 | 227 | 630 | н/д | н/д | 550 | 999 |
99,99% | ||||||||
Чтение | 3962 | 223 | 181 | 329 | 4000 | н/д | 2768 | 526 |
Запись | 54 | 62 | 224 | 254 | 2000 | н/д | 3310 | 7955 |
Чтение/запись 65/35% | 5782 | 6650 | 2983 | 3096 | н/д | н/д | 6624 | 7485 |
Для сравнения приведены результаты тестов HGST Flashmax III и одного из самых высокопроизводительных SSD с интерфейсом SAS — Toshiba PX02SN (SAS3, 10 DWPD). Характеристики Intel P3600 взяты из документации.
SN150 демонстрирует явный прогресс — в сравнении с предшественником задержка на запись уменьшилась. Стоит добавить, что важно обращать внимание не только на среднее значение задержки, но и на её стабильность, для оценки которой удобно использовать не пиковые значения (которые могут быть измерены на неопределённом промежутке времени), а перцентили. Например, значение 99,99%-перцентиля в 90 микросекунд говорит нам о том, что в 99,99% случаев значение задержки будет меньше 90 мкс.
SAS SSD демонстрирует среднюю задержку на запись 57 мкс и, скорее всего, меньше обеспечить уже просто нельзя, мешает связка «контроллер NAND -> SAS -> SAS HBA». Тут видна самая экономия в 20 мкс, которую даёт на NVMe за счёт от традиционной архитектуры, основанной на SAS-транспорте и наборе команд SCSI.
http://blog.pmcs.com/having-fun-at-queue-depth-1-what-next-generation-non-volatile-memory-ng-nvm-means-for-pcie-ssds-and-ssd-drivers/SNIA PTS: Write Saturation Test (насыщение при случайной записи блоками 4КиБ)
Из 600 минут для наглядности на графике оставлены первые 300 минут, так как переход в режим насыщения для данного накопителя происходит примерно к 180-й минуте.Через 3-4 часа производительность падает с 430 тыс. IOPS до соответствующих заявленным 130-140 тыс. Для Intel P3600 объёмом 1,6 ТБ заявлено 56 тыс. IOPS.
Даже при максимально трудной нагрузке мы не наблюдаем никаких пиков с экстремально высокими задержками — алгоритм сборки мусора работает достаточно эффективно, SSD успевает подготовить необходимый запас подготовленных для записи ячеек.
Заключение
Накопители HGST SN150 появились на российском рынке позже Intel. Можно сказать, что по состоянию на начало 2016 Intel P3500/P3600/P3700 занимают значительную долю рынка NVMe накопителей. В HGST не теряли времени зря и смогли выпустить хорошо отлаженный продукт, обладающий отличной производительностью — при сопоставимой с P3600 цене HGST SN100/150 обеспечивает в 1,5 раза более высокую производительность при случайном доступе малыми блоками. Сказался большой опыт в области создания SSD с интерфейсом PCI-E — в 2013 году была приобретена компания Virident и вышедшее позже последнее поколение накопителей Flashmax получилось весьма удачным.
Плюсы:
- Отличное соотношение цена/объём и цена/производительность
- Поддержка стандарта NVMe 1.1a
- Максимальный объём 3200ГБ против 6400ГБ у Samsung PM1725 и OCZ Z-Drive 6300