diff options
author | Chris Friesen <cbf123@mail.usask.ca> | 2016-03-05 23:18:48 -0600 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2016-03-08 12:24:56 +0100 |
commit | f9c904b7613b8b4c85b10cd6b33ad41b2843fa9d (patch) | |
tree | 96f16153b74572cf26a98c8028ffe315f5cbafe7 /kernel/events | |
parent | 72f9f3fdc928dc3ecd223e801b32d930b662b6ed (diff) | |
download | op-kernel-dev-f9c904b7613b8b4c85b10cd6b33ad41b2843fa9d.zip op-kernel-dev-f9c904b7613b8b4c85b10cd6b33ad41b2843fa9d.tar.gz |
sched/cputime: Fix steal_account_process_tick() to always return jiffies
The callers of steal_account_process_tick() expect it to return
whether a jiffy should be considered stolen or not.
Currently the return value of steal_account_process_tick() is in
units of cputime, which vary between either jiffies or nsecs
depending on CONFIG_VIRT_CPU_ACCOUNTING_GEN.
If cputime has nsecs granularity and there is a tiny amount of
stolen time (a few nsecs, say) then we will consider the entire
tick stolen and will not account the tick on user/system/idle,
causing /proc/stats to show invalid data.
The fix is to change steal_account_process_tick() to accumulate
the stolen time and only account it once it's worth a jiffy.
(Thanks to Frederic Weisbecker for suggestions to fix a bug in my
first version of the patch.)
Signed-off-by: Chris Friesen <chris.friesen@windriver.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
Cc: <stable@vger.kernel.org>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/56DBBDB8.40305@mail.usask.ca
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'kernel/events')
0 files changed, 0 insertions, 0 deletions