zoukankan      html  css  js  c++  java
  • FIO是测试IOPS

    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
  • 相关阅读:
    【原创】今天发现CSS上的一点使用FLoat要注意的地方(FireFox+IE)
    HTTP/1.1 协议 810 持久连接( Persistent Connections)
    Javascript attachEvent传递参数的办法
    Keycode对照表
    JS正则表达式详解[收藏]
    Javascript控制剪贴板大全
    多站点整合—单点登录简单方案
    Stream 和 byte[] 之间的转换
    用CSS样式如何制作圆角的详细教程
    FireFox下为元素附加事件并传递参数-addEventListener attachEvent Pass parameters to eventfunction
  • 原文地址:https://www.cnblogs.com/fengjian2016/p/5515519.html
Copyright © 2011-2022 走看看