[发明专利]一种基于RDMA协议的内存分配使用方法及系统在审
申请号: | 201711024460.8 | 申请日: | 2017-10-27 |
公开(公告)号: | CN107908474A | 公开(公告)日: | 2018-04-13 |
发明(设计)人: | 马龙 | 申请(专利权)人: | 郑州云海信息技术有限公司 |
主分类号: | G06F9/50 | 分类号: | G06F9/50 |
代理公司: | 北京集佳知识产权代理有限公司11227 | 代理人: | 罗满 |
地址: | 450018 河南省郑州市*** | 国省代码: | 河南;41 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 rdma 协议 内存 分配 使用方法 系统 | ||
技术领域
本发明涉及存储技术领域,特别是涉及一种基于RDMA协议的内存分配使用方法及系统。
背景技术
利用远程直接内存访问(Remote Direct Memory Access,简称PDMA)协议进行消息通信,发送端和接收端需要分配一定量的内存并且将这些内存通过驱动接口ibv_reg_mr注册给IB网卡,才能实现消息的发送和接收。ibv_reg_mr接口的主要功能是告诉IB网卡可以访问的内存资源地址空间及其访问权限,如本地读写权限及远端读写权限。
图1示出了现有的基于RDMA协议消息收发流程:步骤一,接收端分配足够的接收内存并调用ibv_reg_mr接口注册给无线宽带技术(InfiniBand,简称IB)网卡,然后调用驱动接口ibv_post_recv等待接收发送端发送的数据;步骤二、发送端分配发送内存并调用ibv_reg_mr接口注册给IB网卡,然后将待发送数据拷贝到发送内存中,最后调用驱动接口ibv_post_send将数据发送出去;步骤三、当接收端接收到数据后,可以通过驱动接口ibv_poll_cq获取接收到的数据内存存储空间,然后接收端就可以获取这些数据。需要注意的是,步骤一必须在步骤二之前完成,即接收端必须预先注册足够的用于接收数据的内存,如果接收端接收内存不足或没执行步骤一,那么步骤二中发送端调用ibv_post_send接口会失败。
现有的技术发送端和接收端进程启动后,首先就需要分配大量的接收内存和发送内存并注册给IB卡,并且这些内存资源都是一次性分配完成,后续两个进程间数据收发都依赖于这些注册内存。而在大规模集群存储系统中,一个存储节点将会有大约40个进程,每个进程都需要分配这些注册内存资源,因此不仅会造成存储节点内存消耗过快,而且会严重影响单个进程的启动效率。
发明内容
有鉴于此,本发明的目的在于提供一种基于RDMA协议的内存分配使用方法及系统,可以提高进程启动效率,减少启动后发送压力小情况下系统内存资源消耗。其具体方案如下:
一种基于RDMA协议的内存分配使用方法,包括:
进程启动后分配设定个数值的发送注册内存单元;所述设定个数值小于所述发送注册内存单元个数的最大值;
进程发送数据时消耗已分配的所述发送注册内存单元;
若已分配的所述发送注册内存单元不足,重新动态分配设定个数值的所述发送注册内存单元。
优选地,在本发明实施例提供的上述基于RDMA协议的内存分配使用方法中,若已分配的所述发送注册内存单元不足,重新动态分配设定个数值的所述发送注册内存单元之后,还包括:
进程总共分配的所述发送注册内存单元的个数为最大值后,停止分配所述发送注册内存单元。
优选地,在本发明实施例提供的上述基于RDMA协议的内存分配使用方法中,所述设定个数值为所述发送注册内存单元个数的最大值的1/N;其中N>1且N为正整数。
优选地,在本发明实施例提供的上述基于RDMA协议的内存分配使用方法中,所述设定个数值为所述发送注册内存单元个数的最大值的1/10。
优选地,在本发明实施例提供的上述基于RDMA协议的内存分配使用方法中,进程启动后分配设定个数值的发送注册内存单元的同时,还包括:
分配固定个数值的接收注册内存单元。
本发明实施例还提供了一种基于RDMA协议的内存分配使用系统,包括:
初始分配模块,用于进程启动后分配设定个数值的发送注册内存单元;所述设定个数值小于所述发送注册内存单元个数的最大值;
消耗模块,用于进程发送数据时消耗已分配的所述发送注册内存单元;
动态分配模块,用于若已分配的所述发送注册内存单元不足,重新动态分配设定个数值的所述发送注册内存单元。
优选地,在本发明实施例提供的上述基于RDMA协议的内存分配使用系统中,所述动态分配模块,还用于进程总共分配的所述发送注册内存单元个数为最大值后,停止分配所述发送注册内存单元。
优选地,在本发明实施例提供的上述基于RDMA协议的内存分配使用系统中,所述设定个数值为所述发送注册内存单元个数的最大值的1/N;其中N>1且N为正整数。
优选地,在本发明实施例提供的上述基于RDMA协议的内存分配使用系统中,所述设定个数值为所述发送注册内存单元个数的最大值的1/10。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于郑州云海信息技术有限公司,未经郑州云海信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201711024460.8/2.html,转载请声明来源钻瓜专利网。