关于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