В данной статье будет подробно рассмотрено, каким образом возможно проверить соответствие производительности виртуального диска выбранной политике хранения. Каждая дисковая политика имеет ограничения по IOPS (количество операции ввода-вывода в секунду) на 1 гигабайт объема. Пример: при размещении VM на сайте дата-центра Авантаж возможно использовать политику SSD_Ultra_Policy, в рамках которой доступно 10 IOPS на 1 Гб. В соответствии с указанной политикой для диска объемом 400 Гб на VM, где планируется выполнение тестов, будет задан лимит 4000 IOPS. Подробно соответствие IOPS политикам описано в данной статье.
Помимо озвученных ограничений по IOPS выбранная дисковая политика подразумевает определённый SLA - обеспечение приемлемых показателей производительности при строго обозначенном профиле нагрузки на диск. К этим показателям относятся:
- отдаваемое в гостевую ОС диском VM гарантированное количество IOPS определённого размера
- профиль нагрузки, при котором данное количество IOPS будет обеспечено
- время отклика дисковых операций
Пример: политика SSD_Ultra_Policy гарантирует, что для диска объёмом 400ГБ:
- гостевая ОС получит 4000 IOPS при размере одной операции в 32КБ
- случайный доступ к данным с соотношением по операции чтения и записи 70% / 30%
- время отклика не более 3мс
Для проверки соответствия производительности диска выбранной политике применяются синтетические генераторы нагрузки, позволяющие строго указать все необходимые параметры теста:
- FIO (Flexible I/O tester) для гостевых ОС Windows и Linux
- DiskSpd для гостевых ОС Windows
Почему такие генераторы как, например, CrystalDiskMark не подходят для проведения тестов?
Данный инструмент является графической надстройкой для упомянутого генератора DiskSpd, которая не позволяет строго описать профиль нагрузки, гарантируемый политикой. Таким образом, любые полученные результаты априори не будут релевантны. Отдельно стоит подчеркнуть, что используемый генератор должен позволять задать потолочное значение IOPS в рамках теста. Это позволит избежать эффекта возрастания времени отклика дисковой подсистемы при попытке "пробить" потолочное значение IOPS, предусмотренное вашей политикой.
Запуск тестов и анализ результатов
Описание процесса работы с нагрузочным тестом FIO
Для выполнения тестирования требуется загрузить и установить текущую версию FIO для гостевой ОС:
- Windows: дистрибутивы доступны по ссылке
- Linux: самостоятельно соберите FIO из исходных кодов или установите готовый пакет, используя пакетный менеджер
Пример для RHEL: yum -y install fio
- сформируйте конфигурационный файл fio3.ini с описанием всех параметров теста
- подробно рассмотрим пример создания файла конфигурации для диска объёмом 400ГБ, управляемого политикой SSD_Ultra_Policy
- необходимо убедиться, что гостевая ОС может гарантировано получить 4000 IOPS размером блока 32КБ при соотношении случайных операций чтения/записи в пропорции 70/30 с задержкой не более 3мс
[ global ]
description=test
directory=F\ : \
size=25g
runtime=300
time_based
ioengine=windowsaio
percentage_random=100
direct=1
iodepth=1
numjobs=4
group_reporting
rate_iops=700 , 300
[ random ]
bs=32k
rw=randrw
|
- запустите тест FIO, указав конфигурационный файл: fio.exe fio3.ini
- при первом запуске FIO сначала сформирует на указанном диске требуемое количество job-файлов заданного объёма, затем произведёт нагрузочное тестирование в течение указанного времени
- повторный запуск теста будет использовать имеющиеся файлы, если их параметры не были изменены в конфигурационном файле
- получите и интерпретируйте результаты теста; пример результатов приведён на скриншоте

Требуемые результаты представлены на изображении:
- достигнуто требуемое потолочное значение в ~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 для гостевой ОС.
Актуальный дистрибутив доступен в разделе Releases.

- запустите тестовый Disk SPD:
- подробно рассмотрим пример запуска теста для диска, объёмом 400ГБ, управляемого политикой SSD_Ultra_Policy
- необходимо убедиться, что гостевая ОС может гарантированно получить 4000 IOPS размером блока 32КБ при соотношении случайных операций чтения/записи в пропорции 70/30 с задержкой не более 3мс
diskspd.exe -Sh -o1 -t1 -L -d300 -w30 -c50G -b32k -rs100 -g2000i F : \diskspd0.tmp F : \diskspd1.tmp
- Sh - Отключение кэширования запросов I/O
-o1 - Глубина очереди
-t1 - Количество потоков на один таргет
-L - Произвести замер показателей задержки
-d300 - Время работы теста в секундах. Рекомендуемая длительность тестирования не менее 5ти минут
-w30 - Перцентаж операций записи , из соотношения 70/30
-c50G - Размер таргет-файла. Может варьироваться в зависимости от уровня заполнения диска. Не рекомендуется заполнять диск более , чем на 80%
-b32k - Размер блока , он же размер операции IO , равный 32КБ
-rs100 - Процент рандомизации операций ввода-вывода
-g2000i - Количество операций чтения/записи на 1 таргет-файл. При требуемом потолочном значении в 4000 IOPS при 2х таргет-файлах , получаем 2000 IOPS на 1 таргет-файл
F: \diskspd0.tmp F : \diskspd1.tmp - Таргет-файлы в рабочей директории. В примере используется том F. Количество таргет-файлов может варьироваться , если тесту не хватает мощности для достижения требуемого потолочного значения IOPS
|
- при первом запуске DiskSPD сначала сформирует на указанном диске требуемое количество таргет-файлов заданного объёма, затем произведёт нагрузочное тестирование в течение указанного времени; повторный запуск теста при изменении параметров потребует ручное удаление существующих таргет-файлов
- получите и интерпретируйте результаты теста; пример результатов приведён на скриншоте.

Требуемые результаты представлены на изображении:
- достигнуто требуемое потолочное значение в ~4000 IOPS с соотношением чтения/записи в 70/30:
- Total IO ~4044 / Read IO ~2833 / Write IO ~1211
- получена приемлемая суммарная (менее 3мс) средняя задержка для операций: