Re: [PATCH 04/32] nohz: Separate idle sleeping time accounting from nohz switching

Frederic Weisbecker
2011-08-29T22:53:26Z

On Mon, Aug 29, 2011 at 07:44:01PM +0200, Peter Zijlstra wrote:
> On Mon, 2011-08-29 at 18:32 +0200, Frederic Weisbecker wrote:
> > On Mon, Aug 29, 2011 at 04:23:19PM +0200, Peter Zijlstra wrote:
> > > On Mon, 2011-08-15 at 17:52 +0200, Frederic Weisbecker wrote:
> > > > To prepare for having nohz mode switching independant from idle,
> > > > pull the idle sleeping time accounting out of the tick stop API.
> > > >
> > > > This implies to implement some new API to call when we
> > > > enter/exit idle.
> > >
> > > I mean, I really love brevity, but you seem to just not state all the
> > > important bits ;-)
> > >
> > > So the goal is to disable the tick more often (say when running 1
> > > userbound task), why does that need new hooks? If we already had the
> > > tick disabled, the tick_nohz_stop_sched_tick() call on going idle will
> > > simply not do anything.
> > >
> > > If we go from idle to running something we want to enable the tick
> > > initially because doing the task wakeup involves RCU etc.. Once we find
> > > the task is indeed userbound and we've finished all our state we can
> > > disable the thing again.
> >
> > That's because we are going to have two different sources of stop/restarting
> > the tick: either idle or a random task. In the case of idle we have very
> > specific things to handle like idle time accounting, idle stats, rcu, ...
> >
> > I could do these things conditionally using a some idle_cpu() checks but
> > the end result would not be very proper.
>
> Right, but you didn't explain any of that in the changelog. So the
> reasoning is that because tick_nohz_stop_sched_tick() does more than
> just stop the tick, and this extra work needs to be isolated to just the
> idle case, therefore we need hooks specific for the idle loop.

Right, I'll update the changelog.