of the results, fio can output the results in a semicolon separated format.
The format is one long line of values, such as:
-2; client1;0;0;1906777;1090804;1790;0;0;0.000000;0.000000;0;0;0.000000;0.000000;929380;1152890;25.510151%;1078276.333333;128948.113404;0;0;0;0;0;0.000000;0.000000;0;0;0.000000;0.000000;0;0;0.000000%;0.000000;0.000000;100.000000%;0.000000%;324;100.0%;0.0%;0.0%;0.0%;0.0%;0.0%;0.0%;100.0%;0.0%;0.0%;0.0%;0.0%;0.0%
-;0.0%;0.0%;0.0%;0.0%;0.0%
+2;card0;0;0;7139336;121836;60004;1;10109;27.932460;116.933948;220;126861;3495.446807;1085.368601;226;126864;3523.635629;1089.012448;24063;99944;50.275485%;59818.274627;5540.657370;7155060;122104;60004;1;8338;29.086342;117.839068;388;128077;5032.488518;1234.785715;391;128085;5061.839412;1236.909129;23436;100928;50.287926%;59964.832030;5644.844189;14.595833%;19.394167%;123706;0;7313;0.1%;0.1%;0.1%;0.1%;0.1%;0.1%;100.0%;0.00%;0.00%;0.00%;0.00%;0.00%;0.00%;0.01%;0.02%;0.05%;0.16%;6.04%;40.40%;52.68%;0.64%;0.01%;0.00%;0.01%;0.00%;0.00%;0.00%;0.00%;0.00%
+A description of this job goes here.
+
+The job description (if provided) follows on a second line.
To enable terse output, use the --minimal command line option. The first
value is the version of the terse output format. If the output has to
Bw: min, max, aggregate percentage of total, mean, deviation
CPU usage: user, system, context switches, major faults, minor faults
IO depths: <=1, 2, 4, 8, 16, 32, >=64
- IO latencies: <=2, 4, 10, 20, 50, 100, 250, 500, 750, 1000, >=2000
- Text description
-
+ IO latencies microseconds: <=2, 4, 10, 20, 50, 100, 250, 500, 750, 1000
+ IO latencies milliseconds: <=2, 4, 10, 20, 50, 100, 250, 500, 750, 1000, 2000, >=2000
+ Additional Info (dependant on continue_on_error, default off): total # errors, first error code
+
+ Additional Info (dependant on description being set): Text description
\ No newline at end of file
.PD
.SH TERSE OUTPUT
If the \fB\-\-minimal\fR option is given, the results will be printed in a
-semicolon-delimited format suitable for scripted use. Note that the first
+semicolon-delimited format suitable for scripted use - a job description
+(if provided) follows on a new line. Note that the first
number in the line is the version number. If the output has to be changed
for some reason, this number will be incremented by 1 to signify that
change. The fields are:
.B <=1, 2, 4, 8, 16, 32, >=64
.RE
.P
-IO latency distribution (ms):
+IO latency distribution:
.RS
-.B <=2, 4, 10, 20, 50, 100, 250, 500, 750, 1000, >=2000
+Microseconds:
+.RS
+.B <=2, 4, 10, 20, 50, 100, 250, 500, 750, 1000
+.RE
+Milliseconds:
+.RS
+.B <=2, 4, 10, 20, 50, 100, 250, 500, 750, 1000, 2000, >=2000
+.RE
+.RE
+.P
+Error Info (dependant on continue_on_error, default off):
+.RS
+.B total # errors, first error code
.RE
.P
-.B text description
+.B text description (if provided in config - appears on newline)
.RE
.SH AUTHORS
.B fio
double usr_cpu, sys_cpu;
int i;
+ /* General Info */
log_info("%s;%s;%d;%d", FIO_TERSE_VERSION, ts->name, ts->groupid,
ts->error);
-
+ /* Log Read Status */
show_ddir_status_terse(ts, rs, 0);
+ /* Log Write Status */
show_ddir_status_terse(ts, rs, 1);
+ /* CPU Usage */
if (ts->total_run_time) {
double runt = (double) ts->total_run_time;
log_info(";%f%%;%f%%;%lu;%lu;%lu", usr_cpu, sys_cpu, ts->ctx, ts->majf,
ts->minf);
+ /* Calc % distribution of IO depths, usecond, msecond latency */
stat_calc_dist(ts->io_u_map, ts_total_io_u(ts), io_u_dist);
stat_calc_lat_u(ts, io_u_lat_u);
stat_calc_lat_m(ts, io_u_lat_m);
+ /* Only show fixed 7 I/O depth levels*/
log_info(";%3.1f%%;%3.1f%%;%3.1f%%;%3.1f%%;%3.1f%%;%3.1f%%;%3.1f%%",
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]);
+ /* Microsecond latency */
for (i = 0; i < FIO_IO_U_LAT_U_NR; i++)
log_info(";%3.2f%%", io_u_lat_u[i]);
+ /* Millisecond latency */
for (i = 0; i < FIO_IO_U_LAT_M_NR; i++)
log_info(";%3.2f%%", io_u_lat_m[i]);
+ /* Additional output if continue_on_error set - default off*/
if (ts->continue_on_error)
log_info(";%lu;%d", ts->total_err_count, ts->first_error);
log_info("\n");
+ /* Additional output if description is set */
if (ts->description)
log_info(";%s", ts->description);