【测试】 FIO:ceph/磁盘IO测试工具 fio(iodepth深度)

本文详细介绍了FIO工具的使用,包括NAS文件系统和块系统测试,以及FIO参数配置,如iodepth、direct等。FIO是强大的I/O性能测试工具,适用于测试磁盘、Ceph等存储系统的读写性能。文中还讨论了IO状态监控工具iostat,并提及了其他相关工具如vdbench。通过对FIO输出内容的解释,帮助读者理解I/O性能测试的关键指标和优化思路。
摘要由CSDN通过智能技术生成

目录

随看随用

NAS文件系统测试

块系统测试

FIO用法

FIO介绍

FIO 工具常用参数:

FIO结果说明

 I/O 的重放('录'下实际工况的IO,用fio'重放')

fio工作参数可以写入配置文件

fio的iodepth参数说明

IO状态监控:

Iostat介绍

其他相关工具和内容

与FIO相似的工具

fio测试脚本

提取iops和bw

gunplot画图

IO优化思路和IO栈图

Fio 输出内容的解释

相关命令

附录


作者:bandaoyu本文随时更新,地址:https://blog.csdn.net/bandaoyu/article/details/113190057

随看随用

NAS文件系统测试

随机读 IOPS/吞吐-4K
fio -numjobs=1 -iodepth=128 -direct=1 -ioengine=libaio -sync=1 -rw=randread -bs=4K -size=1G -time_based -runtime=60 -name=Fio -directory=/mnt

随机写 IOPS/吞吐-4K 
fio -numjobs=1 -iodepth=128 -direct=1 -ioengine=libaio -sync=1 -rw=randwrite -bs=4K -size=1G -time_based -runtime=60 -name=Fio -directory=/mnt

NAS性能测试_使用指南_云主机 - 七牛开发者中心

混合读写测试

随机混合读写 IOPS/吞吐-4K
fio -numjobs=1 -iodepth=128 -direct=1 -ioengine=libaio -sync=1 -rw=randrw -bs=4K -size=1G -time_based -runtime=60 -name=Fio -directory=/mnt

顺序混合读写 IOPS/吞吐-4K 
fio -numjobs=1 -iodepth=128 -direct=1 -ioengine=libaio -sync=1 -rw=rw  -bs=4K -size=1G -time_based -runtime=60 -name=Fio -directory=/mnt

块系统测试

fio --ioengine=rbd --iodepth=10 --numjobs=1  --pool=.rbdpool.rbd --rbdname=lun14 --name=write5   -rw=randwrite  --bs=1M --size=6G --group_reporting --direct=1

测试盘:

随机读:
fio -ioengine=libaio -group_reporting -direct=1 -name=testsda -numjobs=1 --time_based --runtime=1800 -iodepth=64 -rw=randread -bs=512k -filename=/dev/sda

(filename=/dev/sda   指定被测试的盘符)

FIO用法

随机读:(可直接用,向磁盘写一个2G文件,10线程,随机读1分钟,给出结果)
fio -filename=/tmp/test_randread -direct=1 -iodepth 1 -thread  -rw=randread  -ioengine=psync -bs=16k -size=2G -numjobs=10 -runtime=60 -group_reporting -name=mytest

说明:

官网选项说明:https://fio.readthedocs.io/en/latest/fio_doc.html#command-line-options

说明文档:https://fio.readthedocs.io/en/latest/fio_doc.html

https://linux.die.net/man/1/fio

PDF:https://download.csdn.net/download/bandaoyu/23481652

没有列出的参数看:https://www.systutorials.com/docs/linux/man/1-fio/

filename=/dev/emcpowerb 支持文件系统或者裸设备,-filename=/dev/sda2或-filename=/dev/sdb
direct=1                 测试过程绕过机器自带的buffer,使测试结果更真实
iodepth=1                如果 I/O 引擎是异步的,我们希望保持多大的队列深度?
rw=randwread             测试随机读的I/O
rw=randwrite             测试随机写的I/O
rw=randrw                测试随机混合写和读的I/O
rw=read                  测试顺序读的I/O
rw=write                 测试顺序写的I/O
rw=rw                    测试顺序混合写和读的I/O
bs=4k                    单次io的块文件大小为4k
bsrange=512-2048         同上,提定数据块的大小范围
size=5g                  本次的测试文件大小为5g,以每次4k的io进行测试
numjobs=30               本次的测试线程为30
runtime=1000             测试时间为1000秒,如果不写则一直将5g文件分4k每次写完为止
time_based: 如果在runtime指定的时间还没到时文件就被读写完成,将继续重复直到runtime时间结束。
ioengine=psync           io引擎使用pync方式,如果要使用libaio引擎,需要yum install libaio-devel包
rwmixwrite=30            在混合读写的模式下,写占30%
group_reporting          关于显示结果的,汇总每个进程的信息
此外
lockmem=1g               只使用1g内存进行测试
zero_buffers             用0初始化系统buffer
nrfiles=8                每个进程生成文件的数量

--ioengine=rbd表示用rbd引擎
--pool为存储卷所在的存储池,一般为“.硬盘池名.rbd” (H3C), 
--rbdname为存储卷名,其他参数与fio跑普通卷无差异

https://fio.readthedocs.io/en/latest/fio_doc.html

io总的输入输出量 

bw:带宽   KB/s 

iops:每秒钟的IO数

runt:总运行时间

lat (msec):延迟(毫秒)

msec: 毫秒

usec: 微秒

如果你开始部署集群时没有创建存储池, Ceph 会用默认存储池 rbd 存数据。

顺序读:
fio -filename=/dev/sdb1 -direct=1 -iodepth 1 -thread -rw=read -ioengine=psync -bs=16k -size=2G -numjobs=10 -runtime=60 -group_reporting -name=mytest

随机写:
fio -filename=/dev/sdb1 -direct=1 -iodepth 1 -thread -rw=randwrite -ioengine=psync -bs=16k -size=2G -numjobs=10 -runtime=60 -group_reporting -name=mytest

顺序写:
fio -filename=/dev/sdb1 -direct=1 -iodepth 1 -thread -rw=write -ioengine=psync -bs=16k -size=2G -numjobs=10 -runtime=60 -group_reporting -name=mytest

混合随机读写:
fio -filename=/dev/sdb1 -direct=1 -iodepth 1 -thread -rw=randrw -rwmixread=70 -ioengine=psync -bs=16k -size=2G -numjobs=10 -runtime=60 -group_reporting -name=mytest -ioscheduler=noop

测试场景:

  100%随机,100%读, 4K
  fio -filename=/dev/emcpowerb -direct=1 -iodepth 1 -thread -rw=randread -ioengine=psync -bs=4k -size=1000G -numjobs=50 -runtime=180 -group_reporting -name=rand_100read_4k

  100%随机,100%写, 4K
  fio -filename=/dev/emcpowerb -direct=1 -iodepth 1 -thread -rw=randwrite -ioengine=psync -bs=4k -size=1000G -numjobs=50 -runtime=180 -group_reporting -name=rand_100write_4k

  100%顺序,100%读 ,4K
  fio -filename=/dev/emcpowerb -direct=1 -iodepth 1 -thread -rw=read -ioengine=psync -bs=4k -size=1000G -numjobs=50 -runtime=180 -group_reporting -name=sqe_100read_4k

  100%顺序,100%写 ,4K
  fio -filename=/dev/emcpowerb -direct=1 -iodepth 1 -thread -rw=write -ioengine=psync -bs=4k -size=1000G -numjobs=50 -runtime=180 -group_reporting -name=sqe_100write_4k

  100%随机,70%读,30%写 4K
  fio -filename=/dev/emcpowerb -direct=1 -iodepth 1 -thread -rw=randrw -rwmixread=70 -ioengine=psync -bs=4k -size=1000G -numjobs=50 -runtime=180 -group_reporting -name=randrw_70read_4k

原文:linux FIO命令详解(一):https://blog.csdn.net/don_chiang709/article/details/92628623

FIO介绍

官网:https://fio.readthedocs.io/

FIO是测试IOPS的非常好的工具,用来对磁盘进行压力测试和验证。磁盘IO是检查磁盘性能的重要指标,可以按照负载情况分成照顺序读写,随机读写两大类。

FIO是一个可以产生很多线程或进程并执行用户指定的特定类型I/O操作的工具,IO 是一个多线程io生成工具,可以生成多种IO模式,用来测试磁盘设备的性能(也包含文件系统:如针对网络文件系统 NFS 的IO测试)。

fio在github上的坐标:https://fio.readthedocs.io/ 。

查看当前 fio 已支持的 IO 引擎

# fio --enghelp

Available IO engines:
	cpuio
	mmap
	sync
	psync
	vsync
	pvsync
	null
	net
	netsplice
	libaio
	rdma
	posixaio
	falloc
	e4defrag
	splice
	rbd
	mtd
	sg
	binject

fio 使用 rbd IO 引擎后,它会读取 /etc/ceph/ceph.conf 中的配置去连接 Ceph 集群。

FIO 工具常用参数:

https://blog.csdn.net/get_set/article/details/108001674

参数说明:

filename=/dev/sdb1 测试文件名称,通常选择需要测试的盘的data目录。direct=1 是否使用directIO,测试过程绕过OS自带的buffer,使测试磁盘的结果更真实。Linux读写的时候,内核维护了缓存,数据先写到缓存,后面再后台写到SSD。读的时候也优先读缓存里的数据。这样速度可以加快,但是一旦掉电缓存里的数据就没了。所以有一种模式叫做DirectIO,跳过缓存,直接读写SSD。 

rw=randwrite 测试随机写的I/Orw=randrw 测试随机写和读的I/O

bs=16k 单次io的块文件大小为16kbsrange=512-2048 同上,提定数据块的大小范围size=5G 每个线程读写的数据量是5GB。

numjobs=1 每个job(任务)开1个线程,这里=几个,后面每个用-name指定的任务就开几个线程测试。所以最终线程数=任务数(几个name=jobx)* numjobs。 name=job1:一个任务的名字,重复了也没关系。如果fio -name=job1 -name=job2,建立了两个任务,共享-name=job1之前的参数。-name之后的就是job2任务独有的参数。 

thread  使用pthread_create创建线程,另一种是fork创建进程。进程的开销比线程要大,一般都采用thread测试。fio默认会使用fork()创建job,如果这个选项设置的话,fio将使用pthread_create来创建线程。 

runtime=1000 测试时间为1000秒,如果不写 则一直将5g文件分4k每次写完为止。ioengine=libaio 指定io引擎使用libaio方式。libaio:Linux本地异步I/O。请注意,Linux可能只支持具有非缓冲I/O的排队行为(设置为“direct=1”或“buffered=0”);rbd:通过librbd直接访问CEPH Rados iodepth=16   涉及到 NCQ(Native Command Queueing,本地命令队列)技术的知识,一些存储磁盘的IO口的协议支持NCQ ,如果NCQ最大深度为 32,则使用 fio 进行性能测试时,其 iodepth不得超过 32;

在异步模式下,CPU不能一直无限的发命令到SSD。比如SSD执行读写如果发生了卡顿,那有可能系统会一直不停的发命令,几千个,甚至几万个,这样一方面SSD扛不住,另一方面这么多命令会很占内存,系统也要挂掉了。这样,就带来一个参数叫做队列深度。(详细的见后面的章节:《fio的iodepth参数说明》)

Block Devices(RBD),无需使用内核RBD驱动程序(rbd.ko)。该参数包含很多ioengine,如:libhdfs/rdma等rwmixwrite=30 在混合读写的模式下,写占30%group_reporting  

如果‘numjobs’设置的话,我们感兴趣的可能是打印group的统计值,而不是一个单独的job。这在‘numjobs’的值很大时,一般是设置为true的,可以减少输出的信息量。如果‘group_reporting’设置的话,fio将会显示最终的per-groupreport而不是每一个job都会显示。
此外lockmem=1g 只使用1g内存进行测试。zero_buffers 用0初始化系统buff

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要下载 Linux FIO 测试工具,可以按照以下步骤进行操作: 1. 打开终端,进入命令行界面。 2. 确保已经安装了 wget 命令行工具。如果未安装,可以使用包管理器(如 apt、dnf、yum 等)来安装这个工具。例如,在 Ubuntu 系统上,可以使用以下命令进行安装:sudo apt-get install wget 3. 使用 wget 命令下载 FIO 工具的安装包。在命令行中输入以下命令:wget https://github.com/axboe/fio/archive/master.zip 4. 下载完成后,使用 unzip 命令解压缩下载的压缩包。在命令行中输入以下命令:unzip master.zip 5. 解压缩完成后,进入解压后的目录。在命令行中输入以下命令:cd fio-master 6. 编译 FIO 工具。在命令行中输入以下命令:make 7. 等待编译完成后,可以使用 FIO 工具进行测试。 以上就是下载和安装 Linux 下的 FIO 测试工具的步骤。请注意,这些步骤可能因不同的 Linux 发行版而略有不同,但整体过程类似。建议在下载和安装前,查看一下官方文档或相关资源,了解适用于你的具体环境的下载和安装方法。 ### 回答2: 要下载Linux Fio测试工具,你可以按照以下步骤进行: 1. 打开终端,使用curl命令下载Fio源代码。在终端中输入以下命令并按下回车键: ``` curl -O https://github.com/axboe/fio/archive/fio-x.x.x.tar.gz ``` 请注意,"x.x.x"应替换为最新版本的Fio。 2. 解压下载的源代码。在终端中输入以下命令并按下回车键: ``` tar -zxvf fio-x.x.x.tar.gz ``` 这将解压源代码文件到当前目录中。 3. 进入解压后的目录。在终端中输入以下命令并按下回车键: ``` cd fio-fio-x.x.x ``` 进入包含Fio源代码的文件夹。 4. 构建和安装Fio。在终端中输入以下命令并按下回车键: ``` make && sudo make install ``` 这将编译并安装Fio工具。 5. 完成安装后,你就可以使用Fio进行磁盘性能测试了。可以通过在终端中运行"Fio"命令来查看可用的参数和选项。 请注意,下载和安装Fio需要确保你的计算机已经正确安装了curl和构建工具(例如gcc)。根据你的Linux发行版,你可能需要提前安装这些依赖项。 ### 回答3: 要下载Linux下的fio测试工具,可以按照以下步骤进行操作: 1. 打开终端,使用wget命令从fio官方网站下载fio的源代码压缩包。可以使用以下命令进行下载: wget https://github.com/axboe/fio/archive/refs/tags/fio-X.YY.tar.gz 注意,X.YY需要替换成所需的版本号。 2. 下载完成后,可以使用tar命令解压缩下载的文件。使用以下命令进行解压缩: tar -zxvf fio-X.YY.tar.gz 解压后将会得到一个名为fio-X.YY的文件夹。 3. 进入解压后的文件夹,使用make命令进行编译。使用以下命令进行编译: cd fio-X.YY make 编译完成后,将会生成一个可执行文件fio。 4. 将fio可执行文件移动到系统的可执行文件路径下,这样就可以在任何位置使用fio命令。使用以下命令进行移动: sudo mv fio /usr/local/bin/ 这里需要使用sudo命令以管理员权限进行操作。 5. 完成以上步骤后,即可在终端中使用fio命令进行性能测试,例如: fio --name=mytest --ioengine=libaio --rw=read --bs=4k --numjobs=4 --size=1G --runtime=60s 这个命令将会进行一个简单的读取测试,读取4KB大小的数据,使用4个并发作业,总共测试1GB的数据,在60秒的时间内完成。 通过以上步骤,就可以成功下载并使用Linux下的fio测试工具进行性能测试了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值