init: add semantics for all types of backends running
[fio.git] / stat.c
diff --git a/stat.c b/stat.c
index 8de48354b7715f97064ba9f3947fd9baf4d79e95..6cb704eb11bba6e186f0947f2b7d625b5358d341 100644 (file)
--- a/stat.c
+++ b/stat.c
@@ -1205,7 +1205,7 @@ static void show_thread_status_terse_all(struct thread_stat *ts,
                log_buf(out, ";%3.2f%%", io_u_lat_m[i]);
 
        /* disk util stats, if any */
-       if (ver >= 3)
+       if (ver >= 3 && is_running_backend())
                show_disk_util(1, NULL, out);
 
        /* Additional output if continue_on_error set - default off*/
@@ -1295,13 +1295,8 @@ static struct json_object *show_thread_status_json(struct thread_stat *ts,
        json_object_add_value_int(root, "majf", ts->majf);
        json_object_add_value_int(root, "minf", ts->minf);
 
-
-       /* Calc % distribution of IO depths, usecond, msecond latency */
+       /* Calc % distribution of IO depths */
        stat_calc_dist(ts->io_u_map, ddir_rw_sum(ts->total_io_u), io_u_dist);
-       stat_calc_lat_n(ts, io_u_lat_n);
-       stat_calc_lat_u(ts, io_u_lat_u);
-       stat_calc_lat_m(ts, io_u_lat_m);
-
        tmp = json_create_object();
        json_object_add_value_object(root, "iodepth_level", tmp);
        /* Only show fixed 7 I/O depth levels*/
@@ -1314,6 +1309,44 @@ static struct json_object *show_thread_status_json(struct thread_stat *ts,
                json_object_add_value_float(tmp, (const char *)name, io_u_dist[i]);
        }
 
+       /* Calc % distribution of submit IO depths */
+       stat_calc_dist(ts->io_u_submit, ts->total_submit, io_u_dist);
+       tmp = json_create_object();
+       json_object_add_value_object(root, "iodepth_submit", tmp);
+       /* Only show fixed 7 I/O depth levels*/
+       for (i = 0; i < 7; i++) {
+               char name[20];
+               if (i == 0)
+                       snprintf(name, 20, "0");
+               else if (i < 6)
+                       snprintf(name, 20, "%d", 1 << (i+1));
+               else
+                       snprintf(name, 20, ">=%d", 1 << i);
+               json_object_add_value_float(tmp, (const char *)name, io_u_dist[i]);
+       }
+
+       /* Calc % distribution of completion IO depths */
+       stat_calc_dist(ts->io_u_complete, ts->total_complete, io_u_dist);
+       tmp = json_create_object();
+       json_object_add_value_object(root, "iodepth_complete", tmp);
+       /* Only show fixed 7 I/O depth levels*/
+       for (i = 0; i < 7; i++) {
+               char name[20];
+               if (i == 0)
+                       snprintf(name, 20, "0");
+               else if (i < 6)
+                       snprintf(name, 20, "%d", 1 << (i+1));
+               else
+                       snprintf(name, 20, ">=%d", 1 << i);
+               json_object_add_value_float(tmp, (const char *)name, io_u_dist[i]);
+       }
+
+       /* Calc % distribution of nsecond, usecond, msecond latency */
+       stat_calc_dist(ts->io_u_map, ddir_rw_sum(ts->total_io_u), io_u_dist);
+       stat_calc_lat_n(ts, io_u_lat_n);
+       stat_calc_lat_u(ts, io_u_lat_u);
+       stat_calc_lat_m(ts, io_u_lat_m);
+
        /* Nanosecond latency */
        tmp = json_create_object();
        json_object_add_value_object(root, "latency_ns", tmp);
@@ -1889,6 +1922,8 @@ void __show_run_stats(void)
                if (is_backend) {
                        fio_server_send_job_options(opt_lists[i], i);
                        fio_server_send_ts(ts, rs);
+                       if (output_format & FIO_OUTPUT_TERSE)
+                               show_thread_status_terse(ts, rs, &output[__FIO_OUTPUT_TERSE]);
                } else {
                        if (output_format & FIO_OUTPUT_TERSE)
                                show_thread_status_terse(ts, rs, &output[__FIO_OUTPUT_TERSE]);