11.2. vhost-net の無効化

vhost-net モジュールは virtio ネットワーキング用のカーネルレベルのバックエンドで、virtio パケット処理タスクをユーザー領域 (qemu プロセス) からカーネル (vhost-net ドライバー) に移すことで仮想化オーバーヘッドを低減します。vhost-net は、virtio ネットワークインターフェースでのみ利用可能です。vhost-net カーネルモジュールがロードされている場合、デフォルトですべての virtio インターフェース用に有効化されています。ただし、vhost-net の使用時に特定のワークロードのパフォーマンスが低下した場合は、インターフェース設定で無効にできます。
具体的には、UDP トラフィックがホストマシンからホスト上のゲスト仮想マシンに送信された場合、ゲスト仮想マシンの着信データ処理速度がホストマシンの送信速度より遅いと、パフォーマンスが低下する可能性があります。この状況で vhost-net を有効にすると、UDP ソケットの受信バッファーをより早くオーバーフローさせることになり、多大なパケットロスにつながります。このため、この状況ではトラフィックを遅らせ、全体のパフォーマンスを上げるために、vhost-net を無効にすることが適切です。
vhost-net を無効にするには、ゲスト仮想マシンの XML 設定ファイルにある <interface> サブ要素を編集し、ネットワークを以下のように定義します。
<interface type="network">
   ...
   <model type="virtio"/>
   <driver name="qemu"/>
   ...
</interface>
ドライバー名を qemu に設定するとパケット処理を qemu ユーザー領域に強制するので、そのインスタンスで vhost-net を事実上無効にします。