サーバー構成: 関係 I/O マスク
適用対象: SQL Server
マルチタスクを実行するため、 Windows では、プロセス スレッドが別のプロセッサに移動される場合があります。 オペレーティング システムにとっては効率的であっても、このアクティビティで各プロセッサのキャッシュに繰り返しデータが再読み込みされるため、システムの負荷が高くなり、SQL Server のパフォーマンスが低下する場合があります。 このような状況では、特定のスレッドにプロセッサを割り当てることで、プロセッサの再読み込みを回避してパフォーマンスを向上できます。このようなスレッドとプロセッサ間の関連付けを "プロセッサ関係 (processor affinity)" と言います。
SQL Server では、 2 つの関係マスク オプション affinity mask
(別名 CPU 関係マスク) と affinity I/O mask
により、プロセッサ関係をサポートします。 affinity mask
オプションの詳細については、「関係マスク サーバー構成オプションを設定する」を参照してください。 プロセッサが 33 から 64 個のサーバーに対して CPU および I/O 関係をサポートするには、affinity64 マスク および affinity64 I/O マスク サーバー構成オプションがそれぞれ必要になります。
Note
33 から 64 個までのプロセッサを搭載しているサーバーでの関係 (affinity) は、64 ビット オペレーティング システムでのみサポートされます。
affinity I/O mask
オプションは SQL Server ディスク I/O を特定の CPU のサブセットにバインドします。 ハイエンドな SQL Server オンライン トランザクション処理 (OLTP) 環境では、この拡張機能により、I/O を発行する SQL Server スレッドのパフォーマンスを向上できます。 この拡張機能では、個別のディスクやディスク コントローラーのハードウェア関係はサポートされません。
マルチプロセッサ コンピューターでは、affinity I/O mask
の値により、 SQL Server のディスク I/O 操作を処理できる CPU が指定されます。 このマスクはビットマップで、右端のビットによって最も順番の小さい CPU(0) が指定され、そのビットの左隣のビットによって次に順番の小さい CPU(1) が指定され、それ以降も同様に CPU が指定されます。 32 を超えるプロセッサを構成するには、 affinity I/O mask
と affinity64 I/O mask
の両方を設定します。
affinity I/O mask
の値は、以下のとおりです。
マスク内のバイト数 | CPU の数 |
---|---|
1 バイト | 最大 8 個の CPU |
2 バイト | 最大 16 個の CPU |
3 バイト | 最大 24 個の CPU |
4 バイト | 最大 32 個の CPU |
33 個以上の CPU に対応するには、最初の 32 個の CPU に 4 バイトの affinity I/O mask
を構成し、残りの CPU に 4 バイトの affinity64 I/O mask
を構成します。
関係 I/O パターンの 1
ビットは、対応する CPU が SQL Server ディスク I/O 操作を実行する資格があることを指定します。 0
ビットは、対応する CPU に対して SQL Server ディスク I/O 操作をスケジュールする必要がないことを指定します。 すべてのビットが 0
に設定されているか、affinity I/O mask
が指定されていない場合、 SQL Server のディスク I/O は、 SQL Server のスレッドを処理できるすべての CPU にスケジュール設定されます。
SQL Server affinity I/O mask
オプションの設定は特殊な操作であるため、必要な場合にのみ使用します。 通常は、既定の Windows の関係で、最適なパフォーマンスが得られます。
affinity I/O mask
オプションを指定する場合は、affinity mask
構成オプションと共に使用する必要があります。 affinity I/O mask
スイッチと affinity mask
オプションの両方で同じ CPU を有効にしないでください。 各 CPU に対応するビットは、次の 3 つの状態のうちのいずれかに設定します。
affinity I/O mask
オプションとaffinity mask
オプションの両方の0
。affinity I/O mask
オプションの1
とaffinity mask
オプションの0
。affinity I/O mask
オプションの0
とaffinity mask
オプションの1
。
affinity I/O mask
オプションは拡張オプションです。 この設定の変更に、sp_configure
システム ストアド プロシージャを使用している場合、show advanced options
が 1
に設定されている場合のみ、affinity I/O mask
の設定を変更することができます。 SQL Server では、affinity I/O mask
オプションを再構成した場合、SQL Server のインスタンスを再起動する必要があります。
注意事項
Windows オペレーティング システムでの CPU 関係の構成と、 SQL Serverでの affinity mask
の構成は、同時に行わないようにしてください。 この 2 つの設定は、同じ効果をねらったものであり、これらの構成間に一貫性がない場合は、予期しない結果を招く可能性があります。 SQL Server の CPU 関係は、SQL Server の sp_configure
システム ストアド プロシージャを使用して最適に構成されます。