前言:
以前经常在工作中听到所谓的服务器几核、几核,物理核数、逻辑核数,傻傻分不清楚。下面就了解一下相关概念及关系。

一、所谓的CPU
所谓的CPU,它的全称是Central Processing Unit / Processor,即中央处理器。一般公司在购买服务器时都会评估一台服务器中要几颗CPU,每颗CPU是几核的(CPU颗数越多,核数越多,一般处理能力越强)。个人购买的笔记本电脑、家用台式机,一般都是单颗CPU。
注:平常中叫的单路、双路、四路指的就是服务器中有几个物理CPU。

二、所谓的物理核数(物理CPU核数)
根据每种品牌的型号不同,每颗CPU的核数也是不一样的。其中核数指的是每颗CPU中的数据处理单元数量。

三、所谓的逻辑核数(逻辑CPU核数)
一般一个核心对应了一个线程,而intel开发出了超线程技术,1个核心能够做到2个线程进行计算。逻辑核数与线程是一一对应的。一般情况下,服务器默认开启超线程,如果CPU支持多线程则会使用。如果不想使用到CPU的超线程功能,需要重启服务器并在BIOS中手动关闭。

四、总结
一个服务器主板可以插多个CPU称为多路,一个CPU可以有多个物理核。如果开启了超线程,一个物理核可以分成n个逻辑核(一般是2),n为超线程的数量。
电脑总核数 = 物理CPU个数 * 每颗物理CPU的核数
电脑总逻辑CPU数 = 物理CPU个数 * 每颗物理CPU的核数 X 超线程数
注:我们常说的几核一般不包括逻辑核数。

五、查看服务器是否开启超线程
cat /proc/cpuinfo | grep “siblings” | uniq --查看单颗CPU的逻辑核数
cat /proc/cpuinfo| grep “cpu cores”| uniq --查看单颗CPU的物理核数
如果siblings的数量时cpu cores的两倍,则说明支持超线程,并且开启了超线程。如果数量一样,则说明CPU不支持超线程,或者服务器超线程没打开。(CPU支不支持可根据型号上网查看)

六、查看服务器的CPU品牌型号
cat /proc/cpuinfo | grep “model name” | uniq

七、查看服务器的CPU个数
cat /proc/cpuinfo| grep “physical id”| sort| uniq| wc -l

八、查看服务器的CPU物理核数
cat /proc/cpuinfo| grep “cpu cores”| uniq
注:查的是每颗CPU的物理核数

九、查看服务器的CPU逻辑核数
cat /proc/cpuinfo | grep “siblings” | uniq --查看单颗CPU的逻辑核数
cat /proc/cpuinfo| grep “processor”| wc -l --查看所有CPU的逻辑核数

十、cpuinfo中的CPU相关名词解释
cat /proc/cpuinfo | more

processor       : 0     -----逻辑CPU的唯一标识符
 vendor_id       : GenuineIntel  —标识英特尔处理器
 cpu family      : 6
 model           : 62
 stepping        : 4
 cpu MHz         : 2089.986
 cache size      : 16390 KB
 physical id     : 0  —物理cpu的唯一标识
 siblings        : 12 —代表逻辑cpu个数
 core id         : 0  —每个物理内核的唯一标识
 cpu cores       : 6  —物理cpu中的核心数

十一、其他知识点
1、查看linux或者unix服务器的负载时
uptime
16:23:09 up 32 days, 16:23,  2 users,  load average: 1.30, 1.86, 1.95
需要根据逻辑cpu个数来衡量。

2、使用top时,按下1后,可以查看到逻辑CPU相关信息。

3、超线程技术(HT)
超线程技术就是让一个核模拟出两个核的技术。
超线程(HT)并不是我们一般说的多线程。一般说的多线程(multi-threading)是指程序方面的,简单的说就是’软’的,代码级别的。而超线程一般指的是硬件架构方面的,是’硬’的:通过调整AS而模拟出来的’逻辑核’。
也就是说,超线程是一个物理核里面,有两个AS,一个PU。两个AS共享一个PU。
1)Processing Unit(运算处理单元),简称PU
2)Architectual State(架构状态单元),简称AS
PU一般就是执行运算,比如算数运算加减乘除。AS执行一些逻辑和调度方面的操作,比如控制内存访问等。

4、top查看进程的%CPU值,为什么会CPU占用率超过100%?
因为该进程占用超过一个核,占满2个核就是200%了。所以需要从多核角度考虑。

5、性能方面:1个双核CPU > 1个单核CPU超线程 > 2个单核CPU非超线程

6、线程和核的关系
线程需要核执行,一个核在同一时间只能执行一条线程,这里的核指逻辑核。

7、进程和线程
进程是操作系统层面的,线程是CPU层面的,CPU真正执行的是线程而不是进程。
进程是是静态的概念,是一些资源的集合,比如进程有自己的内存;而线程是动态的概念。
进程可以有多个线程,这些线程共享同一份进程的资源。
多核的情况下,可以做到多个进程同时执行;当然也就可以做到多个线程同时执行。但是单核的CPU无法做到“同时”。