相关概念
- 物理CPU总核数 = 逻辑CPU总核数 = 物理CPU个数 * 每颗物理CPU的核数 (没有超线程时)
- 逻辑CPU总核数 = 物理CPU个数 * 每颗物理CPU的核数 * 超线程数 (有超线程时)
- 物理CPU:实际上服务器插入的CPU个数,在/proc/cpuinfo文件中有几个“physical id”就代表有几个物理CPU。
- 逻辑CPU:操作系统可以使用逻辑CPU来模拟出真实CPU的效果,在之前没有多核处理器的时候,一个CPU只有一个核,而现在有了多核技术,其效果就好像把多个CPU集中在一个CPU上。当计算机没有开启超线程时,逻辑CPU的总核数就是物理CPU的总核数。而当超线程开启后,逻辑CPU总核数数是物理CPU总核数的两倍。实际上逻辑CPU的数量就是平时称呼的几核几线程中的线程数量,在/proc/cpuinfo文件中逻辑CPU数就是processor的数量。
- CPU核数:一块CPU上面能处理数据的芯片组的数量。通常每个CPU的核数都是固定的,比如你的计算机有两个物理CPU,每个CPU是双核,那么计算机就是四核的。把/proc/cpuinfo文件中core id后面的值都加起来就是总CPU核数。
/proc/cpuinfo
# 查看CPU的型号
[root@docker1 ~]# cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
1 Intel(R) Core(TM) i5-4200M CPU @ 2.50GHz
# 查看物理CPU的个数
[root@docker1 ~]# cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
1
# 查看每个CPU的核数
[root@docker1 ~]# cat /proc/cpuinfo| grep "cpu cores"| uniq
cpu cores : 1
# 查看逻辑CPU的个数
[root@docker1 ~]# cat /proc/cpuinfo| grep "processor"| wc -l
1
lscpu
[root@docker1 ~]# lscpu
Architecture: x86_64 # CPU架构
CPU(s): 1 # CPU数量
On-line CPU(s) list: 0 # 在线的CPU数量,有时为了省电或者CPU过热,某些CPU会停止运行
Thread(s) per core: 1 # 每个核心的线程数
Core(s) per socket: 1 # 每个CPU有几个核心