From: Jens Axboe Date: Thu, 30 Nov 2017 04:52:46 +0000 (-0700) Subject: Change latency targets to be in nsec values internally X-Git-Tag: fio-3.3~52 X-Git-Url: https://git.kernel.dk/?p=fio.git;a=commitdiff_plain;h=c3a32714583832484cf057694543752ad745598a Change latency targets to be in nsec values internally Since all of our timekeeping is in nsec now, it's easier to convert these at init time and not have to do it at runtime. Signed-off-by: Jens Axboe --- diff --git a/init.c b/init.c index acbbd485..7c16b060 100644 --- a/init.c +++ b/init.c @@ -925,6 +925,13 @@ static int fixup_options(struct thread_data *td) ret = 1; } + /* + * Fix these up to be nsec internally + */ + o->max_latency *= 1000ULL; + o->latency_target *= 1000ULL; + o->latency_window *= 1000ULL; + return ret; } diff --git a/io_u.c b/io_u.c index 0466ac01..ebe82e12 100644 --- a/io_u.c +++ b/io_u.c @@ -1409,10 +1409,10 @@ static long set_io_u_file(struct thread_data *td, struct io_u *io_u) } static void lat_fatal(struct thread_data *td, struct io_completion_data *icd, - unsigned long tusec, unsigned long max_usec) + unsigned long long tnsec, unsigned long long max_nsec) { if (!td->error) - log_err("fio: latency of %lu usec exceeds specified max (%lu usec)\n", tusec, max_usec); + log_err("fio: latency of %llu nsec exceeds specified max (%llu nsec)\n", tnsec, max_nsec); td_verror(td, ETIMEDOUT, "max latency exceeded"); icd->error = ETIMEDOUT; } @@ -1862,24 +1862,23 @@ static void account_io_completion(struct thread_data *td, struct io_u *io_u, llnsec = ntime_since(&io_u->issue_time, &icd->time); if (!td->o.disable_lat) { - unsigned long long tnsec, tusec; + unsigned long long tnsec; tnsec = ntime_since(&io_u->start_time, &icd->time); - tusec = tnsec / 1000; add_lat_sample(td, idx, tnsec, bytes, io_u->offset); if (td->flags & TD_F_PROFILE_OPS) { struct prof_io_ops *ops = &td->prof_io_ops; if (ops->io_u_lat) - icd->error = ops->io_u_lat(td, tusec); + icd->error = ops->io_u_lat(td, tnsec); } - if (td->o.max_latency && tusec > td->o.max_latency) - lat_fatal(td, icd, tusec, td->o.max_latency); - if (td->o.latency_target && tusec > td->o.latency_target) { + if (td->o.max_latency && tnsec > td->o.max_latency) + lat_fatal(td, icd, tnsec, td->o.max_latency); + if (td->o.latency_target && tnsec > td->o.latency_target) { if (lat_target_failed(td)) - lat_fatal(td, icd, tusec, td->o.latency_target); + lat_fatal(td, icd, tnsec, td->o.latency_target); } } diff --git a/profiles/act.c b/profiles/act.c index 4669535a..3fa5afac 100644 --- a/profiles/act.c +++ b/profiles/act.c @@ -288,10 +288,11 @@ static int act_prep_cmdline(void) return 0; } -static int act_io_u_lat(struct thread_data *td, uint64_t usec) +static int act_io_u_lat(struct thread_data *td, uint64_t nsec) { struct act_prof_data *apd = td->prof_data; struct act_slice *slice; + uint64_t usec = nsec / 1000ULL; int i, ret = 0; double perm;