根据 numactl,这个双 CPU Opteron 盒是 UMA,而不是预期的 NUMA:
$ numactl --hardware
available: 1 nodes (0)
node 0 cpus: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
node 0 size: 65534 MB
node 0 free: 381 MB
node distances:
node 0
0: 10
我认为应该是 NUMA,因为有四个 4 核 CPU*。据我了解,每个 CPU 都有自己的内存通道;如果 CPU 需要访问非本地节点的内存,则必须使用超传输,这比访问本地节点的内存花费更多时间。AMD 对此进行了解释这里。
主板有 16 个 RAM 插槽,每个 CPU 有 8 个。所有 16 个插槽每个都装有 4GB,总共 64GB。更多详细信息:
- 处理器: 2 xAMD 6128(“马尼库尔”)
- 主板:超微 H8DG6/i(-F)
- BIOS:AMI v02.68 --主板/BIOS 手册(pdf)
- Linux:2.6.32
- 操作系统:Debian“wheezy”
- BIOS 内存配置:
- 银行交错:自动
- 节点交错:自动
- 通道交错:自动
- CS 保留:已禁用
- 银行调换模式:已启用
为什么 numactl 报告这个盒子是 UMA?
*每个封装有两个 CPU 芯片,因此主板只有两个 CPU 插槽。
答案1
BIOS 隐藏了node interleaving
设置背后的 NUMA 现实。就操作系统而言,将其设置为“禁用”将为您提供真正的 NUMA 系统。没有多少系统真正有效地使用 NUMA,这就是为什么主板制造商默认让一切同样缓慢而不是,让操作系统决定什么需要快速访问,什么需要慢速访问。