[转帖]使用FIO工具对系统进行存储压力测试

使用,fio,工具,对系统,进行,存储,压力,测试 · 浏览次数 : 0

小编点评

The provided text offers a comprehensive overview of the Fio benchmark and its parameters. Here's a summary: **Key Points:** * **Purpose:** This benchmark tests the performance of Fio, an I/O framework for Linux. * **Key parameters:** It includes options for reading, writing, and combining files in different ways. * **Performance metrics:** It records various I/O performance metrics like read/write counts, IOPS, CPU usage, and latency. * **Results:** The benchmark runs for 16 processes and displays average and standard deviation values for these metrics. * **Overall:** It provides valuable insights into Fio's performance and its ability to handle different I/O scenarios. **Specific Details:** * **Randread:** This mode reads from the random access block and explores various combinations of sequence, bandwidth, and memory allocation. * **RandoWRP:** This mode alternates between reading and writing from the random access block, creating a mix of read and write patterns. * **Group reporting:** Each task is reported on a separate line, providing a detailed overview of each I/O direction. **Benefits of the Benchmark:** * **Understanding Fio's performance:** It helps users evaluate its strengths and weaknesses in handling different I/O scenarios. * **Identifying bottlenecks:** By analyzing specific metrics, developers can identify performance bottlenecks and optimize their application. * **Benchmarking different configurations:** Users can compare the performance of Fio with different settings and configurations. **Additional Notes:** * The benchmark uses the `rrd` and `cat` metrics to display I/O statistics. * It also includes information about CPU and disk usage. * The benchmark outputs a lot of data, but it provides clear explanations for each metric and result.

正文

https://www.modb.pro/db/495753

 

安装fio

yum -y install fio.x86_64
[root@localhost ~]# rpm -qa|grep fio
 #为了测试异步I/O , 需要安装libaio 。安装libaio-devel包可以直接使用如下命令
[root@localhost ~]# yum -y install libaio-devel

 

       Fio提供了非常多的配置参数。
参数名称:
释义

filename:
待测试的文件或块设备。
若为文件,则代表测试文件系统的性能;例:-filename=/work/fstest/fio.img
若为块设备,则代表测试裸设备的性能; 例:-filename=/dev/sdb1

ioengine:
IO引擎
fio支持多种引擎如:cpuio、mmap、sync、psync、vsync、pvsync、pvsync2、null、net、netsplice、ftruncate、filecreate、libaio、posixaio、falloc、e4defrag、splice、rados、rbd、mtd、sg、io_uring

direct:
当前测试是否采用直接IO方式进行读写,如果采用直接IO,则取值-direct=1,否则取值-direct=0。
采用直接IO写测试,会使得测试结果更加真实。

rw:
读写模式。
read:顺序读测试,使用方式-rw=read
write:顺序写测试,使用方式-rw=write
randread:随机读测试,使用方式-rw=randread
randwrite:随机写测试,使用方式-rw=randwrite
randrw:随机读写,-rw=randrw;默认比率为5:5,通过参数-rwmixread设定读的比率,如-rw=randrw-rwmixread=70,说明读写比率为70:30。或rwmixwrite

bs:
单次IO的大小;例:-bs=4k

bssplit:
设备读写访问的IO大小,例:-bssplit=4k/30:8k/40:16k/30,随机读4k文件占30%、8k占40%、16k占30%

bsrange:
设置IO大小的范围,例如-bsrange=512-2048

size:
本次测试文件的大小;例-size=1G

iodepth:
IO队列深入,即一次下发的IO的个数,例如:-iodepth=16

numjobs:
测试进程的并发数,默认为,例:-numjobs=16

sync:
设置同步模式,同步-sync=1,异步-sync=0

fsync:
设置数据同步模式,同步-fsync=1,异步-fsync=0

runtime:
设置测试运行的时间,单位秒,例:-runtime=300

group_reporting:
关于显示结果的,汇总每个进程的信息

lockmem:
对测试所使用的内存进行限制,如-lockmem=1g,限制1G

关于ioengine, 采用的文件读写方式:
sync:采用read,write,使用fseek定位读写位置。
psync:采用pread、pwrite进行文件读写操作
vsync:采用readv(2) orwritev(2)进行文件读写操作,
libaio:Linux异步读写IO(Linuxnative asynchronous I/O)
posixaio: glibc POSIX 异步IO读写,使用aio_read(3)and aio_write(3)实现IO读写。

注:read()和write()系统调用每次在文件和进程的地址空间之间传送一块连续的数据。但是,应用有时也需要将分散在内存多处地方的数据连续写到文件中,或者反之。在这种情况下,如果要从文件中读一片连续的数据至进程的不同区域,使用read()则要么一次将它们读至一个较大的缓冲区中,然后将它们分成若干部分复制到不同的区域,要么调用read()若干次分批将它们读至不同区域。同样,如果想将程序中不同区域的数据块连续地写至文件,也必须进行类似的处理。UNIX提供了另外两个函数—readv()和writev(),它们只需一次系统调用就可以实现在文件和进程的多个缓冲区之间传送数据,免除了多次系统调用或复制数据的开销。readv()称为散布读,即将文件中若干连续的数据块读入内存分散的缓冲区中。writev()称为聚集写,即收集内存中分散的若干缓冲区中的数据写至文件的连续区域中。
测试案例
测试命令如下
[root@node0 fio-3.30]# fio -filename=/work/fstest/fio.img -direct=1 -rw=randread -bs=8k -size=1G -numjobs=16 -runtime=60 -group_reporting -name=fio_test
磁盘读写常用测试点:

1. Read=100% Ramdon=100% rw=randread (100%随机读)

2. Read=100% Sequence=100% rw=read (100%顺序读)

3. Write=100% Sequence=100% rw=write (100%顺序写)

4. Write=100% Ramdon=100% rw=randwrite (100%随机写)

5. Read=70% Sequence=100% rw=rw, rwmixread=70, rwmixwrite=30 (70%顺序读,30%顺序写)

6. Read=70% Ramdon=100% rw=randrw, rwmixread=70, rwmixwrite=30 (70%随机读,30%随机写)


测试过程中
fio_test: (g=0): rw=randread,bs=8K-8K/8K-8K/8K-8K, ioengine=psync, iodepth=1
...
fio-3.30
Starting 16 processes
Jobs: 16 (f=16): [r(16)] [18.0% done][1840KB/0KB/0KB /s] [230/0/0 iops] [eta 00m:50s]
第一行:当前测试为随机读(randread),IO块大小,文件读写方式psync,IO队列深度为1,
第二行:fio的版本号
第三行:说明任务的并发数
第四行:任务并发数,进度,剩余测试时间。

下面是每个执行的数据方向的I/O统计数据信息的代表值含义

read/write: 读/写的IO操作(还有一个trim没用过)

 salt: 提交延迟,这是提交I/O所花费的时间(min:最小值,max:最大值,avg:平均值,stdev:标准偏差)
 chat: 完成延迟,表示从提交到完成I/O部分的时间
 lat: 相应时间,表示从fio创建I/O单元到完成I/O操作的时间
 bw: 带宽统计
 iops: IOPS统计

lat(nsec/usec/msec):
I/O完成延迟的分布。这是从I/O离开fio到它完成的时间。与上面单独的读/写/修剪部分不同,这里和其余部分的数据适用于报告组的所有I/ o。10=0.01%意味着0.01%的I/O在250us以下完成。250=0.02%意味着0.02%的I/O需要10到250us才能完成。

cpu: cpu使用率

IO depths: I/O深度在作业生命周期中的分布

 IO submit: 在一个提交调用中提交了多少个I/O。每一个分录表示该数额及其以下,直到上一分录为止——例如,4=100%意味着我们每次提交0到4个I/O调用
 IO complete: 和上边的submit一样,不过这个是完成了多少个
 IO issued rwt: 发出的read/write/trim请求的数量,以及其中有多少请求被缩短或删除
 IO latency: 满足指定延迟目标所需的I/O深度

下面是Run status group 0 (all jobs) 全部任务汇总信息的代表值含义:

bw: 总带宽以及最小和最大带宽

io: 该组中所有线程执行的累计I/O

run: 这组线程中最小和最长的运行时。

最后是Linux中特有的磁盘状态统计信息的代表值含义:

ios: 所有组的I/ o个数

merge: I/O调度器执行的总合并数

ticks: 使磁盘繁忙的滴答数(仅供参考,原文是Number of ticks we kept the disk busy)

in_queue: 在磁盘队列中花费的总时间

util: 磁盘利用率。值为100%意味着我们保留了磁盘,如果一直很忙,那么50%的时间磁盘就会闲置一半的时间

与[转帖]使用FIO工具对系统进行存储压力测试相似的内容:

[转帖]使用FIO工具对系统进行存储压力测试

https://www.modb.pro/db/495753 安装fio yum -y install fio.x86_64[root@localhost ~]# rpm -qa|grep fio #为了测试异步I/O , 需要安装libaio 。安装libaio-devel包可以直接使用如下命令[

[转帖]FIO使用说明

FIO介绍: FIO是测试IOPS的非常好的工具,用来对磁盘进行压力测试和验证。磁盘IO是检查磁盘性能的重要指标,可以按照负载情况分成照顺序读写,随机读写两大类。FIO是一个可以产生很多线程或进程并执行用户指定的特定类型I/O操作的工具,FIO的典型用途是编写和模拟的I/O负载匹配的作业文件。也就是

[转帖]fio测试硬盘性能

FIO 是测试磁盘性能的工具,用来对硬件进行压力测试和验证。 使用 FIO 时,建议配合使用 libaio 的 I/O 引擎进行测试。 软件安装 编译安装 fio各版本下载地址如下: https://github.com/axboe/fio/releases 以“fio-2.1.10”版本为例,下载

[转帖]【详细齐全】FIO使用方法 及参数解析(文章末尾)

linux 使用FIO测试磁盘iops 方法详解 FIO是测试IOPS的非常好的工具,用来对硬件进行压力测试和验证,支持13种不同的I/O引擎, 包括:sync,mmap, libaio, posixaio, SG v3, splice, null, network, syslet, guasi,

[转帖]磁盘的基准测试

https://www.jianshu.com/p/0e25657d016d 参考 摘抄自 对永久性磁盘的性能进行基准化分析 正文 如需对永久性磁盘的性能进行基准化分析,请使用 FIO,而不是 dd 等其他磁盘基准化分析工具。默认情况下,dd 使用非常低的 I/O 队列深度,因此难以确保基准生成足够

[转帖]磁盘的基准测试

https://www.jianshu.com/p/0e25657d016d 参考 摘抄自 对永久性磁盘的性能进行基准化分析 正文 如需对永久性磁盘的性能进行基准化分析,请使用 FIO,而不是 dd 等其他磁盘基准化分析工具。默认情况下,dd 使用非常低的 I/O 队列深度,因此难以确保基准生成足够

[转帖]磁盘的基准测试

https://www.jianshu.com/p/0e25657d016d 参考 摘抄自 对永久性磁盘的性能进行基准化分析 正文 如需对永久性磁盘的性能进行基准化分析,请使用 FIO,而不是 dd 等其他磁盘基准化分析工具。默认情况下,dd 使用非常低的 I/O 队列深度,因此难以确保基准生成足够

[转帖]fio工具中的iodepth参数与numjobs参数-对测试结果的影响

测试环境 3台服务器:ceph配置内外网分离,外网使用万兆线,内网使用千兆线,osd共21个。 1台客户端:安装fio工具、内核客户端,使用万兆线。 测试目的 针对fio工具中的iodepth(队列深度)和numjobs(线程数)参数,分析使用fio工具时,哪个参数对带宽值测试结果影响比较大。 测试

[转帖]FIO 存储性能压测

测试环境 3台服务器:ceph配置内外网分离,外网使用万兆线,内网使用千兆线,osd共21个。 1台客户端:安装fio工具、内核客户端,使用万兆线。 测试目的 针对fio工具中的iodepth(队列深度)和numjobs(线程数)参数,分析使用fio工具时,哪个参数对带宽值测试结果影响比较大。 测试

[转帖]IO测试工具之fio详解

目前主流的第三方IO测试工具有fio、iometer和Orion,这三种工具各有千秋。 fio在Linux系统下使用比较方便,iometer在window系统下使用比较方便,Orion是oracle的IO测试软件,可在没有安装oracle数据库的情况下模拟oracle数据库场景的读写。 如下是在Li