一种固态硬盘数据迁移带宽的流控方法及装置
技术领域
本发明涉及固态硬盘技术领域,尤其涉及一种固态硬盘数据迁移带宽的流控方法及装置。
背景技术
以三层存储单元TLC颗粒为主存颗粒的动态随机存取存储器DRAM固态硬盘,会设置一定大小的单层存储单元SLC的高速缓冲存储器Cache,用来存储缓存数据,等到Cache块写满时,则将SLC中的数据迁移到TLC中。而在数据迁移过程中,读写速率会受到数据迁移的影响。
其中,目前的固态硬盘的流控方案主要针对的是消费类的使用需求,为达到快速迁移数据的目的,不会对数据迁移的带宽进行限制。
然而,在视频监控的存储中,一旦因为固态硬盘进行数据迁移而导致其读写速率不稳定,就会引发录像丢失或者录像回放时出现卡顿的问题,给消费者造成不好体验。所以视频监控在进行存储时,为满足其持续写入的需求,需要其读写速率不能有较大的波动。由于消费类硬盘不是实时处于读写状态,且并未对数据迁移的带宽进行限制,因此现有的固态硬盘的流控方案中存在因未对数据迁移带宽进行限制,并且不能根据读写速率的需求对数据迁移的带宽进行调整,而导致的读写速率不稳定的问题。
发明内容
本发明公开了一种固态硬盘数据迁移带宽的流控方法及装置,用于解决现有技术中存在的因未对固态硬盘进行数据迁移时的带宽进行限制,并且不能根据读写速率的需求对数据迁移的带宽进行调整,导致读写速率不稳定,而引发的录像丢失或者录像回放时出现卡顿的问题。
依据本发明的一个方面,提供了一种固态硬盘数据迁移带宽的流控方法,所述方法包括:
在当前流控周期内,判断固态硬盘接收到的读写命令是否均被完成;
如果是,则根据当前保存的所述固态硬盘进行数据迁移时的平均迁移速率和所述固态硬盘进行读写操作时的平均读写速率的差值,及当前保存的所述固态硬盘进行数据迁移时的第一限制带宽,对所述第一限制带宽进行增大处理;
如果否,则根据所述平均迁移速率和所述平均读写速率的差值,及所述第一限制带宽,对所述第一限制带宽进行减小处理。
由于在数据迁移的过程中,存在读写速率和数据迁移速率之间的竞争,因此通过判断固态硬盘接收到的读写命令是否均被完成,并在读写命令均被完成的情况下,对当前保存的固态硬盘进行数据迁移时的第一限制带宽进行相应的增大处理,或者在读写命令未被完成的情况下,对第一限制带宽进行相应的减小处理,可实现根据读写速率的需求,对数据迁移的带宽进行限制和调整,尽可能的降低数据迁移对读写速率的影响,以保证视频录像在稳定的情况下进行。
具体地,所述根据当前保存的所述固态硬盘进行数据迁移时的平均迁移速率和所述固态硬盘进行读写操作时的平均读写速率的差值,及当前保存的所述固态硬盘进行数据迁移时的第一限制带宽,对所述第一限制带宽进行增大处理之前,所述方法还包括:
判断所述平均迁移速率与当前保存的所述固态硬盘进行数据迁移时的第一限制带宽的差值是否大于第一预设阈值,其中所述第一预设阈值为正数,如果是,则执行根据当前保存的所述固态硬盘进行数据迁移时的平均迁移速率和所述固态硬盘进行读写操作时的平均读写速率的差值,及当前保存的所述固态硬盘进行数据迁移时的第一限制带宽,对所述第一限制带宽进行增大处理的步骤。
也就是说,在读写命令均被完成时,只有在第一限制带宽突然下降的情况下,才对第一限制带宽进行增大处理,否则为优先保证固态硬盘保持在稳定的读写速率,可不对第一限制带宽进行增大处理。
具体地,所述根据当前保存的所述固态硬盘进行数据迁移时的平均迁移速率和所述固态硬盘进行读写操作时的平均读写速率的差值,及当前保存的所述固态硬盘进行数据迁移时的第一限制带宽,对所述第一限制带宽进行增大处理包括:
判断所述平均迁移速率与所述平均读写速率的差值是否大于第二预设阈值,其中所述第二预设阈值为正数;
如果是,则根据当前保存的所述固态硬盘进行数据迁移时的第一限制带宽,将所述第一限制带宽增加第一预设数值;
如果否,则根据当前保存的所述固态硬盘进行数据迁移时的第一限制带宽,将所述第一限制带宽增加第二预设数值;
其中,所述第一预设数值大于所述第二预设数值,且所述第一预设数值和第二预设数值均为正数。
当数据迁移的限制带宽突然下降时,为保证完成数据迁移,需要对第一限制带宽进行增大处理,其中可通过判断平均迁移速率与平均读写速率的差值是否大于第二预设阈值,确定对第一限制带宽进行大幅度上调或者向上微调,以此实现根据实际的读写速率需求,对数据迁移的限制带宽进行自适应性调整。另由于在对第一限制带宽进行增大处理的过程中,参考了当前保存的平均迁移速率与平均读写速率,因此可使得对数据迁移带宽的增大处理更加平滑。
具体地,所述根据所述平均迁移速率和所述平均读写速率的差值,及所述第一限制带宽,对所述第一限制带宽进行减小处理包括:
判断所述平均迁移速率与所述平均读写速率的差值是否大于第三预设阈值,其中所述第三预设阈值为正数;
如果否,则根据当前保存的所述固态硬盘进行数据迁移时的第一限制带宽,将所述第一限制带宽减小第三预设数值;
如果是,则根据当前保存的所述固态硬盘进行数据迁移时的第一限制带宽,将所述第一限制带宽减小第四预设数值;
其中,所述第三预设数值小于所述第四预设数值,且所述第三预设数值和第四预设数值均为正数。
若固态硬盘接收到的读写命令未被完成,则有可能因为第一限制带宽太高,而导致读写命令未被完成,或者是因为读写速率已经达到了读写操作的限制带宽,而导致读写命令未被完成。因此需要通过判断平均迁移速率与平均读写速率的差值是否大于第三预设阈值,确定对第一限制带宽进行大幅度下调或者向下微调,以此实现根据实际的读写速率需求对数据迁移的限制带宽进行自适应性调整。由于在对第一限制带宽进行减小处理的过程中,也参考了当前保存的平均迁移速率与平均读写速率,因此可使得对数据迁移带宽的减小处理更加平滑。
具体地,所述根据当前保存的所述固态硬盘进行数据迁移时的第一限制带宽,将所述第一限制带宽减小第四预设数值之前,所述方法还包括:
判断所述第一限制带宽是否大于所述平均迁移速率与所述平均读写速率之和的二分之一;如果是,则执行根据当前保存的所述固态硬盘进行数据迁移时的第一限制带宽,将所述第一限制带宽减小第四预设数值的步骤。
具体地,如果所述第一限制带宽不大于所述平均迁移速率与所述平均读写速率之和的二分之一,所述方法还包括:
根据当前保存的所述固态硬盘进行数据迁移时的第一限制带宽,将所述第一限制带宽减小第三预设数值。
也就是说,在对第一限制带宽进行大幅度下调之前,还需要判断第一限制带宽是否大于平均迁移速率与平均读写速率之和的二分之一,以此来进一步判断是否因为第一限制带宽太高,且远大于读写速率,而导致读写命令未被完成。如果是,则对第一限制带宽进行大幅度下调,否则,对第一限制带宽进行向下微调。以此来实现对第一限制带宽进行快速调整,提高对第一限制带宽的调整效率。
具体地,所述根据当前保存的所述固态硬盘进行数据迁移时的第一限制带宽,将所述第一限制带宽减小第三预设数值之后,所述方法还包括:
根据当前保存的所述固态硬盘进行读写操作时的第二限制带宽,将所述第二限制带宽增加第五预设数值,其中所述第五预设数值为正数。
也就是说,如果是因为读写速率已经达到了读写操作的限制带宽,而导致读写命令未被完成,那么在对第一限制带宽向下微调同时,还要需要对固态硬盘进行读写操作时的第二限制带宽向上微调,以确保固态硬盘能够完成其接收到的读写命令,保证视频录像的稳定性。
具体地,所述判断固态硬盘接收到的读写命令是否均被完成之前,所述方法还包括:
判断当前保存的固态硬盘进行读写操作时的平均读写速率和所述固态硬盘进行数据迁移时的平均迁移速率的差值是否大于第四预设阈值,其中所述第四预设阈值为正数;
如果是,则根据所述固态硬盘的当前读写速率和当前迁移速率之和的第一数值,将所述固态硬盘进行数据迁移时的限制带宽设置为所述第一数值的二分之一与第六预设数值的和,得到所述固态硬盘进行数据迁移时的第一限制带宽;
如果否,则将所述固态硬盘进行数据迁移时的限制带宽增加第七预设数值,得到所述固态硬盘进行数据迁移时的第一限制带宽。
也就是说,在判断固态硬盘接收到的读写命令是否均被完成之前,若当前保存的平均读写速率大于平均迁移速率,为防止读写速率太快,而数据迁移速率太慢,已存储的数据不能被及时的迁移到TLC中,则需要对固态硬盘进行数据迁移时的限制带宽进行增大处理。此时可通过判断平均读写速率与平均迁移速率的差值是否大于第四预设阈值,确定对固态硬盘进行数据迁移时的限制带宽进行大幅度上调或者向上微调,以确定读写操作与数据迁移之间的带宽平衡点。
具体地,将所述固态硬盘进行数据迁移时的限制带宽增加第七预设数值,得到所述固态硬盘进行数据迁移时的第一限制带宽之后,所述方法还包括:
将所述固态硬盘进行读写操作时的限制带宽减小第八预设数值,得到所述固态硬盘进行读写操作时的第二限制带宽。
也就是说,在对固态硬盘进行数据迁移时的限制带宽向上微调时,可同时将固态硬盘进行读写操作时的限制带宽向下微调,以尽快的确定读写操作与数据迁移之间的带宽平衡点,防止Cache块写满。
具体地,所述方法还包括:
获取当前保存的所述固态硬盘进行数据迁移时的迁移速率与所述固态硬盘进行读写操作时的读写速率之和的最大值;
判断所述平均读写速率和平均迁移速率之和是否小于所述最大值的三分之二;
如果是,则将对所述第一限制带宽进行增大处理或者减小处理后得到的第三限制带宽设置为所述最大值的二分之一。
由于在对第一限制带宽进行增大处理或者减小处理之后,可保证在数据迁移的同时,读写速率也满足其读写业务的需求。而如果当前保存的平均读写速率和平均迁移速率之和,小于记录中迁移速率与读写速率之和的最大值的三分之二,则说明有剩余的带宽资源并未被使用,因此在确保不影响视频录像的前提下,可以将对第一限制带宽进行增大处理或者减小处理后得到的第三限制带宽设置为最大值的二分之一,既避免了带宽资源的浪费,又提高了数据迁移的速率,实现了在不影响视频录像的前提下,尽快的完成数据迁移。
依据本发明的另一个方面,还提供了一种固态硬盘数据迁移带宽的流控装置,所述装置包括:
第一判断模块,用于在当前流控周期内,判断固态硬盘接收到的读写命令是否均被完成;
第一增大模块,用于如果所述第一判断模块的判断结果为是,则根据当前保存的所述固态硬盘进行数据迁移时的平均迁移速率和所述固态硬盘进行读写操作时的平均读写速率的差值,及当前保存的所述固态硬盘进行数据迁移时的第一限制带宽,对所述第一限制带宽进行增大处理;
第一减小模块,用于如果所述第一判断模块的判断结果为否,则根据所述平均迁移速率和所述平均读写速率的差值,及所述第一限制带宽,对所述第一限制带宽进行减小处理。
具体地,在所述第一增大模块执行根据当前保存的所述固态硬盘进行数据迁移时的平均迁移速率和所述固态硬盘进行读写操作时的平均读写速率的差值,及当前保存的所述固态硬盘进行数据迁移时的第一限制带宽,对所述第一限制带宽进行增大处理的步骤之前,所述装置还包括:
第二判断模块,用于判断所述平均迁移速率与当前保存的所述固态硬盘进行数据迁移时的第一限制带宽的差值是否大于第一预设阈值,其中所述第一预设阈值为正数;如果是,则使所述第一增大模块执行根据当前保存的所述固态硬盘进行数据迁移时的平均迁移速率和所述固态硬盘进行读写操作时的平均读写速率的差值,及当前保存的所述固态硬盘进行数据迁移时的第一限制带宽,对所述第一限制带宽进行增大处理的步骤。
具体地,所述第一增大模块包括:
第一判断单元,用于判断所述平均迁移速率与所述平均读写速率的差值是否大于第二预设阈值,其中所述第二预设阈值为正数;
第一增加单元,用于如果所述第一判断单元的判断结果为是,则根据当前保存的所述固态硬盘进行数据迁移时的第一限制带宽,将所述第一限制带宽增加第一预设数值;
第二增加单元,用于如果所述第一判断单元的判断结果为否,则根据当前保存的所述固态硬盘进行数据迁移时的第一限制带宽,将所述第一限制带宽增加第二预设数值;
其中,所述第一预设数值大于所述第二预设数值,且所述第一预设数值和第二预设数值均为正数。
具体地,所述第一减小模块包括:
第二判断单元,用于判断所述平均迁移速率与所述平均读写速率的差值是否大于第三预设阈值,其中所述第三预设阈值为正数;
第一减小单元,用于如果所述第二判断单元的结果为否,则根据当前保存的所述固态硬盘进行数据迁移时的第一限制带宽,将所述第一限制带宽减小第三预设数值;
第二减小单元,用于如果所述第二判断单元的结果为是,则根据当前保存的所述固态硬盘进行数据迁移时的第一限制带宽,将所述第一限制带宽减小第四预设数值;
其中,所述第三预设数值小于所述第四预设数值,且所述第三预设数值和第四预设数值均为正数。
具体地,在所述第二减小单元执行根据当前保存的所述固态硬盘进行数据迁移时的第一限制带宽,将所述第一限制带宽减小第四预设数值的步骤之前,所述装置还包括:
第三判断单元,用于判断所述第一限制带宽是否大于所述平均迁移速率与所述平均读写速率之和的二分之一;如果是,则使所述第二减小单元执行根据当前保存的所述固态硬盘进行数据迁移时的第一限制带宽,将所述第一限制带宽减小第四预设数值的步骤。
具体地,所述装置还包括:如果所述第三判断单元的判断结果为否,则使所述第一减小单元执行根据当前保存的所述固态硬盘进行数据迁移时的第一限制带宽,将所述第一限制带宽减小第三预设数值的步骤。
具体地,在所述第一减小单元执行完根据当前保存的所述固态硬盘进行数据迁移时的第一限制带宽,将所述第一限制带宽减小第三预设数值的步骤之后,所述装置还包括:
第三增加单元,用于根据当前保存的所述固态硬盘进行读写操作时的第二限制带宽,将所述第二限制带宽增加第五预设数值,其中所述第五预设数值为正数。
具体地,在所述第一判断模块执行判断固态硬盘接收到的读写命令是否均被完成的步骤之前,所述装置还包括:
第三判断模块,用于判断当前保存的固态硬盘进行读写操作时的平均读写速率和所述固态硬盘进行数据迁移时的平均迁移速率的差值是否大于第三预设阈值,其中所述第三预设阈值为正数;
第一设置模块,用于如果所述第二判断模块的判断结果为是,则根据所述固态硬盘的当前读写速率和当前迁移速率之和的第一数值,将所述固态硬盘进行数据迁移时的限制带宽设置为所述第一数值的二分之一与第六预设数值的和,得到所述固态硬盘进行数据迁移时的第一限制带宽;
第二增大模块,用于如果所述第二判断模块的判断结果为否,则将所述固态硬盘进行数据迁移时的限制带宽增加第七预设数值,得到所述固态硬盘进行数据迁移时的第一限制带宽。
具体地,在所述第二增大模块执行完将所述固态硬盘进行数据迁移时的限制带宽增加第七预设数值,得到所述固态硬盘进行数据迁移时的第一限制带宽之后,所述装置还包括:
第二减小模块,用于将所述固态硬盘进行读写操作时的限制带宽减小第八预设数值,得到所述固态硬盘进行读写操作时的第二限制带宽。
具体地,所述装置还包括:
获取模块,用于获取当前保存的所述固态硬盘进行数据迁移时的迁移速率与所述固态硬盘进行读写操作时的读写速率之和的最大值;
第四判断模块,用于判断所述平均读写速率和平均迁移速率之和是否小于所述最大值的三分之二;
第二设置模块,用于如果所述第三判断模块的判断结果为是,则将对所述第一限制带宽进行增大处理或者减小处理后得到的第三限制带宽设置为所述最大值的二分之一。
本发明的有益效果如下:
本发明提供的一种固态硬盘数据迁移带宽的流控方法及装置,该方法包括:在当前流控周期内,判断固态硬盘接收到的读写命令是否均被完成;如果是,则根据当前保存的所述固态硬盘进行数据迁移时的平均迁移速率和所述固态硬盘进行读写操作时的平均读写速率的差值,及当前保存的所述固态硬盘进行数据迁移时的第一限制带宽,对所述第一限制带宽进行增大处理;如果否,则根据所述平均迁移速率和所述平均读写速率的差值,及所述第一限制带宽,对所述第一限制带宽进行减小处理。在本发明方案中,在读写命令均被完成的情况下,根据当前保存的平均迁移速率和平均读写速率,综合确定固态硬盘进行数据迁移时的限制带宽,并根据固态硬盘进行读写操作时的速率需求,对固态硬盘进行数据迁移时的带宽进行动态调整,可解决现有技术中存在的因未对固态硬盘进行数据迁移时的带宽进行限制,并且不能根据读写速率的需求对数据迁移的带宽进行调整,导致读写速率不稳定,而引发的录像丢失或者录像回放时出现卡顿的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例中固态硬盘数据迁移带宽的流控方法的流程图;
图2为本发明实施例中固态硬盘数据迁移带宽进行调整的过程流程图;
图3为本发明实施例中固态硬盘数据迁移带宽的流控装置的结构框图之一;
图4为本发明实施例中第一增大模块的结构框图;
图5为本发明实施例中第一减小模块的结构框图之一;
图6为本发明实施例中第一减小模块的结构框图之二;
图7为本发明实施例中固态硬盘数据迁移带宽的流控装置的结构框图之二。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一:
由于目前的固态硬盘的流控方案主要针对的是消费类的使用需求,为达到快速迁移数据的目的,不会对数据迁移的带宽进行限制,因此忽略了数据迁移对读写速率的影响。而在视频监控的存储中,需要持续写入,且需要其读写速率不能有较大的波动,所以现有的固态硬盘的流控方案并不适用于存储视频监控的固态硬盘。
因此,为解决因固态硬盘进行数据迁移,而引发录像丢失或者录像回放时出现卡顿,给用户造成不好体验的问题,本发明实施例提供了一种适用于存储视频监控的固态硬盘进行数据迁移时的流控方法,其中,图1为本发明实施例提供的一种固态硬盘数据迁移带宽的流控方法的流程图,通过本发明实施例提供的方法对固态硬盘进行数据迁移的带宽进行调整时,具体包括以下步骤:
步骤S101:在当前流控周期内,判断固态硬盘接收到的读写命令是否均被完成。
由于在数据迁移的过程中,存在读写速率和数据迁移速率之间的竞争,因此通过判断固态硬盘接收到的读写命令是否均被完成,可优先确定对固态硬盘进行数据迁移时的限制带宽向上调整或者向下调整。
步骤S102:如果是,则根据当前保存的所述固态硬盘进行数据迁移时的平均迁移速率和所述固态硬盘进行读写操作时的平均读写速率的差值,及当前保存的所述固态硬盘进行数据迁移时的第一限制带宽,对所述第一限制带宽进行增大处理。
即如果固态硬盘接收到的读写命令均被完成,则说明此时的读写速率即可满足其进行读写操作的需求,因此,在优先保证视频录像的稳定的情况下,为尽快完成数据迁移,可以对当前保存的固态硬盘进行数据迁移时的第一限制带宽进行相应的增大处理,即对固态硬盘进行数据迁移时的限制带宽向上调整。
其中,需要说明的是,当前保存的固态硬盘进行数据迁移时的平均迁移速率,是根据预设统计时间内的若干个流控周期的迁移速率进行统计,并对其求平均获得的,而当前保存的固态硬盘进行读写操作时的平均读写速率,也是根据预设统计时间内的若干个流控周期的读写速率进行统计,并对其求平均获取的。所以平均迁移速率和平均读写速率可在一定程度上反应出固态硬盘当前的数据迁移状况和读写状况。因此可根据平均迁移速率和平均读写速率的差值,快速的确定出对固态硬盘进行数据迁移时的第一限制带宽进行大幅度上调还是向上微调。
其中,需要说明的是,在本发明实施例中,预设统计时间可以为1S,或者2S,当然还可以理解的是,预设统计时间是取值可根据实际情况进行设置,而在本发明实施例中,对其并不进行具体限定。
步骤S103:如果否,则根据所述平均迁移速率和所述平均读写速率的差值,及所述第一限制带宽,对所述第一限制带宽进行减小处理。
即如果固态硬盘接收到的读写命令未被完成,则说明此时的读写速率不能满足其进行读写操作的需求,因此,为满足其读写的业务需求,需要对当前保存的固态硬盘进行数据迁移时的第一限制带宽进行相应的减小处理,即对固态硬盘进行数据迁移时的限制带宽向下调整。
同样的,在对第一限制带宽进行相应的减小处理时,也可参考平均迁移速率和平均读写速率的差值,快速的确定出对第一限制带宽进行大幅度下调还是向下微调,以达到根据实际的读写速率需求对数据迁移的带宽进行自适应调整目的。
由上述可知,无论是对固态硬盘进行数据迁移时的限制带宽向上调整还是向下调整,都参考了固态硬盘的平均迁移速率和平均读写速率,因此可使得对第一限制带宽的调整更加平滑,可提高对第一限制带宽的调整效率。
由上述可知,本发明实施例提供的固态硬盘数据迁移限制带宽的流控方法,旨在读写速率不受数据迁移影响的情况下,若当前流控周期内读写命令均被完成,则根据当前保存的平均迁移速率和平均读写速率,综合确定固态硬盘进行数据迁移时的限制带宽,并根据固态硬盘进行读写操作时的速率需求,对固态硬盘进行数据迁移时的带宽进行动态调整,以实现在确保不影响视频录像的前提下,尽快的完成数据迁移,解决现有技术中存在的因未对固态硬盘进行数据迁移时的带宽进行限制,并且不能根据读写速率的需求对数据迁移的带宽进行调整,导致读写速率不稳定,而引发的录像丢失或者录像回放时出现卡顿的问题。
实施例二:
由于本发明实施例解决的技术问题可知,之所以对固态硬盘进行数据迁移时的带宽进行限制和调整,其目的就是为了保证读写速率不受影响。因此在本发明实施例中,在步骤S102根据当前保存的所述固态硬盘进行数据迁移时的平均迁移速率和所述固态硬盘进行读写操作时的平均读写速率的差值,及当前保存的所述固态硬盘进行数据迁移时的第一限制带宽,对所述第一限制带宽进行增大处理之前,所述方法还包括:
判断所述平均迁移速率与当前保存的所述固态硬盘进行数据迁移时的第一限制带宽的差值是否大于第一预设阈值,其中所述第一预设阈值为正数,如果是,则执行根据当前保存的所述固态硬盘进行数据迁移时的平均迁移速率和所述固态硬盘进行读写操作时的平均读写速率的差值,及当前保存的所述固态硬盘进行数据迁移时的第一限制带宽,对所述第一限制带宽进行增大处理的步骤。
因此,在本发明实施例中,通过判断平均迁移速率与第一限制带宽的差值是否大于第一预设阈值,可判断出第一限制带宽是否发生突然下降的情况。如果未发生,由于当前周期内的读写命令均被完成,因此为优先保证固态硬盘保持在稳定的读写速率,可不对第一限制带宽进行增大处理。如果发生,为保证完成数据迁移,则需要对第一限制带宽进行增大处理。由于固态硬盘接收到的读写命令被完成,因此在保证读写速率可满足读写业务的需求的同时,且还有剩余的带宽资源未被占用,所以应至少保证第一限制带宽大于等于平均迁移速率。
其中,需要说明的是,在本发明实施例中,第一预设阈值的取值可以为50M,或者60M。当然还可以理解的是,第一预设阈值的取值可根据实际情况进行具体限定,在本发明实施例中,对其并不进行作具体限定。
具体地,在本发明实施例中,在根据平均迁移速率和平均读写速率的差值,确定对固态硬盘进行数据迁移时的第一限制带宽进行大幅度上调还是向上微调时,步骤S102根据当前保存的所述固态硬盘进行数据迁移时的平均迁移速率和所述固态硬盘进行读写操作时的平均读写速率的差值,及当前保存的所述固态硬盘进行数据迁移时的第一限制带宽,对所述第一限制带宽进行增大处理具体包括:
判断所述平均迁移速率与所述平均读写速率的差值是否大于第二预设阈值,其中所述第二预设阈值为正数;
如果是,则根据当前保存的所述固态硬盘进行数据迁移时的第一限制带宽,将所述第一限制带宽增加第一预设数值;
如果否,则根据当前保存的所述固态硬盘进行数据迁移时的第一限制带宽,将所述第一限制带宽增加第二预设数值;
其中,所述第一预设数值大于所述第二预设数值,且所述第一预设数值和第二预设数值均为正数。
因为总的带宽资源有限,因此当平均迁移速率与平均读写速率的差值较大时,则说明将第一限制带宽调整到平均迁移速率时,可调整的带宽量较大,而当平均迁移速率与平均读写速率的差值较小时,则说明将第一限制带宽调整到平均迁移速率时,可调整的带宽量较小。
例如,若总的带宽资源为200M,平均迁移速率为100M,平均读写速率为50M,且此时读写与数据迁移之间达到平衡状态。如果第一限制带宽突然被降至50M,因此为保证完成数据迁移,则至少需要将第一限制带宽增大到150M,则此时可调的带宽量为100M。而若平均迁移速率为80M,平均读写速率为50M,且此时读写与数据迁移之间同样达到平衡状态。因此为保证完成数据迁移,则至少需要将第一限制带宽增大到80M,则此时可调的带宽量为30M。
因此,在第一限制带宽突然下降时,为保证完成数据迁移,需根据平均迁移速率与所述平均读写速率的差值是否大于第二预设阈值,来确定对第一限制带宽进行大幅度上调还是向上微调。
其中,在本发明实施例中,第二预设阈值的取值可以为50M,或者60M。当然还可以理解的是,第二预设阈值的取值可根据实际情况进行具体限定,在本发明实施例中,对其并不进行作具体限定。
实施例三:
在上述实施例的基础上,根据平均迁移速率和平均读写速率的差值,确定对第一限制带宽进行大幅度下调还是向下微调时,步骤S103根据所述平均迁移速率和所述平均读写速率的差值,及所述第一限制带宽,对所述第一限制带宽进行减小处理具体包括:
判断所述平均迁移速率与所述平均读写速率的差值是否大于第二预设阈值,其中所述第二预设阈值为正数。
由于固态硬盘接收到的读写命令未被完成,有可能是因为第一限制带宽太高,从而导致在有限的传输带宽内,数据迁移的速率较快,读写速率较慢,而导致读写命令未被完成。也有可能是因为固态硬盘的读写速率已经达到了读写操作的限制带宽,而导致读写命令未被完成。因此可通过判断平均迁移速率与平均读写速率的差值是否大于第二预设阈值,对上述两种导致读写命令未被完成的原因进行初步判断。
其中,需要说明的是,在本发明实施例中,第三预设阈值的取值可以为50M,或者60M。当然还可以理解的是,第三预设阈值的取值可根据实际情况进行具体限定,在本发明实施例中,对其并不进行作具体限定。
如果否,则根据当前保存的所述固态硬盘进行数据迁移时的第一限制带宽,将所述第一限制带宽减小第三预设数值。
由于平均迁移速率与平均读写速率的差值不大于第三预设阈值,因此可初步判定实际的迁移速率与读写速率相差无几,而此时读写命令未被完成,则很有可能是因为固态硬盘的读写速率已经达到了进行读写操作的限制带宽,所以只需要对第一限制带宽向下微调即可。
如果是,则根据当前保存的所述固态硬盘进行数据迁移时的第一限制带宽,将所述第一限制带宽减小第四预设数值。
由于平均迁移速率与平均读写速率的差值大于第三预设阈值,因此可初步判定实际的迁移速率是大于读写速率的,而此时读写命令未被完成,则很有可能是因为第一限制带宽太高,所以需要第一限制带宽进行大幅度下调。
所以,在本发明实施例中,第三预设数值小于第四预设数值,且第三预设数值和第四预设数值均为正数。其中,在对第一限制带宽进行大幅度下调时,第三预设数值的取值可以为30M,或者35M,而在对第一限制带宽向下微调时,第四预设数值的取值可以为5M,或者10M。当然还可以理解的是,第三预设数值和第四预设数值的取值可根据实际情况进行具体限定,在本发明实施例中,对其并不进行作具体限定。
其中,为进一步确定是否对固态硬盘第一限制带宽进行大幅度下调,还需要进一步确定第一限制带宽是否远大于固态硬盘进行读写操作时的限制带宽,所以在本发明实施例中,在根据当前保存的所述固态硬盘进行数据迁移时的第一限制带宽,将所述第一限制带宽减小第四预设数值之前,该方法还包括:
判断所述第一限制带宽是否大于所述平均迁移速率与所述平均读写速率之和的二分之一;如果是,则执行根据当前保存的所述固态硬盘进行数据迁移时的第一限制带宽,将所述第一限制带宽减小第四预设数值的步骤。
由于平均迁移速率和平均读写速率可在一定程度上反应出固态硬盘当前的数据迁移状况和读写状况,因此通过综合上述平均迁移速率与平均读写速率的差值大于第二预设阈值,且第一限制带大于平均迁移速率与平均读写速率之和的二分之一,可以说明实际的迁移速率远大于读写速率,因此可以确定是因为第一限制带宽太高,且远大于固态硬盘进行读写操作时的限制带宽,才导致读写命令未被完成。所以需要对第一限制带宽进行大幅度下调,使得在有限的传输带宽内,通过降低数据迁移限制带宽的方式,以达到使读写速率升高的目的,最终实现在进行数据迁移的同时,保证固态硬盘的读写速率满足其读写业务的需求。
相反的,若平均迁移速率与平均读写速率的差值不大于第二预设阈值,和/或第一限制带宽不大于平均迁移速率与平均读写速率之和的二分之一,都说明实际的迁移速率与读写速率相差无几,则说明是因为读写速率已经达到了进行读写操作的限制带宽,才导致读写命令未被完成。因此只需要对固态硬盘进行数据迁移时的第一限制带宽向下微调即可。
进一步地,为确保固态硬盘的读写速率可以满足其读写业务的需求,因此,在本发明实施例中,在根据当前保存的所述固态硬盘进行数据迁移时的第一限制带宽,将所述第一限制带宽减小第三预设数值之后,所述方法还包括:
根据当前保存的所述固态硬盘进行读写操作时的第二限制带宽,将所述第二限制带宽增加第五预设数值,其中所述第五预设数值为正数。
也就是说,在因为读写速率已经达到了进行读写操作的限制带宽,而导致读写命令未被完成时,需采用将第一限制带宽向下微调,并同时将固态硬盘进行读写操作时的第二限制带宽向上微调的方式,实现在有限的传输带宽内,数据迁移的速率下降,读写速率上升,并最终实现在进行数据迁移的同时,保证固态硬盘的读写速率满足其读写业务的需求,使得固态硬盘能够完成其接收到的读写命令,保证视频录像的稳定性。
因此,在本发明实施例中,通过针对上述两种原因对当前保存的固态硬盘进行数据迁移时的第一限制带宽进行大幅度下调或者向下微调,可实现根据实际的读写速率需求对数据迁移的限制带宽进行自适应调整。另由于在对数据迁移的限制带宽进行调整的过程中,参考了当前保存的平均迁移速率与平均读写速率的差值,因此可使得对数据迁移带宽的调整更加平滑。
实施例四:
为防止读写速率太快,而数据迁移的速率太慢,已存储的数据不能被及时的迁移到TLC中,而导致SLC的Cache被写满,无法对接收的数据进行存储。因此在判断固态硬盘接收到的读写命令是否均被完成之前,需优先判断当前保存的平均读写速率是否大于平均迁移速率,若平均读写速率大于平均迁移速率,则需要对固态硬盘进行数据迁移时的限制带宽采用大幅度调整或者微调的方式,使得在读写速率满足其读写需求的情况下,完成数据迁移。
因此在本发明实施例中,在判断固态硬盘接收到的读写命令是否均被完成之前,所述方法还包括:
判断当前保存的固态硬盘进行读写操作时的平均读写速率和所述固态硬盘进行数据迁移时的平均迁移速率的差值是否大于第四预设阈值,其中所述第三预设阈值为正数。
其中,需要说明的是,在本发明实施例中,第四预设阈值的取值可以为30M,或者35M,当然还可以理解的是,第四预设阈值的取值可根据实际情况进行具体限定,在本发明实施例中,对其并不作具体限定。
如果是,则根据所述固态硬盘的当前读写速率和当前迁移速率之和的第一数值,将所述固态硬盘进行数据迁移时的限制带宽设置为所述第一数值的二分之一与第六预设数值的和,得到所述固态硬盘进行数据迁移时的第一限制带宽。
如果平均读写速率与平均迁移速率的差值大于第四预设阈值,则说明此时实际的读写速率比数据迁移的速率大很多,为保证能够完成数据迁移,此时需要对数据迁移的带宽进行快速调整,故需要对固态硬盘进行数据迁移时的限制带宽进行大幅度调整,即直接将固态硬盘进行数据迁移时的限制带宽,设置为当前读写速率和当前迁移速率之和的二分之一,与第六预设数值的和,以实现通过对数据迁移的带宽进行快速调整,防止Cache被写满。
假如当前读写速率和当前迁移速率之和为100M,第六预设数值的取值为5M,则直接将固态硬盘进行数据迁移时的限制带宽设置为55M。当然可以理解的是,第六预设数值的取值可根据实际情况进行设定,在本发明实施例中,对其并不作具体限定。
如果否,则将所述固态硬盘进行数据迁移时的限制带宽增加第七预设数值,得到所述固态硬盘进行数据迁移时的第一限制带宽。
如果平均读写速率与平均迁移速率的差值不大于第四预设阈值,则说明此时实际的读写速率仅稍大于数据迁移的速率,此时只需要对固态硬盘进行数据迁移时的限制带宽向上微调的方式,对数据迁移的带宽进行调整即可,也就是将固态硬盘进行数据迁移时的限制带宽增加第七预设数值。
其中,在本发明实施例中,第七预设数值可以为5M,或者10M。当然可以理解的是,第七预设数值的取值可根据实际情况进行设定,在本发明实施例中,对其并不作具体限定。
进一步地,为确保数据迁移能够完成,且尽可能的不对读写速率造成影响,在本发明实施例中,在将所述固态硬盘进行数据迁移时的限制带宽增加第七预设数值,得到所述固态硬盘进行数据迁移时的第一限制带宽之后,所述方法还包括:
将所述固态硬盘进行读写操作时的限制带宽减小第八预设数值,得到所述固态硬盘进行读写操作时的第二限制带宽。
也就是说,当平均读写速率与平均迁移速率的差值不大于第四预设阈值时,可在将固态硬盘进行数据迁移时的限制带宽向上微调的同时,还可以适当的将固态硬盘进行读写操作时的限制带宽向下微调。以防止读写速率太快,而数据迁移的速率太慢,已存储的数据不能被及时的迁移到TLC中,导致SLC的Cache被写满,而无法对接收的数据进行存储。
实施例五:
在对固态硬盘进行数据迁移时的第一限制带宽进行增大处理或者减小处理后,说明已经确定了读写操作与数据迁移之间的带宽平衡点,此时可以保证当前的读写速率满足其进行速写功能的需求。因此为避免SLC的Cache被写满,在确定不影响视频录像的前提下,需尽快的完成数据迁移。
所以,在本发明实施例中,所述方法还包括:
获取当前保存的所述固态硬盘进行数据迁移时的迁移速率与所述固态硬盘进行读写操作时的读写速率之和的最大值;
判断所述平均读写速率和平均迁移速率之和是否小于所述最大值的三分之二;
如果是,则将对所述第一限制带宽进行增大处理或者减小处理后得到的第三限制带宽设置为所述最大值的二分之一。
也就是,根据当前保存的某一时刻的固态硬盘进行数据迁移时的最大迁移速率,以及某一时刻的固态硬盘进行读写操作时的最大读写速率,计算出当前保存的固态硬盘进行数据迁移时的迁移速率与固态硬盘进行读写操作时的读写速率之和的最大值。
其中,假设该最大值为200M,而平均读写速率和平均迁移速率之和为100M,则说明还有100M的带宽并未被使用,此时可以将对第一限制带宽进行增大处理或者减小处理后得到的第三限制带宽设置为100M,即最大值为200M时的二分之一,既避免了带宽资源的浪费,又提高了数据迁移的速率,可尽快对Cache中已存储的数据完成数据迁移。
实施例六:
图2为本发明实施例中对固态硬盘数据迁移带宽进行调整的过程流程图,如图2所示,在本发明实施例中,在对固态硬盘数据迁移的带宽进行调整时,执行以下流程:
步骤S201:判断当前流控周期内,读写命令是否均被完成,如果是,则执行步骤S202,如果否,则执行步骤S203;
步骤S202:判断当前保存的固态硬盘进行数据迁移时的第一限制带宽是否突然下降,如果是,则执行步骤S204,如果否,则对第一限制带宽不调整;
步骤S203:判断平均迁移速率与平均读写速率的差值是否大于第三预设阈值,如果是,执行步骤S205,如果否,则对第一限制带宽向下微调;
步骤S204:判断平均迁移速率与平均读写速率的差值是否大于第二预设阈值,如果是,则对第一限制带宽进行大幅度上调,如果否,则对第一限制带宽向上微调;
步骤S205:判断第一限制带宽是否大于平均迁移速率与平均读写速率之和的二分之一,如果是,对第一限制带宽进行大幅度下调,如果否,则对第一限制带宽向下微调。
实施例七:
依据本发明实施例的另一个方面,还提供了一种固态硬盘数据迁移带宽的流控装置,如图3所示,该装置包括:
第一判断模块301,用于在当前流控周期内,判断固态硬盘接收到的读写命令是否均被完成;
第一增大模块302,用于如果所述第一判断模块的判断结果为是,则根据当前保存的所述固态硬盘进行数据迁移时的平均迁移速率和所述固态硬盘进行读写操作时的平均读写速率的差值,及当前保存的所述固态硬盘进行数据迁移时的第一限制带宽,对所述第一限制带宽进行增大处理;
第一减小模块303,用于如果所述第一判断模块的判断结果为否,则根据所述平均迁移速率和所述平均读写速率的差值,及所述第一限制带宽,对所述第一限制带宽进行减小处理。
具体地,在所述第一增大模块执行根据当前保存的所述固态硬盘进行数据迁移时的平均迁移速率和所述固态硬盘进行读写操作时的平均读写速率的差值,及当前保存的所述固态硬盘进行数据迁移时的第一限制带宽,对所述第一限制带宽进行增大处理的步骤之前,所述装置还包括:
第二判断模块311,用于判断所述平均迁移速率与当前保存的所述固态硬盘进行数据迁移时的第一限制带宽的差值是否大于第一预设阈值,其中所述第一预设阈值为正数;如果是,则使所述第一增大模块302执行根据当前保存的所述固态硬盘进行数据迁移时的平均迁移速率和所述固态硬盘进行读写操作时的平均读写速率的差值,及当前保存的所述固态硬盘进行数据迁移时的第一限制带宽,对所述第一限制带宽进行增大处理的步骤。
具体地,如图4所示,所述第一增大模块302包括:
第一判断单元3021,用于判断所述平均迁移速率与所述平均读写速率的差值是否大于第二预设阈值,其中所述第二预设阈值为正数;
第一增加单元3022,用于如果所述第一判断单元的判断结果为是,则根据当前保存的所述固态硬盘进行数据迁移时的第一限制带宽,将所述第一限制带宽增加第一预设数值;
第二增加单元3023,用于如果所述第一判断单元的判断结果为否,则根据当前保存的所述固态硬盘进行数据迁移时的第一限制带宽,将所述第一限制带宽增加第二预设数值;
其中,所述第一预设数值大于所述第二预设数值,且所述第一预设数值和第二预设数值均为正数。
具体地,如图5所示,所述第一减小模块303包括:
第二判断单元3031,用于判断所述平均迁移速率与所述平均读写速率的差值是否大于第三预设阈值,其中所述第三预设阈值为正数;
第一减小单元3032,用于如果所述第二判断单元的结果为否,则根据当前保存的所述固态硬盘进行数据迁移时的第一限制带宽,将所述第一限制带宽减小第三预设数值;
第二减小单元3033,用于如果所述第二判断单元的结果为是,则根据当前保存的所述固态硬盘进行数据迁移时的第一限制带宽,将所述第一限制带宽减小第四预设数值;
其中,所述第三预设数值小于所述第四预设数值,且所述第三预设数值和第四预设数值均为正数。
具体地,如图6所示,在本发明实施例中,在所述第二减小单元3033执行根据当前保存的所述固态硬盘进行数据迁移时的第一限制带宽,将所述第一限制带宽减小第四预设数值的步骤之前,所述装置还包括:
第三判断单元3034,用于判断所述第一限制带宽是否大于所述平均迁移速率与所述平均读写速率之和的二分之一;如果是,则使所述第二减小单元3033执行根据当前保存的所述固态硬盘进行数据迁移时的第一限制带宽,将所述第一限制带宽减小第四预设数值的步骤。
具体地,所述装置还包括:如果所述第三判断单元3034的判断结果为否,则使所述第一减小单元3031执行根据当前保存的所述固态硬盘进行数据迁移时的第一限制带宽,将所述第一限制带宽减小第三预设数值的步骤。
具体地,如图6所示,在本发明实施例中,在所述第一减小单元3031执行完根据当前保存的所述固态硬盘进行数据迁移时的第一限制带宽,将所述第一限制带宽减小第三预设数值的步骤之后,所述装置还包括:
第三增加单元3035,用于根据当前保存的所述固态硬盘进行读写操作时的第二限制带宽,将所述第二限制带宽增加第五预设数值,其中所述第五预设数值为正数。
具体地,如图7所示,在本发明实施例中,在所述第一判断模块301执行判断固态硬盘接收到的读写命令是否均被完成的步骤之前,所述装置还包括:
第三判断模块304,用于判断当前保存的固态硬盘进行读写操作时的平均读写速率和所述固态硬盘进行数据迁移时的平均迁移速率的差值是否大于第四预设阈值,其中所述第四预设阈值为正数;
第一设置模块305,用于如果所述第二判断模块的判断结果为是,则根据所述固态硬盘的当前读写速率和当前迁移速率之和的第一数值,将所述固态硬盘进行数据迁移时的限制带宽设置为所述第一数值的二分之一与第六预设数值的和,得到所述固态硬盘进行数据迁移时的第一限制带宽;
第二增大模块306,用于如果所述第二判断模块的判断结果为否,则将所述固态硬盘进行数据迁移时的限制带宽增加第七预设数值,得到所述固态硬盘进行数据迁移时的第一限制带宽。
具体地,在所述第二增大模块306执行完将所述固态硬盘进行数据迁移时的限制带宽增加第七预设数值,得到所述固态硬盘进行数据迁移时的第一限制带宽之后,所述装置还包括:
第二减小模块307,用于将所述固态硬盘进行读写操作时的限制带宽减小第八预设数值,得到所述固态硬盘进行读写操作时的第二限制带宽。
具体地,如图7所示,在本发明实施例中,所述装置还包括:
获取模块308,用于获取当前保存的所述固态硬盘进行数据迁移时的迁移速率与所述固态硬盘进行读写操作时的读写速率之和的最大值;
第四判断模块309,用于判断所述平均读写速率和平均迁移速率之和是否小于所述最大值的三分之二;
第二设置模块310,用于如果所述第三判断模块的判断结果为是,则将对所述第一限制带宽进行增大处理或者减小处理后得到的第三限制带宽设置为所述最大值的二分之一。
由上述可知,本发明提供的一种固态硬盘数据迁移带宽的流控方法及装置,旨在读写速率不受数据迁移影响的情况下,根据当前流控周期内读写命令是否均被完成,以及当前保存的平均迁移速率和平均读写速率,综合确定固态硬盘进行数据迁移时的限制带宽,并根据固态硬盘进行读写操作时的速率需求,对固态硬盘进行数据迁移时的带宽进行动态调整,以解决现有技术中存在的因未对固态硬盘进行数据迁移时的带宽进行限制,并且不能根据读写速率的需求对数据迁移的带宽进行调整,导致读写速率不稳定,而引发的录像丢失或者录像回放时出现卡顿的问题。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者一个操作与另一个实体或者另一个操作区分开来,而不一定要求或者暗示这些实体或者操作之间存在任何这种实际的关系或者顺序。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全应用实施例、或结合应用和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。