总核数 = 物理CPU个数 * 每颗物理CPU的核数
总逻辑CPU数 = 物理CPU个数 * 每颗物理CPU的核数 X 超线程数
cat /proc/cpuinfo | more
processor : 0 -----逻辑CPU的唯一标识符
vendor_id : GenuineIntel ---标识英特尔处理器
cpu family : 6
model : 62
stepping : 4
cpu MHz : 2099.886
cache size : 15360 KB
physical id : 0 ---物理cpu的唯一标识
siblings : 12 ---代表逻辑cpu个数
core id : 0 ---每个物理内核的唯一标识
cpu cores : 6 ---物理cpu中的核心数
如果有两个逻辑CPU具有相同的”core id”,那么超线程是打开的。或者siblings数目比cpu cores数目大
# 查看物理CPU个数
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
2
# 查看每个物理CPU中core的个数(即核数)
cat /proc/cpuinfo| grep "cpu cores"| uniq
cpu cores : 6
# 查看逻辑CPU的个数
cat /proc/cpuinfo| grep "processor"| wc -l
24
2*6*2=24
我们在查看linux或者unix服务器的负载时候uptime
15:43:08 up 271 days, 15:40, 2 users, load average: 2.40, 2.85, 2.94
需要使用逻辑cpu个数,来衡量
另外我们使用top按下1
查看的也是逻辑CPU
解释:
1)Processing Unit(运算处理单元),简称PU
2)Architectual State(架构状态单元),简称AS
PU一般就是执行运算,比如算数运算加减乘除。AS执行一些逻辑和调度方面的操作,比如控制内存访问等
单核CPU:
一般一块传统意义的CPU上会有一个PU、一个AS。
多核CPU
这里说的多核,是多个物理核,比如i3的双核,i5的4核。这中架构下,每一个物理核都有一个PU和一个AS
超线程技术(HT)
超线程(HT)并不是我们一般说的多线程。一般说的多线程(multi-threading)是指程序方面的,简单的说就是'软'的,代码级别的。而超线程一般指的是硬件架构方面的,是'硬'的:通过调整AS而模拟出来的'逻辑核'。
也就是说,超线程是一个物理核里面,有两个AS,一个PU。两个AS共享一个PU