对于RT-Linux(打了rt patch的Linux),调度延迟用rt-tests工具包来测试。其中包含了很多的测试工具,在这里先介绍cyclictest。
参考文档:实时性测试:cyclictest详解 - 知乎,(十)cyclictest--(zc7045)实时性能测试及原理_yangteng0210的博客-CSDN博客_cyclictest
所谓延时就是一个事件的发生到系统相应该事件为止的时间。在实时操作系统中,希望这个值越小越好,表明任何任务都可以在规定的时间内得到调度。
Cyclictest所测试的延时包括:产生时钟中断到线程的到执行的时间(响应中断+等待调度)。
借图:
基本原理:
启动一个普通进程master,然后master创建N个实时threads。每一个实时thread设置一个周期性的hrtimer,每次唤醒后获取系统时间,latency = new_time - old_time - sleep_time。master获取到该值并记录,最后给出统计信息。
安装与使用:
最新版本为2.1,这个版本做了一个优化,可以指定master 运行在具体的CPU上,之前master和第一个实时thread运行在同一个CPU,会导致第一个thread的延迟大于其他thread。
taskset -c 1-29 rt-tests-2.1/cyclictest -m -p99 -D 1h -i 100 -h 100 -a 2-29 -t 28 --mainaffinity=1