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

評(píng)論