• I/O性能测试---fio


                       I/O性能测试---fio

     

    官方网站:

    http://freecode.com/projects/fio

    http://brick.kernel.dk/snaps/

     

    简介:

    fio is an I/O tool meant to be used both for benchmark and stress/hardware verification. It has support for 19 different types of I/O engines (sync, mmap, libaio, posixaio, SG v3, splice, null, network, syslet, guasi, solarisaio, and more), I/O priorities (for newer Linux kernels), rate I/O, forked or threaded jobs, and much more. It can work on block devices as well as files. fio accepts job descriptions in a simple-to-understand text format. Several example job files are included. fio displays all sorts of I/O performance information, including complete IO latencies and percentiles. Fio is in wide use in many places, for both benchmarking, QA, and verification purposes. It supports Linux, FreeBSD, NetBSD, OpenBSD, OS X, OpenSolaris, AIX, HP-UX, Android, and Windows.


     

    安装(以CentOS6为例):
    1.yum安装(确保有epel源)
    yum –y install fio
    2.源码安装
    yum –y install gcc gcc-c++ make libaio-devel
    wget http://brick.kernel.dk/snaps/fio-2.2.6.tar.bz2
    tar –xvf fio-2.2.6.tar.bz2 –C /usr/local/src
    cd /usr/local/src/fio-2.2.6
    make && make install

    测试方法:
    1.顺序读(read)
    fio -filename=/dev/vdb -direct=1 -iodepth 128 -thread -rw=read -ioengine=libaio -bs=512K -numjobs=1 -runtime=120 -group_reporting -name=test

    SSD iodepth用128,普通云主机iodepth用64,numjobs用1就可以,否则测出来数据会偏大,bs需要512K以上

      2.顺序写(write)
    fio -filename=/dev/vdb -direct=1 -iodepth 128 -thread -rw=write -ioengine=libaio -bs=512K -numjobs=4 -runtime=120 -group_reporting -name=test

    SSD iodepth用128,普通云主机iodepth用64,numjobs不用太大,bs需512K以上

      3.随机读(randread)
    fio -filename=/dev/vdb -direct=1 -iodepth 128 -thread -rw=randread -ioengine=libaio -bs=4K -numjobs=128 -runtime=120 -group_reporting -name=test

    bs根据测试的块大小进行调整(随机主要看4K,8K),SSD numjobs为128,普通云主机用4或8就可以了

      4.随机写(randwrite)
    fio -filename=/dev/vdb -direct=1 -iodepth 128 -thread -rw=randwrite -ioengine=libaio -bs=4K -numjobs=32 -runtime=120 -group_reporting -name=test

    bs根据测试的块大小进行调整(随机主要看4K,8K),SSD numjobs为32,普通云主机用4或8就可以了,numjobs太大的话反而会带来副作用

      5.顺序混合读写(readwrite)
    fio -filename=/dev/vdb -direct=1 -iodepth 128 -thread -rw=rw -rwmixread=100 -ioengine=libaio -bs=512K -numjobs=8 -runtime=120 -group_reporting -name=test

      6.随机混合读写(randrw)
    fio -filename=/dev/vdb -direct=1 -iodepth 128 -thread -rw=randrw -rwmixread=100 -ioengine=libaio -bs=4K -numjobs=8 -runtime=120 -group_reporting -name=test
    SSD iodepth用128,普通云主机用64

    混合读写的比例调整-rwmixread就可以了,100表示全是读,0表示全是写,50表示一半读一半写,根据需要调整。目前混合读写最好引导用户直接测裸盘,如果测文件的话会暴露出来我们的读IO较差,且读IO过多会导致写IO性能下降。


    还可以通过以下配置静默测试后通过plot绘制图表

    [global]

    ioengine=libaio

    iodepth=128

    time_based

    direct=1

    thread=1

    group_reporting

    randrepeat=0

    norandommap

    numjobs=32

    timeout=6000

    runtime=120


    [randread-4k]

    rw=randread

    bs=4k

    filename=/dev/sdg

    rwmixread=100

    stonewall


    [randwrite-4k]

    rw=randwrite

    bs=4k

    filename=/dev/sdg

    stonewall


    [read-512k]

    rw=read

    bs=512k

    filename=/dev/sdg

    stonewall


    [write-512k]

    rw=write

    bs=512k

    filename=/dev/sdg

    stonewall

     

  • 相关阅读:
    Java基础00-模块36
    Java基础00-反射35
    Java基础00-Stream流34
    Java基础00-函数式接口33
    Java基础00-方法引用32
    运用龙格库塔法解大雷洛数平板绕流问题
    LB 学习日记
    Numba学习日记 —— 2019-12-5
    文件的操作及相关异常的处理
    time模块的两个函数time.clock()和time.time()的区别
  • 原文地址:https://www.cnblogs.com/lixuebin/p/10814380.html
Copyright © 2020-2023  润新知