插件窝 干货文章 Linux CPUInfo如何获取核心参数

Linux CPUInfo如何获取核心参数

核心 物理 CPU 线程 874    来源:    2025-05-09

在Linux系统中,可以通过多种方式获取CPU核心的详细信息。以下是几种常用方法和关键参数解释:


1. 使用 /proc/cpuinfo 文件

cat /proc/cpuinfo

输出示例:

processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 158
model name      : Intel(R) Core(TM) i7-8700K CPU @ 3.70GHz
stepping        : 10
microcode       : 0x96
cpu MHz         : 3696.000
cache size      : 12288 KB
physical id     : 0
siblings        : 12
core id         : 0
cpu cores       : 6
...

关键参数说明: - processor:逻辑CPU编号(超线程启用时可能多于物理核心数)。 - physical id:物理CPU插槽编号(多路服务器中区分不同物理CPU)。 - core id:单个物理CPU内的核心编号。 - cpu cores:当前物理CPU中的物理核心数(如6表示6核)。 - siblings:单个物理CPU的逻辑核心数(如12表示超线程后每个物理核对应2个逻辑核)。 - model name:CPU型号和主频。


2. 使用 lscpu 命令(推荐)

lscpu

输出示例:

Architecture:        x86_64
CPU op-mode(s):      32-bit, 64-bit
Byte Order:          Little Endian
CPU(s):              12           # 总逻辑核心数
On-line CPU(s) list: 0-11
Thread(s) per core:  2            # 每个物理核的线程数(超线程)
Core(s) per socket:  6            # 每个物理CPU的物理核心数
Socket(s):          1             # 物理CPU数量
NUMA node(s):       1
Vendor ID:           GenuineIntel
Model name:          Intel(R) Core(TM) i7-8700K CPU @ 3.70GHz
CPU MHz:             3696.000
L1d cache:           32K
L1i cache:           32K
L2 cache:            256K
L3 cache:            12288K

优势: 信息更结构化,直接显示物理核心、逻辑核心、超线程等关键参数。


3. 使用 nproc 获取逻辑核心数

nproc      # 输出逻辑CPU核心总数(包括超线程)
nproc --all # 等同于默认行为

4. 使用 getconf 获取核心数

getconf _NPROCESSORS_ONLN   # 在线逻辑核心数
getconf _NPROCESSORS_CONF   # 配置的逻辑核心数

5. 脚本化提取特定参数

获取物理核心数(忽略超线程)

grep -c ^processor /proc/cpuinfo     # 逻辑核心总数
grep ^cpu\\scores /proc/cpuinfo | uniq | awk '{print $4}'  # 物理核心总数

或通过 lscpu

lscpu | grep -E '^Core|^Socket|^CPU\(' | awk '{print $2}' | paste -sd " "
# 输出示例:6 1 12 (物理核心数/CPU插槽数/逻辑核心数)

判断是否启用超线程

if [ $(grep ^processor /proc/cpuinfo | wc -l) -gt $(grep ^cpu\\scores /proc/cpuinfo | uniq | awk '{print $4}') ]; then 
  echo "超线程已启用"; 
else 
  echo "超线程未启用"; 
fi

6. 其他工具

  • dmidecode(需root权限): bash sudo dmidecode -t processor # 获取CPU硬件详细信息(型号、缓存等)
  • cpuid 命令(需安装): bash sudo apt install cpuid # Debian/Ubuntu cpuid # 显示底层CPU指令集信息

关键参数总结

参数 含义
CPU(s) (lscpu) 系统总逻辑核心数(含超线程)
Core(s) per socket 单个物理CPU的物理核心数
Socket(s) 物理CPU数量(多路服务器)
Thread(s) per core 超线程状态(2表示启用)

通过以上方法,可以全面获取Linux系统的CPU核心参数,适用于性能调优、虚拟化配置或硬件验证等场景。