X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=fio.h;h=6bb21ebb2ace311c3b4643bb6adbfbbcf045b444;hb=53b5fa1ea4f821899440637ab632ce0e1687c916;hp=fffec0014a4212e9183ce3bbeca963aa35492a43;hpb=2ee239fb084355e115cf8c2bf8051e8807c4222a;p=fio.git diff --git a/fio.h b/fio.h index fffec001..6bb21ebb 100644 --- a/fio.h +++ b/fio.h @@ -47,6 +47,7 @@ #include "workqueue.h" #include "steadystate.h" #include "lib/nowarn_snprintf.h" +#include "dedupe.h" #ifdef CONFIG_SOLARISAIO #include @@ -140,6 +141,7 @@ enum { FIO_RAND_POISSON2_OFF, FIO_RAND_POISSON3_OFF, FIO_RAND_PRIO_CMDS, + FIO_RAND_DEDUPE_WORKING_SET_IX, FIO_RAND_NR_OFFS, }; @@ -149,6 +151,9 @@ enum { RATE_PROCESS_LINEAR = 0, RATE_PROCESS_POISSON = 1, + + THINKTIME_BLOCKS_TYPE_COMPLETE = 0, + THINKTIME_BLOCKS_TYPE_ISSUE = 1, }; enum { @@ -229,6 +234,7 @@ struct thread_data { double pareto_h; double gauss_dev; }; + double random_center; int error; int sig; int done; @@ -255,9 +261,14 @@ struct thread_data { struct frand_state buf_state; struct frand_state buf_state_prev; + struct frand_state buf_state_ret; struct frand_state dedupe_state; struct frand_state zone_state; struct frand_state prio_state; + struct frand_state dedupe_working_set_index_state; + struct frand_state *dedupe_working_set_states; + + unsigned long long num_unique_pages; struct zone_split_index **zone_state_index; unsigned int num_open_zones; @@ -269,6 +280,11 @@ struct thread_data { int shm_id; + /* + * Job default IO priority set with prioclass and prio options. + */ + unsigned int ioprio; + /* * IO engine hooks, contains everything needed to submit an io_u * to any of the available IO engines. @@ -280,7 +296,6 @@ struct thread_data { * IO engine private data and dlhandle. */ void *io_ops_data; - void *io_ops_dlhandle; /* * Queue depth of io_u's that fio MIGHT do @@ -354,6 +369,10 @@ struct thread_data { struct fio_sem *sem; uint64_t bytes_done[DDIR_RWDIR_CNT]; + uint64_t *thinktime_blocks_counter; + struct timespec last_thinktime; + uint64_t last_thinktime_blocks; + /* * State for random io, a bitmap of blocks done vs not done */ @@ -408,6 +427,7 @@ struct thread_data { */ struct flist_head io_log_list; FILE *io_log_rfile; + unsigned int io_log_blktrace; unsigned int io_log_current; unsigned int io_log_checkmark; unsigned int io_log_highmark; @@ -756,17 +776,9 @@ static inline bool option_check_rate(struct thread_data *td, enum fio_ddir ddir) return false; } -static inline bool __should_check_rate(struct thread_data *td) -{ - return (td->flags & TD_F_CHECK_RATE) != 0; -} - static inline bool should_check_rate(struct thread_data *td) { - if (!__should_check_rate(td)) - return false; - - return ddir_rw_sum(td->bytes_done) != 0; + return (td->flags & TD_F_CHECK_RATE) != 0; } static inline unsigned long long td_max_bs(struct thread_data *td)