OSDI 2024 Paper CXL论文阅读笔记整理
问题
内存分层可以扩展内存容量并降低数据中心的总体拥有成本(TCO)。在公共云中,虚拟机(VM)内存大小正在增加,每个虚拟CPU的典型配置为4-32GB[6,7,12]。然而,由于与扩展DDR DIMM容量相关的物理限制,通过DDR通道访问的DRAM容量落后于可用内核的快速增长[73,91,92]。为此,云提供商通过添加容量存储层来增强常规本地访问的DRAM,称为性能层[61,72,78,84,99]。Compute Express Link(CXL)标准[8,91]提供了通过PCIe总线访问DRAM或非易失性存储器(NVM)的新机制,可以显著扩展存储容量。在本文中,关注的是CXL内存设备本地连接并专用于单个主机的基本用例[91,98]。这个用例现在可以部署,并扩展到未来的内存池[46,77,78]。
挑战
云提供商希望部署基于CXL的内存,以增加总内存容量、降低成本。然而,CXL访问的延迟高于本地DRAM。为了利用CXL内存有两种方法。
软件管理的内存分层
假设软件(管理程序或操作系统)对数据放置有完全控制权,即特定页面是位于容量层还是性能层[45,61,70,74,78,84,89,90,99100]。软件管理的分层需要跟踪内存访问,以识别频繁访问的数据,并将其放置在性能层中。但由于管理程序/OS不参与大多数内存访问,因此它必须依靠页表操作管理(例如,扫描访问位[61,84100]或PTE中毒[45,70,84])或指令采样(例如,Intel PEBS采样[61,74,89]和AMD IBS[4])来跟踪内存访问。但这些方法在虚拟化环境中面临着严重的局限性。(1)VM不支持指令采样,这会影响隐私。(2)细粒度页表操作消耗了过多的主机CPU周期[44,79],导致较高的CPU开销。(3)管理程序/操作系统只能以页面粒度管理内存,对于冷热数据混合在同一页面上的情况,会导致次优决策[76],对于使用较大页面大小(例如2 MB和1 GB)来减少开销的管理程序来说,这尤其成问题。
基于硬件的内存分层
以缓存行粒度管理数据。例如:英特尔扁平内存模式,这是CXL的第一个硬件管理分层系统,基本架构如图3。在处理器内存控制器(MC)内,以缓存行粒度透明地管理两层之间的数据放置。将数据排他的放置在任一层,将本地DRAM和CXL内存的总容量暴露给软件。执行方式如图4,通过将最近访问的行与曾经占用本地DRAM的行交换,将它们升级到本地DRAM。支持混合模式,该模式保留一定数量的专用页面,这些页面保证驻留在本地内存中,其余页面相关的缓存行则根据最近是否被访问而放置在本地或CXL内存中。
对基于硬件的内存分层进行全系统原型的评估表明,相比与全部使用本地内存:只有硬件分层内存,73%的工作负载的速度减慢不超过5%,86%的工作负载速度减慢不超过10%。在混合模式下,33%专用本地DRAM和67%硬件分层内存,82%的工作负载减速不超过5%,95%的工作负载减速不超过10%,其余工作负载,性能下降高达34%。
性能下降由于以下两个原因:
-
租户间的本地内存争用。根据英特尔扁平内存模式设计,两个冲突的物理内存行会竞争同一本地DRAM行,当冲突的页面分配给不同的虚拟机时,导致性能干扰。实验表明73%的工作负载由于本地DRAM冲突导致10%以上的速度减慢。(主要原因)
-
由于访问模式冲突导致的租户内部LLC争用。
本文方法
本文提出了Memstrata,轻量级的多租户内存分配器,结合软硬件管理的方法。
-
识别具有冲突缓存行的页面,采用页面着色将其分配给同一个租户来消除租户间争用。
-
通过在线减速估计器评估每个租户的分层内存缺失所产生的开销,使用四个指标:L3缺失延迟、L2缺失延迟、TLB未命中延迟、L2 MPKI(每千条指令的本地内存缺失次数),随机森林进行分类。根据未命中率进行排序,在租户间动态分配专用的本地内存页,以提高对内存延迟最敏感的租户的性能。
开源代码:Bitbucket
在支持英特尔扁平内存模式的原型硬件上进行多VM实验,Memstrata能够识别性能异常值,并将其退化从30%以上降低到6%以下,从而在各种工作负载中提供一致的性能。在所有实验中,Memstrata的最大CPU开销是单核的4%,不到每个VM单核的1%。
实验
实验环境:预生产的Intel®Xeon®6处理器,该处理器实现了Intel®扁平内存模式。测试服务器包含一个带有128GB DDR5本地内存和128GB DDR5-CXL内存的单个插槽。CXL内存通过三个CXL卡连接,每个卡可容纳两个DDR5-4800 DIMM,并提供x16 PCIe5 CXL连接。使用预生产的Astera Labs Leo CXL智能内存控制器[22]。CXL内存的空闲延迟大约是本地内存延迟的200-220%,每个CXL卡的最大带宽约为50 GB/s[91]。
实验对比:应用速度减慢比例
实验参数:不同应用
总结
针对利用CXL进行内存分层,基于软件会消耗过多CPU且只能在页面粒度迁移,基于硬件受限于组合间内存争用和租户内LLC争用。本文提出软硬件结合的CXL分层系统 Memstrata,基于Intel®扁平内存模式进行软件层优化,在各种负载下提供了类似于本地DRAM的性能,能够将内存容量扩展1.5倍。使用两个技术:(1)识别冲突缓存行的页面,采用页面着色将其分配给同一个租户来消除租户间争用。(2)使用四个指标:L3缺失延迟、L2缺失延迟、TLB未命中延迟、L2 MPKI(每千条指令的本地内存缺失次数),利用随机森林进行分类。根据未命中率在租户间动态分配专用的本地内存页,以提高对内存延迟最敏感的租户的性能。