ЧАСТНАЯ ОФШОРНАЯ ИНФРАСТРУКТУРА
Хранение и восстановлениеПродвинутый · 6 мин чтения

Измеряйте производительность NVMe, не вводя себя в заблуждение

Определите шаблон ввода-вывода, контролируйте эффекты кэша и изучайте распределения задержки, прежде чем делать вывод о приложении по тесту диска.

От редакции SwissOctet
ПРЯМОЙ ОТВЕТ

Полезный тест хранилища сопоставляет размер операций, шаблон доступа, параллелизм и требования к надёжности с приложением. Зафиксируйте условия теста и распределение задержек, затем подтвердите результат измерениями приложения.

01

Начните с вопроса о хранилище, а не с оценки

Решите, что вам нужно узнать, прежде чем запускать бенчмарк. Возможно, вы исследуете медленные фиксации транзакций базы данных, пропускную способность распространения файлов или процесс сборки, создающий множество мелких файлов. Эти рабочие нагрузки требуют от диска не одного и того же. Большое последовательное копирование может выглядеть впечатляюще, но мало говорит о задержке, которую испытывает сервис, выполняющий мелкие случайные чтения.

NVMe был разработан для энергонезависимых носителей и эффективного параллельного ввода-вывода, но его название протокола не описывает каждую часть пути размещённого хранилища. Виртуализация, файловая система, конкуренция за ресурсы и приложение по-прежнему имеют значение. Сформулируйте гипотезу теста, например, замедляет ли задержка хранилища конкретную операцию, вместо того чтобы пытаться получить число, доказывающее, что весь сервер быстрый.

02

Опишите рабочую нагрузку в воспроизводимых терминах

Зафиксируйте размер операции, последовательный или случайный шаблон, соотношение чтения и записи, число задач и глубину очереди. Укажите размер набора данных и длительность теста. Документация fio объясняет эти параметры рабочей нагрузки и доступные движки ввода-вывода. Заданная глубина может быть недостижима для каждого движка или конфигурации, поэтому читайте как сообщаемое поведение, так и запрошенную конфигурацию.

Храните копию описания теста рядом с результатом. Отметьте операционную систему, файловую систему, параметры монтирования, активность сервисов и доступную ёмкость. Если вы сравниваете конфигурации, меняйте одно значимое условие за раз. Тест с другим шаблоном доступа или параллелизмом нельзя честно представлять так, будто изменился только носитель хранилища.

Шаблон приложенияИзмерение теста для описанияРезультат для изучения
Доставка больших файловПоследовательные чтения и параллельные клиентыУстойчивая пропускная способность и использование CPU
Поиск записиМелкие случайные чтения и репрезентативный параллелизмРаспределение задержек и завершённые операции
Надёжная транзакцияТребования к записи и синхронизацииЗадержка, связанная с фиксацией, а не только скорость буферизованной записи
Сборка или распаковкаСмешанные операции с мелкими файламиДлительность сквозной задачи и ожидание ввода-вывода
03

Управляйте кэшированием, не делая вид, что оно не имеет значения

Набор данных, помещающийся в память, после первого прохода может в основном измерять поведение кэша. Это может быть полезно, если приложение обычно получает выгоду от того же кэша, но не следует называть это производительностью устройства как такового. Осознанно выбирайте, исследует ли тест прогретый путь приложения, более холодный набор данных или режим ввода-вывода, призванный уменьшить эффект буферизации операционной системы.

Поддержка прямого ввода-вывода и выравнивание зависят от платформы и движка. Это также не выражает автоматически требования приложения к надёжности и не устраняет все кэши в стеке. Чётко указывайте выбранный режим и избегайте сравнения буферизованного теста с небуферизованным так, будто они представляют одну и ту же работу. Отделяйте прогрев от измеряемых интервалов, когда это помогает интерпретации.

04

Смотрите на хвосты задержки наряду с пропускной способностью

Средняя задержка может скрывать медленные операции, влияющие на реальные запросы. Изучайте сообщаемые процентили и число выборок за ними. Высокий процентиль описывает границу, ниже которой во время этого теста оказалась указанная доля наблюдавшихся операций; это не постоянная гарантия уровня сервиса. Короткие или нерепрезентативные прогоны дают ограниченные доказательства о загруженных производственных периодах.

Более высокая глубина очереди может повысить завершённую пропускную способность, увеличивая время ожидания. Такой компромисс может подходить для пакетной обработки и вредить интерактивному сервису. Сравнивайте результаты при параллелизме, похожем на приложение, и одновременно следите за CPU и нагрузкой ввода-вывода. Остановитесь до того, как тест создаст ненужные помехи другой рабочей нагрузке, использующей ту же среду.

05

Проводите тест с разрешения и без разрушительных последствий

Используйте выделенный тестовый каталог или подготовленный одноразовый том с достаточным свободным пространством и явным планом очистки. Никогда не направляйте тест записи на непроверенное необработанное устройство или производственный набор данных. Перед запуском проверьте цель и поведение записи инструмента и начните с ограниченного прогона. Синтетический ввод-вывод может расходовать ёмкость и мешать сервисам, даже если не перезаписывает полезные файлы.

Для оценки, приближенной к производственной, согласуйте окно обслуживания и сохраните мониторинг приложения. По возможности используйте вымышленные данные. Не делайте выводов о надёжности хранилища из теста скорости: проверки целостности, резервные копии и восстановление — это отдельные задачи. Устройство, завершившее бенчмарк, всё равно нуждается в стратегии восстановления на случай удаления, программных ошибок или потери машины.

06

Замкните цикл доказательствами из приложения

Предположим, сервис отчётов тратит много времени на ожидание случайных чтений. Команда тестирует репрезентативный шаблон чтения, затем повторяет фактический отчёт на сопоставимых данных. Если отчёт улучшается, а остальная работа остаётся стабильной, результат поддерживает гипотезу о хранилище. Если нет, исследуйте проектирование запросов, память или другую зависимость вместо повторения более широких синтетических тестов.

Pulse NVMe и отдельные выделенные конфигурации указывают хранилище NVMe в каталоге SwissOctet. Их ярлыки — это спецификации, а не опубликованные бенчмарки приложений. Используйте контролируемый метод для оценки предоставляемой среды и сохраняйте условия вместе с выводами. Решение становится сильнее, когда измерение хранилища и видимый пользователем результат отвечают на один и тот же вопрос.

ПРЕВРАТИТЕ ЭТО В ДЕЙСТВИЕ

Ваш практический чек-лист.

  • Сначала определите вопрос приложения.
  • Зафиксируйте шаблон, размер блока, параллелизм и длительность.
  • Укажите допущения о кэше и режиме ввода-вывода.
  • Изучайте процентили задержки наряду с пропускной способностью.
  • Используйте проверенную одноразовую цель и ограниченную начальную нагрузку.
  • Подтвердите вывод тестом приложения.
ЧАСТЫЕ ВОПРОСЫ

Детали, которые важны.

Достаточно ли последовательного копирования для сравнения хранилища базы данных?+

Обычно нет. Доступ к базе данных может включать мелкие случайные чтения, записи и синхронизацию. Смоделируйте соответствующий шаблон и проверьте фактическое приложение.

Доказывает ли прямой ввод-вывод надёжность записей?+

Нет. Буферизация и надёжность — разные вопросы. Сопоставьте поведение синхронизации, требуемое приложением.

Могу ли я опубликовать один тест как гарантированную скорость тарифа?+

Нет. Публикуйте его условия и область применения. Измеренный результат одного прогона не является гарантией уровня сервиса или будущей производительности.

ОСНОВНЫЕ ИСТОЧНИКИ

Перейдите к источнику.

Эти источники поддерживают технические концепции в этом руководстве. Следуйте актуальной документации, прежде чем менять производственную систему.

  1. fio: документация гибкого тестера ввода-вывода fio.readthedocs.io
  2. NVM Express: обзор спецификации и FAQ nvmexpress.org
  3. Ядро Linux: Pressure Stall Information docs.kernel.org

Редакционное руководство от SwissOctet. Примеры иллюстративны. Спецификации услуг, доступные опции и договорные условия необходимо проверять отдельно.

СВЯЖИТЕ ЗНАНИЯ

Связанная инфраструктура.

СОХРАНЯЙТЕ НИТЬ

Ваши следующие заметки.

Изучите все руководства
ЗАМЕТКА / 02
Хранение и восстановлениеПрикладное

Снимки и резервные копии: выберите сбой, который нужно пережить

Сравните точки восстановления, границы сбоев и согласованность приложений, вместо того чтобы предполагать, что снимок и независимая резервная копия обеспечивают одинаковую защиту.

ЗАМЕТКА / 03
Хранение и восстановлениеОснова

Объектное, файловое или блочное хранилище: выберите интерфейс, необходимый вашему приложению

Различайте интерфейсы хранения, семантику доступа и операционные обязанности, прежде чем превращать требование к ёмкости в архитектуру приложения.