Re: [patch] Real-Time Preemption, -RT-2.6.10-rc1-mm2-V0.7.1

From: john cooper
Date: Thu Nov 04 2004 - 13:16:08 EST


Ingo Molnar wrote:
* Ingo Molnar <mingo@xxxxxxx> wrote:


X should be scheduled on the other CPU just fine. Only per-CPU kernel
threads (which are affine to their particular CPU) are affected by
this problem - ordinary tasks not. I.e. the system threads that have
/0 and /1 in their name. In theory you should not even need to chrt
the hardirq threads, those should schedule fine too.


plus there's the 'priority inheritance dependency-chain closure' bug
noticed by John Cooper - that should only affect the latency of RT tasks
though.

This is a fairly gnarly problem to address. The obvious
solution is to hold spinlocks in the mutexes as the dependency
tree is atomically traversed. However this will deadlock under
MP due to the unpredictable order of mutexes traversed. If the
dependency chain is not traversed (and semantics applied)
atomically, races exist which cause promotion decisions to be
made on [now] stale data.

The simple solution is a global spinlock which doesn't scale
well under MP. Another possible solution would be conditional
traversal of the chain where contention within the chain under
foot (from another chain walker) causes the traversal to
abort and retry. Though this has the down side of being
nondeterministic.

--
john.cooper@xxxxxxxxxxx
-
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/