cgroup:control group-控制群组:将用户(的进程)加入某个群组(又叫控制器controller), 通过

指定群组对资源-cpu 内存 network等的使用,来限制用户对计算机资源的使用

类似于windows中的“ 资源配额” ??

类似于很多软件中的“RBAC“ ,基于角色的访问控制??

跟pam认证相比,cgroup更简单更集中更便于管理,符合unix的kiss原则

----------------------借鉴老外的设计(系统)的思想

整个功能由libcgroup.xx.rpm包实现

[Thu Oct 22 09:09 ~/Desktop]# rpm -qa|grep "cgroup"
libcgroup-0.37-4.el6.i686

首先设计控制器类型: 设一个/etc/cgconfig.conf文件,包括cpu cpuset cpuacct memory devices blkio freezer net_cls

  并不是一上来就整一个控制器,全部内容都甩到里面去, 而是  “分层” 设计思想

然后设计控制器(即实际要用来控制的群组=controller): 指定控制器的类型,控制规则: 这个也是在/etc/cgconfig.conf文件中定义的

  定义好要使用的控制器后,将控制器就写在:/cgroup/memory-cpu-netcls等对应的目录中,这个表示“伪文件系统”

有了控制器群组,就要告诉cgroup哪些用户要限制资源的使用,就要把用户(或进程)加入到群组中去:

  它设计了一个配置文件: /etc/cgrules.conf

好了,经过这两个步骤的设置就可以使用cgroup了,cgroup的资源限制就起作用了:

启动cgroup服务,然后可以查看了:cgget, 直接ls /cgroup下的文件...

**** 以下内容来自网络****

group exgroup {      //新建的组,控制器类型为memory
        //挂载后位于/cgroup/memory/exgroup/*
    memory {
        memory.limit_in_bytes = 209715200;  //限制使用的内存大小(200MB)
    }
}
group daemons/http {      //新建的组,控制器类型为cpu
        //挂载后位于/cgroup/cpu/daemons/http/*
    cpu {
        cpu.share = "512";     //CPU优先级,默认为1024
    }
}

  二、配置资源限制规则
 
 1. 对于系统服务,建议采用daemon模式 —— /etc/sysconfig/xxxx
[root@localhost ~]# vim /etc/sysconfig/httpd
... ...
CGROUP_DAEMON="cpu:daemons/http"
//通过CGROUP_DAEMON指定httpd服务要使用的控制器类型(cpu)、资源群组(daemons/http)
//可参考文档:/usr/share/doc/libcgrou-0.37/README.RedHat
 
2. 对于用户进程,需要编辑策略文件 —— /etc/cgrules.conf
[root@localhost ~]# vim /etc/cgrules.conf
... ...
<user>:<process name>    <controllers>    <destination>
harry        memory        exgroup/
*:httpd      cpu           daemons/http
 
//第1-3列依次表示:用户和进程、控制器类型、资源群组
//用户名与进程名之间以冒号分隔,允许使用通配符
//如果使用多个控制器,以逗号分隔
//资源群组只需要写相对(于伪文件系统根目录的)路径
三、启动cgroup相关服务
    系统服务cgconfig会读取cgconfig.conf配置文件,并据此挂载伪文件系统;系统服务cgred会调用文件cgrules.conf,并应用其中设置的规则来控制资源使用。

 
[root@localhost ~]# service cgconfig start ; chkconfig cgconfig on // 是cgconfig服务,不是cgroup服务!
[root@localhost ~]# service cgred start ; chkconfig cgred on

**** end: 来自网络****

cgred: cg-re-d: cgroup ruels engine daemon: cgroup的规则引擎daamon,

--- accompanied by the dean, they visited the hospital

--- /etc/cgrules.conf中的<destination> 是指你建立的控制器的路径,取该控制器对/cgconfig/"controller_type"/...,

可以设置多级的子目录,这样便于对管理器进行分类和管理

如: harry memory  usergoup/faculty/harry/   (faculty:f2ek2ti)

harry memory usergroup/faculty/harry/cp(单个的进程)

@student  memory usergroup/student/ (用户组)

########################################

#

# 实际在设置group cpu/cpuset类型时,如果直接设置子目录的资源访问限制,会发生“cgconfig"服务起不来的错误:

[Thu Oct 22 14:51 ~]# service cgconfig start
Starting cgconfig service: Loading configuration file /etc/cgconfig.conf failed
Value setting does not succeed
Failed to parse /etc/cgconfig.conf                         [FAILED]
原来的/etc/cgconfig.conf文件内容:

...

group daemon/http {
    cpu {
        cpu.share = “512“;    # cpu.share = "512" ,是说cpu的优先级,不是使用cpu的多少
    }
}

...

解决方法参考这篇文章:   http://blog.csdn.net/t0nsha/article/details/8511433

就是说, 设置类型如果是cpu,cpuset要限制某个用户(组)限制使用哪个cpu,使用cpu的优先级时,不能只设置最底层的 “子目录“

的限制,还要设置其父目录的使用限制,不包括根的限制:

#### 设置其父目录的使用限制

group daemons {

  cpu {

    cpu.share="512"

  }

}

#### 设置其子目录的使用限制

group daemons /http {

  cpu {

    cpu.share="512"

  }

}

linux的cgroup控制的更多相关文章

  1. Linux systemd资源控制初探

    Linux systemd资源控制初探 本文记录一次cgroup子目录丢失问题,并简单探索了Linux systemd的资源控制机制. 问题现象 我们希望通过systemd拉起服务并通过cgroup限 ...

  2. Linux iptables 应用控制访问SSH服务

    Title:Linux iptables 应用控制访问SSH服务  --2012-02-23 17:51 今天用到了以前从来没有用到过的,iptables控制访问,只允许外部访问SSH服务(22号端口 ...

  3. PHP来控制Linux,ssh2来控制服务器端

    注意:我们用PHP来控制Linux,php环境可以在windows也可以在linux,但是我们要控制的机器是一台linux(被控制的linux关闭selinux和firewalld). 如果php在l ...

  4. Linux远程访问及控制

    Linux远程访问及控制 目录 Linux远程访问及控制 一.SSH远程管理 1. SSH远程管理概述 2. OpenSSH概述 3. 配置OpenSSH服务端 4. sshd服务的验证方式 5. 使 ...

  5. Linux下利用CGroup控制CPU、内存以及IO的操作记录

    CGroup及其子系统的介绍在这里就不赘述了,可以参考:Linux下CGroup使用说明梳理废话不多说,这里记录下利用CGroup控制CPU.内存以及IO的操作记录: libcgroup工具安装这里以 ...

  6. Android/Linux下CGroup框架分析及其使用

    1 cgroup介绍 CGroup是control group的简称,它为Linux kernel提供一种任务聚集和划分的机制,可以限制.记录.隔离进程组(process groups)所使用的资源( ...

  7. Linux的Cgroup

    为什么要有cgroup Linux系统中经常有个需求就是希望能限制某个或者某些进程的分配资源.也就是能完成一组容器的概念,在这个容器中,有分配好的特定比例的cpu时间,IO时间,可用内存大小等.于是就 ...

  8. Linux的Cgroup<实例详解>

    为什么要有cgroup Linux系统中经常有个需求就是希望能限制某个或者某些进程的分配资源.也就是能完成一组容器的概念,在这个容器中,有分配好的特定比例的cpu时间,IO时间,可用内存大小等.于是就 ...

  9. Linux运行与控制后台进程的方法:nohup, setsid, &, disown, screen

    我们经常会碰到这样的问题,用ssh登录了远程的Linux服务器,运行了一些耗时较长的任务,结果却由于网络等的不稳定导致任务中途失败.这是由于在用户注销(logout)或者网络断开时,终端会收到 HUP ...

随机推荐

  1. LeetCode 笔记23 Best Time to Buy and Sell Stock III

    Best Time to Buy and Sell Stock III Say you have an array for which the ith element is the price of ...

  2. jQuery.smoove — jQuery和CSS3炫酷滚动页面内容元素动画特效插件

    插件介绍: jQuery-smoove是一款jQuery和CSS3炫酷滚动页面内容元素动画特效插件.该内容元素动画插件在页面滚动到指定位置时,该位置的HTML元素会执行指定的CSS3动画特效,如旋转. ...

  3. 深入理解计算机系统家庭作业汇总 20135301&&20135328

    深入理解计算机系统家庭作业 深入理解计算机系统第二章家庭作业 题目2.64 题目要求 判断二进制数偶数位是否有任意一位位为1,有的话返回1,否则返回0 解题过程 int any_even_one(un ...

  4. Week2学习过程报告

    一.学习内容 1. 熟悉Linux系统下的开发环境   2. 熟悉vi的基本操作   3. 熟悉gcc编译器的基本原理   4. 熟练使用gcc编译器的常用选项   5 .熟练使用gdb调试技术    ...

  5. 简述WebService的使用(一)

    环境: vs版本:vs2013 windows版本:win7 IIS版本:IIS7.0 (如果觉得对您有用,请点击右下角[推荐]一下,让更多人看到,谢谢) 配置环境: 主要针对于IIS ·首先,有很多 ...

  6. 免费的SSL证书,免费为微信小程序搭建https

    StartSSL 也免费提供了一个证书(纯英文) 申请地址:https://www.startssl.com/Account?r=L1ZhbGlkYXRl 阿里云免费提供的证书 https://com ...

  7. session和cookie的前后的操作

    1. // sign outexports.signout = function (req, res, next) { req.session.destroy(); res.clearCookie(c ...

  8. SequoiaDB 系列之二 :SequoiaDB的简单CRUD操作

    上一篇通过一系列的操作,终于把SequoiaDB的集群部署到单台机器上了. 建议去安装体验一下吧. 在整个环境的部署的体验来看,并没有MongoDB的部署简单,但是比MongoDB的部署要清晰.Mon ...

  9. 第二十五课:jQuery.event.trigger的源码解读

    本课主要来讲解jQuery.event.trigger的源码解读. trigger = function(event, data, elem, onlyHandlers){ if(elem & ...

  10. [参考]Oracle 11g的安装

    1.Linux中安装Oracle 11g http://www.cnblogs.com/gaojun/archive/2012/11/22/2783257.html 2.Windows中安装Oracl ...