X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=fio.h;h=081998bf70cf9ef86cce2ab74b2284c0409a99e8;hb=1a7081c7c3884b3eac9cfe6b3ae1d6dc341e7ed2;hp=e394e165078a4fa3da53d397cae2791e8e9fe195;hpb=d5dbacf662b1cc3fb09b5cd70b236ab98d1c0dbe;p=fio.git diff --git a/fio.h b/fio.h index e394e165..081998bf 100644 --- a/fio.h +++ b/fio.h @@ -155,6 +155,11 @@ enum { F_ADV_SEQUENTIAL, }; +enum { + IOD_NONE = 0, + IOD_STEPPED, +}; + /* * Per-thread/process specific data. Only used for the network client * for now. @@ -374,9 +379,14 @@ struct thread_data { unsigned int latency_qd; unsigned int latency_qd_high; unsigned int latency_qd_low; + unsigned int latency_qd_step; unsigned int latency_failed; - uint64_t latency_ios; + unsigned int latency_state; + unsigned int latency_iops[DDIR_RWDIR_CNT]; + unsigned int latency_step; + uint64_t latency_ios[DDIR_RWDIR_CNT]; int latency_end_run; + unsigned int nr_lat_stats; /* * read/write mixed workload state @@ -687,13 +697,6 @@ extern int io_queue_event(struct thread_data *td, struct io_u *io_u, int *ret, enum fio_ddir ddir, uint64_t *bytes_issued, int from_verify, struct timespec *comp_time); -/* - * Latency target helpers - */ -extern void lat_target_check(struct thread_data *); -extern void lat_target_init(struct thread_data *); -extern void lat_target_reset(struct thread_data *); - /* * Iterates all threads/processes within all the defined jobs */ @@ -751,6 +754,8 @@ static inline bool should_check_rate(struct thread_data *td) return ddir_rw_sum(td->bytes_done) != 0; } +int setup_rate(struct thread_data *td); + static inline unsigned long long td_max_bs(struct thread_data *td) { unsigned long long max_bs; @@ -772,6 +777,11 @@ static inline bool td_async_processing(struct thread_data *td) return (td->flags & TD_F_NEED_LOCK) != 0; } +static inline bool td_offload_overlap(struct thread_data *td) +{ + return td->o.serialize_overlap && td->o.io_submit_mode == IO_MODE_OFFLOAD; +} + /* * We currently only need to do locking if we have verifier threads * accessing our internal structures too