当 cache='none' 时,KVM 会导致 CPU 负载过高

当 cache='none' 时,KVM 会导致 CPU 负载过高

我已按照说明进行操作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 负载。

相关内容