X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=HOWTO;h=f91a22eb10acc72aa2246f2ebd50e06c1e1b0ad8;hp=164ba2bbdea245a63470cb8009a72904366d3959;hb=8f9094248fd37ae9c742772ec8b129a97f4a4d12;hpb=609ac152d5a7d0bc5c645f8c50bf2415e7b2d4d3 diff --git a/HOWTO b/HOWTO index 164ba2bb..f91a22eb 100644 --- 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". @@ -1254,6 +1264,9 @@ I/O type **zoned** Zoned random distribution + **zoned_abs** + Zone absolute random distribution + When using a **zipf** or **pareto** distribution, an input value is also needed to define the access pattern. For **zipf**, this is the `Zipf theta`. For **pareto**, it's the `Pareto power`. Fio includes a test @@ -1278,10 +1291,26 @@ I/O type random_distribution=zoned:60/10:30/20:8/30:2/40 - 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 is given, it'll apply to - all of them. + A **zoned_abs** distribution works exactly like the **zoned**, except + that it takes absolute sizes. For example, let's say you wanted to + define access according to the following criteria: + + * 60% of accesses should be to the first 20G + * 30% of accesses should be to the next 100G + * 10% of accesses should be to the next 500G + + we can define an absolute zoning distribution with: + + 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 + is given, it'll apply to all of them. This goes for both **zoned** + **zoned_abs** distributions. .. option:: percentage_random=int[,int][,int] @@ -1372,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 @@ -1776,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 @@ -1977,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. @@ -1985,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. @@ -2184,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 ~~~~~~~~~~~ @@ -2934,20 +2985,20 @@ Measurements and reporting .. option:: percentile_list=float_list - Overwrite the default list of percentiles for completion latencies and the - block error histogram. Each number is a floating number in the range - (0,100], and the maximum length of the list is 20. Use ``:`` to separate the - numbers, and list the numbers in ascending order. For example, - ``--percentile_list=99.5:99.9`` will cause fio to report the values of - completion latency below which 99.5% and 99.9% of the observed latencies - fell, respectively. + Overwrite the default list of percentiles for completion latencies and + the block error histogram. Each number is a floating number in the + range (0,100], and the maximum length of the list is 20. Use ``:`` to + separate the numbers, and list the numbers in ascending order. For + example, ``--percentile_list=99.5:99.9`` will cause fio to report the + values of completion latency below which 99.5% and 99.9% of the observed + latencies fell, respectively. .. option:: significant_figures=int - If using :option:`--output-format` of `normal`, set the significant figures - to this value. Higher values will yield more precise IOPS and throughput - units, while lower values will round. Requires a minimum value of 1 and a - maximum value of 10. Defaults to 4. + If using :option:`--output-format` of `normal`, set the significant + figures to this value. Higher values will yield more precise IOPS and + throughput units, while lower values will round. Requires a minimum + value of 1 and a maximum value of 10. Defaults to 4. Error handling