]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
sched/fair: Small cleanup to update_newidle_cost()
authorPeter Zijlstra <peterz@infradead.org>
Fri, 7 Nov 2025 16:01:27 +0000 (17:01 +0100)
committerPeter Zijlstra <peterz@infradead.org>
Mon, 17 Nov 2025 16:13:15 +0000 (17:13 +0100)
Simplify code by adding a few variables.

Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Reviewed-by: Dietmar Eggemann <dietmar.eggemann@arm.com>
Tested-by: Dietmar Eggemann <dietmar.eggemann@arm.com>
Tested-by: Chris Mason <clm@meta.com>
Link: https://patch.msgid.link/20251107161739.655208666@infradead.org
kernel/sched/fair.c

index 75f891df4e5fb05028ac64229dc6680c9025a67f..abcbb67dd7851b4c3355ceaea708ce41ed4f1b01 100644 (file)
@@ -12226,22 +12226,25 @@ void update_max_interval(void)
 
 static inline bool update_newidle_cost(struct sched_domain *sd, u64 cost)
 {
+       unsigned long next_decay = sd->last_decay_max_lb_cost + HZ;
+       unsigned long now = jiffies;
+
        if (cost > sd->max_newidle_lb_cost) {
                /*
                 * Track max cost of a domain to make sure to not delay the
                 * next wakeup on the CPU.
                 */
                sd->max_newidle_lb_cost = cost;
-               sd->last_decay_max_lb_cost = jiffies;
-       } else if (time_after(jiffies, sd->last_decay_max_lb_cost + HZ)) {
+               sd->last_decay_max_lb_cost = now;
+
+       } else if (time_after(now, next_decay)) {
                /*
                 * Decay the newidle max times by ~1% per second to ensure that
                 * it is not outdated and the current max cost is actually
                 * shorter.
                 */
                sd->max_newidle_lb_cost = (sd->max_newidle_lb_cost * 253) / 256;
-               sd->last_decay_max_lb_cost = jiffies;
-
+               sd->last_decay_max_lb_cost = now;
                return true;
        }