【浪潮信息KeyarchOS (KOS)】手把手用hackbench:从线程压力测试到调度器性能优化

目录

1 概述

2 安装准备

2.1 操作系统环境

2.2 工具版本

3 编译安装

4 执行测试

5 结果分析以及参数建议


1 概述

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

Hackbench 是内核调度程序的基准测试和压力测试,也是 rt-tests 套件的一部分,通过线程的重复设置和拆卸来强调内存子系统的某些部分,它在一定程度上强调进程间通信(例如本地套接字、管道),可用于生成系统负载,同时测量延迟。

2 安装准备

2.1 操作系统环境

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

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

2.2 工具版本

Hackbench 2.3

3 编译安装

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

打开终端,首先创建一个hackbench的文件夹用来存放源码文件:

cd /home

mkdir Hackbench

cd /home/Hackbench

接下来,拉取Hackbench的源码文件。使用以下命令将源码文件拉取到本地:

git clone https://github.com/Ansen88/hackbenchv2.3.git

编译:

cd /home/hackbench/hackbenchv2.3

gcc -g -Wall -O2 -o hackbench hackbench.c -lpthread

验证安装:

./hackbench -pTl 4000

出现以下结果即为安装完成,可以使用了:

将hackbench复制到/usr/bin:

cp ./hackbench /usr/bin/

接下来就可以直接在终端使用hackbench了。

4 执行测试

参数说明:

“-f --fds=NUM number of fds” —— 定义每个子进程应该使用多少文件描述符,实际是该值的2倍(发送和接收各用 NUM 个数量的描述符)

“-F --fifo use SCHED_FIFO for main thread” ——主线程使用 SCHED_FIFO 调度策略

“-g --groups=NUM number of groups to be used” —— 定义启动多少组发送者和接受者

“-l --loops=LOOPS how many message should be send” —— 每个发送者/接收者对 应该发送多少条信息

“-p --pipe send data via a pipe” —— 使用管道而不是套接字发送数据

“-s --datasize=SIZE message size” —— 设置每条信息中发送的数据量

“-T --threads use POSIX threads” —— 发送/接收者都是线程进行操作

“-P --process use fork (default)” —— 发送/接收者都是进程

生成负载:

hackbench <num_groups> <num_processes>

<num_groups> 是要创建的进程组数量, <num_processes> 是每个进程组中的进程数量。也可以在命令的末尾添加&,可以使Hackbench在后台运行。

使用hackbench测试网络性能:

首先我们打开终端,来使用hackbench运行5个进程组,每个进程组都包含一个管道,每个进程组中运行500个线程:

./hackbench --pipe 5 --thread 500

其中--pipe 5表示运行5个进程组,每个进程组包含一个管道用于模拟进程间的通信,这个参数控制了并发运行的进程组数量;--thread 500表示每个进程组中运行500个线程,每个线程在进程组的管道中发送和接收数据,模拟并发的读写操作。

我们来测试该负载下系统的性能:

也可以将thread换成process,表示每个进程组中运行500个进程:

./hackbench --pipe 5 --process 500

或者以套接字形式,去掉参数--pipe:

./hackbench 5 --process 500

通过不同的参数我们得到的结果也不一样,我们可以在相同配置环境下的不同系统中执行,来对比系统间的性能情况

5 结果分析以及参数建议

Hackbench参数调优:

-f参数:定义每个子进程应该使用多少文件描述符,实际是该值的2倍(发送和接收各用 NUM 个数量的描述符)。给的数值越大结果时间越长,不定义的话默认为40,根据测试指标给定对应值即可

-F参数:主线程使用 SCHED_FIFO 调度策略,对结果影响不大,测试时需要使用该策略的话加上即可。

-g参数:定义启动多少组发送者和接受者。给的数值越大结果时间越长,不定义的话默认为10,根据测试指标给定对应值即可。

-l参数:每个发送者/接收者对 应该发送多少条信息。给的数值越大结果时间越长,根据测试指标来定义即可。

-p参数:使用管道而不是套接字发送数据。该参数在使用时需要加上,可以缩短一半时间。

-s参数:设置每条信息中发送的数据量,给的数值越大结果时间越长,根据测试指标来定义即可。

-T参数:发送/接收者都是线程进行操作。该参数对结果影响不大,只是以线程方式,根据测试指标决定是否要加。

-P参数:发送/接收者都是进程。该参数对结果影响不大,只是以进程方式,根据测试指标决定是否要加。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值