zoukankan      html  css  js  c++  java
  • fio笔记

    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', or json+')

    • --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

  • 相关阅读:
    Vulnhub_DC4 记录
    文件上传(解析)漏洞
    开源情报搜集
    Vulnhub_DC3 记录
    “恶意”利用IPC$
    Vulnhub_DC2 记录
    Vulnhub_DC1 记录
    合天网安实验室 渗透测试项目二
    合天网安实验室 渗透测试项目一
    编程如写作
  • 原文地址:https://www.cnblogs.com/delta1037/p/13376659.html
Copyright © 2011-2022 走看看