内容要点:
一、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使用
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结果分析
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):指单位时间内可以成功传输的数据数量。
标签:libaio,group,th,io,压测,IO,磁盘,fio From: https://blog.51cto.com/u_14475876/7949232