大數據“復活”記
1182
2025-03-31
一、多租戶的背景及意義
多租戶為滿足客戶混合負載處理需求而生,通過提供兩層用戶機制,分層資源隔離,滿足客戶對計算和存儲資源的自主控制需求。兩級用戶分別關聯不同的資源池和存儲空間,實現多租戶下資源分組管理。
二、GaussDB(DWS)的多租戶
目前GaussDB(DWS)的多租戶能夠進行隔離的資源包括:CPU資源、內存資源、IO資源、存儲資源。
GaussDB的多租戶通過綁定資源池來實現,具體原理如下圖所示:
借助上圖說明多租戶的管控方式,見往下三、四、五章節。
三、控制組設置
通過設置控制組可以進行以下幾方面的資源隔離:
(1)設置CPU核數和控制組CPU份額,進行CPU資源管理;
(2)設置異常規則來對異常作業進行終止或降級;
1、class控制組
創建名稱為“class_a”的子Class控制組,CPU資源配額分別為Class的40%。
gs_cgroup -c -S class_a -s 40
2、workload控制組
創建子Class控制組“class_a”下名稱為“workload_a1”的Workload控制組,CPU資源配額分別為“class_a”控制組的20%。
gs_cgroup -c -S class_a -G workload_a1 -g 20
3、異常規則
設置“class_a”下屬“workload_a1”的作業阻塞到1200秒或執行2400秒時執行終止動作。
gs_cgroup -S class_a -G workload_a1 -E "blocktime=1200,elapsedtime=2400" -a
支持的控制組異常規則:
異常閾值類型
說明
取值范圍(0表示取消設置)
支持的異常操作
blocktime
作業的阻塞時間,單位秒。包括全局并發排隊以及局部并發排隊的總時間。
0~UINT_MAX
abort
elapsedtime
作業的已被執行時間,單位秒。從開始執行到當前所消耗的時間。
0~UINT_MAX
abort
allcputime
作業在所有DN上執行時所耗費的CPU總時間,單位秒。
0~UINT_MAX
abort,penalty
cpuskewpercent
作業在DN上執行時的CPU時間的傾斜率,依賴于qualificationtime的設置。
0~100
abort,penalty
qualificationtime
檢查作業執行cpu傾斜率的間隔時間,單位秒,需同cpuskewpercent一起設置。
0~UINT_MAX
none
spillsize
作業在DN上下盤的數據量,單位MB。
0~UINT_MAX
abort
broadcastsize
作業在DN上算子大表廣播數據量,單位MB。
0~UINT_MAX
abort
四、資源池設置
通過設置資源池屬性可以進行以下幾方面的資源隔離:
(1)通過設置mem_percent、memory_limit進行內存資源管理;
(2)通過設置io_limits、io_priority進行IO管控;
(3)通過設置active_statements、max_dop進行并發管控;
(4)可以設置指定的控制組,進行CPU和異常規則的管理;
(5)設置資源池異常規則;
1、組資源池
創建名稱為“resource_pool_a”的組資源池關聯到了“class_a”控制組。
CREATE RESOURCE POOL resource_pool_a WITH (control_group='class_a');
2、業務資源池
(1)創建名稱為“resource_pool_a1”的業務資源池關聯到了“workload_a1”控制組
CREATE RESOURCE POOL resource_pool_a1 WITH (control_group='class_a:workload_a1');
(2)更新一個資源池,其控制組指定為"DefaultClass"組下屬的"High" Timeshare Workload控制組。
ALTER RESOURCE POOL pool1 WITH (CONTROL_GROUP="High");
(3)修改資源池“resource_pool_a1”的內存比例為可用內存大小的20%,即設置MEM_PERCEN的取值為20。
ALTER RESOURCE POOL resource_pool_a1 WITH (MEM_PERCENT=20);
3、可設置的資源池屬性
屬性
屬性值
說明
mem_percent
0
最大占用內存百分比。0代表不限制。
control_group
DefaultClass:Medium
資源池關聯的控制組。
active_statements
-1
資源池允許的最大并發數。-1和0代表不限制。
max_dop
-1
資源池允許的簡單作業最大并發數。-1和0代表不限制
memory_limit
default
使用該資源池的作業估算內存上限。default表示最大為資源池內存一半,unlimited表示不限制。
io_limits
0
每秒觸發IO的次數上限。行存單位是萬次/s,列存是次/s。0表示不控制。
io_priority
None
IO利用率高達90%時,重消耗IO作業進行IO資源管控時關聯的優先級等級。None表示不控制。
4、可設置的資源池異常規則
異常閾值類型
說明
取值范圍(0表示取消設置)
支持的異常操作
mem_limit
作業在單實例上使用內存上限。
32MB~max_dynamic_memory
abort
五、用戶設置
通過設置用戶屬性進行存儲空間管控:
1、創建組用戶關聯組資源池
CREATE USER tenant_a RESOURCE POOL 'resource_pool_a' PASSWORD 'Gauss_234';
2、創建業務用戶關聯業務資源池
CREATE USER tenant_a1 RESOURCE POOL 'resource_pool_a1' USER GROUP 'tenant_a' PASSWORD 'Gauss_234';
3、通過設置用戶屬性(PERM SPACE、TEMP SPACE、SPILL SPACE)可以進行存儲空間管控:
(1)修改用戶“tenant_space_test”永久表空間限額不受限制。
ALTER USER tenant_space_test PERM SPACE 'unlimited';
(2)修改用戶“tenant_space_test”臨時表空間限額為100G。
ALTER USER tenant_space_test TEMP SPACE '100G';
(3)修改用戶“tenant_space_test”算子落盤空間限額為200G。
ALTER USER tenant_space_test SPILL SPACE '200G';
六、總結
上文主要介紹了多租戶技術的架構和使用方法,通過租戶關聯控制組和資源池,多租戶的設置有效隔離了CPU資源、內存資源、IO資源和存儲資源,提供了有力的混合負載管理能力。
想了解GuassDB(DWS)更多信息,歡迎微信搜索“GaussDB DWS”關注微信公眾號,和您分享最新最全的PB級數倉黑科技~
EI企業智能 Gauss AP 數據倉庫服務 GaussDB(DWS)
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。