cgroup学习(三)——伪文件

伪文件

        cgroup是通过VFS与上层进行交互的,它定义了自己的cgroup文件系统,同时也定义了哪些文件,这些文件也是最终影响着cgroup行为,这一节我们介绍一下,每个子系统的伪文件定义在哪里?以及内核如何去操作这些伪文件。下面我们通过一张表来展示这些关系:

Subsys

Files

To_css

locate

cpu_cgroup_subsys

cpu_files

task_cgroup

sched.c

cpuset_subsys

Files

cpuset

cpuset.c

mem_cgroup_subsys

mem_cgroup_files

mem_cgroup

memcontrol.c

blkio_subsys

blkio_files

blkio_cgroup

blk_cgroup.c

freezer_subsys

Files

freezer

cgroup_freezer.c

        Subsys表示每个子系统的全局静态变量,该变量定义了该子系统的name,在该子系统上create,destroy,fork,attach cgroup(task)时的相应操作,以及populate生成哪些文件等。生成的文件定义在files全局静态变量里,这个变量是一个数组,包括了该子系统的所有子文件,以及它们的读写操作。我们在前一章介绍了cgroup_subsys_state结构,它是每个子系统的控制体的一个抽象类,to_css字段就是每个子系统控制体的实现类,它也保存了该子系统的下的相应参数(伪文件值),可以说该结构才是cgroup最重要的结构,也是真正对group起作用的结构。除了上面各个子系统files定义的文件外,它们公用的files定义在cgroup.c的files[](同样它也定义了对这些文件的open,write,release,read操作),包括最重要的tasks文件,它保存了该cgroup管理的所有tasks,对该文件的write操作最终将调用相应的subsys的attach操作。

        知道了这几个变量及结构就可以很快定位到相应操作的代码位置,对于理解后面的每个子系统的实现也是很有帮助。

  • 0
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论

打赏作者

wudongxu

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值