Re: [BUG] perf_event: inst_retired:any_p:c=16:i=1 is not equivalentto cpu_clk_unhalted:thread_p

From: Stephane Eranian
Date: Tue Jan 18 2011 - 15:26:41 EST


On Tue, Jan 18, 2011 at 7:36 PM, Peter Zijlstra <peterz@xxxxxxxxxxxxx> wrote:
> On Tue, 2011-01-18 at 19:05 +0100, Stephane Eranian wrote:
>> Peter,
>>
>> commit 7639dae0ca11038286bbbcda05f2bef601c1eb8d
>> Author: Peter Zijlstra <a.p.zijlstra@xxxxxxxxx>
>> Date: Â Tue Dec 14 21:26:40 2010 +0100
>>
>> Â Â perf, x86: Provide a PEBS capable cycle event
>>
>>
>>
>> Even with the transformation cmask=16:invert=1, you are not quite
>> counting the same thing.
>>
>> inst_retired:any_p:c=16:i=1 Âis different from cpu_clk_unhalted:thread_p
>>
>> Simply because, I think, this form of inst_retired counts in HALTED state.
>
> Drad it does indeed:
>
> # perf stat -a -e cycles:p -e cycles sleep 1
>
> ÂPerformance counter stats for 'sleep 1':
>
> Â Â Â Â61,634,870 cycles
> Â Â Â Â26,703,249 cycles
>
> Â Â Â Â1.000860820 Âseconds time elapsed
>
What's interesting here is that this cycles:p is not event equal to 1x CPU freq
given your measuring for 1s. So it must stop counting at some point.

>
>> This automatic transformation would be "okay" in per-thread mode, but
>> not in system-wide mode. It should not be done under the cover. I would
>> rather have this option at the user level.
>
> Agreed, since its not identical it had best be done in userspace, too
> bad :/ I'll revert this patch.
>
Yes, it would have been nice. But if you know what you're doing, this is
still doable from user space. So I think we are okay.
--
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/