Linux之CPU物理核与逻辑核

3年前 (2022-11-02)网络技术

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


一、所谓的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无法做到“同时”。