cgroup_init_early 回到这个函数 int __initcgroup_init_early(void) {// 初始化cgroup_root,就是一个cgroup_root的结构init_cgroup_root(&cgrp_dfl_root, &opts); cgrp_dfl_root.cgrp.self.flags |= CSS_NO_REF;RCU_INIT_POINTER(init_task.cgroups, &init_css_set);for_each_subsys(ss, i) {WARN(...
void (*bind)(struct cgroup_subsys_state *root_css);// 是否在前期初始化了bool early_init:1;// 如果设置了true,那么在cgroup.controllers和cgroup.subtree_control就不会显示,TODO:bool implicit_on_dfl:1;// 如果设置为false,则子cgroup会继承父cgroup的子系统资源,否则不继承或者只继承一半// 但是现在,...
int__initcgroup_init_early(void) {// 初始化cgroup_root,就是一个cgroup_root的结构init_cgroup_root(&cgrp_dfl_root, &opts); cgrp_dfl_root.cgrp.self.flags |= CSS_NO_REF;RCU_INIT_POINTER(init_task.cgroups, &init_css_set);for_each_subsys(ss, i) {WARN(!ss->css_alloc || !ss->css...
cgroup_init_early cgroup.c 在early的初始化中,初始化了全局init_css_set里的数据结构。 随后初始化全局rootnode。 将rootnode内部的root_list连接到全局roots链表。 设置0号进程cgroups指向init_css_set。 在全局cg_cgroup_link init_css_set_link中分别连接cgroup和css。 遍历所有子系统,执行初始化动作。 cgroup...
cgroup_init_early cgroup: 它的全称为control group.即一组进程的行为控制.比如,我们限制进程/bin/sh的CPU使用为20%. 我们就可以建一个cpu占用为20%的cgroup. 然后将/bin/sh进程添加到这个cgroup中.当然,一个cgroup 可以有多个进程.path: kernel/cgroup.c...
cgroup_init_early(); 1. 聊这个函数就需要先了解cgroup。 cgroup概念 这个函数就是初始化cgroup所需要的参数的。cgroup最初是在2006年由google的一名工程师提出的,目的是把一些共同目标的进程放在一个组里面,而这个组里面的进程能共享指定数额的资源。而后就有了cgroup这个概念了。
early_init:指示这个子系统是否需要在系统启动时候进行早期初始化。 系统创建的每个cgroup对象都包含一个由子系统ID索引的指针数组。这个指针由子系统进行管理,通用cgroup代码并不会touch这个指针。 3.2 同步 cgroup系统会使用到一个全局的cgroup_mutex。任何想要修改cgroup的代码都需要首先持有这个mutex。当想要阻止cgroup被...
int __init cgroup_init_early(void){staticstruct cgroup_sb_opts __initdata opts;struct cgroup_subsys *ss;int i;/* (1) 初始化默认root cgrp_dfl_root,选项opts为空,初始了root->cgrp // cgrp->root = root;root->cgrp.self // cgrp->self.cgroup = cgrp; cgrp->self.flags |= CSS_ONLINE;...
Cgroup的初始化包括两个部份.即cgroup_init_early()和cgroup_init().分别表示在系统初始时的初始化和系统初始化完成时的初始化.分为这两个部份是因为有些subsys是要在系统刚启动的时候就必须要初始化的. 4.1: cgroup_init_early() 先看cgroup_init_early()的代码: ...
int early_init; bool use_id; #define MAX_CGROUP_TYPE_NAMELEN 32 const char *name; struct mutex hierarchy_mutex; struct lock_class_key subsys_key; struct cgroupfs_root *root; struct list_head sibling; struct idr idr; spinlock_t id_lock; ...