[GIT PULL] scheduler changes for v5.7
From: Ingo Molnar
Date: Mon Mar 30 2020 - 13:32:06 EST
Linus,
Please pull the latest sched-core-for-linus git tree from:
git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git sched-core-for-linus
# HEAD: 313f16e2e35abb833eab5bdebc6ae30699adca18 Merge branch 'sched/rt' into sched/core, to pick up completed topic tree
The main changes in this cycle are:
- Various NUMA scheduling updates: harmonize the load-balancer and NUMA
placement logic to not work against each other. The intended result is
better locality, better utilization and fewer migrations.
- Introduce Thermal Pressure tracking and optimizations, to improve task
placement on thermally overloaded systems.
- Implement frequency invariant scheduler accounting on (some) x86 CPUs.
This is done by observing and sampling the 'recent' CPU frequency
average at ~tick boundaries. The CPU provides this data via the
APERF/MPERF MSRs. This hopefully makes our capacity estimates more
precise and keeps tasks on the same CPU better even if it might seem
overloaded at a lower momentary frequency. (As usual, turbo mode is a
complication that we resolve by observing the maximum frequency and
renormalizing to it.)
- Add asymmetric CPU capacity wakeup scan to improve capacity
utilization on asymmetric topologies. (big.LITTLE systems)
- PSI fixes and optimizations.
- RT scheduling capacity awareness fixes & improvements.
- Optimize the CONFIG_RT_GROUP_SCHED constraints code.
- Misc fixes, cleanups and optimizations - see the changelog for details.
Thanks,
Ingo
------------------>
Chris Wilson (1):
sched/vtime: Prevent unstable evaluation of WARN(vtime->state)
Giovanni Gherdovich (6):
x86, sched: Add support for frequency invariance
x86, sched: Add support for frequency invariance on SKYLAKE_X
x86, sched: Add support for frequency invariance on XEON_PHI_KNL/KNM
x86, sched: Add support for frequency invariance on ATOM_GOLDMONT*
x86, sched: Add support for frequency invariance on ATOM
x86/intel_pstate: Handle runtime turbo disablement/enablement in frequency invariance
Ingo Molnar (1):
thermal/cpu-cooling, sched/core: Move the arch_set_thermal_pressure() API to generic scheduler code
Jann Horn (1):
threads: Update PID limit comment according to futex UAPI change
Johannes Weiner (3):
psi: Fix cpu.pressure for cpu.max and competing cgroups
psi: Optimize switching tasks inside shared cgroups
MAINTAINERS: Add maintenance information for psi
Konstantin Khlebnikov (1):
sched/rt: Optimize checking group RT scheduler constraints
Liang Chen (1):
kthread: Do not preempt current task if it is going to call schedule()
Mel Gorman (8):
sched/numa: Trace when no candidate CPU was found on the preferred node
sched/numa: Distinguish between the different task_numa_migrate() failure cases
sched/numa: Use similar logic to the load balancer for moving between domains with spare capacity
sched/numa: Prefer using an idle CPU as a migration target instead of comparing tasks
sched/numa: Find an alternative idle CPU if the CPU is part of an active NUMA balance
sched/numa: Bias swapping tasks based on their preferred node
sched/numa: Stop an exhastive search if a reasonable swap candidate or idle CPU is found
sched/numa: Acquire RCU lock for checking idle cores during NUMA balancing
Michael Wang (1):
sched: Avoid scale real weight down to zero
Morten Rasmussen (3):
sched/fair: Add asymmetric CPU capacity wakeup scan
sched/topology: Remove SD_BALANCE_WAKE on asymmetric capacity systems
sched/fair: Remove wake_cap()
Paul Turner (1):
sched/core: Distribute tasks within affinity masks
Qais Yousef (6):
sched/rt: cpupri_find: Implement fallback mechanism for !fit case
sched/rt: Re-instate old behavior in select_task_rq_rt()
sched/rt: Optimize cpupri_find() on non-heterogenous systems
sched/rt: Allow pulling unfitting task
sched/rt: Remove unnecessary push for unfit tasks
sched/rt: cpupri_find: Trigger a full search as fallback
Scott Wood (1):
sched/core: Remove duplicate assignment in sched_tick_remote()
Srikar Dronamraju (1):
sched/fair: Optimize select_idle_core()
Tao Zhou (1):
sched/fair: Fix condition of avg_load calculation
Thara Gopinath (9):
sched/pelt: Add support to track thermal pressure
sched/topology: Add callback to read per CPU thermal pressure
drivers/base/arch_topology: Add infrastructure to store and update instantaneous thermal pressure
arm64/topology: Populate arch_scale_thermal_pressure() for arm64 platforms
arm/topology: Populate arch_scale_thermal_pressure() for ARM platforms
sched/fair: Enable periodic update of average thermal pressure
sched/fair: Update cpu_capacity to reflect thermal pressure
thermal/cpu-cooling: Update thermal pressure in case of a maximum frequency capping
sched/fair: Enable tuning of decay period
Thomas Gleixner (2):
sched/rt: Provide migrate_disable/enable() inlines
sched: Provide cant_migrate()
Valentin Schneider (4):
sched/core: Remove for_each_lower_domain()
sched/fair: Fix kernel build warning in test_idle_cores() for !SMT NUMA
sched/topology: Don't enable EAS on SMT systems
arm64: defconfig: enable CONFIG_SCHED_SMT
Vincent Guittot (9):
sched/fair: Reorder enqueue/dequeue_task_fair path
sched/numa: Replace runnable_load_avg by load_avg
sched/pelt: Remove unused runnable load average
sched/pelt: Add a new runnable average signal
sched/fair: Take into account runnable_avg to classify group
sched/fair: Fix runnable_avg for throttled cfs
sched/fair: Fix reordering of enqueue/dequeue_task_fair()
sched/fair: Fix enqueue_task_fair warning
sched/fair: Improve spreading of utilization
Yafang Shao (1):
psi: Move PF_MEMSTALL out of task->flags
Yu Chen (1):
sched/deadline: Make two functions static
Documentation/admin-guide/kernel-parameters.txt | 16 +
Documentation/robust-futex-ABI.txt | 14 +-
MAINTAINERS | 6 +
arch/arm/include/asm/topology.h | 3 +
arch/arm64/configs/defconfig | 1 +
arch/arm64/include/asm/topology.h | 3 +
arch/x86/include/asm/topology.h | 25 +
arch/x86/kernel/smpboot.c | 290 ++++++++-
drivers/cpufreq/intel_pstate.c | 1 +
drivers/thermal/cpufreq_cooling.c | 19 +-
include/linux/arch_topology.h | 10 +
include/linux/cpumask.h | 7 +
include/linux/kernel.h | 7 +
include/linux/preempt.h | 30 +
include/linux/psi.h | 2 +
include/linux/psi_types.h | 10 +-
include/linux/sched.h | 37 +-
include/linux/sched/topology.h | 8 +
include/linux/threads.h | 2 +-
include/trace/events/sched.h | 53 +-
init/Kconfig | 4 +
kernel/kthread.c | 17 +-
kernel/sched/core.c | 27 +-
kernel/sched/cpupri.c | 158 +++--
kernel/sched/cpupri.h | 6 +-
kernel/sched/cputime.c | 41 +-
kernel/sched/deadline.c | 6 +-
kernel/sched/debug.c | 17 +-
kernel/sched/fair.c | 791 ++++++++++++++++--------
kernel/sched/pelt.c | 90 ++-
kernel/sched/pelt.h | 31 +
kernel/sched/psi.c | 111 +++-
kernel/sched/rt.c | 66 +-
kernel/sched/sched.h | 69 ++-
kernel/sched/stats.h | 31 +-
kernel/sched/topology.c | 27 +-
lib/cpumask.c | 29 +
37 files changed, 1552 insertions(+), 513 deletions(-)