fio: ioengine flag cleanup
[fio.git] / steadystate.h
index deba5fb11262ebd481f407534dd47508bb03d1e5..f1ef2b20ba85bda3f2a6450e1e55d97061bd0b8e 100644 (file)
@@ -1,17 +1,17 @@
 #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_free(struct thread_data *);
+extern int steadystate_check(void);
 extern void steadystate_setup(void);
 extern int td_steadystate_init(struct thread_data *);
-extern unsigned long long steadystate_bw_mean(struct thread_stat *);
-extern unsigned long long steadystate_iops_mean(struct thread_stat *);
+extern uint64_t steadystate_bw_mean(struct thread_stat *);
+extern uint64_t steadystate_iops_mean(struct thread_stat *);
 
 extern bool steadystate_enabled;
+extern unsigned int ss_check_interval;
 
 struct steadystate_data {
        double limit;
@@ -29,32 +29,40 @@ struct steadystate_data {
        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 {
-       __FIO_SS_IOPS           = 1,
-       __FIO_SS_BW             = 2,
-       __FIO_SS_SLOPE          = 4,
-       __FIO_SS_ATTAINED       = 8,
-       __FIO_SS_RAMP_OVER      = 16,
-       __FIO_SS_DATA           = 32,
-       __FIO_SS_PCT            = 64,
-
-       FIO_SS_IOPS             = __FIO_SS_IOPS,
-       FIO_SS_IOPS_SLOPE       = __FIO_SS_IOPS | __FIO_SS_SLOPE,
-       FIO_SS_BW               = __FIO_SS_BW,
-       FIO_SS_BW_SLOPE         = __FIO_SS_BW | __FIO_SS_SLOPE,
+       __FIO_SS_IOPS = 0,
+       __FIO_SS_BW,
+       __FIO_SS_SLOPE,
+       __FIO_SS_ATTAINED,
+       __FIO_SS_RAMP_OVER,
+       __FIO_SS_DATA,
+       __FIO_SS_PCT,
+       __FIO_SS_BUFFER_FULL,
 };
 
-#define STEADYSTATE_MSEC       1000
+enum {
+       FIO_SS_IOPS             = 1 << __FIO_SS_IOPS,
+       FIO_SS_BW               = 1 << __FIO_SS_BW,
+       FIO_SS_SLOPE            = 1 << __FIO_SS_SLOPE,
+       FIO_SS_ATTAINED         = 1 << __FIO_SS_ATTAINED,
+       FIO_SS_RAMP_OVER        = 1 << __FIO_SS_RAMP_OVER,
+       FIO_SS_DATA             = 1 << __FIO_SS_DATA,
+       FIO_SS_PCT              = 1 << __FIO_SS_PCT,
+       FIO_SS_BUFFER_FULL      = 1 << __FIO_SS_BUFFER_FULL,
+
+       FIO_SS_IOPS_SLOPE       = FIO_SS_IOPS | FIO_SS_SLOPE,
+       FIO_SS_BW_SLOPE         = FIO_SS_BW | FIO_SS_SLOPE,
+};
 
 #endif