[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <aIcdTI3e04W_RdM_@gmail.com>
Date: Mon, 28 Jul 2025 08:48:44 +0200
From: Ingo Molnar <mingo@...nel.org>
To: Linus Torvalds <torvalds@...ux-foundation.org>
Cc: linux-kernel@...r.kernel.org, Peter Zijlstra <peterz@...radead.org>,
Thomas Gleixner <tglx@...utronix.de>,
Juri Lelli <juri.lelli@...hat.com>,
Vincent Guittot <vincent.guittot@...aro.org>,
Dietmar Eggemann <dietmar.eggemann@....com>,
Steven Rostedt <rostedt@...dmis.org>, Mel Gorman <mgorman@...e.de>,
Tejun Heo <tj@...nel.org>, Valentin Schneider <vschneid@...hat.com>,
Shrikanth Hegde <sshegde@...ux.ibm.com>
Subject: [GIT PULL] Scheduler updates for v6.17
Linus,
Please pull the latest sched/core Git tree from:
git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git sched-core-2025-07-28
# HEAD: 1b5f1454091e9e9fb5c944b3161acf4ec0894d0d sched/idle: Remove play_idle()
Scheduler updates for v6.17:
Core scheduler changes:
- Better tracking of maximum lag of tasks in presence of different
slices duration, for better handling of lag in the fair
scheduler. (Vincent Guittot)
- Clean up and standardize #if/#else/#endif markers throughout
the entire scheduler code base (Ingo Molnar)
- Make SMP unconditional: build the SMP scheduler's
data structures and logic on UP kernel too, even though
they are not used, to simplify the scheduler and remove
around 200 #ifdef/[#else]/#endif blocks from the
scheduler. (Ingo Molnar)
- Reorganize cgroup bandwidth control interface handling
for better interfacing with sched_ext (Tejun Heo)
Balancing:
- Bump sd->max_newidle_lb_cost when newidle balance fails (Chris Mason)
- Remove sched_domain_topology_level::flags to simplify the code (Prateek Nayak)
- Simplify and clean up build_sched_topology() (Li Chen)
- Optimize build_sched_topology() on large machines (Li Chen)
Real-time scheduling:
- Add initial version of proxy execution: a mechanism for mutex-owning
tasks to inherit the scheduling context of higher priority waiters.
Currently limited to a single runqueue and conditional on CONFIG_EXPERT,
and other limitations. (John Stultz, Peter Zijlstra, Valentin Schneider)
- Deadline scheduler (Juri Lelli):
- Fix dl_servers initialization order (Juri Lelli)
- Fix DL scheduler's root domain reinitialization logic (Juri Lelli)
- Fix accounting bugs after global limits change (Juri Lelli)
- Fix scalability regression by implementing less agressive dl_server handling
(Peter Zijlstra)
PSI:
- Improve scalability by optimizing psi_group_change() cpu_clock() usage
(Peter Zijlstra)
Rust changes:
- Make Task, CondVar and PollCondVar methods inline to avoid unnecessary
function calls (Kunwu Chan, Panagiotis Foliadis)
- Add might_sleep() support for Rust code: Rust's "#[track_caller]"
mechanism is used so that Rust's might_sleep() doesn't need to be
defined as a macro (Fujita Tomonori)
- Introduce file_from_location() (Boqun Feng)
Debugging & instrumentation:
- Make clangd usable with scheduler source code files again (Peter Zijlstra)
- tools: Add root_domains_dump.py which dumps root domains info (Juri Lelli)
- tools: Add dl_bw_dump.py for printing bandwidth accounting info (Juri Lelli)
Misc cleanups & fixes:
- Remove play_idle() (Feng Lee)
- Fix check_preemption_disabled() (Sebastian Andrzej Siewior)
- Do not call __put_task_struct() on RT if pi_blocked_on is set
(Luis Claudio R. Goncalves)
- Correct the comment in place_entity() (wang wei)
Thanks,
Ingo
------------------>
Boqun Feng (1):
rust: Introduce file_from_location()
Chris Mason (1):
sched/fair: Bump sd->max_newidle_lb_cost when newidle balance fails
FUJITA Tomonori (1):
rust: task: Add Rust version of might_sleep()
Feng Lee (1):
sched/idle: Remove play_idle()
Ingo Molnar (43):
sched: Clean up and standardize #if/#else/#endif markers in sched/autogroup.[ch]
sched: Clean up and standardize #if/#else/#endif markers in sched/clock.c
sched: Clean up and standardize #if/#else/#endif markers in sched/core.c
sched: Clean up and standardize #if/#else/#endif markers in sched/cpufreq_schedutil.c
sched: Clean up and standardize #if/#else/#endif markers in sched/cpupri.h
sched: Clean up and standardize #if/#else/#endif markers in sched/cputime.c
sched: Clean up and standardize #if/#else/#endif markers in sched/deadline.c
sched: Clean up and standardize #if/#else/#endif markers in sched/debug.c
sched: Clean up and standardize #if/#else/#endif markers in sched/fair.c
sched: Clean up and standardize #if/#else/#endif markers in sched/idle.c
sched: Clean up and standardize #if/#else/#endif markers in sched/loadavg.c
sched: Clean up and standardize #if/#else/#endif markers in sched/pelt.[ch]
sched: Clean up and standardize #if/#else/#endif markers in sched/psi.c
sched: Clean up and standardize #if/#else/#endif markers in sched/rt.c
sched: Clean up and standardize #if/#else/#endif markers in sched/sched.h
sched: Clean up and standardize #if/#else/#endif markers in sched/stats.[ch]
sched: Clean up and standardize #if/#else/#endif markers in sched/syscalls.c
sched: Clean up and standardize #if/#else/#endif markers in sched/topology.c
sched/smp: Always define sched_domains_mutex_lock()/unlock(), def_root_domain and sched_domains_mutex
sched/smp: Make SMP unconditional
sched/smp: Always define is_percpu_thread() and scheduler_ipi()
sched/smp: Always define rq->hrtick_csd
sched/smp: Use the SMP version of try_to_wake_up()
sched/smp: Use the SMP version of __task_needs_rq_lock()
sched/smp: Use the SMP version of wake_up_new_task()
sched/smp: Use the SMP version of sched_exec()
sched/smp: Use the SMP version of idle_thread_set_boot_cpu()
sched/smp: Use the SMP version of the RT scheduling class
sched/smp: Use the SMP version of the deadline scheduling class
sched/smp: Use the SMP version of scheduler debugging data
sched/smp: Use the SMP version of schedstats
sched/smp: Use the SMP version of the scheduler syscalls
sched/smp: Use the SMP version of sched_update_asym_prefer_cpu()
sched/smp: Use the SMP version of the idle scheduling class
sched/smp: Use the SMP version of the stop-CPU scheduling class
sched/smp: Use the SMP version of cpu_of()
sched/smp: Use the SMP version of is_migration_disabled()
sched/smp: Use the SMP version of rq_pin_lock()
sched/smp: Use the SMP version of task_on_cpu()
sched/smp: Use the SMP version of WF_ and SD_ flag sanity checks
sched/smp: Use the SMP version of ENQUEUE_MIGRATED
sched/smp: Use the SMP version of add_nr_running()
sched/smp: Use the SMP version of double_rq_clock_clear_update()
John Stultz (4):
sched: Add CONFIG_SCHED_PROXY_EXEC & boot argument to enable/disable
sched: Move update_curr_task logic into update_curr_se
sched: Fix runtime accounting w/ split exec & sched contexts
sched: Add an initial sketch of the find_proxy_task() function
Juri Lelli (5):
sched/deadline: Initialize dl_servers after SMP
sched/deadline: Reset extra_bw to max_bw when clearing root domains
sched/deadline: Fix accounting after global limits change
tools/sched: Add root_domains_dump.py which dumps root domains info
tools/sched: Add dl_bw_dump.py for printing bandwidth accounting info
K Prateek Nayak (1):
sched/topology: Remove sched_domain_topology_level::flags
Kunwu Chan (2):
rust: sync: Mark CondVar::notify_*() inline
rust: sync: Mark PollCondVar::drop() inline
Li Chen (4):
smpboot: introduce SDTL_INIT() helper to tidy sched topology setup
x86/smpboot: remove redundant CONFIG_SCHED_SMT
x86/smpboot: moves x86_topology to static initialize and truncate
x86/smpboot: avoid SMT domain attach/destroy if SMT is not enabled
Luis Claudio R. Goncalves (1):
sched: Do not call __put_task_struct() on rt if pi_blocked_on is set
Panagiotis Foliadis (1):
rust: task: Mark Task methods inline
Peter Zijlstra (5):
sched: Make clangd usable
sched/psi: Optimize psi_group_change() cpu_clock() usage
sched/deadline: Less agressive dl_server handling
locking/mutex: Rework task_struct::blocked_on
sched: Start blocked_on chain processing in find_proxy_task()
Sebastian Andrzej Siewior (1):
lib/smp_processor_id: Make migration check unconditional of SMP
Tejun Heo (4):
sched/fair: Move max_cfs_quota_period decl and default_cfs_period() def from fair.c to sched.h
sched/core: Relocate tg_get_cfs_*() and cpu_cfs_*_read_*()
sched/core: Reorganize cgroup bandwidth control interface file reads
sched/core: Reorganize cgroup bandwidth control interface file writes
Valentin Schneider (2):
locking/mutex: Add p->blocked_on wrappers for correctness checks
sched: Fix proxy/current (push,pull)ability
Vincent Guittot (6):
sched/fair: Use protect_slice() instead of direct comparison
sched/fair: Fix NO_RUN_TO_PARITY case
sched/fair: Remove spurious shorter slice preemption
sched/fair: Limit run to parity to the min slice of enqueued entities
sched/fair: Fix entity's lag with run to parity
sched/fair: Always trigger resched at the end of a protected period
wang wei (1):
sched/eevdf: Correct the comment in place_entity
Documentation/admin-guide/kernel-parameters.txt | 5 +
MAINTAINERS | 1 +
arch/powerpc/kernel/smp.c | 25 +-
arch/s390/kernel/topology.c | 10 +-
arch/x86/kernel/smpboot.c | 51 +-
include/linux/cpu.h | 5 -
include/linux/preempt.h | 9 -
include/linux/psi_types.h | 6 +-
include/linux/sched.h | 148 ++--
include/linux/sched/deadline.h | 4 -
include/linux/sched/idle.h | 4 -
include/linux/sched/nohz.h | 4 +-
include/linux/sched/sd_flags.h | 8 -
include/linux/sched/task.h | 31 +-
include/linux/sched/topology.h | 39 +-
init/Kconfig | 15 +
kernel/fork.c | 3 +-
kernel/locking/mutex-debug.c | 9 +-
kernel/locking/mutex.c | 18 +
kernel/locking/mutex.h | 3 +-
kernel/locking/ww_mutex.h | 16 +-
kernel/sched/autogroup.c | 9 +-
kernel/sched/autogroup.h | 6 +-
kernel/sched/build_policy.c | 6 +-
kernel/sched/build_utility.c | 9 +-
kernel/sched/clock.c | 7 +-
kernel/sched/completion.c | 5 +
kernel/sched/core.c | 869 ++++++++++++++----------
kernel/sched/core_sched.c | 2 +
kernel/sched/cpuacct.c | 2 +
kernel/sched/cpudeadline.c | 1 +
kernel/sched/cpudeadline.h | 4 +-
kernel/sched/cpufreq.c | 1 +
kernel/sched/cpufreq_schedutil.c | 6 +-
kernel/sched/cpupri.c | 1 +
kernel/sched/cpupri.h | 5 +-
kernel/sched/cputime.c | 17 +-
kernel/sched/deadline.c | 208 +++---
kernel/sched/debug.c | 47 +-
kernel/sched/fair.c | 408 ++++-------
kernel/sched/idle.c | 15 +-
kernel/sched/isolation.c | 2 +
kernel/sched/loadavg.c | 6 +-
kernel/sched/membarrier.c | 2 +
kernel/sched/pelt.c | 5 +-
kernel/sched/pelt.h | 67 +-
kernel/sched/psi.c | 129 ++--
kernel/sched/rt.c | 112 +--
kernel/sched/sched-pelt.h | 1 +
kernel/sched/sched.h | 243 ++-----
kernel/sched/smp.h | 7 +
kernel/sched/stats.c | 5 +-
kernel/sched/stats.h | 10 +-
kernel/sched/stop_task.c | 5 +-
kernel/sched/swait.c | 1 +
kernel/sched/syscalls.c | 15 +-
kernel/sched/topology.c | 57 +-
kernel/sched/wait.c | 1 +
kernel/sched/wait_bit.c | 3 +
kernel/smpboot.c | 4 -
lib/smp_processor_id.c | 2 -
rust/helpers/task.c | 6 +
rust/kernel/lib.rs | 48 ++
rust/kernel/sync/condvar.rs | 3 +
rust/kernel/sync/poll.rs | 1 +
rust/kernel/task.rs | 33 +
tools/sched/dl_bw_dump.py | 57 ++
tools/sched/root_domains_dump.py | 68 ++
68 files changed, 1472 insertions(+), 1463 deletions(-)
create mode 100644 tools/sched/dl_bw_dump.py
create mode 100644 tools/sched/root_domains_dump.py
Powered by blists - more mailing lists