本发明涉及存储系统技术领域,特别是涉及一种内存分配方法、装置和计算机可读存储介质。
背景技术:
动态随机存取存储器(dynamicrandomaccessmemory,dram)是一种较为常见的系统内存。由于dram内存是较为昂贵的部件,因此存储系统中通常只配置较少数量的dram内存以降低成本。
存储系统中存在不同需求的任务,这些任务均共享系统中的dram内存。在实际应用中,会存在一些任务长时间占用一定容量的dram内存,导致io栈上的快速任务无法使用全部的dram内存,任务处理效率较低,从而影响系统的性能指标。
可见,如何提升任务的处理效率,是本领域技术人员需要解决的问题。
技术实现要素:
本发明实施例的目的是提供一种内存分配方法、装置和计算机可读存储介质,可以提升任务的处理效率。
为解决上述技术问题,本发明实施例提供一种内存分配方法,包括:
获取存储任务;
按照预先设定的任务类型与内存模块的对应关系,确定出与所述存储任务相匹配的目标内存模块;其中,所述对应关系依据于各内存模块的处理性能以及存储任务的优先等级建立;
根据所述存储任务所占用的内存数量,从所述目标内存模块中为所述存储任务分配相应容量的内存空间。
可选地,所述内存模块包括dram内存和dcpmm内存;所述任务类型包括快任务和慢任务;所述快任务对应dram内存;所述慢任务对应dcpmm内存;
其中,所述快任务包括io协议栈的存储任务;所述慢任务包括事件处理任务、节点间通信任务和慢速设备通信任务。
可选地,在所述根据所述存储任务所对应的数据容量,从所述目标内存模块中为所述存储任务分配相应容量的内存空间之后还包括:
当所述存储任务为快任务时,判断所述存储任务是否在预设时间内完成;
若否,则从所述dcpmm内存的剩余内存空间中为所述存储任务分配相应容量的缓存空间;
将所述存储任务对应的数据从所述dram内存拷贝到所述缓存空间;并将所述存储任务的内存指针指向所述缓存空间。
可选地,在所述获取存储任务之前还包括:
采样交织方式将所述dcpmm内存分布到多个通道。
可选地,在所述根据所述存储任务所占用的内存数量,从所述目标内存模块中为所述存储任务分配相应容量的内存空间之后还包括:
检测各内存模块的剩余内存空间;
当存在剩余内存空间的容量值小于预设阈值的待回收内存模块时,则删除所述待回收内存模块中数据存储时间大于预设时间值的数据。
本发明实施例还提供了一种内存分配装置,包括获取单元、匹配单元和分配单元;
所述获取单元,用于获取存储任务;
所述匹配单元,用于按照预先设定的任务类型与内存模块的对应关系,确定出与所述存储任务相匹配的目标内存模块;其中,所述对应关系依据于各内存模块的处理性能以及存储任务的优先等级建立;
所述分配单元,用于根据所述存储任务所占用的内存数量,从所述目标内存模块中为所述存储任务分配相应容量的内存空间。
可选地,所述内存模块包括dram内存和dcpmm内存;所述任务类型包括快任务和慢任务;所述快任务对应dram内存;所述慢任务对应dcpmm内存;
其中,所述快任务包括io协议栈的存储任务;所述慢任务包括事件处理任务、节点间通信任务和慢速设备通信任务。
可选地,还包括判断单元、拷贝单元和调整单元;
所述判断单元,用于当所述存储任务为快任务时,判断所述存储任务是否在预设时间内完成;若否,则触发所述分配单元;
所述分配单元还用于从所述dcpmm内存的剩余内存空间中为所述存储任务分配相应容量的缓存空间;
所述拷贝单元,用于将所述存储任务对应的数据从所述dram内存拷贝到所述缓存空间;
所述调整单元,用于将所述存储任务的内存指针指向所述缓存空间。
可选地,还包括分布单元;
所述分布单元,用于采样交织方式将所述dcpmm内存分布到多个通道。
可选地,还包括检测单元和删除单元;
所述检测单元,用于检测各内存模块的剩余内存空间;
所述删除单元,用于当存在剩余内存空间的容量值小于预设阈值的待回收内存模块时,则删除所述待回收内存模块中数据存储时间大于预设时间值的数据。
本发明实施例还提供了一种内存分配装置,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序以实现如上述任意一项所述内存分配方法的步骤。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任意一项所述内存分配方法的步骤。
由上述技术方案可以看出,不同内存模块的处理性能有所差异,不同类型的存储任务其优先等级不同。存储任务的优先等级反映了存储任务的紧急程度,存储任务的优先等级越高,说明存储任务越紧急,需要对该存储任务进行快速处理。根据内存模块的处理性能以及不同类型的存储任务的优先等级,可以预先建立任务类型与内存模块的对应关系。当获取到存储任务时,可以按照预先设定的任务类型与内存模块的对应关系,确定出与存储任务相匹配的目标内存模块;根据存储任务所占用的内存数量,从目标内存模块中为存储任务分配相应容量的内存空间,以保证存储任务的顺利执行。按照内存模块的处理性能,针对于不同类型的存储任务按照其优先等级为其分配相适应的内存模块,有效的保证了存储任务的快速执行,提升了任务的处理效率,提升了存储系统的整体处理性能。并且通过预先建立任务类型与内存模块的对应关系,后续获取到存储任务,直接依赖于该对应关系,便可以为该存储任务分配相适应的内存模块,无需每次对各存储模块的存储性能进行分析,进一步提升了存储任务的处理效率。
附图说明
为了更清楚地说明本发明实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种内存分配方法的流程图;
图2为本发明实施例提供的一种内存分配装置的结构示意图;
图3为本发明实施例提供的一种内存分配装置的硬件结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本发明保护范围。
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。
接下来,详细介绍本发明实施例所提供的一种内存分配方法。图1为本发明实施例提供的一种内存分配方法的流程图,该方法包括:
s101:获取存储任务。
不同内存模块的处理性能有所差异,不同类型的存储任务其优先等级不同。在本发明实施例中,可以根据内存模块的处理性能以及不同类型的存储任务的优先等级,预先建立任务类型与内存模块的对应关系。
存储系统是非常复杂的软件系统。一个企业级存储系统的代码量通常在几百万行级别。为了满足存储系统各个部分对内存的复杂需求模式,存储系统通常采用不同于linux内核的内存管理机制,例如先于操作系统划出存储专用内存区域,并使用专有的内存管理软件来管理该部分内存。
s102:按照预先设定的任务类型与内存模块的对应关系,确定出与存储任务相匹配的目标内存模块。
考虑到数据中心级持久性内存模块(dcpersistentmemorymodule,dcpmm)在devicedax模式下可以实现数据的直接存取,无需依赖于dram内存,devicedax模式下的dcpmm器件可以看作是dcpmm内存。
在本发明实施例中,为了增加dcpmm内存的访问带宽,可以采样交织方式将dcpmm内存分布到多个通道。
在具体实现中,内存模块可以采用dram内存和dcpmm内存。为了便于内存管理软件管理内存模块,可以将用于处理存储任务的dram内存作为节点0,将所有dcpmm内存作为节点1。
根据存储任务的优先等级,可以将存储任务划分为快任务和慢任务。
存储任务的优先等级反映了存储任务的紧急程度,存储任务的优先等级越高,说明存储任务越紧急,需要对该存储任务进行快速处理。相应的,可以将快任务对应dram内存;慢任务对应dcpmm内存。
在具体实现中,可以将io协议栈的存储任务划分为快任务。将事件处理任务、节点间通信任务和慢速设备通信任务划分为慢任务。
s103:根据存储任务所占用的内存数量,从目标内存模块中为存储任务分配相应容量的内存空间。
当获取的存储任务为快任务时,则可以根据该存储任务所占用的内存数量,从dram内存中为该存储任务分配相应容量的内存空间。当获取的存储任务为慢任务时,则可以根据该存储任务所占用的内存数量,从dcpmm内存中为该存储任务分配相应容量的内存空间。
由上述技术方案可以看出,不同内存模块的处理性能有所差异,不同类型的存储任务其优先等级不同。存储任务的优先等级反映了存储任务的紧急程度,存储任务的优先等级越高,说明存储任务越紧急,需要对该存储任务进行快速处理。根据内存模块的处理性能以及不同类型的存储任务的优先等级,可以预先建立任务类型与内存模块的对应关系。当获取到存储任务时,可以按照预先设定的任务类型与内存模块的对应关系,确定出与存储任务相匹配的目标内存模块;根据存储任务所占用的内存数量,从目标内存模块中为存储任务分配相应容量的内存空间,以保证存储任务的顺利执行。按照内存模块的处理性能,针对于不同类型的存储任务按照其优先等级为其分配相适应的内存模块,有效的保证了存储任务的快速执行,提升了任务的处理效率,提升了存储系统的整体处理性能。并且通过预先建立任务类型与内存模块的对应关系,后续获取到存储任务,直接依赖于该对应关系,便可以为该存储任务分配相适应的内存模块,无需每次对各存储模块的存储性能进行分析,进一步提升了存储任务的处理效率。
dram内存的数据读写速率较快,因此基于dram内存执行存储任务时,可以快速完成该存储任务。但是在实际应用中,可能由于通信链路带宽被占用,交易对手处于繁忙状态,控制器节点中的一个节点宕机等原因,导致分配了dram内存的快任务无法快速完成的情况。针对于该种情况,可以将快任务转移到dcpmm内存中处理,从而保证存储任务的顺利执行。
在具体实现中,当存储任务为快任务时,可以判断存储任务是否在预设时间内完成。
当存储任务无法在预设时间内完成时,则说明分配至dram内存上的存储任务出现了阻塞,此时可以从dcpmm内存的剩余内存空间中为存储任务分配相应容量的缓存空间;将存储任务对应的数据从dram内存拷贝到缓存空间;并将存储任务的内存指针指向缓存空间。
在本发明实施例中,当快任务遇到阻塞时,可以将其切换到dcpmm内存中,从而保证存储任务的有序执行。并且通过任务的转移,提高了dram内存的周转次数,从而使得dram内存可以快速的恢复正常。
当内存模块的剩余内存空间较小时,往往无法完成新接收的存储任务,因此,在本发明实施例中,可以在根据存储任务所占用的内存数量,从目标内存模块中为存储任务分配相应容量的内存空间之后,检测各内存模块的剩余内存空间;当存在剩余内存空间的容量值小于预设阈值的待回收内存模块时,则删除待回收内存模块中数据存储时间大于预设时间值的数据。
其中,预设阈值的取值可以根据实际需求设定,在此不做限定。
为了便于区分,在本发明实施例中,可以将剩余内存空间的容量值小于预设阈值的内存模块称为待回收内存模块。
当存在待回收内存模块时,则可以删除待回收内存模块中数据存储时间大于预设时间值的数据,从而使得内存模块可以有足够的内存空间执行新的存储任务,保障了内存模块中存储空间的重复利用,从而提升内存模块的利用率。
图2为本发明实施例提供的一种内存分配装置的结构示意图,包括获取单元21、匹配单元22和分配单元23;
获取单元21,用于获取存储任务;
匹配单元22,用于按照预先设定的任务类型与内存模块的对应关系,确定出与存储任务相匹配的目标内存模块;其中,对应关系依据于各内存模块的处理性能以及存储任务的优先等级建立;
分配单元23,用于根据存储任务所占用的内存数量,从目标内存模块中为存储任务分配相应容量的内存空间。
可选地,内存模块包括dram内存和dcpmm内存;任务类型包括快任务和慢任务;快任务对应dram内存;慢任务对应dcpmm内存;
其中,快任务包括io协议栈的存储任务;慢任务包括事件处理任务、节点间通信任务和慢速设备通信任务。
可选地,还包括判断单元、拷贝单元和调整单元;
判断单元,用于当存储任务为快任务时,判断存储任务是否在预设时间内完成;若否,则触发分配单元;
分配单元还用于从dcpmm内存的剩余内存空间中为存储任务分配相应容量的缓存空间;
拷贝单元,用于将存储任务对应的数据从dram内存拷贝到缓存空间;
调整单元,用于将存储任务的内存指针指向缓存空间。
可选地,还包括分布单元;
分布单元,用于采样交织方式将dcpmm内存分布到多个通道。
可选地,还包括检测单元和删除单元;
检测单元,用于检测各内存模块的剩余内存空间;
删除单元,用于当存在剩余内存空间的容量值小于预设阈值的待回收内存模块时,则删除待回收内存模块中数据存储时间大于预设时间值的数据。
图2所对应实施例中特征的说明可以参见图1所对应实施例的相关说明,这里不再一一赘述。
由上述技术方案可以看出,不同内存模块的处理性能有所差异,不同类型的存储任务其优先等级不同。存储任务的优先等级反映了存储任务的紧急程度,存储任务的优先等级越高,说明存储任务越紧急,需要对该存储任务进行快速处理。根据内存模块的处理性能以及不同类型的存储任务的优先等级,可以预先建立任务类型与内存模块的对应关系。当获取到存储任务时,可以按照预先设定的任务类型与内存模块的对应关系,确定出与存储任务相匹配的目标内存模块;根据存储任务所占用的内存数量,从目标内存模块中为存储任务分配相应容量的内存空间,以保证存储任务的顺利执行。按照内存模块的处理性能,针对于不同类型的存储任务按照其优先等级为其分配相适应的内存模块,有效的保证了存储任务的快速执行,提升了任务的处理效率,提升了存储系统的整体处理性能。并且通过预先建立任务类型与内存模块的对应关系,后续获取到存储任务,直接依赖于该对应关系,便可以为该存储任务分配相适应的内存模块,无需每次对各存储模块的存储性能进行分析,进一步提升了存储任务的处理效率。
图3为本发明实施例提供的一种内存分配装置30的硬件结构示意图,包括:
存储器31,用于存储计算机程序;
处理器32,用于执行所述计算机程序以实现如上述任意实施例所述的内存分配方法的步骤。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任意实施例所述的内存分配方法的步骤。
以上对本发明实施例所提供的一种内存分配方法、装置和计算机可读存储介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。