From: Jens Axboe Date: Wed, 10 Apr 2013 13:01:42 +0000 (+0200) Subject: Add thread_options.h X-Git-Tag: fio-2.1~78 X-Git-Url: https://git.kernel.dk/?p=fio.git;a=commitdiff_plain;h=8062f52754eb548cfd1de892a983fd5f0e63b347 Add thread_options.h The options are always problematic to merge between the master repo and gfio. So import this bit from gfio. Signed-off-by: Jens Axboe --- diff --git a/fio.h b/fio.h index e74bdb3c..55603cb9 100644 --- a/fio.h +++ b/fio.h @@ -17,6 +17,7 @@ struct thread_data; #include "compiler/compiler.h" +#include "thread_options.h" #include "flist.h" #include "fifo.h" #include "rbtree.h" @@ -54,17 +55,6 @@ struct thread_data; #define MPOL_LOCAL MPOL_MAX #endif -/* - * What type of allocation to use for io buffers - */ -enum fio_memtype { - MEM_MALLOC = 0, /* ordinary malloc */ - MEM_SHM, /* use shared memory segments */ - MEM_SHMHUGE, /* use shared memory segments with huge pages */ - MEM_MMAP, /* use anonynomous mmap */ - MEM_MMAPHUGE, /* memory mapped huge file */ -}; - /* * offset generator types */ @@ -73,242 +63,6 @@ enum { RW_SEQ_IDENT, }; -/* - * What type of errors to continue on when continue_on_error is used - */ -enum error_type_bit { - ERROR_TYPE_READ_BIT = 0, - ERROR_TYPE_WRITE_BIT = 1, - ERROR_TYPE_VERIFY_BIT = 2, - ERROR_TYPE_CNT = 3, -}; - -enum error_type { - ERROR_TYPE_NONE = 0, - ERROR_TYPE_READ = 1 << ERROR_TYPE_READ_BIT, - ERROR_TYPE_WRITE = 1 << ERROR_TYPE_WRITE_BIT, - ERROR_TYPE_VERIFY = 1 << ERROR_TYPE_VERIFY_BIT, - ERROR_TYPE_ANY = 0xffff, -}; - -struct bssplit { - unsigned int bs; - unsigned char perc; -}; - -struct thread_options { - int pad; - char *description; - char *name; - char *directory; - char *filename; - char *filename_format; - char *opendir; - char *ioengine; - enum td_ddir td_ddir; - unsigned int rw_seq; - unsigned int kb_base; - unsigned int unit_base; - unsigned int ddir_seq_nr; - long ddir_seq_add; - unsigned int iodepth; - unsigned int iodepth_low; - unsigned int iodepth_batch; - unsigned int iodepth_batch_complete; - - unsigned long long size; - unsigned int size_percent; - unsigned int fill_device; - unsigned long long file_size_low; - unsigned long long file_size_high; - unsigned long long start_offset; - - 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]; - struct bssplit *bssplit[DDIR_RWDIR_CNT]; - unsigned int bssplit_nr[DDIR_RWDIR_CNT]; - - int *ignore_error[ERROR_TYPE_CNT]; - unsigned int ignore_error_nr[ERROR_TYPE_CNT]; - unsigned int error_dump; - - unsigned int nr_files; - unsigned int open_files; - enum file_lock_mode file_lock_mode; - - unsigned int odirect; - unsigned int invalidate_cache; - unsigned int create_serialize; - unsigned int create_fsync; - unsigned int create_on_open; - unsigned int create_only; - unsigned int end_fsync; - unsigned int pre_read; - unsigned int sync_io; - 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]; - unsigned int verify_pattern_bytes; - unsigned int verify_fatal; - unsigned int verify_dump; - unsigned int verify_async; - unsigned long long verify_backlog; - unsigned int verify_batch; - unsigned int experimental_verify; - unsigned int use_thread; - unsigned int unlink; - unsigned int do_disk_util; - unsigned int override_sync; - unsigned int rand_repeatable; - unsigned int use_os_rand; - unsigned int write_lat_log; - unsigned int write_bw_log; - unsigned int write_iops_log; - unsigned int log_avg_msec; - unsigned int norandommap; - unsigned int softrandommap; - unsigned int bs_unaligned; - unsigned int fsync_on_close; - - unsigned int random_distribution; - double zipf_theta; - double pareto_h; - - unsigned int random_generator; - - unsigned int hugepage_size; - unsigned int rw_min_bs; - unsigned int thinktime; - unsigned int thinktime_spin; - unsigned int thinktime_blocks; - unsigned int fsync_blocks; - unsigned int fdatasync_blocks; - unsigned int barrier_blocks; - unsigned long long start_delay; - unsigned long long timeout; - unsigned long long ramp_time; - unsigned int overwrite; - unsigned int bw_avg_time; - unsigned int iops_avg_time; - unsigned int loops; - unsigned long long zone_range; - unsigned long long zone_size; - unsigned long long zone_skip; - enum fio_memtype mem_type; - unsigned int mem_align; - - unsigned int max_latency; - - unsigned int stonewall; - unsigned int new_group; - unsigned int numjobs; - os_cpu_mask_t cpumask; - unsigned int cpumask_set; - os_cpu_mask_t verify_cpumask; - unsigned int verify_cpumask_set; -#ifdef CONFIG_LIBNUMA - struct bitmask *numa_cpunodesmask; - unsigned int numa_cpumask_set; - unsigned short numa_mem_mode; - unsigned int numa_mem_prefer_node; - struct bitmask *numa_memnodesmask; - unsigned int numa_memmask_set; -#endif - unsigned int iolog; - unsigned int rwmixcycle; - unsigned int rwmix[2]; - unsigned int nice; - unsigned int file_service_type; - unsigned int group_reporting; - unsigned int fadvise_hint; - enum fio_fallocate_mode fallocate_mode; - unsigned int zero_buffers; - unsigned int refill_buffers; - unsigned int scramble_buffers; - unsigned int compress_percentage; - unsigned int compress_chunk; - unsigned int time_based; - unsigned int disable_lat; - unsigned int disable_clat; - unsigned int disable_slat; - unsigned int disable_bw; - unsigned int unified_rw_rep; - unsigned int gtod_reduce; - unsigned int gtod_cpu; - unsigned int gtod_offload; - enum fio_cs clocksource; - unsigned int no_stall; - unsigned int trim_percentage; - unsigned int trim_batch; - unsigned int trim_zero; - unsigned long long trim_backlog; - unsigned int clat_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; - char *write_iolog_file; - char *bw_log_file; - char *lat_log_file; - char *iops_log_file; - char *replay_redirect; - - /* - * Pre-run and post-run shell - */ - char *exec_prerun; - char *exec_postrun; - - unsigned int rate[DDIR_RWDIR_CNT]; - unsigned int ratemin[DDIR_RWDIR_CNT]; - unsigned int ratecycle; - unsigned int rate_iops[DDIR_RWDIR_CNT]; - unsigned int rate_iops_min[DDIR_RWDIR_CNT]; - - char *ioscheduler; - - /* - * CPU "io" cycle burner - */ - unsigned int cpuload; - unsigned int cpucycle; - - /* - * I/O Error handling - */ - enum error_type continue_on_error; - - /* - * Benchmark profile type - */ - char *profile; - - /* - * blkio cgroup support - */ - char *cgroup; - unsigned int cgroup_weight; - unsigned int cgroup_nodelete; - - unsigned int uid; - unsigned int gid; - - int flow_id; - int flow; - int flow_watermark; - unsigned int flow_sleep; - - unsigned long long offset_increment; - - unsigned int sync_file_range; -}; - enum { TD_F_VER_BACKLOG = 1, TD_F_TRIM_BACKLOG = 2, diff --git a/iolog.h b/iolog.h index bb5c9b78..6a53de25 100644 --- a/iolog.h +++ b/iolog.h @@ -1,6 +1,7 @@ #ifndef FIO_IOLOG_H #define FIO_IOLOG_H +#include "rbtree.h" #include "lib/ieee754.h" /* @@ -84,6 +85,7 @@ enum file_log_act { FIO_LOG_UNLINK_FILE, }; +struct io_u; extern int __must_check read_iolog_get(struct thread_data *, struct io_u *); extern void log_io_u(struct thread_data *, struct io_u *); extern void log_file(struct thread_data *, struct fio_file *, enum file_log_act); diff --git a/stat.h b/stat.h index f23abfab..fd4eb1a6 100644 --- a/stat.h +++ b/stat.h @@ -1,6 +1,8 @@ #ifndef FIO_STAT_H #define FIO_STAT_H +#include "iolog.h" + struct group_run_stats { uint64_t max_run[DDIR_RWDIR_CNT], min_run[DDIR_RWDIR_CNT]; uint64_t max_bw[DDIR_RWDIR_CNT], min_bw[DDIR_RWDIR_CNT]; diff --git a/thread_options.h b/thread_options.h new file mode 100644 index 00000000..3433ee02 --- /dev/null +++ b/thread_options.h @@ -0,0 +1,260 @@ +#ifndef FIO_THREAD_OPTIONS_H +#define FIO_THREAD_OPTIONS_H + +#include "arch/arch.h" +#include "os/os.h" +#include "stat.h" +#include "gettime.h" + +/* + * What type of allocation to use for io buffers + */ +enum fio_memtype { + MEM_MALLOC = 0, /* ordinary malloc */ + MEM_SHM, /* use shared memory segments */ + MEM_SHMHUGE, /* use shared memory segments with huge pages */ + MEM_MMAP, /* use anonynomous mmap */ + MEM_MMAPHUGE, /* memory mapped huge file */ +}; + +/* + * What type of errors to continue on when continue_on_error is used + */ +enum error_type_bit { + ERROR_TYPE_READ_BIT = 0, + ERROR_TYPE_WRITE_BIT = 1, + ERROR_TYPE_VERIFY_BIT = 2, + ERROR_TYPE_CNT = 3, +}; + +#define ERROR_STR_MAX 128 + +enum error_type { + ERROR_TYPE_NONE = 0, + ERROR_TYPE_READ = 1 << ERROR_TYPE_READ_BIT, + ERROR_TYPE_WRITE = 1 << ERROR_TYPE_WRITE_BIT, + ERROR_TYPE_VERIFY = 1 << ERROR_TYPE_VERIFY_BIT, + ERROR_TYPE_ANY = 0xffff, +}; + +#define BSSPLIT_MAX 64 + +struct bssplit { + uint32_t bs; + uint32_t perc; +}; + +struct thread_options { + int pad; + char *description; + char *name; + char *directory; + char *filename; + char *filename_format; + char *opendir; + char *ioengine; + enum td_ddir td_ddir; + unsigned int rw_seq; + unsigned int kb_base; + unsigned int unit_base; + unsigned int ddir_seq_nr; + long ddir_seq_add; + unsigned int iodepth; + unsigned int iodepth_low; + unsigned int iodepth_batch; + unsigned int iodepth_batch_complete; + + unsigned long long size; + unsigned int size_percent; + unsigned int fill_device; + unsigned long long file_size_low; + unsigned long long file_size_high; + unsigned long long start_offset; + + 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]; + struct bssplit *bssplit[DDIR_RWDIR_CNT]; + unsigned int bssplit_nr[DDIR_RWDIR_CNT]; + + int *ignore_error[ERROR_TYPE_CNT]; + unsigned int ignore_error_nr[ERROR_TYPE_CNT]; + unsigned int error_dump; + + unsigned int nr_files; + unsigned int open_files; + enum file_lock_mode file_lock_mode; + + unsigned int odirect; + unsigned int invalidate_cache; + unsigned int create_serialize; + unsigned int create_fsync; + unsigned int create_on_open; + unsigned int create_only; + unsigned int end_fsync; + unsigned int pre_read; + unsigned int sync_io; + 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]; + unsigned int verify_pattern_bytes; + unsigned int verify_fatal; + unsigned int verify_dump; + unsigned int verify_async; + unsigned long long verify_backlog; + unsigned int verify_batch; + unsigned int experimental_verify; + unsigned int use_thread; + unsigned int unlink; + unsigned int do_disk_util; + unsigned int override_sync; + unsigned int rand_repeatable; + unsigned int use_os_rand; + unsigned int write_lat_log; + unsigned int write_bw_log; + unsigned int write_iops_log; + unsigned int log_avg_msec; + unsigned int norandommap; + unsigned int softrandommap; + unsigned int bs_unaligned; + unsigned int fsync_on_close; + + unsigned int random_distribution; + double zipf_theta; + double pareto_h; + + unsigned int random_generator; + + unsigned int hugepage_size; + unsigned int rw_min_bs; + unsigned int thinktime; + unsigned int thinktime_spin; + unsigned int thinktime_blocks; + unsigned int fsync_blocks; + unsigned int fdatasync_blocks; + unsigned int barrier_blocks; + unsigned long long start_delay; + unsigned long long timeout; + unsigned long long ramp_time; + unsigned int overwrite; + unsigned int bw_avg_time; + unsigned int iops_avg_time; + unsigned int loops; + unsigned long long zone_range; + unsigned long long zone_size; + unsigned long long zone_skip; + enum fio_memtype mem_type; + unsigned int mem_align; + + unsigned int max_latency; + + unsigned int stonewall; + unsigned int new_group; + unsigned int numjobs; + os_cpu_mask_t cpumask; + unsigned int cpumask_set; + os_cpu_mask_t verify_cpumask; + unsigned int verify_cpumask_set; +#ifdef CONFIG_LIBNUMA + struct bitmask *numa_cpunodesmask; + unsigned int numa_cpumask_set; + unsigned short numa_mem_mode; + unsigned int numa_mem_prefer_node; + struct bitmask *numa_memnodesmask; + unsigned int numa_memmask_set; +#endif + unsigned int iolog; + unsigned int rwmixcycle; + unsigned int rwmix[2]; + unsigned int nice; + unsigned int file_service_type; + unsigned int group_reporting; + unsigned int fadvise_hint; + enum fio_fallocate_mode fallocate_mode; + unsigned int zero_buffers; + unsigned int refill_buffers; + unsigned int scramble_buffers; + unsigned int compress_percentage; + unsigned int compress_chunk; + unsigned int time_based; + unsigned int disable_lat; + unsigned int disable_clat; + unsigned int disable_slat; + unsigned int disable_bw; + unsigned int unified_rw_rep; + unsigned int gtod_reduce; + unsigned int gtod_cpu; + unsigned int gtod_offload; + enum fio_cs clocksource; + unsigned int no_stall; + unsigned int trim_percentage; + unsigned int trim_batch; + unsigned int trim_zero; + unsigned long long trim_backlog; + unsigned int clat_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; + char *write_iolog_file; + char *bw_log_file; + char *lat_log_file; + char *iops_log_file; + char *replay_redirect; + + /* + * Pre-run and post-run shell + */ + char *exec_prerun; + char *exec_postrun; + + unsigned int rate[DDIR_RWDIR_CNT]; + unsigned int ratemin[DDIR_RWDIR_CNT]; + unsigned int ratecycle; + unsigned int rate_iops[DDIR_RWDIR_CNT]; + unsigned int rate_iops_min[DDIR_RWDIR_CNT]; + + char *ioscheduler; + + /* + * CPU "io" cycle burner + */ + unsigned int cpuload; + unsigned int cpucycle; + + /* + * I/O Error handling + */ + enum error_type continue_on_error; + + /* + * Benchmark profile type + */ + char *profile; + + /* + * blkio cgroup support + */ + char *cgroup; + unsigned int cgroup_weight; + unsigned int cgroup_nodelete; + + unsigned int uid; + unsigned int gid; + + int flow_id; + int flow; + int flow_watermark; + unsigned int flow_sleep; + + unsigned long long offset_increment; + + unsigned int sync_file_range; +}; + +#endif