Messages in this thread | | | From | Vincent Guittot <> | Date | Thu, 26 Mar 2020 17:03:10 +0100 | Subject | Re: [PATCH] sched/fair: Fix negative imbalance in imbalance calculation |
| |
On Thu, 26 Mar 2020 at 06:53, Aubrey Li <aubrey.li@intel.com> wrote: > > A negative imbalance value was observed after imbalance calculation, > this happens when the local sched group type is group_fully_busy, > and the average load of local group is greater than the selected > busiest group. Fix this problem by comparing the average load of the > local and busiest group before imbalance calculation formula. > > Suggested-by: Vincent Guittot <vincent.guittot@linaro.org> > Signed-off-by: Aubrey Li <aubrey.li@linux.intel.com> > Cc: Phil Auld <pauld@redhat.com>
Reviewed-by: Vincent Guittot <vincent.guittot@linaro.org>
> --- > kernel/sched/fair.c | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c > index c1217bf..4a2ba3f 100644 > --- a/kernel/sched/fair.c > +++ b/kernel/sched/fair.c > @@ -8761,6 +8761,14 @@ static inline void calculate_imbalance(struct lb_env *env, struct sd_lb_stats *s > > sds->avg_load = (sds->total_load * SCHED_CAPACITY_SCALE) / > sds->total_capacity; > + /* > + * If the local group is more loaded than the selected > + * busiest group don't try to pull any tasks. > + */ > + if (local->avg_load >= busiest->avg_load) { > + env->imbalance = 0; > + return; > + } > } > > /* > -- > 2.7.4 >
| |