Messages in this thread | | | From | Morten Rasmussen <> | Subject | [PATCH 0/6] sched/fair: Compute capacity invariant load/utilization tracking | Date | Fri, 14 Aug 2015 17:23:08 +0100 |
| |
Per-entity load-tracking currently only compensates for frequency scaling for utilization tracking. This patch set extends this compensation to load as well, and adds compute capacity (different microarchitectures and/or max frequency/P-state) invariance to utilization. The former prevents suboptimal load-balancing decisions when cpus run at different frequencies, while the latter ensures that utilization (sched_avg.util_avg) can be compared across cpus and that utilization can be compared directly to cpu capacity to determine if the cpu is overloaded.
Note that this patch only contains the scheduler patches, the architecture specific implementations of arch_scale_{freq, cpu}_capacity() will be posted separately later.
The patches have posted several times before. Most recently as part of the energy-model driven scheduling RFCv5 patch set [1] (patch #2,4,6,8-12). That RFC also contains patches for the architecture specific side. In this posting the commit messages have been updated and the patches have been rebased on a more recent tip/sched/core that includes Yuyang's rewrite which made some of the previously posted patches redundant.
Target: ARM TC2 A7-only (x3) Test: hackbench -g 25 --threads -l 10000
Before After 315.545 313.408 -0.68%
Target: Intel(R) Core(TM) i5 CPU M 520 @ 2.40GHz Test: hackbench -g 25 --threads -l 1000 (avg of 10)
Before After 6.4643 6.395 -1.07%
[1] http://www.kernelhub.org/?p=2&msg=787634
Dietmar Eggemann (4): sched/fair: Make load tracking frequency scale-invariant sched/fair: Make utilization tracking cpu scale-invariant sched/fair: Name utilization related data and functions consistently sched/fair: Get rid of scaling utilization by capacity_orig
Morten Rasmussen (2): sched/fair: Convert arch_scale_cpu_capacity() from weak function to #define sched/fair: Initialize task load and utilization before placing task on rq
include/linux/sched.h | 8 ++-- kernel/sched/core.c | 4 +- kernel/sched/fair.c | 109 +++++++++++++++++++++++------------------------- kernel/sched/features.h | 5 --- kernel/sched/sched.h | 11 +++++ 5 files changed, 69 insertions(+), 68 deletions(-)
-- 1.9.1
| |