uint8_t size_perc_prev;
};
+/*
+ * For steady state detection
+ */
+struct steadystate_data {
+ double limit;
+ unsigned long long dur;
+ unsigned long long ramp_time;
+ bool (*evaluate)(unsigned long, unsigned long, struct thread_data *);
+ bool check_iops;
+ bool check_slope;
+ bool pct;
+
+ int attained;
+ int last_in_group;
+ int ramp_time_over;
+
+ unsigned int head;
+ unsigned int tail;
+ unsigned long *iops_data;
+ unsigned long *bw_data;
+
+ double slope;
+ double criterion;
+ double deviation;
+
+ unsigned long long sum_y;
+ unsigned long long sum_x;
+ unsigned long long sum_x_sq;
+ unsigned long long sum_xy;
+ unsigned long long oldest_y;
+
+ struct timeval prev_time;
+ unsigned long long prev_iops;
+ unsigned long long prev_bytes;
+};
+
+
/*
* This describes a single thread/process executing a fio job.
*/
void *pinned_mem;
+ struct steadystate_data ss;
+
char verror[FIO_VERROR_SIZE];
};
extern long long trigger_timeout;
extern char *aux_path;
+extern bool steadystate;
+#define STEADYSTATE_MSEC (1000)
+
extern struct thread_data *threads;
static inline void fio_ro_check(const struct thread_data *td, struct io_u *io_u)
FIO_CPUS_SPLIT,
};
+enum {
+ FIO_STEADYSTATE_IOPS = 0,
+ FIO_STEADYSTATE_IOPS_SLOPE,
+ FIO_STEADYSTATE_BW,
+ FIO_STEADYSTATE_BW_SLOPE,
+};
+
+
extern void exec_trigger(const char *);
extern void check_trigger_file(void);