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', 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笔记)