关于CPU的基本概念、架构和核心参数可参见[1]。
本文介绍Linux下使用“/proc/cpuinfo”文件查看CPU信息(可以与官网根据CPU具体型号查得的信息进行比对验证)。
一、核心参数获取
1.1、CPU数量相关
- 物理CPU数量:
cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l
- 物理CPU Core数量:∑ 物理CPUk上物理CPU Core数量
- 逻辑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、其他
- 特定物理CPU上的物理CPU Core数量:找到指定物理CPU上任何一个逻辑CPU Core的描述段落,查看
cpu cores
字段值
- 特定物理CPU上的逻辑CPU数量:找到指定物理CPU上任何一个逻辑CPU Core的描述段落,查看
siblings
字段值
- 特定物理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