cgroup的学习(一)——what cgroup?

本序列文章将介绍cgroup概念,cgroup框架,cgroup的子系统

 

What Cgroup?

      Control Groups provide a mechanism foraggregating/partitioning sets of tasks, and all their future children, intohierarchical groups with specialized behaviour.--http://www.kernel.org/doc/Documentation/cgroups/cgroups.txt,从这个定义我们可以大概的知道:Cgroup是对set of tasks进行管理,并且同样作用于它们的children,即它们是一个hierarchical关系,在一个hierarchical内它们的行为是一致的。那么cgroup到底提供了那些功能?我们通过图1来简单说明一下。

alt
图1

       从图1中,以可看到该cgroup支持:cpuset,ns,cpu,cpuacct,memory等子系统,hierarchy代表hierarchy id,从图中亦可以看到cpuset,cpu,memory,blkio被mount到同一个hierarchy 14。下面我们简单的介绍更子系统的作用:
Cpuset:用于指定tasks使用的cpu及memory nodes,等价于sched_setaffinity,set_mempolicy的效果;
Ns:命名空间服务;
Cpu:用于设置tasks对cpu的利用率;
Cpuacct:用于记录cpu的统计信息;
Memory:用于设置tasks对内存的使用量;
Devices:用于设置tasks对devices的使用(whitelist,read,write,mknod);
Freezer:用于挂起或恢复tasks;
Net_cls:使用等级识别符(classid)标记网络数据包,允许linux流量控制(tc)识别从具体cgroup中生成的数据包;
Blkio:控制并监控tasks对块设备的I/O访问;
注:更详细的解说见:https://access.redhat.com/knowledge/docs/zh-CN/Red_Hat_Enterprise_Linux/6/html/Resource_Management_Guide/index.html

 

简单使用及注意事项

       通过/proc/cgroups可以查看系统支持的cgroup子系统(也可以用来判断系统是否支持cgroup,如果hierarchy项非0说明相应的子系统已经被mount,此时如果再mount这个子系统到其它的目录就可能提示busy错误)。然后将所需要的cgroup子系统mount到/cgroup目录:mount –t cgroup –o cpu,cpuset,memory,blkio agent_cgroup /cgroup,该过程也是创建一个hierarchy,此时如果提示:mount: agent already mounted or /cgroup busy则可以通过lssubsys –m memory来查询对应的子系统被mount到哪个目录,然后一一排查,是否需要把原来的subsys先umount(umount前要求把子系统目录下的group依次从底层删除掉,最后才再umount才能够保证umount真正成功,否则如果直接umount虽然目录没有了,但其实并没有umount成功,通过/proc/cgroup可以看到它的hierarchy项还是非0,此时就需要再把这个子系统mount到一个目录,然后依次把没有rmdir的目录给先删除掉,再umount)。
      创建一个cgroup,在刚才mount的目录下,创建目录:mkdir /cgroup/cg_test,即创建了一个cgroup(该操作对应的操作为rmdir,只有把cgroup内的tasks移到top group才能真正将一个cgroup删除掉),此时可以看到新目录下已经有许多文件了。
      然后修改相应的这些伪文件内容echo 512 > /cgroup/cg_test/cpu.shares,即完成对该cgroup的配置。
      最后往这个cgroup中加入task:echo pid > /cgroup/cg_test/cpu.tasks或cgexec(注:如果想把某个task从某个group移出的话,只需将它放入root的tasksecho pid > /cgroup/tasks)。
      就这么简单,但是上面的操作都是需要root权限,并且到现在内核还没有提供相应的api接口,只能这种文件读写的方式,或者是相应的工具来实现。这4个过程也是我们后面分析cgroup的所有内容。

  • 2
    点赞
  • 4
    收藏
  • 打赏
    打赏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论

打赏作者

wudongxu

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

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值