Merge branch 'xnvme_includes' of https://github.com/safl/fio
[fio.git] / stat.c
diff --git a/stat.c b/stat.c
index fc73930d9aaf6e9878c075fc8b281e63ba5e06d4..7cf6bee1945aabea351f13853f5b32ba386881a9 100644 (file)
--- a/stat.c
+++ b/stat.c
@@ -597,10 +597,11 @@ static void show_ddir_status(struct group_run_stats *rs, struct thread_stat *ts,
                                continue;
 
                        snprintf(buf, sizeof(buf),
-                                "%s prio %u/%u",
+                                "%s prio %u/%u/%u",
                                 clat_type,
                                 ioprio_class(ts->clat_prio[ddir][i].ioprio),
-                                ioprio(ts->clat_prio[ddir][i].ioprio));
+                                ioprio(ts->clat_prio[ddir][i].ioprio),
+                                ioprio_hint(ts->clat_prio[ddir][i].ioprio));
                        display_lat(buf, min, max, mean, dev, out);
                }
        }
@@ -640,10 +641,11 @@ static void show_ddir_status(struct group_run_stats *rs, struct thread_stat *ts,
                                        continue;
 
                                snprintf(prio_name, sizeof(prio_name),
-                                        "%s prio %u/%u (%.2f%% of IOs)",
+                                        "%s prio %u/%u/%u (%.2f%% of IOs)",
                                         clat_type,
                                         ioprio_class(ts->clat_prio[ddir][i].ioprio),
                                         ioprio(ts->clat_prio[ddir][i].ioprio),
+                                        ioprio_hint(ts->clat_prio[ddir][i].ioprio),
                                         100. * (double) prio_samples / (double) samples);
                                show_clat_percentiles(ts->clat_prio[ddir][i].io_u_plat,
                                                prio_samples, ts->percentile_list,
@@ -957,11 +959,13 @@ static void show_agg_stats(struct disk_util_agg *agg, int terse,
                return;
 
        if (!terse) {
-               log_buf(out, ", aggrios=%llu/%llu, aggrmerge=%llu/%llu, "
-                        "aggrticks=%llu/%llu, aggrin_queue=%llu, "
-                        "aggrutil=%3.2f%%",
+               log_buf(out, ", aggrios=%llu/%llu, aggsectors=%llu/%llu, "
+                        "aggrmerge=%llu/%llu, aggrticks=%llu/%llu, "
+                        "aggrin_queue=%llu, aggrutil=%3.2f%%",
                        (unsigned long long) agg->ios[0] / agg->slavecount,
                        (unsigned long long) agg->ios[1] / agg->slavecount,
+                       (unsigned long long) agg->sectors[0] / agg->slavecount,
+                       (unsigned long long) agg->sectors[1] / agg->slavecount,
                        (unsigned long long) agg->merges[0] / agg->slavecount,
                        (unsigned long long) agg->merges[1] / agg->slavecount,
                        (unsigned long long) agg->ticks[0] / agg->slavecount,
@@ -1531,6 +1535,8 @@ static void add_ddir_status_json(struct thread_stat *ts,
                                ioprio_class(ts->clat_prio[ddir][i].ioprio));
                        json_object_add_value_int(obj, "prio",
                                ioprio(ts->clat_prio[ddir][i].ioprio));
+                       json_object_add_value_int(obj, "priohint",
+                               ioprio_hint(ts->clat_prio[ddir][i].ioprio));
 
                        tmp_object = add_ddir_lat_json(ts,
                                        ts->clat_percentiles | ts->lat_percentiles,
@@ -1706,6 +1712,7 @@ static struct json_object *show_thread_status_json(struct thread_stat *ts,
        root = json_create_object();
        json_object_add_value_string(root, "jobname", ts->name);
        json_object_add_value_int(root, "groupid", ts->groupid);
+       json_object_add_value_int(root, "job_start", ts->job_start);
        json_object_add_value_int(root, "error", ts->error);
 
        /* ETA Info */
@@ -2520,6 +2527,7 @@ void __show_run_stats(void)
                         */
                        ts->thread_number = td->thread_number;
                        ts->groupid = td->groupid;
+                       ts->job_start = td->job_start;
 
                        /*
                         * first pid in group, not very useful...
@@ -3042,7 +3050,9 @@ static void __add_log_sample(struct io_log *iolog, union io_sample_data data,
                s = get_sample(iolog, cur_log, cur_log->nr_samples);
 
                s->data = data;
-               s->time = t + (iolog->td ? iolog->td->alternate_epoch : 0);
+               s->time = t;
+               if (iolog->td && iolog->td->o.log_alternate_epoch)
+                       s->time += iolog->td->alternate_epoch;
                io_sample_set_ddir(iolog, s, ddir);
                s->bs = bs;
                s->priority = priority;