本发明专利技术公开了一种面向RDMA网络的内存池管理方法与系统,该方法首先预分配内存块组成内存池,并将各内存块的虚拟地址、物理地址和长度写入虚拟
【技术实现步骤摘要】
一种面向RDMA网络的内存池管理方法与系统
[0001]本专利技术属于RDMA网络技术和内存管理
,具体涉及一种面向RDMA网络的内存池管理方法与系统。
技术介绍
[0002]在远程直接数据存取RDMA网络协议规范中,网络用户发起的工作请求中使用存储器虚拟地址,通道适配器需能够根据虚拟地址转换为物理地址。目前商用的通道适配器大都是基于内存管理单元IOMMU或SMMU部件进行虚拟地址和物理地址之间的映射,IOMMU或SMMU部件可以将通道适配器访问的虚拟地址映射为存储器物理地址,从而提供了高效的地址映射和地址转换方法。然而,在一些处理器体系结构中,并没有提供IOMMU或SMMU这样的内存管理单元以支持地址映射,因此需要通道适配器保存地址转换页表结构,通过一定的方式将用户发起工作请求中的虚拟地址转换为物理地址。
[0003]由于用户在需要发起数据传输任务时才会向系统申请内存缓冲区,申请的缓冲区为虚拟内存,在物理地址上并不连续,因此,在缺乏IOMMU和SMMU支持的系统中,通道适配器需为每一段连续的物理缓冲区建立映射表项。映射表项保存在通道适配器的块RAM(BRAM)中或易失性存储(DRAM)中,其中BRAM的访问延时最小,但是存储容量也最小,难以保存庞大的映射表项,DRAM存储容量足够大,但是访问延时也更大,容易使地址转换步骤成为高速RDMA网络的性能瓶颈。
[0004]基于此,需要一种合理、高效的内存分配和地址管理方案,以解决上述难题。
技术实现思路
[0005]针对上述问题,本专利技术提供了一种面向RDMA网络的内存池管理方法与系统,适用于没有IOMMU和SMMU支持的系统中,通过预分配内存池的方法,达到减少映射表项数目,提高映射表项缓存命中率的目的,从而解决上述通道适配器进行虚拟
‑
物理地址转换时效率不高的问题。
[0006]本专利技术提供了一种面向RDMA网络的内存池管理方法及管理系统,内存分配方式简单,有利于RDMA网络中的内存注册与地址转换。
[0007]本专利技术一方面提供了一种面向RDMA网络的内存池管理方法,包括:
[0008](1)预分配若干物理地址连续的内存块,将所述物理地址连续的内存块组成内存池;
[0009](2)将各内存块的虚拟地址、物理地址和长度写入虚拟
‑
物理地址映射表;
[0010](3)接收用户程序申请内存的请求,从内存池中分配内存块给所述用户程序;
[0011](4)接收应用程序注册内存的请求,为用户程序分配到的内存块分配密钥,并将该内存块的虚拟地址、密钥及内存访问权限等信息写入内存注册表;
[0012](5)接收主机通道适配器HCA设备的内存访问请求,查询所述内存注册表,将是否允许内存访问返回给HCA设备;
[0013](6)接收HCA设备的地址翻译请求,查询所述虚拟
‑
物理地址映射表,将地址翻译的结果返回给HCA设备。
[0014]其中,步骤3具体包括:
[0015](3.1)接收用户程序申请内存的请求,该请求中包含所需内存块的长度;
[0016](3.2)根据所述申请内存请求,判断当前内存池中是否存在满足长度要求的内存块;
[0017](3.3)若当前内存池中不存在满足长度要求的内存块,则返回申请失败;若当前内存池中存在满足长度要求的内存块,则将该满足要求的内存块分配给用户程序,返回该内存块虚拟地址和长度给用户程序。
[0018]步骤4具体包括:
[0019](4.1)接收用户程序注册内存的请求,该请求中包含用户程序分配到的内存块的虚拟地址和长度,以及内存访问权限;
[0020](4.2)为(4.1)请求注册的内存块分配一个本地密钥L_Key和一个远程密钥R_Key,将L_Key、R_Key、内存块虚拟地址、长度和内存访问权限一起写入内存注册表。
[0021]步骤5具体包括:
[0022](5.1)接收HCA设备的内存访问请求,该请求包括L_Key、R_Key、内存块的虚拟地址、长度和访问权限;
[0023](5.2)查询所述内存注册表,查找L_Key、R_Key、内存块的虚拟地址、长度和内存访问权限都符合请求的内存注册表项;
[0024](5.3)如果查找到符合所述内存访问请求的表项,则返回成功给HCA设备;否则返回失败给HCA设备。
[0025]步骤6具体包括:
[0026](6.1)接收HCA设备的地址翻译请求,该请求包含内存块的虚拟地址和长度;
[0027](6.2)查询所述虚拟
‑
物理地址映射表,查找内存块的虚拟地址和长度符合请求的映射表项,将对应的物理地址返回给HCA设备。
[0028]本专利技术另一方面提供了一种面向RDMA网络的内存池管理系统,包括内存池映射单元、内存池分配单元、内存注册单元、缓存单元、权限匹配单元和地址翻译单元;内存池映射单元,用于预申请若干物理地址连续的内存块组成内存池,并将各内存块的虚拟地址、物理地址和长度写入虚拟
‑
物理地址映射表;
[0029]内存池分配单元,用于接收用户程序的内存申请请求,并从所述内存池中分配内存块给用户程序;
[0030]内存注册单元,用于接收用户程序的内存注册请求,为内存池分配单元分配给用户的内存块分配密钥,并将内存块的虚拟地址、密钥及内存访问权限等信息写入内存注册表;
[0031]缓存单元,用于将所述内存池虚拟
‑
物理地址映射表和内存注册表,拷贝到HCA设备的片内存储器件;
[0032]权限匹配单元,用于接收HCA设备的内存访问请求,并通过查询所述内存注册表,判断是否允许内存访问,将是否允许内存访问返回给HCA设备;
[0033]地址翻译单元,用于接收HCA设备的地址翻译请求,并通过查询所述虚拟
‑
物理地
址映射表,查找地址翻译请求中虚拟地址和长度对应的物理地址,返回给HCA设备。
[0034]本专利技术的优点或有益效果:
[0035]根据本专利技术的内存池管理方案,为系统预先分配一定数量的物理地址连续的内存块,并将所述内存块进行虚拟地址到物理地址的映射,使用较少的地址映射表项表征较大的内存空间。这样,当用户程序从内存池中申请缓冲区时,HCA总能通过其片内存储器件快速查询到相关的地址信息。得益于HCA设备的片内存储器件比板上DRAM、FLASH和系统内存等存储资源更低的访问延时,预分配内存池的方法能够有效降低地址查询的延时。
[0036]使用本专利技术提出的内存池管理方法,HCA可以为没有IOMMU和SMMU器件的网络节点提供服务,解决地址转换延时高的难题,为RDMA网络提供高效的地址转换性能,从而降低网络传输延时。
附图说明
[0037]图1为本专利技术一种面向RDMA网络的内存池管理方法的流程图;
[0038]图2为本专利技术一种面向RDMA网本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种面向RDMA网络的内存池管理方法,其特征在于,包括如下步骤:S1、预分配若干物理地址连续的内存块,并将所述物理地址连续的内存块组成内存池;S2、将各内存块的虚拟地址、物理地址和长度写入虚拟
‑
物理地址映射表;S3、接收用户程序申请内存的请求,从内存池中分配内存块给用户程序;S4、接收应用程序注册内存的请求,为用户程序分配到的内存块分配密钥,并将该内存块的虚拟地址、密钥及内存访问权限写入内存注册表;S5、接收主机通道适配器HCA设备的内存访问请求,查询所述内存注册表,将是否允许内存访问返回给HCA设备;S6、接收HCA设备的地址翻译请求,查询所述虚拟
‑
物理地址映射表,将地址翻译的结果返回给HCA设备。2.根据权利要求1所述的面向RDMA网络的内存池管理方法,其特征在于,步骤S3具体过程如下:S3.1、接收用户程序申请内存的请求,该请求中包含所需内存块的长度;S3.2、根据所述申请内存请求,判断当前内存池中是否存在满足长度要求的内存块;S3.3、若当前内存池中不存在满足长度要求的内存块,则返回申请失败;若当前内存池中存在满足长度要求的内存块,则将该满足要求的内存块分配给用户程序,返回该内存块的虚拟地址和长度给用户程序。3.根据权利要求1所述的面向RDMA网络的内存池管理方法,其特征在于,步骤S4具体过程如下:S4.1、接收用户程序注册内存的请求,该请求中包含用户程序分配到的内存块的虚拟地址、长度以及内存访问权限;S4.2、为S4.1请求注册的内存块分配一个本地密钥L_Key和一个远程密钥R_Key,将L_Key、R_Key、内存块虚拟地址、长度和内存访问权限一起写入内存注册表。4.根据权利要求1所述的面向RDMA网络的内存池管理方法,其特征在于,步骤S5具体过程如下:S5.1、接收HCA设备的内存访问请求,该请求包括L_Key、R_Key...
【专利技术属性】
技术研发人员:张欢,赵备,薛梅婷,李琛璞,
申请(专利权)人:杭州电子科技大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。