ATC 2024 Paper 论文阅读笔记整理
问题
远程直接内存访问(RDMA)为数据密集型应用程序提供了高吞吐量、低延迟和最小的CPU使用率。各种数据密集型应用程序,如大数据分析[4,5]、机器学习[2,11,15,33]、分布式存储[21,27,28,41]和键值存储[20,25,27,38],都证明了RDMA的显著性能改进。然而,RDMA是为单租户使用而设计的,在多租户云环境中的安全性[19,32,39]、可扩展性[16,22,36,37]和性能隔离[22,23,40]方面面临挑战。
其中性能隔离是关键问题,性能隔离会影响租户可能无法达到预期的RDMA性能:传输大消息应用会影响传输小消息应用的性能;具有多个QP的应用会影响单个QP应用性能。
-
多租户同时使用RNIC时,图1(a),当五个应用程序发送小消息(<1KB)时,实现了RNIC最大消息速率。但是,添加另一个发送更大消息(1、2或4KB)的应用程序会限制其他应用程序的消息速率。另一个实验证明,两个应用程序共享一个RNIC,一个应用程序批量发送大小从64 B到1 GB的消息作为后台流量,另一个生成16 B消息,如图1(b、c)所示。随着后台消息的大小增加,消息速率和延迟逐渐恶化。这是因为RNIC以统一的优先级处理所有数据包,而不管它们的大小。这使得较小的数据包等待后台流量的较大数据包的传输。
-
RNIC的QP级轮询调度,会向多QP应用程序提供与其QP数量成比例的更多包传输机会,导致严重的公平性异常。
现有多租户环境中提供了RDMA性能隔离的方法可以分为两类:
-
基于硬件(HW)。如[14,19,35],利用SR-IOV[6]或RDMA硬件(如交换机或RNIC)支持的虚拟通道(VL)[1]。基于硬件的优点是可以提供严格的性能隔离,但无法正确处理动态变化的租户需求。
-
基于软件(SW)。侧重于拦截应用程序向RNIC生成的数据传输请求,并控制用户空间中每个租户的请求速率[22,30,40]。可以针对网络资源共享的动态变化实现更灵活的性能隔离。然而,对可用网络资源的不准确估计可能会导致严重的性能下降。如果低估了可用资源,则无法向RNIC发出足够的请求,导致吞吐量和处理速率下降;如果估计过高,RNIC中累积的请求可能会破坏性能隔离。
本文方法
本文提出了支持抢占的RDMA框架(PeRF),在不需要精确估计网络资源的情况下控制RNIC的数据包调度,为多租户提供高效的基于软件的性能隔离。
-
利用RNIC抢占机制来动态控制每个租户的RDMA资源利用率。通过使用特定的动词实现(如RDMA用户级API[8]中提供的IB_WR_WAIT和IB_WR_ENABLE),提示RNIC暂时暂停一个连接的数据包处理,允许另一个活跃连优先处理,类似于操作系统中的抢占式作业调度。
-
在租户生成的请求之间使用抢占,并弹性控制RNIC的数据包传输。通过有选择地抢占使用大消息或多个连接的应用程序,对小消息或单个连接的应用更有益。但RNIC抢占机制可能会给CPU(用于拆分大型消息)和RNIC(用于管理较大的请求缓冲区)带来一些开销。调查显示开销很小,不会对PeRF的性能产生不利影响。
评估表明,与基于软件的方案相比,PeRF在延迟相似的情况下提供了更高的吞吐量(约2.04倍)。
实验
实验环境:由五台相同机器组成的机架级集群。每台机器都有一个16核Intel(R)core(TM)i7-11700K 3.6GHz CPU、32GB DRAM,通过Mellanox Open Ethernet 100 Gbps交换机(SN-2100)连接。默认使用适用于RoCEv2的ConnectX-6作为RNIC。
总结
针对多租户场景RNIC争用导致的性能下降问题,由于RNIC的QP级轮询调度,导致:大消息应用影响小消息应用的性能,多QP应用影响单QP应用性能。本文提出支持抢占的RDMA框架PeRF,利用RNIC抢占机制来动态控制每个租户的RDMA资源利用率。通过使用特定动词,提示RNIC抢占式调度,类似于操作系统中的抢占式作业调度。在租户请求之间使用抢占,并弹性控制RNIC的数据包传输,对小消息或单个连接的应用更有益。