Тестирование производительности виртуальных дисков - достаточно обширная задача, так как производительность может зависеть не только от количества IOPS на дисковой политике, но и от множество других сопутствующих факторов начиная от CPU заканчивая Сетью. Здесь будут наши рекомендации по ПО с помощью которого можно будет получить наиболее точные результаты производительности.
Windows
Для тестирования производительности виртуальных дисков на гостевых операционных системах семейства Windows, мы рекомендуем использовать ПО от Microsoft DiskSpd. Скачать его можно по этой ссылке.
Процесс замера следующий:
- Распаковать архив в любую директорию на Вашей ВМ
- Откройте командную строку и перейдите в директорию, где лежит DiskSpd
- Вводим параметры теста например:
C:\DiskSpd\amd64\diskspd.exe –c2G -d30 -r -w40 -t8 -o32 -b64K -Sh -L C:\DiskSpd\diskpsdtmp.dat
Рассмотрим параметры, которые задействованы:
- c2G - Создать тестовый файл размером 2 гигабайта.
- d30 - Длительность теста 30 секунд.
- r - Случайный доступ к данным.
- w40 - 40% операций записи, 60% операций чтения.
- t8 - Использовать 8 потоков для тестирования.
- o32 - 32 одновременных запроса ввода-вывода на поток (глубина очереди).
- b64K - Размер блока ввода-вывода 64 килобайта.
- Sh - Отключить программное и аппаратное кэширование записи.
- L - Измерять статистику задержек.
- C:\DiskSpd\diskpsdtmp.dat - где будут создаваться файлы
После 30 секунд (в данном случае) выведется результат тестирования, где Вы можете посмотреть результаты. Особенно обращать внимание на IOPS, пропускную способность и задержки.
Более подробную информацию по использованию ПО DispSpd вы можете узнать на оф. сайте Mircrosoft.
Linux
Для тестирования производительности виртуальных дисков на гостевых системах семейства Linux, мы рекомендуем использовать ПО fio (Flexible I/O Tester).
Установка ПО выполняется с помощью команд sudo apt-get install fio для Ubuntu/Debian или sudo yum install fio для CentOS/RHEL
Пример команды для тестирования:
fio --filename=/dev/sdb --direct=1 --rw=randrw --bs=4k --ioengine=libaio --iodepth=256 --runtime=120 --numjobs=4 --time_based --group_reporting --name=test-job
Рассмотрим параметры, которые задействованы:
filename=/dev/sdb: Тестируемое устройство.
direct=1: Операции ввода-вывода выполняются напрямую, минуя кэш ОС.
rw=randrw: Случайное чтение и запись.
read последовательное чтение.
write последовательная запись.
randread случайное чтение.
randwrite случайная запись.
randrw случайное чтение и запись.
bs=4k: Размер блока ввода-вывода — 4 килобайта.
ioengine=libaio: Используется асинхронный механизм ввода-вывода.
iodepth=256: Очередь ввода-вывода имеет глубину 256 операций.
runtime=120: Тест длится 120 секунд.
numjobs=4: Четыре параллельных задания выполняют тест.
time_based: Тест выполняется строго по времени, а не по объему данных.
group_reporting: Результаты всех заданий объединяются в общий отчет.
После 120 секунд (в данном случае) выведется результат тестирования, где Вы можете посмотреть результаты. Особенно обращайте внимание на IOPS, пропускную способность и задержки.
Заключение
Синтетический анализ не дает 100% понимание о производительности виртуальных дисков, отклонения в большую или меньшую сторону могут быть. Также мы не рекомендуем программы подобные CrystalDisck Mark т.к данные программы имеют погрешность порядка 15%.
Есть рекомендации по тестированию виртуальных дисков в общем:
- Для более точного анализа повторите тест несколько раз
Используйте параметры, соответствующие реальной нагрузке на вашу систему (например, размер блока, тип операций).
Если результаты не соответствуют ожиданиям, проверьте конфигурацию ВМ и настройки теста.