From: Shrikanth Hegde <sshegde@linux.ibm.com>
To: Yury Norov <ynorov@nvidia.com>
Cc: linux-kernel@vger.kernel.org, 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,
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
Subject: Re: [PATCH v6 12/23] virt: Introduce steal monitor driver
Date: Tue, 7 Jul 2026 12:17:47 +0530 [thread overview]
Message-ID: <796920fb-7355-4c5f-aa7c-6ff8a4c55b7a@linux.ibm.com> (raw)
In-Reply-To: <akv4vGpII2tx4gSZ@yury>
Hi Yury,
On 7/7/26 12:19 AM, Yury Norov wrote:
> On Mon, Jul 06, 2026 at 01:54:05PM +0530, Shrikanth Hegde wrote:
>>
>>
>> On 7/3/26 11:57 PM, Yury Norov wrote:
>>> On Fri, Jul 03, 2026 at 02:20:32PM -0400, Yury Norov wrote:
>>>> On Wed, Jul 01, 2026 at 07:46:43PM +0530, Shrikanth Hegde wrote:
>>>>> Introduce a new driver in virt named steal_monitor. This driver
>>>>> will compute the steal time and drive the policy decisions of preferred
>>>>> CPU state.
>>>>>
>>>>> More on it can be found in the Documentation/driver-api/steal-monitor.rst
>>>>> Introduce the skeleton code first.
>>>>>
>>>>> There is no new kconfig. It depends on CONFIG_PREFERRED_CPU.
>>>>> - If CONFIG_PREFERRED_CPU=y, it gets compiled as a module. It is not
>>>>> loaded by default.
>>>
>>> What if I've got my own monitor, and don't need this one? Please add a
>>> way to not compile it, even if CONFIG_PREFERRED_CPU is enabled.
>>>
>>
>> You mean make a new config like VIRT_MONITOR depend on CONFIG_PREFERRED_CPU and
>> make it as default n?
>>
>> Can we defer this until such a new monitor is needed?
>> We will in state where CONFIG_PREFERRED_CPU=y & VIRT_MONITOR=n.
>
> I think the VIRT_MONITOR should select PREFERRED_CPU. Whether
> PREFERRED_CPU should be enabled without an in-tree driver using it -
> IDK. Probably yes.
>
That's good idea too. User has to enable VIRT_MONITOR, that will select
PREFERRED_CPU. If any other driver wants this feature, it will have to do the
same. Assumption is whichever driver selects PREFERRED_CPU, it has to ensure that
design constrains are met.
I did below. I think this is what you meant. Let me know if i got it wrong.
---
diff --git a/drivers/virt/Kconfig b/drivers/virt/Kconfig
index 52eb7e4ba71f..a52233b2502e 100644
--- a/drivers/virt/Kconfig
+++ b/drivers/virt/Kconfig
@@ -47,6 +47,8 @@ source "drivers/virt/nitro_enclaves/Kconfig"
source "drivers/virt/acrn/Kconfig"
+source "drivers/virt/steal_monitor/Kconfig"
+
endif
source "drivers/virt/coco/Kconfig"
diff --git a/drivers/virt/Makefile b/drivers/virt/Makefile
index aff715cea42d..b67fd8968ec3 100644
--- a/drivers/virt/Makefile
+++ b/drivers/virt/Makefile
@@ -9,5 +9,5 @@ obj-y += vboxguest/
obj-$(CONFIG_NITRO_ENCLAVES) += nitro_enclaves/
obj-$(CONFIG_ACRN_HSM) += acrn/
-obj-$(CONFIG_PREFERRED_CPU) += steal_monitor/
+obj-$(CONFIG_STEAL_MONITOR) += steal_monitor/
obj-y += coco/
diff --git a/drivers/virt/steal_monitor/Kconfig b/drivers/virt/steal_monitor/Kconfig
new file mode 100644
index 000000000000..efb94b3a60e4
--- /dev/null
+++ b/drivers/virt/steal_monitor/Kconfig
@@ -0,0 +1,15 @@
+# SPDX-License-Identifier: GPL-2.0-only
+config STEAL_MONITOR
+ tristate "Dynamic vCPU management based on steal time"
+ depends on PARAVIRT && SMP
+ select PREFERRED_CPU
+ default m
+ help
+ This feature helps to reduce the steal time in paravirtualised
+ environment, there by reducing vCPU preemption. Reducing vCPU
+ preemption provides improved lock holder preemption and reduces
+ cost of vCPU preemption in the host.
+
+ By default preferred CPUs will be same as active CPUs. Depending
+ on the steal time when steal_monitor driver is enabled,
+ preferred CPUs could become subset of active CPUs.
diff --git a/drivers/virt/steal_monitor/Makefile b/drivers/virt/steal_monitor/Makefile
index 7c16f8cf9583..d206e048a9ea 100644
--- a/drivers/virt/steal_monitor/Makefile
+++ b/drivers/virt/steal_monitor/Makefile
@@ -9,6 +9,6 @@
# It is always compiled as module if CONFIG_PREFERRED_CPU=y
# One has to enable the module.
#
-obj-$(subst y,m,$(CONFIG_PREFERRED_CPU)) += steal_monitor.o
+obj-$(CONFIG_STEAL_MONITOR) += steal_monitor.o
steal_monitor-y := sm_core.o defaults.o
diff --git a/kernel/Kconfig.preempt b/kernel/Kconfig.preempt
index 01b908ff1740..ed02e4431230 100644
--- a/kernel/Kconfig.preempt
+++ b/kernel/Kconfig.preempt
@@ -194,15 +194,4 @@ config SCHED_CLASS_EXT
https://github.com/sched-ext/scx
config PREFERRED_CPU
- bool "Dynamic vCPU management based on steal time"
- depends on PARAVIRT && SMP
- default y
- help
- This feature helps to reduce the steal time in paravirtualised
- environment, thereby reducing vCPU preemption. Reducing vCPU
- preemption provides improved lock holder preemption and reduces
- cost of vCPU preemption.
-
- By default preferred CPUs will be same as active CPUs. Depending
- on the steal time when steal_monitor driver is enabled,
- preferred CPUs could become subset of active CPUs.
+ bool
> Enabling some random driver, and even worse overriding user
> preferences looks questionable, at least.
>
> I'm one of those who build VMs with the localyes config, particularly
> because it decouples me from rootfs headache. So please let me just
> compile-in your monitor, if I want.
next prev parent reply other threads:[~2026-07-07 6:48 UTC|newest]
Thread overview: 55+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-01 14:16 [PATCH v6 00/23] sched: Introduce cpu_preferred_mask and steal-driven vCPU backoff Shrikanth Hegde
2026-07-01 14:16 ` [PATCH v6 01/23] sched/docs: Document cpu_preferred_mask and Preferred CPU concept Shrikanth Hegde
2026-07-01 14:16 ` [PATCH v6 02/23] kconfig: Provide PREFERRED_CPU option Shrikanth Hegde
2026-07-01 14:16 ` [PATCH v6 03/23] cpumask: Introduce cpu_preferred_mask Shrikanth Hegde
2026-07-01 15:35 ` Yury Norov
2026-07-01 16:40 ` Shrikanth Hegde
2026-07-01 14:16 ` [PATCH v6 04/23] sysfs: Add preferred CPU file Shrikanth Hegde
2026-07-01 14:16 ` [PATCH v6 05/23] sched/core: Try to use a preferred CPU in is_cpu_allowed Shrikanth Hegde
2026-07-01 16:09 ` Yury Norov
2026-07-01 16:49 ` Shrikanth Hegde
2026-07-02 6:30 ` Shrikanth Hegde
2026-07-01 14:16 ` [PATCH v6 06/23] sched/fair: Load balance only among preferred CPUs Shrikanth Hegde
2026-07-01 16:19 ` Yury Norov
2026-07-01 16:41 ` Shrikanth Hegde
2026-07-01 14:16 ` [PATCH v6 07/23] sched/fair: Pull the load on preferred CPU Shrikanth Hegde
2026-07-01 14:16 ` [PATCH v6 08/23] sched/core: Keep tick on non-preferred CPUs until tasks are out Shrikanth Hegde
2026-07-01 14:16 ` [PATCH v6 09/23] sched/core: Push current task from non preferred CPU Shrikanth Hegde
2026-07-01 16:50 ` Yury Norov
2026-07-01 17:03 ` Shrikanth Hegde
2026-07-01 14:16 ` [PATCH v6 10/23] sched/debug: Add migration stats due to non preferred CPUs Shrikanth Hegde
2026-07-01 14:16 ` [PATCH v6 11/23] virt/steal_monitor: Add documentation Shrikanth Hegde
2026-07-01 14:16 ` [PATCH v6 12/23] virt: Introduce steal monitor driver Shrikanth Hegde
2026-07-03 18:20 ` Yury Norov
2026-07-03 18:27 ` Yury Norov
2026-07-06 8:24 ` Shrikanth Hegde
2026-07-06 18:49 ` Yury Norov
2026-07-07 6:47 ` Shrikanth Hegde [this message]
2026-07-06 8:09 ` Shrikanth Hegde
2026-07-01 14:16 ` [PATCH v6 13/23] virt/steal_monitor: Restore to active on module disable Shrikanth Hegde
2026-07-01 14:16 ` [PATCH v6 14/23] virt/steal_monitor: Define steal_monitor structure Shrikanth Hegde
2026-07-01 14:16 ` [PATCH v6 15/23] virt/steal_monitor: Add control knobs for handling steal values Shrikanth Hegde
2026-07-02 7:16 ` Shrikanth Hegde
2026-07-01 14:16 ` [PATCH v6 16/23] virt/steal_monitor: Compute work at regular intervals Shrikanth Hegde
2026-07-03 18:14 ` Yury Norov
2026-07-06 8:38 ` Shrikanth Hegde
2026-07-01 14:16 ` [PATCH v6 17/23] virt/steal_monitor: Provide default method to get systemwide steal time Shrikanth Hegde
2026-07-03 19:16 ` Yury Norov
2026-07-06 8:47 ` Shrikanth Hegde
2026-07-06 19:04 ` Yury Norov
2026-07-07 6:50 ` Shrikanth Hegde
2026-07-01 14:16 ` [PATCH v6 18/23] virt/steal_monitor: Provide default method to inc/dec preferred CPUs Shrikanth Hegde
2026-07-03 21:11 ` Yury Norov
2026-07-06 9:20 ` Shrikanth Hegde
2026-07-01 14:16 ` [PATCH v6 19/23] virt/steal_monitor: Provide default method to get num of CPUs for steal ratio Shrikanth Hegde
2026-07-06 19:26 ` Yury Norov
2026-07-07 6:55 ` Shrikanth Hegde
2026-07-01 14:16 ` [PATCH v6 20/23] virt/steal_monitor: Act on steal values at regular intervals Shrikanth Hegde
2026-07-02 7:18 ` Shrikanth Hegde
2026-07-06 20:33 ` Yury Norov
2026-07-07 7:16 ` Shrikanth Hegde
2026-07-01 14:16 ` [PATCH v6 21/23] virt/steal_monitor: Add direction control Shrikanth Hegde
2026-07-06 20:36 ` Yury Norov
2026-07-07 7:16 ` Shrikanth Hegde
2026-07-01 14:16 ` [PATCH v6 22/23] virt/steal_monitor: Add design check of preferred subset of active Shrikanth Hegde
2026-07-01 14:16 ` [PATCH v6 23/23] virt/steal_monitor: Optimise decrease_preferred_cpus when all CPUs are housekeeping 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=796920fb-7355-4c5f-aa7c-6ff8a4c55b7a@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=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=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=vschneid@redhat.com \
--cc=ynorov@nvidia.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.