On Tue, Jan 21, 2014 at 01:50:41PM +0100, Luca Abeni wrote:Ok, got the point. I was not planning to add this example to the documentationOn 01/21/2014 01:33 PM, Peter Zijlstra wrote:
Well, but it does happen in reality :)- During the execution of a job, the task might invoke a blocking system call,
and block... When it wakes up, it is still in the same job (decoding the same
video frame), and not in a different one.
This is (IMHO) where all the confusion comes from.
I would strongly urge you not to use that as an example, because its
dead wrong design. An RT thread (be it RR,FIFO or DL) should _NEVER_ do
blocking IO.
Yeah, I know, my point was more about not encouraging people to do this
by explicitly mentioning it.
I think I read the paper your refer to, and if I remember well it was aboutOn the other hand, I agree with you that a hard real-time task should be designed
not to do things like this. But SCHED_DEADLINE is flexible enough to be used on
many different kinds of tasks (hard real-time, soft real-time, etc...).
At which point I feel obliged to mention the work Jim did on statistical
bounded tardiness and a potential future option:
SCHED_FLAG_DL_AVG_RUNTIME, where we would allow tasks to somewhat exceed
their runtime budget provided that they meet their budget on average.
Another possibly extension; one proposed by Ingo; is to demote tasks toI think something similar to this was mentioned in the original "resource kernels"
SCHED_OTHER once they exceed their budget instead of the full block they
get now -- we could possibly call this SCHED_FLAG_DL_CBS_SOFT or such.
And of course SCHED_FLAG_DL_CBS_SIGNAL, where the task gets a signalI've seen this in some patchset, but I do not remember when. I think some of
delivered if it exceeded the runtime -- I think some of the earlier
patches had things like this, no?
Ok, good. I am already working on this together with Juri.On the other subject; I wouldn't actually mind if it grew into a properOk... My point was that it would be better (IMHO) to first explain how
(academic or not) summary of deadline scheduling theory and how it
applies.
Sure, refer to actual papers for all the proofs and such, but it would
be very good to go over all the bits and pieces that make up the system.
So cover the periodic, sporadic and aperiodic model like henr_k
suggested, please do cover the job/instance idiom as it is used all over
the place.
sched_deadline works (and no notion of job/instance, etc is needed for this),
and then explain how this applies to the real-time task model (and here, of
course all the formal notation can be introduced).
Do you think this can be reasonable?
Sure, I think that's reasonable.