A.13. numad
numad 是一个自动 NUMA 关联性管理守护进程。它监控系统中 NUMA 拓扑和资源使用情况,以便动态改进 NUMA 资源的分配和管理。
请注意,当启用 numad 时,其行为会覆盖自动 NUMA 平衡的默认行为。
A.13.1. 从命令行使用 numad
要将 numad 用作可执行文件,请运行:
# numad
在 numad 运行时,其活动记录在
/var/log/numad.log
中。它将运行直到使用以下命令停止:
# numad -i 0
停止 numad 不会删除它对提高 NUMA 关联性所做的更改。如果系统使用显著的变化,再次运行 numad 会调整关联性,以便在新条件下提高性能。
要将 numad 管理限制到特定进程,请使用以下选项启动它:
# numad -S 0 -p pid
- -p pid
- 此选项将指定的 添加到明确包含列表中。在满足 numad 进程信号阈值前,指定的进程不会被管理。
- -S 0
- 这会将进程扫描类型设置为
0,
这会将 numad 管理限制为显式包含的进程。
有关可用 numad 选项的详情,请参考 numad 手册页:
$ man numad
A.13.2. 使用 numad 作为服务
虽然 numad 作为服务运行,它会尝试根据当前的系统工作负载动态调整系统。其活动记录在
/var/log/numad.log
中。
要启动该服务,请运行:
# systemctl start numad.service
要使服务在重启后保持有效,请运行:
# chkconfig numad on
有关可用 numad 选项的详情,请参考 numad 手册页:
$ man numad
A.13.3. 预放置公告
numad 提供了一个预放置建议服务,可由各种作业管理系统查询,为进程提供 CPU 和内存资源的初始绑定。无论 numad 作为可执行文件还是服务运行,这个预替换建议都可用。
A.13.4. 使用 KSM 的 numad
如果在 NUMA 系统上使用 KSM,请将
/sys/kernel/mm/ksm/merge_nodes
参数的值更改为 0,
以避免跨 NUMA 节点合并页面。否则,KSM 会增加远程内存访问,因为它跨节点合并页面。此外,在大量跨节点合并后,内核内存核算统计最终可能会相互冲突。因此,在 KSM 守护进程合并多个内存页面后,numad 可能会成为可用内存的正确数量和位置。
仅当您在系统上过量使用内存时,KSM 才有意义。如果您的系统有足够的可用内存,可以通过关闭和禁用 KSM 守护进程来实现更高的性能。