Negative clock cycle measurements with back-to-back rdtsc?

后端 未结 9 1213
情话喂你
情话喂你 2020-11-27 04:17

I am writing a C code for measuring the number of clock cycles needed to acquire a semaphore. I am using rdtsc, and before doing the measurement on the semaphore, I call rdt

9条回答
  •  失恋的感觉
    2020-11-27 04:40

    rdtsc can be used to get a reliable and very precise elapsed time. If using linux you can see if your processor supports a constant rate tsc by looking in /proc/cpuinfo to see if you have constant_tsc defined.

    Make sure that you stay on the same core. Every core has its own tsc which has its own value. To use rdtsc make sure that you either taskset, or SetThreadAffinityMask (windows) or pthread_setaffinity_np to ensure that your process stays on the same core.

    Then you divide this by your main clock rate which on linux can be found in /proc/cpuinfo or you can do this at runtime by

    rdtsc
    clock_gettime
    sleep for 1 second
    clock_gettime
    rdtsc

    then see how many ticks per second, and then you can divide any difference in ticks to find out how much time has elapsed.

提交回复
热议问题