我曾經遇到過虛擬 SQL Server 隨機意外變慢的情況,我無法將其歸因於工作負載、儲存或 CPU(事實上,在主機中撤出其他虛擬機器後,這種情況仍在繼續)。
我懷疑它可能與 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
- 2x 至強金牌 5217(8 核)
- 768GB 總內存
虛擬機器如下:
- 12 個 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