2012年6月30日土曜日

nuttcpを使ってネットワークのスループットを測定してみた

1. まずはダウンロード
http://www.wcisd.hpc.mil/nuttcp/Nuttcp-HOWTO.html
※公式(っぽいです)
HTML, FTP, ローカルコピーどれでもいいのでソースを持ってきます
ソースからのインストールしかなさそうです
今回も例のごとくyoshi3サーバで行います
※以下で紹介しているパスは適当に作成しておりますので適宜変更していただいて問題ございません

[root@yoshi3 28_20120628_nuttcp]# wget http://www.lcp.nrl.navy.mil/nuttcp/beta/nuttcp-7.1.6.c
--2012-06-27 11:57:07-- http://www.lcp.nrl.navy.mil/nuttcp/beta/nuttcp-7.1.6.c
www.lcp.nrl.navy.mil をDNSに問いあわせています... 132.250.114.61
www.lcp.nrl.navy.mil|132.250.114.61|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 251878 (246K) [text/plain]
`nuttcp-7.1.6.c' に保存中

100%[=====================================================================================================================================>] 251,878 179K/s 時間 1.4s

2012-06-27 11:57:11 (179 KB/s) - `nuttcp-7.1.6.c' へ保存完了 [251878/251878]

[root@yoshi3 28_20120628_nuttcp]# cc -O3 -o nuttcp nuttcp-7.1.6.c
[root@yoshi3 28_20120628_nuttcp]# ls
nuttcp nuttcp-7.1.6.c
[root@yoshi3 28_20120628_nuttcp]# cd /usr/bin/
[root@yoshi3 bin]# ln -s /root/28_20120628_nuttcp/nuttcp nuttcp
[root@yoshi3 bin]# ls -ltr | grep nuttcp


2. 測定開始

[root@yoshi3 bin]# nuttcp -S (サーバ側起動)
[root@yoshi3 bin]# ps aux | grep nuttcp
root 4945 0.0 0.0 6028 296 ? Ss 13:21 0:00 nuttcp -S
root 4947 0.0 0.1 65440 872 pts/0 R+ 13:21 0:00 grep nuttcp
[root@yoshi3 bin]# nuttcp yoshi3 (yoshi3サーバへリクエストしたときのスループットを測定)
10646.0469 MB / 10.01 sec = 8921.2350 Mbps 14 %TX 24 %RX 0 retrans 0.03 msRTT
[root@yoshi3 bin]# nuttcp -il yoshi3
2785.8750 MB / 1.00 sec = 23325.0159 Mbps 0 retrans
1611.8125 MB / 1.04 sec = 13060.3425 Mbps 0 retrans
860.1250 MB / 1.06 sec = 6833.2263 Mbps 0 retrans
818.3125 MB / 1.00 sec = 6864.0772 Mbps 0 retrans
826.5000 MB / 1.02 sec = 6816.7745 Mbps 0 retrans
725.3125 MB / 0.93 sec = 6561.1123 Mbps 0 retrans
813.2500 MB / 1.02 sec = 6714.9719 Mbps 0 retrans
802.7500 MB / 1.00 sec = 6722.3053 Mbps 0 retrans
819.3750 MB / 1.05 sec = 6574.1851 Mbps 0 retrans
717.8125 MB / 0.91 sec = 6638.5398 Mbps 0 retrans

10785.7344 MB / 10.01 sec = 9038.6793 Mbps 13 %TX 25 %RX 0 retrans 0.02 msRTT

3. 測定結果

----------------------------------------------------------------------------------------
↓1秒の間に送信したパケット量
2785.8750 MB / 1.00 sec = 23325.0159 Mbps 0 retrans
使っているethカードの最大帯域↑
----------------------------------------------------------------------------------------

----------------------------------------------------------------------------------------
↓10秒間で送信したパケットの合計
10785.7344 MB / 10.01 sec = 9038.6793 Mbps 13 %TX 25 %RX 0 retrans 0.02 msRTT
使っているethカードの最大帯域の平均↑
----------------------------------------------------------------------------------------

結果から読み取れる概要としては
・ネットワークの帯域的には10Gくらいあるネットワーク使ってますよ
・データ転送量的には1秒間で800Mくらいは送れますね
・13%TXがクライアント側の平均CPU使用率、25%RXがサーバ側の平均CPU使用率
といったところでしょうか
開始時に値が大きくなっているのはなんかこうなっちゃうみたいです
おそらくは、スイッチ等のネットワーク機器がethカード以上の帯域を専有しないいように絞っているのでしょう
また、オプションなしで実行しているこの環境は双方向通信の測定結果になります

4. その他オプションなど
「-D」を指定すると下りの性能のみを計測
「-B」を指定すると上りの性能のみを計測
⇒こちらもやってみましたが、あまり双方向通信の結果と変わりませんでした
「nuttcp」とコマンドを実行すればヘルプも出るようです

2 件のコメント:

  1. クライアント側での上り方向の測定は -t (デフォルト)、下りは -r オプションです。サーバー側を両方に対応するには `nuttcp -S -t -s` とする必要があります。

    返信削除
  2. fumiyasさん
    ご指摘いただきありがとうございます
    NAT環境でnuttcpが使える環境がないので「-r」を使った検証はできておりませんが実際にNAT環境下で測定する際は「-r」の使用に注意したいと思います

    返信削除