Re: [PATCH] sched/core: avoid calling select_task_rq if bound to one CPU for exec

From: Peter Zijlstra

Date: Thu Nov 27 2025 - 03:31:21 EST


On Wed, Nov 26, 2025 at 05:04:01PM +0800, Jianyong Wu wrote:

> kernel/sched/core.c | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/kernel/sched/core.c b/kernel/sched/core.c
> index f754a60de848..c1e9f633cfb0 100644
> --- a/kernel/sched/core.c
> +++ b/kernel/sched/core.c
> @@ -5442,7 +5442,11 @@ void sched_exec(void)
> int dest_cpu;
>
> scoped_guard (raw_spinlock_irqsave, &p->pi_lock) {
> - dest_cpu = p->sched_class->select_task_rq(p, task_cpu(p), WF_EXEC);
> + if (p->nr_cpus_allowed > 1 && !is_migration_disabled(p))
> + dest_cpu = p->sched_class->select_task_rq(p, task_cpu(p), WF_EXEC);
> + else
> + dest_cpu = cpumask_any(p->cpus_ptr);
> +

Instead of duplicating this, could we not just call select_task_rq()
here?