【浪潮信息KeyarchOS (KOS)】手把手用Sockperf:多维度评估网络吞吐量和延迟的神器

目录

1 概述

2 安装准备

2.1 操作系统环境

2.2 软件版本

3 编译安装

4 执行测试

4.1 简单使用

4.2 进阶使用

5 注意事项

6 常见问题

7 参数建议与结果分析


1 概述

浪潮信息KOS是浪潮信息基于Linux Kernel、OpenAnolis等开源技术自主研发的一款服务器操作系统,支持x86、ARM等主流架构处理器,性能和稳定性居于行业领先地位,具备成熟的 CentOS 迁移和替换能力,可满足云计算、大数据、分布式存储、人工智能、边缘计算等应用场景需求。详细介绍见官网链接https://www.ieisystem.com/kos/product-kos-xq.thtml?id=12126

Sockperf是一个网络性能测试工具,用于测量和评估TCP/IP网络的吞吐量和延迟。它是由软件开发者们使用C ++编写的,可以在Linux系统上运行。Sockperf通过创建大量的TCP连接,并在这些连接上执行请求-响应测试来测试网络性能。测试结果包括吞吐量、延迟、丢包率等指标,可以帮助开发人员和网络管理员评估网络的性能和稳定性,从而优化网络配置和调整。

Sockperf支持多种测试模式和选项,可以根据需求进行灵活配置。它可以用作网络应用程序开发、网络设备性能测试和网络性能调优的工具。不过需要注意的是,使用Sockperf进行测试时,需要确保测试环境和网络连接的稳定性,以获得准确的性能结果。

2 安装准备

2.1 操作系统环境

操作系统版本:KOS 5.8 sp2u1(5.10.134-17.2.2.kos5.x86_64)

测试架构:x86_64,8核4G虚拟机

2.2 软件版本

Sockperf 3.8

3 编译安装

要安装Sockperf,你可以按照以下步骤进行操作:

首先,确保你的系统是基于Linux的系统,比如Ubuntu、CentOS等。

打开终端,并使用以下命令安装必要的依赖项:

sudo yum install -y autoconf automake libtool gcc-c++

接下来,下载Sockperf的部署包。使用以下命令将部署包下载到本地:

cd /opt

wget https://github.com/Mellanox/sockperf/archive/refs/tags/3.8.tar.gz

如果出现以下报错:

在/etc/hosts中添加hosts:20.205.243.166 http://github.com

解压tar包:

tar -zxf 3.8.tar.gz

进入sockperf-3.8目录,执行autogen.sh脚本生成configure文件,并执行configure:

cd sockperf-3.8/

./autogen.sh

./configure

编译安装:

make -j `cat /proc/cpuinfo| grep process | wc -l`

make install

执行过程中没有报错即可,下面在测试机上启动服务,执行以下命令:

sockperf sr --tcp --daemonize

执行结果如下:

至此,安装过程完成。现在你可以在终端中运行sockperf命令来使用Sockperf进行网络性能测试了。使用sockperf --help命令可以查看Sockperf的命令行选项和使用方法。记得根据你的需求进行适当的配置和参数设置。

4 执行测试

4.1 简单使用

使用Sockperf进行网络性能测试时,你可以根据具体需求设置一些参数和选项。下面是一些常用的Sockperf使用说明:

服务器端设置:

启动Sockperf服务器端:`sockperf server`

可以使用`--port`参数指定服务器端口,默认为12321

客户端设置:

连接到Sockperf服务器端:`sockperf ping-pong --ip <服务器IP地址>`

使用`--ip`参数指定服务器的IP地址

使用`--port`参数指定服务器端口,默认为12321

可以使用`--events`参数指定要执行的测试次数,默认为1000次

可以使用`--msg-size`参数指定消息的大小,默认为64字节

可以使用`--throughput`参数指定带宽的大小,默认为0,表示不限制带宽

可以使用`--concurrency`参数指定并发连接数,默认为1

测试模式:

ping-pong模式(默认模式):使用`ping-pong`子命令进行测试,客户端和服务器端交替发送和接收消息。

rr(Request-Response)模式:使用`rr`子命令进行测试,客户端发送请求消息,服务器端接收并发送响应消息。

4.2 进阶使用

测试模式:

并发模式:使用`--parallel`参数指定并发连接数,默认为1。增加并发连接数可以模拟更高的负载情况。

多线程模式:使用`--threads`参数指定使用的线程数,默认为1。增加线程数可以加快测试速度。

带宽和速率控制:

通过`--throughput`参数设置带宽限制,例如`--throughput 1Gbps`可以限制带宽为1 Gbps。

通过`--rate`参数设置每秒发送的消息数限制,例如`--rate 10000`可以限制每秒发送10000条消息。

数据报大小:

通过`--msg-size`参数设置消息的大小,例如`--msg-size 256`表示将消息大小设置为256字节。

测试时间:

通过`--time`参数设置测试时间长度,例如`--time 10`表示测试将运行10秒钟。

指定日志文件:

通过`--log`参数可以指定保存测试结果的日志文件,例如`--log /path/to/logfile`。

高级选项:

通过使用`--tcp-info`参数可以获取关于TCP连接的更多详细信息。

通过`--histogram`参数可以输出延迟的分布直方图。

下面来演示一个简单的测试实例,使用pp模式测试测试机的网络时延:

在测试机上执行以下命令,查询测试机的私网IP地址。

ifconfig || ip addr

地址为图中红框标记的ip:

下面我们使用sockperf在辅助测试机上执行以下命令,向测试机输入流量:

sockperf pp -i <测试机私网IP地址> --tcp -t 30 -m 14 --full-log=result.json

<测试机私网IP地址>需替换为上一步查询的实际测试机的私网IP地址,--tcp表示使用tcp协议,-m表示消息大小,默认为14,-t表示运行时间,--full-log表示以CSV格式转储所有消息发送/接收时间的完整日志到result.json文件

此处实例为sockperf pp -i 192.168.217.132 --tcp -t 30 -m 14 --full-log=result.json,执行结果如下:

结果分析:

以avg-latency开头的结果数据表示平均时延,单位为us。

以percentile 开头的结果数据表示不同分位时延,单位为us,比如以percentile 99.000开头的结果数据表示99分位时延。

可以使用sockperf <模式> --help命令来查看对应模式的各种参数来个性化我们的测试,有关参数的翻译可以查看该文档https://ipcmen.com/sockperf

5 注意事项

测试网络稳定性:在进行性能测试之前,请确保你的网络连接是稳定的,并且没有其他网络活动或流量干扰。这可以确保你获得准确的测试结果。

跨网络测试:如果你要在不同的网络之间进行测试,请确保网络之间的连接是可靠和高速的。网络延迟和带宽限制可能会影响测试结果,并不一定代表真实的网络性能。

防火墙和端口配置:如果你在进行Sockperf测试时遇到连接问题,请确保服务器和客户端的防火墙设置允许通过测试所需的端口进行通信。默认情况下,Sockperf使用端口12321进行通信。

多次运行测试:为了确保测试的可靠性和一致性,建议多次运行测试,并计算平均值和标准差来获取更准确的性能结果。

6 常见问题

连接问题:

确保服务器和客户端之间的网络连通性,并检查防火墙设置,确保允许Sockperf使用的端口进行通信。

尝试使用不同的IP地址或域名进行连接,确保连接信息正确无误。

传输协议问题:

如果你选择使用UDP进行测试,请确保目标服务器和客户端都正确设置了UDP传输协议,以及相应的端口转发和设置。

带宽限制问题:

如果你设置了带宽限制,确保限制的值符合实际情况,并检查网络设备和连接以确保它们支持所需的带宽。

检查网络设备和路由器设置,确保没有其他因素对网络带宽进行限制,如限速、QoS等。

系统配置和资源问题:

检查服务器和客户端的系统配置,确保系统配置足够满足Sockperf的要求。包括网络适配器、内存、处理器等。

确保系统的负载较低,避免其他任务或进程对测试产生干扰。

客户端和服务器端版本不匹配:

确保服务器端和客户端使用的Sockperf版本是相同的,并且它们兼容。如果版本不匹配,可能会导致连接问题或测试结果受影响。

日志和错误信息:

检查Sockperf的日志输出和错误信息,这可能会给出有关连接问题或其他错误的提示。

如果使用`--log`参数指定了日志文件,请确保查看日志文件以获取更详细的信息。

7 参数建议与结果分析

要获得最佳的测试结果,需要根据你的具体需求和测试环境进行配置。例如,在评估系统的最大吞吐量时,你可以增加并发连接的数量;在测试实时性时,可以配置较低的延迟和禁用Nagle算法。还可以根据所使用的协议(TCP或UDP)以及网络条件进行合理的调整。

此外,了解你所测试的应用程序的特点、网络拓扑以及硬件配置等也是配置Socketperf参数的关键。根据具体情况进行试验和优化,通过多次测试和结果分析来选择最佳的参数配置。

下面为经过大量测试数据得出的参数分析:

Ping-Pong(pp模式)(测试点对点的延迟性能):

-t参数:运行时长,单位为秒,对结果几乎没有影响,差距在0.x us,运行时长越短结果越好,我们默认配置为30

-m参数:消息大小,默认为14,最小也是14,配置的越小结果越好,所以我们这里直接用最小的14

--tcp参数:该参数是指定使用tcp协议进行测试,优点是稳定,但测试结果延迟会大一些,所以我们去掉这个参数直接用默认的udp

-b参数:用于指定发送和接收的数据大小。这是可选参数,默认为 1 字节,配置越小结果越好,所以我们这里用默认的1,有测试需求的话可以根据需求自定义发送和接收的数据大小

--tcp-avoid-nodelay参数:停止/立即开始传送TCP消息(启用/禁用Nagel),默认为禁用,该参数对结果没有影响,默认禁用即可

--tcp-skip-blocking-send参数:启用非阻塞发送操作(默认为OFF),该参数对结果没有影响,默认禁用即可。

--mc-loopback-enable参数:启用mc环回(默认禁用),该参数对结果没有影响,默认禁用即可

--mc-ttl参数:限制消息的生存期(默认为2),该参数对结果没影响,默认即可。

--nonblocked参数:打开非阻塞套接字,使用该参数会使结果慢一些,默认不加。

--dontwarmup参数:启动时不发送热身消息,该参数对结果影响微乎其微,可以默认不加。

所以我们在使用pp模式时可以参照以下步骤:

我们启动时使用默认udp协议启动:

sockperf sr --daemonize

关闭服务器防火墙:

systemctl stop firewalld

测试时使用下面的参数及参数值进行测试:

sockperf pp -i 127.0.0.1 -t 30 -m 14 --full-log=result.json

Under-load(ul模式)(进行负载测试下的延迟测试):

参数建议与pp模式基本一致,参照pp模式的参数建议即可,该模式的结果不如pp模式好

命令建议如下:

sockperf ul -i 127.0.0.1 -t 30 -m 14 --full-log=result.json

Throughput(tp模式)(用于评估网络传输的数据吞吐量性能,通过发送大量的数据来测试网络的传输速度):

-t参数:运行时长,单位为秒,运行时间与测出的吞吐量并无影响,时间长短测出的结果基本差不多,所以我们默认配置为30。

-m参数:消息大小,默认为14,最小也是14,这里配置的越大,结果越大,根据测试指标配置对应的值即可。

--mps参数:指定每秒发送的数据包数。可以通过增加或减少此值来调整发送速率,默认为10000,我们这里指定--mps=max调到最大即可。

即使用tp模式时使用以下命令:

sockperf tp -i 127.0.0.1 -t 30 -m 根据测试指标配置 --mps=max

总结如下:

使用sockperf时可根据你关注的性能指标与测试要求,测试网络的延迟性能就使用sockperf的pp模式,测试网络的数据吞吐量就使用sockperf的tp模式,参数参照上面的参数建议即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值