steadystate: add line for output-format=normal
[fio.git] / steadystate.c
index f5d804624d1ccca86ffebdc4254236e1542cad36..3468428f4ab97c228e9766274a79785820b561a8 100644 (file)
@@ -38,6 +38,7 @@ void steadystate_setup(void)
 
                if (!td->o.group_reporting) {
                        steadystate_alloc(td);
+                       td->ss.state |= __FIO_SS_DATA;
                        continue;
                }
 
@@ -107,7 +108,7 @@ static bool steadystate_slope(unsigned long iops, unsigned long bw,
                 */
                ss->slope = (ss->sum_xy - (double) ss->sum_x * ss->sum_y / ss->dur) /
                                (ss->sum_x_sq - (double) ss->sum_x * ss->sum_x / ss->dur);
-               if (ss->pct)
+               if (ss->state & __FIO_SS_PCT)
                        ss->criterion = 100.0 * ss->slope / (ss->sum_y / ss->dur);
                else
                        ss->criterion = ss->slope;
@@ -172,7 +173,7 @@ static bool steadystate_deviation(unsigned long iops, unsigned long bw,
                        ss->deviation = max(ss->deviation, diff * (diff < 0.0 ? -1.0 : 1.0));
                }
 
-               if (ss->pct)
+               if (ss->state & __FIO_SS_PCT)
                        ss->criterion = 100.0 * ss->deviation / mean;
                else
                        ss->criterion = ss->deviation;
@@ -311,7 +312,6 @@ int td_steadystate_init(struct thread_data *td)
                ss->dur = o->ss_dur;
                ss->limit = o->ss_limit.u.f;
                ss->ramp_time = o->ss_ramp_time;
-               ss->pct = o->ss_pct;
 
                ss->state = o->ss;
                if (!td->ss.ramp_time)
@@ -331,7 +331,6 @@ int td_steadystate_init(struct thread_data *td)
                        if (ss2->dur != ss->dur ||
                            ss2->limit != ss->limit ||
                            ss2->ramp_time != ss->ramp_time ||
-                           ss2->pct != ss->pct ||
                            ss2->state != ss->state ||
                            ss2->sum_x != ss->sum_x ||
                            ss2->sum_x_sq != ss->sum_x_sq) {
@@ -343,3 +342,25 @@ int td_steadystate_init(struct thread_data *td)
 
        return 0;
 }
+
+unsigned long long steadystate_bw_mean(struct steadystate_data *ss)
+{
+       int i;
+       unsigned long long sum;
+
+       for (i = 0, sum = 0; i < ss->dur; i++)
+               sum += ss->bw_data[i];
+
+       return sum / ss->dur;
+}
+
+unsigned long long steadystate_iops_mean(struct steadystate_data *ss)
+{
+       int i;
+       unsigned long long sum;
+
+       for (i = 0, sum = 0; i < ss->dur; i++)
+               sum += ss->iops_data[i];
+
+       return sum / ss->dur;
+}