struct timeval s, e;
uint64_t c_s, c_e;
enum fio_cs old_cs = fio_clock_source;
+ uint64_t elapsed;
#ifdef CONFIG_CLOCK_GETTIME
fio_clock_source = CS_CGETTIME;
c_s = get_cpu_clock();
do {
- uint64_t elapsed;
-
__fio_gettime(&e);
elapsed = utime_since(&s, &e);
} while (1);
fio_clock_source = old_cs;
- return (c_e - c_s + 127) >> 7;
+ return (c_e - c_s) / elapsed;
}
#define NR_TIME_ITERS 50
}
S /= (double) NR_TIME_ITERS;
- mean /= 10.0;
for (i = 0; i < NR_TIME_ITERS; i++)
- dprint(FD_TIME, "cycles[%d]=%llu\n", i,
- (unsigned long long) cycles[i] / 10);
+ dprint(FD_TIME, "cycles[%d]=%llu\n", i, (unsigned long long) cycles[i]);
avg /= samples;
- avg = (avg + 5) / 10;
- minc /= 10;
- maxc /= 10;
dprint(FD_TIME, "avg: %llu\n", (unsigned long long) avg);
dprint(FD_TIME, "min=%llu, max=%llu, mean=%f, S=%f\n",
(unsigned long long) minc,
uint64_t utime_since(const struct timeval *s, const struct timeval *e)
{
long sec, usec;
- uint64_t ret;
sec = e->tv_sec - s->tv_sec;
usec = e->tv_usec - s->tv_usec;
if (sec < 0 || (sec == 0 && usec < 0))
return 0;
- ret = sec * 1000000ULL + usec;
-
- return ret;
+ return usec + (sec * 1000000);
}
uint64_t utime_since_now(const struct timeval *s)
uint64_t mtime_since(const struct timeval *s, const struct timeval *e)
{
- long sec, usec, ret;
+ long sec, usec;
sec = e->tv_sec - s->tv_sec;
usec = e->tv_usec - s->tv_usec;
if (sec < 0 || (sec == 0 && usec < 0))
return 0;
- sec *= 1000UL;
- usec /= 1000UL;
- ret = sec + usec;
-
- return ret;
+ sec *= 1000;
+ usec /= 1000;
+ return sec + usec;
}
uint64_t mtime_since_now(const struct timeval *s)
struct clock_entry *c;
os_cpu_mask_t cpu_mask;
uint32_t last_seq;
+ unsigned long long first;
int i;
if (fio_cpuset_init(&cpu_mask)) {
pthread_mutex_lock(&t->lock);
pthread_mutex_unlock(&t->started);
+ first = get_cpu_clock();
last_seq = 0;
c = &t->entries[0];
for (i = 0; i < t->nr_entries; i++, c++) {
unsigned long long clocks;
clocks = t->entries[i - 1].tsc - t->entries[0].tsc;
- log_info("cs: cpu%3d: %llu clocks seen\n", t->cpu, clocks);
+ log_info("cs: cpu%3d: %llu clocks seen, first %llu\n", t->cpu,
+ clocks, first);
}
/*