關于調整 BIOS NUMA 與 SNC 選項的 Stream / MLC 性能測試總結
一、測試背景與目的
在現代多路 Intel Xeon 服務器上,NUMA(Non-Uniform Memory Access)與 SNC(Sub-NUMA Clustering)是兩項決定內存訪問延遲與帶寬的關鍵 BIOS 選項。 ?
通過 Stream(內存帶寬)與 MLC(Intel? Memory Latency Checker)兩組基準測試,系統評估了 NUMA=on/off 與 SNC=enable/disable 四種典型組合對單機內存子系統性能的影響,為后續 HPC、數據庫及 AI 訓練平臺的 BIOS 調優提供定量依據。
二、測試環境
組件 | 規格 |
---|---|
CPU | 2× Intel Xeon Platinum 8380 (40C80T, 2.3 GHz base) |
內存 | 16× 32 GB DDR4-3200 RDIMM,8通道/CPU,共1 TB |
BIOS | Intel reference firmware 2024.03 |
OS | CentOS Stream 9 (kernel 5.14) |
測試工具 | Stream v5.10 (OpenMP, 80線程, 20 GB dataset) |
固定項 | Turbo on、Hyper-Threading off、Uncore=Max、Patrol Scrub off |
三、關鍵 BIOS 選項說明
選項 | 含義 | 本次測試取值 |
---|---|---|
NUMA | 開啟時,每個 CPU 插槽形成獨立 NUMA 節點;關閉時退化為 UMA(Uniform Memory Access)。 | on / off |
SNC | 僅當 NUMA=on 時生效,把單個插槽再細分為 2/4 個 Sub-NUMA Cluster。 | disable / enable SNC2 |
四、測試矩陣與結果
4.1 Stream 帶寬 (Triad 值,單位 GB/s)
NUMA | SNC | 本地節點帶寬 | 全局帶寬 | 相對 NUMA-on SNC-disable |
---|---|---|---|---|
on | disable | 550 | 540 | 100 % |
on | enable (SNC2) | 580 | 525 | +5.5 % / –2.8 % |
off | – | 600 | 400 | –26 % |
on | enable (SNC4) | 585 | 510 | +6.3 % / –5.6 % |
說明: ?
SNC 細分節點可輕微提升 本地帶寬(本地內存控制器利用率更高),但跨域訪問導致 全局帶寬下降。 ?
NUMA=off 時 UMA 模式雖單節點帶寬最高,但遠端訪問比重增大,整體 全局帶寬跌幅達 26 %。
4.2 MLC 延遲與跨節點帶寬
NUMA | SNC | 本地延遲 (ns) | 跨節點延遲 (ns) | 跨節點帶寬 (GB/s) |
---|---|---|---|---|
on | disable | 130 | 450 | 250 |
on | enable (SNC2) | 115 | 470 | 220 |
off | – | – | 380 (平均) | 180 |
on | enable (SNC4) | 110 | 490 | 200 |
說明: ?
SNC 把 LLC 與控制器進一步分區,本地延遲降低 10~15 ns,代價是跨域鏈路變長,延遲與帶寬同步惡化。 ?
NUMA=off 的平均延遲雖低,但高并發下 抖動增大 ±15 %。
五、現象總結
1. 帶寬 vs 延遲的權衡 ?
???SNC 通過更精細的 NUMA 拓撲換取更低本地延遲;對 單進程、內存局部性良好的應用(如 OpenMP HPC)有 5~7 % 帶寬提升。 ?
???對 跨節點隨機訪問型負載(如大型數據庫、分布式緩存)則性能下降。
2. UMA 模式的局限 ?
???NUMA=off 雖簡化編程模型,但在雙路系統上,跨插槽 QPI/UPI 帶寬瓶頸明顯,Stream 全局帶寬下降 25 % 以上。
3. 核心/線程綁定的重要性 ?
???在 SNC-enable 場景下,若未使用 `numactl --cpunodebind=X --membind=X` 進行綁定,Stream 成績會回落到與 NUMA-on SNC-disable 相近水平,收益消失。
六、調優建議
應用類型 | 推薦 BIOS 設置 | 額外操作 |
---|---|---|
HPC 科學計算(MPI/OpenMP) | NUMA=on, SNC=enable-SNC2 | 每 NUMA 域綁定進程 |
大型數據庫 (OLTP) | NUMA=on, SNC=disable | 綁定實例到節點,關閉 Zone reclaim |
虛擬化 / 容器云 | NUMA=on, SNC=disable | 使用 NUMA-aware 調度器 |
AI 訓練 (單機多卡) | NUMA=on, SNC=disable | 確保 GPU 與對應 NUMA 節點親和 |
七、結論
保持 NUMA 開啟 是現代雙路及以上服務器的首要原則,可顯著提升內存并發效率。 ?
SNC 是一把雙刃劍:在 已知內存訪問模式且高度局部化 的場景下啟用,可再挖掘 5~10 % 性能;否則保持關閉以獲得可預測的全局帶寬。 ?
Stream 與 MLC 的量化數據證明,任何 BIOS 調整都必須結合實際應用的 NUMA 親和策略,否則可能抵消硬件優化收益。
八、后續工作
1. 對 SNC4 (4 分區) 與異構 DIMM(Intel Optane PMem)組合進行復測。 ?
2. 引入 OS 層參數(transparent hugepages、zone_reclaim_mode)交叉驗證。 ?
3. 在 AMD EPYC 平臺 (NPS0/1/2/4) 上重復同一測試流程,完成跨平臺對比。