Увеличение производительности и ресурса NVMe SSD с помощью пространства имен

Центры обработки данных переходят на устройства хранения данных NVMe из соображений производительности. Требования пользователей к NVMe SSD отличаются в зависимости от рабочих нагрузок, шаблонов ввода-вывода данных, плотности виртуальных машин и контейнеров. Всегда есть желание использовать все имеющиеся ресурсы для повышения быстродействия.
«Блендер» ввода/вывода
Трафик хранилища отдельных рабочих нагрузок может быть разным. Например, для сервера баз данных типичное соотношение - 70% чтения и 30% записи. Виртуализация все перекручивает: VDI пишет 70-80%. Одновременная работа большого количества программ в виртуальных машинах или контейнерах смешивает и измельчает потоки ввода-вывода на SSD. Транзакции, которые были бы последовательны в изоляции, становятся рандомными, превращаются в смесь операций произвольного доступа с повышенной долей записи. Следовательно, показатель производительности рандомной записи является ключевым для SSD в корпоративной среде.
Усиление записи
Запись в ячейки флеш-памяти устроена так, что уменьшение свободной емкости приводит к эффекту усиления (Write amplification, WA), когда одна операция записи ОС вызывает цепочку переносов данных между ячейками. В отличие от HDD, флеш-память не позволяет перезаписать блок данных по месту. Нужно куда-нибудь считать содержимое всего блока, затем стереть блок и записать данные заново. Возникает мультипликационный эффект вовлечения гораздо большей части флэш-памяти, чем требует объем новых данных. Множественная перезапись пользовательских данных и метаданных увеличивает задержку (latency), снижает производительность записи в IOPS, ускоряет износ ячеек.
Для уменьшения WA и улучшения показателей производительности наращивают служебную область ячеек SSD (overprovisioning, OP).
Избыточный резерв
ОС работает с презентованной емкостью накопителя. Сверх нее у SSD есть пул OP, избыток флэш-памяти. Эту дополнительную емкость контроллер SSD использует при выполнении служебных, прозрачных для хоста функций, таких как управление слоем трансляции флэш-памяти (FTL), выравнивание износа и сбор мусора (GC). В частности, GC восстанавливает неиспользованное пространство для хранения.
Пул OP – маневровое пространство контроллера для экономного переноса данных, уменьшения усиления записи и износа ячеек (с одновременной обработкой удаления данных и очисткой в фоновом режиме). Чем интенсивнее нагрузка рандомной записи, тем больше влияние соответствующего размера OP на производительность и живучесть SSD.
Пространства имен
Пространства имен (namespaces) – одна из ключевых технологий управления NVMe накопителями в системе. Ими делят накопители на логически отдельные, индивидуально адресованные пространства хранения, с которыми хост работает как с блочными устройствами, где каждое имеет свою очередь ввода-вывода. Возникают аналогии с HDD partitions, но те являются разделами диска на уровне хоста, тогда как namespaces – разделы на уровне контроллера SSD.
Часть емкости SSD отводится под пул OP при их производстве. У серий, предназначенных под смешанную нагрузку и интенсивную запись увеличенный размер резервной области. То же самое может сделать пользователь с помощью пространств имен и командной строки (или утилит вендора). Назначение емкости SSD меньше штатной ограничивает потенциальный объем хранения, зато повышает производительность и увеличивает эксплуатационный ресурс накопителя.
Практические последствия
Подробный анализ использования пространств имен для повышения производительности расписан в опытах Kioxia . Там же приводятся примеры параметров командной строки для самостоятельной корректировки рабочей емкости NVMe SSD.
Показательны две диаграммы. На первой – сравнение трех NVMe SSD:
- Штатная (фабричная) емкость 3.84ТБ
- Тот же SSD размечен namespace на 3.2ТБ
- Штатная (фабричная) емкость 3.2ТБ

Два вывода:
- "Обрезка" поднимает производительность ввода-вывода в сценарии сервера баз данных примерно в полтора раза;
- Размеченный вручную NVMe SSD не отличается по показателям от равнобольшого варианта с фабричной разметкой
Вторая показывает повышение производительности случайной записи при использовании пространств имен NVMe разных размеров.

Все в ваших руках
Пространства имен можно использовать для управления NVMe SSD, устанавливая необходимый уровень производительности случайной записи за счет уменьшения полезной емкости. В погоне за скоростью накопители на 1.6-3.2ТБ лучше 1.92-3.84ТБ.
Выбирайте NVMe SSD сознательно. "Режьте", если это полезно для дела.
