mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Mete Durlu <meted@linux.ibm.com>
To: Shrikanth Hegde <sshegde@linux.ibm.com>,
	Andrea Righi <arighi@nvidia.com>
Cc: Ingo Molnar <mingo@redhat.com>,
	Peter Zijlstra <peterz@infradead.org>,
	Juri Lelli <juri.lelli@redhat.com>,
	Vincent Guittot <vincent.guittot@linaro.org>,
	Dietmar Eggemann <dietmar.eggemann@arm.com>,
	Steven Rostedt <rostedt@goodmis.org>,
	Ben Segall <bsegall@google.com>, Mel Gorman <mgorman@suse.de>,
	Valentin Schneider <vschneid@redhat.com>,
	K Prateek Nayak <kprateek.nayak@amd.com>,
	Heiko Carstens <hca@linux.ibm.com>,
	Vasily Gorbik <gor@linux.ibm.com>,
	Alexander Gordeev <agordeev@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Sven Schnelle <svens@linux.ibm.com>,
	Tim Chen <tim.c.chen@linux.intel.com>,
	Chen Yu <yu.c.chen@intel.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	linux-kernel@vger.kernel.org, linux-s390@vger.kernel.org
Subject: Re: [PATCH RFC 0/2] sched: Introduce idle SMT priority for asymmetric capacity systems
Date: Mon, 12 Oct 2026 14:32:53 +0200	[thread overview]
Message-ID: <6c4fcef6-6ff8-4733-a451-53744d2c821d@linux.ibm.com> (raw)
In-Reply-To: <effe96a4-c995-4da4-aac6-bef195df36c2@linux.ibm.com>

Hi,
sorry for the late reply, I have been sick since Friday.
I though about what has been written for a bit.

>>> Well, when we see steal time, it usually means there is high 
>>> contention and
>>> we are using more vCPUs at this moment than possible.
>>> So we mark them as non-preferred. Note that they are idle cpus. But 
>>> non-preferred.
>>>
>>> That means preferred CPUs may have more than 1 task. If we spill over 
>>> if there
>>> is idle non-preferred CPUs, we will be back to square one. No?
>>
>> I agree that CPUs excluded by the steal governor should remain avoided 
>> even when
>> all preferred CPUs are busy.
>>
>> I'm wondering if we should have two levels: cpu_preferred_mask acting 
>> as a hard
>> affinity constraint and an entitlement-based soft affinity within that 
>> mask? The
> 
> That not what entitlement usually means. At least not PowerVM. when one 
> creates VM,
> they assign VP=Virtual Cores and EC=Entitled Cores. and Hypervisor 
> ensure at least EC
> worth of cores are always assigned to that VM. There is no need of 
> priority within that
> entitlement.

Wouldn't it make sense to first fully load entitled cores before
moving onto virtual cores on Power? On s390 we would definitely
benefit from it on some cases.

>> soft affinity would prefer high-entitlement CPUs: first fully idle 
>> cores, then
>> idle SMT siblings. Once those CPUs are busy, tasks could spill onto
> 
> I think when one has high steal time and hence reduced preferred CPUs, 
> there will
> likely be no fully idle cores within preferred CPUs.

Shrikanth, wouldn't something like below still make sense?

> Note that current logic takes out last set of CPUs and find_new_ilb 
> iterates from
> the beginning. So if there is idle core within the preferred CPUs, it 
> will be chosen.
> 
>> lower-entitlement CPUs still inside cpu_preferred_mask, again 
>> preferring fully
>> idle cores over idle SMT siblings. If all CPUs inside 
>> cpu_preferred_mask are
>> busy, tasks would queue there. The soft affinity would never override the
>> governor's restriction by spilling onto CPUs it excluded due to 
>> contention.
>>
> As we were discussing, as long as threads don't end up on non-preferred 
> CPUs,
> we might be okay. With the above, find_new_ilb will becomes very complex 
> IMHO
> and I am not sure if it is worth it.
> 
> likely what we need is,
> - Fully idle preferred Core.
> - idle preferred CPU.
> - any idle CPU.

Andrea does this resemble what you were describing;

1-) (steal time == 0)
====================================================================
cpu_preffered_mask = active_cpus
cpu_soft_affinity = 0

All cpus are available for scheduler to pick and use.
Idle cores are preferred in case of asymmetric capacities.

2-) (steal time > 0) && (steal time <= initial_threshold*)
====================================================================
cpu_preffered_mask = active_cpus
cpu_soft_affinity = entitled cpus

In this case entitled cores get fully filled (SMT siblings first)
before spilling load onto the rest of the cpus on preferred mask.
*Initial threshold is a value I just devised. Ideally arch specific
and dynamically configurable, setting it to just 0 should also
be an option.

3-) (steal time > initial_threshold)
====================================================================
cpu_preffered_mask = entitled cpus + steal governor's modifications
cpu_soft_affinity = entitled cpus

Carrying the logic from case 2 but shrinking the preferred mask
according to the increased steal time value.

Shrikanth/Andrea,
does what I describe above make sense and would it make a reasonable
addition to the vCPU backoff mechanism?

*Considering guests with hardware based topology and underlying
hypervisor scheduling vCPUs per core;
I'd expect this approach to allow for guests having a smaller
footprint for longer and steal time to start appearing later than
usual as the entitled cores are fully utilized before touching other
cores.

*This is the case for s390 for example. I am not sure if it is the same
for Power or any other architecture.

  reply	other threads:[~2026-10-12 12:33 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-08  8:30 Mete Durlu
2026-10-08  8:30 ` [PATCH RFC 1/2] kernel/sched: Introduce idle SMT priority Mete Durlu
2026-10-08  8:30 ` [PATCH RFC 2/2] s390/topology: Enable SCHED_IDLE_SMT_PRIO Mete Durlu
2026-10-08 12:10 ` [PATCH RFC 0/2] sched: Introduce idle SMT priority for asymmetric capacity systems Andrea Righi
2026-10-08 14:58   ` Shrikanth Hegde
2026-10-08 15:24     ` Mete Durlu
2026-10-08 15:44       ` Shrikanth Hegde
2026-10-09 15:12         ` Andrea Righi
2026-10-09 15:35           ` Shrikanth Hegde
2026-10-12 12:32             ` Mete Durlu [this message]
2026-10-12 13:49               ` Shrikanth Hegde
2026-10-09 15:32       ` Vincent Guittot
2026-10-12 11:04         ` Mete Durlu
2026-10-12 14:49           ` Vincent Guittot
2026-10-08 21:52   ` Tim Chen
2026-10-08 21:29 ` Tim Chen
2026-10-12 10:41   ` Mete Durlu

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=6c4fcef6-6ff8-4733-a451-53744d2c821d@linux.ibm.com \
    --to=meted@linux.ibm.com \
    --cc=agordeev@linux.ibm.com \
    --cc=arighi@nvidia.com \
    --cc=borntraeger@linux.ibm.com \
    --cc=bsegall@google.com \
    --cc=dietmar.eggemann@arm.com \
    --cc=gor@linux.ibm.com \
    --cc=hca@linux.ibm.com \
    --cc=iii@linux.ibm.com \
    --cc=juri.lelli@redhat.com \
    --cc=kprateek.nayak@amd.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=mgorman@suse.de \
    --cc=mingo@redhat.com \
    --cc=peterz@infradead.org \
    --cc=rostedt@goodmis.org \
    --cc=sshegde@linux.ibm.com \
    --cc=svens@linux.ibm.com \
    --cc=tim.c.chen@linux.intel.com \
    --cc=vincent.guittot@linaro.org \
    --cc=vschneid@redhat.com \
    --cc=yu.c.chen@intel.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 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®