
Что может и чего не может SSD-накопитель WD Blue PC — компактное устройство на крошечной печатной плате, рассчитанное на установку в разъем M.2, но (как следует из названия) использующее не самый производительный на сегодня интерфейс SATA? Наилучшее представление о работе этого накопителя можно получить, протестировав его на ортогональных платформах Intel и AMD в разных операционных средах, типа Linux и Windows.
Одним из немногих инвариантных инструментов для этого может быть 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
(по клику на новой закладке диаграмма открывается полностью)
Отрадно, что результаты чтения и записи для платформ Intel и AMD практически совпадают. Логично предположить, что сыграл свою роль фактор унификации. Программная модель SATA AHCI и алгоритмы его обслуживания программным обеспечением являются индустриальным стандартом, призванным (насколько это возможно) нивелировать различия платформ, упрощая разработку драйверов.
Фрагмент статистики последовательных 100 итераций копирования по сценарию Unbuffered native
(по клику на новой закладке диаграмма открывается полностью)
При чтении, записи и копировании файлов, операции с пользовательскими данными требуется чередовать с обслуживанием метаданных файловой системы. Эти асинхронные события накладывают свой отпечаток на производительность WD Blue PC SSD: «кардиограмма» накопителя красноречиво свидетельствует об этом. В наибольшей степени фрагментация доступа проявляется при копированиии, требующем одновременной работы с файлом-источником и файлом-получателем. Осторожно предположим, что этот фактор является одной из причин различий в показателях при тестировании операционных систем Linux и Window «из коробки».
Подводя итоги
Очевидный факт — операция позиционирования, столь ярко влияющая на процессы съема и обработки информации в магнитных носителях, не применима к SSD-устройствам. Вместе с тем, блочная иерархическая организация запоминающей матрицы создает зависимость производительности диска от фактора фрагментации. Одним из методов для нивелирования такой зависимости является сортировка очереди команд. Здесь, как известно, возможности SATA AHCI существенно уступают функциональности, открываемой интерфейсом NVMe.
Не самый прогрессивный SATA-интерфейс позволил накопителю WD Blue PC SSD продемонстрировать (без преувеличения) потрясающую стабильность при записи данных. В документации к устройству упоминается SLC-кэширование, с помощью которого наиболее интенсивный трафик обрабатывается в выделенной быстрой области запоминающей матрицы. Думается, интеллект накопителя, помноженный на эффективность 3D NAND ячеек, и оказался гарантом таких показателей записи.