Linux 内核实时性测试

实时补丁和测试工具下载链接:

1、实时补丁的移植

  Linux内核版本和 rt 版本尽量保持一致 , 如果实在找不到对应Linux内核版本的 rt 补丁包,可用最近补丁替代,再根据 make uImage 提出的错误做适当修改。(不同Linux内核的实时性有一定的差别,但总体差别不大)
    Linux内核版本为:linux-4.19.94
    rt 版本为:patch-4.19.94-rt38.patch

科学patch具体步骤参考文章


移植步骤: (提前设置好内核的编译器和架构)

1. cp patch-4.19.94-rt38.patch /home/zsj	# 拷贝 rt 补丁包到 /home/zsj 目录
2. cd /home/zsj/linux-4.19.94   			# 进入内核源码目录
3. patch -p1 <../patch-4.19.94-rt38.patch   # 给内核打入实时补丁包
4. make menuconfig                          # 进入内核的图像化配置界面
5. /PREEMPT_RTB								# 搜素 rt 选项的位置,并进入该位置,勾选 Fully Preemptible Kernel(RT) 后,保存退出
6. make uImage	-j4							# 编译 rt 内核
7. # 替换到原有的 uImage 后,重启即可
8. uname -a									# 检查 rt 移植是否成功


2、实时测量工具(cyclictest )移植

在这里插入图片描述

移植步骤:

1. 下载 rt-tests-1.0.tar.gz 源码,放入 /home/zsj 目录

2. tar xvf rt-tests-1.0.tar.gz			# 解压源码
3. cd rt-tests-1.0						# 进入该目录
4. vim Makefie   						# 修改 Makefile 下的交叉编译器
5. make cyclictest NUMA=0				# 编译后生成 cyclictest, 再将该工具拷贝到开发板,并赋予可执行权限即可


3、cyclictest 参数介绍


在这里插入图片描述

./cyclictest -t1 -p 80 -n -i 10000 -l 10000  		# 单线程测试
./cyclictest -t4 -p 80 -n -i 10000 -l 10000  		# 多线程测试

	-t		# 运行的线程数量
	-p		# 给 cyclictest 赋优先级 80
	-n		# 使用 nanosleep 而不是简单的 sleep
	-i		# 线程的间隔为 10000us ,默认为 1000us
	-l		# 循环的数量,默认无限循环


4、实时测量结果分析

Note:
  实际项目过程中,需要长时间(一天以上)测量系统的实时性,来检测系统任务的抖动时间。故使用以下命令:./cyclictest -t1 -p 99 -n -i 10000

打补丁前的测试结果: 


在这里插入图片描述
在这里插入图片描述

打补丁后的测试结果:


在这里插入图片描述
在这里插入图片描述

结果分析:
  打补丁后,系统的实时能力有明显的提高,但对于高实时要求的检测或者控制系统而言,其实时效果远远不能满足严格的实时要求。



  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值