问题描述
官方文档已解释 fio 的输出内容,我们也完成学习,但是我们并没有记住;
所以,我们将再次学习 fio 输出的内容(各个字段的含义),并记录该笔记;
该笔记将记录:fio 输出内容的含义,核心目的是便于以后的快速查阅;
解决方案
针对输出内容的详细解释,建议 fio/1.15. Interpreting the output 文档,该笔记仅记录我们需要关注的内容;
运行时,状态输出
Jobs: 20 (f=20): [R(10),W(10)][4.0%][r=20.5MiB/s,w=23.5MiB/s][r=82,w=94 IOPS][eta 57m:36s] | |-+--| |-----+-----||-+--||-----------+-----------||------+-------||-----+-----| | | | | | | | | | | | | | 剩余运行时间; | | | | | r/w IOPS; | | | | r/w Bandwidth; | | | 预计完成百分比; | | | | | 10 个 Job 在进行 Read;10 个 Job 在进行 Write 操作; | | | 已打开 20 个文件; | 正在运行并执行 IO 的进程数;
运行后,报告输出
输出概览(Overview)
Client1: (groupid=0, jobs=1): err= 0: pid=16109: Sat Jun 24 12:07:54 2017 write: IOPS=88, BW=623KiB/s (638kB/s)(30.4MiB/50032msec) slat (nsec): min=500, max=145500, avg=8318.00, stdev=4781.50 clat (usec): min=170, max=78367, avg=4019.02, stdev=8293.31 lat (usec): min=174, max=78375, avg=4027.34, stdev=8291.79 clat percentiles (usec): | 1.00th=[ 302], 5.00th=[ 326], 10.00th=[ 343], 20.00th=[ 363], | 30.00th=[ 392], 40.00th=[ 404], 50.00th=[ 416], 60.00th=[ 445], | 70.00th=[ 816], 80.00th=[ 6718], 90.00th=[12911], 95.00th=[21627], | 99.00th=[43779], 99.50th=[51643], 99.90th=[68682], 99.95th=[72877], | 99.99th=[78119] bw ( KiB/s): min= 532, max= 686, per=0.10%, avg=622.87, stdev=24.82, samples= 100 iops : min= 76, max= 98, avg=88.98, stdev= 3.54, samples= 100 lat (usec) : 250=0.04%, 500=64.11%, 750=4.81%, 1000=2.79% lat (msec) : 2=4.16%, 4=1.84%, 10=4.90%, 20=11.33%, 50=5.37% lat (msec) : 100=0.65% cpu : usr=0.27%, sys=0.18%, ctx=12072, majf=0, minf=21 IO depths : 1=85.0%, 2=13.1%, 4=1.8%, 8=0.1%, 16=0.0%, 32=0.0%, >=64=0.0% submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% issued rwt: total=0,4450,0, short=0,0,0, dropped=0,0,0 latency : target=0, window=0, percentile=100.00%, depth=8 Run status group 0 (all jobs): READ: bw=20.9MiB/s (21.9MB/s), 10.4MiB/s-10.8MiB/s (10.9MB/s-11.3MB/s), io=64.0MiB (67.1MB), run=2973-3069msec WRITE: bw=1231KiB/s (1261kB/s), 616KiB/s-621KiB/s (630kB/s-636kB/s), io=64.0MiB (67.1MB), run=52747-53223msec Disk stats (read/write): sda: ios=16398/16511, merge=30/162, ticks=6853/819634, in_queue=826487, util=100.00%
作业信息
Client1: (groupid=0, jobs=1): err= 0: pid=16109: Sat Jun 24 12:07:54 2017 |-+---| |-+-----| |-+--| |-+--| |---+---| |----------+-----------| | | | | | | | | | | | 进程运行结束的时间; | | | | | | | | | 进程 PID,或线程 TID; | | | | | | | 最后看到的错误 ID,为 0 表示没有错误; | | | | | 被聚合的 Job 数; | | | Group ID(与 group_reporting 有关) | Job 名称;
指标概述
write: IOPS=88, BW=623KiB/s (638kB/s)(30.4MiB/50032msec) |-+-| |-+---| |-+-----------------| |-+---| |-+-----| | | | | | | | | | 进程运行时间 | | | | | | | 执行的 I/O 总量(^2) | | | | | 平均带宽(^2 与 ^10) | | | 平均 IOPS | I/O 方向(read/write/trim)
提交延迟(slat)
slat (nsec): min=500, max=145500, avg=8318.00, stdev=4781.50 |-+-------| |-+---| |-+------| |-+-------| |-+---------| | | | | | | | | | 标准差(Standard Deviation) | | | 平均值 | | 最大值 | 最小值 提交延迟(Submission Latency),及时间单位(ms,us,ns)
提交延迟,是指 fio 从 初始化 I/O 到 提交该 I/O 所花费的时间:
针对 Async IO Engin,该时间是到 IO Engine 队列函数调用后(包括)。如果存在 commit 函数,则也包含 commit 函数; | |-+-----------------------| fio IO init -> queue/commit -> completed |-+-----------| | 针对 Sync IO Engine,该时间是到 IO Engine 队列函数被调用之前;
对于 Sync IO,此行不显示,因为 slat 可以忽略不计;
完成延迟(clat)
clat (usec): min=170, max=78367, avg=4019.02, stdev=8293.31 |-+-------| |-+---| |-+-----| |-+-------| |-+---------| | | | | | | | | | 标准差(Standard Deviation) | | | 平均值 | | 最大值 | 最小值 完成延迟(Completion Latency),及时间单位(ms,us,ns)
完成延迟,是指从提交到完成 I/O 片段的时间:
针对 Async IO Engine,其表示从 IO Engine 的队列函数(若存在 commit 函数,则也包括)完成后到 fio 得知 I/O 完成的时间; | |-+---------| fio IO init -> queue/commit -> completed |-+---------------------| | 针对 Sync IO,其表示从 I/O 提交到操作系统到完成的时间;
总计延迟(lat)
lat (usec): min=174, max=78375, avg=4027.34, stdev=8291.79 |-+------| |-+---| |-+-----| |-+-------| |-+---------| | | | | | | | | | 标准差(Standard Deviation) | | | 平均值 | | 最大值 | 最小值 延迟综合(Total Latency),及时间单位(ms,us,ns)
该时间表示从 fio 创建 I/O 单元 到 完成 I/O 操作 的时间。它是 slat 和 clat 的总和;
带宽大小(bw)
bw ( KiB/s): min= 532, max= 686, per=0.10%, avg=622.87, stdev=24.82, samples= 100 |-+--------| |-+-----| |-+-----| |-+-----| |-+------| |-+----- -| |-+---------| | | | | | | | | | | | | | 样本总数 | | | | | 标准差(Standard Deviation) | | | | 平均值 | | | 该线程在其组(每个)中收到的总聚合带宽的近似百分比 | | 最大值 | 最小值 带宽大小,及带宽单位
带宽统计,其基于样本(Simple)
只有在该组中的线程位于同一磁盘上时,最后一个值才真正有用,因为它们会竞争磁盘访问;
读写次速(IOPS)
iops : min= 76, max= 98, avg=88.98, stdev= 3.54, samples= 100 |-+--------| |-+-----| |-+-----| |-+-----| |-+-------| |-+---------| | | | | | | | | | | | 样本总数 | | | | 标准差(Standard Deviation) | | | 平均值 | | 最大值 | 最小值 IOPS
延迟分布(lat)
lat (usec) : 250=0.04%, 500=64.11%, 750=4.81%, 1000=2.79% lat (msec) : 2=4.16%, 4=1.84%, 10=4.90%, 20=11.33%, 50=5.37% lat (msec) : 100=0.65%
I/O 完成延迟的分布,指从 I/O 离开 fio 到它完成的时间。与上面单独的 read/write/trim 部分不同,此处和其余部分中的数据适用于报告组(该示例中仅包含一个组)的所有 I/O;
250=0.04% means that 0.04% of the I/Os completed in under 250us.
500=64.11% means that 64.11% of the I/Os required 250 to 499us for completion.
CPU(处理器资源使用)
cpu : usr=0.27%, sys=0.18%, ctx=12072, majf=0, minf=21 |-+---------| |-+-----| |-+-----| |-+-----| |-+--| |-+---| | | | | | | | | | | | Minor Page Faults | | | | Major Page Faults | | | 上下文切换次数; | | System Time | User Time 处理器资源
CPU 利用率数字是该报告组中作业的平均值,同时 ctx 和 Page Fault 都是相加得到的;
IO depths(深度分布)
IO depths : 1=85.0%, 2=13.1%, 4=1.8%, 8=0.1%, 16=0.0%, 32=0.0%, >=64=0.0%
以 ^2 为单位,并涵盖其后部分(16= 表示 16-31)
IO depths 占比与 IO submit、IO complete 占比有所不同;
IO submit(提交分布)
submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
在一次 submit 调用中提交了多少个 I/O
16= 表示 9-16
IO submit 占比与 IO depths 占比有所不同;
IO complete(完成分布)
complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
IO complete 占比与 IO depths 占比有所不同,但是 IO submit 与 IO complete 的占比应该是相同(或相近)的;
IO issued rwt
issued rwt: total=0,4450,0, short=0,0,0, dropped=0,0,0 |-+----------| |-+-------| |-+---------| | | | | | 丢弃的 IO 数量; | RWH_WRITE_LIFE_SHORT ? 发出的 read/write/trime 请求数;
IO latency
latency : target=0, window=0, percentile=100.00%, depth=8
该部分指标与 latency_target(及相关选项)有关。当使用这些选项时,该部分描述满足指定延迟目标所需的 I/O 深度;
Run status group x(统计部分)
Run status group 0 (all jobs): READ: bw=20.9MiB/s (21.9MB/s), 10.4MiB/s-10.8MiB/s (10.9MB/s-11.3MB/s), io=64.0MiB (67.1MB), run=2973-3069msec WRITE: bw=1231KiB/s (1261kB/s), 616KiB/s-621KiB/s (630kB/s-636kB/s), io=64.0MiB (67.1MB), run=52747-53223msec |-+-------------------| |-+-------------------------------| |-+---------------| |-+---------------| | | | | | | | 该组中线程的最小和最长运行时间; | | 该组中所有线程执行的 I/O 总量 | 该组中所有线程的最小带宽和最大带宽(^2, ^10) 该组中线程的总带宽(^2, ^10)
Disk stats(磁盘统计)
Disk stats (read/write): sda: ios=16398/16511, merge=30/162, ticks=6853/819634, in_queue=826487, util=100.00% |-+-----------| |-+--------| |-+-------------| |-+------------| |-+--------| | | | | | | | | | 磁盘使用率; | | | 在磁盘队列中花费的总时间 | | 我们保持磁盘忙碌的 ticks 数; | I/O 调度程序执行的合并数; 所有组执行的 I/O 数
参考文献
fio/1.15. Interpreting the output