CN115037783B - 数据传输方法及装置 - Google Patents

数据传输方法及装置 Download PDF

Info

Publication number
CN115037783B
CN115037783B CN202210557119.3A CN202210557119A CN115037783B CN 115037783 B CN115037783 B CN 115037783B CN 202210557119 A CN202210557119 A CN 202210557119A CN 115037783 B CN115037783 B CN 115037783B
Authority
CN
China
Prior art keywords
socket
remote
rdma request
network card
rdma
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
Application number
CN202210557119.3A
Other languages
English (en)
Other versions
CN115037783A (zh
Inventor
马腾
宋卓
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba China Co Ltd
Original Assignee
Alibaba China Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Alibaba China Co Ltd filed Critical Alibaba China Co Ltd
Priority to CN202210557119.3A priority Critical patent/CN115037783B/zh
Publication of CN115037783A publication Critical patent/CN115037783A/zh
Application granted granted Critical
Publication of CN115037783B publication Critical patent/CN115037783B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/141Setup of application sessions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • H04L69/162Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms

Abstract

本说明书一个或多个实施例提供一种数据传输方法及装置,应用于非统一内存访问NUMA系统中的第一socket;NUMA系统包括至少一个socket,以及至少一个支持远程直接内存访问RDMA的网卡;socket包括至少一个中央处理器CPU;网卡包括至少一个网卡端口;各socket分别绑定了各网卡端口;该方法包括:获取RDMA请求;其中,RDMA请求用于访问与远程socket对应的远程内存;远程socket为其他NUMA系统中的socket;确定第一socket与远程socket是否通过所绑定的网卡端口建立了连接;如果第一socket与远程socket未建立连接,确定NUMA系统中与远程socket建立了连接的第二socket,并将RDMA请求发送给第二socket,以使第二socket将RDMA请求发送给远程socket,并将远程socket响应于RDMA请求返回的数据发送给第一socket。

Description

数据传输方法及装置
技术领域
本说明书一个或多个实施例涉及计算机技术领域,尤其涉及一种数据传输方法及装置。
背景技术
现如今的数据中心中广泛部署了采用NUMA(Non Uniform Memory Access,非统一内存访问)架构的系统。通常,可以为各NUMA系统配备至少一个支持RDMA(Remote DirectMemory Access,远程直接内存访问)的网卡,以在不同的NUMA系统之间进行基于RDMA的数据传输。RDMA是一种直接存储器访问技术,可以将数据直接从一台计算机的内存传输到另一台计算机的内存,而无需双方操作系统的介入,由此可以实现高通量、低延时的数据传输。
发明内容
本说明书一个或多个实施例提供技术方案如下:
本说明书提供一种数据传输方法,所述方法应用于非统一内存访问NUMA系统中的第一socket;所述NUMA系统包括至少一个socket,以及至少一个支持远程直接内存访问RDMA的网卡;所述socket包括至少一个中央处理器CPU;所述网卡包括至少一个网卡端口;各socket分别绑定了各网卡端口;所述方法包括:
获取RDMA请求;其中,所述RDMA请求用于访问与远程socket对应的远程内存;所述远程socket为其他NUMA系统中的socket;
确定所述第一socket与所述远程socket是否通过所绑定的网卡端口建立了连接;
如果所述第一socket与所述远程socket未建立连接,确定所述NUMA系统中与所述远程socket建立了连接的第二socket,并将所述RDMA请求发送给所述第二socket,以使所述第二socket将所述RDMA请求发送给所述远程socket,并将所述远程socket响应于所述RDMA请求返回的数据发送给所述第一socket。
本说明书还提供一种数据传输装置,所述装置应用于非统一内存访问NUMA系统中的第一socket;所述NUMA系统包括至少一个socket,以及至少一个支持远程直接内存访问RDMA的网卡;所述socket包括至少一个中央处理器CPU;所述网卡包括至少一个网卡端口;各socket分别绑定了各网卡端口;所述装置包括:
获取模块,用于获取RDMA请求;其中,所述RDMA请求用于访问与远程socket对应的远程内存;所述远程socket为其他NUMA系统中的socket;
确定模块,用于确定所述第一socket与所述远程socket是否通过所绑定的网卡端口建立了连接;
第一发送模块,用于在所述第一socket与所述远程socket未建立连接时,确定所述NUMA系统中与所述远程socket建立了连接的第二socket,并将所述RDMA请求发送给所述第二socket,以使所述第二socket将所述RDMA请求发送给所述远程socket,并将所述远程socket响应于所述RDMA请求返回的数据发送给所述第一socket。
本说明书还提供一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如上述任一项所述方法的步骤。
本说明书还提供一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如上述任一项所述方法的步骤。
在上述技术方案中,对于包括至少一个socket,以及至少一个支持RDMA的网卡的NUMA系统而言,其中的socket可以包括至少一个CPU,支持RDMA的网卡可以包括至少一个网卡端口,各socket可以分别绑定各网卡端口;该NUMA系统中的第一socket可以在获取到用于访问与其他NUMA系统中的远程socket对应的远程内存的RDMA请求的情况下,先确定该第一socket与该远程socket是否通过所绑定的网卡端口建立了连接,如果未建立连接,则可以进一步确定该NUMA系统中与该远程socket建立了连接的第二socket,并将该RDMA请求发送给该第二socket,由该第二socket将该RDMA请求发送给该远程socket,并将该远程socket响应于该RDMA请求返回的数据发送给该第一socket。
采用上述方式,不同的NUMA系统中的所有socket无需维持全连接的状态,即可保证不同的NUMA系统中任意两个socket之间都可以进行数据交互,连接的数量得以减少,因此可以保证数据传输的性能。
附图说明
图1是本说明书一示例性实施例示出的一种数据传输系统的硬件架构图。
图2是相关技术中不同的NUMA系统之间的数据传输的示意图。
图3是本说明书一示例性实施例示出的一种数据传输方法的流程图。
图4是本说明书一示例性实施例示出的另一种数据传输方法的流程图。
图5是本说明书一示例性实施例示出的另一种数据传输方法的流程图。
图6是本说明书一示例性实施例示出的不同的NUMA系统之间的数据传输的示意图。
图7是本说明书一示例性实施例示出的一种数据传输装置所在电子设备的硬件结构图。
图8是本说明书一示例性实施例示出的一种数据传输装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
对于一个NUMA系统而言,其通常可以包括一台计算设备或多台计算设备。
NUMA可以将这一台或多台计算设备分成多个node(节点)。对于其中任意一个node而言,一方面,该node可以由多个CPU(Central Processing Unit,中央处理器)组成,并且拥有独立的内存、I/O等资源。另一方面,该node内部使用共有的内存控制器,而不同的node之间则通过互联模块进行数据交互。
因此,与同一node对应的内存对于该node中的CPU都是等同的,而对于不同的node中的CPU则不同。通常,同一node中的CPU访问与该node对应的内存的速度较快,而不同的node中的CPU访问与该node对应的内存的速度则较慢。也即,同一node中的CPU访问与该node对应的内存,通常比不同的node中的CPU访问与该node对应的内存的延时短。
除此之外,同一node中的CPU访问与该node对应的内存,通常比不同的node中的CPU访问与该node对应的内存所占用的带宽小。
在实际应用中,可以将同一node中的CPU对与该node对应的内存的访问称为本地访问(local access),将不同的node中的CPU对与该node对应的内存的访问称为远程访问(remote access)。
随着多核技术的发展,可以将多个CPU封装在一起,这个封装通常被称为socket(插槽)。相应地,socket中的CPU可以被称为core(核心);或者,也可以将socket中独立的一组用于执行程序的硬件单元(例如:寄存器、计算单元等)称为core。
综上,一个NUMA系统可以包括至少一个node,一个node可以包括至少一个socket,一个socket可以包括至少一个core。
需要说明的是,本说明书以NUMA系统中的socket为例,对所提供的数据传输的技术方案进行说明。由于在NUMA系统中,一个node可以包括至少一个socket,该数据传输的技术方案中的socket也可以替换为node。
对于支持RDMA的网卡(RDMA Network Interface Card,RNIC)而言,由于数据吞吐量通常随着网卡端口的数量线性增加,该网卡通常可以包括至少一个网卡端口。
进一步地,对于包括至少一个支持RDMA的网卡的NUMA系统而言,可以将这至少一个网卡中的各网卡端口分别绑定到该NUMA系统中的各socket。
在这种情况下,不同的NUMA系统中的socket之间可以通过所绑定的网卡端口,进行基于RDMA的数据传输。
在实际应用中,以任意一个NUMA系统中的任意一个socket为例,在该socket基于RDMA访问与其他NUMA系统中的socket对应的内存时,可以将该socket称为本地(local)socket,将其他NUMA系统中的socket称为远程(remote)socket,将与远程socket对应的内存称为远程内存。
请参考图1,图1是本说明书一示例性实施例示出的一种数据传输系统的硬件架构图。
如图1所示,上述数据传输系统可以包括网络10、若干服务器,如服务器11、服务器12、服务器13等。
服务器11可以为包含一独立主机的物理服务器,或者该服务器11可以为主机集群承载的虚拟服务器、云服务器等。网络10可以包括多种类型的有线或无线网络。
在实际应用中,服务器11、服务器12、服务器13可以分别作为一个NUMA系统;此时,不同服务器之间的数据传输即为不同的NUMA系统之间的数据传输。或者,也可以由多个服务器组成一个NUMA系统。本说明书对此不作限制。
请参考图2,图2是相关技术中不同的NUMA系统之间的数据传输的示意图。
如图2所示,以2个NUMA系统为例,NUMA系统1可以包括2个socket,分别为socket11和socket12,NUMA系统2也可以包括2个socket,分别为socket21和socket22;NUMA系统还可以包括RNIC1,RNIC1可以包括2个网卡端口,分别为port11和port12,NUMA系统2还可以包括RNIC2,RNIC2也可以包括2个网卡端口,分别为port21和port22;socket11绑定了port11,socket12绑定了port12,socket21绑定了port21,socket22绑定了port22。
在这种情况下,为了保证NUMA系统1中的任意一个socket,与NUMA系统2中的任意一个socket都可以进行数据交互,通常需要NUMA系统1和NUMA系统2中的所有socket维持全连接的状态。也即,socket11、socket12、socket21、socket22需要两两建立连接,分别为连接1、连接2、连接3、连接4、连接5、连接6。
然而,如果不同的NUMA系统中的所有socket一直维持全连接的状态,则大量的连接极有可能会超出支持RDMA的网卡所能承载的最大容量,从而导致数据传输的性能下降。
除此之外,对于不同的NUMA系统而言,本地socket对与远程socket对应的远程内存的访问,也属于远程访问。因此,在本地socket访问与远程socket对应的远程内存的过程中,也存在延时较长的问题。
通常,如果CPU、与CPU对应的内存、支持RDMA的网卡在同一socket中,即CPU和内存连接在同一插槽中、且该插槽绑定了网卡端口,则访问延时最短、且数据吞吐量最高。如果CPU、与CPU对应的内存、支持RDMA的网卡不在同一socket中,即CPU和内存连接在未绑定网卡端口的其他插槽中,则访问延时最长、且数据吞吐量最短。但在大多数情况下,与CPU对应的内存、支持RDMA的网卡是否在同一socket中,对访问延时的影响较小。
本说明书一个或多个实施例提供数据传输的技术方案,对于包括至少一个socket,以及至少一个支持RDMA的网卡的NUMA系统而言,其中的socket可以包括至少一个CPU,支持RDMA的网卡可以包括至少一个网卡端口,各socket可以分别绑定各网卡端口;该NUMA系统中的第一socket可以在获取到用于访问与其他NUMA系统中的远程socket对应的远程内存的RDMA请求的情况下,先确定该第一socket与该远程socket是否通过所绑定的网卡端口建立了连接,如果未建立连接,则可以进一步确定该NUMA系统中与该远程socket建立了连接的第二socket,并将该RDMA请求发送给该第二socket,由该第二socket将该RDMA请求发送给该远程socket,并将该远程socket响应于该RDMA请求返回的数据发送给该第一socket。
在具体实现时,NUMA系统可以包括至少一个socket,以及至少一个支持RDMA的网卡。其中,一个socket可以包括至少一个CPU,一个支持RDMA的网卡可以包括至少一个网卡端口,各socket分别绑定了各网卡端口。
上述NUMA系统中的第一socket可以获取到用于访问与远程socket对应的远程内存的RDMA请求。其中,该远程socket可以是不同于该NUMA系统的、其他NUMA系统中的socket。
上述第一socket可以确定其与上述远程socket是否通过所绑定的网卡端口建立了连接。
如果上述第一socket与上述远程socket未建立连接,则可以进一步确定上述NUMA系统中与该远程socket建立了连接的socket(下称为第二socket),并由该第一socket将上述RDMA请求发送给该第二socket。
后续,上述第二socket可以将上述RDMA请求发送给上述远程socket。
与之相应地,上述远程socket在接收到上述RDMA请求的情况下,可以响应于该RDMA请求,获取用于应答该RDMA请求的数据,并将该数据返回给上述第二socket,使得该第二socket可以将该数据发送给上述第一socket。
采用上述方式,不同的NUMA系统中的所有socket无需维持全连接的状态,即可保证不同的NUMA系统中任意两个socket之间都可以进行数据交互,连接的数量得以减少,因此可以保证数据传输的性能。
请参考图3,图3是本说明书一示例性实施例示出的一种数据传输方法的流程图。
上述数据传输方法可以应用于NUMA系统中的任意一个socket(下称为第一socket)。
在本实施例中,上述NUMA系统可以包括至少一个socket,以及至少一个支持RDMA的网卡。对于一个socket而言,其可以包括至少一个CPU。对于一个支持RDMA的网卡而言,其可以包括至少一个网卡端口。各socket分别绑定了各网卡端口。
在实际应用中,为了进一步缩短访问延时,不同的网卡端口可以绑定到不同的socket。
上述数据传输方法可以包括以下步骤:
步骤301:获取RDMA请求;其中,所述RDMA请求用于访问与远程socket对应的远程内存;所述远程socket为其他NUMA系统中的socket。
在本实施例中,上述第一socket可以获取到用于访问与远程socket对应的远程内存的RDMA请求。
如前所述,以任意一个NUMA系统中的任意一个socket为例,在该socket基于RDMA访问与其他NUMA系统中的socket对应的内存时,可以将该socket称为本地(local)socket,将其他NUMA系统中的socket称为远程(remote)socket,将与远程socket对应的内存称为远程内存。
因此,上述远程socket可以是不同于上述NUMA系统的、其他NUMA系统中的socket。
步骤302:确定所述第一socket与所述远程socket是否通过所绑定的网卡端口建立了连接。
在本实施例中,对于本地socket而言,其可以仅与一个远程socket建立连接;具体地,该本地socket可以通过与其绑定的网卡端口,该远程socket也可以通过与其绑定的网卡端口,互相建立连接。
因此,上述第一socket可以确定其与上述远程socket是否通过所绑定的网卡端口建立了连接。
步骤303:如果所述第一socket与所述远程socket未建立连接,确定所述NUMA系统中与所述远程socket建立了连接的第二socket,并将所述RDMA请求发送给所述第二socket,以使所述第二socket将所述RDMA请求发送给所述远程socket,并将所述远程socket响应于所述RDMA请求返回的数据发送给所述第一socket。
在本实施例中,如果上述第一socket与上述远程socket未建立连接,则可以进一步确定上述NUMA系统中与该远程socket建立了连接的socket(下称为第二socket),并由该第一socket将上述RDMA请求发送给该第二socket。
后续,由于上述第二socket与上述远程socket通过所绑定的网卡端口建立了连接,该第二socket可以将上述RDMA请求发送给该远程socket。
与之相应地,上述远程socket在接收到上述RDMA请求的情况下,可以响应于该RDMA请求,获取用于应答该RDMA请求的数据,并将该数据返回给上述第二socket,使得该第二socket可以将该数据发送给上述第一socket。
在上述技术方案中,对于包括至少一个socket,以及至少一个支持RDMA的网卡的NUMA系统而言,其中的socket可以包括至少一个CPU,支持RDMA的网卡可以包括至少一个网卡端口,各socket可以分别绑定各网卡端口;该NUMA系统中的第一socket可以在获取到用于访问与其他NUMA系统中的远程socket对应的远程内存的RDMA请求的情况下,先确定该第一socket与该远程socket是否通过所绑定的网卡端口建立了连接,如果未建立连接,则可以进一步确定该NUMA系统中与该远程socket建立了连接的第二socket,并将该RDMA请求发送给该第二socket,由该第二socket将该RDMA请求发送给该远程socket,并将该远程socket响应于该RDMA请求返回的数据发送给该第一socket。
采用上述方式,不同的NUMA系统中的所有socket无需维持全连接的状态,即可保证不同的NUMA系统中任意两个socket之间都可以进行数据交互,连接的数量得以减少,因此可以保证数据传输的性能。
请参考图4,图4是本说明书一示例性实施例示出的另一种数据传输方法的流程图。
如图4所示的数据传输方法可以视为如图3所示的数据传输方法的详细说明。
上述数据传输方法可以包括以下步骤:
步骤401:获取RDMA请求;其中,所述RDMA请求用于访问与远程socket对应的远程内存;所述远程socket为其他NUMA系统中的socket。
步骤402:确定所述第一socket与所述远程socket是否通过所绑定的网卡端口建立了连接。
步骤403:如果所述第一socket与所述远程socket未建立连接,确定所述NUMA系统中与所述远程socket建立了连接的第二socket,并将所述RDMA请求发送给所述第二socket,以使所述第二socket将所述RDMA请求发送给所述远程socket,并将所述远程socket响应于所述RDMA请求返回的数据发送给所述第一socket。
步骤401至403的具体实现可以参考前述步骤301至303中的相应内容,本说明书在此不再赘述。
步骤404:如果所述第一socket与所述远程socket建立了连接,将所述RDMA请求发送给所述远程socket,并接收所述远程socket响应于所述RDMA请求返回的数据。
在本实施例中,如果上述第一socket与上述远程socket建立了连接,则可以由该第一socket将上述RDMA请求直接发送给上述远程socket。
与之相应地,上述远程socket在接收到上述RDMA请求的情况下,可以响应于该RDMA请求,获取用于应答该RDMA请求的数据,并将该数据直接返回给上述第一socket。
在示出的一种实施方式中,在确定上述第一socket与上述远程socket是否通过所绑定的网卡端口建立了连接时,具体可以确定该第一socket的标识与该远程socket的标识是否匹配,例如:是否相同或是否具有相同的前缀等。
在实际应用中,可以为每个socket分配一个对应的标识。在这种情况下,RDMA请求中可以包含需要传输数据的远程socket的标识。也即,可以基于RDMA请求中的socket的标识,确定需要传输数据的远程socket。
如果上述第一socket的标识与上述远程socket的标识匹配,则可以确定该第一socket与该远程socket通过所绑定的网卡端口建立了连接。
如果上述第一socket的标识与上述远程socket的标识不匹配,则可以确定该第一socket与该远程socket未通过所绑定的网卡端口建立连接。
与之类似地,在上述第一socket与上述远程socket未建立连接的情况下,可以进一步确定与该远程socket的标识匹配的socket的标识,并将与该socket的标识对应的socket确定为上述第二socket,即上述NUMA系统中与该远程socket建立了连接的socket。
需要说明的是,对于同一NUMA系统中的上述第一socket和上述第二socket而言,如果该第一socket和该第二socket仍然通过互联模块进行数据交互,则也属于远程访问,可能导致一定的访问延时。
为了进一步缩短访问延时,在示出的一种实施方式中,上述第一socket与上述第二socket可以基于IPC(Inter-Process Communication,进程间通信)机制或消息传递机制进行数据交互。这样,可以避免在该第一socket与该第二socket进行数据交互的过程中的远程访问,因此可以降低访问延时。
请参考图5,图5是本说明书一示例性实施例示出的另一种数据传输方法的流程图。
如图5所示的数据传输方法可以视为如图3所示的数据传输方法的详细说明。
在本实施例中,上述第一socket与上述第二socket可以基于消息传递机制进行数据交互。
具体地,与上述第一socket和上述第二socket对应的共享内存中可以维护用于发送数据的消息队列(下称为第一消息队列)。此外,该共享内存中还可以维护用于接收数据的消息队列(下称为第二消息队列)。
由于上述第一消息队列和上述第二消息队列都在与上述第一socket和上述第二socket对应的共享内存中,该第一socket和该第二socket都可以直接访问该共享内存,从而可以避免远程访问,降低访问延时。
上述数据传输方法可以包括以下步骤:
步骤501:获取RDMA请求;其中,所述RDMA请求用于访问与远程socket对应的远程内存;所述远程socket为其他NUMA系统中的socket。
步骤502:确定所述第一socket与所述远程socket是否通过所绑定的网卡端口建立了连接。
步骤503:如果所述第一socket与所述远程socket未建立连接,确定所述NUMA系统中与所述远程socket建立了连接的第二socket。
步骤501至503的具体实现可以参考前述步骤301至303中的相应内容,本说明书在此不再赘述。
步骤504:将所述RDMA请求推送至所述第一消息队列,以使所述第二socket从所述第一消息队列中获取到所述RDMA请求,并将所述RDMA请求发送给所述远程socket。
在本实施例中,上述第一socket可以将上述RDMA请求推送至上述第一消息队列,使得上述第二socket可以从该第一消息队列中获取到该RDMA请求。
后续,由于上述第二socket与上述远程socket通过所绑定的网卡端口建立了连接,该第二socket可以将上述RDMA请求发送给该远程socket。
需要说明的是,上述第二socket可以按照一定的时间周期,定期从上述第一消息队列中获取所有尚未处理、且用于访问上述远程内存的RDMA请求。或者,该第二socket可以在该第一消息队列中尚未处理、且用于访问该远程内存的RDMA请求达到一定的数量时,从该第一消息队列中获取这些RDMA请求。也即,该第二socket每次都可以获取到多个尚未处理、且用于访问该远程内存的RDMA请求,并将这些RDMA请求一次性发送至与上述远程socket对应的、用于接收数据的消息队列。
与之相应地,上述远程socket可以从与该远程socket对应的、用于接收数据的消息队列中获取到上述RDMA请求。
在这种情况下,上述远程socket可以响应于上述RDMA请求,获取用于应答该RDMA请求的数据,并将该数据返回给上述第二socket。
具体地,上述远程socket可以将用于应答上述RDMA请求的数据,推送至与该远程socket对应的、用于发送数据的消息队列,以在从该消息队列中获取到该数据时,将该数据返回至上述第二消息队列。
步骤505:从所述第二消息队列中获取到所述远程socket响应于所述RDMA请求返回的数据。
在本实施例中,上述第一socket可以直接从上述第二消息队列中获取到用于应答上述RDMA请求的数据。
请参考图6,图6是本说明书一示例性实施例示出的不同的NUMA系统之间的数据传输的示意图。
如图6所示,以2个NUMA系统为例,NUMA系统1可以包括2个socket,分别为socket11和socket12,NUMA系统2也可以包括2个socket,分别为socket21和socket22;NUMA系统还可以包括RNIC1,RNIC1可以包括2个网卡端口,分别为port11和port12,NUMA系统2还可以包括RNIC2,RNIC2也可以包括2个网卡端口,分别为port21和port22;socket11绑定了port11,socket12绑定了port12,socket21绑定了port21,socket22绑定了port22。
在这种情况下,socket11与socket12可以建立连接1,socket21与socket22可以建立连接2,socket11与socket21可以建立连接3,socket12与socket22可以建立连接4。或者,socket11与socket12、socket21与socket22也可以不建立连接,socket11与socket21可以建立连接3,socket12与socket22可以建立连接4。也即,最多只需建立4个连接。
与如图2所示的相关技术中不同的NUMA系统之间的数据传输相比,连接的数量得以减少,因此可以保证数据传输的性能。
以socket11访问与socket22对应的内存为例,由于socket11与socket22未建立连接,socket11可以将用于访问与socket22对应的内存的RDMA请求,推送至与socket11、socket12对应的共享内存中维护的用于发送数据的消息队列11。
socket12可以从消息队列11中获取到该RDMA请求,并将该RDMA请求发送至与socket21、socket22对应的共享内存中维护的用于接收数据的消息队列22。
socket22可以从消息队列22中获取到该RDMA请求,并响应于该RDMA请求,获取用于应答该RDMA请求的数据。socket22可以将该数据推送至与socket21、socket22对应的共享内存中维护的用于发送数据的消息队列21,并在从消息队列21中获取到该数据时,将该数据返回至与socket11、socket12对应的共享内存中维护的用于接收数据的消息队列12。
socket11可以从消息队列12获取到用于应答上述RDMA请求的数据。
与前述数据传输方法的实施例相对应,本说明书还提供了数据传输装置的实施例。
本说明书数据传输装置的实施例可以应用在电子设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在电子设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图7所示,为本说明书数据传输装置所在电子设备的一种硬件结构图,除了图7所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的电子设备通常根据该数据传输的实际功能,还可以包括其他硬件,对此不再赘述。
请参考图8,图8是本说明书一示例性实施例示出的一种数据传输装置的框图。
上述数据传输装置可以应用于非统一内存访问NUMA系统中的第一socket;所述NUMA系统包括至少一个socket,以及至少一个支持远程直接内存访问RDMA的网卡;所述socket包括至少一个中央处理器CPU;所述网卡包括至少一个网卡端口;各socket分别绑定了各网卡端口。具体地,如图7所示的电子设备可以作为该NUMA系统。
上述数据传输装置可以包括:
获取模块801,用于获取RDMA请求;其中,所述RDMA请求用于访问与远程socket对应的远程内存;所述远程socket为其他NUMA系统中的socket;
确定模块802,用于确定所述第一socket与所述远程socket是否通过所绑定的网卡端口建立了连接;
第一发送模块803,用于在所述第一socket与所述远程socket未建立连接时,确定所述NUMA系统中与所述远程socket建立了连接的第二socket,并将所述RDMA请求发送给所述第二socket,以使所述第二socket将所述RDMA请求发送给所述远程socket,并将所述远程socket响应于所述RDMA请求返回的数据发送给所述第一socket。
可选地,所述装置还包括:
第二发送模块,用于在所述第一socket与所述远程socket建立了连接时,将所述RDMA请求发送给所述远程socket,并接收所述远程socket响应于所述RDMA请求返回的数据。
可选地,所述确定模块802具体用于:
确定所述第一socket的标识与所述远程socket的标识是否匹配;
如果所述第一socket的标识与所述远程socket的标识匹配,确定所述第一socket与所述远程socket通过所绑定的网卡端口建立了连接;
如果所述第一socket的标识与所述远程socket的标识不匹配,确定所述第一socket与所述远程socket未通过所绑定的网卡端口建立连接。
可选地,所述第一socket与所述第二socket基于进程间通信IPC机制或消息传递机制进行数据交互。
可选地,与所述第一socket和所述第二socket对应的共享内存中维护了第一消息队列;所述第一消息队列用于发送数据;
所述第一发送模块803具体用于:
将所述RDMA请求推送至所述第一消息队列,以使所述第二socket从所述第一消息队列中获取到所述RDMA请求,并将所述RDMA请求发送给所述远程socket。
可选地,与所述第一socket和所述第二socket对应的共享内存中维护了第二消息队列;所述第二消息队列用于接收数据;
所述第一发送模块803具体用于:
将所述RDMA请求发送给所述第二socket,以使所述第二socket将所述RDMA请求发送给所述远程socket;
从所述第二消息队列中获取到所述远程socket响应于所述RDMA请求返回的数据。
对于装置实施例而言,其基本对应于方法实施例,因此相关之处参见方法实施例的部分说明即可。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书的技术方案的目的。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
在一个典型的配置中,计算机包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
上述对本说明书特定实施例进行了描述。其他实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。

Claims (14)

1.一种数据传输方法,所述方法应用于非统一内存访问NUMA系统中的第一socket;所述NUMA系统包括至少一个socket,以及至少一个支持远程直接内存访问RDMA的网卡;所述socket包括至少一个中央处理器CPU;所述网卡包括至少一个网卡端口;各socket分别绑定了各网卡端口;所述方法包括:
获取RDMA请求;其中,所述RDMA请求用于访问与远程socket对应的远程内存;所述远程socket为其他NUMA系统中的socket;
确定所述第一socket与所述远程socket是否通过所绑定的网卡端口建立了连接;
如果所述第一socket与所述远程socket未建立连接,确定所述NUMA系统中与所述远程socket建立了连接的第二socket,并将所述RDMA请求发送给所述第二socket,以使所述第二socket将所述RDMA请求发送给所述远程socket,并将所述远程socket响应于所述RDMA请求返回的数据发送给所述第一socket。
2.根据权利要求1所述的方法,所述方法还包括:
如果所述第一socket与所述远程socket建立了连接,将所述RDMA请求发送给所述远程socket,并接收所述远程socket响应于所述RDMA请求返回的数据。
3.根据权利要求1所述的方法,所述确定所述第一socket与所述远程socket是否通过所绑定的网卡端口建立了连接,包括:
确定所述第一socket的标识与所述远程socket的标识是否匹配;
如果所述第一socket的标识与所述远程socket的标识匹配,确定所述第一socket与所述远程socket通过所绑定的网卡端口建立了连接;
如果所述第一socket的标识与所述远程socket的标识不匹配,确定所述第一socket与所述远程socket未通过所绑定的网卡端口建立连接。
4.根据权利要求1所述的方法,所述第一socket与所述第二socket基于进程间通信IPC机制或消息传递机制进行数据交互。
5.根据权利要求4所述的方法,与所述第一socket和所述第二socket对应的共享内存中维护了第一消息队列;所述第一消息队列用于发送数据;
所述将所述RDMA请求发送给所述第二socket,以使所述第二socket将所述RDMA请求发送给所述远程socket,包括:
将所述RDMA请求推送至所述第一消息队列,以使所述第二socket从所述第一消息队列中获取到所述RDMA请求,并将所述RDMA请求发送给所述远程socket。
6.根据权利要求4所述的方法,与所述第一socket和所述第二socket对应的共享内存中维护了第二消息队列;所述第二消息队列用于接收数据;
所述将所述RDMA请求发送给所述第二socket,以使所述第二socket将所述RDMA请求发送给所述远程socket,并将所述远程socket响应于所述RDMA请求返回的数据发送给所述第一socket,包括:
将所述RDMA请求发送给所述第二socket,以使所述第二socket将所述RDMA请求发送给所述远程socket;
从所述第二消息队列中获取到所述远程socket响应于所述RDMA请求返回的数据。
7.一种数据传输装置,所述装置应用于非统一内存访问NUMA系统中的第一socket;所述NUMA系统包括至少一个socket,以及至少一个支持远程直接内存访问RDMA的网卡;所述socket包括至少一个中央处理器CPU;所述网卡包括至少一个网卡端口;各socket分别绑定了各网卡端口;所述装置包括:
获取模块,用于获取RDMA请求;其中,所述RDMA请求用于访问与远程socket对应的远程内存;所述远程socket为其他NUMA系统中的socket;
确定模块,用于确定所述第一socket与所述远程socket是否通过所绑定的网卡端口建立了连接;
第一发送模块,用于在所述第一socket与所述远程socket未建立连接时,确定所述NUMA系统中与所述远程socket建立了连接的第二socket,并将所述RDMA请求发送给所述第二socket,以使所述第二socket将所述RDMA请求发送给所述远程socket,并将所述远程socket响应于所述RDMA请求返回的数据发送给所述第一socket。
8.根据权利要求7所述的装置,所述装置还包括:
第二发送模块,用于在所述第一socket与所述远程socket建立了连接时,将所述RDMA请求发送给所述远程socket,并接收所述远程socket响应于所述RDMA请求返回的数据。
9.根据权利要求7所述的装置,所述确定模块具体用于:
确定所述第一socket的标识与所述远程socket的标识是否匹配;
如果所述第一socket的标识与所述远程socket的标识匹配,确定所述第一socket与所述远程socket通过所绑定的网卡端口建立了连接;
如果所述第一socket的标识与所述远程socket的标识不匹配,确定所述第一socket与所述远程socket未通过所绑定的网卡端口建立连接。
10.根据权利要求7所述的装置,所述第一socket与所述第二socket基于进程间通信IPC机制或消息传递机制进行数据交互。
11.根据权利要求10所述的装置,与所述第一socket和所述第二socket对应的共享内存中维护了第一消息队列;所述第一消息队列用于发送数据;
所述第一发送模块具体用于:
将所述RDMA请求推送至所述第一消息队列,以使所述第二socket从所述第一消息队列中获取到所述RDMA请求,并将所述RDMA请求发送给所述远程socket。
12.根据权利要求10所述的装置,与所述第一socket和所述第二socket对应的共享内存中维护了第二消息队列;所述第二消息队列用于接收数据;
所述第一发送模块具体用于:
将所述RDMA请求发送给所述第二socket,以使所述第二socket将所述RDMA请求发送给所述远程socket;
从所述第二消息队列中获取到所述远程socket响应于所述RDMA请求返回的数据。
13.一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如权利要求1至6中任一项所述的方法。
14.一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如权利要求1至6中任一项所述的方法。
CN202210557119.3A 2022-05-19 2022-05-19 数据传输方法及装置 Active CN115037783B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210557119.3A CN115037783B (zh) 2022-05-19 2022-05-19 数据传输方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210557119.3A CN115037783B (zh) 2022-05-19 2022-05-19 数据传输方法及装置

Publications (2)

Publication Number Publication Date
CN115037783A CN115037783A (zh) 2022-09-09
CN115037783B true CN115037783B (zh) 2024-04-09

Family

ID=83120399

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210557119.3A Active CN115037783B (zh) 2022-05-19 2022-05-19 数据传输方法及装置

Country Status (1)

Country Link
CN (1) CN115037783B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7756943B1 (en) * 2006-01-26 2010-07-13 Symantec Operating Corporation Efficient data transfer between computers in a virtual NUMA system using RDMA
CN105159841A (zh) * 2014-06-13 2015-12-16 华为技术有限公司 一种内存迁移方法及装置
CN111277616A (zh) * 2018-12-04 2020-06-12 中兴通讯股份有限公司 一种基于rdma的数据传输方法和分布式共享内存系统

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10721302B2 (en) * 2014-12-05 2020-07-21 Foundation for Research and Technology—Hellas (FORTH) Network storage protocol and adaptive batching apparatuses, methods, and systems
US10019276B2 (en) * 2015-05-27 2018-07-10 Red Hat Israel, Ltd. Dynamic non-uniform memory architecture (NUMA) locality for remote direct memory access (RDMA) applications
US10257273B2 (en) * 2015-07-31 2019-04-09 Netapp, Inc. Systems, methods and devices for RDMA read/write operations
US10033516B2 (en) * 2016-11-30 2018-07-24 International Business Machines Corporation Multi-domain connection establishment in computer networking communications

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7756943B1 (en) * 2006-01-26 2010-07-13 Symantec Operating Corporation Efficient data transfer between computers in a virtual NUMA system using RDMA
CN105159841A (zh) * 2014-06-13 2015-12-16 华为技术有限公司 一种内存迁移方法及装置
CN111277616A (zh) * 2018-12-04 2020-06-12 中兴通讯股份有限公司 一种基于rdma的数据传输方法和分布式共享内存系统

Also Published As

Publication number Publication date
CN115037783A (zh) 2022-09-09

Similar Documents

Publication Publication Date Title
CN110191194B (zh) 一种基于rdma网络的分布式文件系统数据传输方法和系统
US20060047849A1 (en) Apparatus and method for packet coalescing within interconnection network routers
CN113467970B (zh) 云计算系统中的跨安全区域的资源访问方法及电子设备
CN113891396B (zh) 数据包的处理方法、装置、计算机设备和存储介质
WO2023179433A1 (zh) 流表存储及报文转发方法、装置、计算设备及介质
JP2017537404A (ja) メモリアクセス方法、スイッチ、およびマルチプロセッサシステム
CN114710366B (zh) 云计算系统中的跨安全区域的资源访问方法及电子设备
CN114884962B (zh) 负载均衡方法及装置和电子设备
US20220382944A1 (en) Extended inter-kernel communication protocol for the register space access of the entire fpga pool in non-star mode
CN109783002B (zh) 数据读写方法、管理设备、客户端和存储系统
CN115037783B (zh) 数据传输方法及装置
CN112596669A (zh) 一种基于分布式存储的数据处理方法及装置
CN113033785A (zh) 芯片、神经网络训练系统、内存管理方法及装置、设备
CN115334134A (zh) 数据处理方法及系统
CN105786733B (zh) 一种写入tcam条目的方法及装置
CN114356446B (zh) 一种进程间事件的处理方法、装置、设备以及存储介质
WO2022142562A1 (zh) 基于rdma的通信方法、节点、系统及介质
CN116225314A (zh) 数据写入方法、装置、计算机设备和存储介质
CN112040023B (zh) 对象访问方法、装置、电子设备及机器可读存储介质
CN115599532A (zh) 一种访问索引的方法以及计算机集群
CN112839071B (zh) 训练系统、训练数据访问方法及装置、电子设备、介质
CN113312184A (zh) 一种业务数据的处理方法及相关设备
CN117591029A (zh) 一种io请求处理方法、装置、设备及存储介质
US11768710B2 (en) Computing system and data processing system including a computing system
CN115344515B (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