【问题标题】:CGroup configuration in CentOS 7CentOS 7 中的 CGroup 配置
【发布时间】:2017-11-18 15:43:09
【问题描述】:

我使用的是 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 命令?还是存在一些优雅而直接的解决方案?

【问题讨论】:

    标签: centos7 systemd cgroups


    【解决方案1】:

    这个问题是基于配置方式的问题,并不代表cgroup不能限制非登录用户。

    systemctl set-property ... 命令只支持运行时的资源设置控制。 Failed to set unit properties on user-1000.slice: Unit user-1000.slice is not loaded. 只是运行时问题。您可以使用静态方式解决问题。

    示例>

    # vim /etc/systemd/system/user-1000.slice

    创建特定的用户切片文件或 slice.d。

    [Unit]
    Description=1000 user.slice
    
    [Slice]
    MemoryAccounting=true
    MemoryLimit=3000M
    

    重新加载systemd。

    # systemctl daemon-reload

    检查 cgroup 资源控制设置。

    1.以 id=1000 用户身份登录。 (如果用户 1000 登录,则 cgroup 设置会动态应用)

    2.查看cgroup限制状态

    # cd /sys/fs/cgroup/memory/user.slice/
    
    # ls -ld *.slice
      ...snip...
      user-1000.slice
      ...snip...
    
    # cd ./user-1000.slice
    # cat ./memory.limit_in_bytes
    3145728000
    

    我希望这会对你有所帮助。

    【讨论】:

      猜你喜欢
      • 2016-01-04
      • 2017-10-11
      • 2019-06-12
      • 2018-02-01
      • 2020-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多