cpupower frequency-info --freq 是最接近「此刻」硬件真实频率的命令,因它直接读取/sys/devices/system/cpu/*/cpufreq/scaling_cur_freq,绕过内核缓存,结果带“(asserted by call to hardware)”标识,可信度高;而/proc/cpuinfo的cpu mhz字段由内核缓存提供,存在数百毫秒滞后,且仅输出静态快照,无法反映多核实时差异或睿频状态。

cpupower frequency-info --freq 是最接近「此刻」硬件真实频率的命令,但它需要 root 权限,且只输出一次——不刷新、不轮询、不按核拆分。
为什么 /proc/cpuinfo 里的 cpu MHz 不可靠?
它由内核缓存提供,不是实时读取硬件寄存器;值会滞后几百毫秒甚至更久。比如刚结束 stress 测试,grep "cpu MHz" /proc/cpuinfo 可能还显示 4200.000,而实际已回落到 800.000。更糟的是,很多人只取第一行:grep "cpu MHz" /proc/cpuinfo | head -n 1,这完全忽略多核差异,无法判断是否某核正在睿频。
cpupower frequency-info --freq 怎么用才对?
它读的是 /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq 的聚合值,比 /proc/cpuinfo 更准,括号里带 (asserted by call to hardware) 表示可信度高。
- 必须加
sudo,否则报Permission denied - 若提示
No such file or directory,说明没加载频率驱动:运行dmesg | grep -i "cpu.*freq"看是否加载了intel_cpufreq或acpi-cpufreq - 它默认只输出一次,要实时看得套
watch -n 0.5,但注意:它不区分核心,只给一个平均/主核值
想看每个核心的实时频率,别装工具,直接读 sysfs
这是最轻量、最通用的方法,无需额外安装,路径稳定:
- 执行
watch -n 1 'cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq 2>/dev/null',每秒刷一次所有逻辑核当前频率(单位 kHz) - 如果某核输出为空,先检查它是否 online:
cat /sys/devices/system/cpu/online;也可能被isolcpus隔离 - 注意:在
intel_pstate驱动启用时(现代 Intel 默认),scaling_cur_freq可能恒为 0 或静态值——此时该路径失效,得切回cpupower或用turbostat
真正要看睿频是否生效,得比数值,不是找开关
Linux 没有 is_turbo_enabled: true 这种字段。判断依据只有两个数:
-
scaling_cur_freq(当前目标频率,kHz) -
cpuinfo_max_freq(硬件允许上限,kHz)
当前者持续 > 基础频率(查 /sys/devices/system/cpu/cpu0/cpufreq/base_frequency)且与后者差值 turbostat 才是唯一能绕过驱动抽象层、直读 MSR 寄存器看到真实 Core MHz 和 Turbo 档位的工具——前提是 Intel 物理机 + sudo modprobe msr 成功。











