探索 NVIDIA 的 CDMM 模式以增强内存管理
realtime news Oct 14, 2025 17:03
NVIDIA 推出了基于一致性驱动的内存管理 (CDMM),以改善硬件一致性平台上的 GPU 内存控制,解决开发人员和集群管理员面临的问题。
NVIDIA 推出了一种新的内存管理模式,即基于一致性驱动的内存管理 (CDMM),旨在增强硬件一致性平台(如 GH200、GB200 和 GB300)上 GPU 内存的控制和性能。根据 NVIDIA,此开发旨在解决非一致性内存访问 (NUMA) 所带来的挑战,当应用程序未完全感知 NUMA 时,可能导致系统性能不一致。
NUMA 与 CDMM
NUMA 模式是 NVIDIA 驱动在硬件一致性平台上的当前默认模式,向操作系统 (OS) 公开 CPU 和 GPU 内存。这种设置允许通过标准 Linux 和 CUDA API 进行内存分配,方便了在 CPU 和 GPU 之间的动态内存迁移。然而,这也可能导致 GPU 内存被视为通用池,可能会对应用程序性能产生负面影响。
相较之下,CDMM 模式阻止 GPU 内存以软件 NUMA 节点的形式向 OS 公开。相反,NVIDIA 驱动程序直接管理 GPU 内存,提供更精确的控制,并可能提升应用程序性能。这种方法类似于 PCIe 附加 GPU 模型,其中 GPU 内存保持与系统内存的独立性。
对 Kubernetes 的影响
CDMM 的引入对 Kubernetes 尤为重要,Kubernetes 是用于管理大型 GPU 集群的广泛使用平台。在 NUMA 模式下,Kubernetes 可能会遇到意外行为,如内存超报和错误应用 pod 内存限制,导致性能问题和应用程序故障。CDMM 模式通过确保对 GPU 内存更好的隔离和控制来帮助缓解这些问题。
对开发人员和系统管理员的影响
对于 CUDA 开发人员来说,CDMM 模式会影响系统分配的内存的处理方式。虽然 GPU 仍可通过 NVLink 芯片连接访问系统分配的内存,但内存页不会像在 NUMA 模式下那样迁移。此更改要求开发人员调整其内存管理策略,以充分利用 CDMM 的功能。
系统管理员会发现像 numactl 或 mbind 这样的工具在 CDMM 模式下对 GPU 内存管理无效,因为 GPU 内存没有呈现给 OS。然而,这些工具仍可用于管理系统内存。
在 CDMM 和 NUMA 之间的选择指南
在 CDMM 和 NUMA 模式之间进行选择时,请考虑应用程序的具体内存管理需求。NUMA 模式适用于依赖 OS 管理合并 CPU 和 GPU 内存的应用程序。而对于需要直接控制 GPU 内存的应用程序,CDMM 模式则是理想选择,它绕过 OS 以实现增强的性能和控制。
最终,CDMM 模式为开发人员和管理员提供了充分利用 NVIDIA 硬件一致性内存架构的能力,优化 GPU 加速工作负载的性能。对于使用 GH200、GB200 或 GB300 等平台的人来说,启用 CDMM 模式可能带来显著的收益,特别是在 Kubernetes 环境中。
Image source: Shutterstock