X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=fio.1;h=bc477a2e8cdb3dd0737ffe93079737d97380791f;hp=b59025dc983375408350d6a09ba7afbb59428829;hb=43f466e667a8bcfc58c1c69b0897fe0345c34841;hpb=8243be59aa35aa016fcbeee99353b08376953911 diff --git a/fio.1 b/fio.1 index b59025dc..bc477a2e 100644 --- a/fio.1 +++ b/fio.1 @@ -1,4 +1,4 @@ -.TH fio 1 "March 2017" "User Manual" +.TH fio 1 "July 2017" "User Manual" .SH NAME fio \- flexible I/O tester .SH SYNOPSIS @@ -14,8 +14,11 @@ one wants to simulate. .TP .BI \-\-debug \fR=\fPtype Enable verbose tracing of various fio actions. May be `all' for all types -or individual types separated by a comma (eg \-\-debug=io,file). `help' will -list all available tracing options. +or individual types separated by a comma (e.g. \-\-debug=file,mem will enable +file and memory debugging). `help' will list all available tracing options. +.TP +.BI \-\-parse-only +Parse options only, don't start any I/O. .TP .BI \-\-output \fR=\fPfilename Write output to \fIfilename\fR. @@ -39,89 +42,152 @@ Print statistics in a terse, semicolon-delimited format. Print statistics in selected mode AND terse, semicolon-delimited format. Deprecated, use \-\-output-format instead to select multiple formats. .TP -.B \-\-version -Display version information and exit. -.TP .BI \-\-terse\-version \fR=\fPversion -Set terse version output format (Current version 3, or older version 2). +Set terse version output format (default 3, or 2, 4, 5) +.TP +.B \-\-version +Print version information and exit. .TP .B \-\-help -Display usage information and exit. +Print a summary of the command line options and exit. .TP .B \-\-cpuclock-test -Perform test and validation of internal CPU clock +Perform test and validation of internal CPU clock. .TP -.BI \-\-crctest[\fR=\fPtest] -Test the speed of the builtin checksumming functions. If no argument is given, -all of them are tested. Or a comma separated list can be passed, in which +.BI \-\-crctest \fR=\fP[test] +Test the speed of the built-in checksumming functions. If no argument is given, +all of them are tested. Alternatively, a comma separated list can be passed, in which case the given ones are tested. .TP .BI \-\-cmdhelp \fR=\fPcommand -Print help information for \fIcommand\fR. May be `all' for all commands. +Print help information for \fIcommand\fR. May be `all' for all commands. .TP .BI \-\-enghelp \fR=\fPioengine[,command] List all commands defined by \fIioengine\fR, or print help for \fIcommand\fR defined by \fIioengine\fR. +If no \fIioengine\fR is given, list all available ioengines. .TP .BI \-\-showcmd \fR=\fPjobfile Convert \fIjobfile\fR to a set of command-line options. .TP +.BI \-\-readonly +Turn on safety read-only checks, preventing writes. The \-\-readonly +option is an extra safety guard to prevent users from accidentally starting +a write workload when that is not desired. Fio will only write if +`rw=write/randwrite/rw/randrw` is given. This extra safety net can be used +as an extra precaution as \-\-readonly will also enable a write check in +the I/O engine core to prevent writes due to unknown user space bug(s). +.TP .BI \-\-eta \fR=\fPwhen -Specifies when real-time ETA estimate should be printed. \fIwhen\fR may -be one of `always', `never' or `auto'. +Specifies when real-time ETA estimate should be printed. \fIwhen\fR may +be `always', `never' or `auto'. .TP .BI \-\-eta\-newline \fR=\fPtime -Force an ETA newline for every `time` period passed. +Force a new line for every \fItime\fR period passed. When the unit is omitted, +the value is interpreted in seconds. .TP .BI \-\-status\-interval \fR=\fPtime -Report full output status every `time` period passed. -.TP -.BI \-\-readonly -Turn on safety read-only checks, preventing any attempted write. -.TP -.BI \-\-section \fR=\fPsec -Only run section \fIsec\fR from job file. This option can be used multiple times to add more sections to run. +Force full status dump every \fItime\fR period passed. When the unit is omitted, +the value is interpreted in seconds. +.TP +.BI \-\-section \fR=\fPname +Only run specified section \fIname\fR in job file. Multiple sections can be specified. +The \-\-section option allows one to combine related jobs into one file. +E.g. one job file could define light, moderate, and heavy sections. Tell +fio to run only the "heavy" section by giving \-\-section=heavy +command line option. One can also specify the "write" operations in one +section and "verify" operation in another section. The \-\-section option +only applies to job sections. The reserved *global* section is always +parsed and used. .TP .BI \-\-alloc\-size \fR=\fPkb -Set the internal smalloc pool size to \fIkb\fP kilobytes. +Set the internal smalloc pool size to \fIkb\fP in KiB. The +\-\-alloc-size switch allows one to use a larger pool size for smalloc. +If running large jobs with randommap enabled, fio can run out of memory. +Smalloc is an internal allocator for shared structures from a fixed size +memory pool and can grow to 16 pools. The pool size defaults to 16MiB. +NOTE: While running .fio_smalloc.* backing store files are visible +in /tmp. .TP .BI \-\-warnings\-fatal All fio parser warnings are fatal, causing fio to exit with an error. .TP .BI \-\-max\-jobs \fR=\fPnr -Set the maximum allowed number of jobs (threads/processes) to support. +Set the maximum number of threads/processes to support. .TP .BI \-\-server \fR=\fPargs -Start a backend server, with \fIargs\fP specifying what to listen to. See client/server section. +Start a backend server, with \fIargs\fP specifying what to listen to. See Client/Server section. .TP .BI \-\-daemonize \fR=\fPpidfile -Background a fio server, writing the pid to the given pid file. +Background a fio server, writing the pid to the given \fIpidfile\fP file. +.TP +.BI \-\-client \fR=\fPhostname +Instead of running the jobs locally, send and run them on the given host or set of hosts. See Client/Server section. .TP -.BI \-\-client \fR=\fPhost -Instead of running the jobs locally, send and run them on the given host or set of hosts. See client/server section. +.BI \-\-remote-config \fR=\fPfile +Tell fio server to load this local file. .TP .BI \-\-idle\-prof \fR=\fPoption -Report cpu idleness on a system or percpu basis (\fIoption\fP=system,percpu) or run unit work calibration only (\fIoption\fP=calibrate). +Report CPU idleness. \fIoption\fP is one of the following: +.RS +.RS +.TP +.B calibrate +Run unit work calibration only and exit. +.TP +.B system +Show aggregate system idleness and unit work. +.TP +.B percpu +As "system" but also show per CPU idleness. +.RE +.RE +.TP +.BI \-\-inflate-log \fR=\fPlog +Inflate and output compressed log. +.TP +.BI \-\-trigger-file \fR=\fPfile +Execute trigger cmd when file exists. +.TP +.BI \-\-trigger-timeout \fR=\fPt +Execute trigger at this time. +.TP +.BI \-\-trigger \fR=\fPcmd +Set this command as local trigger. +.TP +.BI \-\-trigger-remote \fR=\fPcmd +Set this command as remote trigger. +.TP +.BI \-\-aux-path \fR=\fPpath +Use this path for fio state generated files. .SH "JOB FILE FORMAT" -Job files are in `ini' format. They consist of one or more -job definitions, which begin with a job name in square brackets and -extend to the next job name. The job name can be any ASCII string -except `global', which has a special meaning. Following the job name is -a sequence of zero or more parameters, one per line, that define the -behavior of the job. Any line starting with a `;' or `#' character is -considered a comment and ignored. -.P -If \fIjobfile\fR is specified as `-', the job file will be read from -standard input. -.SS "Global Section" -The global section contains default parameters for jobs specified in the -job file. A job is only affected by global sections residing above it, -and there may be any number of global sections. Specific job definitions -may override any parameter set in global sections. -.SH "JOB PARAMETERS" -.SS Types -Some parameters may take arguments of a specific type. -Anywhere a numeric value is required, an arithmetic expression may be used, -provided it is surrounded by parentheses. Supported operators are: +Any parameters following the options will be assumed to be job files, unless +they match a job file parameter. Multiple job files can be listed and each job +file will be regarded as a separate group. Fio will `stonewall` execution +between each group. + +Fio accepts one or more job files describing what it is +supposed to do. The job file format is the classic ini file, where the names +enclosed in [] brackets define the job name. You are free to use any ASCII name +you want, except *global* which has special meaning. Following the job name is +a sequence of zero or more parameters, one per line, that define the behavior of +the job. If the first character in a line is a ';' or a '#', the entire line is +discarded as a comment. + +A *global* section sets defaults for the jobs described in that file. A job may +override a *global* section parameter, and a job file may even have several +*global* sections if so desired. A job is only affected by a *global* section +residing above it. + +The \-\-cmdhelp option also lists all options. If used with an `option` +argument, \-\-cmdhelp will detail the given `option`. + +See the `examples/` directory in the fio source for inspiration on how to write +job files. Note the copyright and license requirements currently apply to +`examples/` files. +.SH "JOB FILE PARAMETERS" +Some parameters take an option of a given type, such as an integer or a +string. Anywhere a numeric value is required, an arithmetic expression may be +used, provided it is surrounded by parentheses. Supported operators are: .RS .RS .TP @@ -141,28 +207,37 @@ provided it is surrounded by parentheses. Supported operators are: .P For time values in expressions, units are microseconds by default. This is different than for time values not in expressions (not enclosed in -parentheses). The types used are: +parentheses). +.SH "PARAMETER TYPES" +The following parameter types are used. .TP .I str -String: a sequence of alphanumeric characters. +String. A sequence of alphanumeric characters. +.TP +.I time +Integer with possible time suffix. Without a unit value is interpreted as +seconds unless otherwise specified. Accepts a suffix of 'd' for days, 'h' for +hours, 'm' for minutes, 's' for seconds, 'ms' (or 'msec') for milliseconds and 'us' +(or 'usec') for microseconds. For example, use 10m for 10 minutes. .TP .I int Integer. A whole number value, which may contain an integer prefix and an integer suffix. -[integer prefix]number[integer suffix] +[*integer prefix*] **number** [*integer suffix*] + +The optional *integer prefix* specifies the number's base. The default +is decimal. *0x* specifies hexadecimal. -The optional integer prefix specifies the number's base. The default -is decimal. 0x specifies hexadecimal. +The optional *integer suffix* specifies the number's units, and includes an +optional unit prefix and an optional unit. For quantities of data, the +default unit is bytes. For quantities of time, the default unit is seconds +unless otherwise specified. -The optional integer suffix specifies the number's units, and includes -an optional unit prefix and an optional unit. For quantities -of data, the default unit is bytes. For quantities of time, -the default unit is seconds. +With \fBkb_base=1000\fR, fio follows international standards for unit +prefixes. To specify power-of-10 decimal values defined in the +International System of Units (SI): -With \fBkb_base=1000\fR, fio follows international standards for unit prefixes. -To specify power-of-10 decimal values defined in the International -System of Units (SI): .nf ki means kilo (K) or 1000 mi means mega (M) or 1000**2 @@ -172,6 +247,7 @@ pi means peta (P) or 1000**5 .fi To specify power-of-2 binary values defined in IEC 80000-13: + .nf k means kibi (Ki) or 1024 m means mebi (Mi) or 1024**2 @@ -180,12 +256,19 @@ t means tebi (Ti) or 1024**4 p means pebi (Pi) or 1024**5 .fi -With \fBkb_base=1024\fR (the default), the unit prefixes are opposite from -those specified in the SI and IEC 80000-13 standards to provide -compatibility with old scripts. For example, 4k means 4096. +With \fBkb_base=1024\fR (the default), the unit prefixes are opposite +from those specified in the SI and IEC 80000-13 standards to provide +compatibility with old scripts. For example, 4k means 4096. + +For quantities of data, an optional unit of 'B' may be included +(e.g., 'kB' is the same as 'k'). + +The *integer suffix* is not case sensitive (e.g., m/mi mean mebi/mega, +not milli). 'b' and 'B' both mean byte, not bit. -.nf Examples with \fBkb_base=1000\fR: + +.nf 4 KiB: 4096, 4096b, 4096B, 4k, 4kb, 4kB, 4K, 4KB 1 MiB: 1048576, 1m, 1024k 1 MB: 1000000, 1mi, 1000ki @@ -193,8 +276,9 @@ Examples with \fBkb_base=1000\fR: 1 TB: 1000000000, 1ti, 1000mi, 1000000ki .fi -.nf Examples with \fBkb_base=1024\fR (default): + +.nf 4 KiB: 4096, 4096b, 4096B, 4k, 4kb, 4kB, 4K, 4KB 1 MiB: 1048576, 1m, 1024k 1 MB: 1000000, 1mi, 1000ki @@ -202,13 +286,8 @@ Examples with \fBkb_base=1024\fR (default): 1 TB: 1000000000, 1ti, 1000mi, 1000000ki .fi -For quantities of data, an optional unit of 'B' may be included -(e.g., 'kb' is the same as 'k'). - -The integer suffix is not case sensitive (e.g., m/mi mean mebi/mega, -not milli). 'b' and 'B' both mean byte, not bit. - To specify times (units are not case sensitive): + .nf D means days H means hours @@ -218,21 +297,25 @@ ms or msec means milliseconds us or usec means microseconds .fi +If the option accepts an upper and lower range, use a colon ':' or +minus '-' to separate such values. See `irange` parameter type. +If the lower value specified happens to be larger than the upper value +the two values are swapped. .TP .I bool -Boolean: a true or false value. `0' denotes false, `1' denotes true. +Boolean. Usually parsed as an integer, however only defined for +true and false (1 and 0). .TP .I irange -Integer range: a range of integers specified in the format -\fIlower\fR:\fIupper\fR or \fIlower\fR\-\fIupper\fR. \fIlower\fR and -\fIupper\fR may contain a suffix as described above. If an option allows two -sets of ranges, they are separated with a `,' or `/' character. For example: -`8\-8k/8M\-4G'. +Integer range with suffix. Allows value range to be given, such as +1024-4096. A colon may also be used as the separator, e.g. 1k:4k. If the +option allows two sets of ranges, they can be specified with a ',' or '/' +delimiter: 1k-4k/8k-32k. Also see `int` parameter type. .TP .I float_list -List of floating numbers: A list of floating numbers, separated by -a ':' character. -.SS "Parameter List" +A list of floating point numbers, separated by a ':' character. +.SH "JOB DESCRIPTION" +With the above in mind, here follows the complete list of fio job parameters. .TP .BI name \fR=\fPstr May be used to override the job name. On the command line, this parameter @@ -436,6 +519,10 @@ are: .B none Do not pre-allocate space. .TP +.B native +Use a platform's native pre-allocation call but fall back to 'none' behavior if +it fails/is not implemented. +.TP .B posix Pre-allocate via \fBposix_fallocate\fR\|(3). .TP @@ -450,8 +537,9 @@ Backward-compatible alias for 'posix'. .RE .P May not be available on all supported platforms. 'keep' is only -available on Linux. If using ZFS on Solaris this must be set to 'none' -because ZFS doesn't support it. Default: 'posix'. +available on Linux. If using ZFS on Solaris this cannot be set to 'posix' +because ZFS doesn't support it. Default: 'native' if any pre-allocation methods +are available, 'none' if not. .RE .TP .BI fadvise_hint \fR=\fPstr @@ -533,7 +621,7 @@ bs=256k means 256k for reads, writes and trims bs=8k,32k means 8k for reads, 32k for writes and trims bs=8k,32k, means 8k for reads, 32k for writes, and default for trims bs=,8k means default for reads, 8k for writes and trims -bs=,8k, means default for reads, 8k for writes, and default for writes +bs=,8k, means default for reads, 8k for writes, and default for trims .fi .TP .BI blocksize_range \fR=\fPirange[,irange][,irange] "\fR,\fB bsrange" \fR=\fPirange[,irange][,irange] @@ -611,13 +699,20 @@ the remaining zeroed. With this set to some chunk size smaller than the block size, fio can alternate random and zeroed data throughout the IO buffer. .TP .BI buffer_pattern \fR=\fPstr -If set, fio will fill the IO buffers with this pattern. If not set, the contents -of IO buffers is defined by the other options related to buffer contents. The -setting can be any pattern of bytes, and can be prefixed with 0x for hex -values. It may also be a string, where the string must then be wrapped with -"", e.g.: +If set, fio will fill the I/O buffers with this pattern or with the contents +of a file. If not set, the contents of I/O buffers are defined by the other +options related to buffer contents. The setting can be any pattern of bytes, +and can be prefixed with 0x for hex values. It may also be a string, where +the string must then be wrapped with ``""``. Or it may also be a filename, +where the filename must be wrapped with ``''`` in which case the file is +opened and read. Note that not all the file contents will be read if that +would cause the buffers to overflow. So, for example: .RS .RS +\fBbuffer_pattern\fR='filename' +.RS +or +.RE \fBbuffer_pattern\fR="abcd" .RS or @@ -632,7 +727,7 @@ or Also you can combine everything together in any order: .LP .RS -\fBbuffer_pattern\fR=0xdeadface"abcd"-12 +\fBbuffer_pattern\fR=0xdeadface"abcd"-12'filename' .RE .RE .TP @@ -669,8 +764,11 @@ Use a zipfian distribution to decide what file to access. .B pareto Use a pareto distribution to decide what file to access. .TP +.B normal +Use a Gaussian (normal) distribution to decide what file to access. +.TP .B gauss -Use a gaussian (normal) distribution to decide what file to access. +Alias for normal. .RE .P For \fBrandom\fR, \fBroundrobin\fR, and \fBsequential\fR, a postfix can be @@ -904,7 +1002,13 @@ If true, use buffered I/O. This is the opposite of the \fBdirect\fR parameter. Default: true. .TP .BI offset \fR=\fPint -Offset in the file to start I/O. Data before the offset will not be touched. +Start I/O at the provided offset in the file, given as either a fixed size in +bytes or a percentage. If a percentage is given, the next \fBblockalign\fR-ed +offset will be used. Data before the given offset will not be touched. This +effectively caps the file size at (real_size - offset). Can be combined with +\fBsize\fR to constrain the start and end range of the I/O workload. A percentage +can be specified by a number between 1 and 100 followed by '%', for example, +offset=20% to specify 20%. .TP .BI offset_increment \fR=\fPint If this is provided, then the real offset becomes the @@ -991,8 +1095,8 @@ Zipf distribution .B pareto Pareto distribution .TP -.B gauss -Normal (gaussian) distribution +.B normal +Normal (Gaussian) distribution .TP .B zoned Zoned random distribution @@ -1004,8 +1108,8 @@ For \fBpareto\fR, it's the pareto power. Fio includes a test program, genzipf, that can be used visualize what the given input values will yield in terms of hit rates. If you wanted to use \fBzipf\fR with a theta of 1.2, you would use random_distribution=zipf:1.2 as the option. If a non-uniform model is used, -fio will disable use of the random map. For the \fBgauss\fR distribution, a -normal deviation is supplied as a value between 0 and 100. +fio will disable use of the random map. For the \fBnormal\fR distribution, a +normal (Gaussian) deviation is supplied as a value between 0 and 100. .P .RS For a \fBzoned\fR distribution, fio supports specifying percentages of IO @@ -1309,6 +1413,9 @@ Same as \fBmmap\fR, but use huge files as backing. .TP .B mmapshared Same as \fBmmap\fR, but use a MMAP_SHARED mapping. +.TP +.B cudamalloc +Use GPU memory as the buffers for GPUDirect RDMA benchmark. The ioengine must be \fBrdma\fR. .RE .P The amount of memory allocated is the maximum allowed \fBblocksize\fR for the @@ -2147,10 +2254,11 @@ scripted use. A job description (if provided) follows on a new line. Note that the first number in the line is the version number. If the output has to be changed for some reason, this number will be incremented by 1 to signify that -change. The fields are: +change. Numbers in brackets (e.g. "[v3]") indicate which terse version +introduced a field. The fields are: .P .RS -.B terse version, fio version, jobname, groupid, error +.B terse version, fio version [v3], jobname, groupid, error .P Read status: .RS @@ -2174,7 +2282,11 @@ Total latency: .RE Bandwidth: .RS -.B min, max, aggregate percentage of total, mean, standard deviation +.B min, max, aggregate percentage of total, mean, standard deviation, number of samples [v5] +.RE +IOPS [v5]: +.RS +.B min, max, mean, standard deviation, number of samples .RE .RE .P @@ -2200,8 +2312,17 @@ Total latency: .RE Bandwidth: .RS -.B min, max, aggregate percentage of total, mean, standard deviation +.B min, max, aggregate percentage of total, mean, standard deviation, number of samples [v5] .RE +IOPS [v5]: +.RS +.B min, max, mean, standard deviation, number of samples +.RE +.RE +.P +Trim status [all but version 3]: +.RS +Similar to Read/Write status but for trims. .RE .P CPU usage: @@ -2226,7 +2347,7 @@ Milliseconds: .RE .RE .P -Disk utilization (1 for each disk used): +Disk utilization (1 for each disk used) [v3]: .RS .B name, read ios, write ios, read merges, write merges, read ticks, write ticks, read in-queue time, write in-queue time, disk utilization percentage .RE @@ -2238,6 +2359,15 @@ Error Info (dependent on continue_on_error, default off): .P .B text description (if provided in config - appears on newline) .RE +.P +Below is a single line containing short names for each of the fields in +the minimal output v3, separated by semicolons: +.RS +.P +.nf +terse_version_3;fio_version;jobname;groupid;error;read_kb;read_bandwidth;read_iops;read_runtime_ms;read_slat_min;read_slat_max;read_slat_mean;read_slat_dev;read_clat_max;read_clat_min;read_clat_mean;read_clat_dev;read_clat_pct01;read_clat_pct02;read_clat_pct03;read_clat_pct04;read_clat_pct05;read_clat_pct06;read_clat_pct07;read_clat_pct08;read_clat_pct09;read_clat_pct10;read_clat_pct11;read_clat_pct12;read_clat_pct13;read_clat_pct14;read_clat_pct15;read_clat_pct16;read_clat_pct17;read_clat_pct18;read_clat_pct19;read_clat_pct20;read_tlat_min;read_lat_max;read_lat_mean;read_lat_dev;read_bw_min;read_bw_max;read_bw_agg_pct;read_bw_mean;read_bw_dev;write_kb;write_bandwidth;write_iops;write_runtime_ms;write_slat_min;write_slat_max;write_slat_mean;write_slat_dev;write_clat_max;write_clat_min;write_clat_mean;write_clat_dev;write_clat_pct01;write_clat_pct02;write_clat_pct03;write_clat_pct04;write_clat_pct05;write_clat_pct06;write_clat_pct07;write_clat_pct08;write_clat_pct09;write_clat_pct10;write_clat_pct11;write_clat_pct12;write_clat_pct13;write_clat_pct14;write_clat_pct15;write_clat_pct16;write_clat_pct17;write_clat_pct18;write_clat_pct19;write_clat_pct20;write_tlat_min;write_lat_max;write_lat_mean;write_lat_dev;write_bw_min;write_bw_max;write_bw_agg_pct;write_bw_mean;write_bw_dev;cpu_user;cpu_sys;cpu_csw;cpu_mjf;pu_minf;iodepth_1;iodepth_2;iodepth_4;iodepth_8;iodepth_16;iodepth_32;iodepth_64;lat_2us;lat_4us;lat_10us;lat_20us;lat_50us;lat_100us;lat_250us;lat_500us;lat_750us;lat_1000us;lat_2ms;lat_4ms;lat_10ms;lat_20ms;lat_50ms;lat_100ms;lat_250ms;lat_500ms;lat_750ms;lat_1000ms;lat_2000ms;lat_over_2000ms;disk_name;disk_read_iops;disk_write_iops;disk_read_merges;disk_write_merges;disk_read_ticks;write_ticks;disk_queue_time;disk_util +.fi +.RE .SH TRACE FILE FORMAT There are two trace file format that you can encounter. The older (v1) format is unsupported since version 1.20-rc3 (March 2008). It will still be described @@ -2583,7 +2713,10 @@ This man page was written by Aaron Carroll based on documentation by Jens Axboe. .SH "REPORTING BUGS" Report bugs to the \fBfio\fR mailing list . -See \fBREADME\fR. +.br +See \fBREPORTING-BUGS\fR. + +\fBREPORTING-BUGS\fR: http://git.kernel.dk/cgit/fio/plain/REPORTING-BUGS .SH "SEE ALSO" For further documentation see \fBHOWTO\fR and \fBREADME\fR. .br @@ -2591,7 +2724,7 @@ Sample jobfiles are available in the \fBexamples\fR directory. .br These are typically located under /usr/share/doc/fio. -\fBHOWTO\fR: http://git.kernel.dk/?p=fio.git;a=blob_plain;f=HOWTO +\fBHOWTO\fR: http://git.kernel.dk/cgit/fio/plain/HOWTO .br -\fBREADME\fR: http://git.kernel.dk/?p=fio.git;a=blob_plain;f=README +\fBREADME\fR: http://git.kernel.dk/cgit/fio/plain/README .br