[INF] SQL Server の I/O アフィニティ オプションの設定方法の解説

文書翻訳 文書翻訳
文書番号: 298402 - 対象製品
すべて展開する | すべて折りたたむ

概要

この資料では、"I/O アフィニティ" の概念および SQL Server SP1 以降で使用可能な I/O アフィニティ オプションについて説明します。オンライン トランザクション処理 (OLTP) 環境において I/O アフィニティ オプションを使用することにより、エンタープライズ レベルの高性能な SQL Server 環境 (CPU を 16 以上使用するコンピュータ) におけるパフォーマンスが向上する可能性があります。このオプションがサポートするのは SQL Server のディスク I/O のみであり、個別のディスクまたはディスク コントローラのハードウェア アフィニティについてはサポートしません。

詳細

SQL Server 2000 Service Pack 1 では、SQL Server 2000 に IO_affinity_mask スイッチが導入され、これにより affinity mask 構成オプションが拡張されました。

affinity mask 構成オプションは sp_configure ストアド プロシージャで定義されます。マルチプロセッサ コンピュータでこのオプションを使用することにより、SQL Server のインスタンスのスレッドを実行するための CPU を指定することができます。affinity mask 構成オプションを使用すると、オペレーティング システム用に割り当てる必要のあるプロセッサ群から SQL Server のスレッドを除外することができます。affinity mask 構成オプションの詳細については、SQL Server Books Online を参照してください。同様に、IO_affinity_mask を使用することにより、I/O 処理に関連する SQL Server のスレッドを実行するための CPU を指定できます。

affinity mask オプションに関連する IO_affinity_mask スイッチを使用することにより、大規模かつエンタープライズ レベルのマルチプロセッサ コンピュータ (CPU を 16 以上使用) で、SQL Server のインスタンスを稼動させる際にパフォーマンスをさらに向上できる場合があります。これにより、SQL Server のディスク操作や、SQL Server に関連するその他の処理に使用するための CPU を指定できるようになります。

ほとんどの場合、IO_affinity_mask の設定はデフォルトのままでも最大のパフォーマンスを得られます。一部のサイトにおいては、パフォーマンスを強化するために IO_affinity_mask オプションを設定する必要が生じることもあります。

SQL Server のディスク I/O 処理に割り当てる CPU 数が、システムのディスク I/O 処理で必要な CPU 数を上回ると、ディスク I/O に無関係な CPU の要求が高まるためにパフォーマンス ボトルネックが生じることがあります。逆に、SQL Server のディスク I/O 処理に割り当てる CPU 数が、システムのディスク I/O 処理で必要な CPU 数を下回る場合にも、パフォーマンス ボトルネックが生じることがあります。

IO_affinity_mask オプションを有効にするには、Enterprise Manager を使用して SQL Server の起動パラメータを追加、またはコマンド ラインで sqlservr を起動する際に固定の入力パラメータを追加する必要があります。現時点では、このオプションを sp_configure ストアド プロシージャで指定することはできません。 次に例を示します。

-I<IO_affinity_mask>

IO_affinity_mask に関する説明および情報は以下のとおりです。

  • マルチプロセッサ コンピュータで、どの CPU が SQL Server のディスク I/O 処理に適しているかを指定します。
  • IO_affinity_mask の数値は 10 進数で指定できますが、多数の CPU を指定する上で特に便利というほどではありません。または、先頭に '0x' または '0X' を付けた 16 進数で指定できます。
  • マスクはビットマップとして構成されています。たとえば、右端のビットは 1 番小さい順序の CPU (0) を指定し、その右隣のビットは 2 番目に小さい順序の CPU (1) を指定します。
  • マルチプロセッサ コンピュータでは、1 バイトの IO_affinity_mask は最大 8 個の CPU、2 バイトのマスクは最大 16 個の CPU、3 バイトのマスクは最大 24 個の CPU、4 バイトのマスクは最大 32 個の CPU を指定できます。
  • マスクのパターン内でビット 1 を指定すると、そのビットに対応する CPU は SQL Server のディスク I/O 処理に適していることが指定されます。パターンでビット ゼロ (0) を指定すると、SQL Server のディスク I/O 処理はそのビットに対応する CPU にスケジュールされなくなります。
  • すべてのビットが 0 に設定されているか、または IO_affinity_mask が指定されていない場合、SQL Server のディスク I/O 処理は、 SQL Server スレッドの処理に適している CPU にスケジュールされます。
  • IO_affinity_mask スイッチの値は、SQL Server の実行中には変更できません。IO_affinity_mask の値を変更するには、SQL Server のインスタンスを停止し、IO_affinity_mask の値を新たに指定してから再起動する必要があります。
SQL Server 2000 は、IO_affinity_mask のビットと affinity mask のビットを同じように解釈します。

弊社では、IO_affinity_mask スイッチを指定する場合には sp_configure で指定する affinity mask 構成オプションと関連付けておくことをお勧めします。IO_affinity_mask スイッチと affinity mask 構成オプションの両方で同じ CPU を有効にしないよう注意する必要があります。

各 CPU に対応するビットは、以下の 3 つの状態のいずれか 1 つになっている必要があり、両方を同時に 1 に設定しないよう注意する必要があります。
  • IO_affinity_mask スイッチをゼロ (0)、affinity mask オプションを 0
  • IO_affinity_mask スイッチを 1、affinity mask オプションを 0
  • IO_affinity_mask スイッチを 0、affinity mask オプションを 1
32 プロセッサ コンピュータで、以下のような構成の SQL Server を設定する場合を例として考察してみます。
  • SQL Server は、32 CPU のうち 24 CPU を使用可能
  • SQL Server のディスク I/O に 8 CPU、その他の SQL Server の処理に 16 CPU を割り当てる
この構成の設定を実行するには、次の手順を実行します。
  1. affinity mask オプションを使用して、ディスク I/O 以外の SQL Server の処理に 16 CPU を割り当てます。
      sp_configure "affinity mask", 0x0000FFFF
      go
      reconfigure with override
      go
    					
  2. SQL Server を停止します。
  3. 以下のスイッチを使用して SQL Server を起動します。これにより、SQL Server のディスク I/O に 8 CPU が割り当てられます。
      sqlservr -I0x00FF0000
    					

関連情報

この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 298402 (最終更新日 2001-07-13) をもとに作成したものです。
この資料に含まれているサンプル コード/プログラムは英語版を前提に書かれたものをありのままに記述しており、日本語環境での動作は確認されておりません。

プロパティ

文書番号: 298402 - 最終更新日: 2007年10月26日 - リビジョン: 1.1
この資料は以下の製品について記述したものです。
  • Microsoft SQL Server 2000 Service Pack 1
キーワード:?
kbinfo kbsqlserv2000sp1fix kbproductlink KB298402
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com