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
に変更すると便利な場合があります。
/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" [...]
/boot/grub2/grub.cfg
ファイルを再構築します。- BIOS ベースのマシンの場合:
# grub2-mkconfig -o /boot/grub2/grub.cfg
- UEFI ベースのマシンの場合:
# grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg