CN111404842B - 数据传输方法、装置及计算机存储介质 - Google Patents
数据传输方法、装置及计算机存储介质 Download PDFInfo
- Publication number
- CN111404842B CN111404842B CN201911268511.0A CN201911268511A CN111404842B CN 111404842 B CN111404842 B CN 111404842B CN 201911268511 A CN201911268511 A CN 201911268511A CN 111404842 B CN111404842 B CN 111404842B
- Authority
- CN
- China
- Prior art keywords
- memory blocks
- receiving
- queue
- data
- data units
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 230000005540 biological transmission Effects 0.000 title claims abstract description 81
- 238000000034 method Methods 0.000 title claims abstract description 66
- 230000015654 memory Effects 0.000 claims abstract description 381
- 230000003139 buffering effect Effects 0.000 claims description 6
- 238000004891 communication Methods 0.000 abstract description 10
- 230000003993 interaction Effects 0.000 abstract description 9
- 238000012545 processing Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 8
- 238000004590 computer program Methods 0.000 description 4
- 238000012790 confirmation Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000006886 spatial memory Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/901—Buffering arrangements using storage descriptor, e.g. read or write pointers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9063—Intermediate storage in different physical parts of a node or terminal
- H04L49/9068—Intermediate storage in different physical parts of a node or terminal in the network interface card
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Communication Control (AREA)
Abstract
本申请公开了一种数据传输方法、装置及计算机存储介质,属于通信技术领域。所述方法包括:接收端中配置有接收队列,接收队列包括N个内存块,一个内存块用于缓存一个数据单元,N为大于1的正整数。也即是,在本申请实施例中,在接收端配置一个固定容量的接收队列,当接收端接收到发送端发送的一个或多个数据单元时,将每个数据单元缓存在接收队列中的一个内存块中,并由接收端及时向发送端发送通知消息,以便于发送端能够根据空闲内存块的数量来发送数据单元,无需发送端每次传输数据之前先向接收端发送内存申请请求,从而避免了数据传输过程中接收端与发送端之间频繁的交互。
Description
技术领域
本申请涉及通信技术领域,特别涉及一种数据传输方法、装置及计算机存储介质。
背景技术
随着通信技术的发展,不同计算机之间可以采用RDMA(remote direct memoryaccess,远程直接内存访问)技术进行数据传输,该技术可以实现数据从一台计算机的内存直接传输到另一台计算机的内存,无需计算机上的CPU(central processing unit,中央处理器)的介入,从而有效解决了数据传输过程的延迟问题。
相关技术中,在利用RDMA技术进行数据传输时,如果接收端的内存未准备就绪就进入数据传输状态,将导致接收端接收数据出现延时的概率大大增加,极大影响数据传输性能。因此,发送端在每次进行数据传输之前,先向接收端发送内存申请请求,该内存申请请求携带待申请的内存的大小。接收端根据内存申请请求配置出用于缓存发送端发送的数据的内存,然后向发送端发送确认消息,发送端在接收到确认消息之后便可进行数据传输。
由于发送端每次在进行数据传输之前均需要和接收端进行消息交互,而随着数据传输次数的增多,频繁的消息交互会严重影响数据传输性能。
发明内容
本申请实施例提供了一种数据传输方法,可以避免现有技术中发送端和接收端频繁的消息交互。所述技术方案如下:
第一方面,提供了一种数据传输方法,应用于接收端,所述接收端中配置有接收队列,所述接收队列包括N个内存块,一个内存块用于缓存一个数据单元,所述N为大于1的正整数;所述方法包括:
接收发送端发送的一个或多个数据单元,所述一个或多个数据单元的数量小于所述N;
将所述一个或多个数据单元缓存在所述接收队列包括的内存块中;
向发送端发送用于指示所述接收队列中空闲内存块的数量的通知消息,以使所述发送端根据所述空闲内存块的数量继续发送数据单元,所述空闲内存块是指没有缓存数据单元的内存块。
可选的,所述向发送端发送用于指示所述接收队列中空闲内存块的数量的通知消息,包括:
如果检测到所述接收队列中存在内存块被移出所述接收队列,在所述接收队列中添加空闲内存块,添加的空闲内存块的数量和被移出的内存块的数量相同;
向所述发送端发送所述通知消息。
可选的,所述接收端上部署有计数器,所述计数器用于记录从创建所述接收队列到当前时间之间从所述接收队列中移出的内存块的总数量;
所述检测到所述接收队列中存在内存块被移出所述接收队列,包括:
如果所述计数器记录的数量发生变化,则确定检测到所述接收队列中存在内存块被移出所述接收队列;
所述向所述发送端发送所述通知消息,包括:
向所述发送端发送携带所述计数器记录的数量的通知消息,以使所述发送端根据所述计数器记录的数量确定所述接收队列中空闲内存块的数量。
可选的,所述方法还包括:
接收所述发送端发送的协商消息,所述协商消息携带所述待创建的内存块的大小以及待创建的内存块的数量;
根据所述协商消息创建所述接收队列,创建的接收队列中包括的内存块的数量等于所述协商消息中待创建内存块的数量,所述创建的接收队列中包括的内存块的大小等于所述协商消息中待创建的内存块的大小。
可选的,所述发送端基于远程直接内存访问RDMA方式向所述接收端传输数据;
所述接收发送端发送的一个或多个数据单元,包括:
通过所述接收端与所述发送端之间的数据链路接收所述一个或多个数据单元;
所述向发送端发送用于指示所述接收队列中空闲内存块的数量的通知消息,包括:
通过所述接收端与所述发送端之间的控制链路发送所述通知消息。
第二方面,提供了一种数据传输方法,应用于发送端,所述方法包括:
获取接收端发送的通知消息,所述通知消息用于指示所述接收端中配置的接收队列中空闲内存块的数量,所述接收队列包括N个内存块,一个内存块用于缓存所述发送端发送的一个数据单元,所述N为大于1的正整数,所述空闲内存块是指没有缓存数据单元的内存块;
根据所述通知消息,确定所述空闲内存块的数量;
根据所述空闲内存块的数量和待发送的数据单元的数量,确定目标数量;
向所述接收端发送所述目标数量个数据单元。
可选的,所述根据所述空闲内存块的数量和待发送的数据单元的数量,确定目标数量,包括:
如果所述空闲内存块的数量大于或等于待发送的数据单元的数量,将所述待发送的数据单元的数量确定为所述目标数量。
可选的,所述根据所述空闲内存块的数量和待发送的数据单元的数量,确定目标数量,包括:
如果所述空闲内存块的数量小于待发送的数据单元的数量,将所述空闲内存块的数量确定为所述目标数量。
可选的,所述接收端上部署有计数器,所述计数器用于记录从创建所述接收队列到当前时间之间从所述接收队列中移出的内存块的总数量,所述通知消息中携带所述计数器记录的数量;
所述根据所述通知消息,确定所述空闲内存块的数量,包括:
确定从创建所述接收队列到当前时间之间所述发送端发送的数据单元的总数量;
根据所述发送端发送的数据单元的总数量,所述N以及所述计数器记录的数量,确定所述空闲内存块的数量。
可选的,所述方法还包括:
向所述接收端发送协商消息,所述协商消息携带所述发送端传输数据时所使用的数据单元的大小和数据单元总数量,以使所述接收端根据所述协商消息创建所述接收队列。
第三方面,提供了一种数据传输装置,应用于接收端,所述接收端中配置有接收队列,所述接收队列包括N个内存块,一个内存块用于缓存一个数据单元,所述N为大于1的正整数;所述装置包括:
第一接收模块,用于接收发送端发送的一个或多个数据单元,所述一个或多个数据单元的数量小于所述N;
缓存模块,用于将所述一个或多个数据单元缓存在所述接收队列包括的内存块中;
发送模块,用于向发送端发送用于指示所述接收队列中空闲内存块的数量的通知消息,以使所述发送端根据所述空闲内存块的数量继续发送数据单元,所述空闲内存块是指没有缓存数据单元的内存块。
可选的,所述发送模块,包括:
创建子模块,用于如果检测到所述接收队列中存在内存块被移出所述接收队列,在所述接收队列中添加空闲内存块,添加的空闲内存块的数量和被移出的内存块的数量相同;
第一发送子模块,用于向所述发送端发送所述通知消息。
可选的,所述接收端上部署有计数器,所述计数器用于记录从创建所述接收队列到当前时间之间从所述接收队列中移出的内存块的总数量;
所述创建子模块,还用于:
如果所述计数器记录的数量发生变化,则确定检测到所述接收队列中存在内存块被移出所述接收队列;
所述第一发送子模块,还用于:
向所述发送端发送携带所述计数器记录的数量的通知消息,以使所述发送端根据所述计数器记录的数量确定所述接收队列中空闲内存块的数量。
可选的,所述装置还包括:
第二接收模块,用于接收所述发送端发送的协商消息,所述协商消息携带所述待创建的内存块的大小以及待创建的内存块的数量;
创建模块,用于根据所述协商消息创建所述接收队列,创建的接收队列中包括的内存块的数量等于所述协商消息中待创建内存块的数量,所述创建的接收队列中包括的内存块的大小等于所述协商消息中待创建的内存块的大小。
可选的,所述发送端基于远程直接内存访问RDMA方式向所述接收端传输数据;
所述第一接收模块包括:
接收子模块,用于通过所述接收端与所述发送端之间的数据链路接收所述一个或多个数据单元;
第二发送子模块,用于所述向发送端发送用于指示所述接收队列中空闲内存块的数量的通知消息,包括:
第三发送子模块,用于通过所述接收端与所述发送端之间的控制链路发送所述通知消息。
第四方面,提供了一种数据传输装置,应用于发送端,所述装置包括:
获取模块,用于获取接收端发送的通知消息,所述通知消息用于指示所述接收端中配置的接收队列中空闲内存块的数量,所述接收队列包括N个内存块,一个内存块用于缓存所述发送端发送的一个数据单元,所述N为大于1的正整数,所述空闲内存块是指没有缓存数据单元的内存块;
第一确定模块,用于根据所述通知消息,确定所述空闲内存块的数量;
第二确定模块,用于根据所述空闲内存块的数量和待发送的数据单元的数量,确定目标数量;
第一发送模块,用于向所述接收端发送所述目标数量个数据单元。
可选的,所述第二确定模块用于:
如果所述空闲内存块的数量大于或等于待发送的数据单元的数量,将所述待发送的数据单元的数量确定为所述目标数量。
可选的,所述所述第二确定模块还用于:
如果所述空闲内存块的数量小于待发送的数据单元的数量,将所述空闲内存块的数量确定为所述目标数量。
可选的,所述接收端上部署有计数器,所述计数器用于记录从创建所述接收队列到当前时间之间从所述接收队列中移出的内存块的总数量,所述通知消息中携带所述计数器记录的数量;
所述第一确定模块包括:
第一确定子模块,用于确定从创建所述接收队列到当前时间之间所述发送端发送的数据单元的总数量;
第二确定子模块,用于根据所述发送端发送的数据单元的总数量,所述N以及所述计数器记录的数量,确定所述空闲内存块的数量。
可选的,所述装置还包括:
第二发送模块,用于向所述接收端发送协商消息,所述协商消息携带所述发送端传输数据时所使用的数据单元的大小和数据单元总数量,以使所述接收端根据所述协商消息创建所述接收队列。
第五方面,提供了一种数据传输装置,所述数据传输装置包括处理器、通信接口、存储器和通信总线;
其中,所述处理器、所述通信接口和所述存储器通过所述通信总线完成相互间的通信;
所述存储器用于存放计算机程序;
所述处理器用于执行所述存储器上所存放的程序,以实现前述提供数据传输方法。
第六方面,提供了一种计算机可读存储介质,所述存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现前述提供的数据传输方法的步骤。
本申请实施例提供的技术方案带来的有益效果至少包括:
在本申请实施例中,接收端中配置有接收队列,接收队列包括N个内存块,一个内存块用于缓存一个数据单元,N为大于1的正整数。也即是,在本申请实施例中,在接收端配置一个固定容量的接收队列,当接收端接收到发送端发送的一个或多个数据单元时,将一个或多个中每个数据单元缓存在接收队列中的一个内存块中,并由接收端及时向发送端发送通知消息,以便于发送端能够根据空闲内存块的数量来发送数据单元,无需发送端每次传输数据之前先向接收端发送内存申请请求,从而避免了数据传输过程中接收端与发送端之间频繁的交互。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种数据传输系统结构图。
图2是本申请实施例提供的一种数据传输方法流程图。
图3是本申请实施例提供的另一种数据传输方法流程图。
图4是本申请实施例提供的一种数据传输方法流程图。
图5是本申请实施例提供的一种接收队列示意图。
图6是本申请实施例提供的一种数据传输装置的结构示意图。
图7是本申请实施例提供的一种数据传输装置的结构示意图。
图8是本申请实施例提供的一种服务器的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
在对本申请实施例进行详细的解释说明之前,先对本申请实施例涉及的系统架构予以介绍。
图1是本申请实施例提供的一种数据传输系统架构图。如图1所示。该数据传输系统100包括一个或多个客户端101、一个或多个服务端102、
对于一个或多个客户端101中任一客户端101,该客户端101可以与一个或多个服务端102的任一服务端102之间通过无线或有线方式连接以进行通信。
其中,客户端101和服务端102之间可以进行数据传输。在本申请实施例中,客户端101和服务端102之间是通过RDMA方式进行数据传输的。如图1所示,服务端102和客户端101中分别部署有网卡(smartnic)。当服务端102和客户端101之间需要进行数据传输时,比如,当发送端101需要向服务端102发送数据时,发送端101上的网卡可以直接将发送端中的内存中的数据发送至服务端102上的网卡,由服务器端102上的网卡将接收到的数据存储至服务端102中的内存,中间不涉及客户端101和服务端102上的处理器,这样就不需要耗费过多的计算机的处理资源,从而提高了客户端101和服务端102之间传输数据的性能。
本申请实施例提供的数据传输方法就应用于客户端101和服务端102之间是通过RDMA方式进行数据传输的场景中。
图1中的客户端101和服务端102可以分别运行在不同的主机上。本申请实施例中的主机可以计算机、服务器等设备。另外,图1是以一个客户端和一个服务端为例进行说明,并不构成对本申请实施例的限定。
此外,图1中的网卡一般为无限带宽(Infiniband)网卡,或者为支持ROCE(RDMAover converged ethernet,RDMA过融合以太网)协议或iWARP(Internet Wide Area RDMAProtocol,互联网广域RDMA协议)的以太网卡。前述几个网卡仅仅用于举例说明,并不构成对本申请实施例的对网卡类型的限定。
需要说明的是,本申请实施例中,如果为单向数据传输,客户端101为发送端,服务端102为接收端。如果为双向数据传输,则客户端101既是发送端也是接收端,服务端102也既是发送端也是接收端。也即是,下述实施例提供的数据传输方法可以应用于客户端101向服务端102发送数据的场景,也可以应用于服务端102向客户端101发送数据的场景,也可以应用于客户端101向服务端102之间双向传输数据的场景。其中,任一方向另一方传输数据的具体方式均可以参考下述实施例,在此先不详细说明。
接下来对本申请实施例提供的数据传输方法进行详细的解释说明。
图2是本申请实施例提供的一种数据传输方法的流程图,该方法应用于接收端。请参考图2,该方法包括如下步骤:
步骤201:接收端接收发送端发送的一个或多个数据单元,一个或多个数据单元的数量小于N。
其中,接收端中配置有接收队列,接收队列包括N个内存块,一个内存块用于缓存一个数据单元,N为大于1的正整数
步骤202:接收端将一个或多个数据单元缓存在接收队列包括的内存块中。
步骤203:接收端向发送端发送用于指示接收队列中空闲内存块的数量的通知消息,以使发送端根据空闲内存块的数量继续发送数据单元,空闲内存块是指没有缓存数据单元的内存块。
在本申请实施例中,接收端中配置有接收队列,接收队列包括N个内存块,一个内存块用于缓存一个数据单元,N为大于1的正整数。也即是,在本申请实施例中,在接收端配置一个固定容量的接收队列,当接收端接收到发送端发送的一个或多个数据单元时,将一个或多个中每个数据单元缓存在接收队列中的一个内存块中,并由接收端及时向发送端发送通知消息,以便于发送端能够根据空闲内存块的数量来发送数据单元,无需发送端每次传输数据之前先向接收端发送内存申请请求,从而避免了数据传输过程中接收端与发送端之间频繁的交互。
图3是本申请实施例提供的一种数据传输方法的流程图,该方法应用于发送端。请参考图3,该方法包括如下步骤:
步骤301:发送端获取接收端发送的通知消息,通知消息用于指示接收端中配置的接收队列中空闲内存块的数量,接收队列包括N个内存块,一个内存块用于缓存发送端发送的一个数据单元,N为大于1的正整数,空闲内存块是指没有缓存数据单元的内存块。
步骤302:发送端根据通知消息,确定空闲内存块的数量
步骤303:发送端根据空闲内存块的数量和待发送的数据单元的数量,确定目标数量。
步骤304:发送端向接收端发送目标数量个数据单元。
在本申请实施例中,当发送端根据接收端发送的通知消息发送的一个或多个数据单元时,通知消息用于指示接收端中配置的接收队列中空闲内存块的数量。发送端根据空闲内存块的数量和待发送的数据单元的数量,向接收端发送目标数量个数据单元,无需发送端每次传输数据之前先向接收端发送内存申请请求,从而避免了数据传输过程中接收端与发送端之间频繁的交互。
图4是本申请实施例提供的一种数据传输方法的流程图,该方法应用于数据传输系统。请参考图4,该方法包括如下步骤;
步骤401:发送端向接收端发送协商消息,接收端接收发送端发送的协商消息,该协商消息携带待创建的内存块的大小以及待创建的内存块的数量。
在本申请实施例中,为了避免发送端在每次向接收端发送数据之前需要向接收端发送内存申请请求,可以将发送端配置为以数据单元为单位来传输数据,并预先在接收端中配置接收队列,该接收队列用于缓存发送端向接收端发送的数据单元,以便于后续接收端向发送端通知该接收队列中存储的数据单元的情况,以使发送端根据该接收队列中存储的数据单元的情况来控制发送的数据单元的数量,也即是,控制发送的流量。因此,发送端在向接收端传输数据之前,需要先通过步骤401至步骤402和接收端进行协商,以在接收端配置上述接收队列。
在一种可能的实现方式中,参考图1,发送端上配置有第一网卡,第一网卡上部署有网卡驱动接口,网卡驱动接口中内置有参数设置模块。接收端上配置有第二网卡,第二网卡上也部署有网卡驱动接口。此时,步骤401的实现过程可以为:第一网卡上的网卡驱动接口通过内置的参数设置模块获取待创建内存块的数量和待创建内存块的大小,然后根据这两个参数生成协商消息,并将该协商消息发送至第二网卡上的网卡驱动接口,以实现发送端向接收端发送协商消息。
其中,上述第一网卡和第二网卡上的网卡驱动接口均可以标记为rdma_connect,参数设置模块可以标记为conn_param,待创建内存块的数量和待创建内存块的大小可以标记为private_data。
步骤402:接收端根据协商消息创建接收队列,创建的接收队列中包括的内存块的数量等于该协商消息中待创建内存块的数量,该创建的接收队列中包括的内存块的大小等于该协商消息中待创建的内存块的大小。
在本申请实施例中,当发送端以数据单元为单位传输数据时,为了便于接收端能够及时获取到接收队列中的数据单元的存储情况,在接收端中配置的接收队列为包括多个内存块的接收队列,每个内存块用于存储一个数据单元,以便于后续接收端能够根据接收队列中空闲内存块的数量来快速确定接收队列中的数据单元的存储情况。因此,接收端在接收到发送端发送的协商消息时,便可根据协商消息创建接收队列。
在一种可能的实现方式中,接收端可以严格按照发送端发送的协商消息来创建接收队列,也即是,创建接收队列中的内存块的数量等于协商消息中携带的待创建的内存块的大小,创建的接收队列中包括内存块的大小等于协商消息中包括的待创建的内存块的大小。
在另一种可能的实现方式中,接收端也可以非严格按照发送端发送的协商消息来创建接收队列,也即是,内存块的大小大于协商消息中包括的待创建的内存块的大小,接收队列中的内存块的数量大于协商消息中携带的待创建的内存块的大小。
比如,协商消息中携带的发送端传输数据时所使用的数据单元的大小为B,此时,接收端确定的内存块的大小可以为B,也可以为大于B的一个数值。协商消息中携带的协商消息中包括的待创建的内存块的数量为P,此时,创建接收队列中的内存块的数量可以为P,也可以为大于P的一个数值。
另外,接收端在成功创建接收队列之后,需要向发送端回复确认消息,以使发送端能够确定接收端这一侧已经成功创建了接收队列,从而开始进行数据传输。
需要说明的是,如果创建的接收队列中的内存块的数量大于协商消息中携带的待创建的内存块的数量,此时,上述确认消息中还需携带创建的接收队列中的内存块的数量,以便于发送端能够获知创建的接收队列的基本情况。可选地,如果创建的接收队列中的内存块的大小大于协商消息中包括的待创建的内存块的大小,该确认消息中还可以携带创建的接收队列中的内存块的大小。
在通过上述步骤401至步骤402在接收端配置完接收队列之后,发送端便可通过下述步骤403向接收端传输数据。也即是,在本申请实施例中,在发送端向接收端发送数据之前,接收端中配置有接收队列,接收队列包括N个内存块,一个内存块用于缓存一个数据单元,N为大于1的正整数。
另外,需要说明的是,上述N个内存块还可以称为一个内存池,也即是,在本申请实施例中,通过上述步骤401至步骤402创建了一个容量一定的内存池。
步骤403:发送端向接收端发送一个或多个数据单元,接收端接收发送端发送的一个或多个数据单元,一个或多个数据单元的数量小于N。
基于步骤401可知,发送端被配置为以数据单元为单位来传输数据,因此,在一种可能的实现方式中,当发送端需要向接收端发送数据时,可以将待发送的数据进行分块,得到一个或多个数据单元,然后将这一个或多个数据单元发送至接收端。
步骤404:接收端将一个或多个中每个数据单元缓存在接收队列中的一个内存块中。
由于接收端接收这一个或多个数据单元是有先后顺序的,因此,在步骤405中,每当接收端接收到一个数据单元,便可将该数据单元缓存在接收队列中的内存块中,从而实现将这一个或多个中每个数据单元依次缓存在一个或多个内存块中。
另外,为了便于对接收队列中的内存块进行管理,还可以将接收队列中各个内存块按照存储数据单元的先后顺序进行排列,排序后的接收队列标记为RQ。也即是,缓存数据单元较早的内存块排在接收队列中靠近队头的位置。如此,空闲内存块便排在接收队列中靠近队尾的位置。后续当接收端的处理器需要处理数据时,便可从接收队列的对头开始依次移出一个内存块,对该内存块中缓存的数据单元进行处理,也即是,从接收队列中消费内存块。
因此,在一种可能的实现方式中,步骤405可能的实现过程为:按照一个或多个中每个数据单元的接收时间从早到晚的顺序,依次将这一个或多个中每个数据单元缓存在接收队列中的一个空间内存块中。
如图5所示,接收端创建的接收队列中处于队头的内存块0已经存储有数据单元,表示该内存块已经被占用,当发送端按照先后顺序分别向接收端发送数据单元1、数据单元2、数据单元3,接收端的接收队列按照次序分别将数据单元1放置在内存块1中,将数据单元2放置在内存块2中,将数据单元3放置在内存3中,该接收队列的队尾放置有空闲内存块,该空闲内存块用于对接收端后续接收的数据单元进行存储。
步骤405:接收端向发送端发送用于指示接收队列中空闲内存块的数量的通知消息,发送端获取接收端发送的通知消息,空闲内存块是指没有缓存数据单元的内存块。
在一种可能的实现方式中,步骤405可能的实现过程为:每当接收端向缓存中的内存块中缓存数据时,接收端便可直接确定当前接收队列中的空闲内存块的数量,然后将该空闲内存块的数量携带在通知消息中,并向发送端发送该通知消息。
可选地,接收端的处理器在处理接收队列的内存块的过程中,为了保证接收队列的容量固定,因此,每当处理器从接收队列中移出一个内存块,便在接收队列中添加一个空闲内存块,以保证接收队列中包括的内存块的个数一直保持为N。由于发送端可以预先获知到接收端配置的接收队列中的内存块的总数量N,因此,发送端只需要知道接收队列中被移出的内存块的数量,便可确定接收队列中空闲内存块的数量。所以,在另一种可能的实现方式中,步骤403可能的实现过程为:接收端实时监控接收队列,如果检测到接收队列中存在内存块被移出接收队列,则在接收队列中添加空闲内存块,添加的空闲内存块的数量和被移出的内存块的数量相同;向发送端发送通知消息。此时,通知消息中携带的是被移出的内存块的数量。
另外,接收端还可以创建完成队列,该完成队列可以标记为CQ,该完成队列用于存储接收队列中被移出的内存块,也即是,当接收端的处理器处理完接收队列的一个数据单元时,则将该已处理数据单元所占用的内存块移出接收队列,并放置在完成队列。因此,接收端的处理器可以实时监控完成队列中是否有新的内存块产生,当判断出有新内存块产生时,向发送端发送通知消息。比如,处理器可以通过判定计算机代码包括的opcode为IBV_WC_RECV以判断出完成队列有接收到新数据。
进一步地,接收端上部署有计数器,计数器用于记录从创建接收队列到当前时间之间从接收队列中移出的内存块的总数量。也即是,该计数器用于记录完成队列中内存块的数量。由于完成队列中的内存块是指被接收端的处理器处理之后的内存块,因此,该计数器还可以称为处理计数器。
此时,接收端检测到接收队列中存在内存块被移出接收队列的实现过程为:如果上述计数器记录的数量发生变化,则确定检测到接收队列中存在内存块被移出接收队列。这种情况下,向发送端发送通知消息的实现过程可以为:向发送端发送携带计数器记录的数量的通知消息,以便于发送端计数器记录的数量确定接收队列中空闲内存块的数量。
另外,在传统的RDMA技术中,发送端和接收端由于不涉及处理器的介入,因此发送端和接收端在进行数据传输时,通常是在发送端和接收端之间创建数据链路以利用该数据链路进行数据传输,此时通过该数据链路传输的数据同时包括有效的数据以及内存请求请求等这类控制消息。在本申请实施例中,为了避免这类控制消息占用有效数据的带宽,可以在发送端和接收端之间分别创建数据链路和控制链路,通过数据链路来传输数据单元这种有效数据,通过控制链路传输上述协商消息以及通知消息等控制消息,以避免控制消息占用数据单元所使用的数据链路的有效带宽,从而提高了数据传输性能。
步骤406:发送端根据该通知消息,确定空闲内存块的数量。
基于步骤405可知,在一种场景中,如果通知消息中直接携带有空闲内存块的数量,此时发送端则可直接从该通知消息中获取空闲内存块的数量。
可选地,在另一种场景中,如果接收端上部署有计数器,计数器用于记录从创建接收队列到当前时间之间从接收队列中移出的内存块的总数量,此时通知消息中携带计数器记录的数量。这种情况下,步骤406的实现过程可以为:确定从创建接收队列到当前时间之间发送端发送的数据单元的总数量;根据发送端发送的数据单元的总数量,N以及计数器记录的数量,确定空闲内存块的数量。
例如,若确定从创建接收队列到当前时间之间发送端发送的数据单元的总数量S时,而由于接收端中的接收队列的内存块的总数量为N,以及计数器记录的数量H,便可确实出接收队列中的空闲内存块的数量为N-(S-H)。
步骤407:发送端根据空闲内存块的数量和待发送的数据单元的数量,确定目标数量。
在一种可能的实现方式中,步骤407可能的实现过程为:如果空闲内存块的数量大于或等于待发送的数据单元的数量,将待发送的数据单元的数量确定为目标数量。如果空闲内存块的数量小于待发送的数据单元的数量,将空闲内存块的数量确定为目标数量。通过这种方式,可以实现发送端根据接收端中的接收队列中的数据单元的存储情况控制发送的流量。
例如,如果当前空闲内存块的数量为7。而待发送的数据单元的数量3,则将该待发送的数据单元的数量3确定为目标数量。如果当前空闲内存块的数量为2。而待待发送的数据单元的数量3,则将该当前空闲内存块的数量2确定为目标数量。
步骤408:发送端向接收端发送目标数量个数据单元。
其中,目标数量可以为一个或多个,当发送端向接收端发送目标数量个数据单元之后,接收端便可通过上述步骤404继续处理发送端发送的数据单元。在本申请实施例中,接收端中配置有接收队列,接收队列包括N个内存块,一个内存块用于缓存一个数据单元,N为大于1的正整数。也即是,在本申请实施例中,在接收端配置一个固定容量的接收队列,当接收端接收到发送端发送的一个或多个数据单元时,将一个或多个中每个数据单元缓存在接收队列中的一个内存块中,并由接收端及时向发送端发送通知消息,以便于发送端能够根据空闲内存块的数量来发送数据单元,无需发送端每次传输数据之前先向接收端发送内存申请请求,从而避免了数据传输过程中接收端与发送端之间频繁的交互。
上述所有可选技术方案,均可按照任意结合形成本申请的可选实施例,本申请实施例对此不再一一赘述。
图6是本申请实施例提供的一种数据传输装置的结构示意图,该数据传输装置可以由软件、硬件或者两者的结合实现。该数据传输装置可以包括:
第一接收模块601,用于接收发送端发送的一个或多个数据单元,该一个或多个数据单元的数量小于N;
缓存模块602,用于将该一个或多个数据单元缓存在该接收队列包括的内存块中;
发送模块603,用于向发送端发送用于指示该接收队列中空闲内存块的数量的通知消息,以使发送端根据该空闲内存块的数量继续发送数据单元,该空闲内存块是指没有缓存数据单元的内存块。
可选的,发送模块,包括:
创建子模块,用于如果检测到该接收队列中存在内存块被移出该接收队列,在该接收队列中添加空闲内存块,添加的空闲内存块的数量和被移出的内存块的数量相同;
第一发送子模块,用于向发送端发送该通知消息。
可选的,接收端上部署有计数器,该计数器用于记录从创建该接收队列到当前时间之间从该接收队列中移出的内存块的总数量;
创建子模块,还用于:
如果计数器记录的数量发生变化,则确定检测到该接收队列中存在内存块被移出该接收队列;
第一发送子模块,还用于:
向发送端发送携带计数器记录的数量的通知消息,以使发送端根据计数器记录的数量确定该接收队列中空闲内存块的数量。
可选的,装置还包括:
第二接收模块,用于接收该发送端发送的协商消息,该协商消息携带该待创建的内存块的大小以及待创建的内存块的数量;
创建模块,用于根据该协商消息创建该接收队列,创建的接收队列中包括的内存块的数量等于该协商消息中待创建内存块的数量,该创建的接收队列中包括的内存块的大小等于该协商消息中待创建的内存块的大小。
可选的,发送端基于远程直接内存访问RDMA方式向接收端传输数据;
该第一接收模块包括:
接收子模块,用于通过接收端与发送端之间的数据链路接收一个或多个数据单元;
第二发送子模块,用于向发送端发送用于指示该接收队列中空闲内存块的数量的通知消息,包括:
第三发送子模块,用于通过接收端与发送端之间的控制链路发送该通知消息。
在本申请实施例中,在本申请实施例中,接收端中配置有接收队列,接收队列包括N个内存块,一个内存块用于缓存一个数据单元,N为大于1的正整数。也即是,在本申请实施例中,在接收端配置一个固定容量的接收队列,当接收端接收到发送端发送的一个或多个数据单元时,将一个或多个中每个数据单元缓存在接收队列中的一个内存块中,并由接收端及时向发送端发送通知消息,以便于发送端能够根据空闲内存块的数量来发送数据单元,无需发送端每次传输数据之前先向接收端发送内存申请请求,从而避免了数据传输过程中接收端与发送端之间频繁的交互。
图7是本申请实施例提供的一种数据传输装置的结构示意图,该数据传输装置可以由软件、硬件或者两者的结合实现。该数据传输装置可以包括:
获取模块,用于获取接收端发送的通知消息,通知消息用于指示接收端中配置的接收队列中空闲内存块的数量,该接收队列包括N个内存块,一个内存块用于缓存发送端发送的一个数据单元,N为大于1的正整数,空闲内存块是指没有缓存数据单元的内存块;
第一确定模块,用于根据通知消息,确定空闲内存块的数量;
第二确定模块,用于根据空闲内存块的数量和待发送的数据单元的数量,确定目标数量;
第一发送模块,用于向接收端发送目标数量个数据单元。
可选的,第二确定模块用于:
如果空闲内存块的数量大于或等于待发送的数据单元的数量,将待发送的数据单元的数量确定为目标数量。
可选的,第二确定模块还用于:
如果空闲内存块的数量小于待发送的数据单元的数量,将空闲内存块的数量确定为目标数量。
可选的,接收端上部署有计数器,该计数器用于记录从创建接收队列到当前时间之间从接收队列中移出的内存块的总数量,通知消息中携带计数器记录的数量;
第一确定模块包括:
第一确定子模块,用于确定从创建接收队列到当前时间之间发送端发送的数据单元的总数量;
第二确定子模块,用于根据发送端发送的数据单元的总数量,N以及计数器记录的数量,确定空闲内存块的数量。
可选的,该装置还包括:
第二发送模块,用于向接收端发送协商消息,协商消息携带发送端传输数据时所使用的数据单元的大小和数据单元总数量,以使接收端根据协商消息创建接收队列。
在本申请实施例中,当发送端根据接收端发送的通知消息发送的一个或多个数据单元时,通知消息用于指示接收端中配置的接收队列中空闲内存块的数量。发送端根据空闲内存块的数量和待发送的数据单元的数量,向接收端发送目标数量个数据单元,无需发送端每次传输数据之前先向接收端发送内存申请请求,从而避免了数据传输过程中接收端与发送端之间频繁的交互。
需要说明的是:上述实施例提供的数据传输装置在数据传输时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据传输装置与数据传输方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本申请实施例还提供了一种非临时性计算机可读存储介质,当所述存储介质中的指令由终端的处理器执行时,使得终端能够执行上实施例提供的数据传输方法。
本申请实施例还提供了一种包含指令的计算机程序产品,当其在终端上运行时,使得终端执行上述实施例提供的数据传输方法。
图8是本申请实施例提供的一种服务器结构示意图。该服务器可以是后台服务器集群中的服务器。该服务器应用于本申请实施例中的发送端和接收端。具体来讲:
服务器800包括中央处理单元(CPU)801、包括随机存取存储器(RAM)802和只读存储器(ROM)803的系统存储器804,以及连接系统存储器804和中央处理单元801的系统总线805。服务器800还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(I/O系统)806,和用于存储操作系统813、应用程序814和其他程序模块815的大容量存储设备807。
基本输入/输出系统806包括有用于显示信息的显示器808和用于用户输入信息的诸如鼠标、键盘之类的输入设备809。其中显示器808和输入设备809都通过连接到系统总线805的输入输出控制器810连接到中央处理单元801。基本输入/输出系统806还可以包括输入输出控制器810以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器810还提供输出到显示屏、打印机或其他类型的输出设备。
大容量存储设备807通过连接到系统总线805的大容量存储控制器(未示出)连接到中央处理单元801。大容量存储设备807及其相关联的计算机可读介质为服务器800提供非易失性存储。也就是说,大容量存储设备807可以包括诸如硬盘或者CD-ROM驱动器之类的计算机可读介质(未示出)。
不失一般性,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、EPROM、EEPROM、闪存或其他固态存储其技术,CD-ROM、DVD或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知计算机存储介质不局限于上述几种。上述的系统存储器804和大容量存储设备807可以统称为存储器。
根据本申请的各种实施例,服务器800还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即服务器800可以通过连接在系统总线805上的网络接口单元811连接到网络812,或者说,也可以使用网络接口单元811来连接到其他类型的网络或远程计算机系统(未示出)。
上述存储器还包括一个或者一个以上的程序,一个或者一个以上程序存储于存储器中,被配置由CPU执行。
本申请实施例还提供了一种非临时性计算机可读存储介质,当所述存储介质中的指令由服务器的处理器执行时,使得服务器能够执行上述实施例提供的数据传输方法。
本申请实施例还提供了一种包含指令的计算机程序产品,当其在服务器上运行时,使得服务器执行上述实施例提供的数据传输方法。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.一种数据传输方法,其特征在于,应用于接收端,所述接收端中配置有接收队列,所述接收队列包括N个内存块,一个内存块用于缓存一个数据单元,所述N为大于1的正整数;所述方法包括:
通过所述接收端与发送端之间的控制链路接收所述发送端发送的协商消息,所述协商消息携带待创建的内存块的大小以及待创建的内存块的数量;
根据所述协商消息创建所述接收队列,其中,所述N个内存块中每个内存块的大小为C,所述C不小于B,所述B是指所述协商消息中携带的待创建的内存块的大小,所述N不小于P,所述P是指所述协商消息中携带的待创建的内存块的数量;
通过所述控制链路向所述发送端发送确认消息,所述确认消息指示成功创建了所述接收队列,其中,当所述C大于所述B时,所述确认消息携带所述C,和/或,当所述N大于所述P时,所述确认消息携带所述N;
通过所述接收端与所述发送端之间的数据链路接收所述发送端发送的一个或多个数据单元,所述一个或多个数据单元的数量小于所述N,所述发送端基于远程直接内存访问RDMA方式向所述接收端传输数据;
按照所述一个或多个数据单元的接收时间从早到晚的顺序,依次将所述一个或多个数据单元中的每个数据单元缓存在所述接收队列包括的内存块中;
将所述接收队列中的内存块按照缓存数据单元的先后顺序进行排列,以使缓存数据单元早的内存块排在所述接收队列中队头的位置;
当所述接收端的处理器需要处理数据时,从所述接收队列的队头开始依次移出一个内存块,以便于所述处理器对移出的内存块中的数据进行处理;
将从所述接收队列中移出的内存块放置在完成队列中;
如果检测到所述接收队列中存在内存块被移出所述接收队列,在所述接收队列中添加空闲内存块,添加的空闲内存块的数量和被移出的内存块的数量相同,所述空闲内存块放置在所述接收队列的队尾;
在检测到存在内存块移入所述完成队列的情况下,通过所述控制链路向所述发送端发送用于指示所述接收队列中空闲内存块的数量的通知消息,以使所述发送端根据所述空闲内存块的数量继续发送数据单元,所述空闲内存块是指没有缓存数据单元的内存块。
2.如权利要求1所述的方法,其特征在于,所述接收端上部署有计数器,所述计数器用于记录从创建所述接收队列到当前时间之间从所述接收队列中移出的内存块的总数量;
所述检测到所述接收队列中存在内存块被移出所述接收队列,包括:
如果所述计数器记录的数量发生变化,则确定检测到所述接收队列中存在内存块被移出所述接收队列;
所述向所述发送端发送所述通知消息,包括:
向所述发送端发送携带所述计数器记录的数量的通知消息,以使所述发送端根据所述计数器记录的数量确定所述接收队列中空闲内存块的数量。
3.如权利要求1所述的方法,其特征在于,创建的接收队列中包括的内存块的数量等于所述协商消息中待创建的内存块的数量,所述创建的接收队列中包括的内存块的大小等于所述协商消息中待创建的内存块的大小。
4.一种数据传输方法,其特征在于,应用于发送端,所述发送端基于远程直接内存访问RDMA方式向接收端传输数据,所述方法包括:
通过所述接收端与所述发送端之间的控制链路向所述接收端发送协商消息,所述协商消息携带所述发送端传输数据时所使用的数据单元的大小和数据单元总数量,以使所述接收端根据所述协商消息创建接收队列,所述接收队列包括N个内存块,一个内存块用于缓存所述发送端发送的一个数据单元,所述N为大于1的正整数,其中,所述N个内存块中每个内存块的大小为C,所述C不小于B,所述B是指所述协商消息中携带的数据单元的大小,所述N不小于P,所述P是指所述协商消息中携带的数据单元总数量;
通过所述控制链路获取所述接收端发送的确认消息,所述确认消息指示成功创建了所述接收队列,其中,当所述C大于所述B时,所述确认消息携带所述C,和/或,当所述N大于所述P时,所述确认消息携带所述N;
通过所述控制链路获取所述接收端发送的通知消息,所述通知消息用于指示所述接收端中配置的接收队列中空闲内存块的数量,所述空闲内存块是指没有缓存数据单元的内存块,所述空闲内存块是所述接收端在检测到所述接收队列中存在内存块被移出的情况下在所述接收队列中添加的内存块,添加的空闲内存块的数量和被移出的内存块的数量相同,所述被移出的内存块是从所述接收队列的队头移出的,所述空闲内存块放置在所述接收队列的队尾,从所述接收队列中移出的内存块放置在完成队列中,所述通知消息是所述接收端在检测到存在内存块移入所述完成队列的情况下发送的;
根据所述通知消息,确定所述空闲内存块的数量;
根据所述空闲内存块的数量和待发送的数据单元的数量,确定目标数量;
通过所述接收端与所述发送端之间的数据链路向所述接收端发送所述目标数量个数据单元;
其中,所述接收端用于按照所述目标数量个数据单元的接收时间从早到晚的顺序,依次将所述目标数量个数据单元中的每个数据单元缓存在所述接收队列包括的内存块中,所述接收队列中的内存块按照缓存数据单元的先后顺序排列。
5.如权利要求4所述的方法,其特征在于,所述根据所述空闲内存块的数量和待发送的数据单元的数量,确定目标数量,包括:
如果所述空闲内存块的数量大于或等于待发送的数据单元的数量,将所述待发送的数据单元的数量确定为所述目标数量。
6.如权利要求4所述的方法,其特征在于,所述根据所述空闲内存块的数量和待发送的数据单元的数量,确定目标数量,包括:
如果所述空闲内存块的数量小于待发送的数据单元的数量,将所述空闲内存块的数量确定为所述目标数量。
7.如权利要求4所述的方法,其特征在于,所述接收端上部署有计数器,所述计数器用于记录从创建所述接收队列到当前时间之间从所述接收队列中移出的内存块的总数量,所述通知消息中携带所述计数器记录的数量;
所述根据所述通知消息,确定所述空闲内存块的数量,包括:
确定从创建所述接收队列到当前时间之间所述发送端发送的数据单元的总数量;
根据所述发送端发送的数据单元的总数量,所述N以及所述计数器记录的数量,确定所述空闲内存块的数量。
8.一种数据传输装置,其特征在于,应用于接收端,所述接收端中配置有接收队列,所述接收队列包括N个内存块,一个内存块用于缓存一个数据单元,所述N为大于1的正整数;所述装置包括:
第二接收模块,用于通过所述接收端与发送端之间的控制链路接收所述发送端发送的协商消息,所述协商消息携带待创建的内存块的大小以及待创建的内存块的数量;
创建模块,用于根据所述协商消息创建所述接收队列,其中,所述N个内存块中每个内存块的大小为C,所述C不小于B,所述B是指所述协商消息中携带的待创建的内存块的大小,所述N不小于P,所述P是指所述协商消息中携带的待创建的内存块的数量;
发送模块,用于通过所述控制链路向所述发送端发送确认消息,所述确认消息指示成功创建了所述接收队列,其中,当所述C大于所述B时,所述确认消息携带所述C,和/或,当所述N大于所述P时,所述确认消息携带所述N;
第一接收模块,用于通过所述接收端与所述发送端之间的数据链路接收所述发送端发送的一个或多个数据单元,所述一个或多个数据单元的数量小于所述N,所述发送端基于远程直接内存访问RDMA方式向所述接收端传输数据;
缓存模块,用于按照所述一个或多个数据单元的接收时间从早到晚的顺序,依次将所述一个或多个数据单元中的每个数据单元缓存在所述接收队列包括的内存块中,将所述接收队列中的内存块按照缓存数据单元的先后顺序进行排列,以使缓存数据单元早的内存块排在所述接收队列中队头的位置,当所述接收端的处理器需要处理数据时,从所述接收队列的队头开始依次移出一个内存块,以便于所述处理器对移出的内存块中的数据进行处理,将从所述接收队列中移出的内存块放置在完成队列中,如果检测到所述接收队列中存在内存块被移出所述接收队列,在所述接收队列中添加空闲内存块,添加的空闲内存块的数量和被移出的内存块的数量相同,所述空闲内存块放置在所述接收队列的队尾;
所述发送模块,还用于在检测到存在内存块移入所述完成队列的情况下,通过所述控制链路向所述发送端发送用于指示所述接收队列中空闲内存块的数量的通知消息,以使所述发送端根据所述空闲内存块的数量继续发送数据单元,所述空闲内存块是指没有缓存数据单元的内存块。
9.一种数据传输装置,其特征在于,应用于发送端,所述发送端基于远程直接内存访问RDMA方式向接收端传输数据,所述装置包括:
第二发送模块,用于通过所述接收端与所述发送端之间的控制链路向所述接收端发送协商消息,所述协商消息携带所述发送端传输数据时所使用的数据单元的大小和数据单元总数量,以使所述接收端根据所述协商消息创建接收队列,所述接收队列包括N个内存块,一个内存块用于缓存所述发送端发送的一个数据单元,所述N为大于1的正整数,其中,所述N个内存块中每个内存块的大小为C,所述C不小于B,所述B是指所述协商消息中携带的数据单元的大小,所述N不小于P,所述P是指所述协商消息中携带的数据单元总数量;
获取模块,用于通过所述控制链路获取所述接收端发送的确认消息,所述确认消息指示成功创建了所述接收队列,其中,当所述C大于所述B时,所述确认消息携带所述C,和/或,当所述N大于所述P时,所述确认消息携带所述N;
所述获取模块,还用于通过所述控制链路获取所述接收端发送的通知消息,所述通知消息用于指示所述接收端中配置的接收队列中空闲内存块的数量,所述空闲内存块是指没有缓存数据单元的内存块,所述空闲内存块是所述接收端在检测到所述接收队列中存在内存块被移出的情况下在所述接收队列中添加的内存块,添加的空闲内存块的数量和被移出的内存块的数量相同,所述被移出的内存块是从所述接收队列的队头移出的,所述空闲内存块放置在所述接收队列的队尾,从所述接收队列中移出的内存块放置在完成队列中,所述通知消息是所述接收端在检测到存在内存块移入所述完成队列的情况下发送的;
第一确定模块,用于根据所述通知消息,确定所述空闲内存块的数量;
第二确定模块,用于根据所述空闲内存块的数量和待发送的数据单元的数量,确定目标数量;
第一发送模块,用于通过所述接收端与所述发送端之间的数据链路向所述接收端发送所述目标数量个数据单元;
其中,所述接收端用于按照所述目标数量个数据单元的接收时间从早到晚的顺序,依次将所述目标数量个数据单元中的每个数据单元缓存在所述接收队列包括的内存块中,所述接收队列中的内存块按照缓存数据单元的先后顺序排列。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有指令,所述指令被处理器执行时实现上述权利要求1至权利要求7中的任一项权利要求所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911268511.0A CN111404842B (zh) | 2019-12-11 | 2019-12-11 | 数据传输方法、装置及计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911268511.0A CN111404842B (zh) | 2019-12-11 | 2019-12-11 | 数据传输方法、装置及计算机存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111404842A CN111404842A (zh) | 2020-07-10 |
CN111404842B true CN111404842B (zh) | 2024-04-09 |
Family
ID=71430245
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911268511.0A Active CN111404842B (zh) | 2019-12-11 | 2019-12-11 | 数据传输方法、装置及计算机存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111404842B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112732448A (zh) * | 2021-01-18 | 2021-04-30 | 国汽智控(北京)科技有限公司 | 一种内存空间的分配方法、装置及计算机设备 |
CN116760510B (zh) * | 2023-08-15 | 2023-11-03 | 苏州浪潮智能科技有限公司 | 一种消息发送方法、消息接收方法、装置和设备 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1996942A (zh) * | 2006-06-26 | 2007-07-11 | 华为技术有限公司 | 一种实现流量控制的方法及系统 |
CN102073593A (zh) * | 2010-11-15 | 2011-05-25 | 浪潮(北京)电子信息产业有限公司 | 内存中数据块的发送、接收方法和装置及传输系统 |
CN102893577A (zh) * | 2010-06-17 | 2013-01-23 | 松下电器产业株式会社 | 数据发送装置及数据发送方法 |
CN103152192A (zh) * | 2011-12-07 | 2013-06-12 | 中国移动通信集团浙江有限公司 | 数据传输方法及网管系统 |
CN107172073A (zh) * | 2017-06-26 | 2017-09-15 | 西安万像电子科技有限公司 | 媒体数据的处理方法、装置及系统 |
CN107911840A (zh) * | 2017-11-21 | 2018-04-13 | 青岛海信电器股份有限公司 | 流媒体传输的控制方法及装置 |
CN109005194A (zh) * | 2018-09-04 | 2018-12-14 | 厦门安胜网络科技有限公司 | 基于kcp协议的无端口影子通信方法及计算机存储介质 |
CN109067752A (zh) * | 2018-08-15 | 2018-12-21 | 无锡江南计算技术研究所 | 一种利用rdma消息实现兼容tcp/ip协议的方法 |
CN109426631A (zh) * | 2017-08-30 | 2019-03-05 | 深圳市中兴微电子技术有限公司 | 一种基于rdma的通信方法、装置及存储介质 |
CN109462605A (zh) * | 2018-12-17 | 2019-03-12 | 北京邮电大学 | 一种im通信系统及其通信方法 |
CN109587112A (zh) * | 2018-10-25 | 2019-04-05 | 华为技术有限公司 | 一种发送数据的方法、接收数据的方法、设备及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5958325B2 (ja) * | 2012-12-20 | 2016-07-27 | 富士通株式会社 | ネットワーク分析方法、情報処理装置およびプログラム |
-
2019
- 2019-12-11 CN CN201911268511.0A patent/CN111404842B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1996942A (zh) * | 2006-06-26 | 2007-07-11 | 华为技术有限公司 | 一种实现流量控制的方法及系统 |
CN102893577A (zh) * | 2010-06-17 | 2013-01-23 | 松下电器产业株式会社 | 数据发送装置及数据发送方法 |
CN102073593A (zh) * | 2010-11-15 | 2011-05-25 | 浪潮(北京)电子信息产业有限公司 | 内存中数据块的发送、接收方法和装置及传输系统 |
CN103152192A (zh) * | 2011-12-07 | 2013-06-12 | 中国移动通信集团浙江有限公司 | 数据传输方法及网管系统 |
CN107172073A (zh) * | 2017-06-26 | 2017-09-15 | 西安万像电子科技有限公司 | 媒体数据的处理方法、装置及系统 |
CN109426631A (zh) * | 2017-08-30 | 2019-03-05 | 深圳市中兴微电子技术有限公司 | 一种基于rdma的通信方法、装置及存储介质 |
CN107911840A (zh) * | 2017-11-21 | 2018-04-13 | 青岛海信电器股份有限公司 | 流媒体传输的控制方法及装置 |
CN109067752A (zh) * | 2018-08-15 | 2018-12-21 | 无锡江南计算技术研究所 | 一种利用rdma消息实现兼容tcp/ip协议的方法 |
CN109005194A (zh) * | 2018-09-04 | 2018-12-14 | 厦门安胜网络科技有限公司 | 基于kcp协议的无端口影子通信方法及计算机存储介质 |
CN109587112A (zh) * | 2018-10-25 | 2019-04-05 | 华为技术有限公司 | 一种发送数据的方法、接收数据的方法、设备及系统 |
CN109462605A (zh) * | 2018-12-17 | 2019-03-12 | 北京邮电大学 | 一种im通信系统及其通信方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111404842A (zh) | 2020-07-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10642777B2 (en) | System and method for maximizing bandwidth of PCI express peer-to-peer (P2P) connection | |
US11316609B2 (en) | Data transmitting method, data receiving method, and device | |
US9392081B2 (en) | Method and device for sending requests | |
US7822053B2 (en) | Apparatus and method for TCP buffer copy distributed parallel processing | |
AU2011370439B2 (en) | Method and apparatus for rapid data distribution | |
CN113179327B (zh) | 基于大容量内存的高并发协议栈卸载方法、设备、介质 | |
CN114201421B (zh) | 一种数据流处理方法、存储控制节点及可读存储介质 | |
WO2008147578A1 (en) | System and/or method for client- driven server load distribution | |
CN115004673A (zh) | 消息推送方法、装置、电子设备及计算机可读介质 | |
CN111404842B (zh) | 数据传输方法、装置及计算机存储介质 | |
CN112579311B (zh) | 访问固态硬盘的方法及存储设备 | |
CN107995233B (zh) | 建立连接的方法及相应的设备 | |
CN110445666B (zh) | 一种网络质量检测方法、装置及服务器 | |
CN111400213B (zh) | 传输数据的方法、装置及系统 | |
KR20220053386A (ko) | 효율적인 파일 전송을 위한 데이터 통신 방법 및 장치 | |
KR102274930B1 (ko) | 채널 연결 관리 방법 및 장치 | |
CN109831467B (zh) | 数据传输方法、设备及系统 | |
CN111404986A (zh) | 数据传输处理方法、设备和存储介质 | |
CN116248582A (zh) | 物联网通信方法、电子设备及物联网系统 | |
CN109688085B (zh) | 传输控制协议代理方法、存储介质及服务器 | |
US20140237136A1 (en) | Communication system, communication controller, communication control method, and medium | |
KR102693536B1 (ko) | 전송 제어 프로토콜 연결 처리 장치 및 방법 | |
CN118260055B (zh) | 基于区块链的算力调度方法、装置、设备及区块链网络 | |
US9213735B1 (en) | Flow control in very large query result sets using a release message to confirm that a client computer is ready to receive the data associated with a data collection operation | |
CN118012351A (zh) | 基于远程存储协议的数据读写保序方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |