在Linux系统中,可以通过多种方式获取CPU核心的详细信息。以下是几种常用方法和关键参数解释:
/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型号和主频。
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
优势: 信息更结构化,直接显示物理核心、逻辑核心、超线程等关键参数。
nproc
获取逻辑核心数nproc # 输出逻辑CPU核心总数(包括超线程)
nproc --all # 等同于默认行为
getconf
获取核心数getconf _NPROCESSORS_ONLN # 在线逻辑核心数
getconf _NPROCESSORS_CONF # 配置的逻辑核心数
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
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核心参数,适用于性能调优、虚拟化配置或硬件验证等场景。