第四章:CPU核心配置:超线程、核心启停与Turbo Boost

各位好,我是老张。今天咱们聊聊CPU核心配置这块。说实话,很多运维兄弟拿到服务器,BIOS里这些选项基本就是默认走起。但我得说,默认值往往不是最优解。尤其是超线程、核心数、Turbo Boost这三个东西,调好了性能翻倍,调错了可能让你排查三天三夜。

4.1 超线程技术(Hyper-Threading)

超线程,说白了就是一个物理核心模拟成两个逻辑核心。Intel把这个技术叫HT,AMD那边叫SMT。原理不复杂:CPU核心内部有很多执行单元,比如整数运算、浮点运算、加载存储等等。单线程跑的时候,有些单元闲着。HT就是让两个线程轮流用这些单元,提高利用率。

我遇到过不少朋友问:HT到底开不开?我的回答是:看场景。

核心观点:HT不是免费午餐。它提升的是吞吐量,不是单线程性能。

举个例子。你跑Web服务器,并发连接多,每个请求计算量不大。这时候HT很有用,能多处理20%-30%的请求。但如果你跑的是HPC(高性能计算),每个线程都在疯狂算矩阵,HT反而可能拖后腿。为什么?因为两个线程抢资源,缓存命中率下降,性能可能还倒退了。

我在项目中遇到过一件事。某金融客户跑高频交易,延迟要求极低。默认开了HT,结果发现尾延迟(P99)不稳定。关掉HT后,延迟曲线平滑多了。嗯,这就是典型的场景决定配置。

我的建议:

  • 虚拟化场景:开HT,因为虚拟机需要更多逻辑核心
  • 数据库OLTP:建议开HT,但要做NUMA绑定
  • 科学计算/渲染:建议关HT,或者做A/B测试
  • 实时系统/低延迟交易:关HT,保稳定性

BIOS里怎么配?以Intel Xeon Scalable平台为例:

Socket Configuration → Processor Configuration
  → Hyper-Threading [ALL]  // 全部核心开启HT
  → Hyper-Threading [ENABLE/DISABLE]

注意,有些BIOS版本里叫「Intel Hyper-Threading Technology」,位置可能不同。我习惯先搜一下「HT」或者「SMT」关键字。

4.2 核心数启用与禁用

这个选项,说白了就是告诉BIOS:我要用几个核心。默认是全部启用。但有些场景下,你确实需要禁用部分核心。

什么时候会禁用核心?

  • 功耗限制:机房供电不足,或者散热压不住。比如你插了双路28核,但电源只有1600W,那就只能关掉几个核心保平安。
  • 软件许可:有些商业软件按核心数收费。比如Oracle数据库,一个核心一个License。你买不起那么多License,那就关掉几个核心。
  • 性能隔离:虚拟化场景下,给某个关键虚拟机独占物理核心。其他核心可以禁用或者留给别的VM。
  • 故障排查:某个核心不稳定,先禁用它,等换CPU再说。

BIOS里怎么配?

Socket Configuration → Processor Configuration
  → Core Disable Bitmap  // 位图方式,每个bit代表一个核心
  → Active Processor Cores  // 直接输入数字,比如18

我个人习惯用「Active Processor Cores」这个选项,直接输入数字,简单粗暴。比如你有一颗28核的CPU,想用20核,就填20。BIOS会自动从最后一个核心开始禁用。

注意:禁用核心后,L3缓存也会相应减少。因为Intel的L3缓存是每个核心共享一部分。你禁用了核心,它对应的L3切片就没了。所以别以为只是少几个核心,缓存也缩水了。

我曾经帮一个客户调优。他们跑的是内存数据库,对缓存敏感。默认开了全部28核,但L3缓存被28个核心瓜分。我建议关掉8个核,只留20个。结果每个核心分到的L3缓存多了,命中率提升,整体性能反而涨了12%。你想想看,有时候少即是多。

4.3 Intel Turbo Boost Technology

Turbo Boost,中文叫睿频。就是CPU自动超频。当散热和功耗有余量时,自动把频率往上拉。Intel从Nehalem架构开始就有这个技术,现在发展到Turbo Boost Max 3.0和Thermal Velocity Boost。

简单说几个版本的区别:

版本 特点 适用平台
Turbo Boost 2.0 所有核心一起提频,幅度有限 Xeon E5 v3/v4
Turbo Boost Max 3.0 识别出体质最好的1-2个核心,单独提频 Xeon Scalable 1st/2nd Gen
Thermal Velocity Boost 根据温度动态调整,温度越低频率越高 Xeon Scalable 3rd Gen+

BIOS里配置选项:

Socket Configuration → Processor Configuration
  → Intel Turbo Boost Technology [ENABLE/DISABLE]
  → Turbo Boost Max 3.0 [ENABLE/DISABLE]
  → Thermal Velocity Boost [ENABLE/DISABLE]

这里有个坑。很多人以为Turbo Boost开了就万事大吉。其实不是。Turbo Boost能不能跑上去,取决于三个因素:

  1. 功耗墙(Power Limit):CPU有TDP限制,比如150W。Turbo Boost时功耗会超过TDP,但有个上限,叫PL1和PL2。PL2通常比TDP高20%-30%。如果散热不行,PL2撑不了多久就降回PL1。
  2. 电流墙(Current Limit):主板供电能力有限。如果电流超过VRM(电压调节模块)的承受范围,也会降频。
  3. 温度墙(Thermal Limit):CPU温度超过100°C(不同型号略有差异),强制降频保护。

所以,你开了Turbo Boost,但发现频率上不去。别怪BIOS,先看看散热和供电。

调优建议:

  • 对延迟敏感的应用(如高频交易、数据库):建议关掉Turbo Boost,保持频率稳定。因为Turbo Boost的频率波动会导致延迟抖动。
  • 对吞吐量敏感的应用(如Web服务器、批处理):建议开Turbo Boost,能白嫖10%-20%的性能。
  • 如果开了Turbo Boost,建议同时调整PL1和PL2。PL2设高一点,让Turbo Boost持续时间更长。

我记得有一次,某互联网公司做双十一压测。服务器是Intel 3rd Gen Xeon,默认开了Turbo Boost。压测时发现CPU频率忽高忽低,导致请求延迟忽大忽小。我让他们关掉Turbo Boost,锁定基频。虽然峰值性能降了一点,但延迟稳定了,整体吞吐量反而因为减少了重试而提升。嗯,这就是取舍。

4.4 三个选项的联动关系

这三个选项不是孤立的。它们互相影响。

  • HT + Turbo Boost:开了HT,每个物理核心跑两个线程。Turbo Boost时,两个线程共享频率提升。但注意,HT会让核心温度更高,可能限制Turbo Boost的幅度。
  • 核心数 + Turbo Boost:核心数越少,每个核心分到的功耗预算越多,Turbo Boost能跑得更高。比如你禁用了8个核,剩下的20个核可能比28个全开时频率更高。
  • HT + 核心数:如果你禁用了核心,HT的逻辑核心数也会相应减少。比如28核开HT是56个逻辑核。你禁用8个物理核,就只剩20个物理核、40个逻辑核。

所以,调优时要综合考虑。我一般会先确定业务模型,再决定这三个参数的组合。

实战组合推荐:

业务类型 HT 核心数 Turbo Boost 备注
Web服务器 全开 追求吞吐量
数据库OLTP 全开 追求低延迟稳定
HPC/科学计算 全开 每个线程算力最大化
虚拟化(高密度) 全开 虚拟机需要更多逻辑核
虚拟化(关键业务) 部分禁用 给关键VM预留物理核

最后说一句。BIOS调优没有银弹。你看到的每一个选项,背后都是硬件工程师和架构师的权衡。我的经验是:先理解业务,再动手调。调完一定要做A/B测试,用数据说话。别凭感觉。

好了,这一章就到这里。下一章咱们聊聊内存配置,包括RAS特性、内存镜像、Rank Sparing这些高级玩法。到时候见。