Re: [PATCH RFC] smt nice introduces significant lock contention

From: Con Kolivas
Date: Fri Jun 02 2006 - 06:43:19 EST


On Friday 02 June 2006 18:56, Nick Piggin wrote:
> Chen, Kenneth W wrote:
> > Ha, you beat me by one minute. It did cross my mind to use try lock there
> > as well, take a look at my version, I think I have a better inner loop.
>
> Actually you *have* to use trylocks I think, because the current runqueue
> is already locked.
>
> And why do we lock all siblings in the other case, for that matter? (not
> that it makes much difference except on niagara today).

If we spinlock (and don't trylock as you're proposing) we'd have to do a
double rq lock for each sibling. I guess half the time double_rq_lock will
only be locking one runqueue... with 32 runqueues we either try to lock all
32 or lock 1.5 runqueues 32 times... ugh both are ugly.

> Rolled up patch with everyone's changes attached.

I'm still not sure that only doing trylock is adequate, and
wake_sleeping_dependent is only called when a runqueue falls idle in
schedule, not when it's busy so its cost (in my mind) is far less than
dependent_sleeper.

--
-ck
-
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/