Re: [PATCH V4] irq: Track the interrupt timings
From: Nicolas Pitre
Date: Tue Jun 14 2016 - 11:10:25 EST
On Tue, 14 Jun 2016, Daniel Lezcano wrote:
> On 06/10/2016 04:52 PM, Thomas Gleixner wrote:
>
> > > + timings->sum -= timings->values[timings->w_index];
> > > + timings->values[timings->w_index] = diff;
> > > + timings->sum += diff;
> >
> > Now the real question is whether you really need all that math, checks and
> > memsets in the irq hotpath. If you make the storage slightly larger then you
> > can just store the values unconditionally in the circular buffer and do all
> > the computational stuff when you really it.
>
> Yes, that was one concern when I wrote the code: do some basic computation
> when an interrupt occurs, and the rest after or do the entire math when
> entering idle.
>
> If the storage is a bit larger (let's say 16 values) and there is no memset
> and the sum is not computed, at least we need a count for the number of values
> in the array before this one is fulfilled, otherwise the statistics will be
> wrong as we will take into account the entire array with old values, no ?
The point is not to change from 8 to 16 entries, but to store raw 64-bit
timestamps instead of computed 32-bit deltas. Whether or not those
timestamps are too far apart and discarded can be done at idle entry
time.
Nicolas