Linux CPUInfo 测试与核验方法
一、快速核验流程
二、常用命令与判定要点
| 命令 | 作用 | 关键字段/判定要点 |
|---|---|---|
| lscpu | 架构与拓扑汇总 | Architecture、CPU(s)、Thread(s) per core、Core(s) per socket、Model name、L1d/L1i/L2/L3 cache |
| cat /proc/cpuinfo | 每个逻辑CPU的原始参数 | processor、model name、cpu MHz、cache size、flags(如 vmx/svm 表示虚拟化) |
| sudo dmidecode -t processor | 物理插槽与硬件标识 | Socket Designation、Version、Max/Current Speed、Core/Thread Count |
| top/htop | 实时利用率与每核负载 | 按 1 展开各核;观察 %us、%sy、%id |
| cpufreq-info | 调频与策略 | current policy(min/max)、current CPU frequency |
| nproc | 可用逻辑核心数 | 直接输出数字,常用于 make -j$(nproc) |
| inxi -C / inxi -Fx | 综合硬件信息 | CPU 型号、核心/线程、缓存、温度 等扩展数据 |
| lshw -class processor | 硬件清单视图 | description/model、插槽与缓存层级 |
| cpuid | CPUID 底层特性 | brand 字符串、-r 原始寄存器值 |
| **dmesg | grep -i cpu** | 启动阶段 CPU 检测日志 |
三、自检脚本示例
#!/usr/bin/env bash
echo "=== lscpu ==="; lscpu
echo -e "\n=== /proc/cpuinfo 型号与频率(去重)===";
grep -m1 "model name" /proc/cpuinfo;
grep "cpu MHz" /proc/cpuinfo | sort -u
echo -e "\n=== 逻辑/物理核心数 ===";
echo "逻辑CPU总数: $(nproc)";
echo "物理CPU个数: $(grep -c ^processor /proc/cpuinfo)";
echo "物理核心总数: $(grep 'cpu cores' /proc/cpuinfo | sort -u | head -n1)";
echo "每核线程数: $(lscpu | awk '/Thread\(s\) per core/{print $NF}')"
echo -e "\n=== dmidecode 物理插槽与频率 ===";
sudo dmidecode -s processor-version 2>/dev/null || sudo dmidecode -t processor | egrep "Socket|Version|Max Speed|Current Speed"
echo -e "\n=== 虚拟化与指令集 ===";
grep -m1 "flags" /proc/cpuinfo | tr ' ' '\n' | egrep -i "vmx|svm|avx2|bmi2"
#!/usr/bin/env bash
cores_per_socket=$(lscpu | awk '/Core\(s\) per socket/{print $NF}')
threads_per_core=$(lscpu | awk '/Thread\(s\) per core/{print $NF}')
if [ "$threads_per_core" -gt 1 ]; then
echo "超线程已启用: 每核 $threads_per_core 线程"
else
echo "超线程未启用: 每核 $threads_per_core 线程"
fi
#!/usr/bin/env bash
echo "=== CPU 频率与策略 ==="; cpufreq-info | egrep "current policy|current CPU frequency"
四、常见问题与排查