fio工具测试硬盘性能

原创 2018年04月16日 19:21:29

云硬盘的性能如何衡量?一般使用以下几个指标对存储设备的性能进行描述:

IOPS:每秒读/写次数,单位为次(计数)。存储设备的底层驱动类型决定了不同的 IOPS。
吞吐量:每秒的读写数据量,单位为MB/s。
时延:IO操作的发送时间到接收确认所经过的时间,单位为秒。

FIO是测试磁盘性能的一个非常好的工具,用来对硬件进行压力测试和验证。建议使用libaio的I/O引擎进行测试,请自行安装FIO和Libaio。

请特别注意:
1. 请不要在系统盘上进行 fio 测试,避免损坏系统重要文件
2. fio测试建议在空闲的、未保存重要数据的硬盘上进行,并在测试完后重新制作文件系统。请不要在业务数据硬盘上测试,避免底层文件系统元数据损坏导致数据损坏
2. 测试硬盘性能时,推荐直接测试裸盘(如 vdb);测试文件系统性能时,推荐指定具体文件测试(如 /data/file)

安装libaio、fio

apt install -y libaio-dev
wget http://brick.kernel.dk/snaps/fio-2.1.7.tar.gz
./configure
make
make make install

不同场景的测试公式基本一致,只有3个参数(读写模式,iodepth,blocksize)的区别。下面举例说明使用block size为4k,iodepth为1来测试顺序读性能的命令。

4k随意读测试iops
命令如下:

fio --bs=4k --ioengine=libaio --iodepth=1 --direct=1 --rw=read --time_based --runtime=600  --refill_buffers --norandommap --randrepeat=0 --group_reporting --name=fio-read --size=50G --filename=/dev/vdb1

每个工作负载适合的最佳iodepth不同,具体取决于您的特定应用程序对于 IOPS 和延迟的敏感程度。

参数说明:

这里写图片描述

常见用例如下:

block=4k iodepth=1 随机读测试,能反映磁盘的时延性能;
block=128K iodepth=32 能反映峰值吞吐性能 ;
block=4k iodepth=32 能反映峰值IOPS性能。

下图为SSD云硬盘的测试性能截图:

这里写图片描述

这里写图片描述

这里写图片描述

———————————————————————————

另一种简单的测试方法

4k随机读写iops测试、512k顺序读写吞吐量测试
利用配置文件,此处的fio.conf是自己编写的脚本文件

root@VM-0-12-ubuntu:/home/ubuntu# cat fio.conf 
[global]
ioengine=libaio
iodepth=128
time_based
direct=1
thread=1
group_reporting
randrepeat=0
norandommap
numjobs=32
timeout=6000
runtime=120

# 4K随机读,IOPS
[randread-4k]
rw=randread
bs=4k
filename=/dev/vdb1   #注:/dev/vdb是目标测试磁盘的设备名称
rwmixread=100
stonewall

# 4K随机写,IOPS
[randwrite-4k]
rw=randwrite
bs=4k
filename=/dev/vdb1
stonewall

# 512K顺序读,吞吐
[read-512k]
rw=read
bs=512k
filename=/dev/vdb1
stonewall

# 512K顺序写,吞吐
[write-512k]
rw=write
bs=512k
filename=/dev/vdb1
stonewall

执行命令

root@VM-0-12-ubuntu:/home/ubuntu#fio  fio.conf

结果如下:

randread-4k: (g=0): rw=randread, bs=4K-4K/4K-4K/4K-4K, ioengine=libaio, iodepth=128
...
randwrite-4k: (g=1): rw=randwrite, bs=4K-4K/4K-4K/4K-4K, ioengine=libaio, iodepth=128
...
read-512k: (g=2): rw=read, bs=512K-512K/512K-512K/512K-512K, ioengine=libaio, iodepth=128
...
write-512k: (g=3): rw=write, bs=512K-512K/512K-512K/512K-512K, ioengine=libaio, iodepth=128
...
fio-2.1.7
Starting 128 threads

randread-4k: (groupid=0, jobs=32): err= 0: pid=24060: Tue Apr 17 12:34:20 2018
  read : io=960768KB, bw=8002.9KB/s, iops=2000, runt=120053msec
    slat (usec): min=1, max=875635, avg=15984.07, stdev=68311.64
    clat (msec): min=5, max=5043, avg=2019.68, stdev=397.04
     lat (msec): min=40, max=5111, avg=2035.66, stdev=398.82
    clat percentiles (msec):
     |  1.00th=[ 1045],  5.00th=[ 1270], 10.00th=[ 1434], 20.00th=[ 1860],
     | 30.00th=[ 1942], 40.00th=[ 1975], 50.00th=[ 2008], 60.00th=[ 2040],
     | 70.00th=[ 2089], 80.00th=[ 2180], 90.00th=[ 2638], 95.00th=[ 2769],
     | 99.00th=[ 2933], 99.50th=[ 2966], 99.90th=[ 3261], 99.95th=[ 4015],
     | 99.99th=[ 5014]
    bw (KB  /s): min=    0, max=  894, per=3.14%, avg=251.18, stdev=128.48
    lat (msec) : 10=0.01%, 20=0.01%, 50=0.02%, 100=0.01%, 250=0.01%
    lat (msec) : 500=0.16%, 750=0.32%, 1000=0.32%, 2000=45.22%, >=2000=53.95%
  cpu          : usr=0.02%, sys=0.09%, ctx=209159, majf=0, minf=3128
  IO depths    : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.2%, 32=0.4%, >=64=99.2%
     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    : total=r=240192/w=0/d=0, short=r=0/w=0/d=0
     latency   : target=0, window=0, percentile=100.00%, depth=128
randwrite-4k: (groupid=1, jobs=32): err= 0: pid=24182: Tue Apr 17 12:34:20 2018
  write: io=960800KB, bw=8002.2KB/s, iops=2000, runt=120068msec
    slat (usec): min=2, max=884998, avg=15984.48, stdev=66543.07
    clat (msec): min=4, max=7981, avg=2017.39, stdev=385.47
     lat (msec): min=27, max=7981, avg=2033.37, stdev=387.03
    clat percentiles (msec):
     |  1.00th=[ 1057],  5.00th=[ 1319], 10.00th=[ 1467], 20.00th=[ 1860],
     | 30.00th=[ 1926], 40.00th=[ 1975], 50.00th=[ 2008], 60.00th=[ 2057],
     | 70.00th=[ 2114], 80.00th=[ 2180], 90.00th=[ 2606], 95.00th=[ 2704],
     | 99.00th=[ 2868], 99.50th=[ 2933], 99.90th=[ 3228], 99.95th=[ 5473],
     | 99.99th=[ 7111]
    bw (KB  /s): min=    0, max=  878, per=3.14%, avg=251.08, stdev=154.28
    lat (msec) : 10=0.01%, 50=0.02%, 100=0.03%, 250=0.01%, 500=0.01%
    lat (msec) : 750=0.42%, 1000=0.37%, 2000=46.44%, >=2000=52.72%
  cpu          : usr=0.02%, sys=0.10%, ctx=170362, majf=0, minf=32
  IO depths    : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.2%, 32=0.4%, >=64=99.2%
     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    : total=r=0/w=240200/d=0, short=r=0/w=0/d=0
     latency   : target=0, window=0, percentile=100.00%, depth=128
read-512k: (groupid=2, jobs=32): err= 0: pid=24304: Tue Apr 17 12:34:20 2018
  read : io=15682MB, bw=133566KB/s, iops=260, runt=120224msec
    slat (usec): min=31, max=2782.5K, avg=122435.74, stdev=251753.79
    clat (msec): min=35, max=24997, avg=14629.26, stdev=3582.09
     lat (msec): min=140, max=25077, avg=14751.70, stdev=3588.71
    clat percentiles (msec):
     |  1.00th=[ 1844],  5.00th=[ 6128], 10.00th=[10945], 20.00th=[13042],
     | 30.00th=[14091], 40.00th=[14877], 50.00th=[15008], 60.00th=[15926],
     | 70.00th=[16057], 80.00th=[16712], 90.00th=[16712], 95.00th=[16712],
     | 99.00th=[16712], 99.50th=[16712], 99.90th=[16712], 99.95th=[16712],
     | 99.99th=[16712]
    bw (KB  /s): min=   24, max=14278, per=3.11%, avg=4154.73, stdev=1645.11
    lat (msec) : 50=0.01%, 100=0.01%, 250=0.09%, 1000=0.50%, 2000=0.82%
    lat (msec) : >=2000=98.58%
  cpu          : usr=0.00%, sys=0.08%, ctx=27953, majf=0, minf=16899
  IO depths    : 1=0.1%, 2=0.2%, 4=0.4%, 8=0.8%, 16=1.6%, 32=3.3%, >=64=93.6%
     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=99.9%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.1%
     issued    : total=r=31363/w=0/d=0, short=r=0/w=0/d=0
     latency   : target=0, window=0, percentile=100.00%, depth=128
write-512k: (groupid=3, jobs=32): err= 0: pid=24426: Tue Apr 17 12:34:20 2018
  write: io=16117MB, bw=137117KB/s, iops=267, runt=120359msec
    slat (usec): min=39, max=3744.3K, avg=118989.73, stdev=211850.72
    clat (msec): min=44, max=23277, avg=14163.52, stdev=3673.67
     lat (msec): min=44, max=23978, avg=14282.51, stdev=3684.25
    clat percentiles (msec):
     |  1.00th=[ 1074],  5.00th=[ 5276], 10.00th=[10028], 20.00th=[12256],
     | 30.00th=[13435], 40.00th=[14222], 50.00th=[15008], 60.00th=[15664],
     | 70.00th=[16057], 80.00th=[16712], 90.00th=[16712], 95.00th=[16712],
     | 99.00th=[16712], 99.50th=[16712], 99.90th=[16712], 99.95th=[16712],
     | 99.99th=[16712]
    bw (KB  /s): min=   22, max=42965, per=3.21%, avg=4395.78, stdev=2482.81
    lat (msec) : 50=0.02%, 250=0.19%, 500=0.20%, 750=0.06%, 1000=0.44%
    lat (msec) : 2000=0.88%, >=2000=98.20%
  cpu          : usr=0.04%, sys=0.06%, ctx=29046, majf=0, minf=32
  IO depths    : 1=0.1%, 2=0.2%, 4=0.4%, 8=0.8%, 16=1.6%, 32=3.2%, >=64=93.7%
     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=99.9%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.1%
     issued    : total=r=0/w=32233/d=0, short=r=0/w=0/d=0
     latency   : target=0, window=0, percentile=100.00%, depth=128

Run status group 0 (all jobs):
   READ: io=960768KB, aggrb=8002KB/s, minb=8002KB/s, maxb=8002KB/s, mint=120053msec, maxt=120053msec

Run status group 1 (all jobs):
  WRITE: io=960800KB, aggrb=8002KB/s, minb=8002KB/s, maxb=8002KB/s, mint=120068msec, maxt=120068msec

Run status group 2 (all jobs):
   READ: io=15682MB, aggrb=133566KB/s, minb=133566KB/s, maxb=133566KB/s, mint=120224msec, maxt=120224msec

Run status group 3 (all jobs):
  WRITE: io=16117MB, aggrb=137117KB/s, minb=137117KB/s, maxb=137117KB/s, mint=120359msec, maxt=120359msec

Disk stats (read/write):
  vdb: ios=271670/273456, merge=0/1084, ticks=30026240/30626672, in_queue=62613216, util=100.00%
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36357820/article/details/79965014

linux 磁盘性能测试工具fio

1,安装apt-get install fio2,测试fio -filename=/mnt/dmcache/chenming.log -direct=1 -iodepth 1 -thread -rw=...
  • guoer9973
  • guoer9973
  • 2015年12月04日 18:38
  • 1937

使用fio测试磁盘I/O性能

简介: fio最初是用来节省为特定负载写专门测试程序,或是进行性能测试,或是找到和重现bug的时间。写这么一个测试应用是非常浪费时间的。因此需要一个工具来模拟给定的io负载,而不用重复的写一个又一个...
  • u013548273
  • u013548273
  • 2016年04月08日 14:00
  • 722

Linux 磁盘IO性能测试工具:FIO

1. FIO安装CentOS下:$ yum install fio2. FIO简介FIO是测试IOPS的非常好的工具,用来对硬件进行压力测试和验证。 项目主页:https://github.com/...
  • jiecxy
  • jiecxy
  • 2017年02月27日 19:17
  • 1362

磁盘iops 测试 fio 及报错解释

I/O输入/输出(Input/Output),读和写,提高缓存(cache)和做磁盘阵列(RAID)能提高存储IO性能。 IOPS (英文:Input/Output Operations P...
  • u012271526
  • u012271526
  • 2015年09月26日 16:14
  • 5562

fio 测试ceph块设备性能

1. 安装fio这里写代码片参考: 1.块设备性能测试
  • u010953692
  • u010953692
  • 2017年09月01日 11:32
  • 198

FIO – IO压力测试工具

FIO是一个开源的I/O压力测试工具,主要是用来测试磁盘/SSD的IO性能,也可测试cpu,nic的IO性能。它可以支持13种不同的I/O引擎,包括:sync, mmap, libaio, posix...
  • iamonlyme
  • iamonlyme
  • 2017年05月03日 17:37
  • 2836

FIO测试工具介绍

http://blog.csdn.net/lidan3959/article/details/9945443   FIO是测试IOPS的非常好的工具,用来对硬件进行压力测试和验证,支持13种不同的I/...
  • abcengineer
  • abcengineer
  • 2015年11月16日 23:56
  • 7371

LInux下使用fio工具测试优盘读写性能

任务:在Linux下用fio测试工具(Google搜索fio benchmark)测试一个U盘的性能,U盘上不要放任何数据。 通过这个任务,了解fio的具体使用,各个参数的具体含义,并且了解U盘的随...
  • qq_24231285
  • qq_24231285
  • 2017年05月13日 14:21
  • 901

FIO工具测试IOPS简单说明

FIO工具测试IOPS简单说明 FIO是测试IOPS的非常好的工具,用来对硬件进行压力测试和验证,支持13种不同的I/O引擎,包括:sync,mmap, libaio, posixaio, SG v3...
  • ZengMuAnSha
  • ZengMuAnSha
  • 2014年04月28日 17:25
  • 9609

记一次磁盘性能测试 [待看,IO测试于并行]

记一次磁盘性能测试 2013-12-16 15:09:12 标签:测试结果 处理器 吞吐量 空间 规格 磁盘测试的目的及概述   尽管随着业界发展,处理器速...
  • haiross
  • haiross
  • 2014年01月17日 16:57
  • 2125
收藏助手
不良信息举报
您举报文章:fio工具测试硬盘性能
举报原因:
原因补充:

(最多只允许输入30个字)