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,从中找出属于指定层级(hierarchy)的cgroup(每个层级都有一个唯一的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) |
-->
cgroup初步分析(1)的更多相关文章
- Azure底层架构的初步分析
之所以要写这样的一篇博文的目的是对于大多数搞IT的人来说,一般都会对这个topic很感兴趣,因为底层架构直接关乎到一个公有云平台的performance,其实最主要的原因是我们的客户对此也非常感兴趣, ...
- 基于Spark和SparkSQL的NetFlow流量的初步分析——scala语言
基于Spark和SparkSQL的NetFlow流量的初步分析--scala语言 标签: NetFlow Spark SparkSQL 本文主要是介绍如何使用Spark做一些简单的NetFlow数据的 ...
- S2-052 RCE漏洞 初步分析
PS:初步分析,只是分析了Struts2 REST插件的部分,本来菜的抠脚不敢发,但看到各大中心发的也没比我高到哪里去,索性发出来做个记事! 漏洞描述 2017年9月5日,Apache Struts发 ...
- DirectUI的初步分析-转
DirectUI的初步分析(一) 最近由于项目的需要学习了一下DirectUI方面的东西,主要借鉴的是一个国外程序员写的代码(见引用一),看了后发现它更多的是探讨一种实现的可能性和思路,和实际应用还是 ...
- Netfilter之连接跟踪实现机制初步分析
Netfilter之连接跟踪实现机制初步分析 原文: http://blog.chinaunix.net/uid-22227409-id-2656910.html 什么是连接跟踪 连接跟踪(CONNT ...
- drf安装与APIView初步分析
drf安装 1. pip install djangorestframework 2. 在settings文件中注册app : INSTALLED_APPS = [..., 'rest_framewo ...
- python简易的大乐透数据获取及初步分析
该项目从网上爬取并分析彩票数据,为用户查看和初步分析往期数据提供一种简易的工具. https://github.com/unknowcry/Lottery # -*- coding: utf-8 -* ...
- Android/Linux下CGroup框架分析及其使用
1 cgroup介绍 CGroup是control group的简称,它为Linux kernel提供一种任务聚集和划分的机制,可以限制.记录.隔离进程组(process groups)所使用的资源( ...
- linux 时钟源初步分析linux kernel 时钟框架详细介绍
初步概念: 看datasheet的关于时钟与定时器的部分, FCLK供给cpu, HCLK供给AHB总线设备(存储器控制器,中断控制器.LCD控制器.DMA.USB主机控制器等), PCLK供给APB ...
随机推荐
- Excel 2007 打开 UTF-8 编码 CSV 文件的乱码BUG
http://blog.sina.com.cn/s/blog_6c3b65fd01018dgq.html 打开UTF-8编码的CSV方法: 1) 打开Excel 2007 2) 执行“数据”-> ...
- Oracle视图编译错误解决办法
因为新搭的环境,数据库是从另一个现成的环境导过来的,直接后台用exp和imp命令操作.但是新环境的Oracle数据库有问题,一些视图创建不了,导致用到这些视图的视图和存储过程也编译不了.后来手工重新编 ...
- 学习HTML5之路
Web 技术大致的时间轴 1991 HTML 1994 HTML 2 1996 CSS 1+JavaScript 1997HTML 4 1998 CSS2 2000 XHTML 1 2002 使用DI ...
- unidac 执行Execute后取得受影响行数。
unidac 执行Execute后取得受影响行数. uniQuery2.SQL.Text := mmo2.Text; uniQuery2.Execute; mmo1.Lines.Add(Format( ...
- sqldeveloper和plsqldebeloper
sqldeveloper : 支持不用tns连,支持jdbc直接连的. plsqldebeloper : 必须使用tns连, 如果oracle安装在本机,本机已经有tns文件,和oci.dll,只需在 ...
- 杂项-公司:联邦快递百科-un
ylbtech-杂项-公司:联邦快递百科 联邦快递( FedEx)是一家国际性速递集团,提供隔夜快递.地面快递.重型货物运送.文件复印及物流服务,总部设于美国田纳西州,隶属于美国联邦快递集团(FedE ...
- Java-Runoob:Java 教程
ylbtech-Java-Runoob:Java 教程 1.返回顶部 1. Java 教程 Java 是由Sun Microsystems公司于1995年5月推出的高级程序设计语言. Java可运行于 ...
- python开发函数进阶:装饰器
一,装饰器本质 闭包函数 功能:就是在不改变原函数调用方式的情况下,在这个函数前后加上扩展功能 作用:解耦,尽量的让代码分离,小功能之前的分离. 解耦目的,提高代码的重用性 二,设计模式 开放封闭原则 ...
- 路边拾遗之其他模块(struct/csv/xlwt/smtp)
struct模块 最近在学习python网络编程这一块,在写简单的socket通信代码时,遇到了struct这个模块的使用,当时不太清楚这到底有和作用,后来查阅了相关资料大概了解了,在这里做一下简单的 ...
- Python Twisted系列教程10:增强defer功能的客户端
作者:dave@http://krondo.com/an-introduction-to-asynchronous-programming-and-twisted/ 译者:杨晓伟(采用意译) 可以从这 ...