GaussDB(DWS) 资源管理系列一:CPU资源管理

网友投稿 491 2022-05-28

一、CPU资源管理背景

在分布式数据库执行作业时,系统压力可能集中于某些节点或者某些系统资源,导致集群资源不能充分利用,集群性能不能充分发挥。GaussDB(DWS)通过资源管理、作业负载管理,优先级调度、资源监控、多租户等方法,解决这些问题,提升集群性能。

其中影响集群性能得系统资源主要包括内存、CPU、磁盘I/O 、存储空间和网络带宽等,本文主要介绍CPU资源的分配与隔离。

二、CPU资源管理简介

GaussDB(DWS)的CPU资源管理通过Cgroup实现,Cgroup是linux内核提供的限制和隔离进程组使用物理资源的机制,可以组成层次形式,即控制树。GaussDB(DWS)提供gs_cgroup工具,负责创建默认控制组、创建用户自定义控制组、删除用户自定义控制组、更新用户自定义组的资源配额和资源限额、显示控制组配置文件内容、显示控制组树形结构和删除用户的所有控制组。CPU资源管理原理如下图:

三、gs_cgroup使用

gs_cgroup工具为使用数据库的操作系统用户创建Cgroups配置文件,并且在操作系统中生成用户设定的Cgroups。同时为用户提供增加、删除Cgroups,更新Cgroups资源配额,设定Cgroups的CPU或IO限额,设定异常处理阈值及相应操作等服务。此工具只负责当前操作系统节点的Cgroups操作,使用时需在各个节点上调用相同命令语句进行统一配置,GaussDB(DWS)提供了gs_ssh工具帮助用户在集群各节点上执行相同的命令,例如:

gs_ssh -c "gs_cgroup -c -S class_a -s 40 "

1、gs_cgroup参数简介

参数

功能

-a [--abort]

对满足设定的异常阈值的作业执行终止动作

-b pct

Backend Cgroups占用Top Backend资源的百分比,需同时指定“-B backendname”

-B name

Backend Cgroups名称,仅可指定“-u”参数来更新此Cgroups的资源配额。-b percent和-B backendname参数共同作用来控制数据库后备线程的资源比例。

-c

创建Cgroups并指定其标识

-d

删除Cgroups及标识。

-D mpoint

设置加载Cgroups文件系统的路径,“root”用户或者具有“root”访问权限的用户才可以调用

-E data

设定异常阈值,目前阈值包括:blocktime,elapsedtime,allcputime,spillsize,broadcastsize以及qualificationtime和cpuskewpercent,指定多个阈值时用“,”分隔。

-h [--help]

显示命令帮助信息。

-H

用户环境中$GAUSSHOME信息。仅用于root用户执行gs_cgroup时,需指定用户中数据库安装程序所在目录。

-f

设置Gaussdb控制组使用的核数范围,范围必须是 a-b或a的形式。其他控制组可以使用--fixed进行设置核数范围。

--fixed

设置控制组使用的核数范围比例占上一层级的百分比或者设置IO资源。

-g pct

指定Workload Cgroups的资源占用“Class”Cgroups资源的百分比,需同时指定“-G groupname”参数;用于创建“-c”或更新“-u”Workload Cgroups。

-G name

指定Workload Cgroups的名称,需同时指定“-S classname”参数来表示该group属于哪个Class Cgroups;可以连同“-c”参数创建新的Cgroups、“-d”参数删除此Cgroups及“-u”更新此Cgroups的资源配额;需要注意,此名称不可是TimeshareCgroups的默认名称,如“Low”、“Medium”、“High”或“Rush”。

-m

加载Cgroups文件系统,“root”用户或者具有“root”访问权限的用户才可以调用。

-M

卸载Cgroups文件系统,“root”用户或者具有“root”访问权限的用户才可以调用。

-N [--group] name

可以将组名简写成class:wg。

-p

显示Cgroups配置文件的信息。

-P

显示Cgroups树形结构信息。

--penalty

对满足设定的异常阈值的作业执行降级动作,如果没有设定任何操作,则该操作将为默认操作。

-r data

仅用于更新I/O资源读数据上限,用于设置“blkio.throttle.read_bps_device”的数值;为字符串类型,该字符串由“major:minor value”构成,其中major为要访问的磁盘的主设备号,minor为要访问的磁盘的次设备号,value为设备每秒读操作次数上限数值,取值范围为0 ~ ULONG_MAX,其中取值0用来初始化此字段为空;需和“-u”参数及Cgroups名称一同使用;如果Class Cgroups和Workload Cgroups的名称同时指定,则只应用到Workload Cgroups。

-R data

仅用于更新IO资源每秒读操作次数上限,用于设置“blkio.throttle.read_iops_device”的数值;取值信息同“-r”参数;需和“-u”参

数及Cgroups名称一同使用;如果Class Cgroups和Workload Cgroups的名称同时指定,则只应用到Workload Cgroups。

--recover

仅用于回退class控制组和workload控制组的增删改操作,且只能回退一步。

--revert

恢复控制组为默认状态。

--refresh

刷新控制组状态。

-s pct

指定Class Cgroups的资源占用“Top Class”Cgroups资源的百分比,需同时指定“-S classname”参数;用于创建“-c”或更新“-u”Class Cgroups。

-S name

指定Class group的名称;可以连同“-c”参数创建新的Cgroups、“-d”参数删除此Cgroups及“-u”更新此Cgroups的资源配

-t percent

指定Top Cgroups(Root、Gaussdb:gaussdba、Backend和Class Cgroups)占用资源的百分比,需同时指定“-T name”参数

-T name

指定Top Cgroups的名称;仅可指定“-u”更新此Cgroups的资源配额;仅“root”用户或者具有“root”访问权限的用户可以更新“Root”Cgroups。

-u

更新Cgroups

-U name

操作系统普通用户名;仅“root”用户或者具有“root”访问权限的用户调用时指定。

-V [--version]

显示gs_cgroup工具的版本信息。

-w data

仅用于更新I/O资源每秒写数据上限,用于设置“blkio.throttle.write_bps_device”的数值。取值信息同“-r”参数,需和“-u”参数及Cgroups名称一同使用。

-W data

仅用于更新IO资源每秒写操作次数上限,用于设置“blkio.throttle.write_iops_device”的数值。取值信息同“-r”参数,需和“-u”参数及Cgroups名称一同使用。

2、gs_cgroup常用操作

(1) gs_cgroup配置

gs_cgroup -U user -c -H $GAUSSHOME

(2)创建控制组

GaussDB(DWS) 资源管理系列一:CPU资源管理

gs_cgroup -c -S cls1 -s 40 //创建名为cls1的配额为40%的Class控制组

gs_cgroup -c -S cls1 -G grp1 -g 20 //在Class控制组cls1下创建名为grp1的配额为20%的Workload

(3)更新控制组

gs_cgroup -u -S cls1 -s 50 //更新cls1控制组配额为50%

gs_cgroup -u -S cls1 -G grp1 -g 40 //更新grp1控制组配额为40%

(4)删除控制组

gs_cgroup -d -S cls11 //删除用户组cls11

(5)查看控制组信息

gs_cgroup –P //以树形结构查看控制组信息

gs_cgroup –p //以表格形式查看控制组信息

(6)指定核数

gs_cgroup -u -S cls1 -s 40 --fixed //指定核数

数据仓库服务 GaussDB(DWS)

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Kafka入门教程与详解
下一篇:突破Java面试(23-6) - Redis主从架构如何实现高可用
相关文章