Messages in this thread | | | Date | Thu, 04 Nov 2004 13:59:07 -0500 | From | john cooper <> | Subject | Re: [patch] Real-Time Preemption, -RT-2.6.10-rc1-mm2-V0.7.1 |
| |
Ingo Molnar wrote: > * Ingo Molnar <mingo@elte.hu> 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@timesys.com - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |