試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

Oracle(Sun) VirtualBox 3.1のvirtio-net仮想ネットワークカードに関する設定メモとテスト

Oracle(Sun) VirtualBoxのバージョン3.1系からゲストOSの仮想ネットワークカードにvirtio-netを使用できるようになり、ネットワークカードのエミュレーションに関する負担が減る(処理が減る)分だけ動作が軽くできそうだったので、試してみた。

対応ゲストOS

GNU/LinuxではLinux(カーネル)のバージョンが2.6.24以上で利用可能となっている他、Windows版のvirtio(virtio-net含む)ドライバもKVMプロジェクトのページのリンク先から入手できるが、Windowsの動作は確認していない。

設定方法

仮想マシンごとの設定の中の「ネットワーク」にある各ネットワークアダプタの設定で「高度」を展開し、「アダプタ タイプ」を「準仮想化ネットワーク (virtio-net)」にするだけでよい。

新しめのGNU/Linuxディストリビューション(ゲストOS)においてはネットワークカードをvirtio-netと自動的に検出し、利用可能となる(OSインストール後に別のカードから変更してもOK)。ただ、ディストリによっては簡単にはうまくいかないことがあるかもしれない。

効果について

かなり前に入れたUbuntu 8.10(カーネルは2.6.27.7)を引っ張り出して、他の仮想ネットワークカード(Intelの82540EM)を用いた場合とvirtio-netを用いた場合のそれぞれについて、ディストリのISOイメージ(698M)のwgetによるダウンロードを試してみた。VirtualBoxのネットワークの設定はブリッジとし、OSのcpufreqdの設定はクロック固定とした。回線/ホストのハードウェア(NIC)環境はともに理論値100MbpsでCPUはAthlon64 3500+。ゲストOS上で使用されるドライバはUbuntuでは簡単にNetworkManagerアプレットから判別できるため、正確に確認済み。
その結果、回線/ハードが(1000Mbpsではなく)100Mbpsであるせいかは不明だが、CPU負荷/通信速度(ダウンロード完了までの時間)ともに大きな変化は見られず、誤差範囲だった。速度はいずれもホストOS上のものに近い値だった。CPU使用率はダウンロード中はいずれも100%となったが、ダウンロード完了までの時間はほとんど同じだった。
しかし
[引用] ユーザマニュアルより

  The “Paravirtualized network adapter (virtio-net)“ is special. If you select this,
then VirtualBox does not virtualize common networking hardware (that is supported
by common guest operating systems out of the box). Instead, VirtualBox then ex-
pects a special software interface for virtualized environments to be provided by the
guest, thus avoiding the complexity of emulating networking hardware and improving
network performance.

とあるので、仕組みとして他の仮想ネットワークカードよりも処理が減ってパフォーマンスが改善されるのはほぼ間違いないので、ゲストOSが対応していれば、設定はしておいて損にはならない気もする。
とは言え、サポート開始からまだそれほど経過していないため、安定した動作を望むのであればIntelの仮想ネットワークカードのほうが好ましい場合もあるかもしれない。

使用したバージョン: