【笔记版】在容器内使用cgroup限制CPU

本文介绍了如何在Linux容器中使用cgroups技术,通过设置CPU配额和周期,限制进程对CPU资源的占用。作者展示了创建cgroup、设置限制参数、将进程分类以及监控效果的详细步骤。
摘要由CSDN通过智能技术生成

在这里插入图片描述

cgroup——cpu限制小实验

使用cgcreate命令创建一个新的控制组:

sudo cgcreate -g cpu:my_group

在容器中创建一个脚本文件如下:这就是一个空跑的死循环。

#!/bin/sh
while true
do
        :
done

运行这个shell,

./while.sh

用top命令,将while.sh运行的这个进程号PID加入控制组,

sudo cgclassify -g cpu,memory:my_group PID

在这里插入图片描述
用top命令观察while脚本运行的情况,此时几乎占据了整个cpu,CPU使用率均为100%上下浮动。

top -b 批次出现与while有关的进程状态。

在这里插入图片描述
在容器的cgroup目录下,设置cpu.max限制容器中进程最多只能使用一半的CPU时间。

$ cat cpu.max

max 100000  # 内容格式为:[每个周期中可以使用的时间 一个周期中总共的时间],单位为微秒
$ echo 50000 100000  > ./cpu.max

[图片]

接着我们在容器中运行while.sh脚本,用top命令观察while脚本运行的情况:

可以看到CPU使用率那一列始终在50%上下波动。

在这里插入图片描述

cgroup常用指令

在容器内使用cgroup限制CPU可以使用以下步骤:

  1. 确保你的内核支持cgroup,并且已经安装了cgroup工具。
  2. 创建一个名为cpu的cgroup,可以使用以下命令:
    sudo cgcreate -g cpu:/cpu
    
  3. 设置cpu的限制,可以使用以下命令:
    sudo cgset -r cpu.cfs_quota_us=<quota> -r cpu.cfs_period_us=<period> cpu
    
    其中,<quota>表示CPU分配给cgroup的时间量,以微秒为单位,<period>表示时间周期,以微秒为单位。
    例如,如果想要将CPU限制在50%的使用率,可以设置quota为50000(注意,具体值可能需要根据你的系统进行调整):
    sudo cgset -r cpu.cfs_quota_us=50000 -r cpu.cfs_period_us=100000 cpu
    
  4. 将容器进程加入到cpu cgroup中,可以使用以下命令:
    sudo cgclassify -g cpu:/cpu <pid>
    
    其中,<pid>表示容器进程的PID。
  5. 确认限制是否生效,可以使用以下命令:
    sudo cgget -g cpu:/cpu
    
    这将显示出cpu cgroup的当前配置信息,包括cpu的限制情况。

通过以上步骤,你可以在容器内使用cgroup限制CPU的使用。请注意,具体的命令可能会因为你使用的cgroup工具版本和操作系统版本的不同而有所差异,你可能需要参考相应的文档和手册来获取更详细的信息。

  • 9
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值