ソフト NUMA を使用するように SQL Server を構成する方法

ソフト NUMA (software non-uniform memory access) を使用するように SQL Server を構成するには、レジストリを編集してノード構成 affinity mask を追加する必要があります。ソフト NUMA マスクは、バイナリまたは DWORD (16 進数または 10 進数) レジストリ エントリとして記述できます。ソフト NUMA を構成するには、データベース エンジンを再起動する必要があります。ソフトウェア NUMA を構成する前に、「Non-Uniform Memory Access について」と「SQL Server での NUMA のサポート状況」を参照してください。

レジストリを誤って編集すると、システムに重大な障害が発生する場合があります。 レジストリを変更する前に、コンピューター上のすべての重要なデータをバックアップしてください。

この例では、8 個の CPU が搭載されたコンピュータにハードウェア NUMA がありません。3 つのソフト NUMA ノードが構成されています。データベース エンジン インスタンス A は、CPU 1 から 4 を使用するように構成されています。データベース エンジンの 2 つ目のインスタンスがインストールされており、CPU 5 から 8 を使用するように構成されています。この例は、次のように視覚的に表されます。

CPUs          1  2  3  4  5  6  7  8

Soft-NUMA   <-N0--><-N1-><----N2---->

SQL Server  <instance A ><instance B>

非常に多くの I/O が発生するインスタンス A には、2 つの I/O スレッドと 2 つのレイジー ライタ スレッドが存在するようになります。一方、プロセッサに負荷が集中する操作を実行するインスタンス B には、1 つの I/O スレッドと 1 つのレイジー ライタ スレッドしかありません。異なる量のメモリをこれらのインスタンスに割り当てることができますが、ハードウェア NUMA とは異なり、どちらもオペレーティング システムの同じメモリ ブロックからメモリを受け取るのでメモリおよびプロセッサ間の関係はありません。

CPU affinity mask の設定

  1. インスタンス A で次のステートメントを実行し、CPU affinity mask を設定して CPU 1、2、3、および 4 を使用するように構成します。

    sp_configure 'show advanced options', 1;
    RECONFIGURE;
    GO
    sp_configure 'affinity mask', 15;
    RECONFIGURE;
    GO
    
  2. インスタンス B で次のステートメントを実行し、CPU affinity mask を設定して CPU 5、6、7、および 8 を使用するように構成します。

    sp_configure 'show advanced options', 1;
    RECONFIGURE;
    GO
    sp_configure 'affinity mask', 240;
    RECONFIGURE;
    GO
    
注意注意

この例の affinity mask 値は、32 ビット オペレーティング システムが実行されているコンピュータに適用されます。

CPU へのソフト NUMA ノードのマッピング

  • レジストリ エディタ プログラム (regedit.exe) を使用して、次のレジストリ キーを追加し、ソフト NUMA ノード 0 を CPU 1 および 2 に、ソフト NUMA ノード 1 を CPU 3 および 4 に、ソフト NUMA ノード 2 を CPU 5、6、7、および 8 にマッピングします。

    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