一种ssd
稳态随机写
性能自动校准方法
技术领域
1.本发明涉及固态存储领域,具体是一种ssd稳态随机写性能自动校准方法。
背景技术:
2.固态硬盘(solid state drive,ssd)因其高带宽和低功耗的特性,已在企业级存储中得到广泛应用。在对ssd执行写入
操作时,会不断消耗其nand flash中的块(block);当block消耗至特定阈值后,会启动垃圾回收(garbage collection,gc)操作,回收无效数据较多的block。上位机对ssd执行随机写操作到一定时间后,ssd在执行上位机数据写入操作的同时,还会执行gc操作,也就是读取待回收block中的有效数据,并写入新的block中。因此,需要在gc操作进入稳定状态后,设置合适的上位机随机写性能(即稳态随机写性能),保证上位机数据写入速度与gc操作速度匹配。
3.ssd稳态随机写性能由两个因素决定:
4.1、ssd逻辑容量和物理容量之比例,即理论上的待回收block有效数据率;
5.2、gc操作效率,即由nand flash的读取和写入速度。
6.基于以上两个因素,可以初步计算稳态随机写性能。然而在实测过程中,由于gc时待回收block中的平均有效数据率通常小于ssd逻辑容量和物理容量之比例,并且同时对nand flash执行读取和写入操作时的实际读写带宽小于单独执行读取或写入操作时的带宽,因此ssd开发人员需要基于实际测试结果来精确校准稳态随机写性能。执行性能校准操作时,需要先在ssd内设置稳态随机写iops(io per second,每秒io
命令吞吐量),再执行稳态随机写性能测试。测试通常需要执行2次全盘顺序写,之后执行至少4小时随机写保证ssd进入稳态,最后执行至少1小时随机写测试获得当前ssd稳态随机写iops(后文简称为稳态iops)的稳定性。每次测试时间较长,且每次只能测试预先设置的稳态iops,性能校准效率极低。
技术实现要素:
7.针对现有技术的缺陷,本发明提供一种ssd稳态写性能自动校准方法,不仅可以自动校准稳态随机写性能,同时还能提高性能校准效率。
8.为了解决所述技术问题,本发明采用的技术方案是:为了实现ssd稳态随机写性能的自动化校准,首先需要在上位机端和ssd端实现用于配置ssd稳态随机写iops的nvme自定义管理命令。使用0xd0作为稳态iops配置命令的操作码,使用命令中byte40-byte43之间的4byte作为稳态iops配置字段。上位机下发稳态iops配置命令到ssd,并在命令中的稳态iops配置字段存放待配置的iops值;ssd收到命令后,解析稳态iops配置字段,并将字段内的值设置为当前稳态iops,使用v
iops_cur
表示当前稳态iops,由此完成上位机对稳态iops的配置操作。
9.在执行自动化校准前,首先需要计算稳态iops的初始值,使用v
iops_init
表示,具体计算公式如下:
[0010][0011]
p表示ssd逻辑容量和物理容量比值;
[0012]bnand_wr
表示ssd中nand写操作带宽;
[0013]bnand_wr
表示ssd中nand读操作带宽;
[0014]vdata_per_io
表示每笔io的数据量。
[0015]
在执行自动化校准过程中,需要记录稳态随机写过程中每秒的iops值,本专利使用样本集v
iops_sample
来执行相关记录,具体定义如下:
[0016][0017]
其中,vi表示第i秒的随机写iops,n表示测试时间,以小时为单位,i大于等于1并且小于等于3600
×
n,且i为自然数。
[0018]
在执行自动化校准过程中,还需要设置每次调整v
iops_cur
的增量v
iops_delta
,该增量初始值为v
iops_init
×
10%。
[0019]
综合上述条件,稳态iops自动化校准操作流程如下:
[0020]
1)基于公式-1计算v
iops_init
,并将通过稳态iops配置命令将v
iops_cur
配置为v
iops_init
;
[0021]
2)执行2次满盘顺序写操作;
[0022]
3)执行m小时随机写操作,m为正数,保证ssd进入稳态;
[0023]
4)执行n小时随机写操作,n为正数,且n小于m,使用v
iops_sample
记录ssd每秒执行的随机写iops;
[0024]
5)上位机统计v
iops_sample
中小于v
iops_cur
的样本比例,若小于5%,前进至6);否则前进至0;
[0025]
6)通过稳态iops配置命令将v
iops_cur
配置为v
iops_cur
+v
iops_delta
,并返回4);
[0026]
7)更新v
iops_delta
,如果v
iops_delta
非0,通过稳态iops配置命令将v
iops_cur
配置为v
iops_cur-v
iops_delta
,并返回4);否则,即为最终校准的稳态iops,结束自动化校准操作。
[0027]
具体的,取m=4,n=1。
[0028]
由上述流程可知,稳态iops自动化校准操作在每次执行完稳态随机写测试后,基于v
iops_sample
中小于v
iops_cur
的样本比例动态调整v
iops_cur
,并进入下一轮测试校准,直至将v
iops_cur
调整至最高;校准流程仅在第一次测试校准时执行2次满盘顺序写操作和4小时随机写操作的前置操作,保证ssd进入稳态,之后的测试校验由于已进入稳态,因此不再执行前置操作,仅执行1小时随机写采样操作,极大提升了校准效率。
[0029]
本发明的有益效果:本专利提供的一种ssd稳态随机写性能自动校准方法,一方面可以自动校准稳态随机写性能,不再需要开发人员手动测试并验证候选稳态随机写性能指标,进一步节省开发人力;另一方面节省了稳态随机写性能校准时间,仅在第一次采集稳态随机写iops样本集时,执行耗时较长的前置测试,之后每次测试校准均省略前置测试,极大提升了性能校准效率。
附图说明
[0030]
图1为实施例1所述自动校准方法的流程图。
具体实施方式
[0031]
下面结合附图和具体实施例对本发明做进一步的说明。
[0032]
实施例1
[0033]
本实施例公开一种ssd稳态随机写性能自动校准方法,如图1所示,上位机首先计算ssd初始稳态iops,并基于该值配置每次校准稳态iops时的初始增量;基于自定义命令配置ssd当前稳态iops;在第一次测试校准稳态iops时,执行2次满盘顺序写和4小时随机写操作;执行1小时稳态随机写测试,并统计测试结果中每秒随机写iops样本值,根据测试结果动态调整当前稳态iops,直至将稳态iops指标调整至最高。
[0034]
本实施例中,预先在上位机端和ssd端实现自定义nvme管理命令,用于上位机主动调整稳态iops值。具体的,使用0xd0作为稳态iops配置命令的操作码,使用命令中byte40-byte43之间的4byte作为稳态iops配置字段。上位机下发稳态iops配置命令到ssd,并在命令中的稳态iops配置字段存放待配置的iops值;ssd收到命令后,解析稳态iops配置字段,并将字段内的值设置为当前稳态iops,由此完成上位机对稳态iops的配置操作。
[0035]
使用0xd0作为稳态iops配置命令的操作码,使用命令中byte40-byte43之间的4byte作为稳态iops配置字段。上位机下发稳态iops配置命令到ssd,并在命令中的稳态iops配置字段存放待配置的iops值;ssd收到命令后,解析稳态iops配置字段,并将字段内的值设置为当前稳态iops,后文使用v
iops_cur
表示,由此完成上位机对稳态iops的配置操作。
[0036]
具体的,本方法的实施流程为:
[0037]
s01)、基于公式1计算稳态iops的初始值v
iops_init
,并通过稳态iops配置命令将v
iops_cur
配置为v
iops_init
,v
iop_scur
表示当前稳态iops;
[0038][0039]
其中p表示ssd逻辑容量和物理容量比值,b
nand_wr
表示ssd中nand写操作带宽,b
nand_wr
表示ssd中nand读操作带宽,v
data_per_io
表示每笔io的数据量;
[0040]
s02)、执行2次满盘顺序写操作;
[0041]
s03)、执行4小时随机写操作,保证ssd进入稳态;
[0042]
s04)、执行1小时随机写操作,使用v
iops_sample
记录ssd每秒执行的随机写iops,
[0043]
其中vi表示第i秒的随机写iops,i大于等于1并且小于等于3600,且i为自然数;
[0044]
s05)、上位机统计v
iops_sample
中小于v
iops_cur
的样本比例,若小于5%,前进至s06);否则前进至步骤s07);
[0045]
s06)、通过稳态iops配置命令将v
iops_cur
配置为v
iops_curr
+v
iops_delta
,并返回步骤s04),v
iops_delta
表示每次调整v
iops_curr
的增量;
[0046]
s07)、更新v
iops_delta
,如果v
iops_delta
非0,通过稳态iops配置命令将v
iops_cur
配置为v
iops_curr-v
iops_delta
,并返回步骤s04);否则,即为最终校准的稳态iops,结束自动化校准操作。
[0047]
本发明一方面可以自动校准稳态随机写性能,不再需要开发人员手动测试并验证候选稳态随机写性能指标,进一步节省开发人力;另一方面节省了稳态随机写性能校准时间,仅在第一次采集稳态随机写iops样本集时,执行耗时较长的前置测试,之后每次测试校准均省略前置测试,极大提升了性能校准效率。
[0048]
以上,描述的仅是本发明的基本原理和优选实施例,本领域技术人员根据本发明做出的改进和替换,属于本发明的保护范围。
技术特征:
1.一种ssd稳态随机写性能自动校准方法,其特征在于:包括以下步骤:s01)、基于公式1计算稳态iops的初始值v
iops_init
,并通过稳态iops配置命令将v
iops_cur
配置为v
iops_init
,v
iops_cur
表示当前稳态iops;其中p表示ssd逻辑容量和物理容量比值,b
nand_wr
表示ssd中nand写操作带宽,b
nand_wr
表示ssd中nand读操作带宽,v
data_per_io
表示每笔io的数据量;s02)、执行2次满盘顺序写操作;s03)、执行m小时随机写操作,保证ssd进入稳态,m为正数;s04)、执行n小时随机写操作,n为正数,且n小于m,使用v
iops_sample
记录ssd每秒执行的随机写iops,其中v
i
表示第i秒的随机写iops,i大于等于1并且小于等于3600
×
n,且i为自然数;s05)、上位机统计v
iops_sample
中小于v
iops_cur
的样本比例,若小于5%,前进至6);否则前进至步骤s07)0;s06)、通过稳态iops配置命令将v
iops_cur
配置为v
iops_cur
+v
iops_delta
,并返回步骤s04),v
iops_delta
表示每次调整v
iops_cur
的增量;s07)、更新v
iops_delta
,如果v
iops_delta
非0,通过稳态iops配置命令将v
iops_cur
配置为v
iops_cur-v
iops_delta
,并返回步骤s04);否则,即为最终校准的稳态iops,结束自动化校准操作。2.根据权利要求1所述的ssd稳态随机写性能自动校准方法,其特征在于:使用0xd0作为稳态iops配置命令的操作码,使用命令中byte40-byte43之间的4byte作为稳态iops配置字段,上位机下发稳态iops配置命令到ssd,并在命令中的稳态iops配置字段存放待配置的iops值;ssd收到命令后,解析稳态iops配置字段,并将字段内的值设置为当前稳态iops,由此完成上位机对稳态iops的配置操作。3.根据权利要求1所述的ssd稳态随机写性能自动校准方法,其特征在于:v
iops_delta
初始值为v
iops_init
×
10%。4.根据权利要求1所述的ssd稳态随机写性能自动校准方法,其特征在于:m=4。5.根据权利要求1所述的ssd稳态随机写性能自动校准方法,其特征在于:n=1。
技术总结
本发明公开一种SSD稳态随机写性能自动校准方法,本方法首先需要计算稳态IOPS的初始值,并通过稳态IOPS配置命令将当前稳态IOPS配置为稳态IOPS的初始值,执行2次满盘顺序写操作,执行m小时随机写操作,执行n小时随机写操作,记录SSD每秒执行的随机写IOPS,根据测试结果动态调整当前稳态IOPS,直至将稳态IOPS指标调整至最高。本发明一方面可以自动校准稳态随机写性能,不再需要开发人员手动测试并验证候选稳态随机写性能指标,进一步节省开发人力;另一方面节省了稳态随机写性能校准时间。另一方面节省了稳态随机写性能校准时间。另一方面节省了稳态随机写性能校准时间。
技术研发人员:
刘忞斋 高美洲 孙大朋 郭泰 付凤之 范军朋 刘敏
受保护的技术使用者:
山东华芯半导体有限公司
技术研发日:
2022.09.22
技术公布日:
2022/12/8