基于智能网卡的计算机间用户级并行通信的方法

文档序号:7559361阅读:140来源:国知局
专利名称:基于智能网卡的计算机间用户级并行通信的方法
技术领域
本发明涉及计算机间并行通信技术领域,特别是一种基于智能网卡的计算机间用户级并行通信的方法。
背景技术
近年来,尽管计算机网络带宽的增长速度超过了处理器的处理能力,但在许多情况下计算机网络的通信性能仍然是制约系统性能的瓶颈,单套网络的通信性能不能满足需求。目前国际上使用的超级服务器多数采用机群结构,且呈现出用大型对称多处理器(Symmetric Multiprocessor,SMP)或高速缓存相关的非一致性存储访问(Cache Coherent Non-uniformMemory Access,CC-NUMA)互连构建机群的趋势。在这类系统中,高性能互联网络单套使用难以满足结点计算机间对通信性能的需求。此外,伴随大量数据密集型应用的出现,对计算机间数据交换能力的要求也迅速提高。因此寻求提高计算机间互连网络通信性能的有效途径显得十分重要。
目前在国内外,除了直接使用更高性能的互连网络外,用户级通信协议作为提高计算机间通信性能的一条有效途径在机群等高性能计算机系统中获得了广泛使用。与传统的核心级通信协议(如TCP/IP)不同,用户级通信协议将操作系统排除于通信主路径之外,用户可以通过位于用户地址空间中的通信库直接访问底层通信网络的网卡,实现消息在用户地址空间与网卡间的直接传递,消息在发送与接收中无需操作系统的参与。如此,消除了消息传递过程中进出操作系统核心和中断处理的开销,同时实现了消息在通信双方用户地址空间中数据缓冲区间的无拷贝传输。
传统的核心级通信协议由于大量软件处理的开销使得其用户无法获得底层高性能网络硬件能够提供的通信性能。用户级通信协议虽然通过减少软件开销使得其用户能够获得接近底层网络硬件所提供的性能,但最终是要受限于计算机网络硬件的性能。因此,当单套网络不能满足系统对通信性能的需求时,利用多套网络实现并行通信就成为提高通信性能的一条重要途径。
目前实现多网络设备并行通信的典型方法是,通信控制模块以轮转的方式将待发送的消息依次分发到多套网络上,实现不同消息间的并行传输,消息成为每套网络传输的最小单位,一个确定的消息只能通过一套网络进行传输。

发明内容
本发明提供了一种新的基于智能网卡的计算机间用户级并行通信方法。该方法首先将大消息进行分片,原来的一个消息被分成若干个小的消息片段,然后再由通信控制模块以轮转的方式将这些消息分片依次分发到多套网络上,实现不同消息分片间的并行传输,这里消息分片成为每套网络传输的最小单位,一个确定的消息其消息分片能够通过多套网络同时进行传输。显然,本发明支持的并行传输的粒度是比消息要小的消息分片,因此能够提高一个大消息的通信带宽。对于典型的科学计算类应用,这是非常有利的。此外,为了保证消息传输的有序性,本发明提供的方法中对小消息采用了网络绑定的策略,小消息不进行分片,同源同目的的小消息通过静态选定的一套确定的网络进行传输。目的地不同,其绑定的网络可以不同,这有利于平衡多套网络间的负载,提高整个通信系统的吞吐率。本发明中的方法是针对用户级零拷贝通信协议设计的,在提供并行通信能力的同时,仍然保持用户级零拷贝的通信特点,支持对位于用户空间中的数据进行无拷贝的分拆和拼接。整个并行通信的协议流程见附图1。
包括以下步骤在数据发送方用于数据分流和负载平衡的数据拆分步骤;在智能网卡上用于在计算机间将已拆分数据由数据发送方向数据接收方传递的数据并行传输步骤;在数据接收方用于数据接收和拼接的数据拼接步骤;
在数据接收方用于通知用户数据到达的消息通知步骤。
计算机间使用多套高性能互连网络进行连接,并且所用网络是同构的。
所用的高性能互连网络必须提供智能网卡,即网卡有一定的协议处理能力,通过运行在网卡上的通信控制程序或固件能够支持消息数据在发送与接收方用户空间数据缓冲区间的直接传输,支持用户级通信结构。
在实现用户级通信协议的操作系统核心空间的设备驱动程序和用户空间的通信库中加入实现并行通信的功能模块,数据的拆分与拼接由并行通信模块实现。
消息的发送要经过操作系统核心中的设备驱动程序,由设备驱动程序中所植入的并行模块完成对待发送消息在多套网络间的分发与拆分。
消息分发与拆分的过程将消息分为大、小两类,执行不同的策略,小消息实行网络绑定的策略,所有目的地相同的小消息都通过一套静态选定的网络发送;大消息采用拆分-轮转的策略,首先大消息被拆分成若干分片,然后这些分片按照轮转的方法在底层多套网络间进行分派、发送。
通信网络将分派到的小消息或大消息的分片作为一个正常的消息在通信双方用户空间的数据缓冲区间直接传输,消息的并行传递对通信硬件透明。
并行通信中消息传递结束的判定由位于接收方用户空间中的通信库中的并行通信模块完成。
计算机间消息的传递是有序的。
计算机间消息的传递是无拷贝的。
计算机间消息的并行传递对上层用户是透明的。


图1是本发明的基于智能网卡的计算机间用户级并行通信核心方法流程图;图2是本发明的消息分片示意图;图3是本发明的并行通信操作流程图。
具体实施例方式
图1的基于智能网卡的计算机间用户级并行通信的方法,该方法首先将大消息进行分片,原来的一个消息被分成若干个小的消息片段,然后再由通信控制模块以轮转的方式将这些消息分片依次分发到多套网络上,实现不同消息分片间的并行传输,这里消息分片成为每套网络传输的最小单位,一个确定的消息其消息分片能够通过多套网络同时进行传输。
图中给出了由2套通信网络组成的并行通信系统上的并行通信核心流程,其中箭头表示并行通信流程中的步骤。一次并行通信过程包括如下9个步骤步骤1,用户应用程序将消息接收缓冲区信息注册至通信系统中;步骤2,并行模块根据消息的分片原则将消息接收缓冲区信息分配到不同的网卡上,并等待消息的到达;步骤3,用户应用程序的消息发送请求提交至通信系统中;步骤4,并行模块根据消息的分片原则将消息发送请求分配到不同的通信网络上,并将相应的消息发送请求信息填写到对应的网卡上;步骤5,由底层的用户级通信协议将分给该网卡的消息分片由用户缓冲区下传至网卡上;步骤6,发送方计算机上的智能网卡向接收方计算机的智能网卡传输数据的过程;步骤7,根据底层的用户级通信协议确认消息各分片发送完成后形成消息发送完成事件,并通知用户应用程序;步骤8,由网卡控制程序将接收至网卡上的数据上传至用户缓冲区;步骤9,根据底层的用户级通信协议确认消息各个分片接收完成后,形成消息接收完成事件,并通知用户应用程序。
其中,步骤3、4、5、7由消息传递的发送方计算机完成,步骤1、2、8、9由消息传递的接收方计算机完成,步骤6为发送方计算机上的智能网卡向接收方计算机的智能网卡传输数据的过程,由双方共同完成。发送方计算机上所需完成的步骤7可以与接收方计算机上的步骤8、9同时进行,它们之间没有时间顺序上的要求。
图2中,1.发送过程中的消息分片图中给出了2个不同长度消息在由2套通信网络组成的并行通信系统中发送方计算机进行消息发送时的消息分片示意。如图所示,在消息发送方,消息根据其长度不同被分为固定大小的分片,其中,消息1被分为4个分片,依次为分片0、分片1、分片2和分片3;消息2被分为5个分片,依次为分片0、分片1、分片2、分片3和分片4。消息的各个分片依次从不同的通信网络上传输,若消息不能被均匀分配在不同的通信网络上,则排列在前面的通信网络将发送较多的分片。图中消息1的分片0和2、消息2的分片0、2和4依次由通信网络0进行发送;消息1的分片1和3、消息2的分片1和3依次由通信网络1进行发送。
2.接收过程中的消息分片图中给出了2个不同长度的消息接收缓冲区在由2套通信网络组成的并行通信系统中接收方计算机进行消息接收时的消息缓冲区分片示意。如图所示,在消息接收方,消息缓冲区根据其长度不同被分为固定大小的分片,其中,消息缓冲区1被分为4个分片,依次为分片0、分片1、分片2和分片3;消息缓冲区2被分为5个分片,依次为分片0、分片1、分片2、分片3和分片4。消息缓冲区的各个分片依次从不同的通信网络上接收数据,若消息缓冲区不能被均匀分配在不同的通信网络上,则排列在前面的通信网络将接收较多的分片。图中消息缓冲区1的分片0和2、消息缓冲区2的分片0、2和4依次从通信网络0上接收数据;消息缓冲区1的分片1和3、消息缓冲区2的分片1和3依次从通信网络1上接收数据。
图3中,如图所示,并行通信在消息发送方的一次消息发送操作流程由步骤S1至S5构成。步骤S1将用户的消息发送请求提交至通信系统中;步骤S2并行模块根据消息的分片原则将消息发送请求分配到不同的通信网络上,并将相应的消息发送请求信息填写到对应的网卡上;步骤S3由底层的用户级通信协议将分给该网卡的消息分片由用户缓冲区下传至网卡上;步骤S4由网卡控制程序由网卡向通信网络发送消息数据;步骤S5根据底层的用户级通信协议确认消息各分片发送完成后形成消息发送完成事件,并通知用户程序。
并行通信在消息接收方的一次消息接收操作流程由步骤R1至R5构成。步骤R1将用户的消息接收缓冲区信息至通信系统中;步骤R2并行模块根据消息的分片原则将消息接收缓冲区信息分配到不同的网卡上;步骤R3等待网络上的数据,并接收一个完整的数据包;步骤R4由网卡控制程序将接收至网卡上的数据上传至用户缓冲区;步骤R5根据底层的用户级通信协议确认消息各个分片接收完成后,形成消息接收完成事件,并通知用户程序。
本发明的具体方法如下a.通信网络的初始设置在通信系统初始安装过程中,由位于操作系统核心中的网络设备驱动程序完成对多套网络硬件设备的查找、检测和初始设置,获知可用于并行通信的网络信息。
b.大消息的传递本发明的方法中将消息根据其长度分为大、小消息两类,分别执行不同的传递协议。
在大消息的发送方,首先由位于设备驱动程序中的并行通信分发模块将要发送的消息进行分片。分片的方法是获取大消息用户数据发送缓冲区所占内存的页面个数,然后将这些页面在多套网络间均匀分配,分配给相同网络的所有页面构成一个分片。然后,采用轮转的方法,将一个消息的各个分片依次分发给底层多套网络。通信网络智能网卡上的通信控制程序查询到上述分片的发送请求后,会根据请求中提供的消息分片所包含内存页面的物理地址和长度将分片发送到网络上。如此,上层并行通信协议中定义的一个消息的分片被封装成底层通信网络传统意义上传输的消息,并行通信对底层网络是透明的。
一旦消息分片到达目的计算机,目的网络智能网卡上的通信控制程序会根据用户事先提供的接收数据缓冲区的内存页表,直接将该分片中的数据传递到接收数据缓冲区中的正确位置上,实现消息的正确拼接。整个消息分片传输过程中没有任何数据在缓冲区间的拷贝。为了配合消息的接收,要求大消息的接收方在消息发送前准备好对应的接收数据缓冲区,并将该缓冲区的内存页表提交给该大消息传输将要用到的所有网络的智能网卡上的通信控制程序。
一旦目的计算机上一套网络的智能网卡完成对一个消息分片的接收,就会生成一个接收结束事件,通知上层通信协议其所承担的接收任务已经完成。位于用户空间通信库中的并行通信协议模块会查询这些事件,一旦所有参与一个大消息并行传输的网络的智能网卡都生成接收结束事件,上述并行通信模块会生成整个大消息接收结束事件,插入相应的事件队列并进行处理。
消息分片的原理见附图2。
c.小消息的传递与大消息的传递不同,小消息无需进行消息的分片,整个消息通过一套网络进行传递。在消息发送方,位于设备驱动程序中的并行通信分发模块根据小消息的目的计算机号唯一确定一套网络,并构造一个消息发送申请提交给选定网络的智能网卡。智能网卡上的通信控制程序查询到该发送请求后,将相应的小消息发送到网络上。上述策略称作网络绑定。如此,从一个计算机发送的所有目的计算机相同的小消息都会通过一套相同的网络传递,实现了消息传递的保序性。目前根据如下公式确定一个小消息绑定的网络bn=id mod N其中id是目的计算机号,N是底层网络的套数,bn就是小消息绑定的网络,该消息就是通过编号为bn的网络传递。这样,不同目的计算机的小消息其绑定的网络可以不同,从而保证了网络负载的均衡,有助于提高小消息的吞吐率。
在接收方,智能网卡将收到的小消息上传到主机上的系统缓冲区中,再由位于用户空间的通信库从系统缓冲区中将小消息拷贝到用户指定的接收缓冲区,完成小消息的接收。
本发明的效果体现在1.支持使用多套提供智能网卡的高性能通信网络实现计算机间的互连,目前要求这些网络是同构的。
2.在用户级通信协议中加入支持并行通信的功能模块,实现消息数据的并行传输。通过消息分片和网络绑定,一方面使得一个大消息的数据能够通过多套网络同时进行并行传输,从而提高了单个大消息的传输带宽;另一方面,使得发往不同目的地的小消息可以通过不同的网络同时并行传输,从而提高了小消息的吞吐率。整体上便于应用获得多套互连网络硬件提供的聚合性能。
3.通过使用多套网络和并行通信协议,使得计算机间的通信系统具有非常好的可扩展性。一旦已有通信系统的性能不能满足需求,可通过增加通信系统中的网络套数提高通信系统的性能。
4.在实现并行通信的同时,保持了用户级通信原有的特征,即消息传递的主要通路上基本上“旁路”了操作系统核心,大消息的传递中没有内存拷贝,消息的传递是保序的。
5.实现了网络的虚拟化,使得使用多套网络的并行通信对用户透明。用户在使用时感觉不到多套网络的存在,也感觉不到消息的并行传输过程,这消除了用户参与并行通信过程的负担。
6.本发明提供的方法只需对现有的用户级通信协议进行较小的扩展,主要集中在用户空间的通信库和核心空间的设备驱动程序,底层网络智能网卡上的通信控制程序无需修改,因此容易实现。
7.并行通信对底层网络透明,底层网络无需为并行通信进行任何调整。因此本发明提供的并行通信方法对底层网络具有广泛的适应性,采用该方法实现的通信软件具有良好的可移植性。
8.本发明方法在用户级通信协议基础上进行较小的扩展,因此增加的新的开销不大,对通信性能的影响较小。采用该方法实现的系统中,通信带宽基本上达到了多套网络的聚合带宽,而通信延迟只有微小增加。
9.通信负载在多套网络间是基本平衡的。
权利要求
1.一种基于智能网卡的计算机间用户级并行通信方法,其特征在于包括以下步骤在数据发送方用于数据分流和负载平衡的数据拆分步骤;在智能网卡上用于在计算机间将已拆分数据由数据发送方向数据接收方传递的数据并行传输步骤;在数据接收方用于数据接收和拼接的数据拼接步骤;在数据接收方用于通知用户数据到达的消息通知步骤。
2.如权利要求1所述的计算机间并行通信的方法,其特征在于计算机间使用多套高性能互连网络进行连接,并且所用网络是同构的。
3.如权利要求1所述的计算机间并行通信的方法,其特征在于所用的高性能互连网络必须提供智能网卡,即网卡有一定的协议处理能力,通过运行在网卡上的通信控制程序或固件能够支持消息数据在发送与接收方用户空间数据缓冲区间的直接传输,支持用户级通信结构。
4.如权利要求1所述的计算机间并行通信的方法,其特征在于在实现用户级通信协议的操作系统核心空间的设备驱动程序和用户空间的通信库中加入实现并行通信的功能模块,数据的拆分与拼接由并行通信模块实现。
5.如权利要求1所述的计算机间并行通信的方法,其特征在于消息的发送要经过操作系统核心中的设备驱动程序,由设备驱动程序中所植入的并行模块完成对待发送消息在多套网络间的分发与拆分。
6.如权利要求1所述的计算机间并行通信的方法,其特征在于消息分发与拆分的过程将消息分为大、小两类,执行不同的策略,小消息实行网络绑定的策略,所有目的地相同的小消息都通过一套静态选定的网络发送;大消息采用拆分一轮转的策略,首先大消息被拆分成若干分片,然后这些分片按照轮转的方法在底层多套网络间进行分派、发送。
7.如权利要求1所述的计算机间并行通信的方法,其特征在于通信网络将分派到的小消息或大消息的分片作为一个正常的消息在通信双方用户空间的数据缓冲区间直接传输,消息的并行传递对通信硬件透明。
8.如权利要求1所述的计算机间并行通信的方法,其特征在于并行通信中消息传递结束的判定由位于接收方用户空间中的通信库中的并行通信模块完成。
9.如权利要求1所述的计算机间并行通信的方法,其特征在于计算机间消息的传递是有序的。
10.如权利要求1所述的计算机间并行通信的方法,其特征在于计算机间消息的传递是无拷贝的。
11.如权利要求1所述的计算机间并行通信的方法,其特征在于计算机间消息的并行传递对上层用户是透明的。
12.一种基于智能网卡的计算机间用户级并行通信方法,该方法首先将大消息进行分片,原来的一个消息被分成若干个小的消息片段,然后再由通信控制模块以轮转的方式将这些消息分片依次分发到多套网络上,实现不同消息分片间的并行传输,这里消息分片成为每套网络传输的最小单位,一个确定的消息其消息分片能够通过多套网络同时进行传输。
13.根据权利要求12的基于智能网卡的计算机间用户级并行通信方法,其特征在于,消息分片方法,1.发送过程中的消息分片
在消息发送方,消息根据其长度不同被分为固定大小的分片,其中,消息1被分为4个分片,依次为分片0、分片1、分片2和分片3;消息2被分为5个分片,依次为分片0、分片1、分片2、分片3和分片4,消息的各个分片依次从不同的通信网络上传输,若消息不能被均匀分配在不同的通信网络上,则排列在前面的通信网络将发送较多的分片,消息1的分片0和2、消息2的分片0、2和4依次由通信网络0进行发送;消息1的分片1和3、消息2的分片1和3依次由通信网络1进行发送;2.接收过程中的消息分片在消息接收方,消息缓冲区根据其长度不同被分为固定大小的分片,其中,消息缓冲区1被分为4个分片,依次为分片0、分片1、分片2和分片3;消息缓冲区2被分为5个分片,依次为分片0、分片1、分片2、分片3和分片4,消息缓冲区的各个分片依次从不同的通信网络上接收数据,若消息缓冲区不能被均匀分配在不同的通信网络上,则排列在前面的通信网络将接收较多的分片,消息缓冲区1的分片0和2、消息缓冲区2的分片0、2和4依次从通信网络0上接收数据;消息缓冲区1的分片1和3、消息缓冲区2的分片1和3依次从通信网络1上接收数据。
14.根据权利要求12的基于智能网卡的计算机间用户级并行通信方法,其并行通信核心步骤如下步骤1,用户应用程序将消息接收缓冲区信息注册至通信系统中;步骤2,并行模块根据消息的分片原则将消息接收缓冲区信息分配到不同的网卡上,并等待消息的到达;步骤3,用户应用程序的消息发送请求提交至通信系统中;步骤4,并行模块根据消息的分片原则将消息发送请求分配到不同的通信网络上,并将相应的消息发送请求信息填写到对应的网卡上;步骤5,由底层的用户级通信协议将分给该网卡的消息分片由用户缓冲区下传至网卡上;步骤6,发送方计算机上的智能网卡向接收方计算机的智能网卡传输数据的过程;步骤7,根据底层的用户级通信协议确认消息各分片发送完成后形成消息发送完成事件,并通知用户应用程序;步骤8,由网卡控制程序将接收至网卡上的数据上传至用户缓冲区;步骤9,根据底层的用户级通信协议确认消息各个分片接收完成后,形成消息接收完成事件,并通知用户应用程序。
15.根据权利要求12的基于智能网卡的计算机间用户级并行通信方法,并行通信步骤如下并行通信在消息发送方的一次消息发送操作流程由步骤S1至S5构成;步骤S1将用户的消息发送请求提交至通信系统中;步骤S2并行模块根据消息的分片原则将消息发送请求分配到不同的通信网络上,并将相应的消息发送请求信息填写到对应的网卡上;步骤S3由底层的用户级通信协议将分给该网卡的消息分片由用户缓冲区下传至网卡上;步骤S4由网卡控制程序由网卡向通信网络发送消息数据;步骤S5根据底层的用户级通信协议确认消息各分片发送完成后形成消息发送完成事件,并通知用户程序;并行通信在消息接收方的一次消息接收操作流程由步骤R1至R5构成;步骤R1将用户的消息接收缓冲区信息至通信系统中;步骤R2并行模块根据消息的分片原则将消息接收缓冲区信息分配到不同的网卡上;步骤R3等待网络上的数据,并接收一个完整的数据包;步骤R4由网卡控制程序将接收至网卡上的数据上传至用户缓冲区;步骤R5根据底层的用户级通信协议确认消息各个分片接收完成后,形成消息接收完成事件,并通知用户程序。
全文摘要
一种计算机间用户级并行通信的方法,使用多套支持智能网卡的高性能网络进行计算机间的互连,在实现用户级通信协议的操作系统核心空间设备驱动程序和用户空间通信库中加入支持并行通信的器件,传输过程中数据自动在多套互连网络间进行拆分和拼接。该方法能够实现计算机间并行、无拷贝、保序的消息传递,使用户能够获得多套互连网络硬件提供的聚合性能。该方法使得并行通信过程对上层用户和底层通信网络透明,避免增加用户负担和对特定网络的修改与依赖。该方法适用于单套互连网络不能满足对计算机间通信性能需求的系统。
文档编号H04L29/06GK1547348SQ200310119408
公开日2004年11月17日 申请日期2003年12月10日 优先权日2003年12月10日
发明者马捷, 孟丹, 霍志刚, 高帆, 马 捷 申请人:中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1