自动化测试Linux和fio,Linux IO性能测试工具: FIO之初见

0. 前言

对于存储系统,人们最为关注“三高”问题: 高性能,高可扩展性,高可靠性。尝尝会听到某司宣称自己的存储系统能够达到6个9(99.9999%),其指存储系统十分可靠,在一年中最多出现十几秒的宕机时间; 而对于高可扩展性,主要是指系统对存储设备(硬盘,闪存)数量增加的支持。而高性能则是指IOPS高,响应延迟低。

说远了,我们回到主题,为了测试系统IO性能的高低,在实际开发中,需要使用IO性能测试工具进行测试。今天在这里介绍一款测试工具“FIO”,它功能十分强大,能够对测试环境进行精密的配置,当然,可配置参数多,也导致想完全掌握有难度。不过,我们先来初见FIO的真面目。

1. Fio简介

简单来说,Fio是用来测试系统IO性能的工具,它的强大之处在与提供了一套测试框架,能够支持多线程多进程的IO测试,用户只需进行参数的配置,便能够方便地定制不同的IO行为(顺序读写,随机读写等),并对其性能进行监测。其作者Jens Axboe是linux内核IO部分的maintainer。而gfio则是Fio的图形监测工具,它提供了图形界面的参数配置,和性能监测图像。

2. Fio安装

Fio的安装,根据其在github上的项目安装说明,进行操作即可。

特别说明:

2.1 异步IO引擎

为了使用异步IO引擎,需要安装libaio-dev

sudo apt-get install libaio-dev

2.2 安装步骤

gfio是基于gdk实现,因此需要首先安装gdk,官方文档说,gdk版本要求在2.18及其以上,但没有找到如何安装2.0以上的版本,目前使用下面的命令安装通过了,并且能够运行gfio。

sudo apt-get install libgtk2.0-dev

接下来就可以正式安装Fio了。

源代码下载 git clone git://git.kernel.dk/fio.git

运行configure ./configure --enable-gfio

注:如果希望不支持gfio,只需去掉后面的--enable-gfio参数

make

make install

经过这几步,Fio的安装已经全部完成,为了测试是否安装成功,这里使用examples中的例子进行测试:

fio examples/ssd-test.fio

修正出现的错误:目录设置问题

fio: /mount-point-of-ssd is not a directory

fio: failed parsing directory=/mount-point-of-ssd

fio: job global dropped

修改后,如果成功执行,说明FIO安装成功。

3. 运行参数配置

Fio的运行参数配置支持“命令行模式”或者“Job File模式”,简单来讲,前者是将所有配置参数写在一个配置文件当中,然后使用fio config_file方式运行;而另外一种是以命令的形式进行设置。

3.1 配置实例

命令行 fio --name=first_job --ioengine=libaio --iodepth=4 \

--size=10m --bs=4k --rw=write \

--direct=1 --filename=/devdata/1.txt

命令行模式,以 “ - - ”+参数名+“=”的方式,对参数进行配置。具体参数的意义见后面介绍。

Job File [global]

ioengine=libaio

iodepth=4

size=10m

bs=4k

rw=write

direct=1

filename=/devdata/1.txt

[first_job]

说明:

配置文件划分为多个区域,每个区域的参数设置均作用于其下方的区域。

“global”区域进行全局的参数配置。

非特定名字的区域(first_job)则被视为一个运行任务。

运行结果:

0818b9ca8b590ca3270a3433284dd417.png

3.2 配置参数解释

Fio的配置参数高达上百种,要完全了解每个参数,实属不易,在这里,我只介绍几个重要的参数。

通过fio --cmdhelp命令,我们可以查看所有参数的意义,比如,查看“bs”的意义:

$fio --cmdhelp | grep bs

bs : Block size unit

bsrange : Set block size range (in more detail than bs)

bssplit : Set a specific mix of block sizes

bs_unaligned : Don't sector align IO buffer sizes

numjobs : Duplicate this job this many times

exitall : Terminate all jobs when one exits

可以得知:“bs”表示块大小。

在github的HOWTO文档中,作者对所有的配置参数做了详细的解释,当遇到不熟悉的参数时,可以进行查阅。

bs : 设置IO请求的块大小,可以给出上下限

支持对read,write,trim分别进行设置,以逗号隔开

比如:bs=1k-2k,3k-4k,5k-6k

size : 文件请求的大小,控制job结束

rw : 控制读写类型: read/write/rw/randread/randwrite/randrw

direct : 1表示绕过buffer,直接作用于设备

ioengine: io引擎:libaio(异步IO),syslet等

iodepth : 异步IO情况下,IO队列的长度

runtime : 执行时间限制,控制job结束

filename: 输出文件或者设备名,eg:/dev/sba

参考资料

Fio github主页– fio源代码及文档

GTK安装参考文档–GTK安装参考文档

FIO优秀文章–关于FIO使用的介绍

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值