[PATCH v4 0/3] Utilization estimation (util_est) for FAIR tasks

From: Patrick Bellasi
Date: Tue Feb 06 2018 - 09:41:52 EST


Hi,

This is a respin of [1], still based on today's tip/sche/core [2], which
includes Juri's series [3] to integrate SCHED_DEADLINE into schedutil.

Thanks to everyone who provided feedback, all of them have been addressed.

Testing on Intel and ARM (Android) devices confirms the negligible overheads
and the power/performance benefits reported in the previous posting [1].

Changes in v4:
- rebased on today's tip/sched/core (commit 460e8c3340a2)
- renamed util_est's "last" into "enqueued"
- using util_est's "enqueued" for both se and cfs_rqs (Joel)
- update margin check to use more ASM friendly code (Peter)
- optimize EWMA updates (Peter)
- ensure cpu_util_wake() is cpu_capacity_orig()'s clamped (Pavan)
- simplify cpu_util_cfs() integration (Dietmar)

Changes in v3:
- rebased on today's tip/sched/core (commit 07881166a892)
- moved util_est into sched_avg (Peter)
- use {READ,WRITE}_ONCE() for EWMA updates (Peter)
- using unsigned int to fit all sched_avg into a single 64B cache line
- schedutil integration using Juri's cpu_util_cfs()
- first patch dropped since it's already queued in tip/sched/core

Changes in v2:
- rebased on top of v4.15-rc2
- tested that overhauled PELT code does not affect the util_est

Cheers Patrick

.:: References
==============
[1] https://lkml.org/lkml/2018/1/23/645
20180123180847.4477-1-patrick.bellasi@xxxxxxx
[2] git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git
sched/core (commit 460e8c3340a2)
[3] https://lkml.org/lkml/2017/12/4/173
20171204102325.5110-1-juri.lelli@xxxxxxxxxx


Patrick Bellasi (3):
sched/fair: add util_est on top of PELT
sched/fair: use util_est in LB and WU paths
sched/cpufreq_schedutil: use util_est for OPP selection

include/linux/sched.h | 16 +++++
kernel/sched/debug.c | 4 ++
kernel/sched/fair.c | 179 ++++++++++++++++++++++++++++++++++++++++++++++--
kernel/sched/features.h | 5 ++
kernel/sched/sched.h | 7 +-
5 files changed, 204 insertions(+), 7 deletions(-)

--
2.15.1