ソフト 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 の設定
インスタンス A で次のステートメントを実行し、CPU affinity mask を設定して CPU 1、2、3、および 4 を使用するように構成します。
sp_configure 'show advanced options', 1; RECONFIGURE; GO sp_configure 'affinity mask', 15; RECONFIGURE; GO
インスタンス 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