Cgroups控制cup,内存,io资源示例

http://www.cnblogs.com/yanghuahui/p/3751826.html

Docker组成LXC+AUFS  LXC=cgroup+namespace+chroor

libcgroup

Cgroup全称control groups,可用来限制、记录、隔离进程组的物理资源,下面小编将针对Cgroup在Linux上的安装和配置做个详细介绍,对Cgroup感兴趣的朋友可以来学习下。

为什么要有cgroup

Linux系统中经常有个需求就是希望能限制某个或者某些进程的分配资源。也就是能完成一组容器的概念,在这个容器中,有分配好的特定比例的cpu时间,IO时间,可用内存大小等。于是就出现了cgroup的概念,cgroup就是controller group,最初由google的工程师提出,后来被整合进Linux内核中。

Cgroup是将任意进程进行分组化管理的Linux内核功能。cgroup本身提供将进程进行分组化管理的功能和接口的基础结构。

而后的Android操作系统也就凭借着这个技术,为每个应用程序分配不同的cgroup,将每个程序进行隔离,达到了一个应用程序不会影响其他应用程序环境的目的。

概念

task:

一个进程

control group:

控制族群,按照某种标准划分的进程组

hierarchy:

层级,control group可以形成树形的结构,有父节点,子节点,每个节点都是一个control group,子节点继承父节点的特定属性。

subsystem:

子系统。

子系统就是资源控制器,每种子系统就是一个资源的分配器,比如cpu子系统是控制cpu时间分配的。

可以使用lssubsys -al来列出系统支持多少种子系统,和使用ls /sys/fs/cgroup/ (Ubuntu)来显示已经挂载的子系统:

可以看到这里的几个子系统,比如cpu是控制cpu时间片的,memory是控制内存使用的。

如何安装cgroup

安装cgroup:

apt-get install cgroup-bin

如何为cgroup分配限制的资源

首先明白下,是先挂载子系统,然后才有control group的。意思就是比如想限制某些进程的资源,那么,我会先挂载memory子系统,然后在memory子系统中创建一个cgroup节点,在这个节点中,将需要控制的进程id写入,并且将控制的属性写入。

拿memory子系统为例:

通过查看cgroup的配置文件:

cat /etc/cgconfig.conf

看到memory子系统是挂载在目录/sys/fs/cgroup/memory下

进入这个目录

创建一个文件夹,就创建了一个control group了

mkdir test

发现test目录下自动创建了许多文件:

这些文件的含义如下:

于是,限制内存使用我们就可以设置memory.limit_in_bytes

将一个进程加入到这个test中

echo $$  >>  tasks  (tasks是test目录下的一个文件)

这样就将当前这个终端进程加入到了内存限制的cgroup中了。

将这个cgroup删除只要删除目录就行了

rmdir test

上面就是Linux安装及配置Cgroup的方法介绍了,本文主要介绍了为Cgroup分配限制资源的方法,以及Cgroup的安装和作用。

linux管理子进程c,Linux 进程管理 CGroup相关推荐

  1. linux基础知识_压缩—进程管理-网络管理-ftp-nfs-ssh-scp

    linux基础知识_压缩-进程管理-网络管理-ftp-nfs-ssh-scp 1.压缩包管理 gzip .gz格式的压缩包,不打包,分别压缩,原文件消失 bzip2 .bz2格式的压缩包,原文件不会消 ...

  2. linux---基本权限chmod/软件管理之二进制安装/进程管理/系统服务/psio模型

    1. 基本权限chmod 1 rwx r-x r-x属主(文件所有者) 属组权限 其他人权限 2 权限详解r:read写权限w: write写权限x:可执行 3 修改权限7=4(r)+2(w)+1(x ...

  3. linux进程配置异常中断自动重启_Linux系统配置及服务管理 (四)进程管理

    一.进程简介 进程是已启动的可执行程序的运行实例,进程有以下组成部分: • 已分配内存的地址空间: • 安全属性,包括所有权凭据和特权: • 程序代码的一个或多个执行线程: • 进程状态. 程序: 二 ...

  4. linux内核设计与实现---进程管理

    进程管理 1 进程描述符及任务结构 分配进程描述符 进程描述符的存放 进程状态 设置当前进程状态 进程上下文 进程家族树 2 进程创建 写时拷贝 fork() vfork() 3 线程在Linux中的 ...

  5. 自实现进程管理器linux,【Linux工具篇】supervisor进程管理器

    概述 项目中遇到有些脚本需要通过后台进程运行,保证不被异常中断,除了通过nohup.&.screen以外,更推荐的方法就是用Supervisor. Supervisor是用Python开发的一 ...

  6. Linux运维篇之进程管理②

    一.HUP信号 当用户注销(logout)或者网络断开或者关闭终端时(一定是终端整体关闭,而不是单纯的exit)时,终端会收到Linux HUP信号,然后终端在结束前会关闭所有子进程. 如果我们想让进 ...

  7. 11、Linux系统基础原理、进程管理工具、任务计划

    Linux进程及作业管理 ​ 内核的功用:进程管理.文件系统.网络功能.内存管理.驱动程序.安全功能 ​ Process: 运行中的程序的一个副本: ​ 存在生命周期 Linux内核存储进程信息的固定 ...

  8. Linux——文件或目录的权限管理、网络管理、进程管理、服务管理的相关命令

    1.文件或目录的权限管理命令 一个用户至少属于一个组,也可以属于多个组:一个文件或者目录也必须属于一个,并且只能属于一个组: 在一个文件或者目录看来,linux系统中所有的用户可以分为三类:所有者:同 ...

  9. 【Linux】ps和top进程管理命令

    ps命令和top都是查看Linux系统进程相关信息,即进程管理工具. 1. ps和top命令区别 1.1 ps命令 可以查看进程的瞬间信息(系统在过去执行的进程的静态快照). 只看到的是命令执行瞬间的 ...

  10. linux内核的进程管理,Linux内核设计与实现——进程管理

    主要内容 进程 进程描述符及任务结构 进程创建 线程在linux中的实现 进程终结 1. 进程 进程不仅仅是一段可执行程序代码,还包含其他资源,如打开的文件,挂起的信号,内核内部数据,处理器状态,一个 ...

最新文章

  1. Using Graphviz dot for ERDs, network diagrams and more
  2. HAAR、LBP分类器训练
  3. 最大似然估计(最大可能性估计)(likelihood)
  4. 【嵌入式】ARM技术博客汇总
  5. tensorflow环境下的识别食物_在TensorFlow+Keras环境下使用RoI池化一步步实现注意力机制...
  6. 16kb等于多少b_面试官:MySQL索引为何选择B+树?
  7. 获取cookies的简单代码(总结待续)
  8. html中opacity的使用
  9. anaconda 安装包 超时_vs2010nuget安装包时 操作超时
  10. java类图_Java开发设计——UML类图
  11. 给新服务器装linux系统,新服务器安装linux系统安装教程
  12. bin和obj文件夹
  13. 那些出其不意给你惊喜的点,重新感受for循环的爱,来自C#
  14. Gym - 101635J - Frosting on the Cake
  15. css template download
  16. SpringBoot整合Spring Data Elasticsearch
  17. SourceInsight4.0下载安装教程
  18. 虚拟人,数字人,虚拟数字人的定义区别
  19. AUTOSAR实战教程 - 软件集成调试_程序跑飞一招解决
  20. Python批量生产短视频

热门文章

  1. 掌握这35 个小细节,助你有效提升 Java 代码的执行效率!
  2. rm 空间不释放_rm删除文件之后,空间就被释放了吗?
  3. python 有序字典 OrderedDict
  4. cannot import name #39get_all_providers#39
  5. a leaf Variable that requires grad has been used in an in-place operation
  6. python TypeError: Expected int32, got list containing Tensors of type '_Message' instead.
  7. oracle递归用法
  8. Day 05 名人能树立好榜样吗
  9. PMP-【第14章 五大过程组的工作要点】2021-2-17(292页-303页)
  10. 一、LDAP目录服务介绍