Just a journey

cgroup 应用

cgroup 应用

cgroup 介绍

  CGroup 是 Control Groups 的缩写,是 Linux 内核提供的一种可以限制、记录、
隔离进程组 (process groups) 所使用的物力资源 (如 cpu memory i/o 等等) 的机制。CGroup
提供了一个 CGroup 虚拟文件系统,作为进行分组管理和各子系统设置的用户接口。要使
用CGroup,必须挂载 CGroup 文件系统。这时通过挂载选项指定使用哪个子系统。

cgroup 功能

cgroup 子系统介绍

  1. blkio 设置限制每个块设备的输入输出控制。例如:磁盘,光盘以及usb等等。
  2. cpu 使用调度程序为cgroup任务提供cpu的访问。
  3. cpuacct 产生cgroup任务的cpu资源报告。
  4. cpuset 如果是多核心的cpu,这个子系统会为cgroup任务分配单独的cpu和内存。
  5. devices 允许或拒绝cgroup任务对设备的访问。
  6. freezer 暂停和恢复cgroup任务。
  7. memory 设置每个cgroup的内存限制以及产生内存资源报告。
  8. net_cls 标记每个网络包以供cgroup方便使用。
  9. ns 名称空间子系统。
  10. perf_event 增加了对每group的监测跟踪的能力,即可以监测属于某个特定的group的所有线程以及运行在特定CPU上的线程,此功能对于监测整个group非常有用。

cgroup 使用

安装

sudo yum install libcgroup

启动关闭服务

The cgconfig(control group config) service is used to create cgroups and manage subsystems.

sudo service cgconfig start/stop

start up at the boot time.

chkconfig cgconfig on    

配置

  The cgroup configuration file is /etc/cgconfig.conf. Depending on the contents of the configuration file, cgconfig can create hierarchies, mount necessary file systems, create cgroups, and set subsystem parameters (resource limits) for each cgroup.

/etc/cgconfig 的格式

mount {
    <controller> = <path>;
    ...
}
group <name> {
    [<permissions>]
    <controller> {
        <param name> = <param value>;
        …
    }
    …
}

选择cgroup的处理对象

  Cgred (control group rules engine daemon) is a service that moves tasks into cgroups according to parameters set in the /etc/cgrules.conf file.

/ect/cgrules的格式

user subsystems control_group

or

user:command subsystems control_group
特殊字符的意义

除了通过配置文件/etc/cgrules 和 /etc/cgconfig ,同样可以使用命令行进行配置。

comments powered by Disqus