interpret the result of perf stat

Zheng Da zhengda1936 at gmail.com
Thu Oct 6 10:39:06 EDT 2011


Thank you, Peter. I didn't realize Intel has explained all performance
counters in its manual, and I was desperately looking for more
detailed explanation on the Internet.

On Mon, Oct 3, 2011 at 11:19 PM, Peter Teoh <htmldeveloper at gmail.com> wrote:
>
>
> On Tue, Oct 4, 2011 at 9:53 AM, Peter Teoh <htmldeveloper at gmail.com> wrote:
>>
>> On Sun, Oct 2, 2011 at 5:07 AM, Zheng Da <zhengda1936 at gmail.com> wrote:
>> > Hello,
>> >
>> > I start to use perf to profile my program, but I'm not quite sure if I
>> > understand some events.
>>
>> Firstly perf is using hardware to read these performance information.   So
>> for intel CPU, depending on the different model, u can find the relevant
>> information in the reference manual from Intel here:
>>
>> http://www.intel.com/Assets/en_US/PDF/manual/248966.pdf
>>
>> In particular, the various model of Intel CPU is listed in page xvii, and
>> along with it are the various performance information u can extract out -
>> the last item is the BUS information (B.6.10).
>>
>> > First, perf can profile bus cycles. Is it the bus cycles of FSB?
>> > Second, what is task clock? It seems to me that task clock is the
>
> task clock, from reading the implementation in kernel/events/core.c, i
> suspect is a software event, not hardware.   Ie, it counts upon each task
> switch.   To quote from core.c:
> /*
>  * Software event: task time clock
>  */
> static void task_clock_event_update(struct perf_event *event, u64 now)
> {
>
> More details here:
> http://lwn.net/Articles/312720/
>
>>
>> > ticks used by a process. It should include the ticks used in the
>> > kernel mode and the user space mode, as long as it is used in the
>> > context of the process. I suppose it doesn't count the cycles used by
>> > the interrupts such as page faults and softirq, even though the irqs
>> > are caused by the process. Is it correct?
>
> on the contrary, i think it should include, as to exclude these cycles does
> entail stopping the hrtimer.....read into core.c further.
I'm disappointed that the information isn't documented somewhere. The
developers shouldn't expect users to read the code to understand how
to use the tool :(

BTW, is there any wiki where people can share what they found in the kernel?

Thanks,
Da



More information about the Kernelnewbies mailing list