stat: Print number of samples in bw and iops stats
authorAndreas Herrmann <aherrmann@suse.com>
Fri, 23 Jun 2017 22:27:36 +0000 (00:27 +0200)
committerJens Axboe <axboe@kernel.dk>
Fri, 23 Jun 2017 22:31:02 +0000 (16:31 -0600)
This adds the actual number of samples for bw and iops stats printed
in normal and json fio output. Example for normal output:

   bw (  MiB/s): min=  120, max= 3304, per=0.10%, avg=2659.34, stdev=1085.25, samples=  109
   iops        : min=102776, max=830416, avg=675639.05, stdev=280619.99, samples=   21

Note: This example was created using options
"--write_bw_log=... --log_avg_msec=100 --runtime=11s" (ie. no iops log
written). That is why number of samples differs for IOPs and BW.

Signed-off-by: Andreas Herrmann <aherrmann@suse.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
stat.c

diff --git a/stat.c b/stat.c
index d519ee9ef8f1ad197acee44fe86344d1700ebc65..369f96967ae0c6e6084a3dace34e97de5304a877 100644 (file)
--- a/stat.c
+++ b/stat.c
@@ -496,12 +496,15 @@ static void show_ddir_status(struct group_run_stats *rs, struct thread_stat *ts,
                        bw_str = (rs->unit_base == 1 ? "Mibit" : "MiB");
                }
 
-               log_buf(out, "   bw (%5s/s): min=%5llu, max=%5llu, per=%3.2f%%, avg=%5.02f, stdev=%5.02f\n",
-                       bw_str, min, max, p_of_agg, mean, dev);
+               log_buf(out, "   bw (%5s/s): min=%5llu, max=%5llu, per=%3.2f%%, "
+                       "avg=%5.02f, stdev=%5.02f, samples=%5lu\n",
+                       bw_str, min, max, p_of_agg, mean, dev,
+                       (&ts->bw_stat[ddir])->samples);
        }
        if (calc_lat(&ts->iops_stat[ddir], &min, &max, &mean, &dev)) {
                log_buf(out, "   iops : min=%5llu, max=%5llu, avg=%5.02f, "
-                       "stdev=%5.02f\n", min, max, mean, dev);
+                       "stdev=%5.02f, samples=%5lu\n",
+                       min, max, mean, dev, (&ts->iops_stat[ddir])->samples);
        }
 }
 
@@ -1051,6 +1054,8 @@ static void add_ddir_status_json(struct thread_stat *ts,
        json_object_add_value_float(dir_object, "bw_agg", p_of_agg);
        json_object_add_value_float(dir_object, "bw_mean", mean);
        json_object_add_value_float(dir_object, "bw_dev", dev);
+       json_object_add_value_int(dir_object, "bw_samples",
+                               (&ts->bw_stat[ddir])->samples);
 
        if (!calc_lat(&ts->iops_stat[ddir], &min, &max, &mean, &dev)) {
                min = max = 0;
@@ -1060,6 +1065,8 @@ static void add_ddir_status_json(struct thread_stat *ts,
        json_object_add_value_int(dir_object, "iops_max", max);
        json_object_add_value_float(dir_object, "iops_mean", mean);
        json_object_add_value_float(dir_object, "iops_stddev", dev);
+       json_object_add_value_int(dir_object, "iops_samples",
+                               (&ts->iops_stat[ddir])->samples);
 }
 
 static void show_thread_status_terse_v2(struct thread_stat *ts,