]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
sched/core: Optimize core cookie matching check
authorFernand Sieber <sieberf@amazon.com>
Wed, 5 Nov 2025 15:25:37 +0000 (17:25 +0200)
committerPeter Zijlstra <peterz@infradead.org>
Tue, 11 Nov 2025 11:33:37 +0000 (12:33 +0100)
Early return true if the core cookie matches. This avoids the SMT mask
loop to check for an idle core, which might be more expensive on wide
platforms.

Signed-off-by: Fernand Sieber <sieberf@amazon.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Reviewed-by: K Prateek Nayak <kprateek.nayak@amd.com>
Reviewed-by: Madadi Vineeth Reddy <vineethr@linux.ibm.com>
Link: https://patch.msgid.link/20251105152538.470586-1-sieberf@amazon.com
kernel/sched/sched.h

index d04e007608a324b1470b7cec330f498e7acc599f..82e74e8ca2eacdca20ad99d581c8557920003d1a 100644 (file)
@@ -1432,6 +1432,9 @@ static inline bool sched_core_cookie_match(struct rq *rq, struct task_struct *p)
        if (!sched_core_enabled(rq))
                return true;
 
+       if (rq->core->core_cookie == p->core_cookie)
+               return true;
+
        for_each_cpu(cpu, cpu_smt_mask(cpu_of(rq))) {
                if (!available_idle_cpu(cpu)) {
                        idle_core = false;
@@ -1443,7 +1446,7 @@ static inline bool sched_core_cookie_match(struct rq *rq, struct task_struct *p)
         * A CPU in an idle core is always the best choice for tasks with
         * cookies.
         */
-       return idle_core || rq->core->core_cookie == p->core_cookie;
+       return idle_core;
 }
 
 static inline bool sched_group_cookie_match(struct rq *rq,