On Tue, 2016-02-09 at 18:11 +0100, Frederic Weisbecker wrote: > On Tue, Feb 02, 2016 at 12:19:46PM -0500, [email protected] wrote: > > From: Rik van Riel <[email protected]> > > > > 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
signature.asc
Description: This is a digitally signed message part

