最轻量实时查看每核频率的方式是用 watch -n 1 'cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq',单位 khz,需除以1000换算为ghz;注意核是否online、驱动是否加载,新intel平台可能需改用intel_pstate路径或turbostat。

怎么用 watch 实时看每核当前频率
最轻量、免安装、直接生效的方式就是读 /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq。这个路径下每个逻辑核都有一个 scaling_cur_freq 文件,内容是当前频率(单位 kHz),比如 2400000 就是 2.4 GHz。
执行这条命令就能每秒刷新一次所有核的实时值:
watch -n 1 'cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq'
常见问题:
- 如果某核输出为空或报
No such file or directory,先检查该核是否 online:cat /sys/devices/system/cpu/online;再确认驱动是否加载:ls /sys/devices/system/cpu/cpu0/cpufreq/ - 输出单位是 kHz,不是 MHz,别直接当成 “2400” 看成 2.4 GHz —— 要除以 1000 才对
- 在启用了
intel_pstate的新 Intel 平台(如 kernel ≥ 4.10),cpufreq目录可能不存在,得换路径:/sys/devices/system/cpu/intel_pstate/下查cur_freq或用turbostat
cpupower monitor 为什么比 watch 更适合调优
cpupower monitor 是唯一能持续输出「各核频率 + 时间戳 + 频率变化趋势」的内建工具,尤其适合抓取短时睿频、降频瞬间。它每行输出包含每个 cpuX 的当前频率(kHz),格式规整,可直接重定向进日志做后续分析。
运行方式:
PyCharm 2026.2.0.1 Linux版提供 JetBrains 官方 2026.2.0.1 版本安装包,适合需要指定 PyCharm 版本进行 Python 项目开发、运行和调试的用户。
sudo cpupower monitor
注意点:
- 必须 root 权限,且依赖内核配置
CONFIG_X86_ACPI_CPUFREQ或对应驱动,虚拟机里基本不可用 - 默认无时间戳,想对齐其他指标(比如
perf采样)得自己加前缀:stdbuf -oL -eL sudo cpupower monitor | while read line; do echo "$(date +%s.%N) $line"; done - 输出频率单位是 kHz,和
scaling_cur_freq一致,但它是硬件寄存器直读,比 sysfs 缓存更及时
为什么 lscpu 和 /proc/cpuinfo 不能当实时依据
lscpu | grep "CPU MHz" 显示的是平均估算值,不是任一核心此刻的真实频率;grep "cpu MHz" /proc/cpuinfo 虽然每核都有值,但它由内核缓存提供,有滞后性——比如刚触发睿频,/proc/cpuinfo 可能还卡在上一秒的 800 MHz,而 scaling_cur_freq 已显示 4200000。
典型误判场景:
- 看到
lscpu输出CPU MHz: 2400.000就以为 CPU 正在 2.4 GHz 运行 → 实际可能全核空载,已降到 800 MHz - 只取
grep "cpu MHz" /proc/cpuinfo | head -n 1→ 漏掉其它核的高频/低频状态,无法判断负载是否不均 - 把
/proc/cpuinfo里的model name当前频率用(例如@ 3.70GHz)→ 那只是标称基础频率,不反映睿频能力
睿频是否真起效?关键看 scaling_cur_freq 和 scaling_max_freq 的差值
真正判断睿频有没有激活,不是看“能不能到”,而是看“此刻是不是接近上限”。同一目录下两个文件必须一起看:
-
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq:当前实际频率(kHz) -
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq:当前允许的最高频率(kHz),受 BIOS 设置、温度、功耗墙限制
如果前者 ≥ 95% 后者,且高于 base frequency(如有),基本可确认睿频已触发。但要注意:
- 多核同时满载时,
scaling_max_freq可能被 BIOS 主动压低(比如从 4.6 GHz 降到 4.2 GHz),这不是故障,是 thermal/power throttling - Intel 平台启用
intel_pstate=active时,scaling_max_freq可能恒为 0,此时得查/sys/devices/system/cpu/intel_pstate/max_perf_pct和status -
turbostat --interval 1能同时显示每核频率、倍频、pkg power、温度,是验证睿频瓶颈的终极手段,但仅限 Intel










