X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=thread_options.h;h=6e1a2cddd1876a6796fd9cd048b27153da01b2c4;hp=88fd7ad97001f7026c3353067cc851b81cdd52de;hb=7d1ce4b752e67868b3c7eb9aa5972ceec51210aa;hpb=8f39afa7dc98303f2bf18f73f1a4161de3668c10 diff --git a/thread_options.h b/thread_options.h index 88fd7ad9..6e1a2cdd 100644 --- a/thread_options.h +++ b/thread_options.h @@ -31,11 +31,25 @@ enum fio_memtype { MEM_CUDA_MALLOC,/* use GPU memory */ }; +/* + * What mode to use for deduped data generation + */ +enum dedupe_mode { + DEDUPE_MODE_REPEAT = 0, + DEDUPE_MODE_WORKING_SET = 1, +}; + #define ERROR_STR_MAX 128 #define BSSPLIT_MAX 64 #define ZONESPLIT_MAX 256 +struct split { + unsigned int nr; + unsigned long long val1[ZONESPLIT_MAX]; + unsigned long long val2[ZONESPLIT_MAX]; +}; + struct bssplit { uint64_t bs; uint32_t perc; @@ -177,10 +191,6 @@ struct thread_options { unsigned int hugepage_size; unsigned long long rw_min_bs; - unsigned int thinktime; - unsigned int thinktime_spin; - unsigned int thinktime_blocks; - unsigned int thinktime_blocks_type; unsigned int fsync_blocks; unsigned int fdatasync_blocks; unsigned int barrier_blocks; @@ -207,7 +217,7 @@ struct thread_options { enum fio_memtype mem_type; unsigned int mem_align; - unsigned long long max_latency; + unsigned long long max_latency[DDIR_RWDIR_CNT]; unsigned int exit_what; unsigned int stonewall; @@ -243,6 +253,8 @@ struct thread_options { unsigned int compress_percentage; unsigned int compress_chunk; unsigned int dedupe_percentage; + unsigned int dedupe_mode; + unsigned int dedupe_working_set_percentage; unsigned int time_based; unsigned int disable_lat; unsigned int disable_clat; @@ -287,6 +299,12 @@ struct thread_options { char *exec_prerun; char *exec_postrun; + unsigned int thinktime; + unsigned int thinktime_spin; + unsigned int thinktime_blocks; + unsigned int thinktime_blocks_type; + unsigned int thinktime_iotime; + uint64_t rate[DDIR_RWDIR_CNT]; uint64_t ratemin[DDIR_RWDIR_CNT]; unsigned int ratecycle; @@ -355,8 +373,11 @@ struct thread_options { unsigned int read_beyond_wp; int max_open_zones; unsigned int job_max_open_zones; + unsigned int ignore_zone_limits; fio_fp64_t zrt; fio_fp64_t zrf; + + unsigned int log_prio; }; #define FIO_TOP_STR_MAX 256 @@ -485,10 +506,6 @@ struct thread_options_pack { uint32_t hugepage_size; uint64_t rw_min_bs; - uint32_t thinktime; - uint32_t thinktime_spin; - uint32_t thinktime_blocks; - uint32_t thinktime_blocks_type; uint32_t fsync_blocks; uint32_t fdatasync_blocks; uint32_t barrier_blocks; @@ -548,6 +565,8 @@ struct thread_options_pack { uint32_t compress_percentage; uint32_t compress_chunk; uint32_t dedupe_percentage; + uint32_t dedupe_mode; + uint32_t dedupe_working_set_percentage; uint32_t time_based; uint32_t disable_lat; uint32_t disable_clat; @@ -591,6 +610,12 @@ struct thread_options_pack { uint8_t exec_prerun[FIO_TOP_STR_MAX]; uint8_t exec_postrun[FIO_TOP_STR_MAX]; + uint32_t thinktime; + uint32_t thinktime_spin; + uint32_t thinktime_blocks; + uint32_t thinktime_blocks_type; + uint32_t thinktime_iotime; + uint64_t rate[DDIR_RWDIR_CNT]; uint64_t ratemin[DDIR_RWDIR_CNT]; uint32_t ratecycle; @@ -629,8 +654,7 @@ struct thread_options_pack { uint64_t latency_target; uint64_t latency_window; - uint64_t max_latency; - uint32_t pad5; + uint64_t max_latency[DDIR_RWDIR_CNT]; fio_fp64_t latency_percentile; uint32_t latency_run; @@ -656,6 +680,10 @@ struct thread_options_pack { uint32_t allow_mounted_write; uint32_t zone_mode; + int32_t max_open_zones; + uint32_t ignore_zone_limits; + + uint32_t log_prio; } __attribute__((packed)); extern void convert_thread_options_to_cpu(struct thread_options *o, struct thread_options_pack *top); @@ -663,4 +691,13 @@ extern void convert_thread_options_to_net(struct thread_options_pack *top, struc extern int fio_test_cconv(struct thread_options *); extern void options_default_fill(struct thread_options *o); +typedef int (split_parse_fn)(struct thread_options *, void *, + enum fio_ddir, char *, bool); + +extern int str_split_parse(struct thread_data *td, char *str, + split_parse_fn *fn, void *eo, bool data); + +extern int split_parse_ddir(struct thread_options *o, struct split *split, + char *str, bool absolute, unsigned int max_splits); + #endif