BIOS/UEFI仅提供NUMA支持开关(如NUMA Support启用、Node Interleaving关闭),不提供运行时平衡策略;真实调度由OS内核(如numa_balancing)和工具(如numactl)实现,且BIOS与OS配置必须协同才能保障性能。

服务器 BIOS/UEFI 层面本身不提供“NUMA 节点平衡策略”的运行时调节功能,它只负责开启或关闭 NUMA 架构支持。真正的平衡策略(比如内存自动迁移、线程亲和调度、跨节点访问优化)由操作系统内核(如 Linux 的 numa_balancing)和用户态工具(如 numactl)控制。BIOS/UEFI 的作用是为这些上层策略提供基础硬件能力——如果 BIOS 里关了 NUMA,系统就看不到多节点拓扑,所有后续调优都无从谈起。
BIOS/UEFI 中与 NUMA 直接相关的设置项
不同厂商路径略有差异,但核心选项名称一致:
- NUMA Configuration / NUMA Support:设为 Enabled 或 Auto(Dell/HP/Lenovo 均有此选项,位置通常在 Advanced → Processor 或 Chipset 设置下)
- Memory Interleaving:设为 Disabled(启用该选项会掩盖 NUMA 拓扑,使系统误判为 UMA,导致无法做节点感知调度)
-
Node Interleaving(部分 Dell/IBM 主板):必须 Disabled,否则
numactl --hardware将只显示一个 node - Intel QPI / AMD Infinity Fabric Link Speed(高级选项):保持默认或设为最高,保障节点间互联带宽,间接影响远程访问性能
如何确认 BIOS 层 NUMA 已生效
进入系统后执行以下命令验证硬件层是否暴露了真实 NUMA 结构:
-
lscpu | grep -i "numa"—— 查看 “NUMA node(s)” 是否 ≥2 -
numactl --hardware—— 正常应列出多个 node(如 node 0, node 1),每个含本地内存大小及距离矩阵 -
dmesg | grep -i numa—— 若输出类似 “NUMA: Using 30 for the hash shift” 表示已识别;若为 “No NUMA configuration found”,说明 BIOS 层未启用或被 Memory Interleaving 掩盖
OS 层 NUMA 平衡策略需配套开启
BIOS 启用 NUMA 只是第一步。要实现“平衡”,关键在 OS 层配置:
-
禁用自动平衡(适合 HPC/确定性负载):
echo 0 > /sys/kernel/mm/numa_balancing/enabled,避免迁移开销,改用numactl --membind=0 --cpunodebind=0 ./app手动绑定 -
启用激进扫描(适合数据库等稳定工作集):缩短扫描周期,加快收敛,例如:
echo 100 > /sys/kernel/mm/numa_balancing/scan_delay_ms和echo 2000 > /sys/kernel/mm/numa_balancing/scan_period_min_ms -
验证效果的核心指标:用
numastat关注numa_miss和numa_foreign,数值持续偏高说明内存与 CPU 未对齐,需调整绑定策略
特别注意:BIOS 与 OS 的 NUMA 开关必须协同
两者状态组合直接影响性能表现:
- BIOS NUMA = Disabled → 无论 OS 怎么配,系统始终视为单节点,
numactl无效,QPS 可能下降 15–30% - BIOS NUMA = Enabled + OS numa_balancing = 0 → 安全可控,推荐用于生产环境的数据库、虚拟化宿主
- BIOS NUMA = Enabled + OS numa_balancing = 1 → 需结合 workload 特征调参,否则可能因频繁迁移反而拖慢延迟敏感型服务



















