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
_______________________________________________ Kernelnewbies mailing list [email protected] http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
