X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=stat.c;h=da3ad2a22412dcadba647e7b5cee0250e6cfdec9;hb=9e129577b8799a9578a6aa6021a58367981e320a;hp=3d7dcde10681a99dd56a6a8dd2663cf774aae4e7;hpb=a666cab8ed3d2a2fa782be345425a2e88734a007;p=fio.git diff --git a/stat.c b/stat.c index 3d7dcde1..da3ad2a2 100644 --- a/stat.c +++ b/stat.c @@ -832,7 +832,7 @@ static void add_ddir_status_json(struct thread_stat *ts, unsigned int len, minv, maxv; int i; const char *ddirname[] = {"read", "write", "trim"}; - struct json_object *dir_object, *tmp_object, *percentile_object; + struct json_object *dir_object, *tmp_object, *percentile_object, *clat_bins_object; char buf[120]; double p_of_agg = 100.0; @@ -903,6 +903,18 @@ static void add_ddir_status_json(struct thread_stat *ts, json_object_add_value_int(percentile_object, (const char *)buf, ovals[i]); } + if (output_format & FIO_OUTPUT_JSON_PLUS) { + clat_bins_object = json_create_object(); + json_object_add_value_object(tmp_object, "bins", clat_bins_object); + for(i = 0; i < FIO_IO_U_PLAT_NR; i++) { + snprintf(buf, sizeof(buf), "%d", i); + json_object_add_value_int(clat_bins_object, (const char *)buf, ts->io_u_plat[ddir][i]); + } + json_object_add_value_int(clat_bins_object, "FIO_IO_U_PLAT_BITS", FIO_IO_U_PLAT_BITS); + json_object_add_value_int(clat_bins_object, "FIO_IO_U_PLAT_VAL", FIO_IO_U_PLAT_VAL); + json_object_add_value_int(clat_bins_object, "FIO_IO_U_PLAT_NR", FIO_IO_U_PLAT_NR); + } + if (!calc_lat(&ts->lat_stat[ddir], &min, &max, &mean, &dev)) { min = max = 0; mean = dev = 0.0; @@ -1083,9 +1095,10 @@ static struct json_object *show_thread_status_json(struct thread_stat *ts, /* ETA Info */ je = get_jobs_eta(1, &size); - json_object_add_value_int(root, "eta", je->eta_sec); - json_object_add_value_int(root, "elapsed", je->elapsed_sec); - + if (je) { + json_object_add_value_int(root, "eta", je->eta_sec); + json_object_add_value_int(root, "elapsed", je->elapsed_sec); + } add_ddir_status_json(ts, rs, DDIR_READ, root); add_ddir_status_json(ts, rs, DDIR_WRITE, root); @@ -1172,7 +1185,7 @@ static struct json_object *show_thread_status_json(struct thread_stat *ts, if (len) { struct json_object *block, *percentile_object, *states; - int state, i; + int state; block = json_create_object(); json_object_add_value_object(root, "block", block); @@ -1400,8 +1413,6 @@ void __show_run_stats(void) runstats = malloc(sizeof(struct group_run_stats) * (groupid + 1)); - memset(output, 0, sizeof(output)); - for (i = 0; i < groupid + 1; i++) init_group_run_stat(&runstats[i]); @@ -1560,7 +1571,7 @@ void __show_run_stats(void) } for (i = 0; i < FIO_OUTPUT_NR; i++) - buf_output_init(&output[i], i); + buf_output_init(&output[i]); /* * don't overwrite last signal output @@ -1601,7 +1612,7 @@ void __show_run_stats(void) show_thread_status_normal(ts, rs, &output[__FIO_OUTPUT_NORMAL]); } } - if (output_format & FIO_OUTPUT_JSON) { + if (!is_backend && (output_format & FIO_OUTPUT_JSON)) { /* disk util stats, if any */ show_disk_util(1, root, &output[__FIO_OUTPUT_JSON]); @@ -1629,15 +1640,14 @@ void __show_run_stats(void) show_idle_prof_stats(FIO_OUTPUT_NORMAL, NULL, &output[__FIO_OUTPUT_NORMAL]); } - for (i = 0; i < FIO_OUTPUT_NR; i++) + for (i = 0; i < FIO_OUTPUT_NR; i++) { buf_output_flush(&output[i]); + buf_output_free(&output[i]); + } log_info_flush(); free(runstats); free(threadstats); - - for (i = 0; i < FIO_OUTPUT_NR; i++) - buf_output_free(&output[i]); } void show_run_stats(void)