Re: [PATCH 1/2] sched: fix and clean up calculate_imbalance

Peter Zijlstra
2014-07-29T14:53:12Z

On Tue, Jul 29, 2014 at 04:49:52PM +0200, Peter Zijlstra wrote:
> > @@ -6247,32 +6247,15 @@ static inline void calculate_imbalance(struct lb_env *env, struct sd_lb_stats *s
> > return fix_small_imbalance(env, sds);
> > }
> >
> > - if (!busiest->group_imb) {
> > - /*
> > - * Don't want to pull so many tasks that a group would go idle.
> > - * Except of course for the group_imb case, since then we might
> > - * have to drop below capacity to reach cpu-load equilibrium.
> > - */
> > - load_above_capacity =
> > - (busiest->sum_nr_running - busiest->group_capacity_factor);
> > -
> > - load_above_capacity *= (SCHED_LOAD_SCALE * SCHED_CAPACITY_SCALE);
> > - load_above_capacity /= busiest->group_capacity;
> > - }
>
> I think we want to retain that, esp. for the overloaded case. So that
> wants to be:
>
> if (busiest->sum_nr_running > busiest->group_capacity_factor)
>
> Clearly it doesn't make sense for the !overload case, and we explicitly
> want to avoid it in the imb case.

Ah, wait, I think I see why you want that gone. I was only expecting a
correction fix wrt changing pick_busiest(), not also behaviour changes.

Lemme reconsider.