- 解耦架构设计 :
提出通过CXL交换机将加速器与存储/内存设备分离,避免传统CSD和CM因硬件集成导致的量产难题。这一设计降低了设备定制化成本,提升了灵活性和可扩展性。 - 统一框架整合 :
首次将计算存储(CS)和计算内存(CM)整合到同一架构中,利用CXL的高带宽和低延迟特性,减少数据移动开销,提升系统效率。 - 定量性能分析 :
通过理论模型对比紧耦合与解耦架构的端到端延迟,表明解耦架构在性能损失可控(<20%)的前提下显著降低成本,为实际部署提供了理论支撑。
- 论文仅基于理论计算和假设分析性能,缺乏原型系统或仿真实验的验证(如实际CXL链路延迟、加速器吞吐量测试)。
- 改进:需构建实验平台(如FPGA原型或CXL仿真器),验证理论模型的准确性,尤其是大规模数据场景下的实际表现。
-
实现细节不足:
- 问题:对解耦架构的具体实现(如CXL交换机的调度算法、设备协同机制)描述模糊,未讨论潜在挑战(如通信拥塞、缓存一致性管理)。
- 改进:补充架构实现细节,例如动态资源分配策略、故障恢复机制,并分析实际部署中的工程难题。
硬件成本:DRAM成本占服务器总成本的40-50%,但其利用率低(资源闲置问题突出)
传统内存池化技术(如内存分解)因高延迟(微秒级)和依赖页错误处理,无法满足云平台性能需求。CXL(Compute Express Link)标准通过负载/存储(load/store)语义提供纳秒级远程内存访问,为高性能内存池化提供了可能。
Non-Uniform Memory Access,也就是非统一内存访问架构
NUMA主要是为了解决多处理器系统中的内存访问延迟问题。在传统的SMP(对称多处理)系统中,所有CPU共享同一个内存控制器,访问内存的时间是均匀的,但随着CPU数量增加,总线竞争会变严重
而NUMA架构将内存分布在不同的节点上,每个节点有自己的本地内存,CPU访问本地内存更快,访问远程内存则较慢。
那本地NUMA节点应该是指某个CPU所在的NUMA节点,该节点直接连接的内存就是本地内存,访问延迟低。而远程NUMA节点则属于其他CPU组,访问延迟高。论文中提到Pond系统利用CXL技术实现内存池化,同时通过zNUMA节点将池内存映射为虚拟NUMA节点,这样可以优化内存分配,减少性能损失。
- 本地NUMA节点(Local NUMA Node):每个CPU核心(或CPU插槽)直接连接的内存区域称为本地NUMA节点。访问本地内存的延迟最低(通常在几十纳秒级别)。
- 远程NUMA节点(Remote NUMA Node):其他CPU核心的内存区域称为远程NUMA节点。访问远程内存需要通过系统总线或互联协议(如CXL),延迟较高(可能增加数十到数百纳秒)
在传统的**UMA(Uniform Memory Access,统一内存访问)**架构中,所有CPU共享单一内存控制器和内存总线。随着CPU核心数量增加,总线竞争会导致性能瓶颈。NUMA通过以下方式优化:
- 分布式内存:将内存分散到多个节点,每个节点由特定的CPU直接管理。
- 降低延迟:本地内存访问更快,减少总线争用。
- 扩展性:支持更大规模的多核系统(如服务器、数据中心)
通过模拟CXL增加的额外延迟(64ns和140ns),发现不同工作负载对延迟的敏感性差异显著:
- 43%的工作负载在池内存中性能损失<5%,但21%的工作损失>25%(图4)。
- 生产负载(如Azure专有应用)因NUMA优化表现更好,仅部分受影响
-
- 机器学习预测模型:基于硬件计数器(如内存访问模式、NUMA敏感度)训练模型,提前识别对延迟不敏感的工作负载,将其分配到池内存。
- 动态分配策略:敏感型工作负载仍使用本地内存,非敏感型使用池内存,实现性能与成本的动态平衡。
- 意义 :
避免"一刀切"的池化策略,通过分类管理最大化资源利用率。
内存闲置(Memory Stranding) 是指在云服务器中,当 CPU 核心被完全分配给虚拟机(VM)后,剩余未分配的内存因无法被其他 VM 使用而浪费的现象。这种浪费源于云平台静态资源分配策略:VM 的 CPU 核心和内存通常被预分配到同一 NUMA 节点(非统一内存访问节点),导致当 CPU 核心用尽时,同一节点上的剩余内存无法跨节点共享。
- 在虚拟化环境中,"将 CPU 核心分配给 VM"是指将物理服务器上的一个或多个 CPU 核心静态绑定给某个虚拟机(VM),确保该 VM 独占这些核心的计算能力。
- 目的:通过独占分配,避免多个 VM 竞争同一 CPU 核心,从而保障性能(如低延迟、高吞吐量)和资源隔离性。
内存闲置的根源
-
硬件配置不匹配:服务器设计时按平均需求配置 DRAM 与 CPU 核心比例,但实际负载可能偏离这一比例。
-
静态绑定限制:VM 的 CPU 和内存必须绑定到同一 NUMA 节点,导致资源分配缺乏灵活性
-
传统多处理器系统(如SMP,对称多处理)中,所有CPU通过共享总线访问内存。随着CPU数量增加,总线争用会导致性能瓶颈。
-
NUMA通过将系统划分为多个节点(Node),每个节点包含部分CPU和本地内存,降低全局资源争用,提升扩展性
-
NUMA节点的组成:
- 本地内存(Local Memory):节点内部的物理内存。
- CPU核心:属于该节点的处理器。
- 远端内存(Remote Memory):其他节点的内存,通过高速互联(如AMD的Infinity Fabric、Intel的QPI)访问,但延迟高于本地内存。
访问速度差异:
- 本地内存访问:低延迟、高带宽。
- 远端内存访问:高延迟、带宽受限(可能降低性能)
- 某个CPU核心所在的NUMA节点,称为该核心的本地节点。该CPU访问本地节点的内存时速度最快。
- 重要性 :
- 进程运行时,操作系统会优先分配本地节点的内存,减少跨节点访问的延迟。
- 若进程需要跨节点访问内存(如本地节点内存不足),性能可能显著下降。
NUMA的典型应用场景
- 多路服务器:例如双路/四路服务器,每个CPU插槽对应一个NUMA节点。
- 高性能计算(HPC):需要大规模并行处理时,NUMA优化可减少内存访问延迟。
- 虚拟化与数据库:如VMware、MySQL等对内存延迟敏感的应用,需配置NUMA策略。