笔记:A Case for CXL-Centric Server Processors - 1. Introduction
概述
- 多核处理器架构在过去二十年中,尽管Dennard缩放定律终止和Moore定律放缓,仍持续提供性能提升。
- 数据量的指数增长推动了对更高带宽、更大容量和更低延迟内存系统的需求。
DDR内存系统的现状
- 主导地位:DDR(Double Data Rate)接口是过去二十年服务器处理器与内存交互的主要方式。
- 带宽提升:每一代DDR都提供更高的带宽以满足日益增长的核心数和数据集需求。
- 瓶颈:由于并行DDR接口需要大量芯片引脚,处理器的内存带宽受限于引脚数量(稀缺资源)。
- 排队延迟:有限的带宽导致多个内存请求在每个内存通道上竞争,产生显著的排队延迟,常常超过DRAM服务时间,降低性能。
新兴技术与权衡
- 高容量内存:技术突破(如非易失性RAM、RDMA远程内存访问)实现了更高容量的内存。
- 性能代价:这些高容量内存的访问延迟和带宽显著低于基于DDR的主内存。
- 服务器依赖性:服务器仍主要依赖DDR内存以确保性能,同时可选使用较慢的内存层(如NVRAM或远程DRAM)扩展容量。
CXL的出现
- 桥梁作用:Compute Express Link (CXL)标准通过PCIe总线连接DRAM模块,弥合了低带宽高容量内存与DDR主内存之间的性能差距。
- 优势:
- 提供大幅提升的内存容量和带宽。
- 保留DDR-like特性,仅增加适度的访问延迟。
- 应用趋势:已在内存池化和容量扩展方面引发关注(参考文献[3, 16, 25, 33])。
COAXIAL设计提案
- 创新点:提出COAXIAL服务器设计,完全用更高效的CXL接口替换处理器上的DDR接口。
- CXL优势:利用PCIe的串行接口,每引脚带宽比DDR高4倍,且未来差距将进一步扩大。
- 性能分析:
- CXL的延迟增加(约25-30ns)被其高带宽抵消。
- 通过分散内存请求到更多通道,显著减少排队延迟,降低平均访问延迟及其方差。
- 评估结果:对多种工作负载的评估表明,COAXIAL平均提升多核吞吐量服务器性能1.52倍,最高达3倍。
结论
- COAXIAL利用CXL的广泛采用和工业推动力,提出了一种可扩展的高性能服务器架构,特别适用于内存密集型工作负载,挑战传统DDR设计范式。
-
笔记:A Case for CXL-Centric Server Processors - 2. Background
概述
本节探讨了传统DDR内存系统的带宽瓶颈以及CXL(Compute Express Link)如何通过其高带宽特性解决这些问题,为COAXIAL服务器设计提供了理论基础。
2.1 低延迟DDR内存
-
服务器内存现状:
- 服务器主要通过Double Data Rate(DDR)并行接口访问DRAM。
- DDR4和DDR5接口宽度为288引脚,其中大部分(DDR4 ECC通道超过160个,DDR5可能更多)直接驱动到处理器芯片。
-
带宽与延迟特性:
- DDR接口的64位数据总线与内存控制器的时钟位同步,提供约50ns的最坏情况(无负载)访问延迟。
- 带宽扩展方式:
- 提高时钟频率:增加信令完整性挑战,减少每通道支持的rank数,限制容量。
- 增加通道数:需要更多引脚,增加芯片面积和功耗,复杂化布局和封装。
-
引脚限制:
- 由于引脚数量稀缺,每六年仅翻倍一次,难以通过增加通道显著降低每个通道的竞争核心数。
- 现代服务器每通道核心数在4到12之间,导致内存请求竞争和高排队延迟。
-
技术需求:
- 需要全新的技术来突破引脚限制,CXL被认为是潜在的解决方案。
2.2 高带宽CXL内存互连
-
CXL简介:
- CXL是一个新兴的互连标准,旨在统一加速器、设备和内存扩展的解决方案。
- 替代了多种专有方案(如OpenCAPI、Gen-Z),在PCIe基础上运行,迅速获得行业认可。
-
功能与优势:
- 提供加载/存储语义和一致性内存访问,支持处理器和加速器的高容量、高带宽内存。
- 通过PCIe连接DDR内存(“Type-3”设备),保持严格的时序约束。
-
与DDR的对比:
- CXL利用PCIe物理层,以更高的带宽换取适度延迟增加。
- 当前研究多将CXL视为辅助慢速内存层,而非DDR替代品。
- 本文提出CXL可完全取代DDR,成为服务器内存系统的核心。
2.3 用CXL扩展内存带宽壁垒
-
PCIe物理层特性:
- PCIe是高速串行接口,每通道用4个引脚(2个发送,2个接收),数据以编码格式串行传输。
- 带宽随版本提升显著高于DDR。
-
带宽对比(图1):
- 计算方法:带宽每引脚 = 接口峰值带宽 / 所需处理器引脚(DDR为160,PCIe每通道4)。
- 当前差距:PCIe5.0 vs. DDR5-4800,CXL每引脚带宽是DDR的4倍。
- DDR5-4800:160引脚,38.4GB/s双向带宽。
- PCIe5.0 x12(CXL运行):48引脚,48GB/s单向带宽(读写各48GB/s)。
- 未来趋势:到2025年,PCIe带宽预计将使差距扩大至8倍。
-
保守估计:
- DDR实际读写带宽受限于读写比例(如2:1,读25.6GB/s,写13GB/s)。
- PCIe带宽为单向标示,实际可持续带宽仍高于DDR。
2.4 CXL延迟问题
-
延迟开销:
- CXL的高带宽以增加延迟为代价,普遍认为延迟远高于DRAM访问时间。
- 近期研究(如CXL池化内存)报告70ns延迟开销,导致CXL被视为慢速二级内存技术。
-
延迟真相:
- 高延迟多为复杂功能(如多设备复用、一致性维护)的副产物。
- 标准目标:CXL 3.0设定80ns引脚到引脚加载延迟目标,意味着接口延迟仅约30ns。
- 早期实现:
- CXL 2.0单向25ns延迟。
- PLDA 2021年发布的CXL 2.0控制器每方向仅12ns延迟。
- 优化条件:简单Type-3设备、无多主机复用、无一致性事务时可实现低延迟。
-
关键见解:
- 30ns延迟开销在服务器系统中常被内存控制器排队延迟(常见于高负载)掩盖。
- CXL的高带宽可减少排队延迟,抵消其延迟劣势。
总结
- DDR瓶颈:引脚限制和高排队延迟限制了带宽扩展。
- CXL潜力:通过PCIe提供4倍于DDR的每引脚带宽,延迟开销可控。
- 研究转向:作者主张CXL不仅用于扩展,还可完全取代DDR,成为服务器内存系统的核心。
笔记:A Case for CXL-Centric Server Processors - 3. Pitfalls of Unloaded and Average Latency
概述
本节分析了传统内存系统设计中对无负载延迟(unloaded latency)和平均延迟(average latency)的误解,强调在高负载系统中排队效应(queuing effects)对实际内存访问延迟的决定性影响。作者通过实验数据和分析,证明CXL的高带宽设计可以通过减少排队延迟来优化性能,从而支持COAXIAL服务器设计的合理性。
3.1 排队效应决定实际内存访问延迟
-
背景:
- CXL相比DDR提供显著更高的带宽,但增加了访问延迟,这被视为其广泛应用的障碍。
- 作者提出,在高负载内存系统中,排队效应是实际延迟的主导因素,而非无负载延迟。
-
实验与分析(图2a):
- 实验设置:使用DRAMSim模拟DDR5-4800通道(38.4GB/s),通过控制随机内存请求的到达率调整负载。
- 结果:
- 无负载状态:延迟约40ns,CXL的30ns延迟增加看似是75%的显著开销。
- 负载增加:
- 50%带宽利用率:平均延迟增至3倍(约120ns),p90尾延迟增至4.7倍。
- 60%带宽利用率:平均延迟增至4倍(约160ns),p90尾延迟增至7.1倍(约285ns)。
- 趋势:延迟随负载指数级增长,排队效应显著放大延迟。
-
关键见解:
- 带宽权衡:在60%利用率的DDR系统中,CXL的4倍带宽将利用率降至15%,平均延迟减半(约80ns),p90延迟减少68%(约90ns),尽管有30ns延迟开销。
- 负载效应:
- 20%利用率时,尾延迟开始受排队影响。
- 40%利用率以上,平均延迟也显著增加。
- 实际应用:大多数服务器工作负载超过30%-50%带宽利用率(图2b),排队延迟占比高达72%,某些情况下(如lbm)达91%。
-
图2b分析:
- 实验设置:模拟12核处理器配1个DDR5通道,测试多种工作负载(SPEC、PARSEC等)。
- 结果:
- 带宽利用率:多数工作负载超30%,部分超50%。
- 延迟分解:从LLC未命中寄存器观察,平均访问时间分为DRAM服务时间(约40ns)和排队延迟。
- 观察:高带宽消耗导致长排队延迟,但延迟不完全与利用率成正比,受读写模式和访问分布影响。
- 示例:突发访问模式(如短时间内大量请求后低活动)会造成临时高利用率和高排队延迟,即使平均带宽不高。
-
结论:
- 在高负载系统中,CXL的高带宽可显著减少排队延迟,弥补其固有延迟开销,从而降低实际访问延迟。
3.2 内存延迟方差对性能的影响
-
背景:
- 排队效应不仅增加平均延迟,还引入延迟方差(variance),影响性能。
- 传统评估(如AMAT,平均内存访问时间)忽略方差的影响。
-
实验设计(图3):
- 基线:固定150ns访问延迟的内存系统。
- 变量系统:延迟遵循双峰分布(80%/20%概率低于/高于平均值),保持150ns平均延迟,测试三种标准差(stdev):
- (100ns, 350ns),stdev=100ns。
- (75ns, 450ns),stdev=150ns。
- (50ns, 550ns),stdev=200ns。
- 工作负载:5个内存带宽密集度递减的工作负载。
-
结果:
- 随方差增加,性能下降:
- stdev=100ns:平均性能86%。
- stdev=150ns:平均性能78%。
- stdev=200ns:平均性能71%。
- 原因:高方差导致更多极端高延迟事件,阻塞执行流程。
- 随方差增加,性能下降:
-
关键见解:
- 方差的重要性:延迟方差是内存系统性能的关键指标,仅关注平均值不足以全面评估。
- CXL的优势:通过减少排队效应,CXL不仅降低平均延迟,还能减少方差,提升性能稳定性。
总结
- 误区揭示:
- 无负载延迟(如DDR的40ns vs CXL的70ns)并非高负载系统性能的决定因素。
- 平均延迟评估忽略了排队延迟和方差的影响。
- CXL潜力:
- 高带宽减少带宽利用率,缓解排队效应。
- 降低平均延迟和方差,提升实际性能。
- 支持论点:
- 实验证明,CXL的30ns延迟开销在高负载下被带宽优势抵消,为COAXIAL设计提供依据。
笔记:Exploring Performance and Cost Optimization with ASIC-Based CXL Memory - 4. Memory Capacity-bound Applications
概述
本节探讨了CXL内存扩展如何解决内存容量受限应用的瓶颈,分析了三种典型场景:内存键值存储(In-memory Key-value Stores)、大数据分析(Spark SQL)和虚拟机弹性计算(Spare Cores for Virtual Machine)。通过实验评估,作者展示了CXL如何提升性能并降低成本,为数据中心应用提供了实证支持。
4.1 In-memory Key-value Stores
背景
- 应用代表:Redis,作为开源内存键值存储,是数据中心常用NoSQL数据库。
- 容量瓶颈:
- Redis通过
maxmemory
参数限制内存分配,删除键后内存可能不释放给系统(因页面仍有活动键),需按峰值需求配置。 - Google Cloud建议内存使用率低于80%,其他建议75%,高密度DIMM成本高。
- Redis通过
- 现有解决方案:
- Redis Enterprise引入“Auto Tiering”,溢出到SSD,但性能受限。
- 本文使用KeyDB(Redis扩展,支持KeyDB Flash),数据持久化到磁盘,热数据保留内存。
4.1.1 Methodology and Software Configurations
- 实验目标:研究最大化内存利用率对KeyDB性能的影响。
- 部署:
- 单KeyDB实例,7个服务器线程(类似多Redis实例)。
- 禁用SNC(Sub-NUMA Clustering)和Transparent Hugepages,启用内存超额分配,减少OS开销。
- KeyDB Flash禁用RocksDB压缩,降低软件开销。
- YCSB基准测试:
- 工作负载:
- YCSB-A:50%读/50%更新(更新密集)。
- YCSB-B:95%读/5%更新(读重)。
- YCSB-C:100%读(只读)。
- YCSB-D:95%读/5%插入(最新数据读)。
- 参数:键值大小1KB(YCSB默认),总数据集512GB,分布为Zipfian(A-C)或最新分布(D)。
- 工作负载:
- 配置(表1):
- RMEM:全数据集在主内存(MMEM)。
- RMEM-SSD-0.2/0.4:20%/40%数据集溢出到SSD,调整
maxmemory
。 - 3:1/1:1/1:3:MMEM与CXL交错,分别占75%/50%/25% MMEM。
- Hot-Promote:50% MMEM + 50% CXL,使用Linux内核热页提升补丁(§2),通过
numactl
限制MMEM使用。
4.1.2 Analysis
- 图5结果:
- 吞吐量(图5a):
- RMEM最高,因全内存访问无溢出。
- Hot-Promote接近RMEM,利用Zipfian分布将热数据移至MMEM。
- 交错配置(3:1/1:1/1:3)慢1.2-1.5倍,因CXL延迟高。
- SSD溢出最差,RMEM-SSD-0.2/0.4慢1.8倍(比RMEM),1.55倍(比交错)。
- 尾延迟(图5b,c):
- YCSB-A(更新密集):RMEM最低,交错增加延迟,SSD最高。
- YCSB-C(只读):类似趋势,Zipfian分布使热数据缓存于MMEM,SSD延迟显著。
- 吞吐量(图5a):
- 观察:
- 容量限制:RMEM受限于物理内存,溢出SSD显著降低性能。
- CXL作用:交错虽慢于RMEM,但优于SSD,Hot-Promote接近RMEM。
- 分布影响:Zipfian分布减少SSD访问,若均匀分布,SSD性能更差。
4.1.3 Insights
- CXL潜力:扩展内存容量,避免SSD溢出,适合键值存储。
- 优化策略:智能调度(如Hot-Promote)利用CXL和MMEM,提升性能并节省成本。
4.2 Spark SQL
背景
- 大数据挑战:Spark SQL处理大规模数据,内存容量常为瓶颈。
- Shuffle问题(图6):
- 查询需多表shuffle,内存不足(超
spark.shuffle.memoryFraction
)时溢出到磁盘。 - 磁盘I/O比内存慢数个数量级,严重影响性能。
- 查询需多表shuffle,内存不足(超
4.2.1 Methodology and Software Configurations
- 目标:测试CXL是否减少服务器数量且维持性能。
- 实验设计:
- 基线:3台服务器,每台512GB MMEM(总1.5TB)。
- CXL配置:2台服务器,每台512GB MMEM + 512GB CXL(总1TB MMEM + 1TB CXL)。
- 150个Spark执行器(1核心8GB,总1.2TB),7TB TPC-H数据集,触发溢出。
- 配置:
- MMEM only:每台50执行器,400GB,无溢出。
- MMEM/CXL交错:2台共150执行器(如1:1为75个MMEM + 75个CXL,600GB各)。
- Spill to SSD:限制内存至80%/60%(溢出320GB/500GB)。
- Hot-Promote:同4.1。
- 测试:TPC-H Q5、Q7、Q8、Q9(高shuffle需求),仅测执行时间,禁用SNC。
4.2.2 Analysis
- 图7结果:
- 执行时间(图7a):
- MMEM only最快,归一化基线。
- 交错慢1.4-9.8倍,随CXL比例增加恶化。
- SSD溢出更慢,Hot-Promote慢34%+。
- Shuffle占比(图7b):
- 溢出增加shuffle时间(实心为写,空心为读),主导执行时间。
- 执行时间(图7a):
- 观察:
- 交错性能:虽慢于MMEM,但远快于SSD。
- Hot-Promote:因TPC-H数据局部性低,内核补丁(
numa_balancing_promote_rate_limit_MBps
)调整不足,出现抖动(thrashing)。
4.2.3 Insights
- 成本效益:CXL减少服务器需求,详见§6成本模型。
- 补丁局限:Hot-Promote在键值存储有效,但在Spark需改进,因工作负载特性差异。
4.3 Spare Cores for Virtual Machine
背景
- 弹性计算(IaaS):
- 云服务(如AWS)提供虚拟机,传统vCPU:内存比为1:4。
- 高核心数服务器(如表2 Sierra Forest,1152 vCPU)内存不足(<4TB vs 需4.5TB),vCPU利用率低。
- 问题:内存瓶颈导致收入损失。
4.3.1 Methodology and Software Configurations
- 设置:重复KeyDB实验(§4.1),YCSB-C(只读),100GB数据集,禁用SNC。
- 测试:KeyDB仅用MMEM或CXL,通过
numactl
分配。
4.3.2 Analysis
- 图8结果:
- 延迟(图8a):CXL增加9%-27%,低于§3原始测量(250ns+),因Redis处理延迟掩盖。
- 吞吐量(图8b):CXL慢12.5%。
- 成本分析:
- 1:3 vCPU:内存比浪费25% vCPU,CXL恢复80%收入(20%折扣,27%总收入提升)。
4.3.3 Insights
- CXL价值:扩展内存容量,优化vCPU利用率,提升云服务收入。
- 比例调整:传统1:4比需随硬件进化调整(如ByteDance 1:2/1:8配置)。
总结
- 核心贡献:
- CXL扩展内存容量,解决键值存储、大数据分析和虚拟机的瓶颈。
- Hot-Promote等策略优化性能,但需根据应用特性调整。
- 性能与成本:
- 优于SSD溢出,接近MMEM性能。
- 降低服务器需求和运营成本(详见§6)。
- 适用性:适用于内存容量受限的高并发场景。