Last Updated on 2021年7月4日 by かんりにん
社内LANにある端末のスループット調査にて、マイクロソフト謹製のNTttcp.exe(ttcpのNT版、という位置づけの様子)を使ってみることに。
普段はiperfのお世話になることが多いが、今回は対象サーバーにWindows Server 2012、クライアントはWindows7なので、何かとプログラム的な相性はよいかも。
最終更新は2014/10/02とのこと。
マイクロソフトの公式サイト
お世話になっております!
NTttcp Version 5.28 Now Available
動作環境
以下のOSバージョンで利用可(公式サイトから抜粋)。
Windows Server 2012 Windows Server 2008 R2 Windows 8 Windows 7
※残念ながらR2以前のWindows Server 2008やVista以前のクライアントは使えず…
■機能
以前のバージョンと比較して、強化された機能を公式サイトから抜粋。
ただしエキサイト翻訳の直訳そのままですw そのうち書き直そう…
- 10GigEインターフェースのために最適化
- x86、x64およびARM環境に対応
- 単純化された使用法(例えば単純パラメーター・スイッチで決定された送り手およびレシーバー機能性)
- すべてのシステム芯(「*」をプロセッサーID写像価値に使用して)を横切った糸のダイナミック・アロケーション
- 操業開始オーダー依存性は連れ去られました(つまり、サーバー/レシーバーはタイムアウトではなく他方を待つでしょう)。
- Custom warm-up and cool down options available
- 結果はXMLに出力することができます。
- 送り手交通を特定のIPアドレスに結び付ける能力
- データポートの同期、多数の実例を実行する場合、有用
ぐぬぬ…頑張って自力でちゃんと翻訳してみよう…
■導入ログ
1)ダウンロード
ダウンロードは公式サイトのリンクをクリックするだけでOK。楽ちん。
2)実行ファイルの配置
展開した実行ファイルは、コンパイルせずにそのまま使えるので
デスクトップでもMy DocumentでもどこでもOK。
ひとまずパスが通ってるフォルダに実行ファイルを配置すればスマートかと。
なのでフォルダとしてはシステム領域かソフトのインストール先の
C:\Program Files
または
C:\Windows
あたりがいいかな、と。
今回は管理者アカウントで、パスが問題なく通るC:\Windows直下に配置。
■測定してみた
サーバーで測定する前に、クライアントPC同士で色々試してみる。クライアントOSは両方Winodws7 SP1(32bit)。
ピアノードそれぞれでコマンドプロンプトからNTttcp.exeを実行し、測定結果を得る。
オプションの違いはあるものの、iperfと同じような感じで使えそう。
ひとまずマイクロソフトの公式サイトにある実行例をもとに試してみることに。
オプションの使い方も調べてみたけど、英文のドキュメントなので微妙に的を得ているかが不安…
[書式例]
送信側の設定:
C:\Windows>NTttcp.exe -s -m 8,*,<宛先IPアドレス> -l 128k -a 2 -t 15
受信側の設定:
C:\Windows>NTttcp.exe -r -m 8,*,<宛先IPアドレス> -rb 2M -a 16 -t 15
[試した環境]
送信側クライアント Windows7 192.168.130.61
受信側サーバー Windows server 2008 R2 192.168.129.241
つなげてるスイッチ Cisco Catalyst 3750Xと2960G
イーサネット規格 1000BASE-T
※サブネットはギガのL3スイッチでVLANで分けてます。
1)実行例
1.送信側の設定:
C:\Windows>NTttcp.exe -s -m 8,*,192.168.129.241 -l 128k -a 2 -t 15
2.受信側の設定:
C:\Windows>NTttcp.exe -r -m 8,*,192.168.172.24 -rb 2M -a 16 -t 15
2)実行結果
1.送信側の結果
C:\Windows>NTttcp.exe -s -m 8,*,192.168.129.241 -l 128k -a 2 -t 15 Copyright Version 5.28 Network activity progressing... Thread Time(s) Throughput(KB/s) Avg B / Compl ====== ======= ================ ============= 0 15.002 14837.488 131072.000 1 15.002 13728.303 131072.000 2 15.002 15025.197 131072.000 3 15.002 15972.270 131072.000 4 15.002 13941.608 131072.000 5 14.992 14821.772 131072.000 6 14.992 14002.134 131072.000 7 15.012 12320.810 131072.000 ##### Totals: ##### Bytes(MEG) realtime(s) Avg Frame Size Throughput(MB/s) ================ =========== ============== ================ 1679.500000 15.002 1456.983 111.952 Throughput(Buffers/s) Cycles/Byte Buffers ===================== =========== ============= 895.614 6.009 13436.000 DPCs(count/s) Pkts(num/DPC) Intr(count/s) Pkts(num/intr) ============= ============= =============== ============== 3568.724 1.716 3245.701 1.886 Packets Sent Packets Received Retransmits Errors Avg. CPU % ============ ================ =========== ====== ========== 1208719 91849 165 0 7.071 C:\Windows>
2.受信側の結果
C:\Windows>NTttcp.exe -r -m 8,*,192.168.129.241 -rb 2M -a 16 -t 15 Copyright Version 5.28 Network activity progressing... Thread Time(s) Throughput(KB/s) Avg B / Compl ====== ======= ================ ============= 0 14.991 14839.856 62088.696 1 15.000 13734.400 61883.363 2 15.002 15025.197 63099.451 3 15.009 15973.349 62867.569 4 14.998 13936.792 61400.050 5 14.991 14822.760 63048.211 6 14.999 14012.668 62564.019 7 14.997 12333.133 61294.188 ##### Totals: ##### Bytes(MEG) realtime(s) Avg Frame Size Throughput(MB/s) ================ =========== ============== ================ 1679.687775 15.001 1448.356 111.972 Throughput(Buffers/s) Cycles/Byte Buffers ===================== =========== ============= 1791.548 13.899 26875.004 DPCs(count/s) Pkts(num/DPC) Intr(count/s) Pkts(num/intr) ============= ============= =============== ============== 3121.592 25.969 5144.990 15.756 Packets Sent Packets Received Retransmits Errors Avg. CPU % ============ ================ =========== ====== ========== 98410 1216055 1 0 16.145 C:\Windows>
3)タスクマネージャで動作をのぞいてみる
- 1.実行中のグラフ
- 2.実行後のグラフ
■コマンドオプション
NTttcpのヘルプを参照に、独断と偏見の翻訳つきで。
間違ってたらすみません。修正します…
NTttcp: [-s|-r|-l|-n|-p|-sp|-a|-rb|-sb|-u|-w|-d|-t|-cd|-wu|-v|-6|-wa|-nic|-xml] -m [mapping]
-s work as a sender
送信側に指定する-r work as a receiver
受信側に指定する-l [default TCP: 64K, UDP: 128]
バッファ長の指定-n [default: 20K]
バッファサイズの指定??要調査-p [default: 5001]
接続を開始するポートの指定。デフォルトは5001番から。
後述の”-m”オプションでマッピングを複数指定している場合は、指定したポートから順番に割り当てられる。
ex. 6001,6002,6003…など。-sp synchronize data ports, if used -p should be same on every instance
ポートの同期、オプション”-p”を指定する場合は必須?
データ送受信用のポートを同期させる?要調査。-a [default: 2]
接続I/O数の指定。
送信側:同時接続I/O数
受信側:処理待ちI/O数の指定-rb [default: 64K]
受信バッファサイズ-sb [default: 8K]
-a : [default: 0]
送信バッファサイズ
< 0 : system default-u UDP send/recv
UDPでの送受信指定-w WSARecv/WSASend
WSA Windows Socketでの送受信指定-d Verify Flag
データフラグの確認-t in seconds. When with -n mans max test time and disables
-wu and -cd flags. [default (with -n): 3h]
秒単位での実行時間の指定。-cd in seconds
-wu in seconds
“-cd “と”-wu “は計測開始前後のインターバル時間(秒単位)の指定と
思われる。-v enable verbose mode
詳細モード
実行結果をdebugモードっぽい感じで出力。-6 enable IPv6 mode
IPv6モード許可-wa Sets the WAIT_ALL flag when using recv or WSARecv functions
要調査
-nic
Use NIC with for sending data (sender only).
送信側でのNICとIPアドレスの指定(そのNICから計測するか?)-xml [filename] save XML output to a file, by default saves to xml.txt
XML形式での実行結果の出力の指定。
ファイル名の指定が無い場合は、xml.txtで出力。-m [mapping]
where a mapping is a session(s),processor,StartReceiver IP set
e.g. -m 4,0,1.2.3.4 sets up:
4 sessions on processor 0 to test a network on 1.2.3.4
セッション、プロセッサ数、受信側IPアドレスの指定。
送受信それぞれのホストで同じ数で指定すること。
■設定上の注意事項
軽く試してみて判ったことを、ざざっとメモ書き。
いくつか注意事項を。
1)マッピングする数の設定を合わせること
送受信側でそれぞれ指定するマッピング数(-mオプション)を合わせないと、以下のようなエラーメッセージが出る。
具体的には、-mオプションで指定した数が大きいほうでエラーが出る。
送信側でマッピング数10( -m 10)、受信側が8( -m 8)とした場合。
送信側の設定:
C:\Windows>NTttcp.exe -s -m 10,*,192.168.172.24 -l 128k -a 4 -t 30
受信側の設定:
C:\Windows>NTttcp.exe -r -m 8,*,192.168.172.24 -rb 2M -a 4 -t 30
実行時のエラーメッセージ
上記の設定では送信側のマッピング数の指定が多かったので、送信側でエラーが!
ERROR: StartSenderReceiver in thread: 2 failed: error in synch ERROR: StartSenderReceiver in thread: 7 failed: error in synch ERROR: StartSenderReceiver in thread: 4 failed: error in synch ERROR: StartSenderReceiver in thread: 0 failed: error in synch ERROR: StartSenderReceiver in thread: 6 failed: error in synch ERROR: StartSenderReceiver in thread: 5 failed: error in synch ERROR: StartSenderReceiver in thread: 3 failed: error in synch ERROR: StartSenderReceiver in thread: 1 failed: error in synch
※受信側の数が大きい場合も同様のエラーメッセージが出る。
また、エラーメッセージが出た後もコマンドが終了しないため、Ctrl+Cで停止してあげる必要がある。
タスクマネージャーのグラフも以下のような、やる気ゼロ(?)な感じになってしまうので、ここはちゃんと合わせましょう。
使い始めはデフォルトでぜんぜんOKだし。
2)オプション”-p”にてポート番号を指定する場合
当たり前ですが、送信・受信でそれぞれ同じポート番号で合わせましょう。
デフォルトでは5001番からの指定になりますが、片側だけ指定しても当然ポートが合わないので計測はできません。
■ほかのオプションを試してみた
まだ全てのオプションを網羅できていないながら、一部使えそうなものを試してみたので、ログを記載。
1)実行結果をXMLに出す場合
オプション”-xml”を付けると、cmdの標準出力の代わりにxml形式のファイルにエクスポート可能。
- 送信側、受信側両方で出力可能、また片側だけでもOK。
- ファイルの出力先は、NTttcp.exeの配置フォルダと同じフォルダになる。なので、NTttcp.exeをC:\Windowsなどに配置している場合、権限により出力されない場合があるので要注意。
- オプションの後にファイルの出力先とファイル名を指定することも可能。NTttcp.exeをシステムフォルダに配置した場合は、自分のアカウントのマイドキュメントフォルダなどを指定するとよい。
1.そのまま実行する場合。
C:\Windows>NTttcp.exe -s -m 8,*,192.168.129.241 -l 128k -a 2 -t 15 -xml
2.出力先を指定する場合。
以下は、ログイン中のharumakiユーザーのマイドキュメントに出力する場合。ファイルの拡張子に.xmlを指定して出力。
C:\Windows>ntttcp.exe -s -m 8,*,192.168.129.241 -l 128k -a 2 -t 15 -xml C:\Users\harumaki\Documents\NTttcp.xml
ただし、xml出力をすると、標準出力が出なくなるので、できれば標準出力を出しつつ、xmlにも落とせるような、あるいはシェルのようにパイプを使ってteeでつなげられるような使い方が出来ればありがたい。
2)verposeモードで動かしてみた
verposeモード、いわゆる”詳細モード”あるいはデバッグモードと思われるが、試してみた実行結果を以下に記載。
これも送信側・受信側の両方で、ないし片側でも実行可能。
しかし、すごく長いので、マッピング数を増やすとコマンドプロンプトのバッファからあふれて、バッファ行の外に行ってしまうので、今回はマッピング数を2で設定。
C:\Windows>ntttcp.exe -s -m 2,*,192.168.129.241 -l 128k -a 2 -t 15 -v 10/7/2014 18:25:7 buffers_length: 131072 num_buffers_to_send: 9223372036854775807 send_socket_buff: 0 recv_socket_buff: -1 port: 5001 sync_port: 0 async_flag: 1 verbose_flag: 1 wsa_flag: 0 use_ipv6_flag: 0 send_flag: 1 udp_flag: 0 verify_data_flag: 0 wait_all_flag: 0 run_time: 15000 warmup_time: 7500 cooldown_time: 7500 dash_n_timeout: 10800000 bind_sender_flag: 0 sender_name: max_active_threads: 2 mapping[0]: 2 10/7/2014 18:25:7 DoWorkproc_speed: 2494 MHz 10/7/2014 18:25:7 SetupThreads 10/7/2014 18:25:7 Threads: 2 Processor: -1 Host: 192.168.129.241 10/7/2014 18:25:7 created thread: 2904 10/7/2014 18:25:7 StartSender 10/7/2014 18:25:7 Host: 192.168.129.241 Port: 5001 10/7/2014 18:25:7 SetupNet 10/7/2014 18:25:7 created thread: 2c5c 10/7/2014 18:25:7 Total threads: 2 Copyright Version 5.28 10/7/2014 18:25:7 StartSender 10/7/2014 18:25:7 Host: 192.168.129.241 Port: 5002 10/7/2014 18:25:7 SetupNet … すごく長いのでsnip … 10/7/2014 18:25:40 StartSenderReceiver: done 10/7/2014 18:25:40 StartSenderReceiver: done 10/7/2014 18:25:40 PrintOutput Thread Time(s) Throughput(KB/s) Avg B / Compl ====== ======= ================ ============= 0 15.006 56297.481 131072.000 1 15.006 56323.071 131072.000 ##### Totals: ##### Bytes(MEG) realtime(s) Avg Frame Size Throughput(MB/s) ================ =========== ============== ================ 1650.375000 15.006 1456.314 109.981 Throughput(Buffers/s) Cycles/Byte Buffers ===================== =========== ============= 879.848 5.103 13203.000 DPCs(count/s) Pkts(num/DPC) Intr(count/s) Pkts(num/intr) ============= ============= =============== ============== 2821.871 1.630 2965.614 1.551 Packets Sent Packets Received Retransmits Errors Avg. CPU % ============ ================ =========== ====== ========== 1188304 69003 15 0 5.900 C:\Windows>
といったところで、時間があるときにほかのオプションも試してみることに。