- json_object_add_value_int(tmp_object, "min", min);
- json_object_add_value_int(tmp_object, "max", max);
- json_object_add_value_float(tmp_object, "mean", mean);
- json_object_add_value_float(tmp_object, "stddev", dev);
- }
-
- if (ts->clat_percentiles || ts->lat_percentiles) {
- if (ddir_rw(ddir)) {
- uint64_t samples;
-
- if (ts->clat_percentiles)
- samples = ts->clat_stat[ddir].samples;
- else
- samples = ts->lat_stat[ddir].samples;
-
- len = calc_clat_percentiles(ts->io_u_plat[ddir],
- samples, ts->percentile_list, &ovals,
- &maxv, &minv);
- } else {
- len = calc_clat_percentiles(ts->io_u_sync_plat,
- ts->sync_stat.samples,
- ts->percentile_list, &ovals, &maxv,
- &minv);
- }
-
- if (len > FIO_IO_U_LIST_MAX_LEN)
- len = FIO_IO_U_LIST_MAX_LEN;
- } else
- len = 0;
-
- if (ts->clat_percentiles) {
- percentile_object = json_create_object();
- json_object_add_value_object(tmp_object, "percentile", percentile_object);
- for (i = 0; i < len; i++) {
- snprintf(buf, sizeof(buf), "%f",
- ts->percentile_list[i].u.f);
- json_object_add_value_int(percentile_object, buf,
- ovals[i]);
- }
- }
-
- free(ovals);
-
- if (output_format & FIO_OUTPUT_JSON_PLUS && ts->clat_percentiles) {
- 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++) {
- if (ddir_rw(ddir)) {
- if (ts->io_u_plat[ddir][i]) {
- snprintf(buf, sizeof(buf), "%llu", plat_idx_to_val(i));
- json_object_add_value_int(clat_bins_object, buf, ts->io_u_plat[ddir][i]);
- }
- } else {
- if (ts->io_u_sync_plat[i]) {
- snprintf(buf, sizeof(buf), "%llu", plat_idx_to_val(i));
- json_object_add_value_int(clat_bins_object, buf, ts->io_u_sync_plat[i]);
- }
- }
- }