zoukankan      html  css  js  c++  java
  • fio 文件系统io 性能测试安装使用

    备注:
    使用的是yum 进行的安装,大家可以使用源码编译安装(centos 7)

    安装

    yum install -y fio

    命令行参数

    fio-2.2.8
    fio [options] [job options] <job file(s)>
      --debug=options   Enable debug logging. May be one/more of:
       process,file,io,mem,blktrace,verify,random,parse,
       diskutil,job,mutex,profile,time,net,rate,compress
      --parse-only  Parse options only, don't start any IO
      --output  Write output to file
      --runtime Runtime in seconds
      --bandwidth-log   Generate per-job bandwidth logs
      --minimal Minimal (terse) output
      --output-format=x Output format (terse,json,normal)
      --terse-version=x Set terse version output format to 'x'
      --version Print version info and exit
      --help    Print this page
      --cpuclock-test   Perform test/validation of CPU clock
      --crctest Test speed of checksum functions
      --cmdhelp=cmd Print command help, "all" for all of them
      --enghelp=engine  Print ioengine help, or list available ioengines
      --enghelp=engine,cmd  Print help for an ioengine cmd
      --showcmd Turn a job file into command line options
      --eta=when    When ETA estimate should be printed
                  May be "always", "never" or "auto"
      --eta-newline=time    Force a new line for every 'time' period passed
      --status-interval=t   Force full status dump every 't' period passed
      --readonly    Turn on safety read-only checks, preventing writes
      --section=name    Only run specified section in job file
      --alloc-size=kb   Set smalloc pool to this size in kb (def 1024)
      --warnings-fatal  Fio parser warnings are fatal
      --max-jobs=nr Maximum number of threads/processes to support
      --server=args Start a backend fio server
      --daemonize=pidfile   Background fio server, write pid to file
      --client=hostname Talk to remote backend fio server at hostname
      --remote-config=file  Tell fio server to load this local job file
      --idle-prof=option    Report cpu idleness on a system or percpu basis
       (option=system,percpu) or run unit work
       calibration only (option=calibrate)
      --trigger-file=file   Execute trigger cmd when file exists
      --trigger-timeout=t   Execute trigger af this time
      --trigger=cmd Set this command as local trigger
      --trigger-remote=cmd  Set this command as remote trigger

    使用

    filename: 指定文件(设备)的名称。可以通过冒号分割同时指定多个文件,如filename=/dev/sda:/dev/sdb。
    directory: 设置filename的路径前缀。在后面的基准测试中,采用这种方式来指定设备。
    name: 指定job的名字,在命令行中表示新启动一个job。
    direct: bool类型,如果设置成true (1),表示不使用io buffer。
    ioengine: I/O引擎,现在fio支持19种ioengine。默认值是sync同步阻塞I/O,libaio是Linux的native异步I/O。关于同步异步,阻塞和非阻塞模型可以参考文章“使用异步 I/O 大大提高应用程序的性能”。
    http://www.ibm.com/developerworks/cn/linux/l-async/
    iodepth: 如果ioengine采用异步方式,该参数表示一批提交保持的io单元数。该参数可参考文章“Fio压测工具和io队列深度理解和误区”。
    http://blog.yufeng.info/archives/2104
    rw: I/O模式,随机读写,顺序读写等等。
    bs: I/O block大小,默认是4k。
    size: 指定job处理的文件的大小。
    numjobs: 指定job的克隆数(线程)。
    time_based: 如果在runtime指定的时间还没到时文件就被读写完成,将继续重复知道runtime时间结束。
    runtime: 指定在多少秒后停止进程。如果未指定该参数,fio将执行至指定的文件读写完全完成。
    group_reporting: 当同时指定了numjobs了时,输出结果按组显示。

    参考说明

    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引擎使用psync方式
    rwmixwrite=30 #在混合读写的模式下,写占30%
    group_reporting #关于显示结果的,汇总每个进程的信息
    lockmem=1G #只使用1g内存进行测试
    zero_buffers #用0初始化系统buffer
    nrfiles=8 #每个进程生成文件的数量
    #顺序读
    fio -filename=/dev/sda -direct=1 -iodepth 1 -thread -rw=read -ioengine=psync -bs=16k -size=200G -numjobs=30 -runtime=1000 -group_reporting -name=mytest
    #顺序写
    fio -filename=/dev/sda -direct=1 -iodepth 1 -thread -rw=write -ioengine=psync -bs=16k -size=200G -numjobs=30 -runtime=1000 -group_reporting -name=mytest
    #随机读
    fio -filename=/dev/sda -direct=1 -iodepth 1 -thread -rw=randread -ioengine=psync -bs=16k -size=200G -numjobs=30 -runtime=1000 -group_reporting -name=mytest
    #随机写
    fio -filename=/dev/sda -direct=1 -iodepth 1 -thread -rw=randwrite -ioengine=psync -bs=16k -size=200G -numjobs=30 -runtime=1000 -group_reporting -name=mytest
    #混合随机读写
    fio -filename=/dev/sda -direct=1 -iodepth 1 -thread -rw=randrw -rwmixread=70 -ioengine=psync -bs=16k -size=200G -numjobs=30 -runtime=100 -group_reporting -name=mytest -ioscheduler=noop
    #复制下面的配置内容,将directory=/path/to/test修改为你测试硬盘挂载目录的地址,并另存为fio.conf
    [global]
    ioengine=libaio
    direct=1
    thread=1
    norandommap=1
    randrepeat=0
    runtime=60
    ramp_time=6
    size=1g
    directory=/path/to/test
    [read4k-rand]
    stonewall
    group_reporting
    bs=4k
    rw=randread
    numjobs=8
    iodepth=32
    [read64k-seq]
    stonewall
    group_reporting
    bs=64k
    rw=read
    numjobs=4
    iodepth=8
    [write4k-rand]
    stonewall
    group_reporting
    bs=4k
    rw=randwrite
    numjobs=2
    iodepth=4
    [write64k-seq]
    stonewall
    group_reporting
    bs=64k
    rw=write
    numjobs=2
    iodepth=4
    #测试
    fio fio.conf

    参考资料

    https://fio.readthedocs.io/en/latest/fio_doc.html

  • 相关阅读:
    Time Zone 【模拟时区转换】(HDU暑假2018多校第一场)
    HDU 1281 棋盘游戏 【二分图最大匹配】
    Codeforces Round #527 (Div. 3) F. Tree with Maximum Cost 【DFS换根 || 树形dp】
    Codeforces Round #527 (Div. 3) D2. Great Vova Wall (Version 2) 【思维】
    Codeforces Round #527 (Div. 3) D1. Great Vova Wall (Version 1) 【思维】
    Codeforces Round #528 (Div. 2, based on Technocup 2019 Elimination Round 4) C. Connect Three 【模拟】
    Avito Cool Challenge 2018 E. Missing Numbers 【枚举】
    Avito Cool Challenge 2018 C. Colorful Bricks 【排列组合】
    005 如何分析问题框架
    004 如何定义和澄清问题
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/10904872.html
Copyright © 2011-2022 走看看