VMware / SQL - 物理核心与逻辑核心 - 启用 HT 时分配多少个 vCPU

VMware / SQL - 物理核心与逻辑核心 - 启用 HT 时分配多少个 vCPU

我们有一台 ESX 主机:

它有 2 个 CPU x 8 个核心,并且启用了 HT。因此,总共有 16 个物理核心或 32 个逻辑核心。

它上面有一个专用的 SQL VM(此主机上没有运行其他 VM),并且分配了 16 个 vCPU:

SQL NUMA 配置如下:

这是否意味着这 16 个 vCPU 映射到 1 个 CPU 中的 16 个逻辑核心,而另一个包含 16 个逻辑核心的 CPU 处于闲置状态?
将其增加到 32 个 vCPU 会有什么不同吗?

我找到了这个文章,表示无论逻辑核心有多少,分配的 vCPU 数量都不能超过实际物理核心数量。为什么不呢?

答案1

通常,分配的 vCPU 数量不超过物理核心(忽略 HT)是稳妥的做法。您有 2 个物理 CPU,每个有 8 个核心(虽然我记得 E5-2667 有 6 个核心)——这意味着 16 个真正的核心。无需分配更多。请注意,在许多像您这样的情况下,更有可能耗尽 RAM 而不是 CPU 功率。

答案2

他们不推荐这样做的原因是,超线程在 VMware 中的工作方式并不是两倍的计算能力,根据一些测试,它更像是多出了 10%。因此,您不应定义比物理核心更多的 vCPU。如果该大型虚拟机不是单独运行在该主机上,您可能还想记住,虽然虚拟机的时钟周期正在运行,但其他虚拟机上不会发生太多其他事情,因为单个虚拟机消耗了所有可用核心,如果不是所有 16 个核心都可用,它将无法运行。

答案3

MSSQL 占用大量处理器,这是有原因的。它还会降低 HT 的效率,因为 HT 只会分担处理器的负载,而不会使计算能力翻倍。如果您要运行高性能 SQL 服务器,您可能需要考虑在 vSphere 中分配核心关联规则,并阻止其他虚拟机针对这些核心运行。我知道这违背了虚拟化的目的,但仍有一些优势。

相关内容