Методика тестирования производительности виртуальных дисков
Данная статья рассказывает о методах проверки соответствия производительности виртуального диска выбранной политике хранения.
Каждая дисковая политика имеет ограничения по IOPS (количество операции ввода–вывода в секунду) на 1 гигабайт объема. Например, при размещении VM на сайте дата–центра Авантаж возможно использовать политику SSD Ultra, в рамках которой доступно 10 IOPS на 1 Гб. В соответствии с указанной политикой для диска объемом 400 Гб на VM, где планируется выполнение тестов, будет задан лимит 4000 IOPS. Подробнее…
Кроме ограничений по IOPS, выбранная дисковая политика подразумевает определённый SLA – обеспечение приемлемых показателей производительности при строго обозначенном профиле нагрузки на диск. К таким показателям относятся:
- отдаваемое в гостевую ОС диском VM гарантированное количество IOPS определённого размера;
- профиль нагрузки, при котором данное количество IOPS будет обеспечено;
- время отклика дисковых операций.
Такие генераторы как, например, CrystalDiskMark, не подходят для проведения тестов. Данный инструмент является графической надстройкой для DiskSpd. CrystalDiskMark не позволяет строго описать профиль нагрузки, гарантируемый политикой. Таким образом, любые полученные результаты не будут релевантны. Используемый генератор должен позволять задать потолочное значение IOPS в рамках теста. Это позволит избежать эффекта возрастания времени отклика дисковой подсистемы при попытке “пробить” потолочное значение IOPS, предусмотренное политикой.
Синтетические тесты не предназначены для работы на продуктивной системе. Это может вызвать деградацию производительности работающего приложения, а также привести к некорректным результатам. Поэтому перед проведением теста требуется выполнить остановку всех сервисов и приложений, создающих нагрузку на диск.
Работа с FIO
Заголовок раздела «Работа с FIO»FIO (Flexible I/O) — утилита для тестирования и симуляции различных сценариев ввода-вывода, который позволяет моделировать сложные рабочие нагрузки без необходимости писать отдельные тестовые программы. Утилита гибко настраивается, поддерживает многопоточность и асинхронные операции.
В качестве примера будет рассмотрен запуск теста с использованием созданного файла конфигурации для диска объёмом 400ГБ, управляемого политикой SSD Ultra. Необходимо убедиться, что гостевая ОС может гарантировано получить 4000 IOPS размером блока 32КБ при соотношении случайных операций чтения/записи в пропорции 70/30 с задержкой не более 3мс.
Установите утилиту:
Сформируйте конфигурационный файл
fio.iniс описанием всех параметров теста.
Запустите тест FIO, указав конфигурационный файл. При первом запуске FIO сначала сформирует на указанном диске требуемое количество job–файлов заданного объёма, затем произведёт нагрузочное тестирование в течение указанного времени. Повторный запуск теста будет использовать имеющиеся файлы, если их параметры не были изменены в конфигурационном файле.
Результат теста будет записан в таблицу в консольном виде. Далее приведен пример вывода работы утилиты в ОС Windows.
Получите и интерпретируйте результаты теста:
Представленные результаты означают, что:
Достигнуто требуемое потолочное значение в ~4000 IOPS с соотношением чтения/записи в 70/30: r=2800, w=1201.
Получена приемлемая (менее 3мс) средняя задержка для операций:
- read lat (usec) avg=1011,46, что эквивалентно 1мс;
- write lat (usec) avg=468,78, что эквивалентно 0,5мс.
Работа с DiskSpD
Заголовок раздела «Работа с DiskSpD»DiskSpD (Disk Speed) — это утилита для тестирования производительности дисков. Утилита используется для измерения скорости чтения и записи на дисках, а также для оценки производительности подсистемы хранения данных.
В качестве примера будет рассмотрен запуск теста для диска объёмом 400ГБ, управляемого политикой SSD Ultra. Необходимо убедиться, что гостевая ОС может гарантированно получить 4000 IOPS размером блока 32КБ при соотношении случайных операций чтения/записи в пропорции 70/30 с задержкой не более 3мс.
Windows
Заголовок раздела «Windows»Загрузите и установите текущую версию DiskSpD для гостевой ОС. Актуальный дистрибутив доступен в разделе Releases.
Запустите тестовый DiskSpD:
diskspd.exe –Sh –o1 –t1 –L –d300 –w30 –c50G –b32k –rs100 –g2000i F:\diskspd0.tmp F:\diskspd1.tmpПри первом запуске DiskSPD сначала сформирует на указанном диске требуемое количество таргет–файлов заданного объёма, затем произведёт нагрузочное тестирование в течение указанного времени. Повторный запуск теста при изменении параметров потребует ручное удаление существующих таргет–файлов.
Получите и интерпретируйте результаты теста:

Представленные результаты означают, что:
- Достигнуто требуемое потолочное значение в ~4000 IOPS с соотношением чтения/записи в 70/30:
- Total IO ~4044
- Read IO ~2833
- Write IO ~1211
- Получена приемлемая суммарная (менее 3мс) средняя задержка для операций: AvgLat ~0,356.
Для ОС семейства Linux используется портированная версия DiskSpD.
- Убедитесь, что у вас установлены зависимости
cmakeиmakeдля сборки программного обеспечения:
sudo apt-get updatesudo apt-get install cmake make g++- Скачайте исходный код портированной версии DiskSpD для Linux:
git clone https://github.com/microsoft/diskspd-for-linux.gitcd diskspd-for-linuxmkdir buildcd buildcmake ..make- Для запуска выполните команду:
./diskspd [опции]Результат теста будет записан в таблицу в консольном виде.
Для запуска DiskSPD на macOS без использования Docker или Wine можно воспользоваться виртуальной машиной с Windows. Для этого можно установить VirtualBox версии 7 и выше или Parallels.