Cgroups是control groups的缩写,是Linux内核提供的一种可以限制、记录、隔离进程组(process groups)所使用的物理资源(如:cpu,memory,IO等等)的机制。最初由google的工程师提出,后来被整合进Linux内核。Cgroups也是LXC为实现虚拟化所使用的资源管理手段,可以说没有cgroups就没有LXC。
特点:
我们需要控制哪些资源:
? CPU
? BLK
? Memory
? cgroup - 关联一组task和一组subsystem的配置参数。一个task对应一个进程, cgroup是资源分片的最小单位。
? subsystem - 资源管理器,一个subsystem对应一项资源的管理
? hierarchy - 关联一个到多个subsystem和一组树形结构的cgroup. 和cgroup不同, hierarchy包含的是可管理的subsystem而非具体参数
? blkio: 限制每个块设备的IO。
? cpu: 为任务所使用的cpu时间提供调度控制
? cpuacct:为任务自动生成cpu资源使用报告
? cpuset: 为任务分配独立cpu(对于多核处理器)和内存节点
? devices: 允许或者拒绝某些任务访问指定的设备
? freezer: 允许挂起或者恢复群组中的任务
? memory:限制任务所使用的内存,并自动生成内存资源报告
? net_cls: 用类标识符(classid)来标记网络包,以便Linux流量控制(tc)能够分辨 cgroup 中的特定任务所发出的数据包
? ns: 允许为任务分配不同的名称空间
? 一个hierarchy可以有多个 subsystem
? 一个已经被挂载的 subsystem 只能被再次挂载在一个空的 hierarchy 上
? 每个task只能在一同个hierarchy的唯一一个cgroup里
? 子进程在被fork出时自动继承父进程所在cgroup,但是fork之后就可以按需调整到 其他cgroup
原文:
[参考资料]
2、http://www.cnblogs.com/lisperl/archive/2012/04/17/2453838.html
原文:http://www.cnblogs.com/gsblog/p/4058124.html