ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

cgroup 使用

cgroup 使用
  1. 验证系统使用 cgroup v2:

    $ mount | grep cgroup2
    cgroup2 on /sys/fs/cgroup type cgroup2 (rw,nosuid,nodev,noexec,relatime,nsdelegate,memory_recursiveprot)
    
  2. 创建 cgroup:

    # 创建名为 limited_memory 的 cgroup
    sudo mkdir /sys/fs/cgroup/limited_memory
    
  3. 设置内存限制:

    # 限制内存用量为 2GB
    echo $((2 * 2 ** 30)) | sudo tee /sys/fs/cgroup/limited_memory/memory.max
    
  4. 将用户进程加入 cgroup:

    # 将 USER 的所有进程加入 cgroup
    for pid in $(pgrep -u USER); doecho $pid | sudo tee /sys/fs/cgroup/limited_memory/cgroup.procs
    done
    
  5. 验证配置:

    # 检查 cgroup 中的进程
    cat /sys/fs/cgroup/limited_memory/cgroup.procs
    

持久化

为了确保新进程也受到限制,可以在用户登录时自动将其加入到指定的 cgroup。这里通过创建一个用户服务来实现:

  1. 编辑单元文件:

    vim ~/.config/systemd/user/cgroup.service
    
    [Unit]
    Description=Move user session to cgroup[Service]
    ExecStart=/usr/bin/bash -c "echo $$ > /sys/fs/cgroup/limited_memory/cgroup.procs"[Install]
    WantedBy=default.target
    
  2. 重载单元文件:

    systemctl --user daemon-reload
    
  3. 启动服务:

    systemctl --user enable cgroup
    systemctl --user start cgroup
    
  4. 检查服务状态:

    systemctl --user status cgroup
    

反持久化

sudo rmdir /sys/fs/cgroup/limited_memory

参考:Controlling Process Resources with Linux Control Groups | iximiuz Labs

返回列表