本文介绍如何使用 Microsoft 提供的免费 NTTTCP 工具在 Azure Windows 或 Linux 虚拟机 (VM) 上测试网络带宽和吞吐量性能。 NTTTCP 等工具以网络为目标进行测试,可最大程度地减少可能影响性能的其他资源的使用。
先决条件
- 具有活动订阅的 Azure 帐户。 创建帐户。
- Azure 中的两台 Windows 或 Linux 虚拟机。 创建 Windows 虚拟机 或 创建 Linux 虚拟机。
注意
可以使用虚拟 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