作 者: @NGDCN
原文链接: 【NSDI'23】SRNIC:RDMA NIC的可扩展架构
版 权: 本文由 @NGDCN 于2022-11-28原创发布在 NGDCN,未经许可,禁止转载。
香港科技大学陈凯老师的SRNIC,尝试解决网卡QP连接数过多的问题,该论文现已被NSDI 2023录取。本文带大家一起来看看问题背景和motivation。
符合预期的RDMA要具有高度可扩展性:在数据包丢失不可避免的大型数据中心网络中表现良好(即,高网络可扩展性),并支持每台服务器大量高性能连接(即,高可扩展性)。商用RoCEv2 NIC(RNIC)缺乏可扩展性,因为它们依赖于无损、有限规模的网络结构,只支持少量高性能连接。最近的工作IRN通过放宽无损网络要求来提高网络可扩展性,但连接可扩展性问题仍未解决。
在本文中,我们旨在通过设计SRNIC(一种可扩展RDMA NIC架构)来解决连接可扩展性挑战,同时保持商用RNIC的高性能和低CPU开销,以及IRN的高网络可扩展性。我们对SRNIC的关键见解是,通过仔细的协议和架构协同设计,可以将RNIC中的片上数据结构及其内存需求降至最低,从而提高连接可扩展性。在这一洞察的指导下,我们分析了RDMA概念模型中涉及的所有数据结构,并通过RDMA协议头修改和架构创新(包括无缓存QP调度器和无内存选择性重传)尽可能多地删除它们。我们使用FPGA实现了一个功能齐全的SRNIC原型。实验表明,SRNIC在芯片上实现了10K性能连接,在标准化连接可扩展性(即每1MB内存的性能连接数)方面比商用RNIC高18倍,同时实现了97 Gbps吞吐量和3.3µs延迟,CPU开销低于5%,并保持了高网络可扩展性。
数据中心应用程序日益推动对高速网络的需求,预计高速网络将提供高吞吐量、低延迟和低CPU开销,并通过大规模网络(也称为网络可扩展性)提供大量连接(也称为连接可扩展性)。具体而言,带宽密集型应用,如分布式机器学习训练和云存储,需要服务器之间的100Gbps及以上网络带宽;搜索和数据库等在线服务要求低延迟以最小化查询响应时间;大多数应用程序需要具有低CPU开销的网络协议栈来为计算保留尽可能多的CPU核;像阿里巴巴盘古这样的云存储需要每个主机大量的高性能连接,以在块服务器和块服务器之间提供mesh通信;最后,但并非最不重要的是,随着其应用范围的扩大,高速网络往往会大规模部署。
远程直接内存访问(RDMA)由于其高吞吐量、低延迟和低CPU开销等架构创新(包括内核旁路和传输卸载)而成为一种流行的高速网络技术。凭借这些优势,RoCEv2(RDMA over Converged Ethernet Version 2)正在成为现代数据中心中高速网络的事实标准。
尽管具有高性能和低CPU开销,但商用RoCEv2 NIC(RNIC)同时存在网络可扩展性和连接可扩展性问题。一方面,网络可扩展性问题来自PFC(基于优先级的流控制),这是RDMA实现无损网络结构所需的。PFC带来了诸如线路阻塞、拥塞扩展、偶尔死锁和大规模集群中PFC风暴等问题。因此,数据中心运营商倾向于将PFC配置限制在较小的网络范围内(例如,中等集群)。另一方面,连接可扩展性问题是当连接数(即队列对(QP))超过某个小阈值(例如256)时RDMA性能急剧下降的现象。尽管商用RNIC是黑盒,但这种性能崩溃现象的根本原因被解释为连接之间的上下文切换导致的缓存未命中。
为了提高RNIC的网络可扩展性,现有工作IRN主张通过用更有效的选择性重传(SR)代替go-back-N来消除PFC的有损RDMA。然而,SR的引入并不简单:它添加了一些特定于SR的数据结构,从而增加了内存消耗。为了减少片上内存开销,IRN进行了一些RoCEv2报头扩展,但仍需要比现有RNIC实现多3-10%的内存。因此,IRN实现了高网络可扩展性,但未解决连接可扩展性问题。
在本文中,我们提出了SRNIC,一种可扩展RDMA NIC体系结构,以解决连接可扩展性问题,同时保持作为商业RNIC从传输卸载中继承的高性能和低CPU开销,并保持作为IRN的有损RDMA产生的高网络可扩展性。SRNIC的主要见解是,通过仔细的协议和架构协同设计,可以消除RNIC中的大多数片上数据结构及其内存需求,从而显著提高RNIC的连接可扩展性。在这一洞察的指导下,我们研究了有损RDMA概念模型(§3.1)中的典型数据流,分析了所有涉及的数据结构,将其分为两类:RDMA通常需要的通用数据结构,以及有损RDMA带来的选择性重传特定数据结构,最后采取定制的优化策略,分别最小化这两种类型的数据结构,以提高连接的可扩展性(§3.2)。
特别是,§4.3中提出的无缓存QP调度器优化了RDMA设计的通用数据结构,无论底层网络是有损还是无损。§4.4中引入的RDMA报文头扩展和位图加载(bitmap onloading)的优化是针对无内存选择性重传的,因此专门针对有损RDMA。
我们用FPGA实现了一个功能齐全的SRNIC原型(§5),并通过测试台和仿真评估了SRNIC的可扩展性和性能。实验(§6)表明,SRNIC实现了高连接可扩展性,同时保持了商用RNIC的高性能和低CPU开销,以及IRN的高网络可扩展性。具体而言,SRNIC支持10K个连接/QP而不降低性能,在标准化连接可扩展性(即每1MB内存的高性能连接数)方面,它比Mellanox RNIC CX-5高出18倍。同时,SRNIC实现97 Gbps线速率吞吐量和3.3µs延迟,CPU开销仅为5%(与Mellanox RNIC相当)。此外,SRNIC通过高丢包容限(在1%的丢包率下比Mellanox RNIC高3倍)和在大规模有损网络中可预测的性能,显示出其高网络可扩展性。
作为总结,图1显示了RDMA NIC的设计空间,并对不同解决方案进行了比较分析。尽管所有RDMA硬件解决方案都通过传输卸载和内核旁路提供高吞吐量、低延迟和低CPU开销,但它们的可扩展性各不相同。商用RNIC既有麻烦的PFC导致的网络可扩展性问题,也有未知的黑盒实现导致的连接可扩展性。IRN重新审视了对RDMA的网络支持,并通过引入具有3-10%额外内存开销的选择性重传来消除PFC的需要。结果,网络可扩展性显著提高,但连接可扩展性仍未解决。SRNIC利用IRN的有损RDMA方法来提高网络可扩展性,并通过设计指导原则进一步解决连接可扩展性问题:以简单而高效的方式最小化RNIC的片上存储器需求。因此,SRNIC实现了高网络可扩展性和连接可扩展性。
本文主要贡献如下:
● 我们通过引入RDMA概念模型(§3),系统地研究和量化RDMA NIC的内存需求。
● 我们设计了SRNIC,这是一种可扩展且高性能的RDMA NIC架构,它显著提高了连接的可扩展性,其指导思想是,通过仔细的RDMA协议修改和架构创新,包括无缓存QP调度器和无内存选择性重传,可以将概念模型中的片上内存需求降至最低(§4)。
● 我们使用FPGA实现SRNIC,只有4.4 MB的芯片内存。该实现实现了我们在可扩展性、性能和CPU开销方面的设计目标(§5和§6)。
与传统的软件传输TCP不同,RDMA是一种硬件传输,它完全在NIC硬件中实现传输功能,包括拥塞控制和丢包恢复,并为用户应用程序提供内核旁路和零拷贝接口。因此,与软件传输TCP相比,RDMA实现了高吞吐量、低延迟和低CPU开销。
RDMA最初是为无损Infiniband设计和简化的。为了使RDMA在以太网中工作,RoCEv2依靠PFC将以太网转变为无损结构。然而,PFC带来了管理风险和网络可扩展性挑战(例如PFC风暴和死锁),这些风险和挑战会影响整个网络的可用性,还会因线路头阻塞(head-of-line-blocking, HoLB)而对无辜流造成附带损害。此外,对于PFC,无损网络规模也受到交换机缓冲区大小的限制。因此,数据中心通常限制RDMA网络的规模。
由于RoCEv2的网络可扩展性问题主要由PFC引起,IRN采取了第一步来重新考虑RDMA的网络需求,通过用更有效的选择性重传替换默认的有损恢复机制go-back-N,消除了PFC,并允许RDMA在有损网络中良好工作。然而,这使得连接可扩展性的挑战没有得到解决。
商业RNIC面临众所周知的连接可扩展问题,即,随着QP数量增加超过一个小值(在不同设置中从16到500不等),RDMA性能显著下降。我们使用现成的商用RNIC(包括启用PFC的Mellanox CX-5和CX-6)来演示此问题。如图2a所示,当QP数量从128增加到16384时,Mellanox CX-6的总吞吐量下降了46%(从97到52 Gbps),并且从CX-5到CX-6的连接可扩展性没有明显改善。
RNIC性能下降的根本原因通常解释为缓存未命中。商用RNIC通常采用无DRAM架构,该架构没有DRAM直接连接到RNIC芯片以降低成本、功耗和面积,但只有有限的片上SRAM。因此,RNIC只能在芯片上缓存少量QP,而将其他QP存储在主机内存中。当活动QP的数量增加到超过单芯片内存大小时,频繁的缓存未命中和主机内存和RNIC之间的上下文切换会导致性能崩溃。我们在图2b中的实验从某种意义上验证了这一点。在性能崩溃期间,我们观察到大量额外的PCIe带宽和ICM缓存miss的增加。这两个指标都反映了某些类型的缓存未命中,导致256个QP后额外的PCIe流量增加。
虽然片上SRAM是有限的,但性能下降得如此之早,这是不正常的。给定一个QP的片上内存大小和QP上下文(QPC)大小,我们可以估计在没有缓存未命中和性能崩溃的情况下可以支持的高性能QP的最大数量:
让我们以Mellanox CX-5为例。其片上内存大小为∼2 MB,QPC需要∼375 B,因此CX-5支持的高性能QP的最大数量可以达到5.6K(2 MB/375 B),这与图2a所示的事实相矛盾,即CX-5的性能在256个QP时就开始崩溃。这种矛盾意味着存在显著提高连接可扩展性的空间。
基于这一矛盾,我们系统地分析了RNIC的内存需求,并基于从彻底的内存分析中得出的见解改进了连接可扩展性。
译者注:最终的效果也是非常的好,克服了QP连接数的限制,能够支持更多的连接:
文章方案细节,本文暂不赘述。有兴趣的读者,可以下载论文阅读更多方案细节,参考文章链接。
更多NSDI 2023顶级会议文章的精彩内容,可查看链接。