|
Packit Service |
0e769b |
#ifndef FIO_STEADYSTATE_H
|
|
Packit Service |
0e769b |
#define FIO_STEADYSTATE_H
|
|
Packit Service |
0e769b |
|
|
Packit Service |
0e769b |
#include "thread_options.h"
|
|
Packit Service |
0e769b |
|
|
Packit Service |
0e769b |
extern void steadystate_free(struct thread_data *);
|
|
Packit Service |
0e769b |
extern void steadystate_check(void);
|
|
Packit Service |
0e769b |
extern void steadystate_setup(void);
|
|
Packit Service |
0e769b |
extern int td_steadystate_init(struct thread_data *);
|
|
Packit Service |
0e769b |
extern uint64_t steadystate_bw_mean(struct thread_stat *);
|
|
Packit Service |
0e769b |
extern uint64_t steadystate_iops_mean(struct thread_stat *);
|
|
Packit Service |
0e769b |
|
|
Packit Service |
0e769b |
extern bool steadystate_enabled;
|
|
Packit Service |
0e769b |
|
|
Packit Service |
0e769b |
struct steadystate_data {
|
|
Packit Service |
0e769b |
double limit;
|
|
Packit Service |
0e769b |
unsigned long long dur;
|
|
Packit Service |
0e769b |
unsigned long long ramp_time;
|
|
Packit Service |
0e769b |
|
|
Packit Service |
0e769b |
uint32_t state;
|
|
Packit Service |
0e769b |
|
|
Packit Service |
0e769b |
unsigned int head;
|
|
Packit Service |
0e769b |
unsigned int tail;
|
|
Packit Service |
0e769b |
uint64_t *iops_data;
|
|
Packit Service |
0e769b |
uint64_t *bw_data;
|
|
Packit Service |
0e769b |
|
|
Packit Service |
0e769b |
double slope;
|
|
Packit Service |
0e769b |
double deviation;
|
|
Packit Service |
0e769b |
double criterion;
|
|
Packit Service |
0e769b |
|
|
Packit Service |
0e769b |
uint64_t sum_y;
|
|
Packit Service |
0e769b |
uint64_t sum_x;
|
|
Packit Service |
0e769b |
uint64_t sum_x_sq;
|
|
Packit Service |
0e769b |
uint64_t sum_xy;
|
|
Packit Service |
0e769b |
uint64_t oldest_y;
|
|
Packit Service |
0e769b |
|
|
Packit Service |
0e769b |
struct timespec prev_time;
|
|
Packit Service |
0e769b |
uint64_t prev_iops;
|
|
Packit Service |
0e769b |
uint64_t prev_bytes;
|
|
Packit Service |
0e769b |
};
|
|
Packit Service |
0e769b |
|
|
Packit Service |
0e769b |
enum {
|
|
Packit Service |
0e769b |
__FIO_SS_IOPS = 0,
|
|
Packit Service |
0e769b |
__FIO_SS_BW,
|
|
Packit Service |
0e769b |
__FIO_SS_SLOPE,
|
|
Packit Service |
0e769b |
__FIO_SS_ATTAINED,
|
|
Packit Service |
0e769b |
__FIO_SS_RAMP_OVER,
|
|
Packit Service |
0e769b |
__FIO_SS_DATA,
|
|
Packit Service |
0e769b |
__FIO_SS_PCT,
|
|
Packit Service |
0e769b |
__FIO_SS_BUFFER_FULL,
|
|
Packit Service |
0e769b |
};
|
|
Packit Service |
0e769b |
|
|
Packit Service |
0e769b |
enum {
|
|
Packit Service |
0e769b |
FIO_SS_IOPS = 1 << __FIO_SS_IOPS,
|
|
Packit Service |
0e769b |
FIO_SS_BW = 1 << __FIO_SS_BW,
|
|
Packit Service |
0e769b |
FIO_SS_SLOPE = 1 << __FIO_SS_SLOPE,
|
|
Packit Service |
0e769b |
FIO_SS_ATTAINED = 1 << __FIO_SS_ATTAINED,
|
|
Packit Service |
0e769b |
FIO_SS_RAMP_OVER = 1 << __FIO_SS_RAMP_OVER,
|
|
Packit Service |
0e769b |
FIO_SS_DATA = 1 << __FIO_SS_DATA,
|
|
Packit Service |
0e769b |
FIO_SS_PCT = 1 << __FIO_SS_PCT,
|
|
Packit Service |
0e769b |
FIO_SS_BUFFER_FULL = 1 << __FIO_SS_BUFFER_FULL,
|
|
Packit Service |
0e769b |
|
|
Packit Service |
0e769b |
FIO_SS_IOPS_SLOPE = FIO_SS_IOPS | FIO_SS_SLOPE,
|
|
Packit Service |
0e769b |
FIO_SS_BW_SLOPE = FIO_SS_BW | FIO_SS_SLOPE,
|
|
Packit Service |
0e769b |
};
|
|
Packit Service |
0e769b |
|
|
Packit Service |
0e769b |
#define STEADYSTATE_MSEC 1000
|
|
Packit Service |
0e769b |
|
|
Packit Service |
0e769b |
#endif
|