Linux CPUInfo 监控指南
一 静态信息查看与关键指标
- 使用 lscpu 获取整体拓扑与频率:关注 Architecture、CPU(s)、Thread(s) per core、Core(s) per socket、Socket(s)、Model name、CPU MHz、CPU max MHz/CPU min MHz、NUMA node(s)、L1/L2/L3 cache。示例:lscpu。
- 读取 /proc/cpuinfo 获取每个逻辑核细节:关注 processor、vendor_id、model name、cpu MHz、cache size、physical id、core id、siblings、flags。常用过滤:
- 逻辑核心数:grep -c ^processor /proc/cpuinfo 或 grep ‘processor’ /proc/cpuinfo | wc -l
- 物理CPU数:grep ‘physical id’ /proc/cpuinfo | sort -u | wc -l
- 每物理CPU核心数:grep ‘cpu cores’ /proc/cpuinfo | head -1
- 型号:grep ‘model name’ /proc/cpuinfo | uniq
- 使用 dmidecode -t processor 查看硬件规格(需 root):关注 Manufacturer、Socket Designation、Version、Max Speed、Current Speed、Core Count、Thread Count、Characteristics(如虚拟化支持)。
- 快速脚本取值:nproc(可用逻辑核心数);inxi -C(简洁CPU规格);hwinfo --cpu(更详细的硬件描述)。
二 实时监控与性能观测
- 整体与逐核使用率:top/htop。top 按 1 展开每个核心;htop 以条形图显示,更直观。
- 多核利用率与调度统计:mpstat -P ALL(需安装 sysstat)。关注 %usr、%sys、%idle、%iowait、%irq、%soft、%steal,定位CPU瓶颈与中断风暴。
- 频率与调频策略:cpufreq-info(需安装 cpufrequtils)。关注 current policy(min/max)、current CPU frequency、available frequency steps,验证 Turbo/节能 是否生效。
- 启动阶段CPU初始化信息:dmesg | grep -i cpu,辅助排查硬件识别与兼容性问题。
三 一键巡检脚本示例
#!/usr/bin/env bash
echo "=== CPU 静态信息 ==="
lscpu | egrep '^(Architecture|CPU\(s\)|Thread\(s\) per core|Core\(s\) per socket|Socket\(s\)|Model name|CPU MHz|CPU max MHz|CPU min MHz|NUMA node\(s\)|L[1-3] cache)'
echo -e "\n=== CPU 拓扑与计数 ==="
echo "逻辑CPU数: $(nproc)"
echo "物理CPU数: $(grep 'physical id' /proc/cpuinfo | sort -u | wc -l)"
echo "每物理CPU核心数: $(grep 'cpu cores' /proc/cpuinfo | head -1)"
echo "型号: $(grep 'model name' /proc/cpuinfo | uniq)"
echo -e "\n=== 频率与调频策略 ==="
if command -v cpufreq-info >/dev/null 2>&1; then
cpufreq-info | egrep 'current policy|current CPU frequency|available frequency steps'
else
echo "提示: 未安装 cpufrequtils(cpufreq-info)"
fi
echo -e "\n=== 实时使用率(5秒采样)==="
if command -v mpstat >/dev/null 2>&1; then
mpstat -P ALL 1 5
else
echo "提示: 未安装 sysstat(mpstat)"
fi
- 建议以普通用户运行;若需查看完整硬件标识(如序列号),可在相关命令前加 sudo。
四 常见排错与优化建议
- 逻辑核心与物理核心易混:用 CPU(s) = Socket(s) × Core(s) per socket × Thread(s) per core 校验;若 Thread(s) per core > 1 表示启用超线程。
- 频率不按预期:用 cpufreq-info 检查 policy/min/max 与 current frequency;确认节能/性能模式与 BIOS 设置。
- 虚拟机环境:部分信息(如型号、频率步长)可能由宿主机/虚拟化平台抽象,需结合 lscpu 的 Hypervisor vendor/type 与平台监控一起判断。
- 容器/受限环境:nproc 可能受 cgroup 限制,小于物理机可用核心数;以实际运行环境为准。