Docker底层原理:Cgroup V2的使用

文章目录

  • 检查 cgroup2 文件系统是否已加载
  • 检查系统是否已挂载 cgroup2 文件系统
  • 创建 cgroup2 层次结构
  • 查看 cgroup2 开启的资源控制类型
  • 启用 cgroup2 资源控制
  • 设置 cgroup2 资源限制
  • 加入进程到 cgroup2

检查 cgroup2 文件系统是否已加载

cat /proc/filesystems | grep cgroup2

检查系统是否已挂载 cgroup2 文件系统

mount | grep cgroup2

若系统没有加载cgroup2文件系统,需要执行下面这条命令

echo 'cgroup2 /sys/fs/cgroup cgroup2 rw,nosuid,nodev,noexec,relatime,seclabel 0 0' >> /etc/fstab

mount -t cgroup2 none /sys/fs/cgroup

创建 cgroup2 层次结构

mkdir /sys/fs/cgroup/<cgroup_name>

查看 cgroup2 开启的资源控制类型

cat /sys/fs/cgroup/<cgroup_name>/cgroup.controllers

启用 cgroup2 资源控制

# 开启cpu和memory控制,具体情况,具体分析
echo "+cpu +memory" > /sys/fs/cgroup/<cgroup_name>/cgroup.subtree_control

设置 cgroup2 资源限制

# CPU配额限制为50%(即100毫秒周期最多执行50毫秒)
echo "50000 100000" > /sys/fs/cgroup/<cgroup_name>/cpu.max
# 内存使用将被限制在最大50mb
echo 50M > memory.max

加入进程到 cgroup2

# 将pid为7890的进程加入到你创建的cgroup
echo 7890 > /sys/fs/cgroup/<cgroup_name>/cgroup.procs

你可能感兴趣的:(容器,docker,容器)