FIO是测试IOPS的非常好的工具,用来对硬件进行压力测试和验证,支持13种不同的I/O引擎,包括:sync,mmap, libaio, posixaio, SG v3, splice, null, network, syslet, guasi, solarisaio 等等。

安装

  • 下载地址 
    wget http://brick.kernel.dk/snaps/fio-2.1.10.tar.gz
  • centos
    • yun install libaio-devel -y
  • debian
    • apt-get install libaio-dev -y
  • 编译安装 
    tar zxf fio-2.1.10.tar.gz 
    cd fio-2.1.10 
    make && make install

用法、说明

  • filename=/dev/sdb1       测试文件名称,通常选择需要测试的盘的data目录。
    direct=1 测试过程绕过机器自带的buffer。使测试结果更真实。
    rw=randwrite 测试随机写的I/O
    rw=randrw 测试随机写和读的I/O
    bs=16k 单次io的块文件大小为16k
    bsrange=512-2048 同上,提定数据块的大小范围
    size=5g 本次的测试文件大小为5g,以每次4k的io进行测试。
    numjobs=30 本次的测试线程为30.
    runtime=1000 测试时间为1000秒,如果不写则一直将5g文件分4k每次写完为止。
    ioengine=psync io引擎使用pync方式
    rwmixwrite=30 在混合读写的模式下,写占30%
    group_reporting 关于显示结果的,汇总每个进程的信息。
    此外
    lockmem=1g 只使用1g内存进行测试。
    zero_buffers 用0初始化系统buffer。
    nrfiles=8 每个进程生成文件的数量。
  • 顺序写性能 
    fio --filename=/data/test --iodepth=64 --ioengine=libaio --direct=1 --rw=write --bs=4k --size=500m --numjobs=4 --runtime=10 --group_reporting --name=test-write

  • 顺序读性能 
    fio --filename=/data/test --iodepth=64 --ioengine=libaio --direct=1 --rw=read --bs=4k --size=500m --numjobs=4 --runtime=10 --group_reporting --name=test-read

  • 随机读性能 
    fio --filename=/data/test -iodepth=64 --ioengine=libaio --direct=1 --rw=randread --bs=4k --size=500M --numjobs=64 --runtime=20 --group_reporting --name=test-rand-read

  • 随机写性能 
    fio --filename=/data/test --iodepth=64 --ioengine=libaio --direct=1 --rw=randwrite --bs=4k --size=500M --numjobs=64 --runtime=20 --group_reporting --name=test-rand-write

  • 随机读写 
    fio --filename=/data/test --iodepth=64 --ioengine=libaio --direct=1 --rw=randrw --bs=4k --size=500M --numjobs=64 --runtime=20 --group_reporting --name=test-rand-readwrite

ucloud实际测试样例

  • [root@leoieo # fio --filename=/data/test --iodepth=64 --ioengine=libaio --direct=1 --rw=randrw --bs=4k --size=500M --numjobs=64 --runtime=20 --group_reporting --name=test-rand-readwrite
    test-rand-readwrite: (g=0): rw=randrw, bs=4K-4K/4K-4K, ioengine=libaio, iodepth=64
    ...
    test-rand-readwrite: (g=0): rw=randrw, bs=4K-4K/4K-4K, ioengine=libaio, iodepth=64
    fio 2.0.7
    Starting 64 processes
    test-rand-readwrite: Laying out IO file(s) (1 file(s) / 500MB)
    Jobs: 64 (f=64):
    .....
    test-rand-readwrite: (groupid=0, jobs=64): err= 0: pid=27106
    read : io=1254.7MB, bw=63827KB/s, iops=15956 , runt= 20128msec
    slat (usec): min=2 , max=362246 , avg=1939.96, stdev=20054.83
    clat (usec): min=11 , max=822072 , avg=114432.56, stdev=116574.10
    lat (usec): min=41 , max=822081 , avg=116375.98, stdev=117044.89
    clat percentiles (usec):
    | 1.00th=[ 418], 5.00th=[ 604], 10.00th=[ 692], 20.00th=[ 828],
    | 30.00th=[ 1048], 40.00th=[ 3120], 50.00th=[98816], 60.00th=[115200],
    | 70.00th=[205824], 80.00th=[246784], 90.00th=[288768], 95.00th=[296960],
    | 99.00th=[317440], 99.50th=[411648], 99.90th=[528384], 99.95th=[577536],
    | 99.99th=[618496]
    bw (KB/s) : min= 149, max= 2782, per=1.58%, avg=1011.31, stdev=501.25
    write: io=1253.0MB, bw=63746KB/s, iops=15936 , runt= 20128msec
    slat (usec): min=3 , max=370177 , avg=1946.49, stdev=20060.74
    clat (usec): min=10 , max=822032 , avg=136414.77, stdev=118302.48
    lat (usec): min=346 , max=894660 , avg=138365.58, stdev=119001.95
    clat percentiles (usec):
    | 1.00th=[ 636], 5.00th=[ 748], 10.00th=[ 836], 20.00th=[ 1048],
    | 30.00th=[ 2864], 40.00th=[96768], 50.00th=[111104], 60.00th=[162816],
    | 70.00th=[222208], 80.00th=[276480], 90.00th=[292864], 95.00th=[301056],
    | 99.00th=[378880], 99.50th=[501760], 99.90th=[577536], 99.95th=[593920],
    | 99.99th=[692224]
    bw (KB/s) : min= 30, max= 2778, per=1.58%, avg=1007.37, stdev=499.86
    lat (usec) : 20=0.01%, 50=0.01%, 100=0.01%, 250=0.12%, 500=0.76%
    lat (usec) : 750=8.93%, 1000=13.61%
    lat (msec) : 2=10.84%, 4=1.15%, 10=0.84%, 20=0.42%, 50=0.26%
    lat (msec) : 100=9.27%, 250=31.68%, 500=21.65%, 750=0.44%, 1000=0.01%
    cpu : usr=0.17%, sys=0.62%, ctx=18901, majf=0, minf=1896
    IO depths : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.2%, 32=0.3%, >=64=99.4%
    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.1%, >=64=0.0%
    issued : total=r=321176/w=320768/d=0, short=r=0/w=0/d=0 Run status group 0 (all jobs):
    READ: io=1254.7MB, aggrb=63826KB/s, minb=63826KB/s, maxb=63826KB/s, mint=20128msec, maxt=20128msec
    WRITE: io=1253.0MB, aggrb=63745KB/s, minb=63745KB/s, maxb=63745KB/s, mint=20128msec, maxt=20128msec Disk stats (read/write):
    vdb: ios=320605/320220, merge=2/27, ticks=437742/1156547, in_queue=1593987, util=98.64%

关于使用dd进行读写测试

    • 4k 10万次写 
      dd if=/dev/zero of=/data/test bs=4k count=100000 
      100000+0 records in 
      100000+0 records out 
      409600000 bytes (410 MB) copied, 0.87704 s, 467 MB/s
    • 4k 10万次读 
      dd if=/data/test of=/dev/null bs=4k count=100000 
      100000+0 records in 
      100000+0 records out 
      409600000 bytes (410 MB) copied, 0.111689 s, 3.7 GB/s
    • 4k 10万次读写 
      dd if=/data/test of=/data/test.txt bs=4k count=100000 
      100000+0 records in 
      100000+0 records out 
      409600000 bytes (410 MB) copied, 0.776348 s, 528 MB/s

FIO是测试IOPS的更多相关文章

  1. 使用FIO工具测试块存储性能

    Linux实例和Windows实例都推荐使用FIO工具测试块存储性能.   说明 您也可以使用其他工具测试块存储性能,但不同工具测试出来的硬盘基准性能会有差异,如dd.sysbench.iometer ...

  2. FIO read测试结果偏离

    工作中发现一个fio问题,测试组测试出来的数据read速度一个是17.0G/s,一个是13.2G/s.要知道我后台只有24块7.2k RPM的机械硬盘啊!怎么也不可能有这样的速度. 回家之后我模拟了实 ...

  3. fio 硬盘测试工具

    一.windows环境 1. 安装fio:http://www.bluestop.org/fio/ 可以选择不同版本的安装,安装后在C:\Program Files\fio目录中可以找到fio的执行程 ...

  4. FIO 测试磁盘iops 以及读写

    最近在做mariadb的性能,感觉io 有瓶颈,就使用fio 来测试一下磁盘.下文为转载文章(温馨提示:此命令很伤硬盘,测试前请备份数据,- -我就写坏了一个.) FIO 是测试IOPS的非常好的工具 ...

  5. linux使用FIO测试磁盘的iops 【转载】

     linux使用FIO测试磁盘的iops 2013-09-23 10:59:21 分类: LINUX FIO是测试IOPS的非常好的工具,用来对硬件进行压力测试和验证,支持13种不同的I/O引擎,包括 ...

  6. linux使用FIO测试磁盘的iops

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

  7. 使用FIO测试磁盘iops

    我们如何衡量一个存储的性能呢?IOPS(Input/Output OperationsPer Second),即每秒进行读写(I/O)操作的次数是国际上通用的存储性能衡量标准,IOPS越高意味着在同一 ...

  8. FIO测试磁盘的iops

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

  9. Linux下使用FIO测试磁盘的IOPS

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

随机推荐

  1. ACM: Long Live the Queen - 树上的DP

    Long Live the Queen Time Limit:250MS     Memory Limit:4096KB     64bit IO Format:%I64d & %I64u D ...

  2. 洛谷 P1462 通往奥格瑞玛的道路 Label: 最小化最大值 && spfa (存多条边示例)

    题目背景 在艾泽拉斯大陆上有一位名叫歪嘴哦的神奇术士,他是部落的中坚力量 有一天他醒来后发现自己居然到了联盟的主城暴风城 在被众多联盟的士兵攻击后,他决定逃回自己的家乡奥格瑞玛 题目描述 在艾泽拉斯, ...

  3. 开篇&TexturePacker打出图集给UGUI使用

    开篇: 前段时间,网上流出了一套手游源码,本想着把服务器端搭一下,给自己认识小伙伴们调试着把这套源码学习一下.于是就买一个阿里云服务器,可是花了几天时间,就是run不起来了啊.还好网上已经有人搭出来了 ...

  4. UITableView常见 UI 问题总结

    一,经历 1.让 group 形式的UITableView的单元格也可以修改separatorStyle属性来设置. 2.修改group形式的UITableView的 cell 之间的间距,可以更改s ...

  5. iOS上让按钮文本左对齐问题

    一,问题分析 1.在做历史记录视图的时候,由于让键盘退出后才能触发表格的 didselect 那个代理方法,也就是得点两下才触发,而表格中的按钮点一下就可以立即响应. 2.于是我就有了用按钮事件代替 ...

  6. HDU 1251 Trie树模板题

    1.HDU 1251 统计难题  Trie树模板题,或者map 2.总结:用C++过了,G++就爆内存.. 题意:查找给定前缀的单词数量. #include<iostream> #incl ...

  7. mysql中一些简单但是新手容易犯的错误

    一.概述 本人近期使用mysql,由于是新手,常常碰到一些问题,因此,在这里做了一个错误备忘录. 二.错误罗列 1.MySQL 记录不存在时插入 记录存在则更新的实现方法 http://www.cnb ...

  8. Java获取前天和后天的时间

    import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import j ...

  9. mvc正则@符号js报错解决办法

    很简单在@前面再加个@就行了,也可以以引进js 的形式解决!

  10. js实现时钟

    <!DOCTYPE html> <html> <head> <title>Js版带表盘的时钟</title> <meta charse ...