sched/cputime: Fix getrusage(RUSAGE_THREAD) with nohz_full
getrusage(RUSAGE_THREAD) with nohz_full may return shorter utime/stime
than the actual time.
task_cputime_adjusted() snapshots utime and stime and then adjust their
sum to match the scheduler maintained cputime.sum_exec_runtime.
Unfortunately in nohz_full, sum_exec_runtime is only updated once per
second in the worst case, causing a discrepancy against utime and stime
that can be updated anytime by the reader using vtime.
To fix this situation, perform an update of cputime.sum_exec_runtime
when the cputime snapshot reports the task as actually running while
the tick is disabled. The related overhead is then contained within the
Reported-by: Hasegawa Hitomi <email@example.com>
Signed-off-by: Frederic Weisbecker <firstname.lastname@example.org>
Signed-off-by: Hasegawa Hitomi <email@example.com>
Signed-off-by: Thomas Gleixner <firstname.lastname@example.org>
Tested-by: Masayoshi Mizuma <email@example.com>
Acked-by: Phil Auld <firstname.lastname@example.org>
2 files changed