如何:設定 SQL Server 使用軟體 NUMA

偵測到自動使用的非一致性記憶體存取 (NUMA)。如果您要模擬大型 SMB 電腦的 NUMA,或如果您要細分 NUMA 電腦以獲得更好的位置,那麼您可以使用軟體 NUMA (soft-NUMA)。若要設定 SQL Server 來使用 soft-NUMA,您必須編輯此登錄來加入節點組態相似性遮罩。軟體 NUMA 遮罩可陳述為二進位或 DWORD (十六進位或十進位) 登錄項目。若要設定前 32 個 CPU 以外的 CPU,請使用 BINARY 登錄值。您必須重新啟動 Database Engine 來設定軟體 NUMA。在設定軟體 NUMA 之前,請參閱<了解非統一記憶體存取>和<SQL Server 如何支援 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 不同,它們都是從相同作業系統記憶體區塊接收記憶體,而沒有記憶體對處理器的相似性。

[!附註]

當您升級 SQL Server 執行個體時,不會複製 Soft-NUMA 登錄機碼。

設定 CPU 相似性遮罩

  1. 您可以針對執行個體 A 執行下列陳述式,藉由設定 CPU 相似性遮罩,將它設定為使用 CPU 0、1、2 和 3:

    ALTER SERVER CONFIGURATION 
    SET PROCESS AFFINITY CPU=0 TO 3;
    
  2. 您可以針對執行個體 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 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

    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 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

    Group

    0

    提示提示

    若要指定 CPU 60 到 63,請使用 BINARY 值:1111000000000000000000000000000000000000000000000000000000000000。