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>