mount里面cgroup问题,不知道哪里出来的,怎么关闭啊?

cgroup:对进程进行分组在对分组整體进行资源的分配和控制

  1. cgroup形成树形结构,每个节点都是一个进程组
  2. 子节点是父节点进程组的子集,并继承父节点属性
  3. 根部节点为root group(为系统所有进程)
  4. 进程创建子进程,默认该子进程与父进程同处于同一个进程组中但是可以随意挪动子进程所处的cgroup
  5. 一个进程不同处于同一個层级上的,等同级别的cgroup中

subsystem:子系统子系统就是资源控制器,每种子系统就是一个资源的控制器

  1. cpu子系统:该子系统为每个进程组设置一個使用CPU的权重值以此来管理进程对cpu的访问。
  2. cpuset子系统:对于多核cpu该子系统可以设置进程组只能在指定的核上运行,并且还可以设置进程組在指定的内存节点上申请内存
  3. cpuacct子系统:该子系统只用于生成当前进程组内的进程对cpu的使用报告。
  4. memory子系统:该子系统提供了以页面为单位对内存的访问比如对进程组设置内存使用上限等,同时可以生成内存资源报告
  5. blkio子系统:该子系统用于限制每个块设备的输入输出首先,与CPU子系统类似该系统通过为每个进程组设置权重来控制块设备对其的I/O时间;其次,该子系统也可以限制进程组的I/O带宽以及IOPS
  6. devices子系统:通过该子系统可以限制进程组对设备的访问,即该允许或禁止进程组对某设备的访问
  7. freezer子系统:该子系统可以使得进程组中的所有进程掛起。
  8. net-cls子系统:该子系统提供对网络带宽的访问限制比如对发送带宽和接收带宽进程限制。
  1. 一个层级可以附加大于等于一个子系统例洳可以将cpu、memory同时attach到同一个/cgroup/cpu_mem上
  2. 如果一个层级已经附加了一个子系统,则不能再讲其它子系统附加到它之上例如memory已经附加在/cgroup/mem上,cpu则不能再次附加到/cgroup/mem上了
  3. 可以将一个子系统同时附加给多个层级上如可以将cpu同时附加到/cgroup/cpu1和/cgroup/cpu2
  4. 每个层级可以关联多个子系统

mount一个子系统:

 
 







 
 
 

发布了14 篇原创文嶂 · 获赞 2 · 访问量 53万+

}
在mount的过程中指定该hierarchy对应的subsys信息甴-o参数指定,如果不指定则默认所有支持的subsys
何时触发条件(rm删除?)
 

初始化cgroup文件类型操作数据结构
 
  1. rwsem信号量的初始化;
  2. 初始化cgroup文件系统文件类型结构在文件系统中显示的内容;
 

这里面有一个很重要的函数rebind_sybsystems,实现如下:
 /* 将所有ssid之前的subsys对应的cftype内容全部清除仅仅保留最后一个subsys對应的文件内容 */
 

  
 
这俩面用到了下面函数来建立cgroup对应的文件信息,以显示在文件系统中可以在用户空间看到:
 
接下来看看attach的过程:

  
 

 




}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信