cgroup初步分析(1)

2510阅读 0评论2013-06-14 aquester
分类:LINUX

cgroup的功能和作用不废话,直说一下cgroup的几条设计准则,有了几条设计准则的约束,就比较容易理解其中的数据结构和函数,至于源代码cgroup.c,无非是两个内容,一是task_struct、cgroup、css_set三个数据结构互相关联,而是cgroup文件系统的实现。

先看设计准则:
问题1:如何通过一个task找到它在某个层级(hierarchy)的cgroup

下面的结构可以说明这种寻找关系:

方法1首先从task.cgroups找到css_set结构,从css_set结构中找到css_set结构对应的所有的cgroup,从中找出属于指定层hierarchycgroup每个层级都有一个唯一的top cgroup通过对比cgroup cgroup来判断是否属于该层级

方法2首先从task.cgroups找到css_set结构,从css_set结构struct cgroup_subsys_state *subsys[CGROUP_SUBSYS_COUNT]元素中找到每个子系统状态的结构struct cgroup_subsys_state变量其中有个指针,指向该子系统对应的cgroup

问题2:如何通过一个cgroup找到它目录下所有的task

cgroup通过cg_cgroup_link连接了多个css_set结构变量,每个结构变量都有一个tasks的链表,上面是该css_set对应的所有tasks。如图所示:




上一篇:新名词:弱有状态
下一篇:redis的一些简介