Merge branch 'mpath_nvme_diskutil' of https://github.com/sitsofe/fio
[fio.git] / HOWTO
diff --git a/HOWTO b/HOWTO
index cd0fcf34861bda196954a031e758a385d521c810..f91a22eb10acc72aa2246f2ebd50e06c1e1b0ad8 100644 (file)
--- a/HOWTO
+++ b/HOWTO
@@ -173,7 +173,16 @@ Command line options
 .. option:: --eta=when
 
        Specifies when real-time ETA estimate should be printed.  `when` may be
-       `always`, `never` or `auto`.
+       `always`, `never` or `auto`. `auto` is the default, it prints ETA
+       when requested if the output is a TTY. `always` disregards the output
+       type, and prints ETA when requested. `never` never prints ETA.
+
+.. option:: --eta-interval=time
+
+       By default, fio requests client ETA status roughly every second. With
+       this option, the interval is configurable. Fio imposes a minimum
+       allowed time to avoid flooding the console, less than 250 msec is
+       not supported.
 
 .. option:: --eta-newline=time
 
@@ -1084,8 +1093,9 @@ I/O type
 
 .. option:: fadvise_hint=str
 
-       Use :manpage:`posix_fadvise(2)` to advise the kernel on what I/O patterns
-       are likely to be issued.  Accepted values are:
+       Use :manpage:`posix_fadvise(2)` or :manpage:`posix_fadvise(2)` to
+       advise the kernel on what I/O patterns are likely to be issued.
+       Accepted values are:
 
                **0**
                        Backwards-compatible hint for "no hint".
@@ -1293,6 +1303,9 @@ I/O type
 
                random_distribution=zoned_abs=60/20G:30/100G:10/500g
 
+       For both **zoned** and **zoned_abs**, fio supports defining up to
+       256 separate zones.
+
        Similarly to how :option:`bssplit` works for setting ranges and
        percentages of block sizes. Like :option:`bssplit`, it's possible to
        specify separate zones for reads, writes, and trims. If just one set
@@ -1388,34 +1401,39 @@ Block size
 
 .. option:: bssplit=str[,str][,str]
 
-       Sometimes you want even finer grained control of the block sizes issued, not
-       just an even split between them.  This option allows you to weight various
-       block sizes, so that you are able to define a specific amount of block sizes
-       issued. The format for this option is::
+       Sometimes you want even finer grained control of the block sizes
+       issued, not just an even split between them.  This option allows you to
+       weight various block sizes, so that you are able to define a specific
+       amount of block sizes issued. The format for this option is::
 
                bssplit=blocksize/percentage:blocksize/percentage
 
-       for as many block sizes as needed. So if you want to define a workload that
-       has 50% 64k blocks, 10% 4k blocks, and 40% 32k blocks, you would write::
+       for as many block sizes as needed. So if you want to define a workload
+       that has 50% 64k blocks, 10% 4k blocks, and 40% 32k blocks, you would
+       write::
 
                bssplit=4k/10:64k/50:32k/40
 
-       Ordering does not matter. If the percentage is left blank, fio will fill in
-       the remaining values evenly. So a bssplit option like this one::
+       Ordering does not matter. If the percentage is left blank, fio will
+       fill in the remaining values evenly. So a bssplit option like this one::
 
                bssplit=4k/50:1k/:32k/
 
-       would have 50% 4k ios, and 25% 1k and 32k ios. The percentages always add up
-       to 100, if bssplit is given a range that adds up to more, it will error out.
+       would have 50% 4k ios, and 25% 1k and 32k ios. The percentages always
+       add up to 100, if bssplit is given a range that adds up to more, it
+       will error out.
 
        Comma-separated values may be specified for reads, writes, and trims as
        described in :option:`blocksize`.
 
-       If you want a workload that has 50% 2k reads and 50% 4k reads, while having
-       90% 4k writes and 10% 8k writes, you would specify::
+       If you want a workload that has 50% 2k reads and 50% 4k reads, while
+       having 90% 4k writes and 10% 8k writes, you would specify::
 
                bssplit=2k/50:4k/50,4k/90,8k/10
 
+       Fio supports defining up to 64 different weights for each data
+       direction.
+
 .. option:: blocksize_unaligned, bs_unaligned
 
        If set, fio will issue I/O units with any size within
@@ -1792,6 +1810,11 @@ I/O engine
                        I/O engine that does regular EXT4_IOC_MOVE_EXT ioctls to simulate
                        defragment activity in request to DDIR_WRITE event.
 
+               **rados**
+                       I/O engine supporting direct access to Ceph Reliable Autonomic
+                       Distributed Object Store (RADOS) via librados. This ioengine
+                       defines engine specific options.
+
                **rbd**
                        I/O engine supporting direct access to Ceph Rados Block Devices
                        (RBD) via librbd without the need to use the kernel rbd driver. This
@@ -1993,7 +2016,7 @@ with the caveat that when used on the command line, they must come after the
                Allocate space immediately inside defragment event, and free right
                after event.
 
-.. option:: clustername=str : [rbd]
+.. option:: clustername=str : [rbd,rados]
 
        Specifies the name of the Ceph cluster.
 
@@ -2001,17 +2024,22 @@ with the caveat that when used on the command line, they must come after the
 
        Specifies the name of the RBD.
 
-.. option:: pool=str : [rbd]
+.. option:: pool=str : [rbd,rados]
 
-       Specifies the name of the Ceph pool containing RBD.
+       Specifies the name of the Ceph pool containing RBD or RADOS data.
 
-.. option:: clientname=str : [rbd]
+.. option:: clientname=str : [rbd,rados]
 
        Specifies the username (without the 'client.' prefix) used to access the
        Ceph cluster. If the *clustername* is specified, the *clientname* shall be
        the full *type.id* string. If no type. prefix is given, fio will add
        'client.' by default.
 
+.. option:: busy_poll=bool : [rbd,rados]
+
+        Poll store instead of waiting for completion. Usually this provides better
+        throughput at cost of higher(up to 100%) CPU utilization.
+
 .. option:: skip_bad=bool : [mtd]
 
        Skip operations against known bad blocks.
@@ -2200,6 +2228,13 @@ I/O rate
        (https://en.wikipedia.org/wiki/Poisson_point_process). The lambda will be
        10^6 / IOPS for the given workload.
 
+.. option:: rate_ignore_thinktime=bool
+
+       By default, fio will attempt to catch up to the specified rate setting,
+       if any kind of thinktime setting was used. If this option is set, then
+       fio will ignore the thinktime and continue doing IO at the specified
+       rate, instead of entering a catch-up mode after thinktime is done.
+
 
 I/O latency
 ~~~~~~~~~~~