cpu clock: round up when dividing by samples
[fio.git] / gettime.c
index 89a3a016e4c871a767365f96318392a65ec30ba6..1ba18e99877f3fc6cc5f07e8bd2185f8fadd93e0 100644 (file)
--- a/gettime.c
+++ b/gettime.c
@@ -201,13 +201,13 @@ static unsigned long get_cycles_per_usec(void)
 
                gettimeofday(&e, NULL);
                elapsed = utime_since(&s, &e);
-               if (elapsed >= 10) {
+               if (elapsed >= 1280) {
                        c_e = get_cpu_clock();
                        break;
                }
        } while (1);
 
-       return c_e - c_s;
+       return (c_e - c_s + 127) >> 7;
 }
 
 #define NR_TIME_ITERS  50
@@ -242,12 +242,13 @@ static void calibrate_cpu_clock(void)
        }
 
        S /= (double) NR_TIME_ITERS;
-       mean /= (double) NR_TIME_ITERS;
+       mean /= 10.0;
 
        for (i = 0; i < NR_TIME_ITERS; i++)
                dprint(FD_TIME, "cycles[%d]=%lu\n", i, cycles[i] / 10);
 
-       avg /= (samples * 10);
+       avg /= samples;
+       avg = (avg + 9) / 10;
        dprint(FD_TIME, "avg: %lu\n", avg);
        dprint(FD_TIME, "mean=%f, S=%f\n", mean, S);