减少远程直接内存访问系统中的事务丢弃的制作方法

文档序号:34266406发布日期:2023-05-25 07:33阅读:65来源:国知局
减少远程直接内存访问系统中的事务丢弃的制作方法

本发明大体上涉及数据通信和远程直接内存访问(remote direct memoryaccess,rdma)系统领域;更具体地,涉及请求设备、响应设备和用于减少远程直接内存访问系统中的事务丢弃的方法。


背景技术:

1、网络中多个计算设备之间的高速数据通信引起了人们对数据通信可靠性和效率的关注。传统上,采用传统的远程直接内存访问(remote direct memory access,rdma)技术(或协议),其中,传统的请求设备(或客户端)等硬件设备直接访问传统的响应设备(或服务器)的存储器。传统rdma技术需要在传统请求设备尝试直接内存访问(direct memoryaccess,dma)请求(例如rdma读请求或rdma写请求)时固定(表示始终存在于物理随机存取存储器(random access memory,ram)中)用于任何rdma事务(例如,本地和远程rdma事务)的虚拟内存(即传统响应设备的内存的一部分)。因此,在传统的rdma技术中,使用内存固定等一般方法来确保直接访问存储器(例如物理内存)的传统请求设备不必处理可以由其它实体(例如典型的操作系统(operating system,os))改变或完全交换出的页面的映射。内存固定是典型操作系统使用的一种技术,用于防止内存子系统将物理页从一个位置移动到另一位置,并可能更改虚拟地址(virtual address,va)到物理地址(physical address,pa)的转换。内存固定还防止内存子系统的内存页从随机存取存储器(random accessmemory,ram)移动到备份存储器或交换区域(该过程称为“交换出”)。例如,在一种情况下,固定的内存(即虚拟内存或内存子系统不能被典型操作系统交换出或回收)被传统请求设备用于直接内存访问(direct memory access,dma),因为大多数传统硬件设备在尝试访问内存子系统时无法处理页面错误。因此,固定用于直接内存访问的内存通常是传统数据通信应用的标准做法。固定的内存占总内存的很大一部分,而且非常昂贵(估计为传统响应设备(或服务器)的总成本的40%)。但是,内存固定对内存利用率有不利影响,因为固定的内存无法被交换出,并限制了典型操作系统(operating system,os)超额认购内存的能力,这又减少了其它应用可用的总内存。总内存对应于物理内存和虚拟内存。此外,固定的内存一次只能由单个客户操作系统使用,因此减少了其它虚拟机和不同进程可用的总内存。此外,常用的虚拟机管理程序(例如内核虚拟机(kernel based virtual machine,kvm))将虚拟机(virtual machine,vm)的整个内存固定为用于直接内存访问(direct memory access,dma),因此限制了其余计算机或系统可用的总内存(此过程称为静态固定)。因此,内存固定(或静态内存固定)导致服务器的成本和内存需求增加,因此,数据中心需要向每台服务器提供大量ram,以考虑固定的内存,即使大多数固定的内存在任何给定时间点都未使用,这是不可取的。

2、目前,已经进行了某些尝试,通过使用传统的非固定rdma技术来降低服务器的成本和内存要求。传统的非固定rdma技术在内存管理方面提供了比固定rdma技术更好的灵活性,它允许内存(即物理内存内容或应用程序虚拟内存)被页调出并在rdma事务请求到达时按需交换回内存。但是,传统的非固定rdma技术存在高事务丢弃的技术问题,因此,在给定的rdma系统中,事务完成延迟高且不可靠。传统的非固定rdma技术需要一种机制,每当硬件设备试图获得当前不在ram中的虚拟地址(virtual address,va)的转换时,该机制可以为页面错误提供服务。传统的非固定rdma技术可以用于传统的请求设备(或传统的请求方)和传统的响应设备(或传统的响应方)。例如,在传统的请求设备中,虚拟地址在准备工作队列元素(work queue element,wqe)时是已知的。因此,传统的请求设备在请求包(例如rdma请求包)被生成之前处理虚拟地址(physical address,va)到物理地址(physical address,pa)的转换(如果需要,页调入)。在传统的响应设备中,只有当通过网络接收到请求包(即rdma请求包)时,虚拟地址才是已知的。虚拟地址从请求包头部(例如,在标记操作的情况下)或从传统的响应设备的接收队列(例如,在未标记操作的情况下)获取。在获取虚拟地址后,传统的响应设备通常开始处理所需的转换请求。如果由于未映射或交换出的页面,在处理转换请求时发生页面错误,则传统的响应设备的软件(或设备驱动程序)处理调用或分配请求。通常,服务页面错误所需的时间(例如,高达数百微秒)远大于以线速向网络发送或从网络接收数据页面所需的时间(例如,25gbps至400gbps)。这意味着,在传统的非固定rdma系统中,至少有一部分时间,rdma事务请求被暂停或丢弃,这又会增加事务完成延迟和/或由于不同错误而导致连接被断开的风险。因此,由于传统的请求设备、传统的响应设备、方法和传统的远程直接内存访问系统,存在低效和不可靠的数据通信的技术问题。

3、因此,根据上述讨论,需要克服与用于数据通信的传统远程直接内存访问(remotedirect memory access,rdma)技术的传统请求设备、传统响应设备和传统方法相关的上述缺点。


技术实现思路

1、本发明旨在提供请求设备、响应设备和用于减少远程直接内存访问(remotedirect memory access,rdma)系统中的事务丢弃的方法。本发明旨在通过传统的请求设备、传统的响应设备、方法和传统的远程直接内存访问系统来为解决现有的低效和不可靠数据通信问题提供方案。本发明的目的是提供一种方案,该方案至少部分克服了现有技术中遇到的问题,并提供改进的设备、方法和改进的rdma系统,以实现高效(例如减少的事务丢弃)和可靠的数据通信。本发明的目的是通过所附独立权利要求中提供的方案实现的。本发明的有利实现方式在从属权利要求中进一步定义。

2、在一个方面中,本发明提供了一种请求设备。所述请求设备包括存储器、控制器和通信接口。所述控制器用于通过所述通信接口向响应设备发送包括预取操作的消息,所述预取操作指示将由所述响应设备加载到所述响应设备的存储器的内存区域。所述控制器还用于通过所述通信接口向所述响应设备发送请求,所述请求与请求数据和所述内存区域相关。所述控制器还用于通过所述通信接口从所述响应设备接收响应消息。

3、本发明的请求设备能够预取当前可能未分配或交换出的所需内存页,以减少延迟(或完整事务延迟)。在请求(例如rdma读请求或rdma写请求)之前传输包括预取操作(或预取提示)的消息使响应设备能够(根据需要)提前预取所需的内存页,并准备好通过使用其它方法(例如暂存器缓冲区、内存分配等)接受请求(即rdma读请求或rdma写请求)。此外,如果响应设备处没有物理内存缓冲区来服务请求(即rdma读请求或rdma写请求),则在请求之前传输包括预取操作(或预取提示)的消息会降低响应设备上丢弃或暂停请求(即rdma读请求或rdma写请求)的可能性。所公开的请求设备与响应设备共享关于rdma请求(即rdma读请求或rdma写请求)的信息,以减少rdma请求(即rdma读请求或rdma写请求)的暂停或丢弃的可能性,因此提高了数据通信的可靠性。请求(即rdma读请求或rdma写请求)与使用预取操作预取的内存页相关,因此使得延迟减少。此外,来自响应设备的响应消息确认请求设备是否成功执行请求(即rdma读请求或rdma写请求),并以这种方式进一步提高了数据通信的可靠性和效率。

4、在一种实现方式中,所述请求是写命令,所述写命令携带所述请求数据,用于将所述请求数据写入所述内存区域,并且所述响应消息是对所述写命令的确认。

5、在一个示例中,请求与使用写命令在所需的内存区域(例如内存地址)处写入请求数据相关。请求设备接收响应消息,该响应消息提供写命令是否成功执行的确认。

6、在另一种实现方式中,所述请求是读命令,所述读命令携带内存地址,用于从所述内存区域中的所述内存地址读取所述请求数据,并且所述响应消息是携带所述读取的请求数据的消息。

7、在一个示例中,请求可能与使用读命令从内存区域中的内存地址读取请求数据相关。请求设备接收响应消息,该响应消息在成功执行读命令时提供读取的请求数据。

8、在另一种实现方式中,所述内存区域的大小大于所述请求数据。所述控制器还用于通过所述通信接口向所述响应设备发送与所述内存区域相关的多个请求。

9、在rdma事务(例如rdma读事务或rdma写事务)涉及在请求设备(或发起方)与响应设备(或目标)之间交换非常长的消息(或数据),例如高达2千兆字节(gigabyte,gb)。为了包括这样长消息的交换(例如每个约2gb),控制器用于发送与响应设备的内存区域相关的多个请求。因此,在这种情况下,总内存区域大于rdma事务,以便可能在客户端(或单个请求设备)与多个服务器(或多个响应设备)或服务器(或单个响应设备)与多个客户端(或多个请求设备)之间同时服务多个请求(或多个消息)。在rdma事务大于总物理内存大小并且内存未固定的情况下,可以根据需要交换进和/或交换出内存,以实现在大于rdma事务的虚拟内存的上下文中处理较大的rdma事务。

10、在另一种实现方式中,所述控制器还用于在发送所述请求之前接收所述预取操作的确认消息。

11、请求设备的控制器在发送请求之前接收预取操作的确认消息,指示预取操作是否成功执行。预取操作的成功执行降低了rdma事务(即rdma读事务或rdma写事务)暂停的可能性和响应设备处重传的等待时间。例如,在一种情况下,如果所需的内存页被交换出,则在这种情况下,与发送否定确认(例如接收器未就绪(receiver not ready,rnr))或简单地在响应设备上丢弃事务(例如rdma读事务或rdma写事务)并等待循环时间目标(rto(即在计划外事务丢弃后重新访问数据的最大时间量))相比,在发送请求之前预取操作的确认消息会减少延迟。在另一种情况下,如果所需的内存页没有被交换出,则最大延迟是1个往返时间(round trip time,rtt)。

12、在另一种实现方式中,所述控制器还用于在从发送所述预取操作起经过一段等待时间后发送所述请求(例如rdma读事务或rdma写事务)。

13、从发送预取操作起经过的一段等待时间使响应设备能够高效地执行请求(例如rdma读请求或rdma写请求)。此外,等待时间降低了响应设备上请求丢弃的可能性,因此,使数据通信更可靠。

14、在另一种实现方式中,包括所述预取操作的所述消息是专用预取操作消息。

15、专用预取操作消息向响应设备提供预取提示,以主动预取当前未分配或交换出的所需内存页(或内存地址),从而导致延迟降低。

16、在另一种实现方式中,包括所述预取操作的所述消息包括另一请求的请求消息的附加有效载荷中的预取操作。

17、另一请求的请求消息的附加有效载荷中的预取操作使响应设备能够提前预取所需的内存页,并准备好高效地接受请求(即rdma读请求或rdma写请求)。

18、在另一种实现方式中,所述请求设备被布置成用于rdma。

19、请求设备具有在rdma中高效执行的能力。

20、在另一方面中,本发明提供了一种用于请求设备的方法。所述请求设备包括存储器、控制器和通信接口。所述方法包括通过所述通信接口向响应设备发送包括预取操作的消息,所述预取操作指示将由所述响应设备加载到所述响应设备的存储器的内存区域。所述方法还包括通过所述通信接口向所述响应设备发送请求,所述请求与请求数据和所述内存区域相关。所述方法还包括通过所述通信接口从所述响应设备接收响应消息。

21、该方面所述的方法实现了本发明的请求设备的所有优点和效果。

22、在一种实现方式中,提供一种携带计算机指令的计算机可读介质,所述计算机指令当加载到请求设备的控制器中并由其执行时,使所述请求设备能够实现所述方法。

23、携带计算机指令的计算机可读介质(具体地,非瞬时性计算机可读介质)实现了请求设备或方法的所有优点和效果。

24、在另一方面中,本发明提供了一种请求设备。所述请求设备包括存储器、通信接口和软件模块。软件模块包括预取操作消息发送器模块,通过所述通信接口向响应设备发送包括预取操作的消息,所述预取操作指示将由所述响应设备加载到所述响应设备的存储器的内存区域。软件模块还包括请求发送器模块,用于通过通信接口向响应设备发送请求,该请求与请求数据和内存区域相关。软件模块还包括响应消息接收器模块,用于通过通信接口从响应设备接收响应消息。

25、与预取操作消息发送器模块相关的软件模块在执行时使请求设备向响应设备发送包括预取操作的消息。预取操作包括将所需的内存区域预取到响应设备的存储器(例如cpu的高速缓存存储器或内部存储器)中,从而实现快速数据通信。与请求发送器模块相关的软件模块在执行时使请求设备向响应设备发送请求(例如读请求或写请求)。该请求与所需的内存区域相关,该所需的内存区域被预取到响应设备的存储器中,因此使延迟降低(或低响应时间)。与响应消息接收器模块相关的软件模块的执行确认请求设备是否成功执行请求(即读请求或写请求),从而提高数据通信的可靠性。

26、在另一方面中,本发明提供了一种响应设备。所述响应设备包括存储器、控制器和通信接口。所述控制器用于通过所述通信接口从请求设备接收包括预取操作的消息,所述预取操作指示将由所述响应设备加载到所述存储器中的内存区域。所述控制器还用于将所述指示的内存区域加载到所述存储器中。所述控制器还用于通过所述通信接口从所述请求设备接收请求,所述请求与请求数据和内存区域相关。所述控制器还用于对所述内存区域中的所述请求数据执行所述请求。所述控制器还用于通过所述通信接口向所述请求设备发送响应消息。

27、本发明的响应设备使用包括来自请求设备的预取操作的消息来预取所需的内存。预取的内存区域被加载到响应设备的存储器(例如cpu的高速缓存存储器或内部存储器)中,从而实现更快的数据通信。此外,响应设备接收与请求数据(例如读请求或写请求)和内存区域(即预取的内存区域)相关的请求,因此使延迟降低。响应设备的控制器向请求设备发送响应消息,以便提供与请求数据和内存区域相关的请求是否成功执行的确认,因此,使数据通信更可靠。

28、在一种实现方式中,所述控制器还用于在将所述指示的内存区域加载到所述存储器之前,确定所述内存区域是否存储在所述存储器中,如果所述内存区域未存储在所述存储器中,则将所述指示的内存区域加载到所述存储器中。

29、响应设备的控制器确定指示的内存区域对存储器的可用性,或以其它方式将指示的内存区域加载到存储器,以便减少在响应设备上暂停rdma事务的可能性和延迟。这进一步使数据通信更可靠且更快。

30、在另一种实现方式中,所述控制器还用于向所述请求设备发送确认消息,所述确认消息指示所述控制器是否能够将所述指示的内存区域加载到所述存储器。

31、确认消息的传输向请求设备提供指示的内存区域是否被加载到存储器的指示。对这种实现的确认可以使rdma事务被成功执行,并减少延迟。

32、另一方面,本发明提供了一种用于响应设备的方法。所述响应设备包括存储器、控制器和通信接口。所述方法包括通过所述通信接口从请求设备接收包括预取操作的消息,所述预取操作指示将由所述响应设备加载到所述存储器中的内存区域。所述方法还包括将所述指示的内存区域加载到所述存储器。所述方法还包括通过所述通信接口从所述请求设备接收请求,所述请求与请求数据和内存区域相关。所述方法还包括对所述内存区域中的所述请求数据执行所述请求。所述方法还包括通过所述通信接口向所述请求设备发送响应消息。

33、该方面所述的方法实现了本发明的响应设备的所有优点和效果。

34、在一种实现方式中,提供一种携带计算机指令的计算机可读介质,所述计算机指令当加载到响应设备的控制器中并由其执行时,使所述响应设备能够实现所述方法。

35、携带计算机指令的计算机可读介质(具体地,非瞬时性计算机可读介质)实现了响应设备或方法的所有优点和效果。

36、在另一方面中,本发明提供了一种响应设备。所述响应设备包括存储器、通信接口和软件模块。软件模块包括预取操作接收模块,通过所述通信接口从请求设备接收包括预取操作的消息,所述预取操作指示将由所述响应设备加载到所述存储器的内存区域。软件模块还包括内存加载模块,用于将所指示的内存区域加载到存储器中。软件模块还包括请求接收模块,用于通过通信接口从请求设备接收请求,该请求与请求数据和内存区域相关。软件模块还包括执行模块,用于对内存区域中的请求数据执行请求。软件模块还包括发送模块,用于通过通信接口向请求设备发送响应消息。

37、预取操作接收模块的执行使响应设备能够预取指示的内存区域,从而产生更快的数据通信。执行用于将指示的内存区域加载到响应设备的存储器中的内存加载模块能够降低延迟。执行与请求接收模块相关的软件模块,所述请求接收模块用于接收与请求数据和内存区域(例如,指示的内存区域)相关的请求,并使请求被更快地处理。执行模块使请求被更快地处理。此外,发送模块当执行时使响应设备发送响应消息,该响应消息向请求设备提供请求是否成功执行的确认,因此提高了数据通信的可靠性。

38、在另一方面中,本发明提供了一种系统。该系统包括根据上述权利要求所述的请求设备和响应设备。

39、本发明的系统在减少事务丢弃(例如rdma读事务或rdma写事务)和降低延迟方面提高了数据通信可靠性,从而加速了数据通信。

40、另一方面,本发明提供了一种用于系统的方法。该系统包括响应设备和请求设备。该方法包括请求设备向响应设备发送包括预取操作的消息,该预取操作指示将由响应设备加载到响应设备的存储器中的内存区域。该方法还包括响应设备接收包括预取操作的消息,并将指示的内存区域加载到存储器。该方法还包括请求设备向响应设备发送请求,所述请求与请求数据和内存区域相关。该方法还包括响应设备从请求设备接收请求,对内存区域中的请求数据执行请求,并向请求设备发送响应消息。该方法还包括请求设备从响应设备接收响应消息。

41、本方面的方法实现了本发明系统的所有优点和效果。

42、需要说明的是,本技术中描述的所有设备、元件、电路、单元、模块和装置可以在软件或硬件元件或其任何类型的组合中实现。本技术中描述的各种实体执行的所有步骤以及所描述的将由各种实体执行的功能旨在表明相应的实体用于执行相应的步骤和功能。虽然在以下具体实施例的描述中,外部实体执行的具体功能或步骤没有在执行具体步骤或功能的实体的具体详述元件的描述中反映,但是技术人员应清楚,这些方法和功能可以通过相应的硬件或软件元件或其任何组合实现。可以理解的是,本发明的特征易于以各种组合进行组合,而不脱离由所附权利要求书所定义的本发明的范围。

43、本发明的附加方面、优点、特征和目的从附图和结合以下所附权利要求书解释的说明性实现方式的详细描述中变得显而易见。

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