为了打破传统 CPU 与 GPU 之间的通信瓶颈,英伟达推出了基于硬件一致性(Hardware-Coherent)超节点平台,例如 NVIDIA GH200、GB200、GB300等。这些超节点平台通过超高速的 NVLink 芯片到芯片(C2C)互联技术,将 NVIDIA Grace CPU 与 NVIDIA Blackwell/Hopper GPU 紧密结合,真正实现了高带宽、低延迟的统一内存(Unified Memory)硬件架构。
然而,这种高带宽的物理融合在传统的操作系统内存分配机制下,也带来了系统级的数据无序迁移与显存被非核心进程霸占的挑战。为此,NVIDIA 推出了 CDMM(Coherent Driver-based Memory Management,基于驱动的一致性内存管理)模式。
一、 传统内存管理(NUMA 模式)的痛点
在软件层面,传统的操作系统(如 Linux)默认将这种硬件一致性的 GPU 显存视为一个标准的 NUMA(非统一内存访问)节点。Linux 内核会倾向于将高频访问或高优先级的系统级 Page 调度至延迟更低、带宽更高的存储介质(即 GPU 显存)。但这会导致大量非计算相关的通用系统数据误入 GPU 显存池,造成宝贵的算力资源碎片化,并在云原生(如 Kubernetes)多租户场景下破坏 Pod 间的软件隔离。具体来说会有这些问题:
-
操作系统的不确定性缓存(Page Cache 污染):
Linux 内核倾向于将整个系统富余的内存用作文件系统缓存(Page Cache)。当系统将 GPU 显存识别为普通 NUMA 内存时,内核可能会在毫无预警的情况下,将操作系统日常的日志、临时文件或不相关的磁盘文件缓存到昂贵且稀缺的 GPU HBM 显存中。
-
分配不可控:
由于内核可以随意向 GPU NUMA 节点指派任务,导致显存利用率极其不稳定。这经常触发 Linux 的 OOM(Out of Memory)杀手机制,误杀正在运行的核心 AI 进程。
-
容器隔离(Pod Isolation)完全失效:
在 Kubernetes 场景下,容器编排引擎依靠 cgroups 来严格限制每个容器的内存使用。然而,Linux 内核目前无法在 cgroups 中有效地隔离和限定特定 GPU NUMA 节点上的内存分配。这意味着,同一个节点上的一个异常容器,可能会通过越界申请显存,直接导致整个节点的其他 Pod 崩溃。
二、CDMM 基于驱动一致性的内存管理
为了彻底解决 NUMA 模式在云原生架构下的天然缺陷,NVIDIA 设计并推出了 CDMM(Coherent Driver-based Memory Management,基于驱动的一致性内存管理)模式。
当在系统或驱动容器中启用 CDMM(通过设置内核模块参数 NVreg_CoherentGPUMemoryMode=driver)后,底层内存的行为会发生根本性的转变。CDMM 将 GPU 的一致性内存对 Linux 内核隐蔽,使其不再作为标准的操作系统 NUMA 节点出现。相反,所有的物理显存分配和调度,全部交由 NVIDIA 驱动程序进行精密控制。由于 Linux 内核无法再“看”到这部分内存,操作系统绝对不会将页面缓存(Page Cache)或其他非 GPU 负载文件强行注入到 HBM 中,从而确保了显存的绝对纯净。
三、应用场景
作为一种专为现代化云原生和超大规模硬件定制的软件架构,CDMM 是以下特定场景下的最佳配置选择:
-
基于 Kubernetes 的云原生 AI 平台
在现代企业 AI 基础设施中,数以百计的计算节点通常由 Kubernetes 进行统一编排。CDMM 目前已被设定为 NVIDIA GPU Operator 的默认内存管理模式。如果您正在 K8s 集群上运行多租户的 AI 研发环境、Jupyter Notebook 共享集群,启用 CDMM 是保障集群免于因 OOM 导致节点频繁雪崩的必由之路。
-
容器化的大语言模型(LLM)推理
在部署如 vLLM、SGLang等大模型推理服务时,模型本身和上下文 KV 缓存(KV Cache)需要极高的内存稳定性。CDMM 能够提供高隔离度、确定性的内存视图,确保大规模并发推理请求下的线上服务等级协议(SLA)。
CDMM与GDS的取舍
由于 CDMM 选择将 GPU 内存对操作系统的虚拟内存系统进行隐蔽,所以一些需要深度依赖操作系统内核空间参与的高级存储技术——例如 GPUDirect Storage (GDS) ——在 CDMM 启用时将无法工作。在配置系统时,可以遵循以下建议:
-
如果核心瓶颈是大规模存储 I/O 吞吐(如涉及数太字节未压缩原始视频/图像流的实时清洗与 DALI 预处理,或者需要频繁从 NVMe 存储中加载超大 Checkpoint 文件的基础大模型预训练),建议禁用 CDMM(保持 NUMA 模式)并全面开启 GDS。
-
如果集群是高可用性、多租户强隔离、容器化编排以及业务在 K8s 上的平滑部署,那么开启 CDMM 将是为您提供坚如磐石的稳定性保障的最佳实践。

