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
}
}
... ...
CGROUP_DAEMON="cpu:daemons/http"
//可参考文档:/usr/share/doc/libcgrou-0.37/README.RedHat
... ...
<user>:<process name> <controllers> <destination>
harry memory exgroup/
*:httpd cpu daemons/http
//用户名与进程名之间以冒号分隔,允许使用通配符
//如果使用多个控制器,以逗号分隔
//资源群组只需要写相对(于伪文件系统根目录的)路径
系统服务cgconfig会读取cgconfig.conf配置文件,并据此挂载伪文件系统;系统服务cgred会调用文件cgrules.conf,并应用其中设置的规则来控制资源使用。
[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控制的更多相关文章
- Linux systemd资源控制初探
Linux systemd资源控制初探 本文记录一次cgroup子目录丢失问题,并简单探索了Linux systemd的资源控制机制. 问题现象 我们希望通过systemd拉起服务并通过cgroup限 ...
- Linux iptables 应用控制访问SSH服务
Title:Linux iptables 应用控制访问SSH服务 --2012-02-23 17:51 今天用到了以前从来没有用到过的,iptables控制访问,只允许外部访问SSH服务(22号端口 ...
- PHP来控制Linux,ssh2来控制服务器端
注意:我们用PHP来控制Linux,php环境可以在windows也可以在linux,但是我们要控制的机器是一台linux(被控制的linux关闭selinux和firewalld). 如果php在l ...
- Linux远程访问及控制
Linux远程访问及控制 目录 Linux远程访问及控制 一.SSH远程管理 1. SSH远程管理概述 2. OpenSSH概述 3. 配置OpenSSH服务端 4. sshd服务的验证方式 5. 使 ...
- Linux下利用CGroup控制CPU、内存以及IO的操作记录
CGroup及其子系统的介绍在这里就不赘述了,可以参考:Linux下CGroup使用说明梳理废话不多说,这里记录下利用CGroup控制CPU.内存以及IO的操作记录: libcgroup工具安装这里以 ...
- Android/Linux下CGroup框架分析及其使用
1 cgroup介绍 CGroup是control group的简称,它为Linux kernel提供一种任务聚集和划分的机制,可以限制.记录.隔离进程组(process groups)所使用的资源( ...
- Linux的Cgroup
为什么要有cgroup Linux系统中经常有个需求就是希望能限制某个或者某些进程的分配资源.也就是能完成一组容器的概念,在这个容器中,有分配好的特定比例的cpu时间,IO时间,可用内存大小等.于是就 ...
- Linux的Cgroup<实例详解>
为什么要有cgroup Linux系统中经常有个需求就是希望能限制某个或者某些进程的分配资源.也就是能完成一组容器的概念,在这个容器中,有分配好的特定比例的cpu时间,IO时间,可用内存大小等.于是就 ...
- Linux运行与控制后台进程的方法:nohup, setsid, &, disown, screen
我们经常会碰到这样的问题,用ssh登录了远程的Linux服务器,运行了一些耗时较长的任务,结果却由于网络等的不稳定导致任务中途失败.这是由于在用户注销(logout)或者网络断开时,终端会收到 HUP ...
随机推荐
- word 2010自定义快捷键提高工作效率
经常使用word处理文档, 做笔记的时候会把word文档框缩小,以便同时看pdf同时记录笔记,但是缩小的word框不能把所有的菜单项显示出来,我比较常用那个插入边框下面的那个横线来做分割符,但是缩小了 ...
- 那么小伙伴么,问题来了,WPF中,控件的Width="*"在后台怎么写?
用到DataGrid的列是自动生成的,但是大家都知道,WPF的DataGrid会在最后多出一列,通常的解决办法都是在最后一列的列宽上这样设置 Width="*",这样,最后一列多出 ...
- linux内核分析 期中总结
LINUX内核分析 链接汇总 LINUX内核分析第一周学习总结——计算机是如何工作的 LINUX内核分析第二周学习总结——操作系统是如何工作的 LINUX内核分析第三周学习总结——构造一个简单的Lin ...
- CDC类
CDC :class of device context Windows使用与设备无关的图形设备环境(DC :Device Context) 进行显示 .MFC基础类库定义了设备环境对象类----CD ...
- Jenkins进阶系列之——09配置Linux系统ssh免密码登陆
ssh认证的完整描述:https://www.ibm.com/developerworks/cn/linux/security/openssh/part1/ 说明:点我去查看 今天我们只说生成ssh的 ...
- $self $index $first $last parent() outerParent()
index5.html <html><head> <title>$self $index $first $last parent() outerParent()&l ...
- #Linux学习笔记# Linux系统查看文件内容的命令
1.cat 连结多个文件的内容并显示在屏幕上:如果没有指定文件或文件名为“-”,则读取标准输入.语法如下: cat [option] ... [file] ... 常用的选项有: 选项-n:编号所有行 ...
- 第五章:Javascript语句
在javascript中,表达式是短语,那么语句(statement)就是整句或命令.正如英文语句以句号结尾,javascript以分号结尾. 表达式计算出一个值,但语句使某件事发生. “使某件事发生 ...
- [转]DIV+CSS和TABLE的区别
现在全国大大小小的网站都在搞一场技术“革命”,就是所谓“网站重构”说简单点就是DIV+CSS进行网站制作.用DIV+CSS代替传统的Table制作框架和美化页面.百度搜索优化 在重构之前,肯定要了解为 ...
- 将定时任务cron 解析成中文
在使用定时器 quartz 时,其中的cron 表达式,老板表示作为开发的你能看懂外,其他的非开发同事可能看不懂,要用一个他们能看懂的方式表达出来. 还好我们的项目要求的表达式不是特别的麻烦,所以就写 ...