Re: statistics infrastructure (in -mm tree) review

Greg KH
2006-06-16T21:05:13Z

On Thu, Jun 15, 2006 at 12:49:54AM +0200, Martin Peschke wrote:
> Andi Kleen wrote:
> >Greg KH <greg@kroah.com> writes:
> >>>+ * exploiters don't update several statistics of the same entity in one
> >>>go.
> >>>+ */
> >>>+static inline void statistic_add(struct statistic *stat, int i,
> >>>+ s64 value, u64 incr)
> >>>+{
> >>>+ unsigned long flags;
> >>>+ local_irq_save(flags);
> >>>+ if (stat[i].state == STATISTIC_STATE_ON)
> >>>+ stat[i].add(&stat[i], smp_processor_id(), value, incr);
> >
> >
> >Indirect call in statistics hotpath? You know how slow this is
> >on IA64 and even on other architectures it tends to disrupt
> >the pipeline.
>
> Okay, let's try to improve it then. The options here are:
>
> a) Replace the indirect function call by a switch statement which directly
> calls the add function of the data processing mode chosen by user.
> (e.g. simple counter, histogram, utilisation indicator etc.).
>
> No loss in functionality, slightly uglier code, acceptable
> performance(?).
> This would be my choice.

Probably best. Just don't make it an inline function :)

thanks,

greg k-h