本序列文章将介绍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来简单说明一下。


图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的所有内容。

cgroup的学习(一)——what cgroup?相关推荐

  1. 【CGroup原理篇】3. CGroup使用指南

    写在前面 这里先从整体上概述cgroup的创建,挂载,参数配置和卸载,后面的章节中会一一介绍每个子系统的详细使用方法和使用案例. 一.使用Linux命令管理CGroup 1.1挂载cgroup临时文件 ...

  2. cgroup限制oracle,Yarn 使用 Cgroup 实现任务资源限制

    Linux CGroup 全称是 Linux Control Group,是 Linux 内核提供的一个用来限制进程资源使用的功能,支持如 CPU, 内存,磁盘 IO 等资源的使用限制.用户可以使用 ...

  3. 【CGroup原理篇】2. CGroup管理模式

    写在前面 我们可以通过静态.动态的方式来配置cgroup以达到管控系统资源的目的.静态的方式就是在系统启动时通过系统服务挂载cgroup并加载cgroup配置策略.动态的方式就是根据系统运行时场景实时 ...

  4. 关于cgroup 学习

    一.前言 cgroup在K8S中有重要应用,K8S参考书籍: kubernetes权威指南第5版 公司一个项目用linux 的 cgroup 技术来限制进场cpu和内存使用,具有非常好的学习意义,所以 ...

  5. linux cgroup学习总结

    linux-cgroup使用 大纲 概念 安装与使用 概念 基础知识 cgroups 是Linux内核提供的一种可以限制,隔离单个进程或者多个进程组 (process groups)所使用物理资源的机 ...

  6. 深入理解 Linux Cgroup 系列(二):玩转 CPU

    原文链接:深入理解 Linux Cgroup 系列(二):玩转 CPU 上篇文章主要介绍了 cgroup 的一些基本概念,包括其在 CentOS 系统中的默认设置和控制工具,并以 CPU 为例阐述 c ...

  7. Linux下CGroup进行CPU、内存等资源控制

    留存 from: http://www.cnblogs.com/kevingrace/p/5685433.html  and  http://www.cnblogs.com/wang_yb/p/394 ...

  8. Linux下CGroup进行CPU内存等资源控制

    留存 from: http://www.cnblogs.com/kevingrace/p/5685433.html  and  http://www.cnblogs.com/wang_yb/p/394 ...

  9. cgroup使用举例和linux内核源码详解

    cgroup的原理其实并不复杂,用法也比较简单.但是涉及的内核数据结构真的复杂,错综复杂的数据结构感觉才是cgroup真正的难点.本文结合个人学习cgroup源码的心得,尽可能以举例的形式,总结cgr ...

  10. 3.23 docker---内存控制,cgroup,cpu控制,磁盘控制,docker-compose,docker-swam集群,K8s控制docker

    一.docker内存控制 这里还没写好 二.对cpu的控制 1.系统对cpu的控制 1)查看系统的cgroup,cpu和memory cgroup的介绍:https://blog.csdn.net/w ...

最新文章

  1. html上传文件与后台处理,关于前端html图片和文件上传和后台接收方法
  2. mysql执行语句_实时查看MySQL执行的语句
  3. Python实现 logistic 回归算法
  4. boost::fusion::erase_key用法的测试程序
  5. RunTime.getRunTime().addShutdownHook的用法
  6. BZOJ1078 [SCOI2008]斜堆 堆
  7. Eclipse 答疑:Eclipse 使用 Amateras UML 创建类图点击 Finish 没反应解决方式汇总
  8. java中get接口示例_Java即时类| 带示例的get()方法
  9. 在项目中使用redis的原因
  10. .NET 高性能WEB架构-比较容易改造方式 - .NET架构
  11. k8s中各组件和kube apiserver通信时的认证和鉴权
  12. 教你学坏^_^(一段病毒代码)
  13. Crossbar技术冲破网络容量瓶颈
  14. 新手怎么画思维导图,这里有一份详细的思维导图绘制教程
  15. mongodb count查询记录条数
  16. Ciclop开源3D扫描仪软件---Horus源码分析之Image_capture.py
  17. 十分钟搭建人脸识别小游戏
  18. python实现BMR计算器,日历计算,存钱挑战,分形树和五角星绘制等
  19. project2010 实验一使用记录
  20. 怎么看曲率梳_到底什么定型喷雾比较好?用16次亲身测试证明给你看

热门文章

  1. CSS3+JS制作的一款图标任意拖动,并且可以放在文件夹中
  2. Windows Live Writer Technical Preview 公布下载
  3. java进行语法解析时已到达文件结尾_java进行语法解析时已到达文件结尾?
  4. spring cloud构建互联网分布式微服务云平台-高可用的服务注册中心
  5. 线性查找算法(BFPRT)
  6. [Verilog] 薄膜建盤4X4 電路程式設計
  7. pkcs1与pkcs8格式RSA私钥互相转换
  8. Linux内核等待队列wait_queue学习
  9. IE ADD for rms
  10. 使用 jdbc 从数据库中查询数据