fio磁盘压测工具
  SgkFSsO5YnHd 2023年11月02日 49 0

内容要点:

一、fio安装

二、fio使用

三、fio结果分析

一、fio安装

1、下载

wget https://brick.kernel.dk/snaps/fio-2.1.10.tar.gz

2、安装相关软件包

yum install -y libaio libaio-devel

3、解压

tar -xzvf fio-2.1.10.tar.gz -C /usr/local/      
cd /usr/local/fio-2.1.10

4、编译安装

./configure
make
make install

fio磁盘压测工具_文件系统

二、fio使用

1、fio参数解释

direct,表示是否跳过系统缓存。设置的 1 ,就表示跳过系统缓存。

iodepth,表示使用异步 I/O(asynchronous I/O,简称 AIO)时,同时发出的 I/O 请求上限。在上面的示例中,我设置的是 64。

rw,表示 I/O 模式。我的示例中, read/write 分别表示顺序读 / 写,而 randread/randwrite 则分别表示随机读 / 写。

ioengine,表示 I/O 引擎,它支持同步(sync)、异步(libaio)、内存映射(mmap)、网络(net)等各种 I/O 引擎。上面示例中,我设置的 libaio 表示使用异步 I/O。

bs,表示 I/O 的大小。示例中,我设置成了 4K(这也是默认值)。

filename,表示文件路径,当然,它可以是磁盘路径(测试磁盘性能),也可以是文件路径(测试文件系统性能)。示例中,我把它设置成了磁盘 /dev/sdb。不过注意,用磁盘路径测试写,会破坏这个磁盘中的文件系统,所以在使用前,你一定要事先做好数据备份。

2、案例

测试随机写IOPS:
fio -direct=1 -iodepth=128 -rw=randwrite -ioengine=libaio -bs=4k -size=5G -numjobs=1 -runtime=600 -group_reporting -filename=/ssd/fiotest.txt -name=Rand_Write_IOPS_Test
测试随机读IOPS:
fio -direct=1 -iodepth=128 -rw=randread -ioengine=libaio -bs=4k -size=5G -numjobs=1 -runtime=600 -group_reporting -filename=/ssd/fiotest.txt -name=Rand_Read_IOPS_Test
测试写吞吐量:
fio -direct=1 -iodepth=32 -rw=write -ioengine=libaio -bs=1024k -size=5G -numjobs=1 -runtime=600 -group_reporting -filename=/ssd/fiotest2.txt -name=Write_BandWidth_Test
测试读吞吐量:
fio -direct=1 -iodepth=32 -rw=read -ioengine=libaio -bs=1024k -size=5G -numjobs=1 -runtime=600 -group_reporting -filename=/ssd/fiotest2.txt -name=Read_BandWidth_Test

fio磁盘压测工具_运行时间_02

三、fio结果分析

  read : io=717120KB, bw=23915KB/s, iops=5978, runt= 29986msec
  #这一行表示读
  #io表示执行了多少M的io,bw表示平均io带宽,iops表示每秒的输入输出量,runt表示线程运行时间
  clat (usec): min=162, max=17094, avg=1178.92, stdev=701.84
     lat (usec): min=162, max=17094, avg=1179.36, stdev=702.21
    clat percentiles (usec):
     |  1.00th=[  338],  5.00th=[  462], 10.00th=[  556], 20.00th=[  692],
     | 30.00th=[  804], 40.00th=[  908], 50.00th=[ 1012], 60.00th=[ 1144],
     | 70.00th=[ 1304], 80.00th=[ 1528], 90.00th=[ 1960], 95.00th=[ 2384],
     | 99.00th=[ 3824], 99.50th=[ 4576], 99.90th=[ 6560], 99.95th=[ 7584],
     | 99.99th=[ 9920]
   #io延迟包括三种:slat,clat,lat,关系是lat=slat+clat;
   #slat表示fio submit某个I/O的延迟,称slat为提交延迟;
   #clat表示fio complete某个I/O的延迟,称clat为提交延迟;
   #lat表示从fio将请求提交给内核,再到内核完成这个I/O为止所需的相应时间,称lat为响应时间;
   #usec:微妙,msec:毫秒
    cpu          : usr=0.17%, sys=27.06%, ctx=263958, majf=0, minf=10
    #usr表示用户空间进程;
    #sys表示内核空间进程;

参数解释:

bw=带宽
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 latencies=IO完延迟的分布

io=总共执行了多少size的IO
aggrb=group总带宽
minb=最小平均带宽.
maxb=最大平均带宽.
mint=group中线程的最短运行时间.
maxt=group中线程的最长运行时间.

ios=所有group总共执行的IO数.
merge=总共发生的IO合并数.
ticks=Number of ticks we kept the disk busy.
io_queue=花费在队列上的总共时间.
util=磁盘利用率
————————————————
版权声明:本文为CSDN博主「MssGuo」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/MssGuo/article/details/121894344

四、补充:

使用fio进行磁盘I/O测试,认识一些概念性的名称:

IOPS (Input/Output Per Second):指单位时间内系统能处理的I/O请求数量,即每秒的输入输出量(或读写次数),是衡量磁盘性能的主要指标之一。

数据吞吐量(Throughput):指单位时间内可以成功传输的数据数量。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  jnZtF7Co41Wg   2023年12月11日   37   0   0 文件系统xmlGNU
  U9ElBp9F5cmM   2023年11月19日   23   0   0 文件系统linux文件名