从云原生走向 AI 原生:一套面向未来的架构方法论 → 阅读《AI 原生基础设施》

作为拓扑的服务器:机箱里的距离不平等

草稿

“同一台服务器”不等于“同样的距离”:数据搬运的成本取决于路径,而路径由拓扑决定。

打开机箱:CPU、内存、PCIe、GPU、网卡、存储

一台服务器是一张图:CPU 插槽拥有内存通道;PCIe 根复合体(root complex)连接设备;GPU 与网卡可能分属不同的 NUMA 节点;NVSwitch 或 PCIe 交换芯片可能创建额外路径;NVMe 设备可能离某个插槽更近。Linux 内核通过 NUMA 与 PCI 元数据暴露这张图的一部分,厂商工具则暴露加速器专属的链路。

去神话的 NUMA

NUMA(非统一内存访问)意味着内存访问成本取决于内存域。CPU 访问挂在自己插槽下的内存通常是本地访问;访问另一插槽的内存则是远端访问。确切的延迟和带宽取决于平台与负载,但架构层面的区分是可靠的

对 GPU 工作负载,关键问题常常是:哪些 CPU 核心、哪个内存库、哪个 PCIe 根复合体、哪块网卡离这块 GPU 最近?主机侧数据加载器、页锁定内存(pinned memory)、中断、RDMA 和控制线程都会受影响。Kubernetes 层面对应的治理机制见NUMA 感知调度

观察可能原因有用证据
GPU 喂不饱远端内存或缓慢的输入管线numactl、CPU 亲和性、输入吞吐
集合通信慢GPU/网卡配对错误或缺对等链路nvidia-smi topo -m、NCCL 图日志
抖动主机争用、中断或共享 PCIe 路径CPU 绑核、PCIe 树、节点负载构成
Pod 被拒严格拓扑策略无法满足提示kubelet 策略与设备插件提示
表 1: 服务器层拓扑问题的观察与证据

检查仪式

nvidia-smi -L
nvidia-smi --query-gpu=index,name,pci.bus_id,memory.total,power.limit \
  --format=csv
nvidia-smi topo -m
lscpu -e=CPU,NODE,SOCKET,CORE
numactl --hardware
lspci -tv
lspci -vv -s <GPU-PCI-BDF>
这些输出不是文书工作
把它们存为节点镜像的工件。拓扑是工作负载性能契约的一部分,互连与集合通信的“读拓扑表”与排障手册的收敛流程,都从这里出发。

为什么 BIOS 和固件也在故事里

IOMMU 模式、PCIe 链路设置、电源管理、固件、风扇策略和平台固件都会影响设备可见性与性能。一个通过了软件冒烟测试的节点,仍可能带着一份在负载下发生变化的硬件或固件配置。请把平台基线当作带版本的基础设施,这与安全、可靠性与生命周期中的版本矩阵是同一个思想。

总结

调度器眼中的“一个节点”,在物理上是距离不平等的一张图。把拓扑检查变成装机仪式、把结果存成工件,NUMA 与互连层面的性能问题就有了第一手证据。下一章的加速器全景把视野从单机扩展到生态。

创建于 2026/08/30 更新于 2026/08/30 912 字 阅读约 2 分钟