在 Linux 下,/proc/cpuinfo 是最常用的 CPU 信息来源。下面从结构说明 → 字段含义 → 解析方法(命令/脚本)→ 实战示例一步步讲清楚。
/proc/cpuinfo 是 内核导出的虚拟文件,描述了系统中每个 逻辑 CPU(线程) 的信息。
cat /proc/cpuinfo
每个 processor 块代表一个逻辑 CPU。
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 142
model name : Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz
flags : fpu vme de pse tsc msr ...
⚠️ 注意:
processor = 几个 逻辑 CPU| 字段 | 含义 |
|---|---|
| processor | 逻辑 CPU 编号(从 0 开始) |
| vendor_id | CPU 厂商(Intel / AMD) |
| cpu family / model | CPU 微架构标识 |
| model name | 可读的 CPU 名称 |
| physical id | 物理 CPU 编号(多路服务器) |
| core id | 物理核编号 |
| siblings | 该物理 CPU 的逻辑 CPU 数 |
| cpu cores | 该物理 CPU 的物理核数 |
| flags | 支持的 CPU 特性(如 avx, sse) |
| bogomips | 性能近似指标(不精确) |
grep -c processor /proc/cpuinfo
grep "physical id" /proc/cpuinfo | sort -u | wc -l
grep "cpu cores" /proc/cpuinfo | uniq
# 逻辑 CPU / 物理核
echo "逻辑CPU: $(grep -c processor /proc/cpuinfo)"
echo "物理核: $(grep 'cpu cores' /proc/cpuinfo | uniq)"
如果:
逻辑CPU > 物理核 → 超线程开启
grep "model name" /proc/cpuinfo | uniq
grep avx /proc/cpuinfo
#!/bin/bash
echo "逻辑CPU数: $(grep -c processor /proc/cpuinfo)"
echo "物理CPU数: $(grep 'physical id' /proc/cpuinfo | sort -u | wc -l)"
echo "每CPU物理核数: $(grep 'cpu cores' /proc/cpuinfo | uniq)"
echo "CPU型号: $(grep 'model name' /proc/cpuinfo | uniq)"
with open('/proc/cpuinfo') as f:
info = f.read()
processors = info.split('\n\n')
for p in processors:
if 'processor' in p:
print(p)
或提取关键字段:
import re
with open('/proc/cpuinfo') as f:
data = f.read()
model = re.search(r'model name\s+:\s+(.*)', data)
print(model.group(1))
lscpu 本质就是 解析 /proc/cpuinfo + sysfs
lscpu
更结构化,适合人类阅读。
❌ 把 processor 数量当物理核
❌ 用 bogomips 衡量性能
❌ 忽略 physical id(多路服务器)
如果你愿意,可以告诉我:
我可以直接给你对应方案。