From: Shrikanth Hegde <sshegde@linux.ibm.com>
To: Yury Norov <yury.norov@gmail.com>, vincent.guittot@linaro.org
Cc: Ilya Leoshkevich <iii@linux.ibm.com>,
linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org,
mingo@redhat.com, peterz@infradead.org, juri.lelli@redhat.com,
tglx@linutronix.de, maddy@linux.ibm.com, srikar@linux.ibm.com,
gregkh@linuxfoundation.org, pbonzini@redhat.com,
seanjc@google.com, kprateek.nayak@amd.com, vschneid@redhat.com,
huschle@linux.ibm.com, rostedt@goodmis.org,
dietmar.eggemann@arm.com, christophe.leroy@csgroup.eu,
linux-s390@vger.kernel.org
Subject: Re: [PATCH 00/17] Paravirt CPUs and push task for less vCPU preemption
Date: Thu, 18 Dec 2025 10:52:44 +0530 [thread overview]
Message-ID: <b8d6d83c-00d8-4b66-8470-62cc528e1d6b@linux.ibm.com> (raw)
In-Reply-To: <aUBHw7MvOQYusuuA@yury>
Hi, Sorry for delay in response. Just landed yesterday from LPC.
>>> Others have already commented on the naming, and I would agree that
>>> "paravirt" is really misleading. I cannot say that the previous "cpu-
>>> avoid" one was perfect, but it was much better.
>
> It was my suggestion to switch names. cpu-avoid is definitely a
> no-go. Because it doesn't explain anything and only confuses.
>
> I suggested 'paravirt' (notice - only suggested) because the patch
> series is mainly discussing paravirtualized VMs. But now I'm not even
> sure that the idea of the series is:
>
> 1. Applicable only to paravirtualized VMs; and
> 2. Preemption and rescheduling throttling requires another in-kernel
> concept other than nohs, isolcpus, cgroups and similar.
>
> Shrikanth, can you please clarify the scope of the new feature? Would
> it be useful for non-paravirtualized VMs, for example? Any other
> task-cpu bonding problems?
Current scope of the feature in virtulaized environment where the idea is
to do co-operative folding in each VM based on hint(either HW hint or steal time).
If you see from macro level, this is framework which allows one to avoid some vCPUs(In
Guest) to achieve better throughput or latency. So one could come up with more usecases
even in non-paravirtualized VMs. For example, one crazy idea such as avoid using SMT siblings
when the system utilization is low to achieve higher ipc(instruction per cycle) value.
>
> On previous rounds you tried to implement the same with cgroups, as
> far as I understood. Can you discuss that? What exactly can't be done
> with the existing kernel APIs?
>
> Thanks,
> Yury
>
We discussed this in Sched-MC this year.
https://youtu.be/zf-MBoUIz1Q?t=8581
Currently explored options.
1. CPU Hotplug - slow. Some efforts underway to speed it up.
2. Creating isolated cpusets - Faster. still involves sched domain rebuilds.
The reason why they both won't work is that they break user affinities in the guest.
i.e guest can do "taskset -c <some_vcpus> <workload>, when the
last vCPU goes offline(guest vCPU hotplug) in that list of vCPUs
the affinity mask is reset and workload can run on online vCPUs and it
doesn't set back to earlier value. That is okay for hotlug or isolated cpusets
since it is driven by user in the guest. So user is aware of it.
Whereas here, the change is driven by the system than user in the guest.
So it cannot break user-space affinities.
So we need a new interface to drive this. I think it is better if it is
non cgroup based framework since cgroup is usually user driven.
(correct me if i am wrong).
PS:
There were some confusion around this affinity breaking. Note it is guest vCPU being marked and
guest vCPU being hotplugged. Task affinied workload was running in guest. Host CPUs(pCPU) are not
hotplugged.
---
I had discussion with vincent in hallway, idea is to use the push framework bits and set the
CPU Capacity=1 (lowest value and consider it as special value) and use a static key check to do
this stuff only when HW says to do so.
Such as (considering name as paravirt):
static inline bool cpu_paravirt(int cpu)
{
if (static_branch_unlikely(&cpu_paravirt_framework))
return arch_scale_cpu_capacity(cpu) == 1;
return false;
}
Rest of the bits remain same. I found an issue with current series where setting affinity
is going wrong after cpu is marked paravirt, i will fix it next version. will do some more
testing and send next version in 2026.
Happy Holidays!
next prev parent reply other threads:[~2025-12-18 5:23 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-11-19 12:44 Shrikanth Hegde
2025-11-19 12:44 ` [PATCH 01/17] sched/docs: Document cpu_paravirt_mask and Paravirt CPU concept Shrikanth Hegde
2025-11-19 21:48 ` Hillf Danton
2025-11-20 14:54 ` Shrikanth Hegde
2025-11-20 22:56 ` Hillf Danton
2025-11-19 12:44 ` [PATCH 02/17] cpumask: Introduce cpu_paravirt_mask Shrikanth Hegde
2025-11-19 12:44 ` [PATCH 03/17] sched/core: Dont allow to use CPU marked as paravirt Shrikanth Hegde
2025-11-19 12:44 ` [PATCH 04/17] sched/debug: Remove unused schedstats Shrikanth Hegde
2025-11-19 12:44 ` [PATCH 05/17] sched/fair: Add paravirt movements for proc sched file Shrikanth Hegde
2025-11-19 12:44 ` [PATCH 06/17] sched/fair: Pass current cpu in select_idle_sibling Shrikanth Hegde
2025-11-19 12:44 ` [PATCH 07/17] sched/fair: Don't consider paravirt CPUs for wakeup and load balance Shrikanth Hegde
2025-11-19 12:44 ` [PATCH 08/17] sched/rt: Don't select paravirt CPU for wakeup and push/pull rt task Shrikanth Hegde
2025-11-19 12:44 ` [PATCH 09/17] sched/core: Add support for nohz_full CPUs Shrikanth Hegde
2025-11-21 3:16 ` K Prateek Nayak
2025-11-21 4:40 ` Shrikanth Hegde
2025-11-24 4:36 ` K Prateek Nayak
2025-11-19 12:44 ` [PATCH 10/17] sched/core: Push current task from paravirt CPU Shrikanth Hegde
2025-11-19 12:44 ` [PATCH 11/17] sysfs: Add paravirt CPU file Shrikanth Hegde
2025-11-19 12:44 ` [PATCH 12/17] powerpc: method to initialize ec and vp cores Shrikanth Hegde
2025-11-21 8:29 ` kernel test robot
2025-11-21 10:14 ` kernel test robot
2025-11-19 12:44 ` [PATCH 13/17] powerpc: enable/disable paravirt CPUs based on steal time Shrikanth Hegde
2025-11-19 12:44 ` [PATCH 14/17] powerpc: process steal values at fixed intervals Shrikanth Hegde
2025-11-19 12:44 ` [PATCH 15/17] powerpc: add debugfs file for controlling handling on steal values Shrikanth Hegde
2025-11-19 12:44 ` [PATCH 16/17] sysfs: Provide write method for paravirt Shrikanth Hegde
2025-11-24 17:04 ` Greg KH
2025-11-24 17:24 ` Steven Rostedt
2025-11-25 2:49 ` Shrikanth Hegde
2025-11-25 15:52 ` Steven Rostedt
2025-11-25 16:02 ` Konstantin Ryabitsev
2025-11-25 16:08 ` Steven Rostedt
2025-11-19 12:44 ` [PATCH 17/17] sysfs: disable arch handling if paravirt file being written Shrikanth Hegde
2025-11-24 17:05 ` [PATCH 00/17] Paravirt CPUs and push task for less vCPU preemption Greg KH
2025-11-25 2:39 ` Shrikanth Hegde
2025-11-25 7:48 ` Christophe Leroy (CS GROUP)
2025-11-25 8:48 ` Shrikanth Hegde
2025-11-27 10:44 ` Shrikanth Hegde
2025-12-04 13:28 ` Ilya Leoshkevich
2025-12-05 5:30 ` Shrikanth Hegde
2025-12-15 17:39 ` Yury Norov
2025-12-18 5:22 ` Shrikanth Hegde [this message]
2025-12-08 4:47 ` K Prateek Nayak
2025-12-08 9:57 ` Shrikanth Hegde
2025-12-08 17:58 ` K Prateek Nayak
2026-03-26 6:11 ` 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=b8d6d83c-00d8-4b66-8470-62cc528e1d6b@linux.ibm.com \
--to=sshegde@linux.ibm.com \
--cc=christophe.leroy@csgroup.eu \
--cc=dietmar.eggemann@arm.com \
--cc=gregkh@linuxfoundation.org \
--cc=huschle@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=linuxppc-dev@lists.ozlabs.org \
--cc=maddy@linux.ibm.com \
--cc=mingo@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peterz@infradead.org \
--cc=rostedt@goodmis.org \
--cc=seanjc@google.com \
--cc=srikar@linux.ibm.com \
--cc=tglx@linutronix.de \
--cc=vincent.guittot@linaro.org \
--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 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®