关于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
命令的一个样例结果如下:
1 | Architecture: x86_64 |
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
命令的一个样例结果如下:
1 | CPU NODE SOCKET CORE L1d:L1i:L2:L3 ONLINE |
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