我有一台 Debian 10 服务器,我试图使用 cgroups2 限制用户的内存和交换。
使用memory.limit_in_bytes
工作正常,但我想限制内存+交换,使用memory.memsw.limit_in_bytes
它不起作用。
当我运行时出现此错误cgconfigparser
:
root@server:~# cgconfigparser -l /etc/cgconfig.conf
Error: failed to set /sys/fs/cgroup/memory/group1/memory.memsw.limit_in_bytes: Invalid argument
cgconfigparser; error loading /etc/cgconfig.conf: Failed to remove a non-empty group
root@server:~#
这是该组:
group group1 {
memory {
memory.memsw.limit_in_bytes = 512m;
}
}
知道出了什么问题吗?
编辑:我已经在 GRUB 命令中启用了 cgroups 内存和 swapaccount,但问题仍然出现。
答案1
感谢@doktor5000提供答案限制单个 Linux 进程的内存使用
我从该答案中得出以下结论:memory.limit_in_bytes
必须在 之前设置memory.memsw.limit_in_bytes
,并且memory.memsw.limit_in_bytes
必须大于或等于memory.limit_in_bytes
所以就我而言,这个组配置有效:
group group1 {
memory {
memory.limit_in_bytes = 512m;
memory.memsw.limit_in_bytes = 512m;
}
}
这似乎将用户的内存+交换空间限制为 512MB。我已经测试过了https://github.com/julman99/eatmemory