6.2. vhost-net の無効化
vhost-net モジュールは、virtio ネットワーク用のカーネルレベルのバックエンドです。これは、ユーザー空間 (QEMU プロセス) からカーネル (
vhost-net
ドライバー) に virtio パケット処理タスクを移動することで仮想化オーバーヘッドを低減します。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 を事実上無効にします。