Re: Deadline scheduling (was: Re: Rearranging layout of code in the scheduler)
- From: "Dario Faggioli" <raistlin@xxxxxxxx>
- Date: Fri, 31 Oct 2008 18:49:10 +0100 (CET)
On Gio, 30 Ottobre 2008 6:17 pm, Peter Zijlstra wrote:
Right, ideally I'd like to see 2 EDF classes on top of FIFO, so that weOh, so two classes? Well, yes, could be nice.
end up with the following classes
hedf - hard EDF
sedf - soft EDF (bounded tardiness)
fifo/rr - the current static priority scheduler
fair - the current proportional fair scheduler
idle - the idle scheduler
The two edf classes must share some state, so that the sedf class knowsYep. Actually I think that schedulability test could be an issue as well,
about the utilisation consumed by hedf, and the main difference between
these two classes is the schedulability test.
especially if we like group/hierarchical approach, since the known
hierarchical admission tests are quite complex to implement and, probably,
time consuming if performed on-line in an highly dynamic (with respec to
to task arrival and leaving) system.
The few problems this gives are things like kstopmachine and theYeah, that's exactly what we was thinking too.
migration threads, which should run at the max priority available on the
system.
Actually, I was also thinking that having fixed priority scheduling
_before_ EDF could be of some benefit if you have to be sure that a task
is going to be executed at a very precise instant in time, but have not a
precise about that yet.
Perhaps we can introduce another class on top of hedf which will runWell, could be a solution... And if this is only used for such kind of
just these two tasks and is not exposed to userspace (yes, I understand
it will ruin just about any schedulability analysis).
special tasks, maybe it is not impossible to bound or account for their
scheduling contribution... But I'm just shooting inthe dark here, sorry
about that! :-P
We can do deadline inheritance and bandwidth inheritance by changingYes, that's right, this is what we are investigating and trying to do in
plist to a rb-tree/binary heap and mapping the static priority levels
somewhere at the back and also propagating the actual task responsible
for the boost down the chain (so as to be able to do bandwidth
inheritance).
From what I gather the sssup folks are doing that, although they
reported that DI between disjoint schedule domains (partitions) posed an
interesting problem.
these days (... Or weeks... Or months!).
Personally I'd like to see the full priority inversion issue solved byWow... So, good luck for that! :-)
something like the proxy execution protocol, however the SMP extension
thereof seems to be a tad expensive - found a book on graph theory, all
that remains is finding time to read it :-)
Maybe it's my fault, but I see some issues with proxy execution and
similar protocols.
That is, if you have, let's say, task A blocked on task B, blocked on task
C, and you are using proxy execution, that means that you have not
dequeued A and B when they blocked, but that you, for example, filled a
pointer that reminds you, when you schedule them, that you have to
actually run C, am I right?
Now, what happens if C blocks on a non-rt mutex lock, or if it simply go
to sleep? Is that acceptable to track the blocking chain in order to
actually dequeue also A and B, and to requeue them again when C will wake
up as well?
Forgive if that's a stupid point... :-(
The advantage of proxy execution is that its fully invariant to theYes, I agree and I like it very much too. If you go for it, you could also
schedule function and thus even works for proportional fair schedulers
and any kind of scheduler hierarchy.
add bandwidth inheritance (e.g., for group scheduling) and things like
that almost for free (if wanted! :-))
Regards,
Dario Faggioli
--
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/
- References:
- Rearranging layout of code in the scheduler
- From: Henrik Austad
- Re: Rearranging layout of code in the scheduler
- From: Peter Zijlstra
- Re: Rearranging layout of code in the scheduler
- From: faggioli
- Deadline scheduling (was: Re: Rearranging layout of code in the scheduler)
- From: Peter Zijlstra
- Rearranging layout of code in the scheduler
- Prev by Date: Re: WARNING: at fs/buffer.c:1186 mark_buffer_dirty+0x51/0x66()
- Next by Date: [PATCH] Use BIOS reboot on Toshiba Portege 4000
- Previous by thread: Re: Deadline scheduling (was: Re: Rearranging layout of code in the scheduler)
- Next by thread: Long delays and keystrokes required - related to disk encryption?
- Index(es):