掌桥专利:专业的专利平台
掌桥专利
首页

一种硬盘的请求处理方法、系统、存储介质和电子设备

文献发布时间:2023-06-19 19:00:17


一种硬盘的请求处理方法、系统、存储介质和电子设备

技术领域

本发明涉及存储设备领域,特别涉及一种硬盘的请求处理方法、系统、存储介质和电子设备。

背景技术

随着云计算、大数据等技术的迅速发展,在业务系统内时时刻刻都会产生海量的数据需要处理及存储,即大量数据资产在业务系统内高速流转。信息技术的高速发展对存储系统的性能提出了更高的要求。固态存储器(Solid State Drives,SSD)因其读写速度快、能耗较低,而被广泛采用。

而SSD有一个性能指标服务质量(Quality of Service,QoS),QoS表达的是时延“置信级”(Confidence Level)。一个SSD盘QoS时延分布整体越靠左,代表时延越小,性能指标越高。这里的时延是最大时延,即测试周期内所有命令中响应时间最长的那个命令,最大时延反映的是用户体验。而SSD盘顺序读写性能是衡量不同厂商SSD产品优劣的重要指标。

因为NAND(NAND flash memory,一种闪存芯片材料)的LUN(Logical UnitNumber,逻辑单元)一次只能执行一个命令,对于同一LUN上的读写擦操作,即使对象不同也不能并行实现。所以顺序读写情景下,如果数量最多,耗时最短的read指令总是等待写擦操作完成,必然会导致时延的置信分布右移,使QoS指标下降。

但是目前SSD固件流程中未对write和擦除操作进行分级处理,因此在需要大量顺序写情景下,write操作的最大时延也会因为write和擦除操作的数量和耗时的差异而增大,使得顺序写情境下QoS指标下降,同时未对垃圾回收 read 和写擦操作进行分级处理,在混合读写情景下,写擦操作会增大垃圾回收 read的最大时延,垃圾回收又是由write触发的,此时write需要等待垃圾回收完成方可进行,则垃圾回收 read最大时延增大,会间接增大write最大时延,从而使混合读写情境下QoS指标下降。

发明内容

本发明的目的是提供一种硬盘的请求处理方法、硬盘的请求处理系统、计算机可读存储介质和电子设备,能够提高硬盘的读写性能。

为解决上述技术问题,本发明提供一种硬盘的请求处理方法,具体技术方案如下:

获取请求队列;

判断所述请求队列中后续请求与当前请求是否为相同类型请求;

若否,根据预设优先级顺序判断所述后续请求的执行优先级是否高于所述当前请求;

若所述后续请求的执行优先级高于所述当前请求,将所述当前请求挂起,并执行所述后续请求。

可选的,判断所述请求队列中后续请求与当前请求是否为相同类型请求包括:

在所述当前请求执行至检查点时,判断所述请求队列中后续请求与当前请求是否为相同类型请求。

可选的,在所述当前请求执行至检查点时,判断所述请求队列中后续请求与当前请求是否为相同类型请求之前,还包括:

设定所述检查点;其中,所述检查点包括所述当前请求开始执行时至第一次挂起的时间间隔、恢复至下一次挂起的时间间隔、所述当前请求处理完成进入挂起状态的时间点。

可选的,设定所述检查点包括:

根据闪存芯片的存储特性设定所述检查点。

可选的,判断所述请求队列中后续请求与当前请求是否为相同类型请求之前,还包括:

确定到达所述检查点后,向后检索请求的个数。

可选的,判断所述请求队列中后续请求与当前请求是否为相同类型请求包括:

判断所述请求队列中满足所述向后检索请求个数的后续请求与当前请求逐一判断是否为相同类型请求。

可选的,若所述后续请求的执行优先级高于所述当前请求,将所述当前请求挂起,并执行所述后续请求之后,还包括:

判断所述当前请求挂起时优先执行的请求数量是否超过门限值;

若是,暂停挂起所述当前请求,并处理所述当前请求。

可选的,判断所述当前请求挂起时优先执行的请求是否超过门限值之前,还包括:

根据读操作和写操作的请求比例确定所述门限值。

可选的,判断所述当前请求挂起时优先执行的请求是否超过门限值之前,还包括:

根据所述当前请求和所述后续请求的请求类型确定所述门限值。

可选的,根据所述当前请求和所述后续请求的请求类型确定所述门限值之后,还包括:

根据所述当前请求的挂起时长调整所述门限值。

可选的,根据所述当前请求和所述后续请求的请求类型确定所述门限值之后,还包括:

根据所述当前请求的挂起次数调整所述门限值。

可选的,根据所述当前请求和所述后续请求的请求类型确定所述门限值之后,还包括:

根据所述后续请求的请求类型调整所述门限值。

可选的,根据所述当前请求和所述后续请求的请求类型确定所述门限值包括:

若所述当前请求的请求类型为擦除操作,所述后续请求的请求类型为写操作,根据所述当前请求被挂起的次数确定所述门限值。

可选的,根据预设优先级顺序判断所述后续请求的执行优先级是否高于所述当前请求之前,还包括:

设置读操作、写操作和擦除操作之间的预设优先级顺序;其中,所述读操作、所述写操作和所述擦除操作的优先级依次降低。

可选的,若所述后续请求的执行优先级高于所述当前请求,将所述当前请求挂起包括:

若所述当前请求为擦除操作,所述后续请求为写操作,将所述当前请求挂起,并执行所述后续请求;

若所述当前请求为擦除操作或者写操作,所述后续请求为读操作,将所述当前请求挂起,并执行后续请求。

可选的,根据所述后续请求的请求类型调整所述门限值时包括:

若所述后续请求包含垃圾回收读请求,将所述门限值设于小于出厂门限值的定值。

可选的,若所述后续请求的执行优先级高于所述当前请求,将所述当前请求挂起,并执行所述后续请求后,还包括:

判断当前是否为最后一个挂起检查点;

若是,结束请求检测。

本发明还提供一种硬盘的请求处理系统,包括:

队列获取模块,用于获取请求队列;

判断模块,用于判断所述请求队列中后续请求与当前请求是否为相同类型请求;

优先级判断模块,用于所述判断模块的判断结果为否时,根据预设优先级顺序判断所述后续请求的执行优先级是否高于所述当前请求;

请求挂起处理模块,用于若所述后续请求的执行优先级高于所述当前请求,将所述当前请求挂起,并执行所述后续请求。

可选的,判断模块为用于在所述当前请求执行至检查点时,判断所述请求队列中后续请求与当前请求是否为相同类型请求的模块 。

可选的,还包括:

时间点设置模块,用于在所述当前请求执行至检查点时,判断所述请求队列中后续请求与当前请求是否为相同类型请求之前,设定所述检查点;其中,所述检查点包括所述当前请求开始执行时至第一次挂起的时间间隔、恢复至下一次挂起的时间间隔、所述当前请求处理完成进入挂起状态的时间点。

可选的,时间点设置模块为用于根据闪存芯片的存储特性设定所述检查点的模块。

可选的,还包括:

检索个数确定模块,用于判断所述请求队列中后续请求与当前请求是否为相同类型请求之前,确定到达所述检查点后,向后检索请求的个数。

可选的,判断模块为用于判断所述请求队列中满足所述向后检索请求个数的后续请求与当前请求逐一判断是否为相同类型请求的模块。

可选的,还包括:

门限值检测模块,用于判断所述当前请求挂起时优先执行的请求数量是否超过门限值;若是,暂停挂起所述当前请求,并处理所述当前请求。

可选的,还包括:

门限值设置模块,用于根据读操作和写操作的请求比例确定所述门限值。

可选的,还包括:

门限值确定模块,用于根据所述当前请求和所述后续请求的请求类型确定所述门限值。

可选的,还包括:

第一门限值调整模块,用于根据所述当前请求的挂起时长调整所述门限值。

可选的,还包括:

第二门限值调整模块,用于根据所述当前请求的挂起次数调整所述门限值。

可选的,还包括:

第三门限值调整模块,用于根据所述后续请求的请求类型调整所述门限值。

可选的,第三门限值调整模块为用于若所述当前请求的请求类型为擦除操作,所述后续请求的请求类型为写操作,根据所述当前请求被挂起的次数确定所述门限值的模块。

可选的,还包括:

优先级设置模块,用于设置读操作、写操作和擦除操作之间的预设优先级顺序;其中,所述读操作、所述写操作和所述擦除操作的优先级依次降低。

可选的,请求挂起处理模块为用于执行如下步骤的模块:

若所述当前请求为擦除操作,所述后续请求为写操作,将所述当前请求挂起,并执行所述后续请求;

若所述当前请求为擦除操作或者写操作,所述后续请求为读操作,将所述当前请求挂起,并执行后续请求。

可选的,还包括:

检查点判断模块,用于判断当前是否为最后一个挂起检查点;若是,结束请求检测。

本发明还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的方法的步骤。

本发明还提供一种电子设备,包括存储器和处理器,所述存储器中存有计算机程序,所述处理器调用所述存储器中的计算机程序时实现如上所述的方法的步骤。

本发明提供一种硬盘的请求处理方法,包括:获取请求队列;判断所述请求队列中后续请求与当前请求是否为相同类型请求;若否,根据预设优先级顺序判断所述后续请求的执行优先级是否高于所述当前请求;若所述后续请求的执行优先级高于所述当前请求,将所述当前请求挂起,并执行所述后续请求。

本发明在处理硬盘请求时,对执行的当前请求和后续请求进行类型检测和判断,从而保证优先级较高的请求类型能够优先执行,从而提升硬盘的存储性能以及性能指标服务质量。

本发明还提供一种硬盘的请求处理系统、计算机可读存储介质和电子设备,具有上述有益效果,此处不再赘述。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本发明实施例所提供的一种硬盘的请求处理方法的流程图;

图2为本发明实施例所提供的一种硬盘的请求处理系统结构示意图;

图3为本发明实施例所提供的一种电子设备的结构示意图。

具体实施方式

本发明的核心是提供一种硬盘的请求处理方法,提升顺序写QoS性能,并减小垃圾回收 read最大时延,实现提升混合读写写QoS性能的目标。

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

在TLC NAND内部操作中,read即读操作的对象是一个页(page),write即写操作的对象是一个字线(wordline),而erase即擦除操作的对象是一个块(block),一个block由多条字线组成,而一个字线由多个page组成(TLC NAND是3个)。因此read、write和erase命令花费的时间是递增的,且相差较大(TLC read大约60us,write大约2ms,erase 10ms)。同时对同一个块进行读写擦操作,NAND处理read、write和erase命令个数是递减的。即使在日常使用中,用户发送read命令也要多于后两者。

因为NAND的LUN一次只能执行一个命令,对于同一LUN上的读写擦操作,即使对象不同也不能并行实现。所以顺序读写情景下,如果数量最多,耗时最短的read指令总是等待写擦操作完成,必然会导致时延的置信分布右移,使QoS指标下降。为此,本发明通过提升HOST read优先级,使得HOST read操作能“中断”写擦操作,可以有效减小顺序read的最大时延。

具体思路是,当硬盘在执行擦除操作时,SSD固件中的NAND主控检索到消息请求FIFO队列中下一个请求是写操作,判断符合挂起条件后则将当前擦除操作挂起,直到该写操作执行完成后恢复,通过减少写操作最大时延来提升QoS指标。同理,执行擦除操作或者写操作时,检索到消息请求FIFO队列中下一个请求是垃圾回收读操作请求,判断符合挂起条件后则将当前写擦操作挂起,直到该垃圾回收读操作请求执行完成后恢复,通过减少垃圾回收读操作请求最大时延,加快垃圾回收完成,减少写操作请求等待时间,从而间接减少写操作最大时延来提升QoS指标。

请参考图1,图1为本发明实施例所提供的一种硬盘的请求处理方法的流程图,该方法包括:

S101:获取请求队列;

S102:判断所述请求队列中后续请求与当前请求是否为相同类型请求;

S103:若否,根据预设优先级顺序判断所述后续请求的执行优先级是否高于所述当前请求;

S104:若所述后续请求的执行优先级高于所述当前请求,将所述当前请求挂起,并执行所述后续请求。

该请求队列指硬盘所需要处理的请求队列,在此对于该请求队列的具体类型不作限定,其可以采用任何类型的消息队列,例如先入先出队列等(FIFO队列,first in,firstout)。

此后判断请求队列中后续请求与当前正在处理的请求是否为相同类型的请求。若二者为相同类型的请求,不存在同类型请求之间的优先级关系,可保持当前的处理顺序。若二者不为相同类型的请求,则需要判断后续请求的执行优先级是否高于正在执行的当前请求。若确认后续请求的执行优先级是否高于当前请求,则需要将当前请求挂起,并先执行优先级较高的后续请求。

在挂起当前请求的过程中,相当于暂停当前请求的处理。若后续请求处理处理完成后,不存在比当前请求优先级更高的请求,则继续处理当前请求。否则依旧处理优先级更高的后续请求。

当然,本实施例默认在此之前需要针对请求类型设置相应的优先级。由上文可知,读操作、写操作和擦除操作的耗时递增,相应的,可设读操作、写操作和擦除操作的优先级递减。

本发明在处理硬盘请求时,对执行的当前请求和后续请求进行类型检测和判断,从而保证优先级较高的请求类型能够优先执行,从而提升硬盘的存储性能以及性能指标服务质量。

在一种可行的实施例中,判断所述请求队列中后续请求与当前请求是否为相同类型请求包括:

在所述当前请求执行至检查点时,判断所述请求队列中后续请求与当前请求是否为相同类型请求。

即在到达检查点时执行请求类型的判断。该检查点指硬盘执行请求过程中的几个时间点,可由用户设置。在设置检查点过程中,应使检查点尽可能均匀分布,其可以按照常存储介质的特性进行测试和调配。为了避免挂起对当前请求的执行影响,仅在检查点进行请求挂起,避免正在执行的当前请求处理过程受损。

容易理解的是,在执行请求类型的判断前,可以先所述时间点;其中,所述检查点包括所述当前请求开始执行时至第一次挂起的时间间隔、恢复至下一次挂起的时间间隔、所述当前请求处理完成进入挂起状态的时间点。

具体的,在固件中限定写操作以及擦除操作开始时间到第一次挂起的时间间隔、恢复到下一次挂起的时间间隔、写擦完成进入挂起状态的时间,以保证被挂起的操作某些控制指令按照存储介质生成厂商提供的时序正常接收。在此基础上,固件均分前擦除或写时间来作为检查点,每份时间为检查时间Tcheck,每次检查时间Tcheck超时后检测当前是否有高优先级的读操作,如果有来读操作则挂起当前操作,处理读请求消息,然后恢复该操作。

为了尽可能地避免写操作或垃圾回收读操作挂起写擦后紧接着被读操作的情况,抽选原挂起机制中的检查点,再向后确认没有读操作请求后,查询队列中是否紧跟着一个写操作请求或垃圾回收读操作请求。抽取检查点要保证均匀分布,检查点数量的设置可以依照不同厂商NAND特性进行测试和调配。

因此不能通过write或垃圾回收 read请求主动中断当前写擦操作,只能在写擦操作到检查点时,通过去查询FIFO队列下一个请求的类型来决定是否挂起。

同时,在判断所述请求队列中后续请求与当前请求是否为相同类型请求之前,还可以先确定到达所述检查点后,向后检索请求的个数。换言之,即确定与当前请求所需要进行类型判断的后续请求的个数。通常,向后检索请求的个数不过太大,以避免当前请求持续处于挂起状态。一般向后检索请求的个数可以设为1或者2。若向后检索请求的个数为1,意味着只需针对当前请求和下一请求进行类型判断。若向后检索请求的个数为2,意味着需要针对当前请求和后两个请求进行类型判断,其只要后两个请求中存在不一样的请求类型,即需要执行优先级判定,并优先执行优先级较高的请求,以及挂起当前请求。当然,本领域技术人员还可以设置其他向后检索请求的个数,在此不一一举例限定。

在确定向后检索请求的个数后,即可以判断所述请求队列中满足所述向后检索请求个数的后续请求与当前请求逐一判断是否为相同类型请求。

本发明实施例在处理硬盘请求时,对执行的当前请求和后续请求进行类型检测和判断,从而保证优先级较高的请求类型能够优先执行,从而提升硬盘的存储性能以及性能指标服务质量。

在上述实施例的基础上,当写擦挂起时,如果连续有大量顺序读操作请求进入请求队列,不设置一定门限值的话,低优先级操作会一直挂起,导致饥饿现象发生。SSD固件一般将这一门限值设定为NAND厂商给的读写比例。但NAND厂商并未提供能作为挂起门限值的参照量。为了解决该技术缺陷,本实施例可以进一步设置门限值。具体的,若所述后续请求的执行优先级高于所述当前请求,将所述当前请求挂起,并执行所述后续请求之后,还可判断所述当前请求挂起时优先执行的请求数量是否超过门限值;若超过门限值,暂停挂起所述当前请求,并处理所述当前请求。

下文针对如何设置门限值进行说明:

一种可行的方式是,根据读操作和写操作的请求比例确定所述门限值。该门限值可以为厂商出厂时设置的初始门限值。在硬盘的实际应用中,用户可以进一步根据当前请求和后续请求的请求类型作为自身应用实际需要的门限值。

当然,门限值还可以动态调整,具体的,可以根据所述当前请求的挂起时长调整所述门限值,也可以根据所述当前请求的挂起次数调整所述门限值,还可以根据所述后续请求的请求类型调整所述门限值。

为了避免写擦请求饥饿,本实施例设置能挂起擦除操作的写操作请求数量最大值V,并引入动态调整算法。

若当前请求的请求类型为擦除操作,后续请求的请求类型为写操作,根据当前请求被挂起的次数确定所述门限值。

由读操作请求引发挂起门限值为

在某个擦除操作第n次被写操作触发挂起时,

条件可行的情况下,也可动态调整

在该写操作请求执行过程中,如果被读操作请求挂起,则

在该写操作请求执行过程中,如果被垃圾回收读操作挂起,则

其中ρ是根据不同厂商的NAND特性设置。门限值V的动态调整的目的是尽可能确保读操作请求触发擦除操作挂起,以避免在执行写操作请求过程中再一次被读操作请求挂起,增加不必要的挂起触发时间。

可见,若后续请求的执行优先级是否高于当前请求,将当前请求挂起包括:

若当前请求为擦除操作,后续请求为写操作,将当前请求挂起,并执行后续请求;

若当前请求为擦除操作或者写操作,后续请求为读操作,将当前请求挂起,并执行后续请求。

此外,由于触发垃圾回收读操作请求的频率较低,若所述后续请求包含垃圾回收读请求,可以将所述门限值设于小于出厂门限值的定值,以降低由于少量读操作请求造成大量的挂起时长。

本实施例通过设置门限值,能够有效避免当前操作被长时间挂起,避免写操作请求和擦除操作请求饥饿,并进一步实现了门限值的动态调整,降低了不必要的挂起触发时间,提高了硬盘对于请求的处理效率。

在上述实施例的基础上,若仅在检查点进行检测,可以在将所述当前请求挂起,并执行所述后续请求后,判断当前是否为最后一个挂起检查点;若是,结束请求检测。

此时对应的完整过程为

第一步、获取请求队列;

第二步、判断所述请求队列中后续请求与当前请求是否为相同类型请求;若否,进入第三步;

第三步、根据预设优先级顺序判断所述后续请求的执行优先级是否高于所述当前请求;

第四步、若是,将所述当前请求挂起,并执行所述后续请求。

第五步、判断当前是否为最后一个挂起检查点;若是,结束请求检测;若否,返回第二步。

具体的,获取请求队列后,开始处理请求。到达检查点时,判断请求队列中后续请求是否是读请求,若是,将当前请求挂起,并执行读操作请求。在读操作请求执行完毕后,恢复当前请求并执行。此时进行下一检查点。可见,其中一个检查点,可以设于每次请求即将要处理时,即准备执行当前请求时作为一个检查点。由于抵达下一检查点,同样进行后续请求的类型的判断,若为读操作请求,则按照上述步骤执行。若不为读操作请求,判断是否为写操作请求,若当前请求为擦除请求,则将当前请求挂起,并执行写操作请求,在写操作请求执行完毕后,到达下一检查点。并重新先后执行是否为读操作请求和写操作请求的判断。若判定后续请求不为读操作请求也不为写操作请求,则判断当前是否为最后一个挂起检查点,若是,则结束检测,否则返回第二步。

由上文可以看出,读操作请求、写操作请求和擦除操作请求的优先级依次降低。

还需要注意的是,读操作请求可以分为主机读操作请求和垃圾回收读操作请求。则在执行时,主机读操作请求的优先级要高于垃圾回收读操作请求,具体过程如下:

获取请求队列后,开始处理请求。到达检查点时,若当前请求为擦除操作请求,判断请求队列中后续请求是否是主机读操作请求,若是,将当前请求挂起,并执行主机读操作请求。在读操作请求执行完毕后,恢复当前请求并执行。此时进行下一检查点。由于抵达下一检查点,同样进行后续请求的类型的判断,若不为主机读操作请求,判断是否为垃圾回收读操作请求,若是,则将当前请求挂起,并执行垃圾回收读操作请求,在垃圾回收读操作请求执行完毕后,到达下一检查点。并重新先后执行是否为主机读操作请求和垃圾回收读操作请求的判断。若判定后续请求不为主机读操作请求也不为垃圾回收读操作请求,则判断当前是否为最后一个挂起检查点,若是,则结束检测,否则返回第二步。

由上文可以看出,主机读操作请求、垃圾回收读操作请求、写操作请求和擦除操作请求的优先级依次降低。

当然,针对硬盘中的其他操作,本领域技术人员也可以进一步设置相应的优先级,在此不一一举例限定。

本实施例中,硬盘面对大量混合读写请求下,不必等待时延更长的写擦操作完成,通过优先执行垃圾回收读操作,使得相应block更快被回收,等待该垃圾回收完成的写请求可以提前被唤醒,从而间接减小写操作最大时延,有效提升QoS指标。

可见,本发明一方面通过加入写操作请求触发擦除操作挂起策略来提升顺序写情境下QoS指标,另一方面通过加入垃圾回收读操作触发写操作请求以及擦除操作挂起策略来提升混合读写情景下QoS指标。

下文以一种具体的验证过程对本发明提供的一种硬盘的请求处理方法进行说明:

SSD盘面对大量顺序写请求下(没有主机读操作请求),不必等待时延更长的擦除操作完成,通过优先执行write操作,减小write最大时延,可以有效的提升QoS指标。

假设某颗TLC NAND有

NAND主控可以将一批操作消息请求快速分发到每一个LUN上,相较于操作耗时来看,可默认这些消息请求同时到达。从上图来看,位于当前FIFO队列的第6个write请求完成时,忽略接收消息完成的耗时,其时延为

则此时该次write操作延迟比

不考虑erase情况下,n次连续write操作平均时延

则加入m次erase操作后

目前SSD厂商衡量QoS指标的方法是,在测试规定的时间内使用2个9(99%)到5个9(99.999%)的百分比的命令中最大的时延(Max Latency),也就是最慢的那条命令的响应时间。选取4个9(99.99%)作为基准,假设一个SSD盘有

如此,需要写满

考虑测试场景,测试对象为新出厂SSD盘,整个LUN上的100%block为空,设NAND请求消息轮询和调度时间损失系数β,计算此时最大时延

考虑测试场景,整个LUN上概率为

则损耗时延差为

可以看出写请求未触发erase挂起的最大时延在QoS测试中,至少会导致毫秒级的增量。

但是引入挂起机制后,如果某次写之前已完成n-1次write操作和m-1次erase操作,则其延迟比计算公式将变为

其中,o(m)是

对比无erase操作则加入m次erase操作后

对比无挂起则加入m次erase操作后

又因为

同上测试场景,整个LUN上概率为

其中μ为边缘系数,0<μ<1,表示处于99.99%的write操作挂起erase前该erase执行时间的数学期望值,且与

则损耗时延差为

可以看出写操作请求触发擦除操作挂起的最大时延在QoS测试中,相比不设置挂起机制最大延迟比会减少数个毫秒级值,即最大延迟将减少2-10毫秒,会带来QoS置信级分布的左移,而且SSD盘负载越大,性能提升越明显。

下面对本发明实施例提供的硬盘的请求处理系统进行介绍,下文描述的硬盘的请求处理系统与上文描述的硬盘的请求处理方法可相互对应参照。

参见图2,图2为本发明实施例所提供的一种硬盘的请求处理系统结构示意图,本发明还提供一种硬盘的请求处理系统,包括:

队列获取模块,用于获取请求队列;

判断模块,用于判断所述请求队列中后续请求与当前请求是否为相同类型请求;

优先级判断模块,用于所述判断模块的判断结果为否时,根据预设优先级顺序判断所述后续请求的执行优先级是否高于所述当前请求;

请求挂起处理模块,用于若所述后续请求的执行优先级高于所述当前请求,将所述当前请求挂起,并执行所述后续请求。

基于上述实施例,作为优选的实施例,判断模块为用于在所述当前请求执行至检查点时,判断所述请求队列中后续请求与当前请求是否为相同类型请求的模块 。

基于上述实施例,作为优选的实施例,还包括:

时间点设置模块,用于在所述当前请求执行至检查点时,判断所述请求队列中后续请求与当前请求是否为相同类型请求之前,设定所述检查点;其中,所述检查点包括所述当前请求开始执行时至第一次挂起的时间间隔、恢复至下一次挂起的时间间隔、所述当前请求处理完成进入挂起状态的时间点。

基于上述实施例,作为优选的实施例,时间点设置模块为用于根据闪存芯片的存储特性设定所述检查点的模块。

基于上述实施例,作为优选的实施例,还包括:

检索个数确定模块,用于判断所述请求队列中后续请求与当前请求是否为相同类型请求之前,确定到达所述检查点后,向后检索请求的个数。

基于上述实施例,作为优选的实施例,判断模块为用于判断所述请求队列中满足所述向后检索请求个数的后续请求与当前请求逐一判断是否为相同类型请求的模块。

基于上述实施例,作为优选的实施例,还包括:

门限值检测模块,用于判断所述当前请求挂起时优先执行的请求数量是否超过门限值;若是,暂停挂起所述当前请求,并处理所述当前请求。

基于上述实施例,作为优选的实施例,还包括:

门限值设置模块,用于根据读操作和写操作的请求比例确定所述门限值。

基于上述实施例,作为优选的实施例,还包括:

门限值确定模块,用于根据所述当前请求和所述后续请求的请求类型确定所述门限值。

基于上述实施例,作为优选的实施例,还包括:

第一门限值调整模块,用于根据所述当前请求的挂起时长调整所述门限值。

基于上述实施例,作为优选的实施例,还包括:

第二门限值调整模块,用于根据所述当前请求的挂起次数调整所述门限值。

基于上述实施例,作为优选的实施例,还包括:

第三门限值调整模块,用于根据所述后续请求的请求类型调整所述门限值。

基于上述实施例,作为优选的实施例,第三门限值调整模块为用于若所述当前请求的请求类型为擦除操作,所述后续请求的请求类型为写操作,根据所述当前请求被挂起的次数确定所述门限值的模块。

基于上述实施例,作为优选的实施例,还包括:

优先级设置模块,用于设置读操作、写操作和擦除操作之间的预设优先级顺序;其中,所述读操作、所述写操作和所述擦除操作的优先级依次降低。

基于上述实施例,作为优选的实施例,请求挂起处理模块为用于执行如下步骤的模块:

若所述当前请求为擦除操作,所述后续请求为写操作,将所述当前请求挂起,并执行所述后续请求;

若所述当前请求为擦除操作或者写操作,所述后续请求为读操作,将所述当前请求挂起,并执行后续请求。

基于上述实施例,作为优选的实施例,还包括:

检查点判断模块,用于判断当前是否为最后一个挂起检查点;若是,结束请求检测。

本实施例中,硬盘面对大量混合读写请求下,不必等待时延更长的写擦操作完成,通过优先执行垃圾回收读操作,使得相应block更快被回收,等待该垃圾回收完成的写请求可以提前被唤醒,从而间接减小写操作最大时延,有效提升QoS指标。

可见,本发明一方面通过加入写操作请求触发擦除操作挂起策略来提升顺序写情境下QoS指标,另一方面通过加入垃圾回收读操作触发写操作请求以及擦除操作挂起策略来提升混合读写情景下QoS指标。

本发明还提供了一种计算机可读存储介质,其上存有计算机程序,该计算机程序被执行时可以实现上述实施例所提供的步骤。该存储介质可以包括:U盘、移动硬盘、只读存储器(Read-Only Memory ,ROM)、随机存取存储器(Random Access Memory ,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

本发明还提供了一种电子设备,可以包括存储器和处理器,所述存储器中存有计算机程序,所述处理器调用所述存储器中的计算机程序时,可以实现上述实施例所提供的步骤。当然所述电子设备还可以包括各种网络接口,电源等组件。

本发明还提供了一种电子设备,参见图3,本发明实施例提供的一种电子设备的结构图,如图3所示,可以包括处理器1410和存储器1420。

其中,处理器1410可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器1410可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器1410也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1410可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器1410还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。

存储器1420可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器1420还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器1420至少用于存储以下计算机程序1421,其中,该计算机程序被处理器1410加载并执行之后,能够实现前述任一实施例公开的方法的相关步骤。另外,存储器1420所存储的资源还可以包括操作系统1422和数据1423等,存储方式可以是短暂存储或者永久存储。其中,操作系统1422可以包括Windows、Linux、Android等。

在一些实施例中,电子设备还可包括有显示屏1430、输入输出接口1440、通信接口1450、传感器1460、电源1470以及通信总线1480。

当然,图3所示的电子设备的结构并不构成对本发明实施例中电子设备的限定,在实际应用中电子设备可以包括比图3所示的更多或更少的部件,或者组合某些部件。

说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例提供的系统而言,由于其与实施例提供的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

技术分类

06120115759436