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

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
cd fio-2.1.7/
./configure
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 threadsrandread-4k: (groupid=0, jobs=32): err= 0: pid=24060: Tue Apr 17 12:34:20 2018read : io=960768KB, bw=8002.9KB/s, iops=2000, runt=120053msecslat (usec): min=1, max=875635, avg=15984.07, stdev=68311.64clat (msec): min=5, max=5043, avg=2019.68, stdev=397.04lat (msec): min=40, max=5111, avg=2035.66, stdev=398.82clat 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.48lat (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=3128IO 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=0latency   : 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 2018write: io=960800KB, bw=8002.2KB/s, iops=2000, runt=120068msecslat (usec): min=2, max=884998, avg=15984.48, stdev=66543.07clat (msec): min=4, max=7981, avg=2017.39, stdev=385.47lat (msec): min=27, max=7981, avg=2033.37, stdev=387.03clat 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.28lat (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=32IO 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=0latency   : 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 2018read : io=15682MB, bw=133566KB/s, iops=260, runt=120224msecslat (usec): min=31, max=2782.5K, avg=122435.74, stdev=251753.79clat (msec): min=35, max=24997, avg=14629.26, stdev=3582.09lat (msec): min=140, max=25077, avg=14751.70, stdev=3588.71clat 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.11lat (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=16899IO 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=0latency   : 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 2018write: io=16117MB, bw=137117KB/s, iops=267, runt=120359msecslat (usec): min=39, max=3744.3K, avg=118989.73, stdev=211850.72clat (msec): min=44, max=23277, avg=14163.52, stdev=3673.67lat (msec): min=44, max=23978, avg=14282.51, stdev=3684.25clat 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.81lat (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=32IO 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=0latency   : target=0, window=0, percentile=100.00%, depth=128Run status group 0 (all jobs):READ: io=960768KB, aggrb=8002KB/s, minb=8002KB/s, maxb=8002KB/s, mint=120053msec, maxt=120053msecRun status group 1 (all jobs):WRITE: io=960800KB, aggrb=8002KB/s, minb=8002KB/s, maxb=8002KB/s, mint=120068msec, maxt=120068msecRun status group 2 (all jobs):READ: io=15682MB, aggrb=133566KB/s, minb=133566KB/s, maxb=133566KB/s, mint=120224msec, maxt=120224msecRun status group 3 (all jobs):WRITE: io=16117MB, aggrb=137117KB/s, minb=137117KB/s, maxb=137117KB/s, mint=120359msec, maxt=120359msecDisk stats (read/write):vdb: ios=271670/273456, merge=0/1084, ticks=30026240/30626672, in_queue=62613216, util=100.00%

fio工具测试硬盘性能相关推荐

  1. fio 是测试磁盘性能的最佳工具

    磁盘IO是检查磁盘性能的重要指标,可以按照负载情况分成照顺序读写,随机读写两大类. fio 是测试磁盘性能的最佳工具: ddif=/dev/zero  of=/root/test bs=4kcount ...

  2. as ssd测试软件得分少,教大家AS SSD Benchmark如何测试硬盘性能

    近日有关于AS SSD Benchmark如何测试硬盘性能的问题受到了很多网友们的关注,大多数网友都想要知道AS SSD Benchmark如何测试硬盘性能的具体情况,那么关于到AS SSD Benc ...

  3. Linux 测试硬盘性能

    Linux 测试硬盘性能 一.hdparm测试 (1)安装 [root@oracledb ~]# yum -y install hdparm 已加载插件:fastestmirror, langpack ...

  4. FIO工具测试IOPS简单说明

    FIO工具测试IOPS简单说明 FIO是测试IOPS的非常好的工具,用来对硬件进行压力测试和验证,支持13种不同的I/O引擎, 包括:sync,mmap, libaio, posixaio, SG v ...

  5. FIO测试硬盘性能参数和实例详细总结(附源码)

    目录 一.简介 二.源码下载及参数解析 2.1 源码下载方式 2.2 参数解析 2.3 测试实例 三.其他相关链接 [3.1 Linux下stream内存带宽测试总结附源码](https://blog ...

  6. 安装fio命令linux,如何在Linux中使用Fio来测评硬盘性能

    Fio(Flexible I/O Tester) 是一款由 Jens Axboe 开发的用于测评和压力/硬件验证的自由开源的软件. 它支持 19 种不同类型的 I/O 引擎 (sync.mmap.li ...

  7. 如何使用win7自带的测试工具测试电脑性能?

    现在越来愈多的电脑性能测试软件,不过小编还是推荐使用win7自带的测试,这样测试出来的数据更加真实靠谱. 1.右键计算机,点击属性: 2.然后出现如下图所示界面,这里我们点击要求刷新Windows体验 ...

  8. Centos安装hdparm测试硬盘性能

    一.安装hdparm yum install hdparm -y Linux学习,http:// linux.it.net.cn 二.评估读取 SSD 硬盘,请使用hdparm命令进行读取测试. hd ...

  9. FIO工具测试延迟、带宽、IOPS

    FIP中的I/O延迟包括三种:slat,clat,lat 关系是 lat = slat + clat slat 表示fio submit某个I/O的延迟. clat 表示fio complete某个I ...

最新文章

  1. Struts2.3+Spring4.0
  2. 删除副本列表中的消失项目符号
  3. 使用ABAP事务码STAD分析Asynchronous RFC call性能
  4. 《C#本质论》读书笔记(十二)构造器 @ Lennon
  5. 缩点【洛谷P1262】 间谍网络
  6. 可能是最好的单例模式
  7. [Async] [Series #1] 初识Async异步编程模型。
  8. 类的static成员并用其实现一个单例模式
  9. delphi的多线程编程
  10. 浏览器request得不到cookie_Servlet第五篇「介绍会话技术、Cookie的API、详解、应用」...
  11. 企业微信发送消息php,PHP实现微信模板消息发送给指定用户
  12. 01_基于蒲公英R300A的异地组网PLC调试实现
  13. 对Java实现单链表中.next的解释
  14. 【VBScript】MsgBox()函数
  15. STM32F0的BOOT
  16. Quartz中Triggers介绍
  17. 安卓系统管理软件_BlackBerry为部署车载安卓系统保驾护航
  18. 使用PyCharm进行接口测试
  19. CTFSHOW-文件包含
  20. Python编写微信打飞机小游戏(十一)

热门文章

  1. ANTLR4权威参考手册(二)
  2. FreeRTOS 任务间通信,怎么实现?
  3. PDFlib Adds support for PHP
  4. navicat怎么学mysql_Navicat for mysql简单易学,就不需要学习mysql了_学小易找答案
  5. echarts实现联动的折线图
  6. 信息学奥赛一本通1272【例9.16】分组背包
  7. 微信页面用户调整字号引起的排版错乱
  8. FPGA:硬件描述语言简介
  9. PyQt(Python+Qt)学习随笔:复选框checkBox的tristate属性
  10. 三菱plc232数据线驱动下载_三菱触摸屏插上通讯线直接黑屏,老司机手把手教你解决触摸屏黑屏...