AC-Cache: A Memory-Efficient Caching System for Small Objects via Exploiting Access Correlations——泛读

PPoPP 2025 Paper 论文阅读笔记整理

问题

内存键值(KV)缓存[13,46]弥补了高性能网络和磁盘设备之间的性能差距。但内存缓存系统面临缓存节点之间的负载不平衡问题[5,29,31,50,64,65],这通常是由数据访问中的流行度偏差引起的,其中少数KV对象的访问频率远远高于其他对象。

为了缓解负载不平衡问题,之前的研究采用对象复制[2,15,29],或将对象划分为段并在缓存节点上均匀分布。但这些方法要么适用于大型对象(数百MB到数十GB[61]),要么引入额外的内存开销。

本文对56条生产轨迹进行了分析,发现小对象(几十字节到几KB)占主要部分,并得出两个观察结果:

  • 小对象主导轨迹,且数据访问高度偏斜。

  • 对象的热度在几天内保持稳定。

通过实验发现,与使用单个get操作相比,从同一节点检索多个对象的多get操作产生的尾延迟要短得多。因为减少了网络开销和序列化,可以借此通过批量操作优化性能。

本文方法

本文提出了AC Cache,一种用于小对象的访问相关性感知的内存缓存系统。

  • 将KV对象的分布表示为整数线性规划问题,以平衡数据访问和内存消耗。

  • 基于计数最小草图(CM草图),以内存高效的方式捕获访问相关性,并生成细粒度的相关性组。

  • 将相关组的分布表示为最大流问题来平衡数据访问,并利用启发式算法调度其他KV对象来平衡内存消耗。

开源代码:https://github.com/nankeys/ACCache

在阿里云上对数十亿个对象进行的广泛实验表明,AC Cache可以将尾部延迟降低5.1-80.2%,并将访问吞吐量提高42.8-534.8%。

总结

针对内存KV缓存问题,现有方法主要适用于大对象,进行对象划分和复制。本文分析发现小对象占主要部分,且访问高度倾斜、热点稳定。于是提出AC Cache,用于小对象的访问相关性感知的内存缓存系统。包括3个技术:(1)将KV对象的分布表示为整数线性规划问题,以平衡数据访问和内存消耗。(2)基于Count-Min Sketch,捕获访问相关性,并生成细粒度的相关性组。(3)将相关性组的分布表示为最大流问题平衡负载,并利用启发式算法调度平衡内存消耗。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

妙BOOK言

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

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

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

打赏作者

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

抵扣说明:

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

余额充值