Re: [PATCH v2 4/5] sched/cpuacct: fix user/system in shown cpuacct.usage*

From: Daniel Jordan
Date: Fri Sep 10 2021 - 15:04:23 EST


On Fri, Aug 20, 2021 at 12:40:04PM +0300, Andrey Ryabinin wrote:
> cpuacct has 2 different ways of accounting and showing user
> and system times.
>
> The first one uses cpuacct_account_field() to account times
> and cpuacct.stat file to expose them. And this one seems to work ok.
>
> The second one is uses cpuacct_charge() function for accounting and
> set of cpuacct.usage* files to show times. Despite some attempts to
> fix it in the past it still doesn't work. Sometimes while running KVM
> guest the cpuacct_charge() accounts most of the guest time as
> system time. This doesn't match with user&system times shown in
> cpuacct.stat or proc/<pid>/stat.
>
> Demonstration:
> # git clone https://github.com/aryabinin/kvmsample
> # make
> # mkdir /sys/fs/cgroup/cpuacct/test
> # echo $$ > /sys/fs/cgroup/cpuacct/test/tasks
> # ./kvmsample &
> # for i in {1..5}; do cat /sys/fs/cgroup/cpuacct/test/cpuacct.usage_sys; sleep 1; done
> 1976535645
> 2979839428
> 3979832704
> 4983603153
> 5983604157

Thanks for expanding on this, and fixing broken cpuacct_charge.

For the series,
Reviewed-by: Daniel Jordan <daniel.m.jordan@xxxxxxxxxx>