如何检查 NUMA 配置是否启用?

NUMA是非统一内存访问(Non-Uniform Memory Access)或者非统一内存架构(Non-Uniform Memory Architecture)的缩写。 它是 SMP(多处理器)架构中使用的物理内存设计,其中内存访问时间取决于相对于处理器的内存位置。
在 NUMA 下,一个处理器可以比非本地内存更快地访问自己的本地内存,即另一个处理器的本地内存或者处理器之间共享的内存。

在 NUMA 系统中,处理器、内存和 I/O 被组合到单元中。
小区内通信的延迟和带宽特性是“快”的,而在小区外是“慢”的。
由于 NUMA 系统中的内存在物理上是分布式的,但在逻辑上是共享的,因此这些系统为经过优化以使用其功能的应用程序提供了更好的性能。
对于未优化的应用程序,它们仍然提供更好的性能,因为默认行为被设计为良性的,如果不是有益的,它们仍然可以访问更大的内存、CPU 和磁盘空间共享资源。

更多: zhilu jiaocheng

如何判断是否启用了 NUMA

NUMA 必须在 BIOS 中启用。
如果 dmesg 在启动期间没有 numa 初始化的记录,那么内核环形缓冲区中的 NUMA 相关消息可能已被覆盖。

支持 NUMA 的系统

如果在 BIOS 上启用了 NUMA,则执行命令“numactl -hardware”以列出系统上可用节点的列表。
下面是 numactl -hardware 在具有 NUMA 的系统上的示例输出。

# numactl --hardware
available: 2 nodes (0-1)
node 0 cpus: 0 1 2 3 4 5 6 7 16 17 18 19 20 21 22 23
node 0 size: 8157 MB
node 0 free: 88 MB
node 1 cpus: 8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31
node 1 size: 8191 MB
node 1 free: 5176 MB
node distances:
node   0   1 
  0:  10  20 
  1:  20  10

NUMA 禁用系统

  1. 如果在 BIOS 上禁用了 NUMA,则命令“numactl -show”不会显示多个节点。
# numactl --show
policy: default
preferred node: current
physcpubind: 0 1 2 3 4 5 6 7 8 9 10 11
cpubind: 0
nodebind: 0
membind: 0
  1. 命令“numactl -hardware”也没有列出多个节点。
available: 1 nodes (0)
node 0 cpus: 0 1 2 3 4 5 6 7 8 9 10 11
node 0 size: 65525 MB
node 0 free: 17419 MB
node distances:
node   0
  0:  10
  1. 如果服务器没有NUMA支持或者BIOS选项没有开启,那么dmesg会看到如下信息
No NUMA configuration found
Faking a node at 0000000000000000-0000001027fff000
  1. 如果ACPI被禁用,那也会禁用NUMA;验证 ACPI 未被 grub.conf 内核参数禁用,如果找到则将其删除:
$ grep acpi=off /proc/cmdline
$
日期:2020-09-17 00:12:27 来源:oir作者:oir