为虚拟机分配 CPU 核心的限制是什么?

为虚拟机分配 CPU 核心的限制是什么?

至少在 VMware 中,当创建或调整虚拟机设置时,我可以选择让虚拟机使用多少个 CPU 核心。当我考虑在某个时候可能同时运行多个虚拟机时,这个问题就浮现在我的脑海中。根据分配给其他虚拟机或主系统的 CPU 核心数量,我可以运行的虚拟机数量是否有限制?例如,我有 6 个核心,我是否只能运行 5 个虚拟机;每个虚拟机使用 5 个核心,剩下一个核心给我的系统?或者我可以运行 5 个以上的虚拟机,它们将共享核心,但性能显然会受到影响?

答案1

如果您使用的是 vSphere(我假设您使用的是您所标记的)vmware,当您分配 1 个 CPU 核心时,您将分配 1 个 vCPU 核心。CPU 不会绑定到物理 CPU 核心(pCPU)。

对于 vSphere 6.0,每个物理核心最多有 32 个 vCPU,vSphere 管理员可以在单个主机上为虚拟机分配最多 4,096 个 vCPU,但每个核心实际可实现的 vCPU 数量取决于工作负载和硬件的具体情况。

对于每个超过 1:1 vCPU 与 pCPU 比率的工作负载,为了获得处理器时间,vSphere 虚拟机管理程序必须调用处理器调度来将处理器时间分配给需要它的虚拟机。因此,如果 vSphere 管理员创建了 5:1 vCPU 与 pCPU 比率,则每个处理器将支持五个 vCPU。比率越高,性能影响就越大,因为您必须考虑虚拟机等待物理处理器可用的时间长度。在查看 CPU 超额认购以及确定虚拟机等待处理器时间的时间长度时,迄今为止最有用的指标是 CPU Ready。

您在设计中要实现的 vCPU 与 pCPU 比率取决于您正在虚拟化的应用程序。在缺乏任何经验数据的情况下(这通常是异构云平台的情况),通过使用模板和蓝图,鼓励您的服务使用者从单个 vCPU 开始并在必要时进行扩展是一种很好的做法。虽然多个 vCPU 对于支持并行化的工作负载非常有用,但对于没有内置多线程结构的应用程序来说,这是适得其反的。因此,虽然具有 4 个 vCPU 的虚拟机将需要管理程序等待 4 个 pCPU 可用,但在具有其他虚拟机的特别繁忙的 ESXi 主机上,这可能比相关 VM 只有一个 vCPU 时花费的时间长得多。由于 vSphere ESXi 调度机制倾向于使用相同的 vCPU 与 pCPU 映射来通过套接字上的 CPU 缓存来提高性能,因此这种性能影响进一步扩大。

https://www.vmware.com/pdf/Perf_Best_Practices_vSphere5.5.pdf

您还可以搜索“虚拟机 CPU 过度使用”以获得更多结果。

答案2

我发现使用 VMware Workstation 的一个好的经验法则是 1 个双核 CPU。这对于 Windows 客户端和 Linux 客户端都很有效。

机器数量不受内核数量的限制。我的笔记本电脑有 4 个内核,我运行 Windows 10 主机和 3 个客户机:Windows 7、Kali 和 Ubuntu。

我为每台机器分配 3 GB 内存,总共有 16GB 内存。

我获得的最大性能提升来自于非常快的 NVMe SSD。

相关内容