<br><br><div class="gmail_quote">On Thu, Oct 6, 2011 at 10:39 PM, Zheng Da <span dir="ltr">&lt;<a href="mailto:zhengda1936@gmail.com">zhengda1936@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Thank you, Peter. I didn&#39;t realize Intel has explained all performance<br>
counters in its manual, and I was desperately looking for more<br>
detailed explanation on the Internet.<br>
<div><div></div><div class="h5"><br>
On Mon, Oct 3, 2011 at 11:19 PM, Peter Teoh &lt;<a href="mailto:htmldeveloper@gmail.com">htmldeveloper@gmail.com</a>&gt; wrote:<br>
&gt;<br>
&gt;<br>
&gt; On Tue, Oct 4, 2011 at 9:53 AM, Peter Teoh &lt;<a href="mailto:htmldeveloper@gmail.com">htmldeveloper@gmail.com</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; On Sun, Oct 2, 2011 at 5:07 AM, Zheng Da &lt;<a href="mailto:zhengda1936@gmail.com">zhengda1936@gmail.com</a>&gt; wrote:<br>
&gt;&gt; &gt; Hello,<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; I start to use perf to profile my program, but I&#39;m not quite sure if I<br>
&gt;&gt; &gt; understand some events.<br>
&gt;&gt;<br>
&gt;&gt; Firstly perf is using hardware to read these performance information.   So<br>
&gt;&gt; for intel CPU, depending on the different model, u can find the relevant<br>
&gt;&gt; information in the reference manual from Intel here:<br>
&gt;&gt;<br>
&gt;&gt; <a href="http://www.intel.com/Assets/en_US/PDF/manual/248966.pdf" target="_blank">http://www.intel.com/Assets/en_US/PDF/manual/248966.pdf</a><br>
&gt;&gt;<br>
&gt;&gt; In particular, the various model of Intel CPU is listed in page xvii, and<br>
&gt;&gt; along with it are the various performance information u can extract out -<br>
&gt;&gt; the last item is the BUS information (B.6.10).<br>
&gt;&gt;<br>
&gt;&gt; &gt; First, perf can profile bus cycles. Is it the bus cycles of FSB?<br>
&gt;&gt; &gt; Second, what is task clock? It seems to me that task clock is the<br>
&gt;<br>
&gt; task clock, from reading the implementation in kernel/events/core.c, i<br>
&gt; suspect is a software event, not hardware.   Ie, it counts upon each task<br>
&gt; switch.   To quote from core.c:<br>
&gt; /*<br>
&gt;  * Software event: task time clock<br>
&gt;  */<br>
&gt; static void task_clock_event_update(struct perf_event *event, u64 now)<br>
&gt; {<br>
&gt;<br>
&gt; More details here:<br>
&gt; <a href="http://lwn.net/Articles/312720/" target="_blank">http://lwn.net/Articles/312720/</a><br>
&gt;<br>
&gt;&gt;<br>
&gt;&gt; &gt; ticks used by a process. It should include the ticks used in the<br>
&gt;&gt; &gt; kernel mode and the user space mode, as long as it is used in the<br>
&gt;&gt; &gt; context of the process. I suppose it doesn&#39;t count the cycles used by<br>
&gt;&gt; &gt; the interrupts such as page faults and softirq, even though the irqs<br>
&gt;&gt; &gt; are caused by the process. Is it correct?<br>
&gt;<br>
&gt; on the contrary, i think it should include, as to exclude these cycles does<br>
&gt; entail stopping the hrtimer.....read into core.c further.<br>
</div></div>I&#39;m disappointed that the information isn&#39;t documented somewhere. The<br>
developers shouldn&#39;t expect users to read the code to understand how<br>
to use the tool :(<br>
<br></blockquote><div><br>i suspect it is documented in many places, at here is one good one:</div><div><br></div><div><meta http-equiv="content-type" content="text/html; charset=utf-8"><a href="http://developer.apple.com/library/IOS/#documentation/DeveloperTools/Conceptual/SharkUserGuide/MiscellaneousTopics/MiscellaneousTopics.html#//apple_ref/doc/uid/TP40005233-CH14-SW3">http://developer.apple.com/library/IOS/#documentation/DeveloperTools/Conceptual/SharkUserGuide/MiscellaneousTopics/MiscellaneousTopics.html#//apple_ref/doc/uid/TP40005233-CH14-SW3</a></div>
<div><br></div><div>and from the side, looking at Appendix A, u can see a table of all the PerfCounters for ARM11, and then another section will list out for Intel, and then PPC etc.....</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

BTW, is there any wiki where people can share what they found in the kernel?<br>
<br>
Thanks,<br>
<font color="#888888">Da<br>
</font></blockquote></div><br><br clear="all"><div><br></div>-- <br>Regards,<br>Peter Teoh<br>