系统抖动测试
在工控机 rk3588 上测试不同系统(buildroot rt , ubuntu20.04 with rt),不同cpu负载下系统抖动参数。
测试工具 cyclictest & stress
apt install rt-tests stress
a. 普通进程
cyclictest -t1 -p 0 -i 1000 -l 600000 -h 100 -q
- -t1:使用1个线程进行测试
- -p 0:设置线程的优先级为0(在实时调度中,优先级越高,数值越大)
- -i 1000:线程的基本间隔为1000微秒(1毫秒)
- -l 1000:循环1000次
b. 实时进程
chrt -f 99 taskset -c 6 cyclictest -t1 -p 99 -i 1000 -l 600000 -h 100 -q
chrt -f 99: 设置 FIFO 调度策略,优先级 99(最高)taskset -c 6: CPU绑定 6
测试分组
-
测试机器 cpu:rk3588
-
测试时间 :2 小时
-
样本数据 :7,200,000
-
分组条件设置:
-
cpu负载率:[0%,50%]
-
任务类型:[normal task(普通任务),rt task(实时任务)]
- 实时任务设置: FIFO 调度策略,优先级 99(最高), CPU绑定核心 6
-
-
记录数据含义:
-
Min Latency: 最小延迟抖动 μs
-
Avg Latency: 平均延迟抖动 μs
-
Max Latency: 最大延迟抖动 μs
-
Overflows: 超出 100 us 抖动 样本数据
-
CPU Load: CPU设置负载率 %
-
A组(系统:ubuntu20.04 with rt)
- 系统信息:Linux Industio 5.10.209-rt89 #9 SMP PREEMPT_RT Fri Jul 4 14:21:02 CST 2025 aarch64 aarch64 aarch64 GNU/Linux
- 以下图中
x轴 - 抖动延迟,y轴 - 记录样本数量
A1 [0%,normal task]
A2 [0%,rt task]
A3 [50%,normal task]
A4 [50%,rt task]
B组(系统:buildroot rt)
- 系统信息:Linux rk3588 5.10.160-rt89 #9 SMP PREEMPT_RT Thu Feb 20 13:40:59 CST 2025 aarch64 GNU/Linux
- 以下图中
x轴 - 抖动延迟,y轴 - 记录样本数量
B1 [0%,normal task]
B2 [0%,rt task]
B3 [50%,normal task]
B4 [50%,rt task]
测试总结
- 以最大抖动作为指标进行分析。
A组统计分析 (ubuntu20.04 with rt)
B组统计分析 (buildroot rt)
结论
- 设置 实时任务时,抖动更小,平均抖动
3~4 us - 可以看到,在相同条件下
(rt task), 测试数据中B组最大抖动延迟相对于A组更低15us < 130 us, 说明 buildroot 的系统实时性更好。