Re: [RFC V2 2/2] sched: idle: IRQ based next prediction for idle period

From: Peter Zijlstra
Date: Wed Jan 20 2016 - 15:22:50 EST


On Wed, Jan 20, 2016 at 02:57:07PM -0500, Nicolas Pitre wrote:
> On Wed, 20 Jan 2016, Peter Zijlstra wrote:
>
> > On Wed, Jan 20, 2016 at 05:00:33PM +0100, Daniel Lezcano wrote:
> > > +static inline u32 stats_mean(struct stats *s)
> > > +{
> > > + /*
> > > + * gcc is smart enough to convert to a bits shift when the
> > > + * divisor is constant and multiple of 2^x.
> > > + *
> > > + * The number of values could have not reached STATS_NR_VALUES
> > > + * yet, but we can consider it acceptable as the situation is
> > > + * only at the beginning of the burst of irqs.
> > > + */
> > > + return s->sum / STATS_NR_VALUES;
> > > +}
> >
> > Note that ->sum is u64, so you're very prone to truncation.
>
> It won't. It is the sum of u32 values, so the mean of those values
> can't exceed 32 bits.

Ah indeed!