Rcmp: Reconstructing RDMA-Based Memory Disaggregation via CXL——论文阅读

news2025/3/13 10:51:31

TACO 2024 Paper CXL论文阅读笔记整理

背景

RDMA:RDMA是一系列协议,允许一台机器通过网络直接访问远程机器中的数据。RDMA协议通常固定在RDMA NIC(RNIC)上,具有高带宽(>10 GB/s)和微秒级延迟(~2μs),这些协议得到了InfiniBand、RoCE和OmniPath等公司的广泛支持[20, 47, 62]。RDMA基于两种类型的操作原语提供数据传输服务:单侧动词,包括RDMA READ、WRITE、ATOMIC(例如FAA、CAS);双侧动词,包括RDMA SEND、RECV。RDMA通信是通过队列对(QP)和完成队列(CQ)的消息队列模型来实现的。QP由发送队列(SQ)和接收队列(RQ)组成。发送方将请求发布到SQ(单侧或双侧动词),RQ用于在双侧动词中排队RDMA RECV请求,CQ与指定的QP相关联。同一个SQ中的请求按顺序执行,通过门铃批处理[47,64],可以将多个RDMA操作合并到一个请求中。这些请求随后由RNIC读取,异步地从远程存储器写入或读取数据。当发送器的请求完成时,RNIC将完成条目写入CQ,以便发送器可以通过轮询CQ来知道它。

CXL:CXL是一种基于PCIe的开放式行业标准,用于处理器、加速器和内存之间的高速通信,采用load/store语义的缓存方式。CXL包含三个独立的协议,包括:CXL.io、CXL.cache和CXL.mem。CXL.mem允许CPU直接通过PCIe总线(FlexBus)访问底层内存,而不涉及页故障或DMA。因此,CXL可以提供字节可寻址内存(CXL内存),并允许透明的内存分配。目前大多数论文中使用的CXL原型的访问延迟约为170至250 ns[30,32,49]。

问题

内存分解是现代数据中心的一种很有前途的架构,它将计算和内存资源分离成由超快网络连接的独立池,提高内存利用率,降低成本,并实现计算和内存的弹性扩展,如图1。

现有的基于远程直接内存访问(RDMA)的内存分解方案存在高延迟和额外开销。高延迟体现为,RDMA可以提供1.5∼3 μs的延迟,但DRAM延迟为80∼140 ns。额外开销包括页错误和代码重构,RDMA需要侵入性的代码修改和中断开销,基于RDMA的内存分解包括基于页和基于对象的方法,基于页的方法涉及页错误处理和读/写放大的额外开销[10,41],而基于对象的方法需要接口更改和源代码级别的修改,这会牺牲透明度[17,56]。

新兴的缓存一致互连(如CXL)提供了重建高性能内存分解的机会,CXL支持内存语义,并具有类似的多套接字NUMA访问延迟(约170~250 ns[21,45])。但是,现有的基于CXL的方法有物理距离限制,不能跨机架部署。

挑战

因为CXL和RDMA各自的限制,一种新的思路是在机架中构建基于CXL的小型存储器池,并使用RDMA来连接机架形成更大的内存池。但面临以下挑战:

  • 粒度不匹配:基于CXL的方法支持缓存行粒度的缓存一致性,基于RDMA的方法的访问粒度是页面或对象,需要重新设计混合体系结构的内存管理和访问机制。

  • 通信不匹配:RDMA通信依赖于RNIC和消息队列,而CXL则基于高速链路和缓存一致性协议。需要实现机架间和机架内通信的统一和高效的抽象。

  • 性能不匹配:RDMA的延迟远大于CXL(约10倍),将导致不一致的访问模式(类似于NUMA架构)。访问本地机架中的内存比访问远程机架快得多,机架之间的RDMA通信成为主要的性能瓶颈。

本文方法

本文提出了基于RDMA和CXL的低延迟、高可扩展的内存池Rcmp,通过CXL提高了基于RDMA的系统的性能,并利用RDMA克服了CXL的距离限制。

  • 提供了基于全局页面的内存空间管理,并实现了细粒度的数据访问,将数据移动大小(缓存行粒度)与内存分配大小(页粒度)解耦,避免IO放大。

  • 设计了高效的机架内和机架间通信机制,以避免通信阻塞问题。

  • 提出了热页识别和交换策略,以及具有同步机制的CXL内存缓存策略,以减少跨机架RDMA通信。

  • 设计了RDMA感知的RPC框架来加速跨机架RDMA传输。

开源代码:GitHub - PDS-Lab/Rcmp: Rcmp: Reconstructing RDMA-based Memory Disaggregation via CXL

实现了Rcmp的原型,并通过使用微基准测试和YCSB来评估其性能。结果表明,与基于RDMA的系统相比,Rcmp可以降低5.2倍的延迟、提升3.8倍的吞吐量。还证明了Rcmp可以很好地随着节点数量的增加而扩展,而不会影响性能。

整体架构

全局内存管理:Rcmp通过基于页面的方法实现全局内存管理。页面管理方法易于采用,并且对所有用户应用程序都是透明的;与基于对象的方法相比,基于页面的方法更适合CXL的字节访问特性。为了进行细粒度管理,每个页面都被划分为许多块,并使用集中式元数据服务器(MS)来管理内存地址的分配和映射。Rcmp以缓存行粒度访问和移动数据,与内存页面大小解耦。由于CXL支持内存语义,Rcmp自然可以在机架内以缓存线粒度进行访问。对于远程机架访问,Rcmp通过使用直接访问模式(direct-I/O)而不是由页面故障触发的页面交换来避免性能下降。

高效通信机制:如图4所示,混合架构有三种可选的远程机架通信方法。在方法(a)中,每个CN通过其RNIC访问远程机架中的存储器池。但有一下确定:RNIC设备过多导致高成本;每个CN都有CXL链路和RDMA接口,导致高一致性维护开销;与有限的RNIC存储器的高争用导致频繁的缓存失效和更高的通信延迟[17,63]。在方法(b)中,在每个机架上使用一个守护程序服务器(配备RNIC)来管理对远程机架的访问请求。守护程序可以降低成本和一致性开销,但单个守护程序将导致RDMA带宽有限。在方法(c)中,使用哈希对CN进行分组,每个组对应于一个守护程序,以避免守护程序成为性能瓶颈。所有守护进程都构建在同一个CXL内存上,并且很容易保证一致性。Rcmp支持后两种方法,在小规模节点下默认采用方法(b)。

Rcmp使用无锁环形缓冲器来实现高效的机架内和机架间通信。CN需要与Daemon通信,以确定是本地访问还是远程访问,但这两种情况的访问延迟存在显著差异。为了防止通信阻塞,如本地访问排在远程访问之后导致阻塞,Rcmp为不同的访问场景使用了两个环形缓冲区结构,如图10所示。对于本地访问,使用普通环形缓冲区进行通信,图中的绿色缓冲区。由于所有访问都是超低延迟的(通过CXL),即使在高度冲突的情况下也不会发生阻塞。并基于Flock的方法[36],环缓冲区(和RDMA QP)在线程(一个CN)之间共享,以实现高并发性。对于远程访问,使用双层环形缓冲区。第一环形缓冲器(轮询缓冲器)存储消息元数据(例如,类型、大小)和指向存储消息数据的第二缓冲器(数据缓冲器)的指针。轮询缓冲区中的数据长度固定,而数据缓冲区中消息的长度可变。当数据缓冲区中的消息完成时,将请求添加到轮询缓冲区。守护线程轮询轮询缓冲区以处理当前指针指向的消息。例如,在图10中,首先填充数据缓冲区中的后一个Msg2,然后首先将请求添加到轮询缓冲区。因此,Msg2将首先被处理而不被阻塞。在实现中,使用无锁KFIFO队列[50]作为轮询缓冲区,数据缓冲区是正常的环形缓冲区。

远程机架访问优化:减少远程机架访问,Rcmp提出了一种基于页的热页识别和用户级热页交换方案,以将频繁访问的页迁移到本地机架,从而实现较少的远程机架访问。为了进一步利用时间和空间局部性,Rcmp将远程机架的细粒度访问缓存在CXL内存中,并将写入请求批处理到远程机架。加速RDMA通信,提出了一种具有混合传输模式和其他优化(例如,门铃批处理)的高性能RDMA RPC(RRPC)框架,以充分利用RDMA网络的高带宽。

实验

实验环境:五台服务器,每台服务器配备两个socket Intel Xeon Gold 5218R CPU@2.10 Ghz、128 GB DRAM、一个100 Gbps Mellanox ConnectX-5 RNIC。操作系统是Ubuntu 20.04和Linux 5.4.0-144-generic。NUMA节点0和节点1的互连延迟分别为138.5ns和141.1ns,节点内访问延迟分别为93ns和89.7ns。使用NUMA架构模拟CXL。

数据集:微基准测试、YCSB

实验对比:读写延迟、吞吐量

实验参数:数据大小、客户端数量、机架数量、消融实验

总结

针对RDMA和CXL结合的内存分解。本文提出基于RDMA和CXL的内存池Rcmp,通过CXL提高了基于RDMA的系统的性能,并利用RDMA克服了CXL的距离限制。包括4个创新点:(1)基于全局页面的内存空间管理,支持细粒度的数据访问,避免IO放大。(2)使用不同缓存区结构避免通信阻塞,机架内访问使用环形缓存区,机架间访问使用双层缓冲区,第一级存储已完成的访问避免阻塞,第二级使用环形缓存区,执行完时将请求添加到第一级缓冲区。(3)使用热页识别和交换策略,以及具有同步机制的CXL内存缓冲区,以减少跨机架RDMA通信。(4)设计了RDMA感知的RPC框架来加速跨机架RDMA传输。

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

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

相关文章

Apple - Launch Services Programming Guide

本文翻译整理自:Launch Services Programming Guide https://developer.apple.com/library/archive/documentation/Carbon/Conceptual/LaunchServicesConcepts/LSCIntro/LSCIntro.html#//apple_ref/doc/uid/TP30000999-CH201-TP1 文章目录 一、导言谁应该阅读此文档…

考前刷题练手感(北航期末往年数据结构编程题)

本次因为是考前一天极速刷题,所以没有讲解,若有问题可私信。 目录 一、 查找同时空人员二、 老鼠回家-无回路三、函数调⽤关系四、东二食堂模拟五、栈帧 一、 查找同时空人员 【问题描述】 假设一共有6个手机基站,都具有记录手机连接基站状…

动手学深度学习(Pytorch版)代码实践 -深度学习基础-10权重衰减

10权重衰减 """ 正则化是处理过拟合的常用方法:在训练集的损失函数中加入惩罚项,以降低学习到的模型的复杂度。 保持模型简单的一个特别的选择是使用L2惩罚的权重衰减。这会导致学习算法更新步骤中的权重衰减。 """impor…

揭秘古代手术工具与技术:从中国起源的医疗奇迹

在人类历史的长河中,医学的发展一直是推动社会进步的重要力量。而手术作为医学的一个重要分支,其发展历程同样充满了传奇色彩。今天,我们将带您走进古代手术的世界,揭秘那些令人惊叹的手术工具和技术。 这把手术刀出土于河北西村遗…

sqlmap使用以及GUI安装

下载 GUI版地址: GitHub - honmashironeko/sqlmap-gui: 基于官版本 SQLMAP 进行人工汉化,并提供GUI界面及多个自动化脚本 GUI使用 可以点击.bat启动 如果点击.bat启动不了就在这里打开cmd,输入对应的.bat来启动 linux安装 地址:sqlmap: automatic SQL injection…

express+vue在线im实现【三】

往期内容 expressvue在线im实现【一】 expressvue在线im实现【二】 本期示例 本期总结 支持各种类型的文件上传,常见文件类型图片,音频,视频等,上传时同步获取音频与视频的时长,以及使用上传文件的缓存路径来作为vi…

天马学航——智慧教务系统(移动端)开发日志六

天马学航——智慧教务系统(移动端)开发日志六 日志摘要:统一身份认证设计,修复了选课信息错乱的问题 界面设计 实现思路 使用 Java 和 Jedis 完成实现: 步骤一:添加 Jedis 依赖 首先需要在项目中添加 Jedis 依赖,…

已解决VirtualMachineError: 虚拟机错误的正确解决方法,亲测有效!!!

已解决VirtualMachineError: 虚拟机错误的正确解决方法,亲测有效!!! 目录 问题分析 报错原因 解决思路 解决方法 分析错误日志 优化代码 内存泄漏排查 优化递归调用 调整JVM参数 使用监控工具 增加物理内存或升级硬件…

芝麻清单助力提升学习工作效率 专注时间完成有效的待办事项

芝麻清单助力提升学习&工作效率 专注时间完成有效的工作。今天我们给大家带来一个专注清单,一个更高效的学习和工作的方法! 我们都知道,专注做一个事情,会有效的提升效率,让事情更高效的完成。如果是学习的话&…

java基于ssm+jsp 母婴用品网站

1管理员功能模块 管理员登录,管理员通过输入用户名、密码等信息进行系统登录,如图1所示。 图1管理员登录界面图 管理员登录进入母婴用品网站可以查看主页、个人中心、用户管理、商品分类管理、商品信息管理、留言板管理、成长交流、系统管理、订单管理、…

Springboot应用的信创适配-补充

Springboot应用的信创适配-CSDN博客 因为篇幅限制,这里补全Spring信创适配、数据库信创适配、Redis信创适配、消息队列信创适配等四个章节。 Springboot应用的信创适配 Springboot应用的信创适配,如上图所示需要适配的很多,从硬件、操作系统、…

vue3 computed与watch,watchEffect比较

相同点 都是要根据一个或多个响应式数据进行监听 不同点 computed 如要return回来一个新的响应式值,且这个值不允许直接修改,想要修改的话可以设置set函数,在函数里面去修改所依赖的响应式数据,然后计算属性值会基于其响应式依…

多功能投票系统(ThinkPHP+FastAdmin+Uniapp)

让决策更高效,更民主🌟 ​基于ThinkPHPFastAdminUniapp开发的多功能系统,支持图文投票、自定义选手报名内容、自定义主题色、礼物功能(高级授权)、弹幕功能(高级授权)、会员发布、支持数据库私有化部署,Uniapp提供全部无加密源码…

ffmpeg音视频开发从入门到精通——ffmpeg实现音频抽取

文章目录 FFmpeg 实现音频流抽取1. 包含FFmpeg头文件与命名空间声明2. 主函数与参数处理3. 打开输入文件4. 获取文件信息5. 查找音频流6. 分配输出文件上下文7. 猜测输出文件格式8. 创建新的音频流9. 打开输出文件10. 写入文件头信息11. 读取并写入音频数据12. 写入文件尾部信息…

vue中的状态管理

第1部分:引言 状态管理是应用中数据流动和变更的核心机制。在Vue应用中,状态管理不仅涉及到组件间的数据共享,还包括了数据的持久化、异步操作的处理等复杂场景。良好的状态管理策略可以提高应用的响应速度,降低组件间的耦合度&a…

经典游戏案例:植物大战僵尸

学习目标:植物大战僵尸核心玩法实现 游戏画面 项目结构目录 部分核心代码 using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; using Random UnityEngine.Random;public enum Z…

(2024)豆瓣电影详情页内容爬虫详解和源码

&#xff08;2024&#xff09;豆瓣电影详情页内容爬虫详解和源码 这是一个Python爬虫程序&#xff0c;用于抓取豆瓣电影详情页面如https://movie.douban.com/subject/1291560/的数据。它首先发送GET请求&#xff0c;使用PyQuery解析DOM&#xff0c;然后根据<br>标签分割H…

C语言第17篇:预处理详解

1、预定义符号 C语言设置了一些预定义符号&#xff0c;可以直接使用。预定义符号也是在预处理期间处理的。 __FILE__ //进行编译的源文件 __LINE__ //文件当前的行号 __DATE__ //文件被编译的日期 __TIME__ //文件被编译的时间 __STDC__ //如果编译器遵循ANSI…

LaTeX中添加矩阵分块虚线并设置虚线疏密

对于大型矩阵&#xff0c;有时需要添加分块虚线。 方法为使用arydshln宏包&#xff0c;然后在array环境中设置虚线。需要注意的是&#xff0c;使用矩阵环境需要搭配amsmath宏包使用&#xff0c;且需放在amsmath宏包之后。即导言区设置为 \usepackage{amsmath} \usepackage{ary…

人人讲视频如何下载

一、工具准备 1.VLC media player 2.谷歌浏览器 二、视频下载 1.打开人人讲网页&#xff0c;需要下载的视频 谷歌浏览器打开调试窗口 搜索m3u8链接 拷贝到VLCplayer打开网络串流方式打开测试是否能正常播放 2.下载视频 能正常播放后&#xff0c;切换播放为转换选择mp4格式…