SQL Server 套接字/CPU 配置

SQL*_*AND 3 sql-server vmware virtualisation cpu

您认为就虚拟来宾套接字/CPU 配置而言,实现最佳 SQL Server 性能的最佳配置是什么?我读过很多文章,指出宽插槽配置(每个插槽 1 个 cpu)可提供最佳性能。在其他文章中,SQL Server 的最佳性能是通过 1 个插槽和该插槽中的“x”个 cpu 来实现的。将来宾 VM 套接字/CPU 与物理主机配置相匹配。

SQL Server Standard 仅限于 4 个套接字,但您发现哪种配置性能最佳?我们计划在不久的将来进行负载测试。我期待您的反馈。提前致谢!!!

sqL*_*dLe 5

对于大多数工作负载,一旦为虚拟机选择了处理器、vcpu 数量和 vRAM 数量,最佳选择是将 vcpu 和 vRAM 均匀分布在最少数量的 vNUMA 节点上,从而使 vcpu 和 vRAM 能够与下面相同数量的物理 NUMA 节点上的物理资源。

\n

Mark Achtemichuk 的这篇博文很好地解释了这个想法。\n虚拟机 vCPU 和 vNUMA 调整 \xe2\x80\x93 指南\n https://blogs.vmware.com/performance/2017/03/virtual-machine-vcpu- and-vnuma-rightsizing-rules-of-thumb.html

\n

因此,对于允许 4 个虚拟套接字或 24 个 vcpu 中较小者的 SQL Server 标准版:在所有其他条件相同的情况下,首选所有 vcpu 位于单个 vNUMA 节点中,并且所有 vcpu 和 vRAM 来自单个底层物理 NUMA 节点。如果该虚拟机的 RAM(或 vcpu)数量无法容纳在一个物理 NUMA 节点中,请将其拆分到 2 个 NUMA 节点中。如果必须的话,只使用 4 个 NUMA 节点。并且...根据我处理的分析工作负载...尝试在使用 8 个节点之前尽可能长时间地保留在 4 个 NUMA 节点上。

\n

Mark Achtemichuk 的博客文章还链接到 Frank Denneman 的一些材料 - 他深入研究了根据需要平衡虚拟机可能需要的一些特定 VMware 参数。

\n

虽然 VMware 最近建议对所有 Windows 虚拟机(包括最多 64 个 vcpu* 的 SQL Server)使用默认设置 cores-per-scoket=1,以让 ESXi 自动规划 vNUMA 配置,但他们正在转变为建议设置 cores-per-socket vNUMA 节点中的预期 vcpu 数量。

\n

一种特定的 SQL Server 工作负载和系统,尽管所有 vcpu 和 vRAM 都可以安装在单个物理 NUMA 节点上的一个 vNUMA 节点上,但它被有意放置在跨 2 个物理 NUMA 节点平衡的 2 个 vNUMA 节点上。这样做是因为特定内存对象仅在节点级别进行分区,而无法像许多对象一样动态分区到 CPU 级别。结果是,虽然所有 vcpu 都位于单个 vNUMA 节点中,但严重的自旋锁争用影响了性能。通过将相同数量的 vcpu 拆分为两个 vNUMA 节点(并在 2 个物理 NUMA 节点上平衡这些 vNUMA 节点),可以缓解这种自旋锁争用。然而,这是一个非常特殊的情况,坦率地说,我希望随着工作负载的成熟,他们能够转换回单个物理 NUMA 节点上的单个 vNUMA 节点。

\n

*对于 64 个 vcpu 以上的 Windows VMware VM,每插槽核心数必须设置为大于 1,以符合 Windows 64 插槽限制。

\n