X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=fio.h;h=11338eb7496e64d3207eb240dd3182b154b241ad;hp=1484749862d6aa181521e0719145674b3374ecfc;hb=a086c25771b195d04651d293f299f0a63f7d2a23;hpb=62977e09a378a713b31d64c63e15adcf9f6f9d9d;ds=sidebyside diff --git a/fio.h b/fio.h index 14847498..11338eb7 100644 --- a/fio.h +++ b/fio.h @@ -496,9 +496,17 @@ struct thread_options { unsigned int zero_buffers; unsigned int refill_buffers; unsigned int time_based; + unsigned int disable_clat; + unsigned int disable_slat; + unsigned int disable_bw; + unsigned int gtod_reduce; + unsigned int gtod_cpu; + unsigned int gtod_offload; char *read_iolog_file; char *write_iolog_file; + char *bw_log_file; + char *lat_log_file; /* * Pre-run and post-run shell @@ -609,6 +617,9 @@ struct thread_data { struct timeval epoch; /* time job was started */ struct timeval rw_end[2]; struct timeval last_issue; + struct timeval tv_cache; + unsigned int tv_cache_nr; + unsigned int tv_cache_mask; unsigned int rw_end_set[2]; unsigned int ramp_time_over; @@ -646,11 +657,13 @@ struct thread_data { }; /* - * roundrobin available files, or choose one at random. + * roundrobin available files, or choose one at random, or do each one + * serially. */ enum { FIO_FSERVICE_RANDOM = 1, FIO_FSERVICE_RR = 2, + FIO_FSERVICE_SEQ = 3, }; /* @@ -690,6 +703,8 @@ extern int read_only; extern int eta_print; extern unsigned long done_secs; extern char *job_section; +extern int fio_gtod_offload; +extern int fio_gtod_cpu; extern struct thread_data *threads; @@ -799,6 +814,7 @@ extern void update_rusage_stat(struct thread_data *); extern void update_io_ticks(void); extern void setup_log(struct io_log **); extern void finish_log(struct thread_data *, struct io_log *, const char *); +extern void finish_log_named(struct thread_data *, struct io_log *, const char *, const char *); extern void __finish_log(struct io_log *, const char *); extern struct io_log *agg_io_log[2]; extern int write_bw_log; @@ -813,11 +829,13 @@ extern unsigned long mtime_since(struct timeval *, struct timeval *); extern unsigned long mtime_since_now(struct timeval *); extern unsigned long time_since_now(struct timeval *); extern unsigned long mtime_since_genesis(void); -extern void __usec_sleep(unsigned int); +extern void usec_spin(unsigned int); extern void usec_sleep(struct thread_data *, unsigned long); extern void rate_throttle(struct thread_data *, unsigned long, unsigned int); extern void fill_start_time(struct timeval *); extern void fio_gettime(struct timeval *, void *); +extern void fio_gtod_init(void); +extern void fio_gtod_update(void); extern void set_genesis_time(void); extern int ramp_time_over(struct thread_data *); extern int in_ramp_time(struct thread_data *); @@ -1037,4 +1055,13 @@ static inline void dprint_io_u(struct io_u *io_u, const char *p) #define dprint_io_u(io_u, p) #endif +static inline int fio_fill_issue_time(struct thread_data *td) +{ + if (td->o.read_iolog_file || + !td->o.disable_clat || !td->o.disable_slat || !td->o.disable_bw) + return 1; + + return 0; +} + #endif