这是可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行的命令 fio,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器
程序:
您的姓名
fio - 灵活的 I/O 测试仪
概要
FIO [选项[工作档案] ...
商品描述
FIO 是一个工具,它会产生许多线程或进程执行特定类型的
用户指定的 I/O 操作。 fio的典型用途是写作业文件
匹配想要模拟的 I/O 负载。
配置
-调试=类型
启用对各种 fio 操作的详细跟踪。 可能是所有类型的“全部”或
用逗号分隔的各个类型(例如 --debug=io,file)。 `help' 将列出所有
可用的跟踪选项。
- 输出=文件名
将输出写入 文件名.
- 输出格式=格式
将报告格式设置为 正常, 简洁或 JSON.
- 运行=运行
将运行时间限制为 运行 秒。
--带宽日志
生成每个作业的带宽日志。
--最小
以简洁的分号分隔格式打印统计信息。
--追加简洁
以选定的模式和简洁的分号分隔格式打印统计信息。
- 版
显示版本信息并退出。
--简洁版=版本
设置简洁的版本输出格式(当前版本 3,或旧版本 2)。
- 帮帮我 显示使用信息并退出。
--cpuclock-测试
执行内部 CPU 时钟的测试和验证
--crc测试[=测试]
测试内置校验和函数的速度。 如果没有给出参数,所有
其中有测试。 或者可以传递逗号分隔的列表,在这种情况下
给定的经过测试。
--cmd帮助=命令
打印帮助信息 命令. 对于所有命令,可能是“all”。
--enghelp=ioengine[,命令]
列出由定义的所有命令 信息引擎, 或打印帮助 命令 被定义为
信息引擎.
--showcmd=工作档案
转化率 工作档案 到一组命令行选项。
——埃塔=,尤其是
指定应何时打印实时 ETA 估计值。 ,尤其是 可能是其中之一
“总是”、“从不”或“自动”。
--eta-换行符=次
为每个“时间”周期强制执行 ETA 换行符。
--状态间隔=次
每经过一段时间就报告完整的输出状态。
- 只读
打开安全只读检查,防止任何尝试写入。
- 部分=秒
只运行部分 秒 从作业文件。 这个选项可以多次使用来添加
要运行的更多部分。
--分配大小=kb
将内部 smalloc 池大小设置为 kb 千字节。
--警告-致命
所有 fio 解析器警告都是致命的,导致 fio 以错误退出。
--最大工作数=nr
设置要支持的最大允许作业数(线程/进程)。
- 服务器=ARGS
启动后端服务器,使用 ARGS 指定要听什么。 查看客户端/服务器
部分。
--守护进程=pid文件
后台一个 fio 服务器,将 pid 写入给定的 pid 文件。
- 客户=主持人
不是在本地运行作业,而是在给定的主机或一组主机上发送和运行它们
主机。 请参阅客户端/服务器部分。
--空闲教授=选项
基于系统或 percpu 报告 cpu 空闲(选项=system,percpu) 或运行单元
仅工作校准(选项=校准)。
JOB 文件 FORMAT
作业文件采用“ini”格式。 它们由一个或多个工作定义组成,开始于
用方括号中的作业名称并扩展到下一个作业名称。 作业名称可以是
除了具有特殊含义的“global”之外的任何 ASCII 字符串。 在工作名称之后是
一系列零个或多个参数,每行一个,用于定义作业的行为。
任何以“;”开头的行或 `#' 字符被视为注释并被忽略。
If 工作档案 指定为“-”,将从标准输入读取作业文件。
全球覆盖 部分
global 部分包含作业文件中指定的作业的默认参数。 一份工作
仅受位于其上方的全局部分的影响,并且可能有任意数量的
全局部分。 特定的作业定义可能会覆盖全局中设置的任何参数
部分。
JOB 有无库存
类型
某些参数可能采用特定类型的参数。 任何数值是
需要,可以使用算术表达式,前提是它被括号括起来。
支持的运算符有:
增加 (+),
减法 ( - )
乘法 (*)
师 (/)
系数 (%)
幂 (^)
对于表达式中的时间值,默认单位为微秒。 这不同于
对于不在表达式中的时间值(未括在括号中)。 使用的类型是:
STR 字符串:一串字母数字字符。
INT SI 整数:一个整数,可能包含表示基本单位的后缀
价值。 可接受的后缀是“k”、“M”、“G”、“T”和“P”,表示公斤
(1024)、mega (1024^2)、giga (1024^3)、tera (1024^4) 和 peta (1024^5)
分别。 如果以“0x”为前缀,则假定该值以 16 为基数
(十六进制)。 后缀可能包括尾随的 'b',例如 'kb' 是相同的
'k'。 您可以使用“KiB”、“MiB”、“GiB”等来指定基数为 10 的值。这是
对于通常以 10 为基数给出值的磁盘驱动器很有用。 指定
'30GiB' 会给你 30*1000^3 字节。 指定时间时默认后缀
意义改变,仍然表示值的基本单位,但接受后缀
是“D”(天)、“H”(小时)、“M”(分钟)、“S”秒、“ms”(或毫秒)毫
秒,“我们”(或“usec”)微秒。 没有单位的时间值指定
秒。 后缀不区分大小写。
布尔 布尔值:真或假值。 “0”表示假,“1”表示真。
伊兰奇 整数范围:格式中指定的整数范围 降低:上 or
降低-上. 降低 和 上 可以包含如上所述的后缀。 如果一个选项
允许两组范围,它们用`,' 或`/' 字符分隔。 为了
例如:`8-8k/8M-4G'。
浮动列表
浮点数列表:浮点数列表,以“:”字符分隔。
参数 列表
姓名=STR
可用于覆盖作业名称。 在命令行中,该参数具有
发出新工作开始信号的特殊用途。
描述=STR
人类可读的工作描述。 它在作业运行时打印,但
否则没有特殊用途。
目录=STR
使用此目录前缀文件名。 用于将文件放置在除
'./'。 您可以通过使用“:”分隔名称来指定多个目录
特点。 这些目录将平均分配给作业克隆
创造与 工作数 只要他们使用生成的文件名。 如果具体
文件名 设置 fio 将使用第一个列出的目录,从而匹配
这些因素包括原料奶的可用性以及达到必要粉末质量水平所需的工艺。 文件名 如果未指定,则每个克隆生成一个文件的语义,但让
如果设置,所有克隆都使用相同的。 看 文件名 关于逃跑的考虑
某些平台上的某些字符。
文件名=STR
FIO 通常根据作业名、线程号和文件组成一个文件名
数字。 如果要在一个作业或多个作业的线程之间共享文件,
指定一个 文件名 为他们每个人覆盖默认值。 如果 I/O 引擎是
基于文件,您可以通过用`:'分隔名称来指定多个文件
特点。 `-' 是一个保留名称,表示标准输入或标准输出,取决于
读/写方向设置。 在 Windows 上,磁盘设备作为 \.PhysicalDrive0 访问
对于第一个设备,\.PhysicalDrive1 用于第二个等等。注意:Windows 和
FreeBSD 防止对包含正在使用的数据的磁盘区域进行写访问(例如
文件系统)。 如果想要的文件名确实需要包含一个冒号,那么转义那个
带有“\”字符。 例如,如果文件名是“/dev/dsk/foo@3,0:c”,那么
您将使用 filename="/dev/dsk/foo@3,0\:c"。
文件名_格式=STR
如果job之间共享多个文件,通常需要fio
生成您想要的确切名称。 默认情况下,fio 将根据
的默认文件格式规范 工作名称.工作编号.文件编号. 有了这个
选项,可以自定义。 Fio 将识别并替换以下内容
此字符串中的关键字:
$职位名称
工作线程或进程的名称。
$职位编号
工作线程或进程的增量编号。
$文件编号
该工作线程或进程的文件增量编号。
要让依赖作业共享一组文件,可以将此选项设置为具有 fio
生成在两者之间共享的文件名。 例如,如果
测试文件.$filenum 指定,任何作业的文件号 4 将被命名
测试文件.4. 默认的 $职位名称.$职位编号.$文件编号 如果没有其他将使用
给出了格式说明符。
锁文件=STR
Fio 在对文件执行 IO 之前默认不锁定任何文件。 如果一个文件或文件
描述符是共享的,fio 可以将 IO 序列化到该文件中以做出最终结果
持续的。 这通常用于模拟共享文件的真实工作负载。 锁
模式是:
没有 没有锁定。 这是默认设置。
独家
一次只能有一个线程或进程进行 IO,不包括所有其他线程或进程。
读写
文件的读写锁定。 许多读者可以访问该文件
同时,但写入获得独占访问权限。
打开目录=STR 递归打开目录下的任何文件 STR.
读写=STR, rw=STR
I/O 模式的类型。 接受的值为:
读 顺序读取。
写 顺序写入。
修剪 顺序修剪(仅限 Linux 块设备)。
朗读
随机读取。
改写
随意写。
随机修整
随机修剪(仅限 Linux 块设备)。
rw, 读写
混合顺序读取和写入。
随机数 混合随机读取和写入。
修剪写入
修剪和写入混合工作负载。 块将首先被修剪,然后
将写入相同的块。
对于混合 I/O,默认拆分为 50/50。 对于某些类型的 io 结果可能
仍然有点偏,因为速度可能不同。 可以指定
在获得新的偏移量之前要做的一些 IO,这是通过附加一个
`: 到给定字符串的末尾。 对于随机读取,它看起来像
rw=随机读取:8 用于传入值为 8 的偏移量修饰符。如果后缀
与顺序 IO 模式一起使用,然后指定的值将被添加到
为每个 IO 生成偏移量。 例如,使用 读写=写入:4k 将跳过 4k
每次写。 它将顺序 IO 变成了带孔的顺序 IO。 见
读写序列器 选项。
读写序列器=STR
如果通过将一个数字附加到 rw= 线,然后
此选项控制该数字如何修改正在生成的 IO 偏移量。
接受的值为:
顺序
生成顺序偏移
相同
生成相同的偏移量
顺序 仅对随机 IO 有用,其中 fio 通常会生成一个新的
每个 IO 的随机偏移量。 如果将例如 8 附加到 randread,您将获得一个新的
每 8 个 IO 的随机偏移量。 结果将是每 8 个 IO 的搜索,
而不是每个 IO。 用 rw=随机读取:8 来指定。 由于顺序 IO 是
已经连续,设置 顺序 因为那不会导致任何
差异。 相同 以类似的方式表现,除了它发送相同的
在生成新偏移量之前偏移 8 次。
知识库库=INT
千字节的基本单位。 事实上的基数是 2^10, 1024。 存储
制造商喜欢使用 10^3 或 1000 作为基数 XNUMX 的单位,这是显而易见的
原因。 允许的值为 1024 或 1000,默认值为 1024。
Unified_rw_reporting=布尔
Fio 通常在每个数据方向的基础上报告统计数据,这意味着读取、
write 和 trim 分别计算和报告。 如果此选项设置为 fio
总结结果并将它们报告为“混合”。
重复=布尔
以可预测的方式播种用于随机 I/O 模式的随机数生成器
所以模式在运行中是可重复的。 默认值:真。
全部重复=布尔
以可预测的方式为所有随机数生成器设置种子,以便结果可重复
跨越运行。 默认值:假。
种子=INT
根据这个种子值给随机数生成器播种,以便能够控制
正在生成什么输出序列。 如果未设置,则随机序列取决于
在 重复 设置。
错误定位=STR
放置文件时是否进行预分配。 接受的值为:
没有 不要预先分配空间。
POSIX 预分配通过 posix_fallocate(3)。
保持 预分配通过 错误定位(2) 用 FALLOC_FL_KEEP_SIZE 设置。
0 'none' 的向后兼容别名。
1 “posix”的向后兼容别名。
可能并非在所有支持的平台上都可用。 “保持”仅在 Linux 上可用。
如果在 Solaris 上使用 ZFS,则必须将其设置为“无”,因为 ZFS 不支持它。
默认值:'posix'。
fadvise_提示=布尔
使用 VHDL 语言编写 posix_fadvise(2) 告知内核可能的 I/O 模式
发布。 默认值:真。
fadvise_stream=INT
使用 VHDL 语言编写 posix_fadvise(2) 告知内核发出的写入属于哪个流 ID
到。 仅在 Linux 上支持。 请注意,此选项可能会在未来发生变化。
尺寸=INT
此作业的 I/O 总大小。 FIO 将运行直到这么多字节已经
转移,除非受其他选择限制(运行例如,或
增加/减少 io_大小)。 除非 文件 和 文件大小 给出了选项,
此数量将在作业的可用文件之间分配。 如果没有设置,
fio 将使用给定文件或设备的完整大小。 如果文件没有
存在,必须给出大小。 也可以以百分比的形式给出大小
1 和 100。如果给定 size=20%,fio 将使用给定全尺寸的 20%
文件或设备。
io_大小=INT, io_limit =INT
通常 fio 在设置的区域内运行 尺寸,这意味着 尺寸
选项设置要执行的 IO 的区域和大小。 有时这不是
你想要什么。 使用此选项,可以仅定义 IO 数量
fio 应该这样做。 例如,如果 尺寸 设置为 20G 和 io_limit 设置为5G,
fio 将在第一个 20G 内执行 IO,但在 5G 完成后退出。 这
相反也是可能的——如果 尺寸 设置为 20G,并且 io_大小 设置为40G,然后
fio 将在 40..0G 区域内做 20G 的 IO。
填充设备=布尔, 填充_fs=布尔
将大小设置为非常大的值并等待 ENOSPC(设备上没有剩余空间)
作为终止条件。 仅对顺序写入有意义。 供阅读
工作负载,将首先填充挂载点,然后在结果上启动 IO。 这个
如果在原始设备节点上操作,则选项没有意义,因为该节点的大小
文件系统已经知道了。 此外,超出设备终端的写入
不会在那里返回 ENOSPC。
文件大小=伊兰奇
单个文件大小。 可能是一个范围,在这种情况下 FIO 将选择尺寸
给定范围内的随机文件,仅限于 尺寸 总共(如果是
给)。 如果 文件大小 未指定,每个创建的文件大小相同。
文件附加=布尔
文件结束后执行IO。 通常 fio 会在
一份文件。 如果设置了此选项,则 fio 将改为附加到文件。 这有
与将偏移设置为文件大小的行为相同。 此选项被忽略
在非常规文件上。
块大小=整数[,整数], bs=整数[,整数]
I/O 单元的块大小。 默认值:4k。 读取、写入和修剪的值可以是
在格式中单独指定 读,写,修剪 其中任何一个都可能是空的
将该值保留为默认值。 如果未给出尾随逗号,则余数
将继承最后一个值集。
块大小范围=橙色[,橙色], 怪怪的=橙色[,橙色]
指定 I/O 块大小的范围。 发出的 I/O 单元将始终是多个
最小尺寸,除非 块大小未对齐 设置。 适用于读取和
如果只给出一个范围,则写入,但可以用逗号单独指定
分离值。 示例:bsrange=1k-4k,2k-8k。 还有(见 块大小).
分裂=STR
此选项允许对发出的块大小进行更细粒度的控制,而不仅仅是
甚至在他们之间分裂。 使用此选项,您可以为各种块大小加权
对具有混合块大小的作业发出 IO 的精确控制。 的格式
选项是 bssplit=blocksize/percentage,可选择添加尽可能多的定义
根据需要用冒号分隔。 示例: bssplit=4k/10:64k/50:32k/40 会发出
50% 64k 块,10% 4k 块和 40% 32k 块。 分裂 也支持给予
分开读取和写入。 格式与 bs 选项
接受,读和写部分用逗号分隔。
块大小未对齐, bs_未对齐
如果设置,任何大小 块大小范围 可能用过了。 这通常不适用于
直接 I/O,因为这通常需要扇区对齐。
块对齐=整数[,整数], ba=整数[,整数]
在什么边界对齐随机 IO 偏移。 默认与 'blocksize' 相同
给定的最小块大小。 最小对齐通常是 512b 以使用直接
IO,尽管它通常取决于硬件块大小。 这个选项是相互的
独家使用文件的随机映射,因此它将关闭该选项。
bs_is_seq_rand=布尔
如果设置了此选项,fio 将使用正常的读、写块大小设置作为
顺序,随机代替。 任何随机读取或写入都将使用 WRITE 块大小
设置,任何顺序读取或写入都将使用 READ 块大小设置。
零缓冲区
用全零初始化缓冲区。 默认值:用随机数据填充缓冲区。
重新填充缓冲区
如果给出这个选项,fio 将在每次提交时重新填充 IO 缓冲区。 这
默认是仅在初始化时填充它并重用该数据。 只有当
自然没有指定 zero_buffers 。 如果启用数据验证,
refill_buffers 也会自动启用。
加扰缓冲区=布尔
If 重新填充缓冲区 成本太高,目标正在使用重复数据删除,那么
设置此选项将稍微修改 IO 缓冲区内容以破坏正常
重复数据删除尝试。 这不足以打败更聪明的块压缩
尝试,但它会阻止简单的块重复数据删除。 默认值:真。
缓冲区压缩百分比=INT
如果设置,那么 fio 将尝试提供 IO 缓冲区内容(在 WRITE 上)
压缩到指定的级别。 Fio 通过提供随机数据的混合来做到这一点
和固定模式。 固定模式要么是零,要么是指定的模式
by 缓冲模式. 如果使用模式选项,它可能会扭曲压缩
比例略。 请注意,这是每个块大小单位,对于文件/磁盘宽
与此设置匹配的压缩级别。 请注意,这是每个块大小单位,
对于与此设置匹配的文件/磁盘宽压缩级别,您还需要
设置 refill_buffers。
缓冲区压缩块=INT
参见 缓冲区压缩百分比. 这个设置允许 fio 管理有多大
随机数据和归零数据的范围是。 如果没有这个设置,fio 将提供
缓冲区压缩百分比 块大小的随机数据,然后是剩余的
归零。 将此设置为小于块大小的某个块大小,fio 可以
在整个 IO 缓冲区中交替随机和归零数据。
缓冲模式=STR
如果设置,fio 将使用此模式填充 IO 缓冲区。 如果没有设置,内容
IO 缓冲区由与缓冲区内容相关的其他选项定义。 那个设定
可以是任何字节模式,并且可以以 0x 为前缀来表示十六进制值。 它可能
也是一个字符串,字符串必须用“”包裹,例如:
缓冲模式=“ABCD”
or
缓冲模式= -12
or
缓冲模式=0x死脸
您也可以按任何顺序将所有内容组合在一起:
缓冲模式=0xdeadface"abcd"-12
重复数据删除百分比=INT
如果设置,fio 将在写入时生成此百分比的相同缓冲区。 这些
缓冲区自然是可重复的。 缓冲区的内容取决于什么
已设置其他缓冲区压缩设置。 有可能
单个缓冲区要么完全可压缩,要么根本不可压缩。 仅此选项
控制唯一缓冲区的分布。
文件=INT
用于此作业的文件数。 默认值:1。
打开文件=INT
同时保持打开的文件数。 默认: 文件.
文件服务类型=STR
定义如何选择要提供服务的文件。 定义了以下类型:
随机 随机选择一个文件。
ROUNDROBIN
循环遍历打开的文件(默认)。
顺序
按顺序执行集合中的每个文件。
在切换到新文件之前要发出的 I/O 数可以通过以下方式指定
附加`:INT' 到服务类型。
信息引擎=STR
定义作业如何发出 I/O。 定义了以下类型:
同步 基础版 读(2)或 写(2) 输入/输出。 搜索(2) 用于定位I/O
的位置。
同步 基础版 预读(2)或 写(2) 输入/输出。
垂直同步 基础版 阅读(2)或 写(2) 输入/输出。 将通过合并来模拟排队
相邻的 IO 合并为一个提交。
同步 基础版 预先准备好(2)或 写的(2) 输入/输出。
利巴约 Linux 原生异步 I/O。 这个 ioengine 定义了引擎特定的
选项。
波西沙约
POSIX 异步 I/O 使用 aio_read(3)和 aio_write(3)。
日光
Solaris 本机异步 I/O。
视窗
Windows 本机异步 I/O。
MMAP 文件是内存映射的 MMAP(2)和数据复制使用 Memcpy(3)。
拼接 拼接(2) 用于传输数据和 虚拟拼接(2) 转移
从用户空间到内核的数据。
系统小程序-rw
使用 syslet 系统调用使常规读/写异步。
sg SCSI 通用 sg v3 I/O。 可以使用 SG_IO 同步
ioctl,或者如果目标是 sg 字符设备,我们使用 读(2)和
写(2) 用于异步 I/O。
空 不传输任何数据,只是假装传输。 主要用于锻炼
FIO 本身以及用于调试和测试目的。
净 通过网络传输。 可以定义要使用的协议
与 协议 范围。 根据协议, 文件名,
主机, 端口或 听 必须指定。 这个 ioengine 定义了
引擎特定选项。
网络连接
喜欢 净,但使用 拼接(2)和 虚拟拼接(2) 映射数据和
发送/接收。 这个 ioengine 定义了引擎特定的选项。
处理器 不传输任何数据,但会根据 处理器负载
和 循环 参数。
卦象 GUASI I/O 引擎是通用用户空间异步系统调用
异步 I/O 的接口方法。
看到http://www.xmailserver.org/guasi-lib.html>.
rma RDMA I/O 引擎同时支持 RDMA 内存语义
(RDMA_WRITE/RDMA_READ) 和通道语义 (Send/Recv)
InfiniBand、RoCE 和 iWARP 协议。
外部
加载外部 I/O 引擎对象文件。 附加引擎文件名
如`:引擎路径'.
法洛克
执行常规 linux 本机 fallocate 调用的 IO 引擎
模拟数据传输作为 fio ioengine
DDIR_READ 确实 fallocate(,mode = FALLOC_FL_KEEP_SIZE,)
DIR_WRITE 确实 fallocate(,mode = 0)
DDIR_TRIM 确实 fallocate(,mode =
FALLOC_FL_KEEP_SIZE|FALLOC_FL_PUNCH_HOLE)
e4碎片整理
执行常规 EXT4_IOC_MOVE_EXT ioctls 来模拟的 IO 引擎
对 DDIR_WRITE 事件的碎片整理活动请求
rbd 支持直接访问 Ceph Rados 块设备 (RBD) 的 IO 引擎
通过 librbd 无需使用内核 rbd 驱动程序。 这个
ioengine 定义引擎特定的选项。
GFAPI 使用 Glusterfs libgfapi 同步接口直接访问 Glusterfs
卷而无需通过 FUSE。 这个 ioengine 定义了
引擎特定选项。
gfapi_异步
使用 Glusterfs libgfapi 异步接口直接访问
Glusterfs 卷而无需通过 FUSE。 这个ioengine
定义引擎特定的选项。
库文件
通过 Hadoop (HDFS) 进行读写。 这 文件名 选项用于
指定要连接的 hdfs 名称节点的主机、端口。 这台发动机
对偏移量的解释略有不同。 在 HDFS 中,文件一旦创建
无法修改。 所以随机写入是不可能的。 模仿
这个,libhdfs 引擎期望创建一堆小文件
HDFS,引擎会根据这些文件随机选择一个文件
在 fio 后端生成的偏移量上。 (请参阅示例作业文件以
创建这样的文件,使用 rw=write 选项)。 请注意,您可能想要
设置必要的环境变量以使用 hdfs/libhdfs
正常。
MTD 读取、写入和擦除 MTD 字符设备(例如,/dev/mtd0)。
丢弃被视为擦除。 取决于底层设备
类型,I/O 可能必须采用某种模式,例如,在 NAND 上,
依次写入擦除块并在之前丢弃
覆盖。 writetrim 模式适用于此约束。
深度=INT
要针对文件保持运行的 I/O 单元数。 注意增加
iodepth 超过 1 不会影响同步 ioengines(除了 small degress
当使用 verify_async 时)。 即使是异步引擎也可能会施加操作系统限制,导致
无法达到所需的深度。 在 Linux 上使用 libaio 时可能会发生这种情况
而不是设置 直接=1,因为缓冲 IO 在该操作系统上不是异步的。 密切关注
fio 输出中的 IO 深度分布,以验证实现的深度为
预期的。 默认值:1。
io深度_批处理=INT
一次提交的 I/O 数。 默认: 深度.
iodepth_batch_complete=INT
这定义了一次检索多少个 IO。 它默认为 1
意味着我们将在检索过程中要求至少 1 个 IO
核心。 IO 检索将继续进行,直到我们达到由 io深度_低。 如果
此变量设置为 0,然后 fio 将始终检查之前完成的事件
排队更多的IO。 这有助于减少 IO 延迟,但代价是更多的检索系统
调用。
io深度_低=INT
低水印指示何时开始再次填充队列。 默认: 深度.
io_submit_mode=STR
该选项控制 fio 如何将 IO 提交给 IO 引擎。 默认是
一致,这意味着fio作业线程直接提交和收割IO。 如果设置
至 卸载, 作业线程会将 IO 提交卸载到专用的 IO 池
线程。 这需要一些协调,因此有一些额外的开销,
特别是对于较低的队列深度 IO,它会增加延迟。 好处是
fio 可以独立于设备完成率管理提交率。
如果 IO 在设备端恢复(
协调遗漏问题)。
直接=布尔
如果为 true,则使用非缓冲 I/O(通常为 O_DIRECT)。 默认值:假。
原子=布尔
如果值为真,则尝试使用原子直接 IO。 保证原子写入
一旦被操作系统确认就稳定了。 只有 Linux 支持 O_ATOMIC
现在。
缓冲的=布尔
如果为 true,则使用缓冲 I/O。 这是相反的 直接 范围。 默认:
真实的。
抵消=INT
文件中的偏移量以启动 I/O。 偏移量之前的数据不会被触及。
偏移增量=INT
如果提供,则实际偏移量变为偏移量 + offset_increment *
thread_number,其中线程号是一个从 0 开始的计数器,并且是
每个子作业递增(即指定 numjobs 选项时)。 这个选项
如果有多个作业要对一个文件进行操作,则很有用
平行不相交的线段,起点之间的间距均匀。
number_ios=INT
Fio 通常会执行 IO,直到它用完由设置的区域大小
尺寸,或者如果它耗尽分配的时间(或遇到错误条件)。 有了这个
设置,范围/大小可以独立于要执行的 IO 数量设置。
当fio达到这个数字时,它会正常退出并报告状态。 注意
这不会扩展将要完成的 IO 数量,它只会在以下情况下停止 fio
在其他终止工作标准之前满足此条件。
FSYNC=INT
在发布之前要执行多少 I/O FSYNC(2)脏数据。 如果为 0,则不要
同步。 默认值:0。
数据同步=INT
喜欢 FSYNC,但使用 数据同步(2) 而不是只同步文件的数据部分。
默认值:0
写屏障=INT
使每第 N 个写一个屏障写。
同步文件范围=字符串:整数
使用 VHDL 语言编写 同步文件范围(2) 对每个 val 的写操作数。 菲奥会追踪
自上次以来发生的写入范围 同步文件范围(2) 呼叫。 str 可以
目前是以下一项或多项:
等待之前
SYNC_FILE_RANGE_WAIT_BEFORE
写 SYNC_FILE_RANGE_WRITE
等待之后
SYNC_FILE_RANGE_WRITE
因此,如果您执行 sync_file_range=wait_before,write:8,fio 将使用
SYNC_FILE_RANGE_WAIT_BEFORE | SYNC_FILE_RANGE_WRITE 每 8 次写入。 另见
这些因素包括原料奶的可用性以及达到必要粉末质量水平所需的工艺。 同步文件范围(2) 手册页。 此选项是 Linux 特定的。
覆盖=布尔
如果写入,请先设置文件并进行覆盖。 默认值:假。
结束同步=布尔
写入阶段完成后同步文件内容。 默认值:假。
关闭时fsync=布尔
如果为 true,则在关闭时同步文件内容。 这不同于 结束同步 因为它会
发生在每次结束时,而不仅仅是在工作结束时。 默认值:假。
混合读取=INT
应该读取的混合工作负载的百分比。 默认值:50。
写入=INT
应该写入的混合工作负载的百分比。 如果 混合读取 和 写入
给出并且总和不为 100%,两者中的后者覆盖第一个。 这个
如果要求 fio 限制读取或写入,则可能会干扰给定的速率设置
到一定的速度。 如果是这种情况,则分布可能会出现偏差。
默认值:50
随机分布=字符串:浮动
默认情况下,fio 将在要求时使用完全均匀的随机分布
执行随机IO。 有时在特定情况下偏斜分布很有用
方式,确保数据的某些部分比其他部分更热。 菲奥包括
以下分布模型:
随机 均匀随机分布
压缩包 Zipf 分布
帕累托 帕累托分布
使用 zipf 或帕累托分布时,还需要输入值
定义访问模式。 对于 zipf,这是 zipf theta。 对于帕累托,它是
帕累托权力。 Fio 包含一个测试程序 genzipf,可用于可视化
给定的输入值将产生命中率。 如果你想使用 zipf
如果 theta 为 1.2,您可以使用 random_distribution=zipf:1.2 作为选项。 如果一个
使用非均匀模型,fio 将禁用随机映射。
百分比_随机=INT
对于随机工作负载,设置随机百分比的大小。 这默认为
100%,在这种情况下,工作负载是完全随机的。 它可以从任何地方设置
0 到 100。将其设置为 0 将使工作负载完全按顺序进行。 有可能的
为读取、写入和修剪设置不同的值。 为此,只需使用逗号
分隔列表。 看 块大小.
无随机映射
通常情况下 FIO 执行随机 I/O 时将覆盖文件的每个块。 如果这
给定参数,将在不查看过去的 I/O 的情况下选择新的偏移量
历史。 该参数与 确认.
软随机映射=布尔
参见 无随机映射. 如果 fio 在启用随机块映射的情况下运行并且它无法
分配地图,如果设置了这个选项,它将在没有随机块的情况下继续
地图。 由于覆盖范围不会像随机地图那样完整,因此此选项是
默认禁用。
随机生成器=STR
Fio 支持以下引擎为随机 IO 生成 IO 偏移:
陶斯沃思
强大的 2^88 循环随机数生成器
低速 线性反馈移位寄存器发生器
陶斯沃斯64
强大的 64 位 2^258 循环随机数生成器
Tausworthe 是一个强大的随机数生成器,但它需要跟踪
这些因素包括原料奶的可用性以及达到必要粉末质量水平所需的工艺。
如果我们想确保块只被读取或写入一次。 LFSR
保证我们永远不会产生两次相同的偏移量,而且它也更少
计算成本高。 然而,它不是一个真正的随机生成器,但对于 IO
目的它通常足够好。 LFSR 仅适用于单个块大小,不适用于
使用多个块大小的工作负载。 如果用于这样的工作负载,fio 可能
多次读取或写入一些块。
不错=INT
以给定的好值运行作业。 看 不错(2)。
PRIO=INT
将此作业的 I/O 优先级值设置在 0(最高)和 7(最低)之间。 看
离子(1)。
优先级=INT
设置 I/O 优先级。 看 离子(1)。
思考时间=INT
在发出 I/O 之间的给定微秒数内停止作业。
思考时间旋转=INT
假装在给定的微秒数内花费 CPU 时间,其余时间休眠
指定的时间 思考时间. 仅当 思考时间 置。
thinktime_块=INT
仅在设置 thinktime 时有效 - 在等待之前控制要发出的块数
思考时间 微秒。 如果未设置,默认为 1,这将使 fio 等待
思考时间 每个块后的微秒。 这有效地使任何队列深度
设置冗余,因为在我们必须之前排队的 IO 不会超过 1 个
完成它并做我们的思考时间。 换句话说,此设置有效地限制了
如果后者较大,则队列深度。 默认值:1。
率=INT
此作业使用的上限带宽。 数字以字节/秒为单位,正常的后缀
规则适用。 您可以使用 率=500k 将读取和写入限制为每个 500k,或者您
可以分别指定读写。 使用 率=1m,500k 会将读取限制为
1MB/秒,写入 500KB/秒。 上限只能读取或写入可以完成
率=,500k 或 率=500k,。 前者只会限制写入(到 500KB/秒),
后者只会限制读取。
速率最小值=INT
告诉 FIO 尽其所能至少维持给定的带宽。 失败
满足此要求将导致作业退出。 相同的格式 率 is
用于读写分离。
速率_iops=INT
将带宽限制为此数量的 IOPS。 与rate基本相同,只是
独立于带宽指定。 相同的格式 率 用于读取 vs
写分离。 如果 块大小 是一个范围,最小的块大小用作
指标。
最低 iops 速率=INT
如果未达到此 I/O 速率,则作业将退出。 相同的格式 率 用来
用于读写分离。
率周期=INT
平均带宽 率 和 速率最小值 超过这个毫秒数。 默认:
1000ms。
延迟目标=INT
如果设置,fio 将尝试找到给定工作负载的最大性能点
将在保持低于此目标的延迟的同时运行。 值在
微秒。 看 延迟窗口 和 延迟百分比.
延迟窗口=INT
用于 延迟目标 指定运行作业的示例窗口
不同的队列深度来测试性能。 该值以微秒为单位。
延迟百分比=浮动
必须符合指定标准的 IO 百分比
延迟目标 和 延迟窗口. 如果未设置,则默认为 100.0,这意味着
所有 IO 必须等于或低于设置的值 延迟目标.
最大延迟=INT
如果设置,如果超过此最大延迟,fio 将退出作业。 它将退出
ETIME 错误。
处理器掩码=INT
为此作业设置 CPU 亲和性。 INT 是作业可能运行的允许 CPU 的位掩码。
参见 sched_setaffinity(2)。
允许的CPU=STR
与...一样 处理器掩码, 但允许以逗号分隔的 CPU 编号列表。
cpus_allowed_policy=STR
设置 fio 如何分配指定的 CPU 的策略 允许的CPU or
处理器掩码. 支持两种策略:
共用的, 所有作业将共享指定的 CPU 集。
分裂 每个作业将从 CPU 集中获得一个唯一的 CPU。
共用的, 如果未指定选项,则为默认行为。 如果 分裂 is
指定,然后 fio 将为每个作业分配一个 CPU。 如果没有足够的 CPU 用于
列出的作业,然后 fio 将轮询集合中的 CPU。
numa_cpu_节点=STR
将此作业设置为在指定的 NUMA 节点的 CPU 上运行。 参数允许逗号
cpu 编号、AB 范围或“全部”的分隔列表。
numa_mem_policy=STR
设置此作业的内存策略和相应的 NUMA 节点。 参数的格式:
[: ]
模式 是以下内存策略之一:
默认, 更喜欢, 绑定, 交错, 本地
对于 默认 和 本地 内存策略,没有 节点列表 is
需要指定。 为了 比较喜欢,只允许一个节点。 为了 绑定 和
交错, 节点列表 允许以逗号分隔的数字列表、AB 范围或“全部”。
启动延迟=伊兰奇
将作业开始延迟指定的秒数。 支持所有时间后缀
允许指定小时、分钟、秒和毫秒 - 秒是
如果省略单位,则为默认值。 可以作为导致每个线程的范围给出
随机选择范围之外。
运行=INT
在指定的秒数后终止处理。
基于时间
如果给定,则运行指定的 运行 持续时间即使文件完全
读或写。 相同的工作量将重复多次 运行
允许。
斜坡时间=INT
如果设置,fio 将在记录之前运行指定的工作负载此时间量
任何性能数字。 用于在记录之前让性能稳定下来
结果,从而最大限度地减少稳定结果所需的运行时间。 请注意,
斜坡时间 被认为是工作的提前期,因此它会增加总
如果指定了特殊的超时或运行时间。
废止=布尔
在启动 I/O 之前使文件的缓冲区缓存无效。 默认值:真。
同步=布尔
使用同步 I/O 进行缓冲写入。 对于大多数 I/O 引擎,这
表示使用 O_SYNC。 默认值:假。
爱因斯坦=STR, 成员=STR
I/O 单元缓冲区的分配方法。 允许的值为:
分配 分配内存 分配(3)。
SHM 使用通过分配的共享内存缓冲区 什姆格特(2)。
巨大的
与...一样 SHM,但使用大页面作为支持。
MMAP 使用 VHDL 语言编写 MMAP(2) 分配。 除非文件名,否则使用匿名内存
在选项后以`:文件'.
巨噬细胞
与...一样 MMAP,但使用大文件作为后盾。
分配的内存量是允许的最大值 块大小 为了工作
乘以 深度。 对于 巨大的 or 巨噬细胞 要工作,系统必须有免费的
分配的大页面。 巨噬细胞 还需要安装hugetlbfs,并且 文件 必须
指向那里。 至少在 Linux 上,必须手动分配大页面。 看
/proc/sys/vm/nr_hugehages 以及相关的文档。 通常你只需要
回显适当的数字,例如回显 8 将确保操作系统有 8 个大页面
准备启用。
iomem_align=INT, 内存对齐=INT
这表示 IO 内存缓冲区的内存对齐。 请注意,给定的
对齐应用于第一个 IO 单元缓冲区,如果使用 深度 的对齐
以下缓冲区由 bs 用过的。 换句话说,如果使用一个 bs 这
是系统中页面大小的倍数,所有缓冲区都将与此对齐
价值。 如果使用一个 bs 即不页对齐,后续IO的对齐
内存缓冲区是 iomem_align 和 bs 用过的。
大页面大小=INT
定义大页面的大小。 必须至少等于系统设置。
应该是 1MB 的倍数。 默认值:4MB。
出口
当一个作业完成时终止所有作业。 默认值:等待每个作业完成。
时间=INT
给定时间内的平均带宽计算(以毫秒为单位)。 默认:
500ms。
平均IOPS时间=INT
给定时间内的平均 IOPS 计算(以毫秒为单位)。 默认值:500 毫秒。
创建序列化=布尔
如果为 true,则为作业序列化文件创建。 默认值:真。
创建_fsync=布尔
FSYNC(2) 创建后的数据文件。 默认值:真。
创建时打开=布尔
如果为 true,则在作业为 IO 打开文件之前不会创建这些文件。
仅创建=布尔
如果为 true,fio 将只运行作业的设置阶段。 如果需要布置文件
或在磁盘上更新,仅此而已。 实际工作内容并非
被执行。
允许文件创建=布尔
如果为 true,则允许 fio 创建文件作为其工作负载的一部分。 这是
默认行为。 如果此选项为 false,则 fio 将在文件中出错
需要使用的不存在。 默认值:真。
允许挂载写入=布尔
如果未设置,fio 将中止破坏性(例如写入)的作业
似乎是已安装的设备或分区。 这应该有助于捕捉创建
无意中破坏性测试,没有意识到测试会破坏数据
挂载的文件系统。 默认值:假。
预读=布尔
如果给定,文件将在启动给定 IO 之前预读入内存
手术。 这也将清除 废止 标志,因为预先设置是没有意义的
读取然后删除缓存。 这仅适用于可查找的 IO 引擎,
因为它们允许您多次读取相同的数据。 因此它不会工作
例如网络或拼接 IO。
取消链接=布尔
完成后取消链接作业文件。 默认值:假。
循环=INT
指定此作业的迭代次数(相同工作负载的运行)。
默认值:1
仅验证=布尔
不执行指定的工作量,只验证数据仍然匹配以前的
调用此工作负载。 此选项允许您多次检查数据
以后的日期而不覆盖它。 此选项仅对工作负载有意义
写入数据,并且不支持工作负载 基于时间 选项集。
做验证=布尔
在写入阶段之后运行验证阶段。 仅当 确认 设置。 默认:
真实的。
确认=STR
在作业的每次迭代后验证文件内容的方法。 每个
验证方法也隐含着对特殊头的验证,它是写成的
到每个块的开头。 此标头还包含元信息,例如
块的偏移量、块号、块写入时的时间戳等。
确认=str 可以与 验证模式=str 选项。 允许的值为:
md5 crc16 crc32 CRC32c crc32c-英特尔 crc64 crc7 sha256 sha512 sha1 散列
在每个块的标题中存储适当的校验和。 crc32c-英特尔
是硬件加速的 SSE4.2 驱动,回退到常规 crc32c
如果系统不支持。
目标 此选项已弃用,因为现在元信息包含在
默认情况下会发生通用验证标头和元验证。
有关详细信息,请参阅对 确认=海峡
环境。 保留此选项是因为与旧版本兼容
配置。 不要使用它。
模式
验证严格的模式。 通常 fio 包括一个带有一些的标头
基本信息和校验和,但如果设置了此选项,则仅
设置的特定模式 验证模式 被验证。
空 假装验证。 用于测试内部。
此选项可用于系统的重复老化测试,以确保
写入的数据也被正确读回。 如果给定的数据方向是读
或随机读取,fio 将假定它应该验证以前写入的文件。 如果
数据方向包括任何形式的写入,验证将是新的
写入的数据。
验证排序=布尔
如果为真,则对写入的验证块进行排序,如果 FIO 认为阅读它们会更快
以有序的方式返回。 默认值:真。
验证排序编号=INT
为读取工作负载预加载和排序验证块。
验证偏移量=INT
在写入之前,将验证标头与块中其他位置的数据交换。
它在验证之前被交换回来。
验证间隔=INT
写入这个字节数的验证头,它应该划分
块大小. 默认: 块大小.
验证模式=STR
如果设置,fio 将使用此模式填充 io 缓冲区。 Fio默认填充
使用完全随机的字节,但有时用已知的字节填充很有趣
用于 io 验证目的的模式。 根据图案的宽度,fio
此时将填充缓冲区的 1/2/3/4 个字节(它可以是十进制数或
十六进制数)。 如果大于 32 位数量,verify_pattern 必须是十六进制
以“0x”或“0X”开头的数字。 与 确认=str。 还,
verify_pattern 支持 %o 格式,这意味着对于每个块偏移量将是
写入然后验证回来,例如:
验证模式=%o
或者使用所有内容的组合:
验证模式=0xff%o"abcd"-21
验证致命=布尔
如果为 true,则在第一次观察到验证失败时退出作业。 默认值:假。
验证转储=布尔
如果设置,转储原始数据块和我们的数据块的内容
从磁盘读取到文件。 这允许以后的分析来检查究竟是什么类型的
发生数据损坏。 默认关闭。
验证异步=INT
Fio 通常会从提交线程内联验证 IO。 此选项需要一个
描述为 IO 验证创建多少异步卸载线程的整数
相反,导致 fio 将验证 IO 内容的职责卸载到一个或多个
单独的线程。 如果使用此卸载选项,即使同步 IO 引擎也能受益
从使用 深度 设置高于 1,因为它允许他们在飞行中进行 IO
而验证正在运行。
验证异步CPU=STR
告诉 fio 在异步 IO 验证线程上设置给定的 CPU 关联。 看
允许的CPU 对于使用的格式。
验证积压=INT
Fio 通常会验证使用 verify once 的作业的写入内容
那个工作已经完成。 换句话说,一切都写了,然后一切都是
回读并验证。 您可能希望针对各种不同的情况不断验证
原因。 Fio 将与 IO 块关联的元数据存储在内存中,因此对于
大型验证工作负载,将使用相当多的内存来保存此元数据
数据。 如果启用此选项,fio 将在验证之前只写入 N 个块
这些块。
验证积压批次=INT
如果设置了 verify_backlog ,则控制 fio 将验证多少块。 如果没有设置,将
默认值为 验证积压 (意味着整个队列被读回并
验证)。 如果 验证积压批次 小于 验证积压 然后不是所有的块
将被验证,如果 验证积压批次 大于 验证积压一些
区块将被验证不止一次。
修剪百分比=INT
要丢弃/修剪的验证块数。
修剪验证零=布尔
验证修剪/丢弃的块是否以零形式返回。
修剪积压=INT
在写入此数量的块后进行修剪。
修剪积压批次=INT
修剪此数量的 IO 块。
实验验证=布尔
启用实验验证。
验证状态保存=布尔
当作业在验证工作负载的写入阶段退出时,保存其当前
状态。 如果验证状态已加载,这允许 fio 重播直到该点
对于验证读取阶段。
验证状态加载=布尔
如果使用了验证终止触发器,fio 会存储当前的写入状态
每个线程。 这可以在验证时使用,以便 fio 知道它有多远
应该验证。 如果没有这些信息,fio 将运行完整的验证通过,
根据使用的作业文件中的设置。
石墙 , 等待上一个
等待作业文件中的先前作业退出,然后再启动此作业。
石墙 暗示 新组.
新组
开始一个新的报告组。 如果没有给出,文件中的所有作业都将成为
同一个报告组,除非被石墙隔开。
工作数=INT
此作业的克隆数(执行相同工作负载的进程/线程)。
默认值:1
集团报告
如果设置,则在以下情况下显示每个组的报告而不是每个作业 工作数 已指定。
绪 使用创建的线程 线程创建(3) 而不是用创建的进程
叉(2)。
区域大小=INT
将文件划分为指定大小的区域(以字节为单位)。 看 跳区.
区域范围=INT
给出 IO 区域的大小。 看 跳区.
跳区=INT
跳过指定的字节数时 区域大小 已读取数据字节。
写日志=STR
将发出的 I/O 模式写入指定的文件。 指定一个单独的文件
每个作业,否则 iologs 将散布并且文件可能损坏。
读日志=STR
重放由生成的指定文件中包含的 I/O 模式 写日志,
或者可能是一个 跟踪 二进制文件。
重播无停顿=INT
在使用重放 I/O 模式时 读日志 默认行为试图
尊重 I/O 之间的时序信息。 启用 重播无停顿 导致 I/O
尽可能快地重播,同时仍然尊重排序。
重播重定向=STR
在使用重放 I/O 模式时 读日志 默认行为是重播
IOPS 到记录每个 IOP 的主要/次要设备上。 环境
重播重定向 导致所有 IOPS 重放到单个指定设备上
不管它是从哪个设备录制的。
重放对齐=INT
将跟踪中的 IO 偏移量和长度强制对齐为 2 的幂值。
重播规模=INT
重放轨迹时,按此系数缩小扇区偏移量。
每个作业日志=布尔
如果设置,这将生成带有每个文件私有文件名的 bw/clat/iops 日志。 如果不
设置,具有相同名称的作业将共享日志文件名。 默认值:真。
写_bw_log=STR
如果给定,则在此作业文件中写入作业的带宽日志。 可用于存储
作业在其生命周期中的带宽数据。 包含的
fio_generate_plots 脚本使用 gnuplot 将这些文本文件转换为漂亮的图形。
参见 写经纬度日志 对于给定文件名的行为。 对于这个选项,后缀是
_bw.x.log,其中 x 是作业的索引(1..N,其中 N 是作业数)。
If 每个作业日志 为 false,则文件名将不包含作业索引。
写经纬度日志=STR
与...一样 写_bw_log,但写入 I/O 完成延迟。 如果没有给出文件名
使用此选项,将使用“jobname_type.x.log”的默认文件名,其中 x 是
作业的索引(1..N,其中 N 是作业数)。 即使文件名是
给定,fio 仍然会附加日志的类型。 如果 每个作业日志 是假的,那么
文件名将不包括作业索引。
写IOPS日志=STR
与...一样 写_bw_log,但写入 IOPS。 如果此选项没有给出文件名,
使用“jobname_type.x.log”的默认文件名,其中 x 是
作业(1..N,其中 N 是作业数)。 即使给出了文件名,fio 也会
仍然附加日志的类型。 如果 每个作业日志 为假,则文件名不会
包括工作索引。
log_avg_msec=INT
默认情况下,fio 会在 iops、latency 或 bw 日志中为每个 IO 记录一个条目
完成。 写入磁盘日志时,它会迅速增长到非常大
尺寸。 设置此选项会使 fio 对指定的每个日志条目进行平均
一段时间,降低日志的分辨率。 默认为 0。
日志偏移量=布尔
如果设置了此项,iolog 选项将包括 IO 条目的字节偏移量,如
以及其他数据值。
日志压缩=INT
如果设置了这个,fio 将在执行过程中压缩 IO 日志,以保持内存
足迹更低。 当日志达到指定的大小时,该块将被删除并
在后台压缩。 鉴于 IO 日志具有相当高的可压缩性,
这为更长时间的运行带来了很好的内存节省。 缺点是
压缩会消耗一些后台CPU周期,所以可能会影响运行。
但是,如果日志记录最终消耗了大部分系统,这也是正确的
记忆。 所以选择你的毒药。 IO 日志通常在运行结束时保存,通过
解压缩块并将它们存储在指定的日志文件中。 此功能
取决于 zlib 的可用性。
日志存储压缩=布尔
如果设置,并且 日志_compression 也被设置,fio 会将日志文件存储在一个
压缩格式。 它们可以用 fio 解压,使用 --膨胀日志
命令行参数。 这些文件将存储在一个 .fz 后缀。
块错误百分比=布尔
如果设置,则从写入和修剪中以修剪块大小的单位记录错误并输出
达到错误需要多少次修剪的直方图,以及什么样的错误
遭遇。
禁用_lat=布尔
禁用总延迟数的测量。 仅用于削减
呼叫次数 获取时间(2),因为这确实会影响性能非常高
IOPS 率。 请注意,要真正摆脱大量这些调用,这
选项也必须与 disable_slat 和 disable_bw 一起使用。
禁用_clat=布尔
禁用完成延迟数的测量。 看 禁用_lat.
禁用板条=布尔
禁用提交延迟数字的测量。 看 禁用_lat.
禁用_bw_测量=布尔
禁用吞吐量/带宽数字的测量。 看 禁用_lat.
锁存器=INT
固定指定的内存量 锁(2). 可以用来模拟一个
较小的内存量。 指定的金额是每个工人。
执行预运行=STR
在运行作业之前,执行指定的命令 系统(3)。
输出被重定向到一个名为 作业名称.prerun.txt
执行后运行=STR
与...一样 执行预运行,但该命令在作业完成后执行。
输出被重定向到一个名为 作业名称.postrun.txt
ios调度器=STR
尝试将托管文件的设备切换到指定的 I/O 调度程序。
磁盘工具=布尔
如果平台支持,则生成磁盘利用率统计信息。 默认值:真。
时钟源=STR
使用给定的时钟源作为计时的基础。 支持的选项是:
获取时间
获取时间(2)
时钟获取时间
时钟获取时间(2)
CPU 内部 CPU 时钟源
CPU 如果可靠,则是首选时钟源,因为它非常快
(并且 fio 对时间调用很繁重)。 如果出现以下情况,Fio 将自动使用此时钟源
它在运行的系统上得到支持并被认为是可靠的,除非
另一个时钟源是专门设置的。 对于 x86/x86-64 CPU,这意味着支持
TSC 不变量。
gtod_reduce=布尔
启用所有 获取时间(2) 减少选项(disable_clat、disable_slat、
disable_bw) 加上稍微降低超时的精度以真正缩小
获取时间(2)调用计数。 启用此选项后,我们只执行大约 0.4% 的
gtod() 调用,如果启用所有时间保持,我们会完成。
gtod_cpu=INT
有时,将单个执行线程专门用于获取
当前时间。 Fio(和数据库,例如)是非常密集的
获取时间(2)调用。 使用此选项,您可以留出一个 CPU 用于执行
只是将当前时间记录到共享内存位置。 然后另一个
运行 IO 工作负载的线程/进程只需要复制该段,而不是
进入内核 获取时间(2) 呼叫。 为执行这些操作而预留的 CPU
时间调用将被排除在其他用途之外。 Fio 将手动从
其他作业的 CPU 掩码。
忽略错误=STR
有时你想在测试过程中忽略一些错误,在这种情况下你可以指定
每种错误类型的错误列表。
忽略错误=READ_ERR_LIST、WRITE_ERR_LIST、VERIFY_ERR_LIST
给定错误类型的错误用“:”分隔。 错误可能是符号 ('ENOSPC',
'ENOMEM') 或整数。
示例: ignore_error=EAGAIN,ENOSPC:122 。
此选项将忽略 READ 中的 EAGAIN,以及 WRITE 中的 ENOSPC 和 122(EDQUOT)。
错误转储=布尔
如果设置转储每个错误,即使它不是致命的,默认情况下为 true。 如果仅禁用
致命错误将被转储
轮廓=STR
选择特定的内置性能测试。
群=STR
将作业添加到此控制组。 如果它不存在,它将被创建。 系统
必须有一个挂载的 cgroup blkio 挂载点才能工作。 如果你的系统
没有安装它,你可以这样做:
# mount -t cgroup -o blkio none /cgroup
cgroup_权重=INT
将 cgroup 的权重设置为该值。 请参阅随附的文档
内核,允许的值在 100..1000 的范围内。
cgroup_nodelete=布尔
通常 fio 会在作业完成后删除它创建的 cgroup。 到
覆盖此行为并在作业完成后留下 cgroups,设置
cgroup_nodelete=1。 如果想要检查各种 cgroup 文件,这会很有用
工作完成后。 默认值:假
的uid=INT
不是作为调用用户运行,而是在调用之前将用户 ID 设置为此值
线程/进程做任何工作。
GID=INT
设置组ID,见 的uid.
单位基地=INT
报告的基本单位。 允许的值为:
0 使用自动检测(默认)。
8 基于字节。
1 基于位。
流ID=INT
流的 ID。 如果未指定,则默认为全局流。 看 流.
流=INT
基于令牌的流控制中的权重。 如果使用此值,则有一个 流
对付 用于调节两个或多个之间的活动比例
工作。 fio 试图保持这个流量计数器接近于零。 这 流 参数站
在每次迭代中应该向流量计数器添加或减去多少
主 I/O 循环。 也就是说,如果一项工作有 流量=8 另一个工作有 流量=-1, 然后
一个人与另一个人的跑步量大约有 1:8 的比例。
流水印=INT
流量计数器绝对值允许达到的最大值
作业之前必须等待计数器的较低值。
流动睡眠=INT
流水印完成后等待的时间段(以微秒为单位)
重试操作前超出
clat_百分位数=布尔
启用完成延迟百分比的报告。
百分位列表=浮动列表
覆盖完成延迟和块的默认百分位数列表
错误直方图。 每个数字都是 (0,100] 范围内的浮点数,并且
列表的最大长度为 20。使用“:”分隔数字。 例如,
--percentile_list=99.5:99.9 会导致fio报告完成值
延迟低于 99.5% 和 99.9% 的观察延迟分别下降。
引擎 参数 列表
某些参数仅在使用特定 ioengine 时才有效。 这些是用
与普通参数相同,但需要注意的是,在命令行上使用时,它们
必须在 ioengine 之后。
(cpu)cpu负载=INT
尝试使用指定百分比的 CPU 周期。
(cpu)cpu块=INT
将负载拆分为给定时间的循环。 以微秒为单位。
(CPU)exit_on_io_done=布尔
检测 IO 线程何时完成,然后退出。
(libaio)userspace_reap
通常,在使用 libaio 引擎时,fio 将使用 io_getevents 系统调用
获取新返回的事件。 打开此标志后,将读取 AIO 环
直接从用户空间获取事件。 收割模式仅在以下情况下启用
轮询最少 0 个事件(例如,当 iodepth_batch_complete=0 时)。
(net,netsplice) 主机名=STR
用于基于 TCP 或 UDP 的 IO 的主机名或 IP 地址。 如果作业是 TCP
侦听器或 UDP 读取器,主机名未使用且必须省略,除非它是
有效的 UDP 多播地址。
(net,netsplice)端口=INT
要绑定或连接的 TCP 或 UDP 端口。 如果这与 工作数 产卵
相同作业类型的多个实例,那么这将是起始端口号
因为 fio 将使用一系列端口。
(net,netsplice)接口=STR
用于发送或接收 UDP 多播的网络接口的 IP 地址
包。
(网络,网络拼接)ttl=INT
传出 UDP 多播数据包的生存时间值。 默认值:1
(网络,netsplice)nodelay=布尔
在 TCP 连接上设置 TCP_NODELAY。
(net,netsplice)协议=STR, 原=STR
要使用的网络协议。 接受的值为:
TCP 传输控制协议
TCPV6 传输控制协议V6
UDP 用户数据报协议
UDPV6 用户数据报协议V6
UNIX UNIX 域套接字
当协议为 TCP 或 UDP 时,还必须给出端口,以及
如果作业是 TCP 侦听器或 UDP 读取器,则为主机名。 对于 unix 套接字,正常
应该使用 filename 选项并且端口无效。
(net,netsplice)听
对于 TCP 网络连接,告诉 fio 监听传入的连接而不是
而不是启动传出连接。 如果此选项必须省略主机名
用来。
(网,乒乓)=布尔
通常网络写入器只会继续写入数据,而网络读取器
只会消耗数据包。 如果 pingpong=1 设置,作者将发送其正常
有效载荷发送给阅读器,然后等待阅读器发回相同的有效载荷。
这允许 fio 测量网络延迟。 提交和完成
延迟然后测量发送或接收花费的本地时间,以及完成
延迟衡量另一端接收和发送回所需的时间。 为了
UDP 多播流量 pingpong=1 应仅在以下情况下为单个阅读器设置
多个读者正在收听同一个地址。
(网,窗口大小)=INT
为连接设置所需的套接字缓冲区大小。
(网,女士)=INT
设置 TCP 最大段大小 (TCP_MAXSEG)。
(e4defrag,捐助者名称)=STR
文件将用作块捐助者(文件之间的交换范围)
(e4defrag,就地)=INT
配置施主文件块分配策略
0(默认): 在 init 上预分配捐赠者的文件
1: 在碎片整理事件中立即分配空间,并在之后立即释放
活动
(rbd)rbd 名称=STR
指定 RBD 的名称。
(rbd) 池=STR
指定包含 RBD 的 Ceph 池的名称。
(rbd) 客户名=STR
指定用于访问 Ceph 的用户名(不带 'client.' 前缀)
簇。
(mtd)跳过=布尔
跳过针对已知坏块的操作。
OUTPUT
在跑步的时候, FIO 将显示已创建作业的状态。 例如:
主题:1:[_r] [完成 24.8%] [13509/ 8334 kb/s] [eta 00h:01m:31s]
第一组括号中的字符表示每个线程的当前状态。
可能的值是:
P 设置但未启动。
C 线程已创建。
I 初始化,等待。
R 运行,执行顺序读取。
r 运行,做随机读取。
W 运行,执行顺序写入。
w 运行,随机写入。
M 运行,混合顺序读/写。
m 运行,混合随机读/写。
F 正在运行,正在等待 FSYNC(2)。
V 运行,验证写入的数据。
E 退出,没有被主线程收割。
- 退出,线程收获。
第二组括号显示当前组的估计完成百分比。
第三组分别显示读取和写入 I/O 速率。 最后,估计运行
显示作业时间。
在规划婴儿食品行业的工艺要求时,安全性和可靠性是工艺设计中最重要的方面。 FIO 完成(或被 Ctrl-C 中断),它将显示每个线程的数据,每个线程
线程组和每个磁盘,按此顺序。
每线程统计首先显示线程客户端编号、组 ID 和错误代码。 这
其余数字如下:
io 执行的 I/O 的兆字节数。
bw 平均数据速率(带宽)。
侏儒 线程运行时间。
板条 提交延迟最小值、最大值、平均值和标准偏差。 这是
提交 I/O 所花费的时间。
包容 完成延迟的最小值、最大值、平均值和标准偏差。 这个
是提交和完成之间的时间。
bw 带宽最小值、最大值、接收到的聚合带宽的百分比,
平均值和标准差。
CPU CPU 使用情况统计。 包括用户和系统时间、上下文数量
切换此线程经历的主要和次要页面错误的数量。
IO 深度
I/O 深度分布。 每个深度包括小于(或
等于),但大于之前的深度。
IO 发行
发出的读/写请求数和短读/写数
请求。
IO 延迟
I/O 完成延迟的分布。 数字是一样的
模式为 IO 深度.
集团统计显示:
io 执行的 I/O 兆字节数。
聚集地 组中线程的聚合带宽。
民政局 线程看到的最小平均带宽。
马克斯 线程看到的最大平均带宽。
薄荷 组中线程的最短运行时间。
最大 组中线程的最长运行时间。
最后,首先打印磁盘统计信息:
IOS 所有组执行的 I/O 数。
合并 I/O 调度程序中的合并数。
蜱 我们保持磁盘忙碌的滴答数。
io_queue
在磁盘队列中花费的总时间。
效用 磁盘利用率。
还可以让 fio 在运行时转储当前输出,而无需
终止工作。 为此,请发送 fio 1 美元 信号。
特斯 OUTPUT
如果 --最小 / --追加简洁 给出选项,结果将被打印/附加
以适合脚本使用的分号分隔格式。 工作描述(如果
提供)在一个新行上。 请注意,该行中的第一个数字是版本
数字。 如果由于某种原因必须更改输出,则此数字将增加
由 1 表示该更改。 这些字段是:
简洁 版, FIO 版, 工作名称, 组名, 错误
读取状态:
合计 I / O (知识库), 带宽 (KB/秒), IOPS, 运行 (女士)
提交延迟:
分钟, 最大 意思是, 偏差
完成延迟:
分钟, 最大 意思是, 偏差
完成延迟百分位数(20 个字段):
第 X 个 百分位数=usec
总延迟:
分钟, 最大 意思是, 偏差
带宽:
分钟, 最大 骨料 百分比 of 总计, 意思是, 偏差
写入状态:
合计 I / O (知识库), 带宽 (KB/秒), IOPS, 运行 (女士)
提交延迟:
分钟, 最大 意思是, 偏差
完成延迟:
分钟, 最大 意思是, 偏差
完成延迟百分位数(20 个字段):
第 X 个 百分位数=usec
总延迟:
分钟, 最大 意思是, 偏差
带宽:
分钟, 最大 骨料 百分比 of 总计, 意思是, 偏差
CPU使用率:
用户, 系统, 上下文 开关, 主要 页 故障, 未成年人 页 故障
IO深度分布:
<=1, 2, 4, 8, > = 64
IO延迟分布:
微秒:
<=2, 4, 1000
毫秒:
<=2, 4, > = 2000
磁盘利用率(每个磁盘使用 1 个):
名称, 读 ios, 写 ios, 读 合并, 写 合并, 读 蜱虫, 写
蜱虫, 读 入队 时间, 写 入队 时间, 磁盘 采用 百分比
错误信息(取决于 continue_on_error,默认关闭):
总 # 错误, 第一 错误 码
文本 描述 (如果 提供 in 配置 - 出现 on 新队)
客户 / 服务器
通常,您会在 IO 所在的机器上将 fio 作为独立应用程序运行
应该产生工作量。 但是,也可以运行前端和后端
fio 分别。 这使得在机器上运行 fio 服务器成为可能
IO 工作负载应该在哪里运行,同时从另一台机器控制它。
要启动服务器,您将执行以下操作:
FIO --服务器=参数
在那台机器上,args 定义了 fio 听什么。 参数的形式是
'类型:主机名或 IP:端口'。 'type' 是 TCP/IP v4 的 'ip'(或 ip4),TCP/IP 的 'ip6'
v6 或本地 unix 域套接字的“sock”。 'hostname' 是主机名或 IP
地址,'port' 是要侦听的端口(仅对 TCP/IP 有效,对本地套接字无效)。
一些例子:
1) 菲奥--服务器
启动 fio 服务器,在默认端口 (8765) 上侦听所有接口。
2) fio --server=ip:主机名,4444
启动一个 fio 服务器,监听属于主机名的 IP 和端口 4444。
3) fio --server=ip6:::1,4444
启动 fio 服务器,侦听 IPv6 localhost ::1 和端口 4444。
4) fio --服务器=,4444
启动一个 fio 服务器,监听端口 4444 上的所有接口。
5) fio--服务器=1.2.3.4
启动 fio 服务器,在默认端口上侦听 IP 1.2.3.4。
6) fio --server=sock:/tmp/fio.sock
启动 fio 服务器,监听本地套接字 /tmp/fio.sock。
当服务器运行时,您可以从客户端连接到它。 客户端运行:
fio --local-args --client=server --remote-args
其中 --local-args 是运行它的客户端本地的参数,
'server' 是连接字符串,--remote-args 和被送到
服务器。 “服务器”字符串遵循与服务器端相同的格式,以
允许 IP/主机名/套接字和端口字符串。 您也可以连接到多个客户端,
为此,您可以运行:
fio --client=server2 --client=server2
如果作业文件位于 fio 服务器上,那么您可以告诉服务器加载本地
文件也是如此。 这是通过使用 --remote-config 完成的:
fio --client=服务器 --remote-config /path/to/file.fio
然后 fio 将打开这个本地(到服务器)作业文件,而不是从
客户端。
如果您有许多服务器(例如:100 个虚拟机/容器),您可以输入文件的路径名
包含主机 IP/名称作为 --client 选项的参数值。 例如,
这是一个包含 2 个主机名的示例“host.list”文件:
host1.your.dns.domain
host2.your.dns.domain
fio 命令将是:
fio --client=host.list
在此模式下,您无法输入特定于服务器的参数或作业文件,所有服务器
接收相同的作业文件。
为了启用 fio --client 使用来自多个主机的共享文件系统运行,
fio --client 现在将服务器的 IP 地址添加到文件名中。 例如,如果
fio 正在使用目录 /mnt/nfs/fio 并使用 --client 写入文件名 fileio.tmp
包含两个主机名 h1 和 h2 的主机文件,IP 地址为 192.168.10.120 和
192.168.10.121,那么fio会创建两个文件:
/mnt/nfs/fio/192.168.10.120.fileio.tmp
/mnt/nfs/fio/192.168.10.121.fileio.tmp
作者
FIO 由 Jens Axboe 编写[email protected]>, 现在是 Jens Axboe[email protected]>.
本手册页由 Aaron Carroll 编写[email protected]> 基于文档
通过延斯·阿克斯博。
REPORTING BUGS
将错误报告给 FIO 邮件列表[email protected]>. 看 读我.
使用 onworks.net 服务在线使用 fio
