harumaki.net

インフラ屋の覚書や、ラーメン食べある記とか。

ethernet network メモ 運用

[Windows]NTttcp.exeで帯域を測定してみる

投稿日:2014年10月8日

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>

といったところで、時間があるときにほかのオプションも試してみることに。
 

 

-ethernet, network, メモ, 運用
-

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


関連記事

no image

script/曜日の判定(if文とdateオプション)

曜日を判定する勉強用スクリプト。 dateコマンドのオプション”%u”で曜日を数値で出力し、あらかじめ決めた曜日に合致するか否かで メッセージを切り替える。 デフォルト曜日は日 …

SNMPのTX/RXカウンタについて(YAMAHA RTX1200)

会社のGWルーターに使用しているRTX1200のインターフェースのTX/RXカウントを LinuxサーバーからSNMPを使って累積でログに書き出していたところ、 32ビット長分に達するとリセットされる …

no image

USB接続のHDDをmke2fsでext3にフォーマットしたときのメッセージを確認(tune2fs )

CentOS5.8にて、USB接続の外付けHDDをext3にてフォーマットした際 “ファイルシステムは29回マウントされるか、または180日経過するか、どちらか先に来たら自動でチェックされ …

nagios​/plugin​/SNMP​/ロードアベレージ監視

  [pukiwiki] *ロードアベレージ監視[check_snmp_load.pl] [#v02685d2] **スクリプト [#g9e2c6a2] check_snmp_load.pl 使用例: …

nagios snmp ディスク使用率表示スクリプトのカスタマイズ

  [pukiwiki] もともとcheck_snmp_storageを使用していたが、nagiosgraphでグラフを出力させるための perfdataの表示を、nagiosgraph側でパーティシ …