在 Linux 主机上运行 Windows 2003 的 VirtualBox CPU 使用率过高

在 Linux 主机上运行 Windows 2003 的 VirtualBox CPU 使用率过高

我在 Linux xiamx-pc 3.2.0-24-generic #39-Ubuntu SMP Mon May 21 16:52:17 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux 中运行 Windows 2003 客户机

我注意到 VirtualBox 进程持续占用大约 50% 的 CPU 时间,但 2003 中的进程管理器仅显示 5% 的 CPU 使用率。可能是什么原因?有什么方法可以降低 VirtualBox 进程的 CPU 使用率?

答案1

虽然 SATA 和 NIC 语句上面链接的文章仍然如此,最佳表现来自于:

  • 完全分配存储(除非使用 SSD,否则不要使用稀疏文件)
  • 正确分配 RAM 和 CPU(对于主机或客户机来说太少都是不好的)
  • 使用 VirtIO 驱动程序进行存储和网络(这些驱动程序适用于 Linux 和 Windows)

还有一些其他设置,例如禁用任何视频加速、2D 和 3D。我写过另一篇文章在看到 Core i7 使用默认的 VirtualBox 设置进行 30 分钟的 Ubuntu 桌面登录后。

如果您正在使用服务器虚拟化,而不是桌面操作系统,请不要使用 VirtualBox。请改用 KVM、LXC 或 ESXi。如果您能让 Spice 工作,那么即使使用 KVM 作为主机,通过 LAN 和 WAN 的远程桌面性能也会令人印象深刻。

VirtualBox 最适合桌面虚拟化。在我看来,只有 VMware Workstation 比它更好。

答案2

这只是一种猜测,但这可能与 Windows 10 18xx 版及更高版本使用计时器的方式有关。它们每秒发出大约 2000 次中断轮询计时器,并且计时器的优先顺序无法被覆盖。在 KVM 上对我有用的唯一解决方法是使用 hv_synic 和 hv_stimer 启蒙来公开模拟的 hyperv 时钟。由于 hyperv 是唯一具有更高优先级的时钟源,因此 Windows 将切换到使用它,并且它的硬编码中断轮询率要低得多。

我不知道 Virtual Box 是否有相同的解决方法,但为了找到根本原因,我会开始查看这些计时器中断是否每秒被轮询 2000 次。

作为交叉检查,如果您可以获得 Windows 10 版本 1709,请尝试一下。如果空闲 CPU 使用率与现在相比大幅下降,则您已经找到根本原因。

编辑:我刚注意到您使用的是 2K3。在 VM 设置中切换 HPET 可能足以解决您的问题。请参阅此处了解如何操作: https://www.virtualbox.org/manual/ch08.html

相关内容