X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=fio.1;h=c3916168f253c963337a1201afa29b1ebccc6d1e;hb=3277b7e48e9d3600d4a33a652e8c2a20e59f2f37;hp=f469c46ed798f8521e6747e461a0625853a0c3e4;hpb=24f67d1f97861e57c14baafde0ed2752a102668c;p=fio.git diff --git a/fio.1 b/fio.1 index f469c46e..c3916168 100644 --- a/fio.1 +++ b/fio.1 @@ -348,6 +348,9 @@ us or usec means microseconds .PD .RE .P +`z' suffix specifies that the value is measured in zones. +Value is recalculated once block device's zone size becomes known. +.P If the option accepts an upper and lower range, use a colon ':' or minus '\-' to separate such values. See \fIirange\fR parameter type. If the lower value specified happens to be larger than the upper value @@ -584,6 +587,9 @@ string: .B $jobname The name of the worker thread or process. .TP +.B $clientuid +IP of the fio process when using client/server mode. +.TP .B $jobnum The incremental number of the worker thread or process. .TP @@ -684,7 +690,8 @@ of how that would work. .TP .BI ioscheduler \fR=\fPstr Attempt to switch the device hosting the file to the specified I/O scheduler -before running. +before running. If the file is a pipe, a character device file or if device +hosting the file could not be determined, this option is ignored. .TP .BI create_serialize \fR=\fPbool If true, serialize the file creation for the jobs. This may be handy to @@ -738,12 +745,13 @@ Accepted values are: .RS .TP .B none -The \fBzonerange\fR, \fBzonesize\fR and \fBzoneskip\fR parameters are ignored. +The \fBzonerange\fR, \fBzonesize\fR \fBzonecapacity\fR and \fBzoneskip\fR +parameters are ignored. .TP .B strided I/O happens in a single zone until \fBzonesize\fR bytes have been transferred. After that number of bytes has been transferred processing of the next zone -starts. +starts. The \fBzonecapacity\fR parameter is ignored. .TP .B zbd Zoned block device mode. I/O happens sequentially in each zone, even if random @@ -771,7 +779,15 @@ zoned block device, the specified \fBzonesize\fR must be 0 or equal to the device zone size. For a regular block device or file, the specified \fBzonesize\fR must be at least 512B. .TP -.BI zoneskip \fR=\fPint +.BI zonecapacity \fR=\fPint +For \fBzonemode\fR=zbd, this defines the capacity of a single zone, which is +the accessible area starting from the zone start address. This parameter only +applies when using \fBzonemode\fR=zbd in combination with regular block devices. +If not specified it defaults to the zone size. If the target device is a zoned +block device, the zone capacity is obtained from the device information and this +option is ignored. +.TP +.BI zoneskip \fR=\fPint[z] For \fBzonemode\fR=strided, the number of bytes to skip after \fBzonesize\fR bytes of data have been transferred. @@ -909,10 +925,32 @@ behaves in a similar fashion, except it sends the same offset 8 number of times before generating a new offset. .RE .TP -.BI unified_rw_reporting \fR=\fPbool +.BI unified_rw_reporting \fR=\fPstr Fio normally reports statistics on a per data direction basis, meaning that -reads, writes, and trims are accounted and reported separately. If this -option is set fio sums the results and report them as "mixed" instead. +reads, writes, and trims are accounted and reported separately. This option +determines whether fio reports the results normally, summed together, or as +both options. +Accepted values are: +.RS +.TP +.B none +Normal statistics reporting. +.TP +.B mixed +Statistics are summed per data direction and reported together. +.TP +.B both +Statistics are reported normally, followed by the mixed statistics. +.TP +.B 0 +Backward-compatible alias for \fBnone\fR. +.TP +.B 1 +Backward-compatible alias for \fBmixed\fR. +.TP +.B 2 +Alias for \fBboth\fR. +.RE .TP .BI randrepeat \fR=\fPbool Seed the random number generator used for random I/O patterns in a @@ -1021,7 +1059,7 @@ The values are all relative to each other, and no absolute meaning should be associated with them. .RE .TP -.BI offset \fR=\fPint +.BI offset \fR=\fPint[%|z] 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 generated offset will be aligned to the minimum \fBblocksize\fR or to the value of \fBoffset_align\fR if @@ -1036,7 +1074,7 @@ If set to non-zero value, the byte offset generated by a percentage \fBoffset\fR is aligned upwards to this value. Defaults to 0 meaning that a percentage offset is aligned to the minimum block size. .TP -.BI offset_increment \fR=\fPint +.BI offset_increment \fR=\fPint[%|z] If this is provided, then the real offset becomes `\fBoffset\fR + \fBoffset_increment\fR * thread_number', where the thread number is a counter that starts at 0 and is incremented for each sub-job (i.e. when \fBnumjobs\fR option is @@ -1123,7 +1161,7 @@ first. This may interfere with a given rate setting, if fio is asked to limit reads or writes to a certain rate. If that is the case, then the distribution may be skewed. Default: 50. .TP -.BI random_distribution \fR=\fPstr:float[,str:float][,str:float] +.BI random_distribution \fR=\fPstr:float[:float][,str:float][,str:float] By default, fio will use a completely uniform random distribution when asked to perform random I/O. Sometimes it is useful to skew the distribution in specific ways, ensuring that some parts of the data is more hot than others. @@ -1159,6 +1197,14 @@ option. If a non\-uniform model is used, 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 +The second, optional float is allowed for \fBpareto\fR, \fBzipf\fR and \fBnormal\fR +distributions. It allows to set base of distribution in non-default place, giving +more control over most probable outcome. This value is in range [0-1] which maps linearly to +range of possible random values. +Defaults are: random for \fBpareto\fR and \fBzipf\fR, and 0.5 for \fBnormal\fR. +If you wanted to use \fBzipf\fR with a `theta` of 1.2 centered on 1/4 of allowed value range, +you would use `random_distibution=zipf:1.2:0.25`. +.P For a \fBzoned\fR distribution, fio supports specifying percentages of I/O access that should fall within what range of the file or device. For example, given a criteria of: @@ -1453,9 +1499,31 @@ starting I/O if the platform and file type support it. Defaults to true. This will be ignored if \fBpre_read\fR is also specified for the same job. .TP -.BI sync \fR=\fPbool -Use synchronous I/O for buffered writes. For the majority of I/O engines, -this means using O_SYNC. Default: false. +.BI sync \fR=\fPstr +Whether, and what type, of synchronous I/O to use for writes. The allowed +values are: +.RS +.RS +.TP +.B none +Do not use synchronous IO, the default. +.TP +.B 0 +Same as \fBnone\fR. +.TP +.B sync +Use synchronous file IO. For the majority of I/O engines, +this means using O_SYNC. +.TP +.B 1 +Same as \fBsync\fR. +.TP +.B dsync +Use synchronous data IO. For the majority of I/O engines, +this means using O_DSYNC. +.PD +.RE +.RE .TP .BI iomem \fR=\fPstr "\fR,\fP mem" \fR=\fPstr Fio can use various types of memory as the I/O unit buffer. The allowed @@ -1528,7 +1596,7 @@ Pin the specified amount of memory with \fBmlock\fR\|(2). Can be used to simulate a smaller amount of memory. The amount specified is per worker. .SS "I/O size" .TP -.BI size \fR=\fPint +.BI size \fR=\fPint[%|z] The total size of file I/O for each thread of this job. Fio will run until this many bytes has been transferred, unless runtime is limited by other options (such as \fBruntime\fR, for instance, or increased/decreased by \fBio_size\fR). @@ -1543,7 +1611,7 @@ given, fio will use 20% of the full size of the given files or devices. Can be combined with \fBoffset\fR to constrain the start and end range that I/O will be done within. .TP -.BI io_size \fR=\fPint "\fR,\fB io_limit" \fR=\fPint +.BI io_size \fR=\fPint[%|z] "\fR,\fB io_limit" \fR=\fPint[%|z] Normally fio operates within the region set by \fBsize\fR, which means that the \fBsize\fR option sets both the region and size of I/O to be performed. Sometimes that is not what you want. With this option, it is @@ -1552,7 +1620,8 @@ if \fBsize\fR is set to 20GiB and \fBio_size\fR is set to 5GiB, fio will perform I/O within the first 20GiB but exit when 5GiB have been done. The opposite is also possible \-\- if \fBsize\fR is set to 20GiB, and \fBio_size\fR is set to 40GiB, then fio will do 40GiB of I/O within -the 0..20GiB region. +the 0..20GiB region. Value can be set as percentage: \fBio_size\fR=N%. +In this case \fBio_size\fR multiplies \fBsize\fR= value. .TP .BI filesize \fR=\fPirange(int) Individual file sizes. May be a range, in which case fio will select sizes @@ -1658,17 +1727,21 @@ This engine defines engine specific options. .TP .B cpuio Doesn't transfer any data, but burns CPU cycles according to the -\fBcpuload\fR and \fBcpuchunks\fR options. Setting -\fBcpuload\fR\=85 will cause that job to do nothing but burn 85% -of the CPU. In case of SMP machines, use `numjobs=' -to get desired CPU usage, as the cpuload only loads a -single CPU at the desired rate. A job never finishes unless there is -at least one non-cpuio job. -.TP -.B guasi -The GUASI I/O engine is the Generic Userspace Asynchronous Syscall -Interface approach to async I/O. See \fIhttp://www.xmailserver.org/guasi-lib.html\fR -for more info on GUASI. +\fBcpuload\fR, \fBcpuchunks\fR and \fBcpumode\fR options. +A job never finishes unless there is at least one non-cpuio job. +.RS +.P +.PD 0 +\fBcpuload\fR\=85 will cause that job to do nothing but burn 85% of the CPU. +In case of SMP machines, use \fBnumjobs=\fR\ to get desired CPU usage, +as the cpuload only loads a single CPU at the desired rate. + +.P +\fBcpumode\fR\=qsort replace the default noop instructions loop +by a qsort algorithm to consume more energy. + +.P +.RE .TP .B rdma The RDMA I/O engine supports both RDMA memory semantics @@ -1775,6 +1848,11 @@ Simply do stat() and do no I/O to the file. You need to set 'filesize' and 'nrfiles', so that files will be created. This engine is to measure file lookup and meta data access. .TP +.B filedelete +Simply delete files by unlink() and do no I/O to the file. You need to set 'filesize' +and 'nrfiles', so that files will be created. +This engine is to measure file delete. +.TP .B libpmem Read and write using mmap I/O to a file on a filesystem mounted with DAX on a persistent memory device through the PMDK @@ -1799,6 +1877,17 @@ Read and write iscsi lun with libiscsi. .TP .B nbd Synchronous read and write a Network Block Device (NBD). +.TP +.B libcufile +I/O engine supporting libcufile synchronous access to nvidia-fs and a +GPUDirect Storage-supported filesystem. This engine performs +I/O without transferring buffers between user-space and the kernel, +unless \fBverify\fR is set or \fBcuda_io\fR is \fBposix\fR. \fBiomem\fR must +not be \fBcudamalloc\fR. This ioengine defines engine specific options. +.TP +.B dfs +I/O engine supporting asynchronous read and write operations to the DAOS File +System (DFS) via libdfs. .SS "I/O engine specific parameters" In addition, there are some parameters which are only valid when a specific \fBioengine\fR is in use. These are used identically to normal parameters, @@ -1895,7 +1984,7 @@ The TCP or UDP port to bind to or connect to. If this is used with this will be the starting port number since fio will use a range of ports. .TP -.BI (rdma)port +.BI (rdma, librpma_*)port The port to use for RDMA-CM communication. This should be the same value on the client and the server side. .TP @@ -1904,6 +1993,16 @@ The hostname or IP address to use for TCP, UDP or RDMA-CM based I/O. If the job is a TCP listener or UDP reader, the hostname is not used and must be omitted unless it is a valid UDP multicast address. .TP +.BI (librpma_*)serverip \fR=\fPstr +The IP address to be used for RDMA-CM based I/O. +.TP +.BI (librpma_*_server)direct_write_to_pmem \fR=\fPbool +Set to 1 only when Direct Write to PMem from the remote host is possible. Otherwise, set to 0. +.TP +.BI (librpma_*_server)busy_wait_polling \fR=\fPbool +Set to 0 to wait for completion instead of busy-wait polling completion. +Default: 1. +.TP .BI (netsplice,net)interface \fR=\fPstr The IP address of the network interface used to send or receive UDP multicast. @@ -1998,6 +2097,11 @@ 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 (rados)touch_objects \fR=\fPbool +During initialization, touch (create if do not exist) all objects (files). +Touching all objects affects ceph caches and likely impacts test results. +Enabled by default. +.TP .BI (http)http_host \fR=\fPstr Hostname to connect to. For S3, this could be the bucket name. Default is \fBlocalhost\fR @@ -2063,6 +2167,16 @@ client and the server or in certain loopback configurations. Specify stat system call type to measure lookup/getattr performance. Default is \fBstat\fR for \fBstat\fR\|(2). .TP +.BI (sg)hipri +If this option is set, fio will attempt to use polled IO completions. This +will have a similar effect as (io_uring)hipri. Only SCSI READ and WRITE +commands will have the SGV4_FLAG_HIPRI set (not UNMAP (trim) nor VERIFY). +Older versions of the Linux sg driver that do not support hipri will simply +ignore this flag and do normal IO. The Linux SCSI Low Level Driver (LLD) +that "owns" the device also needs to support hipri (also known as iopoll +and mq_poll). The MegaRAID driver is an example of a SCSI LLD. +Default: clear (0) which does normal (interrupted based) IO. +.TP .BI (sg)readfua \fR=\fPbool With readfua option set to 1, read operations include the force unit access (fua) flag. Default: 0. @@ -2112,7 +2226,50 @@ Example URIs: \fInbd+unix:///?socket=/tmp/socket\fR .TP \fInbds://tlshost/exportname\fR - +.RE +.RE +.TP +.BI (libcufile)gpu_dev_ids\fR=\fPstr +Specify the GPU IDs to use with CUDA. This is a colon-separated list of int. +GPUs are assigned to workers roundrobin. Default is 0. +.TP +.BI (libcufile)cuda_io\fR=\fPstr +Specify the type of I/O to use with CUDA. This option +takes the following values: +.RS +.RS +.TP +.B cufile (default) +Use libcufile and nvidia-fs. This option performs I/O directly +between a GPUDirect Storage filesystem and GPU buffers, +avoiding use of a bounce buffer. If \fBverify\fR is set, +cudaMemcpy is used to copy verification data between RAM and GPU(s). +Verification data is copied from RAM to GPU before a write +and from GPU to RAM after a read. +\fBdirect\fR must be 1. +.TP +.BI posix +Use POSIX to perform I/O with a RAM buffer, and use +cudaMemcpy to transfer data between RAM and the GPU(s). +Data is copied from GPU to RAM before a write and copied +from RAM to GPU after a read. \fBverify\fR does not affect +the use of cudaMemcpy. +.RE +.RE +.TP +.BI (dfs)pool +Specify the UUID of the DAOS pool to connect to. +.TP +.BI (dfs)cont +Specify the UUID of the DAOS DAOS container to open. +.TP +.BI (dfs)chunk_size +Specificy a different chunk size (in bytes) for the dfs file. +Use DAOS container's chunk size by default. +.TP +.BI (dfs)object_class +Specificy a different object class for the dfs file. +Use DAOS container's object class by default. .SS "I/O depth" .TP .BI iodepth \fR=\fPint @@ -2210,7 +2367,7 @@ has a bit of extra overhead, especially for lower queue depth I/O where it can increase latencies. The benefit is that fio can manage submission rates independently of the device completion rates. This avoids skewed latency reporting if I/O gets backed up on the device side (the coordinated omission -problem). +problem). Note that this option cannot reliably be used with async IO engines. .SS "I/O rate" .TP .BI thinktime \fR=\fPtime @@ -2233,6 +2390,12 @@ queue depth setting redundant, since no more than 1 I/O will be queued before we have to complete it and do our \fBthinktime\fR. In other words, this setting effectively caps the queue depth if the latter is larger. .TP +.BI thinktime_blocks_type \fR=\fPstr +Only valid if \fBthinktime\fR is set - control how \fBthinktime_blocks\fR triggers. +The default is `complete', which triggers \fBthinktime\fR when fio completes +\fBthinktime_blocks\fR blocks. If this is set to `issue', then the trigger happens +at the issue side. +.TP .BI rate \fR=\fPint[,int][,int] Cap the bandwidth used by this job. The number is in bytes/sec, the normal suffix rules apply. Comma-separated values may be specified for reads, @@ -2301,10 +2464,11 @@ Used with \fBlatency_target\fR. If false (default), fio will find the highest queue depth that meets \fBlatency_target\fR and exit. If true, fio will continue running and try to meet \fBlatency_target\fR by adjusting queue depth. .TP -.BI max_latency \fR=\fPtime +.BI max_latency \fR=\fPtime[,time][,time] If set, fio will exit the job with an ETIMEDOUT error if it exceeds this maximum latency. When the unit is omitted, the value is interpreted in -microseconds. +microseconds. Comma-separated values may be specified for reads, writes, +and trims as described in \fBblocksize\fR. .TP .BI rate_cycle \fR=\fPint Average bandwidth for \fBrate\fR and \fBrate_min\fR over this number @@ -2327,7 +2491,9 @@ replay, the file needs to be turned into a blkparse binary data file first You can specify a number of files by separating the names with a ':' character. See the \fBfilename\fR option for information on how to escape ':' characters within the file names. These files will be sequentially assigned to -job clones created by \fBnumjobs\fR. +job clones created by \fBnumjobs\fR. '-' is a reserved name, meaning read from +stdin, notably if \fBfilename\fR is set to '-' which means stdin as well, +then this flag can't be set to '-'. .TP .BI read_iolog_chunked \fR=\fPbool Determines how iolog is read. If false (default) entire \fBread_iolog\fR will @@ -2538,27 +2704,25 @@ The ID of the flow. If not specified, it defaults to being a global flow. See \fBflow\fR. .TP .BI flow \fR=\fPint -Weight in token-based flow control. If this value is used, then there is -a 'flow counter' which is used to regulate the proportion of activity between -two or more jobs. Fio attempts to keep this flow counter near zero. The -\fBflow\fR parameter stands for how much should be added or subtracted to the -flow counter on each iteration of the main I/O loop. That is, if one job has -`flow=8' and another job has `flow=\-1', then there will be a roughly 1:8 -ratio in how much one runs vs the other. -.TP -.BI flow_watermark \fR=\fPint -The maximum value that the absolute value of the flow counter is allowed to -reach before the job must wait for a lower value of the counter. +Weight in token-based flow control. If this value is used, +then fio regulates the activity between two or more jobs +sharing the same flow_id. +Fio attempts to keep each job activity proportional to other jobs' activities +in the same flow_id group, with respect to requested weight per job. +That is, if one job has `flow=3', another job has `flow=2' +and another with `flow=1`, then there will be a roughly 3:2:1 ratio +in how much one runs vs the others. .TP .BI flow_sleep \fR=\fPint -The period of time, in microseconds, to wait after the flow watermark has -been exceeded before retrying operations. +The period of time, in microseconds, to wait after the flow counter +has exceeded its proportion before retrying operations. .TP .BI stonewall "\fR,\fB 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, see -\fBgroup_reporting\fR. +\fBgroup_reporting\fR. Optionally you can use `stonewall=0` to disable or +`stonewall=1` to enable it. .TP .BI exitall By default, fio will continue running all other jobs when one job finishes. @@ -2566,15 +2730,27 @@ Sometimes this is not the desired action. Setting \fBexitall\fR will instead make fio terminate all jobs in the same group, as soon as one job of that group finishes. .TP -.BI exit_what +.BI exit_what \fR=\fPstr By default, fio will continue running all other jobs when one job finishes. -Sometimes this is not the desired action. Setting \fBexit_all\fR will instead +Sometimes this is not the desired action. Setting \fBexitall\fR will instead make fio terminate all jobs in the same group. The option \fBexit_what\fR -allows to control which jobs get terminated when \fBexitall\fR is enabled. The -default is \fBgroup\fR and does not change the behaviour of \fBexitall\fR. The -setting \fBall\fR terminates all jobs. The setting \fBstonewall\fR terminates -all currently running jobs across all groups and continues execution with the -next stonewalled group. +allows you to control which jobs get terminated when \fBexitall\fR is enabled. +The default value is \fBgroup\fR. +The allowed values are: +.RS +.RS +.TP +.B all +terminates all jobs. +.TP +.B group +is the default and does not change the behaviour of \fBexitall\fR. +.TP +.B stonewall +terminates all currently running jobs across all groups and continues +execution with the next stonewalled group. +.RE +.RE .TP .BI exec_prerun \fR=\fPstr Before running this job, issue the command specified through @@ -3603,7 +3779,7 @@ Below is a single line containing short names for each of the fields in the minimal output v3, separated by semicolons: .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_min;read_clat_max;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_min;write_clat_max;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;cpu_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 + terse_version_3;fio_version;jobname;groupid;error;read_kb;read_bandwidth_kb;read_iops;read_runtime_ms;read_slat_min_us;read_slat_max_us;read_slat_mean_us;read_slat_dev_us;read_clat_min_us;read_clat_max_us;read_clat_mean_us;read_clat_dev_us;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_us;read_lat_max_us;read_lat_mean_us;read_lat_dev_us;read_bw_min_kb;read_bw_max_kb;read_bw_agg_pct;read_bw_mean_kb;read_bw_dev_kb;write_kb;write_bandwidth_kb;write_iops;write_runtime_ms;write_slat_min_us;write_slat_max_us;write_slat_mean_us;write_slat_dev_us;write_clat_min_us;write_clat_max_us;write_clat_mean_us;write_clat_dev_us;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_us;write_lat_max_us;write_lat_mean_us;write_lat_dev_us;write_bw_min_kb;write_bw_max_kb;write_bw_agg_pct;write_bw_mean_kb;write_bw_dev_kb;cpu_user;cpu_sys;cpu_csw;cpu_mjf;cpu_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 .P In client/server mode terse output differs from what appears when jobs are run @@ -3863,7 +4039,8 @@ Fio supports a variety of log file formats, for logging latencies, bandwidth, and IOPS. The logs share a common format, which looks like this: .RS .P -time (msec), value, data direction, block size (bytes), offset (bytes) +time (msec), value, data direction, block size (bytes), offset (bytes), +command priority .RE .P `Time' for the log entry is always in milliseconds. The `value' logged depends @@ -3897,6 +4074,9 @@ The entry's `block size' is always in bytes. The `offset' is the position in byt from the start of the file for that particular I/O. The logging of the offset can be toggled with \fBlog_offset\fR. .P +`Command priority` is 0 for normal priority and 1 for high priority. This is controlled +by the ioengine specific \fBcmdprio_percentage\fR. +.P 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