Messages in this thread | | | Subject | Re: [PATCH 4/4] sched,time: only call account_{user,sys,guest,idle}_time once a jiffy | From | Rik van Riel <> | Date | Tue, 09 Feb 2016 13:13:06 -0500 |
| |
On Tue, 2016-02-09 at 18:11 +0100, Frederic Weisbecker wrote: > On Tue, Feb 02, 2016 at 12:19:46PM -0500, riel@redhat.com wrote: > > From: Rik van Riel <riel@redhat.com> > > > > After removing __acct_update_integrals from the profile, > > native_sched_clock remains as the top CPU user. This can be > > reduced by only calling account_{user,sys,guest,idle}_time > > once per jiffy for long running tasks on nohz_full CPUs. > > > > This will reduce timing accuracy on nohz_full CPUs to jiffy > > based sampling, just like on normal CPUs. > > Now after this patch, the scenario is rather different. We are > accounting the > real time spent in a slice with a similar probablity. > This becomes: T_slice * P(T_slice*HZ). > > So it seems it could result into logarithmic accounting: timeslices > of 1 second > will be accounted right whereas repeating tiny timeslices may result > in much lower > values than expected.
You are right that this code does not handle short timeslices well.
However, I believe it does not have to, because the scheduler already takes care of that.
At context switch time, the scheduler will call vtime_common_task_switch, which calls arch_vtime_task_switch, which handles precise time accounting at task switch time.
The call chain is like this:
arch_vtime_task_switch vtime_common_task_switch vtime_task_switch finish_task_switch context_switch __schedule
As you can see, the time accounting for shorter running tasks is already handled by other code, which means my patch should be ok.
-- All rights reversed [unhandled content-type:application/pgp-signature] | |