一种基于持久性内存的远程数据传输方法转让专利
申请号 : CN202010177563.3
文献号 : CN111404931B
文献日 : 2021-03-30
发明人 : 舒继武 , 陆游游 , 李俊儒 , 汪庆
申请人 : 清华大学
摘要 :
权利要求 :
1.一种基于持久性内存的远程数据传输方法,其特征在于,包括:客户端向服务端发送远程数据传输请求,当接收到所述服务端根据所述远程数据传输请求发出的返回结果,提供返回消息池地址和回调函数的方式对所述返回结果进行操作;
其中,所述客户端和所述服务端的连接方式为RDMA连接,所述客户端通过负载均衡策略连接到所述服务端,所述客户端提供远程过程调用操作远端持久性内存的数据传输方式和远程直接读写内存的数据传输方式,所述远程直接读写内存支持远程持久化写内存;
所述服务端接收所述客户端发送的所述远程数据传输请求并处理所述远程数据传输请求得到返回结果,将所述返回结果发送至所述客户端;其中,所述服务端配置有持久性内存且与所述客户端RDMA连接,所述服务端管理所述持久性内存与消息池,并支持不同服务端之间调用嵌套远程过程调用;
其中,所述远程过程调用操作为所述客户端调用远程的函数执行远程数据传输,所述调用远程的函数为所述客户端指定调用信息的处理方式;所述服务端管理所述持久性内存包括所述服务端进行内存注册和注册自定义调用函数。
2.根据权利要求1所述的一种基于持久性内存的远程数据传输方法,其特征在于,所述RDMA连接的建立过程中,所述客户端通过中心化的管理节点获取唯一的客户端ID,所述服务端根据所述客户端ID分配负载均衡的连接线程;
所述远程过程调用与所述远程持久化写内存的操作采用RDMA的WRITE_WITH_IMM原语进行数据通信,所述远程直接读写通过RDMA的WRITE原语与RDMA的READ原语通信。
3.根据权利要求1所述的一种基于持久性内存的远程数据传输方法,其特征在于,所述负载均衡策略连接包括若干个所述客户端均匀地与所述服务端的多个线程连接,不同的服务端之间线程均匀连接。
4.根据权利要求2所述的一种基于持久性内存的远程数据传输方法,其特征在于,所述远程过程调用的接口包括同步、异步和嵌套调用接口,所述接口支持变长和不定个数参数;
所述调用信息包括调用函数的服务端唯一编号,调用的函数名称,可变长可多参数的参数列表和返回值处理方式;
所述远程过程调用操作远端持久性内存,包括:所述客户端将指定的所述调用信息填入所述客户端的客户端消息池,并通过RDMA连接直接写入到所述服务端的服务端消息池,以供所述服务端根据所述调用信息执行调用函数,并将执行后的返回结果通过RDMA连接直接写入到所述客户端消息池,所述客户端处理所述返回结果。
5.根据权利要求2所述的一种基于持久性内存的远程数据传输方法,其特征在于,所述远程直接读写的接口包括直接读写接口和持久化写接口,所述远程直接读写内存包括所述客户端通过RDMA的WRITE原语与RDMA的READ原语读写所述服务端的持久性内存;
所述远程直接读写内存的持久化写内存,包括:通过RDMA的WRITE原语写数据,通过远程过程调用将持久化操作发送给所述服务端;
或;
通过远程过程调用的方式将数据与持久化操作同时发送给所述服务端,以便所述服务端将所述数据从服务端消息池拷贝到对应写区域,完成持久化操作;其中,所述持久化操作为调用CPU的持久化指令将数据从CPU缓存中刷写至所述持久性内存中。
6.根据权利要求1所述的一种基于持久性内存的远程数据传输方法,其特征在于,所述提供返回消息池地址和回调函数的方式对所述返回结果进行操作,包括:根据所述返回结果的消息池地址直接操作消息池,拷贝消息池返回信息到指定地址,或利用回调函数直接在消息池内存中完成对于返回结果的处理;其中,所述回调函数为在进行调用远程过程调用或远程直接读写操作时,指定当所述客户端获取所述服务端的返回结果时执行的操作,同时指定执行函数需要的上下文信息。
7.根据权利要求1所述的一种基于持久性内存的远程数据传输方法,其特征在于,所述处理所述远程数据传输请求,包括:
当所述远程数据传输请求为远程过程调用请求,所述服务端反序列化所述客户端远程过程调用的请求信息,执行调用函数完成操作;
当所述远程数据传输请求为嵌套远程过程调用请求,所述服务端处理嵌套远程过程调用,向其他服务端发出远程过程调用的请求;
当所述远程数据传输请求为远程直接读写请求,所述服务端的网卡处理读写请求;
当所述远程数据传输请求为远程持久化写请求,所述服务端的网卡处理写请求,所述服务端完成持久化过程。
8.根据权利要求1所述的一种基于持久性内存的远程数据传输方法,其特征在于,所述内存注册为将所述服务端的内存注册到网卡,允许所述网卡通过RDMA读写所述持久性内存的区域,以便减少持久性内存的内存拷贝次数;所述注册自定义调用函数为维护调用名称与调用函数的映射。
9.根据权利要求8所述的一种基于持久性内存的远程数据传输方法,其特征在于,所述以便减少持久性内存的内存拷贝次数,包括:通过所述网卡直接访问内存以便减少直接读写的内存拷贝次数,执行直接操作内存池的消息池的请求信息以便减少远程过程调用的内存拷贝次数和远程调用结果直接写入消息池以便减少远程过程调用的内存拷贝次数。
10.根据权利要求1所述的一种基于持久性内存的远程数据传输方法,其特征在于,所述服务端管理消息池包括所述服务端管理可循环使用的消息池空间;所述消息池包括发送消息池和接收消息池,每个消息可占用可变大小的消息池空间,变长消息通过RDMA的WRITE_WITH_IMM原语通信,写的数据为消息信息,立即数信息为消息池偏移,所述立即数信息通过偏移量支持RDMA传输所述变长消息。
说明书 :
一种基于持久性内存的远程数据传输方法
技术领域
背景技术
久性内存可以直接当作内存访问;相对于动态随机存取存储器,持久性内存存储是非易失
的。
程CPU来执行远程内存访问,所以它具有低延迟和高吞吐的特点,为存储节点之间的通信提
供了高效的方案。
据存放在磁盘中,远程数据传输操作需要通过内存与磁盘的数据传输,低吞吐高延迟的特
点无法发挥RDMA网络的高效性能。那么,如何利用高性能的新型存储硬件和高效的网络通
信技术,构建能够充分发挥两者低延迟、高吞吐特点的高效远程数据传输方法,就是本领域
技术人员的亟待解决的问题
吐的特性构建远程数据传输方法。然而,单纯用RDMA完成远程数据传输存在问题,频繁数据
拷贝无法发挥持久性内存低延迟高吞吐的特点,持久性内存的持久化操作需要远端CPU参
与,同时新硬件的使用会使软件层的开销变得更加明显。所以,直接地将原有针对内存磁盘
的远程数据传输方法移植到持久性内存上来,无法发挥持久性内存低延迟、高吞吐、可持久
化的特点,需要根据新硬件的特点重新设计软件。
发明内容
能力和持久性内存友好性。
果进行操作;其中,所述客户端和所述服务端的连接方式为RDMA连接,所述客户端通过负载
均衡策略连接到所述服务端,所述客户端提供远程过程调用操作远端持久性内存的数据传
输方式和远程直接读写内存的数据传输方式,所述远程直接读写内存支持远程持久化写内
存;
性内存且与所述客户端RDMA连接,所述服务端管理所述持久性内存与消息池,并支持不同
服务端之间调用嵌套远程过程调用。
端并发远程数据操作性能、服务端可扩展能力和持久性内存友好性的完善全面的远程数据
传输方式。
据传输,所述调用远程的函数为所述客户端指定调用信息的处理方式;其中,所述调用信息
包括调用函数的服务端唯一编号,调用的函数名称,可变长可多参数的参数列表和返回值
处理方式;
池,以供所述服务端根据所述调用信息执行调用函数,并将执行后的返回结果通过RDMA连
接直接写入到所述客户端消息池,所述客户端处理所述返回结果。
的持久性内存;
操作为调用CPU的持久化指令将数据从CPU缓存中刷写至所述持久性内存中。
址,或利用回调函数直接在消息池内存中完成对于返回结果的处理;其中,所述回调函数为
在进行调用远程过程调用或远程直接读写操作时,指定当所述客户端获取所述服务端的返
回结果时执行的操作,同时指定执行函数需要的上下文信息。
RDMA读写所述持久性内存的区域,以便减少持久性内存的内存拷贝次数;所述注册自定义
调用函数为维护调用名称与调用函数的映射。
减少远程过程调用的内存拷贝次数和远程调用结果直接写入消息池以便减少远程过程调
用的内存拷贝次数。
长消息通过RDMA的WRITE_WITH_IMM原语通信,写的数据为消息信息,立即数信息为消息池
偏移,所述立即数信息通过偏移量支持RDMA传输所述变长消息。
附图说明
具体实施方式
图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
果进行操作;其中,所述客户端和所述服务端的连接方式为RDMA连接,所述客户端通过负载
均衡策略连接到所述服务端,所述客户端提供远程过程调用操作远端持久性内存的数据传
输方式和远程直接读写内存的数据传输方式,所述远程直接读写内存支持远程持久化写内
存;
性内存且与所述客户端RDMA连接,所述服务端管理所述持久性内存与消息池,并支持不同
服务端之间调用嵌套远程过程调用。
READ原语通信。
数据操作,其中操作包括,读取远端数据、写入远端数据以及更复杂的组合操作。如附图1所
示,该基于持久性内存的远程数据传输方法包括两个组件组成:客户端和配置有持久性内
存的服务端。客户端和服务端均处于用户态。客户端可以提供给应用远程过程调用操作远
程服务端的持久性内存、直接内存读写接口直接读写远程服务端的持久性内存以及持久性
写操作完成写远程服务端持久性内存。客户端通过负载均衡策略连接到服务端,服务端管
理多个客户端共享的远程持久性存储,服务端为其连接的客户端提供处理请求的服务,并
将处理的返回结果通过RDMA网络返回给客户端。
端并发远程数据操作性能、服务端可扩展能力、持久性内存友好性的完善全面的远程数据
传输方式。
程;
为服务端与服务端的连接、服务端与客户端的连接注册消息池、建立RDMA的QP(Queue
Pairs,队列对)准备连接,将RDMA的QP连接信息写入中心化的节点中,写入结束后,不断尝
试读取其他服务端的RDMA的QP信息,读取信息后完成服务端与服务端的连接。客户端在注
册时,向中心化的节点获取唯一的客户端ID,并根据客户端ID信息读取服务端提前写入的
对应连接的RDMA的QP信息,服务端同时根据分配的客户端ID读取相对应的客户端的RDMA的
QP信息,读取信息后完成服务端与客户端的连接。
集合,对于每个服务端,集合对服务端的所有线程做一个划分,即每新增一个客户端,对服
务端线程做Round Robin(轮询调度)依次添加,这样每个客户端和每个服务端只建立一个
连接;不同的服务端可以任意指定线程个数,线程数目相同的服务端之间,每个线程一一对
应互相连接,对于线程个数不同的服务端之间,服务端连接按照负载均衡的策略,超出一一
对应的线程通过Round Robin依次建立连接。
的函数执行远程数据传输,所述调用远程的函数为所述客户端指定调用信息的处理方式;
其中,所述调用信息包括调用函数的服务端唯一编号,调用的函数名称,可变长可多参数的
参数列表和返回值处理方式;
池,以供所述服务端根据所述调用信息执行调用函数,并将执行后的返回结果通过RDMA连
接直接写入到所述客户端消息池,所述客户端处理所述返回结果。
数名称,指定可变长、可多参数的参数列表,指定返回值的处理方式。客户端将调用信息填
入消息池,通过RDMA发送给服务端消息池,服务端处理之后,通过RDMA返回给客户端消息
池,发送消息均使用RDMA的WRITE_WITH_IMM原语。
读写所述服务端的持久性内存;
操作为调用CPU的持久化指令将数据从CPU缓存中刷写至所述持久性内存中。
种方式完成:A、通过RDMA的WRITE原语写数据,通过远程过程调用将持久化操作发送给服务
端;B、通过远程过程调用的方法将数据与持久化操作同时发给服务端,服务端将数据从消
息池拷贝到对应写区域,之后完成持久化操作。所述持久化操作为调用CPU的持久化指令将
数据从CPU缓存中刷写至持久性内存中。
返回,客户端可以继续执行其他内容,当客户端需要这个远程过程调用的内容时,客户端可
以调用等待接口来获取异步远程过程调用的结果,如果没结束再挂起线程直到得到远程过
程调用的返回结果,异步的接口就可以满足客户端同时向多个服务端发送远程过程调用请
求。
用嵌套远程过程调用和调用普通远程过程调用的接口完全一样,对客户端来说是透明的。
知,客户端同时通过RDMA的WRITE_WITH_IMM原语发送远程过程调用消息,通知服务端,服务
端CPU主动调用CPU持久化指令将对应数据从CPU缓存中刷写至持久性内存中,分两个阶段
完成远程持久化写操作;
务端将消息池中的写数据拷贝到对应的写入持久性内存位置,同时完成持久化操作。
信息到指定地址,或利用回调函数直接在消息池内存中完成对于返回结果的处理;其中,所
述回调函数为在进行调用远程过程调用或远程直接读写操作时,指定当所述客户端获取所
述服务端的返回结果时执行的操作,同时指定执行函数需要的上下文信息。
调函数为在调用远程过程调用或远程直接内存读写操作时,指定当客户端获取服务端返回
消息时执行的操作,同时指定执行函数需要的上下文信息,在返回消息后执行该函数。用户
直接操作消息池、回调函数的方式能够减少数据在内存之间的拷贝。
所述网卡通过RDMA读写所述持久性内存的区域,以便减少持久性内存的内存拷贝次数;所
述注册自定义调用函数为维护调用名称与调用函数的映射。
贝;用户可以通过注册自定义调用函数,所述注册自定义调用函数为维护调用名称与调用
函数的映射,映射允许在运行过程中动态修改。
语读取持久性内存,网卡处理远端的RDMA的WRITE原语写入持久性内存,网卡执行RDMA的
WRITE_WITH_IMM原语写数据到服务端消息池并将该原语所携带的立即数通知给服务端
CPU。服务端CPU执行部分为:服务端通过RDMA的轮询操作不断查看是否有新的网络消息,所
述网络消息为远端RDMA的WRITE_WITH_IMM原语,当服务端收到一个新的消息,服务端反序
列化客户端远程过程调用的请求信息,A、如果收到非嵌套的远程过程调用,执行调用函数
完成操作,执行之后正常返回;B、如果收到了嵌套远程过程调用,在执行调用函数是完成向
其他服务端的远程数据传输请求,在等待其他服务端远程数据传输请求的时,服务端挂起
当前调用函数,继续轮询新的RDMA消息,若为远程过程调用请求则正常执行该请求,若为挂
起调用函数的返回消息则完成消息后续操作,当所有嵌套部分远程数据传输完成,完成当
前调用函数。
的请求信息以便减少远程过程调用的内存拷贝次数和远程调用结果直接写入消息池以便
减少远程过程调用的内存拷贝次数。
池对应参数地址;服务端远程过程调用函数在执行过程中,在消息池中预留出返回值所用
的内存空间,执行时将返回值直接写入消息池中,远程过程调用函数执行结束后,服务端将
对应消息池内容通过RDMA的WRITE_WITH_IMM写入客户端消息池。
消息池空间,变长消息通过RDMA的WRITE_WITH_IMM原语通信,写的数据为消息信息,立即数
信息为消息池偏移,所述立即数信息通过偏移量支持RDMA传输所述变长消息。
远程被写端CPU立即值,将该立即值作为RDMA传输远程过程调用消息的通知机制,该立即值
为消息池中的地址偏移量,CPU可快速定位到该消息在内存空间中的位置。根据RDMA提供的
批处理接口,分别对添加接受消息池、处理发送成功信号、查询网卡新消息做了批处理。如
附图5所示,其是本发明实施例的消息池管理设计的示意图。如该附图5的(a)部分所示,服
务端与服务端、服务端与客户端的连接是双向,每个连接拥有两个消息池,发送消息池与接
受消息池,只对当前连接专门享有。同一连接的接受消息池和发送消息池靠近摆放,能够根
据接受消息池快速定位对应的发送消息池。
被使用消息池的尾部,新的消息产生地址即为head的位置,申请新消息空间时head向前移
动,当消息池被释放时,tail向前移动,tail和head之间的大小为当前剩余消息池的大小。
据传输方法,能够同时提供具备高效的多客户端并发远程数据操作性能、服务端可扩展能
力、持久性内存友好性的完善全面的远程数据传输方式。
也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包
括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。
分的尺寸并不是按照实际的比例关系绘制的。对于相关领域普通技术人员已知的技术、方
法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为授权说明
书的一部分。在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而
不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。应注意到:相似的标号
和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附
图中不需要对其进行进一步讨论。
和变型,本发明的范围由所附权利要求及其等同物限定。