e7f2be115f
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 relevant situations. Reported-by: Hasegawa Hitomi <hasegawa-hitomi@fujitsu.com> Signed-off-by: Frederic Weisbecker <frederic@kernel.org> Signed-off-by: Hasegawa Hitomi <hasegawa-hitomi@fujitsu.com> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Tested-by: Masayoshi Mizuma <m.mizuma@jp.fujitsu.com> Acked-by: Phil Auld <pauld@redhat.com> Link: https://lore.kernel.org/r/20211026141055.57358-3-frederic@kernel.org |
||
---|---|---|
.. | ||
autogroup.h | ||
clock.h | ||
coredump.h | ||
cpufreq.h | ||
cputime.h | ||
deadline.h | ||
debug.h | ||
hotplug.h | ||
idle.h | ||
init.h | ||
isolation.h | ||
jobctl.h | ||
loadavg.h | ||
mm.h | ||
nohz.h | ||
numa_balancing.h | ||
prio.h | ||
rt.h | ||
sd_flags.h | ||
signal.h | ||
smt.h | ||
stat.h | ||
sysctl.h | ||
task.h | ||
task_stack.h | ||
topology.h | ||
types.h | ||
user.h | ||
wake_q.h | ||
xacct.h |