Chinaunix首页 | 论坛 | 博客
  • 博客访问: 630991
  • 博文数量: 140
  • 博客积分: 2635
  • 博客等级: 少校
  • 技术积分: 1353
  • 用 户 组: 普通用户
  • 注册时间: 2010-06-04 15:46
文章分类
文章存档

2015年(2)

2014年(12)

2013年(10)

2012年(10)

2011年(85)

2010年(21)

分类: 虚拟化

2014-03-15 17:29:16

Cgroups是control groups的缩写,是Linux内核提供的一种可以限制、记录、隔离进程组(process groups)所使用的物理资源(如:,,等等)的机制。最初由google的工程师提出,后来被整合进Linux内核。Cgroups也是为实现虚拟化所使用的资源管理手段.

Cgroups最初的目标是为资源管理提供的一个统一的框架,既整合现有的cpuset等子系统,也为未来开发新的 子系统提供接口。现在的cgroups适用于多种应用场景,从单个进程的资源控制,到实现操作系统层次的虚拟化(OS Level Virtualization)。Cgroups提供了以下功能:
1.限制进程组可以使用的资源数量(Resource limiting )。比如:memory子系统可以为进程组设定一个memory使用上限,一旦进程组使用的内存达到限额再申请内存,就会出发OOM(out of memory)。
2.进程组的优先级控制(Prioritization )。比如:可以使用cpu子系统为某个进程组分配特定cpu share。
3.记录进程组使用的资源数量(Accounting )。比如:可以使用cpuacct子系统记录某个进程组使用的cpu时间
4.进程组隔离(Isolation)。比如:使用ns子系统可以使不同的进程组使用不同的,以达到隔离的目的,不同的进程组有各自的进程、网络、文件系统挂载空间。
5.进程组控制(Control)。比如:使用freezer子系统可以将进程组挂起和恢复。

子系统介绍

blkio -- 这个子系统为块设备设定输入/输出限制,比如物理设备(磁盘,固态硬盘,USB 等等)。
cpu -- 这个子系统使用调度程序提供对 CPU 的 cgroup 任务访问。
cpuacct -- 这个子系统自动生成 cgroup 中任务所使用的 CPU 报告。
cpuset -- 这个子系统为 cgroup 中的任务分配独立 CPU(在多核系统)和内存节点。
devices -- 这个子系统可允许或者拒绝 cgroup 中的任务访问设备。
freezer -- 这个子系统挂起或者恢复 cgroup 中的任务。
memory -- 这个子系统设定 cgroup 中任务使用的内存限制,并自动生成由那些任务使用的内存资源报告。
net_cls -- 这个子系统使用等级识别符(classid)标记网络数据包,可允许 Linux 流量控制程序(tc)识别从具体 cgroup 中生成的数据包。
ns -- 名称空间子系统。

Linux release version include package libcgroup.
/bin/cgclassify  --
/bin/cgcreatexx  --创建一个自定义的cgroup  like : cgcreate -g cpu,net_cls:/test-subgroup
/bin/cgdelete   -- 删除cgroup  Usage is cgdelete [-r] : [...]
/bin/cgexec
/bin/cgget
/bin/cgset
/bin/lscgroup  --显示所有的cgroup
/bin/lssubsys
/cgroup
/etc/cgconfig.conf
/etc/cgrules.conf
/etc/rc.d/init.d/cgconfig
/etc/rc.d/init.d/cgred
/etc/sysconfig/cgconfig
/etc/sysconfig/cgred.conf
/lib/libcgroup.so.1
/lib/libcgroup.so.1.0.35
/sbin/cgclear
/sbin/cgconfigparser
/sbin/cgrulesengd
kernel.org  :include/linux/cgroup.h
 A css_set is a structure holding pointers to a set of cgroup_subsys_state objects. This saves space in the task struct object and speeds up fork()/exit(), since a single inc/dec and a list_add()/del() can bump the reference count on the entire cgroup set for a task.
css_set 结构体

cgroups.txt 文件
控制组提供设置任务聚合和分离的一种机制,所有他们子进程特殊行为进行分配到分级的组中。
一个Cgroup分配额
多种有效的提供聚合过程中 Linux内核,主要用于资源跟踪的目的。



阅读(1136) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~