最轻量可靠的方式是直接读取/sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq,单位kHz,每核独立文件,无需用户态工具或缓存;cpupower monitor可持续采样每核频率波动,但需root权限且依赖内核驱动;lscpu显示的是估算平均值,非瞬时真实值;cpupower frequency-info --freq虽较准但仅返回单核采样值,无法反映多核差异。

直接读 /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq 最轻量可靠
这是内核暴露的原生接口,单位是 kHz,每核一个文件,不依赖用户态工具、无需安装包,也不走缓存。执行 cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq 就能拿到 cpu0 当前真实频率(比如 2400000 表示 2.4 GHz)。
要批量看全部逻辑核:
-
watch -n 1 'cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq 2>/dev/null | paste -s -d" " -'—— 每秒刷新一行,空值自动跳过 - 数值为 0 或报
No such file or directory:说明该核被isolcpus隔离、已 offline,或当前未启用 cpufreq 驱动(查ls /sys/devices/system/cpu/cpu0/cpufreq/是否存在) - 输出恒定不变:大概率 governor 是
powersave或ondemand,但没负载触发升频;可临时切到performance测试:echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
cpupower monitor 是唯一能持续采样每核频率波动的工具
它每秒输出一行,明确列出每个 cpuX 的当前频率(单位 kHz),格式规整,适合重定向进日志做长期分析。
但要注意:
Linux AI 服务器 — 将 Linux 服务器转换为本地 AI 推理集群。使用 systemd、NVIDIA CUDA 实现无头 Linux AI,零 GUI 开销。
- 必须 root 权限,且内核需启用对应驱动(如
CONFIG_X86_ACPI_CPUFREQ或intel_cpufreq) - 虚拟机中基本不可用——KVM/Xen 会屏蔽底层寄存器,
cpupower monitor直接退出或报错 - 默认无时间戳,若需对齐其他指标(如 perf 数据),得手动加
date前缀:while true; do date +"%s.%N"; sudo cpupower monitor -u 2>/dev/null | head -n 1; sleep 1; done
别信 lscpu | grep "CPU MHz" 的“当前频率”
它显示的是平均估算值,不是任一核心的瞬时值。空载时可能还卡在 2.4 GHz,而实际所有核都已降频到 800 MHz;高负载下也可能滞后于真实波动。
真正有用的字段其实是:
-
CPU max MHz:硬件支持的最高睿频上限(是否开启 Turbo Boost 会影响它是否生效) -
CPU min MHz:节能策略下能压到的最低频率(常见 800 MHz) - 这两项是稳定可预期的边界值,适合做 baseline 参考,而非判断此刻哪一核在满频跑
cpupower frequency-info --freq 看单核“此刻”最准,但只返回一个数
它绕过内核缓存,直接读硬件寄存器,结果比 /proc/cpuinfo 的 cpu MHz 更接近真实值,尤其在频率快速切换时更可靠。
不过:
- 输出是单个数值(如
current frequency: 3.20 GHz),不代表所有核心——它取的是调度器选中的“主核”或采样核 - 必须
sudo,否则报Permission denied;若提示No such file or directory,说明 cpufreq 驱动没加载(查dmesg | grep -i "cpu.*freq") - 它不告诉你这个值来自哪个核,也无法反映多核间差异——比如你怀疑某核被锁频或降频异常,光靠这个命令发现不了

















