通过耗尽RDMA的共享微架构,一个租户能对另一个租户施加大幅性能影响。 文章分析了RDMA的各种操作对性能的不同影响,并开发了一个测试套件来复现不同种类的影响(其实是攻击)。
本文旨在系统地了解RNIC微架构资源对性能隔离的影响。 文章提出了一个模型,表示RDMA操作如何使用RNIC资源。 利用这个模型,文章开发了一个测试套件来评估RDMA性能隔离解决方案,该测试套件可以在各种情况下击破所有现有的隔离方案。
开源:https://github.com/host-bench/husky
Background
RDMA Overview
这个讲的还挺不错的。
Why RDMA Performance Isolation is Hard?
这一节提出了三个可能的资源竞争位置
- Interconnect Context Memory Cache
- Work Queue Entry cache
- Memory Translation Table和Memory Protection Table
论文给它们起名叫microarchitecture resources。 以前的许多工作已经确定了这些微架构资源对RDMA应用性能的一些影响。 然而,这些努力是从应用开发者的角度来研究微架构资源的。 在性能下降后,他们找出瓶颈资源,寻求更有效的方法来使用数据动词,并相应地修改他们的应用。
然而,在公有云中,云提供商对租户的应用程序没有控制权。 因此,租户可以随心所欲地消耗RNIC的微架构资源,甚至是恶意的。 因此,从云提供商的角度来看,我们需要了解大多数(如果不是全部)RDMA动词,而不仅仅是普通数据动词,的微架构资源消耗。 只有掌握了这些知识,我们才能将RNIC的微架构资源正确分配给不同的租户,以提供可预测的性能。
RNIC Microarchitecture Resources
对于每个微结构资源,我们研究它是如何被三类RDMA操作消耗的:
- 为应用程序分配对象的控制动词(如ibv_create_qp)
- 启动数据传输的数据动词(如ibv_post_send)
- 处理异常或错误的exception处理操作(如RNR错误)
测量两个指标rps和qps。
NIC Caches
Key finding #1: control verbs can cause excessive cache misses and a drastic performance reduction.
Processing Units
Key finding #2: performance interference between differ- ent data verbs depends on the complexity of verbs.
Key finding #3: error handling can stall RNIC processing units and hang all the applications.
PCIe Bandwidth
Key finding #4: PCIe bandwidth will only become the bottleneck when the request size is in a specific range.
Other findings
Other finding #1: Data verbs contend for different RNIC caches.
Other finding #2: Wide range access across many objects (QP, CQ, MR) causes ICM cache misses.
Other finding #3: The impact of control verbs is restricted by its kernel involvement.
Husky Test Suite
Husky针对四种类型的资源:网卡带宽、PCIe带宽、网卡PU和网卡缓存。 对于每一种类型的资源,Husky用不同类型的行为(如控制动词)对合成工作负载进行标识,以耗尽该资源。