为什么虚拟机暂停时 Virtualbox 会使用 15-20% 的 CPU?

为什么虚拟机暂停时 Virtualbox 会使用 15-20% 的 CPU?

我在 Ubuntu 上运行 VirtualBox 3.1,并使用 Win XP 客户机。我惊讶地发现,当我暂停虚拟机(其屏幕变灰)时,VirtualBox 仍会使用主机 15-20% 的 CPU。

这是正常行为吗?

有没有办法避免这种情况?(不保存虚拟机的状态并退出 VirtualBox。)

谢谢您的见解!

~拉拉

答案1

为了随时减少 VirtualBox CPU 的使用率,可以采用这种奇怪的方法。

创建一个新的虚拟机,不要在其中安装操作系统。告诉 VirtualBox 它将运行 DOS,并为其提供绝对最小的资源。不要安装操作系统。运行它,让它在启动时出错,然后将其最小化。

当在第二个虚拟机中运行您的真实操作系统时,您将看到空闲的 Virtualbox CPU 利用率下降到 3-5%。

jed4czar 的想法: http://ubuntuforums.org/showthread.php?s=58e862a814e65eb96f8fe8389b615366&t=838073&page=2

编辑:直接回答您的问题

为什么虚拟机暂停时 Virtualbox 会使用 15-20% 的 CPU?

这是个 bug。当任何一个 VM 启动时,它总是会比需要多使用 15-20% 的 CPU,除非使用提供的 hack。

有没有什么办法可以避免?

参见上文 hack。

答案2

我尝试了上述使用 DOS VM 的破解方法,但没有成功(在装有 OS X 的 MacBook Pro 上运行 Ubuntu 12.04 客户机)。我还尝试了Oracle 线程,同样没有变化。无论我做什么,我的客户似乎都消耗了 15-20% 的 CPU。但是,我注意到我恰好分配了 2 个 CPU 的一个客户并没有消耗 15-20% - 它的表现与预期一致。

果然,当我将其他 CPU 切换到 2 个 CPU 时,问题就消失了。根据以前的经验,我知道切换到 2 个 CPU 还会启用主板部分中的 IO APIC 选项,所以我怀疑这是真正有趣的变化。就是这个:

IOAPIC 已启用

请注意,您必须关闭计算机才能更改此设置,否则它将变灰。一旦我在客户机上启用此功能并重新启动,无论我有 1 个还是多个 CPU,15-20% 的 CPU 利用率都会消失,所以我想在这里分享我的解决方案。

答案3

我在虚拟机中运行 Oracle 5 的 Windows 7 Quad 盒上遇到了同样的问题。

根据 Adam 的建议,我检查了启用 IO APIC 选项,但无济于事。因此,我按照 kmarsh 的想法做了,大概不到一分钟就试好了,处理器使用率从 15-20% 下降到 4-5%。

使用的设置是:名称:Memory Hack、类型:其他、版本:DOS。内存大小:4MB、硬盘:不添加虚拟硬盘。单击 [创建]。启动虚拟机时要求输入启动盘,我使用的是:主机驱动器“D:”,单击 [启动]。虚拟机状态:“严重错误:无法从启动介质读取!系统已停止。”此时,CPU 使用率下降,因此我将窗口最小化。启动第二台虚拟机没有任何区别。

答案4

其他答案没有为我解释或修复该错误(Debian 主机,已暂停的 Ubuntu 客户机)。Oracle 有一个部分专门介绍此问题:

某些 Linux 客户机可能会导致 CPU 负载过高,即使客户机系统似乎处于空闲状态。这可能是由于客户机内核的定时器频率过高造成的。某些 Linux 发行版(例如 Fedora)附带的 Linux 内核的定时器频率配置为 1000Hz。我们建议重新编译客户机内核并选择 100Hz 的定时器频率。

Red Hat Enterprise Linux 附带的 Linux 内核以及相关 Linux 发行版(如 CentOS 和 Oracle Linux)的内核都支持内核参数 divider=N。因此,此类内核无需重新编译即可支持较低的计时器频率。我们建议您添加内核参数 divider=10 以选择 100Hz 的客户机内核计时器频率。

来源:Linux 客户机可能导致高 CPU 负载

相关内容