dev_t dev;
char *p;
- if (!td->do_disk_util)
+ if (!td->do_disk_util || (td->io_ops->flags & (FIO_NETIO | FIO_NULLIO)))
return;
/*
{
double usr_cpu, sys_cpu;
unsigned long runtime;
+ double io_u_dist[FIO_IO_U_MAP_NR];
+ int i;
if (!(td->io_bytes[0] + td->io_bytes[1]) && !td->error)
return;
- fprintf(f_out, "%s: (groupid=%d): err=%2d:\n",td->name, td->groupid, td->error);
+ fprintf(f_out, "%s: (groupid=%d): err=%2d: pid=%d\n",td->name, td->groupid, td->error, td->pid);
show_ddir_status(td, rs, td->ddir);
if (td->io_bytes[td->ddir ^ 1])
}
fprintf(f_out, " cpu : usr=%3.2f%%, sys=%3.2f%%, ctx=%lu\n", usr_cpu, sys_cpu, td->ctx);
+
+ /*
+ * Do depth distribution calculations
+ */
+ for (i = 0; i < FIO_IO_U_MAP_NR; i++) {
+ io_u_dist[i] = (double) td->io_u_map[i] / (double) td->total_io_u;
+ io_u_dist[i] *= 100.0;
+ }
+
+ fprintf(f_out, " IO depths : 1=%3.1f%%, 2=%3.1f%%, 4=%3.1f%%, 8=%3.1f%%, 16=%3.1f%%, 32=%3.1f%%, >=64=%3.1f%%\n", io_u_dist[0], io_u_dist[1], io_u_dist[2], io_u_dist[3], io_u_dist[4], io_u_dist[5], io_u_dist[6]);
+
+ if (td->description)
+ fprintf(f_out, "%s\n", td->description);
}
static void show_ddir_status_terse(struct thread_data *td,
is->samples++;
}
-static void add_log_sample(struct thread_data *td, struct io_log *iolog,
- unsigned long val, enum fio_ddir ddir)
+static void __add_log_sample(struct io_log *iolog, unsigned long val,
+ enum fio_ddir ddir, unsigned long time)
{
if (iolog->nr_samples == iolog->max_samples) {
int new_size = sizeof(struct io_sample) * iolog->max_samples*2;
}
iolog->log[iolog->nr_samples].val = val;
- iolog->log[iolog->nr_samples].time = mtime_since_now(&td->epoch);
+ iolog->log[iolog->nr_samples].time = time;
iolog->log[iolog->nr_samples].ddir = ddir;
iolog->nr_samples++;
}
+static void add_log_sample(struct thread_data *td, struct io_log *iolog,
+ unsigned long val, enum fio_ddir ddir)
+{
+ __add_log_sample(iolog, val, ddir, mtime_since_now(&td->epoch));
+}
+
+void add_agg_sample(unsigned long val, enum fio_ddir ddir)
+{
+ struct io_log *iolog = agg_io_log[ddir];
+
+ __add_log_sample(iolog, val, ddir, mtime_since_genesis());
+}
+
void add_clat_sample(struct thread_data *td, enum fio_ddir ddir,
unsigned long msec)
{