Linux 内核实时性测试

kernel 实时性测试

  • 1、实时补丁的移植
  • 2、实时测量工具(cyclictest )移植
  • 3、cyclictest 参数介绍
  • 4、实时测量结果分析

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

  • Linux 系统中不同内核版本的实时补丁包
  • 关于Linux安装RT-PREEMPT实时补丁——参考文章
  • cyclictest 工具源码下载地址
  • RTLinux补丁以及cyclictest

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 )移植

Linux 内核实时性测试_第1张图片

移植步骤:

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 参数介绍


Linux 内核实时性测试_第2张图片

./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

打补丁前的测试结果: 


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

打补丁后的测试结果:


在这里插入图片描述
Linux 内核实时性测试_第3张图片

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



你可能感兴趣的:(测试,编译错误与调试,linux,内核)