具体实施方式
本发明实施例提供了一种固态硬盘的数据处理方法及装置,用于根据预测模型对未来第一时间段的I/O信息进行预测,以便根据预测结果对固态硬盘执行主动管理,以减少主机端的操作响应时间。
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
针对现有技术中,很容易因为写缓存Buffer较小,且固态硬盘SSD的接口总线带宽与SSD盘存储速度不对称,而造成的写缓存Buffer成为写性能瓶颈的问题,本申请实施例提出了一种固态硬盘的数据处理方法及装置,以用于解决写缓存Buffer较小,而导致主机端操作响应时间过长的问题。
为方便理解,下面对本申请实施例中的固态硬盘的数据处理方法进行描述,具体请参阅图1,本申请实施例中一种固态硬盘的数据处理方法的一个实施例,包括:
101、通过预测模型对未来第一时间段的I/O信息进行预测,所述I/O信息至少包括I/O类型和/或I/O强度;
针对现有技术中因为写缓存Buffer较小,而导致主机端操作响应时间过长的问题,本申请实施例可以通过固态硬盘的数据处理装置,采用预测模型对未来第一时间段的I/O信息进行预测,其中,I/O信息至少包括I/O类型及I/O强度,以便根据预测结果执行步骤102。
具体的,如何根据预测模型对未来第一时间段的I/O信息进行预测,将在下面的实施例中进行详细描述,此处不再赘述。
102、根据预测结果对固态硬盘执行主动管理,以减少主机端的操作响应时间。
固态硬盘的数据处理装置获取到未来第一时间段的I/O预测结果后,根据预测结果对固态硬盘执行主动管理,以减少主机端的操作影响时间,提高用户对固态硬盘的实用体验。
具体的,对于根据预测结果对固态硬盘执行主动管理的过程将在下面的实施例中进行详细描述,此处也不再赘述。
本申请实施例中,根据预测模型对未来第一时间段的I/O信息进行预测,该I/O信息包括I/O类型及I/O强度,根据预测结果对固态硬盘执行主动管理,以减少主机端的操作响应时间。因为本申请实施例中,可以根据预测模型对未来第一时间段的I/O信息进行预测,并根据预测结果对固态硬盘执行主动管理,以减少主机端的操作响应时间,从而提升了固态硬盘的主控性能,提升了用户对固态硬盘的使用体验。
基于图1所述的实施例,下面详细描述步骤101,具体请参与图2,图2为步骤101的细化步骤:
201、获取固态硬盘SSD接收到的接口协议指令;
接口协议指令是用于主机与存储器(固态硬盘SSD)之间的通信协议指令,主要有SATA、PCIe、NVMe等协议接口。优选的,本实施例中的接口协议指令为NVMe指令。
具体的,NVMe是通过PCI Express总线将存储器连接到服务器的接口规范,简单来说,NVMe使SSD与主机系统通信的速度更快。本申请实施例中,SSD盘在与主机系统的数据交互过程中,通过NVMe协议指令,以实现数据的快速输入及输出。
区别于现有技术中,SSD通过被动的固态硬盘管理(被动buffer调度,被动垃圾回收等)来实现SSD中硬件资源的配置、指令队列管理等,其中,硬件资源的配置包括buffer调度、垃圾回收等。本申请实施例中,在固态硬盘SSD接收到主机系统发送的NVMe协议指令时,固态硬盘的数据处理装置获取该协议指令,并根据该协议指令执行步骤202,以实现对未来第一时间段内I/O信息的预测。
具体的,固态硬盘的数据处理装置可以是主动从SSD中获取NVMe协议指令,也可以是被动接收SSD发送的NVMe协议指令,此处不做具体限制。
202、解析所述接口协议指令,以获取所述协议指令中的I/O信息,所述I/O信息至少包括I/O时间戳、I/O类型及I/O大小;
固态硬盘的数据处理装置获取到接口协议指令后,解析该接口协议指令,以获取该协议指令中的I/O信息,而解析动作可以具体表现为根据具体的协议规范(如NVMe协议规范),读取出协议指令中的I/O信息,其中,该I/O信息至少包括I/O时间戳,I/O类型及I/O大小。
具体的,I/O时间戳为该I/O操作的产生时间,I/O类型包括读操作或写操作,I/O大小为读操作或写操作的数据长度。
203、对所述I/O信息执行机器学习,以对未来第一时间段的I/O信息进行预测。
固态硬盘的数据处理装置获取到当前时间段的I/O信息后,可以根据机器学习算法,对以往时间段的I/O信息进行学习,以对未来第一时间段的I/O信息进行预测。
其中,机器学习算法包括但不限于神经网络,支持向量机,线性回归,时间序列等,此处对机器学习的算法不做具体限制。
基于图2所述的实施例,下面对图2实施例中的步骤203进行详细描述,具体请参阅图3,图3为图2实施例中步骤203的细化步骤:
301、对所述I/O信息执行预处理,以得到第一I/O信息表;
固态硬盘的数据处理装置通过解析接口协议指令(如NVMe协议指令),获取到该指令中的I/O信息后,对该I/O信息执行预处理,以得到第一I/O信息表。
具体的,对于预处理操作的具体过程,将在下面的实施例中详细描述,此处不再赘述。
302、将所述第一I/O信息表中的多个相邻I/O操作合并为一次I/O操作;
固态硬盘的数据处理装置在获取到第一I/O信息表后,将该第一I/O信息表中的多个相邻I/O操作合并为一次I/O操作,这里合并可以理解为将下述表2中处理后的8个相邻I/O相连起来,合并为一次I/O输入,这样相比于现有一个一个I/O操作输入,可以把多个I/O同时输入计算一次,从而大大减少了计算量,满足了实时计算的需求。
具体的,可以是将相邻的4个I/O操作合并为一次I/O操作,或将相邻的8个I/O操作合并为一次I/O操作,本实施例中的“多个”主要决定于处理器的处理性能(即处理器的算力),若处理器的算力较弱,则可以将更多相邻数目的I/O操作进行合并,若处理器的算力强大,则可以将较少相邻数目的I/O操作进行合并,以适应于处理器的处理性能。
303、将多个合并后的I/O操作特征值用于神经网络LSTM模型学习,以得到所述第一时间段的I/O预测结果;
将多个I/O操作合并为1个I/O操作后,可以得到一组I/O操作特征值,具体的该I/O操作特征值是关于I/O时间戳,I/O类型及I/O大小的变量,而为了对未来第一时间段内的I/O信息进行预测,一般是采用机器学习算法进行预测,本实施例中的机器学习算法优选为神经网络学习算法。
需要说明的是,采用神经网络学习算法,对未来第一时间段的I/O信息进行预测时,需要先对已知的I/O信息采用神经网络学习模型进行训练,以得到神经网络训练模型,然后根据神经网络训练模型,及当前的I/O信息对未来第一时间段内的I/O信息进行预测。
而根据已知的I/O信息对神经网络学习模型的训练过程,在现有技术中有详细描述,此处不再赘述,而对于将多个合并后的I/O操作特征值执行神经网络模型学习(也即模型推理),以得到第一时间段的I/O预测信息的具体实现过程将在下面的实施例中进行描述,此处也不再赘述。
304、将所述I/O预测结果执行后期处理,以调整所述预测结果。
因为预测算法,更多靠的是假设和特征的选择,故在得到I/O预测信息后,可能会出现较大偏差的预测结果,而该预测结果明显偏离实际,故需要对I/O预测信息执行后期处理,如删除I/O预测信息中的异常预测值,得到正常的预测结果。
本申请实施例中,对根据I/O信息执行机器学习,以对未来第一时间段的I/O信息进行预测的过程做了详细描述,提升了本申请实施例的可实施性。
基于图3所述的实施例,下面对步骤301中I/O信息的预处理过程做详细描述,具体请参阅图4,图4为图3实施例中步骤301的细化步骤:
401、根据所述I/O时间戳,计算出多组满足第一预设数目的I/O操作间的时间间隔;
对应于步骤301中的描述,假设固态硬盘的数据处理装置在对NVMe指令执行解析后,获取到的I/O信息如表1所示:
表1
则下面以表1为例,对I/O信息的预处理过程进行描述,其中,预处理过程是先执行步骤401,即计算出多组满足第一预设数目的I/O操作间的时间间隔,具体的,步骤401可以是计算32个I/O操作间的时间间隔,或计算16个I/O操作间的时间间隔,预设数目的选取决定于主机系统的处理能力,此处不做具体限制,下面以32个I/O操作为例进行说明。
具体的,每间隔32个I/O的时间戳进行求差,计算出间隔时间;
interval=timestepi+31-timestepi
其中,timestepi表示第i个I/O指令的时间戳。
402、统计出每组中第一预设数目的I/O操作在所述时间间隔内的读操作及写操作的次数总和及对应的数据大小;
得到多组满足第一预设数目的I/O操作间的时间间隔后,统计出每组中第一预设数目的I/O操作在所述时间间隔内的读操作及写操作的次数总和及对应的数据大小。
进一步的,将读写I/O数据进行数字转化,写I/O表示为1,读I/O表示为0,然后每组32个I/O进行累加,计算出读I/O数量和写I/O数量,公式如下:
具体的,可以根据上述公式对每组中第一预设数目的I/O操作在所述时间间隔内的读操作及写操作的次数总和及对应的数据大小进行计算。
403、将所述数据大小执行压缩操作,以得到所述第一I/O信息表。
为了有利于做回归预测,需要将合并后的数据大小压缩至一个合理的范围(0-500),故需将一组32个I/O对应的读I/O的大小进行累加,然后除以200K进行压缩,同理将一组32个I/O对应的读I/O的大小进行累加,然后除以200K进行压缩,以得到如表2所示的处理后的第一I/O信息表。
具体的,压缩时的倍率大小可以根据实际需求进行自定义设置(如可以将一组32个I/O对应的读I/O的大小进行累加,然后除以400K或500K进行压缩),只要压缩后的数据大小符合做回归分析的数据范围即可,此处不做具体限制。
表2
上述表2中的时间间隔,表示32个I/O操作间的时间间隔,I/O类型总和表示32个I/O操作中读操作和写操作的数目总和,如当总和为0时,则表明该32个I/O操作全部为读操作,而当总和为4时,则表明该32个I/O操作中有4个写操作,28个读操作,而读操作和写操作对应的压缩后的数据大小,则为32个I/O总和中总的读操作及总的写操作对应的压缩后的数据大小。
上述实施例中,对I/O信息的预处理过程做了详细描述,即对第一I/O信息表的生成过程做了详细描述,提升了本申请实施例的可实施性。
基于图/3所述的实施例,下面对步骤303中将多个合并后的I/O操作特征值执行神经网络LSTM模型学习(也即模型推理),以得到所述第一时间段的I/O预测信息的过程做详细描述,具体请参阅图5,图5为图3实施例中步骤303的细化步骤:
501、将多个合并后的I/O操作特征值,输入到神经网络的输入全连接层,以通过线性变换,将合并后的I/O操作特征值做高维向量空间映射,所述I/O操作特征值相关于所述I/O时间戳、所述I/O类型及所述I/O大小;
对应于图3所述实施例的步骤302,将如表2中的多个相邻I/O操作合并为一次I/O操作,然后将多个合并后的I/O操作特征值,输入到神经网络的输入全连接层,以通过线性变换,将合并后的I/O操作特征值做高维向量空间映射,即将低维度的I/O操作特征值映射为高维度的I/O操作特征值,其中,I/O操作特征值相关于I/O时间戳、I/O类型和I/O大小。
具体的,每个合并后的I/O操作特征值的可以通过以下方法来获得:
如将表2中处理后的8个相邻I/O合并为一次I/O输入,这里合并可以理解为将表2中处理后的8个相邻I/O相连起来,合并为一次I/O输入,因为表2中的每个I/O是由表1中的32个I/O合并而来,故将8个表2中的相邻I/O合并为一次I/O输入,相当于将32*8=256个I/O合并为一次I/O输入,具体的合并操作可以如下所示,以得到一个合并后的I/O操作特征值,其中,每个I/O操作特征值都是与I/O时间戳、I/O类型及I/O大小相关的变量。
[interval1,ioTypeSum1,rSize1,wSize1,interval2,ioTypeSum2,rSize2,wSize2,...,interval8,ioTypeSum8,rSize8,wSize8]
得到多个合并后的I/O特征值后,将多个合并后的I/O特征值,输入到神经网络的输入全连接层,以通过线性变换,将合并后的I/O操作特征值做高维向量空间映射,即将低维度的I/O操作特征值映射为高维度的I/O操作特征值,以发现更多的特征值。
具体的,可以是将32*1的一组向量,通过权重矩阵变换为128*1的一组向量,具体的变换过程可以为X128×1=W128×32·S32×1+b128×1,其中,W128×32为权重矩阵,b128×1为偏移量,以将32维的I/O操作特征值映射为128维的I/O操作特征值。
502、通过多个神经网络细胞LSTM Cell组成神经元集合,以将所述高维向量空间映射后的特征值依次循环输入所述神经元集合中进行运算,以得到运算结果;
得到高维度的I/O操作特征值后,通过多个神经网络细胞LSTM Cell组成神经元集合(具体如图6所示,假设本申请实施例中包括128个神经元细胞LSTM Cell),并将高维度的I/O操作特征值依次循环输入该神经元集合中进行运算,以得到运算结果。
具体的,在实际运算中,一定范围内,神经元细胞的数目越多,运算结果就越准确,但过多的运算量将给处理器带来过多的负重,从而影响实时输出的效率,故神经元细胞的数据量一般由运算结果的准确率及处理器的处理能力共同来决定。
下面以单个神经元细胞为例,对高维度特征值的运算过程进行描述:
具体如图7所示,每个神经元细胞的的计算过程如图7所示,每个神经元细胞的神经网络结构都包括输入门、遗忘门及输出门,以及新记忆状态和过去记忆状态,其中,每个门或状态的功能在现有技术中都有详细描述,此处不再赘述。
而本实施例中,假设有128个神经元细胞,则是将运算结果依次循环128次,以提高运算的准确率。
503、将所述运算结果输入到神经网络的输出全连接层,以将所述运算结果映射为预测结果输出维度,所述预测结果输出维度反映了所述第一时间段的I/O预测结果。
将高维度的特征向量值经过多个神经元细胞的运算后,将从输出门中输出的数据输入到神经网络的输出全连接层,以将运算结果映射为预测结果的输出维度,其中,具体的输出维度取决于用户的选择,即可以是输出任意维度的特征值,如输出32维的特征值,还可以是输出16维的特征值,或其他维度的特征值等。
具体的,本申请实施例以输出32维的特征值为例进行说明:
将运算结果映射为32维的特征值,具体的映射过程如下:Y32×1=W32×128·X128×1+b32×1,即通过权重矩阵W32×128,将128维的特征值映射为32维的特征值,其中,b32×1为矩阵偏移量,代表数据处理中的噪声影响。
下面以具体的实施例对图5所述的数据处理过程进行详细描述:
假设在LSTM网络模型中,一次样本输入为X={x1,x2,...,xT},这里T为输入序列的时间步长(暂定T=1024),具体的,对应于步骤401,每个xT为32*8=256个I/O操作的特征值,因为每个I/O操作的时长大约为3us,故输入样本中1024个x对应的时间间隔大约为32*8*3*1024≈1s,而经过步骤403后的模型输出为Y={y1,y2,...,y16,y17,...,y32},其中y1,y2,...,y16为未来每50ms为间隔的读操作的大小的预测值,也就是说未来0~50ms、50~100ms、…、750ms~800ms读操作的强度大小预测值,而y17,y18,...,y32则是未来每50ms为间隔的写操作的大小的预测值,也就是说未来0~50ms、50~100ms、…、750ms~800ms写操作的强度大小预测值。
需要说明的是,在使用神经网络模型对未来第一时间段的I/O信息执行预测时,一般要求历史数据量大于预测数据量,如本实施中采用1s内的实际I/O信息量,对未来800ms的I/O信息量进行预测,而为了提高准确率,还可以是对未来400ms的I/O信息量进行预测,一般是历史数据量越大,预测数据量越小,则相应的预测准确率就越高,反之,预测准确率就越低。而模型输出的Y值中,也可以是y1,y2,...,y16为未来每50ms为间隔的写操作的大小的预测值,y17,y18,...,y32为未来每50ms为间隔的读操作的大小的预测值,即Y值中的输出值主要取决于前期的模型训练过程,若前期模型训练过程中,y1,y2,...,y16为未来每50ms为间隔的读操作的大小的预测值,则后期的模型输出时,y1,y2,...,y16即为每50ms为间隔的读操作的大小的预测值。
基于图1所述的实施例,上面实施例中对预测模型及预测过程做了详细描述,下面接着对根据预测结果对固态硬盘执行主动管理的步骤做详细描述,具体请参与图8,图8为图1实施例中步骤102的细化步骤:
801、获取当前时间段的第一读写比例;
具体的,固态硬盘的数据处理装置在根据预测结果对固态硬盘执行主动管理时,可以获取当前时间段的第一读写比例,其中,当前时间段可以是当前100ms、当前100ms、或当前200ms等,此处不做具体限制
而第一读写比例,则是对应当前时间段内读操作的次数与写操作的次数的比值,在实际应用中,还可以是直接获取当前时间段内读操作或写操作的次数,而不用计算第一读写比例,因为第一读写比例主要是用于方便与未来第一时间内的第二读写比例进行比较,实际运用中,用户可以根据比较的方便度来进行决定。
802、根据预测结果,获取所述第一时间段的第二读写比例;
得到当前时间段内的第一读写比例后,固态硬盘的数据处理装置还可以根据步骤101的预测结果,对未来第一时间段内的第二读写比例进行计算,并根据第一读写比例和第二读写比例执行步骤803。
803、判断所述第二读写比例与所述第一读写比例是否相同,若否,则执行步骤804,若是,则执行步骤805;
固态硬盘的数据处理装置获取到第一读写比例和第二读写比例后,判断第二读写比例和第一读写比例是否相同,若否,则执行步骤804,若是,则执行步骤805。
804、按照所述第二读写比例调整固态硬盘中的缓存分配;
若第二读写比例和第一读写比例不同,则说明接下来第一时间段内所占用的读缓存或写缓存的情况较当前时间段而言,会发生变化,则可以根据第二读写比例对调整固态硬盘中的缓存分配。
具体的,若接下来第一时间段的读操作强度会变化,则对应调整读操作所占用的缓存,而若接下来第一时间段的写操作强度会变化,则对应调整写操作所占用的缓存,以使得第一时间段的读操作或写操作,可以快速被SSD盘响应,以提高固态硬盘控制器的控制性能,减少主机端的响应时间。
805、执行其他流程。
若第二读写比例和第一读写比例相同,则执行其他流程,此处不做具体限制。
需要说明的是,本实施例中的预测模型可以内置于固态硬盘或主机端中,且预测模型可以是固定不变的,也可以是实时学习,实时更新的,此处也不做具体限制。
本申请实施例中,对缓存调度上对固态硬盘执行主动管理的方式做了详细描述,提升了本申请实施例的可实施性。
基于图1所述的实施例,下面接着对根据预测结果对固态硬盘执行主动管理的步骤做详细描述,具体请参与图9,图9为图1实施例中步骤102的另一细化步骤:
901、根据预测结果,获取所述第一时间段内的I/O强度;
固态硬盘的数据处理装置获取到未来第一时间段的I/O预测结果后,可以根据预测结果,获取第一时间段内的I/O强度,其中,I/O强度是指单位时间内读操作或写操作所处理的数据大小。
902、获取固态硬盘的I/O吞吐量;
具体的,固态硬盘的I/O吞吐量指的是固态硬盘单位时间内可以处理的读操作或写操作的数据强度,是固态硬盘的一个指标,一般会在固态硬盘出厂时进行标注。
903、根据所述第一时间段内的I/O强度和所述I/O吞吐量,判断固态硬盘是否处于空闲状态,若是,则执行步骤904,若否,则执行步骤907。
具体的,在对固态硬盘的状态进行判断时,如该固态硬盘在第一时间段内是否处于空闲状态,可以根据第一时间段内的I/O强度和固态硬盘的I/O吞吐量进行判断,若第一时间段内的I/O强度与I/O吞吐量的比值小于预设阈值,如40%,则认为固态硬盘在第一时间段内处于空闲状态,则执行步骤904,反之,则认为固态硬盘在第一时间段内处于繁忙状态,则执行步骤907。
容易理解的是,上述预设阈值的大小,可以根据实际需求进行自定义设置,如30%或20%等,此处不做具体限制。
904、判断所述固态硬盘的剩余空间是否小于第一阈值,若是,则执行步骤905,若否,则执行步骤906;
为了使得SSD盘中保持足够大的剩余空间,用于处理接下来第一时间段的写操作或读操作,以使得SSD盘可以快速响应写操作或读操作,可以进一步获取硬盘中的剩余空间,并判断该固态硬盘的剩余空间是否小于第一阈值,以判断SSD盘是否有足够大的剩余空间来响应读操作或写操作,若是,则执行步骤905,若否,则执行步骤906。
905、触发固态硬盘的垃圾回收事件;
若固态硬盘的剩余空间小于第一阈值,则表明SSD盘中的剩余空间不足,则触发固态硬盘中的垃圾回收事件。
与现有技术中,被动执行垃圾回收的策略不同,本申请中可以根据预测结果,对未来第一时间段的I/O强度进行预测,并根据预测结果判断固态硬盘是否处于空闲状态,若该固态硬盘处于空闲状态,且固态硬盘的剩余空间小于第一阈值,则主动触发固态硬盘中的垃圾回收事件,从而提高了固态硬盘控制器的主控性能,减少了主机端的操作响应时间。
906、执行其他流程。
若固态硬盘的剩余空间不小于第一阈值,则说明SSD盘中有足够的空间响应第一时间段内的I/O操作,则执行其他流程,此处不做具体限制。
907、获取固态硬盘的可分配剩余空间;
对应于步骤903,若固态硬盘未处于空闲状态,而为了保证固态硬盘有足够的空间响应未来第一时间段的I/O操作,则可以进一步获取固态硬盘中的可分配剩余空间,并执行步骤908。
908、判断第一时间段内的I/O写操作强度是否大于可分配的剩余空间,若是,则执行步骤905,若否,则执行步骤906;
获取到第一时间段内的I/O强度后,可以进一步判断第一时间段内的I/O写操作强度是否大于可分配的剩余空间,若是,则执行步骤905,若否,则执行步骤906;
具体的,步骤908为判断固态硬盘在第一时间段内的I/O强度大于可分配的剩余空间时,则触发固态硬盘中的垃圾回收事件,若第一时间段内的I/O强度不大于可分配的剩余空间,则执行其他流程,此处不做具体限制。
需要说明的是,本实施例中的预测模型可以内置于固态硬盘或主机端中,且预测模型可以是固定不变的,也可以是实时学习,实时更新的,此处也不做具体限制。
本申请实施例中,从主动垃圾回收的角度对固态硬盘执行主动管理的方式做了详细描述,提升了本申请实施例的可实施性。
基于图1所述的实施例,下面接着对根据预测结果对固态硬盘执行主动管理的步骤做详细描述,具体请参与图10,图10为图1实施例中步骤102的另一细化步骤:
1001、根据预测结果,分别获取所述第一时间段内多个应用的I/O强度;
作为对固态硬盘执行主动管理的另一种方式,固态硬盘的数据处理装置还可以根据预测结果,分别获取未来第一时间内多个应用的I/O强度。
具体的,如未来第一时间段运行的有3个应用,则分别获取第一应用、第二应用和第三应用在第一时间段内的I/O强度,并根据各个应用的I/O强度执行步骤1002。
1002、判断所述多个应用中是否存在两个应用的I/O强度差大于第二阈值,若是,则执行步骤1003;若否,则执行步骤1004;
固态硬盘的数据处理装置判断多个应用中是否存在两个应用的I/O强度差大于第二阈值,具体的,第二阈值的大小可以根据用户的需求进行自定义设置,此处不做具体限制。
具体的,步骤1002主要是主要是根据各个应用的I/O强度,对各个应用的I/O强度进行判断,并根据判断结果执行步骤1003。
1003、优先处理所述两个应用中I/O强度较小的应用;
若存在两个应用的I/O强度大于第二阈值,则优先处理上述两个应用中I/O强度较小的应用,以提升主机端的用户体验。
具体的,假设第一时间段内有两个应用,而A应用在执行一个长时间的高强度读操作时,而应用B只需要读取较少的数据,即A应用与B应用的I/O强度差满足大于第二阈值的条件,则本实施例优先处理B应用,即相当于将B应用插队在A前,则应用的平均响应时间会大大降低,而主机端也感受不到B的延迟,从而提升用户对固态硬盘的使用体验。
1004、执行其他流程。
若不存在两个应用的I/O强度大于第二阈值,则执行其他流程,此处不做具体限制。
上面对固态硬盘的数据处理方法进行了描述,下面对本实施例中的固态硬盘处理装置进行描述,具体请参阅图11,本申请实施例中固态硬盘的数据处理装置的一个实施例,包括:
预测单元1101,用于通过预测模型对未来第一时间段的I/O信息进行预测,所述I/O信息至少包括I/O类型和/或I/O大小;
管理单元1102,用于根据预测结果对固态硬盘执行管理,以减少主机端的操作响应时间。
优选的,所述I/O类型包括读操作和写操作;
优选的,所述预测单元1102,具体用于:
获取当前时间段的第一读写比例;
根据预测结果,获取所述第一时间段的第二读写比例;
判断所述第二读写比例与所述第一读写比例是否相同;
若否,则按照所述第二读写比例调整固态硬盘中的缓存分配。
优选的,所述管理单元1102,还用于:
若所述第二读写比例中的读操作或写操作强度变化,则对应调整所述读操作或所述写操作所需占用的缓存。
优选的,所述管理单元1102,具体用于:
根据预测结果,获取所述第一时间段内的I/O强度;
获取固态硬盘的I/O吞吐量;
根据所述第一时间段内的I/O强度和所述I/O吞吐量,判断所述固态硬盘是否处于空闲状态。
优选的,所述管理单元1102,还用于:
若所述固态硬盘处于空闲状态;
判断所述固态硬盘的剩余空间是否小于第一阈值;
若是,则触发固态硬盘中的垃圾回收事件。
优选的,所述管理单元1102,还用于:
若所述固态硬盘未处于空闲状态;
获取固态硬盘中可分配的剩余空间;
判断所述第一时间段内的I/O写操作强度是否大于所述可分配的剩余空间;
若是,则触发固态硬盘中的垃圾回收事件。
优选的,所述管理单元1102,还用于:
根据预测结果,分别获取所述第一时间段内多个应用的I/O强度;
判断所述多个应用中是否存在两个应用的I/O强度差大于第二阈值;
若是,则优先处理所述两个应用中I/O强度较小的应用。
优选的,所述预测模型内置于固态硬盘和/或主机端中。
需要说明的是,本实施例中各单元的作用与图1至图10中描述的类型,此处不再赘述。
本申请实施例中,根据预测单元1101对未来第一时间段的I/O信息进行预测,该I/O信息包括I/O类型及I/O强度,根据管理单元1102对固态硬盘执行主动管理,以减少主机端的操作响应时间。因为本申请实施例中,可以根据预测模型对未来第一时间段的I/O信息进行预测,并根据预测结果对固态硬盘执行主动管理,以减少主机端的操作响应时间,从而提升了固态硬盘的主控性能,提升了用户对固态硬盘的使用体验。
上面从模块化功能实体的角度对本发明实施例中的固态硬盘的数据处理装置进行了描述,下面从硬件处理的角度对本发明实施例中的计算机装置进行描述:
该计算机装置用于实现固态硬盘的数据处理装置的功能,本发明实施例中计算机装置一个实施例包括:
处理器以及存储器;
存储器用于存储计算机程序,处理器用于执行存储器中存储的计算机程序时,可以实现如下步骤:
通过预测模型对未来第一时间段的I/O信息进行预测,所述I/O信息至少包括I/O类型和/或I/O大小;
根据预测结果对固态硬盘执行管理,以减少主机端的操作响应时间。
在本发明的一些实施例中,处理器,还可以用于实现如下步骤:
获取当前时间段的第一读写比例;
根据预测结果,获取所述第一时间段的第二读写比例;
判断所述第二读写比例与所述第一读写比例是否相同;
若否,则按照所述第二读写比例调整固态硬盘中的缓存分配。
在本发明的一些实施例中,处理器,还可以用于实现如下步骤:
若所述第二读写比例中的读操作或写操作强度变化,则对应调整所述读操作或所述写操作所需占用的缓存。
在本发明的一些实施例中,处理器,还可以用于实现如下步骤:
根据预测结果,获取所述第一时间段内的I/O强度;
获取固态硬盘的I/O吞吐量;
根据所述第一时间段内的I/O强度和所述I/O吞吐量,判断所述固态硬盘是否处于空闲状态。
在本发明的一些实施例中,处理器,还可以用于实现如下步骤:
若所述固态硬盘处于空闲状态;
判断所述固态硬盘的剩余空间是否小于第一阈值;
若是,则触发固态硬盘中的垃圾回收事件。
在本发明的一些实施例中,处理器,还可以用于实现如下步骤:
若所述固态硬盘未处于空闲状态;
获取固态硬盘中可分配的剩余空间;
判断所述第一时间段内的I/O写操作强度是否大于所述可分配的剩余空间;
若是,则触发固态硬盘中的垃圾回收事件。
在本发明的一些实施例中,处理器,还可以用于实现如下步骤:
根据预测结果,分别获取所述第一时间段内多个应用的I/O强度;
判断所述多个应用中是否存在两个应用的I/O强度差大于第二阈值;
若是,则优先处理所述两个应用中I/O强度较小的应用。
可以理解的是,上述说明的计算机装置中的处理器执行所述计算机程序时,也可以实现上述对应的各装置实施例中各单元的功能,此处不再赘述。示例性的,所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器中,并由所述处理器执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述固态硬盘的数据处理装置中的执行过程。例如,所述计算机程序可以被分割成上述固态硬盘的数据处理装置中的各单元,各单元可以实现如上述相应固态硬盘的数据处理装置说明的具体功能。
所述计算机装置可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述计算机装置可包括但不仅限于处理器、存储器。本领域技术人员可以理解,处理器、存储器仅仅是计算机装置的示例,并不构成对计算机装置的限定,可以包括更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述计算机装置还可以包括输入输出设备、网络接入设备、总线等。
所述处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable GateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述计算机装置的控制中心,利用各种接口和线路连接整个计算机装置的各个部分。
所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述计算机装置的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(SecureDigital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
本发明还提供了一种计算机可读存储介质,该计算机可读存储介质用于实现固态硬盘的数据处理装置的功能,其上存储有计算机程序,计算机程序被处理器执行时,可以用于执行如下步骤:
通过预测模型对未来第一时间段的I/O信息进行预测,所述I/O信息至少包括I/O类型和/或I/O大小;
根据预测结果对固态硬盘执行管理,以减少主机端的操作响应时间。
在本发明的一些实施例中,计算机可读存储介质存储的计算机程序被处理器执行时,可以具体用于执行如下步骤:
获取当前时间段的第一读写比例;
根据预测结果,获取所述第一时间段的第二读写比例;
判断所述第二读写比例与所述第一读写比例是否相同;
若否,则按照所述第二读写比例调整固态硬盘中的缓存分配。
在本发明的一些实施例中,计算机可读存储介质存储的计算机程序被处理器执行时,可以具体用于执行如下步骤:
若所述第二读写比例中的读操作或写操作强度变化,则对应调整所述读操作或所述写操作所需占用的缓存。
在本发明的一些实施例中,计算机可读存储介质存储的计算机程序被处理器执行时,可以具体用于执行如下步骤:
根据预测结果,获取所述第一时间段内的I/O强度;
获取固态硬盘的I/O吞吐量;
根据所述第一时间段内的I/O强度和所述I/O吞吐量,判断所述固态硬盘是否处于空闲状态。
在本发明的一些实施例中,计算机可读存储介质存储的计算机程序被处理器执行时,可以具体用于执行如下步骤:
若所述固态硬盘处于空闲状态;
判断所述固态硬盘的剩余空间是否小于第一阈值;
若是,则触发固态硬盘中的垃圾回收事件。
在本发明的一些实施例中,计算机可读存储介质存储的计算机程序被处理器执行时,可以具体用于执行如下步骤:
若所述固态硬盘未处于空闲状态;
获取固态硬盘中可分配的剩余空间;
判断所述第一时间段内的I/O写操作强度是否大于所述可分配的剩余空间;
若是,则触发固态硬盘中的垃圾回收事件。
在本发明的一些实施例中,计算机可读存储介质存储的计算机程序被处理器执行时,可以具体用于执行如下步骤:
根据预测结果,分别获取所述第一时间段内多个应用的I/O强度;
判断所述多个应用中是否存在两个应用的I/O强度差大于第二阈值;
若是,则优先处理所述两个应用中I/O强度较小的应用。
可以理解的是,所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在相应的一个计算机可读取存储介质中。基于这样的理解,本发明实现上述相应的实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccess Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。