首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 操作系统 >

控制组兑现初步分析

2014-07-18 
控制组实现初步分析控制组实现初步分析1. 控制组简介当前的主流linux内核提供了控制组(control group)的功

控制组实现初步分析
控制组实现初步分析
1. 控制组简介
当前的主流linux内核提供了控制组(control group)的功能,利用该功能允许管理员对系统中运行的任务进行分组,然后为每个组分配资源,比如CPU时间,系统内存,网络带宽或者资源的组合.利用控制组系统管理员可更具体的控制系统资源的分配、优先顺序、拒绝、管理和监控,可以更好的根据用户和资源的情况合理的分配资源,提高系统总体效率.内核为了便于管理资源使用子系统表示单一资源,比如CPU时间,系统内存,网络带宽等,然后每个控制组都会关联一个或者多个子系统,进而实现资源管理和配置。当前的内核支持如下可用的子系统:
blkio:设定系统块设备的I/O限制.
cpu:对系统中CPU资源进行管理.
cpuacct:该子系统自动生成控制组使用CPU资源的报告.
cpuset:该系统为控制组分配独立CPU和内存节点.
devices:提供设备访问白名单机制.
freezer:该系统提供挂起或者恢复控制组的机制.
memory:提供控制组对内存使用的限制以及自动生成这些任务内存资源使用报告.
net_cls:允许内核流量控制器识别属于特定控制组的网络包.
ns:名称空间子系统.
此外,在2.6.35及其上内核中允许子系统编译成独立的模块,动态的安装和卸载,当前系统中支持子系统的最大个数为32(unsigned long类型占用的比特数).

2. 基本数据结构与组织
2.1 控制组文件系统
linux内核将控制组组织成若干树形的层次结构,每一个层次结构以控制组文件系统的形式进行管理和操作。用户通过操作控制组文件系统中的控制文件来对控制组进行管理.控制组根文件系统结构定义如下:

#define container_of(ptr, type, member) ({                      \        const typeof( ((type *)0)->member ) *__mptr = (ptr);    \        (type *)( (char *)__mptr - offsetof(type,member) );})


结束语
本文简要介绍了控制组相关的主要数据结构以及这些数据结构的相互关系.内核将控制组组织成一个或者多个树形层次结构,并通过控制组文件系统对控制组进行管理。为使用户空间可与控制组交互通信,控制组文件系统提供了控制文件机制,用户可通过读写控制文件来实现对控制组的操作.此外,本文还简要介绍了子系统的初步实现框架,并剖析了子系统中比较容易理解的设备白名单子系统.最后给出了一个简单的子系统模块实现.本文只是浅显的介绍控制组相关知识,没有对控制组文件系统进行详细的介绍,在后续的工作中还会对其进行进一步的分析.最后,上面的文字可能会存在错误或者不当的分析,希望大家可以批评指正.

冗长的论述有时会让人厌烦,希望您可以忍受我杂乱无章的表述,good luck!

热点排行