大數據“復活”記
916
2025-03-31
1??? 資源管理概述
1.1????? 資源管理的作用和分類
從用戶的角度看可以通過設定閾值或者優先級限定程序對資源的使用,保證承諾的服務等級 (SLA);同時滿足不同用戶間資源隔離,達成多租戶的需求。
從系統的角度看,可以引入監控和控制等手段,實現資源在可控的情況下被合理利用的目的,避免 資源耗盡,防止系統停止響應、崩潰;根據任務優先級,保證服務等級協議(SLA);在資源富裕時,實現資源最 大化利用;實現動態資源負載平衡,處理引起資源使用不平均的runaway作業。
GaussDB 資源管理功能主要分為多租戶管理資源隔離、負載管理、優先級控制、多維度資源監控等幾個方面。下文將就這幾個方面的功能展開具體介紹。
1.2????? 資源負載管理架構
GaussDB的資源負載管理主要包括資源分配與隔離(或管控)(CPU、內存、 IO和存儲空間)、作業負載管理、優先級調度、資源監控、多租戶服務等。其服務于 作業的整個生命周期,貫穿數據庫內核的各個模塊中。整體架構如下圖:
2??? DWS多租戶管理
2.1????? 多租戶管理實現方法
GaussDB采用兩層用戶的架構來組織租戶(新版本中可能修改為單層架構)。一個組用戶下可以有 多個業務用戶,但一個業務用戶只 能屬于一個組用戶;不同的租戶(數據庫用戶)關聯不 同的資源池, 每個資源池通過 CGroup控制CPU資源,通過邏輯內 存管理機制控制內存使用;資源池分配以百分比的形式提供用 戶計算資源的隔離,數據庫集群部 署環境對用戶透明;創建用戶時,指定用戶持久化存儲 空間大小,結合用戶權限,提供用 戶存儲資源的隔離。存儲空間大小 可在組用戶級別指定,統籌所有業 務用戶的存儲空間。
2.2????? 多租戶管理分層架構圖
3??? CPU資源負載管理
3.1????? CPU資源管理方法
GaussDB的CPU資源管理是通過控制組(Control Group,CGroup)來實現的。 CGroup是Linux內核提供的一種限制、記錄、隔離進程組所使用的物理資源(如CPU、 Memory、I/O等)的機制。
考慮到數據庫系統、用戶、作 業不同維度的隔離性和可配置 性,Gauss200 OLAP使用控制 組的層級特性構造符合數據庫 場景的模型,滿足客戶SLA的 關鍵特性,并支持四個維度的 層次隔離和控制:
(1)、數據庫程序與非數據庫程序隔離
(2)、數據庫常駐后備線程與執行作業線程隔離
(3)、數據庫多用戶之間的隔離
(4)、策略執行作業和批量拉鏈作業隔離
Gauss200 OLAP提供CPU核數隔離特性,實現指定控制組能夠使用的CPU核,達到在CPU資 源上的隔離,使不同的控制組互不干擾,為多租戶場景提供支持。
3.2????? CPU資源管理架構
圖中是控制組的一個掛載樹,從最上層開始,就分為了兩部分,一部分是屬于Gaussdb的資源,一部分是留給系統其他進程使用的資源,我們使用的資源如圖所示,都是掛載到Gaussdb:gaussdba的,其中第一層又分為兩個控制組,Backend用來預留資源給數據庫常駐的各個工作線程,Class控制組的資源用來分配給各個用戶進行作業執行。
我們每創建一個父租戶,就會對應創建一個UserClass1-n掛載到Class控制組下,去從Class控制組分到對應配額的CPU資源。而我們創建的子租戶,會從他們的父租戶那里分配資源,當前我們支持兩層的架構,父租戶對應數據庫中的組用戶,子租戶對應數據庫中的業務用戶。
總體來說可以這樣表述:給父租戶分配40%的CPU,此時子租戶將父租戶的40%當做100%來分配,比如子租戶A設置配額為50%,那么實際上是相當于分配了整體CPU資源的40%*50%=20%。
3.3????? CPU優先級控制
GaussDB的優先級調度是根據控制組分配的CPU資源份額來實現的。用戶在創建時, 需要綁定到一個控制組,限定其能夠使用的CPU資源份額,該份額以百分比的形式指定, 份額越大,其優先級越高
Gauss200 OLAP還支持動態調整優先級,即在運行過程中,用戶可以修改作業的優先級, 具體的實現分為以下幾種情況:
(1)、調整資源池的優先級。
gs_ssh -c "gs_cgroup -u –S class1 –g? 10 “
Create resource pool respool2 with (control_group= ‘Class1:Rush ’);
(2)、調整當前用戶的優先級。調整用戶的優先級可以通過調整其綁定的資源池來修改。
ALTER USER? joe?? WITH RESOURCE POOL ' respool2 ';
(3)、調整當前會話的優先級或者執行作業時自動通過用戶關聯。
SET CGROUP_NAME=" class1:Rush ";
(4)、手動調整任務在隊列中的位置(超級用戶)。
SELECT pg_wlm_jump_queue(pid);
4 IO資源管理
GaussDB的IO資源管理基于數據內部的邏輯IO讀寫次數進行統計、監控、調度,實 現對于復雜作業的IO資源管控,提升查詢作業的性能。新版本將能夠做到對IOPS做到更加精確的控制。同時可以使用百分比權重方式分別對session和資源池級別配置?,F階段做不到IO資源的完全隔離。
5 內存資源管理
GaussDB的內存管理是通過邏輯內存管理來實現的。其實現原理是在原始的內存分 配之上增加一層邏輯內存管理,通過檢查已分配內存是否超過規定的內存來決定是否為 作業分配內存。邏輯內存管理沒有更改原有的內存資源分配機制,僅在分配內存之前增加一個邏輯判斷 層,查看是否達到允許使用的內存上限,來決定是否分配內存。
GaussDB對于內存資源的管理分為三級:
6 存儲資源管理
總體來說目前是采用邏輯記賬的原理,對實際的插入空間進行記賬,然后對這個值與設置的限制進行對比,若超出限制將會報錯。
目前用戶磁盤空間管控在CN上實現,CN每間隔5s從DN收集一次用戶磁盤空間,每次通信只收集一個用戶的磁盤空間,當用戶量很大的時候可能出現延遲。同時雖然CN上的管控可以限制用戶使用的空間,但是無法限制用戶在某個DN上使用的空間,也就無法避免數據傾斜造成的磁盤空間占用過多的問題。
在新版本中將從根本上解決這個問題,從單DN用戶磁盤空間進行管控,保證單DN上使用的磁盤空間不會超過限制,避免單DN占用磁盤空間的問題,同時也行從一定程度上防止用戶數據過度傾斜。
7 資源監控
GaussDB提供的詳細的資源監控視圖對資源使用情況進行記錄和監控,查看實時資源占用的情況查看以下視圖:
查詢歷史資源使用情況:
數據倉庫服務 GaussDB(DWS) 數據庫
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。