X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=steadystate.c;h=98f027cee4013ac4f75db7a4ade31c8d5f8056fa;hp=0563efd19d413510b1d5ce6b107f254d71eadca6;hb=209c37b4a53d181973b74a2560906cbe5697b3a4;hpb=9d19301993967e382d7737aee01e7cbf2648099e diff --git a/steadystate.c b/steadystate.c index 0563efd1..98f027ce 100644 --- a/steadystate.c +++ b/steadystate.c @@ -8,13 +8,8 @@ bool steadystate_enabled = false; static void steadystate_alloc(struct thread_data *td) { - int i; - - td->ss.bw_data = malloc(td->ss.dur * sizeof(uint64_t)); - td->ss.iops_data = malloc(td->ss.dur * sizeof(uint64_t)); - /* initialize so that it is obvious if the cache is not full in the output */ - for (i = 0; i < td->ss.dur; i++) - td->ss.iops_data[i] = td->ss.bw_data[i] = 0; + td->ss.bw_data = calloc(td->ss.dur, sizeof(uint64_t)); + td->ss.iops_data = calloc(td->ss.dur, sizeof(uint64_t)); td->ss.state |= __FIO_SS_DATA; } @@ -211,7 +206,8 @@ void steadystate_check(void) struct steadystate_data *ss = &td->ss; if (!ss->dur || td->runstate <= TD_SETTING_UP || - td->runstate >= TD_EXITED || (ss->state & __FIO_SS_ATTAINED)) + td->runstate >= TD_EXITED || !ss->state || + ss->state & __FIO_SS_ATTAINED) continue; td_iops = 0; @@ -235,7 +231,7 @@ void steadystate_check(void) } td_io_u_lock(td); - for (ddir = DDIR_READ; ddir < DDIR_RWDIR_CNT; ddir++) { + for (ddir = 0; ddir < DDIR_RWDIR_CNT; ddir++) { td_iops += td->io_blocks[ddir]; td_bytes += td->io_bytes[ddir]; } @@ -277,7 +273,7 @@ void steadystate_check(void) (unsigned long long) group_bw, ss->head, ss->tail); - if (td->o.ss & __FIO_SS_SLOPE) + if (ss->state & __FIO_SS_SLOPE) ret = steadystate_slope(group_iops, group_bw, td); else ret = steadystate_deviation(group_iops, group_bw, td); @@ -316,7 +312,7 @@ int td_steadystate_init(struct thread_data *td) ss->limit = o->ss_limit.u.f; ss->ramp_time = o->ss_ramp_time; - ss->state = o->ss; + ss->state = o->ss_state; if (!td->ss.ramp_time) ss->state |= __FIO_SS_RAMP_OVER;