linux查看cpu物理核与逻辑核,及超线程(HT)

超线程的概念:

“超线程(Hyper-Threading,简称“HT”)”技术。超线程技术就是利用特殊的硬件指令,把两个逻辑内核模拟成两个物理芯片,让单个处理器都能使用线程级并行计算,进而兼容[多线程]操作系统和软件,减少了CPU的闲置时间,提高的CPU的运行效率。

超线程技术是在一颗CPU同时执行多个程序而共同分享一颗CPU内的资源,理论上要像两颗CPU一样在同一时间执行两个线程,虽然采用超线程技术能同时执行两个线程,但它并不象两个真正的CPU那样,每个CPU都具有独立的资源。当两个线程都同时需要某一个资源时,其中一个要暂时停止,并让出资源,直到这些资源闲置后才能继续。因此超线程的性能并不等于两颗CPU的性能。

总核数 = 物理CPU个数 X 每颗物理CPU的核数

总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数

#CPU物理个数:
$ cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
2

#逻辑CPU个数 2*32*2=128
$ cat /proc/cpuinfo| grep processor|sort|uniq|wc -l
128

#查看siblings数量:
$ grep "siblings" /proc/cpuinfo|uniq
siblings        : 64

#查看cpu cores数量:
$ grep "cpu cores" /proc/cpuinfo|uniq
cpu cores       : 32

如果“siblings”和“cpu cores”一致,则说明不支持超线程,或者超线程未打开。如果“siblings”是“cpu cores”的两倍,则说明支持超线程,并且超线程已打开。如果有两个逻辑CPU具有相同的”core id”,那么超线程是打开的。

 

lscpu

Architecture:         #架构
CPU(s):                 #逻辑cpu颗数
Thread(s) per core:     #每个核心线程
Core(s) per socket:     #每个cpu插槽核数/每颗物理cpu核数
CPU socket(s):          #cpu插槽数
Vendor ID:              #cpu厂商ID
CPU family:             #cpu系列
Model:                  #型号
Stepping:               #步进
CPU MHz:                #cpu主频
Virtualization:         #cpu支持的虚拟化技术
L1d cache:              #一级缓存(google了下,这具体表示表示cpu的L1数据缓存)
L1i cache:              #一级缓存(具体为L1指令缓存)
L2 cache:               #二级缓存权协议,转载请附上原文出处链接及本声明。

socket:物理CPU的插槽(主板上插cpu的槽的数目,也就是可以插入的物理CPU的个数)

Core per Socket:每一个插槽对应的物理CPU上有多少个核(我们平时说的“核“,每个物理CPU可以双核,四核等等)

Thread per Core:每个核上有多少个线程(每个core的硬件线程数,即超线程)

总逻辑CPU数 = 物理CPU个数(sockets) X 每颗物理CPU的核数(cores) X 超线程数(thread)

及 socket * cores * thread

 

案例:

128逻辑核 = 2*32*2

[root ]# lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                128
On-line CPU(s) list:   0-127
Thread(s) per core:    2
Core(s) per socket:    32
Socket(s):             2
NUMA node(s):          2
Vendor ID:             AuthenticAMD
CPU family:            23
Model:                 49
Model name:            AMD EPYC 7K62 48-Core Processor
Stepping:              0
CPU MHz:               2595.124
BogoMIPS:              5190.24
Hypervisor vendor:     KVM
Virtualization type:   full
L1d cache:             32K
L1i cache:             32K
L2 cache:              4096K
L3 cache:              16384K
NUMA node0 CPU(s):     0-63
NUMA node1 CPU(s):     64-127
Flags:                 fpu vme de pse tsc