SoftRDMA,读《SoftRDMA: Rekindling High Performance Software RDMA over Commodity Ethernet》笔记

INTRODUCTION

RDMA技术已在一些工业数据中心中得到应用,因为它为FaRM和Pilaf等应用提供了低延迟和高带宽。
RDMA在servers之间实现memory-to-memory的数据传输;网络协议完全在NICs中实现;减少了CPU的负载;数据传输完全在用户空间完成,绕过了内核,避免了系统调用和上下文切换的负载;以零拷贝的方式传输数据。
如今,主要有三种网络协议支持RDMA:InfiniBand,iWARP,RoCE。所有这些协议在技术和部署方面都面临各自的挑战:

  • IB:昂贵,与以太网基础设施不兼容;
  • ROCE:复杂,需要限制性配置;
  • iWARP:前端阻塞,不公平,交通拥堵问题蔓延。

硬件和软件的发展为RDMA提供了能力和机会,以软件的方式解决这些挑战,并且保证性能,性能以太网,NICs设备无需定制。
本文中,作者就受此启发提出了一种高性能的软件RDMA,其绕过内核,一次拷贝,内存缓冲区预分配和重用数据包和元数据。在现有商业服务器上实现和部署SoftRDMA协议时,不需要特殊的硬件或软件。

BACKGROUND AND MOTIVATION

首先列举现领域RDMA框架的技术细节,并总结常见的设计理念。然后列出在最近的商业硬件和软件演进中非常相似的技术改进,这些改进促使我们通过商业以太网重新设计高性能软件RDMA。

Domain RDMA Network Protocols

  • IB:支持原生的RDMA,但是需要定制的NICs和交换机。很明显IB网络与以太网不兼容,所以很难在现代数据中心中部署它。
  • RoCE:RoCE实际上是以太网上的IB,其中IB的传输层和网络层被原始以太网封装所替代。RoCEv2依赖于基于优先级的流量控制(PFC)来保证网络的无损。然而,PFC是一种粗粒度机制。它在端口级别运行,不区分流,导致潜在的死锁、head-of-line阻塞和不公平等问题,阻碍了它的大规模部署。
  • iWARP:在现有TCP/IP基础设施上启用RDMA,只有NICs需要定制(RNICs),不需要其他以太网设备的改变。

这三种协议都具有相同的设计思想,可以加速协议处理,减少CPU占用:(i)自定义协议并卸载到NIC;(2)绕过内核;(3)零拷贝;(iv)两端预分配和预注册内存缓冲区。虽然这三种协议可以提供高吞吐量和超低延迟的数据传输,但它们都需要定制的硬件设备,并且在部署到当今基于以太网的数据中心时都面临着如上所述的各自的挑战。

Hardware and Software Evolvements

近些年,硬件和软件都有了很大的发展,这给数据包处理带来了重要的技术进步。

  • Hardware:10GbE的广泛部署,40GbE、100GbE近在眼前。NICs还提供了对多处理器、多核心服务器的硬件支持。
  • Software:mTCP,IX,Arrakis等,利用这些硬件功能来创新高性能的packet I/O框架,包括Packet-shader’s packet I/O engine (psio)、netmap、DPDK等。它们驱动着包处理方面常见的重要技术变化:(i)零拷贝/一次拷贝;(ii)绕过内核;(iii)内存池、预分配和重用;(iv)批处理;(v)Affinity和预取,等。

得益于技术改进和架构优化,它们可以在软件方法中实现高吞吐量和低延迟。
因此,作者提出了SoftRDMA,有三个设计目标:(i)提供与硬件方案相当的延迟和吞吐量性能;(ii)不需要定制硬件设备;(iii)与基于商业IP的基础设施兼容。

SOFTRDMA DESIGN SPACE

Dedicated Userspace iWARP Stack

对于不同软件iWARP设计组合的研究工作包括:(a) User-level iWARP + Kernel-level TCP/IP; (b) Kernel-level iWARP + Kernel-level TCP/IP。内核内的堆栈有很大的开销。应用程序必须花费大量时间在内核中执行:交付中断、解复用和复制包。系统调用还会导致在每个内核交叉处发生的上下文切换开销。
本文提出基于用户级TCP/IP栈构建用户级iWARP。这不是一个新的概念,mTCP和Sandstorm的TCP/IP栈都是完全在用户空间运行。我们选择用户级堆栈,因为它们为我们提供了更低的开销、更高的性能、更自由的空间和更方便的新堆栈设计。

One-Copy versus Zero-Copy

在这里插入图片描述
商业网卡和设备驱动程序按照如下步骤处理输入数据:1)数据包通过DMA从网卡传输到环形缓冲区;2) NIC引发硬件中断;3)硬件中断处理程序调度RX软中断;4)软中断检测对应CPU的NIC设备轮询队列;5)软中断轮询相应NIC的环形缓冲区;6)从其RX环缓冲区复制数据包进行堆栈处理。重新初始化和填充环缓冲区中相应的槽;7)栈处理完成后,按顺序将输入包的有效负载复制到不同应用程序的缓冲区。在这7个步骤中,传统的堆栈完成了两次复制:第一次复制在步骤(6)中,第二次复制在步骤(7)中。通过内存映射和仔细的内存管理,可以消除内核空间到用户空间的第二次复制。可以共享DMA内存区域来删除第一个副本吗?
为了回答这个问题,我们回顾NIC和驱动程序之间的交互过程。在设备初始化期间,驱动程序将RX缓冲区分配为NIC的DMA区域。驱动程序将每个RX条目的地址写入NIC,并将这些地址视为一个环形缓冲区。NIC每次接收到数据包,就会向下一个空闲条目写入数据。由于环形缓冲区的容量有限且固定,所以如果NIC遇到数据包泛滥(例如微突发),可以重写条目。如果驱动程序没有足够快地将数据包复制出环缓冲区,NIC将由于缺少空闲的DMA条目而丢失数据包。
因此,共享DMA区域以支持零拷贝应该仔细考虑两点:1)不同应用程序的输入包放在哪里,以及如何管理它们?2) DMA区域是否足够大,或者是否可以快速重用,以容纳输入包?在上面的商业NIC和驱动程序的交互过程中,NIC在堆栈处理之前不知道应用程序指定的存储输入包的位置。DMA-enable区域也是有限且固定的,它最多只能存储数千个输入包(例如Intel 82599的最大环长为4096)。因此,第一个副本是必要的,并且需要尽快完成。
对于iWARP RNIC,应用程序预先注册内存,通知内存管理模块,在RNIC协议处理之后,NIC知道将输入包复制到何处。因此,RNIC可以实现零拷贝。

Threading Model Design

栈的线程模型设计与系统的吞吐量和延迟密切相关。我们列出了以前工作中使用的一些模型,并分析了它们的特性。
在这里插入图片描述

  • c1:在这个模型中使用了一对线程。一个负责应用程序中的包处理。另一种专用于包的接收和发送。这个模型对吞吐量很好,因为它可以批量处理数据包。然而,在这个模型中,吞吐量和延迟之间存在权衡。由于线程交换和通过主动批处理的通信开销,它会导致更高的延迟。
  • c2:图c2为run-to-completion线程模型。它运行接收和传输数据包所需的所有阶段,在特定的转换点交叉进行协议处理和应用程序处理。这确实提高了包处理的延迟。但是,如果应用程序处理稍微复杂一些,并且消耗更多的时间,那么run-to-completion线程的迭代时间可能太长,无法接收输入包。
  • c3:本文采用不同的多线程模式,如c3所示。一个线程负责数据包接收,其中包括从DMA内存区域到内核内存的第一次输入数据包拷贝,将数据包推入TCP/IP栈中进行处理,并将接收事件生成到事件队列中。另一个线程负责应用程序处理和数据包发送。接收线程可以加速数据包的接收过程,因为数据包的接收比发送更复杂。这允许更多的输入包被及时地提取到服务器的内存中。应用程序处理和发送运行在一个线程内,以提高效率和减少处理延迟。这是吞吐量和延迟之间更好的权衡。

SOFTRDMA IMPLEMENTATION

  • Verbs 是iWarp堆栈中应用程序可以访问的唯一接口。
  • RDMA protocal(RDMAP) 层为Verbs层提供通信原语。Verbs层工作请求按从RDMAP到低层的顺序交付。RDMAP被设计成一个基于流的层。
  • Direct Data Placement(DDP)层允许在应用程序中的用户缓冲区和RNIC之间直接传输消息,而不需要进行中间缓冲。
  • Marker PDU Aligned(MPA)协议在将标记传递到TCP层之前将它们插入到DDP数据单元中。它还从TCP流重新组装标记的数据单元,并在将标记传递到DDP层之前删除它们。
  • TCP/IP层是基于lwIP的源代码。
  • DPDK是英特尔公司生产的一种软件开发工具包,它允许用户直接访问标准的NIC。它使用UIO模块来映射设备I/O内存,并将中断映射到Linux中的用户空间。在SoftRDMA实现中,我们使用DPDK库实现one-copy并绕过内核。它应用内存预分配和重用,特别是分配了两个内存区域:一个用于包数据,另一个用于它的元数据。这减少了SoftRDMA的内存分配和重新分配成本。除此之外,DPDK还使用轮询模式操作:用户应用程序轮询来自NIC的新消息,而不是等待中断。结合SoftRDMA的接收循环线程,轮询模式将进一步降低数据包接收的延迟。

PERFORMANCE EVALUATION

在这里插入图片描述
在这里插入图片描述

DISCUSSION

接下来需要做的三件主要事情。

  • SoftRDMA将基于一个更稳定、更健壮的用户级堆栈,而不是lwIP,后者是为嵌入式设备而不是服务器系统设计的。
  • 利用NICs的一些常见硬件特性,如TCP checksum offload (TSO)、large segmentation offload (LSO)和large receive offload (LRO)等,进一步加快协议处理速度。对于基于内存的NIC,将实现一个真正的零拷贝SoftRDMA版本并对其进行评估。
  • 对SoftRDMA、iWARP NIC和RoCE NIC进行更多的对比实验。如在40GbE/50GbE设备上部署SoftRDMA,以检查它如何随NIC的链路速率伸缩。

CONCLUSION

本文设计了SoftRDMA,它采用专用的用户空间iWARP堆栈路线图来绕过内核,One-Copy来减少内存流量,精心设计的线程模型来更好地平衡吞吐量和延迟。SoftRDMA在短消息传输测试中实现了微秒延迟,并且在长消息传输中保持了高吞吐量和低延迟,这与硬件支持的iWARP方案相当。

SoftRDMA: Rekindling High Performance Software RDMA over Commodity Ethernet

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值