[GIT PULL] scheduler changes for v5.5

From: Ingo Molnar
Date: Mon Nov 25 2019 - 07:59:51 EST


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: de881a341c4143650fa50ce95cf450a5c94faa9f Merge branch 'sched/rt' into sched/core, to pick up commit

The biggest changes in this cycle were:

- Make kcpustat vtime aware (Frederic Weisbecker)

- Rework the CFS load_balance() logic (Vincent Guittot)

- Misc cleanups, smaller enhancements, fixes.

The load-balancing rework is the most intrusive change: it replaces the
old heuristics that have become less meaningful after the introduction of
the PELT metrics, with a grounds-up load-balancing algorithm.

As such it's not really an iterative series, but replaces the old
load-balancing logic with the new one. We hope there are no performance
regressions left - but statistically it's highly probable that there *is*
going to be some workload that is hurting from these chnages. If so then
we'd prefer to have a look at that workload and fix its scheduling,
instead of reverting the changes.



Frederic Weisbecker (22):
sched/cputime: Rename vtime_account_system() to vtime_account_kernel()
sched/cputime: Spare a seqcount lock/unlock cycle on context switch
sched/vtime: Record CPU under seqcount for kcpustat needs
sched/cputime: Add vtime idle task state
sched/cputime: Add vtime guest task state
context_tracking: Remove context_tracking_active()
context_tracking: Rename context_tracking_is_enabled() => context_tracking_enabled()
context_tracking: Rename context_tracking_is_cpu_enabled() to context_tracking_enabled_this_cpu()
context_tracking: Introduce context_tracking_enabled_cpu()
sched/vtime: Rename vtime_accounting_cpu_enabled() to vtime_accounting_enabled_this_cpu()
sched/vtime: Introduce vtime_accounting_enabled_cpu()
context_tracking: Check static key on context_tracking_enabled_*cpu()
sched/kcpustat: Introduce vtime-aware kcpustat accessor for CPUTIME_SYSTEM
procfs: Use vtime aware kcpustat accessor to fetch CPUTIME_SYSTEM
cpufreq: Use vtime aware kcpustat accessor to fetch CPUTIME_SYSTEM
leds: Use vtime aware kcpustat accessor to fetch CPUTIME_SYSTEM
sched/cputime: Support other fields on kcpustat_field()
sched/vtime: Bring up complete kcpustat accessor
procfs: Use all-in-one vtime aware kcpustat accessor
cpufreq: Use vtime aware kcpustat accessors for user time
leds: Use all-in-one vtime aware kcpustat accessor
rackmeter: Use vtime aware kcpustat accessor

Patrick Bellasi (1):
sched/fair/util_est: Implement faster ramp-up EWMA on utilization increases

Peter Zijlstra (6):
sched/fair: Better document newidle_balance()
sched/core: Make pick_next_task_idle() more consistent
sched/core: Optimize pick_next_task()
sched/core: Simplify sched_class::pick_next_task()
sched/fair: Use mul_u32_u32()
sched/core: Further clarify sched_class::set_next_task()

Srivatsa S. Bhat (VMware) (1):
sched/Kconfig: Fix spelling mistake in user-visible help text

Valentin Schneider (2):
sched/topology: Don't set SD_BALANCE_WAKE on cpuset domain relax
sched/uclamp: Fix overzealous type replacement

Vincent Guittot (14):
sched/fair: Clean up asym packing
sched/fair: Rename sg_lb_stats::sum_nr_running to sum_h_nr_running
sched/fair: Remove meaningless imbalance calculation
sched/fair: Rework load_balance()
sched/fair: Use rq->nr_running when balancing load
sched/fair: Use load instead of runnable load in load_balance()
sched/fair: Spread out tasks evenly when not overloaded
sched/fair: Use utilization to select misfit task
sched/fair: Use load instead of runnable load in wakeup path
sched/fair: Optimize find_idlest_group()
sched/fair: Rework find_idlest_group()
sched/fair: Fix rework of find_idlest_group()
sched/fair: Add comments for group_type and balancing at SD_NUMA level
sched/cpufreq: Move the cfs_rq_util_change() call to cpufreq_update_util()

arch/ia64/kernel/time.c | 4 +-
arch/powerpc/kernel/time.c | 6 +-
arch/s390/kernel/vtime.c | 4 +-
arch/x86/entry/calling.h | 2 +-
drivers/cpufreq/cpufreq.c | 17 +-
drivers/cpufreq/cpufreq_governor.c | 6 +-
drivers/leds/trigger/ledtrig-activity.c | 14 +-
drivers/macintosh/rack-meter.c | 7 +-
fs/proc/stat.c | 56 +-
include/linux/context_tracking.h | 30 +-
include/linux/context_tracking_state.h | 21 +-
include/linux/kernel_stat.h | 18 +
include/linux/sched.h | 9 +-
include/linux/tick.h | 2 +-
include/linux/vtime.h | 59 +-
kernel/Kconfig.preempt | 2 +-
kernel/context_tracking.c | 6 +-
kernel/sched/core.c | 18 +-
kernel/sched/cputime.c | 288 ++++++-
kernel/sched/deadline.c | 12 +-
kernel/sched/fair.c | 1437 +++++++++++++++++++------------
kernel/sched/features.h | 1 +
kernel/sched/idle.c | 10 +-
kernel/sched/rt.c | 12 +-
kernel/sched/sched.h | 25 +-
kernel/sched/stop_task.c | 9 +-
kernel/sched/topology.c | 9 +-
kernel/time/tick-sched.c | 2 +-
28 files changed, 1331 insertions(+), 755 deletions(-)