RDMA技术研究综述
摘要
RDMA技术是一种无需操作系统干预的直接内存访问方式;它允许数据在两台计算机之间直接传输而不依赖于操作系统,并从而显著提升网络传输速率和减少延迟时间;近年来研究者们致力于通过将RDMA与其他先进技术相结合来增强其扩展能力;这种结合有助于在数据库中引入高可用性的特性;基于RDMA理念设计的新型存储架构不仅能够提高网络性能还能优化存储扩展性和操作便捷性;在深入探讨其工作原理的基础上;本文将聚焦当前RDMA技术领域的最新研究动态;分析其实际运行机制及其所具备的优势所在;并展望未来该技术可能的发展方向与应用场景
0 引言
随着高性能计算、人工智能与大数据分析等技术的飞速发展, 各行业领域对网络传输性能的要求日益提高, 传统的TCP/IP协议架构在数据处理效率和服务质量方面仍显不足。RDMA(远程直接内存访问)作为一种解决服务器端应用数据传输延迟的技术, 其通过本地系统直接访问远程系统内存的特点, 减少了CPU及操作系统的参与, 并已获得广泛的应用[1-2]. RDMA相比基于TCP/IP协议的传统网络传输模式具有更高的吞吐量与更低的延迟特性, 同时对系统资源占用更少, 适用于大规模并行计算环境. 如图1所示, 传统TCP/IP模式下, 应用层数据需依次经历缓存复制到内核、驱动层处理以及网卡缓存传送等环节才能完成跨服务器的数据包收发. 而在RDMA模式下, 用户应用中的数据直接加载到本地存储区后即可完成快速传输至远程内存区域, 整个过程完全脱离了操作系统干预. 这种模式不仅去除了外部内存复制与上下文切换开销的影响, 更为重要的是释放了内存带宽资源, 缩短了CPU周期时间, 进而显著提升了应用程序的整体性能水平.

图1 RDMA与传统TCP/IP比较
Fig. 1 Comparison of RDMA and traditional TCP/IP

下载: 原图 | 高精图 | 低精图
RDMA技术的发展大大降低了机器之间数据传输的代价。近年来,RDMA技术得到了广泛研究与应用,基于RDMA的分布式存储技术为满足分布式键值存储,已广泛用于可扩展的行业数据管理解决方案设计中。RDMA通过与分布式存储相结合,一方面在硬件方面加强资源的高效管理,另一方面在软件层面加强软硬件的耦合设计,大大提升了分布式存储性能[3]。在键值存储方向,FaRM基于RDMA构建分布式共享内存,使用RDMA直接访问共享地址空间中的数据,从而实现消息的快速传递,最后通过构建RDMA感知键值和图形存储以获得最佳RDMA性能[4];Pilaf基于RDMA提供了一种旨在实现高性能和低CPU使用的键值分布式内存键值存储方式[5];HERD同样提供了一个旨在充分利用RDMA网络的键值系统,区别于FaRM和Pliaf设计的键值系统,HERD的设计重点在于减少网络往返次数,同时使用高效的RDMA原语,从而显著降低延迟和吞吐量[6]。DrTM设计了一种内存事务处理系统,其利用HTM的强原子性和RDMA的强一致性,提供更高数量级的内存事务处理吞吐量和更低的延迟[7]。在DrTM的基础上,DrTM+R提供了一个快速通用的分布式事务处理系统[8]。DrTM+R通过利用电池后备内存作为数据库记录的主要存储,并结合HTM和RDMA实现快速分布式处理,从而支持内存中的事务交易。与DrTM不同的是,DrTM+R对事务性工作负载没有限制,为高可用性提供了完整的复制支持。FaSST是基于FaRM的分布式事务协议模型,其可提供具有可序列化和持久性的分布式内存事务,性能远优于FaRM和DrTM[9]。
现时,在数据库设计领域已广泛引入了RDMA技术。借助高速网络与RDMA实现数据传输的方式下,在I/O性能不再是制约因素的情况下,在线查询效率得到了显著提升[10]。近年来的研究表明,在MongoDB框架中引入支持RDMA的设计方案能够显著降低系统延迟并提升吞吐量水平[11]。为了进一步优化MongoDB的表现,在POLARDB的设计架构中通过引入高速RDMA网络实现了计算节点与存储节点之间的高效通信机制[12]。最近的研究还提出了A recent study by Fent 等人提出了一种高性能通信层 L5 模型(L5),该模型通过采用 RDMA(InfiniBand)、RoCE(以太网)和共享内存(IPC)等多种技术进行互连,在很大程度上缓解了数据库系统中的瓶颈问题。
此外,在新型存储技术领域中,在传统磁盘技术逐渐被新型存储设备逐步取代这一趋势下,在现有研究的基础上进一步探索新型存储技术的应用前景具有重要意义。为了充分利用诸如PM(Persistent Memory)、NVMe SSD等新型存储设备的独特特性,并推动相关研究工作的深入发展,则需要将这些新型存储技术和RDMA(Remote Direct Memory Access)相结合以构建更高效率的分布式存储架构[14]。在FlatStore系统中实现了基于PM的新增KV(Key-Value)存储引擎,并在此过程中将KV数据模型进行了创新性解耦:一方面实现了快速索引层的易失性设计;另一方面则专注于提升持久化层的整体性能水平[15]。Octopus文件系统则通过一种全新的共享持久内存池抽象机制来减少数据传输过程中的冗余内存副本数量;而Hotpot系统则提供了一种能够协调跨节点PM资源管理的技术方案,并结合数据复制机制来增强系统的容错能力[17]。AsymNVM框架则致力于解决远程数据结构管理的关键问题:包括空间规划、并发控制、一致性维护以及复制优化等功能模块的整体实现[18]。Liu等研究团队提出的连续性哈希方案允许单个单边RDMA操作实现高效的远程读取过程;该方案特别强调了对所有PM上的写操作均能提供无日志一致性保证的特点[19]。Erda作为一种零拷贝日志结构内存设计方法;其核心创新点在于实现了数据远程传输过程中的原子化传输特性;这种特性可有效缓解传统方式下在远程数据传输过程中面临的网络往返开销、远程CPU参与度高以及双NVM写入等问题[20]
本文首先概述了RDMA技术的主要实现形式及其通信机制;接着介绍了当前RDMA领域的最新研究动态;对几种典型适应和优化方案进行了详细分析;最后总结了相关技术要点,并对未来可能的研究方向进行了展望。
1 RDMA技术原理
1.1 RDMA实现方式
注
1.2 RDMA通信原理
该系统通过 RDMA 网卡实现了高效的多路访问机制,在其内部结构中设置了三个专用工作区:发送区组 (SQ)、接收区组 (RQ) 和完成区组 (CQ)。通过示例图 2 可以看出,在 RDMA 数据传输过程中,在启动时会自动创建 SQ、RQ 和 CQ 三个区组,并对内存中用于处理的数据区域进行预先注册。每个 RDMA 连接都会分配一个专门的工作区组 (QP),该区组由 SQ 和 RQ 共享使用,并且所有的工作任务都会被分配到同一个 QP 中执行。每个 WQE 在其所在的 QP 中负责特定的任务调度:位于 SQ 中的 WQE 将指向即将发送的消息;位于 RQ 中的 WQE 则指向待接收的消息;而位于完成区组 (CQ) 中的工作将负责将所有任务完成后的状态更新并传递给主程序。

图2 RDMA数据传输示例
Fig. 2 RDMA data transmission example

下载: 原图 | 高精图 | 低精图
在RDMA编程中,网卡驱动包括用户态编程接口和内核态编程接口,并命名为Verbs[25]。RDMA Verbs明确了两种通信核心功能:消息语义和内存语义。其中消息语义又被称为双边原语,在用于消息通信方面发挥重要作用。典型的 Send 和 Recv 指令类似于套接字编程中的发送与接收操作,在这种机制下双方需提前约定对方的数据接收地址。发送方执行 Send 指令向接收方传输数据信息时需注意数据完整性保障措施;接收方则在执行 Recv 指令前需预先指定好目标服务器端的数据存储位置以确保高效传输。在此过程中CPU会持续参与操作以保证数据传输过程的实时性特征此通信模式适用于小规模数据传输任务当处理大量数据时另一种新的通信模型内存语义应运而生该模式通过本地内存总线直接连接到远程机器实现了更高层次的数据传输效率适用于大规模数据交互场景
目前RDMA系统支持基于连接与无连接的不同网络传输方案,并根据具体需求分为可靠传输与不可靠传输两种类型。在基于连接的网络中采用可靠(RC)或不可靠(UC)两种报文传送机制;而在无链路状态下的数据通信则仅采用不带确认信息的数据报(UDP)进行数据传递[26]。通过ACK机制确保每个报文都能准确送达目的端并配合重传机制进一步保障其完整性;而UC模式下必须建立通信链路并且每个报文都不携带目标地址信息;这种情况下无法提供ACK确认或重传功能。UDP无需任何链路建立过程且不具备ACK机制;每个数据包仅包含目标队列号等必要信息并受到最大2KB限制。无论是RC还是UC机制,在数据通信中都仅限于单点对单点的数据传送过程
不同传输方式支持的RDMA verbs也所有区别,如表1所示。
表1不同传输方式下的RDMA Verbs比较
Table 1 Comparison of RDMA Verbs under different transmission modes
| Send/Recv | Write | Read | |
|---|---|---|---|
| RC | √ | √ | √ | 
| UC | √ | √ | × | 
| UD | √ | × | × | 

下载: 导出 CSV
2 研究现状
随着大规模分布式系统及数据中心面临的网络性能瓶颈日益突出,在提升其处理能力方面 RDMA 作为一种高效的网络传输硬件设备 已经展现出显著优势 该技术不仅有助于提升分布式存储及分布式数据库等密集型业务单位吞吐量与降低通信时延 而且其具备快速响应能力 这一特点也可在分布式系统设计中用于权衡本地与远程节点之间的性能 trade-off 从而为数据持久化提供了新的思路
2.1 基于RDMA的分布式存储技术
该系统通过RDMA技术搭建分布式共享内存架构,在主内存中存放应用程序数据并运行其线程。所有机器的内存量被公开展示为一个统一的共享地址空间。该系统采用单侧RDMA读操作来直接访问数据资源,并利用RDMA写操作来实现快速的消息传递机制。其共享地址空间由多个2GB的共享内存区域构成,并通过地址映射、恢复和注册等单元整合在一起形成完整的工作环境。
FaRM采用分布式事务作为保证一致性的通用机制,在处理高并发场景中发挥着重要作用。通过乐观并发控制与两阶段提交实现严格的可序列化特性。鉴于分布式事务在处理性能关键操作时往往具有较高的开销成本,在此方案中我们特别优化了系统资源分配策略。为了进一步提升系统的吞吐量与响应速度,在优化方案中引入了单机事务与无锁只读操作两种实现方式。其中应用可通过将交易对象放置在同一主节点及副本上,并将相关数据直接发送至该主节点执行单机事务操作。在必要时可以通过结合以下两种方法进一步提升性能:一是利用RDMA技术实现无锁级联读取;二是允许同时存在多个共享对象及其对应函数调用队列的操作空间,并通过高效的锁管理策略保障系统的稳定性运行。值得注意的是,在执行单机事务过程中系统会自动减少不必要的消息传递次数,并尽量降低因同步开销而产生的延迟积累效应。为了验证这一创新方案的实际效果,在实验环境中构建了基于RDMA感知键值存储模型以及图形化存储架构的测试平台,并对比分析了其运行效率与稳定性表现。实验结果表明,在相同的物理网络环境下 FaRM 系统相比传统基于 TCP/IP 协议的主内存架构能够显著提升数据传输速率(吞吐量提升了约30%),并在延迟维度实现了数量级上的领先优势。
该系统DrTM+R体现了高效通用性的特点。
它通过继承高端硬件功能所带来的性能优势。
同时通过复制机制支持常规事务处理及高可用性需求。
该方案巧妙地结合了HTM(硬件事务存储)的强原子性和RDMA(基于数据完整性传输协议)的数据一致性。
通过这一创新设计实现了严格可串行化的同时保证了高性能水平。
针对HTM事务更新记录即时可见性的特点及其与未就绪复制之间的权衡问题。
DrTM+R采用了乐观复制方案。
这种方案采用类似于seqlock机制的版本控制策略。
能够有效区分元组可见性和精确记录复制准备状态。
经过典型OLTP工作负载TPC-C与SmallBank测试显示:
其在6节点集群上的扩展性表现优异。
在不启用复制的情况下
TPC-C实现了平均每秒5.69万笔交易
SmallBank则达平均每秒9400万笔以上吞吐量
当启用3路数据冗余时
系统仍能维持较高水平的服务质量
并在此状态下显著超越当前行业最佳分布式事务解决方案Calvin系统。
2.2 RDMA与数据库相结合
Lu等[11]提出了一种支持RMDA的MongoDB设计方案,在传输层中采用了RDMA接口替代MongoDB内置的Boost.Asio API操作以确保套接字兼容性。在服务器端与客户端之间为每个会话都预留了一个预先注册好的内存块,并设计了一种动态内存注册策略以适应消息长度在特定连接中呈现稳定长度特征的现象。这种动态管理策略能够有效提升内存利用率。由于实际应用中常见消息尺寸通常不超过1KB,在QP连接初始化阶段将分配并预先注册一个专用容量为1KB的内存块作为默认配置参数。当待发送消息尺寸超过现有专用内存容量时系统会自动将内存块大小调整为不小于当前消息尺寸且为2次方数的最大值以提高资源利用率;同时系统还引入了一个动态释放机制:当连续发送多个不使用现有内存50%空间的消息时系统将主动释放一半占用空间从而避免不必要的内存浪费现象出现基于上述优化策略可以获得与MongoDB内置方法相近的技术性能指标同时显著提升了系统的整体资源利用率
L5是一种基于低延迟的的消息传输库,在取代传统的套接字接口的同时支持RDMA(InfiniBand)、RoCE(以太网)以及共享内存 IPC 作为可靠的消息传输通道。在跨越多台服务器的远程通信场景中以及在单机多线程环境下,在处理异步消息时 L5 能够显著提升吞吐量并降低延迟水平。在典型的数据库服务器架构中 仅有少量处于活跃状态的连接通常会面临较高的负载压力 L5 正是为了解决这一问题而设计的。它通过提供一种统一的消息驱动通信框架能够加速现有基于ODBC接口的应用程序性能表现 在小批量并发场景下能够实现接近理论极限的最佳吞吐量表现 同时系统也具备高度可扩展性 并支持根据实际网络条件动态选择最合适的技术实现方案 这种特性使得 L5 在面对少量客户端业务需求时能够展现出极佳的时间效率和资源利用率 同时系统的最低延迟水平仅由硬件性能决定 而与应用程序层面的大规模批量处理无关
2.3 与新型存储技术结合
随着新型存储技术的发展趋势日益明显,在这一大背景下,新型存储设备如PM和NVMe SSD等逐渐取代了传统的磁盘介质。将RDMA技术与新型存储介质的独特性能进行融合应用,则有助于构建一个高效可靠的高速存取系统;这也是众多学术界人士当前的研究热点关注方向。
在云计算环境下,为了提升网络传输性能,在终端系统中广泛采用RDMA(远程直接内存访问)与NVM(非易失性内存)结合的技术方案。在无CPU参与的情况下,单向RDMA操作能够显著提升远程内存访问效率。而NVM技术则具备非易失性、支持字节级可寻址以及类似于DDR的大规模延迟特性。为了实现端到端的高吞吐量目标,很多研究致力于探索部分RDMA技术和NVM之间的协同应用策略。其中一种创新方法被称为Erda(零拷贝日志结构内存设计),该方案特别关注于数据远程传输中的高效性和原子性问题。具体而言,在Erda架构中,默认客户端通过单侧RDMA操作将数据直接写入至服务器的目标地址位置,并无需经历任何冗余复制或远程CPU消耗过程。此外,在不依赖客户端-服务器协调机制的情况下进行数据完整性验证校验和计算也是一个重要特征。通过采用哈希表中的8字节原子更新机制来保证元数据的一致性,并保留所有历史记录信息。当系统发生故障时,在正确恢复至一致版本后仍能维持稳定运行状态。经过实验验证表明,在与传统Redo Logging方案(依赖CPU参与)及Read After Write方案(以网络为主导)相比,在保证相同性能指标的前提下,Erda方案能够减少约50%的NVM写入次数,并显著提升整体吞吐量的同时降低系统延迟水平
现有分布式文件系统实现了严格分离文件系统与网络层的功能,并由于复杂的层次架构导致计算资源未能被充分释放。基于此需求背景提出一种支持RDMA运算的分布式持久内存方案Octopus,在重新架构了系统的内部机制后实现了对NVM的有效整合。对于数据操作层面 Octopus 通过共享持久内存池减少了数据复制开销 并在客户端主动获取和推送数据从而平衡了服务器负载与网络处理能力之间的关系。在元数据操作方面 Octopus 引入了带有自我识别特征的RPC协议不仅实现了对文件系统与网络实时通知还建立了高效的分布式事务模型以保证系统的整体一致性评估结果表明该方案能够接近理论最大带宽 在性能上相比现有方案提升了几个数量级
2.4 研究现状分析
基于RDMA的应用优化方案本质上是通过以下策略实现的:合理选择通信原语、降低注册开销以及减少直接内存访问频率等措施。与传统以太网通信方式相比,RDMA提供了Read/Write和Send/Recv等单向远程访问接口。在权衡CPU、内存资源消耗及传输性能等多个因素后发现:需要根据具体情况合理选择Read/Write或Send/Recv通信原语的应用场景。对于无需内存注册的小规模数据传输任务,则可以直接采用Send/recv通信方式以获得较好的性能表现。通常情况下,在数据传输过程中应考虑对相关内存进行预注册操作,并建议一次性注册较大容量区域以有效降低内存注册开销。由于RDMA NIC每次执行DMA操作都需要占用主机总线带宽资源,在一个QP向其发送多个WQE时,建议该 NIC 可通过一次性的DMA操作将所有WQE批量加载至缓存中从而减少DMA操作次数。此外,在优化网络负载均衡性能的同时也对数据组织与索引方式进行了相应优化措施以进一步提升RDMA系统的性能效率
现有配置中,RDMA网卡与处理器各自配备了独立的缓存机制。受限于现有RDMA网卡缓存容量的限制,在实际运行过程中如何有效管理这些有限资源将直接影响系统的整体性能表现以及扩展潜力。此外,在多核处理器架构下利用其强大的并行处理能力进行数据传输优化仍存在较大的提升潜力。
3 总结与展望
本文简述了RDMA技术的基础理论,并基于当前关于RDMA技术在行业中的应用研究,系统地探讨了其在分布式存储、数据库以及新型存储技术等领域的代表性研究成果。
在数据中心领域中, RDMA 技术的应用已经非常广泛,并已成为上层高性能计算系统的重要支撑。随着分布式计算架构的不断发展成熟,在未来这类系统不仅要依靠 RDMA 技术本身的基础上,在提升性能方面还需要借助专门设计的硬件支持。值得注意的是如今一些 RDMA 网卡已集成 NVMoF(NVMe over fabrics)功能模块,并且能够通过该技术实现对固态存储设备的直接操作从而进一步加快分布式日志系统的数据传输效率
未来研究者可利用RDMA与NVM架构设计新型分布式事务系统,在其性能优化方面可充分运用单边及双边RDMA的强大功能实现事务执行。在该系统的并发控制及复制协议设计中广泛采用RDMA与NVM技术以期带来显著性能提升空间。同时为了确保系统的高可用性建议采用乐观并发控制(OCC)机制以保证严格的数据一致性并实现主备份复制功能。具体而言可通过将NVM构建为分布式共享内存池的方式有效管理数据库记录及事务日志信息。该系统采用四阶段流程来进行事务处理:首先在执行阶段通过单边RDMA READ操作读取存储于NVM中的数据库记录;其次在验证阶段借助单边RDMA比较和交换(CAS)操作获取与记录位置一致的锁;随后的日志记录环节则利用单边RDMA WRITE操作将事务更新内容复制至备份存储;最后在Commit阶段通过双边RDMA操作更新并释放相关记录锁定完成整个事务流程。当前基于RDMA网络架构与高性能持久存储技术的研究已逐渐成为当前研究热点领域这一创新性技术方案不仅为大数据处理提供了新的理论框架也为实际应用中的高效数据存储方案开发开辟了新思路
