0%

Linux的 lscpu 命令

lscpu 显示CPU架构的有关信息

Linux的CPU设备查看器。lscpu命令用来显示cpu的相关信息。
lscpusysfs/proc/cpuinfo收集cpu体系结构信息,命令的输出比较易读 。
命令输出的信息包含cpu数量,线程,核数,socket和Nom-Uniform Memeor Access(NUMA),缓存等等。

官方定义为:

lscpu - display information about the CPU architecture

参数基本用处不大,默认即可,部分参数可以查看offline和online的设备信息。

默认实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
$ lscpu
Architecture: x86_64 #架构信息
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 64 #逻辑cpu颗数
On-line CPU(s) list: 0-63
Thread(s) per core: 2 #每个核心线程
Core(s) per socket: 16 #每个cpu插槽核数/每颗物理cpu核数
Socket(s): 2 #cpu插槽数
NUMA node(s): 2
Vendor ID: GenuineIntel #cpu厂商ID
CPU family: 6 #cpu系列
Model: 63 #型号
Model name: Intel(R) Xeon(R) CPU E5-2698 v3 @ 2.30GHz
Stepping: 2 #步进
CPU MHz: 1290.335 #cpu主频
BogoMIPS: 4604.47
Virtualization: VT-x #cpu支持的虚拟化技术
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 40960K
NUMA node0 CPU(s): 0-15,32-47
NUMA node1 CPU(s): 16-31,48-63

其中几个概念需要理解清楚,基本比较重要的都有了备注。

其中第一个为CPU(s),这个值为Socket * Core * Thread得出,也就是逻辑的CPU个数。

1
2
3
4
5
CPU(s):                64   #逻辑CPU数
On-line CPU(s) list: 0-63
Thread(s) per core: 2
Core(s) per socket: 16
socket: 2

而其他几个概念为:

  • Socket : 物理上的CPU插槽的数量,也就是物理的实体概念
  • Core:即平常说的单核、多核、四核等,即每个CPU上的核数
  • Thread:每个core上的线程数,即超线程。

什么是NUMA node

NUMA体系结构中多了Node的概念,Node是一个逻辑上的概念,这个概念其实是用来解决core的分组的问题。每个node有自己的内部CPU,总线和内存,同时还可以访问其他node内的内存。即Node用来将core分组,每个Node拥有一个对应的本地内存。

node 和socket没有必然的联系,一般是一个socket上的core属于同一个node。

对操作系统来说,其逻辑CPU的数量就是Socket * Core * Thread

处无为之事,行不言之教;作而弗始,生而弗有,为而弗恃,功成不居!

欢迎关注我的其它发布渠道