0

ARMv7 組み込み OMAP システムの構成を以下に示します。sched_rt_period_us = 1000000 = 1 秒 sched_rt_runtime_us = 950000 = 0.95 秒

そして、SCHED_RR および pri = 1 で実行されている 4 つのリアルタイム プロセスがあり、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 秒ごとまたは不確定な出力が生成されます。上記の構成に従って毎秒 2 回実行されるように、この新しいプロセスを決定論的にする方法を教えてください。

2 の静的 pri を設定しようとしましたが、SCHED_FIFO でもチェックしましたが、同じ結果が得られました。

または、これらの計算に欠けているものはありますか。

私は使用しています: Linux xxxx 2.6.33 #2 PREEMPT Tue Aug 14 16:13:05 CEST 2012 armv7l GNU/Linux

4

1 に答える 1

0

スケジューリング要求を受け入れることができないために、スケジューラーが失敗することはありませんか? つまり、システムの負荷が高すぎるため、5 番目のタスクが締め切りに間に合わないということですか?

私の知る限り、sched_setscheduler には、システム負荷が重すぎることを通知する方法がありません。システムが要求を満たすことができるかどうかを知るには、edfなどの別のスケジューリング アルゴリズムが必要です。Linuxの実装を確認したいかもしれません。

于 2012-10-05T07:02:58.100 に答える