背景信息
集群环境下做批量任务处理时,多任务复杂性,会导致不同机器间的负载差距很大。 为了充分利用集群资源,负载管理变得尤为重要。gs_cgroup 是 GBase 8s 提供的负载管理 工具。负责创建默认控制组、创建用户自定义控制组、删除用户自定义控制组、更新用户自 定义组的资源配额和资源限额、显示控制组配置文件内容、显示控制组树形结构和删除用户 的所有控制组。
gs_cgroup 工具为使用数据库的操作系统用户创建 Cgroups 配置文件,并且在操作系统 中生成用户设定的 Cgroups。同时为用户提供增加、删除 Cgroups、更新 Cgroups 资源配额、 设定 Cgroups 的 CPU 或 IO 限额、设定异常处理阈值及相应操作等服务。此工具只负责当前 操作系统节点的 Cgroups 操作,使用时需在各个节点上调用相同命令语句进行统一配置。
这里假设读者已经了解了负载管理的相关原理,具体请参考《开发者指南》中“资源 负载管理”章节。
使用示例
使用普通用户或数据库管理员执行命令。
1.前置条件:需设置 GAUSSHOME 环境变量为数据库安装目录;且 root 用户已创建普通 用户默认的控制组。
2.创建控制组及设置对应的资源配额,以便在数据库中运行作业时,指定到此控制组, 使用此控制组管理的资源;通常数据库管理员为每个数据库用户创建 Class 组。
a. 创建 Class 控制组和 Workload 控制组。
gs_cgroup -c -S class1 -s 40
创建当前用户新的 Class Cgroups 命名为“class1”,资源配额为总 Class 的 40%。
gs_cgroup -c -S class1 -G grp1 -g 20
创建当前用户新的“class1” Cgroups 下属的 Workload 控制组,命名为“grp1”,资 源配额为“class1” Cgroups 的 20%。
b. 删除 grp1 控制组和 Class 控制组。
gs_cgroup -d -S class1 -G grp1
删除当前用户已建的“grp1”Cgroups。
gs_cgroup -d -S class1
删除当前用户已建的“class1”Cgroups。
须知: 如果删除 Class 控制组,则 Workload 控制组也被删除。
3.更新已创建控制组的资源配额。
a. 更新动态资源配额。
gs_cgroup -u -S class1 -G grp1 -g 30
更新当前用户的 class1 Cgroups 下属 grp1 Cgroups 资源配额为 class1 Cgroups 的 30%。
b. 更新限制资源配额。
gs_cgroup --fixed -u -S class1 -G grp1 -g 30
更新当前用户的 class1 Cgroups 下属 grp1 Cgroups 限制使用 CPU 核数范围占上一级 class1 可用核数的 30%。
4.更新 Gaussdb 的 CPU 核数范围。
gs_cgroup -u -T Gaussdb -f 0-20
更新 Gaussdb 进程使用的 CPU 核数为 0-20。




