系统抖动测试 (rk3588 , buildroot rt , ubuntu20.04 with rt)

50 阅读2分钟

系统抖动测试

在工控机 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 的系统实时性更好。