什么是Linux Cgroups

发布时间:2016-12-9 19:50:57 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"什么是Linux Cgroups",主要涉及到什么是Linux Cgroups方面的内容,对于什么是Linux Cgroups感兴趣的同学可以参考一下。

Cgroups是control groups的缩写,是Linux内核提供的一种可以限制、记录、隔离进程组所使用的物理资源的机制。最初由google的工程师提出,后来被整合进Linux内核。Cgroups也是LXC为实现虚拟化所使用的资源管理手段,可以说没有Cgroups就没有LXC。 Cgroups最初的目标是为资源管理提供一个统一的框架,即整合现有的cpuset等子系统,也为未来开发信的子系统提供接口。现在的cgroups使用于多种应用场景,从单个进程的资源控制,到实现操作系统层次的虚拟化。Cgroups提供了以下功能: 1.限制进程组可以使用的资源数量。比如:memory子系统可以为进程组设定一个memory使用上限,一旦进程组使用的内存达到限额,再申请内存就会触发OOM 2.进程组的优先级控制。比如:可以使用cpu子系统为某个进程组分配特定cpu share 3.记录进程组使用的资源数量。比如:可以使用cpuacct子系统记录某个进程组使用的cpu时间 4.进程组隔离。比如:使用ns子系统可以使不同的进程组使用不同的命名空间,以达到隔离的目的,不同的进程组有各自的进程、网络、文件系统挂载空间 5.进程组控制。比如:使用freezer子系统可以将进程组挂起和恢复 相关概念: 1.任务:在cgroups中,任务就是系统的一个进程 2.控制族群:控制族群就是一组按照某种标准划分的进程。Cgroups中的资源控制都是以控制族群为单位实现。一个进程可以加入到某个控制族群,也可以从一个进程组迁移到另一个控制族群。一个进程组的进程可以使用Cgroups以控制族群为单位分配的资源,同时受到Cgroups以控制族群为单位设定的限制 3.层级:控制族群可以组织成hierarchical的形式,即一棵控制族群树。控制族群树上的子节点控制族群是父节点控制族群的孩子,继承父控制族群的特定的属性。 4.子系统:一个子系统就是一个资源控制器,比如CPU子系统就是控制CPU时间分配的一个控制器。子系统必须附加到一个层级上才能起作用,一个子系统附加到某个层级以后,这个层级上的所有控制族群都受到这个子系统的控制。 相互关系: 1.每次在系统中创建新层级时,该系统中的所有任务都是那个层级的默认Cgroups的初始成员。 2.一个子系统最多只能附加到一个层级 3.一个任务可以使多个Cgroups的成员,但是这些Cgroups必须在不同的层级 4.系统中的进程创建子进程时,该子任务自动成为其父进程所在Cgroups的成员。然后可根据需要将该子任务移动到不同的Cgroups中,但开始时它总是继承其父任务的Cgroups 子系统介绍: blkio:这个子系统为块设备设定输入/输出限制 cpu:这个子系统使用调度程序提供对CPU的Cgroup任务访问 cpuacct:这个子系统自动生成cgroups中任务所使用的CPU报告 cpuset:这个子系统为cgroups中的任务分配独立CPU和内存节点 devices:这个子系统可允许或者拒绝cgroups中的任务访问设备 freezer:这个子系统挂起或者恢复cgroup中的任务 memory:这个子系统设定cgroups中任务使用 的内存限制,并自动生成由那些任务使用的内存资源报告。 net_cls:这个子系统使用等级识别符标记网络数据包,可允许Linux流量控制程序识别从具体cgroup中生成的数据包 ns:名称空间子系统

上一篇:【Android每周专题】触摸屏手势
下一篇:序言

相关文章

相关评论