Тестирование Kingston KC2000
01.10.19
Kingston KC2000 — обновление линейки KC1000, накопителей для настольных систем с интерфейсом NVMe в форм-факторе M.2. Обычно мы тестируем только серверные накопители, но появление разъёмов M.2 PCIe x4 в наших рабочих станциях вместе с привлекательным соотношением цены и производительности заставляют сделать исключение.
Многие из наших клиентов пытаются использовать недорогие накопители для настольных систем для серверных нагрузок, так как ошибочно полагают, что основное различие между серверными и настольными накопителями заключается в ресурсе на запись. На самом деле, большое значение имеет защита данных при аварийном отключении питания — объём RAM-кэша достигает сейчас нескольких сотен гигабайт, так что крайне желательно обеспечить их запись на флеш. В отношении записи важным является не только ресурс, нехватку которого можно частично компенсировать увеличением резервной области, но и производительность на запись и её стабильность. «Домашний» накопитель может обеспечить и 100000 IOPS на запись, но по мере исчерпания свободных для записи блоков может снизить производительность в несколько десятков раз при крайне нестабильном уровне задержки.
В ходе тестирования мы сможем проверить как соответствие пиковых значений производительности заявленным, так и внимательно изучить поведение KC2000 при тяжелых нагрузках.
Kingston KC2000
Поставляется KC2000 в блистерной упаковке. В комплекте идёт небольшой бонус — ключ к Acronis True Image HD, очень удобной утилите для клонирования дисков и создания образов операционных систем.
Для тестирования KC2000 устанавливался в переходник Supermicro AOC-SLG3-2M2.
Характеристики
- Объём: 250, 500, 1000, 2000 ГБ
- Форм-фактор: M.2 2280
- Интерфейс: PCI-E 3.0 ×4, NVMe
- Заявленная производительность (для модели 500 ГБ)
- Последовательный доступ (максимум): чтение — 3000 МБ/с, запись — 2000 МБ/с
- Случайный доступ (блок 4 КиБ): чтение — 350 000 IOPS, запись — 250 000 IOPS
- Эмулируемый размер сектора: 512 байт (логический/физический)
- Ресурс: 300 ТБ (0,3 DWPD)
- Гарантийный срок: 5 лет
Тестирование
Условия тестирования
Конфигурация тестового стенда:- Процессор Intel Xeon E5-2650 V4 (12 ядер, 2,2 ГГц, HT включен)
- 32 ГБ памяти
- Системная плата Supermicro X10DRi-LN4+ (2x socket R3, Intel C612)
- CentOS Linux 7.6.1810
- Для генерации нагрузки применялся FIO версии 3.14
- Kingston KC2000 500 ГБ (SKC2000M8500G)
- Прошивка: S2681101
- Объём: 500 107 862 016 байт (465,76 ГиБ)
Использованы модифицированные тесты из SNIA Solid State Storage Performance Test Specification v2.0.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). Параметры: 24 потока с глубиной очереди 32 (для накопителей SATA и SAS мы используем 16 потоков с QD 8). Тестирование проводилось в соответствии с критериями для настольных накопителей — на области в 75% от всего объёма. Отличие от спецификации — из теста был исключён блок 0,5 КиБ (512 байт).
- Throughput Test. Тестируется пропускная способность при последовательном доступе: чтение и запись блоками 1 МиБ и 128 КиБ. Дополнительно приведены результаты тестов на запись без preconditioning'а. В большинстве накопителей настольного класса на основе TLC используется так называемый SLC-кэш. При наличии достаточного количества свободных блоков определённая область используется в SLC-режиме, т. е. с записью 1 бита на ячейку вместо трёх, что позволяет существенно поднять производительность записи. Так что методика, применяемая для тестирования серверных накопителей тут не совсем подходит — конечно, после preconditioning'а мы получим «честный», т. е. минимально возможный результат, но с другой стороны интересно узнать и пиковую производительность при использовании SLC-кэша, а так же приблизительный его размер.
- Latency Test. Измеряется значение средней и максимальной задержки для различных размеров блока (8 КиБ, 4 КиБ, 0,5 КиБ) и соотношений чтение/запись (100/0, 65/35, 0/100) при минимальной глубине очереди (1 поток с QD=1). Отличия от спецификации:
- исключён блок 0,5 КиБ
- вместо однопоточной нагрузки с очередями 1 и 32 нагрузка варьируется по количеству потоков (1, 2, 4) и глубине очереди (1, 2, 4, 8, 16, 32).
- вместо соотношения 65/35 используется 70/30
- приводятся не только средние и максимальные значения, но и перцентили 99%, 99,9%.
- для выбранного значения количества потоков строятся графики зависимости задержки (99%, 99,9% и среднего значения) от IOPS для всех блоков и соотношений чтение/запись
- Write Saturation Test. Тестируется изменение производительности (IOPS и задержка) при непрерывной нагрузке (600 раундов по 1 минуте) на случайную запись блоками 4 КиБ. Цель — добиться перехода SSD в режим насыщения, при котором контроллеру приходится непрерывно заниматься сборкой мусора для подготовки пригодных для записи блоков NAND.
-
Host Idle Recovery. Тестируется эффективность работы алгоритмов сборки мусора. После перехода в режим насыщения: непрерывная нагрузка на случайную запись чередуется с облегчённой нагрузкой (5 секунд + паузы 5, 10, 15, 25, 50 секунд). Отличие от спецификации — вместо рекомендованной спецификацией предварительной нагрузки длительностью менее 30 раундов (минут) используется 600 раундов (минут) для обеспечения гарантированного перехода SSD в режим насыщения.
Мы давно не прибегали к этому тесту. Для большинства серверных накопителей он потерял актуальность: скорость восстановления производительности за счёт применения более совершенных контроллеров и алгоритмов выросла настолько, что восстановление видно сразу в первой группе с 5-секундными паузами. Здесь же в нашем распоряжении оказался накопитель настольного класса, где, как правило, алгоритм сборки мусора намеренно замедляется для экономии ресурса. Так ли это в случае Kingston KC2000, мы увидим на соответствующих графиках.
-
Composite Block Size Workload (CBW). Упрощённый вариант теста №13 спецификации SNIA SSS PTS 2.0.1. В ходе данного теста исследовалось распределение задержки под нагрузкой в виде специального паттерна CBW:
Размеры блоков:
Размер блока, байт Доля в нагрузке, % 512 4 1024 1 1536 1 2048 1 2560 1 3072 1 3584 1 4096 67 8192 10 16384 7 32768 3 65536 3
Для первых трех тестов проводится серия замеров из 25 раундов длительностью 1 минута каждый. Перед тестом производится зануление (в данном случае — secure erase при помощи утилиты hdparm), затем — предварительная нагрузка: последовательная запись блоками 128 КиБ до достижения 2-кратной емкости. Далее выбирается по одной из величин окно установившегося состояния (4 раунда), которое проверяется построением графика. Критерии установившегося состояния: линейная аппроксимация в пределах окна не должна выходить за границы 90%/110% среднего значения.
SNIA PTS: IOPS test (IOPS при варьировании размера блока и соотношения чтение/запись)
Табличные данные:Размер блока, КиБ Чтение/запись 0/100 5/95 35/65 50/50 65/35 95/5 100/0 4 68678 64252 81528 93679 116433 190942 203386 8 38097 36755 46361 51103 63397 96347 105965 16 18556 18156 24196 28013 35191 58621 64913 32 8602 8992 11833 14007 17898 32845 38328 64 4357 4482 5993 7266 9619 18579 21463 128 2319 2271 3107 3730 4667 9607 11407 1024 339 316 412 494 551 1246 1529 Стоит напомнить, что данный тест проводится после предварительной нагрузки на запись (preconditioning), затем ждём стабилизации показателей, но тестируем мы не серверный накопитель, а настольный, для которых производители, как правило, указывают пиковые значения производительности для «свежего» состояния.
Обещанные Kingston'ом 350/250 тысяч IOPS вполне можно увидеть, для этого достаточно провести пару коротких тестов сразу после обнуления (низкоуровневого форматирования namespace'а). Для чтения и записи блоками 4 КиБ со случайным доступом при 24 потоках с глубиной очереди 32 получены следующие результаты:
- Чтение: 428 000 IOPS при задержке 1,7 мс
- Запись: 289 000 IOPS при задержке 2,6 мс
SNIA PTS: throughtput test
Пропускная способность при последовательном доступе блоками 128 КиБ и 1 МиБ, 8 потоков с глубиной очереди 16 на каждый поток.
- 128 КиБ последовательное чтение: 1618,1 МиБ/с
- 128 КиБ последовательная запись: 215,3 МиБ/с
- 1 МиБ последовательное чтение: 1611,1 МиБ/с
- 1 МиБ последовательная запись: 403,5 МиБ/с
В данном тесте использовалась методика для серверных SSD: серия тестов запускалась после предварительной нагрузки в виде 2-кратной перезаписи случайными данными. Неудивительно, что результаты далеки от заявленных пиковых значений, которые можно получить на «свежем» накопителе. Производительность последовательной записи в таком режиме получается ниже, чему у бюджетных серверных накопителей с интерфейсом SATA, но настольный накопитель не предназначен для работы при 100% заполнении данными, так что заявленные 3/2,5 гигабайта в секунду вполне можно увидеть. Для того, чтобы понять, как именно происходит снижение производительности, нам нужен следующий тест.
Последовательная запись и SLC-кэш
Latency vs IOPS test
Данные усреднялись по четырём из 25-ти раундов длительностью 35 секунд (5 «прогревочных» + 30-секундная нагрузка) каждый. Для графиков выбрана серия значений с глубиной очереди от 1 до 32 при 1–4 потоках. По мере увеличения глубины очереди растёт задержка, и по подобному графику можно оценить не просто абстрактное число IOPS, а производительность с учётом задержки.
Снова использовалась методика для серверных накопителей — с предварительной нагрузкой и доступом по всему объёму накопителя.
Средняя задержка:
Результат вполне ожидаем: KC2000 не предназначен для тяжёлой нагрузки на запись малыми блоками, производительность практически не масштабируется. Процесс фоновой сборки мусора затрагивает влияет так же на производительность чтения, но для блока 4 КиБ мы получаем 200 тыс. IOPS при задержке меньше 0,5 мс почти во всём диапазоне нагрузки — такого показателя нельзя добиться на твердотельных накопителях с интерфейсом SATA.
99%-перцентиль задержки:
99.9%-перцентиль задержки:
Если взглянуть на QoS задержки, то непригодность KC2000, как и любого другого настольного накопителя, для тяжёлой нагрузки на запись становится ещё более очевидной. Периодическая «задумчивость» накопителя на несколько десятков миллисекунд крайне негативно отражается на работе многих сервисов. Серверные накопители, даже с интерфейсом SATA, таких проблем, как правило не имеют. Например, Kingston DC500R/M.
Максимальные значения задержки:
Для максимумов график незначительно отличается от 99.9%. «Читательное предназначение» тут становится ещё более наглядным, но никаких фатальных, в несколько секунд, пиков при нагрузке на запись тут не видно.SNIA PTS: Write Saturation Test (насыщение при случайной записи блоками 4КиБ)
Рост объёмов современных SSD вынуждает увеличивать продолжительность данного теста. Стандартных 360 минут уже не достаточно для выхода в режим насыщения — продолжительность теста был увеличена до 600 минут.
Тест WSAT уже совершенно не предназначен для настольных накопителей, но поскольку эта нагрузка всё равно требуется в качестве предварительной для теста Host Idle Recovery, то стоит взглянуть на результаты.
Тест WSAT уже совершенно не предназначен для настольных накопителей, но поскольку эта нагрузка всё равно требуется в качестве предварительной для теста Host Idle Recovery, то стоит взглянуть на результаты.
Производительность случайного доступа плавно снижается до 20000 IOPS. Данный показатель можно посчитать посчитать вполне приемлемым для серверных нагрузок, но стоит напомнить про задержку.
На следующем графике представлены задержки: медианное значение (статистические данные вычислялись в пределах каждого 60-секундного раунда), перцентили 99%, 99,9% и 99,99%, максимальное значение. Задержка растёт пропорционально падению IOPS, никаких больших пиковых значений задержки не наблюдается.
Тестирование проводится в 8 потоков с глубиной очереди 16, так что стоит обратить внимание не на абсолютные значения задержки (уровень задержки при небольшой нагрузке можно оценить по результатам предыдущего теста), а на соотношение между средним значением и перцентилями, а так же — сравнить показатели с другими накопителями. Даже бюджетный серверный накопитель Kingston DC500R, предназначенный для работы на нагрузках с преимущественным чтением, ведёт себя в тесте WSAT заметно лучше, демонстрируя в несколько раз меньшие пиковые значения задержки.
Host Idle Recovery
Описание данного теста приведено выше. Kingston KC2000 демонстрирует удивительно быстрое для накопителя настольного класса восстановление производительности. Уже на первом участке с 5-секундными паузами производительность поднимается из «ямы» в диапазон 100–200 тыс. IOPS.
Средняя задержка пропорционально снижается.
Composite Block Size Workload (CBW)
Описание данного теста приведено выше. Здесь Kingston KC2000 показал неожиданные результаты. Нагрузка CBW состоит, в основном, из блоков 4 и 8 КиБ, и большая её часть приходится на 20% объёма накопителя. Если сравнивать результаты с серверными Kingston серии DC500, то получается вполне ожидаемый результат: средняя точка при варьировании нагрузки составила примерно те же 17000 IOPS, но при существенно более высокой задержке в 6 мс вместо 0,5.
При раздельном изучении задержек по чтению и записи мы увидим сильную неконсистентность задержки именно на чтение: уже 99%-перцентиль превышает 15 миллисекунд. С записью этого не наблюдается.
Заключение
Kingston KC2000 — сбалансированный накопитель для настольных систем, способный обеспечить достаточно высокий уровень производительности в тех условиях, для которых он был предназначен. Благодаря современному контроллеру Silicon Motion при типовом использовании KC2000 будет существенно быстрее любых аналогов с интерфейсом SATA, что оправдывает разницу в цене. Мы намерены использовать Kingston KC2000 в своих рабочих станциях.
Стоит предостеречь от использования Kingston KC2000 в качестве серверного накопителя, особенно в том случае, когда речь идёт о сколь-нибудь высокой нагрузке на запись. В этих условиях, как и любой другой накопитель настольного класса, KC2000 не может обеспечить стабильный уровень задержки.