主机是 Ubuntu 10.04 Server。8 个物理核心。客户机是 Ubuntu 12.04;它分配了两个 CPU。我还有其他虚拟机,但最近几天我只运行了这个客户机。
客户机内部的顶部报告负载为 0.05 - 0.20。主机看到这个 kvm 进程占用了 80-120% 的 CPU,总负载保持在 1-1.2 左右。主机除了托管客户机外没有其他工作负载。
这不是 ksmd 的问题,尽管我确实有那个问题尝试了各种不同的值后,禁用了 ksmd,但对性能并不满意。否则,KVM 设置是 Ubuntu 软件包安装的默认设置。
我最近才安装了这台服务器,可能一直都有这个问题。至少,自从我开始在客户机上运行任何常规工作负载以来。
有想法吗?
答案1
事实证明,客户机低估了其 CPU 使用率。我在另一个客户机上运行了同样的工作负载,它使用的 CPU 资源与我的 KVM 主机报告的水平大致相同。这不是一个同类比较,但这是一个有意义的结果。
然后,我终于有了真正的突破。我注意到,对于这个客户机,我错误地使用了虚拟“SCSI”控制器。我将其更改为 Virtio,然后发生了两件事:主机 CPU 使用率略有下降,而客户机 CPU 上升 - 它报告的结果几乎与主机完全相同,正如我们预期的那样。
答案2
如果客户机中没有显示,但主机上的 VM 进程正在使用 CPU,则说明存在开销。我确实想知道它是否可能花费所有时间来代表客户机通过轮询或其他方式处理硬件中断?要么是那样,要么就是你遇到了错误。