根据 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 个AMD 6128(“Magny-Cours”)
- 主板:Supermicro H8DG6/i(-F)
- BIOS:AMI v02.68 --主板/BIOS 手册(pdf)
- Linux:2.6.32
- 操作系统:Debian“喘不过气来”
- BIOS内存配置:
- 银行交织:自动
- 节点交错:自动
- 通道交织:自动
- CS 备用:禁用
- 银行混合模式:启用
为什么 numactl 报告此框是 UMA?
*每个封装有两个 CPU 芯片,因此主板只有两个 CPU 插槽。
BIOS 将 NUMA 现实隐藏在
node interleaving
设置背后。就操作系统而言,将其设置为禁用将为您提供真正的 NUMA 系统。没有多少系统真正有效地使用 NUMA,这就是为什么主板制造商默认让所有的东西都一样慢,而不是让操作系统弄清楚什么需要快速和慢速访问。