实时流程错过了SCHED_RR的截止日期

时间:2012-10-03 12:29:03

标签: real-time embedded-linux scheduler

我在ARMv7嵌入式OMAP系统上有以下配置。 sched_rt_period_us = 1000000 = 1秒 sched_rt_runtime_us = 950000 = 0.95秒

我有4个实时进程在SCHED_RR和pri = 1下运行 和sched_rr_get_interval()返回93750000 nanosec,即系统上0.093750秒。

我添加了一个新进程,其中SCHED_RR和pri为1,默认rr_interval相同 0.09375秒

根据这个配置: 每隔一秒,5个RT进程必须执行2次(0.09375 * 10 = 0.9375秒)和 其余的1秒时间间隔将由非RT任务使用 即,1.0 - 0.9375 = 0.0625秒。

但正如我从执行中看到的那样,第5个新添加的任务错过了时间线,只是随机执行并每1秒产生一次输出或不确定。请帮我说说如何制作 这个新过程具有确定性,因此按照上述配置每秒执行两次。

我尝试配置静态pri为2并且还使用SCHED_FIFO进行检查但是得到了相同的结果 结果

或者在这些计算中我有什么遗漏。

我正在使用: Linux xxxx 2.6.33#2 PREEMPT Tue Aug 14 16:13:05 CEST 2012 armv7l GNU / Linux

1 个答案:

答案 0 :(得分:0)

您确定调度程序没有失败,因为它无法遵守调度请求吗?我的意思是,第五个任务没有达到截止日期,因为系统负载太重了?

据我所知,sched_setscheduler没有办法发出系统负载过重的信号。要了解系统是否能够满足请求,您需要另一种调度算法,例如edf。也许你想检查一下linux的实现。