t/zbd: add test case to confirm no write with rwmixwrite=0 option
[fio.git] / HOWTO.rst
index 89032941562d6311fab406664dda5db76e929e9f..847c035637226aaf32c2f6b37cfef37dc6c62b73 100644 (file)
--- a/HOWTO.rst
+++ b/HOWTO.rst
@@ -755,6 +755,10 @@ Time related parameters
        calls will be excluded from other uses. Fio will manually clear it from the
        CPU mask of other jobs.
 
+.. option:: job_start_clock_id=int
+   The clock_id passed to the call to `clock_gettime` used to record job_start
+   in the `json` output format. Default is 0, or CLOCK_REALTIME.
+
 
 Target file/device
 ~~~~~~~~~~~~~~~~~~
@@ -797,7 +801,7 @@ Target file/device
 
        On Windows, disk devices are accessed as :file:`\\\\.\\PhysicalDrive0` for
        the first device, :file:`\\\\.\\PhysicalDrive1` for the second etc.
-       Note: Windows and FreeBSD prevent write access to areas
+       Note: Windows and FreeBSD (refer to geom(4)) prevent write access to areas
        of the disk containing in-use data (e.g. filesystems).
 
        The filename "`-`" is a reserved name, meaning *stdin* or *stdout*.  Which
@@ -2340,8 +2344,8 @@ with the caveat that when used on the command line, they must come after the
 
                cmdprio_bssplit=blocksize/percentage/class/level/hint:...
 
-       This is an extension of the second accepted format that allows to also
-       specify a priority hint.
+       This is an extension of the second accepted format that allows one to
+       also specify a priority hint.
 
        For all formats, only the read and write data directions are supported,
        values for trim IOs are ignored. This option is mutually exclusive with
@@ -2503,6 +2507,10 @@ with the caveat that when used on the command line, they must come after the
        If this is set to 0, fio generates protection information for
        write case and verifies for read case. Default: 1.
 
+       For 16 bit CRC generation fio will use isa-l if available otherwise
+       it will use the default slower generator.
+       (see: https://github.com/intel/isa-l)
+
 .. option:: pi_chk=str[,str][,str] : [io_uring_cmd]
 
        Controls the protection information check. This can take one or more
@@ -3010,7 +3018,7 @@ with the caveat that when used on the command line, they must come after the
        **hugepage**
                Use hugepages, instead of existing posix memory backend. The
                memory backend uses hugetlbfs. This require users to allocate
-               hugepages, mount hugetlbfs and set an enviornment variable for
+               hugepages, mount hugetlbfs and set an environment variable for
                XNVME_HUGETLB_PATH.
        **spdk**
                Uses SPDK's memory allocator.
@@ -3043,7 +3051,7 @@ with the caveat that when used on the command line, they must come after the
        creating but before connecting the libblkio instance. Each property must
        have the format ``<name>=<value>``. Colons can be escaped as ``\:``.
        These are set after the engine sets any other properties, so those can
-       be overriden. Available properties depend on the libblkio version in use
+       be overridden. Available properties depend on the libblkio version in use
        and are listed at
        https://libblkio.gitlab.io/libblkio/blkio.html#properties
 
@@ -3067,7 +3075,7 @@ with the caveat that when used on the command line, they must come after the
        connecting but before starting the libblkio instance. Each property must
        have the format ``<name>=<value>``. Colons can be escaped as ``\:``.
        These are set after the engine sets any other properties, so those can
-       be overriden. Available properties depend on the libblkio version in use
+       be overridden. Available properties depend on the libblkio version in use
        and are listed at
        https://libblkio.gitlab.io/libblkio/blkio.html#properties
 
@@ -3201,6 +3209,14 @@ I/O depth
 I/O rate
 ~~~~~~~~
 
+.. option:: thinkcycles=int
+
+       Stall the job for the specified number of cycles after an I/O has completed before
+       issuing the next. May be used to simulate processing being done by an application.
+       This is not taken into account for the time to be waited on for  :option:`thinktime`.
+       Might not have any effect on some platforms, this can be checked by trying a setting
+       a high enough amount of thinkcycles.
+
 .. option:: thinktime=time
 
        Stall the job for the specified period of time after an I/O has completed before issuing the
@@ -3631,8 +3647,8 @@ Threads, processes and job synchronization
        By default, fio will continue running all other jobs when one job finishes.
        Sometimes this is not the desired action. Setting ``exitall`` will
        instead make fio terminate all jobs in the same group. The option
-        ``exit_what`` allows to control which jobs get terminated when ``exitall`` is
-        enabled. The default is ``group`` and does not change the behaviour of
+        ``exit_what`` allows one to control which jobs get terminated when ``exitall``
+        is enabled. The default is ``group`` and does not change the behaviour of
         ``exitall``. The setting ``all`` terminates all jobs. The setting ``stonewall``
         terminates all currently running jobs across all groups and continues execution
         with the next stonewalled group.
@@ -3952,9 +3968,11 @@ Measurements and reporting
 
 .. option:: per_job_logs=bool
 
-       If set, this generates bw/clat/iops log with per file private filenames. If
-       not set, jobs with identical names will share the log filename. Default:
-       true.
+        If set to true, fio generates bw/clat/iops logs with per job unique
+        filenames. If set to false, jobs with identical names will share a log
+        filename. Note that when this option is set to false log files will be
+        opened in append mode and if log files already exist the previous
+        contents will not be overwritten. Default: true.
 
 .. option:: group_reporting
 
@@ -3966,6 +3984,13 @@ Measurements and reporting
        same reporting group, unless if separated by a :option:`stonewall`, or by
        using :option:`new_group`.
 
+    NOTE: When :option: `group_reporting` is used along with `json` output,
+    there are certain per-job properties which can be different between jobs
+    but do not have a natural group-level equivalent. Examples include
+    `kb_base`, `unit_base`, `sig_figs`, `thread_number`, `pid`, and
+    `job_start`. For these properties, the values for the first job are
+    recorded for the group.
+
 .. option:: new_group
 
        Start a new reporting group. See: :option:`group_reporting`.  If not given,
@@ -4103,9 +4128,7 @@ Measurements and reporting
 
 .. option:: log_unix_epoch=bool
 
-       If set, fio will log Unix timestamps to the log files produced by enabling
-       write_type_log for each log type, instead of the default zero-based
-       timestamps.
+       Backwards compatible alias for log_alternate_epoch.
 
 .. option:: log_alternate_epoch=bool
 
@@ -4116,9 +4139,9 @@ Measurements and reporting
 
 .. option:: log_alternate_epoch_clock_id=int
 
-       Specifies the clock_id to be used by clock_gettime to obtain the alternate epoch
-       if either log_unix_epoch or log_alternate_epoch are true. Otherwise has no
-       effect. Default value is 0, or CLOCK_REALTIME.
+    Specifies the clock_id to be used by clock_gettime to obtain the alternate
+    epoch if log_alternate_epoch is true. Otherwise has no effect. Default
+    value is 0, or CLOCK_REALTIME.
 
 .. option:: block_error_percentiles=bool
 
@@ -5096,6 +5119,9 @@ is the connect string, and `remote-args` and `job file(s)` are sent to the
 server. The `server` string follows the same format as it does on the server
 side, to allow IP/hostname/socket and port strings.
 
+Note that all job options must be defined in job files when running fio as a
+client. Any job options specified in `remote-args` will be ignored.
+
 Fio can connect to multiple servers this way::
 
     fio --client=<server1> <job file(s)> --client=<server2> <job file(s)>