Hi Rohan.

It is really good reference. Thanks!

Peter

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



-- 
Peter Senna Tschudin
[email protected]
gpg id: 48274C36

_______________________________________________
Kernelnewbies mailing list
[email protected]
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

Reply via email to