X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=thread_options.h;h=393158340e96a52a8068cd39d0d8c3c6c4cc4da3;hp=e28c59d01bccfe2b8db9d934310c9686a09db3a2;hb=f88817479014b87bfed3a20f9fe7dae0efb33dee;hpb=e6a6a9844038b1e4dd8f979c37579be695c770d0 diff --git a/thread_options.h b/thread_options.h index e28c59d0..39315834 100644 --- a/thread_options.h +++ b/thread_options.h @@ -10,6 +10,14 @@ #include "lib/pattern.h" #include "td_error.h" +enum fio_zone_mode { + ZONE_MODE_NOT_SPECIFIED = 0, + ZONE_MODE_NONE = 1, + ZONE_MODE_STRIDED = 2, /* perform I/O in one zone at a time */ + /* perform I/O across multiple zones simultaneously */ + ZONE_MODE_ZBD = 3, +}; + /* * What type of allocation to use for io buffers */ @@ -20,21 +28,24 @@ enum fio_memtype { MEM_MMAP, /* use anonynomous mmap */ MEM_MMAPHUGE, /* memory mapped huge file */ MEM_MMAPSHARED, /* use mmap with shared flag */ + MEM_CUDA_MALLOC,/* use GPU memory */ }; #define ERROR_STR_MAX 128 #define BSSPLIT_MAX 64 -#define ZONESPLIT_MAX 64 +#define ZONESPLIT_MAX 256 struct bssplit { - uint32_t bs; + uint64_t bs; uint32_t perc; }; struct zone_split { uint8_t access_perc; uint8_t size_perc; + uint8_t pad[6]; + uint64_t size; }; #define NR_OPTS_SZ (FIO_MAX_OPTS / (8 * sizeof(uint64_t))) @@ -52,6 +63,7 @@ struct thread_options { char *filename_format; char *opendir; char *ioengine; + char *ioengine_so_path; char *mmapfile; enum td_ddir td_ddir; unsigned int rw_seq; @@ -64,22 +76,24 @@ struct thread_options { unsigned int iodepth_batch; unsigned int iodepth_batch_complete_min; unsigned int iodepth_batch_complete_max; + unsigned int serialize_overlap; unsigned int unique_filename; unsigned long long size; - unsigned long long io_limit; + unsigned long long io_size; unsigned int size_percent; unsigned int fill_device; unsigned int file_append; unsigned long long file_size_low; unsigned long long file_size_high; unsigned long long start_offset; + unsigned long long start_offset_align; - unsigned int bs[DDIR_RWDIR_CNT]; - unsigned int ba[DDIR_RWDIR_CNT]; - unsigned int min_bs[DDIR_RWDIR_CNT]; - unsigned int max_bs[DDIR_RWDIR_CNT]; + unsigned long long bs[DDIR_RWDIR_CNT]; + unsigned long long ba[DDIR_RWDIR_CNT]; + unsigned long long min_bs[DDIR_RWDIR_CNT]; + unsigned long long max_bs[DDIR_RWDIR_CNT]; struct bssplit *bssplit[DDIR_RWDIR_CNT]; unsigned int bssplit_nr[DDIR_RWDIR_CNT]; @@ -101,10 +115,9 @@ struct thread_options { unsigned int end_fsync; unsigned int pre_read; unsigned int sync_io; + unsigned int write_hint; unsigned int verify; unsigned int do_verify; - unsigned int verifysort; - unsigned int verifysort_nr; unsigned int verify_interval; unsigned int verify_offset; char verify_pattern[MAX_PATTERN_SIZE]; @@ -135,6 +148,7 @@ struct thread_options { unsigned int log_offset; unsigned int log_gz; unsigned int log_gz_store; + unsigned int log_unix_epoch; unsigned int norandommap; unsigned int softrandommap; unsigned int bs_unaligned; @@ -158,7 +172,8 @@ struct thread_options { unsigned int perc_rand[DDIR_RWDIR_CNT]; unsigned int hugepage_size; - unsigned int rw_min_bs; + unsigned long long rw_min_bs; + unsigned int pad2; unsigned int thinktime; unsigned int thinktime_spin; unsigned int thinktime_blocks; @@ -166,10 +181,11 @@ struct thread_options { unsigned int fdatasync_blocks; unsigned int barrier_blocks; unsigned long long start_delay; + unsigned long long start_delay_orig; unsigned long long start_delay_high; unsigned long long timeout; unsigned long long ramp_time; - unsigned int ss; + unsigned int ss_state; fio_fp64_t ss_limit; unsigned long long ss_dur; unsigned long long ss_ramp_time; @@ -180,11 +196,12 @@ struct thread_options { unsigned long long zone_range; unsigned long long zone_size; unsigned long long zone_skip; + enum fio_zone_mode zone_mode; unsigned long long lockmem; enum fio_memtype mem_type; unsigned int mem_align; - unsigned int max_latency; + unsigned long long max_latency; unsigned int stonewall; unsigned int new_group; @@ -197,6 +214,9 @@ struct thread_options { unsigned short numa_mem_mode; unsigned int numa_mem_prefer_node; char *numa_memnodes; + unsigned int gpu_dev_id; + unsigned int start_offset_percent; + unsigned int iolog; unsigned int rwmixcycle; unsigned int rwmix[DDIR_RWDIR_CNT]; @@ -205,8 +225,8 @@ struct thread_options { unsigned int ioprio_class; unsigned int file_service_type; unsigned int group_reporting; + unsigned int stats; unsigned int fadvise_hint; - unsigned int fadvise_stream; enum fio_fallocate_mode fallocate_mode; unsigned int zero_buffers; unsigned int refill_buffers; @@ -231,11 +251,19 @@ struct thread_options { unsigned int trim_zero; unsigned long long trim_backlog; unsigned int clat_percentiles; + unsigned int lat_percentiles; unsigned int percentile_precision; /* digits after decimal for percentiles */ fio_fp64_t percentile_list[FIO_IO_U_LIST_MAX_LEN]; char *read_iolog_file; + bool read_iolog_chunked; char *write_iolog_file; + + unsigned int write_bw_log; + unsigned int write_lat_log; + unsigned int write_iops_log; + unsigned int write_hist_log; + char *bw_log_file; char *lat_log_file; char *iops_log_file; @@ -248,13 +276,14 @@ struct thread_options { char *exec_prerun; char *exec_postrun; - unsigned int rate[DDIR_RWDIR_CNT]; - unsigned int ratemin[DDIR_RWDIR_CNT]; + uint64_t rate[DDIR_RWDIR_CNT]; + uint64_t ratemin[DDIR_RWDIR_CNT]; unsigned int ratecycle; unsigned int io_submit_mode; unsigned int rate_iops[DDIR_RWDIR_CNT]; unsigned int rate_iops_min[DDIR_RWDIR_CNT]; unsigned int rate_process; + unsigned int rate_ign_think; char *ioscheduler; @@ -292,16 +321,25 @@ struct thread_options { unsigned long long latency_window; fio_fp64_t latency_percentile; + unsigned int sig_figs; + unsigned block_error_hist; - unsigned int skip_bad; unsigned int replay_align; unsigned int replay_scale; + unsigned int replay_time_scale; + unsigned int replay_skip; unsigned int per_job_logs; unsigned int allow_create; unsigned int allow_mounted_write; + + /* Parameters that affect zonemode=zbd */ + unsigned int read_beyond_wp; + int max_open_zones; + fio_fp64_t zrt; + fio_fp64_t zrf; }; #define FIO_TOP_STR_MAX 256 @@ -328,10 +366,11 @@ struct thread_options_pack { uint32_t iodepth_batch; uint32_t iodepth_batch_complete_min; uint32_t iodepth_batch_complete_max; - uint32_t __proper_alignment_for_64b; + uint32_t serialize_overlap; + uint32_t lat_percentiles; uint64_t size; - uint64_t io_limit; + uint64_t io_size; uint32_t size_percent; uint32_t fill_device; uint32_t file_append; @@ -339,11 +378,12 @@ struct thread_options_pack { uint64_t file_size_low; uint64_t file_size_high; uint64_t start_offset; + uint64_t start_offset_align; - uint32_t bs[DDIR_RWDIR_CNT]; - uint32_t ba[DDIR_RWDIR_CNT]; - uint32_t min_bs[DDIR_RWDIR_CNT]; - uint32_t max_bs[DDIR_RWDIR_CNT]; + uint64_t bs[DDIR_RWDIR_CNT]; + uint64_t ba[DDIR_RWDIR_CNT]; + uint64_t min_bs[DDIR_RWDIR_CNT]; + uint64_t max_bs[DDIR_RWDIR_CNT]; struct bssplit bssplit[DDIR_RWDIR_CNT][BSSPLIT_MAX]; uint32_t bssplit_nr[DDIR_RWDIR_CNT]; @@ -365,10 +405,9 @@ struct thread_options_pack { uint32_t end_fsync; uint32_t pre_read; uint32_t sync_io; + uint32_t write_hint; uint32_t verify; uint32_t do_verify; - uint32_t verifysort; - uint32_t verifysort_nr; uint32_t verify_interval; uint32_t verify_offset; uint8_t verify_pattern[MAX_PATTERN_SIZE]; @@ -397,6 +436,7 @@ struct thread_options_pack { uint32_t log_offset; uint32_t log_gz; uint32_t log_gz_store; + uint32_t log_unix_epoch; uint32_t norandommap; uint32_t softrandommap; uint32_t bs_unaligned; @@ -406,6 +446,8 @@ struct thread_options_pack { uint32_t random_distribution; uint32_t exitall_error; + uint32_t sync_file_range; + struct zone_split zone_split[DDIR_RWDIR_CNT][ZONESPLIT_MAX]; uint32_t zone_split_nr[DDIR_RWDIR_CNT]; @@ -418,7 +460,8 @@ struct thread_options_pack { uint32_t perc_rand[DDIR_RWDIR_CNT]; uint32_t hugepage_size; - uint32_t rw_min_bs; + uint64_t rw_min_bs; + uint32_t pad2; uint32_t thinktime; uint32_t thinktime_spin; uint32_t thinktime_blocks; @@ -431,7 +474,7 @@ struct thread_options_pack { uint64_t ramp_time; uint64_t ss_dur; uint64_t ss_ramp_time; - uint32_t ss; + uint32_t ss_state; fio_fp64_t ss_limit; uint32_t overwrite; uint32_t bw_avg_time; @@ -444,8 +487,6 @@ struct thread_options_pack { uint32_t mem_type; uint32_t mem_align; - uint32_t max_latency; - uint32_t stonewall; uint32_t new_group; uint32_t numjobs; @@ -457,6 +498,8 @@ struct thread_options_pack { uint8_t verify_cpumask[FIO_TOP_STR_MAX]; uint8_t log_gz_cpumask[FIO_TOP_STR_MAX]; #endif + uint32_t gpu_dev_id; + uint32_t start_offset_percent; uint32_t cpus_allowed_policy; uint32_t iolog; uint32_t rwmixcycle; @@ -466,8 +509,8 @@ struct thread_options_pack { uint32_t ioprio_class; uint32_t file_service_type; uint32_t group_reporting; + uint32_t stats; uint32_t fadvise_hint; - uint32_t fadvise_stream; uint32_t fallocate_mode; uint32_t zero_buffers; uint32_t refill_buffers; @@ -493,11 +536,16 @@ struct thread_options_pack { uint64_t trim_backlog; uint32_t clat_percentiles; uint32_t percentile_precision; - uint32_t padding; /* REMOVE ME when possible to maintain alignment */ fio_fp64_t percentile_list[FIO_IO_U_LIST_MAX_LEN]; uint8_t read_iolog_file[FIO_TOP_STR_MAX]; uint8_t write_iolog_file[FIO_TOP_STR_MAX]; + + uint32_t write_bw_log; + uint32_t write_lat_log; + uint32_t write_iops_log; + uint32_t write_hist_log; + uint8_t bw_log_file[FIO_TOP_STR_MAX]; uint8_t lat_log_file[FIO_TOP_STR_MAX]; uint8_t iops_log_file[FIO_TOP_STR_MAX]; @@ -510,13 +558,15 @@ struct thread_options_pack { uint8_t exec_prerun[FIO_TOP_STR_MAX]; uint8_t exec_postrun[FIO_TOP_STR_MAX]; - uint32_t rate[DDIR_RWDIR_CNT]; - uint32_t ratemin[DDIR_RWDIR_CNT]; + uint64_t rate[DDIR_RWDIR_CNT]; + uint64_t ratemin[DDIR_RWDIR_CNT]; uint32_t ratecycle; uint32_t io_submit_mode; uint32_t rate_iops[DDIR_RWDIR_CNT]; uint32_t rate_iops_min[DDIR_RWDIR_CNT]; uint32_t rate_process; + uint32_t rate_ign_think; + uint32_t pad; uint8_t ioscheduler[FIO_TOP_STR_MAX]; @@ -548,23 +598,26 @@ struct thread_options_pack { uint64_t offset_increment; uint64_t number_ios; - uint32_t sync_file_range; - uint32_t pad2; - uint64_t latency_target; uint64_t latency_window; + uint64_t max_latency; fio_fp64_t latency_percentile; + uint32_t sig_figs; + uint32_t block_error_hist; - uint32_t skip_bad; uint32_t replay_align; uint32_t replay_scale; + uint32_t replay_time_scale; + uint32_t replay_skip; uint32_t per_job_logs; uint32_t allow_create; uint32_t allow_mounted_write; + + uint32_t zone_mode; } __attribute__((packed)); extern void convert_thread_options_to_cpu(struct thread_options *o, struct thread_options_pack *top);