CentOS 7 中的 CGroup 配置

CentOS 7 中的 CGroup 配置

我正在使用 CentOS 7,系统中注册了多个用户(UID:1000、1001、1002 等)

我想使用 cgroup 和 systemd 限制每个用户的内存消耗。

以下命令运行良好,但必须使用 UID=1000 的用户登录。

systemctl set-property user-1000.slice MemoryLimit=3000M
systemctl daemon-reload

如果用户未登录,我会收到以下错误消息

Failed to set unit properties on user-1000.slice: Unit user-1000.slice is not loaded.

假设我有 20 个用户,我想为他们设置内存限制。我应该手动登录还是编写一些变通脚本来执行此操作以便systemctl set-property为每个用户运行命令?或者存在一些优雅而直接的解决方案?

答案1

这里有一个类似的问题的答案:https://unix.stackexchange.com/questions/34334/how-to-create-a-user-with-limited-ram-usage

ulimit和施加的限制limits.conf是针对每个流程的。我对这一点确实不太清楚。

如果您想要限制用户使用的内存总量(这是您要求的)。您需要使用 cgroups。

/etc/cgconfig.conf

group memlimit {
    memory {
        memory.limit_in_bytes = 4294967296;
    }
}

这将创建一个cgroup最大内存限制为 4GiB 的。

/etc/cgrules.conf

luser   memory   memlimit/

这将导致运行的所有进程在创建的 cgroupluser内运行。memlimitcgconfig.conf

相关内容