探索BI系统搭建的必要性与AI技术的应用潜力
477
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)创建控制组
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小时内删除侵权内容。