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. 数据摘要算法的测试效率(SHA、MD5和CRC32)

    1.算法概述 数据摘要算法是密码学算法中非常重要的一个分支,它通过对所有数据提取指纹信息以实现数据签名.数据完整性校验等功能,由于其不可逆性,有时候会被用做敏感信息的加密.数据摘要算法也被称为哈希(H ...

  2. 信息安全系统设计基础_exp2

    北京电子科技学院(BESTI) 实     验    报     告 课程:信息安全系统设计基础 班级:1353 姓名:吴子怡.郑伟 学号:20135313.20135322 指导教师: 娄嘉鹏 实验 ...

  3. Python Web实战 - 基于Flask实现的黄金点游戏

    一.简介 团队成员: 领航者:张旭 驾驶员:张国庆 项目简介: 项目名称:基于B/S模式的黄金点游戏 采用技术: 后端:Python + Sqlite3 前端:HTML + CSS + JS + Bo ...

  4. QT cannot open output file debug\OpencvTest.exe: Permission denied

    问题:调试运行QT的时候遇到这个问题,发现时是由于没有正常关闭程序所致,导致后台有之前运行的程序在跑(电脑环境win7 64 Qt5.2.1 opencv2.4.6). 目前解决办法:手动关闭已在运行 ...

  5. Spring Cache和MyBatis的使用

    1.http://www.importnew.com/22757.html    spring chache缓存的使用. 2.http://www.importnew.com/22783.html   ...

  6. 运用Java对微信公众平台二次开发技术——开发者模式接入

    当初我在这碰到了很多问题,市面上以及网络上的资料特别少,所以当初碰了很多壁,所以现在跟大家分享一下,如何用Java,对微信公众平台进行二次开发. 一.开发预备知识: 最基本的JavaSE与JavaWe ...

  7. 用css画出对话框

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAa4AAAFSCAYAAACqpTv4AAAgAElEQVR4nO3deZBU5b3GcUIlVTG3bi

  8. Java学习笔记(二一)——Java 泛型

    [前面的话] 最近脸好干,掉皮,需要买点化妆品了. Java泛型好好学习一下. [定义] 一.泛型的定义主要有以下两种: 在程序编码中一些包含类型参数的类型,也就是说泛型的参数只可以代表类,不能代表个 ...

  9. jdbc基础 (三) 大文本、二进制数据处理

    LOB (Large Objects)   分为:CLOB和BLOB,即大文本和大二进制数据 CLOB:用于存储大文本 BLOB:用于存储二进制数据,例如图像.声音.二进制文件 在mysql中,只有B ...

  10. Hibernate-二级缓存策略

    二级缓存的策略 当多个并发的事务同时访问持久化层的缓存中的相同数据时,会引起并发问题,必须采用必要的事务隔离措施. 在进程范围或集群范围的缓存,即第二级缓存,会出现并发问题.因此可以设定以下4种类型的 ...