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

背景技术:

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

为了确保SSD的高性能,需要对其进行常规性能测试。SSD测试之前,首先要做的是预调(preconditioning);SSD发货之后的性能取决于它的写入历史,因此测试前需要将SSD恢复到初始状态。如果不进行这个过程,那么SSD测试得出的结果可能就不合理,因为SSD的性能与写入历史有很大关系。详细来说,FOB(Fresh Of Box,刚拆封的状态)状态下的SSD性能最高,然后随着使用其性能快速下降,这个阶段叫做转换阶段(Transition State),继续使用之后SSD的性能会固定下来,这个阶段叫做稳定阶段(Steady State)。基准性能测试中达到稳定状态很重要,也是可能的,大约需要几次写入后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/Output Operations Per Second,每秒进行读写操作的次数)的非常好的工具,能够支持13种不同的IO引擎,包括:sync,mmap,libaio,posixaio,SG v3,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"precondition starts">>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"precondition complete">>sdr_result_$time.csv

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

#Random read and write test

echo"">>sdr_result_$time.csv

for i in{1k,4k,8k,16k,32k,64k,128k,256k,512k,1024k,2048k}

do

echo"$i_rread start testing"

fio-filename=/dev/sdr-direct=1-iodepth 128-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|grep iops=|cut-d','-f 2|grep-oE"[0-9.]+"`

BWU=`cat$i.txt|grep iops=|cut-d','-f 2|cut-d'='-f 2|seds'/[0-9.]//'g`

IOPS=`cat$i.txt|grep iops=|cut-d','-f 3|cut-d'='-f 2`

echo"$i_rread,$BW,$BWU,$IOPS">>sdr_result_$time.csv

rm-rf$i.txt

sleep 120

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

echo"$i_rwrite start testing"

fio-filename=/dev/sdr-direct=1-iodepth 128-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|grep iops=|cut-d','-f 2|grep-oE"[0-9.]+"`

BWU=`cat$i.txt|grep iops=|cut-d','-f 2|cut-d'='-f 2|seds'/[0-9.]//'g`

IOPS=`cat$i.txt|grep iops=|cut-d','-f 3|cut-d'='-f 2`

echo"$i_rwrite,$BW,$BWU,$IOPS">>sdr_result_$time.csv

rm-rf$i.txt

sleep 120

done

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

#Mixed random read and write test

echo"">>sdr_result_$time.csv

for i in{1k,4k,8k,16k,32k,64k,128k,256k,512k,1024k,2048k}

do

echo"$i_randrw start testing"

fio-filename=/dev/sdr-direct=1-iodepth 128-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|grep iops=|cut-d','-f 2|grep-oE"[0-9.]+"|xargs|awk'{print$1+$2}'`

BWU=`cat$i.txt|grep iops=|cut-d','-f 2|cut-d'='-f 2|seds'/[0-9.]//'g|xargs|awk'{print$1}'`

IOPS=`cat$i.txt|grep iops=|cut-d','-f 3|cut-d'='-f 2|xargs|awk'{print$1+$2}'`

echo"$i_randrw,$BW,$BWU,$IOPS">>sdr_result_$time.csv

rm-rf$i.txt

sleep 120

done

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

自动化测试Linux和fio,一种基于fio实现的SSD性能自动化测试方法与流程相关推荐

  1. 自动化测试框架cucumber_基于Cucumber和Testng的WebUI自动化测试方法与流程

    本发明涉及计算机技术领域,具体的说是基于Cucumber和Testng的WebUI自动化测试方法. 背景技术: 行为驱动测试方法已经在敏捷开发模式中普遍使用,通过使用标准化的语言将客户需求人员.开发人 ...

  2. android开发自制计算器测试图,基于uiautomator测试框架的计算器自动化测试方法和测试系统的制作方法...

    基于uiautomator测试框架的计算器自动化测试方法和测试系统的制作方法 [技术领域] [0001]本发明涉及自动化测试技术领域,特别是一种基于uiautomator测试框架的计算器自动化测试方法 ...

  3. 机器人系统 是局域linux,一种基于命令行接口的机器人测试系统及测试方法

    一种基于命令行接口的机器人测试系统及测试方法 [技术领域] [0001]本发明涉及机器人测试领域,具体是一种基于命令行接口的机器人测试系统. [背景技术] [0002]近年来,智能机器人技术飞速发展, ...

  4. linux提升nvme性能,基于SPDK的NVMe SSD性能评估指南

    原标题:基于SPDK的NVMe SSD性能评估指南 一 通过fio工具测试磁盘性能 SPDK采用异步I/O(Asynchronous I/O)加轮询(Polling)的工作模式,通常与Kernel的异 ...

  5. linux ipmitool检测内存,一种基于ipmitool工具循环侦测内存的方法与流程

    本发明涉及服务器技术领域,具体的说是一种基于ipmitool工具循环侦测内存的方法. 背景技术: 随着计算机技术的发展,计算机已经广泛应用于生活.工作中各个领域,对计算机计算处理能力和存储能力也提出了 ...

  6. Linux断点方法,一种基于Linux问题断点的定位方法及系统与流程

    本发明属于Linux断点解决技术领域,涉及一种基于Linux问题断点的定位方法及系统. 背景技术: 在Linux的日常测试过程中,经常会遇见一些未知的原因下系统启动过程中突然出现的宕机,黑屏等现象.导 ...

  7. linux 认证 转发,一种基于Linux系统实现路由器的portal认证报文转发方法和装置

    主权项: 1.一种基于Linux系统实现路由器的portal认证报文转发方法,其特征在于,在Linux系统上创建虚拟网卡,为虚拟网卡配置环回口IP地址,配置portal进程监听环回口的TCP协议预设端 ...

  8. 基于linux火焰识别算法,一种基于深度学习模型的火焰识别方法与流程

    本发明属于通信领域,具体涉及一种基于深度学习模型的火焰识别方法. 背景技术: 随着我国工业化与城镇水平的不断提高,现代设施大型公共建筑朝着空间大.进深广功能复杂的多元化方向发展,这对于防烟火朝着空间大 ...

  9. linux五元组结构体,一种基于分类优先级的五元组查询方法与流程

    本发明涉及网络传输技术,特别涉及一种基于分类优先级的五元组查询方法. 背景技术: 近年来,随着网络的快速发展,网络数据包的转发效率显的尤为重要:目前,信息技术快速发展,其对应的数据量也迅速增长,在对大 ...

  10. python应用如何实现升级_一种基于Python实现BMC批量升级的方法与流程

    本发明涉及BMC批量升级,尤其涉及一种基于Python实现BMC批量升级的方法. 背景技术: 随着现代服务器主板技术的发展,主板设计形态复杂多变.无论是设计成本还是后期使用过程中的维护成本都很高.如何 ...

最新文章

  1. 报名 | 搜狐×清华:第三届内容识别算法大赛,比武招新两不误!
  2. 自律到极致-人生才精致:第13期
  3. Java动态excel模板
  4. Mysql 8主从复制配置图解
  5. HarmonyOS之AI能力·助手类意图识别
  6. android旋转动画和平移动画具体解释,补充说一下假设制作gif动画放到csdn博客上...
  7. java替换html中的样式
  8. Java正则表达式较验手机号、邮箱
  9. 怎么让存储过程通用化_怎么做分布式存储的面试?
  10. Bootstrap 排版引用
  11. 机器学习--支持向量机实战(三)完整版SMO算法实现
  12. 尚硅谷 硅谷新闻_硅谷如何将真正的创新变成一种夸大的幻想
  13. python基础学习之python操作PDF文件、发送邮件添加附件10
  14. 设计模式之路 | 外观模式
  15. 计算机课程总结word,大学生的计算机课程总结word.docx
  16. 解决excel转pdf出现的折行问题
  17. 可靠数据传输(rdt)实现的底层原理
  18. 影视网站导航PHP源码
  19. a113 智能音箱芯片方案_智能音箱九大芯片方案商及其生产厂商和代表作品介绍-控制器/处理器-与非网...
  20. Google Chrome 源码下载

热门文章

  1. R6300V2 从 DD-WRT 回刷恢复 官方原厂固件   DD-WRT to R6300V2
  2. REHL5 mail不能自动外发邮件
  3. [转]WebGL中文教程
  4. 在Sun新解决方案中心亲历虚拟化(多图)
  5. Spring Framework中的面向方面编程(AOP),第二部分
  6. error create beanException
  7. ubuntu下arpoison安装
  8. OPPO R9s成为情侣最喜欢礼物,今年情人节就送它了!
  9. Poj(1182),种类并查集
  10. Linux_OpenSSH远程连接