通过/proc/cpuinfo查看cpu信息
查看cpu信息
[root@localhost ~]# cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 79
model name : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
stepping : 1
microcode : 0xb000021
cpu MHz : 1241.789
cache size : 20480 KB
physical id : 0
siblings : 16
core id : 0
cpu cores : 8
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 20
wp : yes
flags : ……
bogomips : 4199.77
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 : 79
model name : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
stepping : 1
microcode : 0xb000021
cpu MHz : 1199.871
cache size : 20480 KB
physical id : 1
siblings : 16
core id : 0
cpu cores : 8
apicid : 16
initial apicid : 16
fpu : yes
fpu_exception : yes
cpuid level : 20
wp : yes
flags : ……
bogomips : 4203.77
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 : 79
model name : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
stepping : 1
microcode : 0xb000021
cpu MHz : 1299.949
cache size : 20480 KB
physical id : 0
siblings : 16
core id : 1
cpu cores : 8
apicid : 2
initial apicid : 2
fpu : yes
fpu_exception : yes
cpuid level : 20
wp : yes
flags : ……
bogomips : 4199.77
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 : 79
model name : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
stepping : 1
microcode : 0xb000021
cpu MHz : 1215.292
cache size : 20480 KB
physical id : 1
siblings : 16
core id : 1
cpu cores : 8
apicid : 18
initial apicid : 18
fpu : yes
fpu_exception : yes
cpuid level : 20
wp : yes
flags : fpu ……
bogomips : 4203.77
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 : 79
model name : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
stepping : 1
microcode : 0xb000021
cpu MHz : 1199.953
cache size : 20480 KB
physical id : 0
siblings : 16
core id : 2
cpu cores : 8
apicid : 4
initial apicid : 4
fpu : yes
fpu_exception : yes
cpuid level : 20
wp : yes
flags : fpu ……
bogomips : 4199.77
clflush size : 64
cache_alignment : 64
address sizes : 46 bits physical, 48 bits virtual
power management:
……
processor : 30
vendor_id : GenuineIntel
cpu family : 6
model : 79
model name : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
stepping : 1
microcode : 0xb000021
cpu MHz : 1339.406
cache size : 20480 KB
physical id : 0
siblings : 16
core id : 7
cpu cores : 8
apicid : 15
initial apicid : 15
fpu : yes
fpu_exception : yes
cpuid level : 20
wp : yes
flags : fpu ……
bogomips : 4199.77
clflush size : 64
cache_alignment : 64
address sizes : 46 bits physical, 48 bits virtual
power management:
processor : 31
vendor_id : GenuineIntel
cpu family : 6
model : 79
model name : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
stepping : 1
microcode : 0xb000021
cpu MHz : 1199.953
cache size : 20480 KB
physical id : 1
siblings : 16
core id : 7
cpu cores : 8
apicid : 31
initial apicid : 31
fpu : yes
fpu_exception : yes
cpuid level : 20
wp : yes
flags : ……
bogomips : 4203.77
clflush size : 64
cache_alignment : 64
address sizes : 46 bits physical, 48 bits virtual
power management:
之所以保留这么多信息,是为了查看core id 、physical id之间的关系
快速解读
比较重要的输出属性
属性名 | 描述 |
---|---|
processor | 逻辑处理器的ID |
model name | CPU型号 |
cpu MHz | cpu主频 |
physical id | 物理cpu编号 |
core id | 处理器内核编号 |
cpu cores | 相同物理封装处理器中的内核数 |
siblings | 相同物理封装处理器中逻辑处理器数 |
- 拥有相同 physical id的所有逻辑处理器共享同一个物理插座。
- Siblings 表示位于这一物理封装上的逻辑处理器的数量。
- 每个 core id 均代表一个唯一的处理器内核。所有带有相同 core id 的逻辑处理器均位于同一个处理器内核上。
- 有一个以上逻辑处理器拥有相同的 core id 和 physical id,则说明系统支持超线程(HT)技术。
- 如果有两个或两个以上的逻辑处理器拥有相同的 physical id,但是 core id 不同,则说明这是一个多内核处理器。cpu cores 条目也可以表示是否支持多内核。
相同的 physical id 的 CPU 是同一个 CPU 封装的线程或核心
相同的 core id 的 CPU 是同一个 core 超线程。
常用操作
在进行梳理操作之前,先了解下一些概念
概念 | 描述 |
---|---|
物理CPU | 实际插槽上的CPU个数。物理cpu数量,可以统计不重复的 physical id |
逻辑CPU | 一般情况,一颗cpu可以有多核,加上intel的超线程技术(HT), 可以在逻辑上再分一倍数量的cpu core出来。逻辑CPU数量=物理cpu数量 x cpu cores 这个规格值 x 2(如果支持并开启ht) |
CPU核数 | 一块CPU上面能处理数据的芯片组的数量。一般来说,物理CPU个数×每颗核数就应该等于逻辑CPU的个数,如果不相等的话,则表示服务器的CPU支持超线程技术 |
总核数 = 物理CPU个数 X 每颗物理CPU的核数
总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数
是否开启超线程HT
逻辑CPU > 物理CPU x CPU核数 #开启超线程
逻辑CPU = 物理CPU x CPU核数 #没有开启超线程或不支持超线程
统计物理CPU个数
[root@localhost ~]# grep "physical id" /proc/cpuinfo|sort |uniq|wc -l
2
统计逻辑CPU个数
[root@localhost ~]# grep "processor" /proc/cpuinfo |wc -l
32
查看CPU是几核的
[root@localhost ~]# grep "cores" /proc/cpuinfo|uniq
cpu cores : 8
查看CPU主频
[root@localhost ~]# grep MHz /proc/cpuinfo
cpu MHz : 1199.625
cpu MHz : 1199.953
……
cpu MHz : 1200.035
cpu MHz : 1200.199
每个物理CPU中的逻辑CPU
[root@localhost ~]# grep "siblings" /proc/cpuinfo
siblings : 16
……
siblings : 16
CPU概况
使用lscpu命令
[root@localhost ~]# lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 32
On-line CPU(s) list: 0-31
Thread(s) per core: 2
Core(s) per socket: 8
Socket(s): 2
NUMA node(s): 2
Vendor ID: GenuineIntel
CPU family: 6
Model: 79
Model name: Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
Stepping: 1
CPU MHz: 1200.363
CPU max MHz: 3000.0000
CPU min MHz: 1200.0000
BogoMIPS: 4199.77
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 20480K
NUMA node0 CPU(s): 0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30
NUMA node1 CPU(s): 1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31
Flags: fpu ……
socket就是主板上插cpu的槽的数目,也就是可以插入的物理CPU的个数。
core就是我们平时说的“核“,每个物理CPU可以双核,四核等等。
thread就是每个core的硬件线程数,即超线程
题外话(proc文件系统)
在Linux中有额外的机制可以为内核和内核模块将信息发送给进程proc文件系统:是一种内核和内核模块用来向进程发送信息的机制(所以叫做/proc),可以和内核内部数据结构进行交互,获取有关进程的有用信息,在运行中改变设置(通过改变内核参数)。
与其他文件系统不同,proc 存在于内存之中而不是硬盘上。
proc由内核控制,没有承载proc的设备。因为proc 主要存放由内核控制的状态信息,所以大部分这些信息的逻辑位置位于内核控制的内存。
proc文件系统可以被用于收集有用的关于系统和运行中的内核的信息
目录中可能包含以下文件:
ls /proc/ -l|awk '{if($NF!~/^[0-9]/)print $NF}')
文件名 | 描述 |
---|---|
acpi | |
buddyinfo | |
…… | |
vmstat | |
zoneinfo |
并不是所有这些目录在你的系统中都有,这取决于你的内核配置和装载的模块。
除了以上介绍的这些,还有的是一些以数字命名的目录,它们是进程目录。
ls /proc/ -l|awk '{if($NF~/^[0-9]/)print $NF}'
系统中当前运行的每一个进程都有对应的一个目录在/proc下,以进程的PID号为目录名,它们是读取进程信息的接口。
ls /proc/99 -l|awk '{if($NF!~/^[0-9]/)print $NF}'
文件名 | 描述 |
---|---|
attr | |
autogroup | |
auxv | |
…… | |
wchan |