关于CPU的基本概念、架构和核心参数可参见《CPU》。
在《使用/proc/cpuinfo文件查看CPU信息》中介绍了使用“/proc/cpuinfo”文件查看CPU信息,本文介绍使用lscpu
命令查看CPU信息(可以与官网根据CPU具体型号查得的信息进行比对验证)。lscpu
命令汇集了“/proc/cpuinfo文件”,“sysfs文件系统”等来源中的CPU相关信息,处理后以强可读性形式进行呈现。
本文介绍所基于的lscpu
命令版本为“util-linux 2.34”。
一、核心参数获取
1.1、CPU数量相关
- 物理CPU数量:执行
lscpu
命令结果中的Socket(s)
字段 - 物理CPU Core数量:执行
lscpu
命令结果中的Core(s) per socket
字段(准确来说,该值只是第一个逻辑CPU Core所在物理CPU上的物理CPU Core数量,其他物理CPU上的物理CPU Core数量可能不同) - 逻辑CPU Core数量:执行
lscpu
命令结果中的CPU(s)
字段
1.2、主频
- 工作实际主频:执行
lscpu
命令结果中的CPU MHz
字段(准确来说,该值只是第一个逻辑CPU Core的工作实际主频)
1.3、缓存大小
- L1d cache(用于存储指令的一级高速缓存):执行
lscpu
命令结果中的L1d cache
字段(准确来说,该值只是第一个逻辑CPU Core所在物理CPU Core的L1d cache) - L1i cache(用于存储数据的一级高速缓存):执行
lscpu
命令结果中的L1i cache
字段(准确来说,该值只是第一个逻辑CPU Core所在物理CPU Core的L1i cache) - L2 cache(二级高速缓存):执行
lscpu
命令结果中的L2 cache
字段(准确来说,该值只是第一个逻辑CPU Core所在物理CPU Core的L2 cache) - L3 cache(三级高速缓存):执行
lscpu
命令结果中的L3 cache
字段(准确来说,该值只是第一个逻辑CPU Core所在物理CPU的L3 cache)
二、lscpu
命令使用说明
2.1、执行lscpu
命令
2.1.1、一个样例结果
执行lscpu
命令的一个样例结果如下:
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 8
On-line CPU(s) list: 0-7
Thread(s) per core: 2
Core(s) per socket: 2
Socket(s): 2
NUMA node(s): 2
Vendor ID: GenuineIntel
CPU family: 6
Model: 63
Model name: Intel(R) Xeon(R) CPU E5-2650 v3 @ 2.30GHz
Stepping: 2
CPU MHz: 2600.092
BogoMIPS: 5199.90
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 20480K
NUMA node0 CPU(s): 0,2,4,6
NUMA node1 CPU(s): 1,3,5,7
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36
clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdt
scp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonst
op_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 s
sse3 sdbg fma cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt
tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm epb invpcid_s
ingle tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 av
x2 smep bmi2 erms invpcid cqm xsaveopt cqm_llc cqm_occup_llc dtherm ida
arat pln pts
2.1.2、执行lscpu
命令结果字段说明
在执行lscpu
命令的结果中,除了CPU(s)
,On-line CPU(s) list
,Socket(s)
,NUMA node(s)
,NUMA node0 CPU(s)
,NUMA node1 CPU(s)
字段表征整个CPU架构的统计值外,其他字段都表征第一个逻辑CPU Core的相关参数值。
接下来为方便叙述,以“CPU0”代指第一个逻辑CPU Core。
参数名称 | 参数含义 | 样例中的对应 | 参数层次说明 |
---|---|---|---|
Architecture | CPU0的CPU架构 | x86_64 | 不确定继承自所在物理CPU Core还是所在物理CPU,一般继承自所在物理CPU |
CPU op-mode(s) | CPU0的CPU运行模式 | 32-bit, 64-bit | 不确定继承自所在物理CPU Core还是所在物理CPU,一般继承自所在物理CPU |
Byte Order | CPU0的CPU字节序 | Little Endian | 不确定继承自所在物理CPU Core还是所在物理CPU,一般继承自所在物理CPU |
CPU(s) | 逻辑CPU Core数量 | 8 | / |
On-line CPU(s) list | 在线(即生效的)逻辑CPU Core编号列表 | 0-7 | / |
Thread(s) per core | CPU0所在物理CPU Core允许同时执行的线程数,当值为P时,即P路SMT | 2 | 继承自所在物理CPU Core |
Core(s) per socket | CPU0所在物理CPU上的物理CPU Core数量 | 2 | 继承自所在物理CPU |
Socket(s) | 座数,即物理CPU数量 | 2 | / |
NUMA node(s) | NUMA节点数量 | 2 | / |
Vendor ID | CPU0的制造厂商ID | GenuineIntel(表示英特尔公司) | 不确定继承自所在物理CPU Core还是所在物理CPU,一般继承自所在物理CPU |
CPU family | CPU0的CPU系列,即“微处理器架构代号” | 6 | 不确定继承自所在物理CPU Core还是所在物理CPU,一般继承自所在物理CPU |
Model | CPU0的在具体CPU系列中的CPU具体型号,搜索时须转换成十六进制 | 63,即0x3f |
不确定继承自所在物理CPU Core还是所在物理CPU,一般继承自所在物理CPU |
Model Name | CPU0的型号名称,包括“品牌商标”,“具体产品编号”,“CPU额定主频”等信息 | “Intel(R) Xeon(R)”:英特尔公司的至强品牌(英特尔品牌商标另外还有Intel(R) Core(TM)-英特尔酷睿品牌 ,Intel(R) Pentium(TM)-英特尔奔腾品牌 ,Intel(R) Celeron(TM)-英特尔赛扬品牌 等)“E5-2650 v3”:具体产品编号 “2.30GHz”:额定主频 |
不确定继承自所在物理CPU Core还是所在物理CPU,一般继承自所在物理CPU |
Stepping | CPU0的更新步进,表示版本小升级编号 | 2 | 不确定继承自所在物理CPU Core还是所在物理CPU,一般继承自所在物理CPU |
CPU MHz | CPU0的工作实际主频 | 2600.092 | 不确定继承自所在物理CPU Core还是所在物理CPU,一般继承自所在物理CPU Core |
BogoMIPS | CPU0在系统内核启动时粗略测算的速度(Million Instructions Per Second) | 5199.90 | 不确定继承自所在物理CPU Core还是所在物理CPU,一般继承自所在物理CPU Core |
Virtualization | CPU0是否支持虚拟化 | VT-x | 不确定继承自所在物理CPU Core还是所在物理CPU,一般继承自所在物理CPU Core |
L1d cache | CPU0的L1d Cache大小 | 32K | 继承自所在物理CPU Core |
L1i cache | CPU0的L1i Cache大小 | 32K | 继承自所在物理CPU Core |
L2 cache | CPU0的L2 Cache | 256K | 继承自所在物理CPU Core |
L3 cache | CPU0的L3 Cache大小 | 20480K | 继承自所在物理CPU |
NUMA node0 CPU(s) | NUMA node0节点管控的逻辑CPU Core列表 | 0,2,4,6 | |
NUMA node1 CPU(s) | NUMA node1节点管控的逻辑CPU Core列表 | 1,3,5,7 | |
Flags | CPU0支持的功能 | fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36... |
不确定继承自所在物理CPU Core还是所在物理CPU,一般继承自所在物理CPU Core |
2.2、执行lscpu -e
命令
2.2.1、一个样例结果
执行lscpu -e
命令的一个样例结果如下:
CPU NODE SOCKET CORE L1d:L1i:L2:L3 ONLINE
0 0 0 0 0:0:0:0 yes
1 1 1 1 1:1:1:1 yes
2 0 0 2 2:2:2:0 yes
3 1 1 3 3:3:3:1 yes
4 0 0 0 0:0:0:0 yes
5 1 1 1 1:1:1:1 yes
6 0 0 2 2:2:2:0 yes
7 1 1 3 3:3:3:1 yes
2.2.2、执行lscpu -e
命令结果字段说明
列名称 | 列含义 | 样例中的对应 |
---|---|---|
CPU | 逻辑CPU Core编号 | 0-7 |
NODE | NUMA节点编号 | 0-1 |
SOCKET | 物理CPU编号 | 0-1 |
CORE | 物理CPU Core编号,须注意,编号规则跟“/proc/cpuinfo”中不一致,详见备注1 | 0-3 |
L1d:L1i:L2:L3 | L1d,L1i,L2,L3 Cache 的所属情况说明:1) L1d,L1i,L2 指明所属物理CPU Core2) L3 指明所属物理CPU |
3:3:3:1 :1) L1d:L1i:L2 属于编号为3的物理CPU Core2) L3 属于编号为1的物理CPU |
ONLINE | 表明逻辑CPU Core是否在线 | yes |
[备注1] 对于物理CPU Core编号,/proc/cpuinfo
和lscpu -e
中两处编号规则不一致,以两个物理CPU(CPU-A和CPU-B):CPU-A内两个物理CPU Core(CPU-A-0和CPU-A-1);CPU-B内两个物理CPU Core(CPU-B-0和CPU-B-1)
为例进行说明:1)在“/proc/cpuinfo”中,以单物理CPU为单元,在其内进行编号,故有一种编号方案[CPU-A-0]:0;[CPU-A-1]:1;[CPU-B-0]:0;[CPU-B-1]:1
;2)在“lscpu -e”中,以所有物理CPU为单元,在其内进行编号,故有一种编号方案[CPU-A-0]:0;[CPU-A-1]:1;[CPU-B-0]:2;[CPU-B-1]:3
参考文献
[1]《CPU》
[2]https://www.tecmint.com/check-linux-cpu-information/
[3]man lscpu
[4]https://blog.csdn.net/weixin_39974409/article/details/110893710