性能测试工具——FIO

FIO

FIO 是一个多线程io生成工具,可以生成多种IO模式,用来测试磁盘设备的性能

测量指标说明

  • IO种类:包含各种读写方式、缓冲方式还是直接写
  • IO引擎:常规读写、异步读写、SG (SCSI generic sg)
  • IO深度:如果引擎是异步的,队列
  • 目标文件、设备:将工作量分散到多少个文件上
  • 线程、进程和作业同步:将这个工作负载分散到多少个线程或进程上

测试脚本:分别测试顺序读、随机读、顺序写、随机写的三种条件下,IO的速度,每一种测试三次。通过使用numactl进行控制。

numactl -C 1 fio --name=job --filename=/dev/vda --rw=randread --bs=4k --ioengine=libaio --direct=1 --iodepth=200 --numjobs=1 --clocksource=cpu  --norandommap --time_based --invalidate=1  --ramp_time=20 --runtime=300 | /usr/bin/tee fio_randread-01.log &

参数说明

  • --filename:测试文件名称,一般为磁盘。注意:使用会将磁盘清空!
  • --rw:读写方式
  • --bs:单次io的块大小
  • --ioengine=libaio :指定io引擎使用libaio方式。libaio:Linux本地异步I/O
  • --numjobs=1: 每个job(任务)开1个线程,这里的数目,就是后面每个用-name指定的任务线程测试数目

指标:

  • bw=平均IO带宽
  • iops=IOPS
  • runt=线程运行时间
  • slat=提交延迟,提交该IO请求到kernel所花的时间(不包括kernel处理的时间)
  • clat=完成延迟, 提交该IO请求到kernel后,处理所花的时间
  • lat=响应时间
  • bw=带宽
  • cpu=利用率
  • IO depths=io队列
  • IO submit=单个IO提交要提交的IO数
  • IO complete=Like the above submit number, but for completions instead.
  • IO issued=The number of read/write requests issued, and how many of them were short.
  • O latencies=IO完延迟的分布
  • io=总共执行了多少size的IO
  • aggrb=group总带宽
  • minb=最小.平均带宽.
  • maxb=最大平均带宽.
  • mint=group中线程的最短运行时间.
  • maxt=group中线程的最长运行时间.
  • ios=所有group总共执行的IO数.
  • merge=总共发生的IO合并数.
  • ticks=Number of ticks we kept the disk busy.
  • io_queue=花费在队列上的总共时间.
  • util=磁盘利用率

结果:一般使用lat 的avg以及iops的avg

fio: clocksource=cpu may not be reliable
job: (g=0): rw=read, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=1024
fio-3.19
Starting 1 process

job: (groupid=0, jobs=1): err= 0: pid=1916: Tue Jul  5 02:39:36 2022
  read: IOPS=238k, BW=930MiB/s (975MB/s)(272GiB/300001msec)
    slat (nsec): min=1052, max=4627.1k, avg=3290.44, stdev=16802.86
    clat (usec): min=354, max=13231, avg=4297.57, stdev=1164.98
     lat (usec): min=355, max=13232, avg=4300.94, stdev=1165.29
    clat percentiles (usec):
     |  1.00th=[ 2868],  5.00th=[ 3032], 10.00th=[ 3130], 20.00th=[ 3326],
     | 30.00th=[ 3490], 40.00th=[ 3654], 50.00th=[ 3884], 60.00th=[ 4228],
     | 70.00th=[ 4752], 80.00th=[ 5342], 90.00th=[ 6063], 95.00th=[ 6587],
     | 99.00th=[ 7570], 99.50th=[ 7963], 99.90th=[ 8848], 99.95th=[ 9241],
     | 99.99th=[10159]
   bw (  KiB/s): min=836136, max=1037800, per=100.00%, avg=953496.00, stdev=30268.91, samples=598
   iops        : min=209034, max=259450, avg=238374.00, stdev=7567.23, samples=598
  lat (usec)   : 500=0.01%, 750=0.01%, 1000=0.01%
  lat (msec)   : 2=0.01%, 4=53.76%, 10=46.23%, 20=0.01%
  cpu          : usr=18.99%, sys=58.85%, ctx=677096, majf=0, minf=58
  IO depths    : 1=0.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=100.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.1%
     issued rwts: total=71419913,0,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=1024

Run status group 0 (all jobs):
   READ: bw=930MiB/s (975MB/s), 930MiB/s-930MiB/s (975MB/s-975MB/s), io=272GiB (293GB), run=300001-300001msec

Disk stats (read/write):
  vde: ios=76419620/0, merge=0/0, ticks=61461442/0, in_queue=61461442, util=100.00%
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇