Зависимость производительности дисков Proxmox ВМ от режима кеширования
Зависимость производительности дисков Proxmox ВМ от режима кеширования
Политики кеширования диска в Proxmox
Всего в Proxmox есть пять режимов кеширования образа диска:
- default (No Cache)
- Direct Sync
- Write through
- Write back
- Write back (unsafe)
У каждого из этих режимов есть свои особенности. На форуме Proxmox есть даже соответствующее обсуждение. Ниже приведена таблица с кратким описанием и особенностями каждого из режимов.
|
Режим кеширования |
Возможная потеря данных |
Описание |
|
default (No Cache) |
Только асинхронные записи |
Хост Proxmox не использует кеширование, но для образа диска используется режим кеширования write-back. Диск ВМ получает подтверждения о записи напрямую от устройства хранения |
|
Direct Sync |
Нет |
Хост Proxmox не использует кеширование, но для образа диска используется режим кеширования write-through. Это наиболее безопасный метод, т.к. потери данных не происходит. В тоже время это наиболее медленный режим |
|
Write through |
Нет |
Хост Proxmox испольузет кеш для чтения, но не для записи. Хорошие показатели на чтение, но запись медленнее. Рекомендуемый режим для локальной подключенных дисков (DAS – direct attached store) |
|
Write back |
Только асинхронные записи |
Хост Proxmox испольузет кеш как для чтения, так и для записи. Запись на диск считается подтвержденное, если она подтверждена в кеше, независимо от фактической записи на диск. Следовательно, при отключении питания возможны потери данных. |
|
Write back (unsafe) |
Да |
Практически идентичен режиму write-back, но подтверждении о записи не используется вообще. Даже в кеше. Самый быстрый режим, но и самый ненадежный в плане отказоустойчивости. Однако, можно применять его в момент установки ОС для ускорения процесса. Только потом поменять редим кеширования. |
Описание окружения
В качестве тестового стенда использован сервер 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.
Логический диск: RAID5 3 x 900 GB SAS 10k собранный средствами аппаратного RAID контроллера Smart Array. Дополнительной нагрузки на этом диске нет.
Методика тестирования
Для тестирования будет использоваться виртуальная машину с Ubuntu Server 20.04, которая расположена непосредственно на сервере Proxmox. Для тестирования подключен второй диск, отдельный от системного диска.
Тестирование будет осуществлять утилитой ioping.
Будут выполнены следующие тесты.
Производительность операции чтения с размеров блока 512 байт.
ioping -c 10 -s 512b
/dev/sdb
Производительность операции чтения с размеров блока 4 килотайта.
ioping -c 10 -s 4k
/dev/sdb
Производительность операции чтения с размеров блока 64 килотайта.
ioping -c 10 -s 64k
/dev/sdb
Производительность операции чтения с размеров блока 1 мегабайт.
ioping -c 10 -s 1024k
/dev/sdb
Производительность операции записи с размеров блока 512 байт.
ioping -WWW -c 10 -s
512b /dev/sdb
Производительность операции записи с размеров блока 4 килотайта.
ioping -WWW -c 10 -s 4k
/dev/sdb
Производительность операции записи с размеров блока 64 килотайта.
ioping -WWW -c 10 -s 64k
/dev/sdb
Производительность операции записи с размеров блока 1 мегабайт.
ioping -WWW -c 10 -s
1024k /dev/sdb
Производительность операции последовательного чтения с диска с размером блока 4 мегабайта:
ioping -L -s 4m -с 10 /dev/sdb
Производительность операции последовательной записи на диск с размером блока 4 мегабайта:
ioping -WWW -L -s 4m -с 10 /dev/sdb
Для более объективного результата каждый из тестов будет выполняться 10 раз и высчитывать среднее значение для результата. В качестве метрик будет использоваться количество iops и скорость чтения (записи) на диск. Например:
Зависимость производительности дисков Proxmox ВМ от режима кеширования – результаты тестирования
В этом разделе будут предоставлены сводные результаты тестирования, которые были получены. Стоит отметить, что эти результаты характерны именно для того окружения и нагрузки, которая была указана в методике тестирования. Вполне вероятно, что на другом “железе” или с другим профилем нагрузки результаты могут отличаться. Рассматривать полученные результаты стоит сугубо в познавательных целях и выполнять тестирования именно под ваши рабочие нагрузки.
Случайное чтение блоками 512 байт
Результаты приведены на диаграмме ниже.
Каких-то разительных отличий в производительности для режимов кеширования зафиксировано не было. Самый быстрый режим – Write back (unsafe). Самый медленный – Write through. Но даже различия между самым быстрым и самым медленным режимом в данном случае вы вряд ли увидите невооруженным взглядом.
Случайное чтение блоками по 4 килобайта
Результаты:
Опять же самый быстрый режим оказался Write back (unsafe). Но он не ощутимо быстрее. Остальные режимы показали примерно одинаковый результат.
Случайное чтение блоками по 64 килобайта
Диаграмма с результатами:
Результаты всех режимов примерно одинаковые. Можно даже сказать, что почти в пределах погрешности измерений.
Случайное чтение блоками 1 мегабайт
Сводная диаграмма с результатами ниже.
Это первый тест, где уже есть разительные отличия. Самый быстрый режим опять же Write back (unsafe). Он быстрее примерно на 15%, чем самый медленный режим Write back. Режим default (No Cache) примерно идентичен самому быстрому режиму (Wrote back (unsafe)) по количеству iops, но опять же, примерно на 15% медленнее по скорости чтения с диска.
Случайная запись блоками по 512 байт
Теперь переходим к операциям записи. Результаты:
Режим default (No Cache) чуть-чуть быстрее всех остальных, но не более чем на 10% в среднем.
Случайная запись блоками по 4 килобайта
Результаты тестирования.
По скорости чтения все режимы примерно одинаковы, но по количеству iops очень выделяет в большую сторону режим Write back (unsafe). Он более чем на 25% быстрее, чем самый медленный режим по количеству iops – Write back.
Случайное чтение блоками по 64 килобайта
Результирующая диаграмма:
Самым быстрым режимом оказался default (No Cache), а самым медленным Write back (unsafe).
Случайное чтение блоками по 1 мегабайту
Результаты во много повторяют результаты прошлого теста:
Самые быстрые режимы – Direct Sync и default (No Cache). Чуть медленнее Write back (unsafe). Остальные режиме примерно равны.
Линейное чтение блоками по 4 мегабайта
График получился довольно красноречивый.
Похоже, что тут уже начинает работать кеш и между различными режимами разница может быть уже пятикратной. Самые быстрые режимы – Write back (unsafe) и Write through. Чуть медленнее Write back. Оставшиеся два режима оказались в разы медленнее.
Линейная запись блоками по 4 мегабайта
Результаты последнего теста приведены на диаграмме ниже.
Как и в прошлом тесте различия легко прослеживаются, но они не такие ярко выраженные. Самый шустрый режим – Direct Sync. Остальные режимы показали примерно одинаковый результат.
Выводы
Выбирать режим кеширования необходимо исходя из характера рабочей нагрузки и устойчивости режима кеширования к аварийному выключению питания. Идеально будет проводить какие-то замеры производительности тестами из того прикладного ПО, которое будет генерировать нагрузку на дисковую подсистему.
Результаты выше носят ознакомительный характер и могут отличаться в зависимости от оборудования и профиля нагрузки на дисковую подсистему.