CN116909825B - 固态硬盘性能测试预处理及稳态验证的自动化测试方法 - Google Patents
固态硬盘性能测试预处理及稳态验证的自动化测试方法 Download PDFInfo
- Publication number
- CN116909825B CN116909825B CN202311157919.7A CN202311157919A CN116909825B CN 116909825 B CN116909825 B CN 116909825B CN 202311157919 A CN202311157919 A CN 202311157919A CN 116909825 B CN116909825 B CN 116909825B
- Authority
- CN
- China
- Prior art keywords
- test
- steady
- state
- value
- module
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000012360 testing method Methods 0.000 title claims abstract description 196
- 238000011056 performance test Methods 0.000 title claims abstract description 46
- 239000007787 solid Substances 0.000 title claims abstract description 37
- 238000012795 verification Methods 0.000 title claims abstract description 35
- 238000013515 script Methods 0.000 claims abstract description 85
- 238000000034 method Methods 0.000 claims abstract description 18
- 238000004364 calculation method Methods 0.000 claims abstract description 11
- 238000010998 test method Methods 0.000 claims abstract description 7
- 238000007781 pre-processing Methods 0.000 claims description 44
- 238000001514 detection method Methods 0.000 claims description 5
- 230000003993 interaction Effects 0.000 claims description 3
- 230000000694 effects Effects 0.000 abstract description 5
- 230000006870 function Effects 0.000 description 82
- 241000282326 Felis catus Species 0.000 description 3
- 230000007547 defect Effects 0.000 description 3
- 230000002452 interceptive effect Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000035939 shock Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2205—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
- G06F11/2221—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test input/output devices or peripheral units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2247—Verification or detection of system hardware configuration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2273—Test methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/26—Functional testing
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提出了一种新型的固态硬盘性能测试预处理及稳态验证的自动化测试方法,其通过脚本自动运行稳态测试,再通过定量的计算参数,来判断固态硬盘是否已经达到稳态,提升了性能测试的效率和效果,其特征在于:所述方法包括以下步骤:步骤1、运行脚本,开始稳态验证测试;步骤2、选择测试项目;步骤3、进行环境自检;步骤4、进行硬盘自检;步骤5、对被测硬盘进行擦除,然后进行第一预处理;步骤6、根据所选择的测试项目进行稳态测试;步骤7、计算得到斜率偏移极限值max_s_ex、数据偏移极限值max_d_ex、最高斜率偏移值largest_s_ex、最高数据偏移值largest_d_ex;步骤8、进行稳态判断。
Description
技术领域
本发明涉及固态硬盘性能测试相关技术领域,具体涉及一种固态硬盘性能测试预处理及稳态验证的自动化测试方法。
背景技术
如今,固态硬盘已经成为广泛应用于个人电脑、服务器、数据中心等领域的存储设备。它们可以显著提升系统的启动速度、文件传输速度和应用程序响应速度,极大地改善了计算机的性能和用户体验。固态硬盘是一种用于数据存储的存储设备,它采用闪存芯片作为非易失性存储介质,相比传统的机械硬盘,具有较高的性能和可靠性。随着闪存技术的不断改进和创新,使得固态硬盘逐渐成为一种广泛应用的存储设备。其中最重要的突破之一是多层次单元(Multi-Level Cell,简称MLC)闪存的引入,它使得闪存芯片的容量大幅提升,降低了成本。随后,三层次单元(Triple-Level Cell,简称TLC)和四层次单元(Quad-Level Cell,简称QLC)闪存的问世使得固态硬盘容量更进一步扩大。此外,固态硬盘还采用了更快的接口标准,例如SATA(Serial ATA)和PCIe(Peripheral Component InterconnectExpress),以提供更高的数据传输速率。并且,固态硬盘无需机械部件进行数据读写,具有更快的随机访问时间,较低的延迟和更好的抗震性能。随着技术的不断进步,固态硬盘的价格逐渐下降,容量不断增加,将继续在存储领域发挥重要作用。
由于固态硬盘存在FOB(Fresh Out of Box)状态、过渡状态、稳态,但只有稳态才是固态硬盘正常使用过程中的状态,因此对固态硬盘进行性能测试前,必须对固态硬盘进行预处理使固态硬盘进入稳态状态。而固态硬盘的主要性能指标有吞吐量(Throughput)、每秒I/O数量(IOPS)和时延(Latency),目前的测试方法仅是通过对盘进行大量数据的顺序写或随机写,从而实现预处理,但这种测试方法不仅没有确认固态硬盘是否到达稳态也耗费了大量的时间。
有鉴于上述的缺陷,当前亟需设计一种新型的固态硬盘性能测试预处理及稳态验证的自动化测试方法来解决问题,提升性能测试的效率和效果。
发明内容
为了解决上述内容中提到的问题,本发明提出了一种新型的固态硬盘性能测试预处理及稳态验证的自动化测试方法,其通过脚本自动运行稳态测试,再通过定量的计算参数,来判断固态硬盘是否已经达到稳态,提升了性能测试的效率和效果。
其技术方案是这样的:
一种新型的固态硬盘性能测试预处理及稳态验证的自动化测试方法,其特征在于:所述方法包括以下步骤:
步骤1、运行脚本,开始稳态验证测试,执行步骤2;
步骤2、选择测试项目,再执行步骤3;
步骤3、进行环境自检,再执行步骤4;
步骤4、进行硬盘自检,再执行步骤5;
步骤5、对被测硬盘进行擦除,然后进行第一预处理,再执行步骤6;
步骤6、根据所选择的测试项目进行稳态测试,完成一次稳态测试记为一圈,记录每一圈的测试值以及累计每一圈写入的数据大小,当完成n(n≥5)圈后,再执行步骤7;
步骤7、根据最后n圈的每圈的测试值计算得到斜率偏移极限值max_s_ex、数据偏移极限值max_d_ex、最高斜率偏移值largest_s_ex、最高数据偏移值largest_d_ex,再执行步骤8;
步骤8、进行稳态判断:当largest_s_ex小于等于max_s_ex,同时largest_d_ex小于等于max_d_ex时,则稳态验证通过,结束运行脚本,进入测试项目;
当稳态验证不通过时,且每一圈写入的数据大小的累计值total_write大于等于容量限制值limit_cap,则结束运行脚本,不进入测试项目;
当稳态验证不通过时,且每一圈写入的数据大小的累计值total_write小于容量限制值limit_cap,则继续进行一圈稳态测试,再执行步骤7和步骤8。
进一步的,所述步骤4中硬盘自检时检测被测硬盘的容量值cap,定义所述容量限制值limit_cap=a*cap,其中a为自然数;
所述步骤5中第一预处理具体为:顺序写预处理。
进一步的,所述步骤7具体为:
步骤71、设x为1、2、...、n;
步骤72、取最后第x圈的测试值为y=y1、y2、...、yn;
步骤73、y的最大值记为变量max,y的最小值记为变量min;
步骤74、x的总和记为变量sum_x;
步骤75、y的总和记为变量sum_y;
步骤76、x与对应的y相乘记为xy,xy的总和记为变量sum_xy;
步骤77、x的平方记为x_sq,x_sq的总和记为变量sum_x_sq;
步骤78、x的平均值记为变量mean_x;
步骤79、y的平均值记为变量mean_y;
步骤710、计算斜率s =[(n* sum_xy) - (sum_x * sum_y)]/[(n * sum_x_sq) -(sum_x * sum_x)];
步骤711、计算斜率偏移极限值max_s_ex= mean_y * ratio,其中ratio为预设值,0<ratio≤0.1;
步骤712、计算数据偏移极限值max_d_ex = max_s_ex * 2;
步骤713、计算最高斜率偏移值largest_s_ex = s *(n-1);
步骤714、计算最高数据偏移值largest_d_ex = max - min 。
步骤715、执行步骤8。
进一步的,每个步骤的结果和完成时间点均被记录在测试日志中。
进一步的,所述测试项目包括:Throughput性能测试、IOPS性能测试、Latency性能测试。
进一步的,当步骤2选择Throughput性能测试时,
所述步骤5中进行第一预处理;
所述步骤6中稳态测试具体为:被测硬盘进行128k单线程32队列深度的1分钟顺序写测试;
所述测试值具体为带宽值。
进一步的,当步骤2选择IOPS性能测试或Latency性能测试时,
所述步骤5进行第一预处理后还需再进行第二预处理;所述第二预处理具体为:随机写预处理,并将写入的数据大小累计到累计值total_write,直至累计值total_write大于等于容量值cap,则完成预处理;
所述步骤6中每一圈写入的数据大小继续累计到累计值total_write;
所述测试值具体为IOPS值。
进一步的,当步骤2选择IOPS性能测试时,
所述步骤6中稳态测试具体为:被测硬盘进行4k块大小4线程32队列深度的1分钟随机写测试。
进一步的,当步骤2选择Latency性能测试时,
所述步骤6中稳态测试具体为:被测硬盘进行4k块大小单线程单队列深度的1分钟随机写测试。
进一步的,所述脚本包括:功能模块、预处理模块、稳态测试模块、稳态验证模块;
所述功能模块包括交互功能子模块、环境自检功能子模块、硬盘自检功能子模块、日志功能子模块、数据抓取功能子模块;
所述预处理模块包括顺序写预处理子模块和随机写预处理子模块;
所述稳态测试模块包括Throughput稳态测试子模块、IOPS稳态测试子模块、Latency稳态测试子模块;
所述稳态验证模块包括数据计算子模块和稳态判断子模块。
本发明的有益效果为:
1.本发明为性能测试前的预处理阶段,用于验证判断固态硬盘是否达到了稳态,因此适用于所有性能测试,并可嵌入到其它自动化脚本中,具有较强的灵活性和兼容性,极大的提升了性能测试的效率和效果。
2.本发明在进行IOPS和Latency性能测试的预处理时,会进行顺序写和随机写使数据填充全盘,避免出现盘在FOB状态下就判定为稳态的现象,从而提高了后续进行的性能测试结果的准确性,进一步提升了性能测试的效果。
3.本发明通过稳态测试流程的设计,节省了大量的测试时间,尤其是IOPS和Latency测试节省了3倍的测试时间。
4.本发明便于管理和调试,可以通过日志功能在测试过程中实时监控测试以及在测试结束后进行复盘。
附图说明
图1为本发明实施例的整体流程示意图。
图2为本发明脚本的整体结构示意图。
图3为本发明实施例的稳态验证的计算结果汇总示意图。
具体实施方式
下面结合实施例对本发明做进一步的描述。
以下实施例用于说明本发明,但不能用来限制本发明的保护范围。实施例中的条件可以根据具体条件做进一步的调整,在本发明的构思前提下对本发明的方法简单改进都属于本发明要求保护的范围。
如图1所示,本发明实现过程主要在固态硬盘性能测试的预处理阶段,因此对预处理之后进行的正式性能测试阶段不进行详细阐述。
本发明通过运行shell脚本实现自动化测试。
如图2所示,本发明的shell脚本包括功能模块、预处理模块、稳态测试模块、稳态验证模块。
功能模块包括交互功能子模块、环境自检功能子模块、硬盘自检功能子模块、日志功能子模块、数据抓取功能子模块。
预处理模块包括顺序写预处理子模块和随机写预处理子模块。顺序写预处理指进行大块顺序写2遍全盘(实际1-5遍皆可,可根据实际测试需求修改),主要参数为bs设为128k(可取128-1024之间的128倍数的整数,单位为k),direct设为1,ioengine设为libaio,线程设为1,队列深度设为32,randrepeat设为0,rw设为write,loops设为2,size设为100%。
随机写预处理指进行4k(选取范围4k-16k,可根据实际需求选择)随机写全盘60秒(选取范围60-600,可根据实际需求修改),主要参数为bs设为4k,direct设为1,ioengine设为libaio,线程设为4,队列深度设为32,randrepeat设为0,rw设为randwrite,runtime设为60s,size设为100%。
稳态测试模块包括Throughput稳态测试子模块、IOPS稳态测试子模块、Latency稳态测试子模块。
稳态验证模块包括数据计算子模块和稳态判断子模块。
本发明的实施例主要针对性能指标Throughput、IOPS、Latency,以下将通过对应的实施例1、实施例2和实施例3进行详细阐述。
实施例1
本实施例主要针对性能指标Throughput。
步骤S1为运行shell脚本,开始测试。
步骤S2包括步骤S201-步骤S211。
步骤S201:脚本调用功能模块的交互功能,列出所有的可测试项(Throughput、IOPS、Latency),测试人员输入要测的项目(Throughput);脚本调用日志功能将输入的内容以及完成的时间点记录到test.log文件。
步骤S202:脚本调用功能模块的环境自检功能对测试环境的信息进行记录,包括步骤S202a-S202e。
步骤S202a:检查nvme-cli、lscpu、lspci、fio、smartmontool是否安装,若未安装则自动安装。
步骤S202b:查看nvme-cli、lscpu、lspci、fio、smartmontool版本并记录到envir文件。
步骤S202c:用“cat /etc/system-release”查看OS信息并记录到envir文件。
步骤S202d:通过lscpu工具查询服务器CPU信息记录到envir文件。
步骤S202e:脚本调用日志功能将本步骤完成事项以及完成的时间点记录到test.log文件。
步骤S203:脚本调用功能模块的硬盘自检功能对被测盘的信息进行记录,包括步骤S203a-S203c。
步骤S203a:通过smartmontool工具查询被测盘smart信息并记录到envir文件并将容量换算为以GB为单位,并将数值赋值给变量cap。
步骤S203b:通过lspci工具查询被测盘pcie信息并记录到envir文件。
步骤S203c:脚本调用日志功能将本步骤完成事项以及完成的时间点记录到test.log文件。
步骤S204:通过nvme format命令对被测盘进行安全擦除;脚本调用日志功能将该步骤以及完成的时间点记录到test.log文件。
步骤S205:脚本调用预处理模块,进行顺序写预处理;脚本调用日志功能将该步骤以及完成的时间点记录到test.log文件。
步骤S206:通过步骤S201输入的测试项“Throughput”判断本项测试不用进行随机写预处理;脚本调用日志功能将该步骤以及完成的时间点记录到test.log文件。
步骤S207:对相关变量进行初始化,包括步骤S207a-S207c。
步骤S207a:初始化测试圈数为0并赋值给变量i,初始化总写入量为0并赋值给变量total_write。
步骤S207b:计算4倍cap的值并赋值给变量limit_cap(其中4倍可根据实际测试需求修改,范围为2-6倍)。
步骤S207c:脚本调用日志功能将该步骤以及完成的时间点记录到test.log文件。
步骤S208:脚本调用稳态测试模块的Throughput稳态测试,包括步骤S208a-S208e。
步骤S208a:计算i值:原i值加1并重新赋值给变量i。
步骤S208b:被测盘进行128k单线程32队列深度的1分钟顺序写测试(完成1次1分钟的测试记为1圈),生成对应的结果文件。
步骤S208c:脚本调用功能模块的数据抓取功能,记录圈数并通过S208b生成的结果文件记录带宽值、写入的数据大小IO_data。
步骤S208d:计算变量total_write值:将原total_write值与步骤S208c中记录的IO_data相加,重新赋值给变量total_write。
步骤S208e:脚本调用日志功能将该步骤以及完成的时间点记录到test.log文件。
步骤S209:当步骤S208a所述变量i小于n(n为稳态测试圈数,n≥5),循环步骤S208a-S208e;脚本调用日志功能将该步骤以及完成的时间点记录到test.log文件。
步骤S210:当步骤S208a所述变量i大于等于n(n为稳态测试圈数,n≥5),脚本调用稳态验证模块的数据计算功能,包括步骤S210a-S210o,如图3所示。
步骤S210a:赋值x为1-n。
步骤S210b:取步骤S208c所述最后第x圈的带宽值,记为y(每个y与x进行对应)。
步骤S210c:步骤S210b中y的最大值记为变量max,最小值记为变量min。
步骤S210d:步骤S210a中x的总和记为变量sum_x。
步骤S210e:步骤S210b中y的总和记为变量sum_y。
步骤S210f:步骤S210a中的x与步骤S210b中的y相乘记为xy,xy的总和记为变量sum_xy。
步骤S210g:步骤S210a中的x的平方记为x_sq,x_sq的总和记为变量sum_x_sq。
步骤S210h:步骤S210a中x的平均值记为变量mean_x。
步骤S210i:步骤S210b中y的平均值记为变量mean_y。
步骤S210j:计算斜率s(此斜率仅代表n个稳态测试圈数测试值的斜率),最小二乘法公式为变量s=[(n* sum_xy) - (sum_x * sum_y)]/[(n * sum_x_sq) - (sum_x * sum_x)]。
步骤S210k:计算斜率偏移极限值max_s_ex(代表该测试允许的最大斜率值),本步骤中ratio为预设值(默认为0.1,范围是0<ratio≤0.1,可根据实际测试需求更改),是指y与mean_y的最大差值除以mean_y,线性代数公式为变量max_s_ex= mean_y * ratio。
步骤S210l:计算数据偏移极限值max_d_ex(代表该测试允许的y最大差值),线性代数公式为变量max_d_ex= max_s_ex * 2。
步骤S210m:计算最高斜率偏移值largest_s_ex(代表着估算的总体斜率,本步骤公式根据设置的n圈数进行估算,n越大,估值越准确),公式为变量largest_s_ex = s *(n-1)。
步骤S210n:计算最高数据偏移值largest_d_ex(代表着n圈中y最大差值),公式为变量largest_d_ex = max - min 。
步骤S210o:脚本调用功能模块的日志功能,将步骤S210a-S210n的内容记录到test.log文件。
步骤S211:在步骤S210的基础上,脚本调用稳态验证模块的稳态判断功能,包括步骤S211a-S211c。
步骤S211a:通过标准为:步骤S210中的largest_s_ex小于等于max_s_ex,同时largest_d_ex小于等于max_d_ex;即根据n圈稳态测试计算出的总体斜率必须小于等于该测试允许的最大斜率,同时n圈稳态测试的y最大差值也必须小于等于该测试允许的y最大差值(被测盘性能波动不大于预期的波动阈值)。若稳态通过则变量result则为YES,若稳态检测未通过则变量result则为NO;脚本调用日志功能将该步骤以及完成的时间点记录到test.log文件。
步骤S211b:若步骤S211a所述变量result为NO并且变量total_write<limit_cap,则调用功能模块的日志功能将该结果记录至test.log并重复步骤S208-S211,即继续对被测盘进行一圈稳态测试(相当于继续对盘进行预处理,以便让被测盘达到稳态);脚本调用日志功能将该步骤以及完成的时间点记录到test.log文件。
步骤S211c:在若步骤S211a所述变量result为YES或者步骤S208d中的变量total_write值大于等于S207b中的limit_cap值即变量result为YES或者变量total_write≥limit_cap时,则调用功能模块的日志功能将该结果记录至test.log并退出脚本。
步骤S3:测试人员查看test.log,若是由于result为YES退出脚本,则该盘已进入稳态,可正常进行Throughput性能测试;若是由于total_write≥limit_cap退出脚本,则表示该盘写完预期的容量还未进入稳态,可推测该盘有缺陷。
实施例2
本实例主要针对性能指标IOPS。
步骤S4:运行shell脚本,包括步骤S401-步骤S411。
步骤S401:脚本调用功能模块的交互功能,列出所有的可测试项(Throughput、IOPS、Latency),测试人员输入要测的项目(IOPS);脚本调用日志功能将输入的内容以及完成的时间点记录到test.log文件。
步骤S402:脚本调用功能模块的环境自检功能对测试环境的信息进行记录,包括步骤S402a-S402e。
步骤S402a:检查nvme-cli、lscpu、lspci、fio、smartmontool是否安装,若未安装则自动安装。
步骤S402b:查看nvme-cli、lscpu、lspci、fio、smartmontool版本并记录到envir文件。
步骤S402c:用“cat /etc/system-release”查看OS信息并记录到envir文件。
步骤S402d:通过lscpu工具查询服务器CPU信息记录到envir文件。
步骤S402e:脚本调用日志功能将本步骤完成事项以及完成的时间点记录到test.log文件。
步骤S403:脚本调用功能模块的硬盘自检功能对被测盘的信息进行记录,包括步骤S403a-S403c。
步骤S403a:通过smartmontool工具查询被测盘smart信息并记录到envir文件并将容量换算为以GB为单位,并将数值赋值给变量cap。
步骤S403b:通过lspci工具查询被测盘pcie信息并记录到envir文件。
步骤S403c:脚本调用日志功能将本步骤完成事项以及完成的时间点记录到test.log文件。
步骤S404:通过nvme format命令对被测盘进行安全擦除;脚本调用日志功能将该步骤以及完成的时间点记录到test.log文件。
步骤S405:脚本调用预处理模块,进行步骤S102a所述的顺序写预处理;脚本调用日志功能将本步骤完成内容以及完成的时间点记录到test.log文件。
步骤S406:通过步骤S401输入的测试项“IOPS”判断本项测试需要进行随机写预处理,包括步骤S406a-S406g。
步骤S406a:初始化总写入量为0并赋值给变量total_write。
步骤S406b:进行1分钟随机写预处理并生成对应的结果文件。
步骤S406c:脚本调用功能模块的数据抓取功能,记录步骤S406b写入的数据大小IO_data。
步骤S406d:计算随机写预处理总写入量,计算公式为变量total_write = total_write + IO_data。
步骤S406e:判断随机写预处理总写入量是否大于等于盘容量,即判断变量total_write≥cap。
步骤S406f:若total_write<cap,则重复步骤S406b-S406e;脚本调用日志功能将本步骤完成内容以及完成的时间点记录到test.log文件。
步骤S406g:若total_write≥cap,则调用日志功能将本步骤完成内容以及完成的时间点记录到test.log文件并进行步骤S407。
步骤S407:对相关变量进行初始化,包括步骤S407a-S407c。
步骤S407a:初始化测试圈数为0并赋值给变量i。
步骤S407b:计算4倍cap的值并赋值给变量limit_cap(此4倍值为预处理最多写入量,可根据实际测试需求更改)。
步骤S407c:脚本调用日志功能将本步骤完成内容以及完成的时间点记录到test.log文件。
步骤S408:脚本调用稳态测试模块的IOPS稳态测试,包括步骤S408a-S408e。
步骤S408a:计算i值:原i值加1并重新赋值给变量i。
步骤S408b:被测盘进行4k块大小4线程32队列深度的1分钟随机写测试(完成1次1分钟测试记为1圈),生成对应的结果文件。
步骤S408c:脚本调用功能模块的数据抓取功能,记录圈数并通过S408b生成的结果文件记录IOPS值、写入的数据大小IO_data。
步骤S408d:计算变量total_write值:将原total_write值与步骤S408c中记录的IO_data相加,重新赋值给变量total_write。
步骤S408e:脚本调用日志功能将该步骤以及完成的时间点记录到test.log文件。
步骤S409:当步骤S408a所述变量i小于n(n≥5),循环步骤S408a-S408e;脚本调用日志功能将该步骤以及完成的时间点记录到test.log文件。
步骤S410:当步骤S408a所述变量i大于等于n(n≥5),脚本调用稳态验证模块的数据计算功能,包括步骤S410a-S410o。
步骤S410a:赋值x为1-n。
步骤S410b:取步骤S408c所述最后第x圈的IOPS值,记为y(每个y与x进行对应)。
步骤S410c:步骤S410b中y的最大值记为变量max,最小值记为变量min。
步骤S410d:步骤S410a中x的总和记为变量sum_x。
步骤S410e:步骤S410b中y的总和记为变量sum_y。
步骤S410f:步骤S410a中的x与步骤S410b中的y相乘记为xy,xy的总和记为变量sum_xy。
步骤S410g:步骤S410a中的x的平方记为x_sq,x_sq的总和记为变量sum_x_sq。
步骤S410h:步骤S410a中x的平均值记为变量mean_x。
步骤S410i:步骤S410b中y的平均值记为变量mean_y。
步骤S410j:计算斜率s(此斜率仅代表n个稳态测试圈数测试值的斜率),最小二乘法公式为变量s=[(n* sum_xy) - (sum_x * sum_y)]/[(n * sum_x_sq) - (sum_x * sum_x)]。
步骤S410k:计算斜率偏移极限值max_s_ex(代表该测试允许的最大斜率值),本步骤中ratio为预设值(默认为0.1,范围是0<ratio≤0.1,可根据实际测试需求更改),是指y与mean_y的最大差值除以mean_y,线性代数公式为变量max_s_ex= mean_y * ratio。
步骤S410l:计算数据偏移极限值max_d_ex(代表该测试允许的y最大差值),线性代数公式为变量max_d_ex= max_s_ex * 2。
步骤S410m:计算最高斜率偏移值largest_s_ex(代表着估算的总体斜率,本步骤公式根据设置的n圈数进行估算,n越大,估值越准确),公式为变量largest_s_ex = s *(n-1)。
步骤S410n:计算最高数据偏移值largest_d_ex(代表着n圈中y最大差值),公式为变量largest_d_ex = max - min 。
步骤S410o:脚本调用功能模块的日志功能,将步骤S410a-S410n的内容记录至test.log文件。
步骤S411:在步骤S410的基础上,脚本调用稳态验证模块的稳态判断功能,包括步骤S411a-S411c。
步骤S411a:通过标准为步骤S210中的largest_s_ex小于等于max_s_ex,同时largest_d_ex小于等于max_d_ex;即根据n圈稳态测试计算出的总体斜率必须小于等于该测试允许的最大斜率,同时n圈稳态测试的y最大差值也必须小于等于该测试允许的y最大差值(被测盘性能波动不大于预期的波动阈值)。若稳态通过则变量result则为YES,若稳态检测未通过则变量result则为NO;脚本调用日志功能将该步骤以及完成的时间点记录到test.log文件。
步骤S411b:若步骤S211a所述变量result为NO并且变量total_write<limit_cap,则调用功能模块的日志功能将该结果记录至test.log并重复步骤S208-S211也即继续对被测盘进行稳态测试(相当于继续对盘进行预处理,以便让被测盘达到稳态);脚本调用日志功能将该步骤以及完成的时间点记录到test.log文件。
步骤S411c:若步骤S411a所述变量result为YES或者步骤S408d中的变量total_write值大于等于S407b中的limit_cap值即变量result为YES或者变量total_write≥limit_cap时,则调用功能模块的日志功能将该结果记录至test.log并退出脚本。
步骤S5:测试人员查看test.log,若是由于result为YES退出脚本,则该盘已进入稳态,可正常进行IOPS性能测试;若是由于total_write≥limit_cap退出脚本,则表示该盘写完预期的容量还未进入稳态,可推测该盘有缺陷。
实施例3
本实例主要针对性能指标Latency。
步骤S6:运行shell脚本,包括步骤S601-步骤S611。
步骤S601:脚本调用功能模块的交互功能,列出所有的可测试项(Throughput、IOPS、Latency),测试人员输入要测的项目(Latency);脚本调用日志功能将输入的内容以及完成的时间点记录到test.log文件。
步骤S602:脚本调用功能模块的环境自检功能对测试环境的信息进行记录,包括步骤S602a-S602e。
步骤S602a:检查nvme-cli、lscpu、lspci、fio、smartmontool是否安装,若未安装则自动安装。
步骤S602b:查看nvme-cli、lscpu、lspci、fio、smartmontool版本并记录到envir文件。
步骤S602c:用“cat /etc/system-release”查看OS信息并记录到envir文件。
步骤S602d:通过lscpu工具查询服务器CPU信息记录到envir文件。
步骤S602e:脚本调用日志功能将本步骤完成事项以及完成的时间点记录到test.log文件。
步骤S603:脚本调用功能模块的硬盘自检功能对被测盘的信息进行记录,包括步骤S603a-S603c。
步骤S603a:通过smartmontool工具查询被测盘smart信息并记录到envir文件并将容量换算为以GB为单位,并将数值赋值给变量cap。
步骤S603b:通过lspci工具查询被测盘pcie信息并记录到envir文件。
步骤S603c:脚本调用日志功能将本步骤完成事项以及完成的时间点记录到test.log文件。
步骤S604:通过nvme format命令对被测盘进行安全擦除;脚本调用日志功能将该步骤以及完成的时间点记录到test.log文件。
步骤S605:脚本调用预处理模块,进行步骤S102a所述的顺序写预处理;脚本调用日志功能将该步骤以及完成的时间点记录到test.log文件。
步骤S606:通过步骤S601输入的测试项“Latency”判断本项测试需要进行随机写预处理,包括步骤S606a-S606g。
步骤S606a:初始化总写入量为0并赋值给变量total_write。
步骤S606b:进行1分钟随机写预处理并生成对应的结果文件。
步骤S606c:脚本调用功能模块的数据抓取功能,记录步骤S606b写入的数据大小IO_data。
步骤S606d:计算随机写预处理总写入量,计算公式为变量total_write = total_write + IO_data。
步骤S606e:判断随机写预处理总写入量是否大于等于盘容量,即判断变量total_write≥cap。
步骤S606f:若total_write<cap,则重复步骤S606b-S606e;脚本调用日志功能将该步骤以及完成的时间点记录到test.log文件。
步骤S606g:若total_write≥cap,则调用日志功能将本步骤完成内容以及完成的时间点记录到test.log文件并进行步骤S607。
步骤S607:对相关变量进行初始化,包括步骤S607a-S607b。
步骤S607a:初始化测试圈数为0并赋值给变量i。
步骤S607b:计算4倍cap的值并赋值给变量limit_cap(此4倍值为预处理最多写入量,可根据实际测试需求更改)。
步骤S608:脚本调用稳态测试模块的IOPS稳态测试,包括步骤S608a-S608e。
步骤S608a:计算i值:原i值加1并重新赋值给变量i。
步骤S608b:被测盘进行4k块大小单线程单队列深度的1分钟随机写测试(完成1次1分钟的测试记为1圈),生成对应的结果文件。
步骤S608c:脚本调用功能模块的数据抓取功能,记录圈数并通过S608b生成的结果文件记录IOPS值、写入的数据大小IO_data。
步骤S608d:计算变量total_write值:将原total_write值与步骤S608c中IO_data相加,重新赋值给变量total_write。
步骤S608e:脚本调用日志功能将该步骤以及完成的时间点记录到test.log文件。
步骤S609:当步骤S608a所述变量i小于n(n≥5),循环步骤S608a-S608e;脚本调用日志功能将该步骤以及完成的时间点记录到test.log文件。
步骤S610:当步骤S608a所述变量i大于等于n(n≥5),脚本调用稳态验证模块的数据计算功能,包括步骤S610a-S610o。
步骤S610a:赋值x为1-n。
步骤S610b:取步骤S608c所述最后第x圈的IOPS值,记为y(每个y与x进行对应)。
步骤S610c:步骤S610b中y的最大值记为变量max,最小值记为变量min。
步骤S610d:步骤S610a中x的总和记为变量sum_x。
步骤S610e:步骤S610b中y的总和记为变量sum_y。
步骤S610f:步骤S610a中的x与步骤S610b中的y相乘记为xy,xy的总和记为变量sum_xy。
步骤S610g:步骤S610a中的x的平方记为x_sq,x_sq的总和记为变量sum_x_sq。
步骤S610h:步骤S610a中x的平均值记为变量mean_x。
步骤S610i:步骤S610b中y的平均值记为变量mean_y。
步骤S610j:计算斜率s(此斜率仅代表n个稳态测试圈数测试值的斜率),最小二乘法公式为变量s=[(n* sum_xy) - (sum_x * sum_y)]/[(n * sum_x_sq) - (sum_x * sum_x)]。
步骤S610k:计算斜率偏移极限值max_s_ex(代表该测试允许的最大斜率值),本步骤中ratio为预设值(默认为0.1,范围是0<ratio≤0.1,可根据实际测试需求更改),是指y与mean_y的最大差值除以mean_y,线性代数公式为变量max_s_ex= mean_y * ratio。
步骤S610l:计算数据偏移极限值max_d_ex(代表该测试允许的y最大差值),线性代数公式为变量max_d_ex= max_s_ex * 2。
步骤S610m:计算最高斜率偏移值largest_s_ex(代表着估算的总体斜率,本步骤公式根据设置的n圈数进行估算,n越大,估值越准确),公式为变量largest_s_ex = s *(n-1)。
步骤S610n:计算最高数据偏移值largest_d_ex(代表着n圈中y最大差值),公式为变量largest_d_ex = max - min 。
步骤S610o:脚本调用功能模块的日志功能,将步骤S610a-S610o的内容记录至test.log文件。
步骤S611:在步骤S610的基础上,脚本调用稳态验证模块的稳态判断功能,包括步骤S611a-S611c。
步骤S611a:通过标准为步骤S210中的largest_s_ex小于等于max_s_ex,同时largest_d_ex小于等于max_d_ex;即根据n圈稳态测试计算出的总体斜率必须小于等于该测试允许的最大斜率,同时n圈稳态测试的y最大差值也必须小于等于该测试允许的y最大差值(被测盘性能波动不大于预期的波动阈值)。若稳态通过则变量result则为YES,若稳态检测未通过则变量result则为NO;脚本调用日志功能将该步骤以及完成的时间点记录到test.log文件。
步骤S611b:若步骤S211a所述变量result为NO并且变量total_write<limit_cap,则调用功能模块的日志功能将该结果记录至test.log并重复步骤S208-S211也即继续对被测盘进行稳态测试(相当于继续对盘进行预处理,以便让被测盘达到稳态);脚本调用日志功能将该步骤以及完成的时间点记录到test.log文件。
步骤S611c:若步骤S610o所述变量result为YES或者步骤S608d中的变量total_write值大于等于S607b中的limit_cap值即变量result为YES或者变量total_write≥limit_cap时,则调用功能模块的日志功能将该结果记录至test.log并退出脚本。
步骤S7:测试人员查看test.log,若是由于result为YES退出脚本,则该盘已进入稳态,可正常进行Latencyt性能测试;若是由于total_write≥limit_cap退出脚本,则表示该盘写完预期的容量还未进入稳态,可推测该盘有缺陷。
本发明步骤S207b、S407b、S607b中limit_cap为预处理数据最大写入量,可根据实际测试需要进行更改。
本发明步骤S208、S408、S608中稳态测试的工作负载可根据实际测试需求进行更改。
本发明步骤S209、S210、S409、S410、S609、S610中“5圈”为稳态检测圈数,可根据实际测试需求进行修改,但不得小于5。
本发明步骤S210k、S410k、S610k中ratio为性能波动比率,可根据实际测试需求进行更改,但不得大于0.1。
尽管已经出示和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
Claims (9)
1.新型的固态硬盘性能测试预处理及稳态验证的自动化测试方法,其特征在于:所述方法包括以下步骤:
步骤1、运行脚本,开始稳态验证测试,执行步骤2;
步骤2、选择测试项目,再执行步骤3;
步骤3、进行环境自检,再执行步骤4;
步骤4、进行硬盘自检,再执行步骤5;
步骤5、对被测硬盘进行擦除,然后进行第一预处理,再执行步骤6;
步骤6、根据所选择的测试项目进行稳态测试,完成一次稳态测试记为一圈,记录每一圈的测试值以及累计每一圈写入的数据大小,当完成n圈后,再执行步骤7,其中n≥5;
步骤7、根据最后n圈的每圈的测试值计算得到斜率偏移极限值max_s_ex、数据偏移极限值max_d_ex、最高斜率偏移值largest_s_ex、最高数据偏移值largest_d_ex,再执行步骤8;
所述步骤7具体为:
步骤71、设x为1、2、...、n;
步骤72、取最后第x圈的测试值为y=y1、y2、...、yn;
步骤73、y的最大值记为变量max,y的最小值记为变量min;
步骤74、x的总和记为变量sum_x;
步骤75、y的总和记为变量sum_y;
步骤76、x与对应的y相乘记为xy,xy的总和记为变量sum_xy;
步骤77、x的平方记为x_sq,x_sq的总和记为变量sum_x_sq;
步骤78、x的平均值记为变量mean_x;
步骤79、y的平均值记为变量mean_y;
步骤710、计算斜率s =[(n* sum_xy) - (sum_x * sum_y)]/[(n * sum_x_sq) -(sum_x * sum_x)];
步骤711、计算斜率偏移极限值max_s_ex= mean_y * ratio,其中ratio为预设值,0<ratio≤0.1;
步骤712、计算数据偏移极限值max_d_ex = max_s_ex * 2;
步骤713、计算最高斜率偏移值largest_s_ex = s *(n-1);
步骤714、计算最高数据偏移值largest_d_ex = max - min ;
步骤715、执行步骤8;
步骤8、进行稳态判断:当largest_s_ex小于等于max_s_ex,同时largest_d_ex小于等于max_d_ex时,则稳态验证通过,结束运行脚本,进入测试项目;
当稳态验证不通过时,且每一圈写入的数据大小的累计值total_write大于等于容量限制值limit_cap,则结束运行脚本,不进入测试项目;
当稳态验证不通过时,且每一圈写入的数据大小的累计值total_write小于容量限制值limit_cap,则继续进行一圈稳态测试,再执行步骤7和步骤8。
2.根据权利要求1所述的新型的固态硬盘性能测试预处理及稳态验证的自动化测试方法,其特征在于:所述步骤4中硬盘自检时检测被测硬盘的容量值cap,定义所述容量限制值limit_cap=a*cap,其中a为自然数;
所述步骤5中第一预处理具体为:顺序写预处理。
3.根据权利要求1所述的新型的固态硬盘性能测试预处理及稳态验证的自动化测试方法,其特征在于:每个步骤的结果和完成时间点均被记录在测试日志中。
4.根据权利要求1所述的新型的固态硬盘性能测试预处理及稳态验证的自动化测试方法,其特征在于:所述测试项目包括:Throughput性能测试、IOPS性能测试、Latency性能测试。
5.根据权利要求4所述的新型的固态硬盘性能测试预处理及稳态验证的自动化测试方法,其特征在于:当步骤2选择Throughput性能测试时,
所述步骤5中进行第一预处理;
所述步骤6中稳态测试具体为:被测硬盘进行128k单线程32队列深度的1分钟顺序写测试;
所述测试值具体为带宽值。
6.根据权利要求4所述的新型的固态硬盘性能测试预处理及稳态验证的自动化测试方法,其特征在于:当步骤2选择IOPS性能测试或Latency性能测试时,
所述步骤5进行第一预处理后还需再进行第二预处理;所述第二预处理具体为:随机写预处理,并将写入的数据大小累计到累计值total_write,直至累计值total_write大于等于容量值cap,则完成预处理;
所述步骤6中每一圈写入的数据大小继续累计到累计值total_write;
所述测试值具体为IOPS值。
7.根据权利要求6所述的新型的固态硬盘性能测试预处理及稳态验证的自动化测试方法,其特征在于:当步骤2选择IOPS性能测试时,
所述步骤6中稳态测试具体为:被测硬盘进行4k块大小4线程32队列深度的1分钟随机写测试。
8.根据权利要求6所述的新型的固态硬盘性能测试预处理及稳态验证的自动化测试方法,其特征在于:当步骤2选择Latency性能测试时,
所述步骤6中稳态测试具体为:被测硬盘进行4k块大小单线程单队列深度的1分钟随机写测试。
9.根据权利要求1所述的新型的固态硬盘性能测试预处理及稳态验证的自动化测试方法,其特征在于:所述脚本包括:功能模块、预处理模块、稳态测试模块、稳态验证模块;
所述功能模块包括交互功能子模块、环境自检功能子模块、硬盘自检功能子模块、日志功能子模块、数据抓取功能子模块;
所述预处理模块包括顺序写预处理子模块和随机写预处理子模块;
所述稳态测试模块包括Throughput稳态测试子模块、IOPS稳态测试子模块、Latency稳态测试子模块;
所述稳态验证模块包括数据计算子模块和稳态判断子模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311157919.7A CN116909825B (zh) | 2023-09-08 | 2023-09-08 | 固态硬盘性能测试预处理及稳态验证的自动化测试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311157919.7A CN116909825B (zh) | 2023-09-08 | 2023-09-08 | 固态硬盘性能测试预处理及稳态验证的自动化测试方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116909825A CN116909825A (zh) | 2023-10-20 |
CN116909825B true CN116909825B (zh) | 2023-12-01 |
Family
ID=88365339
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311157919.7A Active CN116909825B (zh) | 2023-09-08 | 2023-09-08 | 固态硬盘性能测试预处理及稳态验证的自动化测试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116909825B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030189778A1 (en) * | 2002-04-03 | 2003-10-09 | Elliott Carl F. | Disk drive writer waveform induced precompensation |
US20080002267A1 (en) * | 2006-06-29 | 2008-01-03 | Eun Kyu Jang | Method and apparatus for slew rate control in the write current shape of a hard disk drive |
CN109324937A (zh) * | 2018-09-18 | 2019-02-12 | 郑州云海信息技术有限公司 | 一种测试ssd稳态的方法、装置、设备以及存储介质 |
CN115206411A (zh) * | 2022-02-22 | 2022-10-18 | 合肥大唐存储科技有限公司 | 一种实现稳态检测的方法、装置、计算机存储介质及终端 |
-
2023
- 2023-09-08 CN CN202311157919.7A patent/CN116909825B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030189778A1 (en) * | 2002-04-03 | 2003-10-09 | Elliott Carl F. | Disk drive writer waveform induced precompensation |
US20080002267A1 (en) * | 2006-06-29 | 2008-01-03 | Eun Kyu Jang | Method and apparatus for slew rate control in the write current shape of a hard disk drive |
CN109324937A (zh) * | 2018-09-18 | 2019-02-12 | 郑州云海信息技术有限公司 | 一种测试ssd稳态的方法、装置、设备以及存储介质 |
CN115206411A (zh) * | 2022-02-22 | 2022-10-18 | 合肥大唐存储科技有限公司 | 一种实现稳态检测的方法、装置、计算机存储介质及终端 |
Also Published As
Publication number | Publication date |
---|---|
CN116909825A (zh) | 2023-10-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11822789B2 (en) | Methods and apparatus to manage workload memory allocation | |
CN108133732B (zh) | 闪存芯片的性能测试方法、装置、设备及存储介质 | |
CN109346122B (zh) | 固态硬盘性能的测试方法及装置 | |
CN107068199B (zh) | 一种ssd硬盘的性能测试方法 | |
US9535611B2 (en) | Cache memory for hybrid disk drives | |
CN115966247A (zh) | 一种zns固态硬盘性能测试方法 | |
CN111209148A (zh) | 一种服务器存储稳定性的测试方法及系统 | |
CN113257332A (zh) | 一种闪存的有效性预测方法、装置及存储介质 | |
CN110837477B (zh) | 一种基于寿命预测的存储系统损耗均衡方法及装置 | |
CN117331846B (zh) | 一种基于互联网软件开发运行测试管理系统 | |
CN107506270A (zh) | 一种测试ssd一致性的方法 | |
CN116909825B (zh) | 固态硬盘性能测试预处理及稳态验证的自动化测试方法 | |
CN116682479A (zh) | 一种企业级固态硬盘时延指标的测试方法及测试系统 | |
CN110852443B (zh) | 特征稳定性检测方法、设备及计算机可读介质 | |
Park et al. | A method for reducing garbage collection overhead of SSD using machine learning algorithms | |
CN101470660A (zh) | 通过子系统效能基准发生器进行系统测试的方法 | |
CN111863117B (zh) | 一种闪存错误页比例评估模型及方法 | |
CN110544503A (zh) | 一种评估ssd总写入量的测试方法及计算机设备 | |
CN111782136B (zh) | 面向多应用程序的自适应闪存固态盘通道分配方法及装置 | |
CN116705140A (zh) | 一种企业级固态硬盘的温度可靠性测试方法及测试平台 | |
CN116820861B (zh) | 一种企业级固态硬盘垃圾回收机制的测试方法及测试装置 | |
KR101751407B1 (ko) | 플래시 메모리의 신뢰성 검증을 위한 아날로그 정보 기반 에뮬레이션 방법 및 그 장치 | |
CN110673785A (zh) | 一种数据存储方法及系统 | |
CN111370049A (zh) | 一种eMMC芯片测试方法和装置 | |
US11983424B2 (en) | Read disturb information isolation system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |