[PATCH 0/2] sched/cfs: make util/load_avg stable

From: Vincent Guittot
Date: Wed Apr 19 2017 - 13:12:08 EST


In the current implementation of load/util_avg, we assume that the ongoing
time segment has fully elapsed and util/load_sum is divided by LOAD_AVG_MAX,
even if part of the time segment still remains to run . As a consequence,
this remaining part is considered as idle time and generates unexpected
variations of util_avg of a busy CPU in the range ]1002..1024[ whereas
util_avg should stay at 1023.

The 1st patch implements Peter's proposal to remove the contribution of the
current time segment when computing the util/load_avg. The 2nd one keeps
using the current segment but update the max value instead. Both solutions
make load/util_avg being stable with the advantage of using the most up to
date value for the 2nd patch. I have split it into 2 patches to show the 2
versions but if the 2nd patch looks ok, we should probably squashed them into
one.

Vincent Guittot (2):
sched/cfs: make util/load_avg more stable
sched/cfs: take into account current segment

kernel/sched/fair.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

--
2.7.4