7.4. ブロック I/O のチューニング方法

ここでは、仮想化環境におけるブロック I/O パフォーマンス調整の詳細の方法について説明します。

7.4.1. ディスク I/O スロットリング

複数の仮想マシンが同時に実行される場合、それらは過剰なディスク I/O を使用することでシステムのパフォーマンスに影響を与える可能性があります。KVM のディスク I/O スロットリングは、仮想マシンからホストマシンに送られるディスク I/O 要求に制限を設定する機能を提供します。これにより、1 台の仮想マシンが共有リソースを過剰に使用し、他の仮想マシンのパフォーマンスに影響を与えることを防ぐことができます。
ディスク I/O スロットリングは、異なる顧客に属するゲスト仮想マシンが同じホストで実行されている場合や、異なるゲストについてサービスの品質保証が提供されている場合などの各種の状況で役立ちます。ディスク I/O スロットリングは、低速なディスクをシミュレーションするために使用することもできます。
I/O スロットリングは、ゲストに割り当てられた各ブロックデバイスに独自に適用でき、スループットおよび I/O 操作上の制限をサポートします。virsh blkdeviotune コマンドを使用して、仮想マシンに I/O 制限を設定します。
# virsh blkdeviotune virtual_machine device --parameter limit
device には、仮想マシンに割り当てられているディスクデバイスのいずれかの固有のターゲット名 (<target dev='name'/>) またはソースファイル (<source file='name'/>) を指定します。ディスクデバイス名の一覧については、virsh domblklist コマンドを使用します。
オプションのパラメーターには以下が含まれます。
total-bytes-sec
秒あたりのバイト単位の合計スループット制限
read-bytes-sec
秒あたりのバイト単位の読み込みスループット制限
write-bytes-sec
秒あたりのバイト単位の書き込みスループット制限
total-iops-sec
秒あたりの合計 I/O 回数の制限
read-iops-sec
秒あたりの読み込み I/O 回数の制限
write-iops-sec
秒あたりの書き込み I/O 回数の制限
たとえば、virtual_machine 上の vda を 1 秒あたり 1000 I/O 操作および 1 秒あたり 50 MB スループットにスロットリングするには、以下のコマンドを実行します。
# virsh blkdeviotune virtual_machine vda --total-iops-sec 1000 --total-bytes-sec 52428800

7.4.2. マルチキュー virtio-scsi

マルチキュー virtio-scsi は、virtio-scsi ドライバーにおける強化されたストレージパフォーマンスとスケーラビリティーを提供します。これにより、他の vCPU に影響を与えることなく、それぞれの仮想 CPU で別個のキューや割り込みを使用できます。

7.4.2.1. マルチキュー virtio-scsi の設定

マルチキュー virtio-scsi は Red Hat Enterprise Linux 7 ではデフォルトで無効にされています。
ゲストでマルチキュー virtio-scsi サポートを有効にするには、以下をゲスト XML 設定に追加します。ここで、N は vCPU キューの合計数です。
   <controller type='scsi' index='0' model='virtio-scsi'>
   <driver queues='N' />
    </controller>

このページには機械翻訳が使用されている場合があります (詳細はこちら)。