Re: statistics infrastructure (in -mm tree) review

Martin Peschke
2006-06-16T21:34:58Z

Greg KH wrote:
> 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 :)

Andi, would this be fine with you?

Thanks, Martin