rhel6已经发布半个月了,网上也出现了对其的介绍文章,但都是些表面上的,譬如:在安装过程中出现的一些改动,以及默认的文件系统类型使用的是ext4,等等。如果你安装了rhel6,就会发现在根目录下面默认会存在一个cgroup的文件夹,哪这个是啥玩意捏?这个就是rhel6的一个新特性------资源管理。以下内容简单的描述了下,有不足的地方,多多包含。

一、cgroup介绍:

      据官方文档介绍,rhel6为内核准备了一个新特性------资源控制,也即cgroup。此服务的软件包是libcgroup。有了这个,你就可以分配资源,例如:CPU time,系统内存, 网络带宽等。这个是被cgconfig服务所控制的。如果此服务没有启动,在根目录下的cgroup文件夹里就不会存在内容。如图所示:

RHEL6新特性之资源管理指南_特性

启动此服务之后,就会在/cgroup目录下面多出一些内容,如图所示:

RHEL6新特性之资源管理指南_休闲_02

二、cgroup各个模块的介绍:

      cgroup类似与进程,他们是分等级的,各个属性都是从父进程哪里继承过来。cgroup包含了多个孤立的子系统,没一个子系统代表一个单一的资源。rhel6中一共准备了9个子系统,以下是每个子系统的详细说明:

     ? blkio 这个子系统设置限制每个块设备的输入输出控制。例如:磁盘,光盘以及usb等等。

     ? cpu   这个子系统使用调度程序为cgroup任务提供cpu的访问。

     ? cpuacct 产生cgroup任务的cpu资源报告。

     ? cpuset  如果是多核心的cpu,这个子系统会为cgroup任务分配单独的cpu和内存。

     ? devices  允许或拒绝cgroup任务对设备的访问。

     ? freezer   暂停和恢复cgroup任务。

     ? memory 设置每个cgroup的内存限制以及产生内存资源报告。

     ? net_cls   标记每个网络包以供cgroup方便使用。

     ? ns  名称空间子系统。

以上九个子系统之间也存在着一定的关系,有兴趣的朋友可以参考下官方文档。

三、cgroup的使用:

1、cgroup的安装:

在安装系统的时候,默认已经安装了libcgroup软件包,如果没有安装可以使用以下命令进行安装:

RHEL6新特性之资源管理指南_资源管理_03

2、cgroup服务的控制:

将其更改为伴随系统的启动而启动:

RHEL6新特性之资源管理指南_指南_04

关闭与停止:

RHEL6新特性之资源管理指南_资源管理_05

3、cgroup的配置文件cgconfig.conf文件介绍:

在cgconfig.conf文件中,主要包含了两个主要类型:mount和group。mount是指创建以及挂载哪些层次为虚拟文件系统,并附上子系统的层次结构。cgconfig.conf文件的内容如下所示:

RHEL6新特性之资源管理指南_职场_06

例如cpuset=/cgroup/cputest,就可以理解为以下几条命令:

RHEL6新特性之资源管理指南_特性_07

其他的,以此类推。

4、与cgroup相关的几个命令:

lssubsys-----显示已经存在的子系统。

RHEL6新特性之资源管理指南_资源管理_08

上图所示,除ns子系统没有在/etc/cgconfig.conf文件里设置外,其他的都挂载在对应的目录下面。

lscgroup-----显示所有的cgroup。

RHEL6新特性之资源管理指南_休闲_09

5、挂载与卸载子系统层次:

如上图所示,各个模块均以挂载与对于的目录下面。以下卸载了cpu子系统层次:

RHEL6新特性之资源管理指南_资源管理_10

-a代表所有,-m代表显示挂载点。

使用以下命令将其挂载回去:

RHEL6新特性之资源管理指南_休闲_11

其他的卸载与挂载都一样。

6、创建一个自定义的cgroup:

这里要用到cgcreate命令,具体用法如下图所示:

RHEL6新特性之资源管理指南_职场_12

RHEL6新特性之资源管理指南_特性_13

创建完了之后,系统还不能挂载,因为挂载点不存在,等挂载点创建了之后,系统会自动挂载上去的。

RHEL6新特性之资源管理指南_资源管理_14

挂载上去之后,使用lssubsys命令是看不到的。

7、删除cgroup:

RHEL6新特性之资源管理指南_休闲_15

就到这吧,有关方面的具体应用后续会添加,敬请期待!