pax*_*blo 4 performance virtualbox windows-10
我们有一个构建系统,直到几周前,完成每个目标设备的完整构建需要大约 1.5 小时。
在某些时候,这已经增加到大约 3.5 小时,因为我们为大约九个不同的目标构建,将我们的构建时间从 14 小时增加到大约 32 小时。
我们认为我们终于确定了问题所在。在我的 Win10 机器上运行的 VM(来宾是 Ubuntu 16.04)被复制到 Win7 机器上。VM在其设置、运行的磁盘类型等方面完全没有变化。这台机器的规格也非常相似(相同的 CPU、磁盘等)。
顺便说一句,我最初运行的是 VirtualBox 5.x,而 Win7 机器有 6.0.12,但我认为这不是问题,因为我的机器升级到 6.0.14 没有任何改变。甚至将 VM 磁盘移到我的机器上的 SSD 也几乎没有缓解,这意味着它几乎可以肯定是 CPU 限制的。
运行 VM 的 Win7 机器每次构建都在大约 1.5 小时内完成。
然后我们对该框所做的唯一更改是就地升级到 Win10,瞧,现在每个构建也需要 3.5 小时。
一些研究表明,有一些人在使用 VirtualBox/Win10 作为主机和来宾时遇到问题,但给出了建议(视频内存增加、主机和来宾之间 CPU/内存的重新平衡、启用/禁用视频加速等)似乎没有解决任何问题。
我们正在考虑一些想法,例如:
有没有人对如何前进有任何其他想法?
我们一直在进行一些调查,结果发现罪魁祸首是 Windows 10 中引入的 Spectre2/Meltdown 缓解措施。
我们从几个网站上发现,影响各不相同,但对构建服务器群和开发人员箱的影响最大(例如,请参见此处):
当使用 Gibson Research InSpectre工具关闭缓解措施时(当然,在为安全起见对机器进行气隙设置之后),每个目标的构建时间再次下降到一个半小时。
现在我们只需要弄清楚如何向前推进。我们很可能不得不建立在已经准备好源的气隙机器上。
一些进一步的细节。我们所有的开发人员机器都是CPUID 306c3 Haswell受到缓解措施特别严重打击的机器。我们将在更现代的处理器CPUID 810f10(AMD Ryzen 5)上对其进行测试,以查看影响是否较小。
如果是这样,我们可能会选择购买其中的几个。无论哪种情况,此答案都将随结果一起更新。
希望这将是最后的更新。尽管我们最初通过禁用 Windows主机中的 Spectre/Meltdown 缓解措施成功地恢复了速度,但考虑到被黑客入侵的可能性,这并不是一个真正可行的解决方案。
进一步的调查似乎表明,虽然 VirtualBox 在这种环境中受到了影响,但 VMware 却没有。所以我们去寻找一些东西来解释差异。
最终,我们遇到了这个描述类似问题的线程,在尝试其中一个提议的解决方案时,我们发现我们可以在不影响主机操作系统的情况下恢复速度。
解决方案是,当您的 VM 关闭(未挂起)时,运行以下命令:
vboxmanage modifyvm VM_NAME --spec-ctrl on
Run Code Online (Sandbox Code Playgroud)
whereVM_NAME应替换为您的实际 VM 名称(通过 获得vboxmanage list vms)。然后,在重新启动 VM 后,它应该再次以正常速度运行。
不幸的是,这意味着我为整个开发团队购买新 Threadripper PC 的商业案例现在已经崩溃。该死的,互联网:-)