I have a question regarding rte_rdtsc_precise() function. I was not getting an expected number from the normal rte_rdtsc(), and hence changed to rte_rdtsc_precise() function and am getting a different value, which seems to be producing a number close to my expectation.
Q1. However, I wanted to ask if how I am using the function is correct. I am attaching a code snippet below. Is this the correct way to use rte_rdtsc_precise() or if I need other things (e.g., adding lfence before and after for instance?) begin = rte_rdtsc_precise(); .... do something... total_time = rte_rdtsc_precise() - begin; printf("%g cyc\n",(double)total_time); Q2. Am I correct that the rte_rdtsc_precise() makes the rdtsc a serializing instruction? Q3. I found from some sources online that there needs to be about ~ 1000 cycles between consecutive rdtsc() calls to get a more accurate measurement [1]. Is this true? If so, is this necessary for your rte_rdtsc_precise()? [1] http://software.intel.com/en-us/forums/topic/305287 "For best results, make sure you have at least ~1,000 clocks worth of instructions between consecutive rdtsc calls." Thank you.