【netperf】ネット速度を計測する

サーバのベンチマークテストをする場合、回線速度も測定しておきましょう。

Portのスキャン

lsof -i:[port] でも調べられますが、使用している全ての PORT(STATE, SERVICE) を調べる場合 nmap を使うと良いと思います。

yum install nmap
$ nmap localhost
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00044s latency).
Not shown: 993 closed ports
PORT      STATE SERVICE
22/tcp    open  ssh
25/tcp    open  smtp
80/tcp    open  http
3001/tcp  open  nessus
3305/tcp  open  mysql

ワンライナーで簡易測定

ベンチマークテストには不十分ですが、簡易測定としてpingを使ってホストまでの速度を計測できます。

pingではICMPパケットを送信します。ICMP (Internet Control Message Protocol) はIP通信のサポートをするプロトコルです。
ホストはこのエコー要求に応答します。

ペイロードサイズを変えて実験してみました。

# mac os x
$ sudo ping -l 10 www.google.com
round-trip min/avg/max/stddev = 35.886/76.981/131.742/26.551 ms
$ sudo ping -l 60000 www.google.com
round-trip min/avg/max/stddev = 32.604/1481.501/3248.580/1166.351 ms

RTT(round-trip-time) はペイロードサイズ10byteの時に平均65ms、60kbyteで平均2555msでした。

(60000 – 10) x 2 / (1481-76) ms ≒ 85.7 byte/ms ≒ 685kbps

無線環境というのもありますが、どうも誤差/偏差が大きすぎて信頼性は低いですね。

netperfで測定

本格的に測定したい場合、RHLE系ではnetperfというツールがあります。
unix、windowsで動作します。

公式からDLします。

# cent os
$ cd netperf-2.6.0
$ ./configure
$ make
$ sudo make install 

サーバとクライアントの両方にインストールします。
デフォルトでは 12865port を使用、10秒間計測します。
先にサーバで実行します。

$ netserver

次にクライアントで実行します。

$ netperf -H [ip]

throughputの結果が表示されます。
100Mbpsの環境でも50Mbpsはいくと思ったのですが実測は30~40Mbpsしかでませんでした。

また, netperf2.5とパッケージマネージャで入れたnetserver2.4.5だと上手く動きませんでした。
netserver2.5だと動いたのでできるだけversionは合わせた方が良いようです。

iperfで測定

Debian系ではTCPパケットで測定するiperfが使えます。

$ sudo apt-get install iperf

先にサーバで実行します。

$ iperf -s

次にクライアントです。

$ iperf -c [IP]

サーバ/クライアント共に uオプション を指定することでUDPモードで動作します。

$ iperf -c  [IP] -u -b 10000000

試しに Debian(BeagleBoneBlack) -> USB-Wifi -> WiMax -> Debian(VirtualBox) という構成で測定してみました。
TCPの速度は三回測定(10秒x3)して10.9, 11.6 ,11.3で平均11.2Mbit/秒でした。