From: Shrikanth Hegde <sshegde@linux.ibm.com>
To: Mete Durlu <meted@linux.ibm.com>, linux-kernel@vger.kernel.org
Cc: tglx@kernel.org, gregkh@linuxfoundation.org, pbonzini@redhat.com,
seanjc@google.com, vschneid@redhat.com, huschle@linux.ibm.com,
rostedt@goodmis.org, dietmar.eggemann@arm.com,
maddy@linux.ibm.com, srikar@linux.ibm.com, hdanton@sina.com,
chleroy@kernel.org, vineeth@bitbyteword.org, frederic@kernel.org,
arighi@nvidia.com, pauld@redhat.com, christian.loehle@arm.com,
tj@kernel.org, tommaso.cucinotta@gmail.com, maz@kernel.org,
rafael@kernel.org, rdunlap@infradead.org, kernellwp@gmail.com,
linux-doc@vger.kernel.org, jgross@suse.com,
virtualization@lists.linux.dev, mingo@kernel.org,
peterz@infradead.org, juri.lelli@redhat.com,
vincent.guittot@linaro.org, yury.norov@gmail.com,
kprateek.nayak@amd.com, iii@linux.ibm.com, corbet@lwn.net
Subject: Re: [PATCH v9 04/11] sched/core: Try to use a preferred CPU in is_cpu_allowed
Date: Mon, 10 Aug 2026 18:53:57 +0530 [thread overview]
Message-ID: <a02c8bfe-5bec-4d2f-9183-8a0f856d3247@linux.ibm.com> (raw)
In-Reply-To: <31646728-5af6-4f3d-b461-8992c213e230@linux.ibm.com>
Hi Mete, thanks for taking a look.
On 8/10/26 5:28 PM, Mete Durlu wrote:
> Hi,
>
> ...
>> For majority of the cases this would still keep select_fallback_rq
>> as O(N). task_has_preferred_cpus which is O(N) is called only if
>> !cpu_preferred. Then task running there is expected to move out.
>> So subsequent it should run on preferred CPU. This becomes O(N**2)
>> only for tasks pinned only non preferred CPUs. That is rare case.
>>
>> Signed-off-by: Shrikanth Hegde <sshegde@linux.ibm.com>
>> ---
>> kernel/sched/core.c | 12 ++++++++++--
>> kernel/sched/sched.h | 12 ++++++++++++
>> 2 files changed, 22 insertions(+), 2 deletions(-)
>>
>> diff --git a/kernel/sched/core.c b/kernel/sched/core.c
>> index a45f7c308329..9e8eec4451b6 100644
>> --- a/kernel/sched/core.c
>> +++ b/kernel/sched/core.c
>> @@ -2509,8 +2509,12 @@ static inline bool is_cpu_allowed(struct
>> task_struct *p, int cpu)
>> return cpu_online(cpu);
>> /* Non kernel threads are not allowed during either online or
>> offline. */
>> - if (!(p->flags & PF_KTHREAD))
>> + if (!(p->flags & PF_KTHREAD)) {
>> + /* Try to use preferred CPU if task's affinity allows */
>> + if (task_can_sched_on_preferred(cpu, p))
>> + return false;
>> return cpu_active(cpu);
>> + }
>> /* KTHREAD_IS_PER_CPU is always allowed. */
>> if (kthread_is_per_cpu(p))
>> @@ -2520,7 +2524,11 @@ static inline bool is_cpu_allowed(struct
>> task_struct *p, int cpu)
>> if (cpu_dying(cpu))
>> return false;
>> - /* But are allowed during online. */
>> + /* Try to keep unbound kthreads on a preferred CPU if possible. */
>> + if (task_can_sched_on_preferred(cpu, p))
>> + return false;
>> +
>> + /* Otherwise, they are allowed to run on online CPU. */
>> return cpu_online(cpu);
>> }
>> diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h
>> index 26ae13c86b69..6de6366f2faa 100644
>> --- a/kernel/sched/sched.h
>> +++ b/kernel/sched/sched.h
>> @@ -4230,4 +4230,16 @@ DEFINE_CLASS_IS_UNCONDITIONAL(sched_change)
>> #include "ext/ext.h"
>> +static inline bool task_can_sched_on_preferred(int cpu, struct
>> task_struct *p)
>
>
> Sorry, I glanced to the earlier versions but I couldn't find
> the answer to my question. Trivial one but still.
>
> FWICT, task_can_sched_on_preferred() is only being used in
> core.c, is there a reason why it is defined in
> kernel/sched/sched.h and not in core.c ?
>
Will move it out of sched.h. Thanks for pointing it out.
> Thanks.
> -Mete
Also, thanks for checking that s390 change.
next prev parent reply other threads:[~2026-08-10 13:24 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-24 14:07 [PATCH v9 00/11] sched, steal_governor: Introduce preferred CPUs and steal-driven vCPU backoff Shrikanth Hegde
2026-07-24 14:07 ` [PATCH v9 01/11] sched/docs: Document cpu_preferred_mask and Preferred CPU concept Shrikanth Hegde
2026-07-24 21:45 ` Yury Norov
2026-07-25 2:22 ` Shrikanth Hegde
2026-07-30 5:04 ` Yury Norov
2026-08-04 15:22 ` Shrikanth Hegde
2026-07-24 14:07 ` [PATCH v9 02/11] cpumask: Introduce cpu_preferred_mask Shrikanth Hegde
2026-07-24 20:00 ` Yury Norov
2026-07-25 3:16 ` Shrikanth Hegde
2026-07-24 14:07 ` [PATCH v9 03/11] sysfs: Add preferred CPU file Shrikanth Hegde
2026-07-24 14:07 ` [PATCH v9 04/11] sched/core: Try to use a preferred CPU in is_cpu_allowed Shrikanth Hegde
2026-08-10 11:58 ` Mete Durlu
2026-08-10 13:23 ` Shrikanth Hegde [this message]
2026-07-24 14:07 ` [PATCH v9 05/11] sched/fair: Load balance only among preferred CPUs Shrikanth Hegde
2026-07-24 21:40 ` Yury Norov
2026-07-27 6:09 ` Shrikanth Hegde
2026-07-24 14:07 ` [PATCH v9 06/11] sched/core: Push current task from non preferred CPU Shrikanth Hegde
2026-07-24 22:04 ` Yury Norov
2026-07-27 8:55 ` Shrikanth Hegde
2026-07-24 14:07 ` [PATCH v9 07/11] sched/debug: Add migration stats due to non preferred CPUs Shrikanth Hegde
2026-07-24 14:07 ` [PATCH v9 08/11] virt: Introduce steal governor driver Shrikanth Hegde
2026-07-24 14:07 ` [PATCH v9 09/11] virt/steal_governor: Add control knobs for handling steal values Shrikanth Hegde
2026-07-24 14:07 ` [PATCH v9 10/11] virt/steal_governor: Implement steal_governor policy loop Shrikanth Hegde
2026-07-24 21:05 ` Yury Norov
2026-07-25 3:54 ` Shrikanth Hegde
2026-07-27 14:42 ` Shrikanth Hegde
2026-08-10 12:12 ` Mete Durlu
2026-07-24 14:07 ` [PATCH v9 11/11] virt/steal_governor: Enable the driver Shrikanth Hegde
2026-07-24 22:07 ` [PATCH v9 00/11] sched, steal_governor: Introduce preferred CPUs and steal-driven vCPU backoff Yury Norov
2026-07-25 1:53 ` Shrikanth Hegde
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=a02c8bfe-5bec-4d2f-9183-8a0f856d3247@linux.ibm.com \
--to=sshegde@linux.ibm.com \
--cc=arighi@nvidia.com \
--cc=chleroy@kernel.org \
--cc=christian.loehle@arm.com \
--cc=corbet@lwn.net \
--cc=dietmar.eggemann@arm.com \
--cc=frederic@kernel.org \
--cc=gregkh@linuxfoundation.org \
--cc=hdanton@sina.com \
--cc=huschle@linux.ibm.com \
--cc=iii@linux.ibm.com \
--cc=jgross@suse.com \
--cc=juri.lelli@redhat.com \
--cc=kernellwp@gmail.com \
--cc=kprateek.nayak@amd.com \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=maddy@linux.ibm.com \
--cc=maz@kernel.org \
--cc=meted@linux.ibm.com \
--cc=mingo@kernel.org \
--cc=pauld@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peterz@infradead.org \
--cc=rafael@kernel.org \
--cc=rdunlap@infradead.org \
--cc=rostedt@goodmis.org \
--cc=seanjc@google.com \
--cc=srikar@linux.ibm.com \
--cc=tglx@kernel.org \
--cc=tj@kernel.org \
--cc=tommaso.cucinotta@gmail.com \
--cc=vincent.guittot@linaro.org \
--cc=vineeth@bitbyteword.org \
--cc=virtualization@lists.linux.dev \
--cc=vschneid@redhat.com \
--cc=yury.norov@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.