测试 Azure VM 之间的网络延迟
本文介绍如何使用公开可用的工具 Latte(用于 Windows)或 SockPerf(用于 Linux)测试 Azure 虚拟机 (VM) 之间的网络延迟。
为获得最准确的结果,应使用专为该任务设计的工具衡量 VM 网络延迟,并排除其他类型的延迟,例如应用程序延迟。 Latte 和 SockPerf 专注于传输控制协议 (TCP) 和用户数据报协议 (UDP) 流量,可提供最相关的网络延迟结果。 大多数应用程序都使用这些协议,此流量对应用程序性能的影响最大。
许多其他常见的网络延迟测试工具(如 Ping)不会衡量 TCP 或 UDP 流量。 Ping 之类的工具使用 Internet 控制消息协议 (ICMP),而应用程序不使用这些协议。 ICMP 流量的处理方式与应用程序流量不同,不会直接影响应用程序性能。 ICMP 测试结果不会直接应用于使用 TCP 和 UDP 的工作负载。
Latte 和 SockPerf 仅衡量 TCP 或 UDP 有效负载传递时间。 这些工具使用以下方法来衡量两台物理计算机或虚拟计算机之间的网络延迟:
- 通过将一方指定为发送方,一方指定为接收方,在计算机之间创建双向通信通道。
- 在两个方向上发送和接收数据包,并衡量往返时间 (RTT)。
若要针对网络延迟优化 VM,请在创建 VM 时遵循以下建议:
- 使用最新版本的 Windows 或 Linux。
- 启用“加速网络”以提高性能。
- 使用 Azure 邻近放置组部署 VM。
- 创建更大的 VM 以提高性能。
使用以下最佳做法来测试和分析网络延迟:
完成网络 VM 的部署、配置和优化后,在部署的 VM 之间执行基线网络延迟测量,以建立基准。
测试更改以下任何组件对网络延迟的影响:
- 操作系统 (OS) 或网络堆栈软件,包括配置更改。
- VM 部署方法,例如部署到可用性区域或邻近放置组 (PPG)。
- VM 属性,例如加速网络或大小更改。
- 虚拟网络配置,例如路由或筛选更改。
在进行受控更改之前,始终将新的测试结果与基线或最新测试结果进行比较。
每当观察或部署更改时,请重复测试。
使用以下过程通过 Latte(用于 Windows)或 SockPerf(用于 Linux)安装和测试网络延迟。
在发送方和接收方 Linux VM 上,运行以下命令来准备 SockPerf,具体取决于 Linux 发行版。
Ubuntu:
#Ubuntu - Install Git and other helpful tools sudo apt-get install build-essential -y sudo apt-get install git -y -q sudo apt-get install -y autotools-dev sudo apt-get install -y automake sudo apt-get install -y autoconf sudo apt-get install -y libtool sudo apt update sudo apt upgrade
SUSE:
#SUSE - Install Git and other helpful tools sudo zypper install gcc sudo zypper install git sudo zypper install gcc-c++ sudo zypper install ncurses-devel sudo zypper install automake sudo zypper install autoconf sudo zypper install libtool sudo zypper install make
运行以下命令来复制、编译和安装 SockPerf:
#Bash - all distros
#From bash command line (assumes Git is installed)
git clone https://github.com/mellanox/sockperf
cd sockperf/
./autogen.sh
./configure --prefix=
#make is slow, may take several minutes
make
#make install is fast
sudo make install
SockPerf 安装完成后,在接收方 VM 上启动 SockPerf。 可输入任意可用端口号。 以下示例使用端口
12345
。 将10.0.0.4
的示例 IP 地址替换为接收方 VM 的 IP 地址。#Server/Receiver for IP 10.0.0.4: sudo sockperf sr --tcp -i 10.0.0.4 -p 12345
现在接收方正在侦听,请在发送方或客户端计算机上运行以下命令,将数据包发送到侦听端口上的接收方,在本例中为
12345
。#Client/Sender for IP 10.0.0.4: sockperf ping-pong -i 10.0.0.4 --tcp -m 350 -t 101 -p 12345 --full-rtt
- 选项
-t
设置测试时间(以秒为单位)。 大约 100 秒就足以返回具有代表性的结果。 -
-m
表示消息大小(以字节为单位)。 平均数据包通常为 350 字节消息大小。 可以调整大小以更准确地表示 VM 的工作负载。
- 选项
等待结果。 根据虚拟机之间的距离,迭代次数会有所不同。 考虑先运行大约五秒的短时间测试以使测试成功,然后再运行较长时间的测试。
- 使用 Azure 邻近放置组减少延迟。
- 优化 Azure 虚拟机网络吞吐量。
- 分配虚拟机网络带宽。
- 测试带宽和吞吐量。
- 有关 Azure 虚拟网络的详细信息,请参阅 Azure 虚拟网络常见问题解答。