飞凌嵌入式
直播中

贺工

1年用户 11经验值
擅长:嵌入式技术
私信 关注
[技术]

【飞凌OK-T153 开发板试用】实时性测试

实时性测试

  • 本文以cyclictest工具为例测试中断响应时间或延迟

    • cyclictest所测得的延时包含中断延时 + 调度延时两部分,如下图
      image.png
    • 中断延时(interrupt latency),即中断发生到进入中断处理程序ISR的延时
    • 调度延时(scheduling latency),即当任务被唤醒到任务真正获得CPU使用权中间的延时
      • cyclictest创建的任务均是实时任务以减小调度延时
  • 测试环境

    • 硬件
      • OKT153-S NAND
    • 软件
      • OS配置

        • 非实时内核(出厂内核)
        root@OKT153:~# uname -a
        Linux OKT153 5.10.198 #3 SMP PREEMPT Fri Sep 19 12:43:20 CST 2025 armv7l GNU/Linux
        root@OKT153:~# zcat /proc/config.gz | grep CONFIG_PREEMPT_RT
        root@OKT153:~#
        
        • 性能模式(4 x A7@1.6G)
          • echo performance > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor
      • 工具

        • cyclictest v2.30
  • 测试

    • cyclictest -t 1 -p 80 -i 10000 -l 10000
    • cyclictest -t 4 -p 80 -i 10000 -l 10000
    • image.png
    • 相关参数描述
      • -t 指定创建的实时线程数
      • -p 指定线程优先级, 实时进程[0,99],数值越大优先级越高
      • -i 中断间隔 us
      • -l 循环测试次数,值越大统计越准
      • Min: 最短响应时间
      • Avg: 平均响应时间
      • Max: 最大响应时间
    • 结果阐述
      • 平均延迟8us, 最小7us, 最大9us 想想哪个对我们的意义更大?
        • 当然是最小延迟,它告诉我们系统最快需要多长时间来响应
      • 最大延迟只是在当前指定-l 次数情况下获取的最大延迟,很可能随着统计次数或测试时间增加而增大
      • 平均延迟只是作为一个大概参考,宏观平均
  • 和I.MX6ULL(1 X A7@792M)的对比
    image.png

    • 从测试结果可以看出T153实时性要明显高于I.MX6ULL
    • 另外需要注意上述测试无论是T153还是I.MX6ULL均是在系统启机后空载情况下的测试数据,若CPU满载情况下数值会发生什么变化,这个留给读者自行验证
  • 中断延迟意义

    • 对实时性要求严格业务场景,可以作为一个选型依据

      • ad7606 200k/s采样 意味着5us产生中断,而上述两个款处理响应最短时间已经来到7us, 因此不适合(实际高频采样通常采用的是ARM+FPGA,ARM毕竟是通用处理器而非信号采集强者)
    • 如何降低中断响应时间

      • 采用实时内核
        • 板卡出厂默认非实时内核可能出于对吞吐考虑,实测时我们可以采用实时内核以获取更准确性能指标,测试方法一样
      • 隔离核
        • 专事专办

为了更准确获得实际应用场景的中断时延,必需充分评估实际应用的负载程度,失去这个前提测出来的数据将毫无意义

更多回帖

发帖
×
20
完善资料,
赚取积分