設定 SQL Server 使用軟體 NUMA (SQL Server)
偵測到非統一記憶體存取 (NUMA) 並自動使用它。 如果您要模擬大型 SMB 電腦的 NUMA,或者如果您要細分 NUMA 電腦以放在較佳位置,則可以使用軟體 NUMA。 若要設定 SQL Server 來使用軟體 NUMA,您必須編輯此登錄來加入節點組態相似性遮罩。 軟體 NUMA 遮罩可陳述為二進位、DWORD (十六進位或十進位) 或 QWORD (十六進位或十進位) 登錄項目。 若要設定超過前 32 個 CPU,請使用 QWORD 或 BINARY 登錄值 (在 SQL Server 2012 以前的版本不能使用 QWORD 值)。您必須重新啟動 Database Engine 來設定軟體 NUMA。
提示 |
---|
CPU 編號從 0 開始。 |
不當編輯登錄可能會造成系統嚴重受損。在變更登錄之前,我們建議您備份電腦上的所有重要資料。
請設想下列範例。 一部具有八個 CPU 的電腦沒有硬體 NUMA。 三個軟體 NUMA 節點已設定。 Database Engine 執行個體 A 是設定成使用 CPU 0 到 3。 Database Engine 的第二個執行個體安裝及設定為使用 CPU 4 到 7。 此範例可以視覺化方式表示如下:
CPUs 0 1 2 3 4 5 6 7
Soft-NUMA <-N0--><-N1-><----N2---->
SQL Server <instance A ><instance B>
發生大量 I/O 的執行個體 A,現在有兩個 I/O 執行緒和一個延遲寫入器執行緒,而執行處理器密集作業的執行個體 B,只有一個 I/O 執行緒和一個延遲寫入器執行緒。 不同記憶體數量可指派給執行個體,但與硬體 NUMA 不同,它們都是從相同作業系統記憶體區塊接收記憶體,而沒有記憶體對處理器的相似性。
延遲寫入器執行緒會繫結至實體 NUMA 記憶體節點的 SQL OS 檢視。 因此,呈現為實體 NUMA 節點的任何硬體都將等於建立的延遲寫入器執行緒數目。 如需詳細資訊,請參閱運作方式:軟體 NUMA、I/O 完成執行緒、延遲寫入器工作者和記憶體節點。
[!附註]
當您升級 SQL Server 執行個體時,不會複製 Soft-NUMA 登錄機碼。
設定 CPU 相似性遮罩
對執行個體 A 執行下列陳述式,藉由設定 CPU 相似性遮罩來設定它使用 CPU 0、1、2 和 3:
ALTER SERVER CONFIGURATION SET PROCESS AFFINITY CPU=0 TO 3;
對執行個體 B 執行下列陳述式,藉由設定 CPU 相似性遮罩來設定它使用 CPU 4、5、6 和 7:
ALTER SERVER CONFIGURATION SET PROCESS AFFINITY CPU=4 TO 7;
將軟體 NUMA 節點對應到 CPU
使用 [登錄編輯程式] (regedit.exe),加入下列登錄機碼,以便將軟體 NUMA 節點 0 對應到 CPU 0 和 1、將軟體 NUMA 節點 1 對應到 CPU 2 和 3,並且將軟體 NUMA 節點 2 對應到 CPU 4、 5、6 和 7。
SQL Server 2012
型別
值名稱
值資料
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\110\NodeConfiguration\Node0
DWORD
CPUMask
0x03
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\110\NodeConfiguration\Node0
DWORD
群組
0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\110\NodeConfiguration\Node1
DWORD
CPUMask
0x0c
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\110\NodeConfiguration\Node1
DWORD
群組
0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\110\NodeConfiguration\Node2
DWORD
CPUMask
0xf0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\110\NodeConfiguration\Node2
DWORD
群組
0
提示 若要指定 CPU 60 到 63,請使用 QWORD 值 F000000000000000 或 BINARY 值 1111000000000000000000000000000000000000000000000000000000000000。
SQL Server 2008 R2
型別
值名稱
值資料
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\NodeConfiguration\Node0
DWORD
CPUMask
0x03
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\NodeConfiguration\Node0
DWORD
Group
0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\NodeConfiguration\Node1
DWORD
CPUMask
0x0c
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\NodeConfiguration\Node1
DWORD
Group
0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\NodeConfiguration\Node2
DWORD
CPUMask
0xf0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\NodeConfiguration\Node2
DWORD
群組
0
SQL Server 2008
型別
值名稱
值資料
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\NodeConfiguration\Node0
DWORD
CPUMask
0x03
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\NodeConfiguration\Node1
DWORD
CPUMask
0x0c
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\NodeConfiguration\Node2
DWORD
CPUMask
0xf0
SQL Server 2005
型別
值名稱
值資料
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\90\NodeConfiguration\Node0
DWORD
CPUMask
0x03
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\90\NodeConfiguration\Node1
DWORD
CPUMask
0x0c
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\90\NodeConfiguration\Node2
DWORD
CPUMask
0xf0
請參閱
參考
ALTER SERVER CONFIGURATION (Transact-SQL)