【手把手教你使用cgroup配置,十分钟就会】

什么是cgroup

cgroups 是Linux内核提供的一种可以限制单个进程或者多个进程所使用资源的机制,可以对 cpu,内存等资源实现精细化的控制,目前越来越火的轻量级容器 Docker 就使用了 cgroups 提供的资源限制能力来完成cpu,内存等部分的资源控制。

cgroup中的参数

概念及原理

cgroups 的全称是control groups,cgroups为每种可以控制的资源定义了一个子系统。典型的子系统介绍如下:

cpu 子系统,主要限制进程的 cpu 使用率。
cpuacct 子系统,可以统计 cgroups 中的进程的 cpu 使用报告。
cpuset 子系统,可以为 cgroups 中的进程分配单独的 cpu 节点或者内存节点。
memory 子系统,可以限制进程的 memory 使用量。
blkio 子系统,可以限制进程的块设备 io。
devices 子系统,可以控制进程能够访问某些设备。
net_cls 子系统,可以标记 cgroups 中进程的网络数据包,然后可以使用 tc 模块(traffic control)对数据包进行控制。
freezer 子系统,可以挂起或者恢复 cgroups 中的进程。
ns 子系统,可以使不同 cgroups 下面的进程使用不同的 namespace。

以 memory为例看下如何配置

先在memory下添加一个组,这个组是方便后续的进程归属,cgroup的配置以这个组为单位

sudo mkdir /sys/fs/cgroup/memory/mytainer

如上我们创建了一个 mytainer的cgroup memory的组

配置内存限制

[admin@v43b09265 /home/admin]
$sudo bash -c ‘echo -n “50M” > /sys/fs/cgroup/memory/mytainer/memory.limit_in_bytes’

[admin@v43b09265 /home/admin]
$sudo bash -c ‘echo -n “50M” > /sys/fs/cgroup/memory/mytainer/memory.memsw.limit_in_bytes’

通过上述的配置,把进程的内存限制在 50M

这里有点要注意: 如果直接 echo "50M " 报 permission deny 如下
在这里插入图片描述

那么就采用 sudo bash -c 的方式去搞

写一个内存申请脚本

import sys
import time

def print_help():
  print 'Usage: '
  print ' python mem.py 100MB'
  print ' python mem.py 1GB'

if __name__ == "__main__":
  print("alloc 1M memory...")
  s = ' '  * 1024 * 1024  // 这里先申请1M 内存
  time.sleep(10)
  print("sleep 10s ...")
  s = s * 100. // 再申请 100M内存
  print("alloc 100M memory...")
  time.sleep(30)
  print("sleep 30s ...")

该脚本是个python 脚本,命名为mem.py

执行脚本测试

在这里插入图片描述
如上图所示 , 我们启动 脚本的同时 把它添加到 我们cgroup的memory的组里面
会发现脚本执行 到100M内存的时候被kill掉了

结束语

这里也可以先把python的脚步单独启动, 然后把 其 pid 添加到 cgroup对应的tasks 里面, 然后也是一样的。
在这里插入图片描述
但是如果脚本的内存已经是申请结束了,然后再把其 pid 加到task 里面那么是无效果的,cgroup 不会把脚本杀死

针对 cpu等设置也是同样的思路。 求人不如求己。共勉!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

神技圈子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值