numa下socket node cpu thread的關係

注:僅爲個人理解,有錯請不吝賜教


socket node cpu thread的關係

socket ⇄ node

socket是一個物理上的概念,指的是主板上的cpu插槽。node是一個邏輯上的概念,對應於socket。

core ⇄ 物理cpu

core就是一個物理cpu,一個獨立的硬件執行單元。

thread ⇄ 邏輯cpu

一個機器上總共有多少個cpu,則其有相對應個thread。

詳細舉例如下:
這裏寫圖片描述
由上圖可知
當前機器有2個sockets:

Socket(s):2//共有2個sockets

每個sockets包含1個numa node:

NUMA node(s):2//共有2個NUMA nodes

每個numa node中有6個cores:

Core(s)per socket:10//每個socket10個cores

每個cores包含2個thread:

Thread(s)per core:1//每個core有1個threads

該機器上共有20個threads/邏輯cpu:

CPU(s):20//共有20個邏輯CPU(threads)
thread = Socket(s) * Core(s) per socket * Thread(s) per core
       = 2 * 10 * 1
       = 20 

順便提一句cache:
L1 cache分爲數據cache和指令cache:

L1dcache:32K//L1datacache32k
L1icache:32K//L1instructioncache32k

node

numa架構下,訪問本地內存的速度要快於訪問遠端內存的速度,訪問速度與node的距離有關係。
這裏寫圖片描述
上圖可知
該機器上有兩個node(0,1)

available: 2 nodes (0-1)

node 0的大小爲32487MB,node 1的大小爲32768MB

node 0 size: 32487 MB
node 1 size: 32768 MB

node 0上有10個cpu,編號爲0~9:

node 0 cpus: 0 1 2 3 4 5 6 7 8 9

node 1上有10個cpu,編號爲10~19:

node 1 cpus: 10 11 12 13 14 15 16 17 18 19

node 0到本地內存的距離爲10,到node 1的內存距離爲20;node1到本地內存的距離爲10,到node 0的內存距離爲20。

node distances:
node   0   1 
  0:  10  21 
  1:  21  10 

core(物理cpu)

這裏寫圖片描述
由上圖可知,我的機器上每個socket上面有10個core
這裏寫圖片描述
由上圖可知,這10個core的編號爲0~4和8~12。


thread(邏輯cpu)

這裏寫圖片描述
查看邏輯cpu,即thread的信息:

cat /proc/cpuinfo

physical id爲0表示此cpu在socket 0也就是node 0上面

physical id : 0

cpu cores爲10表示此node上面有10個core

cpu cores : 10

core id爲0表示此cpu在node 0的core 0上面

core id : 0

siblings 表示位於這一物理封裝上的邏輯處理器的數量。簡單的說:“siblings”指的是一個物理CPU有幾個邏輯CPU
siblings爲10表示此在core 0(物理cpu)上有10個thread(邏輯cpu)。

siblings : 10

附一些相關鏈接:
NUMA架構下的CPU拓撲(這個siblings解釋錯了,但是其他講得非常清晰)
NUMA體系結構詳解
LINUX平臺上的NUMA API(A NUMA API for LINUX)(第一部分)
Linux下區分物理CPU、邏輯CPU和CPU核數(這個屬於加深知識理解,也講得很好)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章