NTTTCP を使用して VM ネットワーク スループットをテストする
- [アーティクル]
-
-
この記事では、Microsoft が提供する無料の NTTTCP ツールを使用して、Azure Windows または Linux 仮想マシン (VM) のネットワーク帯域幅とスループット パフォーマンスをテストする方法について説明します。 NTTTCP のようなツールは、ネットワークをテストの対象にしており、パフォーマンスに影響を与える可能性のある他のリソースの使用を最小限に抑えます。
- アクティブなサブスクリプションが含まれる Azure アカウント。 無料でアカウントを作成できます。
- Azure 内の 2 つの Windows または Linux 仮想マシン。 Windows VM を作成するか Linux VM を作成します。
- スループットをテストするには、"送信側" と "受信側" として機能する、同じサイズの 2 つの VM が必要です。 2 つの VM は、同じ近接配置グループまたは可用性セットに属している必要があります。これにより、それらの内部 IP アドレスを使用して、ロード バランサーをテストから除外できます。
- コマンドで使用する VM コアの数と受信側 VM の IP アドレスに注意してください。 送信側と受信側の両方のコマンドで、受信側の IP アドレスが使用されます。
注意
仮想 IP を使用したテストは可能ですが、この記事の範囲外です。
この記事で使用されている例
設定 |
値 |
受信側 VM の IP アドレス |
10.0.0.5 |
VM コアの数 |
2 |
Windows VM または Linux VM でスループットをテストする
Windows VM から NTTTCP を使用して、または Linux VM から NTTTCP-for-Linux を使用してスループットをテストできます。
VM を準備して NTTTCP-for-Windows をインストールする
送信側と受信側の両方の VM で、最新バージョンの NTTTCP を c:\tools などの別フォルダーにダウンロードします。
Windows コマンド ラインを開き、ntttcp.exe をダウンロードしたフォルダーに移動します。
受信側 VM で、NTTTCP トラフィックの到着を許可する Windows ファイアウォール allow
規則を作成します。 特定の受信 TCP ポートを許可するよりも、名前で ntttcp.exe を許可する方が簡単です。 次のコマンドを実行します。その際、c:\tools
は実際の ntttcp.exe のダウンロード パスに置き換えてください (異なる場合)。
netsh advfirewall firewall add rule program=c:\tools\ntttcp.exe name="ntttcp" protocol=any dir=in action=allow enable=yes profile=ANY
構成を確認するには、次のコマンドを使用して、受信側と送信側の仮想マシンで 1 つの転送制御プロトコル (TCP) ストリームを 10 秒間テストします。
受信側 VM
ntttcp -r -m [<number of VM cores> x 2],*,<receiver IP address> -t 10 -P 1
ntttcp -r -m 4,*,10.0.0.5 -t 10 -P 1
送信側 VM
ntttcp -s -m [<number of VM cores> x 2],*,<receiver IP address> -t 10 -P 1
ntttcp -s -m 4,*,10.0.0.5 -t 10 -P 1
注意
上記のコマンドは、構成をテストする場合にのみ使用します。
ヒント
初めてテストを実行して設定を確認する場合は、すぐにフィードバックを得られるように短いテスト時間を使用してください。 ツールが正常に動作していることを確認したら、最大限正確な結果を得るために、テスト時間を 300 秒に延長します。
送信側と受信側の両方の VM で、300 秒間 (5 分間) テストを実行します。 送信側と受信側で、-t
パラメーターに同じテスト時間を指定する必要があります。
受信側 VM で次のコマンドを実行します。その際、<number of VM cores>
および <receiver IP address>
プレースホルダーは実際の値に置き換えてください。
ntttcp -r -m [<number of VM cores> x 2],*,<receiver IP address> -t 300
ntttcp -r -m 4,*,10.0.0.5 -t 300
送信側 VM で次のコマンドを実行します。 送信側と受信側のコマンドの違いは、送信側または受信側の VM を指定する -s
または -r
パラメーターのみです。
ntttcp -s -m [<number of VM cores> x 2],*,<receiver IP address> -t 300
ntttcp -s -m 4,*,10.0.0.5 -t 300
結果を待ちます。
テストが完了すると、出力は次の例のようになります。
C:\tools>ntttcp -s -m 4,*,10.0.0.5 -t 300
Copyright Version 5.39
Network activity progressing...
Thread Time(s) Throughput(KB/s) Avg B / Compl
====== ======= ================ =============
0 300.006 29617.328 65536.000
1 300.006 29267.468 65536.000
2 300.006 28978.834 65536.000
3 300.006 29016.806 65536.000
##### Totals: #####
Bytes(MEG) realtime(s) Avg Frame Size Throughput(MB/s)
================ =========== ============== ================
34243.000000 300.005 1417.829 114.141
Throughput(Buffers/s) Cycles/Byte Buffers
===================== =========== =============
1826.262 7.036 547888.000
DPCs(count/s) Pkts(num/DPC) Intr(count/s) Pkts(num/intr)
============= ============= =============== ==============
4218.744 1.708 6055.769 1.190
Packets Sent Packets Received Retransmits Errors Avg. CPU %
============ ================ =========== ====== ==========
25324915 2161992 60412 0 15.075
VM を準備して NTTTCP-for-Linux をインストールする
Linux マシンからスループットを測定するには、NTTTCP-for-Linux を使用します。
ご使用のディストリビューションに応じて、次のコマンドを実行して、送信側と受信側の両方の VM で NTTTCP-for-Linux を準備します。
Ubuntu の場合、build-essential
と git
をインストールします。
sudo apt-get update
sudo apt-get -y install build-essential
sudo apt-get -y install git
SUSE の場合、git-core
、gcc
、および make
をインストールします。
sudo zypper in -y git-core gcc make
NTTTCP-for-Linux を作成してインストールします。
git clone https://github.com/Microsoft/ntttcp-for-linux
cd ntttcp-for-linux/src
sudo make && sudo make install
送信側 VM と 受信側 VM の両方で、300 秒間 (5 分間) NTTTCP テストを実行します。 送信側と受信側で、-t
パラメーターに同じテスト時間を指定する必要があります。 時間パラメーターを指定しない場合、テスト時間の既定値は 60 秒です。
受信側 VM で次のコマンドを実行します。
ntttcp -r -m 4,*,10.0.0.5 -t 300
送信側 VM で次のコマンドを実行します。 この例は、受信側の IP アドレスが 10.0.0.5
である場合の送信側のコマンドを示しています。
ntttcp -s -m 4,*,10.0.0.5 -t 300
テストが完了すると、出力は次の例のようになります。
azureuser@vm-3:~/ntttcp-for-linux/src$ ntttcp -s -m 4,*,10.0.0.5 -t 300
NTTTCP for Linux 1.4.0
---------------------------------------------------------
23:59:01 INFO: 4 threads created
23:59:01 INFO: 4 connections created in 1933 microseconds
23:59:01 INFO: Network activity progressing...
00:04:01 INFO: Test run completed.
00:04:01 INFO: Test cycle finished.
00:04:01 INFO: 4 connections tested
00:04:01 INFO: ##### Totals: #####
00:04:01 INFO: test duration:300.00 seconds
00:04:01 INFO: total bytes:35750674432
00:04:01 INFO: throughput:953.35Mbps
00:04:01 INFO: retrans segs:13889
00:04:01 INFO: cpu cores:2
00:04:01 INFO: cpu speed:2793.437MHz
00:04:01 INFO: user:0.16%
00:04:01 INFO: system:1.60%
00:04:01 INFO: idle:98.07%
00:04:01 INFO: iowait:0.05%
00:04:01 INFO: softirq:0.12%
00:04:01 INFO: cycles/byte:0.91
00:04:01 INFO: cpu busy (all):3.96%
---------------------------------------------------------
Windows VM と Linux VM の間のスループットをテストする
Windows VM と Linux VM の間で NTTTCP スループット テストを実行するには、Windows の -ns
フラグまたは Linux の -N
フラグを使用して同期なしモードを有効にします。
受信側として Windows VM でテストするには、次のコマンドを実行します。
ntttcp -r -m [<number of VM cores> x 2],*,<Linux VM IP address> -t 300
送信側として Windows VM でテストするには、次のコマンドを実行します。
ntttcp -s -m [<number of VM cores> x 2],*,<Linux VM IP address> -ns -t 300
受信側として Linux VM でテストするには、次のコマンドを実行します。
ntttcp -r -m [<number of VM cores> x 2],*,<Windows VM IP address> -t 300
送信側として Linux VM でテストするには、次のコマンドを実行します。
ntttcp -s -m [<number of VM cores> x 2],*,<Windows VM IP address> -N -t 300