LinuxでのディスクI/Oスケジューラの検証

Oracle ASMのパフォーマンスの向上のために、Deadline I/Oスケジューラを使用することをお薦めします。

ディスクI/OスケジューラはディスクI/Oのリクエストを再調整、遅延またはマージすることで、スループットの向上と待機時間の短縮を促進します。LinuxにはDeadline、Noop、Anticipatory、およびCompletely Fair Queuing (CFQ)などの複数のディスクI/Oスケジューラがあります。
各クラスタ・ノードで次のコマンドを入力して、DeadlineディスクI/Oスケジューラが使用のために構成されていることを検証します。
# cat /sys/block/${ASM_DISK}/queue/scheduler
noop [deadline] cfq

この例では、デフォルトのディスクI/OスケジューラはDeadlineであり、ASM_DISKはOracle Automatic Storage Management (Oracle ASM)のディスク・デバイスです。

一部の仮想環境(VM)や高速ストレージ・デバイスなどの特殊デバイスでは、前述のコマンドの出力がnoneとなる可能性があります。オペレーティング・システムまたは仮想マシン(VM)がカーネルI/Oスケジューリングをバイパスして、すべてのI/Oリクエストを直接デバイスに発行します。このような環境ではI/Oスケジューラの設定を変更しないでください。

デフォルト・ディスクI/OスケジューラがDeadlineでない場合、ルール・ファイルを使用して設定します。

  1. テキスト・エディタを使用して、Oracle ASMデバイス用にUDEVルール・ファイルを作成します。

    # vi /etc/udev/rules.d/60-oracle-schedulers.rules
  2. ルール・ファイルに次の行を追加して保存します。

    ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="deadline"
  3. クラスタ化されたシステムで、ルール・ファイルを、クラスタ上の他のすべてのノードにコピーします。次に例を示します。

    $ scp 60-oracle-schedulers.rules root@node2:/etc/udev/rules.d/
  4. ルール・ファイルをロードし、UDEVサービスを再起動します。次に例を示します。

    1. Oracle LinuxおよびRed Hat Enterprise Linux

      # udevadm control --reload-rules
    2. SUSE Linux Enterprise Server。

      # /etc/init.d boot.udev restart
  5. ディスクI/OスケジューラがDeadlineとして設定されていることを確認します。