diff options
| author | Peter Zijlstra <[email protected]> | 2017-05-08 15:30:46 +0000 |
|---|---|---|
| committer | Ingo Molnar <[email protected]> | 2017-09-29 17:35:15 +0000 |
| commit | 0e2d2aaaae52c247c047d14999b93486bdbd3431 (patch) | |
| tree | 7bff425ce22d58f3cdd054065eec5b5bd2ea8edf /fs/proc/array.c | |
| parent | sched/fair: Rewrite cfs_rq->removed_*avg (diff) | |
| download | kernel-0e2d2aaaae52c247c047d14999b93486bdbd3431.tar.gz kernel-0e2d2aaaae52c247c047d14999b93486bdbd3431.zip | |
sched/fair: Rewrite PELT migration propagation
When an entity migrates in (or out) of a runqueue, we need to add (or
remove) its contribution from the entire PELT hierarchy, because even
non-runnable entities are included in the load average sums.
In order to do this we have some propagation logic that updates the
PELT tree, however the way it 'propagates' the runnable (or load)
change is (more or less):
tg->weight * grq->avg.load_avg
ge->avg.load_avg = ------------------------------
tg->load_avg
But that is the expression for ge->weight, and per the definition of
load_avg:
ge->avg.load_avg := ge->weight * ge->avg.runnable_avg
That destroys the runnable_avg (by setting it to 1) we wanted to
propagate.
Instead directly propagate runnable_sum.
Signed-off-by: Peter Zijlstra (Intel) <[email protected]>
Cc: Linus Torvalds <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Thomas Gleixner <[email protected]>
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected]>
Diffstat (limited to 'fs/proc/array.c')
0 files changed, 0 insertions, 0 deletions
