首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >持久内存挑战与应对:VAST vs MemVerge

持久内存挑战与应对:VAST vs MemVerge

作者头像
数据存储前沿技术
发布2025-06-15 11:55:41
发布2025-06-15 11:55:41
2960
举报

全文概览

想象一下,应用程序启动不再需要漫长等待,数据处理速度飙升至前所未有的水平。这正是持久内存(PMEM)的魅力所在,它模糊了内存与存储的界限,带来了字节级访问的低延迟和数据持久性。然而,这种革命性的技术并非没有挑战:如何确保数据真正持久化?如何在高并发环境下保证数据一致性?内存泄漏为何会变得“持久”?这些问题让PMEM的编程和应用变得复杂。

面对这些挑战,业界涌现出不同的解决方案。例如,VAST Data在其创新的分解式架构中巧妙地利用存储级内存(SCM)来应对;而Compute Express Link(CXL)标准则为PMEM的集成开辟了新途径,三星和MemVerge等厂商正基于CXL提供软硬件结合的方案。

本文将深入探讨这些不同的技术路径,分析它们如何各自应对PMEM编程的固有难题。VAST Data是如何通过系统内部设计抽象掉PMEM的复杂性?CXL如何标准化PMEM访问,又带来了哪些新的考量?三星的CXL内存模块和MemVerge的软件定义内存方案,又分别提供了怎样的抽象和价值?阅读本文,你将了解这些前沿技术如何重塑数据中心架构,以及它们在解决持久内存挑战上的独特策略。

阅读收获

  • 理解持久内存(PMEM)的核心价值及其在数据持久性、一致性、内存泄漏等方面的关键编程挑战。
  • 掌握 VAST Data 如何在其分解式架构中利用 SCM 作为内部组件,通过系统级设计有效抽象并解决 PMEM 的复杂性。
  • 了解 Compute Express Link (CXL) 如何标准化 PMEM 的集成,以及三星 CMM-H 等硬件设备和 MemVerge Memory Machine 等软件方案如何在此基础上提供不同层次的抽象,简化 PMEM 的使用。
  • 对比分析 VAST SCM 与 CXL PMEM 解决方案在应对 PMEM 挑战上的不同策略、性能特点及适用场景。

图片
图片

引言:持久内存编程的概览

持久内存 (PMEM) 的定义及其吸引力

持久内存 (Persistent Memory, PMEM),作为一种位于动态随机存取内存 (DRAM) 和传统存储之间的技术层级,提供了字节级可寻址、接近 DRAM 的低延迟以及数据持久性的特性。其核心价值在于,通过将工作数据集更靠近中央处理器 (CPU) 并减少输入/输出 (I/O) 瓶颈来加速应用程序。

“启动应用程序时,必须先将数据从存储读取到易失性内存中...这可能需要几秒钟、几分钟或几小时”,PMEM 的引入旨在显著缩短此类应用程序的启动时间。

PMEM 编程挑战回顾

尽管 PMEM 带来了性能上的巨大潜力,但也引入了传统易失性内存编程模型中不存在的新问题。这些挑战主要包括:

  1. 数据持久性: 确保写入的数据真正持久化,这涉及到 CPU 缓存的刷新、处理乱序执行以及显式刷新操作的必要性。
  2. 数据一致性: 保证更新操作的原子性,特别是对于跨越多个字(word)的数据结构。
  3. 内存泄漏: PMEM 中的内存泄漏具有持久性,重启系统无法清除。
  4. 字节级访问: 虽然提供了灵活性,但也对数据结构设计和访问模式提出了新的考量。
  5. 错误处理: 应用程序可能需要直接处理来自 PMEM 介质的硬件错误。

报告目标与结构

本报告旨在深入分析 VAST Data 基于存储级内存 (Storage Class Memory, SCM) 的架构,以及三星 (Samsung) 和 MemVerge 等供应商基于 Compute Express Link (CXL) 的 PMEM 解决方案,是如何应对上述持久内存编程挑战的。

报告将依次探讨 VAST Data 的方法、CXL 内存扩展带来的问题与机遇、相关厂商的技术实现,并进行对比分析,最后总结并展望未来趋势。

VAST Data:在分解式架构中利用 SCM 应对持久内存挑战

VAST Data 的架构设计,特别是其对 SCM 的战略性运用,为理解如何在一个大规模存储系统中管理和利用持久内存特性提供了重要的实践案例。

VAST Data 的分解式共享一切 (DASE) 架构及 SCM 的战略角色

VAST Data 的核心是其分解式共享一切 (Disaggregated Shared-Everything, DASE) 架构。该架构将计算资源 (CNodes) 与存储资源 (DNodes) 分离,同时允许所有 CNodes 共享访问全部数据和元数据。这种设计使得计算和存储资源可以独立扩展,提供了极大的灵活性和可扩展性。

在这一架构中,SCM(例如 Intel 3D XPoint)扮演着至关重要的角色:

  • 高性能写缓冲: SCM 被用作一个大型的持久性写缓冲层。所有数据在写入 QLC NAND 闪存之前,会先写入 SCM 1。这对于提升写入性能和保护 QLC NAND 的耐久性至关重要。
  • 元数据存储: SCM 同时也被用作元数据存储,存放如 V-Trees 这样的元数据结构 1。

引用相关资料:“VAST 系统通过使用存储级内存 (SCM) 作为写入 QLC 大块数据之前的大型持久缓冲区来克服这个问题。... SCM 也被用作元数据存储。”。并且,“VAST 存储完全基于非易失性技术设计——用于缓存和元数据的超高速 SCM 内存以及用于数据存储的 QLC 芯片。”。

VAST Data 的架构从根本上为最终用户应用程序抽象了原始 PMEM 的编程复杂性。应用程序通过标准存储协议(如 NFS、S3、SMB、SQL、块协议、Kafka)与 VAST Universal Storage 交互,而不是直接操作 SCM。这意味着,对于 VAST Data 的用户而言,PMEM 的挑战主要由 VAST 的软件和架构在内部解决,应用程序开发人员无需直接处理复杂的 PMEM 底层细节。

VAST 架构内的数据持久性保障

VAST Data 通过其精心设计的写路径来确保数据的持久性:

  1. 初始写入 SCM: 所有传入的写操作首先会进入 SCM (如 3D XPoint) 1。在确认写入之前,数据可能会在 SCM 中进行三副本存储以增强数据韧性。
  2. SCM 分桶策略: SCM 内部被划分为多个“桶 (buckets)”,根据数据的预期生命周期或易变性对数据进行分组。这种被称为“Foresight”的特性有助于优化数据放置和 QLC 的管理效率。
  3. 数据落盘至 QLC: 数据会保留在 SCM 桶中,直到桶内数据量足以形成一个大的连续条带(例如 1MB 的块,以 1GB 的条带进行擦除),然后一次性写入 QLC NAND SSD。这种方式可以最大限度地减少对 QLC 的写放大效应。
  4. 强制刷新至 NAND 介质: VAST 会强制 NAND SSD 将其内部缓存刷新到物理 NAND 介质,以确保掉电保护,之后才会从 SCM 桶中删除相应数据。

这种机制确保了数据的耐用性:“一旦数据写入 3D XPoint,它随后可以被写入 QLC SSD”。并且,“数据最初被写入持久性的、高性能的 3D XPoint”。因此,“在发生电源故障时,不会有数据丢失”。

VAST Data 的写路径可以用以下流程图表示:

图片
图片

VAST 利用 SCM 作为持久性缓冲区,并结合其向 QLC 大块写入的策略,在系统内部处理了“持久化前需刷新”以及“写入顺序”的问题。应用程序可以从 SCM 获得快速的写入确认。持久内存的一个核心挑战是“刷新之前,不能保证存储区是持久的”。VAST 首先将数据写入本身就是持久介质的 SCM,并迅速给予确认。随后数据到 QLC 的迁移,包括刷新 QLC 缓存,是 VAST 内部的异步过程。至于“CPU 具有无序 CPU 执行和缓存访问/刷新”可能影响持久性顺序的问题,则由 VAST 内部的写入逻辑和 SCM 的特性共同管理。因此,VAST 有效地利用 SCM 的持久性来提供低延迟确认,同时确保数据最终有序地持久化到 QLC,将这些底层的 CPU/缓存刷新问题从存储消费者那里抽象掉了。

dave's point

VAST 将SCM降维成持久化存储介质,而不是作为高速缓存(DRAM)来使用,因此规避了大量缓存系统的设计问题。

VAST 中的数据一致性保障

VAST Data 在其 Element Store 和 DataSpace 中实现了更高层次的一致性机制。

  • 元数据一致性: 元数据存储在 SCM 中,并由 VAST 的软件进行管理,确保变更得到一致的反映。
  • 全局访问的严格一致性:
    • “VAST 的全局命名空间是严格一致的”。
    • 它使用读写租约机制:“在任何给定时间,全局命名空间中只有一个集群持有某个元素的写租约。” 所有写操作都在持有写租约的集群上处理。
    • 这确保了“每个用户始终看到最新版本”,解决了多个不同位置的客户端同时写入同一文件时可能出现的问题。
  • VAST DataSpace: 该技术将锁管理分散到元素级别(文件、对象、表),允许执行事务的 VAST 集群持有锁。这在保证一致性的同时,实现了本地写入性能。

VAST 并非仅仅依赖 SCM 的硬件原子性原语来实现整体数据一致性,而是实现了一套复杂的、软件定义的一致性模型(如租约、分布式锁),以适应其分布式共享一切架构的需求。

持久内存的一个挑战是“x86 上任何大于 8 字节的内容都不是 powerfail atomic”。VAST 处理的是文件、对象等远超 8 字节的大型数据结构。其一致性机制(租约、DataSpace 锁)在更高的语义层面运作。

SCM 在此处的角色是为 VAST 的软件提供一个快速、持久的介质,以便高效地实现这些一致性协议(例如,快速持久地更新租约信息或锁状态)。因此,VAST 利用 SCM 的速度和持久性来构建强大、可扩展的软件一致性,而不是受限于或直接向应用程序暴露 PMEM 的硬件级原子性约束。

SCM 特性管理与价值最大化

VAST Data 通过多种方式管理 SCM 的特性并最大化其价值:

  • QLC 耐久性优化: SCM 写缓冲使得 VAST 能够以 1MB 的大块、连续条带写入数据,并以 1GB 的条带删除数据,这与 QLC 的擦除块特性相符,显著减少了写放大 1。如资料所述:“VAST 以 1MB 的块写入数据...以填充闪存页面并防止小块写入可能导致的写放大”。
  • Foresight 数据放置: VAST 根据数据的预测保留时间将数据分组到不同的条带中,通过避免将生命周期差异大的数据混合在同一条带中,进一步优化了 QLC 的耐久性。
  • 持久性内存泄漏(内部考量):
    • 用户问题中关于“持久性存储的内存泄漏是持久性的”担忧,对于任何直接管理 PMEM 的系统都是合理的。
    • 然而,对于 VAST 而言,SCM 是一个内部组件。SCM 中的任何“泄漏”都将是 VAST 软件的缺陷,影响的是系统自身的资源,而非传统意义上应用程序分配 PMEM 后忘记释放所导致的泄漏。应用程序开发者在使用 VAST 时,并不直接分配或释放 SCM。VAST 的内部软件负责管理 SCM 以用于缓冲和元数据。如果 VAST 软件未能回收 SCM 空间,这是一个内部系统问题。重启 VAST CNodes/DNodes 或系统级恢复机制将负责 SCM 状态的完整性。因此,VAST 的系统软件必须在管理 SCM 分配和回收方面具有鲁棒性,“持久性泄漏”的问题从最终用户应用程序转移到了存储系统供应商。
  • 字节级访问(内部优化): 尽管 SCM 支持字节级访问,VAST 向 QLC 的主要数据流是基于块的。但是,SCM 的字节可寻址性对于高效管理其细粒度的元数据结构(如 V-Trees)至关重要。
  • 错误处理(系统韧性): VAST 的 DASE 架构专为高可用性和韧性而设计,能够承受多个设备故障并进行自我修复。这包括在系统层面处理来自 SCM 或 QLC 设备的错误,并将这些错误从应用程序中抽象出来。“该系统的设计方式使得任何组件的故障都不会导致整个系统可用性的失败”。

通过这些机制,SCM 为 VAST Data 提供了低写入延迟和高性能,并通过缓解 QLC 的耐久性限制,使得采用高密度、高成本效益的 QLC 成为可能。

CXL 内存扩展:新领域与熟悉的挑战

Compute Express Link (CXL) 作为一种新兴的互联标准,为内存扩展和持久内存的集成开辟了新的可能性,但同时也可能带来与传统 PMEM 类似的编程挑战。

Compute Express Link (CXL) 概述

CXL 是一种开放的、缓存一致性的互连标准,构建于 PCIe 物理层之上。它用于连接 CPU 与内存及其他设备。CXL 的关键协议包括:

  • CXL.io: 负责发现、配置和 I/O 操作,功能类似于 PCIe。
  • CXL.cache: 允许连接的设备(如加速器)一致性地缓存主机 CPU 的内存。它采用 MESI 协议实现硬件级缓存一致性。
  • CXL.mem: 允许主机 CPU 使用加载/存储指令访问连接在 CXL 设备上的内存,使其表现为系统内存(例如,作为一个 NUMA 节点)。

CXL 定义了三种设备类型:

  • Type 1 设备: 不带本地内存的加速器(使用 CXL.cache 和 CXL.io)。
  • Type 2 设备: 带有自有内存的加速器(使用 CXL.cache、CXL.mem 和 CXL.io)。
  • Type 3 设备: 内存扩展设备(使用 CXL.mem 和 CXL.io),这与 PMEM 的讨论最为相关。

CXL 对持久内存的原生支持

CXL 2.0 规范引入了对持久内存的标准化支持。资料显示:“2020 年 11 月发布的 CXL 2.0 规范增加了新特性——包括...对持久内存的支持”。CXL 2.0 提供了持久内存接口的标准化管理,这包括对诸如全局持久刷新 (Global Persistent Flush, GPF) 等功能的支持,三星的 CMM-H 产品就提及了这一点。CXL PMEM 可以作为无 CPU 的 NUMA 节点呈现给主机,通过加载/存储指令进行访问。

在 CXL 背景下重新审视 PMEM 编程挑战

尽管 CXL 为 PMEM 的集成提供了标准化的协议和硬件通路,但如果开发者在没有充分抽象的情况下与 CXL PMEM 进行底层交互,许多原始的 PMEM 编程挑战(如数据持久性细节、复杂操作的一致性、泄漏、错误处理)仍可能重现。

CXL 使 PMEM 能够以缓存一致的方式被连接和访问。然而,用户问题中列出的 PMEM 挑战关乎管理 PMEM 的状态和行为。CXL.mem 提供了访问途径,但操作系统、驱动程序以及最终的应用程序或中间件仍需负责正确使用它,以确保持久性、超越硬件原子性的一致性等。

用户最初的担忧,“为一个服务器平台开发的应用程序可能无法移植到其他平台或 CPU 代系”,在应用程序对 CXL PMEM 行为做出特定假设(而这些假设未被高级操作系统抽象所覆盖)的情况下,仍然可能成立。

因此,虽然 CXL 是 PMEM 集成标准化方面的一大进步,但它并不能自动使 PMEM 编程变得简单。软件层(操作系统、库、供应商解决方案)对于简化至关重要。

  1. 数据持久性:
    • CXL 机制: CXL 标准定义了如何为 PMEM 设备命令刷新操作并确认。CXL 2.0 GPF 便是一个例子,由主机 CPU 或操作系统发起。
    • 开发者责任: 如果应用程序内存映射了 CXL PMEM,它可能仍需确保数据从 CPU 缓存通过 CXL 互连刷新到 CXL 设备上的持久域,这与传统的 PMEM 编程类似。“无序 CPU 执行和缓存访问/刷新”的问题依然存在。
  2. 数据一致性:
    • CXL.cache 一致性: CXL.cache 使用 MESI 协议确保一致性,这意味着多个代理(agent)对同一缓存行有一致的视图,有助于共享访问。“CXL.cache 允许独立的 GPU 和 ASIC 等设备像 CPU 自身多核系统中的核心一样缓存 CPU 内存。”。
    • 原子性: CXL 本身并未扩展超越 CPU/内存控制器架构所支持的硬件原子写能力(例如 x86 上的 8 字节)。对于 CXL PMEM 上更大的原子更新,应用程序或库仍需要基于软件的事务机制/日志记录,正如用户问题所述:“由软件来实现一致性所需的任何事务/日志记录/恢复”。阿里云的例子提到使用 RDMA/CXL 来“确保事务一致性”和“通过 RDMA 内存融合实现跨节点事务的原子性”,以及针对 DDL 的“多阶段提交协议”。这突出表明,更高级别的软件协议是构建在 CXL 之上以实现更广泛一致性的。
  3. 内存泄漏:
    • 如果 CXL PMEM 直接暴露给应用程序(例如,通过 mmap),则“持久性存储的内存泄漏是持久性的”风险与传统 PMEM 完全相同。操作系统或管理层需要跟踪 PMEM 的分配。
  4. 字节级访问:
    • CXL.mem 允许对 CXL 连接的内存进行加载/存储访问,固有地支持字节级粒度。这与 PMEM 的特性“应用程序开发人员可以根据应用程序要求在字节级别进行读取和写入”相符。
  5. 错误处理:
    • CXL 包含错误报告机制。“CXL 2.0 规范还包括一个标准化的 Fabric 管理器。这确保了一致的配置和错误报告,从而提供无缝的用户体验”。
    • 如果 CXL 设备上的 PMEM 遇到介质问题,应用程序或系统软件将需要解释和处理这些错误。用户问题中“应用程序可能需要直接检测和处理硬件错误”的观点仍然适用。

厂商实现:通过 CXL 应对 PMEM 挑战

面对 CXL 带来的机遇与挑战,内存产品厂商正通过硬件和软件层面提供解决方案,以期简化 PMEM 的使用并克服其固有的复杂性。

三星的 CXL 内存解决方案 (例如 CMM-D, CMM-H)

三星推出了一系列基于 CXL 的内存模块,旨在扩展内存容量、带宽并引入持久性特性。

图片
图片
  • 架构概述:
    • CMM-D (DRAM): 这是一种基于 DRAM 的 CXL 内存模块,主要用于内存容量扩展和内存池化。
    • CMM-H (Hybrid): 该模块在一个 CXL Type 3 设备上集成了 DRAM(作为缓存)和 NAND 闪存(作为持久性后备存储)。如描述所述:“混合意味着 CMM-H 设备中混合了多种介质类型,特别是 DRAM 和 NAND 闪存。”。CMM-H 作为 NUMA 节点呈现给主机,旨在实现无缝集成。
  • CMM-H 的数据持久性机制:
    • 设备级管理: CMM-H 控制器负责管理其内部的 DRAM 和 NAND。
    • 持久化策略: 数据通过存储在板载 NAND 中实现持久化。“持久性特性通过将数据转储到 NAND 闪存来实现”。
    • 刷新支持: CMM-H 支持“使用 CXL 2.0 GPF(全局持久刷新)的故障时刷新能力”。这意味着设备可以确保在其 DRAM 缓存中的数据在收到特定主机命令或发生故障事件时被刷新到其内部 NAND。其“内置数据持久性,可最大限度地减少数据恢复期间的停机时间”。
  • 数据一致性与一致性保障:
    • CMM-H 依赖 CXL.mem 协议进行主机访问,并由主机 CPU 和 CXL 标准管理缓存一致性。设备本身则确保其内部 DRAM 缓存和 NAND 后备存储之间的数据完整性。
  • 性能优化:
    • DRAM 缓存: CMM-H 中的板载 DRAM 作为缓存,用于掩盖 NAND 的延迟。“CMM-H 的一个关键要素是其内置的 DRAM 缓存,旨在减轻与 NAND 闪存相关的长延迟。”。
    • 分层内存: CMM-H 可用于分层内存,热数据驻留在主机 DRAM 或 CMM-H 的 DRAM 中,冷数据则存储在 NAND 中,或者作为交换空间使用。
  • 抽象与可用性:
    • CMM-H “通过现有的 Linux 内核框架呈现大型 NUMA 节点,并能无缝集成到应用程序中,无需修改”。

三星的 CMM-H 试图在设备内部抽象管理混合 DRAM/NAND 持久内存系统的某些复杂性。原始的 PMEM(尤其是混合介质)需要复杂的主机软件来管理分层、刷新到 NAND 等操作。CMM-H 集成了控制器、DRAM 和 NAND,并以 CXL 内存设备的形式呈现给主机。它处理其 DRAM 和 NAND 之间的内部数据迁移,并响应 CXL PMEM 命令(如 GPF)。这旨在通过将管理智能嵌入 CMM-H 来简化基于 CXL 的 PMEM 的采用。主机操作系统和应用程序与一个行为更规范的“CXL PMEM 设备”交互,而不是直接管理原始闪存和 DRAM 组件以实现持久性。然而,主机仍需要具备 CXL PMEM 感知能力(例如,使用 GPF)。

MemVerge 的 Memory Machine for CXL

MemVerge 采用软件定义的方法来应对 CXL 和持久内存的挑战。

  • 软件定义方法:
    • Memory Machine 是一款软件,可将 DRAM 和 PMEM(包括 CXL 连接的内存)虚拟化为一个统一的内存池。如其所述:“Memory Machine 虚拟化 DRAM 和持久内存,以便数据可以在内存中被访问、分层、扩展和保护。”。
    • 其目标是使 PMEM 对应用程序而言如同 DRAM 一样,无需更改代码。
  • 数据分层与放置:
    • 该软件智能地将热数据移动到 DRAM“快速层”,并将温数据放置到 PMEM“持久层”(这可以是 CXL PMEM)。
    • “Memory Machine X Server Expansion 软件会告知您 CXL 内存是否适合您的应用环境,并自动将您的数据放置在正确的内存层以获得最佳性能。”。
  • 实现数据持久性与可用性(超越原始 PMEM):
    • ZeroIO™ 快照: 提供专利的内存快照技术,可实现极速的崩溃恢复(数 TB 数据秒级恢复),且无需对存储进行 I/O 操作。“为了保护大型内存爆炸半径,Memory Machine 提供内存快照和复制功能,以实现闪电般的快速崩溃恢复,且无需对存储进行 I/O。”。
    • 内存复制: 可使用 RDMA 进行低延迟复制,以实现高可用性。
    • 写时复制 (Copy-on-Write): 采用与存储系统类似的写时复制技术来实现内存快照和克隆。
  • 简化 PMEM 编程:
    • 透明访问: “无需更改应用程序即可访问持久内存。对您的应用程序来说,它就像 DRAM 一样。”。

MemVerge 的 Memory Machine 提供了一个全面的软件抽象层,直接解决了应用程序在其之上运行时面临的许多 PMEM 编程挑战(持久性、通过快照实现的一致性、通过虚拟化隐式管理的泄漏问题、错误处理抽象)。用户问题中列出的 PMEM 编程痛点,通过 Memory Machine 的内存虚拟化、数据分层以及快照和复制等数据服务得到了有效缓解。

通过管理底层的 PMEM(包括 CXL PMEM)并向应用程序呈现简化的内存模型,它使开发人员免受底层 PMEM 复杂性的困扰。例如,快照为应用程序提供了一种强大的方式来确保一致性和可恢复性,而无需手动执行刷新/屏障操作。持久性内存泄漏则在虚拟化层的内存记账范围内进行管理。因此,MemVerge 提供了一个系统级软件解决方案,旨在使 PMEM(包括 CXL 连接的 PMEM)对于许多应用程序而言像易失性 DRAM 一样易于使用,同时增加了企业级数据服务。这是一种比 CXL 本身甚至像 CMM-H 这样的设备所能单独提供的更高层次的抽象。

对比分析:VAST SCM 与 CXL PMEM 解决方案

VAST Data 将 SCM 作为其存储系统的内部组件,有效地抽象了其复杂性(文件系统层面解决问题)。而 CXL PMEM 解决方案,无论是三星的硬件还是 MemVerge 的软件,都旨在将 PMEM 更直接地集成到服务器的内存层次结构中,但为应用程序开发者提供了不同程度的抽象。

下表对这些方法在应对持久内存编程挑战方面进行了比较:

表 1:持久内存编程挑战应对方案对比:VAST SCM vs. CXL PMEM

PMEM 挑战

VAST Data (内部 SCM 使用)

CXL 原生接口

三星 CMM-H (CXL PMEM 的设备级抽象)

MemVerge Memory Machine (CXL PMEM 的软件抽象)

数据持久性 (刷新、排序)

SCM 作持久写缓冲,内部执行落盘逻辑,应用获快速确认。系统确保刷新到 QLC。

定义 PMEM 接口,如 GPF 命令。主机 OS/应用负责从 CPU 到 CXL PMEM 的刷新。应用仍需关注排序。

设备上 DRAM 缓存,NAND 后备。响应 CXL GPF。管理从其 DRAM 到 NAND 的内部刷新。简化主机刷新目标。

透明分层。对于持久层,确保数据刷新。快照提供时间点持久性。

数据一致性 (原子性、一致性)

软件定义一致性 (租约、分布式锁) 用于其分布式文件/对象系统。SCM 用于高效实现这些机制。

CXL.cache 实现硬件一致性 (MESI)。原子性受限于 CPU/硬件 (如 8 字节)。更大操作需软件实现。

依赖 CXL.cache 实现一致性。其 DRAM/NAND 间内部一致性。主机处理事务一致性。

快照提供原子、一致的时间点。软件为其虚拟化内存管理一致性。

内存泄漏 (持久性泄漏)

内部系统问题。VAST 软件管理 SCM 空间。非应用级 PMEM 泄漏。

若应用直接映射/管理 CXL PMEM,风险高。OS/分配器负责。

主机 OS/应用仍管理 CMM-H 上的分配。泄漏在主机端。

在其虚拟化池内管理内存。抽象原始分配/释放,可能减少应用级泄漏风险。

字节级访问 (利用/管理)

SCM 支持;可能用于元数据。主要数据路径到 QLC 是块级。应用看到文件/对象/块接口。

CXL.mem 允许加载/存储,使能应用的字节级访问。

通过 CXL.mem 暴露内存,主机可字节寻址。

向应用呈现内存 (可字节寻址),管理底层物理页。

错误处理 (直接硬件错误)

系统级韧性 (DASE),错误控制。从应用抽象硬件错误。

定义错误报告。主机 OS/应用可能需处理 CXL PMEM 设备错误。

设备可通过 CXL 报告错误。主机 OS/应用负责。

软件层可潜在屏蔽或管理某些错误,或向上报告。通过复制提供高可用性。

性能影响

SCM 加速写入,改善 QLC 性能/耐久性。元数据访问低延迟。

延迟高于本地 DRAM,低于 NVMe SSD。带宽取决于 PCIe 版本和宽度。

设备上 DRAM 缓存减轻 CMM-H 的 NAND 延迟。性能取决于其 DRAM 命中率。

分层旨在将热数据置于最快层 (DRAM)。性能取决于分层效果。

价值主张 / 用例适用性

用于要求严苛的文件/对象/表/块工作负载的高性能、可扩展主存储。

内存容量/带宽扩展,分层内存,支持 PMEM。

用于内存数据库、AI/ML 的具成本效益的带持久性选项的内存扩展。

无需代码更改即可为现有应用增强大内存、PMEM 能力 (快照、分层);AI/ML、HPC、内存数据库。

此表格清晰地展示了不同解决方案在应对持久内存编程挑战方面的策略差异。VAST Data 通过系统级集成将 SCM 的复杂性内部化。CXL 提供了标准化的接口,但其原生形态仍可能将一些编程负担传递给上层软件。三星的 CMM-H 在设备层面进行了一定的抽象,而 MemVerge 则通过一个全面的软件层来提供更高级别的抽象和附加功能。这种结构化的比较有助于根据具体需求和应用场景评估最合适的持久内存采用路径。

结论与未来展望

本报告分析了 VAST Data 如何在其存储系统中内部利用 SCM 来构建高性能、高韧性的解决方案,并有效地将应用程序与原始 SCM/PMEM 的编程复杂性隔离开来。同时,CXL 标准化了 PMEM 的互连方式,为内存扩展和分层提供了新的可能性,但若无适当抽象,也可能重新引入 PMEM 的编程挑战。三星(通过 CMM-H 等硬件中心型 CXL 设备)和 MemVerge(通过 Memory Machine 等软件定义解决方案)等供应商正在提供不同层次的抽象,以简化 CXL PMEM 的采用并应对其固有挑战。

SCM 和 CXL 在数据中心架构中不断演进的角色

数据中心架构正朝着内存分层和分解的方向发展,SCM 和 CXL 在其中扮演着关键角色。SCM(如 3D XPoint)在缓冲、元数据存储和专用缓存层方面持续显示其价值。CXL 则正成为实现灵活内存扩展、池化和共享的关键技术,能够同时容纳易失性 DRAM 和持久内存。“CXL 是一项十年一遇的技术,它将改变数据中心的架构。”。

技术的发展呈现出融合与专业化的趋势。PCIe 和 CXL 等技术的融合为新的内存范式奠定了基础。这种通用基础使得多样化的 PMEM 解决方案得以涌现。VAST Data 以专业化的方式将 SCM 用于其存储架构;三星则构建了专业的 CXL PMEM 硬件;MemVerge 开发了专门的软件来管理 CXL(及其他)内存。这意味着未来可能会出现一个丰富的生态系统,应用程序可以根据性能和可编程性需求,通过从高级存储系统到软件定义内存平台,再到更直接(但仍由操作系统管理)的 CXL PMEM 访问等多种方式来利用 PMEM。对于 PMEM 的使用,不会存在一种万能的解决方案。

尚存挑战与未来创新领域

尽管取得了显著进展,但在充分发挥 SCM 和 CXL PMEM 的潜力方面仍存在一些挑战和值得进一步创新的领域:

  • 软件生态系统成熟度: 操作系统和应用程序对 CXL 内存,特别是 PMEM 的感知和优化仍需加强。
  • 性能特性描述: 需要深入理解各种 CXL 拓扑和 PMEM 类型的性能影响,例如有研究指出 CXL 1.1 在 GPU 访问方面存在延迟和带宽问题。
  • 安全性: 确保共享和池化 CXL 内存资源上的数据安全至关重要。CXL 2.0 允许专有安全措施。
  • 可管理性与编排: 需要开发用于大规模管理和编排分解式 CXL 内存资源的工具,尤其是在池化环境中,例如针对动态容量设备 (DCD) 的编排器。
  • 标准化演进: CXL 规范的进一步完善(例如,CXL 3.0/3.1 支持无交换机池化和更高带宽)将继续塑造其能力。

随着这些挑战的逐步解决和技术的持续创新,持久内存和 CXL 有望在未来的计算和存储架构中发挥越来越重要的作用,为数据密集型应用带来前所未有的性能和效率。

===

Cite

  1. VAST Data Universal Storage - The Futurum Group, accessed June 12, 2025, https://futurumgroup.com/wp-content/uploads/documents/EGPR_Vast_Data-4.pdf

Notice:Human's prompt,  Datasets by Gemini-2.5-Pro-DeepResearch

#CXL内存扩展 #VAST高性能存储

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-06-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 王知鱼 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 引言:持久内存编程的概览
    • 持久内存 (PMEM) 的定义及其吸引力
    • PMEM 编程挑战回顾
    • 报告目标与结构
  • VAST Data:在分解式架构中利用 SCM 应对持久内存挑战
    • VAST Data 的分解式共享一切 (DASE) 架构及 SCM 的战略角色
    • VAST 架构内的数据持久性保障
    • VAST 中的数据一致性保障
    • SCM 特性管理与价值最大化
  • CXL 内存扩展:新领域与熟悉的挑战
    • Compute Express Link (CXL) 概述
    • CXL 对持久内存的原生支持
    • 在 CXL 背景下重新审视 PMEM 编程挑战
  • 厂商实现:通过 CXL 应对 PMEM 挑战
    • 三星的 CXL 内存解决方案 (例如 CMM-D, CMM-H)
    • MemVerge 的 Memory Machine for CXL
  • 对比分析:VAST SCM 与 CXL PMEM 解决方案
  • 结论与未来展望
    • SCM 和 CXL 在数据中心架构中不断演进的角色
    • 尚存挑战与未来创新领域
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档