<br><br><div class="gmail_quote">On Tue, Oct 4, 2011 at 12:03 AM, Peter Senna Tschudin <span dir="ltr">&lt;<a href="mailto:peter.senna@gmail.com">peter.senna@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;">
Hi Rohan.<br>
<br>
It is really good reference. Thanks!<br>
<font color="#888888"><br>
Peter<br>
</font><div><div></div><div class="h5"><br>
On Mon, Oct 3, 2011 at 1:17 AM, rohan puri &lt;<a href="mailto:rohan.puri15@gmail.com">rohan.puri15@gmail.com</a>&gt; wrote:<br>
&gt;<br>
&gt;<br>
&gt; On Mon, Oct 3, 2011 at 6:57 AM, Peter Senna Tschudin &lt;<a href="mailto:peter.senna@gmail.com">peter.senna@gmail.com</a>&gt;<br>
&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; Dear list members,<br>
&gt;&gt;<br>
&gt;&gt; I&#39;m following:<br>
&gt;&gt;<br>
&gt;&gt; <a href="http://people.virginia.edu/%7Echg5w/page3/assets/MeasuringUnix.pdf" target="_blank">http://people.virginia.edu/~chg5w/page3/assets/MeasuringUnix.pdf</a><br>
&gt;&gt;<br>
&gt;&gt; And I&#39;m trying to measure executing time of simple operations with RDTSC.<br>
&gt;&gt;<br>
&gt;&gt; See the code below:<br>
&gt;&gt;<br>
&gt;&gt; #include &lt;stdio.h&gt;<br>
&gt;&gt; #define CPU_THOUSAND_HZ 800000<br>
&gt;&gt; typedef unsigned long long ticks;<br>
&gt;&gt; static __inline__ ticks getticks(void) {<br>
&gt;&gt;        unsigned a, d;<br>
&gt;&gt;        asm(&quot;cpuid&quot;);<br>
&gt;&gt;        asm volatile(&quot;rdtsc&quot; : &quot;=a&quot; (a), &quot;=d&quot; (d));<br>
&gt;&gt;        return (((ticks)a) | (((ticks)d) &lt;&lt; 32));<br>
&gt;&gt; }<br>
&gt;&gt;<br>
&gt;&gt; void main() {<br>
&gt;&gt;        ticks tickBegin, tickEnd;<br>
&gt;&gt;        tickBegin = getticks();<br>
&gt;&gt;<br>
&gt;&gt;        // code to time<br>
&gt;&gt;<br>
&gt;&gt;        tickEnd = getticks();<br>
&gt;&gt;        double time = (tickEnd-tickBegin)/CPU_THOUSAND_HZ;<br>
&gt;&gt;<br>
&gt;&gt;        printf (&quot;%Le\n&quot;, time);<br>
&gt;&gt; }<br>
&gt;&gt;<br>
&gt;&gt; How can the C code detects the correct value for CPU_THOUSAND_HZ? The<br>
&gt;&gt; problems I see are:<br>
&gt;&gt;  - It is needed to collect the information for the CPU that will run<br>
&gt;&gt; the process. On Core i7 processors, different cores can run at<br>
&gt;&gt; different clock speed at same time.<br>
&gt;&gt;  - If the clock changes during the execution of process, what should<br>
&gt;&gt; it do? When is the best time for collecting the clock speed?<br>
&gt;&gt;<br>
&gt;&gt; The authors of the paper are not sure about the effects of<br>
&gt;&gt; &quot;asm(&quot;cpuid&quot;);&quot; Does it ensure that the entire process will run on the<br>
&gt;&gt; same CPU, and will serialize it avoiding out of order execution by the<br>
&gt;&gt; CPU?<br>
&gt;&gt;<br>
&gt;&gt; Thank you very much! :-)<br>
&gt;&gt;<br>
&gt;&gt; Peter<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; --<br>
&gt;&gt; Peter Senna Tschudin<br>
&gt;&gt; <a href="mailto:peter.senna@gmail.com">peter.senna@gmail.com</a><br>
&gt;&gt; gpg id: 48274C36<br>
&gt;&gt;<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; Kernelnewbies mailing list<br>
&gt;&gt; <a href="mailto:Kernelnewbies@kernelnewbies.org">Kernelnewbies@kernelnewbies.org</a><br>
&gt;&gt; <a href="http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies" target="_blank">http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies</a><br>
&gt;<br>
&gt; Hi Peter,<br>
&gt;<br>
&gt; Excellent reference <a href="http://en.wikipedia.org/wiki/Time_Stamp_Counter" target="_blank">http://en.wikipedia.org/wiki/Time_Stamp_Counter</a><br>
&gt;<br>
&gt; Also, your interpretation is right. There are lots of things which need to<br>
&gt; be considered instead of setting CPU_THOUSAND_HZ to any particular value,<br>
&gt; some of them are whether its multi-core or single core CPU. On multi-core<br>
&gt; its quite difficult to get the correct answers, The problems are mentioned<br>
&gt; in the above wiki link.<br>
&gt;<br>
&gt; Regards,<br>
&gt; Rohan Puri<br>
&gt;<br>
<br>
<br>
<br>
--<br>
Peter Senna Tschudin<br>
<a href="mailto:peter.senna@gmail.com">peter.senna@gmail.com</a><br>
gpg id: 48274C36<br>
</div></div></blockquote></div><br>Welcome :)<br><br>Regards,<br>Rohan Puri<br>