了解lscpu

时间:2018-09-13 11:27:14

标签: multithreading apache-spark cpu core

您可以看到lscpu命令的输出-

jack@042:~$ lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                56
On-line CPU(s) list:   0-55
Thread(s) per core:    2
Core(s) per socket:    14
Socket(s):             2
NUMA node(s):          2
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 79
Model name:            Intel(R) Xeon(R) CPU E5-2690 v4 @ 2.60GHz
Stepping:              1
CPU MHz:               2600.000
CPU max MHz:           2600.0000
CPU min MHz:           1200.0000
BogoMIPS:              5201.37
Virtualization:        VT-x
Hypervisor vendor:     vertical
Virtualization type:   full
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              35840K
NUMA node0 CPU(s):     0-13,28-41
NUMA node1 CPU(s):     14-27,42-55

我可以看到有2个套接字(就像一个处理器?),并且在每个套接字内部我们都有14个内核。因此,总共2x14=28个物理核心。通常,一个CPU可以包含多个核心,因此CPU的数量绝不能少于核心的数量。但是,如输出CPUs(s): 56所示,这就是让我感到困惑的地方。

我可以看到每个内核有2个线程,因此这28个内核可以像2x28=56逻辑内核那样工作。

问题1: CPUs(s): 56代表什么? CPU(s)是否表示虚拟/逻辑核心的数量,因为它不能至少是物理核心?

问题2::这个NUMA节点是什么意思?它代表插座吗?

3 个答案:

答案 0 :(得分:3)

每个内核的线程硬件线程是一组足以表示一个软件线程当前状态的寄存器。具有两个硬件线程的内核可以代表两个不同的软件线程执行指令,而不会在它们之间产生上下文切换的开销。它可以实现的实际并行性的数量将根据线程的工作方式以及处理器的品牌和型号而有所不同。

每个套接字的核心核心是我们通常认为的处理器或CPU,而 socket 是两者之间的接口一个或多个内核和内存系统。插座也是芯片或多芯片模块与主板之间的物理连接。除了内核之外,芯片/模块通常还将具有至少两个级别的内存缓存。每个内核通常都将拥有自己的 L1缓存,然后芯片/模块上的所有内核都必须共享(即竞争)对至少一个更高级别的缓存以及对这些内核的访问。主内存。

插槽:请参见上文。大型系统(例如机架服务器)通常有多个。个人计算机,频率更低。

NUMA ...:除了要说NUMA之外,我不能告诉您太多信息,只是说在不同NUMA节点上运行的线程之间的通信工作原理不同,而且成本更高,在同一节点上运行的线程之间进行通信。

答案 1 :(得分:3)

({Copied,应OP的要求。)

“ CPU:56”代表逻辑核的数量,等于“每个核的线程数”ד每个插槽的核数”ד插槽”。 1个插槽是1个物理CPU封装(它在主板上占用1个插槽)。每个套接字承载多个物理核心,每个核心可以运行一个或多个线程。在您的情况下,您有两个插槽,每个插槽包含一个14核Xeon E5-2690 v4 CPU,并且由于它支持具有两个线程的超线程,因此每个内核可以运行两个线程。

“ NUMA节点”代表内存体系结构; “ NUMA”代表“non-uniform memory architecture”。在您的系统中,每个插槽都连接到某些DIMM插槽,并且每个物理CPU程序包都包含一个内存控制器,用于处理总RAM的一部分。结果,并不是所有CPU都可以平等地访问所有物理内存:一个物理CPU可以直接访问其控制的内存,但是必须经过另一个物理CPU才能访问其余的内存。在您的系统中,逻辑核心0–13和28–41位于一个NUMA节点中,其余则在另一个节点中。因此,是的,至少在典型的多插槽Xeon系统中,一个NUMA节点等于一个插槽。

答案 2 :(得分:2)

NUMA代表非统一内存访问。在访问内存方面,NUMA节点的价值与性能有关,而与计算您拥有的CPU数量无关。

您获得的56个CPU的计算基于

CPU's = number of sockets x number of cores per socket x number of threads per core

此处,每个内核2个线程表示已启用超线程。

因此,您没有56个物理处理器,而是套接字,内核和超线程的组合。最重要的是,您可以并行运行56个线程。您可以认为套接字等同于物理处理器。

-根据玛格丽特·布鲁姆(Margaret Bloom)的出色评论进行编辑。