X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=fio.h;h=8b6a27220db7e3e1ea9323a6f5dd872ef3d946af;hp=1ff6662b5ef5d5b7b09dd086e9a575e7cb694cae;hb=8c07860de982fabaaf41d44c22aa86aba2539b58;hpb=c229232543f2ca4c492ea32fe7ca6ee894e543a8 diff --git a/fio.h b/fio.h index 1ff6662b..8b6a2722 100644 --- a/fio.h +++ b/fio.h @@ -32,7 +32,7 @@ #include "profile.h" #include "fio_time.h" #include "gettime.h" -#include "lib/getopt.h" +#include "oslib/getopt.h" #include "lib/rand.h" #include "lib/rbtree.h" #include "client.h" @@ -96,6 +96,7 @@ enum { FIO_RAND_START_DELAY, FIO_DEDUPE_OFF, FIO_RAND_POISSON_OFF, + FIO_RAND_ZONE_OFF, FIO_RAND_NR_OFFS, }; @@ -115,6 +116,11 @@ struct sk_out; void sk_out_assign(struct sk_out *); void sk_out_drop(void); +struct zone_split_index { + uint8_t size_perc; + uint8_t size_perc_prev; +}; + /* * This describes a single thread/process executing a fio job. */ @@ -148,13 +154,6 @@ struct thread_data { uint64_t stat_io_blocks[DDIR_RWDIR_CNT]; struct timeval iops_sample_time; - /* - * Tracks the last iodepth number of completed writes, if data - * verification is enabled - */ - uint64_t *last_write_comp; - unsigned int last_write_idx; - volatile int update_rusage; struct fio_mutex *rusage_sem; struct rusage ru_start; @@ -171,6 +170,15 @@ struct thread_data { unsigned int next_file; struct frand_state next_file_state; }; + union { + struct zipf_state next_file_zipf; + struct gauss_state next_file_gauss; + }; + union { + double zipf_theta; + double pareto_h; + double gauss_dev; + }; int error; int sig; int done; @@ -200,6 +208,9 @@ struct thread_data { struct frand_state buf_state; struct frand_state buf_state_prev; struct frand_state dedupe_state; + struct frand_state zone_state; + + struct zone_split_index **zone_state_index; unsigned int verify_batch; unsigned int trim_batch; @@ -443,8 +454,6 @@ extern int nr_clients; extern int log_syslog; extern int status_interval; extern const char fio_version_string[]; -extern int helper_do_stat; -extern pthread_cond_t helper_cond; extern char *trigger_file; extern char *trigger_cmd; extern char *trigger_remote_cmd; @@ -499,7 +508,7 @@ extern int parse_dryrun(void); extern int fio_running_or_pending_io_threads(void); extern int fio_set_fd_nonblocking(int, const char *); extern void sig_show_status(int sig); -extern bool is_def_thread(struct thread_data *); +extern struct thread_data *get_global_options(void); extern uintptr_t page_mask; extern uintptr_t page_size; @@ -542,6 +551,7 @@ enum { extern void td_set_runstate(struct thread_data *, int); extern int td_bump_runstate(struct thread_data *, int); extern void td_restore_runstate(struct thread_data *, int); +extern const char *runstate_to_name(int runstate); /* * Allow 60 seconds for a job to quit on its own, otherwise reap with @@ -711,6 +721,7 @@ enum { FIO_RAND_DIST_ZIPF, FIO_RAND_DIST_PARETO, FIO_RAND_DIST_GAUSS, + FIO_RAND_DIST_ZONED, }; #define FIO_DEF_ZIPF 1.1