设置控制组
背景信息
openGauss 资源负载管理的核心是资源池,而配置资源池首先要在环境中实现控制组 Cgroups 的设置。更多 Cgroups 的原理介绍,请查看相关操作系统的产品手册。
Class 控制组为数据库业务运行所在的顶层控制组,集群部署时会自动生成默认子 Class 控制组 “DefaultClass”。DefaultClass 的 Medium 控制组会含有系统触发的作业在运行,该控制组不允许进行资源修改,且运行在该控制组上的作业不受资源管理的控制,所以推荐创建新的子 Class 及其 Workload 控制组来设置资源比例。
前提条件
已熟悉《工具参考》中 “服务端工具> gs_cgroup” 章节和 “服务端工具 > gs_ssh” 章节的使用。
操作步骤
说明:
- 在 openGauss 中,需要在每个集群节点上执行控制组的创建、更新、删除操作,才能实现对整个集群资源的控制,所以下述步骤中都使用《工具参考》中 “服务端工具> gs_ssh” 命令执行。
- 控制组的命名要求如下:
- 无论是子 Class 控制组还是 Workload 控制组,都不允许在名称中包含字符 “:”。
- 不可以创建同名的控制组。
创建子 Class 控制组和 Workload 控制组
1、以操作系统用户 omm 登录 openGauss 主节点。
2、创建名称为 “class_a” 和 “class_b” 的子 Class 控制组,CPU 资源配额分别为 Class 的 40% 和 20%。
gs_ssh -c "gs_cgroup -c -S class_a -s 40"
gs_ssh -c "gs_cgroup -c -S class_b -s 20"
3、创建子 Class 控制组 “class_a” 下名称为 “workload_a1” 和 “workload_a2” 的 Workload 控制组,CPU 资源配额分别为 “class_a” 控制组的 20% 和 60%。
gs_ssh -c "gs_cgroup -c -S class_a -G workload_a1 -g 20 "
gs_ssh -c "gs_cgroup -c -S class_a -G workload_a2 -g 60 "
4、创建子 Class 控制组 “class_b” 下名称为 “workload_b1” 和 “workload_b2” 的 Workload 控制组,CPU 资源配额分别为 “class_b” 控制组的 50% 和 40%。
gs_ssh -c "gs_cgroup -c -S class_b -G workload_b1 -g 50 "
gs_ssh -c "gs_cgroup -c -S class_b -G workload_b2 -g 40 "
更新控制组的资源配额
1、更新 “class_a” 控制组的 CPU 资源配额为 30%。
gs_ssh -c "gs_cgroup -u -S class_a -s 30"
2、更新 “class_a” 下的 “workload_a1” 的 CPU 资源配额为 “class_a” 的 30%。
gs_ssh -c "gs_cgroup -u -S class_a -G workload_a1 -g 30"
须知: 调整后的 Workload 控制组 “workload_a1” 占有的 CPU 资源不应大于其对应的子 Class 控制组 “class_a”。并且,此名称不能是 Timeshare Cgroup 的默认名称,如 “Low”、“Medium”、“High” 或 “Rush”。
删除控制组
gs_ssh -c "gs_cgroup -d -S class_a"
以上操作可以删除控制组 “class_a”。
须知: root 用户或者具有 root 访问权限的用户指定 “-d” 和 “-U username” 删除普通用户 “username” 可访问的默认 Cgroups。普通用户指定 “-d” 和 “-S classname” 可以删除已有的 Class Cgroups。
查看控制组的信息
1、查看配置文件中控制组信息。
gs_cgroup -p
控制组配置信息
gs_cgroup -p
Top Group information is listed:
GID: 0 Type: Top Percent(%): 1000( 50) Name: Root Cores: 0-47
GID: 1 Type: Top Percent(%): 833( 83) Name: Gaussdb:omm Cores: 0-20
GID: 2 Type: Top Percent(%): 333( 40) Name: Backend Cores: 0-20
GID: 3 T