Тестовый стенд:
Платформа: SL2500/2U825+G4
Процессор: 2x Intel Xeon Silver 4210R
Оперативная память: 64GB 4x16GB DDR4 RDIMM 2999 MHz Samsung
RAID Контроллеры:
- Intel VROC Premium для NVME SSD
- Broadcom (LSI) 9361-8i для SATA SSD
NVMe disk: 4x WD Ultrastar DC N640 Series в формфакторе U.2
SATA disk: 4x Micron 5300 series, 4x Intel DC3-S4510 Series
Тестовая OС: Windows Server 2019 Standard, драйверы актуальных версий.
Для тестирования накопителей использовался fio 3.20 + набор тестовых скриптов ezFIO 1.0
Для тестирования производительности в RAID1 использовалось по два диска каждой модели, в RAID 10 – 4. Чтобы исключить влияние кэшэй, мы тестируем весь объем созданных LUN.
Краткое объяснение терминов:
LUN (Logical Unit Number): определяет виртуальный раздел в RAID-массиве. То есть, для операционной системы каждый LUN является отдельным устройством.
IOPS (Input Output Operations Per Second): количество операций ввода-вывода в секунду является одним из ключевых значений производительности для хранения данных. Чем выше значение, тем устройство производительней.
Sequential (постоянно): данные записываются или читаются на устройство одним фрагментом. Примером этого является большой видеофайл.
Random (случайно): данные читаются или записываются на устройство небольшими частями в случайном порядке. Базы данных и т.д.
Quality Depth (глубина очереди): определяет сколько операций ввода-вывода (IO) может быть одновременно обработано на устройстве.
Latency (задержка): время, которое проходит между запросами на запись или чтение. Чем ниже значение, тем лучше.
Несколько слов о FIO и ezFIO:
Для тестирования мы решили использовать FIO. Тест написан Jens Axboe, разработчиком ядра Linux отвечающим за блочный уровень и блочные устройства. Он написал fio, чтобы упростить использование различных сценариев тестирования.
В наших тестах мы используем ezFIO как оболочку для FIO. Написанный Эрлом Филхауэром powershell скрипт, ezFIO создает рабочую нагрузку для моделирования всех сценариев использования подсистемы хранения данных.
Тестирование ezFIO выполняет в несколько этапов. Вначале весь LUN дважды последовательно заполняется блоками данных по 128 КБ. После этого следуют последовательные тесты чтения и записи с блоками данных разного размера и разной глубиной очереди. FIO готовит наши LUN к тестированию случайных чтения/записи. Для этого наш LUN дважды случайно заполняется блоками данных. Далее следуют пять тестов, которые измеряют производительность устройства с блоками размером 4 КБ. Подробное описание тестов можно найти в Руководстве пользователя ezFIO.
Перейдем к результатам тестирования:
RAID1
Интерфейс/ Модель SSD |
Среднее кол-во IOPS |
NVMe WD Ultrastar DC N640 |
152938 |
SATA Micron 5300 series |
57517 |
SATA Intel DC3-S4510 series |
44900 |
Тест на стабильность производительности длится 20 минут: чтение 70%, запись 30%, при глубине очереди = 256. На графике видно, что массив из WD Ultrastar DC N640 (NVMe) быстрее массива из дисков Micron 5300 (SATA) в 2.65 раз и в 3.4 раза быстрее массива из Intel DC3-S4510 (SATA), отклонение от среднего числа IOPS (на графике отображается как «пилообразность») минимально, поскольку все диски enterprise уровня.
Случайное чтение/запись блоком размером 4K (Чтение 70%/Запись 30%)
При глубине очереди 64 мы видим пиковый рост производительности для массивов из SATA дисков. Массив, построенный из дисков Micron 5300 - 52.4 кIOPS, Intel 4510 - 49.5kIOPS - хотя стоит отметить, что 49 kIOPS цифра недостижимая для HDD. Массив сформированный из WD Ultrastar DC N640 при количестве потоков = 256 158.6 kIOPS.
При потоковом чтении на большом размере блока массив из NVMe дисков показывает отличную производительность - более 6ГБ/сек, что в 6 раз быстрей чем массивы из SATA дисков.
При количестве потоков = 8 на графике виден рост числа IOPS для массива из NVMe дисков до 48.8 kIOPS. Для массивов из SATA дисков ситуация меняется, наибольшая производительность массива из SATA Intel 4510 – достигается при глубине очереди = 2 и составляет 19 kIOPS. Для массива на Micron 5300 – при количестве потоков = 256 максимальная производительность составляет 27.5 kIOPS.
При чтении случайных блоков = 4Kb производительность примерно одинакова до количества потоков = 8. При количестве потоков = 64 отмечается явное лидерство массива из NVMe дисков. При глубине очереди = 256 количество операций ввода-вывода составило 492893 в секунду для массива из WD Ultrastar DC N640. Для массивов, построенных на SATA дисках – Micron 5300 – 131939 IOPS, для Intel DC S4510 132203 IOPS.
Максимальная задержка при чтении составила 9 микросекунд для Intel DC 4510 при количестве потоков =2, для WD Ultrastar DC N640 – 9 микросекунд при глубине очереди = 64, и 8 микросекунд для Micron 5300 при глубине очереди = 32.
Итоги
Проанализировав результаты тестов, мы пришли к выводу, что NVMe накопители предпочтительно использовать для высоконагруженных серверов, обеспечивающих высочайший уровень производительности, доступности и надежности данных с минимальным уровнем задержки. Согласитесь, подвисающие сервисы и нервничающие клиенты — это плохо. Про результаты тестирования RAID 10 подробно мы расскажем в следующей части этой статьи. Сейчас упомяну только о том, что они получились неожиданными для SATA дисков. Для NVMe результат получился прогнозируемым - на запись скорость выросла почти в 2 раза, а на чтение в 1.75.