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