Re: [RFC PATCH v4 06/28] sched: Save the per LLC utilization for better cache aware scheduling

From: Chen, Yu C

Date: Tue Sep 30 2025 - 00:34:20 EST


On 9/29/2025 10:09 PM, Peter Zijlstra wrote:
On Sat, Aug 09, 2025 at 01:02:54PM +0800, Chen Yu wrote:

+#ifdef CONFIG_SCHED_CACHE
+/*
+ * Save this sched group's statistic for later use:
+ * The task wakeup and load balance can make better
+ * decision based on these statistics.
+ */
+static void update_sg_if_llc(struct lb_env *env, struct sg_lb_stats *sgs,
+ struct sched_group *group)
+{
+ /* Find the sched domain that spans this group. */
+ struct sched_domain *sd = env->sd->child;
+ struct sched_domain_shared *sd_share;
+
+ if (!sched_feat(SCHED_CACHE) || env->idle == CPU_NEWLY_IDLE)
+ return;
+
+ /* only care the sched domain that spans 1 LLC */
+ if (!sd || !(sd->flags & SD_SHARE_LLC) ||
+ !sd->parent || (sd->parent->flags & SD_SHARE_LLC))
+ return;

Did you want to write:

if (sd != per_cpu(sd_llc))
return;

Or something?


Ah right, will do it.

+ sd_share = rcu_dereference(per_cpu(sd_llc_shared,
+ cpumask_first(sched_group_span(group))));
+ if (!sd_share)
+ return;
+
+ if (likely(READ_ONCE(sd_share->util_avg) != sgs->group_util))
+ WRITE_ONCE(sd_share->util_avg, sgs->group_util);

If you expect it to be different, does that whole load and compare still
matter?


OK, will write to it directly.

thanks,
Chenyu>> +}