直接查看dmesg中含thermal、throttling、prochot或therm的日志并结合sensors实时温度,可确认是否因过热触发内核降频;需关注critical温度告警、turbostat中therm/prochot标志及avg_mhz异常偏低现象,并排除bios节能策略与ec强制prochot干扰。

直接看 dmesg 里带 thermal、throttling、PROCHOT 或 THERM 的记录,再结合 sensors 查实时温度,就能确认是否因过热触发了内核降频。
查内核日志里的降频痕迹
Linux 内核在检测到高温时会主动降低 CPU 频率,这类行为会在 dmesg 中留下明确线索:
- 运行
dmesg | grep -i "thermal\|throttle\|prochot\|therm",重点关注含thermal throttling、cpuX: throttled、PROCHOT asserted的行 - 若看到类似
[ 1245.678901] thermal thermal_zone0: critical temperature reached (98 C), shutting down,说明已触发热关机阈值 - 用
dmesg -T加上真实时间戳,方便和业务异常时间对齐;dmesg -w可实时监听新出现的热告警
确认当前 CPU 温度与临界值
仅看日志不够,得验证温度是否真逼近硬件极限:
- 先安装并配置传感器:
sudo apt install lm-sensors && sudo sensors-detect(按提示一路回车) - 执行
sensors查各核心温度,重点关注Core X:行,如Core 0: +87.0°C (high = +100.0°C, crit = +100.0°C) - 对比
Tjmax(CPU 最高结温,通常 95–105℃),若当前温度持续 >90℃ 且Thermal Throttling日志同步出现,基本可锁定过热降频
观察频率是否被动态压制
温度高不一定立刻降频,要看 CPU 实际运行频率是否异常偏低:
- 装
turbostat(sudo apt install linux-tools-common linux-tools-generic),运行turbostat --debug - 观察输出中
THERM和PROCHOT列是否频繁显示1,同时Avg_MHz明显低于Base_MHz或标称最大频率 - 对比
watch -n1 'grep \"cpu MHz\" /proc/cpuinfo | head -n1'输出,若数值长期卡在几百 MHz,而非标称 GHz 级,就是典型降频表现
排除固件与 BIOS 层干扰
有些降频并非 Linux 主动触发,而是来自底层硬件策略:
- 检查 BIOS/UEFI 设置:确认 “Intel SpeedStep”、“AMD Cool’n’Quiet”、“Fan Profile” 是否设为 “Performance” 或 “Balanced”,避免节能策略误判
- 查看是否启用 PROCHOT 源:某些主板或笔记本会通过 EC(嵌入式控制器)强制拉低 PROCHOT 信号,
turbostat中PROCHOT列持续为 1 且sensors温度正常,就可能是该原因 - 临时禁用 NMI watchdog(排除干扰):
echo 0 | sudo tee /proc/sys/kernel/nmi_watchdog,再复测,避免误报占用 CPU











