先将注意事项强调下(亲测入坑):
FIO命令对硬盘的写入是覆盖写入,意思就是写入的地方,原先硬盘那里的数据便被破坏了,之前测试的时候就直接在系统盘进行fio测试,当时没发现问题,结果重启就会发现no boot device,启动失败,就是因为系统盘坏了。。
FIO的简单测试实际很简单,具体如下:
安装
https://www.jianshu.com/p/1a3e904d3d5b
简单的测试具体分为随机读,随机写,顺序读,顺序写四步就行了
fio --filename=/dev/vda1 --direct=1 --iodepth 1 --thread --rw=randread --ioengine=psync --bs=4k --size=2G --numjobs=10 --runtime=100 --group_reporting --name=mytest
fio --filename=/dev/vda1 --direct=1 --iodepth 1 --thread --rw=randwrite --ioengine=psync --bs=4k --size=2G --numjobs=10 --runtime=100 --group_reporting --name=mytest
fio --filename=/dev/vda1 --direct=1 --iodepth 1 --thread --rw=read --ioengine=psync --bs=4k --size=2G --numjobs=10 --runtime=100 --group_reporting --name=mytest
fio --filename=/dev/vda1 --direct=1 --iodepth 1 --thread --rw=write --ioengine=psync --bs=4k --size=2G --numjobs=10 --runtime=100 --group_reporting --name=mytest
具体参数解释如下:(如有错误或者添加欢迎指正)
filename=/dev/sda1 #测试文件名称,通常选择需要测试的盘的data目录
direct=1 #测试过程绕过机器自带的buffer。使测试结果更真实
rw=randwrite #测试随机写的I/O
rw=randrw #测试随机写和读的I/O
bs=16k #单次io的块文件大小为16k
bsrange=512-2048 #同上,提定数据块的大小范围
size=5G #本次的测试文件大小为5g,以每次4k的io进行测试
numjobs=10 #本次的测试线程为10个
runtime=100 #测试时间100秒,如果不写则一直将2g文件分4k每次写完为止
ioengine=psync #io引擎使用psync方式
rwmixwrite=30 #在混合读写的模式下,写占30%
group_reporting #关于显示结果的,汇总每个进程的信息
lockmem=1G #只使用1g内存进行测试
zero_buffers #用0初始化系统buffer
nrfiles=8 #每个进程生成文件的数量
对于测试结果来说,主要关注以下两个指标即可:
bw和iops
read : io=948896KB, bw=9475.1KB/s, iops=592, runt=100138msec
write: io=380816KB, bw=3802.1KB/s, iops=237, runt=100138msec
这里还有一个重要的参数指标:队列深度–iodepth
队列深度对磁盘IOPS的影响
转载至:
https://www.ksyun.com/blog/dui-lie-shen-du-dui-ci-pan-iopsde-ying-xiang/
原因当队列深度为1时,磁盘的利用率才达到91.85%,说明磁盘还有很多空闲时间可以压榨。对于SSD磁盘,当增加队列深度时,会增加IOPS,同时也会增加响应时间,但达到一定程度后,IOPS反而会下降,此时IO平均响应时间增加较大,因为磁盘利用率已经达到一个稳定状态了
简单来说:队列深度涉及到磁盘空间利用率的多少
结论
1、增加队列深度,可以看到IOPS不会随着队列深度的增加而一直增加,达到一定值后会有所下降。
2、增加队列深度,可以测试出磁盘的峰值
本文详细介绍FIO命令用于硬盘性能测试的方法,包括注意事项、安装步骤及四种基本测试(随机读写、顺序读写)。文章深入解析参数设置,如filename、direct、rw、bs、size等,并探讨队列深度对磁盘IOPS的影响。
2327

被折叠的 条评论
为什么被折叠?



