static int calibrate_cpu_clock(void)
{
double delta, mean, S;
- uint64_t avg, cycles[NR_TIME_ITERS];
+ uint64_t minc, maxc, avg, cycles[NR_TIME_ITERS];
int i, samples;
cycles[0] = get_cycles_per_usec();
S = sqrt(S / (NR_TIME_ITERS - 1.0));
- samples = avg = 0;
+ minc = -1ULL;
+ maxc = samples = avg = 0;
for (i = 0; i < NR_TIME_ITERS; i++) {
double this = cycles[i];
+ minc = min(cycles[i], minc);
+ maxc = max(cycles[i], maxc);
+
if ((fmax(this, mean) - fmin(this, mean)) > S)
continue;
samples++;
avg /= samples;
avg = (avg + 5) / 10;
+ minc /= 10;
+ maxc /= 10;
dprint(FD_TIME, "avg: %llu\n", (unsigned long long) avg);
- dprint(FD_TIME, "mean=%f, S=%f\n", mean, S);
+ dprint(FD_TIME, "min=%llu, max=%llu, mean=%f, S=%f\n",
+ (unsigned long long) minc,
+ (unsigned long long) maxc, mean, S);
cycles_per_usec = avg;
inv_cycles_per_usec = 16777216UL / cycles_per_usec;