Netperf を使って家庭内LANの転送速度を測ってみた

Netperf


Netperfとは、LANを含むさまざまなタイプのネットワークの性能を計測するベンチマークソフト。Linux/Unix 版と Windows 版が用意されている。2台のPC間のネットワーク( 2ノード間 )についてのスループットとネットワーク遅延を計測できる。
我が家には、WINDOWS XP SP3(x86)とUbuntu11.04(x86)の2台PCがあるので、どれくらい転送速度がでているのか試してみた。
今回はClient側をWINDOWS、Server側をUbuntuとして試す。

Netperfのインストール


まずはServer側(Ubuntu)にNetperfをインストールする。apt-getコマンドで持ってきちゃいましょう。。
sudo apt-get install netperf
ubuntu側でnetperfをインストールすると、自動でnetserverが起動しています。デフォルトで12865ポートで起動しています。リモートからこの12865にパケット送るので、ファイアウォールも許可しておきましょう。これでServer側は終わり。

次はWINDOWS側のインストール。下記サイトから、netperf-xx.exeをダウンロード。WINDOWS側をServerにしたい場合は、netserver-xx.exeもダウンロードしちゃいましょう。
ftp://ftp.cup.hp.com/dist/networking/benchmarks/netperf/binaries/2.1pl1/win32/x86/

ダウンロードしたら、WINDOWS側でコマンドプロンプト起動。netperf-xx.exeをダウンロードしたフォルダに移動し、下記コマンドを打つ。

netperf-xx.exe -h ServerのIPアドレス

RecvSocketSizebytesというのが受信側のソケットバッファ。デフォルト8KB
SendSocketSizebytesというのが送信側のソケットバッファ。デフォルト8KB
SendMessagebytesが送信パケットサイズ。デフォルト8KB
ElapsedTimesecsが測定秒数。デフォルト10秒です。
転送速度は、上記の例だと、24.88 Mbit/sec でている計算。お、遅い・・・

100BASE-TXNICでも100 Mbit/sec近くはでないのかな?実際にファイルを動かす時にはHDDの読み書きの時間やスワップ・ファイル処理の時間が加算されたり、 キャッシュ先読みの成功・失敗によって減・加算される時間があるので100Mは出ないらしい・・。

いろいろ調べてみると、受信側のPCの性能に影響するらしく、メモリ搭載量、ディスク速度、OS、ファイルサイズなどさまざまな要因があるようです。

ファイルサイズなど変えたい場合はオプションで変えられます。
例えば送信ソケットサイズ64KB,メッセージサイズ64KBとするには下記のようにします。

LANケーブル変えたり、ハブを変えてみたりとかしたときに、性能試すのには手軽でおもしろいですね。