6.3. Red Hat Enterprise Linux を仮想化ゲストとして使用する場合の I/O スケジューリング

Red Hat Enterprise Linux ゲスト仮想マシンにおいて、I/O スケジューリングを使用することができます。この場合、ゲストを実行中のハイパーバイザーに制限はありません。考慮すべきメリットおよびデメリットを、一覧にして以下に示します。
  • Red Hat Enterprise Linux ゲストでは、通常 noop スケジューラーにより大きなメリットが得られます。この noop スケジューラーにより、ホストマシンまたはスーパーバイザーは I/O 要求を最適化することができます。noop スケジューラーでは、ゲストオペレーティングシステムからの個々の I/O 要求を 1 つの大きな要求にまとめてから、ハイパーバイザーに I/O 要求を渡すことができます。ただし、noop は最小限のゲスト CPU サイクル数により I/O スケジューリングを実施しようとします。ホスト/ハイパーバイザーは全ゲストからの要求の全体像を把握し、異なる手段を使用して I/O 処理を行います。

    注記

    Red Hat Enterprise Linux 7.2 およびそれ以降のバージョンでは、virtio-blk は必ず noop を使用します。これは、blk-mq が使用されるためです。
  • 負荷の I/O およびストレージデバイスのマウント状況によっては、deadline 等のスケジューラーの方が有効な場合があります。最も有効なスケジューラーを把握するには、パフォーマンステストが必要です。
  • iSCSI、SR-IOV、または物理デバイスのパススルーによりストレージにアクセスするゲストの場合は、noop スケジューラーを使用するべきではありません。これらの手段では、ホストはベースとなる物理デバイスに対する I/O 要求を最適化することができません。

注記

仮想化環境では、ホストおよびゲストの両レイヤーで I/O をスケジューリングしてもメリットが得られない場合があります。複数のゲストがファイルシステム上のストレージまたはホストオペレーティングシステムの管理するブロックデバイスを使用する状況では、ホストがより効率的に I/O をスケジューリングできる場合があります。ホストは全ゲストからの要求を把握し、ストレージの物理レイアウト (ゲストの仮想ストレージとはリニアに対応していない場合があります) を理解しているからです。一方、負荷によっては、ゲスト仮想マシンで deadline 等のスケジューラーを使用することで、メリットが得られる場合もあります。
スケジューラーのチューニングは、必ず通常の運用状態でテストする必要があります。総合的なベンチマークでは、仮想環境の共有リソースを使用するシステムのパフォーマンスを正確に比較することができないためです。