岚天逸见

cgroup初步分析(1)

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

先看设计准则:
  • 一个层级(hierarchy)就是一棵数,它可以包含一个资源子系统(subsys)或者多个资源子系统(subsys);

  • 一个资源子系统(subsys)只能存在一个层级(hierarchy);

  • 一个层级(hierarchy)中不同的cgroup之间的task都是互斥的,也就是说一个task只能存在于一个层级(hierarchy)中唯一的一个cgroup

  • 一个task可以同时存在于多个层级(hierarchy)中;即一个task对应于多个cgroup

  • 一个cgroup可以对应多个css_set

  • 一个css_set可以对应多个cgroup

  • 一个task只对应唯一一个css_set
问题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。如图所示:




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

posted on   岚天逸见  阅读(173)  评论(0编辑  收藏  举报

编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义

导航

统计信息

点击右上角即可分享
微信分享提示