仮想 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 ノードにメモリが割り当てられており、2 番目の vNUMA ノードからのメモリ アクセスでパフォーマンスの低下を引き起こしている可能性があることを示していると思います。
SQL Server は NUMA に対応しているため、このシナリオでパフォーマンスに影響を与えるクロス NUMA メモリ アクセスの影響について想定している可能性があります (つまり、1 つのノードへのアクセスを維持し、クロス NUMA アクセスを回避しようとしている)。
pNUMA ノード間でメモリが均等に割り当てられていることを確認するために実行できる手順はありますか?
ホストは以下の通りです。
- vSphere 6.7.0
- 2x Xeon Gold 5217 (8 コア)
- 合計メモリ768GB
VMは次のとおりです。
- 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