Move setup_rate() out of log.c
[fio.git] / HOWTO
diff --git a/HOWTO b/HOWTO
index de4b0a9932b43f207260a569a5e33349efebc63b..c14039318175c6170dbec9c3c7be55d80ff16801 100644 (file)
--- a/HOWTO
+++ b/HOWTO
@@ -176,6 +176,8 @@ siint       SI integer. A whole number value, which may contain a postfix
        meaning kilo, mega, and giga. So if you want to specify 4096,
        you could either write out '4096' or just give 4k. The postfixes
        signify base 2 values, so 1024 is 1k and 1024k is 1m and so on.
+       If the option accepts an upper and lower range, use a colon ':'
+       or minus '-' to seperate such values. See irange.
 bool   Boolean. Usually parsed as an integer, however only defined for
        true and false (1 and 0).
 irange Integer range with postfix. Allows value range to be given, such
@@ -205,7 +207,14 @@ 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 and
-               port to connect to in the format of =host:port.
+               port to connect to in the format of =host/port. If the
+               ioengine is file based, you can specify a number of files
+               by seperating the names with a ':' colon. So if you wanted
+               a job to open /dev/sda and /dev/sdb as the two working files,
+               you would use filename=/dev/sda:/dev/sdb
+
+opendir=str    Tell fio to recursively add any file it can find in this
+               directory and down the file system tree.
 
 rw=str         Type of io pattern. Accepted values are:
 
@@ -230,6 +239,11 @@ size=siint The total size of file io for this job. This may describe
                size if larger than the current file size. If this parameter
                is not given and the file exists, the file size will be used.
 
+filesize=siint Individual file sizes. May be a range, in which case fio
+               will select sizes for files at random within the given range
+               and limited to 'size' in total (if that is given). If not
+               given, each created file is the same size.
+
 bs=siint       The block size used for the io units. Defaults to 4k. Values
                can be given for both read and writes. If a single siint is
                given, it will apply to both. If a second siint is specified
@@ -253,6 +267,23 @@ bs_unaligned       If this option is given, any byte size value within bsrange
 
 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
+               the same as nrfiles, can be set smaller to limit the number
+               simultaneous opens.
+
+file_service_type=str  Defines how fio decides which file from a job to
+               service next. The following types are defined:
+
+                       random  Just choose a file at random.
+
+                       roundrobin  Round robin over open files. This
+                               is the default.
+
+               The string can have a number appended, indicating how
+               often to switch to a new file. So if option random:4 is
+               given, fio will switch to a new random file after 4 ios
+               have been issued.
+
 ioengine=str   Defines how the job issues io to the file. The following
                types are defined:
 
@@ -285,10 +316,21 @@ ioengine=str      Defines how the job issues io to the file. The following
 
                        net     Transfer over the network to given host:port.
                                'filename' must be set appropriately to
-                               filename=host:port regardless of send
+                               filename=host/port regardless of send
                                or receive, if the latter only the port
                                argument is used.
 
+                       cpu     Doesn't transfer any data, but burns CPU
+                               cycles according to the cpuload= and
+                               cpucycle= options. Setting cpuload=85
+                               will cause that job to do nothing but burn
+                               85% of the CPU.
+
+                       external Prefix to specify loading an external
+                               IO engine object file. Append the engine
+                               filename, eg ioengine=external:/tmp/foo.o
+                               to load ioengine foo.o in /tmp.
+
 iodepth=int    This defines how many io units to keep in flight against
                the file. The default is 1 for each file defined in this
                job, can be overridden with a larger value for higher
@@ -326,6 +368,10 @@ overwrite=bool     If writing to a file, setup the file first and do overwrites.
 
 end_fsync=bool If true, fsync file contents when the job exits.
 
+fsync_on_close=bool    If true, fio will fsync() a dirty file on close.
+               This differs from end_fsync in that it will happen on every
+               file close, not just at the end of the job.
+
 rwmixcycle=int Value in milliseconds describing how often to switch between
                reads and writes for a mixed workload. The default is
                500 msecs.
@@ -372,7 +418,16 @@ thinktime_blocks
 rate=int       Cap the bandwidth used by this job to this number of KiB/sec.
 
 ratemin=int    Tell fio to do whatever it can to maintain at least this
-               bandwidth.
+               bandwidth. Failing to meet this requirement, will cause
+               the job to exit.
+
+rate_iops=int  Cap the bandwidth to this number of IOPS. Basically the same
+               as rate, just specified independently of bandwidth. If the
+               job is given a block size range instead of a fixed value,
+               the smallest block size is used as the metric.
+
+rate_iops_min=int If fio doesn't meet this rate of IO, it will cause
+               the job to exit.
 
 ratecycle=int  Average bandwidth for 'rate' and 'ratemin' over this number
                of milliseconds.
@@ -483,7 +538,15 @@ stonewall  Wait for preceeding jobs in the job file to exit, before
 
 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.
+               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.
 
 thread         fio defaults to forking jobs, however if this option is
                given, fio will use pthread_create(3) to create threads
@@ -648,10 +711,11 @@ util=             The disk utilization. A value of 100% means we kept the disk
 ----------------
 
 For scripted usage where you typically want to generate tables or graphs
-of the results, fio can output the results in a comma separated format.
+of the results, fio can output the results in a semicolon separated format.
 The format is one long line of values, such as:
 
-client1,0,0,936,331,2894,0,0,0.000000,0.000000,1,170,22.115385,34.290410,16,714,84.252874%,366.500000,566.417819,3496,1237,2894,0,0,0.000000,0.000000,0,246,6.671625,21.436952,0,2534,55.465300%,1406.600000,2008.044216,0.000000%,0.431928%,1109
+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%
 
 Split up, the format is as follows:
 
@@ -667,4 +731,7 @@ Split up, the format is as follows:
                Completion latency: min, max, mean, deviation
                Bw: min, max, aggregate percentage of total, mean, deviation
        CPU usage: user, system, context switches
+       IO depths: <=1, 2, 4, 8, 16, 32, >=64
+       IO latencies: <=2, 4, 10, 20, 50, 100, 250, 500, 750, 1000, >=2000
+       Text description