Re: statistics infrastructure (in -mm tree) review

From: Martin Peschke
Date: Fri Jun 16 2006 - 17:33:50 EST


Greg KH wrote:
On Thu, Jun 15, 2006 at 12:49:54AM +0200, Martin Peschke wrote:
Andi Kleen wrote:
Greg KH <greg@xxxxxxxxx> 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 :)

Andi, would this be fine with you?

Thanks, Martin

-
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/