分离可组合式架构下的远内存访问优化方法及系统

文档序号:567666 发布日期:2021-05-18 浏览:4次 >En<

阅读说明:本技术 分离可组合式架构下的远内存访问优化方法及系统 (Far memory access optimization method and system under separated combined architecture ) 是由 李超 王靖 汪陶磊 过敏意 于 2021-02-24 设计创作,主要内容包括:一种分离可组合式架构下的远内存访问优化方法及系统,首先按照应用的内存读写频率将可写工作集部署在本地计算节点,将只读工作集部署在远端内存节点上;在数据传输的过程中根据硬件资源特征选取合适的默认数据块大小,通过将数据块设置索引,结合RDMA传输过程动态分块实现数据块的透明分散和整合;利用单边读写和基于队列的RDMA机制实现配合本地应用读写的双向单边操作机制;利用基于事件通知的异步读写机制设置缓冲区实现本地计算和RDMA数据读写的异步并行处理。本发明可以充分挖掘应用层计算任务使用RDMA访问远内存的性能潜力。(A far memory access optimization method and system under a separable and combinable framework are disclosed, firstly, a writable working set is deployed on a local computing node according to the memory read-write frequency of application, and a read-only working set is deployed on a far-end memory node; selecting a proper default data block size according to hardware resource characteristics in the data transmission process, and realizing transparent dispersion and integration of data blocks by setting indexes for the data blocks and combining dynamic blocking in the RDMA transmission process; a bidirectional unilateral operation mechanism matched with local application reading and writing is realized by utilizing unilateral reading and writing and a RDMA mechanism based on a queue; and setting a buffer by using an asynchronous read-write mechanism based on event notification to realize asynchronous parallel processing of local computation and RDMA data read-write. The method can fully mine the performance potential of the application layer computing task for accessing the remote memory by using RDMA.)

分离可组合式架构下的远内存访问优化方法及系统

技术领域

本发明涉及的是一种分布式数据处理领域的技术,具体是一种分离可组合式架构下的远内存访问优化方法及系统。

背景技术

在现有的内存资源紧缺的分离可组合式内存架构下,人们使用高速网络如RDMA协议实现远程内存的读写。现有的应用感知的远程内存访问的解决方案替换Linux页交换机制的后端为RDMA以透明地进行远内存访问,无法避免内核引入所产生的额外开销,未曾考虑上层应用程序访存特性所带来的并行潜力。

发明内容

本发明针对现有技术存在的上述不足,提出一种分离可组合式架构下的远内存访问优化方法及系统,可以充分挖掘应用层计算任务使用RDMA访问远内存的性能潜力。

本发明是通过以下技术方案实现的:

本发明涉及一种可组合式架构下应用并行协同的RDMA远内存访问方法,首先按照应用的内存读写频率将可写工作集部署在本地计算节点,将只读工作集部署在远端内存节点上;在数据传输的过程中根据硬件资源特征选取默认数据块大小,通过将数据块设置索引,结合RDMA传输过程动态分块实现数据块的透明分散和整合;利用单边读写和基于队列的RDMA机制实现配合本地应用读写的双向单边操作机制;利用基于事件通知的异步读写机制设置缓冲区实现本地计算和RDMA数据读写的异步并行处理。

所述的分离可组合式架构是指:数据中心中多台服务器CPU与内存通过网络连接的方式进行灵活的组合搭配的架构,其中:以计算任务为功能的服务器作为计算节点(Compute Node),而以内存访问为功能的服务器作为内存结点(Memory Node)。

所述的远内存架构是指:包括至少一个计算节点和至少一个内存结点的分布式架构,其中:计算节点和内存节点均包括一台服务器,计算节点与内存结点之间通过各自的RDMA网卡有线连接。

所述的服务器以CPU为计算核心、DRAM为内存单元,RDMA网卡通过PCIe与服务器的主板相连,每台服务器的CPU使用本地内存并通过RDMA网卡使用远程的内存且不占用远程CPU的资源。

所述的工作集部署,具体包括:

i)根据应用的内存读写频率划分出只读的工作集;

ii)在预处理过程中,将步骤i)中所划分的只读工作集中的数据块通过RDMAWrite的形式,分块将其传输到远端内存区域中;

iii)在计算执行过程中,该本地应用程序不断发起读取远端数据块的请求,远端根据收到的服务器程序的请求,将服务器需要的对应的数据块通过RDMA Read的形式返回到本机,供当前程序使用。

所述的默认数据块的大小为Chunk=α×Channel×Frame÷Core,其中:Channel为主板的PCIe一次传输数据的通道数,Core为主板的CPU个数,Frame为RDMA网卡的数据帧数,1≤α≤1024。

所述的将数据块设置索引是指:索引设置为数据块对应内存区域的地址对lkey和钥匙对rkey。

所述的RDMA传输过程动态分块是指:当当前需要发送的数据块Data_block比当前设置的默认大小Chunk大,则在发送时将该数据块分为个分别发送,否则将其视为一个Chunk大小进行发送从而实现透明分散;在接收时则将分割成β个的数据块根据索引按照原来的顺序整合,从而实现整合。

所述的配合本地应用读写的双向单边操作机制是指:服务器程序设置接收信息的缓冲区,向远端发送读取数据的索引,远端根据索引收取对应的数据块并基于队列的RDMA机制进行单边读写操作,将数据直接写入服务器的缓冲区中且不需要数据复制。

所述的单边操作,每次读写到接收缓冲区的数据块都被当成是新的被读取的数据块,后到的数据块会在缓冲区中覆盖之前到的数据块信息。

所述的基于队列的RDMA机制是指:

步骤1:发送(接收)队列中加入事件A请求;

步骤2:执行A事件,读写数据开始;

步骤3:A事件弹出发送(接收)队列;并加入完成队列;

步骤4:下一个发送(接收)事件B进入发送(接收)队列;

步骤5:完成队列中的A事件弹出,扫描其状态;

步骤6:当A事件状态为成功,则开始执行B;当状态不成功,则报错。

步骤7:重复执行步骤2-6直到没有新的时间加入发送(接收)队列。

所述的基于事件通知的异步读写机制是指:当远端内存读/写开始时,即代表读/写成功,将事件从发送/接收队列中移动到完成队列,实际读写过程的时间取决于读写数据块的大小与当前网络带宽。

所述的缓冲区位于本地内存区域和远端内存区域,具体包括:异步并行缓冲区、发送区域和接收区域,其中:发送区域和接收区域对应执行数据发送(写)或接收(读)操作,异步并行缓冲区用于传输数据的临时存储以支持异步读取,异步并行缓冲区中写入的数据直到下一次被改写前不会被覆盖。

所述的异步并行处理是指:本地计算的过程中同时准备RDMA的数据传输过程,即在上次迭代中准备一步接收下次即将用到的数据,具体步骤包括:

i)计算迭代开始;

ii)复制RDMA接收缓冲区的数据到计算区域,读取只读工作集的信息;

iii)准备下一轮要访问的数据块索引,将索引发送至远端;

iv)开放RDMA接收缓冲区接收数据,为下一轮数据做准备;

v)执行本次迭代的计算部分;

vi)重回步骤i),直到算法收敛或者没有新的需要访问的远端数据块后结束。

技术效果

本发明整体解决了现有技术因替换Linux页交换机制的后端为RDMA,而无法避免远内存访问时内核引入所产生的额外开销,导致无法引入上层应用程序访存特性的而带来的性能瓶颈。

与现有技术相比,本发明实现了应用层的远端内存读写框架,应用读写特性和RDMA硬件的特征做了细粒度的优化,包括将只读工作集部署在远端内存节点,根据硬件资源特征选取合适的默认数据块大小,将数据块设置索引实现数据块的透明分散和整合,设置配合本地应用读写的双向单边操作机制,设计异步读写缓冲区,达到本地计算和RDMA数据读写的异步并行,减少带宽占用提高传输效率,提高了应用在远内存框架下的整体性能,降低了整体延时,甚至能够达到接近于本地内存处理的效果。

附图说明

图1为本发明系统结构示意图;

图2为本发明流程图;

图3为实施例框架示意图;

图4为实施例数据块分割和整合的示意图;

图5为实施例RDMA单边读取和计算通信并行的框架示意图。

具体实施方式

本实施例以图计算应用为例,使用RDMA作为远程内存介质,系统的环境如下:两台配备了2个20核的Intel(R)Xeon(R)Gold 6148CPU,256GB内存,21TB硬盘和一个双通道Mellanox ConnectX-5RDMA网卡。其中一台服务器作为计算节点,另一台作为远程内存访问节点(远端节点)。

如图1所示,为本实施例涉及的一种分离可组合式架构下的远内存访问优化系统,包括:至少一个本地计算节点和至少一个远端内存节点,两者通过各自的RDMA网卡以及有线方式连接并交换数据,其中:每个节点均包括内存区域,该内存区域由本地区域和远程区域组成,本地计算节点的CPU通过缓存与内存区域交换数据。

如图3所示,所述的远内存访问优化系统,包括:计算节点和内存节点,其中:计算节点根据本地应用读写特性,将应用内容分为只读与非只读两个部分,同时计算节点根据本地网卡和内存硬件参数,将数据分块并通过远内存读写操作与内存节点进行读写交互。内存节点根据计算节点的读取和写入要求,基于单边内存写将计算节点的传输的数据写入远端内存,基于索引将计算节点所需的数据采用单边内存读的方式读取到计算节点。

所述的计算节点包括:应用读写分离模块、数据块选取模块、数据块分散整合模块、第一双向单边读写模块和第一异步并行模块,其中:应用读写分离模块根据本地应用读写特性,将应用内容分为只读与非只读两个部分,得到两大部分数据块并传输到数据块选取模块;数据块选取模块根据本地网卡和内存硬件参数,选取一定的数据块大小并输出至数据块分散整合模块;第一双向单边读写模块将数据块按照数据块选取模块所选定的数据块大小,在远内存写模式下将数据块传输第一双向单边读写模块和第一异步并行模块到第一异步并行模块中,在远内存读模式下从第一异步并行模块的异步缓冲区读取数据块;第一异步并行模块在经过异步缓冲区设和发送接收隔离区域,远内存写模式下将数据块异步传输到第一双向单边读写模块中,同时在远内存读模式下实时从第一双向单边读写模块中读取传回的数据块,保存至异步缓冲区,以供第一双向单边读写模块使用;第一双向单边读写模块对数据进行远端内存读取和写入处理,在远内存写模式下,基于单边内存写将来自第一异步并行模块的数据写入远端内存,并在本地保留对应的数据索引;在远内存读模式下,将所需的数据按照保留的索引传输到远内存,并在远内存中搜索到对应的数据块,以远内存读的方式读回,并输出至第一异步并行模块。

所述的内存节点配合计算节点,包括:第二双向单边读写模块和第二异步并行模块,其中:第二双向单边读写模块对来自计算节点的数据进行写入和读取处理,在远内存写模式下,基于接收来自计算节点的单边内存写数据块,写入第二异步并行模块并向计算节点返回对应索引;在远内存读模式下,根据来自计算节点的索引,经过搜索到对应的数据块,从第二异步并行模块中获取并以远内存读的方式传回计算节点;第二异步并行模块在经过异步缓冲区设和发送接收隔离区域,远内存写模式下实时从第二双向单边读写模块中读取传回的数据块,保存至异步缓冲区,同时在远内存读模式下,将数据块异步传输到第二双向单边读写模块中。

如图2所示,本实施例涉及上述系统的分离可组合式架构下的远内存访问优化方法,包括以下步骤:

步骤1)将图计算的边数据划分为只读工作集。

步骤2)在预处理阶段,通过RDMAwrite的方式将图计算的只读工作集部署到远内存中。

步骤3)根据硬件特征选取默认的传输数据块大小,根据主板的PCIe一次传输数据的通道数Channel,主板的CPU个数Core,RDMA网卡的数据帧数Frame,计算默认的合适的数据块大小为,即Chunk=α×Channel×Frame÷Core,其中1≤α≤1024。

步骤4)如图4所示,根据步骤3)所决定的数据块大小进行数据的分割与整合,具体包括当当前需要发送的数据块Data_block比当前设置的默认大小Chunk大,则在发送时将该数据块分为个分别发送。当当前需要发送的数据块Data_block小于等于当前设置的默认大小Chunk,则将其合并为一个Chunk大小进行发送。在接收时,若当时是分割成β个数据块的,在收到时将这些数据块按照原来的顺序整合起来。

步骤5)如图5所示,首先在本地和远端开启RDMA端口绑定与连接设置。

步骤6)在本地内存区域和远端内存区域中同时设置三个缓冲区,异步并行缓冲区,发送区域和接收区域,本地发送区域L-SB和远程接收区域R-RB对应执行数据发送(写)操作,本地接收区域L-RB和远程发送区域R-SB对应执行数据接收(读)操作。。

步骤7)在预处理阶段,系统通过RDMA单边Write将只读工作集的数据块写入远端内存,同样遵循步骤4)所述的数据块传输模式。

步骤8)在迭代计算期间,进行计算与通信的时间覆盖以达到并行效果,具体步骤包括

i)计算迭代开始;

ii)复制RDMA接收缓冲区的数据到计算区域,读取只读工作集的信息;

iii)准备下一轮要访问的数据块索引,将索引发送至远端;

iv)开放RDMA接收缓冲区接收数据,为下一轮数据做准备;

v)执行本次迭代的计算部分;

vi)重回步骤i),直到算法收敛或者没有新的需要访问的远程数据块后结束。

步骤9)计算过程完毕后,回收本地和远端所占用的内存区域,断开RDMA连接。

经过实际实验,通过改写Gridgraph图计算框架中的BFS和Pagerank算法,使其能够按照上述方式使用RDMA进行远内存访问,处理LiveJournal等4个数据集(1G到32G不等),能够得到的实验结果是,如下表所示,在节省了80%的本地内存情况下,总时间相比于最新的远内存访问框架Fastswap提升了最高约8.3倍。与现有技术相比,本方法的性能指标提升在于更少的本地内存占用,更少的传输吞吐量,和更快的总延时。

上述具体实施可由本领域技术人员在不背离本发明原理和宗旨的前提下以不同的方式对其进行局部调整,本发明的保护范围以权利要求书为准且不由上述具体实施所限,在其范围内的各个实现方案均受本发明之约束。

11页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:OBD设备状态设置方法、装置、OBD设备及存储介质

网友询问留言

已有0条留言

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

精彩留言,会给你点赞!