指南CPU

CPU NUMA如何影响多GPU服务器性能?

NUMA会影响多GPU服务器中的CPU、内存、GPU、网卡和NVMe访问路径。本文说明常见性能问题、检查工具和进程绑定方法。

NUMA多GPUGPU服务器PCIe拓扑
Slug
numa-impact-on-multi-gpu-server
更新
2026-07-07
来源
3
关系
3

概述

NUMA不是抽象的CPU参数,而是多GPU服务器的数据路径问题。进程、内存、GPU、网卡和NVMe若跨节点访问,可能造成延迟增加和带宽下降。

NUMA是什么

NUMA系统将CPU、内存和I/O划分为多个节点。本地访问通常延迟更低、带宽更高;跨节点访问会经过互连链路。

NUMA如何影响GPU任务

  • 数据加载线程运行在远端CPU,访问本地GPU时增加数据路径。
  • GPU与网卡不在同一NUMA或PCIe层级,影响GPUDirect RDMA效率。
  • GPU进程使用远端内存,增加延迟和总线流量。
  • 虚拟机拓扑与物理拓扑不一致,影响NCCL和设备映射。

常用检查方法

工具用途
nvidia-smi topo -m查看GPU、NIC、CPU/MEM亲和性
lstopo -sv查看NUMA与PCIe层级
numactl --hardware查看NUMA节点和内存
numastat观察本地与远端内存访问

一个常见的性能问题

在双路8卡服务器中,如果GPU 0—3连接CPU 0,而训练进程和数据加载线程被调度到CPU 1,同时网卡也位于CPU 1侧,数据会频繁跨Socket传输。此时GPU本身没有故障,但NCCL吞吐、首批数据加载和整体利用率可能下降。

容器和虚拟化环境的注意事项

  • 容器通常继承宿主机CPU与NUMA拓扑,但CPU配额和绑核配置可能破坏亲和性。
  • 虚拟机应尽量让vCPU、内存和直通GPU位于同一物理NUMA节点。
  • Kubernetes环境需要结合Topology Manager、CPU Manager和设备插件。
  • 调优后应以目标模型吞吐和延迟验证,不只看微基准。

赋创的拓扑检查范围

赋创在多GPU项目中可结合BMC、操作系统拓扑和实际服务器连线检查GPU、网卡与NVMe的亲和关系,并在部署阶段给出进程绑定和NUMA建议。对于国产CPU与国产GPU平台,仍需结合厂商工具和软件栈单独验证。

NUMA问题常见表现

  • 同一任务在不同GPU上性能不一致。
  • NCCL或RDMA带宽明显低于平台预期。
  • CPU总利用率不高,但部分核心长期满载。
  • 模型吞吐正常,首Token或数据加载延迟偏高。
  • 调整绑核或GPU顺序后性能发生明显变化。

建议的优化步骤

  1. 保存当前拓扑和基准结果。
  2. 确认GPU、NIC和NVMe所在NUMA节点。
  3. 将进程、内存和设备尽量绑定在同一节点。
  4. 检查容器、虚拟机和调度系统是否覆盖绑核设置。
  5. 用真实模型重新测试吞吐和延迟。

哪些情况不宜过度调优

小模型、低并发或GPU计算占比很高的任务,NUMA优化收益可能有限。调优目标应是业务吞吐、延迟和稳定性,而不是让所有微基准达到理论峰值。

常见问题

NUMA越少越好吗?

不一定。更少的NUMA节点简化调度,但高核心平台拆分NUMA有时能提高局部带宽。

关闭NUMA能解决性能问题吗?

通常不建议简单关闭。更合理的是按拓扑分配进程和内存。

NCCL会自动处理NUMA吗?

NCCL会感知拓扑,但系统配置、容器和虚拟化映射仍可能影响结果。

方案咨询

获取多GPU服务器NUMA检查建议

提供服务器拓扑、GPU与网卡布局、操作系统和任务框架,可进一步分析跨NUMA访问和亲和性问题。

咨询方案浏览指南