/* Additional output if description is set */
if (strlen(ts->description))
- log_info(";%s", ts->description);
+ log_info(";%s\n", ts->description);
}
static void show_thread_status_terse(struct thread_stat *ts,
spent = mtime_since(&td->bw_sample_time, t);
if (spent < td->o.bw_avg_time)
return;
-
- /*
+
+ /*
* Compute both read and write rates for the interval.
*/
for (ddir = DDIR_READ; ddir <= DDIR_WRITE; ddir++) {
if (spent < td->o.iops_avg_time)
return;
- iops = ((td->this_io_blocks[ddir] - td->stat_io_blocks[ddir]) * 1000) / spent;
+ /*
+ * Compute both read and write rates for the interval.
+ */
+ for (ddir = DDIR_READ; ddir <= DDIR_WRITE; ddir++) {
+ uint64_t delta;
+
+ delta = td->this_io_blocks[ddir] - td->stat_io_blocks[ddir];
+ if (!delta)
+ continue; /* No entries for interval */
+
+ iops = (delta * 1000) / spent;
+ add_stat_sample(&ts->iops_stat[ddir], iops);
- add_stat_sample(&ts->iops_stat[ddir], iops);
+ if (td->iops_log)
+ add_log_sample(td, td->iops_log, iops, ddir, 0);
- if (td->iops_log)
- add_log_sample(td, td->iops_log, iops, ddir, 0);
+ td->stat_io_blocks[ddir] = td->this_io_blocks[ddir];
+ }
fio_gettime(&td->iops_sample_time, NULL);
- td->stat_io_blocks[ddir] = td->this_io_blocks[ddir];
}