Linux中调度程序调试的工具

Jar*_*ary 6 scheduling linux-kernel embedded-linux linux-rt

我有一个嵌入式Linux系统,包含两个必须实时运行(或软实时)的线程.当使用SCHED_OTHER时,我注意到了很多抖动,但是两个线程总是在它们分配的时间内执行.

我已经在启用了PREEMPT_RT的情况下应用了RT补丁,并且使用SCHED_FIFO运行这两个线程(线程优先级高达~80)导致抖动少得多,总体上要好得多,除了一次和两次线程都错过了他们的截止日期(而不是每10毫秒左右执行一次,他们可能几乎没有时间表!).

我想问一下在嵌入式Linux操作系统上调试linux调度(在RT下)时哪种工具最好.想到了ftrace,但我不知道它是否是最好的和/或唯一的工具.我的目标是找出为什么两个线程偶尔会安排很长时间的原因.

更新:我今天用wakeup_rt运行ftrace.wakeup_rt作为跟踪器没有完成工作:当我的线程最迟运行1000毫秒时,它记录的最大延迟为5毫秒.也许这不是调度程序问题?你会推荐ftrace中的其他跟踪器吗?

idl*_*ead 0

尝试使用调度程序开发人员使用的rt-app 。

您可能还想使用SCHED_DEADLINE而不是 SCHED_FIFO 来减少抖动。