我有一个嵌入式 linux 系统,其中包含两个必须实时(或软实时)运行的线程。使用 SCHED_OTHER 时,我注意到很多抖动,但两个线程总是在分配的时间内执行。
我已经应用了启用 PREEMPT_RT 的 RT 补丁,并且使用 SCHED_FIFO 运行这两个线程(具有 ~80 的高线程优先级)会导致更少的抖动,总体而言要好得多,除了偶尔两个线程都错过了他们的最后期限(而不是每 10 毫秒左右执行一次,他们可能几乎一秒钟都没有得到调度!)。
我想问在嵌入式 Linux 操作系统上调试 linux 调度(在 RT 下)时哪个工具最好。ftrace 浮现在脑海中,但我不知道它是否是最好的和/或唯一的工具。我的目标是找出为什么两个线程没有被安排在很长一段时间内。
更新:我今天一直在用wakeup_rt 运行ftrace。作为跟踪器的 wakeup_rt 没有完成工作:它记录的最大延迟为 5 毫秒,而我的线程可以延迟 1000 毫秒。也许这不是调度程序问题?请您推荐 ftrace 中的其他什么跟踪器?