X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=gettime.c;h=c3a4966bfa71ea14f812c459dab198ee4b7d6020;hb=2dd96cc46fa83a73acc1c9238c3ac59203e10213;hp=87fc29b50163252e412b85e969aad5de66b7f12b;hpb=ec2ea18e87fad6c42d6875cd4ee1bb25ef9b4627;p=fio.git diff --git a/gettime.c b/gettime.c index 87fc29b5..c3a4966b 100644 --- a/gettime.c +++ b/gettime.c @@ -237,16 +237,15 @@ static unsigned long get_cycles_per_msec(void) c_s = get_cpu_clock(); do { __fio_gettime(&e); + c_e = get_cpu_clock(); - elapsed = utime_since(&s, &e); - if (elapsed >= 1280) { - c_e = get_cpu_clock(); + elapsed = ntime_since(&s, &e); + if (elapsed >= 1280000) break; - } } while (1); fio_clock_source = old_cs; - return (c_e - c_s) * 1000 / elapsed; + return (c_e - c_s) * 1000000 / elapsed; } #define NR_TIME_ITERS 50 @@ -299,10 +298,10 @@ static int calibrate_cpu_clock(void) avg /= samples; cycles_per_msec = avg; - dprint(FD_TIME, "avg: %llu\n", (unsigned long long) avg); - dprint(FD_TIME, "min=%llu, max=%llu, mean=%f, S=%f\n", + dprint(FD_TIME, "min=%llu, max=%llu, mean=%f, S=%f, N=%d\n", (unsigned long long) minc, - (unsigned long long) maxc, mean, S); + (unsigned long long) maxc, mean, S, NR_TIME_ITERS); + dprint(FD_TIME, "trimmed mean=%llu, N=%d\n", (unsigned long long) avg, samples); max_ticks = MAX_CLOCK_SEC * cycles_per_msec * 1000ULL; max_mult = ULLONG_MAX / max_ticks; @@ -372,8 +371,8 @@ static int calibrate_cpu_clock(void) } #endif // ARCH_HAVE_CPU_CLOCK -#ifndef CONFIG_TLS_THREAD -void fio_local_clock_init(int is_thread) +#if defined(ARCH_HAVE_CPU_CLOCK) && !defined(CONFIG_TLS_THREAD) +void fio_local_clock_init(void) { struct tv_valid *t; @@ -389,7 +388,7 @@ static void kill_tv_tls_key(void *data) free(data); } #else -void fio_local_clock_init(int is_thread) +void fio_local_clock_init(void) { } #endif @@ -399,7 +398,7 @@ void fio_clock_init(void) if (fio_clock_source == fio_clock_source_inited) return; -#ifndef CONFIG_TLS_THREAD +#if defined(ARCH_HAVE_CPU_CLOCK) && !defined(CONFIG_TLS_THREAD) if (pthread_key_create(&tv_tls_key, kill_tv_tls_key)) log_err("fio: can't create TLS key\n"); #endif