引言:最好的调优,就是不要(手动)调优吗?如果是手机、
PC
之类的消费级产品确实如此,
OEM
厂商甚至把一般人不需要修改的
BIOS
设置隐藏掉。对于服务器用户群,虽不太容易做到这样,但如果能做得相对“傻瓜”,需要修改调优的选项少一些则更好。
前几年我曾经发过
2
篇相关内容:
《
服务器BIOS应用调优:低延时、虚拟化、数据库、SDS和CSP
》
《
新一代Xeon Scalable服务器BIOS性能调优指南
》
就在后面那篇的读者留言中,有专家朋友表示参数太多、可能调优不明显?也有读者询问有没有
AMD
平台服务器的
BIOS
调优介绍(因为前面
2
篇都是针对
Xeon
的)。
就在半年前,我还真想过要整理一篇(上面截图为证),后来没发出来是觉得当时的资料对读者朋友可能参考有限。如果只是做个简单翻译意义不大
…
直到我在
EPYC
9005 CPU
发布之后,看到
AMD
官方文档《
BIOS & Workload Tuning Guide for
AMD EPYC
™
9005 Processors
》,又想分享给大家。倒不一定是里面有多高深的调优秘诀,反而是
每一项
BIOS
选项的介绍写得不错
,对于
AMD
服务器平台不是太熟的朋友参考下挺合适的。
讲清楚设置选项的作用,大家就会容易理解调优时为什么需要改
/
或者不改。
注:本文是我学习后整理的笔记,如有不足之处欢迎批评指正。对于服务器技术专家、英文好的朋友也可以直接看
AMD
原始文档(链接见文末)。
5
大领域、
19
类细分服务器应用
General-Purpose Workloads
|
CPU Intensive
|
Java Throughput
|
Java Latency
|
Power Efficiency
|
Memory and I/O Intensive Workloads
|
Memory Throughput
|
Storage I/O Throughput
|
NIC Throughput
|
NIC Latency
|
Virtualization and Containers
|
VMware vSphere Optimized
|
Linux KVM Optimized
|
Containers
|
Database, Analytics and AI/ML
|
RDBMS Optimized
|
Big Data Analytics Optimized
|
IoT Gateway
|
AI/ML
|
HPC, Telco, and EDA Settings
|
HPC
|
Telco (CORE)
|
Telco (Mgmt, Security, CDN)
|
EDA
|
-
-
1.
Processor Core Settings
Simultaneous Multithreading (SMT) Settings
译文:
启用同步多线程(
SMT
)会对某些工作负载(尤其是
高性能计算(
HPC
)
)产生中性到负面的性能影响。此外,一些应用程序
许可证计算
启用的硬件线程数量而不是物理核心数量。因此,在你的
AMD EPYC 9005
系列处理器上禁用
SMT
可能是最佳选择。
注:大多数应用保持打开;部分网卡吞吐
/
延时敏感型应用,以及部分
HPC
、
EDA
应用可考虑禁用。
Cache Prefetchers
译文:
大多数工作负载和生产部署都受益于
L1
和
L2
流硬件预取器收集数据并使核心流水线保持繁忙状态,但是对于一些将内存带宽用到最大容量的工作负载而言,当部分或全部预取器被禁用时,性能可能会更好。默认情况下所有预取器都是启用的。务必针对您的部署对预取器进行评估。
注:根据我的经验,
绝大多数应用不需要修改
L1/L2 Cache
默认的预取设置。在少数关系型数据库中,可以考虑禁用
L1 Stream HW Prefetcher
和
L2 Stream HW
Prefetcher
。
Core Performance Boost
译文:核心性能加速(
Core Performance Boost
)可以启用或禁用。启用此设置后,处理器能够根据系统中活跃核心的数量、功率和散热空间,适时地将一组
CPU
核心的频率提升到高于
CPU
额定基本时钟速度的水平。
一些工作负载不需要最高核心频率就能达到可接受的性能。限制最大核心加速频率可以降低功耗。
BoostFmax
设置会限制最大加速频率,但不会设定一个固定频率。如果
BoostFmax
设置得过高,片上系统(
SoC
)将不会超过算法允许的最大频率。实际的加速性能取决于许多因素,包括本调优指南中讨论的其他设置。
Global C-States Control
译文:全局
C-States
控制可启用和禁用服务器上所有核心的
C-States
。禁用此功能意味着
CPU
核心只能处于
C0
(活动)或
C1
状态,因为
C1
状态无法被禁用。如果操作系统暂停某个核心,该
CPU
核心将处于
C1
状态。基于
I/O
的
C-States
生成和深度休眠(
DF
)
C -
状态包含核心处理器
C-States
。如果您有低延迟或极低抖动的使用场景,那么可以考虑按照本调优指南所述禁用深度休眠
C-States
。
AMD
强烈建议除了调试情况外,不要禁用全局
C-States
。
-
2.
Power Management
Settings
Power Profile Selection
注:默认设置为
0: High Performance mode (
高性能模式
)
;要求控制电源能效的场合建议设置为
1: Effciency Mode
;部分关系型数据库可考虑设置为
2: Maximum IO Performance
。
Power vs. Performance Determinism Settings
译文:
“
确定性启用(
Determinism
Enable
)
”
可在以下两者之间选择:
Performance
(对于大多数操作处理编号(
OPNs
)而言是默认选项)
在数据中心内
,配置相同的系统间可实现统一性能。需将热设计功耗(
TDP
)和平台功率限制(
PPL
)设置为相同的值。这样一来,无论环境或芯片存在何种变化,工作负载
性能都能保持一致
。
Power
通过最大限度地发挥给定
CPU
的能力来实现单个系统的最高性能,这会导致在数据中心或更大规模部署中出现不同的性能范围。
将
“
确定性(
Determinism
)
”
设置为
“
性能
”
时,无论环境或
芯片的差异
如何,都能使工作负载性能保持相同。
将
“
确定性
”
设置为
“
功率
”
,可将工作负载
性能在特定部件功率限制内最大化
,从而依据芯片
利用额外的性能提升空间
。如果使用功率确定性,可通过将
TDP
和封装功率限制(
PPL
)设置为
CPU
所支持的最大
TDP
值来获取最大性能。将
TDP
和
PPL
设置为
“
自动(
Auto
)
”
,会将这两个参数都设为
CPU
的默认
TDP
值,以实现节能运行。
注:按照
AMD
的建议,存储
I/O
吞吐型应用、关系型数据库、
AI/ML
和
EDA
应用,建议修改为
Power
。
Processor Cooling and Power Dissipation Limit Settings
译文:一个操作处理编号(
OPN
)的热设计功耗(
TDP
)代表了所有处理器组件为实现给定性能目标而消耗的功率。这个性能目标可能在远低于
TDP
的情况下就可达成,在这种情况下,处理器将有提升空间以超越性能目标运行。这种提升空间因不同部件而异(硅片制造时产生的)。你可以通过
BIOS
的确定性(
Determinism
)设置来利用超出
OPN
目标性能的额外性能。
封装功率跟踪器(
PPT
)控制每个处理器的封装功率限制,适用于系统中安装的所有处理器。更多信息请参阅功率
/
性能确定性部分。
注:有些应用建议将
TDP
和
PPT
修改为手动和
OPN Max
,详见参考文档。
ACPI
—
Collaborative Processor Performance Control (CPPC)
译文:启用协作式处理器性能控制(
CPCC
)能让操作系统通过控制
Turbo
的应用时机和幅度来帮助维持能效。高级配置与电源接口(
ACPI
)
5.0
引入了这一特性。并非所有操作系统都支持
CPCC
。微软从
Windows Server 2016
开始支持
CPCC
。
-
3.
NUMA and Memory Settings
L3 Cache as NUMA Domain
译文
注:大多数应用不建议打开。一部分内存和
I/O
密集型工作负载中的内存吞吐型应用、
Linux KVM
虚拟化(取决于虚机是否跨
CCD
?)、大数据分析应用可以尝试打开。
NUMA Nodes per Socket (NPS)
译文:
此设置用于在针对支持非统一内存访问(
NUMA
)的工作负载或高度可并行化的工作负载最小化本地内存延迟,与针对不适合
NUMA
的工作负载最大化每核心内存带宽之间进行权衡。在某些操作处理编号(
OPNs
)上或者对于某些内存配置,
NPS2
和
/
或
NPS4
可能不是可用选项。