玩轉GaussDB(DWS)資源負載管理系列 --- DWS資源負載管理的原理是什么,是怎么實現分布式資源管理的呢?

      網友投稿 696 2025-04-03

      文章目錄


      1.?????? 多租戶介紹

      2.?????? 計算資源:cpu管控

      3.?????? 計算資源:內存管控

      4.?????? 存儲資源:磁盤空間

      正文

      一、什么是多租戶?

      所謂多租戶:就是我們一套集群內,可以有多個用戶使用,比如說云上,一個集群中有多個用戶,大家都有自己的業務要運行,假如其中某個用戶A運行了一些很吃資源的業務,一個人就把cpu、內存等資源用得淋漓盡致,那么其他人就只能看著了,自己的業務完全受阻,這時候,就需要多租戶手段,去限制A用戶所使用的資源,比如規定好讓他最多使用1G的內存,最多使用30%的cpu,這樣的話他的作業跑起來也不會影響到其他人,大家相安無事,好好工作。

      二、GaussDB for DWS多租戶概述

      GaussDB for DWS 用兩層用戶架構組織租戶。一個父租戶下有多個子租戶,一個子租戶只能屬于一個父租戶。我們通過給父租戶分配資源配額,同時限定附屬于該父租戶的子租戶的資源使用。其中,子租戶也可以分配父租戶分配到的資源。

      主要涉及的資源有以下幾種:

      1)計算資源:CPU資源、內存資源。

      2)存儲資源:磁盤空間。

      下面我們分別對各種資源的分隔方式進行一個技術分享。

      三、計算資源

      CPU資源管控

      GaussDB for DWS的CPU管控機制,是基于linux自帶機制:CGroup來實現的,CGroup是Linux內核提供的一種限制、記錄、隔離進程組所使用的物理資源(如CPU、 Memory、I/O等)的機制。

      我們以一種樹的形式,組織各個分配了資源的租戶,如下圖所示:

      圖中是控制組的一個掛載樹,從最上層開始,就分為了兩部分,一部分是屬于Gaussdb的資源,一部分是留給系統其他進程使用的資源,我們使用的資源如圖所示,都是掛載到Gaussdb:gaussdba的,其中第一層又分為兩個控制組,Backend用來預留資源給數據庫常駐的各個工作線程,Class控制組的資源用來分配給各個用戶進行作業執行。

      我們每創建一個父租戶,就會對應創建一個UserClass1-n掛載到Class控制組下,去從Class控制組分到對應配額的CPU資源。而我們創建的子租戶,會從他們的父租戶那里分配資源,當前我們支持兩層的架構,父租戶對應數據庫中的組用戶,子租戶對應數據庫中的業務用戶。

      總體來說可以這樣表述:給父租戶分配40%的CPU,此時子租戶將父租戶的40%當做100%來分配,比如子租戶A設置配額為50%,那么實際上是相當于分配了整體CPU資源的40%*50%=20%。

      2.內存資源管控

      Gaussdb for DWS數據庫當前的架構由最早的多進程架構,演變為多線程架構,因此單獨一個數據庫實例,比如一個coordinator或者datanode,都是作為一個進程運行,進程中會用多個線程去負責各種不同的工作,比如有的用來執行用戶作業,有的用來處理后臺的任務,各個cn與dn互相之間由一套獨特的通信架構進行聯絡(基于TCP協議),由cn解析下發客戶端發過來的作業,下推給dn去執行,結果再返回匯總到cn,完成各種業務。

      DWS會直接在數據庫進程啟動的時候,就為其分配好內存,為實例分配的一整塊內存中,會根據不同的需要,劃分為各種不同的內存上下文,其中有一塊內存,叫做dynamic_workload_memory,作為作業運行時可以使用的內存,總體大小也會在一開始被規定好,舉個例子,整個進程分配到20G內存,可以給dynamic_workload_memory根據算法從中分配對應的內存,比如會分配20G中的15G用于作業執行。

      而我們要說的多租戶內存管控機制,就是從這15G的內存中,按照租戶規定的百分比,對一個租戶可以使用的資源進行限制。當給一個租戶設置了一定額度的內存之后,數據庫中會對他使用的內存進行一個記錄,當他運行的作業所使用的內存要超過對應的內存的時候,就會不再執行,作業進入排隊狀態,等待資源釋放之后再繼續執行。

      四、存儲資源

      存儲資源主要就是指磁盤空間上的管控,在實際使用的過程中,很容易出現由一條壞SQL一直執行,持續下盤,導致整個磁盤到達使用率100%的狀態,后果非常嚴重,因此,DWS也為了避免出現這種狀況,提供了磁盤管控的功能,在內核8.0版本中,一共提供了三種類型的磁盤空間管控:永久表空間管控、臨時表空間管控、以及SQL執行時的算子羅盤使用的臨時空間管控。日常使用過程中進行下盤的無非這三種場景,我們已經都可以對其進行磁盤額度限制,這個額度和用戶綁定,我們在使用過程中,創建用戶或者修改用戶,都可以指定該用戶可以使用的永久空間,臨時表空間,算子落盤空間。使一個用戶所使用的磁盤空間在可控制的范圍內,一旦超過限制,該用戶將不能再進行落盤的操作,并且如果是當前正在執行的語句導致的磁盤空間膨脹,數據庫內核也會把他找到并且干掉。

      具體內部機制可以這樣描述:內核中會記錄每個用戶使用的空間大小,并且在用戶進行落盤等使用到磁盤空間操作時也進行對應記錄,直到用戶所使用的空間達到限額時,內核就會做出對應的策略,不允許該用戶再進行落盤。

      此外,內核中還有一個保護機制,就是當某個dn實例使用率達到90%時,整個集群會進入只讀狀態,為防止磁盤達到100%后的未知后果,直接禁止所有的寫入操作。

      五、后記

      玩轉GaussDB(DWS)資源負載管理系列 --- DWS資源負載管理的原理是什么,是怎么實現分布式資源管理的呢?

      與此同時,對于用戶所使用的資源,DWS也提供了監控功能,從頁面上可以看到當前用戶的資源使用情況,同樣也可以在內核中查詢視圖:pg_total_user_resource_info進行查看。

      希望通過本文可以加深讀者對于DWS多租戶功能的認識理解。

      數據庫

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:EXCEL表格的按條件定位功能讓您隨心所欲選擇定位條件(excel定位條件如何使用方法)
      下一篇:使用Outlook 2007提供的“RSS聚合器擊”功能獲取信息的方法
      相關文章
      亚洲国产日韩在线观频| 亚洲?V无码乱码国产精品| 国产亚洲精品2021自在线| 亚洲欧洲日产国码二区首页| 久久久久亚洲AV成人无码| 国产亚洲综合网曝门系列| 成人伊人亚洲人综合网站222| 亚洲国产AV无码一区二区三区 | 亚洲一级大黄大色毛片| 亚洲国产美女精品久久久久| 亚洲美女一区二区三区| 亚洲国产精品久久久久秋霞影院| 亚洲精品成人久久| 亚洲日产2021三区在线| 亚洲国产午夜精品理论片| 亚洲mv国产精品mv日本mv| 在线综合亚洲欧洲综合网站| 亚洲妓女综合网99| 国产 亚洲 中文在线 字幕| 亚洲精品无码人妻无码| 一本久久综合亚洲鲁鲁五月天| 亚洲av日韩片在线观看| 久久精品亚洲福利| 亚洲成色www久久网站夜月| 亚洲无线电影官网| 亚洲日本乱码一区二区在线二产线 | 久久久久亚洲精品无码网址色欲 | 国产成人+综合亚洲+天堂| 午夜亚洲福利在线老司机| 中文字幕中韩乱码亚洲大片| 伊人久久亚洲综合| 亚洲国产精品自在线一区二区 | 亚洲精品偷拍视频免费观看 | 亚洲中文字幕无码永久在线| 久久国产精品亚洲综合| 亚洲性一级理论片在线观看| 亚洲午夜无码久久久久软件| 内射无码专区久久亚洲 | 亚洲日日做天天做日日谢| 亚洲AV成人精品一区二区三区 | 亚洲乱码一二三四区乱码|