Fix error in disk util stats for terse output
[fio.git] / HOWTO
diff --git a/HOWTO b/HOWTO
index 3b60f58e0e367d1e593de9337b78b0ffb47f5d24..ef8f9599942bd08e63a96c8f32a24c6f176892e7 100644 (file)
--- a/HOWTO
+++ b/HOWTO
@@ -267,7 +267,7 @@ filename=str        Fio normally makes up a filename based on the job name,
                files between threads in a job or several jobs, specify
                a filename for each of them to override the default. If
                the ioengine used is 'net', the filename is the host, port,
-               and protocol to use in the format of =host/port/protocol.
+               and protocol to use in the format of =host,port,protocol.
                See ioengine=net for more. If the ioengine is file based, you
                can specify a number of files by separating the names with a
                ':' colon. So if you wanted a job to open /dev/sda and /dev/sdb
@@ -319,8 +319,12 @@ rw=str             Type of io pattern. Accepted values are:
                a number of IO's to do before getting a new offset, this is
                one by appending a ':<nr>' to the end of the string given.
                For a random read, it would look like 'rw=randread:8' for
-               passing in an offset modifier with a value of 8. See the
-               'rw_sequencer' option.
+               passing in an offset modifier with a value of 8. If the
+               postfix is used with a sequential IO pattern, then the value
+               specified will be added to the generated offset for each IO.
+               For instance, using rw=write:4k will skip 4k for every
+               write. It turns sequential IO into sequential IO with holes.
+               See the 'rw_sequencer' option.
 
 rw_sequencer=str If an offset modifier is given by appending a number to
                the rw=<str> line, then this option controls how that
@@ -477,6 +481,13 @@ refill_buffers     If this option is given, fio will refill the IO buffers
                isn't specified, naturally. If data verification is enabled,
                refill_buffers is also automatically enabled.
 
+scramble_buffers=bool  If refill_buffers is too costly and the target is
+               using data deduplication, then setting this option will
+               slightly modify the IO buffer contents to defeat normal
+               de-dupe attempts. This is not enough to defeat more clever
+               block compression attempts, but it will stop naive dedupe of
+               blocks. Default: true.
+
 nrfiles=int    Number of files to use for this job. Defaults to 1.
 
 openfiles=int  Number of files to keep open at the same time. Defaults to
@@ -513,6 +524,16 @@ ioengine=str       Defines how the job issues io to the file. The following
                        libaio  Linux native asynchronous io. Note that Linux
                                may only support queued behaviour with
                                non-buffered IO (set direct=1 or buffered=0).
+                               This engine also has a sub-option,
+                               userspace_reap. To set it, use
+                               ioengine=libaio:userspace_reap. Normally, with
+                               the libaio engine in use, fio will use the
+                               io_getevents system call to reap newly returned
+                               events. With this flag turned on, the AIO ring
+                               will be read directly from user-space to reap
+                               events. The reaping mode is only enabled when
+                               polling for a minimum of 0 events (eg when
+                               iodepth_batch_complete=0).
 
                        posixaio glibc posix asynchronous io.
 
@@ -570,9 +591,9 @@ ioengine=str        Defines how the job issues io to the file. The following
                                for more info on GUASI.
 
                        rdma    The RDMA I/O engine  supports  both  RDMA
-                               memory semantic(RDMA_WRITE/RDMA_READ) and
-                               channel semantic(Send/Recv) in InfiniBand, RoCE
-                               and iWarp environment.
+                               memory semantic(RDMA_WRITE/RDMA_READ) and
+                               channel semantics (Send/Recv) for the
+                               InfiniBand, RoCE and iWARP protocols.
 
                        external Prefix to specify loading an external
                                IO engine object file. Append the engine
@@ -843,6 +864,9 @@ exitall             When one job finishes, terminate the rest. The default is
 bwavgtime=int  Average the calculated bandwidth over the given time. Value
                is specified in milliseconds.
 
+iopsavgtime=int        Average the calculated IOPS over the given time. Value
+               is specified in milliseconds.
+
 create_serialize=bool  If true, serialize the file creating for the jobs.
                        This may be handy to avoid interleaving of data
                        files, which may greatly depend on the filesystem
@@ -1083,6 +1107,9 @@ write_lat_log=str Same as write_bw_log, except that this option stores io
                and foo_lat.log. This helps fio_generate_plot fine the logs
                automatically.
 
+write_bw_log=str If given, write an IOPS log of the jobs in this job
+               file. See write_bw_log.
+
 lockmem=int    Pin down the specified amount of memory with mlock(2). Can
                potentially be used instead of removing memory or booting
                with less memory to simulate a smaller amount of memory.
@@ -1333,27 +1360,43 @@ signify that change.
 
 Split up, the format is as follows:
 
-       version, jobname, groupid, error
+       terse version, fio version, jobname, groupid, error
        READ status:
-               KB IO, bandwidth (KB/sec), runtime (msec)
+               Total IO (KB), bandwidth (KB/sec), IOPS, runtime (msec)
                Submission latency: min, max, mean, deviation
                Completion latency: min, max, mean, deviation
+               Completion latency percentiles: 20 fields (see below)
                Total latency: min, max, mean, deviation
                Bw: min, max, aggregate percentage of total, mean, deviation
        WRITE status:
-               KB IO, bandwidth (KB/sec), runtime (msec)
+               Total IO (KB), bandwidth (KB/sec), IOPS, runtime (msec)
                Submission latency: min, max, mean, deviation
                Completion latency: min, max, mean, deviation
+               Completion latency percentiles: 20 fields (see below)
                Total latency: min, max, mean, deviation
                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 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
+       Disk utilization: Disk name, Read ios, write ios,
+                         Read merges, write merges,
+                         Read ticks, write ticks,
+                         Time spent in queue, disk utilization percentage
        Additional Info (dependant on continue_on_error, default off): total # errors, first error code 
        
        Additional Info (dependant on description being set): Text description
 
+Completion latency percentiles can be a grouping of up to 20 sets, so
+for the terse output fio writes all of them. Each field will look like this:
+
+       1.00%=6112
+
+which is the Xth percentile, and the usec latency associated with it.
+
+For disk utilization, all disks used by fio are shown. So for each disk
+there will be a disk utilization section.
+
 
 8.0 Trace file format
 ---------------------