Кросс-платформенное тестирование WD Blue PC SSD

20 мая 2018

Кросс-платформенное тестирование  WD Blue PC SSD

Что может и чего не может SSD-накопитель WD Blue PC — ком­пакт­ное ус­т­рой­ство на крошечной печатной плате, рассчитанное на установку в разъ­ем M.2, но (как следует из названия) использующее не самый про­из­во­ди­тель­ный на сегодня ин­тер­фейс SATA? Наи­луч­шее представление о работе этого накопителя можно получить, протестировав его на ор­то­го­наль­ных плат­фор­мах Intel и AMD в разных операционных средах, типа Linux и Win­dows.

Одним из немногих инвариантных инструментов для этого может быть Java-приложение. В качестве такового бу­дем ис­поль­зо­вать NIOBench, а результаты его работы прокомментируем в данной статье.

В силу того, что аппаратный базис накопителя WD Blue PC SSD детерминирован известными ограничениями, при­су­щи­ми SATA-интерфейсу, попробуем сделать акцент на исследовании программной надстройки. Акцентируем внимание на механизмах буферизации и кэширования, создаваемых как операционной системой, так и вир­ту­аль­ной машиной Java, и попытаемся сформировать интегральную оценку — представление о потребительских ка­че­ст­вах накопителя с учетом условий его использования.

Тем не менее, представим и аппаратную составляющую WD Blue PC SSD так, как ее опознает информационно-ди­а­г­но­стическая утилита AIDA64.

Тестовые испытания проведем на двух альтерантивных платформах — Intel и AMD. Первая из них представлена системной платой ASUS Prime B360-Plus с процессором Intel Core i5-8400. Вторая — процессором AMD Ryzen 5 1600, установленным на MSI X370 XPower Gaming Titanium. В обоих случаях использовалась одна и та же память: два модуля HyperX HX434C19FBK2 по 16 ГБ в обеспечение двухканальной конфигурации.

Паритетные условия обеспечивает установка тактовой частоты ОЗУ равной для обеих платформ 2666 MHz. Ее влияние неоспоримо при bus-master операциях, выполняемых AHCI-контроллером.

В тесте задействуются свежеустановленные операционные среды Microsoft Windows 10 и ее антагонист Ubuntu 18.04 LTS — популярные и доступные продукты для массового пользователя.

Несколько слов о технологии тестирования

При всем богатстве выбора, нет альтернативы реализованному в NIOBench сценарию Unbuffered native — про­це­ду­ре чтения и записи данных с применением API-функций операционной системы. Роли буферизации, кэ­ши­ро­ва­ния, опережающего чтения и отложенной записи минимизированы в нем использованием специальных атрибутов, за­да­ва­е­мых во входных параметрах функций, например O_DIRECT для Linux. Интерфейс между Java-приложением и фун­к­ци­я­ми ОС реализован посредством JNI (Java Native Interface). Результаты этого теста наиболее близки к ап­па­рат­ной производительности накопителя, вместе с тем, полностью устранить влияние mass-storage стека опе­ра­ци­он­ной системы не получится — можно говорить только об уменьшении его воздействия.

Сценарий Asynchronous или программный тест основан на концепции каналов и буферов, реализованной в рамках фреймворка Java.NIO. В отличие от описанной выше аппаратной процедуры, этот сценарий ставит задачу на вы­пол­не­ние ввода-вывода, выпуская из под контроля методы достижения цели. В таком случае влияние спе­ку­ля­тив­ных механизмов JVM и ОС, вплоть до подмены операций с накопителем чтением или записью транзитного буфера в ОЗУ, является ожидаемым эффектом, что проявляется в виде заметных скачков при измерениях. В асинхронном тесте оценивается результат совместной работы виртуальной машины Java, операционной системы и накопителя. Соотношение этого результата с аппаратной производительностью накопителя зависит от характеристик вы­чис­ли­тель­ной платформы.

Заметим, что утилита NIOBench допускает ряд градаций между двумя рассмотренными сценариями: энтузиасты могут самостоятельно убедиться в тестовой информативности опций Synchronize write+copy, Synchronize write и Synchronize+sparse, детально описанных здесь.

Обработка результатов тестирования

Очевидная тенденция состоит в выраженной зависимости результатов от операционной системы. Хотя тестовый сценарий Unbuffered native, как сказано выше, минимизирует влияние механизмов буферизации и кэширования, полностью освободиться от фактора операционной системы невозможно, ведь низкоуровневый драйвер кон­т­рол­ле­ра SATA AHCI (Advanced Host Controller Interface) и обслуживание файловых операций остаются вне ком­пе­тен­ции NIOBench. Кроме того, различие реализаций виртуальной машины Java для разных ОС, а равно драй­вер­ная под­держ­ка других устройств также могут сыграть некоторую роль.

Статистика последовательных 100 итераций чтения по сценарию Unbuffered native (по клику на новой закладке диаграмма открывается полностью)
Фрагмент статистики последовательных 100 итераций чтения по сценарию Unbuffered native
(по клику на новой закладке диаграмма открывается полностью)

Статистика последовательных 100 итераций записи по сценарию Unbuffered native (по клику на новой закладке диаграмма открывается полностью)
Фрагмент статистики последовательных 100 итераций записи по сценарию Unbuffered native
(по клику на новой закладке диаграмма открывается полностью)

Отрадно, что результаты чтения и записи для платформ Intel и AMD практически совпадают. Логично пред­по­ло­жить, что сыграл свою роль фактор унификации. Программная модель SATA AHCI и алгоритмы его обслуживания программным обеспечением являются индустриальным стандартом, призванным (насколько это возможно) ни­ве­ли­ро­вать различия платформ, упрощая разработку драйверов.

Статистика последовательных 100 итераций копирования по сценарию Unbuffered native (по клику на новой закладке диаграмма открывается полностью)
Фрагмент статистики последовательных 100 итераций копирования по сценарию Unbuffered native
(по клику на новой закладке диаграмма открывается полностью)

При чтении, записи и копировании файлов, операции с поль­зо­ва­тель­ски­ми данными требуется чередовать с об­слу­жи­ва­ни­ем метаданных файловой системы. Эти асинхронные события накладывают свой отпечаток на про­из­во­ди­тель­ность WD Blue PC SSD: «кардиограмма» накопителя красноречиво свидетельствует об этом. В наибольшей степени фрагментация доступа проявляется при копированиии, требующем одновременной работы с файлом-ис­точ­ни­ком и файлом-получателем. Осторожно предположим, что этот фактор является одной из причин раз­ли­чий в по­казателях при тестировании операционных систем Linux и Window «из коробки».

Подводя итоги

Очевидный факт — операция позиционирования, столь ярко влияющая на процессы съема и обработки ин­фор­ма­ции в магнитных носителях, не применима к SSD-устройствам. Вместе с тем, блочная иерархическая организация запоминающей матрицы создает зависимость производительности диска от фактора фрагментации. Одним из ме­то­дов для нивелирования такой зависимости является сортировка очереди команд. Здесь, как из­вест­но, воз­мож­но­с­ти SATA AHCI существенно уступают функциональности, открываемой интерфейсом NVMe.

Не самый прогрессивный SATA-интерфейс позволил накопителю WD Blue PC SSD продемонстрировать (без пре­уве­ли­че­ния) потрясающую стабильность при записи данных. В документации к устройству упоминается SLC-кэширование, с помощью которого наиболее интенсивный трафик обрабатывается в выделенной быстрой области запоминающей матрицы. Думается, интеллект накопителя, помноженный на эффективность 3D NAND ячеек, и ока­зал­ся гарантом таких показателей записи.