一种可靠连接的通信方法及装置与流程

文档序号:12809874阅读:383来源:国知局
一种可靠连接的通信方法及装置与流程

本发明涉及存储系统技术领域,更具体地说,涉及一种可靠连接的通信方法及装置。



背景技术:

infiniband是一种支持多并发连接的“转换线缆”技术,它具有高带宽、低延迟等特点,自问世以来一直被应用于高性能计算领域。infiniband支持多种通信服务和通信语义,通信服务包括:可靠连接(reliableconnection,rc)、不可靠连接(unreliableconnection,uc)以及不可靠数据报(unreliabledatagram,ud)等,通信语义包括通道语义和内存语义,通道语义就是发送/接收模型,通信双方都必须参加,内存语义是基于单边操作的通信模型。无论是哪种通信模型,通信双方都必须先在本地创建队列对(queuepair,qp),qp包括发送队列和接收队列。同时,通信双方都必须在本地注册一块内存区域来作为消息缓冲区。

rc是存储系统中使用最多的通信服务,它是一种面向连接的通信模式,一个qp只能与一个远端的qp建立连接并通信。在这种情况下,如果一个进程需要和n个远端进程通信,就需要创建n个qp,对于发送/接收操作来说,接收方的每个qp都需要预先投递多个接收请求,即需要申请多块接收缓冲区。假设每个qp预先投递n个接收请求,每个请求接收缓冲区大小为s1,每个qp发送队列深度为sd(队列深度即为队列可包含的最大消息个数),接收队列深度为rd(此处rd必须大于n),工作请求大小为s2,当所有进程之间全部建立连接时,每个进程需要创建(n-1)个qp,则所需的空间为(n*s1)*(n-1)+(sd+rd)*s2*(n-1)。假设上述n=5,s1为8kb,s2为64字节,sd和rd都为16,当规模是10k时,每个进程全连接需要420mb的空间,如果是多节点,还需要乘以节点数量,因此,随着通信规模的变大,内存的开销会急剧增大,严重影响规模的可扩展性。

综上所述,如何提供一种在可靠连接中降低内存开销的技术方案,是目前本领域技术人员亟待解决的问题。



技术实现要素:

本发明的目的是提供一种可靠连接的通信方法及装置,以在可靠连接中降低内存开销,避免对规模可扩展性产生的影响。

为了实现上述目的,本发明提供如下技术方案:

一种可靠连接的通信方法,包括:

设置共享接收队列,所述共享接收队列与本地多个进程相对应;

为所述共享接收队列申请共享缓冲区;

如果需要接收远端节点发送的消息,则利用所述共享接收队列接收消息并将该消息放置到所述共享缓冲区中供对应进程获取。

优选的,利用所述共享接收队列接收消息之前,还包括:

将本地多个进程与各进程创建的队列对号的对应关系存储至所述共享接收队列中;

利用所述共享接收队列接收消息并将该消息放置到共享缓冲区中供对应进程获取,包括:

利用所述共享接收队列接收消息并获取该消息中携带的队列对号,将所述消息及对应队列对号放置到共享缓冲区中供与该队列对号对应的进程获取。

优选的,所述消息被对应进程获取之后,还包括:

删除所述共享缓冲区中缓存的所述消息。

优选的,为所述共享接收队列申请共享缓冲区,包括:

为所述共享接收队列申请共享缓冲区,所述共享缓冲区包括多个子缓冲区,每个子缓冲区包含的缓冲块的大小不同;

利用所述共享接收队列将消息放置到所述共享缓冲区中,包括:

利用所述共享接收队列将消息放置到与该消息大小对应的子缓冲区中。

一种可靠连接的通信装置,包括:

设置模块,用于:设置共享接收队列,所述共享接收队列与本地多个进程相对应;

申请模块,用于:为所述共享接收队列申请共享缓冲区;

接收模块,用于:如果需要接收远端节点发送的消息,则利用所述共享接收队列接收消息并将该消息放置到所述共享缓冲区中供对应进程获取。

优选的,还包括:

存储模块,用于:利用所述共享接收队列接收消息之前,将本地多个进程与各进程创建的队列对号的对应关系存储至所述共享接收队列中;

接收模块包括:

第一接收单元,用于:利用所述共享接收队列接收消息并获取该消息中携带的队列对号,将所述消息及对应队列对号放置到共享缓冲区中供与该队列对号对应的进程获取。

优选的,还包括:

删除模块,用于:所述消息被对应进程获取之后,删除所述共享缓冲区中缓存的所述消息。

优选的,所述申请模块包括:

申请单元,用于:为所述共享接收队列申请共享缓冲区,所述共享缓冲区包括多个子缓冲区,每个子缓冲区包含的缓冲块的大小不同;

所述接收模块包括:

第二接收单元,用于:利用所述共享接收队列将消息放置到与该消息大小对应的子缓冲区中。

本发明提供了一种可靠连接的通信方法及装置,其中该方法包括:设置共享接收队列,所述共享接收队列与本地多个进程相对应;为所述共享接收队列申请共享缓冲区;如果需要接收远端节点发送的消息,则利用所述共享接收队列接收消息并将该消息放置到所述共享缓冲区中供对应进程获取。本发明实施例提供的技术方案中,为本地的多个进程设置对应的共享接收队列及共享缓冲区,以由其代替背景技术中每个进程均对应一个接收队列的方案,从而减少了需要申请的缓冲区的数目,避免了申请缓冲区时造成的浪费,大大降低了内存开销,避免了对规模可扩展性产生的影响。

附图说明

为了更清楚地说明本发明实施例或背景技术中的技术方案,下面将对实施例或背景技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本发明实施例提供的一种可靠连接的通信方法的流程图;

图2为本发明实施例提供的背景技术的可靠连接中队列设置的示意图;

图3为本发明实施例提供的一种可靠连接的通信方法的可靠连接中队列设置的示意图;

图4为本发明实施例提供的背景技术的可靠连接中节点连接的示意图;

图5为本发明实施例提供的一种可靠连接的通信方法的可靠连接中节点连接的示意图;

图6为本发明实施例提供的一种可靠连接的通信装置的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

请参阅图1,其示出了本发明实施例提供的一种可靠连接的通信方法,可以包括以下步骤:

s11:设置共享接收队列,共享接收队列与本地多个进程相对应。

需要说明的是,本发明实施例提供的一种可靠连接的通信方法可以应用于任一节点,对应的,本发明实施例提供的一种可靠连接的通信装置可以集成在任一节点中。在任一节点中,每个进程均设置有一个用于通信的队列对,该队列对包括发送队列及接收队列,本申请中设置共享接收队列(srq),也即将每个进程的队列对共享一个接收队列,由该共享接收队列替代每个进程对应的接收队列。

s12:为共享接收队列申请共享缓冲区。

设置共享接收队列后,消息的接收及共享缓冲区的管理都集中通过共享接收队列来实现,而共享接收队列与共享缓冲区是对应存在的,从而共享接收队列可以将接收到的消息放置到共享缓冲区的对应位置处进行缓存。

s13:如果需要接收远端节点发送的消息,则利用共享接收队列接收消息并将该消息放置到共享缓冲区中供对应进程获取。

完成步骤s11及步骤s12的设置后,每当接收到远端节点发送的消息时,则由共享接收队列对该消息进行接收并放置到共享缓冲区中,而远端节点发送消息所使用的连接可以与背景技术中对应的连接一致,由此将消息放置到共享缓冲区后与该连接对应的进程即会获取该消息;当然也可以进行其他设置,均在本发明的保护范围之内。

具体来说,图2为背景技术的可靠连接中队列设置的示意图,图3为本发明实施例提供的一种可靠连接的通信方法的可靠连接中队列设置的示意图。由图2中可以看出每个连接都需要申请一块缓冲区,内存开销比较大,并且由于申请的缓冲区大小都是预估的,容易申请过大造成浪费;由图3中可以看出所有的接收队列共用一个srq,只需要申请一个预投递缓冲区(即共享缓冲区),大大减小了内存开销。假设srq队列深度等于进程个数,那么单个进程所需的空间为:s1*(n-1)+(sd+0)*s2*(n-1)+1*s2*(n-1),当通信规模为10k,s1大小为8kb,发送队列深度为16时,单个进程所需的空间约为90.88mb,远小于背景技术中同样情况下,不使用srq时消耗的420mb空间。

本发明实施例提供的技术方案中,为本地的多个进程设置对应的共享接收队列及共享缓冲区,以由其代替背景技术中每个进程均对应一个接收队列的方案,从而减少了需要申请的缓冲区的数目,避免了申请缓冲区时造成的浪费,大大降低了内存开销,避免了对规模可扩展性产生的影响。

本发明实施例提供的一种可靠连接的通信方法,利用共享接收队列接收消息之前,还可以包括:

将本地多个进程与各进程创建的队列对号的对应关系存储至共享接收队列中。

利用共享接收队列接收消息并将该消息放置到共享缓冲区中供对应进程获取,可以包括:

利用共享接收队列接收消息并获取该消息中携带的队列对号,将消息及对应队列对号放置到共享缓冲区中供与该队列对号对应的进程获取。

虽然本地的各进程均共享一个共享接收队列,但是每个进程均为自己的消息队列,即包含有发送队列及共享接收队列的队列对设置有对应的队列对号;可以将各进程与进程创建的队列对号的对应关系发送至发送方,由此当发送方需要向任一进程发送消息时可以在消息中携带有队列对号进行发送,由此共享接收队列将消息放入到共享缓冲区后供与消息中携带的队列对号对应进程获取,从而能够准确将消息发送到其需要发送至的进程。图4为背景技术的可靠连接中节点连接的示意图;图5为本发明实施例提供的一种可靠连接的通信方法的可靠连接中节点连接的示意图,其中节点1表示发送方,节点2表示接收方,p0至p7分别表示对应的进程。由图4可以看出,如果想要按照不同进程间的连接实现消息的发送则需要节点1的每一个进程都与节点2的所有进程一一建立连接,当规模扩大的情况下,连接数会成倍增加,从而造成很大的开销。而图5对应技术方案只需将节点1的每个进程与节点2的任一进程连接(图5仅为示例中的一种连接方式),并在初始化时将进程创建的队列对号与进程的对应关系告诉节点1即可;由此节点1发送消息时只需在消息中携带需要发送至的队列对号就能够将消息发送至需要发送至的进程,如p0需要发送消息给p5,只需要在发送消息时指定接收消息的进程创建的队列对号为p5对应的队列对号(也即接收消息的队列对为进程p5创建)即可,尽管消息传递使用的是p0到p4的通道,但是实际上消息到达节点2后的接收者是p5进程,从而大大减小了可连接数。

本申请中这种技术方案可以称为扩展可靠连接(extendedreliableconnection,xrc),将xrc引入到infiniband中,xrc除了具有rc类似的传输功能外,还允许发送方在发送消息时指定接收消息的进程;结合srq,xrc相当于支持一个本地qp可以和多个远端的qp连接,即通过xrc,一个进程只需要一条连接就可以向远端节点上的所有进程发送消息。由此,通过引入共享接收队列和扩展可靠连接技术到infiniband服务中,接收方的qp共享一个srq,大大减少了申请的缓冲区的数目,xrc技术减少了节点间进程的连接数目,通过srq和xrc相结合的方法,显著降低了内存的开销,提高了系统性能。

本发明实施例提供的一种可靠连接的通信方法,消息被对应进程获取之后,还可以包括:

删除共享缓冲区中缓存的消息。

通过上述删除操作能够避免已经过期的消息仍然占用共享缓冲区的情况出现,保证了共享缓冲区中具有足够的缓冲空间来实现缓存功能。

本发明实施例提供的一种可靠连接的通信方法,为共享接收队列申请共享缓冲区,可以包括:

为共享接收队列申请共享缓冲区,共享缓冲区包括多个子缓冲区,每个子缓冲区包含的缓冲块的大小不同;

利用共享接收队列将消息放置到共享缓冲区中,可以包括:

利用共享接收队列将消息放置到与该消息大小对应的子缓冲区中。

需要说明的是,由于无法事先获知发送方发送的消息的长度,因为一般都将缓冲区中包含的每个缓冲块设置的较大,从而保证每个缓冲块均可以正常实现消息的缓冲,本申请中将共享缓冲区分为多个子缓冲区,且每个子缓冲区的缓冲块大小不同,从而在接收到消息时,将该消息放置到能够正常实现该消息的放置且大小与消息的大小最接近的子缓冲区的缓冲块中,从而能够大大减少空间浪费。举例说明,如果共享缓冲区公有十个缓冲块,并为了正常接收消息将每个缓冲块设置为8k,则共需要80k的空间;而利用上述方式,可以包含2个子缓冲区,第一个子缓冲区中包括5个2k的缓冲块,而第二个子缓冲区中包括5个8k的缓冲块,则共需要50k的空间,可见明显减少了空间的浪费;且此时如果接收到1.9k的消息则可以将其放入第一个子缓冲区中,如果接收到7.9的消息则可以将其放入第二个子缓冲区中,以此类推。

本发明实施例还提供了一种可靠连接的通信装置,如图6所示,可以包括:

设置模块11,用于:设置共享接收队列,共享接收队列与本地多个进程相对应;

申请模块12,用于:为共享接收队列申请共享缓冲区;

接收模块13,用于:如果需要接收远端节点发送的消息,则利用共享接收队列接收消息并将该消息放置到共享缓冲区中供对应进程获取。

本发明实施例提供的一种可靠连接的通信装置,还可以包括:

存储模块,用于:利用共享接收队列接收消息之前,将本地多个进程与各进程创建的队列对号的对应关系存储至共享接收队列中;

接收模块包括:

第一接收单元,用于:利用共享接收队列接收消息并获取该消息中携带的队列对号,将消息及对应队列对号放置到共享缓冲区中供与该队列对号对应的进程获取。

本发明实施例提供的一种可靠连接的通信装置,还可以包括:

删除模块,用于:消息被对应进程获取之后,删除共享缓冲区中缓存的消息。

本发明实施例提供的一种可靠连接的通信装置,申请模块可以包括:

申请单元,用于:为共享接收队列申请共享缓冲区,共享缓冲区包括多个子缓冲区,每个子缓冲区包含的缓冲块的大小不同;

接收模块包括:

第二接收单元,用于:利用共享接收队列将消息放置到与该消息大小对应的子缓冲区中。

本发明实施例提供的一种可靠连接的通信装置中相关部分的说明请参见本发明实施例提供的一种可靠连接的通信方法中对应部分的详细说明,在此不再赘述。另外本发明实施例提供的一种可靠连接的通信装置中各模块及单元均可以根据实际需要进行合并或拆分等操作,如可以将第一接收单元及第二接收单元进行合并从而将两个单元的功能合并等,均在本发明的保护范围之内。

对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1