我已按照说明进行操作http://www.linux-kvm.org/page/Tuning_KVM。主机是 Debian Squeeze Kernel 3.2、QEMU 1.0、libvirt 0.9.12(全部来自 squeeze-backport)。所有 4 个客户机也都是 Debian Squeeze Kernel 3.2。
所以我在 Guest XML 中的设置是
<cpu model='host-passthrough'/>
<disk [...]/>
<driver name='qemu' type='raw' cache='none'/>
<target [...] bus='virtio'/>
</disk>
<interface [...]>
<model type='virtio'/>
</interface>
客户机上的 IO 调度程序设置为 noop。在主机上,我尝试了 noop/deadline/cfq,对我来说,没有明显的性能差异。所有客户机存储均由 LVM 提供。当使用cache='none'
并且所有客户机都没有值得注意的负载时,主机上 15 分钟的平均 CPU 负载上升到 3-4。但是当使用cache='writeback'
主机时,CPU 负载上升到小于 1。有人能解释一下,为什么 LVM 的建议设置会导致主机上的负载更高吗?
顺便说一句:运行磁盘基准测试时,该选项none
比 可产生更高的 IO 性能writeback
。
答案1
io='native'
好的,使用磁盘部分中的附加选项和cfq
主机系统上的 IO 调度程序,我将获得系统的最佳结果。对于io
客户机 XML 中的所有选项值以及主机和客户机上的 IO 调度程序,IO 速率几乎相同,只会cache='unsafe'
提供显著更高的性能。但只有使用io='native'
客户noop
机中的调度程序和cfq
主机上的调度程序,我才能获得最低的 CPU 负载。