Messages in this thread | | | Subject | Re: [PATCH 5/5] sched: make fix_small_imbalance work with asymmetric packing | From | Peter Zijlstra <> | Date | Tue, 13 Apr 2010 14:29:29 +0200 |
| |
On Fri, 2010-04-09 at 16:21 +1000, Michael Neuling wrote: > With the asymmetric packing infrastructure, fix_small_imbalance is > causing idle higher threads to pull tasks off lower threads. > > This is being caused by an off-by-one error. > > Signed-off-by: Michael Neuling <mikey@neuling.org> > --- > I'm not sure this is the right fix but without it, higher threads pull > tasks off the lower threads, then the packing pulls it back down, etc > etc and tasks bounce around constantly.
Would help if you expand upon the why/how it manages to get pulled up.
I can't immediately spot anything wrong with the patch, but then that isn't my favourite piece of code either.. Suresh, any comments?
> --- > > kernel/sched_fair.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > Index: linux-2.6-ozlabs/kernel/sched_fair.c > =================================================================== > --- linux-2.6-ozlabs.orig/kernel/sched_fair.c > +++ linux-2.6-ozlabs/kernel/sched_fair.c > @@ -2652,7 +2652,7 @@ static inline void fix_small_imbalance(s > * SCHED_LOAD_SCALE; > scaled_busy_load_per_task /= sds->busiest->cpu_power; > > - if (sds->max_load - sds->this_load + scaled_busy_load_per_task >= > + if (sds->max_load - sds->this_load + scaled_busy_load_per_task > > (scaled_busy_load_per_task * imbn)) { > *imbalance = sds->busiest_load_per_task; > return;
| |