日経Linux 2011年3月号に、Iperfというものを使うと、ネットワーク帯域測定ができるとあったので、試してみた。もともとの記事はVPSと自宅間の転送速度を測定するということだったが、LAN内のPC間での転送速度を知りたかったからだ。
iperfについては、下記からソースコードはダウンロードできる。
gcc-c++があれば、コンパイルとインストールはできるようですが、もしパッケージの方がいいという場合は、下記から入手可能なようだ。たとえばCentOS5用のパッケージは iperf-2.0.4-1.el5.rf.i386.rpm となる。
ソースコードからのインストール手順は簡単に書くと、次のようになる。CentOSでgcc-c++のインストールをするところから書いてある。また、最初に/usr/local/src/にtar.gzアーカイブファイルがおいてある前提。この結果、/usr/local/bin/iperf へインストールされる。
cd /usr/local/src/
sudo tar xzf iperf-2.0.5.tar.gz
cd iperf-2.0.5
sudo ./configure
sudo make
sudo make install
これで、/usr/local/bin/ipref が用意される。なお、計測にあたっては、LANG=C sudo setup (CentOSの場合)などとして、ファイアーウォールでTCPの5001ポート(CentOSでは5001:tcp を追加)をあけておく必要がある。
まず、サーバ側は下記のようにして待機。
クライアント側は普通に実行すれば計測できる。仮想マシンから100Mbpsの有線環境で測定しましたが、遅いですね。ネットワーク転送が遅いのでギガビット環境にしたくなっているところです。
■転送速度10秒(初期値)
------------------------------------------------------------
Client connecting to 192.168.0.2, TCP port 5001
TCP window size: 16.0 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.0.3 port 51525 connected with 192.168.0.2 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 48.5 MBytes 40.7 Mbits/sec
■転送速度20秒
------------------------------------------------------------
Client connecting to 192.168.0.2, TCP port 5001
TCP window size: 62.3 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.0.3 port 51526 connected with 192.168.0.2 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-20.0 sec 96.2 MBytes 40.3 Mbits/sec
■転送速度20秒、5スレッド同時実行
------------------------------------------------------------
Client connecting to 192.168.0.2, TCP port 5001
TCP window size: 58.6 KByte (default)
------------------------------------------------------------
[ 7] local 192.168.0.3 port 51532 connected with 192.168.0.2 port 5001
[ 3] local 192.168.0.3 port 51528 connected with 192.168.0.2 port 5001
[ 5] local 192.168.0.3 port 51530 connected with 192.168.0.2 port 5001
[ 4] local 192.168.0.3 port 51529 connected with 192.168.0.2 port 5001
[ 6] local 192.168.0.3 port 51531 connected with 192.168.0.2 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-20.2 sec 19.9 MBytes 8.25 Mbits/sec
[ 5] 0.0-20.3 sec 12.6 MBytes 5.23 Mbits/sec
[ 6] 0.0-20.3 sec 18.9 MBytes 7.78 Mbits/sec
[ 7] 0.0-20.4 sec 11.5 MBytes 4.73 Mbits/sec
[ 4] 0.0-20.5 sec 15.9 MBytes 6.50 Mbits/sec
[SUM] 0.0-20.5 sec 78.8 MBytes 32.3 Mbits/sec
より詳しい内容をしりたい人は、こちらを購入して読んでみてください。
ちなみに、jperfというiperfのGUI版もあるそうで、「Iperf – Browse /jperf/jperf 2.0.0 at SourceForge.net」から入手できるようだ。
EPEL便利そうですね。基本的にデフォルト環境で作業したり、必要な物はソースコードからコンパイルしていたりするので、EPELのようなアドオンリポジトリは使っていないのですが、今度使ってみます。
自宅環境内での最適化を考えると、まずはギガですね。Thunderboltはまだまだ高くつきそうな気がします。
iperf なら、EPEL を有効にして yum install iperf で一発で入りますよ!
今なら、ギガよりも Thunderbolt な環境にするべきですw