聚合国内IT技术精华文章,分享IT技术精华,帮助IT从业人士成长

SC'21:分布式内存池数据远端持久化机制研究——内存计算系统系列成果之九

2022-03-29 18:31 浏览: 2650565 次 我要评论(0 条) 字号:

近年来,持久性内存和远端直接内存访问(RDMA)技术在数据中心环境中得到了广泛的应用。然而,持久RDMA操作和RDMA更新的可见性在分布式持久内存系统中还没有得到充分的研究。由于RDMA网络接口卡中存在易失性缓存,持久性内存和RDMA的结合对保证远端数据持久性带来了重大挑战。为此,我们对现有的基于RDMA的RPC通信系统及其性能差异进行了比较和分析,在此基础上设计了几种硬件支持的RDMA刷新原语。这些刷新原语可将易失性缓存中的数据刷新到持久存储器中,并通过ACK来告知客户端数据已被持久化。我们在上述刷新原语的基础上提出了持久RPC通信系统,并提供了快速故障恢复能力。基于真实NVM硬件的实验结果表明,相比现有研究,所提出的RDMA刷新原语可以将RPC系统吞吐量提高90%,并减少49%的第99百分位尾延迟。此外,实验研究结果也为基于RDMA的分布式持久内存系统的设计提供了重要的指导意见。

该成果“Hardware-supported Remote Persistence for Distributed Persistent Memory” 发表在CCF A类国际会议The International Conference for High Performance Computing, Networking, Storage, and Analysis (SC) 2021上。该会议是高性能计算领域的顶级国际会议,本次会议录用率为23.6%,主要关注高性能计算体系机构、系统软件、算法和应用等相关领域的最新研究成果。

  • 论文链接:

    https://dl.acm.org/doi/pdf/10.1145/3458817.3476194


摘要

随着新型持久性内存(PM)和远端直接内存访问(RDMA)技术的蓬勃发展,持久内存(PM)和具有低传输延迟的RDMA在数据中心环境中得到了广泛的应用。由于RDMA网络接口卡(RNIC)中存在易失性缓存,系统故障可能造成数据不一致。然而,RDMA数据更新的可见性在分布式持久内存系统中还没有得到充分的研究。如何在融合PM和RDMA的分布式持久内存系统中高效地保证远端数据持久化成为一个重大挑战。尽管少数基于远端过程调用(RPC)的研究工作通过多个RDMA操作的组合来支持远端数据持久化,但在这些基于软件的持久化传输解决方案中,远端CPU需要参与其中,并且数据传输持久化对发送端的可见性被滞后,进而导致传输时延增加。

为了避免现有RPC设计的不足,我们设计了持久RPC系统,利用多种硬件支持的RDMA Flush刷新原语将RNIC易失性缓存中的数据刷新到持久区域中。持久RPC系统通过批处理优化以及并发传输已确认持久化的RPC请求,让复杂的数据处理过程和持久传输过程解耦合。此外,持久RPC系统在接收端构建持久缓冲区来存储数据处理请求,并结合RDMA连接信息组成重做日志(redo log)以提供失效恢复特性,多种原语实现方式还可以满足各类系统环境和应用设置的需求。我们在实验中对基于RDMA 的RPC进行了深入的分析和测试,结果揭示了RPC通信设计对传输性能的影响。在配备Intel Optane DCPMM和InfiniBand网络的真实测试环境中,基于RDMA Flush原语的持久RPC与现有RPC通信设计的对比能够更加真实地反映持久RPC设计的性能优势。

实验结果表明,基于RDMA Flush原语的持久RPC相比现有RPC系统可提高90%的吞吐率,减少49%的第99百分位传输延迟。源自实验结果的研究分析也为基于RDMA分布式持久内存系统的设计提供了重要的指导建议。


背景与动机

图1  基于RDMA的持久内存系统数据传输路径


持久性内存和远端直接内存访问RDMA技术在数据中心和高性能计算环境中得到了广泛的应用。在支持RDMA的PM系统中,发送方需要知道数据在远端PM中持久化的时间,这对于分布式共享PM系统的并发控制尤为重要。由于RDMA网络接口卡中存在易失性缓存,持久内存和RDMA的结合对保证远端数据持久化提出了重大挑战,如图1所示。现有许多研究使用RPC来优化RDMA传输。RPC通常使用一组RDMA原语以较少的RTT执行复杂的任务。大多数RPC需要远端服务器的CPU来处理写入的数据。发送方必须等待来自远端CPU的完成事件。尽管RPC设计的主要目标不是保证数据持久化,但它们天然支持持久的RDMA写入。RPC完成后,发送方可以验证数据是否已由接收方持久化。但是,昂贵的RPC处理、RDMA网络和PCIe操作都是处于客户端应用程序的关键路径上。与单个RDMA原语相比,它们通常会显著增加端到端延迟。

针对这一问题,我们根据不同的RDMA原语和传输模式对现有基于RDMA的DSM系统进行分类分析,进一步研究现有RPC系统中的持久RDMA写入机制。由于RDMA RC模式确保了可靠的数据传输,因此它有可能在远端服务器CPU无感的情况下实现持久的RDMA写入。相反,RDMA UC/UD模式必须依赖远端服务器的CPU以验证数据持久化。基于上述发现,我们设计了硬件支持的RDMA刷新原语。这些刷新原语将易失性缓存中的数据刷到持久存储器中。然而,应用环境对刷新原语的需求各不相同,单一的刷新原语无法满足各类环境对网络传输性能的需求。此外,故障可恢复对于企业级应用程序非常重要,仅仅使用持久刷新原语无法为传输提供故障恢复的能力,如何结合持久化刷新原语设计出故障可恢复的高效传输过程也是一个挑战。


设计与实现

我们设计并开发了基于RDMA的分布式内存远端持久化机制。为了满足各类环境中的应用需求,我们从双边原语(RDMA Send)、单边原语(RDMA Write)的特性以及原语发起方这两个维度设计了多种刷新原语。不同的原语种类在不同工作负载下展示出各有优势的性能。我们利用重做日志来实现不完整RPC的快速恢复,而无需从客户端重新发送数据。由于持久的RPC将数据持久化与RPC处理分离,因此远端数据持久化对应用程序来说比传统的RPC要早得多。这为通过重叠RDMA传输和RPC处理来提高应用程序的性能提供了巨大的机会。

图2  RDMA Flush持久原语设计图


RDMA Flush持久原语设计:所提出的RDMA刷新原语可以被分为两类:发送端主动发起的和接收端主动发起的刷新原语,如图2所示。发送端主动发起的RDMA Flush原语(SFlush及WFlush)由发送端在发起RDMA数据传输之后再发出,用于确认所传输数据的持久化。接收端发起的RDMA Flush原语 (RFlush) 在接收到数据写入之后,由接收端主动发出,它可以保证数据写入PM并通知发送端持久传输完成。

1)发送端主动发起的RDMA刷新原语。发送端主动发起的RDMA Flush刷新原语是根据RDMA和非易失性存储器的硬件特性设计的。基于单边RDMA原语的数据传输方式绕过操作系统内核,不会唤醒远端服务器的CPU。同时,未来的智能RNIC有可能直接将所传输的数据从RNIC上易失性缓存刷新到持久内存中。因此,可以在不唤醒远端CPU的情况下实现持久的基于RDMA write或者send原语的数据传输。值得注意的是,发送端主动发起的RDMA Flush刷新原语只能用于在RDMA RC模式中,因为RDMA刷新原语必须等待来自远端RNIC的确认消息才能确保刷新操作完成,即持久化传输完毕。

2)接收端主动发起的RDMA刷新原语。与发送端发起的RDMA Flush原语不同,接收端主动发起的RDMA Flush原语是由接收端的RDMA RNIC负责来将接收到的数据刷新到持久内存区域,此刷新过程中不需要唤醒接收端的CPU。然而,由于当前的RNIC硬件并不支持主动的数据刷新操作,本工作的实验仍然依靠接收端CPU参与来模拟RDMA RFlush原语。接收端的CPU对消息缓冲区进行轮询,以感知到新接收的数据访问请求操作,并发出RDMA RFlush原语来将接收到的数据请求刷到持久内存中。一旦数据被刷新,接收端会立即通知发送端数据持久化完成。

图3  基于RDMA Flush的持久RPC通信过程图


持久RPC设计:与现有的RPC通信设计不同,持久RPC可以保证当发送端收到RPC中RDMA Flush原语的完成确认消息ACK后,接收端的持久区域中就会存储接收到的数据。因此,接收端可以利用已经持久存储的数据进行RPC处理,之后将处理结果返回给发送端。图3显示了各类持久RPC的通信过程以及使用的原语组合方式。

当接收端的RNIC接收到RDMA请求时,数据包被缓存在易失性RNIC缓冲区中,并会被动的等待DMA引擎将其刷出到持久请求缓冲区,如图4所示。持久请求缓冲区本质是存储在持久内存上的一个环形缓冲区,其中存放着多个包含RPC操作符和数据的RPC处理请求条目。为了保证RPC请求的传输完整性,数据总是被存储在持久RPC请求缓冲区中的RPC操作符之前。接收端的CPU会根据RPC操作符等信息来判断所接受的RPC请求是否完整有效。一旦RPC数据处理过程完毕,相应的RPC请求条目就会从持久环形缓冲区中删除。持久RPC利用RDMA Flush原语将数据持久化与复杂的RPC处理解耦合,因此基于持久RPC的发送端将比基于传统RPC能更早地知道所传输数据请求已经完成持久化存储。当请求为全写操作时,利用已经持久存储在接收端的请求数据和相应的请求处理机制,发送端可以继续发起其他RPC请求,而无需等待仍在处理状态的RPC的完成消息。即使后续发起的RPC请求访问的数据与之前未处理完成RPC一样,后续请求也会在持久存储区域中排队,然后按照先进先出顺序依次被接收端处理。

图4  持久内存数据服务器端RPC处理流程


我们在真实RDMA高速网络和Intel Optane DIMM硬件平台上实现了上述基于RDMA分布式内存远端持久化机制,采用多种负载的微测试和YCSB、PageRank等应用负载进行试验。结果表明,基于RDMA Flush原语的持久RPC相比现有RPC系统可提高90%的吞吐率,减少49%的第99百分位传输延迟。


详细内容请参见:

Zhuohui Duan, Haodi Lu, Haikun Liu, Xiaofei Liao, Hai Jin, Yu Zhang, Song Wu. 2021. Hardware-Supported Remote Persistence for Distributed Persistent Memory. In Proceedings of the International Conference for High Performance Computing, Networking, Storage and Analysis (SC'21), November 14–19, 2021, St. Louis, MO, USA. ACM, New York, NY, USA, 14 pages. https://doi.org/10.1145/3458817.34 76194


往期 · 回顾



网友评论已有0条评论, 我也要评论

发表评论

*

* (保密)

Ctrl+Enter 快捷回复