Demystifying CXL Memory with Genuine CXL-Ready Systems and Devices——论文阅读

MICRO 2023 Paper CXL论文阅读汇总

问题

对更大容量和更高带宽的内存的不断增长的需求推动了基于Compute eXpress Link(CXL)的内存扩展和分离技术的创新。特别是,基于CXL的内存扩展技术不仅能够经济地扩展内存容量和带宽,还能够将内存技术从特定的CPU内存接口解耦出来。由于CXL内存设备尚未广泛推出,大多数研究使用位于远程NUMA节点中的DDR内存进行模拟。

背景

CXL[73]已经成为最有前景的内存接口技术之一。CXL是主要硬件制造商和超大规模计算供应商的联合努力开发的开放标准。由于CXL建立在标准PCIe上,而PCIe是一种串行接口技术,因此它可以提供每个引脚更高的比特传输速率(例如,PCIe 4.0:16 Gbps/lane vs. DDR4-3200:3.2 Gbps/pin),并且每比特传输的能量消耗更低(例如,PCIe 4.0:6 pJ/bit [75] vs. DDR4:22 pJ/bit [56]),但代价是更长的链路延迟(例如,PCIe 4.0:∼40 ns [73] vs. DDR4:<1 ns [15])。与PCIe相比,CXL实现了额外的功能,使CPU能够使用加载/存储指令,以缓存一致的方式与设备及其连接的内存进行通信。基于PCIe 5.0 ×8的CXL内存设备消耗的引脚数比DDR5少约3倍,可以以经济的方式扩展系统的内存容量和带宽。通过在CPU和内存设备之间使用CXL控制器,CXL将内存技术与CPU支持的特定内存接口技术解耦,这为内存制造商提供了设计和优化其内存设备的灵活性。通过使用重新定时器和交换机,具有CXL支持的CPU可以以比传统网络接口技术(如RDMA)更低的延迟访问远程节点中的内存,有效促进了内存分离。这些优势使内存相关的扩展成为CXL的主要目标用例之一[25, 32, 65, 67],并且主要硬件制造商已经在其产品路线图中宣布了对CXL的支持[4, 25, 35, 65, 67]。

本文方法

我们全面评估了基于最新的第四代Intel Xeon CPU和来自不同制造商的三个CXL内存设备的真实的CXL系统。得到三个结论:

  • CXL内存 ≠ 远程NUMA内存。

    • 根据CXL控制器的设计和内存技术,真实的CXL内存设备提供了不同的内存访问延迟和带宽值。

    • 真实的CXL内存可以比模拟的CXL内存提供高达26%的较低延迟和3-66%的更高带宽效率,这取决于内存访问指令类型和CXL内存设备。

    • 子NUMA聚类(SNC)模式将SNC节点内的CPU核心指向将其L2缓存行,从本地内存独占地驱逐到同一SNC节点内的LLC切片,为SNC节点提供LLC隔离。然而,当CPU核心访问CXL内存时,会破坏LLC隔离,因为来自CXL内存的L2缓存行可以被驱逐到任何SNC节点内的LLC切片。因此,访问CXL内存比访问本地DDR内存从LLC容量中收益大2-4,特别是对于对缓存友好的应用程序,明显弥补了访问CXL内存的较长延迟。

  • 天真地使用CXL内存是有害的。

    • 对于微秒级延迟的简单应用程序(例如键值存储),对内存访问延迟非常敏感。将页面分配给CXL内存会使这些应用程序的尾延迟比本地DDR内存增加10-82%。针对分层内存系统的最新CXL内存感知页面放置策略[64]实际上会进一步增加尾延迟,与在DDR内存和CXL内存之间静态分配页面相比。这是由于页面迁移的开销。

    • 对于毫秒级延迟的复杂应用程序(例如社交网络微服务),即使大多数页面分配给CXL内存,尾延迟也只会略微增加。这是因为访问CXL内存的较长延迟对这类应用程序的端到端延迟贡献较小。

    • 对于内存带宽密集型应用程序,根据默认操作系统策略天真地将50%的页面分配给CXL内存可能导致较低的吞吐量,尽管使用DDR内存和CXL内存可以提供更高的总体带宽。

  • CXL内存感知动态页面分配策略

    • 提出了Caption,面向操作系统的CXL内存感知的动态页面分配策略。Caption首先确定制造商特定的CXL内存设备的带宽。随后,Caption定期监视各种CPU计数器,如(共同运行的)应用程序经历的内存访问延迟,并在运行时评估它们所消耗的带宽。最后,基于监视的CPU计数器值,Caption估算一段时间内的内存子系统性能。当某个应用程序需要分配新页面时,Caption考虑了内存子系统性能的历史记录以及过去分配给CXL内存的页面百分比。使用简单的贪婪算法调整分配给CXL内存的页面的百分比,以提高整个系统的吞吐量。

    • 评估结果显示,与操作系统默认的静态页面分配策略相比,Caption提高了共运行一组内存带宽密集型SPEC CPU2017基准测试的系统吞吐量24%。

实验环境

系统和设备

系统。我们使用一台服务器评估支持CXL内存的最新商用硬件(表1)。该服务器包含两个英特尔Sapphire Rapids(SPR)CPU插槽。一个插槽中填充了八个4800 MT/s DDR5 DRAM DIMM(128 GB),分布在八个内存通道上。另一个插槽中只填充了一个4800 MT/s DDR5 DRAM DIMM,以模拟CXL内存的带宽和容量。Intel SPR CPU集成了四个CPU芯片组,每个芯片组最多有15个核心和两个DDR5 DRAM通道。用户可以选择将4个芯片组作为统一的CPU,或将每个芯片组(或两个芯片组)作为SNC模式下的NUMA节点。这种灵活性是为了让用户在应用程序之间实现LLC等共享资源的强隔离。我们关闭超线程功能,并将CPU核心时钟频率设置为2.1 GHz,以获得更可预测的性能。

CXL内存设备。我们使用了三种CXL内存设备(表1),每种都具有不同的CXL IP(基于ASIC的硬IP和基于FPGA的软IP)和DRAM技术(DDR5-4800、DDR4-2400和DDR4-3200)。由于CXL协议本身并未规定底层内存技术,因此它可以无缝透明地适应DRAM、持久内存、闪存[72]和其他新兴内存技术。因此,不同的CXL内存设备可能表现出不同的延迟和带宽特性。

微基准测试

为了表征CXL内存的性能,我们使用了两个微基准测试。首先,我们使用Intel Memory Latency Checker(MLC)[42],这是一个用于测量各种使用场景下内存延迟和带宽的工具。其次,我们使用了一个名为memo(测量内存子系统效率)的微基准测试。它与Intel MLC有一些相似之处,但我们开发它以更灵活地表征不同方式的内存子系统性能。例如,它可以测量特定内存访问指令的延迟和带宽(例如AVX-512非时序加载和存储指令)。

基准测试

延迟敏感应用

Redis [69],一个流行的高性能内存键值存储,使用YCSB [19]进行测试。我们使用均匀分布的键,确保最大程度地对内存子系统施加压力,除非我们明确指定使用其他分布。

DeathStarBench(DSB)[28],用于评估微服务性能的开源基准套件。它使用Docker启动微服务的组件,包括机器学习(ML)推理逻辑、Web后端、负载均衡器、缓存和存储。我们评估了三个DSB工作负载:(1)发布帖子,(2)读取用户时间轴,(3)混合工作负载(10%的发布帖子,30%的读取用户时间轴和60%的读取主页时间轴),作为社交网络框架。

FIO [7],用于对存储设备和文件系统进行基准测试的开源工具,以评估在OS页面缓存中使用CXL内存的延迟影响。页面缓存由标准的Linux存储子系统支持,它将最近访问的存储数据(例如文件)保存在未使用的主内存空间中,以减少对慢速存储设备的访问次数。

吞吐量应用

使用与MERCI [58]相同的设置运行基于深度学习推荐模型(DLRM)的推理应用。已知DLRM推理中的嵌入缩减步骤具有较大的内存占用,并且占推理延迟的50-70% [58]。

SPECrate CPU2017基准套件 [13],这是常用于评估数据中心系统吞吐量的基准。

我们评估每个基准的每千条指令的缺失(MPKI),并运行具有最高MPKI的四个基准:(1)fotonik3d,(2)mcf,(3)roms和(4)cactuBSSN。我们运行单个基准的多个实例或两个不同的基准。

内存延迟和带宽特性

我们首先评估访问不同内存设备的延迟和带宽:基于远程NUMA节点(DDR5-R)中的DDR5内存的模拟CXL内存设备,以及三个真正的CXL存储设备(CXL-A、CXL-B和CXL-C)。我们进行此评估是为了了解不同内存访问指令类型的各种CXL内存设备的性能特征。接下来,我们将研究Intel SPR CPU的缓存层次结构与CXL内存设备之间的相互作用。

延迟

  • 全双工的 CXL 和 UPI 接口降低了内存访问延迟。

  • 访问真实的 CXL 内存设备的延迟高度依赖于特定的 CXL 控制器设计。

  • 模拟的 CXL 内存可能比真实的 CXL 内存具有更长的内存访问延迟。

带宽

  • 带宽强烈依赖于 CXL 控制器的效率。

  • 与模拟的 CXL 内存相比,真实的 CXL 内存对于存储操作能够提供具有竞争力的带宽效率。

与缓存层次结构的交互

  • 与本地DDR内存相比,CXL内存与CPU的缓存层次结构的交互方式有所不同。

使用CXL内存对应用程序性能的影响

延迟

  • 对𝜇s级延迟敏感的内存密集型应用,将页面分配给CXL内存,会显著增加p99延迟。

  • 即使使用智能的页面迁移策略,也可能会进一步增加这些对延迟敏感的应用的p99延迟,因为迁移页面的开销。

  • 对𝑚s级延迟敏感的复杂应用,将页面分配给CXL内存,不会显著增加p99延迟。因为访问CXL内存的延迟在这类应用的端到端延迟中的贡献是相对较小的,并且在对CXL内存的访问之间通过中间操作进行了摊销。

吞吐

  • 对于内存带宽密集型应用,根据操作系统默认策略将50%的页面分配给CXL内存,可能导致比将100%的页面分配给DDR内存时更低的吞吐量,即使使用DDR内存和CXL内存的总带宽更高。

CXL内存感知的动态页面分配策略

分3个模块:

  • 周期性的监控与内存子系统性能相关的CPU计数器。

  • 基于监控估算系统吞吐量。

  • 调整分配给CXL内存的页面百分比。

总结

使用CXL模拟器和真实CXL硬件,比较其性能。发现不同CXL控制器的设计会显著影响延迟的带宽,使用模拟器相对来说延迟更高带宽更小;使用CXL内存时使用页面迁移策略,需要考虑迁移带来的开销,否则会带来负优化;使用CXL内存会增加延迟,对𝜇s级延迟敏感的内存密集型应用,会显著增加p99延迟,对𝑚s级延迟敏感的复杂应用,增加的延迟可忽略不计;使用CXL内存会增加总带宽,但数据分布不合理时,带宽反而下降,需要有效的设计算法来优化吞吐和带宽。

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

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

相关文章

【数据结构】二叉树(遍历,递归)

&#x1f308;个人主页&#xff1a;秦jh__https://blog.csdn.net/qinjh_?spm1010.2135.3001.5343&#x1f525; 系列专栏&#xff1a;《数据结构》https://blog.csdn.net/qinjh_/category_12536791.html?spm1001.2014.3001.5482 ​​​ 目录 二叉树遍历规则 前序遍历 ​…

flutter 客户端日志上传定位错误信息

背景 flutter 开发的app 安装到真机上 无法定位报错信息&#xff0c;只能使用usb连接电脑 使用adb logcat来查看日志效率低下。 想法 如果将flutter 开发的app 运行的时候 将日志写进一个日志文件里面去&#xff0c;然后给flutter app搭建一个http服务器&#xff0c;后端知道对…

如何使用VNC实现Win系统远程桌面Ubuntu图形化界面【内网穿透】

文章目录 推荐前言1. ubuntu安装VNC2. 设置vnc开机启动3. windows 安装VNC viewer连接工具4. 内网穿透4.1 安装cpolar【支持使用一键脚本命令安装】4.2 创建隧道映射4.3 测试公网远程访问 5. 配置固定TCP地址5.1 保留一个固定的公网TCP端口地址5.2 配置固定公网TCP端口地址5.3 …

vue:处理base64格式文件pdf、图片预览

一、需求&#xff1a;后端返回是base64数据&#xff0c;需要前端处理来展示文件。 二、实现方法&#xff1a; 解释一下这段代码的功能&#xff1a; &#xff09;preview(item) 是一个函数&#xff0c;接受一个参数 item&#xff0c;其中包含了文件的相关信息。 &#xff09;首…

HTML5+CSS3+JS小实例:实时给中文添加拼音

实例:实时给中文添加拼音 技术栈:HTML+CSS+JS 效果: 源码: 【HTML】 <!DOCTYPE html> <html lang="zh-CN"> <head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"&…

使用freessl为网站获取https证书及配置详细步骤

文章目录 一、进入freessl网站二、修改域名解析记录三、创建证书四、配置证书五、服务启动 一、进入freessl网站 首先进入freessl网站&#xff0c;需要注册一个账号 freessl网站 进入网站后填写自己的域名 接下来要求进行DCV配置 二、修改域名解析记录 到域名管理处编辑域名…

智慧水务管理的发展历史有哪些阶段呢

随着科技的飞速发展&#xff0c;智慧水务管理已经成为了城市基础设施的重要组成部分。从传统的人工管理到现代的智能化管理&#xff0c;智慧水务经历了多个阶段的发展历程。本文将带您了解智慧水务管理的历史演变。 一、初级阶段&#xff1a;人工管理 在智慧水务管理发展的初期…

MS2358——96KHz、24bit 音频 ADC

产品简述 MS2358 是带有采样速率 8kHz-96kHz 的立体声音频模数 转换器&#xff0c;适合于面向消费者的专业音频系统。 MS2358 通过使用增强型双位 Δ - ∑ 技术来实现其高精度 的特点。 MS2358 支持单端的模拟输入&#xff0c;所以不需要外部器 件&#xff0c;非常适…

maven环境搭建(打包项目)

Maven:直观来讲就是打包写好的代码封装 Apahche 软件基金会&#xff08;非营业的组织&#xff0c;把一些开源软件维护管理起来&#xff09; maven apahce的一个开宇拿项目&#xff0c;是一个优秀的项目构建&#xff08;管理工具&#xff09; maven 管理项目的jar 以及jar与j…

[C++]:12:模拟实现list

[C]:12:模拟实现list 一.看一看SGI的stl_list的源码&#xff1a;1.基础结构构造函数1.节点结构&#xff1a;2.节点构造函数&#xff1a;3.链表结构&#xff1a;4.链表的构造函数&#xff1a; 2.析构1.节点析构&#xff1a;2.链表的析构&#xff1a; 3.迭代器 二.模拟实现list1.…

py的函数多返回值

前言:之前我们学过了py中函数&#xff0c;这一章我们来学习它的进阶版 目录 一.函数的多返回值 1.1关于函数的多返回值 1.2举例 二.函数多种传参方式 2.1关于多种传参方式 2.2关键字参数 2.2缺省参数 2.3不定长参数 2.4小结 三.匿名函数 3.1关于函数如何作为参数进行…

android 自定义八边形进度条

自定义八边形动画效果图如下 绘制步骤&#xff1a; 1.先绘制橙色底部八边形实心 2.黑色画笔绘制第二层&#xff0c;让最外层显示一条线条宽度即可 3.再用黄色画笔绘制黄色部分 4.使用渐变画笔根据当前进度绘制覆盖黄色部分 5.使用黑色画笔根据当前进度绘制刻度条 6.黑色画笔绘制…

使用Sqoop的并行处理:扩展数据传输

使用Sqoop的并行处理是在大数据环境中高效传输数据的关键。它可以显著减少数据传输的时间&#xff0c;并充分利用集群资源。本文将深入探讨Sqoop的并行处理能力&#xff0c;提供详细的示例代码&#xff0c;以帮助大家更全面地了解和应用这一技术。 Sqoop的并行处理 在开始介绍…

Java网络编程:概述--快速入门

I. 介绍 1.1 什么是网络编程 - 网络编程是指通过计算机网络实现程序之间的通信。在Java中&#xff0c;网络编程通常涉及到数据的传输、通信协议的使用以及与网络相关的各种操作。 1.2. 为什么学习Java网络编程 - Java网络编程是Java开发者重要的技能之一&#xff0c;因为它允许…

mybatis----小细节

1、起别名 在MyBatis中&#xff0c;<typeAliases>元素用于定义类型别名&#xff0c;它可以将Java类名映射为一个更简短的别名&#xff0c;这样在映射文件中可以直接使用别名而不需要完整的类名。 下面是一个示例&#xff1a; 在mybatis核心配置文件中配置typeAliases标…

SSH隧道技术

SSH隧道 简介 SSH隧道是一种通过SSH协议在两个网络节点之间建立安全通信的技术。它可以用于多种用途&#xff0c;包括加密和保护敏感数据传输、绕过防火墙限制、远程访问内部服务等。 应用&#xff1a; 端口转发&#xff1a;SSH隧道可以将本地端口转发到远程主机上&#xf…

合并K个升序链表(LeetCode 23)

文章目录 1.问题描述2.难度等级3.热门指数4.解题思路方法一&#xff1a;顺序合并方法二&#xff1a;分治合并方法三&#xff1a;使用优先队列合并 参考文献 1.问题描述 给你一个链表数组&#xff0c;每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中&#xff…

Python——基本语法(二)

一、while 循环 语法&#xff1a; while 条件表达式:条件表达示为真&#xff0c;就执⾏这⾥的代码&#xff0c;必须缩进 4 个空格多⾏代码保持缩进⼀致 条件表达式可以是: True # 布尔值的 True 1 < 10 # 凡是在 if 语句中使⽤的判断表达示&#xff0c;这⾥都可以使…

【Java实战项目】基于ssm的流浪动物领养系统网站

&#x1f64a;作者简介&#xff1a;多年一线开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

【音视频原理】图像相关概念 ② ( 帧率 | 常见帧率标准 | 码率 | 码率单位 )

文章目录 一、帧率1、帧率简介2、常见帧率标准3、帧率 刷新率 二、码率1、码率简介2、码率单位 一、帧率 1、帧率简介 帧率 Frame Rate , 帧 指的是 是 画面帧 , 帧率 是 画面帧 的 速率 ; 帧率 的 单位是 FPS , Frames Per Second , 是 每秒钟 的 画面帧 个数 ; 帧率 是 动画…