affinity I/O mask オプション

Microsoft Windows 2000 と Windows Server 2003 では、マルチタスク処理を実行するために、プロセス スレッドを異なるプロセッサ間で移動させることがあります。オペレーティング システムにとっては効率的であっても、この操作で各プロセッサのキャッシュに繰り返しデータが再読み込みされるため、システムの負荷が高くなり、Microsoft SQL Server のパフォーマンスが低下する場合があります。このような状況では、特定のスレッドにプロセッサを割り当てることで、プロセッサの再読み込みを回避してパフォーマンスを向上できます。このようなスレッドとプロセッサ間の関連付けを "プロセッサ関係 (processor affinity)" と言います。

SQL Server 2005 では、affinity mask (別名 CPU affinity mask) と affinity I/O mask の 2 つの affinity mask オプションにより、プロセッサ関係をサポートします。affinity mask オプションの詳細については、「affinity mask オプション」を参照しくてださい。33 から 64 個までのプロセッサを搭載しているサーバーでの CPU 関係 (CPU affinity) および I/O 関係 (I/O affinity) のサポートには、それぞれ affinity64 mask オプションおよび affinity64 I/O mask オプションを合わせて使用する必要があります。

ms189629.note(ja-jp,SQL.90).gifメモ :
33 から 64 個までのプロセッサを搭載しているサーバーでの関係 (affinity) は、64 ビット オペレーティング システムでのみサポートされます。

affinity I/O mask オプションでは、SQL Server のディスク I/O が、指定した CPU のサブセットに関連付けられます。ハイエンドな SQL Server オンライン トランザクション処理 (OLTP) 環境では、この拡張機能により、I/O を発行する SQL Server スレッドのパフォーマンスを向上できます。この拡張機能では、個別のディスクやディスク コントローラのハードウェア関係 (hardware affinity) はサポートされません。

マルチプロセッサ コンピュータでは、affinity I/O mask の値により、SQL Server のディスク I/O 操作を処理できる CPU が指定されます。このマスクはビットマップで、右端のビットによって最も順番の小さい CPU(0) が指定され、そのビットの左隣のビットによって次に順番の小さい CPU(1) が指定され、それ以降も同様に CPU が指定されます。33 個以上のプロセッサを構成するには、affinity I/O maskaffinity64 I/O mask の両方を設定します。

affinity I/O mask の値は、以下のとおりです。

  • 1 バイトの affinity I/O mask は、マルチプロセッサ コンピュータの最大 8 個の CPU に対応します。
  • 2 バイトの affinity I/O mask は、マルチプロセッサ コンピュータの最大 16 個の CPU に対応します。
  • 3 バイトの affinity I/O mask は、マルチプロセッサ コンピュータの最大 24 個の CPU に対応します。
  • 4 バイトの affinity I/O mask は、マルチプロセッサ コンピュータの最大 32 個の CPU に対応します。
  • 33 個以上の CPU に対応するには、最初の 32 個の CPU に 4 バイトの affinity I/O mask を構成し、残りの CPU に 4 バイトの affinity64 I/O mask を構成します。

affinity I/O パターンで 1 が設定されているビットは、対応する CPU で SQL Server のディスク I/O 操作を実行できることを示します。また、0 が設定されているビットは、対応する CPU に SQL Server のディスク I/O 操作のスケジュールを設定できないことを示します。すべてのビットがゼロに設定されているか、affinity I/O mask が指定されていない場合、SQL Server のディスク I/O は、SQL Server のスレッドを処理できるすべての CPU にスケジュール設定されます。

SQL Server affinity I/O mask オプションを設定することは特殊な操作なので、特に必要な場合にのみこのオプションを使用することをお勧めします。通常は、Windows 2000 または Windows Server 2003 の既定の関係 (affinity) で、最適なパフォーマンスが得られます。

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 システム ストアド プロシージャを使用して affinity I/O mask の設定を変更するには、show advanced options を 1 に設定する必要があります。SQL Server 2005 では、affinity I/O mask オプションを再構成した場合、SQL Server のインスタンスを再起動する必要があります。

ms189629.Caution(ja-jp,SQL.90).gif注意 :
Windows オペレーティング システムでの CPU 関係の構成と、SQL Server での関係マスクの構成は、同時に行わないようにしてください。この 2 つの設定は、同じ効果を狙ったものであり、これらの構成間に一貫性がない場合は、予期しない結果を招く可能性があります。SQL Server CPU 関係を構成する場合は、SQL Server の sp_configure オプションを使用する方法が最適です。

参照

概念

サーバー構成オプションの設定

その他の技術情報

リソースの利用状況の監視 (システム モニタ)
RECONFIGURE (Transact-SQL)
sp_configure (Transact-SQL)

ヘルプおよび情報

SQL Server 2005 の参考資料の入手