X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=steadystate.h;h=bbc3945ceb93e0bf89d89e7d2accdd6c34dd31dd;hb=e6fe02651641fc64d2fa4fcfe9b1013b2947d11b;hp=441817a85a4e949d3b24ac8ad511865c5f440636;hpb=d685adfb27d3f2f94a6623c774a246bcaac2f853;p=fio.git diff --git a/steadystate.h b/steadystate.h index 441817a8..bbc3945c 100644 --- a/steadystate.h +++ b/steadystate.h @@ -1,44 +1,43 @@ #ifndef FIO_STEADYSTATE_H #define FIO_STEADYSTATE_H +#include "stat.h" #include "thread_options.h" +#include "lib/ieee754.h" extern void steadystate_check(void); extern void steadystate_setup(void); extern int td_steadystate_init(struct thread_data *); -extern unsigned long long steadystate_bw_mean(struct steadystate_data *); -extern unsigned long long steadystate_iops_mean(struct steadystate_data *); +extern uint64_t steadystate_bw_mean(struct thread_stat *); +extern uint64_t steadystate_iops_mean(struct thread_stat *); extern bool steadystate_enabled; -/* - * For steady state detection - */ struct steadystate_data { double limit; unsigned long long dur; unsigned long long ramp_time; - unsigned int state; + uint32_t state; unsigned int head; unsigned int tail; - unsigned long *iops_data; - unsigned long *bw_data; + uint64_t *iops_data; + uint64_t *bw_data; double slope; - double criterion; double deviation; + double criterion; - 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; + uint64_t sum_y; + uint64_t sum_x; + uint64_t sum_x_sq; + uint64_t sum_xy; + uint64_t oldest_y; - struct timeval prev_time; - unsigned long long prev_iops; - unsigned long long prev_bytes; + struct timespec prev_time; + uint64_t prev_iops; + uint64_t prev_bytes; }; enum { @@ -49,6 +48,7 @@ enum { __FIO_SS_RAMP_OVER = 16, __FIO_SS_DATA = 32, __FIO_SS_PCT = 64, + __FIO_SS_BUFFER_FULL = 128, FIO_SS_IOPS = __FIO_SS_IOPS, FIO_SS_IOPS_SLOPE = __FIO_SS_IOPS | __FIO_SS_SLOPE,