CN117519988A - 一种基于raid的内存池动态调配方法、装置 - Google Patents
一种基于raid的内存池动态调配方法、装置 Download PDFInfo
- Publication number
- CN117519988A CN117519988A CN202311827093.0A CN202311827093A CN117519988A CN 117519988 A CN117519988 A CN 117519988A CN 202311827093 A CN202311827093 A CN 202311827093A CN 117519988 A CN117519988 A CN 117519988A
- Authority
- CN
- China
- Prior art keywords
- memory
- value
- resource
- pool
- allocation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 230000015654 memory Effects 0.000 title claims abstract description 651
- 238000000034 method Methods 0.000 title claims abstract description 49
- 230000004044 response Effects 0.000 claims description 19
- 238000013468 resource allocation Methods 0.000 claims description 5
- 230000009467 reduction Effects 0.000 claims description 3
- 230000008569 process Effects 0.000 abstract description 14
- 238000005457 optimization Methods 0.000 abstract description 2
- 238000007726 management method Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000013500 data storage Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000013467 fragmentation Methods 0.000 description 1
- 238000006062 fragmentation reaction Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5011—Pool
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及存储设备内存优化技术领域,公开了一种基于RAID的内存池动态调配方法、装置,该方法通过获取第一内存池的第一空闲值,判断是否需要调入内存资源,并通过获取树状结构中第二内存池的第二空闲值与内存使用情况,确定第一可调出值,从而向第一内存池调入内存资源。这一过程中,由于第二内存池为树状结构中的任一节点,因此通过确定第一空闲值、内存使用情况、第二空闲值、第一可调出值,可以确定整体内存池中各节点的资源使用及调配情况,并在第一内存池需要调入内存资源时,通过确定的第一可调出值,利用调配规则,向第一内存池调入内存资源,从而避免内存池中闲置与等待分配共存的情况产生,减少向系统申请资源的频率,从而提升整体性能。
Description
技术领域
本发明涉及存储设备内存优化技术领域,具体涉及一种基于RAID的内存池动态调配方法、装置。
背景技术
在云计算数据中心中,数据存储的性能是用户关心的核心问题。而存储系统的内存使用能够很大程度上影响存储系统的性能。操作系统使用一种叫做堆的线性区来满足进程的动态内存申请。并提供了brk()、mmap()等系统调用来进行堆的操作。同样编程语言提供了封装了系统调用的函数来提供内存动态申请。如c语言使用malloc/free来动态分配释放内存,c++使用new/delete来动态分配释放内存。
由于系统的内存分配释放接口非常耗时低效,并且长时间运行后容易造成内存碎片问题。因此应用软件通常使用内存池技术来优化内存的使用管理,内存池可以通过内存分配系统调用预先一次性申请适当大小的内存,此后程序的内存分配和释放直接使用内存池来进行。这大大提高了内存请求的效率。但是内存池的内存资源单位通常是固定的或者按照某种规律分布。不同的内存请求通常需要使用不同的内存池。单一的内存池无法满足复杂软件尤其是存储系统这样的大规模软件的需求。系统中存在各种各样的内存池,这造成了内存池的管理问题。有的内存池资源比规划的多,有的内存池资源不够用。有的内存池只被某个模块使用,有的内存池需要被多个模块使用。在大量内存池使用时,内存资源如何分配,内存资源如何协调,内存池如何管理,那个内存池会成为软件的瓶颈。这些问题成为存储系统的核心问题。
在相关技术中,为解决内存池的管理问题,通常在软件启动时,根据软件使用的内存量申请一大块内存建立根内存池,然后建立根据软件的各个模块建立多个模块内存池,并将根内存池的内存分配给各模块内存池,然后模块再根据各个具体的应用场景再建立具体的内存池,并将模块内存池的内存分配给该内存池,从而形成如图1所示的树状结构内存池。但是,由于具体的场景不同各个模块的各个内存池的内存需求量并不相同,这就导致有些内存池内存资源非常紧张,常常因为内存耗尽而等待内存分配导致性能严重下降,而有些内存池则内存过于空闲。对于内存耗尽的内存池,需要频繁的向系统申请内存资源,从而由于频繁的访问造成系统资源竞争,导致性能下降严重。
发明内容
有鉴于此,本发明提供了一种基于RAID的内存池动态调配方法、装置,以解决由于内存池管理混乱,导致内存资源闲置与等待分配共存的技术问题。
第一方面,本发明提供了一种基于RAID的内存池动态调配方法,应用于每个内存池,多个内存池之间存在树状结构,方法包括:响应于内存使用请求,获取与内存使用请求对应的第一内存池的第一空闲值;基于第一空闲值,判断是否需要调入内存资源;在需要调入内存资源时,获取树状结构中第二内存池的内存使用情况与第二空闲值;基于内存使用情况,确定第二内存池的内存预留值;基于内存预留值与第二空闲值,确定第二内存池的第一可调出值;基于第一可调出值,通过调配规则,向第一内存池调入内存资源。
结合第一方面,在第一方面的一种可能的实现方式中,基于第一空闲值,判断是否需要调入内存资源,包括:基于第一空闲值与内存使用请求的申请资源值,判断是否需要调入内存资源;在第一空闲值不能满足申请资源值时,第一内存需要调入内存资源,并以第一资源数量作为请求调配资源值。
结合第一方面,在第一方面的一种可能的实现方式中,基于第一空闲值,判断是否需要调入内存资源,包括:基于第一空闲值与内存使用请求的申请资源值,判断是否需要调入内存资源;在第一空闲值满足申请资源值时,计算第一空闲值与申请资源值的差值;在差值不能满足预设内存比例时,第一内存需要调入内存资源,并以第二资源数量作为请求调配资源值。
结合第一方面,在第一方面的一种可能的实现方式中,基于第一空闲值,判断是否需要调入内存资源,包括:基于第一空闲值与内存使用请求的申请资源值,判断是否需要调入内存资源;在第一空闲值满足申请资源值时,计算第一空闲值与申请资源值的差值;在差值满足第一预设内存比例时,第一内存不需要调入内存资源。
结合第一方面,在第一方面的一种可能的实现方式中,在需要调入内存资源时,获取树状结构中第二内存池的内存使用情况与第二空闲值,包括:获取第二内存池的第二空闲值;基于第二空闲值,确定第二内存池的内存调配状态;在调配状态为可调配状态时,获取树状结构中第二内存池的内存使用情况。
结合第一方面,在第一方面的一种可能的实现方式中,基于第二空闲值,确定第二内存池的内存调配状态,包括计算第二空闲值与第二内存池的池总资源值的比例值;基于比例值与第二预设内存比例的对应关系,确定第二内存池的内存调配状态,其中,内存调配状态包括:可调配状态、需调入状态与无需调配状态。
结合第一方面,在第一方面的一种可能的实现方式中,在调配状态为可调配状态时,获取树状结构中第二内存池的内存使用情况,包括:在调配状态为可调配状态时,获取第二内存池在预设时间内的内存使用值;基于内存使用值,确定第二内存池的内存使用最大值与历史内存使用最大值;比较内存使用最大值与历史内存使用最大值,确定第二内存池的内存使用情况,其中,内存使用情况包括:内存使用增长状态与内存使用降低状态。
结合第一方面,在第一方面的一种可能的实现方式中,基于内存使用情况,确定第二内存池的内存预留值,包括:在内存使用情况为内存使用增长状态时,基于内存使用最大值与历史内存使用最大值的差值与预留系数,确定第二内存池的内存预留值; 在内存使用情况为内存使用降低状态时,清空第二内存池的内存预留值。
结合第一方面,在第一方面的一种可能的实现方式中,基于内存预留值与第二空闲值,确定第二内存池的第一可调出值,包括:基于第二空闲值与内存预留值的差值,确定第二内存池的第一可调出值。
结合第一方面,在第一方面的一种可能的实现方式中,基于第一可调出值,通过调配规则,向第一内存池调入内存资源,包括:在第二内存池为第一内存池的同级节点,且第一可调出值满足第一内存的请求调配资源值时,以第一可调出值响应请求调配资源值;在第一可调出值不满足请求调配资源值时,计算树状结构中第一内存池的同级节点的可调出值的总和,确定第二可调出值;基于第二可调出值响应请求调配资源值。
结合第一方面,在第一方面的一种可能的实现方式中,基于可调出值,通过调配规则,向第一内存池调入内存资源,包括:在第二可调出值不满足请求调配资源值时,获取树状结构中第一内存池的父节点的第三可调出值;基于第三可调出值响应请求调配资源值;在第三可调出值不满足请求调配资源值时,计算父节点的同级节点的可调出值的总和,确定第四可调出值;基于第四可调出值响应请求调配资源值。
结合第一方面,在第一方面的一种可能的实现方式中,在第四可调出值不满足请求调配资源值时,获取树状结构中的根节点的第五可调出值;基于第五可调出值响应请求调配资源值;在第五可调出值不满足请求调配资源值时,由根节点申请额外资源值;基于额外资源值响应请求调配资源值。
第二方面,本发明提供了一种基于RAID的内存池动态调配装置,应用于每个内存池,多个内存池之间存在树状结构,装置包括:第一获取模块,用于响应于内存使用请求,获取与内存使用请求对应的第一内存池的第一空闲值;判断模块,用于基于第一空闲值,判断是否需要调入内存资源;第二获取模块,用于在需要调入内存资源时,获取树状结构中第二内存池的内存使用情况与第二空闲值;预留值模块,用于基于内存使用情况,确定第二内存池的内存预留值;可调出值模块,用于基于内存预留值与第二空闲值,确定第二内存池的可调出值;资源调入模块,用于基于可调出值,通过调配规则,向第一内存池调入内存资源。
第三方面,本发明提供了一种计算机设备,包括:存储器和处理器,存储器和处理器之间互相通信连接,存储器中存储有计算机指令,处理器通过执行计算机指令,从而执行上述第一方面或其对应的任一实施方式的基于RAID的内存池动态调配方法。
第四方面,本发明提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机指令,计算机指令用于使计算机执行上述第一方面或其对应的任一实施方式的基于RAID的内存池动态调配方法。
本发明技术方案,具有如下优点:
本发明提供的一种基于RAID的内存池动态调配方法、装置,该方法通过获取第一内存池的第一空闲值,判断是否需要调入内存资源,并通过获取树状结构中第二内存池的第二空闲值与内存使用情况,确定第二内存池的第一可调出值,从而通过调配规则,向第一内存池调入内存资源。这一过程中,由于第二内存池为树状结构中的任一节点,因此通过确定第一空闲值、内存使用情况、第二空闲值、第一可调出值,可以确定整体内存池中各节点的资源使用及调配情况,并在第一内存池需要调入内存资源时,通过确定的第一可调出值,利用调配规则,向第一内存池调入内存资源,从而避免内存池中闲置与等待分配共存的情况产生,减少向系统申请资源的频率,从而提升整体性能。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的树状结构内存池示意图;
图2是根据本发明实施例提供的内存池分配系统示意图;
图3是根据本发明实施例提供的树状内存调节模块示意图;
图4是根据本发明实施例提供的基于RAID的内存池动态调配方法的流程示意图;
图5是根据本发明实施例提供的基于RAID的内存池动态调配装置的结构框图;
图6是本发明实施例提供的计算机设备的硬件结构示意图;
图7是本发明实施例提供的计算机可读存储介质的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本实施例提供了一种内存池分配系统,如图2所示,内存池分配系统10包括:根内存池101、子模块0内存池1021、子模块N内存池1022、数据页内存池1031、IO管理对象池1032、条带管理对象内存池1033,以及与各内存池相对应的根内存调节模块201,子模块内存调节模块2021、子模块内存调节模块2022、内存池调节模块2031、内存池调节模块2032、内存池调节模块2033。每个内存池调节模块运行时,执行本发明实施例提供的基于RAID的内存池动态调配方法,应用于树状结构中各对应内存池,其中,根内存池101是所有节点的根节点,为内存池分配系统10根据申请的内存建立的根节点。子模块0内存池1021、子模块N内存池1022属于同级节点,为根据软件各模块建立的多个模块内存池,子模块0内存池1021为数据页内存池1031、IO管理对象池1032、条带管理对象内存池1033的父节点。数据页内存池1031、IO管理对象池1032、条带管理对象内存池1033属于同级节点,为根据各个应用场景建立的具体内存池。可以看出,各内存调节模块具有相应的树状结构,如图3所示。
根据本发明实施例,提供了一种基于RAID的内存池动态调配方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本实施例提供了一种基于RAID的内存池动态调配方法,如图4所示,方法包括如下步骤:
S301、响应于内存使用请求,获取与内存使用请求对应的第一内存池的第一空闲值。
具体地,第一内存池是指与内存使用请求对应的内存池。第一空闲值是指第一内存池当前空闲内存数量。
S302、基于第一空闲值,判断是否需要调入内存资源。
具体地,基于第一空闲值,判断是否需要调入内存资源包括需要调入内存资源与不需要调入内存资源。基于第一空闲值,判断是否需要调入内存资源是指通过第一空闲值判断当前空闲内存数量是否可以满足内存使用请求的申请资源值,以及在空闲内存数量可以满足申请资源值后,剩余的空闲内存数量是否满足预设内存比例,在均可以满足的情况下则不需要调入内存资源,相反地,则需要调入内存资源。
S303、在需要调入内存资源时,获取树状结构中第二内存池的内存使用情况与第二空闲值。
具体地,第二内存池是指树状结构中任一内存池,第二内存池可以是第一内存池的同级节点、父节点或根节点,因此,第二内存池的各参数获取与计算方式,对于树状结构中的各节点均适用。第二空闲值是指第二内存池当前空闲内存数量。
具体地,在需要调入内存资源时,获取树状结构中第二内存池的内存使用情况与第二空闲值是指基于第二空闲值,确定第二内存池的内存调配状态与内存使用情况。
S304、基于内存使用情况,确定第二内存池的内存预留值。
具体地,内存预留值是指预设时间内第二内存值需要使用的内存值。
S305、基于内存预留值与第二空闲值,确定第二内存池的第一可调出值。
具体地,可调出值是指对应内存池可以向其他节点提供的内存值,第一可调出值为第二内存池的对应可调出值。
S306、基于第一可调出值,通过调配规则,向第一内存池调入内存资源。
具体地,基于第一可调出值,通过调配规则,向第一内存池调入内存资源是指通过树状结构中各节点的可调出值与调配规则,向第一内存池调入响应内存资源。
本发明提供的一种基于RAID的内存池动态调配方法,通过获取第一内存池的第一空闲值,判断是否需要调入内存资源,并通过获取树状结构中第二内存池的第二空闲值与内存使用情况,确定第二内存池的第一可调出值,从而通过调配规则,向第一内存池调入内存资源。这一过程中,由于第二内存池为树状结构中的任一节点,因此通过确定第一空闲值、内存使用情况、第二空闲值、第一可调出值,可以确定整体内存池中各节点的资源使用及调配情况,并在第一内存池需要调入内存资源时,通过确定的第一可调出值,利用调配规则,向第一内存池调入内存资源,从而避免内存池中闲置与等待分配共存的情况产生,减少向系统申请资源的频率,从而提升整体性能。
在一种可选实施方式中,基于第一空闲值,判断是否需要调入内存资源,包括:
基于第一空闲值与内存使用请求的申请资源值,判断是否需要调入内存资源。
具体地,基于第一空闲值与内存使用请求的申请资源值,判断是否需要调入内存资源是指比较第一空闲值与申请资源值,在第一空闲值小于申请资源值时,认为第一空闲值不能满足申请资源值。
在第一空闲值不能满足申请资源值时,认为第一内存需要调入内存资源,并以第一资源数量作为请求调配资源值。
具体地,第一资源数量可以根据实际工况进行设定,本实施例对此不做具体限定,通常选取第一内存池的初始总内存值的20%作为第一资源数量。
在一种可选实施方式中,基于第一空闲值,判断是否需要调入内存资源,包括:
基于第一空闲值与内存使用请求的申请资源值,判断是否需要调入内存资源。
具体地,基于第一空闲值与内存使用请求的申请资源值,判断是否需要调入内存资源是指比较第一空闲值与申请资源值,在第一空闲值大于等于申请资源值时,认为第一空闲值满足申请资源值。
在第一空闲值满足申请资源值时,计算第一空闲值与申请资源值的差值。
在差值不能满足预设内存比例时,认为第一内存需要调入内存资源,并以第二资源数量作为请求调配资源值。
具体地,预设内存比例、第二资源数量可以根据实际工况进行设定,本实施例对此不做具体限定,通常选取第一内存池的初始总内存值的10%作为第二资源数量,选取5%作为预设内存比例。
在一种可选实施方式中,基于第一空闲值,判断是否需要调入内存资源,包括:
基于第一空闲值与内存使用请求的申请资源值,判断是否需要调入内存资源。
在第一空闲值满足申请资源值时,计算第一空闲值与申请资源值的差值。
在差值满足第一预设内存比例时,认为第一内存不需要调入内存资源。相关内容参见上述实施例,在此不再进行赘述。
通过实施本实例,通过确定第一内存池的第一空闲值以及内存使用请求的申请资源值,从而利用第一空闲值与申请资源值确定是否需要向第一内存池调入内存资源,使得在第一内存池需要调入内存资源时,以后续的调配方式进行资源调配,从而为避免内存池中闲置与等待分配共存的情况产生,减少向系统申请资源的频率提供数据基础。
在一种可选实施方式中,在需要调入内存资源时,获取树状结构中第二内存池的内存使用情况与第二空闲值,包括:
(1)获取第二内存池的第二空闲值。
具体地,第二空闲值是指第二内存池当前空闲内存数量。
(2)基于第二空闲值,确定第二内存池的内存调配状态。
在一种可选实施方式中,基于第二空闲值,确定第二内存池的内存调配状态,包括:
计算第二空闲值与第二内存池的池总资源值的比例值。
基于比例值与第二预设内存比例的对应关系,确定第二内存池的内存调配状态,其中,内存调配状态包括:可调配状态、需调入状态与无需调配状态。
具体地,基于比例值与第二预设内存比例的对应关系,确定第二内存池的内存调配状态是指在比例值属于第一区间时,认为第二内存池的内存调配状态为需调入状态,记作MEM_IN;在比例值属于第二区间时,认为第二内存池的内存调配状态为无需调配状态,记作MEM_NONE;在比例值属于第二区间时,认为第二内存池的内存调配状态为可调配状态,记作MEM_OUT。
具体地,第一区间、第二区间、第三区间可根据实际工况进行设定,本实施例对此不做具体限定,通常选取小于10%作为第一区间,10%至60%作为第二区间,大于60%作为第三区间。
(3)在调配状态为可调配状态时,获取树状结构中第二内存池的内存使用情况。
在一种可选实施方式中,在调配状态为可调配状态时,获取树状结构中第二内存池的内存使用情况,包括:
在调配状态为可调配状态时,获取第二内存池在预设时间内的内存使用值。
具体地,内存使用值是指第二内存池在预设时间内的以预设采集频率记录的内存使用最大值。以预设采集频率为1秒,预设时间为3秒为例,假设第一秒内该内存池最多被请求使用了20个内存页,第二秒内该内存池最多被请求使用了40个内存页,第三秒内该内存池最多被请求使用了30个内存页,那么这连续三次已使用最大值就是20、40、30,20、40、30对应为当前时刻第二内存池的内存使用值。
基于内存使用值,确定第二内存池的内存使用最大值与历史内存使用最大值。
具体地,内存使用最大值是指当前时刻内存使用值中的最大值,记作Cur_Max。历史内存使用最大值是指前一时刻内存使用值中的最大值,记作His_Max。
比较内存使用最大值与历史内存使用最大值,确定第二内存池的内存使用情况,其中,内存使用情况包括:内存使用增长状态与内存使用降低状态。
具体地,比较内存使用最大值与历史内存使用最大值,确定第二内存池的内存使用情况是指在Cur_Max大于等于His_Max时,认为第二内存池的内存使用情况为内存使用增长状态,记作MEM_INC,相反的,认为第二内存池的内存使用情况为内存使用降低状态,记作MEM_DEC。
在一种可选实施方式中,基于内存使用情况,确定第二内存池的内存预留值,包括:
在内存使用情况为内存使用增长状态时,基于内存使用最大值与历史内存使用最大值的差值与预留系数,确定第二内存池的内存预留值。
具体地,通过公式(1)表示内存预留值:
内存预留值=(Cur_Max- His_Max)*预留系数(1)
具体地,预留系数可以根据实际工况进行设置,本实施例对此不做具体限定,通常选取4作为预留系数。以内存使用最大值与历史内存使用最大值的差值为10个内存页,预留系数为4为例,在该种情况下,第二内存池的内存预留值为40。
在内存使用情况为内存使用降低状态时,清空第二内存池的内存预留值。
具体地,在内存使用情况为内存使用降低状态时,清空第二内存池的内存预留值是指在内存使用状态为MEM_DEC时,认为第二内存池的内存资源使用情况在逐步降低,因此无需预留内存资源,在该种情况下内存预留值为零。
在一种可选实施方式中,基于内存预留值与第二空闲值,确定第二内存池的第一可调出值,包括:基于第二空闲值与内存预留值的差值,确定第二内存池的第一可调出值。
具体地,通过公式(2)表示第一可调出值:
第一可调出值=(空闲值-预留值)/2(2)
通过实施本实施例,通过获取第二内存池的内存使用情况与第二空闲值,确定第二内存池的内存调配状态、内存使用情况,并在此基础上确定第二内存池的内存预留值,从而利用内存预留值与第二空闲值确定第二内存池的可调出值。这一过程中,由于第二内存池为树状结构中任一节点,因此通过确定第二内存池的第二空闲值与第一可调出值,可以确定整体内存池中各节点的资源使用及调配情况,从而为后续向第一内存池调入内存资源提供数据基础。
在一种可选实施方式中,基于第一可调出值,通过调配规则,向第一内存池调入内存资源,包括:
在第二内存池为第一内存池的同级节点,且第一可调出值满足第一内存的请求调配资源值时,以第一可调出值响应请求调配资源值。
具体地,在第一内存池的同级节点的可调出值满足第一内存的请求调配资源值时,对应调配规则为以单个同级节点的可调出值向第一内存池调入内存资源。其中,请求调配资源值是指内存使用请求的申请资源值。
在第一可调出值不满足请求调配资源值时,计算树状结构中第一内存池的同级节点的可调出值的总和,确定第二可调出值。
基于第二可调出值响应请求调配资源值。
具体地,在第一可调出值不满足请求调配资源值时,计算树状结构中第一内存池的同级节点的可调出值的总和,确定第二可调出值是指在第二可调出值可以满足第一内存的请求调配资源值,在该种情况下,对应调配规则为以第一内存池的各同级节点的可调出值之间的比例关系,调配各同级节点的内存资源,向第一内存池调入内存资源。其中,第一同级节点的可调出值为100,第二同级节点的可调出值为50,第一内存池的请求调配资源值为30为例,在该种情况下,第一同级节点向第一内存池调入的内存资源为20,第二同级节点向第一内存池调入的内存资源为10。
在一种可选实施方式中,基于可调出值,通过调配规则,向第一内存池调入内存资源,包括:
在第二可调出值不满足请求调配资源值时,获取树状结构中第一内存池的父节点的第三可调出值。
基于第三可调出值响应请求调配资源值。
具体地,基于第三可调出值响应请求调配资源值是指单个父节点的第三可调出值满足第一内存的请求调配资源值,对应调配规则为以单个父节点的可调出值向第一内存池调入内存资源。
在第三可调出值不满足请求调配资源值时,计算父节点的同级节点的可调出值的总和,确定第四可调出值。
基于第四可调出值响应请求调配资源值。
具体地,在第三可调出值不满足请求调配资源值时,计算树状结构中父节点的同级节点的可调出值的总和,确定第四可调出值是指在第四可调出值可以满足第一内存的请求调配资源值,在该种情况下,对应调配规则为以第一内存池的父节点的各同级节点的可调出值之间的比例关系,调配父节点的各同级节点的内存资源,向第一内存池调入内存资源。其中,父节点的第三同级节点的可调出值为90,父节点的第四同级节点的可调出值为60,第一内存池的请求调配资源值为90为例,在该种情况下,第三同级节点向第一内存池调入的内存资源为60,第四同级节点向第一内存池调入的内存资源为30。应该理解的是,在第一内存池的父节点以及父节点的同级节点的可调出值总和仍不能满足第一内存的请求调配资源值时,逐级向上计算单个父亲节点以及该父亲节点的同级节点的可调出值,直至父亲节点为根节点,这一过程的匹配规则与本实施例相同,不再进行赘述。
在一种可选实施方式中,基于可调出值,通过调配规则,向第一内存池调入内存资源,包括:
在第四可调出值不满足请求调配资源值时,获取树状结构中的根节点的第五可调出值。
基于第五可调出值响应请求调配资源值。
具体地,基于第五可调出值响应请求调配资源值是指根节点的第五可调出值满足第一内存的请求调配资源值,对应调配规则为以根节点的可调出值向第一内存池调入内存资源。
在第五可调出值不满足请求调配资源值时,由根节点申请额外资源值。
基于额外资源值响应请求调配资源值。
具体地,根节点申请的额外资源值可根据实际工况进行设定,本实施例对此不做具体限定,通常选取第一内存池初始总内存值的20%作为额外资源值。
应该理解的是,各同级节点、各父节点、根节点计算可调出值的方式与第二内存池计算第一可调出值的方式相同,不再进行赘述。
通过实施本实施例,通过确定逐级确定第一内存池同级节点、父节点、根节点的可调出值,并以对应的调配规则对内存资源进行调配,从而避免内存池中闲置与等待分配共存的情况产生,减少向系统申请资源的频率,从而提升整体性能。
在本实施例中还提供了一种基于RAID的内存池动态调配装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
本实施例提供一种基于RAID的内存池动态调配装置,如图5所示,包括:
第一获取模块401,用于响应于内存使用请求,获取与内存使用请求对应的第一内存池的第一空闲值。具体过程可参见上述实施例中关于步骤S301的相关描述,在此不再赘述。
判断模块402,用于基于第一空闲值,判断是否需要调入内存资源。具体过程可参见上述实施例中关于步骤S302的相关描述,在此不再赘述。
第二获取模块403,用于在需要调入内存资源时,获取树状结构中第二内存池的内存使用情况与第二空闲值。具体过程可参见上述实施例中关于步骤S303的相关描述,在此不再赘述。
预留值模块404,用于基于内存使用情况,确定第二内存池的内存预留值。具体过程可参见上述实施例中关于步骤S304的相关描述,在此不再赘述。
可调出值模块405,用于基于内存预留值与第二空闲值,确定第二内存池的可调出值。具体过程可参见上述实施例中关于步骤S305的相关描述,在此不再赘述。
资源调入模块406,用于基于可调出值,通过调配规则,向第一内存池调入内存资源。具体过程可参见上述实施例中关于步骤S306的相关描述,在此不再赘述。
本实施例中的基于RAID的内存池动态调配装置是以功能单元的形式来呈现,这里的单元是指ASIC(Application Specific Integrated Circuit,专用集成电路)电路,执行一个或多个软件或固定程序的处理器和存储器,和/或其他可以提供上述功能的器件。
本发明实施例还提供一种计算机设备,具有上述图5所示的基于RAID的内存池动态调配装置。
请参阅图6,图6是本发明可选实施例提供的一种计算机设备的结构示意图,如图6所示,该计算机设备包括:一个或多个处理器501、存储器502,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相通信连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在计算机设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示GUI的图形信息的指令。在一些可选的实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个计算机设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。图6中以一个处理器501为例。
处理器501可以是中央处理器,网络处理器或其组合。其中,处理器501还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路,可编程逻辑器件或其组合。上述可编程逻辑器件可以是复杂可编程逻辑器件,现场可编程逻辑门阵列,通用阵列逻辑或其任意组合。
其中,所述存储器502存储有可由至少一个处理器501执行的指令,以使所述至少一个处理器501执行实现上述实施例示出的方法。
存储器502可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据计算机设备的使用所创建的数据等。此外,存储器502可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些可选的实施方式中,存储器502可选包括相对于处理器501远程设置的存储器,这些远程存储器可以通过网络连接至该计算机设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
存储器502可以包括易失性存储器,例如,随机存取存储器;存储器也可以包括非易失性存储器,例如,快闪存储器,硬盘或固态硬盘;存储器502还可以包括上述种类的存储器的组合。该计算机设备还包括通信接口503,用于该计算机设备与其他设备或通信网络通信。
本发明实施例还提供了一种计算机可读存储介质,上述根据本发明实施例的方法可在硬件、固件中实现,或者被实现为可记录在存储介质,或者被实现通过网络下载的原始存储在远程存储介质或非暂时机器可读存储介质中并将被存储在本地存储介质中的计算机代码,从而在此描述的方法可被存储在使用通用计算机、专用处理器或者可编程或专用硬件的存储介质上的这样的软件处理。其中,存储介质可为磁碟、光盘、只读存储记忆体、随机存储记忆体、快闪存储器、硬盘或固态硬盘等;进一步地,存储介质还可以包括上述种类的存储器的组合。可以理解,计算机、处理器、微处理器控制器或可编程硬件包括可存储或接收软件或计算机代码的存储组件,当软件或计算机代码被计算机、处理器或硬件访问且执行时,如图7所示,本发明的实施例还提供了一种计算机可读存储介质601,计算机可读存储介质601存储有计算机指令6011,计算机指令6011被处理器执行时,实现上述实施例示出的方法。
虽然结合附图描述了本发明的实施例,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下做出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。
Claims (15)
1.一种基于RAID的内存池动态调配方法,其特征在于,应用于每个内存池,多个所述内存池之间存在树状结构,所述方法包括:
响应于内存使用请求,获取与所述内存使用请求对应的第一内存池的第一空闲值;
基于所述第一空闲值,判断是否需要调入内存资源;
在需要调入内存资源时,获取所述树状结构中第二内存池的内存使用情况与第二空闲值;
基于所述内存使用情况,确定第二内存池的内存预留值;
基于所述内存预留值与所述第二空闲值,确定所述第二内存池的第一可调出值;
基于所述第一可调出值,通过调配规则,向所述第一内存池调入内存资源。
2.根据权利要求1所述的方法,其特征在于,所述基于所述第一空闲值,判断是否需要调入内存资源,包括:
基于所述第一空闲值与所述内存使用请求的申请资源值,判断是否需要调入内存资源;
在所述第一空闲值不能满足所述申请资源值时,所述第一内存需要调入内存资源,并以第一资源数量作为请求调配资源值。
3.根据权利要求1所述的方法,其特征在于,所述基于所述第一空闲值,判断是否需要调入内存资源,包括:
基于所述第一空闲值与所述内存使用请求的申请资源值,判断是否需要调入内存资源;
在所述第一空闲值满足所述申请资源值时,计算所述第一空闲值与所述申请资源值的差值;
在所述差值不能满足预设内存比例时,所述第一内存需要调入内存资源,并以第二资源数量作为请求调配资源值。
4.根据权利要求1所述的方法,其特征在于,所述基于所述第一空闲值,判断是否需要调入内存资源,包括:
基于所述第一空闲值与所述内存使用请求的申请资源值,判断是否需要调入内存资源;
在所述第一空闲值满足所述申请资源值时,计算所述第一空闲值与所述申请资源值的差值;
在所述差值满足第一预设内存比例时,所述第一内存不需要调入内存资源。
5.根据权利要求1所述的方法,其特征在于,所述在需要调入内存资源时,获取所述树状结构中第二内存池的内存使用情况与第二空闲值,包括:
获取第二内存池的第二空闲值;
基于所述第二空闲值,确定所述第二内存池的内存调配状态;
在所述调配状态为可调配状态时,获取所述树状结构中第二内存池的内存使用情况。
6.根据权利要求5所述的方法,其特征在于,所述基于所述第二空闲值,确定所述第二内存池的内存调配状态,包括
计算所述第二空闲值与所述第二内存池的池总资源值的比例值;
基于所述比例值与第二预设内存比例的对应关系,确定所述第二内存池的内存调配状态,其中,所述内存调配状态包括:可调配状态、需调入状态与无需调配状态。
7.根据权利要求5所述的方法,其特征在于,所述在所述调配状态为可调配状态时,获取所述树状结构中第二内存池的内存使用情况,包括:
在所述调配状态为可调配状态时,获取所述第二内存池在预设时间内的内存使用值;
基于所述内存使用值,确定所述第二内存池的内存使用最大值与历史内存使用最大值;
比较所述内存使用最大值与所述历史内存使用最大值,确定所述第二内存池的内存使用情况,其中,所述内存使用情况包括:内存使用增长状态与内存使用降低状态。
8.根据权利要求7所述的方法,其特征在于,所述基于所述内存使用情况,确定第二内存池的内存预留值,包括:
在所述内存使用情况为内存使用增长状态时,基于所述内存使用最大值与所述历史内存使用最大值的差值与预留系数,确定所述第二内存池的内存预留值;
在所述内存使用情况为内存使用降低状态时,清空所述第二内存池的内存预留值。
9.根据权利要求1所述的方法,其特征在于,所述基于所述内存预留值与所述第二空闲值,确定所述第二内存池的第一可调出值,包括:基于所述第二空闲值与所述内存预留值的差值,确定第二内存池的第一可调出值。
10.根据权利要求1所述的方法,其特征在于,所述基于所述第一可调出值,通过调配规则,向所述第一内存池调入内存资源,包括:
在所述第二内存池为所述第一内存池的同级节点,且所述第一可调出值满足所述第一内存的请求调配资源值时,以所述第一可调出值响应所述请求调配资源值;
在所述第一可调出值不满足所述请求调配资源值时,计算所述树状结构中所述第一内存池的同级节点的可调出值的总和,确定第二可调出值;
基于所述第二可调出值响应所述请求调配资源值。
11.根据权利要求10所述的方法,其特征在于,所述基于所述可调出值,通过调配规则,向所述第一内存池调入内存资源,包括:
在所述第二可调出值不满足所述请求调配资源值时,获取所述树状结构中所述第一内存池的父节点的第三可调出值;
基于所述第三可调出值响应所述请求调配资源值;
在所述第三可调出值不满足所述请求调配资源值时,计算所述父节点的同级节点的可调出值的总和,确定第四可调出值;
基于所述第四可调出值响应所述请求调配资源值。
12.根据权利要求11所述的方法,其特征在于,所述基于所述可调出值,通过调配规则,向所述第一内存池调入内存资源,包括:
在所述第四可调出值不满足所述请求调配资源值时,获取所述树状结构中的根节点的第五可调出值;
基于所述第五可调出值响应所述请求调配资源值;
在所述第五可调出值不满足所述请求调配资源值时,由所述根节点申请额外资源值;
基于所述额外资源值响应所述请求调配资源值。
13.一种基于RAID的内存池动态调配装置,其特征在于,应用于每个内存池,多个所述内存池之间存在树状结构,所述装置包括:
第一获取模块,用于响应于内存使用请求,获取与所述内存使用请求对应的第一内存池的第一空闲值;
判断模块,用于基于所述第一空闲值,判断是否需要调入内存资源;
第二获取模块,用于在需要调入内存资源时,获取所述树状结构中第二内存池的内存使用情况与第二空闲值;
预留值模块,用于基于所述内存使用情况,确定第二内存池的内存预留值;
可调出值模块,用于基于所述内存预留值与所述第二空闲值,确定所述第二内存池的可调出值;
资源调入模块,用于基于所述可调出值,通过调配规则,向所述第一内存池调入内存资源。
14.一种计算机设备,其特征在于,包括:
存储器和处理器,所述存储器和所述处理器之间互相通信连接,所述存储器中存储有计算机指令,所述处理器通过执行所述计算机指令,从而执行权利要求1至12中任一项所述的基于RAID的内存池动态调配方法。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机指令,所述计算机指令用于使计算机执行权利要求1至12中任一项所述的基于RAID的内存池动态调配方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311827093.0A CN117519988B (zh) | 2023-12-28 | 2023-12-28 | 一种基于raid的内存池动态调配方法、装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311827093.0A CN117519988B (zh) | 2023-12-28 | 2023-12-28 | 一种基于raid的内存池动态调配方法、装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117519988A true CN117519988A (zh) | 2024-02-06 |
CN117519988B CN117519988B (zh) | 2024-03-19 |
Family
ID=89762929
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311827093.0A Active CN117519988B (zh) | 2023-12-28 | 2023-12-28 | 一种基于raid的内存池动态调配方法、装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117519988B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111831435A (zh) * | 2020-07-01 | 2020-10-27 | Oppo广东移动通信有限公司 | 内存分配方法、装置、存储介质及电子设备 |
CN113849317A (zh) * | 2021-11-29 | 2021-12-28 | 苏州浪潮智能科技有限公司 | 一种内存池资源使用方法及相关装置 |
WO2022062833A1 (zh) * | 2020-09-22 | 2022-03-31 | 深圳云天励飞技术股份有限公司 | 内存分配方法及相关设备 |
-
2023
- 2023-12-28 CN CN202311827093.0A patent/CN117519988B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111831435A (zh) * | 2020-07-01 | 2020-10-27 | Oppo广东移动通信有限公司 | 内存分配方法、装置、存储介质及电子设备 |
WO2022062833A1 (zh) * | 2020-09-22 | 2022-03-31 | 深圳云天励飞技术股份有限公司 | 内存分配方法及相关设备 |
CN113849317A (zh) * | 2021-11-29 | 2021-12-28 | 苏州浪潮智能科技有限公司 | 一种内存池资源使用方法及相关装置 |
Also Published As
Publication number | Publication date |
---|---|
CN117519988B (zh) | 2024-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111522636B (zh) | 应用容器的调整方法、调整系统、计算机可读介质及终端设备 | |
CN108667748B (zh) | 一种控制带宽的方法、装置、设备和存储介质 | |
CN107426274B (zh) | 基于时序的业务应用及监控分析调度的方法和系统 | |
CN108337109A (zh) | 一种资源分配方法及装置和资源分配系统 | |
CN111158878B (zh) | 资源转移请求线程控制方法、装置及存储介质 | |
CN112214288B (zh) | 基于Kubernetes集群的Pod调度方法、装置、设备和介质 | |
CN112463290A (zh) | 动态调整计算容器的数量的方法、系统、装置和存储介质 | |
CN114385370B (zh) | 内存分配方法、系统、设备及介质 | |
CN111190719B (zh) | 优化集群资源分配的方法、装置、介质及电子设备 | |
US11765099B2 (en) | Resource allocation using distributed segment processing credits | |
CN114979286B (zh) | 容器服务的访问控制方法、装置、设备及计算机存储介质 | |
CN117519988B (zh) | 一种基于raid的内存池动态调配方法、装置 | |
CN109739513B (zh) | 一种多边缘云下服务请求动态调度方法及装置 | |
CN115794396A (zh) | 资源分配的方法、系统和电子设备 | |
CN110543357B (zh) | 管理应用程序对象的方法,相关装置及系统 | |
CN112346848A (zh) | 一种管理内存池的方法、装置及终端 | |
CN115941622A (zh) | 一种带宽调节方法、系统、设备及存储介质 | |
CN110955522B (zh) | 一种协调性能隔离和数据恢复优化的资源管理方法及系统 | |
US20220114188A1 (en) | Efficient Database Loading | |
CN113986523A (zh) | 一种Flink系统资源分配优化方法、系统、设备及介质 | |
CN115878309A (zh) | 资源分配方法、装置、处理核、设备和计算机可读介质 | |
CN113535378A (zh) | 一种资源调配方法、存储介质及终端设备 | |
CN111524059A (zh) | 一种图像缓存时内存利用方法、系统、终端和存储介质 | |
US20230195527A1 (en) | Workload distribution by utilizing unused central processing unit capacity in a distributed computing system | |
CN111580925B (zh) | 应用伸展的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |