虚拟机所暴露的 CPU 核心数量是否有最佳设置?

虚拟机所暴露的 CPU 核心数量是否有最佳设置?

VirtualBox 以及其他可能的 VM 软件允许用户指定 VM 所用的 CPU 数量。在我的特定情况下,我有一个双核 CPU,本机运行 Windows 7 64 位,Ubuntu 9.04 64 位作为 VM。

帮助文件建议不要将其设置为超过可用的物理核心数。这是有道理的。那么,分配 1 个还是 2 个 CPU 核心最好?这完全取决于本机 CPU 负载吗?

答案1

这完全取决于客户操作系统正在做什么。根据我的个人经验,虚拟机正在运行单个程序(构建服务器、trac 服务器、SVN 等),因此没有理由将其设置为高于 1。

一种可能的情况是,如果它是一所大学的最终用户,并且正在使用客户操作系统作为一次性用品(即 TA),那么可能将其设置为高于一。

答案2

此答案中的信息不再正确。在严格的联合调度时代这是正确的,但现在情况已不再如此。

为了后人的利益,我保留下面的答案,但请不要依赖它来确保现代虚拟机管理程序的准确性。


你应该绝不将所有核心分配为虚拟机中的 vCPU。

如果虚拟机请求任何CPU 时间,VMWare必须分配全部vCPU 或没有任何vCPU 的数量。

这意味着,在 4 核系统上,如果分配所有 4 个核心,那么只能为主机或客户机分配处理器时间,而不能同时为两者分配。

这绝对会破坏两种环境中的性能。

可以随意分配奇数个核心(例如 3)。这可能感觉很奇怪,但这是一个完全合法的选择。

一般来说,我从不分配超过 n/2 个 vCPU(在您的情况下为 2 个),但我通常在具有 12 到 32 个核心的服务器上分配核心,您可以在其中分配许多 vCPU 而不会产生重大影响。

答案3

暴露给客户 CPU 的核心数量不会像您希望的那样影响性能。它只是调整客户 CPU“看到”的核心数量。

根据模拟器的设置方式,它实际上可能会使虚拟机的性能降低一半,不执行任何操作,或者仅影响客户操作系统/应用程序拆分其线程调度的方式。

最好保留默认设置。如果主机 PC 出现性能问题,则只需使用 Windows 任务管理器调整进程优先级即可。

答案4

这取决于您想在虚拟机和物理机上做什么。如果您需要在主机操作系统用于其他活动时使用虚拟机,则最好为虚拟机使用两个处理器核心,以便在虚拟机满载时主机还剩下两个核心。另一方面,如果您主要在虚拟机上工作,则可以使用所有处理器核心。

但是,除非可以预期客户机同时使用所有四个核心,否则您可以安全地使用所有核心,同时继续在主机操作系统上工作。请记住,当 VM 进程在主机操作系统上运行时,您始终可以调整其优先级,系统将相应地平衡负载。

相关内容