This plugin executes the fio workload with a given input schema defined in a yaml file.
Note
Not all Fio parameters are currently implemented. Please review the schema documentation below.
The input structure (YAML or JSON) is a near-match to a standard fio job file. A list of
jobs
is provided, with each item requiring a name
, which is equivalent to a fio job
file section name, and a params
object with key-value pairs that match job parameters
from an fio job file.
For example, a fio job file like this:
[global]
size=2G
direct=1
blocksize_range=4k-4096k
runtime=60
time_based=1
stonewall=1
[write]
readwrite=write
[read]
readwrite=read
Would look like this as an Arcaflow fio plugin input file:
jobs:
- name: global
params:
size: 2G
direct: 1
blocksize_range: 4k-4096k
runtime: 60
time_based: 1
stonewall: 1
- name: write
params:
readwrite: write
- name: read
params:
readwrite: read
Get a maintained build from quay.io/arcalot/arcaflow-plugin-fio, or build the container locally:
podman build . -t arcaflow-plugin-fio
Run with the provided example input:
podman run -i --rm arcaflow-plugin-fio -f - < fixtures/poisson-rate-submission_input.yaml
run an fio workload
Type: | scope | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Root object: | FioInput | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Properties | cleanup (
|
Name: | Cleanup |
---|---|
Description: | Cleanup temporary files created during execution. |
Required: | No |
Default (JSON encoded): |
|
Type: | bool |
jobs (list[reference[FioJob]
]
)
reference[FioJob]
]Name: | Fio Jobs List | ||||
---|---|---|---|---|---|
Description: | List of jobs for fio to run. | ||||
Required: | Yes | ||||
Type: | list[ | ||||
List items
|
Objects
FioInput (object
)
Type: | object | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Properties | cleanup (
|
Name: | Cleanup |
---|---|
Description: | Cleanup temporary files created during execution. |
Required: | No |
Default (JSON encoded): |
|
Type: | bool |
jobs (list[reference[FioJob]
]
)
reference[FioJob]
]Name: | Fio Jobs List | ||||
---|---|---|---|---|---|
Description: | List of jobs for fio to run. | ||||
Required: | Yes | ||||
Type: | list[ | ||||
List items
|
FioJob (object
)
Type: | object | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Properties | name (
|
Name: | Job Name |
---|---|
Description: | User-defined ASCII name of the job. |
Required: | Yes |
Type: | string |
params (reference[JobParams]
)
Name: | Fio Job Parameters |
---|---|
Description: | Parameters for the fio job. |
Required: | Yes |
Type: | reference[JobParams] |
Referenced object: | JobParams |
JobParams (object
)
Type: | object | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Properties | blocksize (
|
Name: | Block Size |
---|---|
Description: | Block size in bytes used for I/O operations. A single value applies to reads, writes, and trims. Comma-separated values may be specified for reads, writes, and trims. A value not terminated in a comma applies to subsequent types. Defaults to 4096. |
Required: | No |
Type: | string |
Must match pattern: | ^(?:0x[0-9a-fA-F]+|\d+(?:k|kb|ki|kib|m|mb|mi|mib|g|gb|gi|gib|t|tb|ti|tib|p|pb|pi|pib)?)(?:,(?:0x[0-9a-fA-F]+|\d+(?:k|kb|ki|kib|m|mb|mi|mib|g|gb|gi|gib|t|tb|ti|tib|p|pb|pi|pib)?)){0,2}$ |
blocksize_range (string
)
Name: | Block Size Range |
---|---|
Description: | A range of block sizes in bytes for I/O operations. The issued I/O operation will always be a multiple of the minimum size, unless blocksize_unaligned is set. Comma-separated ranges may be specified for reads, writes, and trims as described in blocksize. A range is not used by default. |
Required: | No |
Type: | string |
Must match pattern: | ^(?:0x[0-9a-fA-F]+|\d+(?:k|kb|ki|kib|m|mb|mi|mib|g|gb|gi|gib|t|tb|ti|tib|p|pb|pi|pib)?)-(?:0x[0-9a-fA-F]+|\d+(?:k|kb|ki|kib|m|mb|mi|mib|g|gb|gi|gib|t|tb|ti|tib|p|pb|pi|pib)?)(?:,(?:0x[0-9a-fA-F]+|\d+(?:k|kb|ki|kib|m|mb|mi|mib|g|gb|gi|gib|t|tb|ti|tib|p|pb|pi|pib)?)-(?:0x[0-9a-fA-F]+|\d+(?:k|kb|ki|kib|m|mb|mi|mib|g|gb|gi|gib|t|tb|ti|tib|p|pb|pi|pib)?)){0,2}$ |
buffered (bool
)
Name: | Buffered |
---|---|
Description: | Use buffered I/O. This is the opposite of the direct option and defaults to True. |
Required: | No |
Type: | bool |
create_on_open (bool
)
Name: | Create Files on Open |
---|---|
Description: | Don't pre-create files but allow the job's open() to create a file when it's time to do I/O. Defaults to false. |
Required: | No |
Type: | bool |
direct (bool
)
Name: | Direct I/O |
---|---|
Description: | Use non-buffered I/O. This is usually O_DIRECT. Note that OpenBSD and ZFS on Solaris don't support direct I/O. On Windows the synchronous ioengines don't support direct I/O. This is the opposite of the buffered option and defaults to False. |
Required: | No |
Type: | bool |
directory (string
)
Name: | Job Directory |
---|---|
Description: | Prefix filenames with this directory. Used to place files in a different location than './'. You can specify a number of directories by separating the names with a ':' character. These directories will be assigned equally distributed to job clones created by numjobs as long as they are using generated filenames. If specific filename(s) are set fio will use the first listed directory, and thereby matching the filename semantic (which generates a file for each clone if not specified, but lets all clones use the same file if set). Default is the current directory. |
Required: | No |
Type: | string |
Must match pattern: | ^[^:]+(?::[^:]+)*$ |
filename (string
)
Name: | File Name |
---|---|
Description: | Fio normally makes up a filename based on the job name, thread number, and file number. If you want to share files between threads in a job or several jobs with fixed file paths, specify a filename for each of them to override the default. If the ioengine is file based, you can specify a number of files by separating the names with a ':' colon. So if you wanted a job to open '/dev/sda' and '/dev/sdb' as the two working files, you would use 'filename=/dev/sda:/dev/sdb'. This also means that whenever this option is specified, nrfiles is ignored. The size of regular files specified by this option will be size divided by number of files unless an explicit size is specified by filesize. |
Required: | No |
Type: | string |
Must match pattern: | ^[^:]+(?::[^:]+)*$ |
filesize (string
)
Name: | File Size |
---|---|
Description: | Individual file sizes. May be a range, in which case fio will select sizes for files at random within the given range. If not given, each created file is the same size. This option overrides size in terms of file size, i.e. size becomes merely the default for io_size (and has no effect at all if io_size is set explicitly). |
Required: | No |
Type: | string |
Must match pattern: | ^(?:0x[0-9a-fA-F]+|\d+(?:k|kb|ki|kib|m|mb|mi|mib|g|gb|gi|gib|t|tb|ti|tib|p|pb|pi|pib)?)-(?:0x[0-9a-fA-F]+|\d+(?:k|kb|ki|kib|m|mb|mi|mib|g|gb|gi|gib|t|tb|ti|tib|p|pb|pi|pib)?)$ |
io_size (string
)
Name: | I/O Size |
---|---|
Description: | Normally fio operates within the region set by size, which means that the size 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 possible to define just the amount of I/O that fio should do. For instance, if size is set to 20GiB and io_size 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 size is set to 20GiB, and io_size is set to 40GiB, then fio will do 40GiB of I/O within the 0..20GiB region. Value can be set as percentage: io_size=N%. In this case io_size multiplies 'size' value. |
Required: | No |
Type: | string |
Must match pattern: | ^(?:0x[0-9a-fA-F]+|\d+(?:k|kb|ki|kib|m|mb|mi|mib|g|gb|gi|gib|t|tb|ti|tib|p|pb|pi|pib)?|[1-9][0-9]?%|100%)$ |
io_submit_mode (enum[string]
)
Name: | IO Submit Mode |
---|---|
Description: | Controls how fio submits the I/O to the I/O engine. The default is 'inline', which means that the fio job threads submit and reap I/O directly. If set to 'offload', the job threads will offload I/O submission to a dedicated pool of I/O threads. This requires some coordination and thus 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). Note that this option cannot reliably be used with async IO engines. |
Required: | No |
Type: | enum[string] |
Values
|
iodepth (int
)
Name: | IO Depth |
---|---|
Description: | Number of I/O operations to keep in flight against the file. Note that increasing iodepth beyond 1 will not affect synchronous ioengines (except for small degrees when verify_async is in use). Even async engines may impose OS restrictions causing the desired depth not to be achieved. This may happen on Linux when using libaio and not setting 'direct=1', since buffered I/O is not async on that OS. Keep an eye on the I/O depth distribution in the fio output to verify that the achieved depth is as expected. Default is 1. |
Required: | No |
Type: | int |
Minimum: | 1 |
ioengine (enum[string]
)
Name: | IO Engine |
---|---|
Description: | Defines how the job issues I/O to the file. Default is sync. |
Required: | No |
Type: | enum[string] |
Values
|
kb_base (enum[int]
)
Name: | Units Base |
---|---|
Description: | Select the interpretation of unit prefixes in input parameters. Specifying '1000' indicates that the inputs comply with IEC 80000-13 and the International System of Units (SI), that is units with IEC prefixes (e.g., KiB) use power-of-2 multipliers and units with SI prefixes (e.g., KB) use power-of-10 multipliers. Specifying '1024' indicates the reverse, that units with SI prefixes (e.g., KB) use power-of-2 multipliers and values with IEC prefixes (e.g., KiB) use power-of-10 multipliers. The default is '1024'. |
Required: | No |
Type: | enum[int] |
Values
|
loops (int
)
Name: | Number of Job Loops |
---|---|
Description: | Run the specified number of iterations of this job. Used to repeat the same workload a given number of times. Default is 1. |
Required: | No |
Type: | int |
nrfiles (int
)
Name: | Number of Files |
---|---|
Description: | Number of files to use for this job. The size of files will be size divided by this unless explicit size is specified by filesize. Files are created for each thread separately, and each file will have a file number within its name by default, as explained in filename section. Default is 1. |
Required: | No |
Type: | int |
Minimum: | 1 |
numjobs (int
)
Name: | Number of Job Clones |
---|---|
Description: | Create the specified number of clones of this job. Each clone of job is spawned as an independent thread or process. May be used to set up a larger number of threads/processes doing the same thing. Each thread is reported separately. Default is 1. |
Required: | No |
Type: | int |
openfiles (int
)
Name: | Concurrent Open Files |
---|---|
Description: | Number of files to keep open at the same time. Defaults to the same as nrfiles, but can be set smaller to limit the number simultaneous opens. |
Required: | No |
Type: | int |
Minimum: | 1 |
pre_read (bool
)
Name: | Pre-Read Files |
---|---|
Description: | Files will be pre-read into memory before starting the given I/O operation. This will also clear the invalidate flag, since it is pointless to pre-read and then drop the cache. This will only work for I/O engines that are seek-able, since they allow you to read the same data multiple times. Thus it will not work on non-seekable I/O engines (e.g. network, splice). Defaults to false. |
Required: | No |
Type: | bool |
ramp_time (string
)
Name: | Job Ramp Time |
---|---|
Description: | 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. When the unit is omitted, the value is given in seconds. Default is 0. |
Required: | No |
Type: | string |
Must match pattern: | ^[0-9]+(?:d|h|m|s|ms|us)?$ |
rate_iops (string
)
Name: | IOPS Cap |
---|---|
Description: | 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. Comma-separated values may be specified for reads, writes, and trims as described in blocksize. |
Required: | No |
Type: | string |
Must match pattern: | ^(?:0x[0-9a-fA-F]+|\d+(?:k|kb|ki|kib|m|mb|mi|mib|g|gb|gi|gib|t|tb|ti|tib|p|pb|pi|pib)?)(?:,(?:0x[0-9a-fA-F]+|\d+(?:k|kb|ki|kib|m|mb|mi|mib|g|gb|gi|gib|t|tb|ti|tib|p|pb|pi|pib)?)){0,2}$ |
rate_process (enum[string]
)
Name: | Rate Process |
---|---|
Description: | Controls how fio manages rated I/O submissions. The default is 'linear', which submits I/O in a linear fashion with fixed delays between I/Os that gets adjusted based on I/O completion rates. If this is set to 'poisson', fio will submit I/O based on a more real world random request flow, known as the Poisson process (https://en.wikipedia.org/wiki/Poisson_point_process). The lambda will be 10^6 / IOPS for the given workload. |
Required: | No |
Type: | enum[string] |
Values
|
readwrite (enum[string]
)
Name: | Read/Write |
---|---|
Description: | Type of IO pattern. Defaults to read. For the mixed I/O types, the default is to split them 50/50. For certain types of I/O the result may still be skewed a bit since the speed may be different. |
Required: | No |
Type: | enum[string] |
Values
|
runtime (string
)
Name: | Job Run Time |
---|---|
Description: | Limit runtime. The test will run until it completes the configured I/O workload or until it has run for this specified amount of time, whichever occurs first. When the unit is omitted, the value is interpreted in seconds. Default is no time limit. |
Required: | No |
Type: | string |
Must match pattern: | ^[0-9]+(?:d|h|m|s|ms|us)?$ |
rwmixread (int
)
Name: | Read/Write Mix - Read |
---|---|
Description: | Percentage of a mixed workload that should be reads. Only one of either rwmixread or rwmixwrite is allowed in an individual job definition. Default: 50 |
Required: | No |
Conflicts the following fields: | rwmixwrite |
Type: | int |
Minimum: | 1 |
Maximum: | 100 |
rwmixwrite (int
)
Name: | Read/Write Mix - Write |
---|---|
Description: | Percentage of a mixed workload that should be writes. Only one of either rwmixread or rwmixwrite is allowed in an individual job definition. Default: 50 |
Required: | No |
Conflicts the following fields: | rwmixread |
Type: | int |
Minimum: | 1 |
Maximum: | 100 |
size (string
)
Name: | Total I/O Size |
---|---|
Description: | The total size of file I/O for each thread of this job. Fio will run until this many bytes have been transferred, unless runtime is altered by other means such as (1) runtime, (2) io_size, (3) number_ios, (4) gaps/holes while doing I/O's such as 'rw=read:16K', or (5) sequential I/O reaching end of the file which is possible when percentage_random is less than 100. Fio will divide this size between the available files determined by options such as nrfiles or filename, unless filesize is specified by the job. If the result of division happens to be 0, the size is set to the physical size of the given files or devices if they exist. If this option is not specified, fio will use the full size of the given files or devices. If the files do not exist, size must be given. It is also possible to give size as a percentage between 1 and 100. If 'size=20%' is given, fio will use 20% of the full size of the given files or devices. |
Required: | No |
Type: | string |
Must match pattern: | ^(?:0x[0-9a-fA-F]+|\d+(?:k|kb|ki|kib|m|mb|mi|mib|g|gb|gi|gib|t|tb|ti|tib|p|pb|pi|pib)?|[1-9][0-9]?%|100%)$ |
startdelay (string
)
Name: | Job Start Delay |
---|---|
Description: | Delay the start of job for the specified amount of time. Can be a single value or a range. When given as a range, each thread will choose a value randomly from within the range. Value is in seconds if a unit is omitted. Default is 0. |
Required: | No |
Type: | string |
Must match pattern: | ^[0-9]+(?:d|h|m|s|ms|us)?(?:-[0-9]+(?:d|h|m|s|ms|us)?)?$ |
stonewall (bool
)
Name: | Stonewall |
---|---|
Description: | 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 stonewall also implies starting a new reporting group, (see group_reporting). Default is false. |
Required: | No |
Type: | bool |
time_based (bool
)
Name: | Time Based |
---|---|
Description: | If set, fio will run for the duration of the runtime specified even if the file(s) are completely read or written. It will simply loop over the same workload as many times as the runtime allows. Default is false. |
Required: | No |
Type: | bool |
unlink (bool
)
Name: | Unlink Files |
---|---|
Description: | Unlink the job files when done. Not the default, as repeated runs of that job would then waste time recreating the file set again and again. Defaults to false. |
Required: | No |
Type: | bool |
unlink_each_loop (bool
)
Name: | Unlink Files Each Loop |
---|---|
Description: | Unlink job files after each iteration or loop. Defaults to False. |
Required: | No |
Type: | bool |
Type: | scope | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Root object: | FioErrorOutput | ||||||||||||
Properties | error (
|
Name: | Job Error Traceback |
---|---|
Description: | Fio job traceback for debugging |
Required: | Yes |
Type: | string |
Objects
FioErrorOutput (object
)
Type: | object | ||||||||
---|---|---|---|---|---|---|---|---|---|
Properties | error (
|
Name: | Job Error Traceback |
---|---|
Description: | Fio job traceback for debugging |
Required: | Yes |
Type: | string |
Type: | scope | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Root object: | FioSuccessOutput | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Properties | disk_util (
reference[DiskUtilization] ] |
Name: | Disk Utlization | ||||
---|---|---|---|---|---|
Description: | Disk utilization during job | ||||
Required: | No | ||||
Type: | list[ | ||||
List items
|
fio version (string
)
Name: | Fio version |
---|---|
Description: | Fio version used on job |
Required: | Yes |
Type: | string |
global options (map[string
,string
]
)
string
,string
]Name: | global options | ||
---|---|---|---|
Description: | Options applied to every job | ||
Required: | No | ||
Type: | map[ | ||
Key type
| |||
Value type
|
jobs (list[reference[JobResult]
]
)
reference[JobResult]
]Name: | Jobs | ||||
---|---|---|---|---|---|
Description: | List of job input parameter configurations | ||||
Required: | Yes | ||||
Type: | list[ | ||||
List items
|
time (string
)
Name: | Time |
---|---|
Description: | Human readable datetime string |
Required: | Yes |
Type: | string |
timestamp (int
)
Name: | Timestamp |
---|---|
Description: | POSIX compliant timestamp in seconds |
Required: | Yes |
Type: | int |
timestamp_ms (int
)
Name: | timestamp ms |
---|---|
Description: | POSIX compliant timestamp in milliseconds |
Required: | Yes |
Type: | int |
Objects
AioOutput (object
)
Type: | object | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Properties | bw (
|
Name: | Bandwidth KiB |
---|---|
Description: | IO bandwidth used in kibibytes |
Required: | Yes |
Type: | int |
bw_agg (float
)
Name: | Bandwidth Aggregate Percentile |
---|---|
Required: | Yes |
Type: | float |
bw_bytes (int
)
Name: | Bandwidth B |
---|---|
Description: | IO bandwidth used in bytes |
Required: | Yes |
Type: | int |
bw_dev (float
)
Name: | Bandwidth Std Dev |
---|---|
Description: | Bandwidth standard deviation |
Required: | Yes |
Type: | float |
bw_max (int
)
Name: | Bandwidth Max |
---|---|
Description: | Bandwidth maximum |
Required: | Yes |
Type: | int |
bw_mean (float
)
Name: | Bandwidth Mean |
---|---|
Description: | Bandwidth mean |
Required: | Yes |
Type: | float |
bw_min (int
)
Name: | Bandwidth Min |
---|---|
Description: | Bandwidth minimum |
Required: | Yes |
Type: | int |
bw_samples (int
)
Name: | Bandwidth Sample Quantity |
---|---|
Description: | Quantity of bandwidth samples collected |
Required: | Yes |
Type: | int |
clat_ns (reference[IoLatency]
)
Name: | Completion Latency ns |
---|---|
Description: | Completion latency in nanoseconds |
Required: | Yes |
Type: | reference[IoLatency] |
Referenced object: | IoLatency |
drop_ios (int
)
Name: | Dropped IOs |
---|---|
Description: | Unclear from documentation. Edcuated guess: quantity of dropped IO. |
Required: | Yes |
Type: | int |
io_bytes (int
)
Name: | IO B |
---|---|
Description: | Quantity of IO transactions in bytes |
Required: | Yes |
Type: | int |
io_kbytes (int
)
Name: | IO KiB |
---|---|
Description: | Quantity of IO transactions in kibibytes |
Required: | Yes |
Type: | int |
iops (float
)
Name: | IOPS |
---|---|
Description: | IO operations per second |
Required: | Yes |
Type: | float |
iops_max (int
)
Name: | IOPS Max |
---|---|
Description: | IO operations per second maximum |
Required: | Yes |
Type: | int |
iops_mean (float
)
Name: | IOPS Mean |
---|---|
Description: | IO operations per second mean |
Required: | Yes |
Type: | float |
iops_min (int
)
Name: | IOPS Min |
---|---|
Description: | IO operations per second minimum |
Required: | Yes |
Type: | int |
iops_samples (int
)
Name: | IOPS Sample Quantity |
---|---|
Description: | Quantity of IOPS samples collected |
Required: | Yes |
Type: | int |
iops_stddev (float
)
Name: | IOPS Std Dev |
---|---|
Description: | IO operations per second standard deviation |
Required: | Yes |
Type: | float |
lat_ns (reference[IoLatency]
)
Name: | Latency ns |
---|---|
Description: | Total latency in nanoseconds. |
Required: | Yes |
Type: | reference[IoLatency] |
Referenced object: | IoLatency |
runtime (int
)
Name: | Runtime |
---|---|
Description: | Length of time in seconds on this IO pattern type |
Required: | Yes |
Type: | int |
short_ios (int
)
Name: | Short IOs |
---|---|
Description: | Unclear from documentation. Educated guess: quantity of incomplete IO. |
Required: | Yes |
Type: | int |
slat_ns (reference[IoLatency]
)
Name: | Submission Latency ns |
---|---|
Description: | Submission latency in nanoseconds |
Required: | Yes |
Type: | reference[IoLatency] |
Referenced object: | IoLatency |
total_ios (int
)
Name: | Quantity of Latencies Logged |
---|---|
Description: | Quantity of latency samples collected (i.e. logged) |
Required: | Yes |
Type: | int |
DiskUtilization (object
)
Type: | object | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Properties | aggr_in_queue (
|
Name: | Workers' Time in Queue |
---|---|
Description: | Total time in queue across all workers. |
Required: | No |
Type: | int |
aggr_read_ios (int
)
Name: | Workers' Read IOs |
---|---|
Description: | Total read IO operations across all workers. |
Required: | No |
Type: | int |
aggr_read_merges (int
)
Name: | Workers' Read Merges |
---|---|
Description: | Total read merges across all workers. |
Required: | No |
Type: | int |
aggr_read_ticks (int
)
Name: | Workers' Read Ticks |
---|---|
Description: | Total read ticks across all workers. |
Required: | No |
Type: | int |
aggr_util (float
)
Name: | Workers' Device Utilization |
---|---|
Description: | Mean device utilization across all workers. |
Required: | No |
Type: | float |
aggr_write_ios (int
)
Name: | Workers' Write IOs |
---|---|
Description: | Total write IO operations across all workers. |
Required: | No |
Type: | int |
aggr_write_merge (int
)
Name: | Workers' Write Merges |
---|---|
Description: | Total write merges across all workers. |
Required: | No |
Type: | int |
aggr_write_ticks (int
)
Name: | Workers' Write Ticks |
---|---|
Description: | Total write ticks across all workers. |
Required: | No |
Type: | int |
in_queue (int
)
Name: | Time in Queue |
---|---|
Description: | Total time spent in device queue. No units are specified in source, nor documentation. |
Required: | Yes |
Type: | int |
name (string
)
Name: | Device Name |
---|---|
Description: | Name of the storage device. |
Required: | Yes |
Type: | string |
read_ios (int
)
Name: | Read IOs |
---|---|
Description: | Quantity of read IO operations. |
Required: | Yes |
Type: | int |
read_merges (int
)
Name: | Read Merges |
---|---|
Description: | Quantity of read merges performed by IO scheduler. |
Required: | Yes |
Type: | int |
read_ticks (int
)
Name: | Read Ticks |
---|---|
Description: | Quantity of read ticks that kept the device busy. |
Required: | Yes |
Type: | int |
util (float
)
Name: | Device Utilization |
---|---|
Description: | Proportion of time the device was busy. |
Required: | Yes |
Type: | float |
write_ios (int
)
Name: | Write IOs |
---|---|
Description: | Quantity of write IO operations. |
Required: | Yes |
Type: | int |
write_merges (int
)
Name: | Write Merges |
---|---|
Description: | Quantity of write merges performed by IO scheduler. |
Required: | Yes |
Type: | int |
write_ticks (int
)
Name: | Write Ticks |
---|---|
Description: | Quantity of write ticks that kept the device busy. |
Required: | Yes |
Type: | int |
FioSuccessOutput (object
)
Type: | object | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Properties | disk_util (
reference[DiskUtilization] ] |
Name: | Disk Utlization | ||||
---|---|---|---|---|---|
Description: | Disk utilization during job | ||||
Required: | No | ||||
Type: | list[ | ||||
List items
|
fio version (string
)
Name: | Fio version |
---|---|
Description: | Fio version used on job |
Required: | Yes |
Type: | string |
global options (map[string
,string
]
)
string
,string
]Name: | global options | ||
---|---|---|---|
Description: | Options applied to every job | ||
Required: | No | ||
Type: | map[ | ||
Key type
| |||
Value type
|
jobs (list[reference[JobResult]
]
)
reference[JobResult]
]Name: | Jobs | ||||
---|---|---|---|---|---|
Description: | List of job input parameter configurations | ||||
Required: | Yes | ||||
Type: | list[ | ||||
List items
|
time (string
)
Name: | Time |
---|---|
Description: | Human readable datetime string |
Required: | Yes |
Type: | string |
timestamp (int
)
Name: | Timestamp |
---|---|
Description: | POSIX compliant timestamp in seconds |
Required: | Yes |
Type: | int |
timestamp_ms (int
)
Name: | timestamp ms |
---|---|
Description: | POSIX compliant timestamp in milliseconds |
Required: | Yes |
Type: | int |
IoLatency (object
)
Type: | object | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Properties | N (
|
Name: | IO Latency Sample Quantity |
---|---|
Description: | quantity of IO latency samples collected |
Required: | Yes |
Type: | int |
bins (map[string
,int
]
)
string
,int
]Name: | Binned IO Latency Sample | ||
---|---|---|---|
Description: | binned version of the IO latencies collected | ||
Required: | No | ||
Type: | map[ | ||
Key type
| |||
Value type
|
max (int
)
Name: | IO Latency Max |
---|---|
Description: | IO latency maximum |
Required: | Yes |
Type: | int |
mean (float
)
Name: | IO Latency Mean |
---|---|
Description: | IO latency mean |
Required: | Yes |
Type: | float |
min (int
)
Name: | IO Latency Min |
---|---|
Description: | IO latency minimum |
Required: | Yes |
Type: | int |
percentile (map[string
,int
]
)
string
,int
]Name: | IO Latency Cumulative Distribution | ||
---|---|---|---|
Description: | Cumulative distribution of IO latency sample | ||
Required: | No | ||
Type: | map[ | ||
Key type
| |||
Value type
|
stddev (float
)
Name: | IO Latency StdDev |
---|---|
Description: | IO latency standard deviation |
Required: | Yes |
Type: | float |
JobResult (object
)
Type: | object | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Properties | ctx (
|
Name: | Context Switches |
---|---|
Description: | Quantity of voluntary and involuntary context switches. |
Required: | Yes |
Type: | int |
elapsed (int
)
Name: | Time Elapsed s |
---|---|
Description: | Execution time up to now in seconds. |
Required: | Yes |
Type: | int |
error (int
)
Name: | Error |
---|---|
Description: | An error code thrown by the job. |
Required: | Yes |
Type: | int |
eta (int
)
Name: | ETA |
---|---|
Description: | Specifies when real-time estimates should be printed. |
Required: | Yes |
Type: | int |
groupid (int
)
Name: | Thread Group ID |
---|---|
Description: | Identifying number for thread group used in a job. |
Required: | Yes |
Type: | int |
iodepth_complete (map[string
,float
]
)
string
,float
]Name: | Completed IO Depth Frequency Distribution | ||
---|---|---|---|
Description: | Unclear from documentation. | ||
Required: | Yes | ||
Type: | map[ | ||
Key type
| |||
Value type
|
iodepth_level (map[string
,float
]
)
string
,float
]Name: | Total IO Depth Frequency Distribution | ||
---|---|---|---|
Description: | Unclear from documentation. | ||
Required: | Yes | ||
Type: | map[ | ||
Key type
| |||
Value type
|
iodepth_submit (map[string
,float
]
)
string
,float
]Name: | Submission IO Depth Frequency Distribution | ||
---|---|---|---|
Description: | Unclear from documentation. | ||
Required: | Yes | ||
Type: | map[ | ||
Key type
| |||
Value type
|
job options (map[string
,string
]
)
string
,string
]Name: | Job Options | ||
---|---|---|---|
Description: | Options passed to the fio executable. | ||
Required: | Yes | ||
Type: | map[ | ||
Key type
| |||
Value type
|
job_runtime (int
)
Name: | Runtime |
---|---|
Description: | Execution time used on this job. |
Required: | Yes |
Type: | int |
jobname (string
)
Name: | Job Name |
---|---|
Description: | Name of the job configuration |
Required: | Yes |
Type: | string |
latency_depth (int
)
Name: | Latency Depth |
---|---|
Description: | Latency queue depth. |
Required: | Yes |
Type: | int |
latency_ms (map[string
,float
]
)
string
,float
]Name: | Millisecond Latency Frequency Distribution | ||
---|---|---|---|
Description: | Unclear from documentation. | ||
Required: | Yes | ||
Type: | map[ | ||
Key type
| |||
Value type
|
latency_ns (map[string
,float
]
)
string
,float
]Name: | Nanosecond Latency Frequency Distribution | ||
---|---|---|---|
Description: | Unclear from documentation. | ||
Required: | Yes | ||
Type: | map[ | ||
Key type
| |||
Value type
|
latency_percentile (float
)
Name: | Percent Beat Target Latency |
---|---|
Description: | Proportion of IOs that beat the target latency. |
Required: | Yes |
Type: | float |
latency_target (int
)
Name: | Latency Target microseconds |
---|---|
Description: | Maximum allowed latency. |
Required: | Yes |
Type: | int |
latency_us (map[string
,float
]
)
string
,float
]Name: | Microsecond Latency Frequency Distribution | ||
---|---|---|---|
Description: | Unclear from documentation. | ||
Required: | Yes | ||
Type: | map[ | ||
Key type
| |||
Value type
|
latency_window (int
)
Name: | Latency Window microseconds |
---|---|
Description: | Used with Latency Target to specify the sample windowthat the job is run at varying queue depths to test performance. |
Required: | Yes |
Type: | int |
majf (int
)
Name: | Major Page Fault |
---|---|
Description: | Quantity of page faults requring physical IO. |
Required: | Yes |
Type: | int |
minf (int
)
Name: | Minor Page Fault |
---|---|
Description: | Quantity of page faults not requiring physical IO. |
Required: | Yes |
Type: | int |
read (reference[AioOutput]
)
Name: | Read |
---|---|
Description: | Read IO results. |
Required: | Yes |
Type: | reference[AioOutput] |
Referenced object: | AioOutput |
sync (reference[SyncIoOutput]
)
Name: | Synchronous |
---|---|
Description: | Synchronous IO results. |
Required: | Yes |
Type: | reference[SyncIoOutput] |
Referenced object: | SyncIoOutput |
sys_cpu (float
)
Name: | System CPU |
---|---|
Description: | CPU usage in kernel (system) space. |
Required: | Yes |
Type: | float |
trim (reference[AioOutput]
)
Name: | Trim |
---|---|
Description: | Trim IO results. |
Required: | Yes |
Type: | reference[AioOutput] |
Referenced object: | AioOutput |
usr_cpu (float
)
Name: | User CPU |
---|---|
Description: | CPU usage in user space. |
Required: | Yes |
Type: | float |
write (reference[AioOutput]
)
Name: | Write |
---|---|
Description: | Write IO results. |
Required: | Yes |
Type: | reference[AioOutput] |
Referenced object: | AioOutput |
SyncIoOutput (object
)
Type: | object | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Properties | lat_ns (
|
Name: | Latency ns |
---|---|
Description: | Total latency in nanoseconds. |
Required: | Yes |
Type: | reference[IoLatency] |
Referenced object: | IoLatency |
total_ios (int
)
Name: | Quantity of Latencies Logged |
---|---|
Description: | Quantity of latency samples collected (i.e. logged). |
Required: | Yes |
Type: | int |