流量控制方法、设备和系统与流程

文档序号:12376361阅读:331来源:国知局
流量控制方法、设备和系统与流程

本发明实施例涉及网络领域,尤其涉及流量控制方法、设备和系统。



背景技术:

设备之间的消息通信,无论是基于传输控制协议/互联网协议(Transmission Control Protocol/Internet Protocol,简称TCP/IP)协议还是其他支持通信协议(例如套接字socket接口协议)的消息通信,需将消息封装为数据包,在设备之间交互数据包来实现消息通信;为保证正确接收数据包的概率,确定了流量控制机制,通过该流量控制机制来协调一设备(发送端)向另一设备(接收端)传输数据的速度。流量控制机制中,接收端准备好接收数据时生成载有信用数据(Credit Data)的消息,并将该消息封装成数据包(流量控制包),向发送端发送该流量控制包;发送端解析该流量控制包得到载有所述信用数据的消息,进而发送端根据该信用数据确定在下一次收到流量控制包之前可以发送的最大字节数。发送端发送数据包,当发送的数据包具有的字节数达到根据该信用数据确定的最大字节数时,发送端必须等待接收端发送的下一个流量控制包并从该流量控制包解析出下一个信用数据,才能根据下一个信用数据,继续向接收端发送数据包。

以队列偶(Queue Pair,简称QP)为例,发送端期望向接收端提供 业务时,建立一条QP通道,将该业务的数据封装在消息中,在将该消息封装在数据包中,通过该QP通道向接收端发送该数据包;接收端每接收一个来自发送端的数据包,会消耗掉一个接收队列中的一个接收缓冲格,该接收队列由多个接收缓冲格组成。接收缓冲格的数据包被应用程序取走后,可以再次用来接收从发送端发来的数据包,能够用来接收数据包的接收缓冲格被称为可用缓冲格。另外,发送端和接收端还建立了一条用于流量控制的QP通道;接收端,每当其可用缓冲格的数量达到接收队列的一半时,生成载有信用数据的数据包(流量控制包),通过该QP通道并利用QP发送接收操作向发送端传输该流量控制包;进而发送端从该流量控制包中解析出信用数据,根据解析出的信用数据确定最多可向接收端发送的数据包的个数。

因此,采用QP通道的方式传输载有信用数据的流量控制包来实现接收端与发送端之间的流量控制,需要较多的软件开销(包括新建立QP通道、接收端的数据包封装、发送端的数据包解析),延迟了发送端获取到信用数据的时间,从而延长了两次根据信用数据控制数据包发送之间间隔的时间,降低了网络带宽的利用率。



技术实现要素:

有鉴于此,本发明实施例提供了一种流量控制方法、设备和系统,通过远程内存访问指令更改用于流量控制的信用数据,从硬件层面完成信用数据的更改,省去了软件层面更改信用数据所需的交互时间。

第一方面,本发明实施例提供了一种流量控制方法,所述流量控制 方法包括:

从接收队列获取第一消息数据包,所述接收队列中存储由第一设备向第二设备发送的消息数据包;

在所述接收队列中删除已获取的所述第一消息数据包,若所述接收队列中存储的消息数据包的个数小于或等于所述第一阈值,向所述第一设备发送载有信用数据的数据导入指令,将所述信用数据写入所述第一设备内存中的预设地址,以使所述第一设备根据所述预设地址记录的所述信用数据确定向所述第二设备发送的消息数据包的个数上限,其中,所述信用数据为所述接收队列期望接收的消息数据包的个数,所述数据导入指令属于远程内存访问指令。

结合第一方面,在第一种可能的实现方式中,所述向所述第一设备发送载有信用数据的数据导入指令,将所述信用数据写入所述第一设备内存中的预设地址,具体为:

所述第二设备的内存资源控制器MRC向所述第一设备的MRC发送所述数据导入指令,使得所述第一设备的MRC转发所述数据导入指令至所述第一设备的内存控制器MC,由所述第一设备的MC根据所述数据导入指令将所述信用数据写入所述预设地址。

结合第一方面的第一种可能的实现方式或者第一方面的第二种可能的实现方式,在第三种可能的实现方式中,所述数据导入指令包括:所述第一设备的标识、与所述预设地址对应的物理地址。

第二方面,本发明实施例提供了一种第二设备,所述第二设备包括:

数据处理模块,用于从接收队列获取第一消息数据包,所述接收队列中存储由第一设备向所述第二设备发送的消息数据包;

所述数据处理模块,还用于在所述接收队列中删除已获取的所述第一消息数据包,若所述接收队列中存储的消息数据包的个数小于或等于所述第一阈值,确定信用数据,所述信用数据为所述接收队列期望接收的消息数据包的个数;

指令发送模块,用于向所述第一设备发送载有信用数据的数据导入指令,将所述信用数据写入所述第一设备内存中的预设地址,以使所述 第一设备根据所述预设地址记录的所述信用数据确定向所述第二设备发送的消息数据包的个数上限,所述数据导入指令属于远程内存访问指令。

结合第二方面,在第一种可能的实现方式中,所述指令发送模块,用于向所述第一设备发送载有信用数据的数据导入指令,将所述信用数据写入所述第一设备内存中的预设地址,具体为:

所述指令发送模块为所述第二设备的内存资源控制器MRC,用于向所述第一设备的MRC发送所述数据导入指令,使得所述第一设备的MRC转发所述数据导入指令至所述第一设备的内存控制器MC,由所述第一设备的MC根据所述数据导入指令将所述信用数据写入所述预设地址。

结合第二方面的第一种可能的实现方式或者第二方面的第二种可能的实现方式,在第三种可能的实现方式中,所述数据导入指令包括:所述第一设备的标识、与所述预设地址对应的物理地址。

第三方面,本发明实施例提供了一种流量控制方法,所述流量控制方法包括:

接收由第二设备向第一设备发送的数据导入指令,向内存中所述数据导入指令指向的预设地址写入信用数据,其中,所述数据导入指令载有所述信用数据,所述数据导入指令属于远程内存访问指令;

根据所述预设地址记录的所述信用数据确定向所述第二设备发送的消息数据包的个数上限。

结合第三方面,在第一种可能的实现方式中,所述接收由第二设备向第一设备发送的数据导入指令,向内存中所述数据导入指令指向的预设地址写入信用数据,具体包括:

所述第一设备的MRC接收从所述第二设备的MRC发送的所述数据导入指令,转发所述数据导入指令至所述第一设备的内存控制器MC;

所述第一设备的MC根据所述数据导入指令向所述预设地址写入所述信用数据。

结合第三方面的第一种可能的实现方式或者第三方面的第二种可 能的实现方式,在第三种可能的实现方式中,所述数据导入指令包括:所述第一设备的标识、与所述预设地址对应的物理地址。

第四方面,本发明实施例提供了一种第一设备,所述第一设备包括:

指令接收模块,用于接收由第二设备向第一设备发送的数据导入指令,其中,所述数据导入指令载有信用数据,所述数据导入指令属于远程内存访问指令;

指令响应模块,用于向内存中所述数据导入指令指向的预设地址写入所述信用数据;

消息数据包限制模块,用于根据所述预设地址记录的所述信用数据确定向所述第二设备发送的消息数据包的个数上限。

结合第四方面,在第一种可能的实现方式中,所述指令接收模块为第一设备的内存资源控制器MRC,用于接收从第二设备的MRC发送的数据导入指令,转发所述数据导入指令至所述第一设备的内存控制器MC;

所述指令响应模块为所述第一设备的MC,用于根据所述数据导入指令向所述预设地址写入所述信用数据。

结合第四方面的第一种可能的实现方式或者第四方面的第二种可能的实现方式,在第三种可能的实现方式中,所述数据导入指令包括:所述第一设备的标识、与所述预设地址对应的物理地址。

第五方面,本发明实施例提供了一种系统,所述系统包括第一设备和第二设备,所述第一设备和所述第二设备通信连接;

所述第二设备,用于从接收队列获取第一消息数据包,所述接收队列中存储由所述第一设备向所述第二设备发送的所述消息数据包;

所述第二设备,用于在所述接收队列中删除已获取的所述第一消息数据包,若所述接收队列中存储的消息数据包的个数小于或等于所述第一阈值,向所述第一设备发送载有信用数据的数据导入指令,所述信用数据为所述接收队列期望接收的消息数据包的个数,所述数据导入指令属于远程内存访问指令;

所述第一设备,用于根据所述数据导入指令将所述信用数据写入其内存中的预设地址,根据所述预设地址记录的所述信用数据确定向所述 第二设备发送的消息数据包的个数上限。

结合第五方面,在第一种可能的实现方式中,所述第一设备,用于根据所述数据导入指令将所述信用数据写入其内存中的预设地址,具体为:

所述第一设备,用于由所述第一设备的内存资源控制器MRC接收从所述第二设备的MRC发送的所述数据导入指令,转发所述数据导入指令至所述第一设备的内存控制器MC,由所述第一设备的MC根据所述数据导入指令向所述预设地址写入所述信用数据。

结合第五方面的第一种可能的实现方式或者第五方面的第二种可能的实现方式,在第三种可能的实现方式中,所述数据导入指令包括:所述第一设备的标识、与所述预设地址对应的物理地址。

通过上述方案,第二设备通过数据导入指令直接更新第一设备的内存中的该信用数据,第一设备根据内存中的该信用数据控制其向第二设备最多发送的数据包的个数;从硬件层面完成信用数据的更改,省去了软件层面更改信用数据所需的交互时间,提前了第一设备根据该信用数据控制其向第二设备发送数据包的时间,提高了网络带宽的利用率。

附图说明

图1为流量控制方法的应用场景的系统逻辑结构示意图;

图2为依据本发明一实施例提供的流量控制方法的一种示范性流程图;

图3为依据本发明一实施例的第二设备300提供的逻辑结构示意图;

图4为依据本发明一实施例提供的流量控制方法的一种示范性流程图;

图5为对图4中步骤S401的一种可选细化流程图;

图6为依据本发明一实施例的第一设备600提供的逻辑结构示意图。

具体实施方式

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

如图1所示的系统100,包括第一设备101和第二设备102。需说明的是,“第一设备”中的“第一”和“第二设备”中的“第二”,为代指,用于设备区分。

对于图1中的第一设备101,第一设备101具有处理器1013、内存资源控制器(Memory Resources Controller,简称MRC)1011、内存控制器(Memory Controller,简称MC)1012和内存1014。第一设备101中,处理器1013与内存资源控制器1011和/或内存控制器1012通过总线连接,或者内存资源控制器1011和/或内存控制器1012与该处理器1013直接电性连接;可选地,内存资源控制器1011和/或内存控制器1012集成到该处理器1013内,集成到处理器1013内的内存资源控制器1011与该处理器1013直接电性连接,集成到处理器1013内的内存控制器1012与该处理器1013直接电性连接。内存控制器1012,在处理器1013的控制下对本地内存(即内存1014)进行数据的读取或写入。内存资源控制器1011,在处理器1013的控制下对远端内存进行数据的读取或写入,举例说明,第二设备102的内存1024相对于第一设备101为远端内存。无论本地内存还是远端内存都属于内存,用于存储数据。

对于图1中的第二设备102,有处理器1023、内存资源控制器1021、 内存控制器1022和内存1024。第二设备102中,处理器1023与内存资源控制器1021和/或内存控制器1022通过总线连接,或者内存资源控制器1021和/或内存控制器1022与该处理器1023直接电性连接;可选地,集成到处理器1023内的内存资源控制器1021与该处理器1023直接电性连接,集成到处理器1023内的内存控制器1022与该处理器1023直接电性连接。内存控制器1022,在处理器1023的控制下对本地内存(即内存1024)进行数据的读取或写入。内存资源控制器1021,在处理器1023的控制下对远端内存进行数据的读取或写入,举例说明,第一设备101中的内存1014相对于第二设备102为远端内存。无论本地内存还是远端内存都属于内存,用于存储数据。

系统100中,第一设备101与第二设备102通信连接,第一设备101与第二设备102通过数据包的交互来实现数据交互。其中,对于业务交互,第一设备101与第二设备102通过消息交互的方式实现业务交互。

以第一设备101期望向第二设备102发送业务的数据为例,第一设备101的处理器1013将该业务的数据封装在消息中,再将该消息封装在数据包中,在发送缓存区中依次存储封装的数据包;若期望对从第一设备101向第二设备102发送的数据包进行流量控制,则确定最新的信用数据,第一设备101根据所述信用数据控制硬件收发模块向第二设备102发送的该数据包,发送的该数据包的个数至多为所述信用数据;对应地,第二设备102的硬件收发模块接收第一设备101发送的数据包,并在第二设备102的接收队列中存储接收到的数据包,对数据包进行解析并解析出载有业务数据的消息,第二设备102的处理器1023再从该消息中解析出业务的数据。类似地,可实现第二设备102向第一设备101发送业务的数据,在此不再赘述。

本发明一实施例,为业务建立队列偶(Queue Pair,简称QP)通道,通过该QP通道传输第一设备与第二设备之间交互的业务数据,定义该业务数据为业务的数据。以第一设备向第二设备提供业务为例,通过该QP通道传输载有该业务数据的数据包;在传输过程中,采用流量控制方 法对从第一设备向第二设备发送的数据包的个数进行控制,实现流量控制。

为实现该流量控制,在第一设备的内存中分配一段内存空间,该段内存空间用于存储信用数据,将该段内存空间的物理地址定义为第一物理地址;对该段内存空间的第一物理地址进行地址映射,地址映射得到该段内存空间的虚拟地址,第一设备的处理器可根据该虚拟地址访问该信用数据(例如根据该虚拟地址读取该信用数据);可选地,第一设备具有内存管理单元(Memory Management Unit,MMU),该处理器对该信用数据的访问的过程中,由MMU完成虚拟地址到第一物理地址的地址映射。另外,还将该段内存空间的第一物理地址和第一设备的标识进行加密,生成加密数据的数据包,向第二设备发送该数据包;第二设备从该数据包中解析出加密的第一物理地址和第一设备的标识,再解密得到:第一物理地址和第一设备的标识。

另外,预先在第二设备中分配一段物理地址,将分配的该段物理地址定义为第二物理地址。第二设备解密得到第一物理地址后,确定第一物理地址与第二物理地址的映射关系。

在第一设备向第二设备发送载有业务的数据包的过程中,第二设备将从第一设备接收的数据包依次存储在接收队列中,每从第一设备接收到一个数据包,便将该个数据包存储在该接收队列的一个接收缓冲格中,即一个数据包需一个接收缓冲格来存储;另外,该业务的应用,可从该接收队列的接收缓冲格中,读取并取走该业务的数据包;被取走数据包的接收缓冲格,可继续用来接收从第一设备发送的数据包;当所述接收队列中的消息数据包的个数从大于第一阈值减小到小于或等于所述第一阈值时,即接收队列中可用来接收数据包的接收缓冲格从小于第二阈值增长到大于或等于第二阈值(可选地,第一阈值与第二阈值的和等于接收队列包含的接收缓冲格的总个数)时,确定一次信用数据,并生成一次数据导入指令,该数据导入指令包括第二物理地址和第一设备的标识,该数据导入指令还包括确定的信用数据,在该信用数据中记录:所述第二设备期望由其接收队列接收的消息数据包的个数;第二设备根 据该数据导入指令中的第二物理地址确定该数据导入指令不是访问第二设备的内存而是访问第一设备的内存,将该数据导入指令中的第二物理地址替换为:与该第二物理地址映射的第一物理地址;然后,直接向第一设备的内存中该数据导入指令指向的该第一物理地址写入本次确定的信用数据。可选地,当内第二设备的存控制器(memory controller,简称MC)识别到该数据导入指令为指向第二物理地址的远程内存访问指令时,将该数据导入指令转由第二设备的内存资源控制器(Memory Resources Controller,简称MRC)处理;第二设备的MRC将该数据导入指令中的第二物理地址替换为对应的第一物理地址,再将地址替换后的该数据导入指令发送至第一设备的MRC;第一设备的MRC识别到该数据导入指令指向的所述第一物理地址为第一设备的本地内存的物理地址时,转发给数据导入指令至第一设备的MC;第一设备的MC根据该数据导入指令向所述第一物理地址写入本次确定的信用数据以更新所述第一物理地址中原存储的信用数据。

可选地,该远程内存访问指令包括load指令和store指令,该数据导入指令为store指令。第二设备根据指向第一设备的内存的预设地址的store指令,能够直接对该预设地址进行远程的数据写入,更新该预设地址存储的信用数据。

本实施例中,在对第一设备向第二设备发送载有业务的数据包中,为控制发送的数据包的个数来实现流量控制,在第一设备的内存中分配一段内存空间,该段内存空间用于存储信用数据的一段内存空间;将该段内存空间的第一物理地址和第一设备的标识通知第二设备之后,第二设备可通过远程内存访问指令直接访问该段内存空间,更改该段内存空间存储的信用数据。第二设备更改该段内存空间存储的信用数据的过程中,都属于硬件层面的数据传输,相对于QP需分配缓冲区来接收载有信用数据的数据包、从数据包解析出信用数据、再由第一设备的处理器在该段内存空间写入信用数据,减小了在第一设备的该段内存空间中更新信用数据的时延,提前了根据该信用数据继续向第二设备发送载有业务的数据包的发送时间,能够更加有效地利用网络带宽。

本发明一实施例,提供一种流量控制方法,图2示出了依据本实施例提供的该方法的实现流程,但为了便于描述,图2仅示出了与本发明实施例相关的部分。所述流量控制方法包括步骤S201和步骤S202。

本实施例所述的消息数据包为:第一设备向第二设备提供业务的过程中,由第一设备向第二设备发送的数据包;该数据包载有该业务的数据。

预先在第一设备中的内存中分配一段内存空间,该段内存空间用于存储信用数据,此处统称可访问该段内存空间的地址为预设地址,例如,所述预设地址为该段内存空间的物理地址(即上述的第一物理地址),再例如,所述预设地址为对该第一物理地址进行地址映射后得到的虚拟地址。

如果该预设地址为该段内存空间的第一物理地址,将该预设地址进行地址映射,得到该段内存空间的虚拟地址;第一设备的处理器可根据该虚拟地址访问该段内存空间。

另外,确定第一设备的标识,使得第二设备能够根据第一设备的标识访问到第一设备;第一设备,在其与第二设备的通信中,将载有第一物理地址和第一设备的标识通知第二设备;继而,第二设备能够根据指向第一物理地址的远程内存访问指令直接访问第一设备的内存中的该段内存空间。

步骤S201,从接收队列获取第一消息数据包,所述接收队列中存储由第一设备向第二设备发送的消息数据包。其中,所述第一消息数据包为已存储在该接收队列中的、业务的应用正在从该接收队列取走的数据包。

步骤S202,在所述接收队列中删除已获取的所述第一消息数据包,若所述接收队列中存储的消息数据包的个数小于或等于所述第一阈值,向所述第一设备发送载有信用数据的数据导入指令,将所述信用数据写入所述第一设备内存中的预设地址,以使所述第一设备根据所述预设地址记录的所述信用数据确定向所述第二设备发送的消息数据包的个数 上限,其中,所述信用数据为所述接收队列期望接收的消息数据包的个数,所述数据导入指令属于远程内存访问指令。

第一设备向第二设备提供业务的过程中,第一设备向第二设备发送载有该业务的消息数据包;如,采用QP进行第一设备与第二设备之间消息数据包的收发,将第一设备中期望向第二设备发送的消息数据包添加入第一设备的发送队列,该发送队列由多个发送缓冲格组成,每个该发送缓冲格能缓存一个待发送的数据包,可将待发送的该消息数据包依次缓存在该发送缓冲格中;按照第一设备的内存的预设地址中存储的信用数据确定最多可向第二设备发送该消息数据包的个数,根据确定的个数控制发送队列中消息数据包的发送。

相应地,第二设备具有接收队列,该接收队列由多个接收缓冲格组成,每个该接收缓冲格能缓存一个接收的数据包,因此在第一设备向第二设备提供业务的过程中,第二设备将接收的消息数据包依次缓存在该接收缓冲格中。

第二设备中,该业务的应用可从该接收队列取走消息数据包(正在被取走的消息数据包为第一数据包),取走该第一消息数据包这一动作包括从接收缓冲格中获取第一消息数据包、删除该接收缓冲格中存储的第一消息数据包;该业务的应用每从一个接收缓冲格中取走第一消息数据包,该接收缓冲格便能够再次用来缓存接收到的消息数据包;因此,该业务的应用持续从接收缓冲格中取走消息数据包的过程中,可能会出现所述接收队列中的消息数据包的个数从大于第一阈值减小到小于或等于所述第一阈值这一事件,一旦出现该事件,则在所述接收队列中的消息数据包的个数减小到小于或等于所述第一阈值时,触发数据导入指令,也即可再次用来接收消息数据包的接收缓冲格的个数从小于第二阈值增长到大于或等于第二阈值(第一阈值与第二阈值的和等于接收队列包含的接收缓冲格的总个数)时触发该数据导入指令;该数据导入指令的参数包括:第一物理地址和第一设备的标识。因此,该第二设备能够根据该数据导入指令直接向第一设备的内存的预设地址写入信用数据,第一设备根据本次写入的该信用数据确定:在第二设备下一次更新该信 用数据之前,第一设备至多可向第二设备发送的消息数据包的个数。以此类推,第二设备,每次所述接收队列中的消息数据包的个数从大于第一阈值减小到小于或等于所述第一阈值时,均触发一次数据导入指令,通过该数据导入指令更新第一设备的内存的预设地址中存储的信用数据;信用数据每次更新后,第一设备每次可根据更新的信用数据确定可向第二设备发送的消息数据包的个数。实现根据信用数据的更新,控制第一设备不同时间段可向第二设备发送的消息数据包的个数,实现第一设备向第二设备提供业务时的流量控制。

另外,在第一设备与第二设备之间初始建立QP通道时,第二设备的接收队列中可用于接收数据包的接收缓冲格的个数小于或等于所述第一阈值,步骤S202触发数据导入指令,通过该数据导入指令重置第一设备的内存的预设地址中存储的信用数据。

另外,第一设备与第二设备之间建立的QP通道中断后再次启用,如果第二设备的接收队列中可用于接收数据包的接收缓冲格的个数小于或等于所述第一阈值,步骤S202触发数据导入指令,通过该数据导入指令更新第一设备的内存的预设地址中存储的信用数据。

本实施例中,对采用哪种方式实现第二设备将数据导入指令发送至第一设备不做限定;例如,第二设备直接向第一设备发送该数据导入指令;再如,经其他转发设备(如路由器、交换机等)将第二设备发送的该数据导入指令转发至第一设备。

另外,本实施例对第一设备中由哪个器件响应该数据导入指令并将信用数据写入内存的预设地址不做限定;如,由内存资源控制器响应该数据导入指令并转发该数据导入指令至第一设备的内存控制器,由第一设备的内存控制器并将信用数据写入内存的预设地址;如,由第一设备的处理器响应该数据导入指令,并控制内存控制器将信用数据写入内存的预设地址。

可选地,对图2提供的流量控制方法做一可选细化,所述向所述第一设备发送载有信用数据的数据导入指令,将所述信用数据写入所述第一设备内存中的预设地址,具体为:

所述第二设备的内存资源控制器MRC向所述第一设备的MRC发送所述数据导入指令,使得所述第一设备的MRC转发所述数据导入指令至所述第一设备的内存控制器MC,由所述第一设备的MC根据所述数据导入指令将所述信用数据写入所述预设地址。

具体地,预先在第二设备中分配一段物理地址,将分配的该段物理地址定义为第二物理地址。第一设备首先向第二设备发送第一设备的标识和第一物理地址;第二设备获得第一物理地址后,确定第一物理地址与第二物理地址的映射关系。

第二设备每次期望更新第一设备的内存中的信用数据,则触发所述数据导入指令,触发的所述数据导入指令指向的地址为第二物理地址,此处对触发该数据导入指令的场景不做详述,具体参见上述实施例的描述。第二设备在识别到第二物理地址不为指向本地内存的物理地址时,将所述数据导入指令中的第二物理地址替换为对应的第一物理地址,将地址替换后的数据导入指令发送至所述第一设备的内存资源控制器,所述第一设备的内存资源控制器识别到该数据导入指令指向的所述第一物理地址为第一设备的本地内存的地址时,转发给数据导入指令至第一设备的内存控制器;第一设备的内存控制器根据该数据导入指令向内存的第一物理地址(与预设地址对应)写入该数据导入指令载有的信用数据。

可选地,所述数据导入指令包括:所述第一设备的标识、与所述预设地址对应的物理地址。其中,与所述预设地址对应的物理地址为上述的第一物理地址。即,如果所述预设地址为第一设备的第一物理地址,则所述预设地址与所述数据导入指令包括的物理地址相同,如果所述预设地址为与该第一物理地址映射的虚拟地址,则所述预设地址与所述数据导入指令包括的物理地址具有对应关系。

其中,所述第一设备的标识为:第一设备与第二设备通信时,用于第二设备找到第一设备的地址或者身份标识。

具体地,第二设备能够根据该数据导入指令指向的所述第一设备的标识,指定第一设备执行该数据导入指令;进一步根据与所述预设地址 对应的第一物理地址,能够指向第一设备的内存的预设地址,并对该预设地址执行所述信用数据的写入。

本发明一实施例,提供一种第二设备300,图3示出了依据本实施例提供的该第二设备300的逻辑结构示意图,但为了便于描述,图3仅示出了与本发明实施例相关的部分。

所述第二设备300包括:数据处理模块301,用于从接收队列获取第一消息数据包,所述接收队列中存储由第一设备向所述第二设备发送的消息数据包;

所述数据处理模块301,还用于在所述接收队列中删除已获取的所述第一消息数据包,若所述接收队列中存储的消息数据包的个数小于或等于所述第一阈值,确定信用数据,所述信用数据为所述接收队列期望接收的消息数据包的个数;

指令发送模块302,用于向所述第一设备发送载有信用数据的数据导入指令,将所述信用数据写入所述第一设备内存中的预设地址,以使所述第一设备根据所述预设地址记录的所述信用数据确定向所述第二设备发送的消息数据包的个数上限,所述数据导入指令属于远程内存访问指令。

可选地,所述指令发送模块302,用于向所述第一设备发送载有信用数据的数据导入指令,将所述信用数据写入所述第一设备内存中的预设地址,具体为:

所述指令发送模块302为所述第二设备的内存资源控制器MRC,用于向所述第一设备的MRC发送所述数据导入指令,使得所述第一设备的MRC转发所述数据导入指令至所述第一设备的内存控制器MC,由所述第一设备的MC根据所述数据导入指令将所述信用数据写入所述预设地址。

可选地,所述数据导入指令包括:所述第一设备的标识、与所述预设地址对应的物理地址。

本发明一实施例,提供一种流量控制方法,图4示出了依据本实施 例提供的该方法的实现流程,但为了便于描述,图4仅示出了与本发明实施例相关的部分。所述流量控制方法包括步骤S401和步骤S402。

预先在第一设备中的内存中分配一段内存空间,该段内存空间用于存储信用数据,此处统称可访问该段内存空间的地址为预设地址,例如,所述预设地址为该段内存空间的物理地址(即上述的第一物理地址),再例如,所述预设地址为对该第一物理地址进行地址映射后得到的虚拟地址。;

如果该预设地址为该段内存空间的第一物理地址,将该预设地址进行地址映射,得到该段内存空间的虚拟地址;第一设备的处理器可根据该虚拟地址访问该段内存空间。

另外,确定第一设备的标识,使得第二设备能够根据第一设备的标识访问到第一设备;第一设备,在其与第二设备的通信中,将载有第一物理地址和第一设备的标识通知第二设备;继而,第二设备能够根据指向第一物理地址的远程内存访问指令直接访问第一设备的内存中的该段内存空间。

步骤S401,接收由第二设备向第一设备发送的数据导入指令,向内存中所述数据导入指令指向的预设地址写入所述信用数据,其中,所述数据导入指令载有信用数据,所述数据导入指令属于远程内存访问指令;

步骤S402,根据所述预设地址记录的所述信用数据确定向所述第二设备发送的消息数据包的个数上限。

第二设备中,业务的应用从接收缓冲格中取走消息数据包的过程中,每次所述接收队列中的消息数据包的个数从大于第一阈值减小到小于或等于所述第一阈值时,均触发一次数据导入指令;即,可再次用来接收消息数据包的接收缓冲格的个数从小于第二阈值增长到大于或等于第二阈值时触发该数据导入指令,其中,第一阈值与第二阈值的和等于接收队列包含的接收缓冲格的总个数。第一设备根据该数据导入指令载有的信用数据,更新第一设备的内存的预设地址中存储的信用数据;信用数据每次更新后,第一设备每次可根据更新的信用数据确定可向第 二设备发送的消息数据包的个数。实现根据信用数据的更新,控制第一设备不同时间段可向第二设备发送的消息数据包的个数,实现第一设备向第二设备提供业务时的流量控制。

另外,在第一设备与第二设备之间初始建立QP通道时,第二设备的接收队列中可用于接收数据包的接收缓冲格的个数小于或等于所述第一阈值,第二设备触发数据导入指令;步骤S401接收到从第二设备向第一设备发送的数据导入指令,通过该数据导入指令重置第一设备的内存的预设地址中存储的信用数据。

另外,第一设备与第二设备之间建立的QP通道中断后再次启用,如果第二设备的接收队列中可用于接收数据包的接收缓冲格的个数小于或等于所述第一阈值,第二设备触发数据导入指令;步骤S401接收到从第二设备向第一设备发送的数据导入指令,通过该数据导入指令更新第一设备的内存的预设地址中存储的信用数据。

可选地,步骤S401做一具体可选细化,参见图5,所述接收由第二设备向第一设备发送的数据导入指令,向内存中所述数据导入指令指向的预设地址写入信用数据,具体包括步骤S4011和步骤S4012。

步骤S4011,所述第一设备的MRC接收从所述第二设备的MRC发送的所述数据导入指令,转发所述数据导入指令至所述第一设备的内存控制器MC;

步骤S4012,所述第一设备的MC根据所述数据导入指令向所述预设地址写入所述信用数据。

可选地,所述数据导入指令包括:所述第一设备的标识、与所述预设地址对应的物理地址。

本发明一实施例,提供一种第一设备600,图6示出了依据本实施例提供的该第一设备600的逻辑结构示意图,但为了便于描述,图6仅示出了与本发明实施例相关的部分。

所述第一设备600包括:

指令接收模块601,用于接收由第二设备向第一设备发送的数据导 入指令,其中,所述数据导入指令载有信用数据,所述数据导入指令属于远程内存访问指令;

指令响应模块602,用于向内存中所述数据导入指令指向的预设地址写入所述信用数据;

消息数据包限制模块603,用于根据所述预设地址记录的所述信用数据确定向所述第二设备发送的消息数据包的个数上限。

可选地,所述指令接收模块601为第一设备的内存资源控制器MRC,用于接收从第二设备的MRC发送的数据导入指令,转发所述数据导入指令至所述第一设备的内存控制器MC;

所述指令响应模块602为所述第一设备的MC,用于根据所述数据导入指令向所述预设地址写入所述信用数据。

可选地,所述数据导入指令包括:所述第一设备的标识、与所述预设地址对应的物理地址。

本发明一实施例,提供一种系统100,所述系统100包括第一设备101和第二设备102,所述第一设备101和所述第二设备102通信连接;

所述第二设备102,用于从接收队列获取第一消息数据包,所述接收队列中存储由所述第一设备101向所述第二设备102发送的所述消息数据包;其中,所述第一消息数据包为已存储在该接收队列中的、业务的应用正在从该接收队列取走的数据包;

所述第二设备102,用于在所述接收队列中删除已获取的所述第一消息数据包,若所述接收队列中存储的消息数据包的个数小于或等于所述第一阈值,向所述第一设备101发送载有信用数据的数据导入指令,所述信用数据为所述接收队列期望接收的消息数据包的个数,所述数据导入指令属于远程内存访问指令;

所述第一设备101,用于根据所述数据导入指令将所述信用数据写入其内存中的预设地址,根据所述预设地址记录的所述信用数据确定向所述第二设备102发送的消息数据包的个数上限。

可选地,所述第一设备101,用于根据所述数据导入指令将所述信 用数据写入其内存中的预设地址,具体为:

所述第一设备101,用于由所述第一设备101的内存资源控制器1011接收从所述第二设备的内存资源控制器1021发送的所述数据导入指令,转发所述数据导入指令至所述第一设备的内存控制器1022,由所述第一设备的内存控制器1022根据所述数据导入指令向所述预设地址写入所述信用数据。

可选地,所述数据导入指令包括:所述第一设备的标识、与所述预设地址对应的物理地址。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统,设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述模块和单元的划分,仅仅为一种逻辑功能划分,实现时可以有另外的划分方式,例如多个模块或单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,设备或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。

上述以软件功能模块的形式实现集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:移动硬盘、只读存储器(英文:Read-Only Memory,简称 ROM)、随机存取存储器(英文:Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的保护范围。

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