Conversation

Несерьёзный Выдумщик

Можно ли доверять тестам современных NVMe-дисков? Прямые замеры скорости работы #NVMe давно превратились в проверку работы DRAM-кеша и контроллера. Не имеющее отношение к скорости NAND-модулей памяти (QLC, TLC, MLC).

NVMe-диски неизбежно эволюционировали ради новых версий #PCIe (шины) и более плотное хранение данных в NAND-модулях. Почти в каждом появился мощный контроллер с DRAM-кешом из модулей DDR4 памяти. Большинство моделей имеет два режима работы, с поддержкой 4096-страниц и режим совместимости с эмуляцией 512-байтных страниц.

Фактически, NVMe-диски превратились в отдельные компьютеры, с очень непростой логикой работы и ориентированной на определённые виды или профиль нагрузок. Проявляется это разными путями, один из вариантов обусловлен псевдо-SLC кешами у некоторых моделей. Когда часть ёмкости TLC NAND-модулей резервируется под нужды контроллера и не используется для хранения данных пользователя.

NVMe-дискам вообще свойственно показывать крайне высокую скорость работы лишь поначалу, будучи пустыми. После чего скорость резко падает и более никогда не восстанавливается, но это происходит не одинаково, даже у моделей идентичных в аппаратном плане (по железу).

Вот у Kingston есть двух-трёх летней давности модели KC3000 и Kingston FURY RENEGADE обе под PCIe 4.0 и одинаковые по начинке:

  • контроллер Phison PS5018-E18,
  • DRAM-кеш по 1 GB DDR4 на каждый террабайт ёмкости,
  • NAND модули FB2560HUCM1 (Micron TLC 176 слоев)

Но работают эти две модели различным образом, если 2 ТБайтные сравнивать по скорости работы дисков при:

  • записи на пустой сперва 250 Гбайт и потом 650 Гбайт (скорость в 1750 Мбайт/сек стабилизируется только после записи первых 250 Гбайт),

  • запись на уже заполненные данными до 80% ёмкости — скорость различается то как по характеру изменения так и в численных показателях.

Неизменно и одинаково у этих двух моделей лишь то, что обе модели показывают декларируемую скорость работы лишь на первых гигабайтах, пока объёмы укладываются в DRAM-кеш контроллера (как и большинство современных NVMe накопителей).

Таким образом и получается, что тестировать NVMe надо с учётом:

  • выхода объёмов данных за пределы DRAM-кеша,
  • работы псевдо-SLC кеша (и другой оптимизации под виды нагрузки),
  • количества оставшейся ёмкости — уровня заполненности данными накопителя.
Применимость и значимость скоростей

Работа NVMe-диска важна для загрузки ЦПУ при полнодисковом шифровании — через #LUKS в случае #linux. Нужен ли десяти-ядерный процессор на операциях в пределах DRAM-кеша контроллера?

Не особо мощные процессоры в ноутбуках благодаря AES-NI показывают скорость шифрования близкую к 1700 Мбайт/сек работы NVMe-диска. Если аппаратное ускорению AES в режиме XTS выдаёт 1760 Мбайт/сек на одном ядре, то скорость работы остальных шифров будет гораздо скоромнее — у Serpent или Кузнечика выйдет порядка 530 МБайт/сек, на каждом ядре ЦПУ.

Т.е. при AES-шифровании в ноутбуке хватит четырёх-ядерного процессора для обслуживания небольших обменов данными с NVMe-дисками, выполняющихся на скоростях в пять-шесть гигабайт/сек. А для обмена данными более масштабными по объёму будет хватать и одного ядра.

Режимы работы

Какие страницы использовать 4096 или же 512? Отключение эмуляции 512-байтных страниц понижает температуру контроллера и увеличивает скорость работы накопителя на десять процентов или около того. Проверить можно через:

sudo nvme id-ns -H /dev/nvme0n1

Если показывает два режима и текущий в работе 512, а не 4096, то можно отформатировать NVMe-накопитель с потерей всех данных на нём:

sudo nvme format --lbaf=N /dev/nvme0n1

Где «N» — это «1» если показывалось «LBA Format 1» соответствующее 4096-байтным страницам.

#железо #ssd

0
0
2