查看原文
其他

CXL内存在分离式HPC中作为持久性内存的研究

常华Andy Andy730 2024-03-16

摘要

在高性能计算(HPC)领域,寻找高效且可扩展的内存解决方案仍然具有至关重要的意义。Compute Express Link(CXL)的引入提供了一种潜在路径,有望成为分离式HPC系统中持久性内存(PMem)解决方案。

本文通过对CXL内存作为PMem候选解决方案的可行性进行了全面探讨,通过在配备高性能处理器和CXL附加内存原型的多NUMA节点上进行物理实验提供了实证证据。我们的研究不仅对CXL内存的性能进行了基准测试,还展示了从传统的PMem编程模型向CXL平稳过渡的可能性,从而增强了其实用性。

为了验证我们的观点,我们采用了一个具体的CXL原型,使用了一块FPGA卡,其中包含符合CXL 1.1/2.0标准的端点设计(Intel FPGA CXL IP)。通过执行STREAM和STREAM-PMem基准测试进行的性能评估显示,CXL内存能够在App-Direct和内存模式下模拟PMem的特征,并在与Intel第四代至强(Sapphire Rapids)处理器一起实现了令人印象深刻的带宽性能。

结果阐明了CXL内存作为持久性内存解决方案的可行性,超越了先前建立的基准测试。与已发表的DCPMM结果相比,我们的CXL-DDR4内存模块在性能上略有下降,但与本地DDR4内存配置相比,具有可比的带宽性能。修改后的STREAM-PMem应用程序突显了从PMem向CXL的编程模型过渡的便捷性,从而强调了采用CXL内存的实用性。

本研究的源代码可在以下链接找到:https://github.com/Scientific-Computing-Lab-NRCN/STREAMer。

1 引言

1.1 当前HPC内存解决方案的局限性

随着异构计算时代的到来,分析、处理和存储海量数据的需求日益增强 [60]。异构计算系统旨在满足这些需求,实现从松散到紧密耦合的各种计算任务的执行,包括CFD模拟和深度学习优化 [11]。内存和存储资源在这些计算的性能和可扩展性中发挥着至关重要的作用 [32]。内存因素,如容量、延迟和带宽,对于成功处理大规模任务并迅速将数据传递给处理单元 [45] 起着决定性的作用。在科学计算中,存储设备对于在计算过程中保留诊断信息具有重要意义 [37]。值得注意的是,异构计算机中故障频发的现象强调了存储大量数据以支持恢复和增强容错能力的重要性 [8, 14]。

然而,在HPC系统中,传统的内存和存储层次结构显示出明显的不足,对科学计算施加了严重的限制 [32]。从内存体系结构的角度来看,DRAM具有带宽和容量的固有限制,这些限制影响了性能,阻碍了大规模问题的处理 [56, 58]。从存储的角度来看,传统设备(如HDD和SSD)提供了大容量,但表现出非常慢的访问时间,导致I/O密集型应用程序和容错机制出现显著的开销 [37]。这些传统硬件的差距和局限性凸显出不断努力扩展内存-存储层次结构并开发新型内存体系结构和解决方案的工作。一个显著的例子是非易失性RAM [59, 71](我们将在第1.2节详细讨论)。

尽管引入了高带宽内存(HBM)[28]作为提高内存性能的解决方案,但它并没有完全解决问题[29]。HBM内存模块堆叠垂直,以实现更高的内存带宽,由于增加的并行性。然而,即使使用HBM,与传统DDR(双倍数据率)内存模块[67]相比,内存容量仍然有限。这种限制仍可能影响内存密集型应用程序,因为它们需要更大的内存空间[44]。此外,尽管HBM在一定程度上解决了带宽问题,但它并未解决内存层次结构的根本问题[44]。处理器仍然需要访问不同级别的内存,而这可能导致数据传输之间的延迟,从而影响性能[44]。HBM虽然提高了处理器与某些内存模块之间的带宽,但需要访问不同级别的内存引入了可能对各种任务执行产生影响的延迟[44]。

总的来说,可以明确指出,在HPC系统的背景下,采用传统方法将内存模块直接放在板上会面临重大挑战[10]。这种布局由于处理器与这些模块之间的有限连接数量,因此限制了内存带宽[10]。因此,处理器与板上内存之间的数据传输速率成为瓶颈,妨碍了系统的整体性能[10]。

要增加节点外的内存容量,需要使用先进的通信技术,例如基于远程直接内存访问(RDMA)的消息传递接口(MPI),以优化节点间的通信[35]。然而,这些复杂的框架也存在挑战[17]:MPI作为分布式计算通信的基础,具有消息传输中的延迟和开销问题,对需要频繁通信的应用程序的效率产生重大影响。此外,随着集群规模的增加,由于更多节点争夺网络资源,复杂性也增加了[7]。

1.2 HPC中的持久性内存

为了弥补内存和存储之间的差距,持久性内存(PMem)[33, 49]应运而生。PMem实现,如带备用电池(BBU)的DIMM或非易失性RAM(NVRAM),旨在在通电周期内提供快速的可寻址字节数据访问以及持久的数据保存。PMem技术通过将内存和存储特性结合在一起,创建了内存-存储层次结构中的一个新层次[59, 71]。最初的解决方案包括带备用电池的DRAM,这些解决方案已经在市场上得到了广泛应用,代表了一个已经确立的概念[30, 39, 50, 63]。然而,这些解决方案受到可扩展性有限和潜在的数据丢失风险的制约。对电池的依赖引入了对电源故障的担忧,可能导致电池耗尽时的数据损坏或丢失风险。此外,该方法的可扩展性受到每个模块都需要单独电池的影响,影响了成本效益和整体系统性能。

然而,近年来,新的PMem技术已经崭露头角,其中3D XPoint[19]是主要技术,而Intel Optane DCPMM [21, 72]则是市场上的主要产品。这些现代PMem技术在与DRAM相比具有更大容量的可寻址字节内存的同时,保持了可比的访问时间[27]。此外,由于这些技术是非易失性的,它们即使在发生电源故障的情况下也能够检索数据。此外,PMem根据这些特性提供了两种配置方案:(1)它可以用作主内存扩展,提供额外的易失性内存,(2)它可以用作可以通过PMem感知文件系统[71]由应用程序访问的持久性内存池,或者可以由应用程序直接管理和访问[27]。为了简化和优化PMem编程和管理,创建了持久性内存开发工具包(PMDK)[64]。

最近几年来,PMem在HPC应用程序中受到了广泛的关注[15, 48, 55, 62],有两个PMem应用场景直接用于不需要(或最少)更改的科学应用程序。第一个场景涉及将PMem用作内存扩展,以支持执行大规模科学问题[48]。第二个场景涉及将PMem用作由PMem感知文件系统(主要基于POSIX API)访问的快速存储设备,主要用于应用程序诊断和检查点重新启动(C/R)机制[38],以及用于提高科学应用程序的性能和固有的容错性[14]。

除了在科学应用程序中直接使用PMem的应用场景外,还开发了各种框架和算法来访问和管理存储在PMem上的数据结构[4]。这些框架包括主要建立在PMDK库之上的方法[14, 31]。例如,PMem对象存储框架,如MOSIQS [31],以及使用PMem进行线性迭代求解器的精确状态恢复的NVM-ESR恢复模型[14]。

图1:从硬件PMem到未来系统中的CXL内存的迁移。

然而,随着HPC工作负载的不断演进,计算单元的增加和内置处理单元的不断增加,提高内存带宽的需求变得至关重要[32]。现有的PMem解决方案在满足这些要求方面显示出明显不足,具有在某一阈值以上的可扩展性限制[15]。具体来说,PMem设备具有有限的带宽。例如,Optane DCPMM的读写带宽远远低于DRAM的[27]。这在一定程度上与PMem模块的混合和中间特性有关,正如表1所述。

表1:PMem模块的属性,无论是作为内存扩展(Memory Mode)还是作为直接访问PMem(App-Direct)。

除了这些挑战,来自大多数PMem设备(如Optane DCPMM)的物理连接到CPU板上的内存DIMM引发了一个显著的限制。这种配置限制了内存扩展的潜力,因为PMem与传统的DRAM卡一起竞争DIMM插槽,形成了实现最佳内存配置的瓶颈[51, 69]。整个HPC业界,包括超级计算和云计算[61],都已经认识到将内存和计算资源紧密耦合的劣势,特别是在容量、带宽、弹性和整体系统利用率方面[10, 57]。与CPU紧密耦合的PMem技术继承了这些限制。目前,随着备受瞩目的PMem技术逐渐被淘汰(例如,2022年宣布的Optane DCPMM[20, 22]),业界正积极追求新型内存解决方案,尤其是在全面追求更加分离式的计算[36]。

1.3 使用CXL的分离式内存

在传统内存范式中,革命性的变革即将到来,这一变革将由离散内存节点,这些节点包括DRAM和网卡(NIC)来实现。这一趋势将推动分布式和共享内存访问,重塑高性能计算(HPC)的面貌[10]。这一变革与分离的概念相契合,即计算资源和内存单元被解耦,以实现资源的最优利用、可扩展性和适应性。

近年来,高级互连技术的进步,如Compute Express Link(CXL)[66],为实现分离式内存的理念提供了有力支持。CXL是一种开放标准,支持高速缓存一致性互连,连接各种设备[66]。自2019年首次推出以来,这一标准已经得到发展和不断加强。CXL 1.1定义了三种主要设备类型的协议[66]:仅缓存的加速器(类型1)、带附加内存的缓存(类型2)和内存扩展(类型3)。CXL 2.0扩展了规范,引入了诸如设备级内存池与CXL交换机等功能。CXL 3.0则引入了面向网络的功能和管理、增强的内存共享、动态容量池化、强化的一致性和点对点通信等新特性。在带宽方面,CXL 1.1和2.0采用PCIe 5.0,实现每个方向最多64 GB/s的传输,通过16通道链路达到32 GT/s的速度。相比之下,CXL 3.0采用PCIe 6.0,将速度翻倍至64 GT/s,通过x16链路支持每个方向128 GB/s的双向通信。

随着CXL内存模块市场的崭露头角,一些制造商已经宣布推出采用CXL协议的产品。例如,Samsung[52]和SK Hynix[53]推出了CXL DDR5模块,Astera Labs[3]则宣布了一款CXL内存加速器,Montage Technology[68]将提供CXL内存扩展控制器。

通过CXL,内存节点将通过高速链接相互连接,实现实时自适应内存配置,以满足计算节点的需求[70]。机柜内的解耦实践有望有效满足应用程序的内存需求,同时确保提供充足的高效远程内存带宽[46, 47]。如图1所示,从处理器的角度来看,内存访问方面预计将发生重大变化,从过去使用DDR4+PMem内存,配备通过PCIe Gen4连接的NVMe SSD,到即将到来的DDR5本地内存,同时配备本地或远程NVMe SSD以及CXL内存,以实现内存扩展或在新一代PCIe上保持持久性。


CXL内存NVRAM
带宽和数据传输具有显著更高的带宽,支持处理器和内存设备之间的快速数据传输。非易失性存储,具有由底层接口和技术引发的潜在数据传输速率限制。
内存一致性提供内存一致性链接,确保不同内存层中的数据一致性。需要额外的机制来保持内存一致性,除非与本地RAM一起集成时,与其它内存技术。
异构内存集成允许各种内存技术在统一架构中的无缝集成。用于扩展内存容量,但由于其独特特性,集成可能需要额外的考虑。
内存池化与共享便于内存池化和共享,支持根据工作负载需求进行有效资源利用和动态分配。扩展了内存容量,但内存共享和池化的固有灵活性可能有限。
行业标准化由主要技术公司支持的开放行业标准,确保兼容性、互操作性和更广泛的应用。解决方案可能各不相同,潜在的兼容性挑战和有限的集成方案。
可扩展性设计用于多通道和协议,适应不断发展的数据中心需求,具备可扩展性。可扩展性可能受到底层技术特性的限制,如DIMM数量和RAM/NVRAM权衡。
与HPC相关更高的带宽、内存一致性和内存池化能力提升了HPC工作负载性能。标准化兼容性在异构环境中和可扩展性方面满足不断增长的需求。提供非易失性,但受到带宽、一致性管理和可扩展性方面的限制,影响其应用于复杂HPC内存需求的适用性。

表2:CXL内存和NVRAM用于分布式HPC的一般比较。

然而,尽管像CXL这样的技术为分离式内存带来了巨大潜力,但重要的是要认识到仍然需要解决的挑战和考虑因素[2, 16];这些挑战和考虑因素与在HPC中整合持久性内存时所面临的挑战和考虑因素相似[5]。例如,软件和编程模型需要不断发展,以充分发挥分离式内存的优势;应用程序和算法必须经过设计或调整,以在分布式内存节点之间无缝运行;高效的数据放置和移动策略对于最小化网络延迟的影响以及确保数据密集型工作负载能够有效利用基于CXL的分离式内存资源至关重要,特别是在启用了高速缓存一致性或直接访问时。然而,当将CXL内存与NVRAM作为非易失性RAM(NVRAM)的方案进行比较时,通常可以观察到(表2)从分离式HPC应用的角度来看,优先选择CXL而不是NVRAM,鉴于带宽、数据传输和可扩展性等方面的优势,但也需要考虑内存一致性、集成、池化和共享等因素。

1.4 研究贡献

在这项工作中,我们基于多NUMA节点和多核高性能SOTA硬件进行了实际物理实验(第2.1小节),并通过CXL远程内存(第2.2小节)展示,我们不仅可以充分发挥CXL内存的潜力,以呈现大多数持久性内存模块的特性(如表1所述),而且在性能方面,我们可以实现比先前发布的Optane DCPMM更好的带宽(例如,根据[26]的数据,对于单个Optane DCPMM,其最大读取带宽为6.6 GB/s,而最大写入带宽为2.3 GB/s)。实际上,我们展示了(见图4),通过使用我们的CXL-DDR4内存模块(比DDR5便宜得多),我们实现了与本地DDR4模块可比的结果,与本地DDR5模块相比,带宽仅下降了约60%(值得注意的是DDR4的带宽约为DDR5的50%)。我们的测试覆盖了多种配置(第3.2小节),涵盖了与工作线程的内存距离,并使用了众所周知的STREAM基准测试(第3.1小节)。

为了展示内存作为PMem的非易失性特性,我们将CXL内存放置在节点外,嵌入在FPGA设备中(第2.2小节),类似于以前带备用电池的DIMM。由于多个节点可以访问设备,我们不再将备用电池视为主要开销,因为它只会在内存模块上应用一次,而不会在每个计算节点上应用。

此外,除了高速缓存一致性性能基准测试STREAM [40, 41],我们还使用了修改后的STREAM应用程序(称为STREAM-PMem),来重新测试内存带宽,当将所有主数组分配为PMDK的pmemobj并相应操作时[65]。pmemobj提供了一种保证,即对象的状态将在程序结束时保持内部一致。此外,它提供了一个事务功能,可包含对持久对象进行的各种修改。该功能确保所有的修改都成功应用或没有一个生效。

我们强调,由于我们的CXL内存模块位于节点外部并且可以由电池支持,因此能够像以前的Optane DCPMM一样以事务方式直接访问内存,并实现更好的性能,这是我们实际方法的关键点,该方法将CXL内存视为未来分离式HPC的持久性内存。

最后,我们将整个基准测试方法开源为一个易于使用和自动化的工具,名为STREAMer,用于未来评估用于HPC目的的CXL内存设备。

2 硬件实验设置

2.1 HPC硬件

我们的HPC硬件实验环境基于以下两种设置:

图2:配置1,具备DDR5本地内存和DDR4 CXL连接内存。

(1)配置具有两个Intel第4代至强(Sapphire Rapids)处理器的节点,每个处理器的基础频率为2.1GHz,拥有48个核心,并支持超线程技术。BIOS已更新,仅支持每个插槽的10个核心。每个处理器搭载一块内存DIMM(64GB DDR5 4800MHz DIMM)。系统还配置了一个CXL原型设备,实现为PCIe连接的FPGA上的DDR4内存(见图2)。

图3:配置2,带有DDR4内部内存。

(2)配置具有两个Intel至强金牌5215处理器的节点,每个处理器的基础频率为2.5GHz,拥有10个核心,并支持超线程技术。每个处理器在6个通道中共有96GB的DRAM,每个通道配备16GB DDR4 2666MHz DIMM(见图3)。

2.2 CXL原型

我们提供了有关我们在FPGA卡上实现的CXL原型的深入概述[25]。图2和图4更详细地展示了我们在FPGA卡上实现CXL内存池的情况(而图3展示了参考系统,没有任何CXL附件,只有DDR4主内存)。该原型旨在利用R-Tile Intel FPGA IP for CXL的功能,包括用于CXL链路建立和事务层管理的关键功能。这一综合解决方案便于构建基于FPGA的CXL 1.1/2.0兼容的端点设计,包括类型1、类型2和类型3配置。它是在先前验证过的原型的基础上构建的,为PMem活动进行了必要的轻微修改[34]。

图4:Intel® Agilex® 7 I-Series FPGA上的CXL IP概览[24],在图2(Setup #1)中有展示。

我们的CXL实现体系结构围绕FPGA主芯片内的协议软件IP与硬件IP对等体的协同配对展开。这种协同性安排确保了对CXL链路功能的有效管理,这对于无缝通信至关重要。具体而言,R-Tile通过PCIe Gen5x16连接与CPU主机进行接口,提供最高64GB/s的理论带宽。作为我们实现的关键部分,FPGA设备在主机系统中被恰当地列为CXL端点。

作为对链路管理的补充,软件IP承担了事务层功能的任务,这对于成功执行不同类型的CXL端点至关重要。对于类型3配置,CXL.mem事务层熟练处理来自CPU主机的CXL.mem请求。它协调生成面向HDM子系统的主机管理设备内存(HDM)请求。与此同时,CXL.io事务层负责处理CXL.io请求的任务。这些请求包括来自CPU主机的配置和内存空间查询,无缝地将它们转发到它们指定的控制和状态寄存器。值得注意的增强功能是用户流接口,为自定义CXL.io功能提供了一条通道,可以无缝集成到用户设计中。

我们的FPGA卡包含两个内置的DDR4内存模块,每个模块容量为8GB,工作时钟频率为1333 MHz。这些模块可以从主机系统作为传统内存资源访问。需要强调的是这个原型配置的一个独特属性:CXL链路可以访问相同的内存容量。实质上,这意味着相同的远程内存段可以提供给两个不同的NUMA节点,消除了地址重叠的任何顾虑。然而,由于缺乏统一的高速缓存一致性域,维护分配给共享远程内存的两个NUMA节点之间的一致性的责任落在了利用这种配置的应用程序身上。

值得注意的是,当前原型配置下可获得的带宽受到当前可实现的限制,这并不反映CXL标准的内在带宽潜力。提高带宽的潜在途径包括以下几个考虑因素。首先,升级至支持DDR4速度为3200 Mbps的高速FPGA,甚至考虑采用DDR5的5600 Mbps,可以显著提高吞吐量。其次,通过增加分配给CXL IP的资源的切片数量来扩展,也是一种可行的策略。此外,扩展FPGA的容量以容纳多个独立的DDR通道,例如从一个通道扩展到四个,有望增加原型的带宽潜力。

在我们的讨论中,CXL内存设备采用DDR4而不是DDR5是关键的。通常情况下,PMem的速度比主内存较慢,且价格更便宜。通过使用DDR4 CXL内存而不是DDR5,同时将主内存配置为DDR5,我们保持了这种重要关系。

3 性能评估

3.1 STREAM和STREAM-PMem基准测试

STREAM基准测试[42]是一个合成基准程序,用于测量高性能计算机中简单向量核心的可持续内存带宽。STREAM被开发为科学计算中基本计算核心的代理[43],包括复制、缩放、求和和三重核心。STREAM有一个专用版本,用于通过PMDK分配和访问PMem模块,称为STREAM-PMem [12]。

表1中的代码摘录构成了从当前代码版本中提取的初始代码库的一部分。

这些内容已被代码表2中的代码所替代,该代码从访问内存池开始。此外,我们使用一个名为"initiate"的函数来初始化三个数组。初始化完成后,代码继续执行STREAM基准代码的其余部分,复制原始STREAM基准代码的结构。

在这项工作中,我们使用这两个版本的STREAM来展示从PMem到CXL的转变。通过这个演示,我们展示了原本为PMem设计的程序如何在启用CXL设备的情况下无缝运行。此外,我们提供性能评估,以预测CXL对与本地RAM(DDR4和DDR5)以及本地类似PMem设备(模拟远程插槽,用于内存扩展或作为直接访问设备,如[6,13]中所做的)性能的影响。

不同于以往的研究,前期研究主要集中于展示CXL内存用于内存数据库查询或文件系统操作的示范[1,34],而STREAM内存访问则牵涉到访问和操作大型数组,因此对HPC系统中的科学计算尤其适用和重要。此外,STREAM使用OpenMP线程实现,这是科学计算中用于并行计算的常见共享内存范式[9]。

3.2 测试配置

图5:SCALE — 不同STREAM测试配置。有关测试组1.(a)、1.(b)、1.(c)、2.(a)、2.(b)的定义,请参阅第3.2节,以及图例的澄清。

图6:ADD — 不同STREAM测试配置。有关测试组1.(a)、1.(b)、1.(c)、2.(a)、2.(b)的定义,请参考第3.2节,以及图例的澄清。

图7:COPY — 不同STREAM测试配置。有关测试组1.(a)、1.(b)、1.(c)、2.(a)、2.(b)的定义,请参阅第3.2节,以及图例的澄清。

图8:TRIAD — 不同STREAM测试配置。有关测试组1.(a)、1.(b)、1.(c)、2.(a)、2.(b)的定义,请参考第3.2节,以及图例的澄清。

本研究的方法是在各种CPU和内存配置中使用STREAM和STREAM-PMem,考虑了HPC设置中可用的DRAM和CXL内存的可用性。如下所述,图5、图6、图7和图8中呈现的结果分别对应于规模、加法、复制和三重操作的100M个数组元素的STREAM执行。对于每种STREAM方法,我们的测试结果分为两类(共5组),用于进行唯一的比较。我们将这5组进一步分为两类。第一类(类1,(a)-(c))指的是PMem中的App-Direct模式的等效情况,其中我们直接访问本地或远程内存(或在备用插槽中或在CXL内存中)。第二类(类2,(a)-(b))指的是PMem中的内存模式,在这种模式下,我们使用其他CC-NUMA节点增加了可用内存。

Class 1 — App-Direct:

  • (a) 本地内存作为PMem访问:此组配置涉及在App-Direct模式下访问本地内存(插槽内存),从而对STREAM-PMem进行基准测试。

  • (b) 远程内存作为PMem访问:此组配置涉及在App-Direct模式下访问远程内存的单插槽上的计算核心,从而对STREAM-PMem进行基准测试。在此上下文中,“远程内存”包括CXL连接的内存和从备用CPU插槽访问的插槽内存(即通过UPI访问的内存)。

  • (c) 远程内存作为PMem访问(线程亲和性):此组配置涉及在两个插槽中的计算核心,在App-Direct模式下访问远程内存,从而对STREAM-PMem进行基准测试,使用两种不同的线程亲和性方法:close和spread。close方法首先填充一个插槽,然后从第二个插槽添加核心。相反,spread方法交替从两个插槽添加核心。


Class 2 — Memory Mode:

  • (a) 远程CC-NUMA:此组配置涉及在单插槽上的计算核心,以CC-NUMA形式访问远程内存。

  • (b) 远程CC-NUMA(所有核心):此组配置涉及两个CPU插槽上的核心以CC-NUMA形式访问远程内存。这包括两个插槽都在操作并访问其中一个插槽上的内存的配置,因为这些工作负载包括远程访问。


图9:两个类别(App-Direct和Memory Mode)的数据流示例。每个测试组都在对应的图5、图6、图7、图8的子图中进行评估。每一行对应一个测试组。

为了更清晰展示,图9演示了每个测试配置的数据流。图9的每一行都包含了两个类的测试组的数据流检查。因此,在我们的每个测试组中,了解每个趋势的方式,以及其与相关数据流的对应关系,都由趋势本身的三个组合来给出:符号、颜色和内存注释。符号用于区分本地DDR4(▲)、本地DDR5(●)或CXL连接的DDR4(×)。颜色表示活动的计算核心,可以是插槽0、插槽1或两者都有。伴随每个趋势的注释pmem#{0, 1, 2}或numa#{0, 1, 2}提供了对访问内存位置的解释:0表示插槽0;1表示插槽1;2表示CXL内存。numa表示STREAM以NUMA内存扩展的方式访问内存,而pmem表示STREAM-PMem使用PMDK访问内存。

4 结果与分析

图5、图6、图7和图8分别呈现了规模、加法、复制和Triad操作的STREAM结果,以及在第3.2小节中定义的测试配置,如下所述。图5a、图6a、图7a和图8a到图5e、图6e、图7e和图8e呈现了分别属于Class 1.(a)组和Class 2.(b)组的结果。

这些结果解释了与不同配置相关的内存访问成本,这些配置根据参数如内存类型(插槽上或CXL连接)、内存位置(插槽本地、备用CPU插槽或CXL连接内存)、访问模式(App-Direct与Memory Mode)和线程亲和力(Close或Spread)而有所不同。

接下来,我们将根据第3.2小节中呈现的配置类别和组,对实现的结果进行检查和分析:

Class 1 — App-Direct:

  • (a) 本地内存作为PMem访问:可以看到,在所有STREAM操作中,使用PMDK对本地DDR5内存进行App-Direct访问的性能在20-22 GB/s左右。这个测试是下一组中呈现的远程访问的参考,不管是到附近的远程插槽还是到CXL内存(使用PMDK)。

  • (b) 远程内存作为PMem访问:对模拟的远程PMem(备用插槽上的DDR5)进行App-Direct访问,与本地App-Direct访问相比,平均性能下降了30%(约15 GB/s),适用于所有STREAM操作。对于远程CXL内存(DDR4)的App-Direct访问,与DDR5上的模拟PMem相比,性能下降了50%。但需要注意的是,DDR5的带宽本身比DDR4高约50%,这意味着其他开销,大约2-3 GB/s的带宽损失,可以归因于CXL总线。

  • (c) 远程内存作为PMem访问(线程亲和性):如前面的组中所观察到的,本地App-Direct访问的带宽高于远程访问。在紧凑的线程亲和性情况下,在填充整个插槽后,将计算核心的远程访问添加到工作负载会对带宽产生负面影响,而添加本地访问会产生积极影响。采用分离的亲和性,由于包含了交替的访问,性能在本地和远程访问之间呈现平均值。最终,当两个插槽都使用完整的核心数时,结果分别在插槽内DDR5和远程CXL内存之间趋同。需要注意的是,与插槽内DDR5相比,访问远程CXL内存(DDR4)导致性能下降了50%。


Class 2 — 内存模式:

  • (a) 远程CC-NUMA: 无论是在远程插槽上还是CXL连接的内存,评估DDR4 CC-NUMA均产生相似的数据结果(平均差距最多为2-5 GB/s)。然而,在较少的线程数后,访问CXL内存表现出轻微的优势。这一优势可以归因于Setup #1(使用CXL的Shappire Rapids)中较大的高速缓存,与Setup #2(Xeon Gold)的插槽内DDR4相比(见2.1小节)。这表明,当从Shappire Rapids切换回Xeon Gold时,CXL布线的性能降低受到限制。此外,CC-NUMA到DDR5和DDR4(插槽内或CXL连接的)之间的差距是二的因数,正如1.(b)和1.(c)中已观察到的。另外,与1.(b)中的App-Direct测试结果相比,可以看出PMDK在所有STREAM方法中的CC-NUMA中的开销为10%-15%。

  • (b) 远程CC-NUMA(所有核心): 这里重复了DDR4和DDR5之间的差距。此外,使用所有核心访问插槽内DDR4的差异趋于与访问DDR4 CXL内存相同的结果。


总之,分析表明,使用PMDK直接访问本地DDR5内存饱和在20-22 GB/s之间,而对模拟的PMem和CXL内存的直接远程访问分别导致性能下降30%和50%,其中约2-3 GB/s的带宽损失归因于CXL布线。在内存扩展方面,访问远程DDR4 CC-NUMA和DDR4 CXL连接内存的性能差距为2-3 GB/s,而DDR5 CC-NUMA与DDR4相比保持1.5倍的优势差距,插槽内DDR4访问在不同线程亲和性下与插槽外DDR4访问趋同。

5 结论

在本研究中,我们全面探讨了CXL内存作为分离式HPC系统中持久性内存解决方案的潜力。通过在最新多NUMA节点上进行物理实验,配备高性能处理器和CXL连接内存原型,我们提供了实证证据,证明CXL内存能够完全展现持久性内存模块的特性,并在性能方面表现出令人印象深刻的潜力。

研究结果表明,CXL内存在带宽方面具有超越Optane DCPMM的潜力。具体而言,通过采用CXL-DDR4内存模块,这是DDR5内存的经济替代品,我们实现了与本地DDR4内存配置可比的带宽,仅降低了大约50%,相对于本地DDR5内存配置。这些结果通过广泛采用的STREAM基准测试在各种工作线程内存访问距离下得以验证,凸显了CXL内存在HPC领域的可行性和多功能性。

我们不仅通过性能评估证实了从PMem向CXL的平稳过渡,还通过对STREAM应用程序的修改,创建了STREAM-PMem,强调了编程模型的无缝过渡。我们利用PMDK的pmemobj确保了在持久对象上执行的操作具有事务完整性和一致性。此外,能够像Optane DCPMM一样直接事务性地访问CXL内存被视为实际实施的关键优势。

我们的研究不仅停留在理论层面,还实际实施了一个CXL原型在FPGA卡上。该原型代表了CXL 1.1/2.0兼容的终端设计,通过软硬件IP组件的协同展示了有效的链路建立和事务层管理。尽管受限于当前的实施限制,但原型的性能证明了这一解决方案的可扩展性,为潜在的增强提供了蓝图,包括采用更高速度的FPGA和更多资源。

6 未来工作

尽管本研究已经为在HPC系统中采用CXL启用内存提供了有价值的洞察和证据,但仍然有许多未来研究和探索的方向:

  • 可扩展性和性能优化:进一步研究CXL启用内存在更大型的HPC集群中的可扩展性是至关重要的,尤其是当多个节点需要访问CXL内存时。通过优化通信协议和内存访问模式,可以更好地发挥内存分离的优势。

  • 混合架构:结合不同的内存技术,如DDR、PMem和CXL内存,可以提供一个平衡的解决方案,充分发挥每种技术的优势。此外,由于CXL内存还可以与DDR5甚至Optane DCPMM结合使用,因此重新评估这些CXL内存的性能将是有益的。

  • 实际应用:将性能评估扩展到超越基准测试的实际HPC应用程序,可以更清晰地了解CXL内存在实际场景中的表现。这有助于验证其在实际工作负载中的效益。

  • 容错性和可靠性:在CXL启用内存的背景下,研究容错机制和数据可靠性至关重要,特别是在大规模分布式环境中。具体而言,以前基于PMDK和Optane DCPMM的解决方案可能需要进行调整和重新评估,以适应CXL内存的使用场景。


-----
Source: Yehonatan Fridman, CXL Memory as Persistent Memory for Disaggregated HPC: A Practical Approach, 21 Aug, 2023


---【本文完】---

近期受欢迎的文章:


我们正处于数十年未见之大机遇中

新技术爆发式发展,催生新产品

然而,颠覆式创新并非简单的技术堆叠

而是异常复杂的系统工程

需要深度洞察

欢迎一起分享思考和见解


REFERENCES

  • [1] Minseon Ahn, Andrew Chang, Donghun Lee, Jongmin Gim, Jungmin Kim, Jaemin Jung, Oliver Rebholz, Vincent Pham, Krishna Malladi, and Yang Seok Ki. 2022. Enabling CXL memory expansion for in-memory database management systems. In Proceedings of the 18th International Workshop on Data Management on New Hardware. 1–5.

  • [2] Hasan Al Maruf and Mosharaf Chowdhury. 2023. Memory Disaggregation: Open Challenges in the Era of CXL. In Workshop on HotTopics in System Infrastructure, Vol. 18.

  • [3] AsteraLabs. 2022. CXL Memory Accelerators. https://www.asteralabs.com/ products/cxl-memory-platform/

  • [4] Alexandro Baldassin, Joao Barreto, Daniel Castro, and Paolo Romano. 2021. Persistent memory: A survey of programming support and implementations. ACM Computing Surveys (CSUR) 54, 7 (2021), 1–37.

  • [5] Lawrence Benson, Marcel Weisgut, and Tilmann Rabl. 2023. What We Can Learn from Persistent Memory for CXL. BTW 2023 (2023).

  • [6] Lars Bergstrom. 2011. Measuring NUMA effects with the STREAM benchmark. arXiv preprint arXiv:1103.3225 (2011).

  • [7] David E Bernholdt, Swen Boehm, George Bosilca, Manjunath Gorentla Venkata, Ryan E Grant, Thomas Naughton, Howard P Pritchard, Martin Schulz, and Geoffroy R Vallee. 2020. A survey of MPI usage in the US exascale computing project. Concurrency and Computation: Practice and Experience 32, 3 (2020), e4851.

  • [8] Andrés Bustos, Antonio Juan Rubio-Montero, Roberto Méndez, Sergio Rivera, Francisco González, Xandra Campo, Hernán Asorey, and Rafael Mayo-García. 2023. Response of HPC hardware to neutron radiation at the dawn of exascale. The Journal of Supercomputing (2023), 1–22.

  • [9] Leonardo Dagum and Ramesh Menon. 1998. OpenMP: An industry-standard API for shared-memory programming. Computing in Science & Engineering 1 (1998), 46–55.

  • [10] Nan Ding, Pieter Maris, Hai Ah Nam, Taylor Groves, Muaaz Gul Awan, LeAnn Lindsey, Christopher Daley, Oguz Selvitopi, Leonid Oliker, and Nicholas Wright. 2023. Evaluating the Potential of Disaggregated Memory Systems for HPC applications. arXiv preprint arXiv:2306.04014 (2023).

  • [11] Thomas M Evans, Andrew Siegel, Erik W Draeger, Jack Deslippe, Marianne M Francois, Timothy C Germann, William E Hart, and Daniel F Martin. 2022. A survey of software implementations used by application codes in the Exascale Computing Project. The International Journal of High Performance Computing Applications 36, 1 (2022), 5–12.

  • [12] Svein Gunnar Fagerheim. 2021. Benchmarking Persistent Memory with Respect to Performance and Programmability. Master’s thesis.

  • [13] Clément Foyer, Brice Goglin, and Andrès Rubio Proaño. 2023. A survey of software techniques to emulate heterogeneous memory systems in high-performance computing. Parallel Comput. (2023), 103023.

  • [14] Yehonatan Fridman, Yaniv Snir, Harel Levin, Danny Hendler, Hagit Attiya, and Gal Oren. 2022. Recovery of Distributed Iterative Solvers for Linear Systems Using Non-Volatile RAM. In 2022 IEEE/ACM 12th Workshop on Fault Tolerance for HPC at eXtreme Scale (FTXS). IEEE, 11–23.

  • [15] Yehonatan Fridman, Yaniv Snir, Matan Rusanovsky, Kfir Zvi, Harel Levin, Danny Hendler, Hagit Attiya, and Gal Oren. 2021. Assessing the use cases of persistent memory in high-performance scientific computing. In 2021 IEEE/ACM 11th Workshop on Fault Tolerance for HPC at eXtreme Scale (FTXS). IEEE, 11–20.

  • [16] Andreas Geyer, Daniel Ritter, Dong Hun Lee, Minseon Ahn, Johannes Pietrzyk, Alexander Krause, Dirk Habich, and Wolfgang Lehner. 2023. Working with Disaggregated Systems. What are the Challenges and Opportunities of RDMA and CXL? BTW 2023 (2023).

  • [17] William Gropp. 2012. MPI 3 and beyond: why MPI is successful and what challenges it faces. In European MPI Users’ Group Meeting. Springer, 1–9.

  • [18] Shashank Gugnani, Arjun Kashyap, and Xiaoyi Lu. 2020. Understanding the idiosyncrasies of real persistent memory. Proceedings of the VLDB Endowment 14, 4 (2020), 626–639.

  • [19] Frank T Hady, Annie Foong, Bryan Veal, and Dan Williams. 2017. Platform storage performance with 3D XPoint technology. Proc. IEEE 105, 9 (2017), 1822– 1833.

  • [20] Jim Handy and Tom Coughlin. 2023. Optane’s Dead: Now What? Computer 56, 3 (2023), 125–130.

  • [21] Takahiro Hirofuchi and Ryousei Takano. 2020. A prompt report on the performance of intel optane dc persistent memory module. IEICE TRANSACTIONS on Information and Systems 103, 5 (2020), 1168–1172.

  • [22] Intel. 2022. Migration from Direct-Attached Intel Optane Persistent Memory to CXL-Attached Memory. https://www.intel.com/content/dam/www/centrallibraries/us/en/documents/2022-11/optane-pmem-to-cxl-tech-brief.pdf. [Online].

  • [23] Intel. 2023. Intel Developer Cloud. https://www.intel.com/content/www/us/en/ developer/tools/devcloud/overview.html. [Online].

  • [24] Intel. 2023. Intel® FPGA Compute Express Link (CXL) IP. https://www.intel.com/content/www/us/en/products/details/fpga/intellectualproperty/interface-protocols/cxl-ip.html. [Online].

  • [25] Intel. 2023. Intel® FPGA Compute Express Link (CXL) IP. https://www.intel.com/content/www/us/en/products/details/fpga/intellectualproperty/interface-protocols/cxl-ip.html. [Online].

  • [26] Joseph Izraelevitz, Hammurabi Mendes, and Michael L Scott. 2016. Linearizability of persistent memory objects under a full-system-crash failure model. In International Symposium on Distributed Computing. Springer, 313–327.

  • [27] Joseph Izraelevitz, Jian Yang, Lu Zhang, Juno Kim, Xiao Liu, Amirsaman Memaripour, Yun Joon Soh, Zixuan Wang, Yi Xu, Subramanya R Dulloor, et al. 2019. Basic performance measurements of the intel optane DC persistent memory module. arXiv preprint arXiv:1903.05714 (2019).

  • [28] Hongshin Jun, Jinhee Cho, Kangseol Lee, Ho-Young Son, Kwiwook Kim, Hanho Jin, and Keith Kim. 2017. Hbm (high bandwidth memory) dram technology and architecture. In 2017 IEEE International Memory Workshop (IMW). IEEE, 1–4.

  • [29] Hongshin Jun, Sangkyun Nam, Hanho Jin, Jong-Chern Lee, Yong Jae Park, and Jae Jin Lee. 2016. High-bandwidth memory (HBM) test challenges and solutions. IEEE Design & Test 34, 1 (2016), 16–25.

  • [30] Rajat Kateja, Anirudh Badam, Sriram Govindan, Bikash Sharma, and Greg Ganger. 2017. Viyojit: Decoupling battery and DRAM capacities for battery-backed DRAM. ACM SIGARCH Computer Architecture News 45, 2 (2017), 613–626.

  • [31] Awais Khan, Hyogi Sim, Sudharshan S Vazhkudai, Jinsuk Ma, Myeong-Hoon Oh, and Youngjae Kim. 2020. Persistent memory object storage and indexing for scientific computing. In 2020 IEEE/ACM Workshop on Memory Centric High Performance Computing (MCHPC). IEEE, 1–9.

  • [32] Peter M Kogge and William J Dally. 2022. Frontier vs the Exascale Report: Why so long? and Are We Really There Yet?. In 2022 IEEE/ACM International Workshop on Performance Modeling, Benchmarking and Simulation of High Performance Computer Systems (PMBS). IEEE, 26–35.

  • [33] Benjamin C Lee, Engin Ipek, Onur Mutlu, and Doug Burger. 2010. Phase change memory architecture and the quest for scalability. Commun. ACM 53, 7 (2010), 99–106.

  • [34] Donghun Lee, Thomas Willhalm, Minseon Ahn, Suprasad Mutalik Desai, Daniel Booss, Navneet Singh, Daniel Ritter, Jungmin Kim, and Oliver Rebholz. 2023. Elastic Use of Far Memory for In-Memory Database Management Systems. In Proceedings of the 19th International Workshop on Data Management on New Hardware. 35–43.

  • [35] Jiuxing Liu, Jiesheng Wu, Sushmitha P Kini, Pete Wyckoff, and Dhabaleswar K Panda. 2003. High performance RDMA-based MPI implementation over InfiniBand. In Proceedings of the 17th annual international conference on Supercomputing. 295–304.

  • [36] Ming Liu. 2023. Fabric-Centric Computing. In Proceedings of the 19th Workshop on Hot Topics in Operating Systems. 118–126.

  • [37] Glenn K Lockwood, Damian Hazen, Quincey Koziol, R Shane Canon, Katie Antypas, Jan Balewski, Nicholas Balthaser, Wahid Bhimji, James Botts, Jeff Broughton, et al. 2023. Storage 2020: A vision for the future of hpc storage. (2023).

  • [38] Luke Logan, Jay Lofstead, Xian-He Sun, and Anthony Kougkas. 2023. An Evaluation of DAOS for Simulation and Deep Learning HPC Workloads. In Proceedings of the 3rd Workshop on Challenges and Opportunities of Efficient and Performant Storage Systems. 9–16.

  • [39] Krishna T Malladi, Manu Awasthi, and Hongzhong Zheng. 2016. DRAMPersist:Making DRAM Systems Persistent. In Proceedings of the Second International Symposium on Memory Systems. 94–95.

  • [40] John D. McCalpin. 1991-2007. STREAM: Sustainable Memory Bandwidth in High Performance Computers. Technical Report. University of Virginia, Charlottesville, Virginia. http://www.cs.virginia.edu/stream/ A continually updated technical report. http://www.cs.virginia.edu/stream/.

  • [41] John D. McCalpin. 1995. Memory Bandwidth and Machine Balance in CurrentHigh Performance Computers. IEEE Computer Society Technical Committee on Computer Architecture (TCCA) Newsletter (Dec. 1995), 19–25.

  • [42] John D. McCalpin. 1995. STREAM Benchmark. https://www.cs.virginia.edu/ stream/. [Online].

  • [43] John D McCalpin. 1995. Stream benchmark. Link: www. cs. virginia. edu/stream/ref. html# what 22, 7 (1995).

  • [44] John D. McCalpin. 2023. Bandwidth Limits in the Intel Xeon Max (Sapphire Rapids with HBM) Processors. In ISC 2023 IXPUG Workshop. 1–24.

  • [45] Sally A McKee. 2004. Reflections on the memory wall. In Proceedings of the 1st conference on Computing frontiers. 162.

  • [46] George Michelogiannakis, Yehia Arafa, Brandon Cook, Liang Yuan Dai, Abdel Hameed Badawy, Madeleine Glick, Yuyang Wang, Keren Bergman, and John Shalf. 2023. Efficient Intra-Rack Resource Disaggregation for HPC Using CoPackaged DWDM Photonics. arXiv preprint arXiv:2301.03592 (2023).

  • [47] George Michelogiannakis, Benjamin Klenk, Brandon Cook, Min Yee Teh, Madeleine Glick, Larry Dennison, Keren Bergman, and John Shalf. 2022. A case for intra-rack resource disaggregation in HPC. ACM Transactions on Architecture and Code Optimization (TACO) 19, 2 (2022), 1–26.

  • [48] Vladimir Mironov, Igor Chernykh, Igor Kulikov, Alexander Moskovsky, Evgeny Epifanovsky, and Andrey Kudryavtsev. 2019. Performance evaluation of the intel optane dc memory with scientific benchmarks. In 2019 IEEE/ACM Workshop on Memory Centric High Performance Computing (MCHPC). IEEE, 1–6.

  • [49] Onur Mutlu. 2013. Memory scaling: A systems architecture perspective. In 2013 5th IEEE International Memory Workshop. IEEE, 21–25.

  • [50] Dushyanth Narayanan and Orion Hodson. 2012. Whole-system persistence. In Proceedings of the seventeenth international conference on Architectural Support for Programming Languages and Operating Systems. 401–410.

  • [51] Kevin Huang Nathan Pham. 2019. Analyzing the Performance of Intel Optane Persistent Memory 200 Series in Memory Mode with Lenovo ThinkSystem Servers.

  • [52] Samsung Newsroom. 2022. Samsung Electronics Introduces Industry’s First 512GB CXL Memory Module. https://news.samsung.com/global/samsung-electronicsintroduces-industrys-first-512gb-cxl-memory-module

  • [53] SK Hynix Newsroom. 2022. SK hynix Develops DDR5 DRAM CXLTM Memory to Expand the CXL Memory Ecosystem. https://news.skhynix.com/sk-hynixdevelops-ddr5-dram-cxltm-memory-to-expand-the-cxl-memory-ecosystem/ [54] Rotem Industrial Park. 2019. NegevHPC Project. https://www.negevhpc.com. [Online].

  • [55] Onkar Patil, Latchesar Ionkov, Jason Lee, Frank Mueller, and Michael Lang. 2019. Performance characterization of a dram-nvm hybrid memory architecture for hpc applications using intel optane dc persistent memory modules. In Proceedings of the International Symposium on Memory Systems. 288–303.

  • [56] Ivy Peng, Ian Karlin, Maya Gokhale, Kathleen Shoga, Matthew Legendre, andTodd Gamblin. 2021. A holistic view of memory utilization on HPC systems: Current and future trends. In The International Symposium on Memory Systems. 1–11.

  • [57] Ivy Peng, Roger Pearce, and Maya Gokhale. 2020. On the memory underutilization: Exploring disaggregated memory on hpc systems. In 2020 IEEE 32nd International Symposium on Computer Architecture and High Performance Computing (SBAC-PAD). IEEE, 183–190.

  • [58] Milan Radulovic, Darko Zivanovic, Daniel Ruiz, Bronis R de Supinski, Sally A McKee, Petar Radojković, and Eduard Ayguadé. 2015. Another trip to the wall: How much will stacked dram benefit hpc?. In Proceedings of the 2015 International Symposium on Memory Systems. 31–36.

  • [59] Sadhana Rai and Basavaraj Talawar. 2023. Nonvolatile Memory Technologies: Characteristics, Deployment, and Research Challenges. Frontiers of Quality Electronic Design (QED) AI, IoT and Hardware Security (2023), 137–173.

  • [60] Daniel Reed, Dennis Gannon, and Jack Dongarra. 2022. Reinventing high performance computing: challenges and opportunities. arXiv preprint arXiv:2203.02544 (2022).

  • [61] Chaoyi Ruan, Yingqiang Zhang, Chao Bi, Xiaosong Ma, Hao Chen, Feifei Li, Xinjun Yang, Cheng Li, Ashraf Aboulnaga, and Yinlong Xu. 2023. Persistent Memory Disaggregation for Cloud-Native Relational Databases. In Proceedings of the 28th ACM International Conference on Architectural Support for Programming Languages and Operating Systems, Volume 3. 498–512.

  • [62] Andy Rudoff. 2017. Persistent memory: The value to hpc and the challenges. In Proceedings of the Workshop on memory centric programming for hpc. 7–10.

  • [63] Arthur Sainio et al. 2016. NVDIMM: changes are here so what’s next. Memory Computing Summit (2016).

  • [64] Steve Scargall. 2020. Programming Persistent Memory: A Comprehensive Guide for Developers. (2020).

  • [65] Steve Scargall and Steve Scargall. 2020. libpmemobj: A Native Transactional Object Store. Programming Persistent Memory: A Comprehensive Guide for Developers (2020), 81–109.

  • [66] Debendra Das Sharma, Robert Blankenship, and Daniel S Berger. 2023. An Introduction to the Compute Express Link (CXL) Interconnect. arXiv preprint arXiv:2306.11227 (2023).

  • [67] Galen M Shipman, Sriram Swaminarayan, Gary Grider, Jim Lujan, and R Joseph Zerr. 2022. Early Performance Results on 4th Gen Intel (R) Xeon (R) Scalable Processors with DDR and Intel (R) Xeon (R) processors, codenamed Sapphire Rapids with HBM. arXiv preprint arXiv:2211.05712 (2022).

  • [68] Montage Technology. 2022. Montage Technology Delivers the World’s First CXL™ Memory eXpander Controller. https://www.montage-tech.com/Press_Releases/20220506

  • [69] TB Tristian and L Travis. 2019. Analyzing the performance of Intel Optane DC persistent memory in app direct mode in Lenovo ThinkSystem servers.

  • [70] Jacob Wahlgren, Maya Gokhale, and Ivy B Peng. 2022. Evaluating Emerging CXL-enabled Memory Pooling for HPC Systems. In 2022 IEEE/ACM Workshop on Memory Centric High Performance Computing (MCHPC). IEEE, 11–20.

  • [71] Ying Wang, Wen-Qing Jia, De-Jun Jiang, and Jin Xiong. 2023. A Survey of NonVolatile Main Memory File Systems. Journal of Computer Science and Technology 38, 2 (2023), 348–372.

  • [72] Michèle Weiland, Holger Brunst, Tiago Quintino, Nick Johnson, Olivier Iffrig, Simon Smart, Christian Herold, Antonino Bonanni, Adrian Jackson, and Mark Parsons. 2019. An early evaluation of intel’s optane dc persistent memory module and its impact on high-performance scientific applications. In Proceedings of the international conference for high performance computing, networking, storage and analysis. 1–19.

继续滑动看下一个
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存