ソフト NUMA (SQL Server)Soft-NUMA (SQL Server)

適用対象: ○SQL Server XAzure SQL Database XAzure SQL Data Warehouse XParallel Data WarehouseAPPLIES TO: yesSQL Server noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

最新のプロセッサには、1 つのソケットに対して複数のコアがあります。Modern processors have multiple cores per socket. 各ソケットは、通常、1 つの NUMA ノードとして表示されます。Each socket is represented, usually, as a single NUMA node. SQL Server データベース エンジンは、さまざまな内部構造を分割し、NUMA ノード単位でサービス スレッドを分割します。The SQL Server database engine partitions various internal structures and partitions service threads per NUMA node. 1 つのソケットに対してコアを 10 個以上含むプロセッサの場合、ソフトウェア NUMA を使用してハードウェア NUMA ノードを分割すると、一般的に、拡張性と性能が向上します。With processors containing 10 or more cores per socket, using software NUMA to split hardware NUMA nodes generally increases scalability and performance. SQL Server 2014 (12.x)SQL Server 2014 (12.x) SP2 より前の場合、ソフトウェア ベースの NUMA (ソフト NUMA) ではレジストリを編集し、ノード構成関係マスクを追加する必要がありました。また、ソフト NUMA は、インスタンス単位ではなく、ホスト レベルで構成されていました。Prior to SQL Server 2014 (12.x)SQL Server 2014 (12.x) SP2, software-based NUMA (soft-NUMA) required you to edit the registry to add a node configuration affinity mask, and was configured at the host level, rather than per instance. SQL Server 2014 (12.x)SQL Server 2014 (12.x) SP2 および SQL Server 2016 (13.x)SQL Server 2016 (13.x) 以降では、ソフト NUMA は、SQL Server データベース エンジンSQL Server Database Engine サービスの起動時にデータベース/インスタンス レベルで自動的に構成されます。Starting with SQL Server 2014 (12.x)SQL Server 2014 (12.x) SP2 and SQL Server 2016 (13.x)SQL Server 2016 (13.x), soft-NUMA is configured automatically at the database-instance level when the SQL Server データベース エンジンSQL Server Database Engine service starts.

注意

ホット アド プロセッサは、ソフト NUMA ではサポートされていません。Hot-add processors are not supported by soft-NUMA.

自動ソフト NUMAAutomatic Soft-NUMA

SQL Server 2016 (13.x)SQL Server 2016 (13.x) では、SQL Server データベース エンジンSQL Server Database Engineが起動時に NUMA ノードまたはソケットあたり 8 個を超える物理コアを検出するたびに、ソフト NUMA ノードが既定で自動的に作成されます。With SQL Server 2016 (13.x)SQL Server 2016 (13.x), whenever the SQL Server データベース エンジンSQL Server Database Engine detects more than eight physical cores per NUMA node or socket at startup, soft-NUMA nodes are created automatically by default. ハイパースレッドのプロセッサ コアは、ノードの物理プロセッサを数えるときに区別されません。Hyper-threaded processor cores are not differentiated when counting physical cores in a node. 物理コアの検出数がソケットあたり 8 個を超えると、SQL Server データベース エンジンSQL Server Database Engine でソフト NUMA ノードが作成されます。その場合、8 個のコアが含まれていることが理想的ですが、ノードあたり 5 個から 9 個の論理コアを含めることができます。When the detected number of physical cores is more than eight per socket, the SQL Server データベース エンジンSQL Server Database Engine creates soft-NUMA nodes that ideally contain eight cores, but can go down to five or up to nine logical cores per node. ハードウェア ノードのサイズは CPU 関係マスクにより制限されます。The size of the hardware node can be limited by a CPU affinity mask. NUMA ノードの数がサポートされる NUMA ノードの最大数を超えることはありません。The number of NUMA nodes never exceeds the maximum number of supported NUMA nodes.

ALTER SERVER CONFIGURATION (Transact-SQL) ステートメントと SET SOFTNUMA 引数を使用し、ソフト NUMA を無効化したり、再有効化したりすることができます。You can disable or re-enable soft-NUMA using the ALTER SERVER CONFIGURATION (Transact-SQL) statement with the SET SOFTNUMA argument. この設定の値を変更した場合、その変更を適用するには、データベース エンジンを再起動する必要があります。Changing the value of this setting requires a restart of the database engine to take effect.

下の図は、SQL ServerSQL Server で、ノードまたはソケットあたり 8 個を超える物理コアが含まれるハードウェア NUMA ノードが検出されたときに SQL Server エラー ログに表示される、ソフト NUMA に関する情報の種類を示しています。The figure below shows the type of information regarding soft-NUMA that you see in the SQL Server error log, when SQL ServerSQL Server detects hardware NUMA nodes with greater than eight physical cores per each node or socket.

2016-11-14 13:39:43.17 Server      SQL Server detected 2 sockets with 12 cores per socket and 24 logical processors per socket, 48 total logical processors; using 48 logical processors based on SQL Server licensing. This is an informational message; no user action is required.     
2016-11-14 13:39:43.35 Server      Automatic soft-NUMA was enabled because SQL Server has detected hardware NUMA nodes with greater than 8 physical cores.     
2016-11-14 13:39:43.63 Server      Node configuration: node 0: CPU mask: 0x0000000000555555:0 Active CPU mask: 0x0000000000555555:0. This message provides a description of the NUMA configuration for this computer. This is an informational message only. No user action is required.    
2016-11-14 13:39:43.63 Server      Node configuration: node 1: CPU mask: 0x0000000000aaaaaa:0 Active CPU mask: 0x0000000000aaaaaa:0. This message provides a description of the NUMA configuration for this computer. This is an informational message only. No user action is required.    
2016-11-14 13:39:43.63 Server      Node configuration: node 2: CPU mask: 0x0000555555000000:0 Active CPU mask: 0x0000555555000000:0. This message provides a description of the NUMA configuration for this computer. This is an informational message only. No user action is required.     
2016-11-14 13:39:43.63 Server      Node configuration: node 3: CPU mask: 0x0000aaaaaa000000:0 Active CPU mask: 0x0000aaaaaa000000:0. This message provides a description of the NUMA configuration for this computer. This is an informational message only. No user action is required.   

注意

SQL Server 2014 (12.x)SQL Server 2014 (12.x) SP2 以降では、トレース フラグ 8079 を使用して SQL ServerSQL Server が自動ソフト NUMA を使用できるようにします。Starting with SQL Server 2014 (12.x)SQL Server 2014 (12.x) SP2, use trace flag 8079 to allow SQL ServerSQL Server to use Automatic Soft-NUMA. SQL Server 2016 (13.x)SQL Server 2016 (13.x) 以降では、この動作はエンジンによって制御されるようになり、トレース フラグ 8079 に効力はありません。Starting with SQL Server 2016 (13.x)SQL Server 2016 (13.x) this behavior is controlled by the engine and trace flag 8079 has no effect. 詳細については、「DBCC TRACEON - トレース フラグ」を参照してください。For more information, see DBCC TRACEON - Trace Flags.

手動ソフト NUMAManual Soft-NUMA

ソフト NUMA を使用できるように SQL ServerSQL Server を手動で構成するには、自動のソフト NUMA を無効化し、レジストリを編集してノード構成関係マスクを追加します。To manually configure SQL ServerSQL Server to use soft-NUMA, disable automatic soft-NUMA, and edit the registry to add a node configuration affinity mask. この方法を利用すると、ソフト NUMA マスクは、バイナリ、DWORD (16 進数または 10 進数)、または QWORD (16 進数または 10 進数) のレジストリ エントリとして記述できます。When using this method, the soft-NUMA mask can be stated as a binary, DWORD (hexadecimal or decimal), or QWORD (hexadecimal or decimal) registry entry. 最初の 32 個を超える CPU を構成するには、QWORD またはバイナリのレジストリ値を使用します (SQL Server 2012 (11.x)SQL Server 2012 (11.x) より前では QWORD 値を使用できません)。To configure more than the first 32 CPUs use QWORD or BINARY registry values (QWORD values cannot be used prior to SQL Server 2012 (11.x)SQL Server 2012 (11.x)). レジストリの変更後、ソフト NUMA 構成を適用するには データベース エンジンDatabase Engine を再起動する必要があります。After modifying the registry, you must restart the データベース エンジンDatabase Engine for the soft-NUMA configuration to take effect.

ヒント

CPU には、0 から始まる番号が付けられます。CPUs are numbered starting with 0.

警告

レジストリを誤って編集すると、システムに重大な障害が発生する場合があります。Incorrectly editing the registry can severely damage your system. レジストリを変更する前に、コンピューター上のすべての重要なデータをバックアップしてください。Before making changes to the registry, we recommend that you back up any valued data on the computer.

たとえば、8 個の CPU が搭載されたコンピューターにハードウェア NUMA がないとします。Consider the example of a computer with eight CPUs, that does not have hardware NUMA. 3 つのソフト NUMA ノードが構成されています。Three soft-NUMA nodes are configured.
データベース エンジンDatabase Engine インスタンス A は、CPU 0 から 3 を使用するように構成されています。instance A is configured to use CPUs 0 through 3. データベース エンジンDatabase Engine の 2 つ目のインスタンスがインストールされており、CPU 4 から 7 を使用するように構成されています。A second instance of the データベース エンジンDatabase Engine is installed and configured to use CPUs 4 through 7. この例は、次のように視覚的に表されます。The example can be visually represented as:

CPUs 0 1 2 3 4 5 6 7

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

SQL Server <instance A ><instance B>

多くの I/O が発生するインスタンス A には、現在、2 つの I/O スレッドと 1 つのレイジー ライター スレッドがあります。Instance A, which experiences significant I/O, now has two I/O threads and one lazy writer thread. プロセッサに負荷が集中する操作を実行するインスタンス B には、1 つの I/O スレッドと 1 つのレイジー ライター スレッドしかありません。Instance B, which performs processor-intensive operations, has only one I/O thread and one lazy writer thread. 異なる量のメモリをこれらのインスタンスに割り当てることができますが、ハードウェア NUMA とは異なり、どちらもオペレーティング システムの同じメモリ ブロックからメモリを受け取るのでメモリおよびプロセッサ間の関係はありません。Differing amounts of memory can be assigned to the instances, but unlike hardware NUMA, they both receive memory from the same operating system memory block, and there is no memory-to-processor affinity.

レイジー ライター スレッドは、物理 NUMA メモリ ノードの SQLOS ビューに関連付けられています。The lazy writer thread is tied to the SQLOS view of the physical NUMA memory nodes. したがって、ハードウェアが物理 NUMA ノード数として表すものは、作成されるレイジー ライター スレッドの数になります。Therefore, whatever the hardware presents as the number of physical NUMA nodes, this will be the number of lazy writer threads that are created. 詳細については、「How It Works:Soft NUMA, I/O Completion Thread, Lazy Writer Workers and Memory Nodes」 (動作方法: ソフト NUMA、I/O 完了スレッド、レイジー ライター ワーカー、およびメモリ ノード) を参照してください。For more information, see How It Works: Soft NUMA, I/O Completion Thread, Lazy Writer Workers and Memory Nodes.

注意

のインスタンスをアップグレードするときに ソフト NUMA SQL ServerSQL Serverレジストリ キーはコピーされません。The Soft-NUMA registry keys are not copied when you upgrade an instance of SQL ServerSQL Server.

CPU affinity mask の設定Set the CPU affinity mask

インスタンス A で次のステートメントを実行し、CPU affinity mask を設定して CPU 0、1、2、および 3 を使用するように構成します。Run the following statement on instance A to configure it to use CPUs 0, 1, 2, and 3 by setting the CPU affinity mask:

ALTER SERVER CONFIGURATION   
SET PROCESS AFFINITY CPU=0 TO 3;  

インスタンス B で次のステートメントを実行し、CPU affinity mask を設定して CPU 4、5、6、および 7 を使用するように構成します。Run the following statement on instance B to configure it to use CPUs 4, 5, 6, and 7 by setting the CPU affinity mask:

ALTER SERVER CONFIGURATION   
SET PROCESS AFFINITY CPU=4 TO 7;  

CPU へのソフト NUMA ノードのマッピングMap soft-NUMA nodes to CPUs

レジストリ エディター プログラム (regedit.exe) を使用して、次のレジストリ キーを追加し、ソフト NUMA ノード 0 を CPU 0 および 1 に、ソフト NUMA ノード 1 を CPU 2 および 3 に、ソフト NUMA ノード 2 を CPU 4、5、6、および 7 にマッピングします。Using the Registry Editor program (regedit.exe), add the following registry keys to map soft-NUMA node 0 to CPUs 0 and 1, soft-NUMA node 1 to CPUs 2 and 3, and soft-NUMA node 2 to CPUs 4, 5, 6, and 7.

ヒント

CPU 60 ~ 63 を指定するには、QWORD 値 F000000000000000 またはバイナリ値 1111000000000000000000000000000000000000000000000000000000000000 を使用します。To specify CPUs 60 through 63, use a QWORD value of F000000000000000 or a BINARY value of 1111000000000000000000000000000000000000000000000000000000000000.

次の例では、1 ソケットにつき 18 個のコア (4 ソケットを装備) を備え、各ソケットがそれぞれ独自の K グループに属する DL580 G9 サーバーを使用するとします。In the following example, assume you have a DL580 G9 server, with 18 cores per socket (in four sockets), and each socket is in its own K-group. 作成する可能性のあるソフト NUMA 構成は、ノードごとに 6 コア、グループごとに 3 ノード、および 4 グループのようになります。A soft-NUMA configuration that you might create would look something like the following: six cores per Node, three nodes per group, four groups.

複数の K グループを持つ SQL Server 2016 (13.x)SQL Server 2016 (13.x) サーバーの例Example for a SQL Server 2016 (13.x)SQL Server 2016 (13.x) server with multiple K-Groups Type 値の名前Value name 値データValue data
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node0HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node0 DWORDDWORD CPUMaskCPUMask 0x3F0x3F
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node0HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node0 DWORDDWORD [グループ]Group 00
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node1HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node1 DWORDDWORD CPUMaskCPUMask 0x0fc00x0fc0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node1HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node1 DWORDDWORD [グループ]Group 00
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node2HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node2 DWORDDWORD CPUMaskCPUMask 0x3f0000x3f000
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node2HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node2 DWORDDWORD [グループ]Group 00
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node3HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node3 DWORDDWORD CPUMaskCPUMask 0x3F0x3F
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node3HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node3 DWORDDWORD [グループ]Group 11
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node4HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node4 DWORDDWORD CPUMaskCPUMask 0x0fc00x0fc0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node4HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node4 DWORDDWORD [グループ]Group 11
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node5HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node5 DWORDDWORD CPUMaskCPUMask 0x3f0000x3f000
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node5HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node5 DWORDDWORD [グループ]Group 11
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node6HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node6 DWORDDWORD CPUMaskCPUMask 0x3F0x3F
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node6HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node6 DWORDDWORD [グループ]Group 22
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node7HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node7 DWORDDWORD CPUMaskCPUMask 0x0fc00x0fc0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node7HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node7 DWORDDWORD [グループ]Group 22
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node8HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node8 DWORDDWORD CPUMaskCPUMask 0x3f0000x3f000
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node8HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node8 DWORDDWORD [グループ]Group 22
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node9HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node9 DWORDDWORD CPUMaskCPUMask 0x3F0x3F
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node9HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node9 DWORDDWORD [グループ]Group 33
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node10HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node10 DWORDDWORD CPUMaskCPUMask 0x0fc00x0fc0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node10HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node10 DWORDDWORD [グループ]Group 33
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node11HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node11 DWORDDWORD CPUMaskCPUMask 0x3f0000x3f000
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node11HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\NodeConfiguration\Node11 DWORDDWORD [グループ]Group 33

メタデータMetadata

次の DMV を使用して、ソフト NUMA の現在の状態と構成を表示できます。You can use the following DMVs to view the current state and configuration of soft-NUMA.

注意

sp_configure (Transact-SQL) を利用することにより、自動ソフト NUMA の実行中の値を表示できますが、 sp_configure でその値を変更することはできません。While you can view the running value for automatic soft-NUMA using sp_configure (Transact-SQL), you cannot change its value using sp_configure. ALTER SERVER CONFIGURATION (Transact-SQL) ステートメントは SET SOFTNUMA 引数と共に使用する必要があります。You must use the ALTER SERVER CONFIGURATION (Transact-SQL) statement with the SET SOFTNUMA argument.

参照See Also

NUMA ノードへの TCP/IP ポートのマッピング (SQL Server) Map TCP IP Ports to NUMA Nodes (SQL Server)
affinity mask サーバー構成オプション affinity mask Server Configuration Option
ALTER SERVER CONFIGURATION (Transact-SQL) ALTER SERVER CONFIGURATION (Transact-SQL)
sys.dm_os_nodes (Transact-SQL)sys.dm_os_nodes (Transact-SQL)