【sosp2023论文分享】Ditto:一个弹性自适应分离式内存缓存系统

news2025/2/23 1:53:36

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提出了以客户端为中心的缓存框架,在该框架中&

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1171464.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

链式二叉树的基本操作和相关OJ题训练(建议收藏!!!)

💓博主csdn个人主页:小小unicorn ⏩专栏分类:数据结构&C 🚚代码仓库:小小unicorn的代码仓库🚚 🌹🌹🌹关注我带你学习编程知识 链式二叉树基本操作 二叉树节点设置二叉…

FMC驱动LCD

硬件简介 主控:STM32H750 LCD屏幕为16位并口屏幕 CubeMX配置 chip select: 选择起始地址块号,ADDR[27:26] Memory type: 内存类型,选择LCD Interface LCD Register Select: 根据选择计算映射地址, FSNC_A[25] Data: 数据宽度 NOR/PSRAM ti…

RISC-V与RISC Zero zkVM的关系

1. 引言 本文基本结构为: 编程语言背景介绍RISC-V虚拟机作为zkVM电路为何选择RISC-V? 2. 编程语言背景介绍 高级编程语言不专门针对某个架构,其便于人类编写。高级编程语言代码,经编译器编译后,会生成针对专门某架…

Azure 机器学习 - 设置 AutoML 训练时序预测模型

目录 一、环境准备二、训练和验证数据三、配置试验支持的模型配置设置特征化步骤自定义特征化 四、可选配置频率和目标数据聚合启用深度学习目标滚动窗口聚合短时序处理非稳定时序检测和处理 五、运行试验六、用最佳模型进行预测用滚动预测评估模型精度预测未来 七、大规模预测…

网络基础扫盲--TCP/UDP

博客内容:TCP/UDP 文章目录 一、TCP与UDP二、tcp可靠性如何保证?1、三次握手2、TCP报头3、TCP四次挥手 一、TCP与UDP tcp与udp都是传输层的协议,用于数据的传输。 对于tcp而言数据的传输会比较可靠,主要依赖于tcp面向链接的&…

openGauss学习笔记-114 openGauss 数据库管理-设置安全策略-设置帐号有效期

文章目录 openGauss学习笔记-114 openGauss 数据库管理-设置安全策略-设置帐号有效期114.1 注意事项114.2 操作步骤 openGauss学习笔记-114 openGauss 数据库管理-设置安全策略-设置帐号有效期 114.1 注意事项 创建新用户时,需要限制用户的操作期限(有…

Prompt 设计与大语言模型微调,没有比这篇更详细的了吧!

本文主要介绍了Prompt设计、大语言模型SFT和LLM在手机天猫AI导购助理项目应用。 ChatGPT基本原理 “会说话的AI”,“智能体” 简单概括成以下几个步骤: 预处理文本:ChatGPT的输入文本需要进行预处理。 输入编码:ChatGPT将经过预…

如何使用Python和matplotlib绘制机器人运动偏差路径图——实用教程与代码解析

前言 科研论文中需要绘制一个精美的机器人运动路径图(其中包含了机器人的期望运动路径和实际运动路径)。我的期望路径是是一个方形,用Python代码是这样表示的: n_list [n1,n2,n3,n4] e_list [e1,e2,e3,e4] #n_list和e_list的各…

C++笔记之动态数组的申请和手动实现一个简单的vector

C笔记之动态数组的申请和手动实现一个简单的vector code review! 文章目录 C笔记之动态数组的申请和手动实现一个简单的vector1.C语言中动态数组的申请与使用1.动态数组的申请使用new和delete使用std::vector 1.std::vector的底层实现2.手动实现一个简单的vector:使用一个指向…

项目实战:展示第一页数据

1、在FruitDao接口中添加查询第一页数据和查询总记录条数 package com.csdn.fruit.dao; import com.csdn.fruit.pojo.Fruit; import java.util.List; //dao :Data Access Object 数据访问对象 //接口设计 public interface FruitDao {void addFruit(Fruit fruit);vo…

文件复制加密、文件落地加密、文件移动加密如何设置?

文件加密在保护信息安全方面具有重要作用。合格、好用的文件加密软件可以帮助企业保护商业机密、更遵守法律法规、提高企业核心竞争力、防止数据泄密等。 一般的加密都是对文件本身加密,比如加密某个WORD /PPT之类的,很少有能够加密某个文件夹的。今天就…

单链表基本操作的实现,初始化,头插,尾插,判空,获取个数,查找,删除,获取前置和后置位,清空,销毁

目录 一.单链表的设计 二.单链表的实现 三.单链表的总结 一.单链表的设计 1.单链表的结构定义: typedef struct Node{int data;//数据域struct Node* next;//后继指针}Node,*List; 2.单链表的设计示意图: 3.注意,单链表的最后一个节点的next域为NULL; 4.为什么要有一个头…

唯一ID如何生成,介绍一下目前技术领域最常使用的几种方法

纵使十面大山,又如何,无妨… 概述 唯一ID(Unique Identifier)是在计算机科学和信息技术领域中用于标识某个实体或数据的唯一标识符。生成唯一ID的方法可以根据具体需求和应用场景的不同而有所不同。以下是一些目前技术领域中常用…

2023-mac rz sz 安装

之前安装过一次,没问题,这次按照之前教程装了就不管上传下载都会卡住; step1: brew install lrzsz step2:在/usr/local/bin 路径下配置两个sh,之前从网上找到的直接用都不对,下面这个是调试过的正式可用的 iterm2…

【C语言进阶】之动态内存管理

【C语言进阶】之动态内存管理 1.为什么我们需要动态内存管理2.动态内存管理的函数介绍2.1malloc函数和free函数2.1.1malloc函数2.1.2 free函数 2.2calloc函数2.3realloc函数 3.动态内存管理中经常出现的一些问题总结。3.1 越界访问3.2 对空指针进行解引用操作3.3 对同一片空间进…

安全防御——二、ENSP防火墙实验学习

安全防御 一、防火墙接口以及模式配置1、untrust区域2、trust区域3、DMZ区域4、接口对演示 二、防火墙的策略1、定义与原理2、防火墙策略配置2.1 安全策略工作流程2.2 查询和创建会话 3、实验策略配置3.1 trust-to-untrust3.2 trust-to-dmz3.3 untrust-to-dmz 三、防火墙的区域…

归并排序--C语言实现

1. 简述 归并排序的原理是将&#xff0c;两个较大的数组分为大小几乎一致的两个数组。 再将两个数组进行合并成新的有序数组。 合并两个数组的时候需要额外的一个数组的空间。 2. 实现 上图说明过程 代码 #include <stdio.h>void Merge(int *arr, int *tmp, int …

freertos入门(stm32f10c8t6版闪烁灯)

首先到官网下载freertos源码&#xff0c;然后找一个stm32f10c8t6的空模板&#xff0c;这个空模板实现点灯之类的都行。 然后在这个空模板的工程下新建一个FreeRtos文件夹 接着在FreeRtos文件夹下新建三个文件夹&#xff0c;分别是src存放源码 inc 存放头文件&#xff0c;port …

Linux下查看文件夹大小命令

在Vscode上连接服务器&#xff0c;想查看文件夹大小&#xff1b; du -h path

4 个最常见的自动化测试挑战及应对措施

有人说&#xff1a;“杂乱无章的自动化只会带来更快的混乱。”不仅更快&#xff0c;而且是更严重、更大的混乱。如果使用得当&#xff0c;自动化可以成为测试团队中令人惊叹的生产力助推器和系统的质量增强器。自动化测试的关键是要正确运用&#xff0c;这是初始最困难的部分。…