[Prev][Next][Index][Thread]

CPU inheritance issue



Hi all,

In the OSDI CPU Inheritance paper, the authors claim that CPU inheritance
is a general-purpose replacement for priority inheritance, and results in
correct real-time behavior.  There is an important case where this is not
true.

In a traditional priority-based real-time system implementing priority
inheritance, when a thread releases a mutex the system unblocks the
waiting thread with highest priority and lets it enter the critical
section.  This is important: if mutex wait queues are FIFO, high-priority
tasks can wait behind a large convoy of low-priority tasks.  This will
have a very bad effect on the worst-case schedulability of the system.

The problem is that when deciding what waiting thread to wake up, we need
to reason about the scheduling desirability of a group of blocked threads.
Of course this is trivial in a priority-based system; as far as I can see,
it's not trivial under the CPU inheritance model.

Maybe there is some way to atomically wake up all waiting threads and see
which one the scheduling hierarchy decides to run, and then re-block the
others?

Just some thoughts.

John Regehr


--
John Regehr | regehr@virginia.edu | http://www.cs.virginia.edu/~jdr8d/
grad student | Department of Computer Science | University of Virginia