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
测试结果图
-
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