Эта публикация во много будет похожа с публикацией, где я тестировал производительность дисков в зависимости от режима кеширования. Только с той лишь разницей, что в этой публикации я протестирую влияние типа контроллера подключения диска на производительность Proxmox ВМ. Тип шины – это один из четырех возможных вариантов подключения диска в настройках виртуальной машины Proxmox.
Описание окружения
В качестве тестового стенда я использовал сервер Proxmox, который установлен поверх физического сервера HP DL360 G8 с аппаратным RAID-контроллером HP Smart Array P420i.
Ниже приведу более дательные параметры.
Версия гипервизора: Proxmox VE 7.4.17
Версия ядра: Linux 5.15.116-1-pve
Физический сервер: HP DL360 G8.
ЦП: 2 х Intel Xeon E5-2670 v2
RAID-контроллер: HP Smart Array P420i + 1 ГБ кэш + BBU.
Логический диск: RAID0 1 x 960 GB SSD Intel D3-S4510. RAID собран средствами аппаратного RAID контроллера Smart Array. Дополнительной нагрузки на этом диске нет.
Методика тестирования
Для тестирования я буду использовать виртуальную машину с Ubuntu Server 20.04, которая расположена непосредственно на сервере Proxmox. Для тестирования я подключил второй диск, отдельный от системного диска.
Тестирование я буду осуществлять утилитой ioping.
Я решил выполнить следующие тесты:
Производительность операции чтения с размеров блока 4 килотайта.
ioping -c 10 -s 4k /dev/vdb
Производительность операции чтения с размеров блока 1 мегабайт.
ioping -c 10 -s 1024k /dev/vdb
Производительность операции записи с размеров блока 4 килотайта.
ioping -WWW -c 10 -s 4k /dev/vdb
Производительность операции записи с размеров блока 1 мегабайт.
ioping -WWW -c 10 -s 1024k /dev/vdb
Производительность операции последовательного чтения с диска с размером блока 4 мегабайта:
ioping -L -s 4m -с 10 /dev/vdb
Производительность операции последовательной записи на диск с размером блока 4 мегабайта:
ioping -WWW -L -s 4m -с 10 /dev/vdb
Для более объективного результата влияние типа контроллера подключения диска на производительность каждый из тестов я буду выполнять 10 раз и высчитывать среднее значение для результата. В качестве метрик я решил использовать количество iops и скорость чтения (записи) на диск. Например:
Политика кеширования диска – default (No cache).
Типы контроллера подключения диска в Proxmox
Краткая сводка по доступным типам контроллеров подключения образа диска приведена в таблице ниже.
Тип контроллера | Описание |
IDE | Наиболее возрастной из всех представленных типов. Основное его преимущество – это поддержка стырами ОС. На этом преимущества заканчиваются. Самый медленный из всех. К контроллеру можно подключить до 4-х устройств. |
SATA | Приемник IDE. Более высокая скорость. Можно подключить до 6-ти устройств к контроллеру. |
SCSI | Контроллер SCSI в основном используется в серверах. Соответственно, позволяет подключить до 14-ти устройств. Proxmox эмулирует SCSI контроллер LSI 53C895A. |
VirtIO Block | “Нарисованный” контроллер. Для его работы необходимо установить драйвера VirtIO в гостевой ОС. Наиболее производительный из всех типов контроллеров. |
Результаты тестирования
В результаты по каждому из тестов будут приведены в одноименном разделе ниже.
Случайное чтение блоками 4 килобайта
Результаты тестирования случайного чтения блоками по 4 килобайта приведены ниже:
В целом здесб прослеживается тенденция, которая привдена в таблице виже со своднойц информацией по кадому из типов подключения. Самый быстрый – VirtIO. Режим IDE примерно в 1,5 раза медленнее.
Случайное чтение блоками 1 мегабайт
Диаграмма с результатами тестирования приведена ниже.
Здесь уже результаты не так однозначны. Особенно выделяется медленные показатели для режима SATA. Хотя я ожидал подобных результатов для IDE.
Случайная запись блоками 4 килобайта
Результаты тестирования:
Результаты во много похожи на результаты случайного чтения блоками по 4 килобайта и явно прослеживается градация увеличения производительности в зависимости от типа используемого контроллера.
Случайная запись блоками 1 мегабайт
Сводные результаты приведены ниже:
Насколько SATA контроллер провалился в аналогичном тесте на чтение, настолько он, к моему удивлению, вырвался в лидеры в тесте на запись. Между VirtIO и SCSI примерно паритет.
Линейное чтение блоками 4 мегабайта
Результаты:
И уже не в первый раз можно заметить, что SATA контроллер оказывается медленее IDE. Я даже не знаю почему так. Но факт такой есть.
Линейная запись блоками 4 мегабайта
Результаты последнего теста:
В очередной раз SATA контроллер показал себя лучше всех в операции записи большими блоками (больше 1 мегабайта). IDE самый медленный. SCSI и VirtIO примерный паритет.
Итоги
Подводя итог можно резюмировать следующее. За исключением некоторых нюансов производительность контроллеров увеличивается в следующем порядке: IDE -> SATA -> SCSI – VirtIO.
Теперь к нюансам – контроллер SATA показывает самую маленькую скорость на чтение большими блоками, но в тоже время оказывается быстрее всех при записи большими блоками. Почему так? У меня нет ответа на этот вопрос.
Поэтому самый оптимальный варинт – это контроллер VirtIO. Если для гостевой ОС по каким-то причинам нет драйвера для VirtIO или нет возможности его установить, то наиболее оптимальным вариантов будет SCSI контроллер. Контроллер IDE использовать только в самую последнюю очередь.