ROLEX: A Scalable RDMA-oriented Learned Key-Value Store for Disaggregated Memory Systems——论文泛读

本文介绍了一种新的解决方案ROLEX,针对分离内存系统中KV存储性能瓶颈,通过解耦数据修改与模型再训练,实现在高扩展性和低延迟下的高效数据处理。ROLEX在静态和动态工作负载上表现出色,尤其是在动态负载下性能提升显著。
摘要由CSDN通过智能技术生成

FAST 2023 Paper 论文阅读笔记整理

问题

分离内存系统将单一的服务器分成不同的组件,包括计算节点和内存节点,以享受高资源利用率、灵活的硬件可扩展性和高效的数据共享。通过利用高性能的RDMA(远程直接内存访问),计算节点可以直接访问远程内存池,而无需涉及远程CPU。

有序键-值(KV)存储(例如B树和学习索引)将所有数据排序以通过高性能网络提供范围查询服务。然而,在分离的内存系统上,现有的有序KV存储在工作上存在问题,要么消耗多个网络往返来搜索远程数据,要么过于依赖于配备有限计算资源的内存节点来处理数据修改。

挑战

  • 内存节点上的计算资源有限。难以修改大型B树和频繁重训练模型。

  • 用于数据传输的带宽过载。将数据修改(更新B树和更新模型)卸载到计算节点可以满足计算需求,但由于传输了大量数据,这会迅速占用整个带宽。

  • 不同节点之间的不一致问题。主要原因是RDMA操作的原子粒度是8B,这比每个索引操作的大小小得多。计算节点需要多次网络往返以保证数据的一致性,从而导致一致性的高开销。

现有方法局限性

在分离的内存系统中部署基于树的结构效率低下,因为内部节点占用大量内存空间且无法被完全缓存,导致遍历整个树需要多次网络往返。各种索引缓存方案 [31, 43, 52] 提出通过本地缓存部分数据来缓解网络开销,然而这仍然会受到数据快速增长导致无法避免的容量缺失的影响。

学习索引通过回归模型训练一个近似函数,根据Key获取数据范围,体积比树形结构小2-4数量级,可以完全缓存到计算节点。通过在本地保存整个学习索引结构,对于静态(即只读)工作负载,计算节点只需要进行一次单边 RDMA 读取即可获取远程数据。但静态模型无法扩展到动态范围。现有方法依赖于单一的服务器来处理动态(即读写和写入密集型)的工作负载。

本文方法

我们提出了一种具有学习索引的可扩展的面向RDMA的KV存储,称为ROLEX,在分离的系统中合并有序的KV存储,实现高效的数据存储和检索。

  • ROLEX利用一种重新训练解耦的学习索引方案,通过向学习模型添加偏差和一些数据移动约束,将模型的重新训练与数据修改操作分离开来。

  • 基于这种操作解耦,数据修改直接在计算节点中通过单边RDMA动词进行,具有很高的可扩展性。

  • 模型的重新训练因此从数据修改的关键路径中移除,并通过使用专用计算资源在内存节点中异步执行。

我们在YCSB和实际工作负载上的实验结果表明,相比与XStore-D,ROLEX在静态工作负载上达到了相近的性能,并且在动态工作负载上的性提高了2.2倍。

开源代码:https://github.com/iotlpf/ROLEX

实验

实验环境:具有3个计算节点和3个内存节点的集群上运行所有实验,每个节点都配备了两个26核Intel(R)Xeon(R)Gold 6320R CPU@2.10Ghz、188GB DRAM、一个100Gb Mellanox ConnectX-5 IB RNIC。每台机器中的RNIC都与一个100Gbps IB交换机相连。限制了内存节点的计算资源利用率(即,测试台中的1个CPU核心)。默认情况下,所有计算节点都使用24个线程运行。

数据集:使用 YCSB [47],包含 6 个默认工作负载: (A) 更新重型 (50% 更新)、(B) 主要读取 (95% 读取)、(C) 仅读取、(D) 读取最新 (5% 插入)、(E) 短范围 (95% 范围请求) 和 (F) 读取-修改-写入 (50% 修改),以评估性能,使用均匀和 Zipfian 请求分布。还有 2 个真实数据集和 2 个合成数据集的写入密集请求下评估性能 [24]。其中,Weblogs 和 DocID 分别包含 200 和 1600 万个键值对,具有不同的数据分布。两个合成数据集包含 1 亿项,并分别满足正态和对数正态的数据分布。我们配置所有工作负载的键和指针为 8 字节(即变长值的引用),以进行全面评估。

实验对比:吞吐量、延迟、元数据占用空间、

总结

针对分离式内存系统中,KV存储性能不高的问题,由于内存节点资源有限,现有方法难以直接修改B树或学习索引的模型。作者提出提出了ROLEX,一种可扩展的面向RDMA的有序键值存储,使用分解存储系统的学习索引。包括几个优化点:插入和再训练操作解耦,使计算节点能够直接通过单边RDMA动词修改远程数据,而无需再训练模型,提高可扩展性;其他计算节点通过具有一致性保证的旧模型来识别新修改的数据;异步使用专用计算资源重新训练模型,以提高模型的准确性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

妙BOOK言

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值