fio笔记

作者: delta1037 | 来源:发表于2020-07-21 19:16 被阅读0次

    fio安装

    fio 3.21下载地址
    下载之后解压tar -xzvf,打开解压后的文件夹

    ./configure --enable-gfio # 只有加这个参数才能编译安装gfio
    
    make fio
    make gfio
    
    make install
    

    CentOS 7 make时缺少头文件问题

    我安装的虚拟机是CentOS 7,fio-3.21版本需要更高版本的gcc来编译,可以使用scl来临时升级一下gcc

    yum install -y centos-release-scl
    yum install -y devtoolset-7-gcc devtoolset-7-gcc-c++
    scl enable devtoolset-7 bash
    

    fio参数

    -directory:文件创建的目录,当对NFS文件系统进行测试时,该参数可以指定客户端NFS挂载的目录
    -name:创建的文件名称
    -size:每个线程读写的文件总大小,除非被runtime等限定,否则当读写完成该文件测试才停止。在fio测试开始之前会创建指定大小的文件,文件名由name参数指定
    -blocksize、-bs参数,一次读取的字节数

    bs=256k means 256k for reads, writes and trims.
    bs=8k,32k means 8k for reads, 32k for writes and trims.
    bs=8k,32k, means 8k for reads, 32k for writes, and default for trims.
    bs=,8k means default for reads, 8k for writes and trims.
    bs=,8k, means default for reads, 8k for writes, and default for trims.

    -blocksize_range=irange[,irange][,irange], bsrange=irange[,irange][,irange] 指定了block size的范围,相当于动态的block size
    -rw参数:当指定了混合读写时,可以指定rwmixread或者rwmixwrite的值,代表read或者write所占的百分比,如果指定了两个并且相加不等于100,后指定的值会覆盖先指定的值

    read 顺序读
    write 顺序写
    rw,readwrite 顺序混合读写
    randwrite 随机写
    randread 随机读
    randrw 随机混合读写

    -runtime=int:测试运行的总时间,此时若size指定的文件大小还没有读写完毕则会终止
    -ioengine=psync:使用pread/pwrite I/O
    -thread:使用线程而不是fork来创建新的任务
    -direct=1 绕过机器自带的buffer,使结果更真实
    iodepth 1 队列深度
    group_reporting 多个任务整合统计信息
    --output-format:输出格式(normal',terse', json', orjson+')
    --output=:输出的文件名

    fio测试结果分析

    测试命令

    fio -directory=/mnt/nfs/ -direct=1 -iodepth 1 -thread -ioengine=psync -rw=randwrite -bs=4k -size=1G -numjobs=10 -runtime=60 -group_reporting -name=randwrite_4k_1G
    

    测试结果图


    fio test result

    write:(读模式下)IOPS:平均每秒IO数目,BW:以2为基数的磁盘吞吐量(以10为基数的磁盘吞吐量)(以2为基数的I/O总量 / 线程运行总时间)

    clat:Completion latency。最小值,最大值,平均值和标准差。this denotes the time from submission to completion of the I/O pieces.
    lat:总的延迟。最小值,最大值,平均值和标准差。

    clat:Completion latency统计信息。百分比th=[Completion latency]。表示此完成时延下占比。

    bw:带宽统计信息
    iops:IOPS的统计信息

    lat:I/O完成延迟统计。统计时间为从I/O离开fio到IO完成的这段时间,格式为“时间=百分比”,代表I/O时间为从上一个时间到该时间以下的百分比。

    cpu:CPU使用情况。用户和系统时间,以及线程经历的上下文切换数目、系统和用户时间的使用,以及主要和次要的缺页数量。

    IO depths=io队列深度
    IO submit=单个IO提交要提交的IO数
    IO complete= Like the above submit number, but for completions instead.
    IO issued= The number of read/write requests issued, and how many of them were short.
    IO latency=IO完延迟的分布

    gfio应用

    使用gfio时需要将fio的参数写成配置文件的格式(XXX.fio)

    上述测试中的参数写成配置文件的格式:

    [global]
    direct=1
    directory=/mnt/nfs/
    filename=file_size_1G
    ioengine=psync
    thread
    group_reporting
    
    [randwrite_4k_1G]
    rw=randwrite
    bs=4k
    size=1G
    runtime=60
    numjobs=10
    

    randwrite_4k_1G下为一个job的配置,其中global配置了所有的job共同的信息,fio的基本格式如下

    [global]
    # all job have this feature 
    
    [job0]
    # job 0 feature
    
    [job1]
    # job 1 feature
    

    gfio使用过程

    1. 命令行中使用gfio,打开gfio的图形界面。
    2. 点击File,选择Open,打开xxx.fio文件
    3. 然后点击图形界面右下角的connect按钮
    4. 连接之后点击send,将参数发送给host
    5. 点击start开始测试

    当测试完成之后测试结果会自动弹出,如下图所示。其中参数含义与fio的输出参数含义表示基本一致。


    测试结果 上
    测试结果 下

    MobaXterm使用gfio

    如果虚拟机没有图形界面,可以使用MobaXterm来连接虚拟机并使用远程桌面

    服务器端安装软件

    yum install xorg-x11-xauth xorg-x11-fonts-* xorg-x11-font-utils xorg-x11-fonts-Type1 xclock
    

    启用 X11 Forwarding

    vim /etc/ssh/sshd_config
    
    # 修改如下内容
    X11Forwarding yes
    X11UseLocalhost no
    
    # 重启ssh服务
    service sshd restart
    

    参考文献

    【1】Fio安装、测试,Gfio图形化测试I/O读写性能
    【2】使用 MobaXterm 开启 linux 的远程桌面
    【3】FIO使用详解
    【4】fio 2种画图方法 fio_generate_plots 和 gfio

    相关文章

      网友评论

          本文标题:fio笔记

          本文链接:https://www.haomeiwen.com/subject/zyuwkktx.html