CN114780465B - 可共享远程直接数据存取链接的创建方法及装置 - Google Patents

可共享远程直接数据存取链接的创建方法及装置 Download PDF

Info

Publication number
CN114780465B
CN114780465B CN202210195653.4A CN202210195653A CN114780465B CN 114780465 B CN114780465 B CN 114780465B CN 202210195653 A CN202210195653 A CN 202210195653A CN 114780465 B CN114780465 B CN 114780465B
Authority
CN
China
Prior art keywords
rdma
sharable
memory address
link
terminal
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
CN202210195653.4A
Other languages
English (en)
Other versions
CN114780465A (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 CN202210195653.4A priority Critical patent/CN114780465B/zh
Publication of CN114780465A publication Critical patent/CN114780465A/zh
Priority to PCT/CN2023/075204 priority patent/WO2023165309A1/zh
Application granted granted Critical
Publication of CN114780465B publication Critical patent/CN114780465B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/544Remote

Abstract

本说明书提供一种可共享远程直接数据存取链接的创建方法及装置,应用于本侧终端,该方法包括:接收所述本侧终端上的第一应用进程发起的针对第一可共享远程直接数据存取RDMA链接的第一创建请求,所述第一创建请求为所述第一可共享RDMA链接所指示的关联内存地址为所述第一应用进程与所述本侧终端上的第二应用进程的共享内存地址;根据所述第一创建请求在所述本侧终端与对侧终端之间创建所述第一可共享RDMA链接,以使所述共享内存地址作为所述第一可共享RDMA链接的关联内存地址注册至所述本侧终端上的RDMA设备。

Description

可共享远程直接数据存取链接的创建方法及装置
技术领域
本说明书涉及通信领域,尤其涉及一种可共享远程直接数据存取链接的创建方法及装置。
背景技术
远程直接数据存取(Remote Direct Memory Access,RDMA)技术作为一种直接内存访问技术,使得计算机等终端可以直接存取其他终端的内存数据,而不需要经过处理器的处理,进而满足了多台终端之间在进行远程数据传输时关于低延迟、高效率的要求。
在相关技术中,通过引入基于RDMA的共享内存通信共享内存通信(Shared MemoryCommunications over RDMA,SMC-R)技术以解决RDMA链接无法从某一进程共享至其他进程的问题,但这种方式又将导致RDMA链接失去内核旁路(Kernel Bypass)特性,从而减低了数据传输性能。
发明内容
有鉴于此,本说明书提供一种可共享远程直接数据存取链接的创建方法及装置,以解决相关技术中存在的不足。
具体地,本说明书是通过如下技术方案实现的:
根据本说明书实施例的第一方面,提供了一种可共享远程直接数据存取链接的创建方法,应用于本侧终端,所述方法包括:
接收所述本侧终端上的第一应用进程发起的针对第一可共享远程直接数据存取RDMA链接的第一创建请求,所述第一创建请求为所述第一可共享RDMA链接所指示的关联内存地址为所述第一应用进程与所述本侧终端上的第二应用进程的共享内存地址;
根据所述第一创建请求在所述本侧终端与对侧终端之间创建所述第一可共享RDMA链接,以使所述共享内存地址作为所述第一可共享RDMA链接的关联内存地址注册至所述本侧终端上的RDMA设备。
根据本说明书实施例的第二方面,提供了一种可共享远程直接数据存取链接的创建装置,应用于本侧终端,所述装置包括:
创建请求接收单元,用于接收所述本侧终端上的第一应用进程发起的针对第一可共享远程直接数据存取RDMA链接的第一创建请求,所述第一创建请求为所述第一可共享RDMA链接所指示的关联内存地址为所述第一应用进程与所述本侧终端上的第二应用进程的共享内存地址;
链接创建单元,用于根据所述第一创建请求在所述本侧终端与对侧终端之间创建所述第一可共享RDMA链接,以使所述共享内存地址作为所述第一可共享RDMA链接的关联内存地址注册至所述本侧终端上的RDMA设备。
根据本说明书实施例的第三方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如第一方面所述的方法的步骤。
根据本说明书实施例的第四方面,提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所述的方法的步骤。
在本说明书所提供的技术方案中,本侧终端通过引入共享内存地址技术,使得任一应用进程基于该共享内存地址所创建的RDMA链接可以被使用该共享内存地址的其他应用进程所共享使用,且由于上述针对RDMA链接的共享过程是在用户态中实现,使得该RDMA链接仍然能够利用内核旁路的特性,从而既能够实现对RDMA链接的共享,又能够确保RDMA链接具有高效的数据传输性能。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1是本说明书一示例性实施例示出的一种基于RDMA链接的交互系统的架构示意图;
图2是本说明书一示例性实施例示出的一种可共享RDMA链接创建方法的流程示意图;
图3是本说明书一示例性实施例示出的一种可共享RDMA链接系统的组成与应用方案的示意图;
图4是本说明书一示例性实施例示出的一种电子设备的示意结构图;
图5是本说明书一示例性实施例示出的一种可共享RDMA链接创建装置的结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书的一些方面相一致的装置和方法的例子。
在本说明书使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书。在本说明书和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
图1是本说明书一示例性实施例示出的一种基于RDMA链接的交互系统的架构示意图。如图1所示,可以包括本侧终端11、对侧终端12。
本侧终端11、对侧终端12是指用户可以使用的一种支持RDMA技术的电子设备,其中,本侧终端11与对侧终端12中至少需要包含一支持RDMA技术的RDMA设备。在所述系统运行过程中,本侧终端11中的任一应用进程可以在本侧终端11与对侧终端12之间创建一条可共享RDMA链接,并通过该可共享RDMA链接实现本侧终端11与对侧终端12的数据交互。同时,本侧终端11中的其他应用进程也可以共享使用该可共享RDMA链接,从而同样能够实现上述在本侧终端11与对侧终端12之间的数据交互。例如:本侧终端11中的应用进程1在本侧终端11与对侧终端12之间创建一条可共享RDMA链接A后,本侧终端11中的应用进程2同样可以使用该可共享RDMA链接A向对侧终端12的RDMA设备发送数据,或者接收对侧终端12发送的数据。其中,用户可以使用诸如下述类型的电子设备作为本侧终端11与对侧终端12:手机、平板设备、笔记本电脑、掌上电脑(PDAs,Personal Digital Assistants)、可穿戴设备(如智能眼镜、智能手表等),本说明书的一个或多个实施例并不对此进行限制。
需要说明的是,“本侧”与“对侧”是一组相对概念,而并不用于特指具体的电子设备。例如,当基于终端11的角度进行描述时,可以将该终端11作为本侧终端、将终端12作为对侧终端,而当基于终端12的角度进行描述时,可以将该终端12作为本侧终端、将终端11作为对侧终端。图1中以从终端11的角度进行描述为例,故采用上述的本侧终端11、对侧终端12的方式进行描述。
图2是本说明书一示例性实施例示出的一种可共享RDMA链接创建方法的流程示意图。如图2所示,该方法应用于本侧终端,可以包括以下步骤:
S201,接收所述本侧终端上的第一应用进程发起的针对第一可共享远程直接数据存取RDMA链接的第一创建请求,所述第一创建请求为所述第一可共享RDMA链接所指示的关联内存地址为所述第一应用进程与所述本侧终端上的第二应用进程的共享内存地址。
第一应用进程与第二应用进程为运行于本侧终端中的两个进程,且第一应用进程与第二应用进程可以在本侧终端的内存中共享同一段内存地址,即上述的共享内存地址。其中,该共享内存地址中可分别存储有第一应用进程和第二应用进程的全部或部分数据,本说明书中并不对此进行限制。
其中,第一应用进程与第二应用进程之间可以相互独立,即两者执行着不同的操作。或者两者可以为父子进程,使得两者执行着相同的操作,比如第一应用进程为第二应用进程的父进程、第二应用进程为第一应用进程的子进程,或者第二应用进程为第一应用进程的父进程、第一应用进程为第二应用进程的子进程。总之,无论第一应用进程与第二应用进程存在何种关系,由于第一创建请求为第一可共享RDMA链接所指示的关联内存地址为上述的共享内存地址,使得第一应用进程和第二应用进程均必然能够使用上述的第一可共享RDMA链接,从而实现了由第一应用进程将自身创建的RDMA链接共享给第二应用进程。其中,当第一应用进程为第二应用进程的父进程、第二应用进程为第一应用进程的子进程时,上述针对RDMA链接共享过程可以理解为特定的RDMA链接继承场景:针对第一应用进程创建的RDMA链接,由第二应用进程从该第一应用进程处继承该RDMA链接,使得第二应用进程同样能够使用该RDMA链接。
对于本侧终端与对侧终端之间建立的RDMA链接,以上述的第一可共享RDMA链接为例:该第一可共享RDMA链接的关联内存地址为本侧终端中的内存地址段,比如上述的共享内存地址,使得本侧终端与对侧终端基于该第一可共享RDMA链接进行数据交互时,所交互的数据在本侧终端处均存储在该共享内存地址。如前所述,由于第一应用进程和第二应用进程均可访问该共享内存地址,因而使得第一应用进程与第二应用进程能够共享上述的第一可共享RDMA链接。那么,容易理解的是,假定第一应用进程在创建某一RDMA链接时,仍采用相关技术中的做法,即将该RDMA链接的关联内存地址指定为本侧终端上无法由第二应用进程所访问的某一内存地址段时,该RDMA链接就无法被第二应用进程所共享。
同一内存地址段可以作为一条或多条RDMA链接的关联内存地址。如果出于譬如数据安全性等方面的考量,希望对各个RDMA链接所传输的数据进行隔离,那么可以配置本侧终端上的各条RDMA链接所对应的关联内存地址不允许发生交叉。假定本侧终端上建立有两条可共享RDMA链接:如果不存在上述的数据隔离需求,可以将这两条可共享RDMA链接的关联内存地址均设置为整个共享内存地址;而如果存在上述的数据隔离需求,可以将这两条可共享RDMA链接的关联内存地址分别设置为上述共享内存地址中相互分离的部分地址段,从而同时满足对RDMA链接的共享需求和数据隔离需求。关联内存地址除了通过上述第一创建请求确定外,还可以是上述本侧终端通过特定规则自动生成或由管理员预先定义的内存地址,本说明书中并不对此进行限制。
当第一应用进程需要建立可与其他终端共享的RDMA链接时,可以向本侧终端发起相应的创建请求以用于创建对应的RDMA链接。例如前文所述,第一应用进程可以通过发起第一创建请求以用于触发创建第一可共享RDMA链接。相应的,本侧终端可以维护有一代理进程,该代理进程可以用于对上述的共享内存地址进行监听。例如,当第一应用进程在共享内存地址中写入上述第一创建请求时,该代理进程可监听到写入的数据并以此确定第一应用进程需要建立可共享RDMA链接。再例如,第一应用进程可以与代理进程进行数据通信,以将第一创建请求直接发送至代理进程,使代理进程据此确定第一应用进程需要建立可共享RDMA链接。当然,本侧终端还可以通过其他任意方式获取第一应用进程发起的第一创建请求,本说明书中并不对此进行限制。
S202,根据所述第一创建请求在所述本侧终端与对侧终端之间创建所述第一可共享RDMA链接,以使所述共享内存地址作为所述第一可共享RDMA链接的关联内存地址注册至所述本侧终端上的RDMA设备。
本侧终端在接收到第一创建请求后,可以根据该第一创建请求创建第一可共享RDMA链接。本侧终端可以通过相关技术中创建RDMA链接的任意方式,创建该第一可共享RDMA链接,本说明书并不对此进行限制。作为一示例性实施例,当本侧终端维护有前文所述的代理进程时,可由该代理进程根据第一创建请求创建第一可共享RDMA链接。
通过将共享内存地址作为所述第一可共享RDMA链接的关联内存地址注册至本侧终端上的RDMA设备,使得该RDMA设备在基于该第一可共享RDMA链接进行数据传输时,可以直接对上述共享内存地址进行数据读写。上述注册过程可以理解为是针对第一可共享RDMA链接进行内存注册。在相关技术中,内存注册(Memory Registration,MR)是创建RDMA链接过程中的必要步骤。本领域的技术人员容易理解的是:内存注册可以理解为广义的“创建可共享RDMA链接”这一过程的一部分,在“生成RDMA链接”与“内存注册”均完成的情况下,才认为已完成“创建可共享RDMA链接”这一过程;或者,“创建可共享RDMA链接”可以解释为狭义的“生成RDMA链接”,而“内存注册”则是额外的处理步骤。
在一实施例中,第一创建请求中可以直接包含关联内存地址的信息,比如相应内存地址段的起始地址、终止地址等,再比如相应内存地址段的起始地址和偏移量等,本说明书并不对此进行限制。例如,在第一创建请求包含共享内存地址的信息且将该共享内存地址的信息标记为所述第一可共享RDMA链接的关联内存地址的情况下,本侧终端将根据该第一创建请求中包含的上述共享内存地址的信息创建所述第一可共享RDMA链接。
在另一实施例中,第一创建请求中可以包含其他已存在的可共享RDMA链接的信息,本侧终端可以根据第一创建请求中包含的信息以不同的方式创建第一可共享RDMA链接。例如,在第一创建请求中包含已创建的第二可共享RDMA链接的信息的情况下,本侧终端可以获取上述第二可共享RDMA链接的上下文信息,并根据该上下文信息创建上述第一可共享RDMA链接;其中,上述上下文信息记录的所述第二可共享RDMA链接的关联内存地址为所述共享内存地址。在该实施例中,通过复用已创建的上述第二可共享RDMA链接的上下文信息,简化了相关技术中创建上述第一可共享RDMA链接的初始化阶段,提高了创建第一可共享RDMA链接的效率。
每一RDMA链接都对应有一上下文信息,该上下文信息为上述每一RDMA链接的描述信息。其中,上述描述信息包括但不限于对应RDMA链接的关联内存地址、用于获取对应RDMA链接中发送的各类事件内容的事件报告通道以及用于记录对应RDMA链接在数据交互过程中已完成的工作请求的完成队列(Completion Queues,CQ)信息。例如前文所述,本侧终端可以在共享内存地址中统一存储可共享RDMA链接的上下文信息,使得上述第一应用进程可以在共享内存中查看到已有可共享RDMA链接的上下文信息,进而选取诸如上述的第二可共享RDMA链接,并在创建第一可共享RDMA链接时复用该第二可共享RDMA链接的上下文信息。
当本侧终端与对侧终端之间创建有多条可共享RDMA链接,且本侧终端上维护有上述多条可共享RDMA链接的上下文信息,该上下文信息包含相应可共享RDMA链接的关联内存地址时,本侧终端可以为其终端中任一应用进程从上述多条可共享RDMA链接中确定一条可共享RDMA链接。
在一实施例中,本侧终端接收任一应用进程发起的针对对侧终端的数据传输请求,该任一应用进程对应共享内存地址;若该任一应用进程已在上述数据传输请求中指示将使用的可共享RDMA链接,则确定该可共享RDMA链接响应上述数据传输请求。
在另一实施例中,本侧终端接收任一应用进程发起的针对对侧终端的数据传输请求,该任一应用进程对应共享内存地址;若上述任一应用进程未在上述数据传输请求中指示将使用的可共享RDMA链接,则可以根据上述上下文信息确定上述多条可共享RDMA链接中关联内存地址为上述共享内存地址的可共享RDMA链接,并从确定出的可共享RDMA链接中选择一条目标可共享RDMA链接响应上述数据传输请求。上述本侧终端可以根据预设的选择规则或根据上述确定出的可共享RDMA链接中各条链接的例如最大数据传输大小、平均传输负载等常数动态选择出上述目标可共享RDMA链接,本说明书中并不对此进行限制。
在本侧终端与对侧终端基于第一可共享RDMA链接正式进行数据交互前,本侧终端可以通知第一可共享RDMA链接在本侧终端中的关联内存地址为共享内存地址,以使对侧终端可以针对性地对于该共享内存地址进行合法数据交互。
在一实施例中,本侧终端将共享内存地址通过RDMA设备发送至对侧终端,以使对侧终端中与第一可共享RDMA链接关联的内存地址与共享内存地址基于第一可共享RDMA链接实现数据交互。
当本侧终端与对侧终端之间建立可共享RDMA链接并正式进行数据交互时,本侧终端可以根据对侧终端发起的写入操作请求确定本侧终端中接收对侧终端发送数据的内存地址。
在一实施例中,本侧终端可以通过任一可共享RDMA链接接收对侧终端上的任一应用进程发起的针对本侧终端的写入操作请求,上述任一可共享RDMA链接的关联内存地址为共享内存地址;在上述写入操作请求包含目标地址段的情况下,将对侧终端发送的数据写入目标地址段,该目标地址段为共享内存地址中划分出的部分内存地址段。例如:存在一本侧终端与对侧终端之间的一条可共享RDMA链接A,该本侧终端中存在一共享内存地址[0,100]为可共享RDMA链接A的关联内存地址,当本侧终端通过可共享RDMA链接A接收到对侧终端的写入操作请求中描述有目标地址段[50,60],则本侧终端可以将对侧终端发送的数据写入目标地址段[50,60]。
在另一实施例中,当写入操作请求未包含写入数据的内存地址时,则可以将对侧终端发送的数据写入共享内存地址。其中,即使对侧终端未指定写入数据的内存地址,但本侧终端可以根据预设的内存地址确定规则确定该写入数据的内存地址。例如:存在一共享内存地址[0,100]为在本侧终端与对侧终端之间的一条可共享RDMA链接B的关联内存地址,当本侧终端通过可共享RDMA链接B接收到对侧终端的写入操作请求未包含写入数据的内存地址,则本侧终端可以将对侧终端发送的数据写入目标地址段按照内存地址从低到高、最后一次写入时间从近到远等顺序确定共享内存地址中写入数据的内存地址。
当上述写入数据由于共享内存过小、目标地址段中空闲地址段过小等问题导致写入失败时,则本侧终端可尝试通过扩展共享内存地址与关联内存地址、优化写入数据的数据类型等方式解决,本说明书中并不对此进行限制。
通过上述实施例可知,本说明书中可共享远程直接数据存取链接的创建方法,通过引入共享内存地址的技术手段,使得共享内存地址上任一应用进程所创建的RDMA链接可以被同处于该共享内存地址上的其他应用进程共享使用。又由于上述过程在用户态中实现,比较基于内核态实现的SMC-R技术,本说明书的可共享RDMA链接实现了内核旁路的特性,提高了数据传输性能。同时本说明书提供了确定从多个可共享RDMA链接中确定目标可共享RDMA链接的方案,简化了相关技术中用户额外的操作。此外还通过将本侧终端的共享内存地址发送给对侧终端,保证了本侧终端与对侧终端的正常执行。
图3是本说明书一示例性实施例示出的一种可共享RDMA链接系统的组成与应用方案的示意图。如图3所示,该可共享RDMA链接系统中可以包括以下模块:
本侧终端301、对侧终端311,两个相互独立且支持RDMA技术的电子设备。
应用进程组302,包含一个或多个应用进程。应用进程组302中任一应用进程可以通过应用程序接口303读写数据交换区304上的数据,达到间接使用可共享RDMA链接进行通信的效果。
应用程序接口(Application Programming Interface,API)303,包含一种或多种接口,所述接口可用于实现应用进程组302中任一应用进程读写数据交换区304上的数据。
数据交换区304,由共享内存组成,存储有应用进程组302中所有应用进程以及代理进程305的数据。作为应用进程组302中任一应用进程和代理进程直接通信的媒介,可以使上述任一应用进程可以在不直接访问RDMA设备的情况下使用可共享RDMA链接进行通信。
代理进程305,负责和RDMA设备306数据通信的进程,即负责收取RDMA设备306上的数据到数据交换区304以及将数据交换区304上的数据通过RDMA设备306发送至RDMA设备316。同时,代理进程305可对应用程序接口303中任一应用进程在数据交换区304中发起的创建请求进行监听与响应。
RDMA设备306、316,二者分别可以为设置于本侧终端301、对侧终端311中的支持RDMA的网卡、驱动设备等。
基于上述共享RDMA链接系统的组成结构可以实现以下可共享RDMA的创建与共享等操作:
以应用进程组302中的应用进程1创建可共享RDMA链接A为例。其中,应用进程1为应用进程2的父进程,应用进程2为应用进程1的子进程。当应用进程1需要创建可共享RDMA链接A时,可以通过对应的应用程序接口303将至少包含应用进程1的唯一标识、指示可共享RDMA链接A的关联内存地址为数据交换区304的描述信息作为描述应用进程1需要创建RDMA链接A的创建请求的数据写入数据交换区304中。同时代理进程305监听到数据交换区304写入的上述创建请求的数据,并根据该创建请求的数据确定应用进程1需要创建上述可共享RDMA链接A。在确定应用进程1需要创建上述可共享RDMA链接A时,代理进程305根据上述创建请求的数据将数据交换区304作为可共享RDMA链接A的关联内存地址注册至RDMA设备306。当代理进程305接收到来自对侧终端311的针对可共享RDMA链接A的首次连接请求后,可以将对侧终端311的设备标识、对侧终端311中关于RDMA链接A的关联内存地址等信息写入可共享RDMA链接A的上下文信息中。使得可共享RDMA链接A为本侧终端301与对侧终端311之间能够进行正式进行数据交互的可共享RDMA链接。
由于可共享RDMA链接A的关联内存地址为数据交换区304,且应用进程组302中所有应用进程均存储与数据交换区304中,故数据交换区304中除应用进程1外的其他应用进程也可以使用可共享RDMA链接A实现本侧终端301与对侧终端311之间的数据交互。
以应用进程2使用上述可共享RDMA链接A为例向对侧终端311写入数据为例。应用进程2通过使用应用程序接口303读写数据交换区304相关数据的方式,以通知监听数据交换区304的代理进程305将包含字符串“abc”的数据写入请求通过可共享RDMA链接A从RDMA设备306发送至对侧终端311的RDMA设备316,当对RDMA设备316接收到上述数据写入请求后可以将该字符串对应的数据根据可共享RDMA链接A的上下文信息直接写入RDMA设备316中与可共享RDMA链接A关联的内存地址中。
以对侧终端311的应用进程可以通过可共享RDMA链接A向本侧终端301中写入数据为例。对侧终端311可以向本侧终端301发送用于表征对侧终端311将要向本侧终端301写入数据的第一写入请求,当本侧终端301中的RDMA设备306接收到第一写入请求后,代理进程305可以根据该第一写入请求指示RDMA设备306将数据交换区304中有关可共享RDMA链接A的关联内存地址[1,100]通过可共享RDMA链接A发送给对侧终端311,使得对此终端可以再次通过可共享RDMA链接A发送至少包含字符串“ABC”的写入数据、写入地址[50,60]的第二写入请求至本侧终端301,当本侧终端301中的RDMA设备306接收到第二写入请求,可以根据第二写入请求将包含字符串“ABC”的写入数据具体写入数据交换区304的[50,60]地址中。
图4是一示例性实施例中的一种电子设备的示意结构图。请参考图4,在硬件层面,该电子设备包括处理器、内部总线、网络接口、内存以及非易失性存储器,当然还可能包括其他所需要的硬件。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成可共享远程直接数据存取链接的创建装置。当然,除了软件实现方式之外,本说明书并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
与前述可共享远程直接数据存取链接的创建方法的实施例相对应,本说明书还提供了可共享远程直接数据存取链接的创建装置的实施例。
请参考图5,图5是一示例性实施例示出的一种可共享远程直接数据存取链接的创建装置的结构示意图。如图5所示,在软件实施方式中,该可共享远程直接数据存取链接的创建装置应用于本侧终端,可以包括:
创建请求接收单元501,用于接收所述本侧终端上的第一应用进程发起的针对第一可共享远程直接数据存取RDMA链接的第一创建请求,所述第一创建请求为所述第一可共享RDMA链接所指示的关联内存地址为所述第一应用进程与所述本侧终端上的第二应用进程的共享内存地址;
链接创建单元502,用于根据所述第一创建请求在所述本侧终端与对侧终端之间创建所述第一可共享RDMA链接,以使所述共享内存地址作为所述第一可共享RDMA链接的关联内存地址注册至所述本侧终端上的RDMA设备。
可选的,所述根据所述第一创建请求在所述本侧终端与对侧终端之间创建所述第一可共享RDMA链接,所述链接创建单元502具体用于:
在所述第一创建请求包含所述共享内存地址的信息且将该共享内存地址的信息标记为所述第一可共享RDMA链接的关联内存地址的情况下,根据所述第一创建请求中包含的所述共享内存地址创建所述第一可共享RDMA链接;或者,
所述第一创建请求包含已创建的第二可共享RDMA链接的信息的情况下,获取所述第二可共享RDMA链接的上下文信息,并根据所述上下文信息创建所述第一可共享RDMA链接;其中,所述上下文信息记录的所述第二可共享RDMA链接的关联内存地址为所述共享内存地址。
可选的,所述本侧终端与所述对侧终端之间创建有多条可共享RDMA链接,且所述本侧终端上维护有包含所述多条可共享RDMA链接的上下文信息,该上下文信息包含相应可共享RDMA链接的关联内存地址,所述装置还包括:
链接确定单元503,用于接收任一应用进程发起的针对所述对侧终端的数据传输请求,所述任一应用进程对应所述共享内存地址;
若所述任一应用进程未在所述数据传输请求中指示将使用的可共享RDMA链接,根据所述上下文信息确定所述多条可共享RDMA链接中关联内存地址为所述共享内存地址的可共享RDMA链接,并从确定出的可共享RDMA链接中选择一条目标可共享RDMA链接响应所述数据传输请求。
可选的,所述装置还包括:
链接复用单元504,用于若所述任一应用进程在所述数据传输请求中指示了将使用的可共享RDMA链接,则通过所述将使用的可共享RDMA链接响应所述数据传输请求。
可选的,所述装置还包括:
共享内存发送单元505,用于将所述共享内存地址通过所述RDMA设备发送至所述对侧终端,以使所述对侧终端中与所述第一可共享RDMA链接关联的内存地址与所述共享内存地址基于所述第一可共享RDMA链接实现数据交互。
可选的,所述装置还包括:
数据写入单元506,通过任一可共享RDMA链接接收所述对侧终端上的任一应用进程发起的针对所述本侧终端的写入操作请求,所述任一可共享RDMA链接的关联内存地址为所述共享内存地址;
在所述写入操作请求包含目标地址段的情况下,将所述对侧终端发送的数据写入目标地址段,所述目标地址段为所述共享内存地址中划分出的部分内存地址段。
在所述写入操作请求未包含写入数据的内存地址的情况下,将所述对侧终端发送的数据写入所述共享内存地址。
可选的,所述第一应用进程与所述第二应用进程之间相互独立,或者两者为父子进程。
可选的,所述本侧终端上运行有代理进程,所述代理进程用于实现下述至少之一:
对所述第一创建请求进行监听与响应;
在所述RDMA设备与所述共享内存地址之间进行数据交互。
可选的,所述本侧终端上创建有针对所述共享内存地址的应用程序接口API;其中,所述API用于提供至对应于所述共享内存地址的应用进程,以由该应用进程对所述共享内存地址进行访问。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本说明书中描述的主题及功能操作的实施例可以在以下中实现:数字电子电路、有形体现的计算机软件或固件、包括本说明书中公开的结构及其结构性等同物的计算机硬件、或者它们中的一个或多个的组合。本说明书中描述的主题的实施例可以实现为一个或多个计算机程序,即编码在有形非暂时性程序载体上以被数据处理装置执行或控制数据处理装置的操作的计算机程序指令中的一个或多个模块。可替代地或附加地,程序指令可以被编码在人工生成的传播信号上,例如机器生成的电、光或电磁信号,该信号被生成以将信息编码并传输到合适的接收机装置以由数据处理装置执行。计算机存储介质可以是机器可读存储设备、机器可读存储基板、随机或串行存取存储器设备、或它们中的一个或多个的组合。
本说明书中描述的处理及逻辑流程可以由执行一个或多个计算机程序的一个或多个可编程计算机执行,以通过根据输入数据进行操作并生成输出来执行相应的功能。所述处理及逻辑流程还可以由专用逻辑电路—例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)来执行,并且装置也可以实现为专用逻辑电路。
适合用于执行计算机程序的计算机包括,例如通用和/或专用微处理器,或任何其他类型的中央处理单元。通常,中央处理单元将从只读存储器和/或随机存取存储器接收指令和数据。计算机的基本组件包括用于实施或执行指令的中央处理单元以及用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括用于存储数据的一个或多个大容量存储设备,例如磁盘、磁光盘或光盘等,或者计算机将可操作地与此大容量存储设备耦接以从其接收数据或向其传送数据,抑或两种情况兼而有之。然而,计算机不是必须具有这样的设备。此外,计算机可以嵌入在另一设备中,例如移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏操纵台、全球定位系统(GPS)接收机、或例如通用串行总线(USB)闪存驱动器的便携式存储设备,仅举几例。
适合于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、媒介和存储器设备,例如包括半导体存储器设备(例如EPROM、EEPROM和闪存设备)、磁盘(例如内部硬盘或可移动盘)、磁光盘以及CD ROM和DVD-ROM盘。处理器和存储器可由专用逻辑电路补充或并入专用逻辑电路中。
虽然本说明书包含许多具体实施细节,但是这些不应被解释为限制任何发明的范围或所要求保护的范围,而是主要用于描述特定发明的具体实施例的特征。本说明书内在多个实施例中描述的某些特征也可以在单个实施例中被组合实施。另一方面,在单个实施例中描述的各种特征也可以在多个实施例中分开实施或以任何合适的子组合来实施。此外,虽然特征可以如上所述在某些组合中起作用并且甚至最初如此要求保护,但是来自所要求保护的组合中的一个或多个特征在一些情况下可以从该组合中去除,并且所要求保护的组合可以指向子组合或子组合的变型。
类似地,虽然在附图中以特定顺序描绘了操作,但是这不应被理解为要求这些操作以所示的特定顺序执行或顺次执行、或者要求所有例示的操作被执行,以实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的分离不应被理解为在所有实施例中均需要这样的分离,并且应当理解,所描述的程序组件和系统通常可以一起集成在单个软件产品中,或者封装成多个软件产品。
由此,主题的特定实施例已被描述。其他实施例在所附权利要求书的范围以内。在某些情况下,权利要求书中记载的动作可以以不同的顺序执行并且仍实现期望的结果。此外,附图中描绘的处理并非必需所示的特定顺序或顺次顺序,以实现期望的结果。在某些实现中,多任务和并行处理可能是有利的。
以上所述仅为本说明书的较佳实施例而已,并不用以限制本说明书,凡在本说明书的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书保护的范围之内。

Claims (11)

1.一种可共享远程直接数据存取链接的创建方法,其特征在于,应用于本侧终端,所述方法包括:
接收所述本侧终端上的第一应用进程发起的针对第一可共享远程直接数据存取RDMA链接的第一创建请求,所述第一创建请求为所述第一可共享RDMA链接所指示的关联内存地址为所述第一应用进程与所述本侧终端上的第二应用进程的共享内存地址;
根据所述第一创建请求在所述本侧终端与对侧终端之间创建所述第一可共享RDMA链接,以使所述共享内存地址作为所述第一可共享RDMA链接的关联内存地址注册至所述本侧终端上的RDMA设备;
所述根据所述第一创建请求在所述本侧终端与对侧终端之间创建所述第一可共享RDMA链接,包括:
所述第一创建请求包含已创建的第二可共享RDMA链接的信息的情况下,获取所述第二可共享RDMA链接的上下文信息,并根据所述上下文信息创建所述第一可共享RDMA链接;其中,所述上下文信息记录的所述第二可共享RDMA链接的关联内存地址为所述共享内存地址。
2.根据权利要求1所述的方法,其特征在于,所述本侧终端与所述对侧终端之间创建有多条可共享RDMA链接,且所述本侧终端上维护有包含所述多条可共享RDMA链接的上下文信息,该上下文信息包含相应可共享RDMA链接的关联内存地址,还包括:
接收任一应用进程发起的针对所述对侧终端的数据传输请求,所述任一应用进程对应所述共享内存地址;
若所述任一应用进程未在所述数据传输请求中指示将使用的可共享RDMA链接,根据所述上下文信息确定所述多条可共享RDMA链接中关联内存地址为所述共享内存地址的可共享RDMA链接,并从确定出的可共享RDMA链接中选择一条目标可共享RDMA链接响应所述数据传输请求。
3.根据权利要求2所述的方法,其特征在于,还包括:
若所述任一应用进程在所述数据传输请求中指示了将使用的可共享RDMA链接,则通过所述将使用的可共享RDMA链接响应所述数据传输请求。
4.根据权利要求1所述的方法,其特征在于,还包括:
将所述共享内存地址通过所述RDMA设备发送至所述对侧终端,以使所述对侧终端中与所述第一可共享RDMA链接关联的内存地址与所述共享内存地址基于所述第一可共享RDMA链接实现数据交互。
5.根据权利要求1所述的方法,其特征在于,还包括:
通过任一可共享RDMA链接接收所述对侧终端上的任一应用进程发起的针对所述本侧终端的写入操作请求,所述任一可共享RDMA链接的关联内存地址为所述共享内存地址;
在所述写入操作请求包含目标地址段的情况下,将所述对侧终端发送的数据写入目标地址段,所述目标地址段为所述共享内存地址中划分出的部分内存地址段;
在所述写入操作请求未包含写入数据的内存地址的情况下,将所述对侧终端发送的数据写入所述共享内存地址。
6.根据权利要求1所述的方法,其特征在于,所述第一应用进程与所述第二应用进程之间相互独立,或者两者为父子进程。
7.根据权利要求1所述的方法,其特征在于,所述本侧终端上运行有代理进程,所述代理进程用于实现下述至少之一:
对所述第一创建请求进行监听与响应;
在所述RDMA设备与所述共享内存地址之间进行数据交互。
8.根据权利要求1所述的方法,其特征在于,所述本侧终端上创建有针对所述共享内存地址的应用程序接口API;其中,所述API用于提供至对应于所述共享内存地址的应用进程,以由该应用进程对所述共享内存地址进行访问。
9.一种可共享远程直接数据存取链接的创建装置,其特征在于,应用于本侧终端,所述装置包括:
创建请求接收单元,用于接收所述本侧终端上的第一应用进程发起的针对第一可共享远程直接数据存取RDMA链接的第一创建请求,所述第一创建请求为所述第一可共享RDMA链接所指示的关联内存地址为所述第一应用进程与所述本侧终端上的第二应用进程的共享内存地址;
链接创建单元,用于根据所述第一创建请求在所述本侧终端与对侧终端之间创建所述第一可共享RDMA链接,以使所述共享内存地址作为所述第一可共享RDMA链接的关联内存地址注册至所述本侧终端上的RDMA设备;
所述链接创建单元具体用于:所述第一创建请求包含已创建的第二可共享RDMA链接的信息的情况下,获取所述第二可共享RDMA链接的上下文信息,并根据所述上下文信息创建所述第一可共享RDMA链接;其中,所述上下文信息记录的所述第二可共享RDMA链接的关联内存地址为所述共享内存地址。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1~8任一所述方法的步骤。
11.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1~8任一所述方法的步骤。
CN202210195653.4A 2022-03-01 2022-03-01 可共享远程直接数据存取链接的创建方法及装置 Active CN114780465B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202210195653.4A CN114780465B (zh) 2022-03-01 2022-03-01 可共享远程直接数据存取链接的创建方法及装置
PCT/CN2023/075204 WO2023165309A1 (zh) 2022-03-01 2023-02-09 可共享远程直接数据存取链接的创建方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210195653.4A CN114780465B (zh) 2022-03-01 2022-03-01 可共享远程直接数据存取链接的创建方法及装置

Publications (2)

Publication Number Publication Date
CN114780465A CN114780465A (zh) 2022-07-22
CN114780465B true CN114780465B (zh) 2024-04-16

Family

ID=82424174

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210195653.4A Active CN114780465B (zh) 2022-03-01 2022-03-01 可共享远程直接数据存取链接的创建方法及装置

Country Status (2)

Country Link
CN (1) CN114780465B (zh)
WO (1) WO2023165309A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114780465B (zh) * 2022-03-01 2024-04-16 阿里巴巴(中国)有限公司 可共享远程直接数据存取链接的创建方法及装置
CN115623057A (zh) * 2022-09-30 2023-01-17 阿里云计算有限公司 基于rdma的建连方法、装置、设备及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190087783A (ko) * 2018-01-17 2019-07-25 한국전자통신연구원 원격 직접 메모리 접근을 통한 분산 처리 장치 및 그 방법
CN112422615A (zh) * 2018-02-24 2021-02-26 华为技术有限公司 一种通信的方法及装置
CN113287286A (zh) * 2019-01-30 2021-08-20 华为技术有限公司 通过rdma进行分布式存储节点中的输入/输出处理
CN113326154A (zh) * 2021-06-28 2021-08-31 深信服科技股份有限公司 连接管理方法、装置、电子设备和存储介质
CN113535425A (zh) * 2021-06-16 2021-10-22 南京南瑞继保电气有限公司 一种数据发送方法、装置、电子设备及存储介质
CN113626184A (zh) * 2021-06-30 2021-11-09 济南浪潮数据技术有限公司 一种超融合性能优化方法、装置及设备

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8904064B2 (en) * 2008-10-24 2014-12-02 International Business Machines Corporation Managing an out-of-order asynchronous heterogeneous remote direct memory access (RDMA) message queue
US8490113B2 (en) * 2011-06-24 2013-07-16 International Business Machines Corporation Messaging in a parallel computer using remote direct memory access (‘RDMA’)
CN103607428B (zh) * 2013-10-30 2017-11-17 华为技术有限公司 一种访问共享内存的方法和装置
US10083193B2 (en) * 2015-01-09 2018-09-25 International Business Machines Corporation Efficient remote pointer sharing for enhanced access to key-value stores
US10157146B2 (en) * 2015-02-12 2018-12-18 Red Hat Israel, Ltd. Local access DMA with shared memory pool
US10225344B2 (en) * 2016-08-12 2019-03-05 International Business Machines Corporation High-performance key-value store using a coherent attached bus
CN113852656B (zh) * 2020-06-28 2023-02-10 华为技术有限公司 一种数据传输方法、处理器系统及内存访问系统
CN114780465B (zh) * 2022-03-01 2024-04-16 阿里巴巴(中国)有限公司 可共享远程直接数据存取链接的创建方法及装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190087783A (ko) * 2018-01-17 2019-07-25 한국전자통신연구원 원격 직접 메모리 접근을 통한 분산 처리 장치 및 그 방법
CN112422615A (zh) * 2018-02-24 2021-02-26 华为技术有限公司 一种通信的方法及装置
CN113287286A (zh) * 2019-01-30 2021-08-20 华为技术有限公司 通过rdma进行分布式存储节点中的输入/输出处理
CN113535425A (zh) * 2021-06-16 2021-10-22 南京南瑞继保电气有限公司 一种数据发送方法、装置、电子设备及存储介质
CN113326154A (zh) * 2021-06-28 2021-08-31 深信服科技股份有限公司 连接管理方法、装置、电子设备和存储介质
CN113626184A (zh) * 2021-06-30 2021-11-09 济南浪潮数据技术有限公司 一种超融合性能优化方法、装置及设备

Also Published As

Publication number Publication date
CN114780465A (zh) 2022-07-22
WO2023165309A1 (zh) 2023-09-07

Similar Documents

Publication Publication Date Title
JP6871957B2 (ja) エミュレートされたエンドポイントコンフィグレーション
CN114780465B (zh) 可共享远程直接数据存取链接的创建方法及装置
US8966499B2 (en) Virtual switch extensibility
KR101371936B1 (ko) 메모리 장치들에 의해 호스트 메모리 액세스를 제어하기 위한 방법들 및 시스템들
US8645594B2 (en) Driver-assisted base address register mapping
US10509664B1 (en) Distributed virtual machine disk image deployment
JP2008269288A (ja) 起動システム、起動プログラムおよびその方法。
US9241292B2 (en) Seamless application connectivity
WO2015070640A1 (zh) 设备远程访问的方法、瘦客户端和虚拟机
WO2011116626A1 (zh) 数据共享方法及便携终端
KR100592105B1 (ko) 공유 메모리의 분할 영역의 다중 억세스 제어 방법 및 공유메모리를 가지는 휴대형 단말기
CN107861691A (zh) 一种多控存储系统的负载均衡方法和装置
US20110296437A1 (en) Method and apparatus for lockless communication between cores in a multi-core processor
CN103186498A (zh) 通过sas域在sata主机与sata目标装置间通信的方法和结构
US20130054885A1 (en) Multiport memory element and semiconductor device and system including the same
JP2020521388A (ja) パケット伝送方法及び装置
CN114706531A (zh) 数据处理方法、装置、芯片、设备及介质
US20100332687A1 (en) METHOD AND APPARATUS FOR RESTRICTING THE EXECUTION OF OPEN SERVICES GATEWAY INITIATIVE (OSGi) LIFE CYCLE COMMANDS
JP2008547139A (ja) 一方向全二重インタフェースを有するメモリのポスト書き込みバッファのための方法、装置及びシステム
CN112596669A (zh) 一种基于分布式存储的数据处理方法及装置
CN106933646B (zh) 一种创建虚拟机的方法及装置
CN106851535B (zh) 多系统共享蓝牙的方法及装置
WO2022227563A1 (zh) 一种硬件电路、数据搬移方法、芯片和电子设备
CN115934338A (zh) 进程间的通信方法及装置
KR20090128605A (ko) 버스트 전송이 가능한 프로세서간 통신 장치, 프로세서간통신 장치를 포함하는 시스템 및 프로세서간 통신 장치를구동하기 위한 디바이스 드라이버

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