CN113076266B - 一种内存管理方法、装置、电子设备及存储介质 - Google Patents
一种内存管理方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN113076266B CN113076266B CN202110623258.7A CN202110623258A CN113076266B CN 113076266 B CN113076266 B CN 113076266B CN 202110623258 A CN202110623258 A CN 202110623258A CN 113076266 B CN113076266 B CN 113076266B
- Authority
- CN
- China
- Prior art keywords
- memory
- page memory
- page
- memory block
- size
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0284—Multiple user address space allocation, e.g. using different base addresses
-
- 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
- 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
- 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/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明涉及一种内存管理方法、装置、电子设备及存储介质,内存管理方法包括:接收内存获取请求,大页内存用于存储大页内存块;在大页内存中查找与内存获取请求匹配的目标大页内存块,目标大页内存块为大页内存中待分配的下一个大页内存块;返回目标大页内存块在与大页内存对应的共享内存中的地址映射信息,并将目标大页内存块的使用状态切换至锁定状态,共享内存用于存储大页内存中的大页内存块与共享内存地址范围之间的地址映射信息。本发明实施例可以实现内存获取请求的请求方通过一次请求可以拿到完整连续的一块内存,不会出现针对一个请求进行连续几次跨内存块访问的情况,提高cpu cache的命中率,减少请求响应的延时。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种内存管理方法、装置、电子设备及存储介质。
背景技术
内存池(Memory Pool)是一种内存分配方式,又被称为固定大小区块规划(fixed-size-blocks allocation)。内存池是在真正使用内存之前,先申请分配一定数量的、大小相等(一般情况下)的内存块留作备用的技术。当有新的内存需求时,就从内存池中分出一部分内存块,若内存块不够再继续申请新的内存。
然而,内存池申请的若干个内存可能是地址不连续的、非线性的,该若干个内存有可能会跨几个内存块,这样就需要CPU连续几次访问不同内存块中的内存,而CPU访问内存又需要先访问页表,多次频繁访问时,cpu cache的命中率降低,导致响应的延时非常高。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本申请提供了一种内存管理方法、装置、电子设备及存储介质。
第一方面,本申请提供了一种内存管理方法,包括:
接收内存获取请求,所述内存获取请求用于指示在大页内存中分配内存,所述大页内存用于存储大页内存块;
在所述大页内存中查找与所述内存获取请求匹配的目标大页内存块,所述目标大页内存块为所述大页内存中待分配的下一个大页内存块;
返回所述目标大页内存块在与所述大页内存对应的共享内存中的地址映射信息,并将所述目标大页内存块的使用状态切换至锁定状态,所述共享内存用于存储所述大页内存中的大页内存块与共享内存地址范围之间的地址映射信息。
可选地,所述方法还包括:
获取与所述大页内存对应的当前分割周期的分割规则;
若所述分割规则指示将所述大页内存按照第一大小等分,将所述大页内存按照第一大小,分割成多个大小相等的第一大页内存块;
在与所述大页内存对应的共享内存中建立多组共享内存地址范围与所述第一大页内存块之间的地址映射。
可选地,在所述大页内存中查找与所述内存获取请求匹配的目标大页内存块,包括:
确定所述大页内存中是否存在空闲状态的第一大页内存块;
若所述大页内存中存在空闲状态的第一大页内存块,获取所述内存获取请求所请求的内存大小;
确定所述第一大小是否与所述内存获取请求所请求的内存大小匹配;
若所述第一大小与所述内存获取请求所请求的内存大小匹配,将该第一大页内存块确定为目标大页内存块。
可选地,在所述大页内存中查找与所述内存获取请求匹配的目标大页内存块,还包括:
若所述大页内存中不存在空闲状态的第一大页内存块,获取所述大页内存中每个第一大页内存块的已使用大小;
基于所述第一大小和每个所述第一大页内存块的已使用大小,确定任一所述第一大页内存块的剩余大小;
确定任一所述第一大页内存块的剩余大小是否与所述内存获取请求匹配;
若任一所述第一大页内存块的剩余大小与所述内存获取请求匹配,将该第一大页内存块中未使用的区域进行分割,得到第一子内存块,所述第一子内存块的大小为所述剩余大小;
将所述第一子内存块确定为所述目标大页内存块。
可选地,所述方法还包括:
获取在当前分割周期内接收到的多个内存获取请求所请求的内存大小;
计算多个内存获取请求所请求的内存大小的均值,得到第二大小;
将所述第二大小写入所述分割规则,以在下一个分割周期,按照所述第二大小对所述大页内存进行分割。
可选地,所述方法还包括:
获取与所述大页内存对应的当前分割周期的分割规则;
若所述分割规则指示将所述大页内存不等分,将所述大页内存分割成多个大小不等的第二大页内存块;
在与所述大页内存对应的共享内存中建立多组共享内存地址范围与所述第二大页内存块之间的地址映射。
可选地,在所述大页内存中查找与所述内存获取请求匹配的目标大页内存块,包括:
确定所述大页内存中是否存在空闲状态的第二大页内存块;
若所述大页内存中存在空闲状态的第二大页内存块,获取所述内存获取请求所请求的内存大小;
在空闲状态的第二大页内存块中查找与所述内存获取请求所请求的内存大小匹配的第二大页内存块;
若在空闲状态的第二大页内存块中查找到与所述内存获取请求所请求的内存大小匹配的第二大页内存块,将该第二大页内存块确定为目标大页内存块。
可选地,在所述大页内存中查找与所述内存获取请求匹配的目标大页内存块,还包括:
若在空闲状态的第二大页内存块中未查找与所述内存获取请求所请求的内存大小匹配的第二大页内存块,获取所述大页内存中地址连续的多个空闲状态的第二大页内存块的第三大小;
将地址连续的多个空闲状态的第二大页内存块中,至少两个大页内存块的第三大小进行组合相加,得到组合大小;
选择数值最小且大于所述内存获取请求所请求的内存大小的组合大小及该组合大小对应的第二大页内存块;
将组合大小对应的第二大页内存块进行组合拼接,得到第三大页内存块;
将所述第三大页内存块确定为所述目标大页内存块。
可选地,在所述大页内存中查找与所述内存获取请求匹配的目标大页内存块,还包括:
若所述大页内存中不存在空闲状态的第二大页内存块,获取所述大页内存中每个第二大页内存块的已使用大小;
基于每个第二大页内存块的第三大小和每个所述第二大页内存块的已使用大小,确定任一所述第二大页内存块的剩余大小;
确定任一所述第二大页内存块的剩余大小是否与所述内存获取请求匹配;
若任一所述第二大页内存块的剩余大小与所述内存获取请求匹配,将该第二大页内存块中未使用的区域进行分割,得到第二子内存块,所述第二子内存块的大小为所述剩余大小;
将所述第二子内存块确定为所述目标大页内存块。
可选地,所述方法还包括:
获取在当前分割周期内接收到的多个内存获取请求所请求的内存大小;
计算不同内存大小被请求的次数的比例;
将所述比例写入所述分割规则,以在下一个分割周期,按照所述比例将所述大页内存分割成大小不同的第二大页内存块。
可选地,所述方法还包括:
在第一大页内存块被分割、第二大页内存块被拼接或者第二大页内存块被分割时,将所述共享内存中对应的共享内存地址范围相应的进行组合或者分割。
可选地,所述方法还包括:
若接收到所述目标大页内存块使用完毕的通知,释放所述目标大页内存块,将所述目标大页内存块的使用状态由使用中的锁定状态切换至空闲状态。
第二方面,本申请提供了一种内存管理装置,包括:
接收模块,用于接收内存获取请求,所述内存获取请求用于指示在大页内存中分配内存,所述大页内存用于存储大页内存块;
查找模块,用于在所述大页内存中查找与所述内存获取请求匹配的目标大页内存块,所述目标大页内存块为所述大页内存中待分配的下一个大页内存块;
返回模块,用于返回所述目标大页内存块在与所述大页内存对应的共享内存中的地址映射信息,并将所述目标大页内存块的使用状态切换至锁定状态,所述共享内存用于存储所述大页内存中的大页内存块与共享内存地址范围之间的地址映射信息。
第三方面,本申请提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现第一方面任一所述的内存管理方法。
第四方面,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有内存管理方法的程序,所述内存管理方法的程序被处理器执行时实现第一方面任一所述的内存管理方法的步骤。
本申请实施例提供的上述技术方案与现有技术相比具有如下优点:
本发明实施例在向内存获取请求的请求方发送地址映射信息后,请求方可以根据地址映射信息在共享内存查找到相应的共享内存地址范围,进而可以根据共享内存地址范围在大页内存中查找到相应的目标大页内存块。
本发明实施例可以在接收到内存获取请求后,自动在大页内存中的多个大页内存块中查找匹配的目标大页内存块,这样,由于是获取到一个完整的大页内存块,所以,内存获取请求的请求方通过一次请求可以拿到完整连续的一块内存,不会出现针对一个请求进行连续几次跨内存块访问的情况,提高cpu cache的命中率,减少请求响应的延时。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种内存管理方法的流程图;
图2为本申请实施例提供的一种内存管理装置的结构图;
图3为本申请实施例提供的一种电子设备的结构图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
相关技术中,内存池申请的若干个内存可能是地址不连续的、非线性的,该若干个内存有可能会跨几个内存块,这样就需要CPU连续几次访问不同内存块中的内存,而CPU访问内存又需要先访问页表,多次频繁访问时,cpu cache的命中率降低,导致响应的延时非常高。为此,本发明实施例提供了一种内存管理方法、装置、电子设备及存储介质。
如图1所示,所述内存管理方法可以包括以下步骤:
步骤S101,接收内存获取请求。
本发明实施例中,所述内存获取请求用于指示在大页内存中分配内存,所述大页内存用于存储大页内存块;
本发明实施例可以预先在系统内存中申请一块连续的大页内存,如:1G,然后,可以将大页内存分割成多个大页内存块,以用于在接收到内存获取请求时,为内存获取请求的请求方分配。
步骤S102,在所述大页内存中查找与所述内存获取请求匹配的目标大页内存块。
本发明实施例中,所述目标大页内存块为所述大页内存中待分配的下一个大页内存块;在实际应用中,可以按照地址从小到大的顺序分配大页内存块。
步骤S103,返回所述目标大页内存块在与所述大页内存对应的共享内存中的地址映射信息,并将所述目标大页内存块的使用状态切换至锁定状态。
所述共享内存用于存储所述大页内存中的大页内存块与共享内存地址范围之间的地址映射信息。
本发明实施例在向内存获取请求的请求方发送地址映射信息后,请求方可以根据地址映射信息在共享内存查找到相应的共享内存地址范围,进而可以根据共享内存地址范围在大页内存中查找到相应的目标大页内存块。
本发明实施例可以在接收到内存获取请求后,自动在大页内存中的多个大页内存块中查找匹配的目标大页内存块,这样,由于是获取到一个完整的大页内存块,所以,内存获取请求的请求方通过一次请求可以拿到完整连续的一块内存,不会出现针对一个请求进行连续几次跨内存块访问的情况,提高cpu cache的命中率,减少请求响应的延时。
在本发明的又一实施例中,所述方法还包括:
步骤201,获取与所述大页内存对应的当前分割周期的分割规则;
步骤202,若所述分割规则指示将所述大页内存按照第一大小等分,将所述大页内存按照第一大小,分割成多个大小相等的第一大页内存块;
步骤203,在与所述大页内存对应的共享内存中建立多组共享内存地址范围与所述第一大页内存块之间的地址映射。
本发明实施例可以预先将大页内存进行分割,并建立共享内存地址范围与第一大页内存块之间的地址映射,这样,可以在后续接收到内存获取请求时,直接分配大页内存块,并且返回地址映射信息,以便内存获取请求的请求方使用。
在本发明的又一实施例中,在所述大页内存中查找与所述内存获取请求匹配的目标大页内存块,包括:
步骤301,确定所述大页内存中是否存在空闲状态的第一大页内存块;
本发明实施例中,第一大页内存块在被分配给请求方之后,该第一大页内存块对应的使用状态可以由空闲状态切换至锁定状态,在请求方使用该第一大页内存块完毕后,可以将该第一大页内存块的使用状态由锁定状态切换至空闲状态。
步骤302,若所述大页内存中存在空闲状态的第一大页内存块,获取所述内存获取请求所请求的内存大小;
在该步骤中,可以在所述内存获取请求中提取与内存大小标识对应的字段内容,得到内存获取请求所请求获取的内存大小。
步骤303,确定所述第一大小是否与所述内存获取请求所请求的内存大小匹配;
由于本发明实施例中,大页内存中的多个第一大页内存块的大小是相等的,均是第一大小,所以可以将第一大小与在内存获取请求中提取的内存大小进行比较,若第一大小小于或者等于该内存获取请求所请求的内存大小,则可以确定第一大小与内存获取请求所请求的内存大小匹配;若第一大小大于该内存获取请求所请求的内存大小,则可以确定第一大小与内存获取请求所请求的内存大小不匹配。
步骤304,若所述第一大小与所述内存获取请求所请求的内存大小匹配,将该第一大页内存块确定为目标大页内存块。
本发明实施例能够在大页内存中空闲状态的第一大页内存块与内存获取请求匹配时,自动将该第一大页内存块确定为目标大页内存块,以便于返回满足请求方需求的大页内存块,避免后续出现请求方写入时内存不足的情况。
在本发明的又一实施例中,在所述大页内存中查找与所述内存获取请求匹配的目标大页内存块,还包括:
步骤401,若所述大页内存中不存在空闲状态的第一大页内存块,获取所述大页内存中每个第一大页内存块的已使用大小;
步骤402,基于所述第一大小和每个所述第一大页内存块的已使用大小,确定任一所述第一大页内存块的剩余大小;
步骤403,确定任一所述第一大页内存块的剩余大小是否与所述内存获取请求匹配;
步骤404,若任一所述第一大页内存块的剩余大小与所述内存获取请求匹配,将该第一大页内存块中未使用的区域进行分割,得到第一子内存块,所述第一子内存块的大小为所述剩余大小;
步骤405,将所述第一子内存块确定为所述目标大页内存块。
本发明实施例由于共享内存中存储所述大页内存中的大页内存块与共享内存地址范围之间的地址映射信息,这样在向内存获取请求的请求方发送地址映射信息后,请求方可以根据地址映射信息在共享内存查找到相应的共享内存地址范围,进而可以根据共享内存地址范围在大页内存中查找到相应的目标大页内存块,所以各内存获取线程直接锁定各大页内存块,也即不会产生各大页内存块之间的隔离,所以可以对大页内存块进行分割,以便于在大页内存块不足时,将之前被分配给请求方的大页内存在存在剩余的闲置区块时,可以将闲置区块再次分配使用,提高大页内存块使用的灵活性及使用效率,提高大页内存块使用的灵活性,提高内存获取请求的处理量,提高系统工作效率。
在本发明的又一实施例中,所述方法还包括:
步骤501,获取在当前分割周期内接收到的多个内存获取请求所请求的内存大小;
步骤502,计算多个内存获取请求所请求的内存大小的均值,得到第二大小;
步骤503,将所述第二大小写入所述分割规则,以在下一个分割周期,按照所述第二大小对所述大页内存进行分割。
例如,在当前分割周期多个内存获取请求所请求的内存大小的均值为128k,则在下一个分割周期,可以将大页内存分割成多个128k大小的第一大页内存块。
本发明实施例可以根据在当前分割周期内请求方请求的内存大小,调整下一个分割周期内各大页内存块分割的大小,使得各大页内存块的分割大小在不同分割周期逐渐逼近实际应用中的使用需求,进而便于处理更多的内存获取请求,提高系统工作效率。
在本发明的又一实施例中,所述方法还包括:
步骤601,获取与所述大页内存对应的当前分割周期的分割规则;
步骤602,若所述分割规则指示将所述大页内存不等分,将所述大页内存分割成多个大小不等的第二大页内存块;
步骤603,在与所述大页内存对应的共享内存中建立多组共享内存地址范围与所述第二大页内存块之间的地址映射。
本发明实施例可以预先将大页内存进行分割,并建立共享内存地址范围与第二大页内存块之间的地址映射,这样,可以在后续接收到内存获取请求时,直接分配大页内存块,并且返回地址映射信息,以便内存获取请求的请求方使用。并且,将大页内存不等分分割,可以便于根据不同的内存获取请求相应的为之分配不同大小的第二大页内存块,提高内存使用效率。
在本发明的又一实施例中,在所述大页内存中查找与所述内存获取请求匹配的目标大页内存块,包括:
步骤701,确定所述大页内存中是否存在空闲状态的第二大页内存块;
本发明实施例中,第二大页内存块在被分配给请求方之后,该第二大页内存块对应的使用状态可以由空闲状态切换至锁定状态,在请求方使用该第二大页内存块完毕后,可以将该第二大页内存块的使用状态由锁定状态切换至空闲状态。
步骤702,若所述大页内存中存在空闲状态的第二大页内存块,获取所述内存获取请求所请求的内存大小;
在该步骤中,可以在所述内存获取请求中提取与内存大小标识对应的字段内容,得到内存获取请求所请求获取的内存大小。
步骤703,在空闲状态的第二大页内存块中查找与所述内存获取请求所请求的内存大小匹配的第二大页内存块;
由于本发明实施例中,大页内存中的多个第二大页内存块的大小是不相等的,所以可以将各空闲状态的第二大页内存块的内存大小与在内存获取请求中提取的内存大小进行比较,若第二大页内存块的内存大小小于或者等于该内存获取请求所请求的内存大小,则可以确定第二大页内存块的内存大小与内存获取请求所请求的内存大小匹配;若第二大页内存块的内存大小大于该内存获取请求所请求的内存大小,则可以确定第二大页内存块的内存大小与内存获取请求所请求的内存大小不匹配。
步骤704,若在空闲状态的第二大页内存块中查找到与所述内存获取请求所请求的内存大小匹配的第二大页内存块,将该第二大页内存块确定为目标大页内存块。
本发明实施例能够在大页内存中空闲状态的第二大页内存块与内存获取请求匹配时,自动将该第二大页内存块确定为目标大页内存块,以便于返回满足请求方需求的大页内存块,避免后续出现请求方写入时内存不足的情况。
在本发明的又一实施例中,在所述大页内存中查找与所述内存获取请求匹配的目标大页内存块,还包括:
步骤801,若在空闲状态的第二大页内存块中未查找与所述内存获取请求所请求的内存大小匹配的第二大页内存块,获取所述大页内存中地址连续的多个空闲状态的第二大页内存块的第三大小;
步骤802,将地址连续的多个空闲状态的第二大页内存块中,至少两个大页内存块的第三大小进行组合相加,得到组合大小;
步骤803,选择数值最小且大于所述内存获取请求所请求的内存大小的组合大小及该组合大小对应的第二大页内存块;
步骤804,将组合大小对应的第二大页内存块进行组合拼接,得到第三大页内存块;
步骤805,将所述第三大页内存块确定为所述目标大页内存块。
本发明实施例由于共享内存中存储所述大页内存中的大页内存块与共享内存地址范围之间的地址映射信息,这样在向内存获取请求的请求方发送地址映射信息后,请求方可以根据地址映射信息在共享内存查找到相应的共享内存地址范围,进而可以根据共享内存地址范围在大页内存中查找到相应的目标大页内存块,所以各内存获取线程直接锁定各大页内存块,也即不会产生各大页内存块之间的隔离,所以可以对大页内存块进行组合拼接,以便于在大页内存块不足时供请求方使用,提高大页内存块使用的灵活性,提高内存获取请求的处理量,提高系统工作效率。
在本发明的又一实施例中,在所述大页内存中查找与所述内存获取请求匹配的目标大页内存块,还包括:
步骤901,若所述大页内存中不存在空闲状态的第二大页内存块,获取所述大页内存中每个第二大页内存块的已使用大小;
步骤902,基于每个第二大页内存块的第三大小和每个所述第二大页内存块的已使用大小,确定任一所述第二大页内存块的剩余大小;
步骤903,确定任一所述第二大页内存块的剩余大小是否与所述内存获取请求匹配;
步骤904,若任一所述第二大页内存块的剩余大小与所述内存获取请求匹配,将该第二大页内存块中未使用的区域进行分割,得到第二子内存块,所述第二子内存块的大小为所述剩余大小;
步骤905,将所述第二子内存块确定为所述目标大页内存块。
本发明实施例由于共享内存中存储所述大页内存中的大页内存块与共享内存地址范围之间的地址映射信息,这样在向内存获取请求的请求方发送地址映射信息后,请求方可以根据地址映射信息在共享内存查找到相应的共享内存地址范围,进而可以根据共享内存地址范围在大页内存中查找到相应的目标大页内存块,所以各内存获取线程直接锁定各大页内存块,也即不会产生各大页内存块之间的隔离,所以可以对大页内存块进行分割,以便于在大页内存块不足时,将之前被分配给请求方的大页内存在存在剩余的闲置区块时,可以将闲置区块再次分配使用,提高大页内存块使用的灵活性及使用效率,提高内存获取请求的处理量,提高系统工作效率。
在本发明的又一实施例中,所述方法还包括:
步骤1001,获取在当前分割周期内接收到的多个内存获取请求所请求的内存大小;
步骤1002,计算不同内存大小被请求的次数的比例;
步骤1003,将所述比例写入所述分割规则,以在下一个分割周期,按照所述比例将所述大页内存分割成大小不同的第二大页内存块。
例如,若当前分割周期对于64k、128k和1024k大小的大页内存块的请求次数的比例为2:4:4,则在下一个分割周期,可以将大页内存的总大小分割成10份,其中2份分割成若干个64k大小的大页内存块,4份分割成若干个128k大小的大页内存块;4份分割成若干个1024k大小的大页内存块。
本发明实施例可以根据在当前分割周期内多个请求方请求的内存大小的次数之间的比例,调整下一个分割周期内各大页内存块分割的大小之间的比例,使得各大页内存块的分割大小在不同分割周期逐渐逼近实际应用中的使用需求,进而便于处理更多的内存获取请求,提高系统工作效率。
在本发明的又一实施例中,所述方法还包括:
在第一大页内存块被分割、第二大页内存块被拼接或者第二大页内存块被分割时,将所述共享内存中对应的共享内存地址范围相应的进行组合或者分割。
为了使共享内存中的共享内存地址范围与实际的大页内存块的地址范围正常映射,所以需要对共享内存地址范围相应的进行组合或者分割,以保证在大页内存块被切割或者拼接时映射仍然准确且有效。
在本发明的又一实施例中,所述方法还包括:
若接收到所述目标大页内存块使用完毕的通知,释放所述目标大页内存块,将所述目标大页内存块的使用状态由使用中的锁定状态切换至空闲状态。
本发明实施例中,在目标大页内存块使用完毕时,及时释放目标大页内存块存储空间,便于下一次内存获取请求使用,提高内存使用效率。
在本发明的又一实施例中,还提供一种内存管理装置,如图2所示,包括:
接收模块11,用于接收内存获取请求,所述内存获取请求用于指示在大页内存中分配内存,所述大页内存用于存储大页内存块;
查找模块12,用于在所述大页内存中查找与所述内存获取请求匹配的目标大页内存块,所述目标大页内存块为所述大页内存中待分配的下一个大页内存块;
返回模块13,用于返回所述目标大页内存块在与所述大页内存对应的共享内存中的地址映射信息,并将所述目标大页内存块的使用状态切换至锁定状态,所述共享内存用于存储所述大页内存中的大页内存块与共享内存地址范围之间的地址映射信息。
在本发明的又一实施例中,还提供一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现前述任一方法实施例所述的内存管理方法。
本发明实施例提供的电子设备,处理器通过执行存储器上所存放的程序实现了在向内存获取请求的请求方发送地址映射信息后,请求方可以根据地址映射信息在共享内存查找到相应的共享内存地址范围,进而可以根据共享内存地址范围在大页内存中查找到相应的目标大页内存块。
本发明实施例可以在接收到内存获取请求后,自动在大页内存中的多个大页内存块中查找匹配的目标大页内存块,这样,由于是获取到一个完整的大页内存块,所以,内存获取请求的请求方通过一次请求可以拿到完整连续的一块内存,不会出现针对一个请求进行连续几次跨内存块访问的情况,提高cpu cache的命中率,减少请求响应的延时。
上述电子设备提到的通信总线1140可以是外设部件互连标准(PeripheralComponentInterconnect,简称PCI)总线或扩展工业标准结构(ExtendedIndustryStandardArchitecture,简称EISA)总线等。该通信总线1140可以分为地址总线、数据总线、控制总线等。为便于表示,图3中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口1120用于上述电子设备与其他设备之间的通信。
存储器1130可以包括随机存取存储器(RandomAccessMemory,简称RAM),也可以包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器1110可以是通用处理器,包括中央处理器(CentralProcessingUnit,简称CPU)、网络处理器(NetworkProcessor,简称NP)等;还可以是数字信号处理器(DigitalSignalProcessing,简称DSP)、专用集成电路(ApplicationSpecificIntegratedCircuit,简称ASIC)、现场可编程门阵列(Field-ProgrammableGateArray,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明的又一实施例中,还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有内存管理方法的程序,所述内存管理方法的程序被处理器执行时实现前述任一方法实施例所述的内存管理方法的步骤。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。
Claims (13)
1.一种内存管理方法,其特征在于,包括:
接收内存获取请求,所述内存获取请求用于指示在大页内存中分配内存,所述大页内存用于存储大页内存块;
所述方法还包括:
获取与所述大页内存对应的当前分割周期的分割规则;
若所述分割规则指示将所述大页内存按照第一大小等分,将所述大页内存按照第一大小,分割成多个大小相等的第一大页内存块;
在与所述大页内存对应的共享内存中建立多组共享内存地址范围与所述第一大页内存块之间的地址映射;
在所述大页内存中查找与所述内存获取请求匹配的目标大页内存块,所述目标大页内存块为所述大页内存中待分配的下一个大页内存块;
在所述大页内存中查找与所述内存获取请求匹配的目标大页内存块,包括:
若所述大页内存中不存在空闲状态的第一大页内存块,获取所述大页内存中每个第一大页内存块的已使用大小;
基于所述第一大小和每个所述第一大页内存块的已使用大小,确定任一所述第一大页内存块的剩余大小;
确定任一所述第一大页内存块的剩余大小是否与所述内存获取请求匹配;
若任一所述第一大页内存块的剩余大小与所述内存获取请求匹配,将该第一大页内存块中未使用的区域进行分割,得到第一子内存块,所述第一子内存块的大小为所述剩余大小;
将所述第一子内存块确定为所述目标大页内存块;
返回所述目标大页内存块在与所述大页内存对应的共享内存中的地址映射信息,并将所述目标大页内存块的使用状态切换至锁定状态,所述共享内存用于存储所述大页内存中的大页内存块与共享内存地址范围之间的地址映射信息。
2.根据权利要求1所述的内存管理方法,其特征在于,在所述大页内存中查找与所述内存获取请求匹配的目标大页内存块,包括:
确定所述大页内存中是否存在空闲状态的第一大页内存块;
若所述大页内存中存在空闲状态的第一大页内存块,获取所述内存获取请求所请求的内存大小;
确定所述第一大小是否与所述内存获取请求所请求的内存大小匹配;
若所述第一大小与所述内存获取请求所请求的内存大小匹配,将该第一大页内存块确定为目标大页内存块。
3.根据权利要求1至2任一所述的内存管理方法,其特征在于,所述方法还包括:
获取在当前分割周期内接收到的多个内存获取请求所请求的内存大小;
计算多个内存获取请求所请求的内存大小的均值,得到第二大小;
将所述第二大小写入所述分割规则,以在下一个分割周期,按照所述第二大小对所述大页内存进行分割。
4.根据权利要求1所述的内存管理方法,其特征在于,所述方法还包括:
获取与所述大页内存对应的当前分割周期的分割规则;
若所述分割规则指示将所述大页内存不等分,将所述大页内存分割成多个大小不等的第二大页内存块;
在与所述大页内存对应的共享内存中建立多组共享内存地址范围与所述第二大页内存块之间的地址映射。
5.根据权利要求4所述的内存管理方法,其特征在于,在所述大页内存中查找与所述内存获取请求匹配的目标大页内存块,包括:
确定所述大页内存中是否存在空闲状态的第二大页内存块;
若所述大页内存中存在空闲状态的第二大页内存块,获取所述内存获取请求所请求的内存大小;
在空闲状态的第二大页内存块中查找与所述内存获取请求所请求的内存大小匹配的第二大页内存块;
若在空闲状态的第二大页内存块中查找到与所述内存获取请求所请求的内存大小匹配的第二大页内存块,将该第二大页内存块确定为目标大页内存块。
6.根据权利要求5所述的内存管理方法,其特征在于,在所述大页内存中查找与所述内存获取请求匹配的目标大页内存块,还包括:
若在空闲状态的第二大页内存块中未查找与所述内存获取请求所请求的内存大小匹配的第二大页内存块,获取所述大页内存中地址连续的多个空闲状态的第二大页内存块的第三大小;
将地址连续的多个空闲状态的第二大页内存块中,至少两个大页内存块的第三大小进行组合相加,得到组合大小;
选择数值最小且大于所述内存获取请求所请求的内存大小的组合大小及该组合大小对应的第二大页内存块;
将组合大小对应的第二大页内存块进行组合拼接,得到第三大页内存块;
将所述第三大页内存块确定为所述目标大页内存块。
7.根据权利要求5所述的内存管理方法,其特征在于,在所述大页内存中查找与所述内存获取请求匹配的目标大页内存块,还包括:
若所述大页内存中不存在空闲状态的第二大页内存块,获取所述大页内存中每个第二大页内存块的已使用大小;
基于每个第二大页内存块的第三大小和每个所述第二大页内存块的已使用大小,确定任一所述第二大页内存块的剩余大小;
确定任一所述第二大页内存块的剩余大小是否与所述内存获取请求匹配;
若任一所述第二大页内存块的剩余大小与所述内存获取请求匹配,将该第二大页内存块中未使用的区域进行分割,得到第二子内存块,所述第二子内存块的大小为所述剩余大小;
将所述第二子内存块确定为所述目标大页内存块。
8.根据权利要求5至7任一所述的内存管理方法,其特征在于,所述方法还包括:
获取在当前分割周期内接收到的多个内存获取请求所请求的内存大小;
计算不同内存大小被请求的次数的比例;
将所述比例写入所述分割规则,以在下一个分割周期,按照所述比例将所述大页内存分割成大小不同的第二大页内存块。
9.根据权利要求1、6或者7所述的内存管理方法,其特征在于,所述方法还包括:
在第一大页内存块被分割、第二大页内存块被拼接或者第二大页内存块被分割时,将所述共享内存中对应的共享内存地址范围相应的进行组合或者分割。
10.根据权利要求1所述的内存管理方法,其特征在于,所述方法还包括:
若接收到所述目标大页内存块使用完毕的通知,释放所述目标大页内存块,将所述目标大页内存块的使用状态由使用中的锁定状态切换至空闲状态。
11.一种内存管理装置,其特征在于,包括:
接收模块,用于接收内存获取请求,所述内存获取请求用于指示在大页内存中分配内存,所述大页内存用于存储大页内存块;
所述装置还用于:
获取与所述大页内存对应的当前分割周期的分割规则;若所述分割规则指示将所述大页内存按照第一大小等分,将所述大页内存按照第一大小,分割成多个大小相等的第一大页内存块;在与所述大页内存对应的共享内存中建立多组共享内存地址范围与所述第一大页内存块之间的地址映射;
查找模块,用于在所述大页内存中查找与所述内存获取请求匹配的目标大页内存块,所述目标大页内存块为所述大页内存中待分配的下一个大页内存块;
在所述大页内存中查找与所述内存获取请求匹配的目标大页内存块,包括:
若所述大页内存中不存在空闲状态的第一大页内存块,获取所述大页内存中每个第一大页内存块的已使用大小;
基于所述第一大小和每个所述第一大页内存块的已使用大小,确定任一所述第一大页内存块的剩余大小;
确定任一所述第一大页内存块的剩余大小是否与所述内存获取请求匹配;
若任一所述第一大页内存块的剩余大小与所述内存获取请求匹配,将该第一大页内存块中未使用的区域进行分割,得到第一子内存块,所述第一子内存块的大小为所述剩余大小;
将所述第一子内存块确定为所述目标大页内存块;
返回模块,用于返回所述目标大页内存块在与所述大页内存对应的共享内存中的地址映射信息,并将所述目标大页内存块的使用状态切换至锁定状态,所述共享内存用于存储所述大页内存中的大页内存块与共享内存地址范围之间的地址映射信息。
12.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1~10任一所述的内存管理方法。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有内存管理方法的程序,所述内存管理方法的程序被处理器执行时实现权利要求1-10任一所述的内存管理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110623258.7A CN113076266B (zh) | 2021-06-04 | 2021-06-04 | 一种内存管理方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110623258.7A CN113076266B (zh) | 2021-06-04 | 2021-06-04 | 一种内存管理方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113076266A CN113076266A (zh) | 2021-07-06 |
CN113076266B true CN113076266B (zh) | 2021-10-29 |
Family
ID=76617000
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110623258.7A Active CN113076266B (zh) | 2021-06-04 | 2021-06-04 | 一种内存管理方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113076266B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113867969A (zh) * | 2021-11-30 | 2021-12-31 | 深圳华云信息系统有限公司 | 一种内存分块方法、装置、电子设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103810115A (zh) * | 2012-11-15 | 2014-05-21 | 深圳市腾讯计算机系统有限公司 | 一种内存池的管理方法和装置 |
CN108804350A (zh) * | 2017-04-27 | 2018-11-13 | 华为技术有限公司 | 一种内存访问方法及计算机系统 |
CN112445767A (zh) * | 2020-11-30 | 2021-03-05 | 平安科技(深圳)有限公司 | 内存管理方法及装置、电子设备、存储介质 |
CN112650577A (zh) * | 2019-10-12 | 2021-04-13 | 龙芯中科技术股份有限公司 | 内存管理方法和装置 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6804766B1 (en) * | 1997-11-12 | 2004-10-12 | Hewlett-Packard Development Company, L.P. | Method for managing pages of a designated memory object according to selected memory management policies |
CN112162938B (zh) * | 2015-08-10 | 2024-07-12 | 北京忆恒创源科技股份有限公司 | 大页内存分配方法及其计算机 |
CN107168890B (zh) * | 2017-04-01 | 2021-03-19 | 杭州联吉技术有限公司 | 一种内存池的管理方法和装置 |
CN108920276A (zh) * | 2018-06-27 | 2018-11-30 | 郑州云海信息技术有限公司 | Linux系统内存分配方法、系统及设备和存储介质 |
CN109508304B (zh) * | 2018-11-14 | 2021-10-29 | 郑州云海信息技术有限公司 | 一种内存管理元数据的处理方法及装置 |
US11989135B2 (en) * | 2020-02-10 | 2024-05-21 | Intel Corporation | Programmable address range engine for larger region sizes |
CN112214329B (zh) * | 2020-11-04 | 2023-09-22 | 腾讯科技(上海)有限公司 | 内存管理方法、装置、设备及计算机可读存储介质 |
-
2021
- 2021-06-04 CN CN202110623258.7A patent/CN113076266B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103810115A (zh) * | 2012-11-15 | 2014-05-21 | 深圳市腾讯计算机系统有限公司 | 一种内存池的管理方法和装置 |
CN108804350A (zh) * | 2017-04-27 | 2018-11-13 | 华为技术有限公司 | 一种内存访问方法及计算机系统 |
CN112650577A (zh) * | 2019-10-12 | 2021-04-13 | 龙芯中科技术股份有限公司 | 内存管理方法和装置 |
CN112445767A (zh) * | 2020-11-30 | 2021-03-05 | 平安科技(深圳)有限公司 | 内存管理方法及装置、电子设备、存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113076266A (zh) | 2021-07-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9361215B2 (en) | Memory allocation improvements | |
US8095736B2 (en) | Methods and systems for dynamic cache partitioning for distributed applications operating on multiprocessor architectures | |
US9489409B2 (en) | Rollover strategies in a N-bit dictionary compressed column store | |
WO2017016423A1 (zh) | 一种实时新增数据更新方法和装置 | |
US20180336140A1 (en) | Method and system for flash-aware heap memory management | |
CN110727517A (zh) | 一种基于分区设计的内存分配方法和装置 | |
CN116089321A (zh) | 内存管理方法、装置、电子装置和存储介质 | |
CN109933543B (zh) | Cache的数据锁定方法、装置和计算机设备 | |
US20170062025A1 (en) | Memory system including plural memory devices forming plural ranks and memory controller accessing plural memory ranks and method of operating the memory system | |
CN113076266B (zh) | 一种内存管理方法、装置、电子设备及存储介质 | |
CN111182043B (zh) | 哈希值的分配方法及装置 | |
US9697048B2 (en) | Non-uniform memory access (NUMA) database management system | |
CN117234732A (zh) | 共享资源的分配方法、装置、设备及介质 | |
CN113296703B (zh) | 一种堆内存管理方法、装置、设备及介质 | |
CN117311997B (zh) | 一种计算芯片的内存管理方法、装置及计算芯片 | |
US10152258B1 (en) | Big block allocation of persistent main memory | |
CN110825732A (zh) | 数据查询方法、装置、计算机设备和可读存储介质 | |
CN113905252B (zh) | 直播间的数据存储方法、装置、电子设备及存储介质 | |
CN114780246A (zh) | 内存访问信息的确定方法、存储介质及程序产品 | |
CN108572871B (zh) | 一种资源分配方法、装置、电子设备及存储介质 | |
CN111767281A (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
CN115708078A (zh) | 一种数据存储方法及装置、存储介质 | |
CN112114962A (zh) | 一种内存分配方法及装置 | |
US11288200B2 (en) | Method and system for task-based cache isolation | |
US20230068779A1 (en) | Method for Evicting Data from Memory |
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 | ||
CP03 | Change of name, title or address |
Address after: 9th Floor, Block A, Shenzhen National Engineering Laboratory Building, No. 20, Gaoxin South 7th Road, High-tech Zone Community, Yuehai Street, Nanshan District, Shenzhen, Guangdong 518000 Patentee after: Shenzhen Huayun Information System Technology Co.,Ltd. Address before: No. 904, block a, national engineering laboratory building, Gaoxin South 7th road digital technology park, Yuehai street, Nanshan District, Shenzhen, Guangdong 518000 Patentee before: Shenzhen Huayun Information System Co.,Ltd. |
|
CP03 | Change of name, title or address |