<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="/source/rss.xsl.xml"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
    <title>Changes in steal_governor.c</title>
    <description></description>
    <language>en</language>
    <copyright>Copyright 2015</copyright>
    <generator>Java</generator><item>
        <title>cb95904b470d2d347012d5e360303cf478ca5362 - Merge tag &apos;sched-core-2026-10-18&apos; of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip</title>
        <link>http://kernelsources.org:8080/source/history/linux/drivers/virt/steal_governor.c#cb95904b470d2d347012d5e360303cf478ca5362</link>
        <description>Merge tag &apos;sched-core-2026-10-18&apos; of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tipPull scheduler updates from Ingo Molnar: &quot;Kconfig updates:   - Simplify PREEMPT_DYNAMIC (Mark Rutland)  Fair scheduler updates:   - Remove redundant RUN_TO_PARITY check (Elif Topuz)   - Declare augmented callbacks per field, fix     rb_add_augmented_cached() descent (Yiwei Lin, Peter Zijlstra)   - Restart fair hrtick after same-task repicks (Shubhang Kaushik)   - Improve the scheduling latency of short slice tasks (Vincent     Guittot)  Deadline/RT scheduler updates:   - Check start_dl_timer expiry with ktime_before() (Liang Hao)   - irq_work: CPU-hotplug improvements on PREEMPT_RT (Sebastian Andrzej     Siewior)  Energy-aware scheduling updates:   - Implement the steal_governor, introduce preferred CPUs and     steal-driven vCPU backoff (Shrikanth Hegde)  Multi-processor load-balancing updates:   - Enable preferred SMT siblings on NVIDIA Olympus (Andrea Righi)   - Randomize equally shallow idle CPU picks (Christian Loehle)   - Remove redundant core_sched_seq (Hui Su)  Cache-aware scheduling updates:   - Avoid publishing partial LLC utilization (Jemmy Wong)  NUMA-balancing updates:   - Reset NUMA fault locality after scan period update (Eric Kim)  Proxy execution updates:   - Ongoing work to implement sleeping owner handling for proxy     execution (John Stultz, Vasily Gorbik)   - Preparatory steps to make sched_ext compatible with proxy execution     (Andrea Righi)  Scheduler infrastructure updates &amp; fixes:   - Remove the RCU wait from PSI trigger destruction (Shakeel Butt)   - Avoid modifying wait-entry on failed priority registration     (Hui Su)   - Use the new static key API for sched_feat (Hongyan Xia)   - Convert paravirt_steal to new static key APIs (Hongyan Xia)   - cputime: Don&apos;t account idle time twice after dyntick-idle     (Stian Halseth)  Scheduler debugging updates:   - Set TIF_NEED_RESCHED before calling __trace_set_need_resched()     (Sechang Lim)   - Fix context analysis errors in non-preferred CPU push (Shrikanth     Hegde)  Misc cleanups and fixes by Christian Loehle, Shubhang Kaushik,  Thomas Huth and Vladimir Zapolskiy&quot;* tag &apos;sched-core-2026-10-18&apos; of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (64 commits)  sched: Replace nr_iowait_cpu() with a bool accessor  Revert &quot;sched/fair: Remove dead code on enqueue_task_fair()&quot;  sched/cache: Avoid publishing partial LLC utilization  sched/cputime: Don&apos;t account idle time twice after dyntick-idle  sched/psi: Remove the RCU wait from trigger destruction  sched/eevdf: Remove redundant RUN_TO_PARITY check  sched/wait: Avoid modifying entry on failed priority registration  rbtree_test: Use rb_add_augmented_cached() for the cached augmented test  rbtree: Update augmented data on the way down in rb_add_augmented_cached()  rbtree: Declare augmented callbacks per field with RB_AUG()  rbtree_test: Use rb_add() and rb_add_cached() for the basic tests  smpboot: Don&apos;t park the thread if work is pending  irq_work: Flush lazy work CPU down on PREEMPT_RT  irq_work: Update a comment regarding CPU hotplug invocation  sched/topology: Add asymmetric SMT packing override  sched/fair: Honor asymmetric SMT priority in idle selection  sched: Set TIF_NEED_RESCHED before calling __trace_set_need_resched()  sched/core: Fix context analysis errors in non-preferred CPU push  virt/steal_governor: Enable the driver  virt/steal_governor: Implement steal_governor policy loop  ...

            List of files:
            /linux/drivers/virt/steal_governor.c</description>
        <pubDate>Wed, 21 Oct 2026 00:35:35 +0200</pubDate>
        <dc:creator>Linus Torvalds &lt;torvalds@linux-foundation.org&gt;</dc:creator>
    </item>
<item>
        <title>27d47ebce4d6490ce093031a48cc2d81bf9997a3 - virt/steal_governor: Implement steal_governor policy loop</title>
        <link>http://kernelsources.org:8080/source/history/linux/drivers/virt/steal_governor.c#27d47ebce4d6490ce093031a48cc2d81bf9997a3</link>
        <description>virt/steal_governor: Implement steal_governor policy loopSchedule work at regular intervals to implement the steal_governorpolicy loop, which monitors steal time and takes action on the state ofpreferred CPUs. The interval is determined by the interval_ms parameter.schedule_delayed_work() is used since interval_ms is on the order ofmilliseconds and the work does not need to happen instantly.Periodic policy loop essentially does:- Gets the total/delta steal values and cpus to use steal_ratio.- Calculate the steal_ratio as below.       steal_ratio = (delta_steal * 100*100)/(delta_ns * num_cpus())  It is calculated this way to consider the fractional values of steal  time. I.e 10 means 0.1% steal time. A few tricks such as  divide by 10,000 are used to avoid possible overflow.- If steal ratio is higher than high threshold, call the method to reduce  the preferred CPUs.- If steal ratio is lower or equal to low threshold, call the method to  increase the preferred CPUs.- If the steal ratio falls in between, no action is taken.- Ensures design constraints always met.  1. At least one core/CPU must be there in preferred mask.  2. preferred CPUs is subset of active CPUs.  If not met, then restore preferred CPUs to active and stop  requeue of the work. Driver is effectively non-functional after that.Note that design checks are always performed. This helps avoid placingdriver-specific design constraints inside the core CPU hotplug mechanism.User may offline specific set of CPUs that could leave the preferredmask as empty. With the design check performed always, driver gracefullyshuts down upon detecting that edge case.In order to help the above loop, a few helper functions have been added.1. get_system_steal_time()- steal governor takes global view of steal time instead of individual  vCPU. Collect the steal values across the vCPUs of interest.- Sum up steal time values across possible CPUs. This helps to keep it  a monotonically increasing number and avoids spikes due to CPU  hotplug.2. decrease_preferred_cpus()- Called when there is high steal time. It needs to decide which CPUs to  mark as non-preferred.- Get first housekeeping CPU and its core mask. Mark it as  protected core. This helps to keep at least one core as preferred.  (kernel ensures at least one housekeeping CPU stays active.)- Find the last CPU outside of this protected core mask. i.e target CPU- Based on that target CPU, get its sibling and mark them as  non-preferred.3. increase_preferred_cpus()- Called when there is low steal time. It needs to decide which CPUs to  mark as preferred and set that state.- Get the first active non-preferred CPUs. This likely is the last  set of CPUs being marked as non-preferred.- get the siblings of that CPU and mark them as preferred.4. get_system_cpus()- informs how many CPUs needs to be considered for steal_ratio  calculations.- Since only active CPUs effectively contribute to steal time delta,  returns number of active CPUs. This also helps to avoid dilution of  thresholds in sparsely populated systems.Notes:1. Using core instead of individual CPUs performs better as SMT is   quite common and some hypervisor such as powerVM does core scheduling.2. This doesn&apos;t do any NUMA splicing to keep the code simpler and   minimal overhead. Current code expects CPUs spread uniformly   across NUMA nodes.Signed-off-by: Shrikanth Hegde &lt;sshegde@linux.ibm.com&gt;Signed-off-by: Peter Zijlstra (Intel) &lt;peterz@infradead.org&gt;Link: https://patch.msgid.link/20260928053728.797539-13-sshegde@linux.ibm.com

            List of files:
            /linux/drivers/virt/steal_governor.c</description>
        <pubDate>Mon, 28 Sep 2026 07:37:27 +0200</pubDate>
        <dc:creator>Shrikanth Hegde &lt;sshegde@linux.ibm.com&gt;</dc:creator>
    </item>
<item>
        <title>4b9302d494fffee7318bd9cdd2021198b6a7badd - virt/steal_governor: Add control knobs for handling steal values</title>
        <link>http://kernelsources.org:8080/source/history/linux/drivers/virt/steal_governor.c#4b9302d494fffee7318bd9cdd2021198b6a7badd</link>
        <description>virt/steal_governor: Add control knobs for handling steal valuesThese are the knobs to control the steal_governor.interval_ms:How often steal governor checks for steal time.(Default: 1000 i.e 1 second)This controls how fast steal governor driver reacts to changes tothe contention of physical CPUs.Can be set between 100 to 100000. i.e. 100ms to 100seconds.100ms is kept as minimum to ensure few meaningful steal valuesaccumulate even with HZ=100.low_threshold:lower threshold value in percentage * 100.(Default: 200, i.e 2% steal is considered as low threshold)This determines what values should be considered as nil/no steal values.When steal governor see steal ratio is below or equal to this value, itwill increase the preferred CPUs by 1 core. Having value as zeromight cause oscillationshigh_threshold:higher threshold value in percentage * 100(Default: 500, i.e 5% steal is considered as high threshold)This determines what values should be considered as high steal values.When steal governor sees steal ratio is higher than this value, it willreduce the preferred CPUs by 1 core.module_param_cb methods are used to do the validation checks.This helps to ensure one configures sane values.Since low and high are dependent, that check is done at module init.Notes:- Parameters values can&apos;t be changed at runtime. One has to unload  the module and change it. Hence recommended to build it as module.- Default values may not work well for all configurations. Tune it  according to the system under test.Documentation is available at: Documentation/driver-api/steal-governor.rstSuggested-by: Yury Norov &lt;yury.norov@gmail.com&gt;Signed-off-by: Shrikanth Hegde &lt;sshegde@linux.ibm.com&gt;Signed-off-by: Peter Zijlstra (Intel) &lt;peterz@infradead.org&gt;Link: https://patch.msgid.link/20260928053728.797539-12-sshegde@linux.ibm.com

            List of files:
            /linux/drivers/virt/steal_governor.c</description>
        <pubDate>Mon, 28 Sep 2026 07:37:26 +0200</pubDate>
        <dc:creator>Shrikanth Hegde &lt;sshegde@linux.ibm.com&gt;</dc:creator>
    </item>
<item>
        <title>9a8e740ee9f69ec857ffa0c76cf1a01d1cb7360f - virt: Introduce steal governor driver</title>
        <link>http://kernelsources.org:8080/source/history/linux/drivers/virt/steal_governor.c#9a8e740ee9f69ec857ffa0c76cf1a01d1cb7360f</link>
        <description>virt: Introduce steal governor driverIntroduce a new driver in virt named steal_governor. This driverwill compute the steal time and drive the policy decisions regarding thepreferred CPU state.Note that this driver is strictly intended for actual guests. Henceblock it on Xen dom0.More details can be found in Documentation/driver-api/steal-governor.rst.A new kconfig called STEAL_GOVERNOR is introduced in subsequent patches,which enables this driver. This driver will select CONFIG_PREFERRED_CPU.This makes configs driven by user preference/configuration.When the driver is disabled, preferred CPUs remain the same as active CPUs.The file layout of the driver is kept simple for now. The code is indrivers/virt/steal_governor.c, and the configs are part ofdrivers/virt/Kconfig.The main structure of the steal governor contains:- work, delay: Deferred periodic work function variables.- steal, time: Used to calculate deltas during periodic work.- interval_ms, high_threshold, low_threshold: Tuning knobs for the  steal governor.While there, add MAINTAINERS entry for this new driver.Suggested-by: Yury Norov &lt;yury.norov@gmail.com&gt;Suggested-by: K Prateek Nayak &lt;kprateek.nayak@amd.com&gt;Signed-off-by: Shrikanth Hegde &lt;sshegde@linux.ibm.com&gt;Signed-off-by: Peter Zijlstra (Intel) &lt;peterz@infradead.org&gt;Link: https://patch.msgid.link/20260928053728.797539-11-sshegde@linux.ibm.com

            List of files:
            /linux/drivers/virt/steal_governor.c</description>
        <pubDate>Mon, 28 Sep 2026 07:37:25 +0200</pubDate>
        <dc:creator>Shrikanth Hegde &lt;sshegde@linux.ibm.com&gt;</dc:creator>
    </item>
</channel>
</rss>
