
eth0
私の VM (Ubuntu 12.04) には、およびとして認識される 2 つのネットワーク インターフェイスが接続されていますeth1
。
パフォーマンスを向上させるためにカードをvirtioに変更したいので、VM設定両方のアダプタのタイプを次のように変更します準仮想化ネットワーク (virtio-net)
しかし、再起動後、パフォーマンスは同じであるように見えますが、はるかに遅くなっているとは言えません。出力を確認すると、とのほかに別のインターフェイスがifconfig
あります。virbr0
eth0
eth1
eth0
VirtualBox でタイプを変更すると、virtio アダプターが作成され、アダプターになると思いましたeth1
。これは、後でインターネットで見つけたいくつかのページで確認されました。アダプター タイプを変更するだけで十分であり、速度がすぐに向上すると書かれていました。しかし、私の場合はそうではありませんでした。
動作させるためにアダプタをどのように構成すればよいですか?
構成は次のようになります。eth0
外部ネットワークへのブリッジです。eth1
ホストオンリーアダプタです
$ ifconfig
eth0 Link encap:Ethernet HWaddr 08:00:27:62:0d:bd
inet addr:10.184.130.70 Bcast:10.184.130.255 Mask:255.255.240.0
inet6 addr: fe80::a00:27ff:fe64:dbd/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:411321 errors:0 dropped:2 overruns:0 frame:0
TX packets:118875 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:298154310 (298.1 MB) TX bytes:65017532 (65.0 MB)
eth1 Link encap:Ethernet HWaddr 08:00:27:9d:6b:df
inet addr:172.17.0.6 Bcast:172.17.255.255 Mask:255.255.0.0
inet6 addr: fe80::a00:27ff:fe8d:6bdf/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:12445 errors:0 dropped:0 overruns:0 frame:0
TX packets:13566 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1275663 (1.2 MB) TX bytes:8705940 (8.7 MB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:8538 errors:0 dropped:0 overruns:0 frame:0
TX packets:8538 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:2286738 (2.2 MB) TX bytes:2286738 (2.2 MB)
virbr0 Link encap:Ethernet HWaddr 76:ee:57:37:78:7c
inet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
実行しましたlsmod | grep virt
が、結果は表示されません。どちらもinsmod
表示されませんvirtio_net
$ insmod virt<tab><tab>
virtio_balloon virtio_console virtio_mmio virtio-rng virtual
現在のカーネルLinux vmdev 3.2.0-124-generic #167-Ubuntu SMP Fri Mar 3 15:26:21 UTC 2017 i686 i686 i386 GNU/Linux
。virtio ドライバーの読み込みを有効にするために必要なオプションはありますか?
ファイルに/etc/udev/rules.d/70-persistent-net.rules
は、アダプタのMACアドレスを再生成するときのコメントを除いて、virtioに関連するものは何も表示されません。
私は多くのテストを行いましたiperf
が、Intel PRO/1000 アダプタの結果は 250 ~ 350 Mbps 程度であるのに対し、virtio-net カードの結果は常に 100 ~ 150 Mbps の間で、私の期待をはるかに下回っています。そのため、解決策が見つかるまで、今すぐ e1000 カードに戻します。
インターネット上で関連する問題をいくつか見ましたが、今のところ解決方法はありません
- https://getsatisfaction.cumulusnetworks.com/cumulus/topics/cumulus-vx-virtualbox-virtio-nic-slow
- バグ:
- https://forums.virtualbox.org/viewtopic.php?f=7&t=26783
編集:
私のプロジェクトは新しい64ビットUbuntu 14.04 VM(3.13.0-86-generic #131-Ubuntu SMP Thu May 12 23:33:13 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
)に更新されましたが、結果は同じです。virtioは依然としてIntel 1000よりもはるかに遅いです。
答え1
マニュアル第6章 仮想ネットワーク:
「準仮想化ネットワーク アダプタ (virtio-net)」は特別です。これを選択すると、VirtualBox は一般的なネットワーク ハードウェア (一般的なゲスト オペレーティング システムですぐにサポートされている) を仮想化しません。代わりに、VirtualBox は、仮想化環境用の特別なソフトウェア インターフェイスがゲストによって提供されることを期待します。これにより、ネットワーク ハードウェアのエミュレーションの複雑さが回避され、ネットワーク パフォーマンスが向上します。バージョン 3.1 以降、VirtualBox は、オープン ソース KVM プロジェクトの一部である業界標準の「virtio」ネットワーク ドライバをサポートします。