「fio」- 输出内容解释

  CREATED BY JENKINSBOT

问题描述

官方文档已解释 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