0

我在 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 纳秒,即系统上的 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

4

1 回答 1

0

Are you sure that the scheduler does not fail because it is not able to honor the scheduling requests? I mean, that fifth task doesn't meet the deadline because the system is too heavily loaded?

As far as I know, sched_setscheduler does not have a way to signal that the system load is too heavy. To know if the system is able to meet the request, you need another scheduling algorithm, such as edf. Maybe you want to check its implementation for linux.

于 2012-10-05T07:02:58.100 回答