Add some comments around the terse output
authorDavid Nellans <DNellans@fusionio.com>
Thu, 23 Sep 2010 06:38:17 +0000 (08:38 +0200)
committerJens Axboe <jaxboe@fusionio.com>
Thu, 23 Sep 2010 06:38:17 +0000 (08:38 +0200)
Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
HOWTO
fio.1
stat.c

diff --git a/HOWTO b/HOWTO
index f338e7d4214c7f0356522720588499354d8da04e..d3639fb487d2c3fa206b1789ad59132e12e83e0c 100644 (file)
--- a/HOWTO
+++ b/HOWTO
@@ -1256,8 +1256,10 @@ For scripted usage where you typically want to generate tables or graphs
 of the results, fio can output the results in a semicolon separated format.
 The format is one long line of values, such as:
 
 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
 
 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
@@ -1281,6 +1283,8 @@ Split up, the format is as follows:
                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
                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
diff --git a/fio.1 b/fio.1
index 192e6a8cc97e00c367aeb480d708cb72a7e29bee..9ca38abcdc6c69e48f39ec6c7c1b9d03a1baa3f8 100644 (file)
--- a/fio.1
+++ b/fio.1
@@ -991,7 +991,8 @@ Disk utilization.
 .PD
 .SH TERSE OUTPUT
 If the \fB\-\-minimal\fR option is given, the results will be printed in a
 .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:
 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:
@@ -1053,12 +1054,24 @@ IO depth distribution:
 .B <=1, 2, 4, 8, 16, 32, >=64
 .RE
 .P
 .B <=1, 2, 4, 8, 16, 32, >=64
 .RE
 .P
-IO latency distribution (ms):
+IO latency distribution:
 .RS
 .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
 .RE
 .P
-.B text description
+.B text description (if provided in config - appears on newline)
 .RE
 .SH AUTHORS
 .B fio
 .RE
 .SH AUTHORS
 .B fio
diff --git a/stat.c b/stat.c
index 326b1f763460827f05334fda03453ea39d398f27..b5ff0101b7b0feca625721bc10b351a48825a271 100644 (file)
--- a/stat.c
+++ b/stat.c
@@ -418,12 +418,15 @@ static void show_thread_status_terse(struct thread_stat *ts,
        double usr_cpu, sys_cpu;
        int i;
 
        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_info("%s;%s;%d;%d", FIO_TERSE_VERSION, ts->name, ts->groupid,
                                ts->error);
-
+       /* Log Read Status */
        show_ddir_status_terse(ts, rs, 0);
        show_ddir_status_terse(ts, rs, 0);
+       /* Log Write Status */
        show_ddir_status_terse(ts, rs, 1);
 
        show_ddir_status_terse(ts, rs, 1);
 
+       /* CPU Usage */
        if (ts->total_run_time) {
                double runt = (double) ts->total_run_time;
 
        if (ts->total_run_time) {
                double runt = (double) ts->total_run_time;
 
@@ -437,22 +440,28 @@ static void show_thread_status_terse(struct thread_stat *ts,
        log_info(";%f%%;%f%%;%lu;%lu;%lu", usr_cpu, sys_cpu, ts->ctx, ts->majf,
                                                                ts->minf);
 
        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);
 
        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]);
 
        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]);
        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]);
        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");
 
        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);
 
        if (ts->description)
                log_info(";%s", ts->description);