Ditto: An Elastic and Adaptive Memory-Disaggregated Caching System

摘要

Ditto首先提出了一个以客户端为中心的缓存框架,以在DM的计算池中高效地执行各种缓存算法,只依赖于远程内存访问。然后,Ditto采用了一种分布式自适应缓存方案,该方案基于多个缓存算法的实时性能自适应切换到最适合的缓存算法,以提高缓存命中率。我们的实验表明,Ditto有效地适应了DM上不断变化的资源,在现实世界的工作负载中比最先进的缓存系统高3.6倍,在YCSB基准测试中高9倍。


公众号阅读:


1、什么分离式内存

1.1 单控服务器架构

1.2 分离式内存

类似如下CLIO架构:

在Clio中计算节点(CN)直接使用以太网网卡连接到机柜交换机中,同时将内存节点(MN)直接连接到交换机上,在计算节点中运行的程序可以通过用户态库CLib使用内存节点的资源。

2、Ditto §2 必要性

2.1 单控服务器缓存系统的历史

(1)为单体服务器扩展内存通常非常浪费且昂贵,由于配置内存时必须按照严格顺序对称地扩展内存,且物理内存容量以指数单位增长,通常扩展内存会带来更大的内存浪费;

(2)CPU与内存紧密耦合,CPU仅能使用与安装在同一台物理主机上的内存资源。Azure数据中心的服务器在CPU有 85%租借给虚拟机后,平均有10%以上的内存闲置,无法被任何CPU利用;

2.1 分离式内存的优势

分离式内存系统旨在提供一种动态调整节点内存资源的机制。其期望在中小集群上(100 块CPU以内)提供一种延迟介于访问NUMA远端内存和访问最新NVMe SSD的之间的内存访问手段。

分离式内存可以实现内存资源解耦合,能够有效的提升数据中心资源的灵活性。与此同时,现有的分离式内存实现在提高系统内存利用率、提升任务总吞吐量、减小系统能耗等方面都有可观的提升。

分离式内存技术就是其中一种内存池化的可行路线。分离式内存给予主机像访问本地DRAM一样,访问其他主机的空闲内存(或内存池) 的能力。

3、Ditto §3 挑战

解决两个挑战:

1)绕过远程CPU会阻碍缓存算法的执行:

缓存系统在不同的工作负载下使用各种缓存算法。缓存算法监控缓存对象的热度,并通过在缓存数据结构中维护热度信息来选择替换对象。由于数据访问会改变对象热度,现有的缓存算法依赖于执行所有数据访问的缓存服务器的CPU来监控对象热度并维护缓存数据结构。但是,在DM上的缓存系统中,计算池中的应用程序(客户端)在访问对象时会绕过内存池中的CPU。因此在DM上为不同的工作负载支持各种缓存算法甚至更困难。

2)调整资源会影响缓存算法的命中率

缓存算法的命中率与工作负载的数据访问模式和缓存大小有关。在DM上,两个属性都会随着动态资源调整而变化。数据访问模式随着并发客户端(即计算资源)的数量而变化,缓存大小随着分配的内存空间(即内存资源)而变化。因此,最大化命中率的最佳缓存算法会随着资源设置而动态变化。具有固定缓存算法的缓存系统不能适应DM的这些动态特性,并且可能导致较差的命中率。

应对挑战的解决方案:

• Ditto提出了以客户端为中心的缓存框架,在该框架中&