网络PPS(每秒传输数据包数)、网络带宽和网络时延是衡量云服务器网络性能的重要指标,测试网络性能可以帮助您提高网络的稳定性、延迟和吞吐量,从而为您提供更好的用户体验和应用程序性能。本文为您介绍如何使用Netperf和sockperf工具测试ECS实例的网络PPS、网络带宽和网络时延,您可以根据测试结果评估ECS实例的网络性能。
前提条件
-
已创建符合测试场景规格要求的ECS实例。具体操作,请参见自定义购买实例。
-
在同一测试场景下,所有ECS实例必须属于同一个VPC、同一台交换机和同一个安全组。
准备环境
重要
-
强烈建议您在新购买的无数据的ECS实例上使用工具测试网络性能,避免造成数据丢失。
-
实例规格指标均在测试数据环境下验证获得。在真实场景中,受实例负载、组网模型等其他因素的影响,实例的性能表现可能存在差异,请您以实际情况为准。
做网络性能测试(网络PPS、网络带宽和网络时延)的ECS实例作为本次的测试机和辅助测试机。测试机可作为Netperf或sockperf工具测试中的Client端(发送端)或Server端(接收端)。辅助测试机也可作为Netperf或sockperf工具测试中的Client端(发送端)或Server端(接收端),与测试机之间建立控制连接,传递测试配置相关的信息。
不同测试场景下,ECS实例的示例规格及推荐数量如下表所示。
-
测试ECS实例的网络PPS
网络PPS小于600万
测试示例
测试机
辅助测试机
实例规格
ecs.g7.large
ecs.g7.large
镜像
Alibaba Cloud Linux 3
Alibaba Cloud Linux 3
数量
1
1
网络PPS大于600万小于2000万
测试示例
测试机
辅助测试机
实例规格
ecs.g7.16xlarge
ecs.g7.16xlarge
镜像
Alibaba Cloud Linux 3
Alibaba Cloud Linux 3
数量
1
3
网络PPS大于2000万
测试示例
测试机
辅助测试机
实例规格
ecs.g7.32xlarge
ecs.g7.32xlarge
镜像
Alibaba Cloud Linux 3
Alibaba Cloud Linux 3
数量
1
3
-
测试ECS实例的网络带宽和网络时延
说明
测试ECS实例的网络带宽和网络时延对网络PPS大小没有要求,可任意选择实例规格进行测试,本文以如下规格为例进行测试。
测试示例
测试机
辅助测试机
实例规格
ecs.g7.large
ecs.g7.large
镜像
Alibaba Cloud Linux 3
Alibaba Cloud Linux 3
数量
1
1
测试网络PPS
网络PPS小于600万
-
分别远程连接测试机和辅助测试机。
关于连接方法的介绍,请参见实例连接概述。
-
分别在测试机和辅助测试机上执行以下命令,下载Netperf。
wget https://benchmark-packages.oss-cn-qingdao.aliyuncs.com/netperf-2.7.0.tar.gz
-
分别在测试机和辅助测试机上执行以下命令,安装Netperf和sar监控工具。
-
执行以下命令,解压Netperf包。
sudo yum install -y gcc autoconf automake libtool sysstat tar -zxvf netperf-2.7.0.tar.gz
-
执行以下命令,查询
gcc
版本号。gcc -v 2>&1
-
若测试机和辅助测试机安装的
gcc
版本高于10版本,则您需要继续执行下述操作,以确保gcc
可以正常编译。否则,请忽略此步骤。-
执行以下命令,修改
nettest_omni.c
文件。cd netperf vim src/nettest_omni.c
-
按i键进入编辑模式,手动删除
nettest_omni.c
文件中的声明变量内容。声明变量内容如下所示:
/* different options for the sockets */ int loc_nodelay, /* don't/do use NODELAY locally */ rem_nodelay, /* don't/do use NODELAY remotely */ loc_sndavoid, /* avoid send copies locally */ loc_rcvavoid, /* avoid recv copies locally */ rem_sndavoid, /* avoid send copies remotely */ rem_rcvavoid; /* avoid recv_copies remotely */
-
修改完成后按Esc键,并输入
:wq
后按下回车键,保存并退出。
-
-
执行以下命令,安装Netperf和sar监控工具。
cd netperf sudo ./configure sudo make && sudo make install
-
-
在测试机上执行以下命令,启动64个netserver服务。
#!/bin/bash for j in `seq 64`; do netserver -p $[16000+j] > server_$[16000+j].netperf > /dev/null 2>&1 & done
-
在测试机上执行以下命令,查询测试机的私网IP地址。
ifconfig || ip addr
-
在辅助测试机上执行以下命令,向测试机输入流量。
#!/bin/bash server_ip= for j in `seq 64`; do port=$[16000+j] netperf -H ${server_ip} -l ${run_time:-300} -t UDP_STREAM -p $port -- -m 1 -D > /dev/null 2>&1 & done
需替换为上一步查询的实际测试机的私网IP地址,示例如下图所示。
-
在测试机上执行以下命令,测试网络流量。
sar -n DEV 1
在测试结果中查看
rxpck/s
列的数据值,rxpck/s
表示该测试机每秒钟接收的数据包总数。如下图所示,示例中测试机每秒钟接收到的数据包平均数约为94万。
网络PPS大于600万小于2000万
-
分别远程连接测试机和辅助测试机。
关于连接方法的介绍,请参见实例连接概述。
-
分别在3台辅助测试机和1台测试机上执行以下命令,安装sockperf。
sudo yum install -y autoconf automake libtool gcc-c++ cd /opt sudo wget https://github.com/Mellanox/sockperf/archive/refs/tags/3.8.tar.gz sudo tar -zxf 3.8.tar.gz cd sockperf-3.8/ sudo ./autogen.sh sudo ./configure sudo make -j `cat /proc/cpuinfo| grep process | wc -l` sudo make install
-
在测试机上执行以下命令,查询测试机的私网IP地址。
ifconfig || ip addr
-
分别在3台辅助测试机上执行以下命令,向测试机输入流量。
server_ip="" threads=64 msg_size=14 run_time=60 basePort=6666 for((i=0;i&1 & done
其中
是实际测试机的私网IP地址,
run_time
是输入流量的时间,请您根据实际情况修改。 -
分别在3台辅助测试机和1台测试机上执行以下命令,测试网络流量。
sar -n DEV 1
在测试机上查看
rxpck/s
列的数据值,rxpck/s
表示该测试机每秒钟接收到的数据包。如下图所示,示例中测试机每秒钟接收到的数据包数约为1200万。
网络PPS大于2000万
-
分别远程连接测试机和辅助测试机。
关于连接方法的介绍,请参见实例连接概述。
-
分别在3台辅助测试机和1台测试机上执行以下命令,安装sockperf。
sudo yum install -y autoconf automake libtool gcc-c++ cd /opt sudo wget https://github.com/Mellanox/sockperf/archive/refs/tags/3.8.tar.gz sudo tar -zxf 3.8.tar.gz cd sockperf-3.8/ sudo ./autogen.sh sudo ./configure sudo make -j `cat /proc/cpuinfo| grep process | wc -l` sudo make install
-
在测试机上执行以下命令,绑定中断。
a=$(cat /proc/interrupts | grep virtio2-input | awk -F ':' '{print $1}') cpu=0 for irq in $a; do echo $cpu >/proc/irq/$irq/smp_affinity_list let cpu+=2 done
-
在测试机上执行以下命令,查询测试机的私网IP地址。
ifconfig || ip addr
-
分别在3台辅助测试机上执行以下命令,向测试机输入流量。
server_ip="" threads=64 msg_size=14 run_time=60 basePort=6666 for((i=0;i&1 & done
其中
是实际测试机的私网IP地址,
run_time
是输入流量的时间,请您根据实际情况修改。 -
分别在3台辅助测试机和1台测试机上执行以下命令,测试网络流量。
sar -n DEV 1
在测试机上查看
rxpck/s
列的数据值,rxpck/s
表示该测试机每秒钟接收到的数据包。如下图所示,示例中测试机每秒钟接收到的数据包数约为2000万。
测试网络带宽
-
分别远程连接测试机和辅助测试机。
关于连接方法的介绍,请参见实例连接概述。
-
分别在测试机和辅助测试机上执行以下命令,下载Netperf。
wget https://benchmark-packages.oss-cn-qingdao.aliyuncs.com/netperf-2.7.0.tar.gz
-
分别在测试机和辅助测试机上执行以下命令,安装Netperf和sar监控工具。
-
执行以下命令,解压Netperf包。
sudo yum install -y gcc autoconf automake libtool sysstat tar -zxvf netperf-2.7.0.tar.gz
-
执行以下命令,查询
gcc
版本号。gcc -v 2>&1
-
若测试机和辅助测试机安装的
gcc
版本高于10版本,则您需要继续执行下述操作,以确保gcc
可以正常编译。否则,请忽略此步骤。-
执行以下命令,修改
nettest_omni.c
文件。cd netperf vim src/nettest_omni.c
-
按i键进入编辑模式,手动删除
nettest_omni.c
文件中的声明变量内容。声明变量内容如下所示:
/* different options for the sockets */ int loc_nodelay, /* don't/do use NODELAY locally */ rem_nodelay, /* don't/do use NODELAY remotely */ loc_sndavoid, /* avoid send copies locally */ loc_rcvavoid, /* avoid recv copies locally */ rem_sndavoid, /* avoid send copies remotely */ rem_rcvavoid; /* avoid recv_copies remotely */
-
修改完成后按Esc键,并输入
:wq
后按下回车键,保存并退出。
-
-
执行以下命令,安装Netperf和sar监控工具。
cd netperf sudo ./configure sudo make && sudo make install
-
-
在测试机上执行以下命令,启动64个netserver服务。
#!/bin/bash for j in `seq 64`; do netserver -p $[16000+j] > server_$[16000+j].netperf > /dev/null 2>&1 & done
-
在测试机上执行以下命令,查询测试机的私网IP地址。
ifconfig || ip addr
-
在辅助测试机上执行以下命令,向测试机输入流量。
#!/bin/bash server_ip= for j in `seq 64`; do port=$[16000+j] netperf -H ${server_ip} -l ${run_time:-300} -t TCP_STREAM -p $port -- -D > /dev/null 2>&1 & done
需替换为上一步查询的实际测试机的私网IP地址,示例如下图所示。
-
在测试机上执行以下命令,测试网络带宽。
sar -n DEV 1
在测试结果中查看
rxkB/s
列的数据值,rxkB/s
表示该测试机每秒钟接收的数据包的大小,单位为千字节(KB)。与带宽(kbps)转换关系为:带宽(kbps)= 千字节数(rxkB/s)* 8。示例如下图所示。
测试网络时延
-
分别远程连接测试机和辅助测试机。
关于连接方法的介绍,请参见实例连接概述。
-
分别在测试机和辅助测试机上执行以下命令,安装
sockperf
。sudo yum install -y autoconf automake libtool gcc-c++ cd /opt sudo wget https://github.com/Mellanox/sockperf/archive/refs/tags/3.8.tar.gz sudo tar -zxf 3.8.tar.gz cd sockperf-3.8/ sudo ./autogen.sh sudo ./configure sudo make -j `cat /proc/cpuinfo| grep process | wc -l` sudo make install
-
在测试机上执行以下命令,查询测试机的私网IP地址。
ifconfig || ip addr
-
在测试机上执行以下命令,启动服务。
sockperf sr --tcp --daemonize
-
在辅助测试机上执行以下命令,向测试机输入流量。
cd sockperf pp -i --tcp -t 30 -m 14 --full-log=result.json
需替换为上一步查询的实际测试机的私网IP地址。
查看结果数据,示例如下图所示。
-
以
avg-latency
开头的结果数据表示平均时延,单位为us。 -
以
percentile 99.000
开头的结果数据表示99分位时延,单位为us。
-
关于阿里云ecs服务器的内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家
阿里云企业补贴进行中: 马上申请
腾讯云限时活动1折起,即将结束: 马上收藏
同尘科技为腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠
本文来自投稿,不代表新手站长_郑州云淘科技有限公司立场,如若转载,请注明出处:https://www.cnzhanzhang.com/9327.html