25.5. 使用单元文件配置内存资源控制设置
每个持久性单元都由 systemd 系统和服务管理器监管,并在 /usr/lib/systemd/system/ 目录中有一个单元配置文件。要更改永久单元的资源控制设置,请在文本编辑器中手动或从命令行修改其单元配置文件。
手动修改单元文件是为进程组设置限制、优先级或控制对硬件资源的访问的一种方式。
流程
要限制服务的内存用量,请修改
/usr/lib/systemd/system/example.service文件,如下所示:… [Service] MemoryMax=1500K …
… [Service] MemoryMax=1500K …Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此配置对控制组中执行的进程的最大内存消耗限制,
example.service是该控制组中的一部分。注意使用后缀 K、M、G 或 T 将 Kilobyte、Megabyte、Gigabyte 或 Terabyte 识别为一个测量单位。
重新载入所有单元配置文件:
systemctl daemon-reload
# systemctl daemon-reloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重启服务:
systemctl restart example.service
# systemctl restart example.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 重启系统。
验证
检查更改是否生效:
cat /sys/fs/cgroup/memory/system.slice/example.service/memory.limit_in_bytes 1536000
# cat /sys/fs/cgroup/memory/system.slice/example.service/memory.limit_in_bytes 1536000Copy to Clipboard Copied! Toggle word wrap Toggle overflow 内存消耗限制为大约 1,500 KB。
注意memory.limit_in_bytes文件将内存限制存储为 4096 字节的倍数 - 一个内核页面大小,专用于 AMD64 和 Intel 64。实际的字节数量取决于 CPU 构架。