
仮想化ルーターを実行する 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 しか得られません。