Ubuntu 下用 CPUInfo 诊断 CPU 问题的实用流程
一、快速定位与核对关键指标
- 使用以下命令获取结构化与原始信息,并核对关键字段:
- 结构化总览:运行 lscpu,重点看 Architecture、CPU(s)、Thread(s) per core、Core(s) per socket、Socket(s)、Model name、CPU MHz、Flags。
- 原始明细:运行 cat /proc/cpuinfo,关注 processor、model name、cpu MHz、cache size、flags。
- 物理插槽与型号:运行 sudo dmidecode -t processor,查看 Version、Max Speed、Current Speed、Core Count、Thread Count。
- 快速汇总:运行 nproc(逻辑处理器数量)。
- 计算与核对公式:
- 总逻辑CPU数 = Socket(s) × Core(s) per socket × Thread(s) per core
- 总物理核心数 = Socket(s) × Core(s) per socket
- 示例:若 CPU(s)=8、Thread(s) per core=2、Core(s) per socket=4、Socket(s)=1,则逻辑CPU为 8,物理核心为 4,启用超线程(2线程/核)。
二、常见症状与对应检查
- 症状:系统识别到的 CPU 数量或型号与采购/BIOS 不一致
- 检查:lscpu 的 CPU(s)/Socket(s)/Core(s) 与 dmidecode -t processor 的 Version/Thread Count/Core Count 是否一致;若不一致,优先更新 BIOS/UEFI 与内核,再复测。
- 症状:程序报“非法指令/不支持的指令”
- 检查:/proc/cpuinfo 的 flags 是否包含所需特性(如 sse4_2、avx、avx2、aes 等);必要时用 cpuid | grep -i brand 复核品牌与特性位。
- 症状:虚拟机/云主机性能异常或特性缺失
- 检查:lscpu 中的 Hypervisor vendor、Virtualization type;若显示 KVM/VirtualBox/VMware 等,说明处于虚拟化环境,部分指令/频率策略会受限,需在宿主机侧排查。
- 症状:CPU 频率未按预期升降或只显示低频
- 检查:lscpu 的 CPU MHz(当前频率)与 Model name(标称频率);若持续偏低,排查 节能/调频策略(如 powersave)、散热与电源计划。
- 症状:负载高但看不到热点进程
- 检查:top/htop 按 1 展开所有核,配合 mpstat -P ALL 1 定位是单核飙升还是整体吃满;用 perf top 做热点函数定位。
三、进阶定位与工具
- 拓扑与亲和性:用 lstopo 查看 NUMA 节点/套接字/核心/线程 拓扑,排查跨 NUMA 访问导致的性能问题;结合 numactl 做亲和性绑定验证。
- 综合硬件信息:用 inxi -C/-Fx 快速汇总 CPU、缓存、温度与驱动信息,便于对比历史与工单记录。
- 低级特性核对:用 cpuid 读取 CPUID 原始寄存器,验证 brand string 与 feature flags,用于疑难问题与兼容性验证。
四、一键诊断命令清单
- 基础核对
- lscpu
- cat /proc/cpuinfo | egrep ‘processor|model name|cpu MHz|cache size|flags’
- sudo dmidecode -t processor
- nproc
- 数量与拓扑
- 物理CPU数:cat /proc/cpuinfo | grep “physical id” | sort -u | wc -l
- 每颗物理CPU核心数:cat /proc/cpuinfo | grep “cpu cores” | uniq
- 逻辑CPU数:cat /proc/cpuinfo | grep “processor” | wc -l
- 是否启用超线程:比较同一物理CPU内不同逻辑处理器的 core id 是否重复(相同 core id 且不同 processor 表示超线程开启)
- 负载与热点
- top/htop(按 1 展开各核)
- mpstat -P ALL 1
- perf top
- 虚拟化与特性
- lscpu | egrep ‘Hypervisor|Virtualization’
- cpuid | grep -i brand
- 拓扑可视化