X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=HOWTO;h=41d32c04dc638b12de1dc20e9444ed4462c81051;hp=64c6a033982b41c01b94cfe8b5088a64b4f36e93;hb=e08e2dd7b77f99e4bb904fc1df2395c2fe2ffbbe;hpb=b21fc93f2e076149cf644614437d13fa8a00ba49 diff --git a/HOWTO b/HOWTO index 64c6a033..41d32c04 100644 --- a/HOWTO +++ b/HOWTO @@ -765,8 +765,8 @@ Target file/device `filename` semantic (which generates a file for each clone if not specified, but lets all clones use the same file if set). - See the :option:`filename` option for information on how to escape "``:``" and - "``\``" characters within the directory path itself. + See the :option:`filename` option for information on how to escape "``:``" + characters within the directory path itself. Note: To control the directory fio will use for internal state files use :option:`--aux-path`. @@ -785,10 +785,10 @@ Target file/device by this option will be :option:`size` divided by number of files unless an explicit size is specified by :option:`filesize`. - Each colon and backslash in the wanted path must be escaped with a ``\`` + Each colon in the wanted path must be escaped with a ``\`` character. For instance, if the path is :file:`/dev/dsk/foo@3,0:c` then you would use ``filename=/dev/dsk/foo@3,0\:c`` and if the path is - :file:`F:\\filename` then you would use ``filename=F\:\\filename``. + :file:`F:\\filename` then you would use ``filename=F\:\filename``. On Windows, disk devices are accessed as :file:`\\\\.\\PhysicalDrive0` for the first device, :file:`\\\\.\\PhysicalDrive1` for the second etc. @@ -1173,6 +1173,10 @@ I/O type Pre-allocate via :manpage:`fallocate(2)` with FALLOC_FL_KEEP_SIZE set. + **truncate** + Extend file to final size via :manpage:`ftruncate(2)` + instead of allocating. + **0** Backward-compatible alias for **none**. @@ -1182,7 +1186,15 @@ I/O type May not be available on all supported platforms. **keep** is only available on Linux. If using ZFS on Solaris this cannot be set to **posix** because ZFS doesn't support pre-allocation. Default: **native** if any - pre-allocation methods are available, **none** if not. + pre-allocation methods except **truncate** are available, **none** if not. + + Note that using **truncate** on Windows will interact surprisingly + with non-sequential write patterns. When writing to a file that has + been extended by setting the end-of-file information, Windows will + backfill the unwritten portion of the file up to that offset with + zeroes before issuing the new write. This means that a single small + write to the end of an extended file will stall until the entire + file has been filled with zeroes. .. option:: fadvise_hint=str @@ -2034,6 +2046,7 @@ with the caveat that when used on the command line, they must come after the IO latency as well. .. option:: registerfiles : [io_uring] + With this option, fio registers the set of files being used with the kernel. This avoids the overhead of managing file counts in the kernel, making the submission and completion part more lightweight. Required @@ -2552,7 +2565,7 @@ I/O replay (``blkparse -o /dev/null -d file_for_fio.bin``). You can specify a number of files by separating the names with a ':' character. See the :option:`filename` option for information on how to - escape ':' and '\' characters within the file names. These files will + escape ':' characters within the file names. These files will be sequentially assigned to job clones created by :option:`numjobs`. .. option:: read_iolog_chunked=bool @@ -2802,9 +2815,21 @@ Threads, processes and job synchronization .. option:: exitall - By default, fio will continue running all other jobs when one job finishes - but sometimes this is not the desired action. Setting ``exitall`` will - instead make fio terminate all other jobs when one job finishes. + 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, as soon as one job of that + group finishes. + +.. option:: exit_what + + By default, fio will continue running all other jobs when one job finishes. + Sometimes this is not the desired action. Setting ``exit_all`` 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 + ``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. .. option:: exec_prerun=str @@ -3966,7 +3991,7 @@ only file passed to :option:`read_iolog`. An example would look like:: $ fio --read_iolog=":" --merge_blktrace_file="" Creating only the merged file can be done by passing the command line argument -:option:`merge-blktrace-only`. +:option:`--merge-blktrace-only`. Scaling traces can be done to see the relative impact of any particular trace being slowed down or sped up. :option:`merge_blktrace_scalars` takes in a colon