sched/pelt: Check that *_avg are null when *_sum are
authorVincent Guittot <vincent.guittot@linaro.org>
Tue, 1 Jun 2021 15:53:28 +0000 (17:53 +0200)
committerPeter Zijlstra <peterz@infradead.org>
Thu, 17 Jun 2021 12:11:42 +0000 (14:11 +0200)
Check that we never break the rule that pelt's avg values are null if
pelt's sum are.

Signed-off-by: Vincent Guittot <vincent.guittot@linaro.org>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Reviewed-by: Dietmar Eggemann <dietmar.eggemann@arm.com>
Acked-by: Odin Ugedal <odin@uged.al>
Link: https://lore.kernel.org/r/20210601155328.19487-1-vincent.guittot@linaro.org
kernel/sched/fair.c

index ce625bf..198514d 100644 (file)
@@ -8026,6 +8026,15 @@ static inline bool cfs_rq_is_decayed(struct cfs_rq *cfs_rq)
        if (cfs_rq->avg.runnable_sum)
                return false;
 
+       /*
+        * _avg must be null when _sum are null because _avg = _sum / divider
+        * Make sure that rounding and/or propagation of PELT values never
+        * break this.
+        */
+       SCHED_WARN_ON(cfs_rq->avg.load_avg ||
+                     cfs_rq->avg.util_avg ||
+                     cfs_rq->avg.runnable_avg);
+
        return true;
 }