Messages in this thread | | | Subject | Re: [PATCH] sched: fix off-by-one bug in balance_tasks() | From | Peter Zijlstra <> | Date | Wed, 15 Apr 2009 13:41:59 +0200 |
| |
On Wed, 2009-04-15 at 10:49 +0800, Miao Xie wrote: > If the load that need be moved equals the half weight of a task, I think > it is unnecessary to move this task. Or this task will be moved back and > forth.
That's actually desirable. Consider the 3 tasks on 2 cpus statically infeasible scenario. There you'd want the tasks to bounce around a bit in order to provide fairness.
> Signed-off-by: Miao Xie <miaox@cn.fujitsu.com> > --- > kernel/sched.c | 2 +- > 1 files changed, 1 insertions(+), 1 deletions(-) > > diff --git a/kernel/sched.c b/kernel/sched.c > index 5724508..44926c8 100644 > --- a/kernel/sched.c > +++ b/kernel/sched.c > @@ -3085,7 +3085,7 @@ next: > if (!p || loops++ > sysctl_sched_nr_migrate) > goto out; > > - if ((p->se.load.weight >> 1) > rem_load_move || > + if ((p->se.load.weight >> 1) >= rem_load_move || > !can_migrate_task(p, busiest, this_cpu, sd, idle, &pinned)) { > p = iterator->next(iterator->arg); > goto next;
| |