使用 NTTTCP 测试 VM 网络吞吐量
本文介绍如何使用 Microsoft 提供的免费 NTTTCP 工具在 Azure Windows 或 Linux 虚拟机 (VM) 上测试网络带宽和吞吐量性能。 NTTTCP 等工具以网络为目标进行测试,可最大程度地减少可能影响性能的其他资源的使用。
- 具有活动订阅的 Azure 帐户。 创建帐户。
- Azure 中的两台 Windows 或 Linux 虚拟机。 创建 Windows VM 或创建 Linux VM。
- 若要测试吞吐量,需要两个大小相同的 VM 充当发送方和接收方。 这两个 VM 应位于同一邻近放置组或可用性集中,以便你可以使用其内部 IP 地址,并从测试中排除负载均衡器。
- 记下命令中使用的 VM 核心数和接收方 VM IP 地址。 发送方和接收方命令都使用接收方的 IP 地址。
备注
可以使用虚拟 IP 进行测试,但这超出了本文的范围。
本文中使用的示例
设置 |
“值” |
接收方 VM IP 地址 |
10.0.0.5 |
VM 核心数 |
2 |
使用 Windows VM 或 Linux VM 测试吞吐量
可以使用 NTTTCP 测试 Windows VM 的吞吐量,或者使用 NTTTCP-for-Linux 测试 Linux VM 的吞吐量。
准备 VM 并安装 NTTTCP-for-Windows
在发送方和接收方 VM 上,请将最新版本的 NTTTCP 下载到 c:\tools 等单独的文件夹中。
打开 Windows 命令行,并导航到将 ntttcp.exe 下载到的文件夹。
在接收方 VM 上创建 Windows 防火墙 allow
规则,以允许接收 NTTTCP 流量。 按名称允许 nttcp.exe 比允许特定入站 TCP 端口更容易。 请运行以下命令,将 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
若要确认配置,请使用以下命令在接收方和发送方虚拟机上测试单个传输控制协议 (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。
运行以下命令(具体取决于发行版),为 NTTTCP-for-Linux 准备发送方和接收方 VM:
对于 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 上运行 NTTTCP 测试 300 秒(5 分钟)。 发送方和接收方必须为 -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