对于暴露给 VM 的 CPU 内核数,是否有最佳设置?

sbl*_*air 22 performance virtualbox virtual-machine

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

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

Mar*_*son 17

此答案中的信息不再正确。在严格的协同调度时代,这是正确的,但现在不再如此。

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


永远不应将所有内核分配为虚拟机中的 vCPU。

如果 VM 请求任何CPU 时间,VMWare必须分配所有vCPU 或分配任何vCPU。

这意味着,在 4 核系统上,如果您分配所有 4 个核,则只能为主机或来宾分配处理器时间,而不能同时分配两者。

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

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

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

  • -1:与我的经验不一致。VM 是一个进程,其 CPU 时间可以按照与主机上的任何其他进程相同的方式进行调度。您可以在主机上调整 VM 进程的优先级,系统会适当地平衡负载。 (5认同)
  • (*继续*) 假设您有一个 16 核服务器。一个示例配置是 4 个 VM,每个 VM 配置为 8 个内核。虽然这似乎是太多的虚拟核心,但它允许单个 VM 在更重的工作负载上更好地扩展。如果综合利用率超过物理内核的数量,主机将相应地平衡负载。这就是虚拟化如何通过充分利用主机硬件来提高吞吐量和降低成本。 (2认同)

Nat*_*ate 6

这完全取决于来宾操作系统正在做什么。根据我的个人经验,VM 正在运行单个程序(构建服务器、trac 服务器、SVN 等),因此没有理由将其设置在一个之上。

一个可能的情况可能是,如果它是一个最终用户,比如一所大学将访客操作系统用作一次性产品(即 TA),则可能会将其设置为高于 1。