1. 内存资源利用不足与性能瓶颈:传统数据中心面临内存孤岛和数据溢出问题,导致内存资源浪费和性能降低,难以满足AI和大数据应用需求。
2. 分布式系统的数据传输开销:节点间的网络传输导致数据复制和序列化开销,增加了延迟并降低了分布式计算的效率。
3. 内存解耦的高效管理需求:为支持AI模型,需要研究分解内存的动态分配、近数据处理和遥测功能,以优化资源利用率和系统性能。
场景对内存带宽和容量的需求不断增大
随着CPU核心数量的增加,需要持续提升内存带宽和容量。
这些需求与平台供应能力之间的差距正在扩大。
CXL(Compute Express Link)提供了突破物理限制的新机会,支持高效的内存解耦。
在CXL之前Optane是市场热切关注的内存扩展方案,为什么Optane会退出而CXL成为统一的事实?
Optane(英特尔开发的持久性内存技术)在一些方面不如CXL方案,导致它逐渐被淘汰。以下是Optane相对于CXL的劣势以及其逐步被市场淘汰的原因:
1. 架构灵活性不足
2. 性能和带宽瓶颈
3. 扩展性和灵活性
4. 市场和生态系统支持
5. 成本与性价比
Optane的劣势主要体现在性能、灵活性、扩展性和成本上,而CXL作为一种开放、通用的内存扩展标准,克服了这些问题。CXL不仅能够提供更好的性能和更低的延迟,还允许更灵活的内存池化和共享,符合现代数据中心和云计算对灵活性和扩展性的要求。这些因素使得CXL逐渐成为主流解决方案,而Optane则因其架构局限性和市场需求不足而被逐步淘汰。
挑战1:内存孤岛和数据溢出
计算集群中每个节点的内存利用率会随时间而变化。
每个节点中的未使用内存无法被其他节点利用,导致内存孤岛和数据溢出。
图示说明:
左侧的示例显示了内存未充分利用的情况,导致了内存孤岛(Memory Stranding),这是由于各虚拟机(VM)分配的内存和实际需求不匹配,部分内存被闲置而浪费。
右侧的示例展示了数据溢出(Data Spill),即当内存不够时,需要将部分数据交换到存储中,导致存储交换和性能下降。
挑战2:数据传输开销和数据复制
在分布式计算系统中,远程节点之间存在基于网络的数据传输开销(P2P效率不高)。
节点间共享数据的复制会增加本地内存压力。
图示说明:
左侧的节点结构显示了应用程序(App)和本地DRAM存储的基本配置。
在分布式系统中,数据在不同节点之间的传输需要通过网络进行,导致序列化和反序列化开销(Serialization & Deserialization)。
此外,为了确保每个节点都有所需的共享数据,通常会进行数据复制(Data Duplication),这进一步加剧了内存使用压力和性能瓶颈。
支持通过CXL解耦内存系统实现内存池化和共享
内存池化:通过节点间共享内存资源,缓解内存孤岛和数据溢出问题。
内存共享:通过节点间数据共享,消除数据传输开销和数据复制问题。
图示说明:
内存池化(Memory Pooling):图中展示了不同节点(Node 1、Node 2、Node 3、Node 4)可以根据各自的内存使用情况,从CXL内存池中动态分配内存资源。这种方式使各节点可以灵活使用内存资源,从而避免了因资源不足或过剩而导致的浪费。
内存共享(Memory Sharing):在内存共享方案中,数据对象可以在节点间实现零拷贝共享(Zero-Copy),如图中的“共享对象”(Shared Object 1、Shared Object 2等)。这种共享机制消除了数据传输的需求,同时减少了本地数据复制压力。
构建了一个Niagara软硬件研究平台,这是一种基于FPGA的MH-SLD(?)类型CXL解耦内存原型,用于内存池化和共享的使用探索。
2U内存设备,可以连接多达8个CXL主机服务器(不需要CXL交换机)。
支持多达4通道的DDR4-DIMM(最大1TB)。
支持CXL规范3.1中定义的DCD(动态容量设备)功能。
图示说明:
左侧图展示了Niagara平台架构:
各主机(Host)包含虚拟机(VM)、容器(Container)和原生进程(Native Process)等工作负载。
主机操作系统中包含DCD管理器(DCD Manager),其中有DCD-CXL驱动和内存使用监视器。
内存管理子系统包括本地DRAM(固定大小)和CXL内存(与Niagara一起可动态调整)。
中间图为CXL分解内存系统的结构,显示了多个主机通过CXL接口连接到一个池化的内存管理器和内存控制器,实现共享内存资源。
右侧图为实际设备照片,展示了一个机架级系统,其中包含多个服务器和Niagara设备。
MH (Memory Heterogeneous) :代表“异构内存”,意指系统中可以存在多种不同类型的内存,比如DRAM、CXL内存、Optane等。这种异构性允许系统根据工作负载需求灵活选择或组合不同的内存类型,以实现最佳性能和资源利用。 SLD (Software-Defined Logical Device) :代表“软件定义的逻辑设备”,意味着内存资源的分配和管理是由软件控制的,而不是通过固定硬件分配。通过软件定义,平台能够动态分配内存容量、调整优先级,并在多个节点间实现资源共享。
DCD(Dynamic Capacity Device):这是CXL规范3.1中定义的一种功能,允许内存容量动态调整。通过DCD,平台可以根据实际内存需求为不同服务器分配或释放内存资源。这在动态工作负载的环境中尤为重要,能够提高内存的利用率,减少闲置和浪费。
案例1:内存池化(与MemVerge合作)
Niagara可以在不重置的情况下,为每个节点动态分配/释放分解内存资源。
提升了使用CXL分解内存系统的内存利用率和性能。
图示说明:
左侧图展示了在虚拟机(VM)运行过程中,CXL内存池的动态分配流程。
起初,主机有可用的CXL池化内存。
随着需求的增加,主机从CXL池中分配了部分内存供工作负载使用。
这种分配过程不会中断工作负载的执行,避免了传统内存管理中可能的重置或中断问题。
右图为数据在DRAM上溢出的测试数据,与溢出到SSD(swap)相比,基于CXL的扩展内存,将数据溢出到Niagara系统的性能比传统的SSD溢出方案快了2.5倍,说明了CXL内存系统在处理数据溢出和内存池化上的显著优势。
案例2:内存共享(与MemVerge合作)
远程对象访问时,无需再进行对象序列化和通过网络传输。
不再需要在不同节点上复制对象,零拷贝(zero copy)实现数据共享。
图示说明:
左侧图展示了使用CXL共享内存的Ray系统(一个用于AI/ML的分布式计算框架)架构。
每个主机(Host 1和Host 2)中运行Ray的工作单元(Worker),并包含全局对象存储(Global Object Store)。
通过CXL共享内存,所有主机可以直接访问共享对象,而不需要通过网络传输或序列化。
这种架构使得数据对象在节点间实现了零拷贝共享,降低了内存和网络开销。
右侧图为性能测试结果:
在Ray Shuffle基准测试中,使用Niagara(基于CXL共享内存)的Ray系统性能比原生Ray提升了最多5.9倍。
基于内存解耦的AI应用内存子系统架构研究
为AI应用(如LLM(大型语言模型)和DLRM(深度学习推荐模型))提供系统性优化。
针对分解内存高效使用的增值功能研究
近数据处理(Near Data Processing)
遥测(Telemetry):包括热度追踪(Hotness Tracking)、平均延迟和吞吐量监控。