基于远程直接内存访问的内存管理方法和设备技术

技术编号:32573628 阅读:31 留言:0更新日期:2022-03-09 17:01
本发明专利技术提供一种基于远程直接内存访问的内存管理方法和设备。其中方法包括:向计算机系统申请内存区域获得内存区域的地址,将内存区域的地址注册到计算机系统的RDMA设备中;基于内存区域的地址按照8MiB将内存区域划分为内存段,并将内存段连接成全局堆链表;响应于远程直接内存访问的线程启动,从全局堆链表中为线程分配内存段,并连接成线程堆链表,将线程堆链表的头指针返回给线程;响应于线程接收到内存块分配请求,将线程堆链表中的一个内存段划分为四个2MiB的子段,并将一个子段作为一个2MiB的大页或者划分为八个256KiB的小页,将一个大页或者小页划分为大小相同的内存块,选取一个内存块将其地址返回给线程。取一个内存块将其地址返回给线程。取一个内存块将其地址返回给线程。

【技术实现步骤摘要】
基于远程直接内存访问的内存管理方法和设备


[0001]本专利技术涉及计算机
,尤其涉及一种基于远程直接内存访问的内存管理方法和设备。

技术介绍

[0002]远程直接内存访问(Remote Direct Memory Access,简称RDMA),是为了解决网络传输中服务器端数据处理的延迟而产生的。RDMA通过网络把资料直接传入计算机的存储区,将数据从一个系统快速移动到远程系统存储器中,而不对操作系统造成任何影响,这样就不需要用到多少计算机的处理功能。它消除了外部存储器复制和上下文切换的开销,因而能够解放内存带宽和CPU周期用于改进应用系统的性能。
[0003]现有的远程直接内存访问的内存管理方法,在从计算机系统获得一段内存区域后,是通过IBVerbs MR的注册函数ibv_reg_mr将内存区域的地址注册到RDMA设备;然后将注册过的内存区域分割成特定大小的内存块,并将分割得到的内存块放入队列中;当有网络传输需求时,从队列中分配内存块。其中可以将内存区域分割成多个不同的大小的内存块,也可以将内存区域分割成全部相同大小的内存块。...

【技术保护点】

【技术特征摘要】
1.一种基于远程直接内存访问的内存管理方法,其特征在于,包括:向计算机系统申请内存区域,获得所述计算机系统分配的内存区域的地址,并将所获得的内存区域的地址注册到所述计算机系统的RDMA设备中;基于所获得的内存区域的地址,按照8MiB将所述内存区域划分为内存段,并将每个所述内存段划分为头部和可用内存部,在所述头部设置链表指针,将划分得到的内存段连接成全局堆链表;响应于远程直接内存访问的线程启动,从所述全局堆链表中为所述线程分配内存段,并在所分配的内存段的所述头部设置链表指针,将所分配的内存段连接成线程堆链表,将所述线程堆链表的头指针返回给所述线程;响应于所述线程接收到内存块分配请求,将所述线程堆链表中的一个内存段划分为四个2MiB的子段,并基于请求分配的内存块的大小,将划分得到的一个子段作为一个2MiB的大页或者划分为八个256KiB的小页;基于与请求分配的内存块的大小相匹配的预先设定的内存分配类型,将所述大页或者一个所述小页划分为大小相同的内存块,选取一个所述内存块作为目标内存块,将所述目标内存块的地址返回给所述线程。2.根据权利要求1所述的基于远程直接内存访问的内存管理方法,其特征在于,还包括:针对每一线程堆链表,将所划分的内存块的大小相同的页面,基于内存块的使用情况分别连接成页面空闲链表和页面使用链表,形成页面链表组;其中,所述页面为所述大页或者所述小页;响应于所述线程接收到内存块分配请求,基于预先设定的内存分配类型,确定与请求分配的内存块的大小相匹配的内存分配类型;基于所确定的内存分配类型,查询所述页面链表组中对应的页面空闲链表;判断对应的页面空闲链表中是否存在空闲的内存块;若对应的页面空闲链表中存在空闲的内存块,从对应的页面空闲链表中的一个页面中取出一个空闲的内存块作为目标内存块,将所述目标内存块的地址返回给所述线程;若对应的页面空闲链表中不存在空闲的内存块,将对应的页面空闲链表中的页面连接到对应的页面使用链表中。3.根据权利要求2所述的基于远程直接内存访问的内存管理方法,其特征在于,还包括:针对每一线程堆链表,将所述线程堆链表中未划分为内存块的大页连接成空闲大页链表,将所述线程堆链表中未划分为内存块的小页连接成空闲小页链表;判断对应的页面空闲链表是否为空;若对应的页面空闲链表非空,判断对应的页面空闲链表中是否存在空闲的内存块;若对应的页面空闲链表为空,基于所确定的内存分配类型,查询所述空闲大页链表或者所述空闲小页链表;从对应的空闲大页链表或者空闲小页链表中取出一个页面,基于所确定的内存分配类型,将取出的页面划分为大小相同的内存块,并将划分为内存块的页面连接到对应的页面空闲链表中;
再执行从对应的页面空闲链表中的一个页面中取出一个空闲的内存块作为目标内存块的操作。4.根据权利要求3所述的基于远程直接内存访问的内存管理方法,其特征在于,还包括:判断对应的空闲大页链表或者空闲小页链表是否为空;若对应的空闲大页链表或者空闲小页链表非空,从对应的空闲大页链表或者空闲小页链表中取出一个页面;若对应的空闲大页链表或者空闲小页链表为空,查询所述线程堆链表;判断所述线程堆链表是否存在未作为大页或者划分为小页的空闲的子段;若所述线程堆链表存在空闲的子段,基于所确定的内存分配类型,将一个空闲的子段作为一个大页或者划分为八个小页,并将所得到的大页或者小页连接到对应的空闲大页链表或者空闲小页链表中;再执行从对应的空闲大页链表或者空闲小页链表取出一个页面的操作;若所述线程堆链表不存在空闲的子段,判断所述线程堆链表是否存在未划分为子段的空闲的内存段;若所述线程堆链表存在空闲的内存段,将一个空闲的内存段划分为四个子段;再执行基于所确定的内存分配类型,将一个空闲的子段作为一个大页或者划分为八个小页,并将所得到的大页或者小页连接到对应的空闲大页链表或者空闲小页链表中的操作若所述线程堆链表不存在空闲的内存段,向所...

【专利技术属性】
技术研发人员:孙文全
申请(专利权)人:北京志凌海纳科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1