solaris: fix compile error on ctime_r()
[fio.git] / HOWTO
diff --git a/HOWTO b/HOWTO
index 62c70cb4d3d4c25268c0b8291da79bac5f5397d7..cdff07a2ce21bf2e0cf9ea2624d8b56cc653e869 100644 (file)
--- a/HOWTO
+++ b/HOWTO
@@ -320,7 +320,7 @@ rw=str              Type of io pattern. Accepted values are:
                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. If the
-               postfix is used with a sequential IO pattern, then the value
+               suffix 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.
@@ -602,6 +602,16 @@ ioengine=str       Defines how the job issues io to the file. The following
                                channel semantics (Send/Recv) for the
                                InfiniBand, RoCE and iWARP protocols.
 
+                       falloc   IO engine that does regular fallocate to
+                                simulate data transfer as fio ioengine.
+                                DDIR_READ  does fallocate(,mode = keep_size,)
+                                DDIR_WRITE does fallocate(,mode = 0)
+                                DDIR_TRIM  does fallocate(,mode = punch_hole)
+
+                       e4defrag IO engine that does regular EXT4_IOC_MOVE_EXT
+                                ioctls to simulate defragment activity in
+                                request to DDIR_WRITE event
+
                        external Prefix to specify loading an external
                                IO engine object file. Append the engine
                                filename, eg ioengine=external:/tmp/foo.o
@@ -893,6 +903,11 @@ create_fsync=bool  fsync the data file after creation. This is the
 create_on_open=bool    Don't pre-setup the files for IO, just create open()
                        when it's time to do IO to that file.
 
+create_only=bool       If true, fio will only run the setup phase of the job.
+                       If files need to be laid out or updated on disk, only
+                       that will be done. The actual job contents are not
+                       executed.
+
 pre_read=bool  If this is given, files will be pre-read into memory before
                starting the given IO operation. This will also clear
                the 'invalidate' flag, since it is pointless to pre-read
@@ -1038,22 +1053,21 @@ wait_for_previous Wait for preceeding jobs in the job file to exit, before
                points in the job file. A stone wall also implies starting
                a new reporting group.
 
-new_group      Start a new reporting group. If this option isn't given,
-               jobs in a file will be part of the same reporting group
-               unless separated by a stone wall (or if it's a group
-               by itself, with the numjobs option).
+new_group      Start a new reporting group. See: group_reporting.
 
 numjobs=int    Create the specified number of clones of this job. May be
                used to setup a larger number of threads/processes doing
-               the same thing. We regard that grouping of jobs as a
-               specific group.
-
-group_reporting        If 'numjobs' is set, it may be interesting to display
-               statistics for the group as a whole instead of for each
-               individual job. This is especially true of 'numjobs' is
-               large, looking at individual thread/process output quickly
-               becomes unwieldy. If 'group_reporting' is specified, fio
-               will show the final report per-group instead of per-job.
+               the same thing. Each thread is reported separately; to see
+               statistics for all clones as a whole, use group_reporting in
+               conjunction with new_group.
+
+group_reporting        It may sometimes be interesting to display statistics for
+               groups of jobs as a whole instead of for each individual job. This is
+               especially true if 'numjobs' is used; looking at individual
+               thread/process output quickly becomes unwieldy. To see the final report
+               per-group instead of per-job, use 'group_reporting'. Jobs in a file
+               will be part of the same reporting group, unless if separated by a
+               stonewall, or by using 'new_group'.
 
 thread         fio defaults to forking jobs, however if this option is
                given, fio will use pthread_create(3) to create threads
@@ -1107,8 +1121,8 @@ write_bw_log=str If given, write a bandwidth log of the jobs in this job
                file. Can be used to store data of the bandwidth of the
                jobs in their lifetime. The included fio_generate_plots
                script uses gnuplot to turn these text files into nice
-               graphs. See write_log_log for behaviour of given
-               filename. For this option, the postfix is _bw.log.
+               graphs. See write_lat_log for behaviour of given
+               filename. For this option, the suffix is _bw.log.
 
 write_lat_log=str Same as write_bw_log, except that this option stores io
                submission, completion, and total latencies instead. If no
@@ -1233,6 +1247,19 @@ continue_on_error=str    Normally fio will exit the job on the first observed
 
                        1               Backward-compatible alias for 'all'.
 
+ignore_error=str Sometimes you want to ignore some errors during test
+                in that case you can specify error list for each error type.
+                ignore_error=READ_ERR_LIST,WRITE_ERR_LIST,VERIFY_ERR_LIST
+                errors for given error type is separated with ':'. Error
+                may be symbol ('ENOSPC', 'ENOMEM') or integer.
+                Example:
+                       ignore_error=EAGAIN,ENOSPC:122
+                This option will ignore EAGAIN from READ, and ENOSPC and 
+                122(EDQUOT) from WRITE. 
+
+error_dump=bool If set dump every error even if it is non fatal, true
+               by default. If disabled only fatal error will be dumped
+                                
 cgroup=str     Add job to this control group. If it doesn't exist, it will
                be created. The system must have a mounted cgroup blkio
                mount point for this to work. If your system doesn't have it
@@ -1311,6 +1338,14 @@ that defines them is selected.
 [net] listen   For TCP network connections, tell fio to listen for incoming
                connections rather than initiating an outgoing connection. The
                hostname must be omitted if this option is used.
+[e4defrag] donorname=str
+               File will be used as a block donor(swap extents between files)
+[e4defrag] inplace=int
+               Configure donor file blocks allocation strategy         
+               0(default): Preallocate donor's file on init
+               1         : allocate space immidietly inside defragment event,
+                           and free right after event
+
 
 
 6.0 Interpreting the output
@@ -1341,6 +1376,7 @@ I         Thread initialized, waiting.
 E              Thread exited, not reaped by main thread yet.
 _              Thread reaped, or
 X              Thread reaped, exited with an error.
+K              Thread reaped, exited due to signal.
 
 The other values are fairly self explanatory - number of threads
 currently running and doing io, rate of io since last check (read speed
@@ -1381,7 +1417,8 @@ runt=             The runtime of that thread
                latency, since queue/complete is one operation there. This
                value can be in milliseconds or microseconds, fio will choose
                the most appropriate base and print that. In the example
-               above, milliseconds is the best scale.
+               above, milliseconds is the best scale. Note: in --minimal mode
+               latencies are always expressed in microseconds.
        clat=   Completion latency. Same names as slat, this denotes the
                time from submission to completion of the io pieces. For
                sync io, clat will usually be equal (or very close) to 0,
@@ -1446,6 +1483,9 @@ io_queue= Total time spent in the disk queue.
 util=          The disk utilization. A value of 100% means we kept the disk
                busy constantly, 50% would be a disk idling half of the time.
 
+It is also possible to get fio to dump the current output while it is
+running, without terminating the job. To do that, send fio the USR1 signal.
+
 
 7.0 Terse output
 ----------------
@@ -1469,18 +1509,18 @@ Split up, the format is as follows:
        terse version, fio version, jobname, groupid, error
        READ status:
                Total IO (KB), bandwidth (KB/sec), IOPS, runtime (msec)
-               Submission latency: min, max, mean, deviation
-               Completion latency: min, max, mean, deviation
+               Submission latency: min, max, mean, deviation (usec)
+               Completion latency: min, max, mean, deviation (usec)
                Completion latency percentiles: 20 fields (see below)
-               Total latency: min, max, mean, deviation
-               Bw: min, max, aggregate percentage of total, mean, deviation
+               Total latency: min, max, mean, deviation (usec)
+               Bw (KB/s): min, max, aggregate percentage of total, mean, deviation
        WRITE status:
                Total IO (KB), bandwidth (KB/sec), IOPS, runtime (msec)
-               Submission latency: min, max, mean, deviation
-               Completion latency: min, max, mean, deviation
+               Submission latency: min, max, mean, deviation (usec)
+               Completion latency: min, max, mean, deviation (usec)
                Completion latency percentiles: 20 fields (see below)
-               Total latency: min, max, mean, deviation
-               Bw: min, max, aggregate percentage of total, mean, deviation
+               Total latency: min, max, mean, deviation (usec)
+               Bw (KB/s): 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