systemd 内存限制用户实例不起作用

systemd 内存限制用户实例不起作用

我使用的是 Arch Linux,systemd 版本是 239。我使用 systemd.unified_cgroup_hierarchy=1 内核参数启动系统。

我制作了两个单元文件,limit.slice 和 malloc.service。

limit.slice 是

[Unit]
Description=limit memory slice.

[Slice]
MemoryAccounting=yes
MemoryMax=100M

和 malloc.service 是

[Unit]
Description=memory consuming process

[Service]
ExecStart=/home/example/malloc_program
Slice=limit.slice

malloc_program 只是不断调用 malloc() 来消耗内存。

我将这些文件放入 /home/example/.config/systemd/user/ 并运行systemctl --user start malloc.service。 Service 的 CGroup 低于limit.slice预期。

CGroup: /user.slice/user-1000.slice/[email protected]/limit.slice/malloc.service

但是,即使使用的内存超过 100 MB,该进程仍会继续运行。

我不明白为什么内存限制在用户实例中不起作用......

答案1

尝试在 .slice 文件中设置 malloc 服务:

[Slice]
MemoryAccounting=true
MemoryLimit=100M
MemoryMax=100M
MemoryHigh=50M

相关内容