为什么空闲的 Windows VM 使用了这么多的 CPU?

为什么空闲的 Windows VM 使用了这么多的 CPU?

我在运行 Ubuntu 10.04 的 KVM 虚拟化平台上有 2 个虚拟机作为客户机运行。一个虚拟机是 Ubuntu 10.04 系统,另一个是 Windows 7 系统。根据 top 的数据,当两台机器都完全注销时,Linux 机器使用 1% 的 CPU,Windows 机器使用 45-50% 的 CPU。virt-manager 中的图表似乎支持这一点。Win7 映像上没有安装任何将在后台运行的东西;它是最新的。

当两者都已注销且处于空闲状态时,为什么 Windows VM 的使用量比 Linux VM 多得多?

编辑:

我从一开始就安装了带有 paravirt 存储和网络驱动程序的客户机。我不认为我遗漏了任何其他驱动程序,我错了吗?

根据客户机的任务管理器,它确实处于空闲状态。Taskman 占用了客户机 CPU 的 1% 或 2%,但没有其他进程占用任何 CPU 时间。

答案1

您正在使用哪个版本的 QEMU-KVM?

我们在 0.12.3 及以下版本中看到了这个问题,但在 0.12.4 上似乎没有太大问题。另外,检查屏幕保护程序是否正在运行。如果您使用的是 VNC 连接,那么它可能正在那里运行,并且 CPU 利用率不会在 VM 内部 - 它将由 KVM 进程使用。

答案2

我知道我的答案会在 100 年后出现,但是:以供将来参考,请参见此处:

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

如果是这种情况,那么解决方案如下: http://support.microsoft.com/kb/895980

它使我的 x86_64 kvm 主机上的 Win2K3 R2 客户机 CPU 使用率(当客户机空闲时)从约 30%-40% 降至 6%

答案3

我对 KVM 一无所知,但在 VMware 上,如果您没有在虚拟机中安装 VMware 工具,则可能会发生这种情况,因此它没有适用于虚拟化硬件的设备驱动程序,并且无法在虚拟 CPU 实际上没有执行任何操作时将其虚拟 CPU 置于真正空闲状态,而是使用简单的空闲循环(实际上相当于 CPU 完全忙于自身循环)。

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

答案4

首先,不要再比较 Windows 和 Linux,也不要指望它们的行为相同。它们是不同的。

Windows 是绝不空闲。它会运行许多后台任务,从我对 Win 7 的简短体验来看,它比 XP 执行的任务更多。有一件事将有助于减轻负载,那就是开始关闭必要的服务,例如索引服务。

相关内容