温馨提示×

Linux CPUInfo 中的频率信息说明

小樊
41
2026-01-01 16:43:06
栏目: 智能运维

Linux CPUInfo 频率信息说明

一 核心字段与含义

  • 下表汇总了与频率最相关、且在日常排障中最常用的字段,涵盖 /proc/cpuinfolscpu/sys/devices/system/cpu/cpu/cpufreq/* 三类来源:
字段 所在位置 单位 含义与要点
cpu MHz /proc/cpuinfo MHz 每个逻辑 CPU 的“当前时钟频率”。在启用动态调频时,该值会随负载与电源策略实时变化。
CPU MHz / CPU max MHz / CPU min MHz lscpu MHz 分别为当前、最大、最小频率的汇总视图,便于快速了解频率范围与当前状态。
cpuinfo_cur_freq /sys/devices/system/cpu/cpu*/cpufreq/ kHz 从硬件寄存器读取的“当前频率”,精度更高;需系统启用 cpufreq
scaling_cur_freq /sys/devices/system/cpu/cpu*/cpufreq/ kHz cpufreq 子系统缓存的“当前频率”,可能不实时反映硬件寄存器;需启用 cpufreq
scaling_available_frequencies /sys/devices/system/cpu/cpu*/cpufreq/ kHz 该 CPU 支持的频率列表(步进档位)。
scaling_governor /sys/devices/system/cpu/cpu*/cpufreq/ 文本 当前调频策略(如 performance、powersave、ondemand、interactive、userspace),决定频率如何随负载变化。
BogoMIPS /proc/cpuinfo 无单位(百万次循环/秒) 内核启动时的空循环校准值,仅作粗略性能参考,不是主频,不可用于精确对比或性能评估。

二 读取与解读要点

  • 动态调频会导致“当前频率”在不同时间、不同核心上不一致;因此看到 cpu MHzscaling_cur_freq 低于标称最大值属于正常现象(受 governor、负载、温度与电源策略影响)。
  • 不同字段的精度与来源不同:/proc/cpuinfo 的 cpu MHz 与 lscpu 的 CPU MHz 多为近似值;/sys 下的 cpuinfo_cur_freq 来自硬件寄存器,更贴近真实瞬时频率,而 scaling_cur_freq 为缓存值。对比时应使用同一来源、同一时间点的值。
  • 在虚拟化或容器环境中,看到的是“被分配/可见”的 vCPU 频率视图,可能与物理机实际频率不同;同时某些环境可能限制对某些 /sys 调频接口的可见性或可写性。

三 常用命令与示例

  • 快速查看每个逻辑 CPU 的当前频率:cat /proc/cpuinfo | grep -E “processor|cpu MHz”
  • 查看频率范围与拓扑:lscpu(关注 CPU MHz / CPU max MHz / CPU min MHz 以及 CPU(s)、Core(s) per socket、Thread(s) per core
  • 查看实时频率与调频信息(需启用 cpufreq):
    • 当前硬件频率:cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq
    • 当前策略与可用策略:cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor;cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
    • 临时切换策略(需 root):echo “performance” | sudo tee /sys/devices/system/cpu/cpufreq/policy0/scaling_governor
  • 注意:不同发行版与内核版本中,策略名称与接口路径可能略有差异;部分嵌入式或精简系统可能未启用或导出完整的 cpufreq 接口。

0