ネットワークベンチマーキング (netperf)

netperf を使ってネットワークの二点間での通信速度を測定してみる. トラブル時の問題切り分けや実験などで使える. ちなみに,netperf は windows, *nix の両方で動くが,windows版は古いもの (2.1p1) しか 配布されていない.


サーバ側で準備

netperf は C/S アーキテクチャのツールであり, 測定に使う片方の端点でサーバプロセス netserver を動作させておく必要がある.

hostA ~# netserver

クライアントの実行

もう一方の端点で netperf クライアントを実行し, netserver サーバ間との通信を測定する.

hostB ~# netperf -H hostA -C -c
TCP STREAM TEST to hostA
Recv   Send    Send                          Utilization       Service Demand
Socket Socket  Message  Elapsed              Send     Recv     Send    Recv
Size   Size    Size     Time     Throughput  local    remote   local   remote
bytes  bytes   bytes    secs.    10^6bits/s  % T      % T      us/KB   us/KB

 87380  16384  16384    10.01        22.09   0.80     17.06    2.965   63.272

オプション "-C" でローカルの, "-c" でリモートの CPU 使用率が出る ("Utilization" のカラム). "-t" <testname> でテストの内容を指定することもできる. デフォルトは TCP_STREAM だが,伝送損失に注目したい場合は UDP_STREAM の ほうが純粋な値が出やすいかもしれない.

参考

ttcp は netperf と似たような機能を持つソフトウェアであるが, 一般的に netperf よりも精度が低いと言われている. このソフトも,windows, *nix の両方で提供されている.