背景信息
数据库实例环境下做批量任务处理时,因为多任务复杂性,会导致不同机器间的负载差距很大。为了充分利用数据库实例资源,负载管理变得尤为重要。gs_cgroup是GaussDB提供的负载管理工具。负责创建默认控制组、创建用户自定义控制组、删除用户自定义控制组、更新用户自定义组的资源配额和资源限额、显示控制组配置文件内容、显示控制组树形结构和删除用户的所有控制组。
gs_cgroup工具为使用数据库的操作系统用户创建Cgroups配置文件,并且在操作系统中生成用户设定的Cgroups。同时为用户提供增加、删除Cgroups,更新Cgroups资源配额,设定Cgroups的CPU或IO限额,设定异常处理阈值及相应操作等服务。此工具只负责当前操作系统节点的Cgroups操作,使用时需在各个节点上调用相同命令语句进行统一配置。
这里假设读者已经了解了负载管理的相关原理。
docker模式下不支持gs_cgroup进行资源管理。docker模式配置详情查看《安装指南》中“环境准备”章节。
使用示例
- 使用普通用户或数据库管理员执行命令。
- 前置条件:需设置GAUSSHOME环境变量为数据库安装目录;且root用户已创建普通用户默认的控制组。
- 创建控制组及设置对应的资源配额,以便在数据库中运行作业时,指定到此控制组,使用此控制组管理的资源;通常数据库管理员为每个数据库用户创建Class组。
- 创建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%。
- 删除grp1控制组和Class控制组。
gs_cgroup -d -S class1 -G grp1
删除当前用户已建的“grp1”Cgroups。
gs_cgroup -d -S class1
删除当前用户已建的“class1”Cgroups。
NOTICE:如果删除Class控制组,则Workload控制组也被删除。
- 创建Class控制组和Workload控制组。
- 更新已创建控制组的资源配额。
- 更新动态资源配额。
gs_cgroup -u -S class1 -G grp1 -g 30
更新当前用户的class1 Cgroups下属grp1 Cgroups资源配额为class1 Cgroups的30%。
- 更新限制资源配额。
gs_cgroup --fixed -u -S class1 -G grp1 -g 30
更新当前用户的class1 Cgroups下属grp1 Cgroups限制使用CPU核数范围占上一级class1可用核数的30%。
- 更新动态资源配额。
- 更新Gaussdb的CPU核数范围。
gs_cgroup -u -T Gaussdb -f 0-20
更新Gaussdb进程使用的CPU核数为0-20。
-f参数只适用于对Gaussdb设置核数范围。对于其他各控制组,如需设置核数范围,需要使用--fixed参数
- 设置异常处理信息(class:wg组需存在)。
- 设置组class:wg下的作业阻塞到1200秒或执行2400秒时执行终止动作:
gs_cgroup -S class -G wg -E "blocktime=1200,elapsedtime=2400" -a
- 设置组class:wg下的作业下盘数据量达到256MB或大表广播数据量达到100MB时执行终止动作:
gs_cgroup -S class -G wg -E "spillsize=256,broadcastsize=100" -a
- 设置组Class下的作业在所有DN上CPU总时间到达100s时执行降级动作:
- 设置组class:wg下的作业阻塞到1200秒或执行2400秒时执行终止动作:

最低0.47元/天 解锁文章
465

被折叠的 条评论
为什么被折叠?



