System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及rdma,特别涉及一种消息传输的方法、装置、设备和存储介质。
技术介绍
1、远程直接内存访问(remote direct memory access,rdma)技术,可以绕过操作系统由网卡直接访问内存中数据,可以有效节省处理器(central processing unit,cpu)资源,提高内存访问效率。
2、目前,在不同节点间采用rdma技术进行通信时,如果不同节点中的两个任务进程间需要进行通信,那么,在通信前,这两个任务进程需要各自在节点的内存中创建队列对(queue pair,qp),并生成队列对的上下文(qp context,qpc)存储在节点的网卡中,其中,qpc用于记录队列对的队列参数、进程间的通信参数、后续发送的消息的传输参数等。
3、在上述方案中,假设一个通信组内有n个节点,每个节点有p个任务进程参与任务,且不同节点中的任意两任务进程均有通信需求,那么,每个节点需要建立(n-1)*p*p个qp,相应的,要在节点的网卡存储(n-1)*p*p个qpc,而网卡的存储空间通常较小,大量的qpc会占用网卡中过多的存储空间。
技术实现思路
1、本申请提供了一种消息传输的方法、装置、设备和存储介质,能够减小网卡的存储空间占用,技术方案如下:
2、第一方面,提供了一种消息传输的方法,方法应用于通信组对应的多个节点中的第一节点,通信组是由执行同一分布式任务的多个任务进程组成,每个节点分别运行有至少一个任务进程,方法包括:
3
4、在本申请提供的技术方案中,对于节点里的任一任务进程来说,只需一个队列对便可以和通信组中其他节点的所有进程进行通信。而在现有技术的方案中,对于节点里的任一任务进程来说,该任务进程需要和通信组内其他节点的所有进程分别建立对应的队。可见,在具有相同数量的任务进程的情况下,本申请提供的技术方案需要建立的队列对数量相比于现有技术中需要建立的队列对数量更少,相应的,需要在网卡中维护的相关参数也就更少,从而,有效减少了网卡的存储空间的占用。
5、在一种可能的实现方式中,本申请提供的方案中,将现有技术中的qpc拆分成了两部分,一部分为指导消息传输的参数,此处可以称为控制面参数,另一部分为消息传输参数,也可以称为数据面参数。控制面参数是在创建队列对时,获取并存储到网卡中的。
6、控制面参数包括队列对的队列参数和通信组的通信参数。队列参数包括队列对的在内存中的起始地址以及队列深度,通信组的通信参数包括最大传输单元(maximumtransmission unit,mtu)、重传次数上限和超时时限等,mtu表示传输的报文的最大长度,重传次数上限表示任一数据报文允许重传的次数上限,超时时限表示针对发送的任一数据报文,如果在超时时限内接收端仍未接收成功,则对该报文进行重传。
7、在本申请提供的技术方案中,通信组的通信参数是任一任务进程和通信组内其他节点上运行的所有任务进程进行协商确定的,也即是,对于任一任务进程来说,其获取到的通信参数对于通信组内其他节点上运行的所有任务进程是共用的,而并非是针对每个任务进程独有的,这样,可以有效节省网卡的存储资源。
8、在一种可能的实现方式中,任一任务进程在创建控制面参数时,还可以确定控制面参数的标识,该标识可以是任务进程分配的,也可以是网卡分配的,并且,控制面参数在节点内是唯一的,因此,在一次分布式任务中,任务进程确定的控制面参数的标识也是可以用来标识该任务进程的。此外,任务进程还可以和通信组内其他节点中的所有任务进程交换各自的控制面参数的标识。
9、在一种可能的实现方式中,消息发送请求中携带目的节点的地址和目的节点中的目的任务进程对应的控制面参数的标识。这样,可以使网卡获知消息是发送给哪个节点中的哪个任务进程的。
10、在一种可能的实现方式中,第一消息的数据报文中携带第一控制面参数的标识、第一消息的标识和数据报文的顺序指示信息,其中,顺序指示信息用于指示所述数据报文在所述第一消息中的发送顺序。本申请提供的技术方案中,通过控制面参数的标识、消息的标识和数据报文的顺序指示信息,可以唯一标识一个数据报文。
11、在一种可能的实现方式中,数据报文中的组扩展报文头(group extensiontransport header)geth中携带第一控制面参数的标识。
12、在一种可能的实现方式中,数据报文中的geth中携带第一消息的标识。
13、在一种可能的实现方式中,顺序指示信息携带在数据报文中的基本传输头(basetransport header,bth)的包序列号(packet sequence number,psn)字段。
14、在一种可能的实现方式中,网卡在队列对中获取到第一消息的消息发送请求后,生成第一消息的消息传输参数,并将消息传输参数存储到网卡中。
15、在本申请提供的技术方案中,消息传输参数可以包括消息的标识、源节点的地址、目的节点的地址、消息发送请求的存储位置、下一个的数据报文的顺序指示信息、上一个接收到的确认(acknowledge character,ack)报文对应的数据报文的顺序指示信息、重传计时、超时重传次数、消息中是否有报文丢失等。
16、在一种可能的实现方式中,为了进一步节省网卡的存储资源,在接收到第一消息的第一接收完成消息后,将网卡中存储的第一消息的消息传输参数删除。
17、在一种可能的实现方式中,网卡对接收到消息也可以维护相应的消息传输参数,具体处理如下:
18、接收第三节点发送的第二消息的第一个数据报文,生成第二消息的消息传输参数,并将所述第二消息的消息传输参数存储至网卡。在接收到第二消息的最后一个数据报文后,向第三节点发送第二消息的第二接收完成消息。
19、在一种可能的实现方式中,为了进一步节省网卡的存储资源,接收第三节点发送的第二接收完成消息的应答消息,将所网卡中存储的第二消息的消息传输参数删除。
20、在一种可能的实现方式中,本申请提供的技术方案消息间可以按照优先级进行传输,无需按照消息发送请求的顺序进行传输,具体的,处理可以如下:
21、将第三消息的消息发送请求添加到所述队列对,其中,第三消息的优先级大于第一消息的优先级。如果第一消息未发送完成,则停止发送所述第一消息,并基于第三消息的消息发送请求,发送所述第三消息。在将第三消息发送完成后,继续发送第一消息。
22、在一种可能的实现方式中,第一本文档来自技高网...
【技术保护点】
1.一种消息传输的方法,其特征在于,所述方法应用于通信组对应的多个节点中的第一节点,所述通信组由多个任务进程组成,每个节点分别运行有至少一个任务进程,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述将第一消息的消息发送请求添加到第一任务进程对应的第一队列对中之前,所述方法还包括:
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
4.根据权利要求3所述的方法,其特征在于,所述消息发送请求中携带第二节点的地址和所述第二节点中的目的任务进程对应的控制面参数的标识。
5.根据权利要求3或4所述的方法,其特征在于,所述第一消息的数据报文中携带所述第一控制面参数的标识、所述第一消息的标识和所述数据报文的顺序指示信息,其中,所述顺序指示信息用于指示所述数据报文在所述第一消息中的发送顺序。
6.根据权利要求5所述的方法,其特征在于,所述数据报文中的组扩展报文头GETH中携带所述第一控制面参数对应的标识。
7.根据权利要求5或6所述的方法,其特征在于,所述数据报文中的GETH中携带所述第一消息的标识。
8.根据权利要求5-7中任一项所述的方法,其特征在于,所述顺序指示信息携带在所述数据报文中的基本传输头BTH的包序列号PSN字段。
9.根据权利要求1-8中任一项所述的方法,其特征在于,所述当所述消息发送请求在所述第一队列对中满足处理条件时,基于所述消息发送请求发送所述第一消息之前,所述方法还包括:
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
11.根据权利要求1-10中任一项所述的方法,其特征在于,所述方法还包括:
12.根据权利要求11所述的方法,其特征在于,所述方法还包括:
13.根据权利要求1-12中任一项所述的方法,其特征在于,所述还包括:
14.根据权利要求1-13中任一项所述的方法,其特征在于,所述第一控制面参数中还包括所述第一队列对已经发送的消息的消息数量。
15.根据权利要求14所述的方法,其特征在于,所述第一消息的标识为消息序列号MSN,在所述第一消息的发送过程中,所述第一控制面参数中的消息数量为所述第一消息的MSN;
16.一种消息传输的装置,其特征在于,所述装置配置于通信组对应的多个节点中的第一节点,所述通信组由多个任务进程组成,每个节点分别运行有至少一个任务进程,所述装置包括:
17.一种计算机设备,其特征在于,所述计算设备包括处理器、存储器和网卡;
18.一种包含指令的计算机程序产品,其特征在于,当所述指令被计算机设备执行时,使得所述计算机设备执行如权利要求的1-15中任一项所述的消息传输的方法。
19.一种计算机可读存储介质,其特征在于,包括计算机程序指令,当所述计算机程序指令由计算设备执行时,所述计算设备执行如权利要求1-15中任一项所述消息传输的方法。
...【技术特征摘要】
1.一种消息传输的方法,其特征在于,所述方法应用于通信组对应的多个节点中的第一节点,所述通信组由多个任务进程组成,每个节点分别运行有至少一个任务进程,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述将第一消息的消息发送请求添加到第一任务进程对应的第一队列对中之前,所述方法还包括:
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
4.根据权利要求3所述的方法,其特征在于,所述消息发送请求中携带第二节点的地址和所述第二节点中的目的任务进程对应的控制面参数的标识。
5.根据权利要求3或4所述的方法,其特征在于,所述第一消息的数据报文中携带所述第一控制面参数的标识、所述第一消息的标识和所述数据报文的顺序指示信息,其中,所述顺序指示信息用于指示所述数据报文在所述第一消息中的发送顺序。
6.根据权利要求5所述的方法,其特征在于,所述数据报文中的组扩展报文头geth中携带所述第一控制面参数对应的标识。
7.根据权利要求5或6所述的方法,其特征在于,所述数据报文中的geth中携带所述第一消息的标识。
8.根据权利要求5-7中任一项所述的方法,其特征在于,所述顺序指示信息携带在所述数据报文中的基本传输头bth的包序列号psn字段。
9.根据权利要求1-8中任一项所述的方法,其特征在于,所述当所述消息发送请求在所述第一队列对中满足处理条件时,基于所述消息发送请求发...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。