Re: [PATCH 3/4] sched: introduce synchronized idle injection

Morten Rasmussen
2015-11-18T14:04:02Z

On Wed, Nov 18, 2015 at 01:49:46PM +0100, Peter Zijlstra wrote:
> On Wed, Nov 18, 2015 at 12:27:04PM +0000, Morten Rasmussen wrote:
> > On Wed, Nov 18, 2015 at 11:35:41AM +0100, Peter Zijlstra wrote:
> > > On Wed, Nov 18, 2015 at 09:36:22AM +0100, Ingo Molnar wrote:
> > > > What will such throttling do to latencies, as observed by user-space tasks? What's
> > > > the typical expected frequency of the throttling frequency that you are targeting?
> > >
> > > The default has 5ms (iirc) of forced idle, so depending on what you do,
> > > noticeable to outright painful.
> >
> > IIUC, it is 5 ticks, not ms.
>
> The code uses hrtimers (badly), this means there _should_ not be a tick
> dependency.

Then I'm confused :-/

I see the hrtimers, but the actual idle duration appears to be in ticks
rather than ms and then converted later.

+/* Duration of idle time in ticks of each injection period */
+unsigned int sysctl_sched_cfs_idle_inject_duration = 5UL;

...and futher down we have:

+ duration_msec = jiffies_to_msecs(sysctl_sched_cfs_idle_inject_duration);

I will go back and look harder.

>
> > Which raises the question, doesn't that mean that we get disturbed four
> > times on each cpu during the forced idle period? So idle injection only
> > makes sense if the platform has package states with a target residency
> > less than a jiffy. Or, do we enter NOHZ idle? I haven't looked closely
> > enough to figure out yet.
>
> The idea is to hit NOHZ.

Nice!