mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH v2] sched/fair: Prefer cache locality for EAS wakeup
@ 2025-10-30 19:19 Shubhang Kaushik via B4 Relay
  2025-10-31 10:17 ` Christian Loehle
                   ` (2 more replies)
  0 siblings, 3 replies; 14+ messages in thread
From: Shubhang Kaushik via B4 Relay @ 2025-10-30 19:19 UTC (permalink / raw)
  To: Ingo Molnar, Peter Zijlstra, Juri Lelli, Vincent Guittot,
	Dietmar Eggemann, Steven Rostedt, Ben Segall, Mel Gorman,
	Valentin Schneider, Shubhang Kaushik, Shijie Huang, Frank Wang
  Cc: Christopher Lameter, Adam Li, linux-kernel, Shubhang Kaushik

From: Shubhang Kaushik <shubhang@os.amperecomputing.com>

When Energy Aware Scheduling (EAS) is enabled, a task waking up on a
sibling CPU might migrate away from its previous CPU even if that CPU
is not overutilized. This sacrifices cache locality and introduces
unnecessary migration overhead.

This patch refines the wakeup heuristic in `select_idle_sibling()`. If
EAS is active and the task's previous CPU (`prev`) is not overutilized,
the scheduler will prioritize waking the task on `prev`, avoiding an
unneeded migration and preserving cache-hotness.

---
v2:
- Addressed reviewer comments to handle this special condition
  within the selection logic, prioritizing the
  previous CPU if not overutilized for EAS.
- Link to v1: https://lore.kernel.org/all/20251017-b4-sched-cfs-refactor-propagate-v1-1-1eb0dc5b19b3@os.amperecomputing.com/

Signed-off-by: Shubhang Kaushik <shubhang@os.amperecomputing.com>
---
 kernel/sched/fair.c | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index 25970dbbb27959bc130d288d5f80677f75f8db8b..ac94463627778f09522fb5420f67b903a694ad4d 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -7847,9 +7847,7 @@ static int select_idle_sibling(struct task_struct *p, int prev, int target)
 	    asym_fits_cpu(task_util, util_min, util_max, target))
 		return target;
 
-	/*
-	 * If the previous CPU is cache affine and idle, don't be stupid:
-	 */
+	/* Reschedule on an idle, cache-sharing sibling to preserve affinity: */
 	if (prev != target && cpus_share_cache(prev, target) &&
 	    (available_idle_cpu(prev) || sched_idle_cpu(prev)) &&
 	    asym_fits_cpu(task_util, util_min, util_max, prev)) {
@@ -7861,6 +7859,14 @@ static int select_idle_sibling(struct task_struct *p, int prev, int target)
 		prev_aff = prev;
 	}
 
+	/*
+	 * If the previous CPU is not overutilized, prefer it for cache locality.
+	 * This prevents migration away from a cache-hot CPU that can still
+	 * handle the task without causing an overload.
+	 */
+	if (sched_energy_enabled() && !cpu_overutilized(prev))
+		return prev;
+
 	/*
 	 * Allow a per-cpu kthread to stack with the wakee if the
 	 * kworker thread and the tasks previous CPUs are the same.

---
base-commit: e53642b87a4f4b03a8d7e5f8507fc3cd0c595ea6
change-id: 20251030-b4-follow-up-ff03b4533a2d

Best regards,
-- 
Shubhang Kaushik <shubhang@os.amperecomputing.com>



^ permalink raw reply	[flat|nested] 14+ messages in thread
* Re: [PATCH v2] sched/fair: Prefer cache locality for EAS wakeup
@ 2025-11-13  0:03 Shubhang Kaushik Prasanna Kumar
  0 siblings, 0 replies; 14+ messages in thread
From: Shubhang Kaushik Prasanna Kumar @ 2025-11-13  0:03 UTC (permalink / raw)
  To: vineethr
  Cc: Shijie Huang, Adam Li, bsegall, cl, dietmar.eggemann, juri.lelli,
	linux-kernel, mgorman, mingo, peterz, rostedt, sh,
	Shubhang Kaushik OS, vincent.guittot, vschneid, Frank Wang

Hi Vineeth,

	> Is cache locality prioritized even over idle CPU availability?

I had assumed that the fast path prioritizes cache locality over idle CPU selection. However, our performance measurements indicate that, in this specific scenario, the trade-off is not worthwhile.
The data shows that prioritizing the busy, `cache-hot` core leads to performance regressions and an overload on wakeup. Which  means an overhead of staying on the busy core outweighs the cost of migrating to an idle core.
In development, I am trying an alternative approach to benefit from cache locality in this path.

Regards,
Shubhang Kaushik

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2025-11-20 14:37 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-10-30 19:19 [PATCH v2] sched/fair: Prefer cache locality for EAS wakeup Shubhang Kaushik via B4 Relay
2025-10-31 10:17 ` Christian Loehle
2025-10-31 16:59   ` Shubhang Kaushik OS
2025-10-31 18:11     ` Christian Loehle
2025-11-02 10:06       ` Christian Loehle
2025-11-02  7:12 ` Madadi Vineeth Reddy
2025-11-03  9:04 ` Vincent Guittot
2025-11-13  0:26   ` Shubhang Kaushik OS
2025-11-13 14:54     ` Dietmar Eggemann
2025-11-14 18:27       ` Shubhang Kaushik OS
2025-11-14 13:36     ` Vincent Guittot
2025-11-18  1:27       ` Shubhang Kaushik OS
2025-11-20 14:37         ` Vincent Guittot
2025-11-13  0:03 Shubhang Kaushik Prasanna Kumar

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®