GaussDB(DWS) 资源管理系列一:CPU资源管理
一、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”参 |
--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)创建控制组
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 //指定核数
- 点赞
- 收藏
- 关注作者
评论(0)