Re: SCHED_RR/SCHED_FIFO and kernel threads?

From: Patrik Hägglund
Date: Fri Jun 17 2005 - 01:40:07 EST


Chris Friesen wrote:

Patrik Hägglund wrote:

Kernel threads seems to generally be scheduled in the SCHED_OTHER class (with the 'migration' thread as an exception).


This is on purpose. The idea is that realtime processes get all the time they request. If the kernel threads are interrupting the realtime app, then the latency of the realtime app is degraded.

Don't you get the problem with priority inversion? I.e., if you have two processes, P1 and P2, scheduled with SCHED_FIFO, where P1 has higer priority than P2. Now, if P1 gets blocked and needs some kernel thread to execute to get unblocked, then P2 is scheduled before the kernel thread, and can execute without any time limit.

That is, you should be much better off if the kernel threads has a _high_ priority. Then the execution progress can only be blocked by kernel threads, not by user space threads and processes. Or have I missed something?

(Besides that, as I see it, SCHED_RR/SCHED_FIFO are scheduling abstractions on their own, not necessarily connected to "low latency " or "realtime".)
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/