systemd 限制应用资源使用率(待验证)
systemctl set-property app-agent MemoryLimit=200M CPUQuota=30%
systemctl daemon-reload
systemctl restart app-agent
systemd unit file里支持的资源隔离配置项,如常见的:
CPUQuota=value
该参数表示服务可以获取的最大CPU时间,value为百分数形式,高于100%表示可使用1核以上的CPU。与cgroup cpu控制器cpu.cfs_quota_us配置项对应。
MemoryLimit=value
该参数表示服务可以使用的最大内存量,value可以使用K, M, G, T等后缀表示值的大小。与cgroup memory控制器memory.limit_in_bytes配置项对应。
(可选)使用 --runtime
选项。如果使用此选项,下一次重引导后已设置的限制不会保留。
临时配置示例:systemctl set-property --runtime example.service MemoryLimit=200M
命令会立即为 example.service
服务分配内存限值。MemoryMax
参数被定义,直到 /run/systemd/system.control/example.service.d/50-MemoryMax.conf
文件中的下一个重启为止。重启后,整个 /run/systemd/system.control/
目录和 MemoryMax
会被删除。#50-MemoryMax.conf
文件存储内存限制,为 4096 字节的倍数 - 特定于 AMD64 和 Intel 64 的内核页大小。实际的字节数量取决于 CPU 构架。
以下参数仅当使用了统一控制组层次结构时此设置才可用(),并会禁用 MemoryLimit=
。要启用统一控制组层次结构,请将 systemd.unified_cgroup_hierarchy=1
作为内核命令行参数追加到 GRUB 2 引导加载程序
SLES 15 SP3 | 管理指南 | 引导加载程序 GRUB 2 (suse.com)