飞腾OS下的LTP和Cyclictest压力测试

飞腾Phytium OS下的LTP和Cyclictest压力测试流程

声明:本网络文章不包含相关方NDA协议所涉及的代码、镜像、文档资料。

参考链接:

  1. LTP Github仓库
    LTP官方仓库,提供LTP最新Release版,给出最新、最全面的LTP使用步骤和技术细节。
  2. LTP-基于ARM架构的openEuler系统执行LTP测试框架用例
    相比链接1,增加了第1步(安装依赖包)。飞腾OS用apt指令安装包(而非链接中的dnf)。
  3. Linux 实时性能测试工具——Cyclictest

LTP(Linux Test Project)测试流程

总体流程与官方仓库步骤一致,区别在于飞腾OS可能需要先用apt安装autoconf依赖包。

(1)安装依赖包

sudo apt install gcc git make pkgconf autoconf automake bison flex m4 -y

注:参考链接2中还安装了kernel-headers和glibc-headers,经测试,飞腾OS下无需安装仍能正常运行(安装则提示没有此包)。上述大多数依赖是已有的,主要是安装autoconf。

(2)下载ltp代码

git clone https://github.com/linux-test-project/ltp.git

(3)进行基础配置

cd ltp
make autotools
./configure

注:如果没有第1步安装autoconf的步骤,可能会报make: autoheader: No such file or directory的错误。

(4)安装ltp

make
make install

安装完成后,ltp被安装到 /opt/ltp 目录下,如下:

[root@localhost ltp]# ls /opt/ltp/
bin  IDcheck.sh  metadata  runltp  runtest  scenario_groups  share  testcases  testscripts  ver_linux  Version
[root@localhost ltp]#

(5)进行测试

可进行部分测试(执行1个测试套/测试脚本),也可以执行所有测试脚本:

执行一个测试套

如下 syscalls 是一个测试套,其文件在 runtest 目录下:

./runltp -f syscalls

执行一个测试脚本

如下,执行测试套 syscalls 中的一个脚本 madvise:

./runltp -f syscalls -s madvise

执行所有测试脚本

./runltp

经实测,飞腾OS运行LTP全部测试脚本大约用时6h15min。

Cyclictest测试流程

总体参考链接3。第6步有区别(先安装、配置apt-file再做make),具体见下:

Cyclictest的安装

(1) 拷贝Cyclictest的Git仓库

#   git clone git://git.kernel.org/pub/scm/linux/kernel/git/clrkwllms/rt-tests.git

(2) 进入git仓库

#  cd rt-tests 

(3)创建一个分支(比如起名testing)

#  git branch testing    

(4)转到testing分支

之后步骤都不会对主分支有影响,这是在电脑上使用 git 仓库的常用方法:

#  git checkout testing  

(5)查看当前在哪个分支

#  git branch
  master
* testing

(6)安装libnuma-dev包

建议使用apt-file检测文件缺失/错误并补全,指令如下:

#  sudo apt install apt-file             // 安装apt-file
#  sudo apt-file update                       // 类似apt, apt-file也需要根据系统配的源来更新一个库
#  sudo apt install libnuma-dev           // 使用apt 安装libnuma-dev 包

如果不执行此步,可能会有缺失 numa.h 的错误提示。

(7)make编译

#  make    

Cyclictest的使用

下面给出3组推荐参数的测试命令,并给出飞腾OS下的测试结果:

./cyclictest –p 80 –t5 –n

默认创建5个SCHED_FIFO策略的realtime线程,优先级80,运行周期是1000,1500,2000,2500,3000微秒。结果如下:
img

./cyclictest --smp -p95 -m

运行在一个四核系统,在所有内存都锁定的情况下,每个内核运行一个测量线程,它们每一个SCHED_FIFO优先级是95,锁定内存分配。结果如下:
img

./cyclictest -t1 -p 80 -n -i number -l10000

线程优先级为80,不同的时间间隔下的结果,其中,C:9397计数器。线程的时间间隔每达到一次,计数器加1。结果如下:
img

输出结果的解释如下:

缩写 标签 描述
T 线程(Thread) 线程索引和线程ID
P 优先级(Priority) 实时线程优先级
I 间隔(Interval) 测量延迟的线程的预期唤醒间隔(以微秒为单位)
C 计数(Count) 延迟测量的次数,即迭代计数
Min 最小值 测量到的最小延迟(以微秒为单位)
Act 实际值(Actual) 最近完成迭代期间测量到的延迟(以微秒为单位)
Max 最大值 测量到的最大延迟(以微秒为单位)

使用cyclictest --help可详细查看输入输出参数的含义。

题外话

  1. 想在飞腾OS上安装arm向日葵,尝试了下面的链接,没有成功:https://guojizhuang.lanzoui.com/igS81q0ld3i
  2. 测试过程中避免自动锁屏息屏造成的影响,可用下列指令关闭自动锁屏息屏:
关闭息屏
gsettings set org.gnome.desktop.session idle-delay 0

最后 0 是代表关闭锁屏,将 0 替换为 60 代表 60 s后自动息屏,以此类推。

关闭锁屏
gsettings set org.gnome.desktop.screensaver lock-enabled false
posted @   Digitzh  阅读(541)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示