NUMA/SNC 4种组合下Stream+MLC性能对决:双路服务器BIOS调优全攻略

关于调整 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 调优提供定量依据。

二、测试环境

组件规格
CPU2× Intel Xeon Platinum 8380 (40C80T, 2.3 GHz base)
内存16× 32 GB DDR4-3200 RDIMM,8通道/CPU,共1 TB
BIOSIntel reference firmware 2024.03
OSCentOS 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)

NUMASNC本地节点带宽全局带宽相对 NUMA-on SNC-disable
ondisable550540100 %
onenable (SNC2)580525+5.5 % / –2.8 %
off600400–26 %
onenable (SNC4)585510+6.3 % / –5.6 %

说明:  

SNC 细分节点可轻微提升 本地带宽(本地内存控制器利用率更高),但跨域访问导致 全局带宽下降。  

NUMA=off 时 UMA 模式虽单节点带宽最高,但远端访问比重增大,整体 全局带宽跌幅达 26 %。

4.2 MLC 延迟与跨节点带宽

NUMASNC本地延迟 (ns)跨节点延迟 (ns)跨节点带宽 (GB/s)
ondisable130450250
onenable (SNC2)115470220
off380 (平均)180
onenable (SNC4)110490200

说明:  

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) 上重复同一测试流程,完成跨平台对比。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/95138.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/95138.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java-113 深入浅出 MySQL 扩容全攻略:触发条件、迁移方案与性能优化

点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) AI炼丹日志-31- 千呼万唤始出来 GPT-5 发布!“快的…

Kafka Connect + Streams 用到极致从 CDC 到流处理的一套落地方案

关键目标: 零丢失:端到端 Exactly Once(Source 端事务 Streams exactly_once_v2 Sink DLQ)。低延迟:Producer 端批量压缩 Streams 缓存 合理 poll/commit 间隔。可恢复:Connect/Streams 的 rebootstrap…

# `std::basic_istream`总结

std::basic_istream总结 文章目录std::basic_istream总结概述常用类型定义全局对象核心成员函数1. 格式化输入2. 非格式化输入3. 流定位4. 其他功能继承的功能来自 std::basic_ios状态检查状态管理来自 std::ios_base格式化标志流打开模式特点说明例子std::basic_istream全面用…

人工智能——课程考核

课程考核包括平时测验(75%)和讨论(25%)两个环节,测验采用线上随堂考试(2-3次,具体会在本课堂发布)重点考核:A*算法、极大极小过程(α-β剪枝)、不…

机器学习-时序预测1

最近面试过程中,Predict-then-Optimize是运筹优化算法工程师未来的发展方向。就像我之前写过的运筹优化(OR)-在机器学习(ML)浪潮中何去何从?-CSDN博客,机器学习适合预测、运筹优化适合决策。我研…

vim-plugin AI插件

文章目录一、vim 插件管理vim-plug二、如何使用和配置 vim-plug第 1 步:安装 vim-plug第 2 步:配置你的 .vimrc / init.vim第 3 步:安装插件常用 vim-plug 命令三、配置vim-aivim-aivim-deepseekvim升级四、配置 AI 插件GitHub Copilot第 1 步…

Adobe Photoshop 2025 最新下载安装教程,附PS2025下载

点击获取:Adobe Photoshop 2025 安装教程: 1、安装包下载后,鼠标右键解压安装包 添加图片注释,不超过 140 字(可选) 2、双击打开解压后的安装包文件夹 3、打开setup文件夹 添加图片注释,不超过…

LeetCode算法日记 - Day 27: 计算右侧小于当前元素的个数、翻转对

目录 1. 计算右侧小于当前元素的个数 1.1 题目解析 1.2 解法 1.3 代码实现 2. 翻转对 2.1 题目解析 2.2 解法 2.3 代码实现 1. 计算右侧小于当前元素的个数 315. 计算右侧小于当前元素的个数 - 力扣(LeetCode) 给你一个整数数组 nums &#xf…

基于SamOut的音频Token序列生成模型训练指南

通过PyTorch实现从音频特征到语义Token的端到端序列生成,适用于语音合成、游戏音效生成等场景。🧠 模型架构与核心组件 model SamOut(voc_sizevoc_size, # 词汇表大小(4098目录名特殊Token)hidden_sizehidden_size, …

AWD攻防总结

基本防守策略 1、改用户密码和服务密码 1)改linux用户密码: #passwd 如果有权限就删除用户: #userdel -r [用户名] 2)改mysql密码: #update mysql.user set passwordpassword(密码) where userroot; 删除匿名用户&…

Android14 基于Configfs的USB动态配置init.usb.configfs.rc

1 Android14 USB子系统启动以及动态切换的init.usb.rc 2 Android14 基于Configfs的USB动态配置init.usb.configfs.rc 3 Android14 高通平台的USB子系统启动和动态配置init.qcom.usb.rc 1. 什么是ConfigFS ConfigFS 是 Linux 内核提供的一种用户空间可配置的伪文件系统在Linu…

2025年KBS SCI1区TOP,矩阵差分进化算法+移动网络视觉覆盖无人机轨迹优化,深度解析+性能实测

目录1.摘要2.系统模型和问题表述3.矩阵差分进化算法4.结果展示5.参考文献6.算法辅导应用定制读者交流1.摘要 本文提出了一种面向无人机(UAV)新型轨迹优化方法,以实现对地面移动节点的高效视觉覆盖。与传统方法不同,该方法显式考虑…

Python OpenCV图像处理与深度学习:Python OpenCV图像几何变换入门

图像变换:掌握OpenCV中的几何变换 学习目标 通过本课程,学员们将能够理解图像的几何变换原理,包括缩放、旋转和平移,并能够使用Python和OpenCV库实现这些变换。本课程将通过理论讲解与实践操作相结合的方式,帮助学员们…

Redis Windows 7.0.5 安装教程(附exe/msi下载+环境配置+命令测试)

​第一步:下安装包​ 打开浏览器(比如 Edge 或 Chrome),复制这个链接到地址栏敲回车: https://pan.quark.cn/s/31912e0d0443 进去后往下翻,找名字带 ​**redis-7.0.5​ 的文件,​选那个 .exe 结…

数据结构(单链表)

目录 1.链表的概念及结构 2.单链表的应用 2.1 打印链表 2.2申请新节点 2.3插入(尾删和头删) 2.4删除(尾删和头删) 2.5查找 2.6任意位置插入 2.7删除指定位置的元素 2.8 销毁链表 3.总结 1.链表的概念及结构 &#xff…

电脑没加域却能获取到IP地址

企业网络管理的核心逻辑!电脑没加域却能获取到IP地址,这完全是一种刻意为之的安全设计,而不是网络故障。 简单来说就是:“给你IP,但不给你权限。” 这背后是一套完整的 网络准入控制(NAC) 策略。…

Go语言入门学习笔记

📚 前言 欢迎学习Go语言!这份教材假设您是编程零基础,从最基本的概念开始讲解。Go语言(也称为Golang)由Google开发,简单、高效、并发能力强,适合后端开发、系统编程和云计算。 学习建议&#xf…

gradle安装、配置环境变量、配置阿里源及idea 中配置gradle

下载gradle https://services.gradle.org/distributions/ 配置系统环境变量 新增GRADLE_HOME D:\Information_Technology\App\gradle-8.14.3-bin\gradle-8.14.3 新增GRADLE_USER_HOME D:\Information_Technology\App\gradleHouse 设置 path,新增一行 %GRADLE_…

C# FlaUI win 自动化框架,介绍

一、简洁介绍 FlaUI 是一套基于 .NET 的 Windows 桌面应用自动化测试库,支持 Win32、WinForms、WPF、UWP 等多种类型的应用。它基于微软原生 UI Automation 库,提供了更现代、易用的 API,适合自动化测试工程师和开发者实现高效、可维护的 UI …

命名空间级别应用 Pod 安全标准

🎯 命名空间级别应用 Pod 安全标准 一、创建 Kubernetes 集群(使用 kind) 使用 kind (Kubernetes IN Docker)快速创建一个本地集群: kind create cluster --name my-cluster验证集群是否运行正常&#xff1…