8.3. 自动化 NUMA 平衡

自动化 NUMA 平衡改进了 NUMA 硬件系统中运行应用的性能。它在 Red Hat Enterprise Linux 7 系统中被默认启用。
通常,应用程式在其程序的线程访问 NUMA 节点上的内存、且此节点位置与线程排程时的位置相同的时候,性能最佳。自动化 NUMA 平衡会把任务(任务可能是线程或进程)移到与它们需要访问的内存更近的地方,同时也会移动内存应用程序数据,使其更靠近参考这一数据的任务。以上均在自动化 NUMA 平衡启用时由内核自动完成。
自动化 NUMA 平衡使用若干算法和数据结构,它们只有在系统中自动化 NUMA 平衡活跃时才能被启用和分配。
  • 进程内存的周期性 NUMA 取消对应
  • NUMA hinting 故障
  • 故障迁移(MoF,Migrate-on-Fault)——将内存移动至需要运行的程序
  • task_numa_placement ——移动运行的程序,使接近其内存

8.3.1. 配置自动化 NUMA 平衡

自动化 NUMA 平衡在 Red Hat Enterprise Linux 7 中默认启用,并在 NUMA 属性硬件中引导时自动激活。
自动化 NUMA 平衡启用时需满足以下两个条件:
  • # numactl --hardware 显示多个节点,以及
  • # cat /sys/kernel/debug/sched_features 在标识中显示 NUMA
应用程序的手动 NUMA 调试将会重载自动化 NUMA 平衡,并禁用周期性的内存空白、NUMA 错误、迁移和以上应用程序的自动化 NUMA 放置。
在某些情况下,首选系统范围内的手动 NUMA 调试。
要禁用自动化 NUMA 平衡,请使用以下命令:
# echo 0 > /proc/sys/kernel/numa_balancing
要启用自动化 NUMA 平衡,请使用以下命令:
# echo 1 > /proc/sys/kernel/numa_balancing