X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=HOWTO;h=044b57221f3d18c431e4840bfcbdb21bbab31b2e;hp=38eafdd3b49e7e5c9e4aa8672a59d5592b76b76e;hb=3e260a46ea9a8de224c3d0a29a608da3440f284a;hpb=b93b6a2e1e0d9b919d0b2d4106d3abe415234a46 diff --git a/HOWTO b/HOWTO index 38eafdd3..044b5722 100644 --- a/HOWTO +++ b/HOWTO @@ -443,9 +443,11 @@ bs=int The block size used for the io units. Defaults to 4k. Values can be given for both read and writes. If a single int is given, it will apply to both. If a second int is specified after a comma, it will apply to writes only. In other words, - the format is either bs=read_and_write or bs=read,write. - bs=4k,8k will thus use 4k blocks for reads, and 8k blocks - for writes. If you only wish to set the write size, you + the format is either bs=read_and_write or bs=read,write,trim. + bs=4k,8k will thus use 4k blocks for reads, 8k blocks for + writes, and 8k for trims. You can terminate the list with + a trailing comma. bs=4k,8k, would use the default value for + trims.. If you only wish to set the write size, you can do so by passing an empty read size - bs=,8k will set 8k for writes and leave the read default value. @@ -503,6 +505,11 @@ bs_unaligned If this option is given, any byte size value within bsrange may be used as a block range. This typically wont work with direct IO, as that normally requires sector alignment. +bs_is_seq_rand If this option is set, fio will use the normal read,write + blocksize settings as sequential,random instead. Any random + read or write will use the WRITE blocksize settings, and any + sequential read or write will use the READ blocksize setting. + zero_buffers If this option is given, fio will init the IO buffers to all zeroes. The default is to fill them with random data. @@ -688,6 +695,11 @@ direct=bool If value is true, use non-buffered io. This is usually O_DIRECT. Note that ZFS on Solaris doesn't support direct io. On Windows the synchronous ioengines don't support direct io. +atomic=bool If value is true, attempt to use atomic direct IO. Atomic + writes are guaranteed to be stable once acknowledged by + the operating system. Only Linux supports O_ATOMIC right + now. + buffered=bool If value is true, use buffered io. This is the opposite of the 'direct' option. Defaults to true. @@ -702,6 +714,13 @@ offset_increment=int If this is provided, then the real offset becomes which are intended to operate on a file in parallel in disjoint segments, with even spacing between the starting points. +number_ios=int Fio will normally perform IOs until it has exhausted the size + of the region set by size=, or if it exhaust the allocated + time (or hits an error condition). With this setting, the + range/size can be set independently of the number of IOs to + perform. When fio reaches this number, it will exit normally + and report status. + fsync=int If writing to a file, issue a sync of the dirty data for every number of blocks given. For example, if you give 32 as a parameter, fio will sync the file for every 32 @@ -773,12 +792,10 @@ percentage_random=int For a random workload, set how big a percentage should is fully random. It can be set from anywhere from 0 to 100. Setting it to 0 would make the workload fully sequential. Any setting in between will result in a random mix of sequential - and random IO, at the given percentages. + and random IO, at the given percentages. It is possible to + set different values for reads, writes, and trim. To do so, + simply use a comma separated list. See blocksize. -percentage_sequential=int See percentage_random. It is guaranteed that - they add up to 100. The later setting has priority, each - will adjust the other. - norandommap Normally fio will cover every block of the file when doing random IO. If this option is given, fio will just get a new random offset without looking at past io history. This @@ -858,11 +875,25 @@ 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. The same format - as rate is used for read vs write seperation. + as rate is used for read vs write separation. rate_iops_min=int If fio doesn't meet this rate of IO, it will cause the job to exit. The same format as rate is used for read vs - write seperation. + write separation. + +latency_target=int If set, fio will attempt to find the max performance + point that the given workload will run at while maintaining a + latency below this target. The values is given in microseconds. + See latency_window and latency_percentile + +latency_window=int Used with latency_target to specify the sample window + that the job is run at varying queue depths to test the + performance. The value is given in microseconds. + +latency_percentile=float The percentage of IOs that must fall within the + criteria specified by latency_target and latency_window. If not + set, this defaults to 100.0, meaning that all IOs must be equal + or below to the value set by latency_target. max_latency=int If set, fio will exit the job if it exceeds this maximum latency. It will exit with an ETIME error. @@ -1139,9 +1170,6 @@ verify_backlog=int Fio will normally verify the written contents of a holding this meta data. If this option is enabled, fio will write only N blocks before verifying these blocks. - will verify the previously written blocks before continuing - to write new ones. - verify_backlog_batch=int Control how many blocks fio will verify if verify_backlog is set. If not set, will default to the value of verify_backlog (meaning the entire queue @@ -1151,7 +1179,7 @@ verify_backlog_batch=int Control how many blocks fio will verify blocks will be verified more than once. stonewall -wait_for_previous Wait for preceeding jobs in the job file to exit, before +wait_for_previous Wait for preceding jobs in the job file to exit, before starting this one. Can be used to insert serialization points in the job file. A stone wall also implies starting a new reporting group. @@ -1207,7 +1235,7 @@ replay_no_stall=int When replaying I/O with read_iolog the default behavior replay_redirect=str While replaying I/O patterns using read_iolog the default behavior is to replay the IOPS onto the major/minor device that each IOP was recorded from. This is sometimes - undesireable because on a different machine those major/minor + undesirable because on a different machine those major/minor numbers can map to a different device. Changing hardware on the same system can also result in a different major/minor mapping. Replay_redirect causes all IOPS to be replayed onto @@ -1240,9 +1268,6 @@ write_lat_log=str Same as write_bw_log, except that this option stores io and foo_lat.log. This helps fio_generate_plot fine the logs automatically. -write_bw_log=str If given, write an IOPS log of the jobs in this job - file. See write_bw_log. - write_iops_log=str Same as write_bw_log, but writes IOPS. If no filename is given with this option, the default filename of "jobname_type.log" is used. Even if the filename is given, @@ -1448,6 +1473,10 @@ that defines them is selected. [net] interface=str The IP address of the network interface used to send or receive UDP multicast +[netsplice] ttl=int +[net] ttl=int Time-to-live value for outgoing UDP multicast packets. + Default: 1 + [netsplice] nodelay=bool [net] nodelay=bool Set TCP_NODELAY on TCP connections. @@ -1674,9 +1703,9 @@ Split up, the format is as follows: Read merges, write merges, Read ticks, write ticks, Time spent in queue, disk utilization percentage - Additional Info (dependant on continue_on_error, default off): total # errors, first error code + Additional Info (dependent on continue_on_error, default off): total # errors, first error code - Additional Info (dependant on description being set): Text description + Additional Info (dependent on description being set): Text description Completion latency percentiles can be a grouping of up to 20 sets, so for the terse output fio writes all of them. Each field will look like this: