18.7. 仮想マシンのネットワークパフォーマンスの最適化
仮想マシンのネットワークインターフェイスコントローラー (NIC) は仮想的な性質を持つため、仮想マシンは割り当てられたホストネットワーク帯域幅の一部を失います。これは、仮想マシンの全体的なワークロード効率を低下させる可能性があります。仮想化が仮想 NIC (vNIC) のスループットに及ぼす悪影響を最小限に抑えるために、さまざまな方法を使用できます。
手順
以下の方法のいずれかを使用し、仮想マシンのネットワークパフォーマンスにメリットがあるかどうかを調べます。
vhost_net モジュールの有効化
ホストで
vhost_netカーネル機能が有効になっていることを確認します。# lsmod | grep vhost vhost_net 32768 1 vhost 53248 1 vhost_net tap 24576 1 vhost_net tun 57344 6 vhost_netこのコマンドの出力が空白である場合は、
vhost_netカーネルモジュールを有効にします。# modprobe vhost_net
multi-queue virtio-net の設定
仮想マシンに multi-queue virtio-net 機能を設定するには、
virsh editコマンドを使用して、仮想マシンの XML 設定を編集します。XML で、以下を<devices>セクションに追加し、Nを、仮想マシンの仮想 CPU 数 (最大 16) に変更します。<interface type='network'> <source network='default'/> <model type='virtio'/> <driver name='vhost' queues='N'/> </interface>仮想マシンが実行中の場合は、再起動して変更を適用します。
ネットワークパケットのバッチ処理
伝送経路が長い Linux 仮想マシン設定では、パケットをカーネルに送信する前にバッチ処理することで、キャッシュの利用効率が向上する可能性があります。パケットバッチ機能を設定するには、ホストで次のコマンドを実行し、tap0 を、仮想マシンが使用するネットワークインターフェイスの名前に置き換えます。
# ethtool -C tap0 rx-frames 64SR-IOV
ホスト NIC が Single Root I/O Virtualization (SR-IOV) をサポートしている場合は、vNIC に SR-IOV デバイス割り当てを使用してください。
詳細は、SR-IOV デバイスの管理 を参照してください。