cgroup源码分析1—— css_set和cgroup的关系
本系列文章主要从源码入手,分析linux kernel
中cgroup
的实现。
本文基于
3.10.0-862.el7.x86_64
版本kernel进行分析。
本栏目下主要归档了一些linux kernel相关的文章,注重结合内核源代码进行说明分析。
本系列文章主要从源码入手,分析linux kernel
中cgroup
的实现。
本文基于
3.10.0-862.el7.x86_64
版本kernel进行分析。
cgroup
的debug子系统
其实没有什么用处,要说作用的话,其实它就是一个示例子系统,给内核的开发者展示了内核cgroup
框架的使用方法,同时也展示了cgroup
框架中各个数据结构之间的关系。
本文就通过研究debug
子系统,来展示cgroup
框架中各个数据结构的关系。
注意: 内核代码采用
linux-3.10.0-862.9.1.el7
list_head
用法经常在Linux kernel
里面经常看见,该文对内核中的list_head
进行了总结分析。
注意:本文的中的代码来自于内核版本
v4.16
。
注意:本文中的代码参考于linux v4.16。
hlist_head
和hlist_node
用于散列表,分别表示列表头(数组中的一项)和列表头所在双向链表中的某项,两者结构如下:
struct hlist_head {
struct hlist_node *first;
};
struct hlist_node {
struct hlist_node *next, **pprev;
};
cpuacct子系统
(CPU accounting)会自动生成报告来显示cgroup中
任务所使用的CPU
资源,其中包括子群组任务。报告有两大类:
usage
: 统计cgroup
中进程使用CPU的时间,单位为纳秒。stat
: 统计cgroup
中进程使用CPU的时间,单位为USER_HZ
。注意:本文中引用的内核代码版本为
v5.2