0%

使用/proc/cpuinfo文件查看CPU信息

关于CPU的基本概念、架构和核心参数可参见[1]。

本文介绍Linux下使用“/proc/cpuinfo”文件查看CPU信息(可以与官网根据CPU具体型号查得的信息进行比对验证)。

一、核心参数获取

1.1、CPU数量相关

  1. 物理CPU数量:cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l
  2. 物理CPU Core数量:∑ 物理CPUk上物理CPU Core数量
  3. 逻辑CPU Core数量:cat /proc/cpuinfo | grep "processor" | wc -l

1.2、主频

cat /proc/cpuinfo每个逻辑CPU Core描述段落中:

  • cpu MHz字段值,表示工作实际主频
  • model name字段值中的频率,表示额定主频

1.3、缓存大小

cat /proc/cpuinfo每个逻辑CPU Core描述段落中的cache size字段值,在现代CPU架构中其表示L3 Cache大小,在较老CPU架构中其表示L2 Cache大小。

1.4、其他

  1. 特定物理CPU上的物理CPU Core数量:找到指定物理CPU上任何一个逻辑CPU Core的描述段落,查看cpu cores字段值
  2. 特定物理CPU上的逻辑CPU数量:找到指定物理CPU上任何一个逻辑CPU Core的描述段落,查看siblings字段值
  3. 特定物理CPU是否开启SMT技术:找到指定物理CPU上任何一个逻辑CPU Core的描述段落,当P(P = siblings字段值 / cpu cores字段值) != 1,则表示开启了SMT技术,且为P路-SMT

[备注] 在[1]中介绍SMT技术时,未阐明SMT技术的实现粒度是物理CPU还是物理CPU Core,一般情况下,实现粒度是物理CPU。

二、“/proc/cpuinfo”文件信息解释

2.1、一个样例

一个样例如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
processor	: 0
vendor_id : GenuineIntel
cpu family : 6
model : 63
model name : Intel(R) Xeon(R) CPU E5-2640 v3 @ 2.60GHz
stepping : 2
cpu MHz : 2600.092
cache size : 20480 KB
physical id : 0
siblings : 4
core id : 0
cpu cores : 2
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 15
wp : yes
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 rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 fma cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase smep erms
bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multihit srbds
bogomips : 5200.18
clflush size : 64
cache_alignment : 64
address sizes : 46 bits physical, 48 bits virtual
power management:

processor : 1
vendor_id : GenuineIntel
cpu family : 6
model : 63
model name : Intel(R) Xeon(R) CPU E5-2640 v3 @ 2.60GHz
stepping : 2
cpu MHz : 2600.092
cache size : 20480 KB
physical id : 0
siblings : 4
core id : 0
cpu cores : 2
apicid : 1
initial apicid : 1
fpu : yes
fpu_exception : yes
cpuid level : 15
wp : yes
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 rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 fma cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase smep erms
bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multihit srbds
bogomips : 5199.88
clflush size : 64
cache_alignment : 64
address sizes : 46 bits physical, 48 bits virtual
power management:

processor : 2
vendor_id : GenuineIntel
cpu family : 6
model : 63
model name : Intel(R) Xeon(R) CPU E5-2640 v3 @ 2.60GHz
stepping : 2
cpu MHz : 2600.092
cache size : 20480 KB
physical id : 0
siblings : 4
core id : 1
cpu cores : 2
apicid : 2
initial apicid : 2
fpu : yes
fpu_exception : yes
cpuid level : 15
wp : yes
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 rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 fma cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase smep erms
bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multihit srbds
bogomips : 5199.89
clflush size : 64
cache_alignment : 64
address sizes : 46 bits physical, 48 bits virtual
power management:

processor : 3
vendor_id : GenuineIntel
cpu family : 6
model : 63
model name : Intel(R) Xeon(R) CPU E5-2640 v3 @ 2.60GHz
stepping : 2
cpu MHz : 2600.092
cache size : 20480 KB
physical id : 0
siblings : 4
core id : 1
cpu cores : 2
apicid : 3
initial apicid : 3
fpu : yes
fpu_exception : yes
cpuid level : 15
wp : yes
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 rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 fma cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase smep erms
bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multihit srbds
bogomips : 5199.86
clflush size : 64
cache_alignment : 64
address sizes : 46 bits physical, 48 bits virtual
power management:

processor : 4
vendor_id : GenuineIntel
cpu family : 6
model : 63
model name : Intel(R) Xeon(R) CPU E5-2640 v3 @ 2.60GHz
stepping : 2
cpu MHz : 4160.092
cache size : 20480 KB
physical id : 1
siblings : 4
core id : 0
cpu cores : 2
apicid : 4
initial apicid : 4
fpu : yes
fpu_exception : yes
cpuid level : 15
wp : yes
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 rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 fma cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase smep erms
bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multihit srbds
bogomips : 5199.87
clflush size : 64
cache_alignment : 64
address sizes : 46 bits physical, 48 bits virtual
power management:

processor : 5
vendor_id : GenuineIntel
cpu family : 6
model : 63
model name : Intel(R) Xeon(R) CPU E5-2640 v3 @ 2.60GHz
stepping : 2
cpu MHz : 4160.092
cache size : 20480 KB
physical id : 1
siblings : 4
core id : 0
cpu cores : 2
apicid : 5
initial apicid : 5
fpu : yes
fpu_exception : yes
cpuid level : 15
wp : yes
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 rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 fma cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase smep erms
bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multihit srbds
bogomips : 5199.90
clflush size : 64
cache_alignment : 64
address sizes : 46 bits physical, 48 bits virtual
power management:

processor : 6
vendor_id : GenuineIntel
cpu family : 6
model : 63
model name : Intel(R) Xeon(R) CPU E5-2640 v3 @ 2.60GHz
stepping : 2
cpu MHz : 1300.092
cache size : 20480 KB
physical id : 1
siblings : 4
core id : 1
cpu cores : 2
apicid : 6
initial apicid : 6
fpu : yes
fpu_exception : yes
cpuid level : 15
wp : yes
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 rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 fma cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase smep erms
bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multihit srbds
bogomips : 5199.88
clflush size : 64
cache_alignment : 64
address sizes : 46 bits physical, 48 bits virtual
power management:

processor : 7
vendor_id : GenuineIntel
cpu family : 6
model : 63
model name : Intel(R) Xeon(R) CPU E5-2640 v3 @ 2.60GHz
stepping : 2
cpu MHz : 1300.092
cache size : 20480 KB
physical id : 1
siblings : 4
core id : 1
cpu cores : 2
apicid : 7
initial apicid : 7
fpu : yes
fpu_exception : yes
cpuid level : 15
wp : yes
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 rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 fma cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase smep erms
bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multihit srbds
bogomips : 5199.88
clflush size : 64
cache_alignment : 64
address sizes : 46 bits physical, 48 bits virtual
power management:

2.2、说明

“/proc/cpuinfo”文件结构以对一个逻辑CPU Core的描述为一个基本段,有N个逻辑CPU Core就有N段。

参数名称 参数含义 样例中的对应 参数层次说明
processor 逻辑CPU Core编号,从0开始。整体文件信息按照该编号值从小到大排序 0-7 逻辑CPU Core本层
vendor_id 逻辑CPU Core的制造厂商ID “GenuineIntel”表示英特尔公司 不确定继承自所在物理CPU Core还是所在物理CPU,一般继承自所在物理CPU
cpu family 逻辑CPU Core的CPU系列,即“微处理器架构代号” 6 不确定继承自所在物理CPU Core还是所在物理CPU,一般继承自所在物理CPU
model 逻辑CPU Core在具体CPU系列中的CPU具体型号,搜索时须转换成十六进制 63,即0x3f 不确定继承自所在物理CPU Core还是所在物理CPU,一般继承自所在物理CPU
model name 逻辑CPU Core型号名称,包括“品牌商标”,“具体产品编号”,“CPU额定主频”等信息 “Intel(R) Xeon(R)”:英特尔公司的至强品牌(英特尔品牌商标另外还有Intel(R) Core(TM)-英特尔酷睿品牌Intel(R) Pentium(TM)-英特尔奔腾品牌Intel(R) Celeron(TM)-英特尔赛扬品牌等)
“E5-2640 v3”:具体产品编号
“2.60GHz”:额定主频
不确定继承自所在物理CPU Core还是所在物理CPU,一般继承自所在物理CPU
stepping 逻辑CPU Core的更新步进,表示版本小升级编号 2 不确定继承自所在物理CPU Core还是所在物理CPU,一般继承自所在物理CPU
cpu MHz 逻辑CPU Core的工作实际主频 1300.092/2600.092/4160.092 不确定继承自所在物理CPU Core还是所在物理CPU,一般继承自所在物理CPU Core
cache size 逻辑CPU Core的L3 Cache大小 20480KB 继承自所在物理CPU
physical id 逻辑CPU Core所在物理CPU的编号 有两个物理CPU,编号分别为0和1 继承自所在物理CPU
siblings 逻辑CPU Core所在物理CPU上的逻辑CPU Core数量 物理CPU 0上有2个物理CPU Core,每个物理CPU Core开启2路超线程技术(*2),故共有2 * 2 = 4个逻辑CPU Core;物理CPU 1相同 继承自所在物理CPU
core id 逻辑CPU Core所在物理CPU Core在所在物理CPU中的编号 物理CPU 0中有两个物理CPU Core,该两个物理CPU Core在物理CPU 0中的编号分别为0和1;物理CPU 1中有两个物理CPU Core,该两个物理CPU Core在物理CPU 1中的编号分别为0和1 继承自所在物理CPU Core
cpu cores 逻辑CPU Core所在物理CPU中含有的物理CPU Core数量 物理CPU 0含有2个物理CPU Core;物理CPU 1含有2个物理CPU Core 继承自所在物理CPU
apicid 用来区分不同逻辑CPU Core的编号,不同逻辑CPU Core的此编号必然不同 0-7 逻辑CPU Core本层
initial apicid 用来区分不同逻辑CPU Core的编号,不同逻辑CPU Core的此编号必然不同 0-7 逻辑CPU Core本层
fpu 逻辑CPU Core是否具有浮点运算单元(Floating Point Unit) yes 不确定继承自所在物理CPU Core还是所在物理CPU,一般继承自所在物理CPU Core
fpu_exception 逻辑CPU Core是否支持浮点计算异常 yes 不确定继承自所在物理CPU Core还是所在物理CPU,一般继承自所在物理CPU Core
cpuid level 执行cpuid指令前,EAX寄存器中的值,根据不同的值,cpuid指令会返回不同的内容 15 /
wp 逻辑CPU Core是否支持内核态对用户空间的写保护(Write Protection) yes 不确定继承自所在物理CPU Core还是所在物理CPU,一般继承自所在物理CPU Core
flags 逻辑CPU Core支持的功能,比如“vmx表示支持虚拟化”,“aes表示针对AES算法进行了硬件优化”,“ht表示支持超线程技术”等 fpu vme de ... 不确定继承自所在物理CPU Core还是所在物理CPU,一般继承自所在物理CPU Core
bugs 逻辑CPU Core所修复的补丁 cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multihit srbds 不确定继承自所在物理CPU Core还是所在物理CPU,一般继承自所在物理CPU Core
bogomips 逻辑CPU Core在系统内核启动时粗略测算的速度(Million Instructions Per Second) 5199.90 不确定继承自所在物理CPU Core还是所在物理CPU,一般继承自所在物理CPU Core
clflush size 逻辑CPU Core的每次刷新缓存的大小单位 64 不确定继承自所在物理CPU Core还是所在物理CPU,一般继承自所在物理CPU Core
cache_alignment 逻辑CPU Core的高速缓存地址对齐单位 64 不确定继承自所在物理CPU Core还是所在物理CPU,一般继承自所在物理CPU Core
address sizes 逻辑CPU Core的可访问地址空间位数 46 bits physical, 48 bits virtual 不确定继承自所在物理CPU Core还是所在物理CPU,一般继承自所在物理CPU Core
power management 逻辑CPU Core对能源管理的支持 / 不确定继承自所在物理CPU Core还是所在物理CPU,一般继承自所在物理CPU Core

参考文献

[1]《CPU》
[2]http://www.linfo.org/proc_cpuinfo.html
[3]https://www.intel.cn/content/www/cn/zh/processors/processor-numbers.html
[4]https://www.tecmint.com/check-linux-cpu-information/
[5]https://www.cnblogs.com/wxxjianchi/p/10522049.html
[6]https://zhuanlan.zhihu.com/p/68239031
[7]https://doc.callmematthi.eu/static/webArticles/Understanding%20Linux%20_proc_cpuinfo.pdf
[8]https://superuser.com/questions/1093689/what-does-r-and-tm-mean-in-intel-brand-name
[9]man /proc/cpuinfo

您的支持将鼓励我继续分享!