kernel 实时性测试
- 1、实时补丁的移植
- 2、实时测量工具(cyclictest )移植
- 3、cyclictest 参数介绍
- 4、实时测量结果分析
实时补丁和测试工具下载链接:
- Linux 系统中不同内核版本的实时补丁包
- 关于Linux安装RT-PREEMPT实时补丁——参考文章
- cyclictest 工具源码下载地址
- Cyclictest 的使用与分析——参考文章
1、实时补丁的移植
Linux内核版本和 rt 版本尽量保持一致 , 如果实在找不到对应Linux内核版本的 rt 补丁包,可用最近补丁替代,再根据 make uImage 提出的错误做适当修改。(不同Linux内核的实时性有一定的差别,但总体差别不大)
Linux内核版本为:linux-4.19.94
rt 版本为:patch-4.19.94-rt38.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 )移植
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnLxYzN1EjM1UTM3EzNwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
移植步骤:
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、实时测量结果分析
打补丁前的测试结果:
打补丁后的测试结果:
结果分析:
打补丁后,系统的实时性有明显的下降,但对于高实时要求的检测或者控制系统而言,其实时效果远远不能满足严格的实时要求。