X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=fio.h;h=e42d67bb137d721b92936e1249176c5ceabfee15;hp=df36f14e6e895d74d8712e7cdd77ca7f842f304c;hb=dc0deca2b89bea896e8eb8133961cec68c4ba8b9;hpb=56bb17f297c50b2832c845b0f6cdde5063748b34 diff --git a/fio.h b/fio.h index df36f14e..e42d67bb 100644 --- a/fio.h +++ b/fio.h @@ -25,11 +25,12 @@ enum fio_ddir { }; struct io_stat { - unsigned long val; - unsigned long val_sq; unsigned long max_val; unsigned long min_val; unsigned long samples; + + double mean; + double S; }; struct io_sample { @@ -74,6 +75,9 @@ struct io_u { unsigned int buflen; unsigned long long offset; + void *xfer_buf; + unsigned int xfer_buflen; + unsigned int resid; unsigned int error; @@ -142,6 +146,8 @@ enum fio_ioengine_flags { FIO_CPUIO = 1 << 1, FIO_MMAPIO = 1 << 2, FIO_RAWIO = 1 << 3, + FIO_NETIO = 1 << 4, + FIO_NULLIO = 1 << 5, }; struct fio_file { @@ -166,10 +172,16 @@ struct fio_file { unsigned int unlink; }; +/* + * How many depth levels to log + */ +#define FIO_IO_U_MAP_NR 8 + /* * This describes a single thread/process executing a fio job. */ struct thread_data { + char *description; char *name; char *directory; char *filename; @@ -217,6 +229,7 @@ struct thread_data { unsigned int hugepage_size; unsigned int rw_min_bs; unsigned int thinktime; + unsigned int thinktime_blocks; unsigned int fsync_blocks; unsigned int start_delay; unsigned long timeout; @@ -226,8 +239,8 @@ struct thread_data { unsigned long long zone_size; unsigned long long zone_skip; enum fio_memtype mem_type; - char *hugefile; - int hugefd; + char *mmapfile; + int mmapfd; unsigned int stonewall; unsigned int numjobs; unsigned int iodepth; @@ -262,6 +275,8 @@ struct thread_data { * Current IO depth and list of free and busy io_u's. */ unsigned int cur_depth; + unsigned int io_u_map[FIO_IO_U_MAP_NR]; + unsigned long total_io_u; struct list_head io_u_freelist; struct list_head io_u_busylist; @@ -455,7 +470,11 @@ extern void update_io_ticks(void); extern void disk_util_timer_arm(void); extern void setup_log(struct io_log **); extern void finish_log(struct thread_data *, struct io_log *, const char *); +extern void __finish_log(struct io_log *, const char *); extern int setup_rate(struct thread_data *); +extern struct io_log *agg_io_log[2]; +extern int write_bw_log; +extern void add_agg_sample(unsigned long, enum fio_ddir); /* * Time functions