【经验分享】ARM Linux-RT内核实时系统性能评估工具

【经验分享】ARM Linux-RT内核实时系统性能评估工具


前言

最近在研究Linux-RT实时系统,介绍下常用的实时系统的性能评估工具。


下载和编译方法

用git下载

c 复制代码
git clone git://git.kernel.org/pub/scm/utils/rt-tests/rt-tests.git

或者下载我上传的工具包即可,已处理arm32位linux操作系统可用。

交叉编译

c 复制代码
make CC=arm-linux-gnueabihf-

在编译目录下会生成如下常用工具。

常用工具介绍

1、cyclictest:用于测量和分析操作系统内核中的定时调度延迟,特别是在实时内核中。它可以帮助衡量系统响应的实时性。

在终端运行如下命令

c 复制代码
cyclictest -t 4 -a -p 99 -m

参数解释:运行 4 个线程,绑定到当前可用的 CPU 核,设置优先级为 99,同时锁定内存,适合测试实时性能。测试结果如下:

c 复制代码
输出结果含义如下: 
T: 0 表示序号为0的线程 
P: 99表示线程优先级为99 
C: 80631表示计数器。线程的时间间隔每达到一次,计数器加1 
I: 1000表示时间间隔为1000微秒(us) 
Min: 表示最小时延(us) 
Act: 表示最近一次的时延(us) 
Avg:表示平均时延(us) 
Max: 表示最大时延(us)

2、hackbench:一种用于测试调度器性能的基准测试工具,模拟消息传递负载以评估系统的调度效率。

在终端输入命令

c 复制代码
hackbench -l 10000

参数解释:表示运行 10,000 次消息传递的循环。

工具会显示完成测试所需的时间(单位为秒),数值越小,系统调度器性能越好。结果如下:

3、hwlatdetect:用于检测硬件延迟的工具,可以帮助发现系统中由于硬件原因导致的延迟问题。

4、pi_stress:测试优先级反转的工具,通过创建多个线程来验证实时环境下的优先级反转处理是否有效。

c 复制代码
pi_stress --duration=10

参数解释:

--duration=10:测试运行 10 秒。

输出结果:工具通过模拟优先级反转场景,验证实时系统是否正确处理了优先级继承,输出相关统计信息。

5、pip_stress:与 pi_stress 类似,专注于测试优先级继承协议的有效性。

6、pmqtest:用于测试 POSIX 消息队列的实时性能,帮助开发者评估消息队列的延迟和吞吐量。

c 复制代码
pmqtest /dev/ttyS2

参数解释:/dev/ttyS2为模拟的 POSIX 消息队列设备文件。

输出结果:工具会显示消息队列的最大延迟、最小延迟和平均延迟。

7、ptsematest:测试 POSIX 信号量的延迟和性能,评估在多任务环境下信号量的实时性能。

c 复制代码
ptsematest -a

参数解释:-a:将信号量测试运行在系统的所有 CPU 核上。

输出结果:工具会输出信号量的最大延迟、最小延迟和平均延迟,用于评估信号量的实时性能。

8、rt-migrate-test:用于测试和分析实时任务在多个 CPU 之间的迁移性能。

在终端运行如下命令

c 复制代码
rt-migrate-test -p 80

参数解释:设置测试任务的优先级为 80

输出结果如下:

c 复制代码
45:表示当前的测试阶段编号(或循环编号)。
后面的数值(如 20070、43、36...):表示迁移延迟(以微秒为单位)或其他相关性能指标。
len:迁移任务的长度或完成迁移所需的时间。
loops:表示任务迁移的循环次数。
Parent pid:父进程的进程 ID,是管理这些任务的主线程。
Task X (prio Y) (pid Z):
Task X:表示测试的第 X 个任务。
prio Y:任务的实时优先级(越低表示优先级越高,通常范围是 0-99,优先级 80、81 表示较高优先级)。
pid Z:任务对应的进程 ID。
Max:任务迁移的最大延迟(以微秒为单位)。
Min:任务迁移的最小延迟(以微秒为单位)。
Tot:任务迁移的总延迟,即所有迁移过程的延迟总和。
Avg:任务迁移的平均延迟。

9、sendme:通常用于发送和接收信号的测试,帮助评估信号传递机制的实时性能。

10、signaltest:用于测试信号处理的延迟和性能,评估信号在系统中的传递效率。

在终端输入命令:

c 复制代码
signaltest -l 100

参数说明:-l 100 测试100个循环

输出结果:显示信号传递的延迟数据。

11、sigwaittest:测试 sigwait() 的性能,分析信号等待机制在实时系统中的效率。

在终端输入命令:

c 复制代码
sigwaittest 

测试结果如下:

12、svsematest:测试 System V 信号量的性能,帮助评估此类型信号量的实时性能。

在终端输入命令:

c 复制代码
svsematest -t 10

参数解释:-t 10:测试运行 10 秒。

测试结果:输出信号量的最大延迟、最小延迟和平均延迟数据。


总结

本文简要介绍了Linux-RT实时系统性能评估工具及实际测试方法,希望对你有所帮助。

相关推荐
路溪非溪13 分钟前
关于Linux内核中头文件问题相关总结
linux
Lovyk3 小时前
Linux 正则表达式
linux·运维
Fireworkitte4 小时前
Ubuntu、CentOS、AlmaLinux 9.5的 rc.local实现 开机启动
linux·ubuntu·centos
sword devil9004 小时前
ubuntu常见问题汇总
linux·ubuntu
ac.char4 小时前
在CentOS系统中查询已删除但仍占用磁盘空间的文件
linux·运维·centos
淮北也生橘126 小时前
Linux的ALSA音频框架学习笔记
linux·笔记·学习
造梦师阿鹏6 小时前
004.从 API 裸调到 LangChain
经验分享·ai·大模型·ai技术·大模型应用开发
华强笔记9 小时前
Linux内存管理系统性总结
linux·运维·网络
十五年专注C++开发9 小时前
CMake进阶: CMake Modules---简化CMake配置的利器
linux·c++·windows·cmake·自动化构建
phoenix098110 小时前
ansible部署lnmp-allinone
linux·运维·ansible