概述
在云上業務類型和硬件資源越來越豐富的背景下,對云原生系統提出了更高的管理要求,例如在概論[1]中提到的資源利用率問題,服務質量保障問題,黑盒泛化問題,異構算力效率問題等等。為了讓多樣性業務和算力混部系統以最佳狀態運行,Rubik 混部解決方案應運而生,在 Rubik 解決方案中,包括了集群感知調度、單機混部引擎(rubik)和內核隔離技術等多層次優化系統。本文是對 rubik 混部引擎的概要性介紹。
Rubik 字面意思為魔方,魔方由 Rubik 在 1974 年發明,故 Rubik 既是人名也指代魔方,在我們的解決方案中,Rubik 象征著能夠將任務和算力資源有條不紊的管理起來。
rubik 混部引擎的愿景是提供一套自適應的單機算力調優和服務質量保障服務。包括如下能力目標:
兼容原生 kubernetes 系統:基于原生 kubernetes 的擴展接口進行能力擴展。
兼容 openEuler 系統:自動使能 openEuler 提供的增強特性(如內核分級資源隔離技術),對于其他 linux 發行版,由于存在部分內核特性缺失,僅提供受限管理能力。
注入式應用畫像:通過干擾自動注入對業務進行畫像標記,指導調度及運行時干擾識別控制。
節點及業務特征收集:上報節點及業務特征信息指導集群資源規劃、調度策略優化,實現集群負載均衡、節點資源錯峰互補使用。
運行時干擾識別控制:提供對關鍵業務性能干擾實時檢測能力、干擾源快速定位能力以及干擾快速控制能力。
自適應動態調優:例如對關鍵業務性能優化,使其能能更高效穩定的運行;動態在離線資源配比調優,減少關鍵業務 QoS 違規等等。
支持自定義擴展:支持高級用戶針對特定業務場景開發自定義擴展插件。
rubik混部引擎在系統中的位置
特性介紹
在保障在線業務服務質量前提下實現資源利用率最大化提升是在離線混合部署的設計目標,rubik 混部引擎作為節點管理組件在整個混部解決方案中起到至關重要的作用,因此,rubik 混部引擎主要圍繞資源利用率提升、QoS 保障展開。
在資源利用率提升方面,rubik 提供以下機制指導集群資源調度、實現集群節點各維度資源均衡、錯峰互補、干擾打散。
基于注入式應用畫像指導作業調度的調度及重調度機制
待調度作業通過干擾自動注入對業務進行畫像標記, 分析工作負載的資源敏感度及壓力度,調度階段結合節點各維度資源(CPU、內存帶寬、緩存帶寬、磁盤帶寬、網絡帶寬等)預測使用情況,指導集群節點資源統籌管理調度,不同資源密集型業務交錯部署,均衡各維度平均資源利用率水平,同時也指導作業二次調度。
基于在線業務資源預測的節點資源超賣機制
通過對在線業務的各維度資源采樣,預測可/不可壓縮資源使用情況并上報,為在線業務準確預留所需資源保障其 QoS 的同時,將未使用資源盡可能多地分配給離線業務,最大化離線的吞吐率,提升節點的資源利用率。
在 QoS 保障方面,在混部作業的運行過程中,由于在離線作業競爭 CPU、緩存帶寬、內存帶寬、網絡帶寬、磁盤帶寬等共享資源以及由于進程在不同 CPU 頻繁切換及負載流量突發等情況,往往會導致業務性能受損,為了保障在線業務服務質量,防范關鍵業務 QoS 違規,rubik 混部引擎規劃提供多重保障以提升工作負載的運行效率及穩定性。
第一道防線 - 基于內核特性的資源隔離搶占機制
openEuler Kernel 為了適配云原生混部場景,規劃了 CPU、cache、Disk I/O、Network I/O 等資源的分級搶占能力,rubik 作為用戶態組件,為在離線業務配置 QoS 優先級,使得當在線業務流量上升時,內核層面能為其快速搶占到所需資源,保障在線業務的服務質量,當在線業務的流量下降時,放寬對離線業務資源的限制,提高離線業務的吞吐率。
第二道防線 - 基于資源預測的在離線資源配比調優的預防機制
通過對在線業務相關資源的監控采集,預測在線業務各資源的使用情況,并結合節點資源的使用情況,提前對資源進行規劃,降低在線業務 QoS 違規風險。當預測在線業務資源需求變大時,根據節點資源的空閑情況,選擇是否對離線業務資源的配比調整。
第三道防線 - 基于資源編排與彈性限流的自適應性能調優機制
提供拓撲均衡&潮汐親和性編排,減少進程在不同 CPU 的頻繁切換、進程遷移開銷以及訪問遠程 NUMA 導致性能抖動,同時應對關鍵業務流量突發,在保障整機負載水位安全穩定前提下,允許臨時突破限制,協調資源進行自適應調整,快速解決或者緩解對應資源瓶頸,保障關鍵業務的服務質量。
第四道防線 - 基于指標監控的性能干擾檢測控制的反饋機制
在現有的計算機硬件體系結構中,除了 CPU、Memory、Disk、Network 等資源,還有諸如 Memory Bus、 System I/O Bus、 DMA Bus、MMU-TLB 等關鍵資源,且這些資源尚無對應的軟硬件協同的資源隔離機制,無法實現應用級的隔離,僅僅對 CPU 等資源隔離搶占無法完全解決資源競爭帶來的 QoS 違規問題。因此節點管理組件需要提供對關鍵業務的性能干擾分析,然而在實際的生產環境上,通常無法直接獲得業務的 QoS 情況,因此,在預分析階段對底層性能指標與上層應用 QoS 建模,在運行期根據模型實時檢測評估 QoS 是否違規,并在出現 QoS 違規后基于異常指標定位干擾來源,最后對干擾源進行壓制甚至驅逐來保障在線業務的服務質量。
rubik 混部引擎特性
部署
首先,需要準備一套基于 openEuler 22.03 完成部署的 kubernetes 集群,然后在 master 節點準備 rubik 的 yaml 部署文件,可以直接從 rubik 源碼倉下載 example:
wget-Orubik-daemonset.yamlhttps://gitee.com/openeuler/rubik/raw/master/hack/rubik-daemonset.yaml
下載之后,正確配置 yaml 里面的鏡像地址,讓它能夠正確下載 rubik 鏡像。
?
需要注意:
yaml 里需要正確配置 rubik 容器鏡像的地址。假如前面采用的是 rubik 源碼倉的 example,則需要修改 yaml 文件中的image: rubik_image_name_and_tag 為 image: hub.oepkgs.net/cloudnative/rubik:latest
yaml 中主要包含 ClusterRole、ClusterRoleBinding、ConfigMap、DaemonSet 四部分。其中 rubik 的啟動配置參數包含在 ConfigMap 里,詳細的配置說明可以參考rubik 配置說明(https://gitee.com/openeuler/rubik/blob/master/docs/config.md)
?
然后,一鍵部署 rubik daemonset:
kubectlapply-frubik-daemonset.yaml
部署完成后,通過 kubectl 可以查詢名為rubik-agent的 pod:
#kubectlgetpods-A NAMESPACENAMEREADYSTATUSRESTARTSAGE kube-systemrubik-agent-jhjdg1/1Running04d
使用示例
以下演示如何啟動一個 nginx Pod 并將對其設置為在線業務,rubik 為該業務使能 kernel 資源 QoS 保障機制。
首先,需要在工作節點上使能 memory QoS 特性:
echo1>/proc/sys/vm/memcg_qos_enable
然后,在部署文件 yaml 添加 volcano.sh/preemptable 的 annotation 以標識業務屬性:
#catnginx-online.yaml apiVersion:v1 kind:Pod metadata: name:nginx-online annotations: volcano.sh/preemptable:"false"#volcano.sh/preemptable為true代表業務為離線業務,false代表業務為在線業務,默認為false spec: containers: -name:nginx image:nginx resources: limits: memory:"200Mi" cpu:"1" requests: memory:"200Mi" cpu:"1"
接著,部署 nginx 業務:
#kubectlapply-fnginx-online.yaml #kubectlgetpods NAMEREADYSTATUSRESTARTSAGE nginx-online1/1Running04d
最后,查找并進入nginx-online Pod 對應的 cgroup 下,查看cpu.qos_level是否生效(在線業務為 0,離線業務為-1),具體運行效果可以查閱典型應用下的效果中案例 1[2]:
#cat/sys/fs/cgroup/cpu/kubepods/pod59f1cdfa-a0ad-4208-9e95-efbef3519c00/cpu.qos_level 0
展望
在離線混合部署作為提升數據中心資源利用率的重要手段,得到學術界和工業界的關注,成為了研究的熱點領域,但目前也面臨著諸多技術挑戰,尚有許多亟待解決的問題,如黑盒業務混部、異構資源混部等,需要在作業感知調度、性能干擾建模、資源隔離搶占等領域逐個突破。為了達成泛型混部及融合部署的目標,節點管理層面對關鍵業務進行性能干擾建模,提供精確的 QoS 量化模型,指導干擾實時檢測與定位,并基于干擾檢測與定位實現更精確的動態資源配比控制以及探索更精準普適的動態監測指標數據對應用畫像以指導感知調度,這些方面具有著至關重要的作用,也是 rubik 后續研究的重點所在。
本文簡要介紹 rubik 混部引擎的愿景、目標、設計原則及特性機制,后續計劃對其中涉及的性能調優技術,資源隔離搶占技術,干擾檢測及控制技術等進行詳細介紹,敬請期待!
-
帶寬
+關注
關注
3文章
953瀏覽量
41079 -
硬件
+關注
關注
11文章
3382瀏覽量
66461 -
隔離技術
+關注
關注
1文章
56瀏覽量
13166
原文標題:openEuler 資源利用率提升之道 03:rubik 混部引擎簡介
文章出處:【微信號:openEulercommunity,微信公眾號:openEuler】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
無線通信行業對5G市場的愿景和該市場面臨的技術挑戰是什么?
《愿景:系列采訪》:PowerVR產品與技術營銷部高級總監Chris Longstaff
西門子發布“2020公司愿景”戰略計劃,未來發展有何改變?
微軟未來愿景揭秘
區塊鏈芯片驅動世界的美好愿景還能否實現
亞馬遜AWS的云計算有什么愿景
芯愿景成科創板首個EDA公司?
FORVIA佛瑞亞集團發布全新愿景和使命
EDA廠商芯愿景終止深交所主板IPO
富士通發布《富士通技術與服務愿景2024》
![富士通發布《富士通技術與服務<b class='flag-5'>愿</b><b class='flag-5'>景</b>2024》](https://file1.elecfans.com/web2/M00/EA/26/wKgZomZW8LqANboKAAA9DcF6v_4343.png)
評論