linux的cgroup控制

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

[[email protected] ~]# 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

[[email protected] ~]# 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,并应用其中设置的规则来控制资源使用。

[[email protected] ~]# service cgconfig start ; chkconfig cgconfig on
[[email protected] ~]# service cgred start ; chkconfig cgred on

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

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

时间: 2024-12-17 00:30:55

linux的cgroup控制的相关文章

Linux的Cgroup

Linux的Cgroup 2013-09-03 13:45 by 轩脉刃, 8066 阅读, 2 评论, 收藏, 编辑 为什么要有cgroup Linux系统中经常有个需求就是希望能限制某个或者某些进程的分配资源.也就是能完成一组容器的概念,在这个容器中,有分配好的特定比例的cpu时间,IO时间,可用内存大小等.于是就出现了cgroup的概念,cgroup就是controller group,最初由google的工程师提出,后来被整合进Linux内核中. Cgroup是将任意进程进行分组化管理的

一个资源管理系统的设计--解析linux的cgroup实现

将实体打散成不可再分的微粒,这样就可以使设计灵活化,最大限度的减少数据冗余.以CRM系统为例,虽然管理是基于一组控制元素而不是一个控制元素的,设计的时候还是以一个控制元素为基础. linux的cgroup系统可谓是一个典范,它轻量地实现了诸如solaris的"容器"的概念,也许也是对linux本身"命名空间"的一种冲击.它是分层的,也可以说是树形的结构,一个"控制组"拥有一个ROOT,每一个ROOT控制一组元素,在这个ROOT当中可以建立很多的&

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

Linux运行与控制后台进程的方法:nohup, setsid, &, disown, screen 转自http://heylinux.com/archives/1282.html#more-1282 我们经常会碰到这样的问题,用ssh登录了远程的Linux服务器,运行了一些耗时较长的任务,结果却由于网络等的不稳定导致任务中途失败.这是由于在用户注销(logout)或者网络断开时,终端会收到 HUP(hangup)信号从而关闭其所有子进程.解决办法有两种:让进程忽略HUP信号,或让进程运行在新

Linux/UNIX线程控制

线程控制 线程属性 调用pthread_create函数的例子中,传入的参数都是空指针,而不是指向pthread_attr_t结果的指针.可以用pthread_attr_t结构修改线程默认属性,并把这些属性与创建的线程联系起来.可以使用pthread_attr_init函数初始化pthreaad_attr_t结构.调用pthread_attr_init以后,pthread_attr_t结构所包含的内容就是操作系统实现支持的线程所有属性的默认值.如果要修改其中个别属性的值,需要调用其他的函数.pt

linux shell 流程控制

linux shell 流程控制 导读 和Java.PHP等语言不一样,linux shell有一套自己的流程控制语句,其中包括条件语句(if),循环语句(for,while),选择语句(case).下面我将通过例子介绍下,各个语句使用方法. 一.shell条件语句(if用法) if语句结构[if/then/elif/else/fi] if 条件测试语句 then action [elif 条件 action else action ] fi shell命令,可以按照分号分割,也可以按照换行符分

Linux shell 流程控制(条件if,循环for,while)

Linux shell 流程控制(条件if,循环[for,while],选择[case]语句实例 linux shell有一套自己的流程控制语句,其中包括条件语句(if),循环语句(for,while),选择语句(case).下面我将通过例子介绍下,各个语句使用方法. 一.shell条件语句(if用法) if语句结构[if/then/elif/else/fi] if 条件测试语句 then action [elif 条件 action else action ] fi 如果对于:条件测试语句不是

Linux远程访问及控制

一.SSH 远程管理 SSH的功能 SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录.远程复制等功能. SSH 协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令.与早期的telnet (远程登录).rsh(Remote Shell,远程执行命令).rcp(Remote File Copy,远程文件复制)等应用相比,SSH协议提供了更好的安全性. 配置OpenSSH服务端 服务监听选项 sshd 服务使用的默认端口号为22 必要时建议修改

Linux之CGroup 解析

CGroup 介绍 CGroup 是 Control Groups 的缩写,是 Linux 内核提供的一种可以限制.记录.隔离进程组 (process groups) 所使用的物力资源 (如 cpu memory i/o 等等) 的机制.2007 年进入 Linux 2.6.24 内核,CGroups 不是全新创造的,它将进程管理从 cpuset 中剥离出来,作者是 Google 的 Paul Menage.CGroups 也是 LXC 为实现虚拟化所使用的资源管理手段. CGroup 功能及组

Linux -- Samba行为控制

行为控制(1) 通过在6.3.2节中对用户认证来源的配置后,Samba服务器的认证用户来源已建立完成,接下来很自然的就需要根据认证用户来源获得用户信息,对特定用户使用共享资源的权限进行配置. 在Windows中共享文件夹可以针对不同的用户或组进行权限控制,在Samba服务器也同样有相应的功能,而且有很多Samba服务器权限控制的功能Windows在默认情况下无法实现. 注意:在使用了Samba用户映射功能后,所有涉及用户的参数,必须使用系统用户名.比如通过/etc/samba/smbusers文