Fix whitespace issues in previous commit
[fio.git] / steadystate.h
1 #ifndef FIO_STEADYSTATE_H
2 #define FIO_STEADYSTATE_H
3
4 #include "stat.h"
5 #include "thread_options.h"
6 #include "lib/ieee754.h"
7
8 extern void steadystate_free(struct thread_data *);
9 extern void steadystate_check(void);
10 extern void steadystate_setup(void);
11 extern int td_steadystate_init(struct thread_data *);
12 extern uint64_t steadystate_bw_mean(struct thread_stat *);
13 extern uint64_t steadystate_iops_mean(struct thread_stat *);
14
15 extern bool steadystate_enabled;
16
17 struct steadystate_data {
18         double limit;
19         unsigned long long dur;
20         unsigned long long ramp_time;
21
22         uint32_t state;
23
24         unsigned int head;
25         unsigned int tail;
26         uint64_t *iops_data;
27         uint64_t *bw_data;
28
29         double slope;
30         double deviation;
31         double criterion;
32
33         uint64_t sum_y;
34         uint64_t sum_x;
35         uint64_t sum_x_sq;
36         uint64_t sum_xy;
37         uint64_t oldest_y;
38
39         struct timespec prev_time;
40         uint64_t prev_iops;
41         uint64_t prev_bytes;
42 };
43
44 enum {
45         __FIO_SS_IOPS = 0,
46         __FIO_SS_BW,
47         __FIO_SS_SLOPE,
48         __FIO_SS_ATTAINED,
49         __FIO_SS_RAMP_OVER,
50         __FIO_SS_DATA,
51         __FIO_SS_PCT,
52         __FIO_SS_BUFFER_FULL,
53 };
54
55 enum {
56         FIO_SS_IOPS             = 1 << __FIO_SS_IOPS,
57         FIO_SS_BW               = 1 << __FIO_SS_BW,
58         FIO_SS_SLOPE            = 1 << __FIO_SS_SLOPE,
59         FIO_SS_ATTAINED         = 1 << __FIO_SS_ATTAINED,
60         FIO_SS_RAMP_OVER        = 1 << __FIO_SS_RAMP_OVER,
61         FIO_SS_DATA             = 1 << __FIO_SS_DATA,
62         FIO_SS_PCT              = 1 << __FIO_SS_PCT,
63         FIO_SS_BUFFER_FULL      = 1 << __FIO_SS_BUFFER_FULL,
64
65         FIO_SS_IOPS_SLOPE       = FIO_SS_IOPS | FIO_SS_SLOPE,
66         FIO_SS_BW_SLOPE         = FIO_SS_BW | FIO_SS_SLOPE,
67 };
68
69 #define STEADYSTATE_MSEC        1000
70
71 #endif