大數據“復活”記
607
2025-03-31
一、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小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。