Методика тестирования производительности виртуальных дисков
Консоль управления Оставить заявку
Консоль управления Оставить заявку
Облачные сервисы
Облачная инфраструктура
Основа облачных сервисов, обеспечивающая надёжную, масштабируемую и легко управляемую виртуальную ИТ‑инфраструктуру для вашего бизнеса.
Виртуальный рабочий стол
Передовые сервисы по предоставлению сотрудникам безопасного удалённого доступа к мощным виртуальным десктопам и корпоративным ресурсам клиента с любого устройства, из любой точки мира.
Информационная безопасность
Все необходимые сервисы для защиты вашей инфраструктуры и приложений. Любой бизнес подвергается атакам, не откладывайте вашу защиту на завтра.
Корпоративные сервисы
Удобные сервисы для обмена документами или файлами между сотрудниками компании в том числе за пределами организации, а также настройка ИТ‑инфраструктуры «под ключ» для Вашего бизнеса от экспертов облака МТС. Благодаря этим сервисам сотрудники экономят рабочее время на выполнение ежедневным рутинных задач, тем самым повышается их эффективность.
Сетевые сервисы
Мы обеспечиваем комплекс решений по построению и оптимизации сетевой инфраструктуры. Это позволит вам быстро и эффективно реализовать необходимую связность между различными сервисами с определенными параметрами качества.
Хранение данных
Надежно и стабильно с МТС Cloud. Мы обеспечиваем хранение любых видов и объемов данных. Это позволит вам быстро и эффективно работать с данными и приложениями.
Аренда оборудования
Сервисы собственной разработки, которые помогут повысить эффективность работы ИТ‑подразделений.
Проектные решения
Партнерские сервисы
Стать партнером
Поддержка
База Знаний #CloudMTS

Методика тестирования производительности виртуальных дисков

В данной статье будет подробно рассмотрено, каким образом возможно проверить соответствие производительности виртуального диска выбранной политике хранения. Каждая дисковая политика имеет ограничения по 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
# Рабочая директория. В ней FIO создаст job-файлы заданного размера. Например, если тест запускается для тома F, то:
directory=F\:\
# Размер job-файла. Может варьироваться в зависимости от уровня заполнения диска. Не рекомендуется заполнять диск более, чем на 80%.
size=25g
# Время работы теста в секундах. Рекомендуемая длительность тестирования не менее 5ти минут
runtime=300
time_based
# Выбор библиотеки движка для проведения тестирования. Для Windows указывается windowsaio, для Linux libaio
ioengine=windowsaio
# Процент рандомизации операций ввода-вывода.
percentage_random=100
# Запрет использования кэша
direct=1
# Предполагаемая глубина очереди
iodepth=1
# Количество job-файлов. Может варьироваться, если тесту не хватает мощности для достижения требуемого потолочного значения IOPS
numjobs=4
group_reporting
# Количество и соотношение операций чтения/записи на 1 job-файл. При требуемом потолочном значении в 4000 IOPS при 4х job-файлах, получаем 1000 IOPS на 1 job-файл. Для соотношения чтения/записи 70/30 получаем итоговое значение параметра:
rate_iops=700,300
 
[random]
# Размер блока. Он же размер 1й операции ввода-вывода
bs=32k
# Провести тест в режиме случайного чтения и записи
rw=randrw


  • получена приемлемая (менее 3мс) средняя задержка для операций:

    • при первом запуске FIO сначала сформирует на указанном диске требуемое количество job-файлов заданного объёма, затем произведёт нагрузочное тестирование в течение указанного времени
    • повторный запуск теста будет использовать имеющиеся файлы, если их параметры не были изменены в конфигурационном файле
  • получите и интерпретируйте результаты теста; пример результатов приведён на скриншоте
1.pngУвеличить

Требуемые результаты представлены на изображении:

  • достигнуто требуемое потолочное значение в ~4000 IOPS с соотношением чтения/записи в 70/30: r=2800, w=1201
  • получена приемлемая (менее 3мс) средняя задержка для операций:

    • read lat (usec) avg=1011,46 что эквивалентно 1мс
    • write lat (usec) avg=468,78 что эквивалентно 0,5мс

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

Описание процесса работы с нагрузочным тестом DiskSPD

Для выполнения тестирования потребуется загрузить и установить текущую версию DiskSPD для гостевой ОС.

Актуальный дистрибутив доступен в разделе Releases.

2.pngУвеличить
  • запустите тестовый 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 сначала сформирует на указанном диске требуемое количество таргет-файлов заданного объёма, затем произведёт нагрузочное тестирование в течение указанного времени; повторный запуск теста при изменении параметров потребует ручное удаление существующих таргет-файлов
  • получите и интерпретируйте результаты теста; пример результатов приведён на скриншоте.
3.pngУвеличить

Требуемые результаты представлены на изображении:

  • достигнуто требуемое потолочное значение в ~4000 IOPS с соотношением чтения/записи в 70/30:

    • Total IO ~4044 / Read IO ~2833 / Write IO ~1211
  • получена приемлемая суммарная (менее 3мс) средняя задержка для операций:

    • AvgLat ~0,356

DiskSPD использует фиксированную размерность для отображения результатов времени отклика - миллисекунды.

Описания и инструкции, размещаемые на данном ресурсе, носят исключительно информационный характер и не могут рассматриваться в качестве гарантий, заверений, рекомендаций или документа, порождающего какие-либо обязательства МТС. Конкретные условия использования сервисов определяются договорами с клиентом. МТС не несет ответственности за содержание публикуемых инструкций и результаты их применения клиентом. Актуальность отдельных положений публикуемых описаний и инструкций необходимо уточнять у аккаунт-менеджера или службы технической поддержки support@cloud.mts.ru