25.12. 使用 systemd 配置 NUMA 策略
非统一内存访问(NUMA)是一种计算机内存子系统设计,其中内存访问时间取决于相对于处理器的物理内存位置。
靠近 CPU 的内存比不同 CPU 的本地内存(外部内存)或一组 CPU 之间共享的内存具有更低的延迟(本地内存)。
就 Linux 内核而言,NUMA 策略管理内核为进程分配物理内存页面的位置(例如,在哪些 NUMA 节点上)。
systemd
提供单元文件选项 NUMAPolicy
和 NUMAMask
,以控制服务的内存分配策略。
流程
通过 NUMAPolicy
单元文件选项设置 NUMA 内存策略:
在您选择的服务中检查
NUMAPolicy
单元文件选项的值:systemctl show --property <NUMA policy configuration option> <service name>
$ systemctl show --property <NUMA policy configuration option> <service name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 作为根目录,设置
NUMAPolicy
单元文件选项所需的策略类型:systemctl set-property <service name> NUMAPolicy=<value>
# systemctl set-property <service name> NUMAPolicy=<value>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重新启动服务以应用更改。
systemctl restart <service name>
# systemctl restart <service name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
要使用 [Manager] 配置选项设置全局 NUMAPolicy
设置:
-
在
/etc/systemd/system.conf
文件中搜索文件的 [Manager] 部分中的NUMAPolicy
选项。 - 编辑策略类型并保存文件。
重新载入
systemd
配置:systemd daemon-reload
# systemd daemon-reload
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 重启服务器。
重要
当您配置严格的 NUMA 策略时,例如 bind
,请确保您也正确地设置了 CPUAffinity=
单元文件选项。