Implement resource group cpu rate limitation.
Resource group cpu rate limitation is implemented with cgroup on linux
system. When resource group is enabled via GUC we check whether cgroup
is available and properly configured on the system. A sub cgroup is
created for each resource group, cpu quota and share weight will be set
depends on the resource group configuration. The queries will run under
these cgroups, and the cpu usage will be restricted by cgroup.
The cgroups directory structures:
* /sys/fs/cgroup/{cpu,cpuacct}/gpdb: the toplevel gpdb cgroup
* /sys/fs/cgroup/{cpu,cpuacct}/gpdb/*/: cgroup for each resource group
The logic for cpu rate limitation:
* in toplevel gpdb cgroup we set the cpu quota and share weight as:
cpu.cfs_quota_us := cpu.cfs_period_us * 256 * gp_resource_group_cpu_limit
cpu.shares := 1024 * ncores
* for each sub group we set the cpu quota and share weight as:
sub.cpu.cfs_quota_us := -1
sub.cpu.shares := top.cpu.shares * sub.cpu_rate_limit
The minimum and maximum cpu percentage for a sub cgroup:
sub.cpu.min_percentage := gp_resource_group_cpu_limit * sub.cpu_rate_limit
sub.cpu.max_percentage := gp_resource_group_cpu_limit
The acutal percentage depends on how busy the system is.
gp_resource_group_cpu_limit is a GUC introduced to control the cpu
resgroups assigned on each host.
gpconfig -c gp_resource_group_cpu_limit -v '0.9'
A new pipeline is created to perform the tests as we need privileged
permission to enable and setup cgroups on the system.
Signed-off-by: NNing Yu <nyu@pivotal.io>
Showing
gpMgmt/bin/gpcheckresgroupimpl
0 → 100755
gpMgmt/bin/gppylib/gpresgroup.py
0 → 100644
src/include/utils/resgroup-ops.h
0 → 100644
想要评论请 注册 或 登录