VMware ESXi5.0 を使っていますが、今までネットワークアダプタは何気なく E1000 を使っていました。
テスト的に作った Solaris10 のゲスト環境でもE1000でした。
あまりアダプタで違いはないと思っていたんですが、どうやら結構違いあるようです。
詳しくは、VMware KB: 仮想マシンに使用するネットワーク アダプタの選択で解説されています。
簡単に言うと E1000 は Intel 82545EM ギガビット イーサネット NIC をエミュレーションしているようです。ほとんどのゲストOSでこのNICは利用できるようです。
VMXNET3 はパフォーマンス向上のために設計された準仮想化NICのようです。
Solarisは 10 U4 以降なら使えるようです。
今回のSolarisは以下の様なバージョンでした。
# cat /etc/release
Solaris 10 5/08 s10x_u5wos_10 X86
Copyright 2008 Sun Microsystems, Inc. All Rights Reserved.
Use is subject to license terms.
Assembled 24 March 2008
Solaris10はアップデートが 5/08 とか 8/07 とかの名称になっていますが、VMwareのサイトには Update4 以降の対応と有ります。
Solaris 10 オペレーティングシステム アップデートリリース情報でどれが何番目のアップデートかわかります。
今回は 5/08 で5番目のアップデートなんで、VMXNET3は対応できるということになります。
VMwareの設定画面でE1000のアダプタを削除し、新たにVMXNET3のアダプタを作成します。
その後起動して ifconfig を叩いてみます。
bash-3.00# ifconfig -a
lo0: flags=2001000849
mtu 8232 index 1 inet 127.0.0.1 netmask ff000000
まだ設定していないので、自身のアダプタしか出てきてませんね。
dladmで一応アダプタを確認してみます。
bash-3.00# dladm show-dev
vmxnet3s0 リンク: unknown 速度: 0 Mbps デュプレックス: unknown
ちゃんと認識はしているようですが、無効なので unknown になっています。
NICを有効にしてやります。
bash-3.00# ifconfig vmxnet3s0 plumb
bash-3.00# dladm show-dev
vmxnet3s0 リンク: down 速度: 0 Mbps デュプレックス: full
unknownではなくなりました。VMwareの設定で非接続にしているのでdownになっています。
この状態でifconfigを叩いてみました。
bash-3.00# ifconfig -a
lo0: flags=2001000849
mtu 8232 index 1 inet 127.0.0.1 netmask ff000000
vmxnet3s0: flags=1000802
mtu 1500 index 2 inet 0.0.0.0 netmask 0
ether 0:50:56:xx:xx:xx
IPが設定されていないようです。
(Solaris)NICが2つある場合のIP設定で書いたようにインターフェイスとホスト名を、設定ファイル名で結びつける必要があります。IPは今までE1000で使っていたのを使うので、以下のようにファイルをリネームしました。
bash-3.00# mv /etc/hostname.e1000g0 hostname.vmxnet3s0
これでリブートします。
shutdwon -y -g0 -y6
再起動後ちゃんとネットワークが接続できるようになりました。
ベンチマークはとってないですが、どれくらいパフォーマンスがあがるもんなんでしょうね。