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


27

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

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

Answers:


24

一个物理CPU可以与多个vCPU一起使用。在虚拟化解决方案中,您很少会用完CPU资源。RAM和存储始终是限制因素...

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

让我们看一下以下系统集群...

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

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

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


4
看到3936 vMotion迁移后,我对我们的1200
Mark Henderson

2
昨天我在查看我们的VM群集上的统计数据,其中包含@ewwhite给出的数据。我们有3个主机,总共24个处理器和55 GHz。我们有59个VM,总共分配了79个vCPU。根据vSphere的统计数据,在过去6个月中,我们平均使用了14 GHz以上的频率(最小9 GHz,最大25 GHz),在此期间,CPU核心计数争用为0。
Paul Gear

7

为了扩展ewwhite的内容,除非您拥有可以显式利用多个vCPU或每个vCPU多个内核的应用程序,否则将多个vCPU /内核分配给VM绝对没有任何好处。实际上,与在分配了一个核心的单个vCPU上运行相比,您实际上往往往往会获得较低的性能,部分原因是运行多个vCPU所需的调度开销。

FWIW,在VDI设置中,经常引用的数量是每个物理核心5个vCPU。当然,这要考虑到办公室台式机。如果您的VM一直很忙于编译代码,则每个物理核心可能无法容纳5个vCPU。

这么多人说“取决于”的原因是因为它确实如此。查看您的CPU Ready值,然后决定是否可以在特定系统上增加CPU负载。“ CPU就绪”是对vCPU准备执行命令的度量,但它必须等待物理CPU时间可用。

就您而言,如果您正在编译大型程序,则您的VM完全有可能实际上需要大量的CPU时间。正如ewwhite指出的那样,虚拟化通常倾向于受磁盘I / O和RAM的约束,而不是受CPU的约束。


13
absolutely zero benefit in allocating multiple vCPUs/cores to a VM-并不完全正确。我们有一个单线程应用程序,该应用程序过去每周都会挂起。当单个vCPU达到100%时,无法进入该系统,我们必须对VM进行虚拟机监控程序级别的重置。我们添加了第二个vCPU,当应用程序挂起时,我们可以轻松进入并杀死有问题的线程。这有点极端,但绝对不能绝对。
马克·亨德森

4
Mark写的是为什么我们将两个内核用作每个VM的下限的原因-不管是否需要它们。
尼尔斯,

2
就绪值是判断是否过度配置主机的最佳方法,就绪值应尽可能低。这是VM“准备就绪”以使用CPU周期的时间百分比,但是必须等待,因为CPU忙于其他任务。为了解释为什么给您的虚拟机多个内核会影响性能,我将使用一个简单的示例:如果我有4个物理内核和4个虚拟机,如果您有3个具有2个内核的虚拟机和一个具有4个内核的虚拟机,那么较小的VM会自动获得更多的周期,因为它们可以更好地“适应”多个倍数。vcpus尽可能保守!
Rqomey

@MarkHenderson我可以看到这有什么好处,而那个问这个问题的人因为与编译器一起工作,可能会发生类似的事情。
现实提取器

@Nils我认为,为每个VM 2内核提供是否有业务需求是一个非常糟糕的主意。它很容易以多种方式对您造成负面影响,包括插槽大小,没有足够的可用内核来重新启动/故障转移,由于Rqomey编写的内容而导致性能下降,还有无数其他原因。您几乎总是可以通过vCenter和DCUI进入您的VM。
现实提取器

3

根本的问题与物理系统上的进程调度基本相同。只要系统负载低于内核数(在HyperThreading情况下,甚至是逻辑处理器)以下,一切就很好,并且处理器可以处理负载。

因此,只要所有使用的vCPU上的并发负载不超过物理内核可以处理的负载,一切都很好。

对于您的需求,仅编译是一项需要CPU的工作,仅有时需要进行编译。对于编译器VM,我们分配了尽可能多的CPU。因此,如果需要编译,它将尽快完成(如果您的编译器支持并行编译)。

这对于恒定负载的编译器VM可能不是正确的(例如,如果您提供Internet服务进行编译并且一直在使用)。


2

我见过的一条经验法则(可能在VMware的文档中)是,不给虚拟机分配比主机上实际存在更多的核心,因为这会导致在单个核心上模拟多个vCore,从而增加了不必要的开销。


1
反过来呢?如果我有一个6核Xeon,并且在VM中只分配了4个核,该怎么办?那表现如何呢?VM系统将能够从所有6个物理内核中获取电力,还是将其限制为4个?
忘了

如果仅为其提供4个核心,则一次只能访问4个核心。但是我的理解(未确认)是,除非已配置固定,否则可能会在6个物理内核中的任何4个上分配这4个虚拟内核。
Paul Gear
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.