一种基于fio实现的SSD性能自动化测试方法与流程

文档序号:13389263阅读:2134来源:国知局

本发明涉及ssd性能测试技术,具体的说是一种基于fio实现的ssd性能自动化测试方法。



背景技术:

ssd(solidstatedrives,固态硬盘)相对于原来的主轴旋转,并无机械部分,ssd没有转速,平均访问时间小很多。ssd采用多个闪存芯片的并发读写,提供很好的数据读写性能。全新的ssd因为数据的顺序写入,能达到最佳的性能。而使用过的ssd是将新数据写入空白区域,当删除数据时并没有真正的删除,只是将原始数据标注为无效。当需要擦除数据时,以nand数据块为单位进行擦除。

为了确保ssd的高性能,需要对其进行常规性能测试。ssd测试之前,首先要做的是预调(preconditioning);ssd发货之后的性能取决于它的写入历史,因此测试前需要将ssd恢复到初始状态。如果不进行这个过程,那么ssd测试得出的结果可能就不合理,因为ssd的性能与写入历史有很大关系。详细来说,fob(freshofbox,刚拆封的状态)状态下的ssd性能最高,然后随着使用其性能快速下降,这个阶段叫做转换阶段(transitionstate),继续使用之后ssd的性能会固定下来,这个阶段叫做稳定阶段(steadystate)。基准性能测试中达到稳定状态很重要,也是可能的,大约需要几次写入后ssd可以达到稳定状态。

可见,目前ssd性能测试采用的方式,必须在测试前对ssd进行预调操作,这就使得ssd性能测试过程有些繁琐,极大影响了测试效率。同时,ssd性能测试之前需要达到的稳定状态,也没有一个统一的操作要求和标准,很容易导致ssd性能测试质量低下等问题。



技术实现要素:

本发明针对目前技术发展的需求和不足之处,提供一种基于fio实现的ssd性能自动化测试方法。

本发明所述一种基于fio实现的ssd性能自动化测试方法,解决上述技术问题采用的技术方案如下:所述基于fio实现的ssd性能自动化测试方法,结合ssd性能测试的常用参数设置,基于fio命令,采用shell脚本,首先在ssd性能测试之前,将ssd设置为稳态状态,然后遍历不同的块大小分别对顺序读写、随机读写、混合随机读写的性能数据进行收集,自动化进行ssd稳态性能测试;最终将测试结果输出到日志中。

优选的,该基于fio实现的ssd性能自动化测试方法,其主要步骤包括:1)全盘写入若干次,设置ssd为稳态状态,2),遍历blocksize,进行顺序读写测试,3),遍历blocksize,进行随机读写测试,4),遍历blocksize,进行混合随机读写测试。

优选的,通过全盘写入两次,设置ssd为稳态状态。

本发明所述一种基于fio实现的ssd性能自动化测试方法,与现有技术相比具有的有益效果是:本发明自动实现了ssd的稳态以及性能数据的采集,采用的参数具有参考价值,摆脱了fio单条测试命令的局限性,解决了ssd性能及稳定性测试中测试质量效率低的问题,实现了ssd性能测试的自动化,提高了ssd性能测试的质量以及效率。

附图说明

附图1为基于fio实现的ssd性能自动化测试方法的流程图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,对本发明所述一种基于fio实现的ssd性能自动化测试方法进一步详细说明。

针对现有ssd性能测试中存在的问题,本发明提出了一种基于fio实现的ssd性能自动化测试方法,fio常用来对硬件进行压力测试和验证,是测试iops(input/outputoperationspersecond,每秒进行读写操作的次数)的非常好的工具,能够支持13种不同的io引擎,包括:sync,mmap,libaio,posixaio,sgv3,splice,null,network,syslet,guasi,solarisaio等等。

该基于fio实现的ssd性能自动化测试方法,采用shell脚本,实现了基于fio的ssd稳态下性能数据的自动采集;根据参数自动开始测试,首先采用fio命令将ssd设置为稳态,然后遍历不同块大小的顺序读写、随机读写和混合随机读写,最终完成ssd性能测试,并将结果输出到日志中。

实施例:1:

本实施例提出了一种基于fio实现的ssd性能自动化测试方法,结合ssd性能测试的常用参数设置,基于fio命令,采用shell脚本,首先在ssd性能测试之前,将ssd设置为稳态状态,然后遍历不同的块大小分别对顺序读写、随机读写、混合随机读写的性能数据进行收集,自动化进行ssd稳态性能测试;最终将测试结果输出到日志中。

本实施例基于fio实现的ssd性能自动化测试方法,其具体实现主要步骤包括:1)全盘写入若干次,设置ssd为稳态状态,2),遍历blocksize,进行顺序读写测试,3),遍历blocksize,进行随机读写测试,4),遍历blocksize,进行混合随机读写测试。

本实施例基于fio实现的ssd性能自动化测试方法,所使用的shell脚本的具体内容如下:

第一部分,比如,通过全盘写入两次,设置ssd稳态状态

echo"preconditionstarts">>sdr_result_$time.csv

fio--name=precondition--filename=/dev/sdr--numjobs=2--bs=128k--size=800g--ioengine=libaio--iodepth=32--iodepth_batch=16--iodepth_batch_complete=16--direct=1--rw=randwrite--group_reporting--randrepeat=0

echo"preconditioncomplete">>sdr_result_$time.csv

第二部分,遍历blocksize,顺序读写测试

#randomreadandwritetest

echo"">>sdr_result_$time.csv

foriin{1k,4k,8k,16k,32k,64k,128k,256k,512k,1024k,2048k}

do

echo"$i_rreadstarttesting"

fio-filename=/dev/sdr-direct=1-iodepth128-rw=randread-ioengine=libaio-bs=$i-numjobs=4--time_based--runtime=600--norandommap--randrepeat=0--bandwidth-log=1-group_reporting-name=mytest>$i.txt

bw=`cat$i.txt|grepiops=|cut-d','-f2|grep-oe"[0-9.]+"`

bwu=`cat$i.txt|grepiops=|cut-d','-f2|cut-d'='-f2|seds'/[0-9.]//'g`

iops=`cat$i.txt|grepiops=|cut-d','-f3|cut-d'='-f2`

echo"$i_rread,$bw,$bwu,$iops">>sdr_result_$time.csv

rm-rf$i.txt

sleep120

第三部分,遍历blocksize,随机读写测试

echo"$i_rwritestarttesting"

fio-filename=/dev/sdr-direct=1-iodepth128-rw=randwrite-ioengine=libaio-bs=$i-numjobs=4--time_based--runtime=600--norandommap--randrepeat=0--bandwidth-log=1-group_reporting-name=mytest>$i.txt

bw=`cat$i.txt|grepiops=|cut-d','-f2|grep-oe"[0-9.]+"`

bwu=`cat$i.txt|grepiops=|cut-d','-f2|cut-d'='-f2|seds'/[0-9.]//'g`

iops=`cat$i.txt|grepiops=|cut-d','-f3|cut-d'='-f2`

echo"$i_rwrite,$bw,$bwu,$iops">>sdr_result_$time.csv

rm-rf$i.txt

sleep120

done

第四部分,遍历blocksize,混合随机读写测试

#mixedrandomreadandwritetest

echo"">>sdr_result_$time.csv

foriin{1k,4k,8k,16k,32k,64k,128k,256k,512k,1024k,2048k}

do

echo"$i_randrwstarttesting"

fio-filename=/dev/sdr-direct=1-iodepth128-rw=randrw--rwmixread=70-ioengine=libaio-bs=$i-numjobs=4--time_based--runtime=600--norandommap--randrepeat=0--bandwidth-log=1-group_reporting-name=mytest>$i.txt

bw=`cat$i.txt|grepiops=|cut-d','-f2|grep-oe"[0-9.]+"|xargs|awk'{print$1+$2}'`

bwu=`cat$i.txt|grepiops=|cut-d','-f2|cut-d'='-f2|seds'/[0-9.]//'g|xargs|awk'{print$1}'`

iops=`cat$i.txt|grepiops=|cut-d','-f3|cut-d'='-f2|xargs|awk'{print$1+$2}'`

echo"$i_randrw,$bw,$bwu,$iops">>sdr_result_$time.csv

rm-rf$i.txt

sleep120

done

具体实施方式仅是本发明的具体个案,本发明的专利保护范围包括但不限于上述具体实施方式,任何符合本发明的权利要求书的且任何所属技术领域的普通技术人员对其所做的适当变化或替换,皆应落入本发明的专利保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1