Re: [git pull] scheduler fixes

Matthew Wilcox
2008-05-11T14:46:23Z

On Sun, May 11, 2008 at 04:32:27PM +0200, Ingo Molnar wrote:
>
> * Matthew Wilcox <matthew@wil.cx> wrote:
>
> > > the gain is rather obvious: two parallel up()s (or just up()s which
> > > come close enough after each other) will wake up two tasks in
> > > parallel. With your patch, the first guy wakes up and then it wakes
> > > up the second guy. I.e. your patch serializes the wakeup chain, mine
> > > keeps it parallel.
> >
> > Yup. I explained why that's actually beneficial in an earlier email.
>
> but the problem is that by serializing the wakeup chains naively you
> introduced a more than 50% AIM7 performance regression.

That's a different issue. The AIM7 regression is to do with whether a
task that is currently running and hits a semaphore that has no current
holder but someone else waiting should be allowed to jump the queue.
No argument there; performance trumps theoretical fairness.

This issue is whether multiple sleepers should be woken up all-at-once
or one-at-a-time. Here, you seem to be arguing for theoretical fairness
to trump performance.

(Let's be quite clear; this issue affects *only* multiple
sleepers and multiple wakes given to those sleepers. ie
semaphores-being-used-as-completions and true counting semaphores).

--
Intel are signing my paycheques ... these opinions are still mine
"Bill, look, we understand that you're interested in selling us this
operating system, but compare it to ours. We can't possibly take such
a retrograde step."