On Wed, 23 Jun 2021 at 14:18, Odin Ugedal <odin@xxxxxxx> wrote: > > Hi, > > Wouldn't the attached diff below also help when load is removed, > Vincent? Isn't there a theoretical chance that x_sum ends up at zero > while x_load ends up as a positive value (without this patch)? Can > post as a separate patch if it works for Sachin. In theory it should not because _sum should be always larger or equal to _avg * divider. Otherwise, it means that we have something wrong somewhere else > > > diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c > index bfaa6e1f6067..def48bc2e90b 100644 > --- a/kernel/sched/fair.c > +++ b/kernel/sched/fair.c > @@ -3688,15 +3688,15 @@ update_cfs_rq_load_avg(u64 now, struct cfs_rq *cfs_rq) > > r = removed_load; > sub_positive(&sa->load_avg, r); > - sub_positive(&sa->load_sum, r * divider); > + sa->load_sum = sa->load_avg * divider; > > r = removed_util; > sub_positive(&sa->util_avg, r); > - sub_positive(&sa->util_sum, r * divider); > + sa->util_sum = sa->util_avg * divider; > > r = removed_runnable; > sub_positive(&sa->runnable_avg, r); > - sub_positive(&sa->runnable_sum, r * divider); > + sa->runnable_sum = sa->runnable_avg * divider; > > /* > * removed_runnable is the unweighted version of > removed_load so we