VirtualBox在Win10下性能不佳

Poor performance of VirtualBox under Win10

我们有一个构建系统,直到几周前,每个目标设备的完整构建还需要大约 1.5 小时。

在某些时候,这已经增加到大约 3.5 小时,因为我们为大约九个不同的目标构建,我们的构建时间从十四小时增加到大约三十二小时。

我们认为我们终于确定了问题所在。我的 Win10 机器上的虚拟机 运行(来宾是 Ubuntu 16.04)被复制到 Win7 机器上。 VM 完全 在其设置、运行 磁盘类型等方面没有变化。该机器的规格也非常相似(相同 CPU、磁盘等)。

As an aside, I was originally running VirtualBox 5.x while the Win7 box had 6.0.12 but I don't think that's the issue since an upgrade to 6.0.14 on my box made no change. Even moving the VM disk across to an SSD on my box gave little relief, meaning it's almost certainly CPU bound.

Win7 机器 运行 虚拟机每次构建大约需要 1.5 小时。

然后我们对该盒子所做的更改是对 Win10 的就地升级,你瞧,构建现在 每个需要 3.5 小时。

一点研究表明,有一些人对 VirtualBox/Win10 作为主机和来宾都有问题,但给出的建议(增加视频内存,在主机和来宾之间重新平衡 CPUs/memory ,enabling/disabling 视频加速等)似乎无法解决任何问题。

我们正在考虑一些想法,例如:

有人对如何前进有任何其他想法吗?

我们一直在进行一些调查,结果发现罪魁祸首是 Windows 10 中引入的 Spectre2/Meltdown 缓解措施。

我们从一些网站上发现,影响各不相同,但对构建服务器场和开发者盒子的影响最大(例如,参见 here):

当使用 Gibson Research InSpectre 工具关闭缓解措施时(当然,为了安全起见,在对机器进行气隙之后),每个目标的构建时间再次减少到一个半小时。

现在我们只需要弄清楚如何推进这件事。我们可能不得不在已经准备好源代码的气隙机器上构建。


一些进一步的细节。我们所有的开发人员机器都是 CPUID 306c3 Haswell,这是受到缓解措施影响特别严重的机器。我们将在更现代的处理器 CPUID 810f10(AMD Ryzen 5)上对其进行测试,看看影响是否较小。

如果是这样,我们可能会选择购买其中的几个。无论哪种情况,此答案都将随结果一起更新。


希望这是最后一次更新。尽管我们最初通过禁用 Windows 主机中的 Spectre/Meltdown 缓解措施成功恢复了速度, 考虑到被黑客攻击的可能性,这并不是一个真正可行的解决方案。

进一步的调查似乎表明,虽然 VirtualBox 在这种环境中受到影响,但 VMware 没有。所以我们去寻找一些东西来解释差异。

最终,我们遇到了 this thread,它描述了一个类似的问题,并且在尝试那里提出的解决方案之一时,我们发现我们可以恢复速度 而不会 妥协主持人 OS.

解决方案是,在您的 VM 关闭(未挂起)时,运行执行以下命令:

vboxmanage modifyvm VM_NAME --spec-ctrl on

其中 VM_NAME 应替换为您的实际 VM 名称(通过 vboxmanage list vms 获得)。然后,在重新启动 VM 后,它应该再次以正常速度 运行。

不幸的是,这意味着我为整个开发团队购买新 Threadripper PC 的商业案例现在已经崩溃。该死的,互联网:-)