/proc/cpuinfo 的 cpu mhz 字段可轻量获取各逻辑核心实时频率,但为内核缓存值、有毫秒级滞后;cpupower frequency-info --freq 直读硬件寄存器更准但仅返回单核频率且需 root;cpupower monitor 可持续输出每核频率波动,单位 khz,需 root 且依赖内核配置;lscpu 的 cpu mhz 是平均估算值,非实时。

直接读 /proc/cpuinfo 获取全部核心当前频率
每个逻辑核心的实时运行频率就藏在 /proc/cpuinfo 里,cpu MHz 字段是轻量、无需权限、开箱即用的方式。执行:
grep "cpu MHz" /proc/cpuinfo
输出类似:
cpu MHz : 800.000 cpu MHz : 4200.000 cpu MHz : 4100.000 cpu MHz : 800.000
这四行对应四个逻辑核心(比如双核四线程)的当前瞬时频率(单位 MHz)。注意:
-
cpu MHz是内核缓存值,有轻微滞后(毫秒级),但对日常观察足够; - 别用
head -n 1只取第一个——多核频率可能完全不同,空闲核常压到 800,满载核可能冲到 4.5 GHz; - 该值受睿频、电源策略、温度 throttling 影响,不是标称频率;
- 虚拟机中该字段可能恒定或不准(KVM/Xen 通常屏蔽底层频率反馈)。
用 cpupower frequency-info --freq 看单核更准的实际频率
如果需要绕过内核缓存、直读硬件寄存器(比如调试频率跳变异常或验证降频是否生效),cpupower frequency-info --freq 更可靠:
sudo cpupower frequency-info --freq
它返回一个数值(如 3200000),单位是 kHz,即 3.2 GHz。但关键限制是:
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
- 必须 root 权限;
- 只返回“当前采样核”的频率(通常是 cpu0 或调度主核),不代表所有核;
- 部分发行版默认不装:Ubuntu/Debian 需
apt install linux-tools-$(uname -r),RHEL/CentOS 需yum install kernel-tools; - 结果虽准,但仍是单点快照,无法反映多核并行差异。
用 cpupower monitor 实时监控各核频率波动
要观察负载变化时各核如何动态调频(比如跑 stress-ng -c 4 时哪几个核先升频、是否均衡),cpupower monitor 是唯一能持续输出每核频率的工具:
sudo cpupower monitor
输出格式为:
[17:23:45] cpu0: 3200000 kHz cpu1: 800000 kHz cpu2: 4200000 kHz cpu3: 4200000 kHz
每秒一行,清晰对应每个逻辑 CPU。容易踩的坑:
- 需 root 权限,且内核必须启用
CONFIG_X86_ACPI_CPUFREQ(多数现代发行版默认开启); - 虚拟机中基本不可用(MSR 寄存器被屏蔽);
- 默认无时间戳,若需对齐其他指标(如
perf stat输出),得加前缀:stdbuf -oL -eL watch -n 1 'date "+%T"; sudo cpupower monitor | head -n 1'; - 输出单位是 kHz,别和
/proc/cpuinfo的 MHz 混淆(除以 1000 即可换算)。
别把 lscpu 的 CPU MHz 当实时值用
lscpu | grep "CPU MHz" 显示的是内核估算的“平均频率”,不是任一核心的当前值。它更适合做 baseline 参考,比如对比 performance 和 powersave 模式下的整体趋势。真正有用的字段是:
-
CPU max MHz:硬件支持的最高睿频上限(BIOS 开启 Turbo Boost 后才生效); -
CPU min MHz:节能模式下能压到的最低频率(常见 800 MHz); -
Model name中的 @ 符号后数值(如@ 3.70GHz)才是官方标称基础频率。
复杂点在于:多插槽系统中,不同物理 CPU 的 CPU max MHz 可能不同;而 cpupower frequency-info 默认只报告当前 socket 的值,跨 socket 需手动切换 cpuX 绑定再查。










