incorrect perf counters

riya khanna riyakhanna1983@gmail.com
Mon Jul 25 20:55:00 GMT 2016


Thanks!

Is there a quick way to do that? Perhaps modify tapset? I make
necessary changes and test.

On Mon, Jul 25, 2016 at 3:45 PM, Josh Stone <jistone@redhat.com> wrote:
> On 07/25/2016 12:15 PM, riya khanna wrote:
>> Hi,
>>
>> I'm trying to collect perf counters using systemtap. I followed
>> systemtap/EXAMPLES/profiling/perf.stp to create a script to monitor a
>> user process, enable counters on function entry, and spew out counters
>> on function return. Please find the script (perf.stp) attached.
>>
>> I use the stap script described above to monitor function func()'s
>> entry and exit.
>>
>> void func(void)
>> {
>>     printf("Measuring instruction count for this printf\n");
>> }
>>
>> Just to verify systemtap reported counters, I created a program
>> (test.c) that uses perf_event_open() syscall to monitor func()'s
>> entry/exit and spew out counters. Please find it attached as well.
>>
>> However, the counters reported by perf.stp are very different from
>> what is reported by test.c. For example, instruction count reported by
>> test.c and perf.stp are 593 and 10610-10690.
>>
>> This is how I launch perf.stp to monitor func() in test.c:
>>
>> sudo /usr/local/bin/stap -s1 perf.stp test func
>>
>> Why such a difference? Am I missing something?
>
> I suspect it's because your calls set exclude_kernel and exclude_hv, and
> systemtap doesn't do this.
>
> Perhaps we should do this for the .process variant, or at least make it
> an option to count only userspace.
>



More information about the Systemtap mailing list