我遇到了虚拟 SQL Server 随机意外减速的情况,我无法将其归咎于工作负载、存储或 CPU(事实上,在主机撤离其他 VM 后,这种情况仍继续发生)。
我怀疑可能与 NUMA 配置相关 - 特别是物理内存如何映射。
运行coreinfo
显示以下跨NUMA节点访问成本:
Approximate Cross-NUMA Node Access Cost (relative to fastest):
00 01
00: 1.0 1.3
01: 1.4 1.5
这看起来很奇怪 - 我原本预计 01-01 应该更接近 1.0,并且惩罚是在节点之间。
我认为这表明内存正在 Vmware 上的第一个 pNUMA 节点上分配,并且可能会导致从第二个 vNUMA 节点访问内存的性能下降。
由于 SQL Server 具有 NUMA 感知能力,它是否可以对跨 NUMA 内存访问的影响做出假设,从而影响此场景中的性能(即,尝试将访问保留在一个节点上并避免跨 NUMA 访问)?
我可以采取什么步骤来确保内存在 pNUMA 节点之间均匀分配?
主机如下:
- vSphere 6.7.0
- 2 个 Xeon Gold 5217(8 核)
- 总内存 768GB
虚拟机如下:
- 12x vCPU(每插槽 3 个核心 = 4 个插槽)
- 320GB 内存
- Windows 2012 R2
- SQL Server 2016 企业版
编辑:x-mem 显示以下内容,与以下内容不匹配coreinfo
xmem-win-x64.exe -j6 -s -R -l -f test.csv -n5
00 01
00 1.21124 1.18519
01 1.19831 1.18695