最佳实践:每个物理核心的 vCPU

Dr.*_*son 28 virtualization vcpu vmware-vsphere best-practices

我正在尝试查找有关为每个物理内核(CPU 的)配置 vCPU 的虚拟化的一些文档或最佳实践指南。如果重要的话,我正在寻找 vmWare 的虚拟化实现。例如,Intel Xeon CPU 可能有 4、8 等内核。我有兴趣了解更多有关配置的更多信息,而不仅仅是每个物理核心一个 vCPU。与我交谈的供应商肯定认为可以将单个内核配置到多个 vCPU 中。

到目前为止,我在我的研究中通常看到的是,“好吧,这取决于您的应用程序。” 在这种情况下,我的应用程序正在编辑代码、编译/链接、测试和配置管理。当然,并非所有 VM 都需要为每个内核配置多个 vCPU,但在一般情况下。

eww*_*ite 24

单个物理 CPU 可以用作多个 vCPU。您很少会在虚拟化解决方案中耗尽 CPU 资源。RAM 和存储始终是限制因素...

请记住,在VMware中,CPU利用率以MHz表示的使用,而不是内核......除非你盯住所有的虚拟CPU在100%的时间ALL,我不认为你的供应商是正确的。

让我们看看下面的系统集群......

  • 9 台 ESXi 主机。
  • 160 台虚拟机
  • 集群中有 104 个物理 CPU 内核。
  • 平均虚拟机配置文件为:4 个 vCPU 和 4GB 至 18GB RAM。
  • CPU 可以安全地超额订阅……但请记住,它也可以在 VM 级别进行限制、保留和优先级排序

在此处输入图片说明 在此处输入图片说明

来自另一个活动集群 - 3 台主机 42 台虚拟机 在此处输入图片说明

  • 在看到 3936 次 vMotion 迁移后,我对我们的 1,200 次并没有感到太糟糕 (4认同)
  • 我昨天正在查看我们 VM 集群上的统计数据,这些数据证实了@ewwhite 给出的数字。我们有 3 台主机,总共 24 个处理器和 55 GHz。我们有 59 个 VM,总共分配了 79 个 vCPU。根据 vSphere 的统计数据,在过去 6 个月中,我们平均使用了 14 GHz 以上(最低 9 GHz,最高 25 GHz),在此期间,CPU 核心计数争用为 0。 (2认同)

Rea*_*tor 7

为了扩展 ewwhite 的文章,除非您的应用程序可以明确利用多个 vCPU 或每个 vCPU 的多个内核,否则将多个 vCPU/内核分配给 VM 的好处绝对为零。事实上,与在分配有一个内核的单个 vCPU 上运行相比,实际上通常最终会降低性能,部分原因是运行多个 vCPU 所需的调度开销。

FWIW,在 VDI 设置中,经常提到的数字是每个物理核心 5 个 vCPU。当然,这是考虑到办公室工作桌面。如果您的虚拟机真的一直忙于编译代码,您可能无法为每个物理核心安装 5 个 vCPU。

之所以有这么多人说“看情况”,是因为确实如此。查看您的 CPU Ready 值,然后决定是否可以在特定系统上放置更多 CPU 负载。CPU 就绪是 vCPU 准备好执行命令但必须等待物理 CPU 时间变得可用的度量。

在您的情况下,如果您正在编译大型程序,则您的虚拟机完全有可能实际上需要大量 CPU 时间。正如 ewwhite 所指出的,通常虚拟化往往会受到磁盘 I/O 和 RAM 的限制,而不是 CPU 的限制。

  • `将多个 vCPU/内核分配给 VM 的好处绝对为零` - 不完全正确。我们有一个单线程应用程序,过去每周都会挂起。当单个 vCPU 处于 100% 时,无法进入该系统,我们必须对 VM 进行管理程序级别重置。我们添加了第二个 vCPU,当应用挂起时,我们能够轻松进入并杀死有问题的线程。这有点边缘情况是真的,但你永远不能处理绝对。 (13认同)
  • Mark 写的是我们使用两个内核作为每个 VM 的下限的原因——不管他们是否需要它。 (4认同)
  • 就绪值是判断您是否过度配置主机的最佳方式,您的就绪值应尽可能低。这是虚拟机“准备好”使用 CPU 周期但由于 CPU 忙于另一个任务而必须等待的时间百分比。为了解释为什么为您的虚拟机提供多个内核会对性能产生影响,我将使用一个简单的示例:如果我有 4 个物理内核和 4 个虚拟机,如果您有 3 个有 2 个内核的虚拟机和一个有 4 个内核的虚拟机,那么您的较小的虚拟机实际上会得到更多的周期,因为它们可以更好地“适应”倍数。尽可能保守你的vcpus! (2认同)