最近在接触GPCC 6.0 的安装,官方文件给出了使用cgroups来控制资源的分配。
一、创建配置文件
vim /etc/cgconfig.d/gpdb.conf
group gpdb {
perm {
task {
uid = gpadmin;
gid = gpadmin;
}
admin {
uid = gpadmin;
gid = gpadmin;
}
}
cpu {
}
cpuacct {
}
cpuset {
}
memory {
}
}
二、启动cgroup服务
该服务依赖
gconfig.d]# /etc/init.d/cgconfig restart
Stopping cgconfig service: [ OK ]
Starting cgconfig service: [ OK ]
如果启动失败,检查一下参数设定格式是否存在问题,然后cgclear,再开启
三、 检查cgroup目录是否创建成功。
成功之后会有如下信息。
gpdb]# ll
total 0
--w--w---- 1 gpadmin gpadmin 0 May 28 20:54 cgroup.event_control
-rw-rw-r-- 1 gpadmin gpadmin 0 May 28 20:54 cgroup.procs
-rw-rw-r-- 1 gpadmin gpadmin 0 May 28 20:54 cpu.cfs_period_us
-rw-rw-r-- 1 gpadmin gpadmin 0 May 28 20:54 cpu.cfs_quota_us
-rw-rw-r-- 1 gpadmin gpadmin 0 May 28 20:54 cpu.rt_period_us
-rw-rw-r-- 1 gpadmin gpadmin 0 May 28 20:54 cpu.rt_runtime_us
-rw-rw-r-- 1 gpadmin gpadmin 0 May 28 20:54 cpu.shares
-r--r--r-- 1 gpadmin gpadmin 0 May 28 20:54 cpu.stat
-rw-rw-r-- 1 gpadmin gpadmin 0 May 28 20:54 notify_on_release
-rw-rw-r-- 1 gpadmin gpadmin 0 May 28 20:54 tasks
gpdb]# pwd
/cgroup/cpu/gpdb
cgroups资源限制技术
1.什么是cgroups?
cgroups是linux内核提供的一种机制,这种机制可以通过需求把一系列系统任务,及其子任务整合到按资源划分的不同组内,从而为系统资源管理提供统一的框架。通俗来说,cgroups可以限制记录任务组所使用的物理资源,包括cpu,内存,io等。为容器虚拟化提供了基本保证,是构建docker等一系列虚拟化容器的基石。
2.cgroups的作用。
cgroups的作用主要是为不同用户层面的资源管理,提供一个统一化的接口。从单个用户的资源控制到操作作系统层面的虚拟化,cgroups提供了四大功能。
## 资源限制
##优先级分配
##资源统计
##任务控制
过去一段时间,内核开发者甚至也把namespace作为一个子系统加入进来。使cgroups也拥有namespace的功能。但资源隔离给cgroups带来了许多问题,如命名冲突等,不久便被移除。
3.cgroups实现方式及其工作原理。
cgroups的实现本质上是给任务挂上钩子,当任务运行时设计某种资源时,就会触发钩子上所附带的子系统进行检测,根据资源的类别的不同使用对应的技术进行资源限制和优先级分配。
对于不同的系统资源,cgroups提供了统一接口对资源进行控制,但限制的方式不一定相同。比如memory子系统,会在描述内存状态的的“mm_struct”结构体中记录他所属的cgroup,当进程需要更多内存时,就会触发cgroup用量检测,如果用量超过cgroup规定的限额则拒绝用户的内存申请,否则就给与相应申请的内存,并在cgroup内存信息中记录出来。
来源:oschina
链接:https://my.oschina.net/u/4355947/blog/4294326