一、配置资源组
数据库资源组使用Linux cgroup来管理CPU资源。使用cgroups将数据库进程的CPU和外部组件内存使用与节点上的其他进程隔离开来。在数据库群集中的每个节点上完成以下任务,以设置用于资源组的 cgroup:
创建数据库cgroups配置文件/etc/cgconfig.d/gpdb.conf。用户必须是超级用户或具有sudo访问权限才能创建此文件:
sudo vi /etc/cgconfig.d/gpdb.conf
将以下配置信息添加到 /etc/cgconfig.d/gpdb.conf,此内容配置由mppadmin用户管理CPU计算和内存控制组:
group gpdb {
perm {
task {
uid = mppadmin;
gid = mppadmin;
}
admin {
uid = mppadmin;
gid = mppadmin;
}
}
cpu {
}
cpuacct {
}
cpuset {
}
memory {
}
}
Redhat/CentOS 7.x 系统:
sudo yum install libcgroup-tools
sudo cgconfigparser -l /etc/cgconfig.d/gpdb.conf
Redhat/CentOS 6.x systems:
sudo yum install libcgroup
sudo service cgconfig start
SuSE 11+ systems:
sudo zypper install libcgroup-tools
sudo cgconfigparser -l /etc/cgconfig.d/gpdb.conf
grep cgroup /proc/mounts
通过运行以下命令验证是否正确设置了cgroups配置。将<cgroup_mount_point> 替换为用户在上一步中标识的安装点:
ls -l <cgroup_mount_point>/cpu/gpdb
ls -l <cgroup_mount_point>/cpuacct/gpdb
ls -l <cgroup_mount_point>/cpuset/gpdb
ls -l <cgroup_mount_point>/memory/gpdb
系统重新启动时自动重新创建数据库所需的cgroup层次结构和参数,启用Linux cgroup服务守护程:
Redhat/CentOS 7.x 和 SuSE11+ 系统:
sudo systemctl enable cgconfig.service
Redhat/CentOS 6.x systems:
sudo chkconfig cgconfig on
二、启用资源组
默认情况下会启用资源队列。要使用资源组而不是资源队列,必须设置gp_resource_manager服务器配置参数。
将gp_resource_manager服务器配置参数设置为值"group":
gpconfig -s gp_resource_manager
gpconfig -c gp_resource_manager -v "group"
重启数据库:
gpstop
gpstart
启用后,角色提交的任何事务都将定向到分配给该角色的资源组,并受该资源组 的并发,内存和CPU限制的约束。数据库默认创建两个资源组admin_group和default_group,SUPERUSER角色分配了admin_group,非管理员角色分配了default_group的组。
限制类型
|
admin_group
|
default_group
|
CONCURRENCY
| 10 | 20 |
CPU_RATE_LIMIT
| 10 | 30 |
CPUSET
| -1 | -1 |
MEMORY_LIMIT
| 10 | 30 |
MEMORY_SHARED_ QUOTA
| 50 | 50 |
MEMORY_SPILL_RATIO
| 20 | 20 |
MEMORY_AUDITOR
|
vmtracker
|
vmtracker
|