• fio 2种画图方法 fio_generate_plots 和 gfio


    fio

    • 安装fio

    apt-get install fio

    • 可以把fio的输出数据自动画图的插件gnuplot

    apt-get install gnuplot

    
    

    1.输出bw,lat和iops数据并画图

    fio安装完后自带有一个高级脚本fio_generate_plots能够根据fio输出的数据进行画图。操作流程如下:

    1.1设置fio输出详细日志

    fio的输出日志主要包含三种:bw,lat和iops,设置这三种的参数如下:

    write_bw_log=rw
    write_lat_log=rw
    write_iops_log=rw
    

    这里需要强调的一点是,后面接的参数rw,是输出日志文件名的prefix,如最终会生成的日志文件如下:

    rw_iops.log
    rw_clat.log
    rw_slat.log
    rw_lat.log
    rw_bw.log
    

    这个参数在后面画图的时候也要用到。

    for i in clat lat slat bw iops;do mv rbd_$i.1.log rbd_$i.log;done

    1.2 画图

    前提是还需要安装好gnuplot,然后使用下面的命令即可自动画图:

    root@ubuntu:/tmp> fio_generate_plots bw
    

    发现没有,fio_generate_plots接受的唯一参数就是这个日志文件名的prefix。

    本例中生成的图片文件有:

    bw-bw.svg 
    bw-clat.svg 
    bw-iops.svg 
    bw-lat.svg 
    bw-slat.svg

    直接 fio 测试命令

    随机读:

    fio -filename=/dev/sdb1 -direct=1 -iodepth 1 -thread -rw=randread -ioengine=psync -bs=16k -size=200G -numjobs=10 -runtime=1000 -group_reporting -name=mytest

    说明:
    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=/dev/sdb1 -direct=1 -iodepth 1 -thread -rw=read -ioengine=psync -bs=16k -size=200G -numjobs=30 -runtime=1000 -group_reporting -name=mytest

    随机写:

    fio -filename=/dev/sdb1 -direct=1 -iodepth 1 -thread -rw=randwrite -ioengine=psync -bs=16k -size=200G -numjobs=30 -runtime=1000 -group_reporting -name=mytest

    顺序写:

    fio -filename=/dev/sdb1 -direct=1 -iodepth 1 -thread -rw=write -ioengine=psync -bs=16k -size=200G -numjobs=30 -runtime=1000 -group_reporting -name=mytest

    混合随机读写:

    fio -filename=/dev/sdb1 -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

    GFIO 

    fio是个非常强大的IO性能测试工具,可以毫不夸张的说,如果你把所有的fio参数都搞明白了,基本上就把IO协议栈的问题搞的差不多明白了,原因在于作者Jens Axboe是linux内核IO部分的maintainer. 但是这个工具有个很大的缺点就是没有图形界面,单靠输出的数字很难看出来IO的趋势变化,所以急需一个图形前端.

    幸运的是Jens也认识到这个问题,2012年2月15号在google plus上说:

    Once complete, this will be a great addition to fio. It can be quite tricky to get a good overview of all the various job controlling options that fio has, presenting them graphically has some advantages over a basic 80-line text cli.

    可是Jens是写linux内核代码的,对于图形终端的编程不是很熟悉。 大牛毕竟是大牛,发扬革命不怕苦精神,自己学图形编程,于是在最近的2.1版本给我们带来了这个图形终端。有了这个东西使用起来就方便许多。

    我给大家演示下如何编译,运行这个gfio. 在这之前需要给大家说下fio的server/client模式。 fio一旦进入server模式就会在8765 tcp端口上监听,等待客户端来连接。 一旦客户端连接上来,会发上来比如运行job等任务,服务端把运行结果推送到客户端。所以这个图形前端实际上是fio的一个client, 名字叫gfio. 具体参见 README里面的描述。

    新版本的支持gfio的fio可以在这里下载 git clone git://git.kernel.dk/fio.git,编译gfio源码的时候, 由于它依赖于gtk库,需要先安装libgtk2.0开发包,演示开始:

     
    sudo apt-get -y install libgtk2.0-dev
    cd fio
    $ ./configure --enable-gfio
    ...
    gtk 2.18 or higher            yes
    ...
     
    make fio
    make gfio
    $ ./fio -S
    fio: server listening on 0.0.0.0,8765

    这样fio就编译好了,同时进入server模式。 在另外一个终端运行 gfio 就可以看到图形界面,打开examples/aio-read.fio 这个脚本把玩下(注意这个脚本里面文件的路径是/data1, 最好改成/tmp之类的),如下图:
    Screenshot at 2013-05-30 20:48:41

  • 相关阅读:
    manacher(求最大回文串并返回)
    编程求一个后缀表达式的值
    栈的简单使用
    云计算的概念
    乐优商城
    四大函数型接口
    Stream流计算
    JWT实现无状态登录
    Thymeleaf模板引擎
    elasticSearch的使用
  • 原文地址:https://www.cnblogs.com/bodhitree/p/5809289.html
Copyright © 2020-2023  润新知