使用 NTTTCP 测试 VM 网络吞吐量
注意
本文引用了 CentOS,这是一个处于生命周期结束 (EOL) 状态的 Linux 发行版。 请相应地考虑你的使用和规划。
本文介绍如何使用 Microsoft 提供的免费 NTTTCP 工具在 Azure Windows 或 Linux 虚拟机 (VM) 上测试网络带宽和吞吐量性能。 NTTTCP 等工具以网络为目标进行测试,可最大程度地减少可能影响性能的其他资源的使用。
先决条件
- 具有活动订阅的 Azure 帐户。 创建帐户。
- Azure 中的两台 Windows 或 Linux 虚拟机。 创建 Windows VM 或创建 Linux VM。
注意
可以使用虚拟 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
测试 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