Проверка соответствия производительности виртуального диска выбранному типу (Тиру) в облаке
В облачной инфраструктуре доступны 2 Тира кластеров хранения информации на основе SSD накопителей
В Инферит облаке используются только SSD носители.

- Тир 1 – классические SSD накопители DC класса;
- Тир 2 – высокопроизводиительные накопители;
Каждый тип диска имеет собственные технические спецификации, ограниченные показателями – IOPS (количество операций ввода–вывода в секунду), скорости записи/чтения (Мб/сек) и задержкой (latency).
Базовые усреднённые метрики:
| Тип диска | randwrite IOPS | randread IOPS | RW MB/Sec | RR MB/Sec | Latency avg. | Latency min. |
|---|---|---|---|---|---|---|
| Tier 1 – SSD | 50 000 | 35 000 | 175 | 150 | 2 ms. | 0.2 ms. |
| Tier 2 – SSD (high-iops) | 125 000 | 50 000 | 400 | 250 | 1 ms. | 0.1 ms. |
Тестирование
RandomWrite Tier 2 block 4k

При глубине 64 и размере блока 4k
| Тип диска | randwrite IOPS | randread IOPS | RW MB/Sec | RR MB/Sec | Latency avg. | Latency min. |
|---|---|---|---|---|---|---|
| Tier 1 – SSD | 1 500 | 1 000 | 1 500 | 1 000 | 25 ms. | 1.5 ms. |
| Tier 2 – SSD (high-iops) | 4 000 | 3 500 | 4 000 | 3 500 | 15 ms. | 1.5 ms. |
При глубине 64 и размере блока 1M
Рекомендуемое время выполнения тестов – не менее 5 минут!
Tier 1 - RandRead block 1M

Tier 2 - RandRead block 1M

Кроме технических ограничений, выбранный тип дисков подразумевает определённый SLA – обеспечение приемлемых показателей производительности при строго обозначенном профиле нагрузки на диск. К таким показателям относятся:
- Отдаваемое в гостевую ОС диском VM гарантированное количество IOPS определённого размера;
- Профиль нагрузки, при котором данное количество IOPS будет обеспечено;
- Время отклика дисковых операций.
Пример:
Тип дисков Tier 1 – SSD гарантирует, что для диска объёмом 1000ГБ:
Гостевая ОС получит 50 000 IOPS при размере одной операции в 4КБ;
время отклика не более 2мс.
Для проверки соответствия производительности диска выбранной политике применяются синтетические генераторы нагрузки, позволяющие строго указать все необходимые параметры теста:
- FIO (Flexible I/O tester) для гостевых ОС Windows и Linux;
- DiskSpd для гостевых ОС Windows.
Синтетические тесты не предназначены для работы на продуктивной системе. Это может вызвать деградацию производительности работающего приложения, а также привести к некорректным результатам. Поэтому, перед проведением теста, необходимо выполнить остановку всех сервисов и приложений, создающих нагрузку на диск.
Работа с FIO
Результаты выполнения job в fio могут отличаться как в лучшую так и в худшую сторону относительно SLA. Для получения достоверных результатов проведите 5-7 замеров с интервалом в 10-15 минут.
Проводить тестирование на дисках с установленной ОС не рекомендуется из-за искажения результатов.
В качестве примера будет рассмотрен запуск теста с использованием созданного файла конфигурации для диска объёмом 1 000 ГБ, тип диска Tier 1 – SSD
Необходимо убедиться, что гостевая ОС может гарантированно получить 50 000 IOPS размером блока 4КБ, с задержкой не более 3мс.
- Загрузите и установите текущую версию FIO для гостевой ОС:
- Windows: дистрибутивы доступны для скачивания;
- Linux: самостоятельно соберите FIO из исходных кодов или установите готовый пакет, используя пакетный менеджер. Пример для RHEL:
yum –y install fio.
- Сформируйте конфигурационный файл fio3.ini с описанием всех параметров теста.
Windows:
[global]
# Название теста
description=test
# Рабочая директория. В ней FIO создаст job-файлы заданного размера. Например, если тест запускается для тома F, то:
directory=F\:\
# Размер job-файла. Может варьироваться в зависимости от уровня заполнения диска. Не рекомендуется заполнять диск более чем на 80%.
size=15g
# Время работы теста в секундах. Рекомендуемая длительность тестирования не менее 5-ти минут
runtime=300
time_based
# Выбор библиотеки движка для проведения тестирования. Для Windows указывается windowsaio, для Linux libaio
ioengine=windowsaio
# Процент рандомизации операций ввода-вывода.
percentage_random=100
# Запрет использования кэша
direct=1
# Предполагаемая глубина очереди
iodepth=64
# Количество job-файлов. Может варьироваться, если тесту не хватает мощности для достижения требуемого потолочного значения IOPS
numjobs=1
group_reporting
[random]
# Размер блока. Он же размер 1й операции ввода-вывода
bs=4k
# Провести тест в режиме случайного чтения и записи
rw=randrw
Linux:
fio --name=randwrite --ioengine=libaio --iodepth=64 --rw=randwrite --bs=4k --numjobs=1 --runtime=60 --group_reporting --size=5G --filename=/mnt/fio/test4
- Процедура тестирования:
Windows
Запустите тест FIO, указав конфигурационный файл: fio.exe fio3.ini.
При первом запуске FIO сначала сформирует на указанном диске требуемое количество job–файлов заданного объёма, затем произведёт нагрузочное тестирование в течение указанного времени. Повторный запуск теста будет использовать имеющиеся файлы, если их параметры не были изменены в конфигурационном файле.
Linux
Выполните:
fio --name=randwrite --ioengine=libaio --iodepth=64 --rw=randwrite --bs=4k --numjobs=1 --runtime=60 --group_reporting --size=5G --filename=/mnt/dirname/test1
- Получите и интерпретируйте результаты теста:
Требуемые результаты представлены на скриншоте ниже:
Достигнуто требуемое среднее значение в 79 350 IOPS (при необходимых 50 000).
Получена приемлемая (менее 2 мс) средняя задержка для операций:
write lat (usec) avg=806,74, что эквивалентно 0,8мс;

FIO не использует фиксированную размерность для отображения результатов времени отклика, поэтому рекомендуется правильно пересчитывать размерность результатов в миллисекунды.
Методика тестирования производительности сети между Инстансами в Проекте
Для тестирования пропускной способности сети между Инстансами внутри одного Проекта применялось программное обеспечение – iperf ( https://iperf.fr/ )
Методика:
Разные HV
- на ВМ запущен iperf в режиме сервера:
iperf -s
- на клиентском хосте запущена команда (для одного подключения):
iperf -c 10.10.60.61
Вывод:

- для параллели из 20 подключений на 30 секунд:
iperf -c 10.10.60.61 -P 20 -t 30
Вывод:

В рамках 1 HV
- на ВМ запущен iperf в режиме сервера:
iperf -s
- на клиентском хосте запущена команда (для одного подключения):
iperf -c 10.10.60.61
Вывод:

- для параллели из 20 подключений на 30 секунд:
iperf -c 10.10.60.61 -P 20 -t 30
Вывод:
