Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

6.2. 仮想化ゲストとして Red Hat Enterprise Linux を使用した I/O スケジューリング

ゲストが実行されているハイパーバイザーに関係なく、Red Hat Enterprise Linux ゲスト仮想マシンで I/O スケジューリングを使用できます。以下は、考慮すべき利点と問題のリストです。
  • Red Hat Enterprise Linux のゲストは、多くの場合、noop スケジューラーを使用することで大きなメリットが得られます。スケジューラーは、ハイパーバイザーに I/O を送信する前に、ゲストオペレーティングシステムからの小さな要求を大きな要求にマージします。これにより、ハイパーバイザーは I/O 要求をより効率的に処理できるようになり、ゲストの I/O パフォーマンスも大幅に向上します。
  • ワークロード I/O とストレージデバイスがどのようにアタッチされているかによっては、deadline などのスケジューラーが noop よりも有益な場合があります。Red Hat は、パフォーマンステストを実行して、どのスケジューラーがパフォーマンスに最も影響を与えるかを確認することをお勧めします。
  • iSCSI、SR-IOV、または物理デバイスパススルーによってアクセスされるストレージを使用するゲストは、noop スケジューラーを使用しないでください。これらのメソッドでは、ホストが基盤となる物理デバイスへの I/O 要求を最適化することはできません。
注記
仮想化環境では、ホスト層とゲスト層の両方で I/O をスケジュールすることが有益でない場合があります。複数のゲストがホストオペレーティングシステムによって管理されるファイルシステムまたはブロックデバイスのストレージを使用する場合、ホストはすべてのゲストからの要求を認識しているため、I/O をより効率的にスケジュールできる可能性があります。さらに、ホストは、ゲストの仮想ストレージに直線的にマッピングされないストレージの物理レイアウトを認識します。
合成ベンチマークは通常、仮想環境で共有リソースを使用するシステムのパフォーマンスを正確に比較しないため、すべてのスケジューラーのチューニングは通常の動作条件下でテストする必要があります。

6.2.1. Red Hat Enterprise Linux 7 の I/O スケジューラーの設定

Red Hat Enterprise Linux 7 システムで使用されるデフォルトのスケジューラーは deadline です。ただし、Red Hat Enterprise Linux 7 ゲストマシンでは、以下を実行して、スケジューラーを noop に変更すると便利な場合があります。
  1. /etc/default/grub ファイルで、GRUB_CMDLINE_LINUX 行の elevator=deadline 文字列を elevator=noop に変更します。elevator= 文字列がない場合は、行の最後に elevator=noop を追加します。
    以下は、変更が成功した後の /etc/default/grub ファイルを示しています。
    # cat /etc/default/grub
    [...]
    GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=vg00/lvroot rhgb quiet elevator=noop"
    [...]
    
  2. /boot/grub2/grub.cfg ファイルを再構築します。
    • BIOS ベースのマシンの場合:
      # grub2-mkconfig -o /boot/grub2/grub.cfg
    • UEFI ベースのマシンの場合:
      # grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg