一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

发送端或接收端数据的远程持久化方法和远程持久化系统与流程

2022-03-09 10:22:13 来源:中国专利 TAG:


1.本技术涉及计算机技术领域,具体涉及一种发送端或接收端数据的远程持久化方法和远程持久化系统。


背景技术:

2.远程直接数据存取(remote direct memory access,rdma)设备网络接口控制器(rdma-aware network interface controller,rnic),能够使用直接缓存访问(direct cache access,dca)技术将数据写入三级缓存(l3cache),dca可以通过英特尔数据直接输入/输出技术(data direct i/o,ddio)支持。在通过rdma写入或发送后,一部分数据仍保留在cpu缓存中,没有被持久性。也就是说,需要额外的操作将数据从cpu缓存刷新到持久化内存,例如傲腾(intel optane)持久内存((dc persistent memory module,dcpmm)。因此,为远程数据持久化提出一种既高效又可靠的通用方法是一个巨大的挑战。
3.以英特尔持久内存开发套件(pmdk)提供了两种解决方法为例:先写后读(read-after-write)和先写后发送(send-after-write)方法。先写后读(read-after-write)的方法,是禁用dca并在rdma写入后发出另一个rdma读取,以强制完成写入,并使数据在非易失性内存(non-volatile memory,nvm)进行持久化;先写后发送(send-after-write)的方法,在rdma写请求(write)后,通过发送(send)的方式发出一个刷新请求,通知远程节点持久化其收到的相关数据。然后远程节点使用另一个rdma发送(send)通知发起方数据持久化完成。
4.如上所述,read-after-write方法是禁用dca并在rdma写入后发出另一个rdma读取,以强制完成写入并使数据对nvm持久。这种方案需要特殊的bios配置,致使使其在云等环境中不是通用的。同时,read-after-write方法只使用单边动词(one-sided verb),没有远程cpu的参与,使远程节点无法对写入动作主动地做相应的处理。send-after-write方法需要多一次往返,从而增加了延迟。此外,额外的rdma读/发送动词会消耗发送端rnic的额外出站资源。随着远程节点数量的增加,浪费更加严重,给发送端节点带来了沉重的负担。


技术实现要素:

5.本技术实施例的目的是提供一种发送端或接收端数据的远程持久化方法和远程持久化系统,以解决随着远程节点数量的增加,浪费更加严重,给发送端节点带来了沉重的负担。
6.为了实现上述目的,本发明实施例提供一种发送端数据的远程持久化方法,所述发送端数据的远程持久化方法包括:构造带有数据描述信息的待持久化数据;通过发送端远程直接数据存取rdma的设备网络接口控制器rnic将所述待持久化数据发送至接收端;接收所述接收端的rdma写指令,所述rdma写指令包括接收端的即时数据;以及解析所述接收端的所述即时数据,确定完成数据持久化写入的接收端。
7.可选的,所述数据描述信息用于:所述接收端通过接收端轮询队列cq接收到所述
待持久化数据之后,通过所述数据描述信息将所述待持久化数据冲刷到所述接收端的非易失性内存nvm。
8.可选的,所述数据描述信息包括数据地址和数据长度,且所述构造带有数据描述信息的待持久化数据包括:通过64位立即数构造所述数据描述信息,其中所述立即数的高16位表示所述数据长度,所述立即数的低48位表示所述数据地址。
9.可选的,所述接收端的即时数据包括接收端关键字、和/或接收端缓存关键字。
10.可选的,在所述解析所述接收端的即时数据之前,所述发送端数据的远程持久化方法还包括:从发送端轮询队列cq中轮询所述即时数据。
11.本发明实施例还提供一种接收端数据的远程持久化方法,所述接收端数据的远程持久化方法包括:通过接收端远程直接数据存取rdma的设备网络接口控制器rnic接收待持久化数据,其中所述待持久化数据带有数据描述信息;解析所述数据描述信息,通过所述数据描述信息将所述待持久化数据冲刷到所述接收端的非易失性内存nvm;以及发送rdma写指令,以通知发送端写入数据持久化完成,所述rdma写指令包括所述接收端的即时数据。
12.可选的,所述数据描述信息包括数据地址和数据长度,其中,所述发送端通过64位立即数构造所述数据描述信息,其中所述立即数的高16位表示所述数据长度,所述立即数的低48位表示所述数据地址。
13.可选的,在所述发送所述rdma写指令之前,所述接收端数据的远程持久化方法还包括:构造所述所述接收端的即时数据,所述接收端的即时数据包括接收端关键字、和/或接收端缓存关键字。
14.本发明实施例还提供一种发送端控制装置,所述发送端控制装置包括:存储器、处理器及存储在所述存储器上并在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序,以实现根据上述任意一项所述发送端数据的远程持久化方法。
15.本发明实施例还提供一种接收端控制装置,所述接收端控制装置包括:存储器、处理器及存储在所述存储器上并在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序,以实现根据上述任意一项所述接收端数据的远程持久化方法。
16.本发明实施例还提供一种机器可读存储介质,该机器可读存储介质上存储有指令,该指令使得机器执行根据上述任意一项所述发送端数据的远程持久化方法、或执行根据上述任意一项所述接收端数据的远程持久化方法。
17.本发明实施例还提供一种数据的远程持久化系统,所述数据的远程持久化系统包括发送端和一个或多个接收端,其中,所述发送端包括权利要求9所述的发送端控制装置、发送端远程直接数据存取rdma的设备网络接口控制器rnic,用于发送带有数据描述信息的待持久化数据,所述一个或多个接收端中的每个接收端包括权利要求10所述的接收端控制装置、接收端远程直接数据存取rdma的设备网络接口控制器rnic、接收端的非易失性内存nvm,用于将所述待持久化数据写入所述接收端的nvm,以完成数据持久化。
18.可选的,所述数据描述信息用于:所述接收端通过接收端轮询队列cq接收到所述待持久化数据后,通过所述数据描述信息将所述待持久化数据冲刷到所述接收端的nvm。
19.可选的,所述数据描述信息包括数据地址和数据长度,所述发送端控制装置用于构造带有所述数据描述信息的所述待持久化数据包括:所述发送端控制装置通过64位立即数构造所述数据描述信息,其中所述立即数的高16位表示所述数据长度,所述立即数的低
48位表示所述数据地址。
20.通过上述技术方案,本发明实施例基于rdma和nvm的通信机制,发送端发送带有数据描述信息的待持久化数据,以解决了需要额外的操作将数据从接收端的cpu缓存刷新到持久化内存的问题。发送端不再发送额外的rdma读/发送动词,不会消耗发送端rnic的额外出站资源。在保证数据完整性的基础上解决了传统方法中响应延时高、占用带宽大、通用性低的问题。
21.本技术实施例的其它特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
22.附图是用来提供对本技术实施例的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本技术实施例,但并不构成对本技术实施例的限制。在附图中:
23.图1是本发明实施例提供的发送端数据的远程持久化方法的流程示意图;
24.图2是示例远程数据持久化过程的示意图;
25.图3是本发明实施例提供的接收端数据的远程持久化方法的流程示意图;
26.图4是本发明实施例提供的数据的远程持久化系统的结构示意图。
27.附图标记说明
28.10发送端
ꢀꢀ
20接收端
29.11发送端控制装置
ꢀꢀ
21接收端控制装置
30.12发送端远程直接数据存取的设备网络接口控制器rnic
31.22接收端远程直接数据存取的设备网络接口控制器rnic
32.23接收端的非易失性内存nvm
具体实施方式
33.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,应当理解的是,此处所描述的具体实施方式仅用于说明和解释本技术实施例,并不用于限制本技术实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本技术保护的范围。
34.需要说明,若本技术实施例中有涉及方向性指示(诸如上、下、左、右、前、后
……
),则该方向性指示仅用于解释在某一特定姿态(如附图所示)下各部件之间的相对位置关系、运动情况等,如果该特定姿态发生改变时,则该方向性指示也相应地随之改变。
35.另外,若本技术实施例中有涉及“第一”、“第二”等的描述,则该“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本技术要求的保护范围之内。
36.在详细解释本发明实施例之前,先介绍现有技术缺点及本发明实施例的设计思
路。
37.发送端在通过远程直接数据存取(remote direct memory access,rdma)写入或发送到接收端后,接收端在写入接收端的非易失性内存(non-volatile memory,nvm)时,一部分数据仍保留在cpu缓存中,没有被持久化。当前解决上述问题的方法为英特尔持久内存开发套件(persistent memory development kit intel,pmdk)提供了两种解决方法:1)send-after-write方法,需要在rdma写入后发出另一个动词,这种方法会消耗更多的发送端设备网络接口控制器(rdma-aware network interface controller,rnic)资源。2)read-after-write方法,需要禁用直接缓存访问(direct cache access,dca),不能从cpu缓存中受益,以及写后发送方法会导致多次往返,自然会增加延迟。
38.远程持久化的主要挑战是如何使用最少的网络往返并消除冗余的rdma操作和nvm写入。
39.图1是本发明实施例提供的发送端数据的远程持久化方法的流程示意图,图2是示例远程数据持久化过程的示意图。应该理解的是,虽然图1或图2的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1或图2的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
40.请参考图1和图2,该发送端数据的远程持久化方法可以包括以下步骤:
41.步骤s110:构造带有数据描述信息的待持久化数据。
42.需要说明,本发明实施例所涉及的发送端和接收端仅用于描述数据的传输方向,并不限定发送端或接收端的设备仅能用作发送端接收端。
43.优选的,所述数据描述信息用于:所述接收端通过接收端轮询队列cq接收到所述待持久化数据之后,通过所述数据描述信息将所述待持久化数据冲刷到所述接收端的非易失性内存nvm。
44.以示例说明,在发送端将待持久数据写入(write)远端(例如,接收端)的nvm时,发送端需要通知接收端所需的数据描述信息(例如,数据的地址和长度)以用作冲刷(flush)指令。
45.优选的,所述数据描述信息可以包括数据地址和数据长度,且所述构造带有数据描述信息的待持久化数据包括:通过64位立即数构造所述数据描述信息,其中所述立即数的高16位表示所述数据长度,所述立即数的低48位表示所述数据地址。
46.以示例说明,本发明实施例通过使用64位立即数来实现数据描述信息的传递。现代cpu实际上使用地址空间的低48位,最多允许256tb的可寻址内存空间。而高48-63位必须用0或1填充。即,高16位实际上是cpu未使用的。因此,本发明实施例将长度字段和地址字段设置在给定的64位立即数中,高16位代表长度,低48位代表地址。接收端收到带有数据描述信息的待持久化数据后,接收端可以显式刷新数据。本发明实施例支持在rdma写入后保留最大256mb(2 16*4kb)的实际数据。
47.本发明实施例优选通过rdma write with imm原语的设计,解决如何在不发出另
一个rdma动词的情况下传递通知的问题。用rdma的write with imm,和rdma写使用方法相似,只是写完成后,立即发送一个数据通知远程cpu(例如,接收端的cpu)。针对rdma write with imm原语的设计会在后文详细描述,此处先不赘述。
48.步骤s120:通过发送端远程直接数据存取rdma的设备网络接口控制器rnic将所述待持久化数据发送至接收端。
49.以示例说明,发送端构造数据描述信息(立即数)之后,调用rdma write with imm原语,将待持久化数据通过所述rnic发送至接收端。接收端通过轮询队列(cq),接收端获取数据描述信息,解析出地址和长度,接收端可以调用flush和sfence指令将对应的写入数据持久化到nvm中。
50.步骤s130:接收所述接收端的rdma写指令,所述rdma写指令包括接收端的即时数据。
51.优选的,所述接收端的即时数据可以包括接收端关键字、和/或接收端缓存关键字。
52.以示例说明,接收端完成待持久化数据写入后,可以发送带有即时数据的rdma写,即时数据可以例如为:接收端关键字replica_id,和/或接收端缓存关键字buffer_id,以通知发送端数据持久化完成。
53.步骤s140:解析所述接收端的所述即时数据,确定完成数据持久化写入的接收端。
54.优选的,在步骤s140之前,所述发送端数据的远程持久化方法还包括:从发送端轮询队列cq中轮询所述即时数据。
55.承接上述示例,发送端可以从发送端cq轮询即时数据,定位哪个接收端的数据传送完成。
56.如前述内容,本发明实施例优选通过rdma write with imm原语的设计,解决如何在不发出另一个rdma动词的情况下传递通知的问题。例如,设置fawrite()函数,用于发送端将待持久化数据远程写入接收端的nvm;设置fareceive()函数,用于接收端接收数据描述信息并将待持久化数据在本地持久化到接收端的nvm。
57.在fawrite()函数中,发送端先将待持久化数据的地址和长度连接成立即数;发送端通过调用fi_write()函数成功地将待持久化数据写入接收端的nvm地址,并调用fi_cq_sread()函数以等待接收端的响应。否则,发送端会检查接收端是否仍然存在。若接收端在接收端cq中找到对应的响应后,通过解析64位的即时数据,接收端标识出buffer_id和replica_id,将replica_id加入到对应的完成队列中。发送端则可以确定哪个接收端的数据传送完成。
58.进一步地,在fareceive()函数中,接收端的一个工作线程通过调用fi_cq_sread()函数继续等待来自发送端的复制请求。轮询完成后,发送端解析数据描述信息(立即数),得到写入待持久化数据的地址和长度。然后,调用clwb()函数和sefence()函数将三级缓存(l3 cache)中的持久数据插入持久化内存,例如傲腾(intel optane)持久内存((dc persistent memory module,dcpmm)。接收端将接收端关键字replica_id和接收端缓存关键字buffer_id加入即时数据,并调用fi_writedata()函数来向发送端确认写入数据。如果失败,接收端会检查发送端是否仍然存在。
59.图3是本发明实施例提供的接收端数据的远程持久化方法的流程示意图,请参考
图2和图3,该接收端数据的远程持久化方法可以包括以下步骤:
60.步骤s210:通过接收端远程直接数据存取rdma的设备网络接口控制器rnic接收待持久化数据,其中所述待持久化数据带有数据描述信息。
61.所述数据描述信息用于:所述接收端通过接收端轮询队列cq接收到所述待持久化数据之后,通过所述数据描述信息将所述待持久化数据冲刷到所述接收端的非易失性内存nvm。
62.优选的,所述数据描述信息包括数据地址和数据长度,其中,所述发送端通过64位立即数构造所述数据描述信息,其中所述立即数的高16位表示所述数据长度,所述立即数的低48位表示所述数据地址。
63.以示例说明,本发明实施例将长度字段和地址字段设置在给定的64位立即数中,高16位代表长度,低48位代表地址。接收端收到带有数据描述信息的待持久化数据后,接收端可以显式刷新数据。
64.本发明实施例优选通过rdma write with imm原语的设计,解决如何在不发出另一个rdma动词的情况下传递通知的问题。用rdma的write with imm,和rdma写使用方法相似,只是写完成后,立即发送一个数据通知远程cpu(例如,接收端的cpu)。
65.步骤s220:解析所述数据描述信息,通过所述数据描述信息将所述待持久化数据冲刷到所述接收端的非易失性内存nvm。
66.以示例说明,发送端构造数据描述信息(立即数)之后,调用rdma write with imm原语,将待持久化数据通过所述rnic发送至接收端。接收端通过轮询队列(cq),接收端获取数据描述信息,解析出地址和长度,接收端可以调用flush和sfence指令将对应的写入数据持久化到nvm中。
67.步骤s230:发送rdma写指令,以通知发送端写入数据持久化完成,所述rdma写指令包括所述接收端的即时数据。
68.优选的,在步骤s230之前,所述接收端数据的远程持久化方法还可以包括:构造所述所述接收端的即时数据,所述接收端的即时数据包括接收端关键字、和/或接收端缓存关键字。
69.以示例说明,接收端完成待持久化数据写入后,可以发送带有即时数据的rdma写,即时数据可以例如为:接收端关键字replica_id,和/或接收端缓存关键字buffer_id,以通知发送端数据持久化完成。
70.本发明实施例还提供一种发送端控制装置,该发送端控制装置包括:存储器、处理器及存储在所述存储器上并在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序,以实现根据步骤s110-s140所述发送端数据的远程持久化方法。
71.本发明实施例还提供一种接收端控制装置,该接收端控制装置包括:存储器、处理器及存储在所述存储器上并在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序,以实现根据步骤s210-s230所述接收端数据的远程持久化方法。
72.本发明实施例还提供一种机器可读存储介质,该机器可读存储介质上存储有指令,该指令使得机器执行根据步骤s110-s140所述发送端数据的远程持久化方法、或执行根据步骤s210-s230所述接收端数据的远程持久化方法。
73.图4是本发明实施例提供的数据的远程持久化系统的结构示意图,本领域技术人
员可以理解,图4中示出的结构,仅仅是与本发明实施例相关的部分结构的框图,并不构成对本发明实施例所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
74.请参考图2和如4,该数据的远程持久化系统包括发送端10和一个或多个接收端20。
75.其中,所述发送端10包括上述的发送端控制装置11、发送端远程直接数据存取rdma的设备网络接口控制器rnic12,用于发送带有数据描述信息的待持久化数据,所述一个或多个接收端中的每个接收端包括上述的接收端控制装置21、接收端远程直接数据存取rdma的设备网络接口控制器rnic22、接收端的非易失性内存nvm23,用于将所述待持久化数据写入所述接收端的nvm23,以完成数据持久化。
76.优选的,所述数据描述信息用于:所述接收端20通过接收端轮询队列cq接收到所述待持久化数据后,通过所述数据描述信息将所述待持久化数据冲刷到所述接收端的nvm23。
77.优选的,所述数据描述信息包括数据地址和数据长度,所述发送端控制装置11用于构造带有所述数据描述信息的所述待持久化数据包括:所述发送端控制装置11通过64位立即数构造所述数据描述信息,其中所述立即数的高16位表示所述数据长度,所述立即数的低48位表示所述数据地址。
78.通过示例解释本发明实施例数据的远程持久化系统的数据持久化过程,可以包括以下步骤1)-5)。
79.1)发送端控制装置11构造带有数据描述信息(立即数)的待持久化数据后,调用rdma write with imm原语,通过发送端的rnic12,将待持久化数据写入接收端的nvm23;
80.2)接收端控制装置21通过轮询完成队列cq,获取数据描述信息,解析出地址和长度;
81.3)接收端控制装置21调用flush和sfence指令将对应的待持久化数据写入接收端的nvm23;
82.4)接收端发出带有即时数据(例如buffer_id,replica_id)的rdma写指令,以通知发送端数据持久化完成;
83.5)发送端从cq轮询即时数据,定位哪个接收端的数据传送完成。
84.据此,本发明实施例基于rdma和nvm的通信机制,发送端发送带有数据描述信息的待持久化数据,以解决了需要额外的操作将数据从接收端的cpu缓存刷新到持久化内存的问题。发送端不再发送额外的rdma读/发送动词,不会消耗发送端rnic的额外出站资源。在保证数据完整性的基础上解决了传统方法中响应延时高、占用带宽大、通用性低的问题。尤其是在分布式存储、分布式数据库系统中,本发明实施例可以解决系统的关键瓶颈,极大的提高系统的效率。进一步地,本发明实施例还提供了基于rdma write with imm原语设计的rdma远端写入并持久化在可持久化内存(persistent memory,pmem)或nvm中的机制。
85.本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产
品的形式。
86.本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
87.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
88.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
89.在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
90.存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。存储器是计算机可读介质的示例。
91.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体,可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
92.还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
93.以上仅为本技术的实施例而已,并不用于限制本技术。对于本领域技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本技术的权利要求范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献