numa - 相同物理核心不同NUMA节点

标签 numa hyperthreading

按照确定哪些逻辑核心在我的 AMD Opteron(TM) 处理器 6234 上共享相同物理核心的步骤,我发现共享相同物理核心的 2 个逻辑核心不在同一个 NUMA 节点中。

我的步骤是执行 lscpu 以获得与 NUMA 节点相关的核心:

Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                24
On-line CPU(s) list:   0-23
Thread(s) per core:    2
Core(s) per socket:    6
Socket(s):             2
NUMA node(s):          4
Vendor ID:             AuthenticAMD
CPU family:            21
Model:                 1
Model name:            AMD Opteron(TM) Processor 6234
Stepping:              2
CPU MHz:               1400.000
CPU max MHz:           2400.0000
CPU min MHz:           1400.0000
BogoMIPS:              4799.98
Virtualization:        AMD-V
L1d cache:             16K
L1i cache:             64K
L2 cache:              2048K
L3 cache:              6144K
NUMA node0 CPU(s):     0-5
NUMA node1 CPU(s):     6-11
NUMA node2 CPU(s):     12-17
NUMA node3 CPU(s):     18-23

然后cat/proc/cpuinfo | grep "core id" 为了对核心进行分组:

core id         : 0
core id         : 1
core id         : 2
core id         : 3
core id         : 4
core id         : 5
core id         : 0
core id         : 1
core id         : 2
core id         : 3
core id         : 4
core id         : 5
core id         : 0
core id         : 1
core id         : 2
core id         : 3
core id         : 4
core id         : 5
core id         : 0
core id         : 1
core id         : 2
core id         : 3
core id         : 4
core id         : 5

最后cat/proc/cpuinfo | grep "physical id" 为了获得共享相同核心 id 和相同物理 CPU 的核心:

physical id     : 0
physical id     : 0
physical id     : 0
physical id     : 0
physical id     : 0
physical id     : 0
physical id     : 0
physical id     : 0
physical id     : 0
physical id     : 0
physical id     : 0
physical id     : 0
physical id     : 1
physical id     : 1
physical id     : 1
physical id     : 1
physical id     : 1
physical id     : 1
physical id     : 1
physical id     : 1
physical id     : 1
physical id     : 1
physical id     : 1
physical id     : 1

据此我得出结论,核心 0 和 6 共享相同的物理核心,但核心 0 位于 NUMA 节点 0 中,而核心 6 位于 NUMA 节点 1 中。

我觉得这真的很令人不安,这可能吗?

预先感谢您的帮助。

最佳答案

对于 Opteron 6234,每个封装内有 2 个芯片,其中每个芯片是一个 NUMA 节点,每个芯片有 6 个核心。没有 SMT(超线程),因此每个核心只有一个 CPU。

您期望的是:

 CPU_number = package:die_in_package:core_in_die:CPU_in_core, NUMA node
 0 = 0:0:0:0, NUMA node 0
 1 = 0:0:1:0, NUMA node 0
 2 = 0:0:2:0, NUMA node 0
 3 = 0:0:3:0, NUMA node 0
 4 = 0:0:4:0, NUMA node 0
 5 = 0:0:5:0, NUMA node 0
 6 = 0:1:0:0, NUMA node 1
 7 = 0:1:1:0, NUMA node 1
 8 = 0:1:2:0, NUMA node 1
 9 = 0:1:3:0, NUMA node 1
10 = 0:1:4:0, NUMA node 1
11 = 0:1:5:0, NUMA node 1
12 = 1:0:0:0, NUMA node 1
13 = 1:0:1:0, NUMA node 2
14 = 1:0:2:0, NUMA node 2
15 = 1:0:3:0, NUMA node 2
16 = 1:0:4:0, NUMA node 2
17 = 1:0:5:0, NUMA node 2
18 = 1:1:0:0, NUMA node 3
19 = 1:1:1:0, NUMA node 3
20 = 1:1:2:0, NUMA node 3
21 = 1:1:3:0, NUMA node 3
22 = 1:1:4:0, NUMA node 3
24 = 1:1:5:0, NUMA node 3

现在看看 CPU 号 0 和 CPU 号 6。它们都有相同的包号、相同的 NUMA 节点和相同的“CPU in die”;但它们的模具数不同。您获得的信息都没有提到“骰子数字”,这就是您感到困惑的原因。

关于numa - 相同物理核心不同NUMA节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48546735/

相关文章:

c - numactl --membind

multithreading - 超线程处理器内核可以完全同时执行两个线程吗?

rendering - 超线程……让我的渲染器慢了 10 倍

windows - NUMA-本地内存

performance - 基准处理器亲和性影响

cpu-architecture - 两个进程可以在一个 CPU 内核上同时运行吗?

matlab - 如何从 MATLAB 查询物理内核数?

cpu - 超线程 CPU 是实现并行还是仅实现并发?

c++ - std::vector保留并调整NUMA位置的大小