Re: [PATCH v2] sched/cputime: steal_account_process_tick() should return jiffies

From: Frederic Weisbecker
Date: Tue Mar 08 2016 - 07:30:00 EST


On Sat, Mar 05, 2016 at 11:18:48PM -0600, Chris Friesen wrote:
> 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@xxxxxxxxxxxxx>

Acked-by: Frederic Weisbecker <fweisbec@xxxxxxxxx>

Thanks Chris!