A DBMS-centric Evaluation of BlueField DPUs on Fast Networks

A DBMS-centric Evaluation of BlueField DPUs on Fast Networks

高速网络上以DBMS为中心的BlueField-DPU评估

背景与目的

  一方面,RDMA技术可以绕过复杂的网络IO栈完成数据移动,从而减少了数据传输中消耗的CPU资源,大大降低了分布式DBMS的远程数据访问延迟,并带来可观受益。另一方面,以英伟达Bluefiled-2为代表的DPU带来了新的异构算力,使网络IO、存储IO等有关任务的计算可从CPU上卸载到DPU来完成,进一步解放了CPU的算力。   这两项技术,有共同的目标——减轻CPU处理网络IO的负担,因此作者的目标是:通过实验测试,采用了RDMA技术的DPU在分布式DBMS下做特定IO任务卸载的能力。

  作者认为这将带来以下好处:

  • DPU减轻了网卡通过PCIe和主机进行通信造成的不可忽视的网络延迟。
  • DPU用作远程CPU的额外计算资源,可以提升总吞吐量。

  然而,DPU的ARM核通常不如远程主机中的CPU强大,因此盲目地将计算卸载到DPU往往会导致性能下降,因此需要合理的设计卸载策略。

设计与实验

文章对两种典型场景做了任务卸载设计:

1. Remote B-tree

  B树是DBMS经常使用的数据结构,且能在分布式体系结构中避免数据全量传输,是典型的负载。对基于RDMA的B树,DPU可在本地实现树遍历,使得B树的操作可在“计算层→存储层”的一次往返中实现,而不涉及存储节点的CPU;同时,B树存储在DPU的内存中,而非使用CPU内存资源。   作者在Bluefiled-2及RDMA技术支持下,设计了两类B树策略:①使用双边RDMA上的RPC ②使用单边RDMA(即无RPC) —- 单双边RDMA的描述

1.1 双边RDMA

吞吐量评估   为了同时使用CPU和DPU这两种计算资源,作者同时利用主机内存和DPU内存进行B树的分区存储并进行范围划分(存储在DPU上的B树从0到100%不等)。此外,作者统一创建的索引请求使树的存储分区大小与工作负载高低相成正比。   此时测试结果如下图所示:   随着越来越多的IO被路由到DPU进行处理,最初的吞吐量稳定增加,这一趋势在25%左右的B树被存至DPU时达到顶峰。此时,例如对于具有1M密钥的树,总吞吐量增加了47%;然而,对于较大的树来说,吞吐量的增长略小。   但是,当卸载到DPU的B树超过约25%并不断增长时,由于DPU核的算力不足导致DPU过载,系统总体性能将逐渐下降并最终弱于纯CPU的表现。

  同时作者还注意到,100%DPU处理状态下,系统的性能瓶颈是RPC处理还是B树?为此,作者单独测试了DPU上进行本地IO操作的性能,测试结果如下:   将图5的查找性能与图4中100%卸载时进行比较:

  • 对于最小的树,RPC查找(只读)吞吐量为4.7MOps,而本地B树为9.9MOps。这表明对于较小的树,一半的吞吐量由于RPC网络开销而损失。
  • 对于256M个key的最大树,在没有RPC开销的本地IO情况下,DPU上的查找吞吐量为2MOps和而有RPC时吞吐量为2.5MOps,差异并不明显。其原因是,对于最大的树来说,瓶颈是越来越多的缓存未命中到主内存。因此,与较小的树相比,RPC处理引入的CPU缓存和指令开销不会对性能产生太大影响。

  总的来说,这些发现也证实了我们之前在图4中的结果,因为卸载的好处源于DPU可以向主机CPU额外提供的查找请求

时延评估   继续采取前文所述的B树分区存储策略进行测试,同时为了不使主机或DPU过载,实验仅采用单线程发出请求。实验结果表明(图略),0%卸载下延迟最低;随着更多RPC请求被路由到DPU,延迟略有增加(在14%和20%之间)。这与作者的预期形成了对比,其最初认为CPU核心和内存位于同一设备上应该会降低网络延迟,这可能由两个因素导致:

  • DPU CPU核心实际上也与PCIe上的网络硬件(ConnectX)分离,这可能会降低延迟优势。
  • 与主机相比,在DPU上进行B树操作的内存访问延迟可能更高。

为探究原因,作者进行进一步测试:   首先,为了隔离出网络延迟特性,作者使用PerfTest1(标准的RDMA基准测试工具)向存储主机或DPU发出SEND请求,测试有数据内联和没有数据内联的情况下的延迟表现。实验结论是:非内联模式下DPU的延迟一直比CPU低0.4微妙,而内联启用后,由于RDMA的SEND操作的有效负载小于最大内联大小(实验硬件的内联大小限制为236字节)时可以节省PCIe到NIC的往返行程。即对于较小的消息(如RPC框架使用的32字节),内联使CPU与DPU的PCIe开销差距大大缩减。   其次,作者通过测量不同内存块大小的随机内存访问的延迟来测试CPU和DPU的内存访问性能:若内存较小,CPU能缓存大多数请求,若内存较大,则会发生更多的缓存未命中。实验证明,最后一级缓存大小的差距:DPU(6MIB)VS CPU(48MIB),使测试大小超过1MIB后,DPU的内存访问延迟比CPU要高得多。

  总之,BlueField上的网络消息延迟有所增加,其因素有:DPU内存较慢、缓存较小以及内联消息小带来的收益较小。所以,鉴于DPU上的CPU和Memory比服务器级机器慢得多,因此将数据密集型操作盲目卸载到DPU上会严重影响性能。

1.2 单边RDMA

  正如前文所述,BlueField-2的内存和CPU内核性能相对孱弱,难以实现良好的RPC性能,在一定条件下成为性能瓶颈。而使用单边RDMA访问分布式存储系统中的远程数据可以绕过CPU/内核,这将有助于减轻DPU的计算负载。

吞吐量评估   同前文测试方法一样,逐渐将B树卸载到DPU,其吞吐量数据如图9所示:将更多的B树分区到DPU时吞吐量保持稳定。因此,DPU是卸载单边RDMA的良好候选者,因为它减轻了存储服务器的主机系统的主存储器上的负载。

  进一步地,2048B大小的节点提供了0.8MOps的最佳吞吐量。其原因是,2048B的RDMA读取在吞吐量和延迟方面比512B更高,但较大的节点会导致更大的扇出和更浅的树,导致更少的网络往返开销。虽然与RPC解决方案相比,单边RDMA测得的绝对吞吐量要低得多,但远程NIC上的争用可以分散开来,以实现更高的吞吐量。

时延评估   前文中,由于缓存较小和CPU较慢,将RPC B树查找卸载到DPU的延迟有任何改善,但这些因素对单边访问的影响并不大。由于DPU核心与网络非常接近,作者预计随着卸载量的增加,延迟会逐渐减少,测试结果如图10所示:   结果表明,DPU提供的查找速度比主机更快,对于不同的树和节点大小,改进约为11-13%。对于所评估的树大小和节点大小,观察到的延迟的差异是由于RDMA读取的延迟和树的深度不同(例如,512 B的节点深度为6,而2048B的节点深度仅为5,因此少一个RDMA读取)。实验表明,512B读取相对于2048B读取的产生较低延迟不会抵消额外读取一次的成本。

总结

  • 由于BlueField-2的相对较弱的CPU不参与单边RDMA,使此时的DPU具有更好的卸载能力。
  • 由于CPU核心和网络位于同一物理板上,访问延迟更低。
  • 卸载单边RDMA减轻了主机本地主存储器上的读写压力,有利于并发内存密集型应用程序,这在高速网络中更为明显,例如具有200 Gbps的BlueField-2型号。

二. End-host Sequencer

  全局计数器用于分布式系统中的全局时间戳,作者将计数器放置在远程DRAM主存储器中,通过测试单边RDMA原子操作和基于RPC的本地原子操作,评估了存储主机和BlueField-2 DPU之间的性能差异。

单边RDMA原子操作   在RDMA原语中已经提供了原子操作,使得多个客户端可以在没有任何额外协调的情况下通过网络执行“获取和添加”或“比较和交换”操作,促进无锁情况下对远程数据的单边访问。此处,作者使用单侧RDMA“获取和添加”操作下评估了远程计数器的性能。   图11显示,同一计数器的客户端线程数量的增加时,DPU大大提高了吞吐量(最高至50%);DPU在延迟上的收益开始不明显,超过饱和点后,随着争用的产生和请求排队的增加,延迟线性增加且DPU上的延迟明显更低。

基于RPC的本地原子操作   为了实验完整性,作者同样测试了基于RPC的双边RDMA方法,然而主机的相对强大的CPU导致比DPU高得多的吞吐量。然而,在计数器评估中,CPU和DPU的性能差异仅为2倍,而在B树中大约为3倍,其原因是计数器的内存密集度较低,对DPU更友好。

总结   实验证明计时器可以卸载到DPU,尤其是采用单边原子访问。与主机相比,DPU的存储器更接近网络,导致吞吐量增加50%;虽然单边访问的吞吐量比RPC实现差,但没有给DPU带来过多负载,且2MOps的吞吐量对于许多用例来说已经足够了。

思考与展望

文章价值

  • DPU性能并不如主机,不适合暴力卸载
  • 在延迟和吞吐量方面,单边访问都存在加速潜力,双边访问易使DPU过载
  • 将DPU与主机CPU结合有一定性能优势,但需合理分配工作负载。

我们该做什么?

  1. 自适应机制缺失 :文章提出了DPU做B树卸载的可能性和性能提升的证据。然而,真实世界中B树的最佳分区取决于工作负载的分布和CPU-DPU的性能比值。因此需要通过一套自适应解决方案在主机和DPU之间动态地重新平衡和重新分区B树。
  2. 负载均衡:更进一步,利用DPU的网络处理能力,使其专注于分布式集群中不同算力节点的负载均衡,即“自适应”工作交给DPU的ARM核处理,而非让DPU简单做IO任务的卸载,也值得探索。
  3. DPU ASIC的利用:BlueField提供的基于ASIC的加速器,如压缩/解压缩、加密/解密等可以被利用起来,这值得调研