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