X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=fio.1;h=73a0422965d9c34a21868c6b475b67e05e1b9bcc;hp=c744d1add10f869284127b0261873404ebe2c098;hb=31b78ecd1fb6b755d51e3a17031819adc5891bc4;hpb=4027b2a142c01869a913c8c0654e3392ef1d0489 diff --git a/fio.1 b/fio.1 index c744d1ad..73a04229 100644 --- a/fio.1 +++ b/fio.1 @@ -168,7 +168,8 @@ Set this \fIcommand\fR as local trigger. Set this \fIcommand\fR as remote trigger. .TP .BI \-\-aux\-path \fR=\fPpath -Use this \fIpath\fR for fio state generated files. +Use the directory specified by \fIpath\fP for generated state files instead +of the current working directory. .SH "JOB FILE FORMAT" 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 @@ -523,12 +524,15 @@ separating the names with a ':' character. These directories will be assigned equally distributed to job clones created by \fBnumjobs\fR as long as they are using generated filenames. If specific \fBfilename\fR(s) are set fio will use the first listed directory, and thereby matching the -\fBfilename\fR semantic which generates a file each clone if not specified, but -let all clones use the same if set. +\fBfilename\fR semantic (which generates a file for each clone if not +specified, but lets all clones use the same file if set). .RS .P -See the \fBfilename\fR option for information on how to escape ':' and '\' +See the \fBfilename\fR option for information on how to escape ':' and '\\' characters within the directory path itself. +.P +Note: To control the directory fio will use for internal state files +use \fB\-\-aux\-path\fR. .RE .TP .BI filename \fR=\fPstr @@ -545,13 +549,13 @@ by this option will be \fBsize\fR divided by number of files unless an explicit size is specified by \fBfilesize\fR. .RS .P -Each colon and backslash in the wanted path must be escaped with a '\' +Each colon and backslash in the wanted path must be escaped with a '\\' character. For instance, if the path is `/dev/dsk/foo@3,0:c' then you would use `filename=/dev/dsk/foo@3,0\\:c' and if the path is -`F:\\\\filename' then you would use `filename=F\\:\\\\filename'. +`F:\\filename' then you would use `filename=F\\:\\\\filename'. .P -On Windows, disk devices are accessed as `\\\\\\\\.\\\\PhysicalDrive0' for -the first device, `\\\\\\\\.\\\\PhysicalDrive1' for the second etc. +On Windows, disk devices are accessed as `\\\\.\\PhysicalDrive0' for +the first device, `\\\\.\\PhysicalDrive1' for the second etc. Note: Windows and FreeBSD prevent write access to areas of the disk containing in\-use data (e.g. filesystems). .P @@ -720,15 +724,22 @@ false. .BI unlink_each_loop \fR=\fPbool Unlink job files after each iteration or loop. Default: false. .TP -.BI zonesize \fR=\fPint -Divide a file into zones of the specified size. See \fBzoneskip\fR. +Fio supports strided data access. After having read \fBzonesize\fR bytes from an area that is \fBzonerange\fR bytes big, \fBzoneskip\fR bytes are skipped. .TP .BI zonerange \fR=\fPint -Give size of an I/O zone. See \fBzoneskip\fR. +Size of a single zone in which I/O occurs. +.TP +.BI zonesize \fR=\fPint +Number of bytes to transfer before skipping \fBzoneskip\fR bytes. If this +parameter is smaller than \fBzonerange\fR then only a fraction of each zone +with \fBzonerange\fR bytes will be accessed. If this parameter is larger than +\fBzonerange\fR then each zone will be accessed multiple times before skipping +to the next zone. .TP .BI zoneskip \fR=\fPint -Skip the specified number of bytes when \fBzonesize\fR data has been -read. The two zone options can be used to only do I/O on zones of a file. +Skip the specified number of bytes after \fBzonesize\fR bytes of data have been +transferred. + .SS "I/O type" .TP .BI direct \fR=\fPbool @@ -757,7 +768,7 @@ Sequential reads. Sequential writes. .TP .B trim -Sequential trims (Linux block devices only). +Sequential trims (Linux block devices and SCSI character devices only). .TP .B randread Random reads. @@ -766,7 +777,7 @@ Random reads. Random writes. .TP .B randtrim -Random trims (Linux block devices only). +Random trims (Linux block devices and SCSI character devices only). .TP .B rw,readwrite Sequential mixed reads and writes. @@ -1120,7 +1131,9 @@ at past I/O history. This means that some blocks may not be read or written, and that some blocks may be read/written more than once. If this option is used with \fBverify\fR and multiple blocksizes (via \fBbsrange\fR), only intact blocks are verified, i.e., partially\-overwritten blocks are -ignored. +ignored. With an async I/O engine and an I/O depth > 1, it is possible for +the same block to be overwritten, which can cause verification errors. Either +do not use norandommap in this case, or also use the lfsr random generator. .TP .BI softrandommap \fR=\fPbool See \fBnorandommap\fR. If fio runs with the random block map enabled and @@ -1522,7 +1535,8 @@ SCSI generic sg v3 I/O. May either be synchronous using the SG_IO ioctl, or if the target is an sg character device we use \fBread\fR\|(2) and \fBwrite\fR\|(2) for asynchronous I/O. Requires \fBfilename\fR option to specify either block or -character devices. The sg engine includes engine specific options. +character devices. This engine supports trim operations. The +sg engine includes engine specific options. .TP .B null Doesn't transfer any data, just pretends to. This is mainly used to @@ -1594,6 +1608,15 @@ I/O engine supporting direct access to Ceph Rados Block Devices (RBD) via librbd without the need to use the kernel rbd driver. This ioengine defines engine specific options. .TP +.B http +I/O engine supporting GET/PUT requests over HTTP(S) with libcurl to +a WebDAV or S3 endpoint. This ioengine defines engine specific options. + +This engine only supports direct IO of iodepth=1; you need to scale this +via numjobs. blocksize defines the size of the objects to be created. + +TRIM is translated to object deletion. +.TP .B gfapi Using GlusterFS libgfapi sync interface to direct access to GlusterFS volumes without having to go through FUSE. This ioengine @@ -1796,6 +1819,43 @@ by default. Poll store instead of waiting for completion. Usually this provides better throughput at cost of higher(up to 100%) CPU utilization. .TP +.BI (http)http_host \fR=\fPstr +Hostname to connect to. For S3, this could be the bucket name. Default +is \fBlocalhost\fR +.TP +.BI (http)http_user \fR=\fPstr +Username for HTTP authentication. +.TP +.BI (http)http_pass \fR=\fPstr +Password for HTTP authentication. +.TP +.BI (http)https \fR=\fPstr +Whether to use HTTPS instead of plain HTTP. \fRon\fP enables HTTPS; +\fRinsecure\fP will enable HTTPS, but disable SSL peer verification (use +with caution!). Default is \fBoff\fR. +.TP +.BI (http)http_mode \fR=\fPstr +Which HTTP access mode to use: webdav, swift, or s3. Default is +\fBwebdav\fR. +.TP +.BI (http)http_s3_region \fR=\fPstr +The S3 region/zone to include in the request. Default is \fBus-east-1\fR. +.TP +.BI (http)http_s3_key \fR=\fPstr +The S3 secret key. +.TP +.BI (http)http_s3_keyid \fR=\fPstr +The S3 key/access id. +.TP +.BI (http)http_swift_auth_token \fR=\fPstr +The Swift auth token. See the example configuration file on how to +retrieve this. +.TP +.BI (http)http_verbose \fR=\fPint +Enable verbose requests from libcurl. Useful for debugging. 1 turns on +verbose logging from libcurl, 2 additionally enables HTTP IO tracing. +Default is \fB0\fR +.TP .BI (mtd)skip_bad \fR=\fPbool Skip operations against known bad blocks. .TP @@ -2054,6 +2114,11 @@ to replay a workload captured by blktrace. See replay, the file needs to be turned into a blkparse binary data file first (`blkparse \-o /dev/null \-d file_for_fio.bin'). .TP +.BI read_iolog_chunked \fR=\fPbool +Determines how iolog is read. If false (default) entire \fBread_iolog\fR will +be read at once. If selected true, input from iolog will be read gradually. +Useful when iolog is very large, or it is generated. +.TP .BI replay_no_stall \fR=\fPbool When replaying I/O with \fBread_iolog\fR the default behavior is to attempt to respect the timestamps within the log and replay them with the @@ -2370,6 +2435,11 @@ that the written data is also correctly read back. If the data direction given is a read or random read, fio will assume that it should verify a previously written file. If the data direction includes any form of write, the verify will be of the newly written data. +.P +To avoid false verification errors, do not use the norandommap option when +verifying data with async I/O engines and I/O depths > 1. Or use the +norandommap and the lfsr random generator together to avoid writing to the +same offset with muliple outstanding I/Os. .RE .TP .BI verify_offset \fR=\fPint @@ -2595,9 +2665,11 @@ within the file. .TP .BI write_iops_log \fR=\fPstr Same as \fBwrite_bw_log\fR, but writes an IOPS file (e.g. -`name_iops.x.log') instead. See \fBwrite_bw_log\fR for -details about the filename format and the \fBLOG FILE FORMATS\fR section for how data -is structured within the file. +`name_iops.x.log`) instead. Because fio defaults to individual +I/O logging, the value entry in the IOPS log will be 1 unless windowed +logging (see \fBlog_avg_msec\fR) has been enabled. See +\fBwrite_bw_log\fR for details about the filename format and \fBLOG +FILE FORMATS\fR for how data is structured within the file. .TP .BI log_avg_msec \fR=\fPint By default, fio will log an entry in the iops, latency, or bw log for every @@ -3514,17 +3586,16 @@ I/O is a WRITE I/O is a TRIM .RE .P -The entry's `block size' is always in bytes. The `offset' is the offset, in bytes, -from the start of the file, for that particular I/O. The logging of the offset can be +The entry's `block size' is always in bytes. The `offset' is the position in bytes +from the start of the file for that particular I/O. The logging of the offset can be toggled with \fBlog_offset\fR. .P -Fio defaults to logging every individual I/O. When IOPS are logged for individual -I/Os the `value' entry will always be 1. If windowed logging is enabled through -\fBlog_avg_msec\fR, fio logs the average values over the specified period of time. -If windowed logging is enabled and \fBlog_max_value\fR is set, then fio logs -maximum values in that window instead of averages. Since `data direction', `block size' -and `offset' are per\-I/O values, if windowed logging is enabled they -aren't applicable and will be 0. +Fio defaults to logging every individual I/O but when windowed logging is set +through \fBlog_avg_msec\fR, either the average (by default) or the maximum +(\fBlog_max_value\fR is set) `value' seen over the specified period of time +is recorded. Each `data direction' seen within the window period will aggregate +its values in a separate row. Further, when using windowed logging the `block +size' and `offset' entries will always contain 0. .SH CLIENT / SERVER Normally fio is invoked as a stand\-alone application on the machine where the I/O workload should be generated. However, the backend and frontend of fio can