Re: [PATCH v2 2/3] sched/pelt: Don't sync hardly runnable_sum with runnable_avg

From: Dietmar Eggemann
Date: Tue Jan 04 2022 - 06:47:21 EST


On 22/12/2021 10:38, Vincent Guittot wrote:

[...]

> @@ -3704,7 +3709,10 @@ update_cfs_rq_load_avg(u64 now, struct cfs_rq *cfs_rq)
>
> r = removed_runnable;
> sub_positive(&sa->runnable_avg, r);
> - sa->runnable_sum = sa->runnable_avg * divider;
> + sub_positive(&sa->runnable_sum, r * divider);
> + /* See update_tg_cfs_util() */
> + sa->runnable_sum = max_t(u32, sa->runnable_sum,
> + sa->runnable_avg * MIN_DIVIDER);

Maybe add a:

Fixes: 1c35b07e6d39 ("sched/fair: Ensure _sum and _avg values stay
consistent")

[...]

> @@ -3805,7 +3807,10 @@ static void detach_entity_load_avg(struct cfs_rq *cfs_rq, struct sched_entity *s
> cfs_rq->avg.util_avg * MIN_DIVIDER);
>
> sub_positive(&cfs_rq->avg.runnable_avg, se->avg.runnable_avg);
> - cfs_rq->avg.runnable_sum = cfs_rq->avg.runnable_avg * divider;
> + sub_positive(&cfs_rq->avg.runnable_sum, se->avg.runnable_sum);
> + /* See update_tg_cfs_util() */
> + cfs_rq->avg.runnable_sum = max_t(u32, cfs_rq->avg.runnable_sum,
> + cfs_rq->avg.runnable_avg * MIN_DIVIDER);

Maybe add a:

Fixes: fcf6631f3736 ("sched/pelt: Ensure that *_sum is always synced
with *_avg")

[...]