为什么空闲的虚拟机使用这么多的CPU?

在Ubuntu 10.04上运行的KVM虚拟化平台上有两台虚拟机作为guest虚拟机运行。 一个VM是Ubuntu 10.04系统,另一个是Windows 7系统。 当两台机器完全注销时,Linux机器使用1%的CPU,而Windows使用45-50%。 virt-manager中的图表似乎支持这一点。 Win7映像上没有安装任何可以在后台运行的映像; 它尽可能新鲜。

为什么Windows虚拟机使用远远多于Linux虚拟机,当它们都注销和空闲?

编辑:

我从一开始就安装了paravirt存储和networking驱动程序。 我不相信有其他司机,我错过了,我错了吗?

据客人的任务经理说,这确实是空闲的。 Taskman占用来宾CPU的大约1%或2%,但是没有任何其他进程占用CPU时间。

你正在运行什么版本的QEMU-KVM?

我们已经在版本0.12.3和更低版本中看到过这个问题,但在0.12.4上似乎没有太多的问题。 另外,检查屏幕保护程序是否正在运行。 如果您正在使用VNC连接,那么它可能正在运行,并且CPU利用率不会在虚拟机内 – 它将被KVM进程耗尽。

我知道我的答案是在100年之后,但是:为了将来的参考,请看这里:

http://forum.proxmox.com/threads/5770-Windows-guest-high-context-switch-rate-when-idle

如果这是casethen这里是解决scheme: http : //support.microsoft.com/kb/895980

它在我的x86_64 kvm主机上将我的Win2K3 R2客户机CPU消息(当客户机闲置时)从〜30%-40%下降到6%

Windows新安装的事实并不意味着不运行后台进程或服务。 使用SNMP或任务pipe理器监视Windows机器,并尝试确定它是否确实空闲。 正如马西莫说,你还应该为你的客户操作系统安装pravirtualization驱动程序。 我从来没有见过空闲的虚拟机从主机获取CPU资源。

我对KVM什么都不了解,但在VMware上,如果不在VMware虚拟机中安装VMware工具,就会发生这种情况,因此它没有适当的虚拟硬件设备驱动程序,它的虚拟CPU在实际上并没有做任何事情时处于真正的闲置状态,而是使用简单的空闲循环(实际上相当于CPU完全忙于循环)。

也许有一些类似于你应该在虚拟机中安装的VMware工具?

首先,停止比较Windows和Linux或期望它们performance相同。 他们是不同的。

Windows 从不闲置。 它运行了许多后台任务,而且从Win 7的简短经验来看,它比XP更有用处。 有助于减轻负载的一件事是开始closures必要的服务,如索引服务。