KVM と Libvirt: ゲストの CPU/ネットワーク パフォーマンスが悪い

KVM と Libvirt: ゲストの CPU/ネットワーク パフォーマンスが悪い

仮想化ルーターを実行する Arch Linux ホストがあります。

LXC ゲストをルーターとして使用すると、すべて正常です。100MBits のアップ/ダウンが得られ、CPU 使用率はほとんどありません。

しかし、libvirt gest (pfSense FreeBSD) をルーターとして使用すると、ゲストを通過するネットワーク トラフィックが多すぎると、CPU 使用率が異常に高くなります (最大 100%)。さらに最悪なのは、ネットワーク スループットが半分になることです。最大で 45 ~ 49 Mbit しか得られません。

ホストは PCI パススルーをサポートしていないため、libvirtd VM の設定は次のようになります。

Nic1 (wan)
Network source: Direct ‘eth0’
Source mode: passthrough
Device model: virtio

Nic2 (lan)
Bridge name: br0
Device model: virtio

代わりに e1000 を試してみましたが、まったく何も変わりませんでした。

Host CPU: AMD A4-5000 Kabini
Guest CPU: default or Opteron_G3

pfSense のハードウェア ポーリングは無効になっており、pfSense ifconfig には次のように表示されます。http://storage5.static.itmages.com/i/16/1217/h_1481996196_8871112_a2f0d75655.png

これは、KVM を使い始めてから 1 年以上経った今でも続いています。この問題を解決しないと、このようなパフォーマンスは許容できないため、libvirt をダンプする必要があります。

答え1

これは Virtio 用の FreeBSD ドライバーに関係しており、Linux ドライバーほど高速に実行するには不十分です。

https://forum.proxmox.com/threads/poor-virtio-network-performance-pfsense-guest-proxmox-3-4.23933/

^^ 上記の投稿では、ゲストとホスト、および pfSense 設定内でハードウェア チェックサム オフロードをオフにするなど、役立ついくつかの操作について詳しく説明しています (再テストする前に必ず VM を再起動してください)。

私は Proxmox (Debian ベース) 上で pfSense を実行しようとしていますが、ベアメタル上のギガビット インターフェイスでは 940 ~ 980 Mbps が得られますが、VM ゲストでは最大 650 ~ 700 Mbps しか得られません。

関連情報