Re: [PATCH 2/4] timer: relax tick stop in idle entry

From: Paul E. McKenney
Date: Tue Nov 17 2015 - 08:49:48 EST


On Tue, Nov 17, 2015 at 04:57:21AM -0800, Jacob Pan wrote:
> On Tue, 17 Nov 2015 11:24:49 +0100
> Peter Zijlstra <peterz@xxxxxxxxxxxxx> wrote:
>
> > On Mon, Nov 16, 2015 at 09:04:03PM -0800, Paul E. McKenney wrote:
> > > On Mon, Nov 16, 2015 at 06:57:14PM -0800, Arjan van de Ven wrote:
> > > > On 11/16/2015 6:53 PM, Paul E. McKenney wrote:
> > > > >Fair point. When in the five-jiffy throttling state, what can
> > > > >wake up a CPU? In an earlier version of this proposal, the
> > > > >answer was "nothing", but maybe that has changed.
> > > >
> > > > device interrupts are likely to wake the cpus.
> > >
> > > OK, that I cannot help you with. But presumably if the interrupt
> > > handler does a wakeup (or similar), that is deferred to the end of
> > > the throttling interval? Timers are also deferred, including
> > > hrtimers?
> >
> > This throttling thing only throttles 'normal' tasks, real-time tasks
> > will still run.

Heh! Then RCU will be delayed or not based on the priority of the
grace-period kthreads and softirqd. ;-)

In addition, this does sound like an excellent test for priority-inversion
situations that might otherwise go unnoticed on overprovisioned systems.
That said, I would expect many types of real-time systems to configure
voltage, frequency, and cooling so as to avoid thermal throttling.

> As an optimization or option, it might be useful to further defer the
> next timer interrupt if it falls within the idle injection period. But
> I guess we don't know if that timer belongs to a normal task or rt.
> Also we there could be more than one 'next' timer interrupts fall into
> that injection idle period.

Understood. This brings me back to my recommendation that throttling
select RCU_FAST_NO_HZ unless RCU_NOCB_CPU_ALL is already set.

Thanx, Paul

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/