Я выполнил инструкции по http://www.linux-kvm.org/page/Tuning_KVM. Хост - Debian Squeeze Kernel 3.2, QEMU 1.0, libvirt 0.9.12 (все из squeeze-backport). Все четыре гостя также являются Debian Squeeze Kernel 3.2.
Итак, мои настройки в гостевом XML:
<cpu model='host-passthrough'/>
<disk [...]/>
<driver name='qemu' type='raw' cache='none'/>
<target [...] bus='virtio'/>
</disk>
<interface [...]>
<model type='virtio'/>
</interface>
Планировщик ввода-вывода для гостей установлен на noop. На хосте я попробовал noop / deadline / cfq без существенных различий в производительности для меня. Хранилище для всех гостей обеспечивает LVM. Когда используешь cache='none'
и у всех гостей нет заметной нагрузки, средняя загрузка ЦП на хосте за 15 минут увеличивается до 3-4. Но при использовании cache='writeback'
загрузка ЦП хоста становится меньше 1. Может ли кто-нибудь объяснить, почему предлагаемые настройки LVM вызывают более высокую нагрузку на хост?
Кстати: при запуске тестов диска опция none
приводит к более высокой производительности ввода-вывода, чем writeback
.
ОК, с дополнительной опцией io='native'
в разделе диска и планировщик ввода-вывода cfq
в хост-системе я получу наилучшие результаты для своей системы. Скорость ввода-вывода практически одинакова для всех значений опции io
в гостевом XML и для планировщика ввода-вывода на хосте и гостевом компьютере только cache='unsafe'
дает значительно большую производительность. Но только с io='native'
, noop
планировщик в гостевой и cfq
планировщик на хосте, я получу самую низкую загрузку процессора.