網路層 開放閱讀

NUMA 拓撲

NUMA Topology

概念 ID
numa-topology
更新時間
2026-05-29
來源數量
待補

NUMA 拓撲 (NUMA Topology)

3 秒看懂

一句話定義: NUMA(Non-Uniform Memory Access,非一致性記憶體訪問)拓撲描述的是多處理器系統中,各 CPU 核心與記憶體之間的”遠近親疏”關係圖——訪問本地記憶體快,跨節點訪問記憶體慢。

關鍵數字: 跨 NUMA 節點訪問延遲通常是本地訪問的 1.5~3 倍(具體數值因平台架構而異,此處為行業典型經驗範圍)[行業估算]。

3 分鐘產業解釋

為什麼 AI 工程師需要關心 NUMA?

當你在一臺 2 路或 4 路伺服器上跑大型模型推論/訓練時,如果程式碼沒有感知 NUMA 拓撲,可能出現:

現象根因
同配置伺服器,效能差異 20%~40%執行緒/記憶體分配落在跨節點路徑上
GPU 間通訊頻寬不一致PCIe Root Complex 與 CPU 的 NUMA 親和性未對齊
記憶體頻寬實測遠低於理論值記憶體條插錯通道,訪問走了跨節點路徑

產業位置

┌─────────────────────────────────────────────────────────────┐
│                    AI 基礎設施調優棧                          │
├─────────────────────────────────────────────────────────────┤
│  應用層    │  模型並行策略、推論批處理排程                      │
│───────────┼─────────────────────────────────────────────────┤
│  架構層    │  PyTorch/TensorFlow 的裝置繫結、執行緒親和性         │
│───────────┼─────────────────────────────────────────────────┤
│  OS/執行時 │  NUMA 策略、記憶體分配策略、中斷親和性               │
│───────────┼─────────────────────────────────────────────────┤
│  硬體層    │  CPU 拓撲、記憶體通道版面配置、PCIe 拓撲、互聯匯流排       │
└─────────────────────────────────────────────────────────────┘
         ▲ NUMA 拓撲是硬體層與 OS 層的關鍵介面資訊

15 分鐘專家深入

核心問題:為什麼記憶體訪問會”非一致”?

在早期對稱多處理器(SMP)架構中,所有 CPU 共享一條前端匯流排訪問統一記憶體,訪問延遲一致。隨著核心數增長,匯流排成為瓶頸,架構演變為:

        ┌──────────────┐         ┌──────────────┐
        │   Node 0     │         │   Node 1     │
        │ ┌──────────┐ │         │ ┌──────────┐ │
        │ │ CPU Cores│ │         │ │ CPU Cores│ │
        │ └────┬─────┘ │         │ └────┬─────┘ │
        │      │       │         │      │       │
        │ ┌────▼─────┐ │  互聯   │ ┌────▼─────┐ │
        │ │ Local    │◄├────────►├►│ Local    │ │
        │ │ Memory   │ │ (高延遲)│ │ Memory   │ │
        │ └──────────┘ │         │ └──────────┘ │
        └──────────────┘         └──────────────┘

  本地訪問: 低延遲 + 高頻寬        跨節點訪問: 高延遲 + 頻寬受限

關鍵洞見: NUMA 本質上是一個記憶體放置策略問題——資料放在哪個節點的記憶體裡,直接決定了誰能”快”訪問它。

NUMA 距離矩陣

作業系統通過 ACPI SRAT/SLIT 表暴露節點間距離資訊。典型 2 路伺服器的距離矩陣:

         Node 0    Node 1
Node 0     10        21      ← 跨節點約 2.1 倍延遲(典型值,因平台而異)
Node 1     21        10

⚠️ 準確性說明: 上述數值為行業通用的 ACPI SLIT 相對距離示例,實際延遲倍數因 CPU 微架構、互聯技術而異,此處不編造具體平台數字。

四大類 NUMA 拓撲

拓撲型別描述典型場景
SNC (Sub-NUMA Clustering)單顆 CPU 內部再劃分 NUMA 域Intel 伺服器 CPU 的 SNC 模式
NPS (NUMA Per Socket)AMD EPYC 的 CCD 劃分策略AMD 伺服器的 NPS1/NPS2/NPS4
Flat NUMA標準 2 路/4 路節點劃分通用伺服器
Disaggregated Memory記憶體池化,NUMA 邊界模糊CXL 記憶體擴充套件(新興架構)

技術原理

CPU 快取一致性與 NUMA

┌─────────────────────────────────────────────────────────────────┐
│                    Cache Coherence + NUMA                       │
│                                                                 │
│  Node 0                          Node 1                         │
│  ┌──────────┐                   ┌──────────┐                    │
│  │ Core 0   │                   │ Core 8   │                    │
│  │ L1/L2    │                   │ L1/L2    │                    │
│  └────┬─────┘                   └────┬─────┘                    │
│       │                              │                          │
│  ┌────▼─────────────┐         ┌──────▼───────────┐              │
│  │     L3 Cache     │         │     L3 Cache     │              │
│  │  (Snoop Filter)  │         │  (Snoop Filter)  │              │
│  └────────┬─────────┘         └────────┬─────────┘              │
│           │                            │                        │
│     ┌─────▼─────┐               ┌──────▼─────┐                  │
│     │Mem        │               │Mem         │                  │
│     │Controller │               │Controller  │                  │
│     └─────┬─────┘               └──────┬─────┘                  │
│           │                            │                        │
│           │      ┌──────────────┐      │                        │
│           └──────┤  互聯匯流排     ├──────┘                        │
│                  │ (UPI/Infinity│                                │
│                  │  Fabric)     │                                │
│                  └──────────────┘                                │
└─────────────────────────────────────────────────────────────────┘

一致性協議關鍵點:

  • 本地 L3 命中 → 直接返回,延遲最低
  • 本地記憶體命中 → 經記憶體控制器,延遲中等
  • 遠端記憶體命中 → 需經互聯匯流排轉發到遠端節點,延遲最高
  • 跨節點 snoop → 一致性流量走互聯,消耗頻寬

記憶體訪問延遲層次(定性)

延遲遞增 →

┌────────┬────────┬────────┬─────────┬──────────┐
│ L1 命中│ L2 命中│ L3 命中│本地記憶體  │ 遠端記憶體  │
│ ~1ns   │ ~3-5ns │ ~10ns │ ~80ns   │~120-200ns│
└────────┴────────┴────────┴─────────┴──────────┘

                                   跨 NUMA 懲罰

⚠️ 準確性說明: 上述為數量級估算,具體延遲因製程、頻率、記憶體代數、互聯拓撲而異,不編造具體平台數字。[行業估算]

Linux NUMA 調優關鍵介面

# 檢視 NUMA 拓撲
numactl --hardware
lstopo                    # hwloc 工具,視覺化拓撲

# 檢視程序 NUMA 記憶體分佈
cat /proc//numa_maps

# 繫結策略
numactl --cpunodebind=0 --membind=0 ./workload   # 強制繫結 Node 0
numactl --interleave=all ./workload               # 交織分配(適合大記憶體掃描)
numactl --preferred=0 ./workload                  # 優先本地,允許回退

# 核心引數
echo 0 > /proc/sys/kernel/numa_balancing          # 關閉自動遷移

技術演進史

時間線   │  架構演進
─────────┼──────────────────────────────────────────────────────
~2000    │  ccNUMA 出現:SGI Origin 系列率先商用
         │  (Cache-Coherent NUMA)
─────────┼──────────────────────────────────────────────────────
~2008    │  Intel Nehalem 引入 QPI 匯流排 + NUMA 原生支援
         │  2 路/4 路伺服器成為主流
─────────┼──────────────────────────────────────────────────────
~2017    │  AMD EPYC (Zen) 引入 Infinity Fabric
         │  單 Socket 內多 CCD 形成複雜 NUMA 拓撲
         │  NPS (NUMA Per Socket) 選項出現
─────────┼──────────────────────────────────────────────────────
~2019    │  Intel 引入 SNC (Sub-NUMA Clustering)
         │  單顆 CPU 內可切分為 2-4 個 NUMA 域
─────────┼──────────────────────────────────────────────────────
~2023+   │  CXL (Compute Express Link) 記憶體池化
         │  傳統 NUMA 二元本地/遠端模型面臨重構
         │  三層延遲模型(本地/近端CXL/遠端CXL)出現
─────────┴──────────────────────────────────────────────────────

技術路線對比

主流伺服器平台 NUMA 特性

特性維度Intel Xeon (Sapphire Rapids/Granite Rapids)AMD EPYC (Genoa/Turin)
互聯技術UPI (Ultra Path Interconnect)Infinity Fabric
單 Socket NUMA 劃分SNC-2/SNC-4 可選NPS1/NPS2/NPS4 可選
預設拓撲2 路 = 2 NUMA 域NPS1: 1 Socket = 1 NUMA
記憶體訪問模型Flat 或 SNC 分割槽CCD-aware 或 Flat
PCIe 裝置親和性需手動對齊 Root Complex同上

⚠️ 準確性說明: 上述為產品線級描述,具體型號的 SNC/NPS 支援需查閱各廠商官方文件,此處不編造具體代際歸屬。[廠商公開技術文件]

NUMA 策略對 AI 工作負載的影響

工作負載推薦 NUMA 策略原因
大型模型訓練(單機多卡)執行緒繫結 + membind避免跨節點通訊干擾 GPU 通訊
推論服務(低延遲)cpunodebind + membind最小化記憶體訪問延遲
資料預處理(吞吐優先)interleave 或預設大記憶體掃描,交織更均衡
多例項推論每例項繫結獨立 NUMA隔離資源,減少干擾

上下游

                    ┌─────────────────────────┐
                    │       上 遊              │
                    ├─────────────────────────┤
                    │ • CPU 微架構設計         │
                    │ • 互聯匯流排設計           │
                    │   (UPI/Infinity Fabric)  │
                    │ • 記憶體控制器/通道設計     │
                    │ • ACPI 韌體 (SRAT/SLIT)  │
                    └───────────┬─────────────┘

                    ┌───────────▼─────────────┐
                    │      NUMA 拓撲           │
                    │  (硬體暴露 + OS 感知)    │
                    └───────────┬─────────────┘

                    ┌───────────▼─────────────┐
                    │       下 遊              │
                    ├─────────────────────────┤
                    │ • OS 排程器/記憶體分配器    │
                    │ • 容器執行時 (cgroup)     │
                    │ • 虛擬化層 (vNUMA)       │
                    │ • AI 架構 (執行緒繫結)      │
                    │ • 資料庫 (緩衝池放置)     │
                    └─────────────────────────┘

關鍵指標

指標定義調優意義
NUMA 距離ACPI SLIT 表中的相對延遲值量化節點間訪問代價
本地訪問比例程序記憶體訪問中命中的本地比例目標 >90% 為健康
跨節點頻寬實際可用的遠端記憶體頻寬互聯匯流排瓶頸判斷
NUMA Balance 事件核心自動遷移頁面的頻率過高表示策略需調整
migrate_pages 計數手動/自動頁面遷移次數診斷記憶體錯配問題

診斷工具

# 即時監控跨節點訪問
perf stat -e node-loads,node-load-misses,node-stores,node-store-misses -p

# NUMA 記憶體使用統計
numastat -p

# 視覺化拓撲
lstopo --of png > topology.png

供需與市場資料

⚠️ 準確性說明: 以下資料來自行業估算與公開資訊綜合,非精確統計,僅供趨勢參考。[行業估算]

NUMA 感知軟體市場規模

細分領域驅動因素增長趨勢
伺服器虛擬化vNUMA 配置最佳化需求穩定增長
AI/ML 基礎設施大型模型訓練對記憶體區域性性敏感快速增長
資料庫最佳化OLTP/OLAP 的記憶體放置策略成熟市場
HPC傳統 HPC 應用持續最佳化穩定

硬體端趨勢

  • 高階伺服器 CPU 核心數持續增長: 從 32 核到 96 核+,NUMA 複雜度上升
  • CXL 記憶體擴充套件: 打破傳統 NUMA 二元模型,引入多層延遲
  • 記憶體頻寬瓶頸: HBM 在 CPU 領域探索,可能改變 NUMA 權衡

代表公司與資本對映

類別代表公司/專案與 NUMA 的關係
CPU 廠商Intel, AMD拓撲定義者,UPI/IF 互聯設計
伺服器 OEMDell, HPE, Lenovo, 超微系統拓撲實現,BIOS 配置暴露
虛擬化/雲端VMware, Nutanix, AWS, AzurevNUMA 最佳化,雲端例項 NUMA 透傳
資料庫Oracle, SAP, PostgreSQL 社群NUMA-aware 記憶體管理
AI 架構PyTorch, DeepSpeed, Megatron執行緒/程序繫結,通訊最佳化
記憶體擴充套件Samsung, SK Hynix (CXL)CXL 打破傳統 NUMA 邊界

資本對映邏輯

NUMA 最佳化能力 ──► 伺服器效能/效率 ──► TCO 降低 ──► 雲端/AI 基礎設施競爭力


                                              影響 AI 訓練/推論成本

投資邏輯

看多邏輯

  1. AI 算力需求驅動伺服器複雜化: 高核心數 CPU + 多 GPU 伺服器 NUMA 拓撲復雜度上升,最佳化需求增加
  2. CXL 生態崛起: CXL 記憶體池化帶來新的 NUMA 層級,相關軟體棧/控制器廠商受益
  3. 雲端廠商 TCO 最佳化: NUMA 感知排程可提升 10%~30% 的有效吞吐,直接影響獲利率

看空/風險

  1. 硬體透明化趨勢: 如果 CPU 廠商在晶片層面實現更均勻的記憶體訪問,軟體層 NUMA 最佳化價值下降
  2. 抽象層上移: 容器/K8s 層面的資源排程可能將 NUMA 細節遮蔽
  3. 技術成熟: 基礎 NUMA 調優已是標準實踐,增量價值在於新場景(CXL、異構計算)

核心觀察指標

  • CXL 1.1/2.0 產品落地進度
  • 主流 Linux 發行版的 NUMA 預設策略變化
  • 雲端廠商例項型別的 NUMA 配置文件更新

常見誤讀糾偏

❌ 誤讀一:「NUMA 是老舊技術,現代伺服器已經不需要關注了」

糾偏: 恰恰相反。隨著 CPU 核心數激增(單 Socket 96 核+)、SNC/NPS 等特性引入、CXL 記憶體擴展出現,現代伺服器的 NUMA 拓撲比以往更復雜。忽略 NUMA 的效能懲罰在高核心數平台上更顯著。

實際: 現代 AI/雲端基礎設施對 NUMA 的關注度持續上升,而非下降。

❌ 誤讀二:「綁定了 NUMA 節點就萬事大吉」

糾偏: NUMA 繫結只是第一步。還需考慮:

  • PCIe 裝置親和性: GPU 的 PCIe Root Complex 所屬 NUMA 節點是否與繫結一致
  • 記憶體交織策略: 某些大記憶體工作負載(如資料庫緩衝池)用 interleave 可能更優
  • 程序 vs 執行緒繫結粒度: numactl 繫結程序級,taskset 繫結 CPU 級,效果不同
  • 動態場景: NUMA Balancing 可能在執行時遷移頁面,需顯式停用或監控

❌ 誤讀三:「跨 NUMA 訪問就是慢 2 倍,這是固定的」

糾偏: 跨節點延遲倍數取決於:

  • 互聯拓撲: 2 路直連 vs 4 路 ring/mesh,多跳路徑延遲更高
  • 是否觸發 snoop: 如果遠端 L3 命中,延遲低於遠端記憶體訪問
  • 頻寬競爭: 互聯匯流排頻寬是共享資源,高併發時延遲波動大

實際: 跨節點延遲是一個範圍,而非固定倍數。需在目標平台上實測。

❌ 誤讀四:「NUMA 隻影響記憶體訪問,和 GPU 計算無關」

糾偏: GPU 通過 PCIe/CPU 訪問主機記憶體(如 GPUDirect Storage、CPU-GPU 資料傳輸)時,PCIe 拓撲的 NUMA 親和性直接影響頻寬和延遲。在多 GPU 訓練場景中,錯誤的 GPU-NUMA 對映可能導致:

  • CPU 端資料載入成為瓶頸
  • GPU 間 NVLink 通訊與 CPU 記憶體訪問路徑衝突

學習路徑

Level 1: 基礎認知
├── 理解"本地 vs 遠端記憶體"概念
├── 學會使用 `numactl --hardware` 檢視拓撲
└── 親測 `numactl --membind` vs 預設的效能差異

Level 2: 工程實踐
├── 掌握 Linux NUMA 策略選項 (bind/interleave/preferred)
├── 學會用 `perf` 監控 NUMA 事件
├── 理解 SNC/NPS 對拓撲的影響
└── 在 AI 訓練/推論場景中實測 NUMA 繫結效果

Level 3: 深度專家
├── 理解快取一致性協議 (MESIF/MOESI) 與 NUMA 的互動
├── 掌握 ACPI SRAT/SLIT 表解析
├── 理解 vNUMA 在虛擬化中的實現
├── 追蹤 CXL 對 NUMA 模型的重構
└── 能為新硬體平台設計 NUMA-aware 軟體架構

推薦實踐

# 在你的伺服器上動手試試:
sudo apt install hwloc numactl linux-tools-$(uname -r)

# 1. 看拓撲
lstopo --of ascii

# 2. 繫結 vs 不繫結跑 benchmark
numactl --membind=0 stress-ng --stream 4 --timeout 30s
numactl --interleave=all stress-ng --stream 4 --timeout 30s

# 3. 觀察差異
numastat -p stress-ng

一句話總結

NUMA 拓撲是多處理器伺服器的”記憶體地理地圖”——忽略它的 AI 工作負載,可能在不知不覺中損失 10%~30% 的有效效能;掌握它的工程師,能用一行 numactl 命令釋放硬體潛力。


延伸閱讀與來源

技術文件

  • Intel 64 and IA-32 Architectures Optimization Reference Manual — 涵蓋 UPI、SNC、記憶體訪問最佳化
  • AMD EPYC Processor BIOS and Kernel Developer’s Guide (BKDG) — Infinity Fabric、NPS 詳解
  • Linux Kernel Documentation: Documentation/admin-guide/mm/numa.rst — 核心 NUMA 子系統官方文件
  • ACPI Specification, Chapter 5: System Resource Affinity Table (SRAT) — NUMA 拓撲的韌體介面標準

工具與社群

AI 場景相關

  • NVIDIA GPUDirect RDMA Best Practices — 涉及 GPU-NUMA 親和性
  • DeepSpeed ZeRO 最佳化 — 記憶體分佈與 NUMA 的關係(分散式訓練場景)
  • 各雲端廠商例項型別文件 — AWS/Azure/GCP 的 NUMA 配置說明(建議查閱目標平台)

前沿方向


免責宣告: 本文技術描述基於行業通用知識與公開技術文件,未檢索到本次特定搜尋結果。具體產品規格、效能資料請以各廠商官方釋出為準。標註 [行業估算] 的資料為行業經驗範圍,非精確統計。

頁面版本: 2024-XX-XX | 最後審校: 待定

source: 公開揭露與公開資料整理 本頁僅用於產業鏈學習、資訊檢索和研究輔助;不構成投資建議,不預測漲跌,不提供買賣、部位或目標價建議。
完整概念頁 複盤 13 節結構 公司投研頁 沿產業鏈找到受益公司 投資課 把概念轉成可跟蹤模型