]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
sched/cache: Check local_group only once in update_sg_lb_stats()
authorTim Chen <tim.c.chen@linux.intel.com>
Wed, 1 Apr 2026 21:52:23 +0000 (14:52 -0700)
committerPeter Zijlstra <peterz@infradead.org>
Thu, 9 Apr 2026 13:49:50 +0000 (15:49 +0200)
There is no need to check the local group twice for both
group_asym_packing and group_smt_balance. Adjust the code
to facilitate future checks for group types (cache-aware
load balancing) as well.

No functional changes are expected.

Suggested-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Co-developed-by: Chen Yu <yu.c.chen@intel.com>
Signed-off-by: Chen Yu <yu.c.chen@intel.com>
Signed-off-by: Tim Chen <tim.c.chen@linux.intel.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://patch.msgid.link/99a57865c8ae1847087a5c00e92d24351cf3e5a8.1775065312.git.tim.c.chen@linux.intel.com
kernel/sched/fair.c

index cea625c790354b46d648d597e438b183472472d2..d3812d18b6d61c55f09bfa9725e52f6d82cb6993 100644 (file)
@@ -11385,14 +11385,16 @@ static inline void update_sg_lb_stats(struct lb_env *env,
 
        sgs->group_weight = group->group_weight;
 
-       /* Check if dst CPU is idle and preferred to this group */
-       if (!local_group && env->idle && sgs->sum_h_nr_running &&
-           sched_group_asym(env, sgs, group))
-               sgs->group_asym_packing = 1;
-
-       /* Check for loaded SMT group to be balanced to dst CPU */
-       if (!local_group && smt_balance(env, sgs, group))
-               sgs->group_smt_balance = 1;
+       if (!local_group) {
+               /* Check if dst CPU is idle and preferred to this group */
+               if (env->idle && sgs->sum_h_nr_running &&
+                   sched_group_asym(env, sgs, group))
+                       sgs->group_asym_packing = 1;
+
+               /* Check for loaded SMT group to be balanced to dst CPU */
+               if (smt_balance(env, sgs, group))
+                       sgs->group_smt_balance = 1;
+       }
 
        sgs->group_type = group_classify(env->sd->imbalance_pct, group, sgs);