CN116204487A - 远程数据访问方法及装置 - Google Patents
远程数据访问方法及装置 Download PDFInfo
- Publication number
- CN116204487A CN116204487A CN202111445721.XA CN202111445721A CN116204487A CN 116204487 A CN116204487 A CN 116204487A CN 202111445721 A CN202111445721 A CN 202111445721A CN 116204487 A CN116204487 A CN 116204487A
- Authority
- CN
- China
- Prior art keywords
- data
- message
- extended
- nic
- remote
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
- G06F15/17331—Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0615—Address space extension
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请公开了一种远程数据访问方法及装置,涉及通信技术领域,该方法能够提高本端设备操作远端设备的数据的效率。该方法应用于与第二设备连接通信的第一设备,第一设备和第二设备均配置有具有远程直接内存访问RDMA功能的网络接口卡NIC。该方法由第一设备的NIC执行,该方法包括:生成包括类型标识和功能标识的第一报文;向第二设备发送第一报文。其中,第一报文中的类型标识表示第一报文是远程内存功能调用RMFC类型的报文,RMFC类型的报文用于指示第二设备对第二设备的本地数据执行预设操作。第一报文中的功能标识用于指示该预设操作的操作类型。
Description
技术领域
本申请涉及通信技术领域,尤其涉及一种远程数据访问方法及装置。
背景技术
远程直接内存访问(remote direct memory access,RDMA)是一种用于解决网络传输中数据处理延迟的传输层网络协议。RDMA协议能够减少数据传输过程中在用于传输数据的主机设备内部对数据的复制操作,并且无需用于传输数据的主机设备的操作系统介入,因此RDMA协议能够降低用于传输数据的主机设备的中央处理单元(centralprocessing unit,CPU)负载。
然而,当前的RDMA协议仅提供本端设备对远端设备的内存数据直接存(写)取(读)的功能。例如,当数据中心的客户端设备(也称为本端设备)采用RDMA协议中的读(read)请求从数据中心的服务器(也称为远端设备)查询数据时,客户端设备仅能利用一个或多个read请求将该服务器中的数据库读取到本地,然后再通过遍历读取到的数据库来查询需要的数据。可见,基于现有的RDMA协议实现的本端设备操作远端设备的数据的效率低。
发明内容
本申请提供了一种远程数据访问方法及装置,该方法能够提高本端设备操作远端设备的数据的效率。
为达上述目的,本申请提供如下技术方案:
第一方面,本申请提供了一种远程数据访问方法,该方法应用于与第二设备连接通信的第一设备,第一设备和第二设备均配置有具有远程直接内存访问(remote directmemory access,RDMA)功能的网络接口卡(network interface card,NIC)。该方法由第一设备的NIC执行,该方法包括:生成包括类型标识和功能标识的第一报文。向第二设备发送第一报文。其中,第一报文中的类型标识表示第一报文是远程内存功能调用(remotememory function call,RMFC)类型的报文,RMFC类型的报文用于指示接收第一报文的第二设备对第二设备的本地数据执行预设操作,第一报文中的功能标识用于指示该预设操作的操作类型。
根据本申请提供的方法,第一设备(例如本端设备)可以通过向第二设备(例如远端设备)发送RMFC类型的报文,以控制第二设备对第二设备的本地数据执行预设操作。其中,该RMFC类型的报文即为本申请对RDMA协议扩展后的协议报文。这样,第一设备通过执行本申请提供的方法,即可实现第一设备操作第二设备本地数据的目的。例如,第一设备通过执行本申请提供的方法,来实现第一设备查询第二设备本地数据的目的。相比第一设备通过执行扩展前RDMA协议中的read操作时需要多次报文交互来实现对第二设备内存数据的查询,本申请提供的方法仅需第一设备和第二设备之间的两次报文交互(即第一设备向第二设备发送第一报文,以及第二设备向第一设备发送的用于承载目标数据的报文)来实现第一设备对第二设备内存数据的查询,即本申请所提供方法提高了第一设备查询第二设备本地数据的效率。也就是说,本申请方法能够提高第一设备操作第二设备本地数据的效率。
在一种可能的设计方式中,上述预设操作的操作类型包括查询操作、插入操作、或删除操作中的任一种。
根据该可能的设计方式,第一设备可以高效的实现对第二设备本地数据的操作,例如查询操作、插入操作、或删除操作等。
在另一种可能的设计方式中,如果上述预设操作的操作类型是查询操作,则上述方法还包括:接收用于承载目标数据的第二报文。将第二报文所承载的目标数据写入接收缓存区。其中,目标数据是第二设备对第二设备的本地数据执行查询操作后获得的数据。接收缓存区是与第一设备中运行的应用进程相对应的接收队列(receive queue,RQ)的头部接收队列元素(receive queue element,RQE)所指示的缓存区。
在另一种可能的设计方式中,上述第一设备设置有包括至少一个扩展RQE的扩展RQ,该至少一个扩展RQE中的任一个扩展RQE中,包括与任一个扩展RQE对应的扩展缓存区的地址。则上述将第二报文所承载的目标数据写入接收缓存区包括:确定第二报文所承载的目标数据的长度大于上述接收缓存区的长度。调用一个或多个扩展RQE,并将该目标数据写入上述接收缓存区和该一个或多个扩展RQE对应的扩展缓存区。
通过该可能的设计,当第一设备接收到的send报文所承载的数据量较大,以致QP中RQ的头部RQE所指示的接收缓存区的长度不足以存储该send报文所承载的数据时,第一设备也能通过调用扩展RQ中的扩展RQE成功接收send报文所承载的数据。
在另一种可能的设计方式中,上述方法还包括:在完成队列(completion queue,CQ)中写入完成队列元素(completion queue entry,CQE)。其中,在第一设备的NIC调用一个或多个扩展RQE时,CQE用于指示第二报文所承载的目标数据已写入上述接收缓存区和上述一个或多个扩展RQE对应的扩展缓存区,并用于指示该接收缓存区和该一个或多个扩展RQE对应的扩展缓存区的地址。
通过该可能的设计,第一设备的NIC可以在调用扩展缓存区来实现对接收数据的写入时,也能及时向第一设备的处理器上报当前数据已写入完成。
在另一种可能的设计方式中,上述第一报文中的功能标识是基于第一设备中运行的应用进程发出的数据请求确定的。
通过该可能的设计,第一设备可以获得当前应用进程请求对第二设备本地数据执行操作的操作类型。
在另一种可能的设计方式中,上述生成包括类型标识和功能标识的第一报文包括:根据与第一设备中运行的应用进程对应的发送队列(send queue,SQ)的头部发送队列元素(send queue element,SQE),生成包括类型标识和功能标识的第一报文。其中,头部SQE中包括与头部SQE对应的发送缓冲区的地址,该发送缓冲区用于存储前述应用进程发出的数据请求的参数。
第二方面,本申请提供了一种远程数据访问方法,该方法应用于与第一设备连接通信的第二设备,第二设备和第一设备均配置有具有RDMA功能的NIC。该方法由第二设备的NIC执行,该方法包括:接收来自第一设备的第一报文,第一报文包括类型标识和功能标识。当确定第一报文中的类型标识是用于指示第一报文是RMFC类型的报文的标识时,通知第二设备的处理单元对第二设备的本地数据执行预设操作,该预设操作的操作类型为第一报文中的功能标识所指示的操作类型。
根据本申请提供的方法,第二设备(例如远端设备)通过对来自第一设备(例如本端设备)的RMFC类型的报文的响应,即可实对第二设备的本地数据执行预设操作。其中,该RMFC类型的报文即为本申请对RDMA协议扩展后的协议报文。这样,通过执行本申请提供的方法,即实现了第一设备操作第二设备本地数据的目的。并且,相比扩展前RDMA协议中receive操作,第二设备的NIC写入接收缓存区的数据查询请求需要等待第二设备的处理器轮询处理才能被响应,在本申请中,第二设备的NIC在接收到该RMFC类型的报文后,即通知第二设备的处理单元及时处理该报文,从而使得第二设备的处理单元及时的对第二设备的本地数据执行预设操作。可见,本申请提供的方法提高了RMFC类型的报文中数据载荷所指示数据请求内容(例如数据查询请求)的处理效率。也即,本申请方法提高了第一设备操作第二设备本地数据的效率。
在一种可能的设计方式中,上述通知第二设备的处理单元对第二设备的本地数据执行预设操作包括:向第二设备的处理单元发送通知消息,该通知消息包括上述预设操作的执行优先级,该通知消息用于通知第二设备的处理单元按照该预设操作的执行优先级,对第二设备的本地数据执行预设操作。
在另一种可能的设计方式中,上述通知第二设备的处理单元对第二设备的本地数据执行预设操作包括:向第二设备的调度单元发送通知消息,该调度单元用于调度任务在第二设备的处理单元的执行顺序,该通知消息包括上述预设操作的执行优先级,该通知消息用于通知该调度单元按该照预设操作的执行优先级,为该处理单元调度该预设操作的执行顺序,以使该处理单元按照该执行顺序对第二设备的本地数据执行预设操作。
通过该可能的设计方式,第二设备的处理单元在执行预设操作前,第二设备的调度单元预先对预设操作的执行顺序予以调度,这样即避免了第二设备的处理单元执行调度预设操作执行顺序的过程。可见,该方法能够节省第二设备处理单元的计算资源。
在另一种可能的设计方式中,上述的预设操作的操作类型包括查询操作、插入操作、或删除操作中的任一种。
根据该可能的设计方式,第一设备可以高效的实现对第二设备本地数据的操作,例如查询操作、插入操作、或删除操作等。
在另一种可能的设计方式中,如果上述预设操作的操作类型是查询操作,则上述方法还包括:向第一设备发送用于承载目标数据的第二报文,该目标数据是第二设备对第二设备的本地数据执行查询操作后获得的数据。
在另一种可能的设计方式中,上述第一报文中的功能标识是第一设备基于第一设备中运行的应用进程发出的数据请求确定的。
第三方面,本申请提供了一种远程数据访问装置。该远程数据访问装置用于执行上述第一方面提供的任一种方法。本申请可以根据上述第一方面提供的任一种方法,对该远程数据访问装置进行功能模块的划分。例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。示例性的,本申请可以按照功能将该远程数据访问装置划分为生成单元和发送单元等。上述划分的各个功能模块执行的可能的技术方案和有益效果的描述均可以参考上述第一方面或其相应的可能的设计提供的技术方案,此处不再赘述。
第四方面,本申请提供了一种远程数据访问装置。该远程数据访问装置用于执行上述第二方面提供的任一种方法。本申请可以根据上述第二方面提供的任一种方法,对该远程数据访问装置进行功能模块的划分。例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。示例性的,本申请可以按照功能将该远程数据访问装置划分为接收单元和通知单元等。上述划分的各个功能模块执行的可能的技术方案和有益效果的描述均可以参考上述第二方面或其相应的可能的设计提供的技术方案,此处不再赘述。
第五方面,本申请提供了一种NIC,该NIC具有RDMA功能,该NIC包括一个或多个处理器和传输接口,该一个或多个处理器通过该传输接口接收或发送数据,该一个或多个处理器被配置为调用存储在存储器中的程序指令,以执行如第一方面及其任一种可能的设计方式提供的任一种方法,或者,以执行如第二方面及其任一种可能的设计方式提供的任一种方法。
第六方面,本申请提供了一种主机设备,该主机设备配置有具有RDMA功能的NIC,该NIC用于执行如第一方面及其任一种可能的设计方式提供的任一种方法,或者,执行如第二方面及其任一种可能的设计方式提供的任一种方法。
第七方面,本申请提供了一种远程数据访问系统,该系统包括第一设备和第二设备,第一设备与第二设备连接通信,第一设备和第二设备均配置有具有RDMA功能的NIC。其中,第一设备的NIC用于执行如第一方面及其任一种可能的设计方式提供的任一种方法,第二设备的NIC用于执行如第二方面及其任一种可能的设计方式提供的任一种方法。
第八方面,本申请提供了一种计算机可读存储介质,该计算机可读存储介质包括程序指令,当程序指令在处理器上运行时,使得处理器执行如第一方面中或第二方面中的任一种可能的实现方式提供的任一种方法。
第九方面,本申请提供了一种计算机程序产品,当其在远程数据访问装置上运行时,使得第一方面或第二方面中的任一种可能的实现方式提供的任一种方法被执行。
第十方面,本申请提供了一种芯片系统,包括:处理器,处理器用于从存储器中调用并运行该存储器中存储的计算机程序,执行第一方面中或第二方面中的实现方式提供的任一种方法。
可以理解的是,上述提供的任一种装置、设备、计算机存储介质、计算机程序产品或芯片系统等均可以应用于上文所提供的对应的方法,因此,其所能达到的有益效果可参考对应的方法中的有益效果,此处不再赘述。
在本申请中,上述远程数据访问装置的名字对设备或功能模块本身不构成限定,在实际实现中,这些设备或功能模块可以以其他名称出现。只要各个设备或功能模块的功能和本申请类似,属于本申请权利要求及其等同技术的范围之内。
附图说明
图1为本申请实施例提供的一种网络系统的架构示意图;
图2为本申请实施例提供的一种主机设备的硬件结构示意图;
图3为本申请实施例提供的一种远程数据访问方法的流程示意图;
图4为本申请实施例提供的另一种远程数据访问方法的流程示意图;
图5为本端设备通过本申请实施例提供的方法查询远端设备内存数据的示意图;
图6为本申请实施例提供的一种远程数据访问装置的结构示意图;
图7为本申请实施例提供的另一种远程数据访问装置的结构示意图。
具体实施方式
为了更清楚的理解本申请实施例,下面对本申请实施例中涉及的部分术语或技术进行说明:
1)、RDMA
RDMA协议支持多种RDMA操作,RDMA操作用于实现主机设备(例如本端设备)直接存(写)取(读)其他主机设备(例如远端设备)内存的目的。
RDMA协议的主流实现方式一般通过使用队列对(queue pair,QP)发送和接收数据。1个QP包含1个发送队列(send queue,SQ)和1个接收队列(receive queue,RQ)。其中,SQ中包括至少一个发送队列元素(send queue element,SQE),一个SQE用于指示请求端的一个RDMA操作。RQ中包括至少一个接收队列元素(receive queue element,RQE),一个RQE用于指示响应端处理一个RDMA消息(message)。可以理解,SQ和RQ均为先进先出的队列。
需要说明,本申请实施例将发送RDMA操作请求报文的一端称为请求端,将接收RDMA操作请求报文的一端称为响应端。可以理解,对于同一个主机设备而言,在不同情况下,该主机设备可以是发送RDMA操作请求的请求端,也可以是接收RDMA操作请求的响应端,对此不作限定。
此外,1个或多个QP可以与1个或2个完成队列(completion queue,CQ)队列关联。以1个QP所关联的CQ为例,如果1个QP关联1个CQ,表示该QP中的SQ和RQ共享1个CQ。如果1个QP关联2个CQ,表示该QP中的SQ和RQ,分别关联1个CQ。
其中,CQ中包括至少1个完成队列元素(completion queue entry,CQE),1个CQE用于指示请求端或响应端执行完1次RDMA操作。当然,CQ也可以为空,即该CQ中没有CQE,对此不作限定。可以理解,CQ为先进先出的队列。
RDMA操作包括单边操作和双边操作。其中,单边操作包括读(read)操作和写(write)操作,双边操作包括发送(send)操作和接收(receive)操作。
需要说明,read操作和write操作是独立的两种RDMA操作,而send操作和receive操作是一组对应的RDMA操作,即当请求端执行send操作时,对应的响应端则执行receive操作。
还需说明,单边操作无需响应端的操作系统参与,而双边操作则需要响应端的操作系统参与,例如预先分配接收缓存区。
下面通过具体示例,对上述的双边操作和单边操作所执行的流程进行详细说明。
示例1
以本端设备11读取远端设备12的内存数据为例,对RDMA协议支持的read操作所执行的流程进行详细说明:
S11、本端设备11基于应用进程的指示确定待读数据的标识,以及确定远端设备12中用于存储该待读数据的发送缓存区的地址。
本端设备11作为read操作的请求端,可以预先获取远端设备12(即为read操作的响应端)中允许被读取数据的标识,以及获取远端设备12中用于存储该允许被读取数据的发送缓存区的地址。这样,本端设备11在基于应用进程的指示确定待读数据的标识后,即可基于获取到的远端设备12中允许被读取数据的标识,以及远端设备12用于存储该允许被读取数据的发送缓存区的地址,确定远端设备12中用于存储待读数据的发送缓存区的地址。例如,本端设备11可以通过待读数据的标识在获取到的远端设备12中允许被读取数据的标识中匹配,并将匹配到的标识所对应的允许被读取数据在远端设备12的发送缓存区中的地址,确定为远端设备12中用于存储待读数据的发送缓存区的地址。
其中,数据的标识例如可以是数据的名称,或者是数据的身份标识号(identitydocument,ID)等,当然不限于此。
远端设备12中用于存储允许被读取数据的发送缓存区的地址,可以是物理地址,也可以是逻辑地址,对此不作限定。
可选的,本端设备11预先获取远端设备12中允许被读取数据的标识以及获取用于存储该允许被读取数据的发送缓存区的地址的过程,可以通过远端设备12执行send操作,以及本端设备11执行receive操作来完成。应理解,对于执行send操作的远端设备12而言,远端设备12即为发送send报文的请求端。对于执行receive操作的本端设备11而言,本端设备11即为接收send报文的响应端。其中,send操作和receive操作所执行的流程可以参考下文S21-S27的描述,这里不作赘述。
S12、本端设备11根据远端设备12中用于存储待读数据的发送缓存区的地址生成SQE 1,并将SQE 1写入与上述应用进程对应的SQ中。
可选的,SQE 1可以是本端设备11所运行的上述应用进程生成的,也可以是本端设备11的网络接口卡(network interface card,NIC)基于该应用进程的指示信息生成的,对此不作限定。
其中,SQE 1中除包括有远端设备12中用于存储待读数据的发送缓存区的地址之外,还包括本端设备11分配的用于写入待读数据的接收缓存区的地址、远端设备12的网络地址、以及read操作的操作码(opcode)。其中,远端设备12的网络地址例如可以是远端设备12的网际互连协议(internet protocol,IP)地址,或者是远端设备12的媒体存取控制(media access control,MAC)地址、或者是网络中用于唯一标识远端设备12的ID等,不限于此。
其中,与应用进程对应的SQ,即为与该应用进程对应的QP中的SQ。可选的,本端设备11中可以包括多个QP,每个QP可以对应本端设备11所运行的不同应用进程。通常,可以通过在应用进程的配置文件中配置QP的队列对号(queue pair number,QPN),来建立应用进程和QP之间的关联关系。
S13、本端设备11的NIC根据上述SQ中的SQE 1生成read报文。
具体的,由于SQ是先进先出的队列,因此本端设备11的NIC从上述SQ中的头部SQE(即该SQ中靠近出口一侧的第一个SQE)开始,依次处理SQ中的SQE。当本端设备11的NIC处理SQE 1时,即根据SQE 1中的远端设备12中用于存储待读数据的发送缓存区的地址、远端设备12的网络地址、以及read操作的操作码,生成read报文。该read报文中即包括远端设备12中用于存储待读数据的发送缓存区的地址、read操作的操作码、以及用于唯一标识该read报文的事物序列号(hic transaction sequence number,HSN)。可以看出,该read报文中的HSN与用于生成该read报文的SQE 1唯一对应。此外,该read报文的目的地址为远端设备12的网络地址。
可选的,本端设备11生成的该read报文中还可以包括本端设备11分配的用于写入待读数据的接收缓存区的地址。这种情况下,该read报文中可以不包括HSN。
S14、本端设备11的NIC通过网络将上述read报文发送至远端设备12。
S15、远端设备12的NIC确定接收到的报文是read报文,即从该read报文所携带的用于存储待读数据的发送缓存区的地址读取待读数据,并生成用于承载该待读数据的响应报文。
远端设备12的NIC通过确定接收到的报文中的操作码是read报文的操作码后,即能确定该报文是read报文。
可选的,远端设备12的NIC从该read报文所携带的用于存储待读数据的发送缓存区的地址读取待读数据,并基于读取到的待读数据生成用于承载该待读数据的响应报文。应理解,该响应报文中除包括待读数据外,还包括远端设备12接收到的read报文中的HSN。并且,该响应报文的目的地址为发送该read报文的本端设备11的网络地址。
可选的,当read报文中包括本端设备11分配的用于写入待读数据的接收缓存区的地址,则远端设备12的NIC从该read报文所携带的用于存储待读数据的发送缓存区的地址读取待读数据,并基于读取到的待读数据和该read报文中携带的本端设备11分配的用于写入该待读数据的接收缓存区的地址,生成用于承载该待读数据的响应报文。应理解,该响应报文的目的地址为发送该read报文的本端设备11的网络地址。
S16、远端设备12的NIC向本端设备11返回用于承载待读数据的响应报文。
S17、本端设备11的NIC接收到用于承载待读数据的响应报文,并将响应报文所承载的待读数据写入该响应报文所携带的用于写入待读数据的接收缓存区的地址。
可选的,如果该本端设备11接收到的响应报文中包括上述HSN,则本端设备11可以基于该HSN确定出与该HSN唯一对应的SQE 1,并将该响应报文所承载的待读数据写入SQE 1中包括的用于写入待读数据的接收缓存区的地址。
可选的,如果该本端设备11接收到的响应报文中包括本端设备11分配的用于写入该待读数据的接收缓存区的地址,则本端设备11的NIC直接将响应报文所承载的待读数据写入该用于写入待读数据的接收缓存区的地址。
S18、本端设备11的NIC向与上述应用进程对应的CQ写入CQE 1,CQE 1即用于指示本端设备11的NIC已将上述待读数据写入上述的接收缓存区。
至此,本端设备11和远端设备12执行完一次read操作。
示例2
以本端设备21向远端设备22发送数据为例,对send操作和receive操作所执行的流程进行详细说明:
S21、本端设备21将待发送数据写入发送缓存区,并基于发送缓存区的地址生成SQE 1,以及将SQE 1写入SQ。
可选的,SQE 1可以是本端设备21所运行的应用进程生成的,也可以是本端设备21的NIC基于该应用进程的指示信息生成的,对此不作限定。然后,本端设备21将生成的SQE 1写入与该应用进程对应的SQ中。其中,与应用进程对应的SQ的相关说明可以参考上文S12中的相关描述,这里不作赘述。
S22、本端设备21的NIC根据上述SQ中的SQE 1生成send报文。
由于SQ是先进先出的队列,因此本端设备21的NIC从上述SQ中的头部SQE(即该SQ中靠近出口一侧的第一个SQE)开始,依次处理SQ中的SQE。当本端设备21的NIC处理SQE 1时,即从SQE 1中用于存储待发送数据的发送缓存区的地址读取该待发送数据,并根据读取到的待发送数据以及SQE 1中的send操作的操作码,生send报文。该send报文即用于承载待发送数据,该send报文中包括send操作的操作码,且该send报文的目的地址为远端设备22的网络地址。
应理解,本端设备21生成的send报文中,还包括有用于指示接收该send报文的远端设备22中处理该send报文的QP的QPN。
需要说明的是,在RDMA协议中,一个send报文可以承载的数据长度是有限的。因此,当SQE 1所指示的发送缓存区中的待发送数据的长度,大于一个send报文所能承载数据的最大长度,则本端设备21的NIC基于SQE 1可以生成多个send报文,该多个send报文即共同用于承载SQE 1所指示的发送缓存区中的待发送数据,该多个send报文通常称为一个message。可以看出,一个SQE对应一个message,并对应一个或多个send报文。
S23、本端设备21的NIC将生成的send报文发送至远端设备22。
S24、远端设备22的NIC确定接收到的报文是send报文,则将send报文所承载的待发送数据写入RQ中头部RQE所指示的接收缓存区。
远端设备22的NIC通过确定接收到的报文中的操作码是send报文的操作码,即确定该报文是send报文。
接着,远端设备22将接收到的send报文所承载的待发送数据,写入该send报文中的QPN所指示QP中RQ的头部RQE所指示的接收缓存区。其中,该RQ包括一个或多个RQE,每个RQE中包括有远端设备22预先分配的用于写入数据的接收缓存区的地址。对于先进先出的RQ而言,RQ中的头部RQE即为RQ中靠近出口侧的第一个RQE。
S25、远端设备22的NIC在远端设备22的CQ中写入CQE 1,CQE 1即用于指示远端设备22的NIC已将接收到的send报文所承载的待发送数据的写入接收缓存区。
S26、当本端设备21中的QP 1与远端设备22中的QP之间建立有可靠的QP连接,则远端设备22的NIC向本端设备21返回确认(Acknowledge character,ACK)报文。
其中,QP连接可以理解为一种逻辑连接,通常通过配置参数来实现,对此不作详述。
应理解,一个send报文对应一个ACK报文,或者,多个send报文对应一个ACK报文。
S27、本端设备21在接收到远端设备22返回的与SQE 1对应的全部send报文的ACK报文后,在本端设备21的CQ中写入CQE 2,CQE 2即用于指示远端设备22的NIC已接收到send报文,并已将该send报文所承载的待发送数据写入接收缓存区。
可以理解,当本端设备21中的QP 1和远端设备22中的QP之间未建立QP连接,则本端设备21在发送完成与SQE 1对应的全部send报文后,即在本端设备21的CQ中写入CQE2。此时,CQE 2用于本端设备21已完成待发送数据的发送。
至此,本端设备21执行完成send操作,且远端设备22执行完成receive操作。
2)、其他术语
在本申请实施例中,“示例性的”、“作为示例”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”、“作为示例”或者“例如”等词旨在以具体方式呈现相关概念。
在本申请的实施例中,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多该特征。
本申请中术语“至少一个”的含义是指一个或多个,本申请中术语“多个”的含义是指两个或两个以上,例如,多个第二报文是指两个或两个以上的第二报文。本文中术语“系统”和“网络”经常可互换使用。
在数据中心的本端设备跨网络查询远端设备中内存数据库中的数据时,可以通过RDMA协议中的read操作实现。具体的,该本端设备可以通过执行read操作将远端设备的内存数据库读取到本地内存,然后再通过对该数据库的查询,来实现本端设备对远端设备中的内存数据库中的查询。其中,read操作的具体的说明参考上述S11-S18的描述,这里不作赘述。
然而,当远端设备中的内存数据库所包括的数据较多时,本端设备和远端设备之间需要通过多次交互才能使得本端设备将远端设备的内存数据库读取到本地。因此,通过传统RDMA协议中的read操作来实现数据中心的本端设备跨网络查询远端设备中内存数据库中的数据时,耗时长、效率低、且需耗费大量网络宽带资源。
或者,在数据中心的本端设备跨网络查询远端设备中内存数据库中的数据时,通过RDMA协议中的send操作和receive操作实现。具体的,该本端设备可以先通过执行send操作,将本端设备查询远端设备中内存数据库中的数据查询请求发送至远端设备后,远端设备执行receive操作,以接收到本端设备发送的数据查询请求,并将接收到的数据查询请求写入接收缓存区。进一步的,为了使远端设备获取到上述接收缓存区的数据查询请求,需要在远端设备的处理器运行多个轮询线程,远端设备的处理器通过多次轮询的方式,获得接收缓存区中写入的数据查询请求,并响应该数据查询请求,以在本地内存数据库查询到目标数据。然后通过send操作或write操作,将查找到的目标数据发送至本端设备。当远端设备将在本地内存数据库查询到目标数据通过执行send操作发送至本端设备时,本端设备则通过执行receive操作接收到远端设备查询到的目标数据。如此,即实现了本端设备对远端设备中的内存数据库中的查询。其中,本申请实施例对write操作的详细过程不作详述。send操作和receive操作的具体的说明参考上述S21-S27的描述,这里不作赘述。
然而,当远端设备的处理器当前执行的线程任务较多时,远端设备写入接收缓存区中的数据查询请求需要等待较长时间后才能被远端设备的处理器处理,从而导致本端设备对远端设备本地数据进行查询时的效率较低。另外,当远端设备在响应本端设备的数据查询请求后,查询到的目标数据的数据量较大,则当远端设备将在本地内存数据库查询到目标数据通过执行send操作发送至本端设备,且本端设备执行receive操作将该目标数据写入本端设备的RQ中RQE指示的接收缓存区时,如果目标数据的长度大于接收缓存区的长度,则本端设备报错,或直接将接收到的目标数据丢弃,从而导致本端设备对远端设备中的内存数据库中的查询失败。
基于此,本申请实施例提供了一种远程数据访问方法,该方法应用于第一设备(对应于上述的本端设备),第一设备和第二设备(对应于上述的远端设备)通过网络通信连接,且第一设备和第二设备均配置有具有RDMA功能的NIC。该方法通过对RDMA协议进行扩展,以使第一设备通过扩展的RDMA协议报文(即第一报文)来指示第二设备对第二设备的本地数据执行预设操作。该预设操作例如是查询操作、插入操作或删除操作等。这样,通过扩展后的RDMA协议,除可以实现扩展前RDMA协议所实现的本端设备对远端设备内存的直接存(写)取(读),还能实现高效的控制远端设备对远端设备的本地数据进行查询、插入或删除等操作。
进一步的,当第一设备的NIC生成并向第二设备发送的第一报文用于指示第二设备对第二设备的本地数据执行查询操作,则第二设备在执行查询操作后,通过send操作向第一设备返回查询到的目标数据(即本申请实施例中第二报文所承载的数据)时,即使第二设备向第一设备返回的目标数据的长度大于第一设备接收缓存区的长度,第一设备也可以通过调用扩展缓存区来完成第二设备所返回数据的接收。
其中,第二设备的本地数据可以是第二设备内存中存储的数据、或者第二设备硬盘中存储的数据等,当然不限于此。为方便描述,本申请实施例在下文中以第二设备的本地数据是第二设备的内存数据为例进行说明。
本申请实施例还提供一种网络系统,上述远程数据访问方法即可应用于该网络系统中。该网络系统中包括多个主机设备,该多个主机设备均支持本申请扩展的RDMA协议,且该多个主机设备之间通过网络连接通信。作为示例,该网络系统例如是数据中心所在的网络系统。
其中,本申请实施例扩展的RDMA协议支持远程内存功能调用(Remote memoryfunction call,RMFC)操作。本端设备通过执行RMFC操作,能够高效的控制远端设备对远端设备的内存数据执行预设操作,例如对内存数据执行查询操作、插入操作或删除操作等。
应理解,上述多个主机设备中的任一个主机设备可以作为本申请实施例所述的第一设备,即本端设备,上述多个主机设备中除该任一个主机设备之外的另一主机设备可以作为本申请实施例所述的第二设备,即远端设备。
参考图1,图1示出了本申请实施例提供的一种网络系统10的架构示意图。如图1所示,网络系统10包括主机设备11、主机设备12、以及主机设备13。主机设备11、主机设备12以及主机设备13均支持本申请实施例扩展的RDMA协议,并可以通过网络14连接通信。作为示例,网络14例如可以是公网、数据中心所处内网、企业内网、或者学校内网等,本申请实施例对此不作限定。
可以理解,当网络系统10中的主机设备11是上述第一设备时,第二设备可以是网络系统10中除主机设备11之外的任一个主机设备,例如主机设备12或主机设备13。
还应理解,对于网络系统10中第一设备(例如主机设备11)而言,第一设备可以通过执行RDMA操作,可以远程存(读)取(写)网络系统10中第二设备(例如主机设备12或者主机设备13)的内存数据,还可以高效的控制第二设备对第二设备的内存数据执行预设操作。该预设操作例如是查询操作、插入操作或删除操作等,不限于此。
本申请实施例还提供一种远程数据访问装置,该装置可以是上述网络系统中的任一个主机设备,或者是该主机设备中的功能模块,本申请实施例对此不作限定。作为示例,该主机设备例如是图1所示网络系统10中的主机设备11。
以上述远程数据访问装置是图1所示网络系统10中的主机设备11为例,参考图2,图2示出了本申请实施例提供的一种主机设备11的硬件结构示意图。如图2所示,主机设备11包括处理器111、存储器112、网络接口113以及总线114。处理器111、存储器112、网络接口113之间通过总线114连接。
处理器111是主机设备11的控制中心,可以是一个通用中央处理单元(centralprocessing unit,CPU),处理器111还可能是其他通用处理器、数字信号处理器(digitalsignal processing,DSP)、专用集成电路(application-specific integrated circuit,ASIC)、现场可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件、图形处理器(graphics processingunit,GPU)、神经网络处理单元(neural processing unit,NPU)、张量处理器(tensorprocessing unit,TPU)或人工智能(artificial intelligent)芯片、数据处理器(dataprocessing unit,DPU)等。
作为一个示例,处理器111可以包括一个或多个CPU,例如图2中所示的CPU 0和CPU1。此外,本申请并不限定每个处理器中处理器核的个数。
存储器112用于存储程序指令或应用进程所要访问的数据(例如内存数据库),处理器111可以通过执行存储器112中的程序指令,以实现本申请实施例提供的远程数据访问方法中由处理器执行的方法部分。
存储器112包括易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data date SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。非易失性存储器可以是储存级内存(storage class memory,SCM)、固态硬盘(solid state drive,SSD)、机械硬盘(hard disk drive,HDD)等。其中,储存级内存例如可以是非易失性内存(non-volatilememory,NVM)、相变化内存(phase-change memory,PCM)、持久化内存等。
在一种可能的实现方式中,存储器112独立于处理器111存在。存储器112通过总线114与处理器111相连接,用于存储数据、指令或者程序代码。处理器111调用并执行存储器112中存储的指令或程序代码时,能够实现本申请实施例提供的远程数据访问方法中由处理器执行的方法部分。
在另一种可能的实现方式中,存储器112和处理器111集成在一起。
网络接口113,用于主机设备11与其他设备(如网络系统10中的主机设备12或主机设备13等)通过通信网络连接,所述通信网络可以是以太网,无线接入网(radio accessnetwork,RAN),无线局域网(wireless local area networks,WLAN)等。网络接口113包括用于接收数据/报文的接收单元,以及用于发送数据/报文的发送单元。
在本申请实施例中,网络接口113可以是支持本申请实施例所扩展的RDMA协议的NIC。该NIC可以通过执行RDMA操作,以实现本申请实施例提供的远程数据访问方法中由NIC执行的方法部分。
其中,支持本申请实施例所扩展RDMA协议的NIC,可以是独立的外围组件互连express(peripheral component interconnect express,PCIe)网卡,或者可以是集成到片上系统(system on chip,SoC)芯片的网络接口单元,本申请实施例对此不作限定。
此外,本申请实施例中支持扩展RDMA协议的NIC作为主机设备11的外部设备(external device),主机设备11的处理器111可以为该NIC分配一段内存,并在这段内存上,建立至少一个QP、至少一个CQ、以及至少一个扩展QP。其中扩展QP的说明参考下文方法中的描述,这里不作赘述。
可选的,主机设备11可以和网络系统10中的其他主机设备(例如主机设备12)通过QP连接进行网络通信。其中,QP连接包括可靠连接和不可靠连接。当QP连接是可靠连接时,则作为响应端的主机设备在接收完成请求端发送的报文后,可以向请求端发送一个ACK报文,以告知请求端,响应端已经将请求端发送的报文接收完成。
应理解,支持本申请实施例所扩展RDMA协议的NIC的硬件设置方式及用途,与支持传统RDMA协议的NIC的硬件设备相同,不再赘述。
总线114,可以是工业标准体系结构(industry standard architecture,ISA)总线、外部设备互连(peripheral component interconnect,PCI)总线、高速串行计算机扩展总线(peripheral component interconnect express,PCIe)、计算快速链路(computeexpress link,CXL)或扩展工业标准体系结构(extended industry standardarchitecture,EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图2中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
需要指出的是,图2中示出的结构并不构成对主机设备11的限定,除图2所示部件之外,该主机设备11包括比图2所示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合附图对本申请实施例提供的远程数据访问方法进行说明。
参考图3,图3示出了本申请实施例提供的一种远程数据访问方法的流程示意图。该方法可以应用于图1所示的网络系统10中,并由网络系统10中支持本申请实施例扩展的RDMA协议的第一设备和第二设备执行。其中,本申请实施例扩展的RDMA协议支持RMFC操作。可以理解,在第一设备和第二设备执行RMFC操作的过程中,作为本端设备的第一设备为RMFC操作的请求端,作为远端设备的第二设备为RMFC操作的响应端。
具体的,如图3所示,第一设备和第二设备执行的RMFC操作的具体流程包括以下步骤:
S101、第一设备的NIC生成第一报文。
其中,第一报文包括类型标识,该类型标识用于指示第一报文是RMFC类型的报文,RMFC类型的报文用于指示接收该报文的设备对该设备的本地数据执行预设操作。也就是说,第一报文可以用于指示接收第一报文的设备(例如第二设备)对第二设备的内存数据执行预设操作。可选的,该类型标识例如是RMFC操作的操作码。可以理解,第一报文即为第一设备执行RMFC操作时请求侧报文。
第一报文还包括功能标识(function identity)。该功能标识用于指示接收第一报文的第二设备对第二设备的内存数据执行的预设操作的操作类型。可选的,该预设操作的操作类型包括查询操作、插入操作或删除操作中的任一种,不限于此。
其中,第一报文中的功能标识是第一设备基于第一设备运行的应用进程下发的数据请求确定的。应理解,在实际应用中,第一设备通过处理器(如图2所示的处理器111)运行应用进程,当该应用进程需要访问第二设备的内存数据时,可以根据访问需求确定数据请求。这样,基于该数据请求的类型,第一设备即可确定出需要第二设备执行的预设操作的类型。
示例的,假设第一设备运行的应用进程下发的数据请求是该应用进程请求在第二设备本地存储的、且结构为B+树结构的数据库中查询目标数据。这种情况下,基于该数据请求,第一设备确定需要第二设备执行的预设操作的类型为数据查询。
具体的,当上述通过第一设备的处理器运行的应用进程根据自身需求确定数据请求后:
在第一种可能的实现方式中,该应用进程可以基于确定的数据请求,直接生成包括该数据请求的参数以及RMFC操作的操作码的第一SQE。其中,数据请求的参数包括上述功能标识。可选的,数据请求的参数还包括HSN、数据请求内容等参数。
其中,功能标识用于指示预设操作的操作类型,功能标识的不同取值可以用于指示不同的操作类型。例如,值为1的功能标识用于指示查询操作,值为2的功能标识用于指示插入操作。HSN用于唯一标识该数据请求,以使当第一设备确定接收到的报文中包括该HSN时,即确定该报文为该数据请求的响应报文。数据请求内容用于指示第一设备所运行的应用进程的具体请求内容,例如该应用进程的具体请求内容是:在标识(或名称)为ABC的B+树结构的数据库中查询key=90的数据,或者在标识(或名称)为ABC的B+树结构的数据库中查询(key>12)&(key<33)范围内的数据,或者在标识(或名称)为ABC的B+树结构的数据库中插入数据a,或者删除标识(或名称)为ABC的B+树结构的数据库中的数据b,等等,对此不作限定。
接着,上述应用进程通过向NIC发送指示信息,以使NIC基于该应用进程生成的第一SQE生成第一报文,该第一报文中包括RMFC操作的操作码和上述数据请求的参数。可选的,该RMFC操作的操作码可以承载在第一报文的报文头,该数据请求的参数可以作为第一报文的数据载荷(payload)。可以看出,该RMFC操作的操作码即为第一报文的类型标识,该数据请求的参数中的功能标识即为第一报文的功能标识。
在第二种可能的实现方式中,上述应用进程向第一设备预先分配的发送缓存区写入上述数据请求的参数。当第一设备的NIC检测到发送缓存区已写入数据内容,则根据该发送缓存区中写入的内容生成包括该发送缓存区地址的第一SQE,并将第一SQE写入与该应用进程对应的QP的SQ中。其中,数据请求的参数的详细描述可以参考上文描述,这里不作赘述。
可选的,当该应用进程指定采用本申请实施例提供的RMFC操作来实现上述数据请求的发送时,则该应用进程在向发送缓存区写入数据请求时,还写入RMFC操作的操作码。也就是说,在第二种可能的实现方式中,第一设备生成的第一SQE所指示的发送缓存区中除包括上述数据请求的参数,还包括RMFC操作的操作码。
可选的,假设第一设备的NIC能够用于指定上述数据请求的发送方式,且当第一设备的NIC指定通过本申请实施例提供的RMFC操作来发送该数据请求时,第一设备的NIC在确定发送缓存区已写入数据内容后,可以生成包括该发送缓存区地址和RMFC操作的操作码的第一SQE。
然后,在第一设备的NIC从与上述应用进程对应的QP的SQ的头部SQE开始,依次处理该SQ中的SQE的过程中,当第一设备的NIC处理第一SQE时,即根据第一SQE生成包括RMFC操作的操作码和数据请求的参数的第一报文。可选的,该RMFC操作的操作码可以承载在第一报文的报文头,该数据请求的参数可以作为第一报文的数据载荷。这样,该RMFC操作的操作码即为第一报文的类型标识,该数据请求的参数中的功能标识即为第一报文的功能标识。
应理解,第一设备的NIC生成的第一报文的目的地址是第二设备的网络地址。其中,网络地址的详细说明可以参考上文描述,这里不再赘述。
可选的,第二设备的网络地址可以是上述应用进程所确定的数据请求中的一个参数,本申请实施例对此不作限定。
S102、第一设备的NIC向第二设备发送第一报文。
具体的,第一设备的NIC通过网络向第二设备发送第一报文。
S103、第二设备的NIC接收第一报文,并在确定第一报文是RMFC类型的报文时,根据第一报文中的功能标识,对第二设备的内存数据执行预设操作。
第二设备的NIC接收到第一报文,并在第二设备的NIC确定第一报文中的类型标识是RMFC类型报文的标识时,响应第一报文,以对自身的内存数据执行操作类型为第一报文中功能标识所指示操作类型的预设操作。这里,预设操作的描述可以参考上文,这里不作赘述。为简单描述,本申请实施例在下文中将操作类型为功能标识所指示操作类型的预设操作,称为与该功能标识对应的预设操作。
作为示例,假设第一报文中的类型标识是操作码,则当第二设备的NIC确定第一报文中操作码是RMFC操作的操作码,则第二设备的NIC可以确定第一报文是RMFC类型的报文。其中,第二设备的NIC可以通过识别第一报文的报文头中的操作码,来确定第一报文中的操作码是RMFC操作的操作码。或者,第二设备的NIC可以通过对第一报文进行解析,以确定第一报文中的操作码是RMFC操作的操作码,对此不作限定。
具体的,第二设备的NIC确定第一报文是RMFC类型报文后,即可将第一报文的数据载荷写入第二设备预先分配的接收缓存区,并基于第一报文数据载荷中的功能标识,确定与该功能标识对应的预设操作,以及确定用于执行该预设操作的处理单元。其中,第一报文的数据载荷即为上述第一设备所运行应用进程的数据请求的参数。可选的,用于执行预设操作的处理单元,例如是用于执行该预设操作的处理核,对此不作限定。这里,该处理核可以是第二设备NIC中的微处理器,也可以是第二设备中通用处理器中的任一个处理核,或者是第二设备中任一个专用的处理核,本申请实施例对此不作限定。
接着,第二设备的NIC可以向上述确定的处理单元发送通知消息,以通知该处理单元对内存数据执行与功能标识对应的预设操作。这里,该通知消息中包括用于写入第一报文数据载荷的接收缓存区的地址。这样,该处理单元可以在接收到该通知消息后,从该通知消息中的该接收缓存区的地址上获取NIC在该地址上写入的数据载荷,并基于该数据载荷(即数据请求的参数)所指示的数据请求内容,对第二设备的内存数据执行该数据载荷中功能标识所对应的预设操作。其中,数据请求内容和预设操作的具体说明可以参考上文描述,这里不作赘述。
可以看出,相比扩展前RDMA协议中receive操作,第二设备的NIC写入接收缓存区的数据查询请求需要等待处理器轮询处理才能被响应,第二设备执行本申请实施例扩展的RMFC操作时,第二设备的NIC在接收到第一报文,并将第一报文的数据载荷写入接收缓存区后,即向处理单元发送通知消息,以通知处理单元及时处理接收缓存区中的数据载荷。可见,本申请实施例提供的方法可以提高数据载荷所指示数据请求内容(例如数据查询请求)的处理效率。
可选的,上述通知消息中还可以包括第一报文数据载荷(即上述数据请求的参数)中功能标识所对应预设操作的执行优先级。这种情况下,第二设备的NIC在接收到第一报文后,还从第一报文中获取该执行优先级,并将包括用于写入第一报文数据载荷的接收缓存区的地址和该执行优先级的通知消息发送至上述处理单元,以使该处理单元在接收到该通知消息后,可以根据该通知消息中的执行优先级,从该通知消息中的接收缓存区的地址获取数据载荷,并根据该数据载荷(即数据请求的参数)所指示的数据请求内容,对第二设备的内存数据执行该数据载荷中功能标识所对应的预设操作。其中,预设操作的优先级用于指示第二设备的处理单元对内存数据执行该预设操作的执行顺序。
应理解,第二设备的NIC可以同时或在较短时间内接收到多个RMFC类型报文。这样的话,可能存在多个报文中的功能标识对应的多个预设操作需要由上述预设处理器执行的情况。因此,该预设处理器可以根据该多个预设操作的执行优先级,确定执行该多个预设操作的执行顺序。然后,该预设处理器可以根据该多个预设操作的执行顺序,依次从对应的接收缓存区获取数据载荷,并根据该数据载荷(即数据请求的参数)所指示的数据请求内容,对第二设备的内存数据执行该数据载荷中功能标识所对应的预设操作。
还应理解,上述处理单元优先从与高执行优先级对应的接收缓存区的地址获取数据载荷并执行对应的预设操作,后从与低执行优先级对应的接收缓存区的地址获取数据载荷并执行对应的预设操作。其中,与执行优先级对应的接收缓存区的地址,即为该执行优先级同属一个通知消息的接收缓存区的地址。
作为示例,上述执行优先级可以通过权重系数表示。例如,高权重系数表示高执行优先级,低权重系数标识低执行优先级。
可选的,第二设备的处理单元根据该多个预设操作的执行优先级,确定执行该多个预设操作的执行顺序的过程,可以通过第二设备中独立的调度单元执行,从而实现节省该处理单元的计算资源的目的。其中,该调度单元用于调度任务在该处理单元的执行顺序。
这种情况下,第二设备的NIC在接收到第一报文后,从第一报文中获取该执行优先级,将第一报文的数据载荷写入第二设备预先分配的接收缓存区,以及确定用于执行第一报文数据载荷中功能标识所对应预设操作的处理单元后,第二设备的NIC将包括用于写入第一报文数据载荷的接收缓存区的地址和从第一报文中获取的执行优先级的通知消息,发送至用于为该处理单元调度数据请求的调度单元,以使该调度单元根据接收到的执行优先级确定与该执行优先级对应的预设操作的执行顺序。
作为示例,第二设备的NIC可以通过门铃(doorbell)方式,将包括用于写入第一报文数据载荷的接收缓存区的地址和从第一报文中获取的执行优先级的通知消息发送至调度单元,本申请实施例对此不作限定。
进一步的,该调度单元在根据接收到的通知消息中的执行优先级确定出的与该执行优先级对应的预设操作的执行顺序后,即可根据确定出的执行顺序,将与该执行优先级对应的接收缓存区的地址依次发送至上述处理单元,以使该处理单元从接收到的接收缓存区的地址获取数据载荷,并根据该数据载荷(即数据请求的参数)所指示的数据请求内容,对第二设备的内存数据执行该数据载荷中功能标识所对应的预设操作。其中,与该执行优先级对应的接收缓存区的地址,即为与该执行优先级同属一个通知消息的接收缓存区的地址。
还可以理解,调度单元可以在处理单元具有空闲计算资源时,向处理单元发送接收缓存区的地址,以使该处理单元从接收到的接收缓存区的地址获取数据载荷,并根据该数据载荷(即数据请求的参数)所指示的数据请求内容,对第二设备的内存数据执行该数据载荷中功能标识所对应的预设操作。可选的,处理单元可以在自身具有空闲计算资源时,向调度单元发送获取数据请求的指示信息。作为响应,调度单元即可将与当前最高执行优先级对应的接收缓存区的地址发送至该处理单元。
需要说明,当上述预设操作是数据查询操作时,则处理单元对第二设备的内存数据执行完数据查询操作后,处理单元将查询到的目标数据写入第二设备NIC可访问的存储空间中。
可选的,处理单元也可以在对第二设备的内存数据执行数据查询操作的过程中,一边执行查询操作,一边向第二设备NIC可访问的存储空间写入已查询到的数据,直到将查询到的全部数据写入该存储空间。
进一步的,第二设备的NIC可以将该可访问的存储空间作为发送缓存区,并将该存储空间中写入的数据作为待发送数据。然后,通过第二设备执行send操作,第一设备执行receive操作,即可实现将上述存储空间的数据发送至第一设备的目的。由于该存储空间的数据即为第二设备响应第一报文后查询到的目标数据,因此即实现了第一设备查询第二设备内存数据的目的。其中,第二设备执行send操作,以及第一设备执行receive操作的具体说明,可以参考上文S21-S27的描述,这里不再赘述。
这样,通过上述S101-S103所述的方法,第一设备执行本申请实施例扩展的RMFC操作。然后,第二设备执行send操作,以及第一设备执行与该send操作相应的receive操作,这样即实现了第一设备查询第二设备内存数据的目的。由上文可以看出,这一过程仅需第一设备和第二设备之间的两次报文交互(即第一设备向第二设备发送第一报文,以及第二设备向第一设备发送用于承载目标数据的报文)即可实现。相比第一设备通过执行read操作时需要多次报文交互才能实现对第二设备内存数据的查询,本申请实施例提供的方法提高了第一设备查询第二设备内存数据的效率。
并且,相比扩展前的RDMA协议,本申请实施例扩展后的RDMA协议不仅可以远程存(读)取(写)第二设备的内存数据,还可以控制第二设备对本地数据执行数据查询、数据插入或数据删除等操作。
此外,相比扩展前RDMA协议中receive操作,第二设备的NIC写入接收缓存区的数据查询请求需要等待处理器轮询处理才能被响应,第二设备执行本申请实施例扩展的RMFC操作时,第二设备的NIC在接收到第一报文,并将第一报文的数据载荷写入接收缓存区后,即向处理单元发送通知消息,以通知处理单元及时处理接收缓存区中的数据载荷。可见,本申请实施例提供的方法可以提高第一报文中数据载荷所指示数据请求内容(例如数据查询请求)的处理效率。
然而,当上述目标数据较大时,第一设备在通过执行receive操作将第二设备查询到的目标数据写入第一设备RQ中RQE指示的接收缓存区时,如果目标数据的长度大于接收缓存区的长度,则第一设备报错,或直接将接收到的目标数据丢弃,从而导致第一设备查询第二设备中的内存数据失败。
为避免该问题,参考图4,图4示出了本申请实施例提供的另一种远程数据访问方法的流程示意图,该方法应用于图1所示的网络系统中,该方法在执行完上述的S101-S103后(具体内容参考前述描述,此处不再赘述),继续执行以下步骤,以实现在目标数据较大的情况下,第一设备能够也能成功接收该目标数据的目的。可以理解,在第一设备和第二设备执行本申请实施例提供的send操作的过程中,作为远端设备的第二设备为该send操作的请求端,作为本端设备的第一设备为该send操作的响应端。
S201、当上述预设操作是查询操作时,第二设备的NIC将执行查询操作后得到的目标数据作为待发送数据,生成第二报文。
其中,第二报文即为send报文。第二设备根据目标数据生成第二报文的过程,可以参考上文中S21-S22中生成send报文的描述,这里不作赘述。
需要说明的是,第二设备的NIC生成的第二报文,包括上述第一报文数据载荷中的事物序列号。这样,当第一设备接收到第二报文,即可基于该事物序列号,确定第二报文的数据载荷是第一报文的响应数据。
还应理解,第二设备的NIC生成的第二报文的数量可以是1个,也可以是多个,本申请实施例对此不作限定。
当第二设备的NIC生成的第二报文的数量是多个,该多个第二报文可以称为一个message。
可以理解,当第二设备的NIC生成的第二报文的数量是多个,表示第二设备的NIC将查询到的目标数据划分为多个数据块,并通过每个第二报文承载一个数据块。这种情况下,每个第二报文中包括自身所承载数据块的标识号。
作为示例,当第二设备的NIC将目标数据划分为标识号分别为数据块1、数据块2、以及数据块3的3个数据块,则第二设备的NIC可以根据该3个数据块,生成三个第二报文。并且可选的,第一个第二报文中包括的数据块标识号为数据块1,第二个第二报文包括的数据块标识号为数据块2,第三个第二报文包括的数据块标识号为数据块3。
S202、第二设备的NIC向第一设备发送第二报文。
具体的,第二设备的NIC通过网络向第一设备发送第二报文。
应理解,当第二设备生成的第二报文的数量为多个,则第二设备的NIC依次将该多个第二报文发送至第一设备。
可选的,第二设备的NIC发送的最后一个第二报文中,还包括最后响应(lastresponse)标识。应理解,该最后响应标识用于指示包括该标识的第二报文,是第二设备发送至第一设备的、用于承载上述目标数据(即第一报文的响应数据)的最后一个数据块的第二报文。这样的话,当第一设备接收到包括最后响应标识的第二报文,则可以确定用于承载第一报文响应数据的报文已经全部被接收。
需要说明,当第二设备NIC将用于承载目标数据的第二报文全部发送完成,即在CQ中写入第一CQE。该第一CQE即用于指示第二设备的NIC已完成用于承载目标数据的第二报文的发送。
当然,如果第二设备和第一设备之间存在可靠的QP连接,则第二设备可以在接收到第一设备发送的用于指示全部的第二报文已被接收的ACK报文后,在CQ中写入第一CQE。该第一CQE即用于指示第二设备的NIC已完成用于承载目标数据的第二报文的发送,且第一设备已完成第二报文所承载的目标数据的接收。其中,一个第二报文可以对应一个ACK报文,或者,多个第二报文对应一个ACK报文,本申请实施例对此不作限定。
S203、第一设备的NIC接收第二报文,并判断第二报文所承载的目标数据的长度是否大于接收缓存区的长度,该接收缓存区是第一设备所运行的应用进程对应的QP中RQ的头部RQE所指示的接收缓存区。
当第一设备的NIC接收到第二报文,第一设备的NIC可以基于第二报文中携带的事物序列号,确定第二报文所承载的数据即为上文所述的第一报文的响应数据,也即,第二报文所承载的数据,即为上文中第一设备所运行的应用进程下发的数据请求所请求的数据。
这样的话,当第一设备的NIC确定接收到第二报文所携带的操作码是send报文的操作码,则判断第二报文所承载的目标数据的长度是否大于接收缓存区的长度,该接收缓存区即为第一设备所运行的应用进程对应的QP中RQ的头部RQE所指示的接收缓存区。其中,头部RQE的说明参考上文,这里不再赘述。
当第一设备的NIC确定第二报文所承载的目标数据的长度小于或等于该接收缓存区的长度,则将第二报文所承载的目标数据写入该接收缓存区。
当第一设备的NIC确定第二报文所承载的目标数据的长度大于接收该缓存区的长度,则第一设备的NIC执行S204。
S204、当第一设备的NIC确定第二报文所承载的目标数据的长度大于接收该缓存区的长度,第一设备的NIC则从扩展RQ中调用一个或多个扩展RQE,并将第二报文所承载的目标数据写入该接收缓存区和该一个或多个扩展RQE所指示的扩展缓存区。
具体的,当第一设备的NIC确定第二报文所承载的目标数据的长度大于接收该缓存区的长度,第一设备的NIC则从扩展RQ中调用一个或多个扩展RQE,并将第二报文所承载的目标数据写满上述接收缓存区,以及将目标数据中除已写入该接收缓存区的数据之外的数据,写入该一个或多个扩展RQE所指示的扩展缓存区。
可选的,第一设备的NIC在接收到第二报文,并将第二报文所承载的数据写入缓存区(该缓存区可以是上述的接收缓存区,或者是由上述的接收缓存区和扩展缓存区构成的缓存区)后,向第二设备发送ACK报文,以告知第二设备第二报文已被接收。
需要说明的是,第一设备预先配置有扩展缓存区以及扩展RQ,该扩展RQ中包括多个扩展RQE,每个扩展RQE中包括一段扩展缓存区的地址。可以理解,当QP中RQ的RQE所指示的接收缓存区的长度小于接收到的待写数据(例如第二报文所承载的目标数据)的长度时,扩展缓存区即用于写入待写数据中超出该接收缓存区长度的数据。
可以看出,通过预先在第一设备中配置扩展RQ和扩展缓存区,即可实现在第一设备接收到的send报文所承载的数据较大,以致QP中RQ的头部RQE所指示的接收缓存区的长度不足以存储该send报文所承载的数据时,第一设备也能通过调用扩展RQ中的扩展RQE成功接收send报文所承载的数据。
此外,在一些实施例中,当第二报文的数量是多个,则第一设备的NIC在接收到第一个第二报文,并确定该第一个第二报文所携带的事物序列号是上述数据请求的参数中的事物序列号,以及确定该第一个第二报文是send报文后,则判断该第一个第二报文所承载的数据的长度是否大于接收缓存区的长度。该接收缓存区即为第一设备所运行的应用进程对应的QP中RQ的头部RQE所指示的接收缓存区。
一种可能的情况中,当第一设备的NIC确定该第一个第二报文所承载的数据的长度小于或等于该接收缓存区的长度,则将该第一个第二报文所承载的数据写入该接收缓存区。
接着,在第一设备的NIC在接收到第二个第二报文,并确定该第二个第二报文所携带的事物序列号是上述数据请求的参数中的事物序列号,以及确定该第二个第二报文是send报文后,则判断该第二个第二报文所承载的数据的长度是否大于接收缓存区中未写数据区域的长度。该接收缓存区即为第一设备所运行的应用进程对应的QP中RQ的头部RQE所指示的接收缓存区。应理解,此时该接收缓存区中已写入第一个第二报文所承载的数据。
当第一设备的NIC确定该第二个第二报文所承载的数据的长度小于或等于上述接收缓存区中未写数据区域的长度,则将该第二个第二报文所承载的数据写入该接收缓存区中的未写数据区域。
当第一设备的NIC确定该第二个第二报文所承载的数据的长度大于上述接收缓存区中未写数据区域的长度,则从扩展RQ中调用一个或多个扩展RQE,并将该第二个第二报文所承载的数据写满该接收缓存区中未写数据的区域,以及将该第二个第二报文所承载的数据中除已写入该接收缓存区的数据之外的数据,写入该一个或多个扩展RQE所指示的扩展缓存区。
以此类推,直到第一设备将第二报文所在message承载的全部数据(即目标数据),全部写入接收缓存区,或全部写入接收缓存区和扩展缓存区为止。
另一种可能的情况中,第一设备的NIC确定该第一个第二报文所承载的数据的长度大于该接收缓存区的长度,则从扩展RQ中调用一个或多个扩展RQE,并将该第一个第二报文所承载的数据写满该接收缓存区,以及将该第一个第二报文所承载的数据中除已写入该接收缓存区的数据之外的数据,写入该一个或多个扩展RQE所指示的扩展缓存区。
接着,在第一设备的NIC在接收到第二个第二报文,并确定该第二个第二报文所携带的事物序列号是上述数据请求的参数中的事物序列号,以及确定该第二个第二报文是send报文后,则判断该第二个第二报文所承载的数据的长度,是否大于已调用的扩展RQE所对应的扩展缓存区中未写数据区域的长度(应理解,此时该调用的扩展RQE所对应的扩展缓存区中已写入第一个第二报文所承载的数据),并进一步确定是否继续调用扩展RQE,以便写入该第二个第二报文所承载的数据。
以此类推,直到第一设备将第二报文所在message承载的全部数据,全部写入接收缓存区和扩展缓存区为止。
进一步的,当第一设备在将第二报文所在message承载的全部数据(即目标数据)全部写入缓存区后(该缓存区可以是上述的接收缓存区,或者是由上述的接收缓存区和扩展缓存区构成的缓存区),第一设备的NIC还执行S205。
S205、第一设备的NIC在与上述的第一设备所运行的应用进程对应的QP所关联的CQ中写入CQE,该CQE用于指示第一设备的NIC已将第二报文承载的目标数据全部写入缓存区。
其中,该缓存区可以是上述的接收缓存区,或者是由上述的接收缓存区和扩展缓存区构成的缓存区。
具体的,当第一设备的NIC在将接收到的第二报文所承载的目标数据写入缓存区的过程中,未调用一个或多个扩展RQE,即用于写入该目标数据的缓存区不包括扩展缓存区,则该CQE用于指示第一设备的NIC已将第二报文所承载的目标数据全部写入接收缓存区,且该CQE用于指示该接收缓存区的地址。其中,该接收缓存区即为第一设备所运行的应用进程对应的QP中RQ的头部RQE所指示的接收缓存区。
当第一设备的NIC在将接收到的第二报文所承载的目标数据写入缓存区的过程中,调用了一个或多个扩展RQE,则该CQE用于指示第一设备已将第二报文所承载的目标数据全部写入缓存区,且该缓存区包括接收缓存区和该一个或多个扩展RQE对应的扩展缓存区,该接收缓存区即为第一设备所运行的应用进程对应的QP中RQ的头部RQE所指示的接收缓存区。并且,该CQE用于指示该接收缓存区和该一个或多个扩展RQE对应的扩展缓存区的地址。
需要说明,在本申请实施例中,扩展QP无需设置相关联的CQ。因此,第一设备的NIC在将接收到的第二报文所承载的目标数据,写入与上述应用进程对应的QP中RQ的头部RQE所指示的接收缓存区后,或者,第一设备的NIC在将接收到第二报文所承载的目标数据,写入与上述应用进程对应的QP中RQ的头部RQE所指示的接收缓存区、以及一个或多个扩展RQE所指示的扩展缓存区后,仅需在与上述应用进程对应的QP相关联的CQ中写入CQE即可。
在实际应用中,可选的,第一设备的NIC可以在一个message处理完成后,即在CQ中写入CQE,即通过一个CQE指示该一个message已处理完成。并且,该CQE中包括索引信息,该索引信息用于指示写入该message的缓存区(包括接收缓存区和扩展缓存区)的地址。作为示例,该索引信息例如是链表头,本申请实施例对此不作限定。
可选的,第一设备的NIC也可以在将多个message处理完成(例如将多个message所包括的send报文全部发送完成,再例如将多个message所包括的send报文所承载的数据全部写入缓存区)后,在CQ中写入一个CQE,即通过一个CQE指示第一设备的NIC已处理完成该多个message。
其中,当第一设备的NIC在处理多个message时,可以只消费第一设备RQ中的一个RQE,也可以消费第一设备RQ中的多个RQE,本申请实施例对此不作限定。
当第一设备的NIC在处理多个message时,只消费了第一设备RQ中的一个RQE,且还消费(即调用)了扩展RQ中的1个或多个扩展RQE。这种情况下,第一设备的NIC在将该多个message所承载的全部数据写入前述消费的RQE所指示的接收缓存区、以及写入前述调用的1个或多个扩展RQE所指示的扩展缓存区后,即在与前述RQ所属QP相关联的CQ中写入一个CQE,以指示该多个message已处理完成。其中,该CQE中包括用于指示前述接收缓存区和扩展缓存区的地址的索引信息。这里,该接收缓存区和扩展缓存区的地址即为用于写入前述多个message所承载的全部数据的接收缓存区和扩展缓存区。
当第一设备的NIC在处理多个message时,消费了第一设备RQ中的多个RQE。例如第一设备的NIC处理多个message所消费的RQ中RQE的数量,与该多个message的数量相同。也即,第一设备的NIC处理一个message,即消费第一设备RQ中的一个RQE。对于该多个message中的任一个message而言,当第一设备的NIC处理该任一个message时,不仅消费了第一设备RQ中的一个RQE,还消费(即调用)了扩展RQ中的1个或多个扩展RQE。这种情况下,第一设备的NIC即将该任一个message所承载的全部数据写入前述消费的RQE所指示的接收缓存区、以及写入前述调用的1个或多个扩展RQE所指示的扩展缓存区。那么,在第一设备的NIC将该任一个message处理完成后,则将用于指示前述RQE所指示的接收缓存区、以及前述1个或多个扩展RQE所指示扩展缓存区的地址的索引信息写入该RQE。这里,该接收缓存区和扩展缓存区的地址即为用于写入该任一个message所承载的全部数据的接收缓存区和扩展缓存区。这样的话,当第一设备的NIC将多个message处理完成后,在与前述RQ所属QP相关联的CQ中写入一个CQE,以指示该多个message已处理完成。其中,该CQE中包括用于指示已消费的多个RQE地址的指针。
可选的,第一设备的NIC在执行S205后,还可以执行S206。
S206(可选的)、在第一设备的NIC将第二报文所承载的目标数据全部写入缓存区,且将缓存区中已写入的目标数据迁移至其他存储空间后,向第二设备发送回收信用证的指示信息。
其中,该缓存区可以是上述的接收缓存区,或者是由上述的接收缓存区和扩展缓存区构成的缓存区。
需要说明,第一设备在配置QP中RQ的RQE,以及在配置扩展RQ中的扩展RQE后,将配置的RQE和扩展RQE的个数、每个RQE所对应接收缓存区的大小、以及每个扩展RQE所对应的扩展缓存区的大小,通过协商报文发送至第二设备。这样,第二设备即可确定第一设备中配置的RQE和扩展RQE的个数,并配置对应数量个信用证。即,一个信用证对应一个接收缓存区或扩展缓存区。可选的,一个RQE或扩展RQE对应的缓存区的大小,可以通过对应的信用证的参数指示。作为示例,一个RQE或扩展RQE对应的缓存区的大小,可以是一个物理页的大小(即4K),本申请实施例对此不作限定。
其中,一个RQE或扩展RQE,对应一段缓存区,该一段缓存区用于第一设备的NIC在接收到send报文后,写入该send报文所承载的数据。
应理解,第二设备的NIC发送的一个message所包括的send报文,可以消费第一设备的一个RQE对应的接收缓存区,或者消费第一设备的一个RQE对应的接收缓存区、以及一个或多个扩展RQE对应的扩展缓存区。其中,第一设备的NIC在接收到一个message所包括的send报文后所消费扩展缓存区对应的扩展RQE的个数,由该message所承载的数据大小决定。
作为示例,假设第一设备的NIC接收的一个message所包括的send报文承载的数据为12K,且一个RQE或扩展RQE对应的缓存区的大小均为4K。则第二设备的NIC发送的该message所包括的send报文,可以消费第一设备的一个RQE对应的接收缓存区(4K),以及消费2个扩展RQE对应的扩展缓存区(8K)。
这样的话,第二设备的NIC在向第一设备发送一个message所包括的send报文(例如用于承载目标数据的一个或多个第二报文)后,扣减一个RQE指示的接收缓存区所对应的信用证,以及根据该message所承载数据的大小,扣减相应数量个扩展RQE指示的扩展缓存区对应的信用证。其中,扣减信用证例如可以是将信用证的标识设置为“已消费”。这样,第二设备即可实时确定:当前第一设备是否还有可用的RQE对应的接收缓存区、以及扩展RQE对应的扩展缓存区来写入第二设备发送的send报文所承载的数据。若有,第二设备即可继续向第一设备发送send报文。若没有,则停止向第一设备发送send报文。
因此,在第一设备的NIC将从第二设备接收到的第二报文所承载的目标数据全部写入缓存区(包括接收缓存区,或者包括接收缓存区和扩展缓存区),并且将该缓存区中写入的目标数据迁移至其他存储空间后,表示该缓存区被清空。也即,该缓存区可以重新用于写入send报文承载的数据。这种情况下,第一设备的NIC向第二设备发送回收信用证的指示信息。该指示信息用于第二设备回收信用证,该指示消息可以携带已完成数据迁移的接收缓存区和扩展缓存区的数量、已完成数据迁移的每个接收缓存区的大小、以及已完成数据迁移的每个扩展缓存区的大小。
作为响应,第二设备的NIC接收到该指示消息,即回收已完成数据迁移的接收缓存区和扩展缓存区对应的信用证。例如将原先已消费的、且当前已完成数据迁移的接收缓存区和扩展缓存区对应的信用证的标识设置为“未消费”,从而实现第二设备的信用证回收。如此,第二设备即可确定当前第一设备存在可用的用于写入send报文所承载数据的接收缓存区和扩展缓存区。因此,第二设备即可继续向第一设备发送send报文。
这样,通过S201-S206所述的方法,当第二设备查询到的目标数据的长度大于第一设备接收缓存区的长度时,即可通过调用第一设备预先设置的扩展缓存区,以实现该目标数据的成功接收。
综上,本申请实施例提供的远程数据访问方法,可以通过执行本申请实施例扩展的RMFC操作,第二设备执行send操作,以及第一设备执行receive操作,来实现第一设备查询第二设备内存数据的目的。
相比第一设备通过执行扩展前RDMA协议中的read操作时需要多次报文交互来实现对第二设备内存数据的查询,本申请实施例提供的方法仅需第一设备和第二设备之间的两次报文交互(即第一设备向第二设备发送第一报文,以及第二设备向第一设备发送的用于承载目标数据的报文)来实现第一设备对第二设备内存数据的查询,即本申请实施例所提供方法提高了第一设备查询第二设备内存数据的效率。
并且,相比扩展前RDMA协议中receive操作,第二设备的NIC写入接收缓存区的数据查询请求需要等待处理器轮询处理才能被响应,第二设备执行本申请实施例扩展的RMFC操作时,第二设备的NIC在接收到第一报文,并将第一报文的数据载荷写入接收缓存区后,即向处理单元发送通知消息,以通知处理单元及时处理接收缓存区中的数据载荷。可见,本申请实施例提供的方法可以提高第一报文中数据载荷所指示数据请求内容(例如数据查询请求)的处理效率。
此外,本申请实施例提供的方法通过预先在第一设备中配置扩展RQ和扩展缓存区,从而实现了当第一设备接收到的send报文所承载的数据量较大,以致QP中RQ的头部RQE所指示的接收缓存区的长度不足以存储该send报文所承载的数据时,第一设备也能通过调用扩展RQ中的扩展RQE成功接收send报文所承载的数据。
为进一步对本申请实施例所提供的远程数据访问方法进行说明,下面通过具体示例予以描述:
参考图5,图5示出了本端设备通过本申请实施例提供的方法查询远端设备内存数据的示意图。如图5所示,本端设备和远端设备均具有图2所示的硬件结构。本端设备中运行的应用进程对应的QP包括如图5所示的SQ a和RQ a,本端设备还配置有扩展RQ及其对应的扩展缓存区。远端设备中的QP与本端设备的QP建立有QP连接,远端设备的QP包括如图5所示的SQ b和RQ b。
如图5中的(a)所示,本端设备通过处理器运行的应用进程基于自身需求确定数据查询请求,并将数据查询请求的参数写入本端设备的发送缓存区。接着,本端设备的网络接口卡基于该发送缓存区的地址生成SQE 1,并将生成的SQE 1写入图5所示的SQ a中。网络接口卡生成SQE 1的过程参考上文S101中的相关描述,这里不予赘述。
当本端设备的网络接口卡依次对图5所示SQ a中的SQE处理,并当网络接口卡处理SQE1时,基于SQE 1指示的发送缓存区的地址,生成操作码为RMFC操作码的第一报文,并将第一报文通过网络发送至远端设备。其中,本端设备的网络接口卡生成第一报文的具体说明可以参考上文描述,这里不予赘述。
然后,远端设备的网络接口卡接收到第一报文,当确定第一报文是RMFC类型的报文,则将第一报文的数据载荷写入图5所示的远端设备的接收缓存区,并向调度单元发送包括该接收缓存区的地址和第一报文数据载荷中功能标识所对应的数据查询操作的执行优先级的通知消息。该调度单元即为用于为执行该数据查询操作的预设处理器(对应于上述的处理单元)调度数据请求的调度单元。然后,调度单元基于接收到的通知消息中的执行优先级确定该数据查询操作的执行顺序,以实现对该数据查询操作的执行顺序进行调度。当调度单元确定可以执行该数据查询操作时,即将与该执行优先级对应的接收缓存区的地址发送至该预设处理器。应理解,与该执行优先级对应的接收缓存区的地址,即为与该执行优先级同属一个通知消息的接收缓存区的地址。这样,预设处理器读取该接收缓存区中的数据载荷,并基于数据载荷中的数据请求内容,执行数据查询操作,并将查询到的目标数据写入图5所示的远端设备的发送缓存区。可以理解,本段远端设备所执行的具体过程可以参考上文S103中第二设备所执行的具体流程,这里不予赘述。
接着,如图5中的(b)所示,远端设备的网络接口卡基于发送缓存区的地址,生成SQE2,并将SQE 2写入图5中所示的SQ b。当远端设备的网络接口卡依次对图5所示的SQ b中的SQE处理,并当网络接口卡处理SQE 2时,基于SQE 2指示的发送缓存区的地址,生成操作码为send操作码的第二报文,并将第二报文通过网络发送至本端设备。其中,第二报文即为用于承载该目标数据的send报文。其中,远端设备生成SQE 2以及生成用于承载该目标数据的send报文的详细说明可以参考上文S21-S22,以及S201的描述,这里不再赘述。
然后,本端设备接收到第二报文,并确定第二报文数据载荷中的事物序列号是上述第一报文中的事物序列号,则本端设备确定第二报文是上述第一报文的响应报文。这样,当本端设备确定接收到的第二报文的操作码是send操作,即判断第二报文所承载的目标数据的长度是否大于图5所示的RQ a的头部RQE所指示的接收缓存区的长度。
当第二报文所承载的目标数据的长度小于或等于图5所示的RQ a的头部RQE所指示的接收缓存区的长度,则本端设备的网络接口卡将该目标数据写入RQ a的头部RQE所指示的接收缓存区,即图5所示的本端设备的接收缓存区。
当第二报文所承载的目标数据的长度大于图5所示的RQ a的头部RQE所指示的接收缓存区的长度,则本端设备的网络接口卡将该目标数据写满RQ a的头部RQE所指示的接收缓存区(即图5所示的本端设备的接收缓存区)后,本端设备的网络接口卡还调用图5所示的本端设备的扩展RQ中的头部扩展RQE,并将目标数据中除已写入RQ a的头部RQE所指示的接收缓存区的数据之外的数据,写入该头部扩展RQE所指示的扩展缓存区,即如图5所示的本端设备的扩展缓存区。
至此,本端设备即获取到了第一报文的响应报文(即第二报文)所承载的目标数据,也即获取到了应用进程基于自需求请求查询远端设备内存数据后得到的目标数据。
上述主要从方法的角度对本申请实施例提供的方案进行了介绍。
为了实现上述功能,如图6所示,图6示出了本申请实施例提供的一种远程数据访问装置60的结构示意图。远程数据访问装置60应用于与第二设备连接通信的第一设备,远程数据访问装置60具有RDMA功能,第二设备配置有具有RDMA功能的NIC。远程数据访问装置60可以用于执行上述的远程数据访问方法,例如用于执行图3或图4所示的方法。其中,远程数据访问装置60可以包括生成单元61和发送单元62。
生成单元61,用于生成包括类型标识和功能标识的第一报文。发送单元62,用于向第二设备发送第一报文。其中,第一报文中的类型标识表示第一报文是RMFC类型的报文,RMFC类型的报文用于指示接收第一报文的第二设备对第二设备的本地数据执行预设操作,第一报文中的功能标识用于指示该预设操作的操作类型。
作为示例,结合图3,生成单元61可以用于执行S101,发送单元62可以用于执行S102。
可选的,上述预设操作的操作类型包括查询操作、插入操作、或删除操作中的任一种。
可选的,如果上述预设操作的操作类型是查询操作,则远程数据访问装置60还包括:接收单元63,用于接收用于承载目标数据的第二报文,该目标数据是第二设备对第二设备的本地数据执行查询操作后获得的数据。写入单元64,用于将该目标数据写入接收缓存区,该接收缓存区是与第一设备中运行的应用进程相对应的RQ的头部RQE所指示的缓存区。
作为示例,结合图4,接收单元63和写入单元64可以用于执行S203。
可选的,上述第一设备设置有包括至少一个扩展RQE的扩展RQ,该至少一个扩展RQE中的任一个扩展RQE中包括与任一个扩展RQE对应的扩展缓存区的地址。远程数据访问装置60还包括:确定单元65,用于确定上述目标数据的长度大于上述接收缓存区的长度。调用单元66,用于调用一个或多个扩展RQE。写入单元64,具体用于将上述目标数据写入上述接收缓存区和该一个或多个扩展RQE对应的扩展缓存区。
作为示例,结合图4,确定单元65、调用单元66以及写入单元64可以用于执行S204。
可选的,写入单元64,还用于在CQ中写入CQE。其中,在第一设备的NIC调用一个或多个扩展RQE时,CQE用于指示目标数据已写入接收缓存区和一个或多个扩展RQE对应的扩展缓存区,并用于指示该接收缓存区和该一个或多个扩展RQE对应的扩展缓存区的地址。
作为示例,结合图4,写入单元64可以用于执行S205。
可选的,上述第一报文中的功能标识是基于第一设备中运行的应用进程发出的数据请求确定的。
可选的,生成单元61,具体用于根据与第一设备中运行的应用进程对应的SQ的头部SQE,生成第一报文。这里,该头部SQE中包括与头部SQE对应的发送缓冲区的地址,该发送缓冲区用于存储前述应用进程发出的数据请求的参数。
作为示例,结合图3,生成单元61可以用于执行S101。
关于上述可选方式的具体描述可以参见前述的方法实施例,此处不再赘述。此外,上述提供的任一种远程数据访问装置60的解释以及有益效果的描述均可参考上述对应的方法实施例,不再赘述。
作为示例,结合图2,远程数据访问装置60可以是图2所示主机设备11的网络接口113,远程数据访问装置60中的生成单元61、确定单元65、调用单元66所实现的功能,即可通过图2所示网络接口113的处理模块实现,发送单元62和接收单元63所实现的功能,可以通过图2所示网络接口113的传输接口实现。
如图7所示,图7示出了本申请实施例提供的另一种远程数据访问装置70的结构示意图。远程数据访问装置70应用于与第一设备连接通信的第二设备,远程数据访问装置70具有RDMA功能,第一设备配置有具有RDMA功能的NIC。远程数据访问装置70可以用于执行上述的远程数据访问方法,例如用于执行图3或图4所示的方法。其中,远程数据访问装置70可以包括接收单元71和通知单元72。
接收单元71,用于接收来自第一设备的第一报文,第一报文包括类型标识和功能标识。通知单元72,用于当确定第一报文中的类型标识是用于指示第一报文是RMFC类型的报文的标识时,通知第二设备的处理单元对第二设备的本地数据执行预设操作,该预设操作的操作类型为第一报文中的功能标识所指示的操作类型。
作为示例,结合图3,接收单元71和通知单元72可以用于执行S103。
可选的,远程数据访问装置70还包括:发送单元73,用于向上述处理单元发送通知消息,该通知消息包括上述预设操作的执行优先级,该通知消息用于通知该处理单元按照该预设操作的执行优先级,对第二设备的本地数据执行预设操作。
可选的,远程数据访问装置70还包括:发送单元73,用于向第二设备的调度单元发送通知消息,该调度单元用于调度任务在第二设备的处理单元的执行顺序,该通知消息包括上述预设操作的执行优先级,该通知消息用于通知该调度单元按照该预设操作的执行优先级,为该处理单元调度预设操作的执行顺序,以使该处理单元按照执行顺序对第二设备的本地数据执行预设操作。
可选的,上述预设操作的操作类型包括查询操作、插入操作、或删除操作中的任一种。
可选的,如果上述预设操作的操作类型是查询操作,则远程数据访问装置70还包括:发送单元73,用于向第一设备发送用于承载目标数据的第二报文,该目标数据是第二设备对第二设备的本地数据执行查询操作后获得的数据。
作为示例,结合图4,发送单元73可以用于执行S202。
可选的,上述第一报文中的功能标识是第一设备基于第一设备中运行的应用进程发出的数据请求确定的。
关于上述可选方式的具体描述可以参见前述的方法实施例,此处不再赘述。此外,上述提供的任一种远程数据访问装置70的解释以及有益效果的描述均可参考上述对应的方法实施例,不再赘述。
作为示例,结合图2,远程数据访问装置70可以是图2所示主机设备11的网络接口113,远程数据访问装置70中的接收单元71和发送单元73所实现的功能,可以通过图2所示网络接口113的传输接口实现。
本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
需要说明的是,图6和图7中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如,还可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
本申请实施例还提供一种远程数据访问系统,该系统包括第一设备和第二设备,第一设备与第二设备连接通信,第一设备和所述第二设备均配置有支持本申请实施例扩展的RDMA协议的NIC。其中,第一设备的NIC和第二设备的NIC分别用于执行如图3或图4中各自执行的方法步骤,不再详述。
本申请实施例还提供一种计算机程序产品,以及用于存储该计算机程序产品的计算机可读存储介质。该计算机程序产品可以包括一个或多个程序指令,当该一个或多个程序指令被一个或多个处理器运行时可以提供以上针对图3或图4描述的功能或者部分功能。因此,例如,参考图3中S101~S103的一个或多个特征可以由该计算机程序产品中的一个或多个指令来承担。
在一些示例中,诸如针对图3或图4描述的远程数据访问装置60或远程数据访问装置70可以被配置为,响应于通过计算机可读存储介质中存储的一个或多个程序指令,提供各种操作、功能、或者动作。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件程序实现时,可以全部或部分地以计算机程序产品的形式来实现。该计算机程序产品包括一个或多个计算机指令。在计算机上和执行计算机执行指令时,全部或部分地产生按照本申请实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或者数据中心通过有线(例如同轴电缆、光纤、数字用户线(digitalsubscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可以用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质(例如,软盘、硬盘、磁带),光介质(例如,DVD)、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (30)
1.一种远程数据访问方法,其特征在于,应用于第一设备,所述第一设备与第二设备连接通信,所述第一设备和所述第二设备均配置有具有远程直接内存访问RDMA功能的网络接口卡NIC;所述方法由所述第一设备的NIC执行,所述方法包括:
生成第一报文,所述第一报文包括类型标识和功能标识;
向所述第二设备发送所述第一报文,其中,所述类型标识表示所述第一报文是远程内存功能调用RMFC类型的报文,所述RMFC类型的报文用于指示所述第二设备对所述第二设备的本地数据执行预设操作,所述功能标识用于指示所述预设操作的操作类型。
2.根据权利要求1所述的方法,其特征在于,所述预设操作的操作类型包括查询操作、插入操作、或删除操作中的任一种。
3.根据权利要求2所述的方法,其特征在于,如果所述预设操作的操作类型是查询操作,则所述方法还包括:
接收第二报文,所述第二报文用于承载目标数据,所述目标数据是所述第二设备对所述第二设备的本地数据执行所述查询操作后获得的数据;
将所述目标数据写入接收缓存区,所述接收缓存区是与所述第一设备中运行的应用进程相对应的接收队列RQ的头部接收队列元素RQE所指示的缓存区。
4.根据权利要求3所述的方法,其特征在于,所述第一设备设置有扩展RQ,所述扩展RQ包括至少一个扩展RQE,所述至少一个扩展RQE中的任一个扩展RQE中包括与所述任一个扩展RQE对应的扩展缓存区的地址;
所述将所述目标数据写入接收缓存区,包括:
确定所述目标数据的长度大于所述接收缓存区的长度;
调用一个或多个扩展RQE,并将所述目标数据写入所述接收缓存区和所述一个或多个扩展RQE对应的扩展缓存区。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
在完成队列CQ中写入完成队列元素CQE,其中,在所述第一设备的NIC调用所述一个或多个扩展RQE时,所述CQE用于指示所述目标数据已写入所述接收缓存区和所述一个或多个扩展RQE对应的扩展缓存区,并用于指示所述接收缓存区和所述一个或多个扩展RQE对应的扩展缓存区的地址。
6.根据权利要求1-5中任一项所述的方法,其特征在于,所述功能标识是基于所述第一设备中运行的应用进程发出的数据请求确定的。
7.根据权利要求1-6中任一项所述的方法,其特征在于,所述生成第一报文,包括:
根据与所述第一设备中运行的应用进程对应的发送队列SQ的头部发送队列元素SQE,生成所述第一报文;所述头部SQE中包括与所述头部SQE对应的发送缓冲区的地址,所述发送缓冲区用于存储所述应用进程发出的数据请求的参数。
8.一种远程数据访问方法,其特征在于,应用于第二设备,所述第二设备与第一设备连接通信,所述第二设备和所述第一设备均配置有具有远程直接内存访问RDMA功能的网络接口卡NIC;所述方法由所述第二设备的NIC执行,所述方法包括:
接收来自所述第一设备的第一报文,所述第一报文包括类型标识和功能标识;
当确定所述类型标识是用于指示所述第一报文是远程内存功能调用RMFC类型的报文的标识时,通知所述第二设备的处理单元对所述第二设备的本地数据执行预设操作,所述预设操作的操作类型为所述第一报文中的所述功能标识所指示的操作类型。
9.根据权利要求8所述的方法,其特征在于,所述通知所述第二设备的处理单元对所述第二设备的本地数据执行预设操作,包括:
向所述处理单元发送通知消息,所述通知消息包括所述预设操作的执行优先级,所述通知消息用于通知所述处理单元按照所述预设操作的执行优先级,对所述第二设备的本地数据执行所述预设操作。
10.根据权利要求8所述的方法,其特征在于,所述通知所述第二设备的处理单元对所述第二设备的本地数据执行预设操作,包括:
向第二设备的调度单元发送通知消息,所述调度单元用于调度任务在所述处理单元的执行顺序,所述通知消息包括所述预设操作的执行优先级,所述通知消息用于通知所述调度单元按照所述预设操作的执行优先级,为所述处理单元调度所述预设操作的执行顺序,以使所述处理单元按照所述执行顺序对所述第二设备的本地数据执行所述预设操作。
11.根据权利要求8-10中任一项所述的方法,其特征在于,所述预设操作的操作类型包括查询操作、插入操作、或删除操作中的任一种。
12.根据权利要求11所述的方法,其特征在于,如果所述预设操作的操作类型是查询操作,则所述方法还包括:
向所述第一设备发送第二报文,所述第二报文用于承载目标数据,所述目标数据是所述第二设备对所述第二设备的本地数据执行所述查询操作后获得的数据。
13.根据权利要求8-12中任一项所述的方法,其特征在于,所述功能标识是所述第一设备基于所述第一设备中运行的应用进程发出的数据请求确定的。
14.一种远程数据访问装置,其特征在于,应用于第一设备,所述第一设备与第二设备连接通信,所述装置具有远程直接内存访问RDMA功能;所述装置包括:
生成单元,用于生成第一报文,所述第一报文包括类型标识和功能标识;
发送单元,用于向所述第二设备发送所述第一报文,其中,所述类型标识表示所述第一报文是远程内存功能调用RMFC类型的报文,所述RMFC类型的报文用于指示所述第二设备对所述第二设备的本地数据执行预设操作,所述功能标识用于指示所述预设操作的操作类型。
15.根据权利要求14所述的装置,其特征在于,所述预设操作的操作类型包括查询操作、插入操作、或删除操作中的任一种。
16.根据权利要求15所述的装置,其特征在于,如果所述预设操作的操作类型是查询操作,所述装置还包括:
接收单元,用于接收第二报文,所述第二报文用于承载目标数据,所述目标数据是所述第二设备对所述第二设备的本地数据执行所述查询操作后获得的数据;
写入单元,用于将所述目标数据写入接收缓存区,所述接收缓存区是与所述第一设备中运行的应用进程相对应的接收队列RQ的头部接收队列元素RQE所指示的缓存区。
17.根据权利要求16所述的装置,其特征在于,所述第一设备设置有扩展RQ,所述扩展RQ包括至少一个扩展RQE,所述至少一个扩展RQE中的任一个扩展RQE中包括与所述任一个扩展RQE对应的扩展缓存区的地址;所述装置还包括:
确定单元,用于确定所述目标数据的长度大于所述接收缓存区的长度;
调用单元,用于调用一个或多个扩展RQE;
所述写入单元,具体用于将所述目标数据写入所述接收缓存区和所述一个或多个扩展RQE对应的扩展缓存区。
18.根据权利要求17所述的装置,其特征在于,
所述写入单元,还用于在完成队列CQ中写入完成队列元素CQE,其中,在所述第一设备的NIC调用所述一个或多个扩展RQE时,所述CQE用于指示所述目标数据已写入所述接收缓存区和所述一个或多个扩展RQE对应的扩展缓存区,并用于指示所述接收缓存区和所述一个或多个扩展RQE对应的扩展缓存区的地址。
19.根据权利要求14-18中任一项所述的装置,其特征在于,所述功能标识是基于所述第一设备中运行的应用进程发出的数据请求确定的。
20.根据权利要求14-19中任一项所述的装置,其特征在于,
所述生成单元,具体用于根据与所述第一设备中运行的应用进程对应的发送队列SQ的头部发送队列元素SQE,生成所述第一报文;所述头部SQE中包括与所述头部SQE对应的发送缓冲区的地址,所述发送缓冲区用于存储所述应用进程发出的数据请求的参数。
21.一种远程数据访问装置,其特征在于,应用于第二设备,所述第二设备与第一设备连接通信,所述装置具有远程直接内存访问RDMA功能;所述装置包括:
接收单元,用于接收来自所述第一设备的第一报文,所述第一报文包括类型标识和功能标识;
通知单元,用于当确定所述类型标识是用于指示所述第一报文是远程内存功能调用RMFC类型的报文的标识时,通知所述第二设备的处理单元对所述第二设备的本地数据执行预设操作,所述预设操作的操作类型为所述第一报文中的所述功能标识所指示的操作类型。
22.根据权利要求21所述的装置,其特征在于,所述装置还包括:
发送单元,用于向所述处理单元发送通知消息,所述通知消息包括所述预设操作的执行优先级,所述通知消息用于通知所述处理单元按照所述预设操作的执行优先级,对所述第二设备的本地数据执行所述预设操作。
23.根据权利要求21所述的装置,其特征在于,所述装置还包括:
发送单元,用于向第二设备的调度单元发送通知消息,所述调度单元用于调度任务在所述处理单元的执行顺序,所述通知消息包括所述预设操作的执行优先级,所述通知消息用于通知所述调度单元按照所述预设操作的执行优先级,为所述处理单元调度所述预设操作的执行顺序,以使所述处理单元按照所述执行顺序对所述第二设备的本地数据执行所述预设操作。
24.根据权利要求21-23中任一项所述的装置,其特征在于,所述预设操作的操作类型包括查询操作、插入操作、或删除操作中的任一种。
25.根据权利要求24所述的装置,其特征在于,如果所述预设操作的操作类型是查询操作,则所述装置还包括:
发送单元,用于向所述第一设备发送第二报文,所述第二报文用于承载目标数据,所述目标数据是所述第二设备对所述第二设备的本地数据执行所述查询操作后获得的数据。
26.根据权利要求21-25中任一项所述的装置,其特征在于,所述功能标识是所述第一设备基于所述第一设备中运行的应用进程发出的数据请求确定的。
27.一种网络接口卡NIC,其特征在于,所述NIC具有远程直接内存访问RDMA功能,所述NIC包括一个或多个处理器和传输接口,所述一个或多个处理器通过所述传输接口接收或发送数据,所述一个或多个处理器被配置为调用存储在存储器中的程序指令,以执行如权利要求1-7中任一项所述的方法,或者执行如权利要求8-13中任一项所述的方法。
28.一种主机设备,其特征在于,所述主机设备配置有具有远程直接内存访问RDMA功能的网络接口卡NIC,所述NIC用于执行如权利要求1-7中任一项所述的方法,或者用于执行如权利要求8-13中任一项所述的方法。
29.一种远程数据访问系统,其特征在于,所述系统包括第一设备和第二设备,所述第一设备与第二设备连接通信,所述第一设备和所述第二设备均配置有具有远程直接内存访问RDMA功能的网络接口卡NIC,其中,所述第一设备的NIC用于执行如权利要求1-7中任一项所述的方法,所述第二设备的NIC用于执行如权利要求8-13中任一项所述的方法。
30.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括程序指令,当所述程序指令在处理器上运行时,使得所述处理器执行如权利要求1-7或8-13中任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111445721.XA CN116204487A (zh) | 2021-11-30 | 2021-11-30 | 远程数据访问方法及装置 |
PCT/CN2022/101669 WO2023098050A1 (zh) | 2021-11-30 | 2022-06-27 | 远程数据访问方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111445721.XA CN116204487A (zh) | 2021-11-30 | 2021-11-30 | 远程数据访问方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116204487A true CN116204487A (zh) | 2023-06-02 |
Family
ID=86517889
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111445721.XA Pending CN116204487A (zh) | 2021-11-30 | 2021-11-30 | 远程数据访问方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN116204487A (zh) |
WO (1) | WO2023098050A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116566921A (zh) * | 2023-07-04 | 2023-08-08 | 珠海星云智联科技有限公司 | 远程直接内存访问读取的拥塞控制方法、系统及存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9176911B2 (en) * | 2012-12-11 | 2015-11-03 | Intel Corporation | Explicit flow control for implicit memory registration |
CN104580011B (zh) * | 2013-10-23 | 2017-12-15 | 新华三技术有限公司 | 一种数据转发装置和方法 |
CN108268208B (zh) * | 2016-12-30 | 2020-01-17 | 清华大学 | 一种基于rdma的分布式内存文件系统 |
US10567375B1 (en) * | 2018-10-02 | 2020-02-18 | Capital One Services, Llc | Systems and methods for data access control and account management |
-
2021
- 2021-11-30 CN CN202111445721.XA patent/CN116204487A/zh active Pending
-
2022
- 2022-06-27 WO PCT/CN2022/101669 patent/WO2023098050A1/zh unknown
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116566921A (zh) * | 2023-07-04 | 2023-08-08 | 珠海星云智联科技有限公司 | 远程直接内存访问读取的拥塞控制方法、系统及存储介质 |
CN116566921B (zh) * | 2023-07-04 | 2024-03-22 | 珠海星云智联科技有限公司 | 远程直接内存访问读取的拥塞控制方法、系统及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2023098050A1 (zh) | 2023-06-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11916781B2 (en) | System and method for facilitating efficient utilization of an output buffer in a network interface controller (NIC) | |
WO2017133623A1 (zh) | 一种数据流处理方法、装置和系统 | |
EP1784735B1 (en) | Apparatus and method for supporting memory management in an offload of network protocol processing | |
EP1782602B1 (en) | Apparatus and method for supporting connection establishment in an offload of network protocol processing | |
US7493427B2 (en) | Apparatus and method for supporting received data processing in an offload of network protocol processing | |
US11025564B2 (en) | RDMA transport with hardware integration and out of order placement | |
US11068412B2 (en) | RDMA transport with hardware integration | |
EP2755363A1 (en) | Data-fast-distribution method and device | |
US20230152978A1 (en) | Data Access Method and Related Device | |
WO2022007470A1 (zh) | 一种数据传输的方法、芯片和设备 | |
US10212259B2 (en) | Management of transmission control blocks (TCBs) supporting TCP connection requests in multiprocessing environments | |
EP1554644A2 (en) | Method and system for tcp/ip using generic buffers for non-posting tcp applications | |
US20110246667A1 (en) | Processing unit, chip, computing device and method for accelerating data transmission | |
US10305772B2 (en) | Using a single work item to send multiple messages | |
CN116204487A (zh) | 远程数据访问方法及装置 | |
CN113157465B (zh) | 基于指针链表的消息发送方法及装置 | |
US20090157896A1 (en) | Tcp offload engine apparatus and method for system call processing for static file transmission | |
CN109117288B (zh) | 一种低延迟旁路的消息优化方法 | |
WO2022199357A1 (zh) | 数据处理方法及装置、电子设备、计算机可读存储介质 | |
WO2022143774A1 (zh) | 一种数据访问方法及相关设备 | |
CN111404842A (zh) | 数据传输方法、装置及计算机存储介质 | |
WO2015062390A1 (zh) | 虚拟机迁移方法、装置及系统 | |
CN109257227B (zh) | 数据传输中的偶联管理方法、装置及系统 | |
CN115176453A (zh) | 报文缓存方法、内存分配器及报文转发系统 | |
WO2022188807A1 (zh) | 数据传输系统及相关设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |