计算机系统、rdma网卡及数据通信方法

文档序号:195590 发布日期:2021-11-02 浏览:38次 >En<

阅读说明:本技术 计算机系统、rdma网卡及数据通信方法 (Computer system, RDMA network card and data communication method ) 是由 杨航 方兴 李金虎 于 2021-09-28 设计创作,主要内容包括:本申请实施例提供一种计算机系统、RDMA网卡及数据通信方法。其中,计算机系统包括第一RDMA网卡及第一CPU;第一RDMA网卡集成至少一个加速器;基于至少一个API开发的第一应用运行于所述第一CPU中;第一应用调用至少一个API,以将根据数据处理需求所对应的第一加速算子对生成的工作请求,加入工作队列;第一RDMA网卡从工作队列中获取工作请求,调用第一加速算子对指示的加速器处理第一待处理数据,获得第一目标数据及对第一目标数据进行远程访问处理。本申请实施例降低了数据通信延迟。(The embodiment of the application provides a computer system, an RDMA network card and a data communication method. The computer system comprises a first RDMA network card and a first CPU; the first RDMA network card integrates at least one accelerator; a first application developed based on at least one API is run in the first CPU; the first application calls at least one API to add a work request generated by a first accelerator operator corresponding to the data processing requirement into a work queue; the first RDMA network card acquires a work request from the work queue, calls a first acceleration operator to process first to-be-processed data on the indicated accelerator, acquires first target data and carries out remote access processing on the first target data. The embodiment of the application reduces the data communication delay.)

计算机系统、RDMA网卡及数据通信方法

技术领域

本申请实施例涉及计算机技术领域,尤其涉及一种计算机系统、RDMA网卡及数据通信方法。

背景技术

RDMA (Remote Direct Memory Access,远程直接内存访问)是一种直接进行远程内存存取的技术,通信双方可以直接借助主机中的RDMA网卡快速进行数据传输,而不对操作系统造成任何影响,减少CPU(central processing unit,中央处理器)参与数据传输过程的消耗,具有高带宽、低时延及低CPU占用率的特点。在分布式应用、集群场景下广泛使用。

实际应用中,通信双方采用RDMA方式进行数据通信时,往往可能涉及对数据的一些相应数据处理操作,比如数据识别、筛选、排序、加解密等,目前,这部分数据处理操作仍然交由CPU进行处理,RDMA网卡只负责数据传输或接收,因此,仍然存在数据通信延迟的问题。

发明内容

本申请实施例提供一种计算机系统、RDMA网卡及数据通信方法,用以解决现有技术中RDMA(Remote Direct Memory Access,远程直接内存访问)数据通信延时的技术问题。

第一方面,本申请实施例中提供了一种计算机系统,包括第一远程直接内存访问RDMA网卡及第一中央处理器CPU;所述第一RDMA网卡集成至少一个加速器;基于预配置的至少一个应用程序接口API开发的第一应用运行于所述第一CPU中;

所述第一应用,用于调用所述至少一个API,以将根据数据处理需求所对应的第一加速算子对生成的工作请求,加入工作队列;

所述第一RDMA网卡,用于从所述工作队列中获取所述工作请求,确定所述第一加速算子对,调用所述第一加速算子对指示的第一目标加速器处理第一待处理数据,获得第一目标数据,以及对所述第一目标数据进行远程访问处理。

可选地,所述第一应用具体用于调用所述至少一个API,以查询所述第一RDMA网卡支持的加速算子;根据数据处理需求确定第一加速算子对,基于所述第一加速算子对生成工作请求;以及调用所述至少一个API,以将所述工作请求加入工作队列。

可选地,所述工作请求包括数据发送请求或数据写请求;

所述第一RDMA网卡调用所述第一加速算子对指示的第一目标加速器处理第一待处理数据,获得第一目标数据,以及对所述第一目标数据进行远程访问处理包括:从内存获取所述第一待处理数据,调用所述第一加速算子对指示的第一目标加速器处理第一待处理数据,获得第一目标数据,基于所述第一目标数据及所述第一加速算子对生成消息请求,以及将所述消息请求发至目的端;所述目的端用于调用所述第一加速算子对指示的第二目标加速器处理所述第一目标数据,并存储处理结果数据。

可选地,所述工作请求包括数据读取请求;

所述第一RDMA网卡调用所述第一加速算子对指示的第一目标加速器处理第一待处理数据,获得第一目标数据,以及对所述第一目标数据进行远程访问处理包括:基于第一加速算子对,生成消息请求,将所述消息请求发送至目的端,从所述目的端读取第一待处理数据,调用所述第一加速算子对指示的第一目标加速器处理所述第一待处理数据,获得第一目标数据,以及存储或传输所述第一目标数据;所述第一待处理数据为所述目的端基于所述消息请求,将请求读取的数据调用所述第一加速算子对指示的第二目标加速器进行处理获得。

可选地,所述至少一个API包括至少一个资源透传API及至少一个请求处理API;

所述第一应用具体调用相应资源透传API,以获取所述第一RDMA网卡中的加速算子对列表;根据数据处理需求选择第一加速算子对,调用相应资源透出API,以获取所述第一加速算子对所需的参数列表;根据所述第一加速算子对的参数列表,确定所述第一加速算子对的参数数据;基于所述第一加速算子对以及所述参数数据生成工作请求;以及调用相应请求处理API,以将所述工作请求加入工作队列。

可选地,所述至少一个资源透传API包括用于获取所述第一RDMA网卡的加速算子对列表的第一资源透传API,以及从所述第一RDMA网卡中获取任意加速算子对的参数列表的第二资源透传API中的一种或多种;所述至少一个请求处理API包括将基于任意加速算子对请求进行数据传输的工作请求加入工作队列的第一请求处理API,以及将基于任意加速算子对请求进行数据接收的工作请求加入工作队列的第二请求处理API中的一种或多种。

第二方面,本申请实施例提供了一种计算机系统,其中,包括第二RDMA网卡及第二CPU;所述第二RDMA网卡集成至少一个加速器;基于预配置的至少一个API开发的第二应用运行于所述第二CPU中;

所述第二RDMA网卡,用于接收源端发送的消息请求,基于所述消息请求中指定的第一加速算子对,调用第二目标加速器处理第二待处理数据,获得第二目标数据,并对所述第二目标数据进行远程访问处理。

可选地,所述第二应用,用于调用所述至少一个API,以将根据数据处理需求所对应的第二加速算子对生成的数据接收请求加入工作队列;

所述第二RDMA网卡,还用于从所述工作队列中获取所述数据接收请求,基于所述数据接收请求确定第二加速算子对;接收到源端发送的第一目标数据,调用所述第二加速算子对指示的第二目标加速器处理所述第一目标数据,获得处理结果数据,并存储所述处理结果数据。

可选地,所述第二应用,还用于调用所述至少一个API,以将根据数据处理需求所对应的第三加速算子对生成的工作请求,以加入工作队列;

第二RDMA网卡,还用于从所述工作队列中获取所述工作请求,确定所述第三加速算子对,调用所述第三加速算子对指示的第一目标加速器处理第三待处理数据,获得第三目标数据,以及对所述第三目标数据进行远程访问处理。

第三方面,本申请实施例提供了一种RDMA网卡,其中,配置于计算机系统中,包括RDMA网卡单元及至少一个加速器;

所述RDMA网卡单元用于从工作队列中获取工作请求,基于所述工作请求指示的加速算子对,调用对应的第一目标加速器处理第一待处理数据,获得第一目标数据,以及对所述第一目标数据进行远程访问处理;或者,接收源端发送的消息请求,基于所述消息请求中指定的加速算子对,调用对应的第二目标加速器处理第二待处理数据,获得第二目标数据,并对所述第二目标数据进行远程访问处理;

其中,所述工作请求由第一应用基于数据处理需求对应的加速算子对所生成,并调用预配置的至少一个API加入所述工作队列中。

第四方面,本申请实施例提供了一种数据通信方法,其中,应用于第一计算机系统,所述第一计算机系统包括第一RDMA网卡及第一CPU;所述第一RDMA网卡集成至少一个加速器;基于预配置的至少一个API开发的第一应用运行于所述第一CPU中;

所述方法包括:

调用所述至少一个API,以将根据数据处理需求所对应的第一加速算子对生成的工作请求,加入工作队列,以供所述第一RDMA网卡从所述工作队列中获取所述工作请求,调用所述第一加速算子对指示的第一目标加速器处理第一待处理数据获得第一目标数据,以及对所述第一目标数据进行远程访问处理。

第五方面,本申请实施例提供了一种数据通信方法,其中,应用于第一计算机系统中,所述第一计算机系统包括第一RDMA网卡及第一CPU;所述第一RDMA网卡集成至少一个加速器;基于预配置的至少一个API开发的第一应用运行于所述第一CPU中;

所述方法包括:

从工作队列中获取工作请求;

确定所述工作请求指示的目标加速算子对;

调用所述目标加速算子对指示的第一目标加速器处理第一待处理数据获得第一目标数据;

对所述第一目标数据进行远程访问处理。

第六方面,本申请实施例提供了一种数据通信方法,其中,应用于第二计算机系统,所述第二计算机系统包括第二RDMA网卡及第二CPU;所述第二RDMA网卡集成至少一个加速器,基于预配置的至少一个API开发的第二应用运行于所述第二CPU中;

所述方法包括:

接收源端发送的消息请求;

确定所述消息请求中指示的第一加速算子对;

调用所述第一加速算子对指示的第二目标加速器处理第二待处理数据,获得第二目标数据;

对所述第二目标数据进行远程访问处理。

第七方面,本申请实施例提供一种计算机存储介质,存储有计算机程序,所述计算机程序被计算机执行时实现如上述第四方面、第五方面或第六方面所述的数据通信方法。

本申请实施例提供的计算机系统,包括第一RDMA网卡以及第一CPU,第一RDMA网卡中集成至少一个加速器,第一CPU可以运行基于至少一个API开发的第一应用;第一应用调用所述至少一个API以将根据数据处理需求所对应的第一加速算子对生成的工作请求,加入工作队列中,第一RDMA从工作队列中消费工作请求,拿到工作请求之后,可以确定第一加速算子对,从而可以选择第一加速算子对指示的第一目标加速器对第一待处理数据进行处理,获得第一目标数据,之后可以再对第一目标数据进行远程访问处理。本申请实施例中,RDMA网卡集成至少一个加速器,通过预配置的至少一个API在RDMA网卡中将数据处理与网络传输相结合,依赖RDMA网卡的加速处理能力即可以实现数据处理操作,将数据处理操作从CPU中卸载下来,降低了CPU资源消费,实现了在线的数据加速处理,在RDMA方式通信延迟低的基础上,进一步降低了数据通信延迟。

本申请的这些方面或其他方面在以下实施例的描述中会更加简明易懂。

附图说明

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

图1示出了本申请提供的一种数据通信系统一个实施例的结构示意图;

图2示出了本申请实施例在一个实际应用中的数据通信过程示意图;

图3示出了本申请提供的一种计算机系统一个实施例的结构示意图;

图4示出了本申请提供的一种计算机系统又一个实施例的结构示意图;

图5示出了本申请实施例在一个实际应用中的场景交互示意图;

图6示出了本申请提供的一种RDMA网卡的一个实施例的结构示意图;

图7示出了本申请提供的一种数据通信方法一个实施例的流程图;

图8示出了本申请提供的一种数据通信方法又一个实施例的流程图;

图9示出了本申请提供的一种数据通信方法又一个实施例的流程图。

具体实施方式

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。

在本申请的说明书和权利要求书及上述附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如101、102等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。

本申请实施例的技术方案适用于采用RDMA(Remote Direct Memory Access,远程直接内存访问)技术进行数据通信的场景中,如分布式应用或者集群系统之间,借助RDMA技术进行数据通信的场景。本申请实施例提供的RDMA资源可以由云计算平台提供。

为了便于理解本申请技术方案,下面首先对本申请中可能涉及的技术术语进行相应解释说明:

RDMA:一种通信标准,通信双方借助RDMA网卡可以直接从内存存取数据,直接进行数据传输,不需要CPU参与。通信双方可以是指不同计算机系统中的上层应用,也被称为RDMA应用,RDMA应用运行在CPU上。

Verbs:IBTA(InfiniBand Trade Association, InfiniBand行业协会)定义的RDMA应用和RDMA网卡之间的传输接口层(software transport interface),定义了访问RDMA网卡的执行的动作。

Verbs API(Application Programming Interface,应用程序接口):由OFA(OpenFabrics Alliance,一个基于开源的组织)定义的使用RDMA服务的基本API,其是操作RDMA网卡的函数接口。RDMA应用基于这组Verbs API的编写,或者在Verbs API封装的一层接口的各种中间件编写。

Channel-IO;通信双方进行数据通信时创建的数据通道。

WR(Work Request,工作请求):描述了RDMA应用与对端通信的相关内容,RDMA应用于对端存在数据通信需求时,会创建工作请求。

WQ(Work Queue,工作队列):包括SQ(Send Queue,发送队列)、RQ(Receive Queue,接收队列)等,RDMA提供了基于队列的点对点通信,RDMA应用创建的工作请求,工作请求会被加入某个工作队列中,转换为WQE(Work Queue Element,工作队列元素),WQE指向一块存储数据的内存buffer(缓存)。RDMA网卡从WQ中消费WQE,也即获取WR执行,并从WQE指向的buffer存储对端发送的数据或拿取数据之后发送至对端。

CQ(Complete Queue,完成队列):WR执行完成,RDMA网卡会生成WC(workComplete,工作完成)加入CQ中,RDMA应用从CQ中消费WC,确定工作请求的执行结果。

send/receive(发送/接收):RDMA提供的一种数据传输模式,为双边操作,需要目的端(通信接收方)应用感知参与才能完成数据收发。在该数据传输模式下,WR可以是指数据send请求或数据receive请求。

write(写):RDMA提供的一种数据传输模式,为单边操作,只需源端(通信发起方)应用明确源地址和目的地址,目的端应用不必感知此次通信,本质是将源端内存中的数据推送至目的端内存里。在该数据传输模式下,WR可以是指数据write请求。

read(读取):RDMA提供的一种数据传输模式,单边操作,只需要源端的应用明确源地址和目的地址,目的端应用不必感知此次通信,本质是将目的端内存中数据拉回本端内存里。在该数据传输模式下,WR可以是指数据read请求。

分布式应用:应用程序分布在不同计算机系统上,通过网络来共同完成一项任务的工作方式,包括不同的运行于分离的运行环境下的组件。

在传统的RDMA数据通信方式中,若涉及数据处理操作, RDMA网卡仍然需要将数据交由CPU执行,再将CPU处理之后的数据进行远程访问处理,如传输至对端或者保存至本端内存里等。由于需要CPU参与,不仅需要消耗CPU资源,也会造成数据通信延迟。为了降低数据通信延迟,发明人经过一系列研究提出了本申请的技术方案,RDMA网卡集成加速器,通过预配置的至少一个API实现了在RDMA数据通信过程中,由RDMA网卡集成的加速器实现数据加速处理,将数据处理操作与数据通信相结合,使得在数据通信过程中,实现了对CPU负载的卸载,无需CPU参与即可以实现数据处理操作,在RDMA方式通信延迟低的基础上,进一步降低了数据通信延迟。

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

本申请实施例的技术方案可以应用于如图1所示的数据通信系统中,该数据通信系数可以包括第一计算机系统10以及第二计算机系统20。本实施例主要以第一计算机系统10作为源端设备,第二计算机系统20作为目的端设备对本申请技术方案进行介绍。

其中,第一计算机系统10可以包括第一RDMA网卡101及第一CPU102;其中,第一RDMA网卡(英文:RDMA Network Interface Controller,简称RNIC)101可以集成至少一个加速器30(图中仅示例性绘制了一个加速器);第一CPU102运行有基于至少一个API开发的第一应用103。其中,至少一个API可以预先配置在API函数库中。

第二计算机系统20可以包括第二RDMA网卡201以及第二CPU202;其中,第二RDMA网卡201可以集成至少一个加速器30(图中仅示例性绘制了一个加速器);第二CPU202运行有基于至少一个API开发的第二应用203。其中,该至少一个API可以预先配置在API函数库中。

第一计算机系统10或第二计算机系统20可以为物理设备或者云计算平台提供的弹性计算系统,此时,上述RDMA网卡、CPU等即可以是指从云计算平台提供的基础服务器资源。

其中,第一计算机系统10或第二计算机系统20中,RDMA网卡以及CPU可以分别部署在不同的计算机设备中。

当然,本领域技术人员可以理解的是,计算机设备必然还可以包括实现必要功能操作的一些其它部件,如内存、总线等,本申请对此不进行过多赘述。

其中,API函数库用于提供应用操作RDMA网卡的API,其除了包括原始API之外,如Verbs API,还包括新增加的API,也即上述的至少一个API。

加速器30可以提供加速处理能力,本申请实施例中,利用加速算子表示加速器30可以提供的加速处理能力,加速处理能力例如可以包括数据解压缩、数据加解密、图像识别、数据排序、数据过滤等数据处理操作,本申请对此不进行具体限定。

可选地,加速器30可以具体提供硬件加速能力,利用硬件性能执行数据处理操作,由于硬件具有快速处理特性,相较于CPU的软件工作,可以实现数据的高效率处理,以进一步降低数据通信延迟。

实际应用中,加速器30例如可以采用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)以及专用处理器等实现,本申请对此不进行具体限制。

其中,结合实际需求,第一RDMA网卡101或第二RDMA网卡201可以集成一个或多个加速器,并可以根据实际情况,新增加速器等,每个加速器可以提供至少一种加速算子。第一RDMA网卡101或第二RDMA网卡201中可以由RDMA网卡单元提供网卡功能等。

第一应用103以及第二应用203可以是独立的两个应用程序,或者也可以是分布式应用中的两个分离的组件等。

采用RDMA技术,第一应用103与第二应用203即可以直接通过RDMA网卡进行数据传输。

本实施例中,第一应用103可以调用该至少一个API,以将根据数据处理需求所对应的第一加速算子对生成的工作请求,加入工作队列中;

可选地,第一应用可以首先调用至少一个API,以查询第一RDMA网卡支持的加速算子,也即可以是由新增的至少一个API中的一个或多个API从第二RDMA网卡中查询其所支持的加速算子,由新增的至少一个API将第一RDMA网卡支持的加速算子透传给上层应用。第一应用可以根据数据处理需求确定第一加速算子对,基于第一加速算子对生成工作请求,之后,可以再调用至少一个API,以将工作请求加入工作队列。通过至少一个API从第一RDMA网卡查询所支持的加速算子,可以方便确定第一RDMA网卡支持的加速算子,第一RDMA网卡可以结合实际需求集成不同加速器,也可以新增加速器,第一应用只需通过该至少一个API即可以查询获得第一RDMA网卡所支持的加速算子。

当然,作为其它可选方式,第一应用也可以根据预存储信息,确定第一RDMA网卡支持的加速算子,第一应用可以基于第一RDMA网卡支持的加速算子来开发获得,可以预先保存第一RDMA网卡支持的加速算子的相关信息。

其中,第一RDMA网卡101上电启动之后,可以确定其当前集成的至少一个加速器支持的加速算子,第一应用启动之后,即可以调用至少一个API从第一RDMA网卡中获取其支持的加速算子。

第一加速算子对中可以包括源端和目的端分别采用的加速算子,例如数据加解密时,源端采用加密算子,目的端采用解密算子,加密算子与解密算子即构成加速算子对;数据解压缩时,源端采用压缩算子,目的端采用解压缩算子,压缩算子与解压缩算子即构成加速算子对。当然,第一加速算子对中的源端或目的端采用的加速算子可以为空,从而可以根据数据处理需求,可以只对源端或者目的端进行数据加速处理。

可选地,在某些情况下,可以由第一RDMA网卡生成加速算子对列表。该加速算子对列表包含第一RDMA网卡所支持的加速算子对的标识信息等;每个加速算子对中包含源端和目的端分别采用的加速算子。

该工作请求根据不同的数据传输模式,可以是指数据send请求、数据write请求、或者数据read请求等。基于第一加速算子对生成的工作请求,可以调用该至少一个API将工作请求放入指定的工作队列中。工作请求中可以包括第一加速算子对的标识信息等。

第一RDMA网卡101,可以用于从工作队列中获取工作请求,确定第一加速算子对,调用第一加速算子对指示的第一目标加速器处理第一待处理数据,获得第一目标数据,以及对第一目标数据进行远程访问处理。

第一RDMA网卡101可以消费工作队列中的工作请求,从工作队列中拿到该工作请求之后,可以基于工作请求中的第一加速算子对的标识信息,确定第一加速算子对,并调用第一加速算子对指示的第一目标加速器处理第一待处理数据。

第一目标加速器即可以是指源端采用的加速算子所需使用的加速器。

其中,远程访问处理可以是指与RDMA相关的处理。

比如在send/receive模式下,第一待处理数据可以是指第一应用指定内存中的数据,需要经过数据处理之后发送至目的端,第一目标数据即为发送至目的端的数据,对第一目标数据的远程访问处理也即具体是发送至第一目标数据至目的端。

在write模式下,第一待处理数据可以是指第一应用指定内存中的数据,需要经过数据处理之后推送至目的端,第一目标数据即为推送至目的端的数据,对第一目标数据的远程访问处理也即具体是推送第一目标数据至目的端。

在read模式,第一待处理数据可以是指从目的端拉回的数据,需要经过数据处理之后再进行存储或读取。对第一目标数据的远程访问处理也即可以是指对第一目标数据进行存储或读取等。

其中,第一RDMA网卡101具体是与目的端的第二RDMA网卡201基于消息进行交互。因此,本实施例中,第二RDMA网卡201,可以用于接收源端发送的消息请求,基于消息请求中指定的第一加速算子对,调用第二目标加速器处理第二待处理数据,获得第二目标数据,并对第二目标数据进行远程访问处理。

第二目标加速器可以是指目的端采用的加速算子所需使用的加速器。

在不同数据传输模式下,消息请求中的内容也不同。因此,作为一种可选方式,工作请求包括数据send请求或数据write请求时:

第一RDMA网卡101调用第一加速算子对所对应的第一目标加速器处理第一待处理数据,获得第一目标数据,以及对第一目标数据进行远程访问处理可以具体是:从内存获取第一待处理数据,调用第一加速算子对指示的第一目标加速器处理第一待处理数据,获得第一目标数据,基于第一目标数据及第一加速算子对生成消息请求,以及将消息请求发至目的端。

其中,该消息请求可以具体是send请求或write请求,该消息请求中可以包括该第一目标数据以及第一加速算子对的相关信息,如目的端采用的加速算子的标识信息以及参数信息等,此外必然还可以包括通信双方在send或write模式下一些必要的消息内容,如寻址信息等,本申请对此不进行过多赘述。

目的端可以基于消息请求,调用第一加速算子对指示的第二目标加速器,处理第一目标数据,并存储处理结果数据。

可选地,具体可以是将消息请求发送至第二计算机系统20的第二RDMA网卡201中,第二RDMA网卡201可以具体调用第一加速算子对指示的第二目标加速器,处理第一目标数据,并存储处理结果数据。也即在该情况下,第一目标数据即作为第二待处理数据,第二目标数据即为处理结果数据。

作为又一种可选方式,工作请求包括数据read请求时:

第一RDMA网卡101调用第一加速算子对指示的第一目标加速器处理第一待处理数据,获得第一目标数据,以及对第一目标数据进行远程访问处理可以具体是:基于第一加速算子对,生成消息请求,将消息请求发送至目的端,从目的端读取第一待处理数据,调用第一加速算子对指示的第一目标加速器处理第一待处理数据,获得第一目标数据,以及存储或传输第一目标数据。

第一待处理数据可以是目的端基于消息请求,将请求读取的数据调用第一加速算子对指示的第二目标加速器进行处理获得。

该消息请求即具体是read请求,其可以包含第一加速算子对的相关信息,如目的端采用的加速算子的标识信息及参数信息等,此外必然还可以包括通信双方在read模式下一些必要的消息内容,如寻址信息等,本申请对此不进行过多赘述。

可选地,消息请求具体发送至第二计算机系统20中的第二RDMA网卡201,第一待处理数据可以是第二RDMA网卡201可以基于消息请求,将请求读取的数据调用第一加速算子对指示的第二目标加速器进行处理获得。也即在该情况下,第二待处理数据即为基于消息请求所读取的数据,第二目标数据即作为第一待处理数据。

此外,作为其它实现方式,在send/receive模式下为双边操作,目的端也会创建工作请求以及工作队列等,目的端也可以根据数据处理需求确定所需的加速算子对而进行数据处理,因此,在某些实施例中,第二应用203,可以用于调用至少一个API,以将根据数据处理需求所对应的第二加速算子对生产的工作请求,加入工作队列中。可选地,第二应用可以是调用该至少一个API,以查询定第二RDMA网卡201支持的加速算子,也即可以是由至少一个API中的一个或多个API从第二RDMA网卡中查询其所支持的加速算子。

第二应用可以根据数据处理需求确定第二加速算子对,基于第二加速算子对生成数据接收请求,之后,可以再调用该至少一个API,以将数据接收请求加入工作队列;

第二RDMA网卡201,还用于从工作队列中获取数据接收请求,基于数据接收请求第二加速算子对;接收到源端发送的第一目标数据,调用第二加速算子对指示的第二目标加速器处理第一目标数据,获得处理结果数据,并存储处理结果数据。

为了清楚理解本申请实施例的技术方案在三种数据传输模式下的数据通信方式,如图2所示的场景交互示意图中,分别示出了在三种数据传输模式下的数据通信的大致过程,在send/receive模式下,第一计算机系统中的第一应用会在第一RDMA网卡中创建WQ(在该模式下,也即为SQ),第一应用生成的WR加入WQ中,转化为WQE,每个WQE指向源端内存中一块buffer。第二计算机系统中的第二应用会在第二RDMA网卡中创建WQ(在该模式下,也即为RQ),第二应用也会生成WR,并加入WQ中,转化为WQE,每个WQE指向目的端内存中的一块buffer。

第一RDMA网卡从SQ中获取WQE,也即WR,并执行,从WR指向的buffer中拿取第一待处理数据,并根据第一加速算子对确定源端采用的加速算子,调用支持该加速算子的第一目标加速器对第一待处理数据进行处理,生成第一目标数据,可以基于第一目标数据,向第二RDMA网卡发送消息请求,也即send请求。

第二RDMA网卡从RQ中获取WQE,也即WR,并执行,接收到第一RDMA网卡的消息请求,确定第一目标数据之后,可以根据消息请求中指示的第一加速算子对中的加速算子或者WR中指示的第二加速算子对中的加速算子,调用第二目标加速器对第一目标数据进行加速处理,再将处理结果数据存储至WR指向的buffer中。

在write模式下,第一应用在第一RDMA网卡中创建WQ,第一应用生成的WR加入WQ中,转化为WQE,每个WQE指向源端内存中一块buffer。

第一RDMA网卡从WQ中获取WQE,也即WR,并执行,从WR指向的buffer中拿取第一待处理数据,并根据第一加速算子对确定源端采用的加速算子,调用支持该加速算子的第一目标加速器对第一待处理数据进行处理,生成第一目标数据,可以基于第一目标数据,向第二RDMA网卡发送消息请求,也即write请求。第二RDMA网卡接收到第一目标数据之后,若消息请求中指示了加速算子,可以调用对应的第二目标加速器对第一目标数据进行加速处理,再将处理结果数据存储至目的端buffer。

在read模式下,第一应用在第一RDMA网卡中创建WQ,第一应用生成的WR加入WQ中,转化为WQE,每个WQE指向源端内存中一块buffer。

第一RDMA网卡,从WQ中获取WQE,也即WR,并执行,根据第一加速算子对生成消息请求,也即read请求,将消息请求发送至第二RDMA网卡。第二RDMA网卡,根据消息请求指示的加速算子调用对应的第二目标加速器对请求读取的数据进行加速处理,获得第一待处理数据,将第一待处理数据以消息请求形式反馈给第一RDMA网卡,第一RDMA网卡可以根据第一加速算子对指示的加速算子,调用对应的第一目标加速器对第二待处理数据进行加速处理,获得第一目标数据,再将第一目标数据存储至buffer中。

从上述数据通信过程可知,将数据处理操作从CPU卸载至RDMA网卡执行,无需CPU参与,进一步降低了数据通信延迟。

此外,由前文描述可知,第二计算机系统为目的端设备,当然其也可以作为源端设备。其作为源端设备时,第二应用与第二RDMA网卡,可以实现第一应用与第一RDMA网卡的相同功能操作,比如:

第二应用,还可以调用该至少一个API,以将根据数据处理需求所对应的第三加速算子对生成的工作请求,加入工作队列中;可选地,第二应用可以具体是调用该至少一个API,以查询第二RDMA网卡支持的加速算子;第二应用可以根据数据处理需求确定第三加速算子对,基于第三加速算子对生成工作请求,之后,可以再调用至少一个API将工作请求加入工作队列。

第二RDMA网卡,还可以用于从工作队列中获取工作请求,确定第三加速算子对,调用第三加速算子对指示的第一目标加速器处理第三待处理数据,获得第三目标数据,以及对第三目标数据进行远程访问处理。

具体实现可以详见对第一应用与第一RDMA网卡的相关描述信息,此处也将不再赘述。本文中所使用的第一、第二、第三、第四等描述信息,也仅是为了描述上方便区分同一个内容,如第一加速算子对、第二加速算子对和第三加速算子对中的第一、第二、第三只是为了区分在不同情况下所指定的加速算子对,并不代表具有其它含义。为了不引入过多概念,本文中的第一目标加速器可以理解为源端采用的加速算子所对应的加速器,也即可以该加速算子对应数据处理能力的加速器,第二目标加速器可以理解为目的端采用的加速算子所对应的加速器。

上述中对第三待处理数据的处理操作可以参见对第一待处理数据的处理操作,对第三目标数据的处理操作可以参见对第一目标数据的处理操作,此处将不再赘述。

其中,第一计算机系统为源端设备,当然其也可以作为目的端设备,其作为目的端设备时,第一应用与第一RDMA网卡,可以实现第二应用与第二RDMA网卡的相同功能操作,比如,第一RDMA网卡还用于接收其对应源端发送的消息请求,基于消息请求中指定的第四加速算子对,调用指示的第二目标加速器处理第四待处理数据,获得第四目标数据,并对第四目标数据进行远程访问处理。

上述中对第四待处理数据的处理操作可以参见对第二待处理数据的处理操作,对第四目标数据的处理操作可以参见对第二目标数据的处理操作,此处将不再赘述。

本申请实施例中,RDMA网卡集成加速器,通过预配置的至少一个API,实现了在RDMA数据通信过程中,由RDMA网卡集成的加速器实现数据加速处理,将数据处理操作与数据通信相结合,使得在数据通信过程中,实现了对CPU负载的卸载,无需CPU参与即可以实现数据处理操作,进一步降低了数据通信延时。

结合前文描述可知,本申请实施例中在API函数库中新增加了至少一个API。可选地,该至少一个API可以包括至少一个资源透传API及至少一个请求处理API。

第一应用具体可以是调用相应资源透传API,获取第一RDMA网卡中的加速算子对列表;根据数据处理需求选择第一加速算子对,调用相应资源透出API,获取第一加速算子对所需的参数列表,根据第一加速算子对的参数列表,确定第一加速算子对的参数数据;基于第一加速算子对以及参数数据生成工作请求,以及调用相应请求处理API将工作请求加入工作队列。

在一种实现方式中,至少一个资源透传API可以包括用于获取第一RDMA网卡中加速算子对列表的第一资源透传API,以及从第一RDMA网卡中获取任意加速算子对的参数列表的第二资源透传API中的一种或多种;

至少一个请求处理API可以包括将基于任意加速算子对请求进行数据传输的工作请求加入工作队列的第一请求处理API,以及将基于任意加速算子对请求进行数据接收的工作请求加入工作队列的第二请求处理API中的一种或多种。

其中,数据传输可以包括send、read或write,数据接收也即receive

为了便于理解,下面举例说明第一资源透传API、第二资源透传API、第一请求处理API以及第二请求处理API的函数说明文档,当然,本申请并不仅限制于此,函数的输出值及返回值等也不局限于下述的描述信息。应用开发者可以基于函数说明文档了解新增加的目标API,并据此开发应用。

A:ibv_get_device_acc_pair_list,表示第一资源透传API,用于获取指定的RDMA网卡中的加速算子对列表。

描述:获取指定的RDMA网卡所支持的加速算子对列表,执行成功时,返回新分配的该RDMA网卡的加速算子对列表指针,应用可以根据RDMA网卡所支持的加速算子对列表来卸载CPU上相关负载,并负责在程序结束后释放该列表所占用的内存。

输入:设备指针或设备上下文,用于唯一确定所访问的RDMA网卡。

输出:新创建的RDMA网卡的加速算子对列表,列表中可以包含加速算子对的表示信息、参数类型等基本信息,每个加速算子对可以包含在源端和目的端分别采用的加速算子。

返回值:success(成功)或者failure(失败)。

B:ibv_get_device_acc_pair_parameter,表示第二资源透传API,用于获取指定的RDMA网卡中的某个加速算子对的参数列表。

描述:获取指定的RDMA网卡中某个加速算子对的参数列表,执行成功时,返回新分配的该加速算子对所对应的参数列表指针,应用可以根据该参数列表来为获取加速算子对的参数数据,并负责在程序结束后释放该空间。

输入:设备指针或设备上下文用于唯一确定所访问的RDMA网卡、加速算子对的标识信息等。

输出:新分配的该加速算子对所对应的参数列表指针,参数列表中可以包含参数长度、参数个数以及参数类型等基本信息,参数列表包含源端和目的端分别所需的参数信息。

返回值:success 或者failure。

C:ibv_post_send_acc,表示第一请求处理API,用于指定加速算子对的数据传输,包括send、read或write。

描述:将工作请求转换为WQ中的WQE,用于初始化包括write以及read在内的发送操作。

输入:指定所使用的WQ、工作请求,工作请求包括本地内存列表、指定的加速算子对及其参数数据、目的端的内存地址等信息

输出:RDMA网卡拒绝接收的第一个请求指针。

返回值:success 或者failure

D:ibv_post_receive_acc:指定加速算子对的数据接收操作,也即receive操作。

描述:将工作请求转换为WQ中的WQE,用于初始化Receive的接收操作。

输入:指定所使用的WQ、工作请求,工作请求包括本地内存列表列表、指定的加速算子对及其参数等信息。

输出:硬件拒绝接收的第一个请求指针。

返回值:success 或者failure。

本申请实施例还提供了一种计算机系统,如图3中所示,该计算机系统具体可以实现为图1中所示的第一计算机系统,其可以包括第一RDMA网卡101及第一CPU102;第一RDMA网卡101集成至少一个加速器30;第一CPU102中配置有基于API函数库开发的第一应用103;API函数库包括预配置的至少一个API;

第一应用103用于调用至少一个API,以将根据数据处理需求所对应的第一加速算子对生成的工作请求,加入工作队列;可选地,第一应用可以首先调用至少一个API,查询第一RDMA网卡支持的加速算子,第一应用根可以据数据处理需求确定第一加速算子对,基于第一加速算子对生成工作请求,之后,可以再调用至少一个API将工作请求加入工作队列;

第一RDMA网卡101,用于从工作队列中获取工作请求,确定第一加速算子对,调用第一加速算子对指示的第一目标加速器处理第一待处理数据,获得第一目标数据,以及对第一目标数据进行远程访问处理。

图3所示计算机系统中的具体结构实现以及功能实现,可以详见图1中所示的第一计算机系统的相关描述,此处将不再重复赘述。

此外,本申请实施例还提供一种计算机系统,如图4中所示,该计算机系统具体可以实现为图1中所示的第二计算机系统,其可以包括第二RDMA网卡201及第二CPU202;第二RDMA网卡201集成至少一个加速器30,第二CPU202配置有基于API函数库开发的第二应用203;API函数库包括预配置的至少一个API;

第二RDMA网卡201用于接收源端发送的消息请求,基于消息请求中指定的第一加速算子对,调用第二目标加速器处理第二待处理数据,获得第二目标数据,并对第二目标数据进行远程访问处理。

在某些实施例中,在send/receive模式下,第二应用,还可以调用至少一个API,以将根据数据处理需求所对应的第二加速算子对生成的数据接收请求,加入工作队列。可选地,第二应用,可以具体首先调用至少一个API,以查询确定第二RDMA网卡支持的加速算子,第二应用可以根据数据处理需求确定第二加速算子对,基于第二加速算子对生成数据接收请求,之后,可以再调用至少一个API将数据接收请求加入工作队列。

第二RDMA网卡,还可以用于从工作队列中获取数据接收请求,基于数据接收请求确定第二加速算子对;接收到源端发送的第一目标数据, 调用第二加速算子对指示的第二目标加速器处理第一目标数据,获得处理结果数据,并存储处理结果数据。

图4所示计算机系统中的具体结构实现以及功能实现,可以详见图1中所示的第二计算机系统的相关描述,此处将不再重复赘述。

图3及图4所示的计算机系统从不同功能实现角度对数据通信过程进行介绍,图3所示的计算机系统也可以作为目的端设备,图4所示的计算机系统也可以作为源端设备。

因此,在某些实施例中,第二应用,还可以用于,调用至少一个API,以将根据数据处理需求所对应的第二加速算子对生成的数据接收请求,加入工作队列;可选地,第二应用,可以具体首先调用至少一个API,以查询第二RDMA网卡支持的加速算子,第二应用可以根据数据处理需求确定第二加速算子对,基于第二加速算子对生成数据接收请求,之后,第二应用可以调用至少一个API将数据接收请求加入工作队列;

第二RDMA网卡,还用于从工作队列中获取数据接收请求,基于数据接收请求确定第二加速算子对;接收到源端发送的第一目标数据,调用第二加速算子对指示的第二目标加速器处理第一目标数据,获得处理结果数据,并存储处理结果数据。

在某些实施例中,第二应用,还可调用至少一个API,以将根据数据处理需求所对应的第三加速算子对生成的工作请求,加入工作队列;可选地,第二应用,可以具体是首先调用至少一个API,查询第二RDMA网卡支持的加速算子,第二应用可以根据数据处理需求确定第三加速算子对,基于第三加速算子对生成工作请求,之后,可以再调用至少一个API将工作请求加入工作队列;

第二RDMA网卡,还用于从工作队列中获取工作请求,确定第三加速算子对,调用第三加速算子对指示的第一目标加速器处理第三待处理数据,获得第三目标数据,以及对第三目标数据进行远程访问处理。

如图5所示的一种场景交互示意图中,计算机系统50,作为源端设备时,其可以与目的端60采用RDMA方式进行数据通信,作为目的端设备时,其可以与源端70采用RDMA方式进行数据通信。该计算机系统50中的RDMA网卡501中集成至少一个加速器30,与源端70或目的端60进行数据通信时,可以选择RDMA网卡中的加速器对数据进行相应的数据处理操作,从而这部分数据处理操作无需交由CPU502执行,不消耗CPU资源,且由于CPU执行操作较为复杂,从CPU中将数据处理操作卸载至RDMA网卡执行,可以进一步降低数据通信延迟。

此外,参见图6中所示,本申请实施例,还提供了一种RDMA网卡,可以包括RDMA网卡单元601及至少一个加速器602;

RDMA网卡单元601用于从工作队列中获取工作请求,基于工作请求指示的加速算子对,调用对应的第一目标加速器处理第一待处理数据,获得第一目标数据,以及对第一目标数据进行远程访问处理;或者,接收源端发送的消息请求,基于消息请求中指定的加速算子对,调用对应的第二目标加速器处理第二待处理数据,获得第二目标数据,并对第二目标数据进行远程访问处理。

其中,该工作请求由第一应用根据数据处理需求对应的加速算子对所生成,并基于预配置的至少一个API加入所述工作队列中。其中,第一应用基于该至少一个API开发获得,第一应用运行于CPU中。

其中,RDMA网卡的具体执行操作可以详见前文相应实施例中描述的第一RDMA网卡以及第二RDMA网卡所执行的操作,此处将不再重复赘述。RDMA网卡单元也即可以是指实现RDMA网卡相应功能的硬件,实际应用中,其具体可以是具备支持RDMA的网卡。

此外,本申请实施例还提供了一种数据通信方法,参见图7中所示,本实施例技术方案可以应用于第一计算机系统中,第一计算机系统可以包括第一RDMA网卡及第一CPU;第一RDMA网卡集成至少一个加速器;第一CPU中运行有基于至少一个API开发的第一应用;第一计算机系统的具体实现可以详见前文图1以及图3所示实施例中所述,本实施例的技术方案可以具体由第一应用执行,第一应用可以调用至少一个API,以将根据数据处理需求所对应的第一加速算子对生成的工作请求,加入工作队列,可选地,该方法可以包括以下几个步骤:

701:确定第一RDMA网卡支持的加速算子。

可选地,可以是调用该至少一个API,以查询第一RDMA网卡支持的加速算子。

702:根据数据处理需求确定第一加速算子对。

703:基于第一加速算子对,生成工作请求。

704;调用至少一个API,以将工作请求加入工作队列,由第一RDMA网卡从工作队列中获取工作请求,调用第一加速算子对指示的第一目标加速器处理第一待处理数据获得第一目标数据,以及对第一目标数据进行远程访问处理。

本申请实施例还提供了一种数据通信方法,参见图8中所示,本实施例技术方案可以应用于第一计算机系统中,第一计算机系统可以包括第一RDMA网卡及第一CPU;第一RDMA网卡集成至少一个加速器;第一CPU中运行有基于至少一个API开发的第一应用;第一计算机系统的具体实现可以详见前文图1以及图3所示实施例中所述,本实施例的技术方案可以具体由第一RDMA网卡执行,该方法可以包括以下几个步骤:

801:从工作队列中获取工作请求。

802:确定工作请求指示的第一加速算子对。

803:调用第一加速算子对指示的第一目标加速器处理第一待处理数据获得第一目标数据。

804:对第一目标数据进行远程访问处理。

本申请实施例还提供了一种数据通信方法,参见图9中所示,本实施例的技术方案可以应用于第二计算机系统中,第二计算机系统可以包括第二RDMA网卡及第二CPU;第二RDMA网卡集成至少一个加速器,第二CPU运行有基于至少一个API开发的第二应用;第二计算机系统的具体实现可以详见前文图1以及图4所示实施例中所述,本实施例的技术方案可以具体由第二RDMA网卡执行,该方法可以包括以下几个步骤:

901:接收源端发送的消息请求。

902:确定消息请求中指示的第一加速算子对。

903:调用第一加速算子对指示的第二目标加速器处理第二待处理数据,获得第二目标数据。

904:对第二目标数据进行远程访问处理。

对于上述各个实施例中的数据通信方法所涉及的各个操作,已经在上文的相关设备的模块、单元执行操作的具体方式中进行了详细描述,此处将不做详细阐述说明。

此外,本申请实施例还提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被计算机执行时可以实现上述图7、图8或图9任一实施例所述的数据通信方法。

采用本申请实施例的技术方法,可以通过新增的API可以将RDMA网卡的支持的加速算子透传给上层应用,在RDMA网卡中将数据处理与网络传输相结合,实现了在线的数据加速处理,在RDMA方式通信延迟低的基础上,进一步降低了数据通信延迟。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

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

24页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种工单质检方法、系统及服务器

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!