X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=fio.1;h=10ff4b776a10c58d5692f6ea175296b1d7482fed;hp=4ae0a5c860898d44376fd18c5403ed7c0c021a34;hb=87c27b45f8d50720d7a9f12abc7e83d0a7463021;hpb=f7fa2653589f9ecf0d3d106286f17620bcf32de0 diff --git a/fio.1 b/fio.1 index 4ae0a5c8..10ff4b77 100644 --- a/fio.1 +++ b/fio.1 @@ -187,15 +187,31 @@ block sizes for exact control of the issued IO for a job that has mixed block sizes. The format of the option is bssplit=blocksize/percentage, optionally adding as many definitions as needed seperated by a colon. Example: bssplit=4k/10:64k/50:32k/40 would issue 50% 64k blocks, 10% 4k -blocks and 40% 32k blocks. +blocks and 40% 32k blocks. \fBbssplit\fR also supports giving separate +splits to reads and writes. The format is identical to what the +\fBbs\fR option accepts, the read and write parts are separated with a +comma. .TP .B blocksize_unaligned\fR,\fP bs_unaligned If set, any size in \fBblocksize_range\fR may be used. This typically won't work with direct I/O, as that normally requires sector alignment. .TP +.BI blockalign \fR=\fPint[,int] "\fR,\fB ba" \fR=\fPint[,int] +At what boundary to align random IO offsets. Defaults to the same as +'blocksize' the minimum blocksize given. Minimum alignment is typically 512b +for using direct IO, though it usually depends on the hardware block size. +This option is mutually exclusive with using a random map for files, so it +will turn off that option. +.TP .B zero_buffers Initialise buffers with all zeros. Default: fill buffers with random data. .TP +.B refill_buffers +If this option is given, fio will refill the IO buffers on every submit. The +default is to only fill it at init time and reuse that data. Only makes sense +if zero_buffers isn't specified, naturally. If data verification is enabled, +refill_buffers is also automatically enabled. +.TP .BI nrfiles \fR=\fPint Number of files to use for this job. Default: 1. .TP @@ -212,6 +228,8 @@ Choose a file at random .TP .B roundrobin Round robin over open files (default). +.B sequential +Do each file in the set sequentially. .RE .P The number of I/Os to issue before switching a new file can be specified by @@ -393,6 +411,13 @@ If given, run for the specified \fBruntime\fR duration even if the files are completely read or written. The same workload will be repeated as many times as \fBruntime\fR allows. .TP +.BI ramp_time \fR=\fPint +If set, fio will run the specified workload for this amount of time before +logging any performance numbers. Useful for letting performance settle before +logging results, thus minimizing the runtime required for stable results. Note +that the ramp_time is considered lead in time for a job, thus it will increase +the total runtime if a special timeout or runtime is specified. +.TP .BI invalidate \fR=\fPbool Invalidate buffer-cache for the file prior to starting I/O. Default: true. .TP @@ -445,6 +470,9 @@ If true, serialize file creation for the jobs. Default: true. .BI create_fsync \fR=\fPbool \fIfsync\fR\|(2) data file after creation. Default: true. .TP +.BI create_on_open \fR=\fPbool +If true, the files are not created until they are opened for IO by the job. +.TP .BI unlink \fR=\fPbool Unlink job files when done. Default: false. .TP @@ -529,11 +557,29 @@ Write the issued I/O patterns to the specified file. Replay the I/O patterns contained in the specified file generated by \fBwrite_iolog\fR, or may be a \fBblktrace\fR binary file. .TP -.B write_bw_log -If given, write bandwidth logs of the jobs in this file. +.B write_bw_log \fR=\fPstr +If given, write a bandwidth log of the jobs in this job file. Can be used to +store data of the bandwidth of the jobs in their lifetime. The included +fio_generate_plots script uses gnuplot to turn these text files into nice +graphs. See \fBwrite_log_log\fR for behaviour of given filename. For this +option, the postfix is _bw.log. .TP .B write_lat_log -Same as \fBwrite_bw_log\fR, but writes I/O completion latencies. +Same as \fBwrite_bw_log\fR, but writes I/O completion latencies. If no +filename is given with this option, the default filename of "jobname_type.log" +is used. Even if the filename is given, fio will still append the type of log. +.TP +.B disable_clat \fR=\fPbool +Disable measurements of completion latency numbers. Useful only for cutting +back the number of calls to gettimeofday, as that does impact performance at +really high IOPS rates. Note that to really get rid of a large amount of these +calls, this option must be used with disable_slat and disable_bw as well. +.TP +.B disable_slat \fR=\fPbool +Disable measurements of submission latency numbers. See \fBdisable_clat\fR. +.TP +.B disable_bw_measurement \fR=\fPbool +Disable measurements of throughput/bandwidth numbers. See \fBdisable_clat\fR. .TP .BI lockmem \fR=\fPint Pin the specified amount of memory with \fBmlock\fR\|(2). Can be used to @@ -558,6 +604,22 @@ given time in milliseconds. .TP .BI disk_util \fR=\fPbool Generate disk utilization statistics if the platform supports it. Default: true. +.TP +.BI gtod_reduce \fR=\fPbool +Enable all of the gettimeofday() reducing options (disable_clat, disable_slat, +disable_bw) plus reduce precision of the timeout somewhat to really shrink the +gettimeofday() call count. With this option enabled, we only do about 0.4% of +the gtod() calls we would have done if all time keeping was enabled. +.TP +.BI gtod_cpu \fR=\fPint +Sometimes it's cheaper to dedicate a single thread of execution to just getting +the current time. Fio (and databases, for instance) are very intensive on +gettimeofday() calls. With this option, you can set one CPU aside for doing +nothing but logging current time to a shared memory location. Then the other +threads/processes that run IO workloads need only copy that segment, instead of +entering the kernel with a gettimeofday() call. The CPU set aside for doing +these time calls will be excluded from other uses. Fio will manually clear it +from the CPU mask of other jobs. .SH OUTPUT While running, \fBfio\fR will display the status of the created jobs. For example: