CN115129621A - 一种内存管理方法、设备、介质及内存管理模块 - Google Patents
一种内存管理方法、设备、介质及内存管理模块 Download PDFInfo
- Publication number
- CN115129621A CN115129621A CN202211064244.7A CN202211064244A CN115129621A CN 115129621 A CN115129621 A CN 115129621A CN 202211064244 A CN202211064244 A CN 202211064244A CN 115129621 A CN115129621 A CN 115129621A
- Authority
- CN
- China
- Prior art keywords
- pble
- pbles
- hierarchies
- pds
- memory management
- 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
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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0882—Page mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种内存管理方法、设备、介质及内存管理模块。方法包括:提供包括多个PD的PBLE资源池,多个PD各自包括至少一个PBLE且根据各自所包括的PBLE个数被划分为多个阶层中的一个,多个阶层各自对应彼此不重叠的多个PBLE个数范围;响应于接收到指示了最小连续PBLE数的内存注册请求,从多个阶层中选择给定阶层,以及从划分到给定阶层的PD中选择给定PD用于该请求。最小连续PBLE数不大于给定阶层的PBLE个数范围的最大值,给定PD包括最小连续PBLE数的连续分布且未占用的PBLE。如此降低碎片化概率和提高整体的存储利用率。
Description
技术领域
本申请涉及计算机技术领域,特别涉及数据存储技术领域,尤其涉及一种内存管理方法、设备、介质及内存管理模块。
背景技术
高性能计算技术、大数据分析技术、人工智能技术以及物联网技术取得了巨大发展,存储技术如集中式存储和分布式存储以及云数据库技术也得到广泛运用,这些对数据中心网络的交换速度和数据处理性能提出了更高的要求,也对网络传输和数据处理所导致的延迟提出了更高的要求。基于传输控制/网络协议(TCP/IP传输协议)等通信协议的网络传输和数据处理,存在多次拷贝和中断操作,带来了较大系统负载。远程直接内存访问(remote direct memory access,RDMA)可以实现将一个系统的数据如用户应用数据通过网络直接传输到远程系统如服务器的存储区,这样省去了数据拷贝、文本交换等操作如此便可降低系统负载。RDMA的运用需要满足特定的网络协议和特殊要求的硬件支持,包括内存注册(memory registration,MR)方面的内存硬件要求。
在现有技术中,支持RDMA或者类似技术的硬件,在内存管理、数据存储方面例如MR,存在存储资源利用率低、资源浪费等问题。
综上所述,目前需要解决的问题是如何提高存储资源利用率和降低控制资源浪费。
发明内容
本申请实施例提供了一种内存管理方法、设备、介质及内存管理模块,用于解决现有技术中存在的问题也就是如何提高存储资源利用率和降低控制资源浪费。
第一方面,本申请提供了一种内存管理方法。所述内存管理方法包括:提供包括多个页描述符PD的页缓冲区列表项PBLE资源池,其中所述多个PD各自包括至少一个PBLE,所述多个PD根据各自所包括的PBLE个数被划分为多个阶层中的一个阶层,所述多个阶层各自对应彼此不重叠的多个PBLE个数范围;响应于接收到指示了最小连续PBLE数的内存注册请求,从所述多个阶层中选择给定阶层,以及从划分到所述给定阶层的PD中选择给定PD用于所述内存注册请求,其中所述最小连续PBLE数不大于所述给定阶层的PBLE个数范围的最大值,所述给定PD包括所述最小连续PBLE数的连续分布且未占用的PBLE。
通过本申请的第一方面,建立起了PBLE资源池中多个PD之间的规律性从而有利于后续最大限度利用所有可支配的PBLE资源,按照所述给定阶层的PBLE个数范围的最大值快速筛选出有可能容纳所述最小连续PBLE数的阶层并且从中选择给定PD,有利于最大限度利用所有PD的可支配的存储资源,提高整体的存储利用率。
在本申请的第一方面的一种可能的实现方式中,所述多个阶层按照特定次序排列,按照所述特定次序逐个地判断所述多个阶层中每一个阶层的PD是否包括所述最小连续PBLE数的连续分布且未占用的PBLE,将包括所述最小连续PBLE数的连续分布且未占用的PBLE的首个PD作为所述给定PD以及将所述首个PD所在的阶层作为所述给定阶层。
在本申请的第一方面的一种可能的实现方式中,所述特定次序指示所述多个阶层按照各自的PBLE个数范围的最小值、最大值、中位数或者平均数从小到大或者从大到小排列。
在本申请的第一方面的一种可能的实现方式中,所述特定次序是基于所述多个阶层各自的PBLE个数范围的分布规律。
在本申请的第一方面的一种可能的实现方式中,所述特定次序指示所述多个阶层按照各自的PBLE个数范围的最大值从小到大排列或者从大到小排列,其中,所述多个阶层各自的PBLE个数范围的最大值表示为M的N次方,M是大于1的正整数,N是阶层数且是大于等于1的正整数。
在本申请的第一方面的一种可能的实现方式中,所述特定次序指示所述多个阶层按照各自的PBLE个数范围的最大值从小到大排列,所述多个阶层各自的PBLE个数范围的最大值表示为2的N次方,所述多个阶层各自的PBLE个数范围的最小值表示为2的N-1次方再加1,其中N是阶层数且是大于等于1的正整数。
在本申请的第一方面的一种可能的实现方式中,所述特定次序指示所述多个阶层按照各自的PBLE个数范围的最大值从小到大排列,所述内存管理方法还包括:当所述多个阶层中的每一个阶层的PBLE个数范围的最大值小于所述最小连续PBLE数时,判断该阶层的PD不包括所述最小连续PBLE数的连续分布且未占用的PBLE。
在本申请的第一方面的一种可能的实现方式中,所述内存管理方法还包括:当所述多个阶层中的每一个阶层的PD均不包括所述最小连续PBLE数的连续分布且未占用的PBLE,从空闲PD中选择新PD用于所述内存注册请求。
在本申请的第一方面的一种可能的实现方式中,所述空闲PD所包括的所有PBLE均未占用。
在本申请的第一方面的一种可能的实现方式中,所述新PD不属于所述多个PD,所述新PD被添加到所述PBLE资源池以及按照所述多个阶层划分所述新PD。
在本申请的第一方面的一种可能的实现方式中,所述新PD属于所述多个PD,所述多个PD各自包括计数,所述多个PD按照各自所包括的PBLE的被占用次数对该PD的计数加1以及按照各自所包括的PBLE的被释放次数对该PD的计数减1,所述多个PD中计数为0的PD属于所述空闲PD。
在本申请的第一方面的一种可能的实现方式中,多个bitmap与所述多个PD一一对应,所述多个PD各自对应的bitmap指示该PD所包括的PBLE是否为未占用,所述多个bitmap组成bitmap矩阵,所述bitmap矩阵的稀疏分布用于选择所述给定阶层和所述给定PD。
在本申请的第一方面的一种可能的实现方式中,多个bitmap与所述多个PD一一对应,所述多个bitmap中的每一个bitmap包括至少一个向量用于指示与该bitmap对应的PD中的每一个PBLE的状态为已分配或者未占用,其中状态为已分配的PBLE对应向量为1,状态为未占用的PBLE对应向量为0。
在本申请的第一方面的一种可能的实现方式中,通过对所述多个bitmap各自包括的向量进行求和运算来判断每一个bitmap对应的PD所包括的所有PBLE是否均未占用。
在本申请的第一方面的一种可能的实现方式中,通过对所述多个阶层中每一个阶层的PD对应的bitmap所包括的向量进行求和运算来判断该阶层的PD是否包括所述最小连续PBLE数的连续分布且未占用的PBLE。
在本申请的第一方面的一种可能的实现方式中,多个bitmap与所述多个PD一一对应,所述多个bitmap中的每一个bitmap用于指示与该bitmap对应的PD中的每一个PBLE的状态为已分配、未占用或者保留,其中状态为保留的PBLE用于优先级较高的内存注册请求。
第二方面,本申请实施例还提供了一种计算机设备,所述计算机设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现根据上述任一方面的任一种实现方式的方法。
第三方面,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机设备上运行时使得所述计算机设备执行根据上述任一方面的任一种实现方式的方法。
第四方面,本申请实施例还提供了一种计算机程序产品,其特征在于,所述计算机程序产品包括存储在计算机可读存储介质上的指令,当所述指令在计算机设备上运行时使得所述计算机设备执行根据上述任一方面的任一种实现方式的方法。
第五方面,本申请实施例还提供了一种内存管理模块。所述内存管理模块包括:PBLE资源池,其中所述PBLE资源池包括多个PD,所述多个PD各自包括至少一个PBLE,所述多个PD根据各自所包括的PBLE个数被划分为多个阶层中的一个阶层,所述多个阶层各自对应彼此不重叠的多个PBLE个数范围;接收模块,用于接收指示了最小连续PBLE数的内存注册请求;选择模块,用于从所述多个阶层中选择给定阶层,以及从划分到所述给定阶层的PD中选择给定PD用于所述内存注册请求,其中所述最小连续PBLE数不大于所述给定阶层的PBLE个数范围的最大值,所述给定PD包括所述最小连续PBLE数的连续分布且未占用的PBLE。
通过本申请的第五方面,建立起了PBLE资源池中多个PD之间的规律性从而有利于后续最大限度利用所有可支配的PBLE资源,按照所述给定阶层的PBLE个数范围的最大值快速筛选出有可能容纳所述最小连续PBLE数的阶层并且从中选择给定PD,有利于最大限度利用所有PD的可支配的存储资源,提高整体的存储利用率。
在本申请的第五方面的一种可能的实现方式中,所述多个阶层按照特定次序排列,按照所述特定次序逐个地判断所述多个阶层中每一个阶层的PD是否包括所述最小连续PBLE数的连续分布且未占用的PBLE,将包括所述最小连续PBLE数的连续分布且未占用的PBLE的首个PD作为所述给定PD以及将所述首个PD所在的阶层作为所述给定阶层。
在本申请的第五方面的一种可能的实现方式中,所述特定次序指示所述多个阶层按照各自的PBLE个数范围的最大值从小到大排列,所述多个阶层各自的PBLE个数范围的最大值表示为2的N次方,所述多个阶层各自的PBLE个数范围的最小值表示为2的N-1次方再加1,其中N是阶层数且是大于等于1的正整数。
在本申请的第五方面的一种可能的实现方式中,所述特定次序指示所述多个阶层按照各自的PBLE个数范围的最大值从小到大排列,所述选择模块还用于:当所述多个阶层中的每一个阶层的PBLE个数范围的最大值小于所述最小连续PBLE数时,判断该阶层的PD不包括所述最小连续PBLE数的连续分布且未占用的PBLE。
在本申请的第五方面的一种可能的实现方式中,所述选择模块还用于:当所述多个阶层中的每一个阶层的PD均不包括所述最小连续PBLE数的连续分布且未占用的PBLE,从空闲PD中选择新PD用于所述内存注册请求。
在本申请的第五方面的一种可能的实现方式中,多个bitmap与所述多个PD一一对应,所述多个PD各自对应的bitmap指示该PD所包括的PBLE是否为未占用,所述多个bitmap组成bitmap矩阵,所述bitmap矩阵的稀疏分布用于选择所述给定阶层和所述给定PD。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种内存管理方法流程示意图;
图2为本申请实施例提供的一种PBLE资源池的一部分的示意图;
图3为本申请实施例提供的一种内存管理模块示意图;
图4是本申请实施例提供的一种计算设备的结构示意图。
具体实施方式
下面将结合附图对本申请实施例作进一步地详细描述。
本申请实施例提供了一种内存管理方法、设备、介质及内存管理模块,用于解决现有技术中存在的问题也就是如何提高存储资源利用率和降低控制资源浪费。其中,本申请实施例提供的方法和设备是基于同一发明构思的,由于方法及设备解决问题的原理相似,因此方法与设备的实施例、实施方式、示例或实现方式可以相互参见,其中重复之处不再赘述。
应当理解的是,在本申请的描述中,“至少一个”指一个或一个以上,“多个”指两个或两个以上。另外,“第一”、“第二”等词汇,除非另有说明,否则仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。
应当理解的是,为了表述简洁,本申请实施例及附图可能使用NIC指代网卡(network interface controller)、网络适配器、网络接口控制器或者其它的被设计用于允许计算机在计算机网络上进行通讯的计算机硬件如局域网接收器等。此外,本申请实施例及附图可能使用PBLE指代页缓冲区列表项(page buffer list entry),页缓冲区列表项还可以理解为用于构建物理地址特别是不连续的物理地址和虚拟地址之间的正确映射关系的页缓冲方式。此外,本申请实施例及附图可能使用PD指代页描述符(pagedescriptors),页描述符还可以理解为用于存储PBLE的其它合适的数据格式。
参见图1,图1为本申请实施例提供的一种内存管理方法流程示意图。其中,图1的内存管理方法适用于RDMA或者类似的内存管理机制、远程内存直接访问、远程直接数据读取等技术。其中,RDMA或者类似的内存管理机制、远程内存直接访问、远程直接数据读取等技术,为了将数据从一个系统快速移动到另一个系统(后一个系统一般位于相对于前一个系统的远端),例如将数据从客户应用端快速移动到服务器端,并且在数据移动过程中尽量减少数据复制、文本交换以及操作系统资源占用、系统负载等,主要依赖对要传输的信息进行标记后再存储到正确区域。具体地,RDMA或者类似的内存管理机制、远程内存直接访问、远程直接数据读取等技术,一般由在用户空间或者用户态下的应用发起RDMA读写请求,然后该RDMA读写请求作为数据传输请求的一部分经网络传输到远程的网卡(networkinterface card,简称NIC,也叫做网络接口控制器(network interface controller,NIC),或者叫做网络接口控制器、网络适配器(network adapter)、局域网接收器(LANadapter)等),由远程的NIC直接将数据写入缓存中。RDMA读写请求可以分为将远程系统内存里的数据拉回到本地系统内存的RDMA读操作以及将本地系统内存的数据推送到远程系统内存的RDMA写操作,两者都涉及到本地系统内存和远程系统内存。在进行RDMA数据业务传输时,例如应用发起RDMA读写请求或者执行RDMA读操作或RDMA写操作,应用访问主机内存采用的是虚拟地址而硬件如NIC访问主机内存采用的是物理地址。也就是说,用户空间的应用采用虚拟地址而支持RDMA的网卡采用物理地址来绕过系统内核进行数据传输,从而避免额外的数据转移和数据复制操作。并且,因为涉及到本地系统内存和远程系统内存,所以需要创建两个密钥,一个本地密钥和一个远程密钥,分别指向需要操作的内存区域,并且数据传输请求包括这些密钥用于实现上述的将远程系统内存里的数据拉回到本地系统内存的RDMA读操作以及将本地系统内存的数据推送到远程系统内存里的RDMA写操作。而且,为了确保RDMA读写请求、RDMA读操作或者RDMA写操作的正确执行,在数据传输过程中要避免修改数据所在的主机内存,以及要保持物理地址和虚拟地址之间的映射关系是固定不变的。因此,应用程序使用的是虚拟地址,而虚拟地址要映射到物理地址才能正确地读取和写入数据。通过页缓冲区列表项(page buffer list entry,PBLE),可以将不连续的物理地址先映射到PBLE上,再将PBLE层面连续分布的多个PBLE映射到虚拟地址上。这样从用户应用来看,只看到连续分布的多个PBLE,当用户应用将虚拟地址下发到硬件如NIC后,硬件先根据虚拟地址查找对应的PBLE,再根据对应的PBLE查找该PBLE映射的物理地址从而完成数据读写操作。这样有利于整合不连续分布的物理地址,提高存储资源利用效率。在一种实现方式中,在内存中通过申请页描述符(page descriptors,PD)来存储PBLE,一个PD可以包括多个PBLE并且可以记录PD中PBLE的使用情况,也就是PBLE被占用也叫已分配或者PBLE未被占用。可以采用位图(bitmap)的方式或者类似的二元化表达方式记录一个PD所包括的多个PBLE的使用情况。例如在bitmap中用0表示未被占用,用1表示已分配。bitmap上连续的多个0表示有多个连续分布的PBLE是未被占用的。可以用一个区块(chunk)对应一个PD,多个区块构成区块表(chunk list)对应多个PD。在区块表中对PD寻址也就是从区块表对应的多个PD中寻找PD,然后在该PD下属的多个PBLE中对PD下的PBLE寻址。这样的PD寻址或者说基于区块表寻址和PBLE寻址或者说基于bitmap寻址实现了从虚拟地址到不连续分布的物理地址(也适用于连续分布的物理地址)的映射。
上述的采用PD寻址和采用PBLE寻址所结合而成的寻址机制,适用于RDMA或者类似的内存管理机制、远程内存直接访问、远程直接数据读取等,这些应用场景主要依赖构建从虚拟地址到不连续分布的物理地址的映射关系并通过对要传输的数据进行正确标记以绕过系统内核进行数据传输从而避免额外的数据转移和数据复制操作。当发生内存注册(memory registration,MR)需求或者说需要执行注册MR操作时,根据MR需求(例如要写入的数据大小等),先在区块表中寻找是否有某个PD下有足够多的连续分布的未占用的PBLE,如通过检查bitmap上有足够多的连续的0。如果有则分配该PD下的相应PBLE。如果没有的话,则申请一个新的PD来分配PBLE。当需要执行去注册MR操作也就是删除已经注册的MR,将已经分配给该MR的PBLE资源进行回收。这里为了节省操作一般不会从实际物理存储空间中删除旧数据,而是将要回收的PBLE对应的bitmap上清零,也就是使得要回收的PBLE的状态表现为未被占用的状态,这样后续的新的注册MR就可以使用这些要回收的PBLE并用新数据覆盖旧数据。当后续有新的注册MR时,可能存在新的注册MR无法在当前的区块表中找到某个PD下有足够的连续分布的未被占用的PBLE资源,但是申请新的PD时发现没有空闲的PD可以分配,这是因为用于PD的内存资源也是有限的。这样就造成PD资源和PBLE资源的闲置而且也没有满足注册MR的需求。此外,注册MR时所寻找的PBLE资源一般是某个PD下有足够多的连续分布的未占用的PBLE。实践中,可能进行了许多次不同大小的注册MR操作和去注册MR操作,这种情况发生于存在大量短连接的场景如语音通信。例如频繁地申请对大量的不同大小的语音会话相关数据(如不同通话时长等)进行注册MR操作,也频繁地申请对结束的语音会话环节进行去注册MR操作从而释放资源。这样频繁地进行的不同大小甚至大小差距很大的注册MR操作和去注册MR操作,例如通话时长可能从一分钟到十分钟再到几个小时,也就相应地使得用户应用对应的内存大小从几百比特到几千比特再到几兆比特,就会使得空闲PBLE出现碎片化的情况,也就是存在大量不连续分布的未被占用的PBLE。这些碎片化分布的空闲PBLE因为不满足“足够多的连续分布的未占用的PBLE”这一要求而无法被用于新的注册MR操作,但是这些碎片化分布的空闲PBLE之间存在的是已被占用的PBLE或者说已分配的PBLE。上面提到了,为了确保RDMA读写请求、RDMA读操作或者RDMA写操作的正确执行,在数据传输过程中要避免修改数据所在的主机内存,以及要保持物理地址和虚拟地址之间的映射关系是固定不变的。因此,这意味着难以重新排布这些碎片化的空闲PBLE,对碎片化的空闲PBLE以及他们之间的已分配PBLE进行改动、重新排布等,都可能导致对物理地址和虚拟地址之间的映射关系的改动或者可能导致对数据所在的主机内存的改动,从而可能导致RDMA读写请求、RDMA读操作或者RDMA写操作无法正确地执行。不同于硬盘存储碎片可以通过硬盘整理如重排等进行优化,这些碎片化分布的空闲PBLE只是在虚拟地址和物理地址之间的映射关系的一部分,无法像硬盘碎片整理那样进行重排优化。换句话说,一旦发生了碎片化分布的空闲PBLE的情况,只能等待造成这种碎片化分布的已被占用的PBLE后续被释放后,才能让存在碎片化情况的这一段的PBLE资源恢复到连续分布的未被占用的情况,从而可用于后续的新的注册MR的需求。因此,有必要在注册MR或者要写入数据时,就尽量降低发生碎片化情况的概率,也就是降低因为当前注册MR需求而导致出现存在大量不连续分布的未被占用的PBLE的现象的概率。下面结合图1进行详细说明本申请实施例所提出的各项改进是如何实现在注册MR或者要写入数据时尽量降低发生碎片化情况的概率。如图1所示,内存管理方法包括以下步骤。
步骤S102:提供包括多个PD的PBLE资源池,其中所述多个PD各自包括至少一个PBLE,所述多个PD根据各自所包括的PBLE个数被划分为多个阶层中的一个阶层,所述多个阶层各自对应彼此不重叠的多个PBLE个数范围。
步骤S104:响应于接收到指示了最小连续PBLE数的内存注册请求,从所述多个阶层中选择给定阶层,以及从划分到所述给定阶层的PD中选择给定PD用于所述内存注册请求,其中所述最小连续PBLE数不大于所述给定阶层的PBLE个数范围的最大值,所述给定PD包括所述最小连续PBLE数的连续分布且未占用的PBLE。
在步骤S102中,多个PD按照各自包括的PBLE个数被分成多个阶层中的一个阶层,这里多个阶层各自对应彼此不重叠的多个PBLE个数范围,也就是说,每一个阶层对应一个PBLE个数范围并且不同的阶层各自的PBLE个数范围不重叠。在一些示例性实施例中,多个阶层各自的PBLE个数范围中的最大值可以是2的N次方的形式,N可以是1、2、3、4或者任意的正整数,例如第一阶层对应的PBLE个数范围是不超过2的1次方也就是不超过2,第二阶层对应的PBLE个数范围是不超过2的2次方也就是不超过4但是大于2,第三阶层对应的PBLE个数范围是不超过2的3次方也就是不超过8但是大于4。在另一些示例性实施例中,多个阶层各自的PBLE个数范围可以是按照一定数值间隔划分,例如第一阶层对应的PBLE个数范围是大于1但不超过10,第二阶层对应的PBLE个数范围是大于10但不超过20,第三阶层对应的PBLE个数范围是大于20但不超过30。应当理解的是,可以采用任意的合适的方式或者数学关系来确定多个阶层各自对应的彼此不重叠的多个PBLE个数范围,例如可以采用2的N次方加上一定数值间隔的方式,只要满足多个PBLE个数范围彼此不重叠的要求。接着在步骤S104中,内存注册请求可以对应上面提到的任一种可能的情形,例如内存注册需求、MR需求、注册MR操作、RDMA读写请求、RDMA读操作或RDMA写操作等,并且该内存注册请求指示了最小连续PBLE数。上面提到,用户应用或者应用程序使用的是虚拟地址,而虚拟地址要映射到物理地址才能正确地读取和写入数,因此将不连续的物理地址先映射到PBLE上再将PBLE层面连续分布的多个PBLE映射到虚拟地址上,这样从用户应用角度只看到连续分布的多个PBLE,从而有利于整合不连续分布的物理地址和提高存储资源利用效率。这里,最小连续PBLE数体现了用户应用相关联的连续分布的多个PBLE的要求,也是与该内存注册请求对应的操作或者指令(例如MR需求、RDMA写操作等)相关联的要求。因此,为了确保该内存注册请求可以正确执行以及确保相关的后续操作例如RDMA写操作能够正确执行,必须在当前可用的PBLE资源中也就是未占用或者未分配的PBLE资源中寻找到连续分布的多个PBLE且这样连续分布的多个PBLE的PBLE个数必须等于或者大于该内存注册请求所指示的最小连续PBLE数。因此,在步骤S104中,从所述多个阶层中选择给定阶层,以及从划分到所述给定阶层的PD中选择给定PD用于所述内存注册请求,其中所述最小连续PBLE数不大于所述给定阶层的PBLE个数范围的最大值,所述给定PD包括所述最小连续PBLE数的连续分布且未占用的PBLE。上面提到,多个PBLE个数范围彼此不重叠,因此最小连续PBLE数只可能落入多个PBLE个数范围中的一个PBLE个数范围(所述给定阶层的PBLE个数范围内)或者不落入多个PBLE个数范围中的任何一个。下面会进一步说明当最小连续PBLE数不落入多个PBLE个数范围中的任何一个的情况,在步骤S104中假设存在给定阶层满足所述最小连续PBLE数不大于所述给定阶层的PBLE个数范围的最大值,并且存在所述给定阶层的PD中的所述给定PD包括所述最小连续PBLE数的连续分布且未占用的PBLE,则可以选择该给定阶层的给定PD用于所述内存注册请求。
下面结合图2的示例说明图1的内存管理方法的运行。参见图2,图2为本申请实施例提供的一种PBLE资源池的一部分的示意图。图2中的PBLE资源池包括多个PD,也叫做多个页描述符,分别为页描述符210、页描述符212、页描述符220和页描述符222。其中,页描述符210和页描述符212属于阶层202,页描述符220和页描述符222属于阶层204。页描述符210具有4个PBLE,其中3个已分配,1个未占用;页描述符212具有5个PBLE,其中3个已分配,2个未占用;页描述符220具有8个PBLE,其中5个已分配,3个未占用;页描述符222具有9个PBLE,其中6个已分配,3个未占用。并且,图2中的多个PD也就是页描述符210、页描述符212、页描述符220和页描述符222各自的已分配PBLE和未占用PBLE的分布情况如图2所示。阶层202和阶层204的具体划分方式可以是按照2的N次方划分,例如阶层202对应的PBLE个数范围是大于2的2次方且小于2的3次方(大于4个PBLE且小于8个PBLE),阶层204对应的PBLE个数范围是大于2的3次方且小于2的4次方(大于8个PBLE且小于16个PBLE)。阶层202和阶层204的具体划分方式还可以采用其它的具体划分方式,只要满足多个PBLE个数范围彼此不重叠的要求。假设内存注册请求指示的最小连续PBLE数是2个,也就是要求2个连续分布并且未占用的PBLE。参考上述图1的内存管理方法,最小连续PBLE数是2个,因此按照所述最小连续PBLE数不大于所述给定阶层的PBLE个数范围的最大值的要求,阶层202和阶层204都可能成为给定阶层。但是进一步从图2可以看出,阶层202的页描述符210和页描述符212都不具有所述最小连续PBLE数(2个)的连续分布且未占用的PBLE,而阶层204的页描述符220也不满足,图2的阶层204的页描述符222满足该要求。因此选择阶层204的页描述符222作为给定阶层的给定PD用于所述内存注册请求。
参见图1和图2,随着PBLE资源池用于多次的注册MR操作和去注册MR操作,则可能存在不连续分布的未被占用的PBLE的情况,例如图2所示的阶层202的页描述符212有两个未占用的PBLE但是被已分配的PBLE隔离开从而无法用于满足要求最小连续PBLE数是2个的内存注册请求,这样的呈现碎片化分布特点或者离散化分布特点的空闲PBLE或者未占用PBLE的分布情况,一旦形成了,就难以通过如重排等操作进行改动。这是因为PBLE资源池中已分配的PBLE,对应的是过去已经执行的内存注册请求,例如内存注册需求、MR需求、注册MR操作、RDMA读写请求、RDMA读操作或RDMA写操作等,因此要求在数据传输过程中避免修改数据所在的主机内存以及要保持物理地址和虚拟地址之间的映射关系固定不变。为此,图1所示的内存管理方法,通过在实现内存注册请求时,例如注册MR或者要写入数据时尽量降低发生这种碎片化分布或者离散化分布的情况的概率。具体地,图1所示的内存管理方法,要求所述多个PD根据各自所包括的PBLE个数被划分为多个阶层中的一个阶层并且所述多个阶层各自对应彼此不重叠的多个PBLE个数范围,这样建立起了PBLE资源池中多个PD之间的规律性从而有利于后续最大限度利用所有可支配的PBLE资源;并且要求所述最小连续PBLE数不大于所述给定阶层的PBLE个数范围的最大值以及所述给定PD包括所述最小连续PBLE数的连续分布且未占用的PBLE,这样有助于按照所述给定阶层的PBLE个数范围的最大值快速筛选出有可能容纳所述最小连续PBLE数的阶层并且从中选择给定PD;通过按照所述给定阶层的PBLE个数范围的最大值快速筛选,有助于按照各个PD各自对应的PBLE个数范围的最大值从较低阶层向较高阶层进行筛选,或者说,有助于优先利用具有较少的PBLE个数范围的最大值的PD或者较低阶层的PD所具有的PBLE资源,有利于最大限度利用所有PD的可支配的存储资源,提高整体的存储利用率。
总之,图1所示的内存管理方法,建立起了PBLE资源池中多个PD之间的规律性从而有利于后续最大限度利用所有可支配的PBLE资源,按照所述给定阶层的PBLE个数范围的最大值快速筛选出有可能容纳所述最小连续PBLE数的阶层并且从中选择给定PD,有利于最大限度利用所有PD的可支配的存储资源,提高整体的存储利用率。
在一种可能的实施方式中,所述多个阶层按照特定次序排列,按照所述特定次序逐个地判断所述多个阶层中每一个阶层的PD是否包括所述最小连续PBLE数的连续分布且未占用的PBLE,将包括所述最小连续PBLE数的连续分布且未占用的PBLE的首个PD作为所述给定PD以及将所述首个PD所在的阶层作为所述给定阶层。这里,特定次序用于更好地从多个阶层中筛选出适合用于所述内存注册请求的给定阶层。并且,将首个PD作为给定PD,有利于提高筛选效率。另外,按照所述特定次序逐个地判断所述多个阶层中每一个阶层的PD是否包括所述最小连续PBLE数的连续分布且未占用的PBLE,也意味着,如果当前阶层的PD中无法满足分配要求则进入下一个阶层。例如,假设多个阶层各自对应的PBLE个数范围的最大值是2的N次方,负责管理16个PBLE的是第4阶层也就是2的4次方;在该第4阶层的PD中寻找10个连续可分配的PBLE,如果没有找到足够的可连续分配的PBLE,则寻找可分配的PD也就是计数为0的PD,如果不存在可分配的PD,则意味着当前阶层的PD中无法满足分配要求,则进入下一个阶层,如从第4阶层进入第5阶层来寻找10个连续可分配的PBLE。这样的分配机制,使得从较低阶层向着较高阶层,充分利用了每个阶层的PD的所有可分配的PBLE特别是连续可分配的PBLE。并且因为阶层划分是基于彼此不重叠的多个PBLE个数范围,例如以2的N次方来划分,也有利于最大限度利用所有PD的可支配的存储资源,提高整体的存储利用率。
在一种可能的实施方式中,所述特定次序指示所述多个阶层按照各自的PBLE个数范围的最小值、最大值、中位数或者平均数从小到大或者从大到小排列。例如,以图2所示的阶层202和阶层204为例,阶层202对应的PBLE个数范围是大于2的2次方且小于2的3次方(大于4个PBLE且小于8个PBLE),阶层204对应的PBLE个数范围是大于2的3次方且小于2的4次方(大于8个PBLE且小于16个PBLE)。因此可以按照阶层202和阶层204各自的最小值、最大值、中位数或者平均数进行排列,并且可以按照从小到大或者从大到小的次序。如此,有利于灵活地建立起PBLE资源池中多个PD之间的规律性从而有利于后续最大限度利用所有可支配的PBLE资源。此外,对于多个阶层的划分,还可以借鉴伙伴关系算法或者类似算法,从而使得同一个阶层上的PD各自管理的PBLE数量相对比较接近,这样有利于有效减少PBLE碎片。除了按照2的N次方划分,可以考虑其他如3的N次方,5的N次方。另外,除了伙伴关系算法,可以考虑简单的区间划分方式,例如将PBLE个数从1到10,11到20,21到30这样划分成三个阶层。此外还可以考虑符合的区间划分方式,比如2的5次方加10,加20,加30。
在一种可能的实施方式中,所述特定次序是基于所述多个阶层各自的PBLE个数范围的分布规律。如此,有利于灵活地建立起PBLE资源池中多个PD之间的规律性从而有利于后续最大限度利用所有可支配的PBLE资源。
在一种可能的实施方式中,所述特定次序指示所述多个阶层按照各自的PBLE个数范围的最大值从小到大排列或者从大到小排列,其中,所述多个阶层各自的PBLE个数范围的最大值表示为M的N次方,M是大于1的正整数,N是阶层数且是大于等于1的正整数。例如,M可以是2,也就是按照2的N次方来确定所述多个阶层各自的PBLE个数范围的最大值。
在一种可能的实施方式中,所述特定次序指示所述多个阶层按照各自的PBLE个数范围的最大值从小到大排列,所述多个阶层各自的PBLE个数范围的最大值表示为2的N次方,所述多个阶层各自的PBLE个数范围的最小值表示为2的N-1次方再加1,其中N是阶层数且是大于等于1的正整数。例如,阶层数为3的阶层的PBLE个数范围的最大值为2的3次方也就是8个PBLE,而其最小值为2的2次方再加1也就是5个PBLE。
在一种可能的实施方式中,所述特定次序指示所述多个阶层按照各自的PBLE个数范围的最大值从小到大排列,所述内存管理方法还包括:当所述多个阶层中的每一个阶层的PBLE个数范围的最大值小于所述最小连续PBLE数时,判断该阶层的PD不包括所述最小连续PBLE数的连续分布且未占用的PBLE。如此,通过按照所述给定阶层的PBLE个数范围的最大值快速筛选,有助于按照各个PD各自对应的PBLE个数范围的最大值从较低阶层向较高阶层进行筛选,或者说,有助于优先利用具有较少的PBLE个数范围的最大值的PD或者较低阶层的PD所具有的PBLE资源,有利于最大限度利用所有PD的可支配的存储资源,提高整体的存储利用率。
在一种可能的实施方式中,所述内存管理方法还包括:当所述多个阶层中的每一个阶层的PD均不包括所述最小连续PBLE数的连续分布且未占用的PBLE,从空闲PD中选择新PD用于所述内存注册请求。在一种可能的实施方式中,所述空闲PD所包括的所有PBLE均未占用。例如,区块表包括多个PD,这些多个PD按照各自管理的PBLE个数划分到多个阶层。每个PD单独计数,其中的PBLE被分配计数加1而被释放则计数减1。计数为0的PD意味着其中PBLE都被释放,这样计数为0的PD可以被分配。当需要占用特定PBLE个数时,选择与该特定PBLE个数对应的阶层数,例如8个PBLE对应2的3次方也就是阶层数为3,10个PBLE对应2的4次方也就是阶层数为4。计数为0的PD是空闲PD,只有空闲PD可以用于创建新的PD,这样有效利用了有限的PD资源。
在一种可能的实施方式中,所述新PD不属于所述多个PD,所述新PD被添加到所述PBLE资源池以及按照所述多个阶层划分所述新PD。当有新的PD资源要加入或者现有PD资源要退出,也是相应地调整对应的阶层的PD资源,但是整体上的所有PD资源仍按照各自管理的PBLE个数划分成不同阶层,也就是说可以动态适应可用内存资源的变化。
在一种可能的实施方式中,所述新PD属于所述多个PD,所述多个PD各自包括计数,所述多个PD按照各自所包括的PBLE的被占用次数对该PD的计数加1以及按照各自所包括的PBLE的被释放次数对该PD的计数减1,所述多个PD中计数为0的PD属于所述空闲PD。例如,每个PD单独计数,其中的PBLE被分配计数加1而被释放则计数减1。计数为0的PD意味着其中PBLE都被释放,这样计数为0的PD可以被分配。当需要占用特定PBLE个数时,选择与该特定PBLE个数对应的阶层数,例如8个PBLE对应2的3次方也就是阶层数为3,10个PBLE对应2的4次方也就是阶层数为4。计数为0的PD是空闲PD,只有空闲PD可以用于创建新的PD,这样有效利用了有限的PD资源。
在一种可能的实施方式中,多个bitmap与所述多个PD一一对应,所述多个PD各自对应的bitmap指示该PD所包括的PBLE是否为未占用,所述多个bitmap组成bitmap矩阵,所述bitmap矩阵的稀疏分布用于选择所述给定阶层和所述给定PD。一个区块对应一个PD,该PD中的bitmap可以看做向量或者由0和1组成的一维数组,多个chunk对应多个PD,这样多个chunk所对应的多个bitmap可以组成二值化矩阵也就是bitmap矩阵。通过解析该二值化矩阵的行向量或者列向量就可以获悉每个bitmap及对应的PD中的PBLE使用情况,而解析该二值化矩阵的稀疏性能从宏观上更好包括chunk list上的多个chunk也就是多个PD的整体PBLE使用情况。
在一种可能的实施方式中,多个bitmap与所述多个PD一一对应,所述多个bitmap中的每一个bitmap包括至少一个向量用于指示与该bitmap对应的PD中的每一个PBLE的状态为已分配或者未占用,其中状态为已分配的PBLE对应向量为1,状态为未占用的PBLE对应向量为0。一个区块对应一个PD,该PD中的bitmap可以看做向量或者由0和1组成的一维数组,多个chunk对应多个PD,这样多个chunk所对应的多个bitmap可以组成二值化矩阵也就是bitmap矩阵。通过解析该二值化矩阵的行向量或者列向量就可以获悉每个bitmap及对应的PD中的PBLE使用情况,而解析该二值化矩阵的稀疏性能从宏观上更好包括chunk list上的多个chunk也就是多个PD的整体PBLE使用情况。例如,可以确定有多少组每一组至少有10个连续分布的0。
在一种可能的实施方式中,通过对所述多个bitmap各自包括的向量进行求和运算来判断每一个bitmap对应的PD所包括的所有PBLE是否均未占用。如此有利于通过bitmap提高判断效率。
在一种可能的实施方式中,通过对所述多个阶层中每一个阶层的PD对应的bitmap所包括的向量进行求和运算来判断该阶层的PD是否包括所述最小连续PBLE数的连续分布且未占用的PBLE。可以用稀疏性矩阵,比如用池化运算或者求和运算方式快速确定多个PD各自的bitmap组成的二维矩阵是否全为0。还可以用补零方式保证同一个阶层的PD各自的bitmap能组成二维矩阵也就是满足必要的矩阵维度要求。
在一种可能的实施方式中,多个bitmap与所述多个PD一一对应,所述多个bitmap中的每一个bitmap用于指示与该bitmap对应的PD中的每一个PBLE的状态为已分配、未占用或者保留,其中状态为保留的PBLE用于优先级较高的内存注册请求。PBLE寻址是以bitmap上指示的该PBLE是处于被占用或者未被占用作为依据,也就是两种状态。可以赋予PBLE更多的状态,例如已分配(bitmap上为1)、未占用(bitmap上为0)和保留(bitmap上为2)。其中,保留状态可以理解为处于保留状态的PBLE已经释放但是为高优先级需求保留。通过更丰富的PBLE状态,可以采用更丰富的表达方式例如三元组来表示每个PBLE的状态,例如包括0、1和2的三元组。在一般情况下,通过检查bitmap上的0和1来确定PBLE是已分配或者未占用,但是在某些情况下通过检查bitmap上的第三种状态如数值为2的PBLE,可以快速检索该PD中所包括的处于保留状态也就是第三种状态的PBLE。这样有利于确定适应高优先级需求的PBLE资源情况。在一些实施例中,存在对安全性要求较高的需求,例如要求可信执行环境或者使用更严格的安全协议的内存空间,这种情况下物理地址和相应的PBLE资源就可以理解为要为高优先级需求保留。
参见图3,图3为本申请实施例提供的一种内存管理模块示意图。如图3所示,所述内存管理模块包括:PBLE资源池310也叫页缓冲区列表项资源池310,其中所述PBLE资源池包括多个PD,所述多个PD各自包括至少一个PBLE,所述多个PD根据各自所包括的PBLE个数被划分为多个阶层中的一个阶层,所述多个阶层各自对应彼此不重叠的多个PBLE个数范围;接收模块320,用于接收指示了最小连续PBLE数的内存注册请求;选择模块330,用于从所述多个阶层中选择给定阶层,以及从划分到所述给定阶层的PD中选择给定PD用于所述内存注册请求,其中所述最小连续PBLE数不大于所述给定阶层的PBLE个数范围的最大值,所述给定PD包括所述最小连续PBLE数的连续分布且未占用的PBLE。
图3的内存管理模块,建立起了PBLE资源池中多个PD之间的规律性从而有利于后续最大限度利用所有可支配的PBLE资源,按照所述给定阶层的PBLE个数范围的最大值快速筛选出有可能容纳所述最小连续PBLE数的阶层并且从中选择给定PD,有利于最大限度利用所有PD的可支配的存储资源,提高整体的存储利用率。
在一种可能的实施方式中,所述多个阶层按照特定次序排列,按照所述特定次序逐个地判断所述多个阶层中每一个阶层的PD是否包括所述最小连续PBLE数的连续分布且未占用的PBLE,将包括所述最小连续PBLE数的连续分布且未占用的PBLE的首个PD作为所述给定PD以及将所述首个PD所在的阶层作为所述给定阶层。
在一种可能的实施方式中,所述特定次序指示所述多个阶层按照各自的PBLE个数范围的最大值从小到大排列,所述多个阶层各自的PBLE个数范围的最大值表示为2的N次方,所述多个阶层各自的PBLE个数范围的最小值表示为2的N-1次方再加1,其中N是阶层数且是大于等于1的正整数。
在一种可能的实施方式中,所述特定次序指示所述多个阶层按照各自的PBLE个数范围的最大值从小到大排列,所述选择模块还用于:当所述多个阶层中的每一个阶层的PBLE个数范围的最大值小于所述最小连续PBLE数时,判断该阶层的PD不包括所述最小连续PBLE数的连续分布且未占用的PBLE。
在一种可能的实施方式中,所述选择模块330还用于:当所述多个阶层中的每一个阶层的PD均不包括所述最小连续PBLE数的连续分布且未占用的PBLE,从空闲PD中选择新PD用于所述内存注册请求。
在一种可能的实施方式中,多个bitmap与所述多个PD一一对应,所述多个PD各自对应的bitmap指示该PD所包括的PBLE是否为未占用,所述多个bitmap组成bitmap矩阵,所述bitmap矩阵的稀疏分布用于选择所述给定阶层和所述给定PD。
参见图4,图4是本申请实施例提供的一种计算设备的结构示意图,该计算设备400包括:一个或者多个处理器410、通信接口420以及存储器430。所述处理器410、通信接口420以及存储器430通过总线440相互连接。可选地,该计算设备400还可以包括输入/输出接口450,输入/输出接口450连接有输入/输出设备,用于接收用户设置的参数等。该计算设备400能够用于实现上述的本申请实施例中设备实施例或者系统实施例的部分或者全部功能;处理器410还能够用于实现上述的本申请实施例中方法实施例的部分或者全部操作步骤。例如,该计算设备400执行各种操作的具体实现可参照上述实施例中的具体细节,如处理器410用于执行上述方法实施例中部分或者全部步骤或者上述方法实施例中的部分或者全部操作。再例如,本申请实施例中,计算设备400可用于实现上述装置实施例中一个或者多个部件的部分或者全部功能,此外通信接口420具体可用于为了实现这些装置、部件的功能所必须的通讯功能等,以及处理器410具体可用于为了实现这些装置、部件的功能所必须的处理功能等。
应当理解的是,图4的计算设备400可以包括一个或者多个处理器410,并且多个处理器410可以按照并行化连接方式、串行化连接方式、串并行连接方式或者任意连接方式来协同提供处理能力,或者多个处理器410可以构成处理器序列或者处理器阵列,或者多个处理器410之间可以分成主处理器和辅助处理器,或者多个处理器410之间可以具有不同的架构如采用异构计算架构。另外,图4所示的计算设备400,图4所示的结构和上述描述是示例性且非限制性的。在一些示例性实施例中,计算设备400可以包括比图4所示的更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者具有不同的部件布置。
处理器410可以有多种具体实现形式,例如处理器410可以包括中央处理器(central processing unit,CPU)、图形处理器(graphic processing unit,GPU)、神经网络处理器(neural-network processing unit,NPU)、张量处理器(tensor processingunit,TPU)或数据处理器(data processing unit,DPU)等一种或多种的组合,本申请实施例不做具体限定。处理器410还可以是单核处理器或多核处理器。处理器410可以由CPU和硬件芯片的组合。上述硬件芯片可以是专用集成电路(application-specific integratedcircuit,ASIC),可编程逻辑器件(programmable logic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complex programmable logic device,CPLD),现场可编程逻辑门阵列(field-programmable gate array,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。处理器410也可以单独采用内置处理逻辑的逻辑器件来实现,例如FPGA或数字信号处理器(digital signal processor,DSP)等。
通信接口420可以为有线接口或无线接口,用于与其他模块或设备进行通信,有线接口可以是以太接口、局域互联网络(local interconnect network,LIN)等,无线接口可以是蜂窝网络接口或使用无线局域网接口等。
存储器430可以是非易失性存储器,例如,只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。存储器430也可以是易失性存储器,易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(dynamic RAM,DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhancedSDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。存储器430也可用于存储程序代码和数据,以便于处理器410调用存储器430中存储的程序代码执行上述方法实施例中的部分或者全部操作步骤,或者执行上述设备实施例中的相应功能。此外,计算设备400可能包含相比于图4展示的更多或者更少的组件,或者有不同的组件配置方式。
总线440可以是快捷外围部件互连标准(peripheral component interconnectexpress,PCIe)总线,或扩展工业标准结构(extended industry standard architecture,EISA)总线、统一总线(unified bus,Ubus或UB)、计算机快速链接(compute express link,CXL)、缓存一致互联协议(cache coherent interconnect for accelerators,CCIX)等。总线440可以分为地址总线、数据总线、控制总线等。总线440除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,图4中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
本申请实施例还提供一种系统,该系统包括多个计算设备,每个计算设备的结构可以参照上述图4所描述的计算设备的结构。该系统可实现的功能或者操作可以参照上述方法实施例中的具体实现步骤和/或上述装置实施例中所描述的具体功能,在此不再赘述。
本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机指令,当所述计算机指令在计算机设备(如一个或者多个处理器)上运行时可以实现上述方法实施例中的方法步骤。所述计算机可读存储介质的处理器在执行上述方法步骤的具体实现可参照上述方法实施例中所描述的具体操作和/或上述装置实施例中所描述的具体功能,在此不再赘述。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。本申请实施例可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质上实施的计算机程序产品的形式。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。可用介质可以是磁性介质(如软盘、硬盘、磁带)、光介质、或者半导体介质。半导体介质可以是固态硬盘,也可以是随机存取存储器,闪存,只读存储器,可擦可编程只读存储器,电可擦可编程只读存储器,寄存器或任何其他形式的合适存储介质。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述。可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。显然,本领域的技术人员可以对本申请实施例进行各种改动和变型而不脱离本申请实施例的精神和范围。本申请实施例方法中的步骤可以根据实际需要进行顺序调整、合并或删减;本申请实施例系统中的模块可以根据实际需要进行划分、合并或删减。如果本申请实施例的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (24)
1.一种内存管理方法,其特征在于,所述内存管理方法包括:
提供包括多个页描述符PD的页缓冲区列表项PBLE资源池,其中所述多个PD各自包括至少一个PBLE,所述多个PD根据各自所包括的PBLE个数被划分为多个阶层中的一个阶层,所述多个阶层各自对应彼此不重叠的多个PBLE个数范围;
响应于接收到指示了最小连续PBLE数的内存注册请求,从所述多个阶层中选择给定阶层,以及从划分到所述给定阶层的PD中选择给定PD用于所述内存注册请求,其中所述最小连续PBLE数不大于所述给定阶层的PBLE个数范围的最大值,所述给定PD包括所述最小连续PBLE数的连续分布且未占用的PBLE。
2.根据权利要求1所述的内存管理方法,其特征在于,所述多个阶层按照特定次序排列,按照所述特定次序逐个地判断所述多个阶层中每一个阶层的PD是否包括所述最小连续PBLE数的连续分布且未占用的PBLE,将包括所述最小连续PBLE数的连续分布且未占用的PBLE的首个PD作为所述给定PD以及将所述首个PD所在的阶层作为所述给定阶层。
3.根据权利要求2所述的内存管理方法,其特征在于,所述特定次序指示所述多个阶层按照各自的PBLE个数范围的最小值、最大值、中位数或者平均数从小到大或者从大到小排列。
4.根据权利要求2所述的内存管理方法,其特征在于,所述特定次序是基于所述多个阶层各自的PBLE个数范围的分布规律。
5.根据权利要求2所述的内存管理方法,其特征在于,所述特定次序指示所述多个阶层按照各自的PBLE个数范围的最大值从小到大排列或者从大到小排列,其中,所述多个阶层各自的PBLE个数范围的最大值表示为M的N次方,M是大于1的正整数,N是阶层数且是大于等于1的正整数。
6.根据权利要求2所述的内存管理方法,其特征在于,所述特定次序指示所述多个阶层按照各自的PBLE个数范围的最大值从小到大排列,所述多个阶层各自的PBLE个数范围的最大值表示为2的N次方,所述多个阶层各自的PBLE个数范围的最小值表示为2的N-1次方再加1,其中N是阶层数且是大于等于1的正整数。
7.根据权利要求2所述的内存管理方法,其特征在于,所述特定次序指示所述多个阶层按照各自的PBLE个数范围的最大值从小到大排列,所述内存管理方法还包括:
当所述多个阶层中的每一个阶层的PBLE个数范围的最大值小于所述最小连续PBLE数时,判断该阶层的PD不包括所述最小连续PBLE数的连续分布且未占用的PBLE。
8.根据权利要求7所述的内存管理方法,其特征在于,所述内存管理方法还包括:
当所述多个阶层中的每一个阶层的PD均不包括所述最小连续PBLE数的连续分布且未占用的PBLE,从空闲PD中选择新PD用于所述内存注册请求。
9.根据权利要求8所述的内存管理方法,其特征在于,所述空闲PD所包括的所有PBLE均未占用。
10.根据权利要求9所述的内存管理方法,其特征在于,所述新PD不属于所述多个PD,所述新PD被添加到所述PBLE资源池以及按照所述多个阶层划分所述新PD。
11.根据权利要求9所述的内存管理方法,其特征在于,所述新PD属于所述多个PD,所述多个PD各自包括计数,所述多个PD按照各自所包括的PBLE的被占用次数对该PD的计数加1以及按照各自所包括的PBLE的被释放次数对该PD的计数减1,所述多个PD中计数为0的PD属于所述空闲PD。
12.根据权利要求2所述的内存管理方法,其特征在于,多个bitmap与所述多个PD一一对应,所述多个PD各自对应的bitmap指示该PD所包括的PBLE是否为未占用,所述多个bitmap组成bitmap矩阵,所述bitmap矩阵的稀疏分布用于选择所述给定阶层和所述给定PD。
13.根据权利要求12所述的内存管理方法,其特征在于,多个bitmap与所述多个PD一一对应,所述多个bitmap中的每一个bitmap包括至少一个向量用于指示与该bitmap对应的PD中的每一个PBLE的状态为已分配或者未占用,其中状态为已分配的PBLE对应向量为1,状态为未占用的PBLE对应向量为0。
14.根据权利要求13所述的内存管理方法,其特征在于,通过对所述多个bitmap各自包括的向量进行求和运算来判断每一个bitmap对应的PD所包括的所有PBLE是否均未占用。
15.根据权利要求13所述的内存管理方法,其特征在于,通过对所述多个阶层中每一个阶层的PD对应的bitmap所包括的向量进行求和运算来判断该阶层的PD是否包括所述最小连续PBLE数的连续分布且未占用的PBLE。
16.根据权利要求2所述的内存管理方法,其特征在于,多个bitmap与所述多个PD一一对应,所述多个bitmap中的每一个bitmap用于指示与该bitmap对应的PD中的每一个PBLE的状态为已分配、未占用或者保留,其中状态为保留的PBLE用于优先级较高的内存注册请求。
17.一种计算机设备,其特征在于,所述计算机设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现根据权利要求1至16中任一项所述的方法。
18.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机设备上运行时使得所述计算机设备执行根据权利要求1至16中任一项所述的方法。
19.一种内存管理模块,其特征在于,所述内存管理模块包括:
PBLE资源池,其中所述PBLE资源池包括多个PD,所述多个PD各自包括至少一个PBLE,所述多个PD根据各自所包括的PBLE个数被划分为多个阶层中的一个阶层,所述多个阶层各自对应彼此不重叠的多个PBLE个数范围;
接收模块,用于接收指示了最小连续PBLE数的内存注册请求;
选择模块,用于从所述多个阶层中选择给定阶层,以及从划分到所述给定阶层的PD中选择给定PD用于所述内存注册请求,其中所述最小连续PBLE数不大于所述给定阶层的PBLE个数范围的最大值,所述给定PD包括所述最小连续PBLE数的连续分布且未占用的PBLE。
20.根据权利要求19所述的内存管理模块,其特征在于,所述多个阶层按照特定次序排列,按照所述特定次序逐个地判断所述多个阶层中每一个阶层的PD是否包括所述最小连续PBLE数的连续分布且未占用的PBLE,将包括所述最小连续PBLE数的连续分布且未占用的PBLE的首个PD作为所述给定PD以及将所述首个PD所在的阶层作为所述给定阶层。
21.根据权利要求20所述的内存管理模块,其特征在于,所述特定次序指示所述多个阶层按照各自的PBLE个数范围的最大值从小到大排列,所述多个阶层各自的PBLE个数范围的最大值表示为2的N次方,所述多个阶层各自的PBLE个数范围的最小值表示为2的N-1次方再加1,其中N是阶层数且是大于等于1的正整数。
22.根据权利要求20所述的内存管理模块,其特征在于,所述特定次序指示所述多个阶层按照各自的PBLE个数范围的最大值从小到大排列,所述选择模块还用于:
当所述多个阶层中的每一个阶层的PBLE个数范围的最大值小于所述最小连续PBLE数时,判断该阶层的PD不包括所述最小连续PBLE数的连续分布且未占用的PBLE。
23.根据权利要求22所述的内存管理模块,其特征在于,所述选择模块还用于:
当所述多个阶层中的每一个阶层的PD均不包括所述最小连续PBLE数的连续分布且未占用的PBLE,从空闲PD中选择新PD用于所述内存注册请求。
24.根据权利要求20所述的内存管理模块,其特征在于,多个bitmap与所述多个PD一一对应,所述多个PD各自对应的bitmap指示该PD所包括的PBLE是否为未占用,所述多个bitmap组成bitmap矩阵,所述bitmap矩阵的稀疏分布用于选择所述给定阶层和所述给定PD。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211064244.7A CN115129621B (zh) | 2022-09-01 | 2022-09-01 | 一种内存管理方法、设备、介质及内存管理模块 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211064244.7A CN115129621B (zh) | 2022-09-01 | 2022-09-01 | 一种内存管理方法、设备、介质及内存管理模块 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115129621A true CN115129621A (zh) | 2022-09-30 |
CN115129621B CN115129621B (zh) | 2022-12-02 |
Family
ID=83387447
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211064244.7A Active CN115129621B (zh) | 2022-09-01 | 2022-09-01 | 一种内存管理方法、设备、介质及内存管理模块 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115129621B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115617531A (zh) * | 2022-11-16 | 2023-01-17 | 沐曦集成电路(上海)有限公司 | 一种快速检测离散资源的方法、装置、存储介质及设备 |
CN116302618A (zh) * | 2023-05-17 | 2023-06-23 | 上海云脉芯联科技有限公司 | 一种会话信息处理方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060067346A1 (en) * | 2004-04-05 | 2006-03-30 | Ammasso, Inc. | System and method for placement of RDMA payload into application memory of a processor system |
US20080059600A1 (en) * | 2006-09-05 | 2008-03-06 | Caitlin Bestler | Method and system for combining page buffer list entries to optimize caching of translated addresses |
US20080301254A1 (en) * | 2007-05-30 | 2008-12-04 | Caitlin Bestler | Method and system for splicing remote direct memory access (rdma) transactions in an rdma-aware system |
CN111445939A (zh) * | 2019-01-17 | 2020-07-24 | 爱思开海力士有限公司 | 存储装置及其操作方法 |
CN113849311A (zh) * | 2021-09-28 | 2021-12-28 | 苏州浪潮智能科技有限公司 | 内存空间管理方法、装置、计算机设备和存储介质 |
-
2022
- 2022-09-01 CN CN202211064244.7A patent/CN115129621B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060067346A1 (en) * | 2004-04-05 | 2006-03-30 | Ammasso, Inc. | System and method for placement of RDMA payload into application memory of a processor system |
US20080059600A1 (en) * | 2006-09-05 | 2008-03-06 | Caitlin Bestler | Method and system for combining page buffer list entries to optimize caching of translated addresses |
US20080301254A1 (en) * | 2007-05-30 | 2008-12-04 | Caitlin Bestler | Method and system for splicing remote direct memory access (rdma) transactions in an rdma-aware system |
CN111445939A (zh) * | 2019-01-17 | 2020-07-24 | 爱思开海力士有限公司 | 存储装置及其操作方法 |
CN113849311A (zh) * | 2021-09-28 | 2021-12-28 | 苏州浪潮智能科技有限公司 | 内存空间管理方法、装置、计算机设备和存储介质 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115617531A (zh) * | 2022-11-16 | 2023-01-17 | 沐曦集成电路(上海)有限公司 | 一种快速检测离散资源的方法、装置、存储介质及设备 |
CN115617531B (zh) * | 2022-11-16 | 2023-04-28 | 沐曦集成电路(上海)有限公司 | 一种快速检测离散资源的方法、装置、存储介质及设备 |
CN116302618A (zh) * | 2023-05-17 | 2023-06-23 | 上海云脉芯联科技有限公司 | 一种会话信息处理方法及装置 |
CN116302618B (zh) * | 2023-05-17 | 2023-09-12 | 上海云脉芯联科技有限公司 | 一种会话信息处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN115129621B (zh) | 2022-12-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115129621B (zh) | 一种内存管理方法、设备、介质及内存管理模块 | |
CN110402568B (zh) | 一种通信的方法及装置 | |
US20190370223A1 (en) | Blockchain-based data migration method and apparatus | |
US9665533B2 (en) | Blob pools, selectors, and command set implemented within a memory appliance for accessing memory | |
US10268716B2 (en) | Enhanced hadoop framework for big-data applications | |
US20160132541A1 (en) | Efficient implementations for mapreduce systems | |
CN109582223B (zh) | 一种内存数据迁移的方法及装置 | |
JP7467593B2 (ja) | リソース割振り方法、記憶デバイス、および記憶システム | |
WO2019001020A1 (zh) | 基于分布式系统的存储空间整理方法、装置及系统 | |
CN110119304B (zh) | 一种中断处理方法、装置及服务器 | |
US10701154B2 (en) | Sharding over multi-link data channels | |
US11226778B2 (en) | Method, apparatus and computer program product for managing metadata migration | |
US11347413B2 (en) | Opportunistic storage service | |
CN111309805B (zh) | 数据库的数据读写方法及装置 | |
KR102471966B1 (ko) | 스토리지 노드 기반의 키-값 스토어를 이용하는 데이터 입출력 방법 | |
US20240036728A1 (en) | Method and apparatus for processing data, reduction server, and mapping server | |
WO2024021470A1 (zh) | 一种跨区域的数据调度方法、装置、设备及存储介质 | |
US11687451B2 (en) | Memory allocation manager and method performed thereby for managing memory allocation | |
CN115794368A (zh) | 业务系统、内存管理方法及装置 | |
CN115576661A (zh) | 数据处理系统、方法和控制器 | |
CN117389485B (zh) | 存储性能优化方法、装置、存储系统、电子设备和介质 | |
WO2024001863A1 (zh) | 一种数据处理方法及相关设备 | |
WO2024041140A1 (zh) | 数据处理方法、加速器及计算设备 | |
CN115907031A (zh) | 一种业务处理方法、装置、设备及存储介质 | |
CN117938849A (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 |