[PATCH v2 0/2] sched/loadavg: Fix loadavg spikes and sprinkle {READ,WRITE}_ONCE()

From: Matt Fleming
Date: Fri Feb 17 2017 - 07:07:40 EST

Peter, Frederic,

Here's a v2 of the patch series to fix the loadavg spikes I'm seeing
on a v3.12 based kernel, caused by delaying load sampling if a sample
period was crossed while in NO_HZ idle.

I tried to make the changelog for PATCH 1 clearer this time around by
incorporating suggestions from both of you. Please let me know if it's
still unclear.

PATCH 2 addresses Peter's comment:

"Irrespective the above though; should we not make this:

+ this_rq->calc_load_update = READ_ONCE(calc_load_update);

because if for some reason we do a double load of calc_load_update and
see two different values, weird stuff could happen.

And because, on general principle, a READ_ONCE() should be paired with a
WRITE_ONCE(), that should be done too I suppose."

The v1 of the patch can be found here:


Matt Fleming (2):
sched/loadavg: Avoid loadavg spikes caused by delayed NO_HZ accounting
sched/loadavg: Use {READ,WRITE}_ONCE() for sample window

kernel/sched/loadavg.c | 20 ++++++++++++--------
1 file changed, 12 insertions(+), 8 deletions(-)