Messages in this thread | | | Subject | Re: [git pull] scheduler fixes | From | Mike Galbraith <> | Date | Sat, 17 Jan 2009 13:19:12 +0100 |
| |
On Sat, 2009-01-17 at 13:00 +0100, Peter Zijlstra wrote: > On Sat, 2009-01-17 at 11:34 +0100, Mike Galbraith wrote: > > > Right, how about we flip the 'initial' case in place_entity() for ! > > > nr_exclusive wakeups. > > > > Wouldn't that be more drastic than sleep denial? > > Strictly speaking that DEBIT thing is valid for each wakeup, IIRC we > restricted it to clone() only because that was where we could actually > observe these latency spikes using a fork-bomb. > > This reduces the latency hits to around 400ms, which is about right for > the given load. > > --- > diff --git a/kernel/sched_fair.c b/kernel/sched_fair.c > index f34cf42..d344605 100644 > --- a/kernel/sched_fair.c > +++ b/kernel/sched_fair.c > @@ -671,7 +671,8 @@ place_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int initial) > * little, place the new task so that it fits in the slot that > * stays open at the end. > */ > - if (initial && sched_feat(START_DEBIT)) > + if ((initial && sched_feat(START_DEBIT)) || > + (!initial && sched_feat(WAKER_DEBIT))) > vruntime += sched_vslice(cfs_rq, se); > > if (!initial) { > diff --git a/kernel/sched_features.h b/kernel/sched_features.h > index 4569bfa..b5fddf0 100644 > --- a/kernel/sched_features.h > +++ b/kernel/sched_features.h > @@ -1,4 +1,4 @@ > -SCHED_FEAT(NEW_FAIR_SLEEPERS, 1) > +SCHED_FEAT(NEW_FAIR_SLEEPERS, 0) > SCHED_FEAT(NORMALIZED_SLEEPER, 0) > SCHED_FEAT(ADAPTIVE_GRAN, 1) > SCHED_FEAT(WAKEUP_PREEMPT, 1) > @@ -15,3 +15,4 @@ SCHED_FEAT(ASYM_EFF_LOAD, 1) > SCHED_FEAT(WAKEUP_OVERLAP, 0) > SCHED_FEAT(LAST_BUDDY, 1) > SCHED_FEAT(OWNER_SPIN, 1) > +SCHED_FEAT(WAKER_DEBIT, 1)
Ouch, that doesn't look like it will be nice at all for interactivity.
(which btw was terrible with my hackery, even with booboos fixed)
-Mike
| |