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

Frederic Weisbecker
2011-08-29T16:32:27Z

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.