5

CPU 性能排查经验文档

·5 分钟

CPU 性能排查经验文档

适用场景:Linux 工作站 / CPU 异常降频

测试环境:Ubuntu 18 · Intel i9-9820X · RTX 2080Ti · PyTorch 2.5


一、问题描述

在运行 PyTorch 训练任务时,发现训练速度异常缓慢。通过监控 CPU 频率,发现所有核心均锁定在最低频率 1200 MHz,远低于标称的 3.3 GHz 基频和 4.2 GHz 睿频。

watch -n 1 "cat /proc/cpuinfo | grep 'cpu MHz'"

输出示例(异常状态):

cpu MHz : 1200.131
cpu MHz : 1200.238
cpu MHz : 1200.045
...(共 20 核,全部约 1200 MHz)

二、排查流程

Step 1:确认 CPU 基本信息

lscpu

关键字段确认:

  • CPU 最小 MHz: 1200 — 与实测频率吻合,说明 CPU 被锁在最低频
  • CPU 最大 MHz: 4200 — 睿频未被触发
  • 每个核的线程数: 2 / 每个座的核数: 10 — 10 核 20 线程

Step 2:排查是否为过热降频

高 TDP 处理器(i9-9820X 为 165W)在散热不良时会触发热保护降频。

# 安装温度监控工具
sudo apt install lm-sensors

# 查看各核温度
sensors

本案例结果(正常):

Package id 0:  +32.0°C  (high = +100.0°C, crit = +110.0°C)
Core 1:        +28.0°C
Core 2:        +29.0°C
...

✅ 温度 28~32°C,散热完全正常,排除过热降频

若温度超过 90°C: 大概率是硅脂老化,建议更换导热硅脂(信越 7921 / Arctic MX-6 等),一般 3~5 年需更换一次。


Step 3:检查 CPU 调频策略(根因)

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

本案例结果(异常):

powersave

🔴 根因确认: powersave 模式会强制 CPU 运行在最低频率,与负载和温度无关。


三、解决方案

临时修复(立即生效)

# 切换所有核心到 performance 模式
echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

# 验证
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
# 预期输出: performance

# 观察频率恢复
watch -n 1 "cat /proc/cpuinfo | grep 'cpu MHz'"

修复后频率应动态拉升至 3.3 ~ 4.2 GHz


永久修复(重启后依然生效)

sudo apt install cpufrequtils
sudo nano /etc/default/cpufrequtils

写入以下内容:

GOVERNOR="performance"

保存后重启服务:

sudo systemctl restart cpufrequtils

四、调频策略说明

Governor行为适用场景
performance始终跑最高频率深度学习训练、高性能计算
powersave始终跑最低频率节能、待机服务器
ondemand按负载动态调频通用服务器
schedutil内核调度器联动调频现代 Linux 推荐默认

深度学习服务器推荐使用 performance 模式,避免 DataLoader 预处理阶段因频率未及时拉升而造成 GPU 等待。


五、排查决策树

CPU 频率异常偏低
    │
    ├─ 查看温度 (sensors)
    │       │
    │       ├─ 温度 > 90°C ──→ 散热问题,考虑更换硅脂 / 清灰
    │       │
    │       └─ 温度正常 ──→ 继续排查
    │
    ├─ 查看调频策略 (scaling_governor)
    │       │
    │       ├─ powersave ──→ 切换为 performance ✅
    │       │
    │       └─ performance 但频率仍低 ──→ 检查 BIOS 设置 / TDP 限制
    │
    └─ 压力测试验证 (stress --cpu 4)
            │
            └─ 加压后频率不升 ──→ 可能存在硬件故障或 BIOS 锁频

六、常用监控命令速查

# 实时频率监控
watch -n 1 "cat /proc/cpuinfo | grep 'cpu MHz'"

# CPU 温度
sensors

# 当前调频策略
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

# 所有核心调频策略
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor | sort -u

# CPU 压力测试(需安装 stress)
sudo apt install stress
stress --cpu 8 --timeout 30s

# 查看 CPU 详细信息
lscpu