徐勝超 陳 剛
(廣州華商學(xué)院數(shù)據(jù)科學(xué)學(xué)院 廣州 511300)
隨著云計算技術(shù)的進(jìn)一步發(fā)展[1~3],網(wǎng)絡(luò)服務(wù)器的眾多信息均存儲在容器云內(nèi),使得資源管理問題逐漸突出。容器云內(nèi)資源的平均資源利用率較低,同時大部分服務(wù)器處于閑置狀態(tài)[4~5],但卻耗用著較大功率,導(dǎo)致現(xiàn)存網(wǎng)絡(luò)資源調(diào)度能耗成本高而且效率低下[6]。因此國內(nèi)外相關(guān)學(xué)者加強容器云資源調(diào)度問題研究。
文獻(xiàn)[7]研究了基于編碼染色體的遺傳算法來管理動態(tài)資源調(diào)度。該調(diào)度算法通過計算在未來所需的虛擬機數(shù)量及其預(yù)測的CPU和內(nèi)存需求來調(diào)度任務(wù)。基于工作負(fù)載預(yù)測結(jié)果,提出了一種云計算環(huán)境下成本優(yōu)化的資源調(diào)度策略,旨在最小化從中心云租用虛擬機的總成本,最后采用遺傳算法求解資源調(diào)度策略,但是該方法在實際應(yīng)用中存在成本高、調(diào)度效率低等問題。文獻(xiàn)[8]研究了基于容器云隊列在線任務(wù)的資源調(diào)度方法,首先在云計算服務(wù)排隊模型的基礎(chǔ)上,通過分析任務(wù)隊列長度的變化,構(gòu)建了資源功耗的最小化目標(biāo)函數(shù),最后獲得在線的任務(wù)和容器資源的優(yōu)化調(diào)度策略,但是該方法實施資源計算時過于復(fù)雜,導(dǎo)致資源調(diào)度時間長。文獻(xiàn)[9]研究了容器云多維資源利用率均衡調(diào)度方法,其在Open Shift容器云平臺上提出了基于多維資源空閑率權(quán)重的評價函數(shù)和調(diào)度方法。該方法綜合考慮物理節(jié)點CPU、內(nèi)存、磁盤、網(wǎng)絡(luò)帶寬空閑率和已部署的容器應(yīng)用個數(shù)等因素,利用模糊層次分析法自動建模求解容器應(yīng)用多維資源權(quán)重參數(shù),該方法能夠使集群多維資源利用率更加均衡,從而提升資源的利用率和集群性能,但是該方法忽略資源調(diào)度的實質(zhì)目標(biāo)導(dǎo)致資源調(diào)度效果不佳。
綜上所敘,本文充分考慮資源的利用率情況,研究容器云彈性資源調(diào)度算法,通過彈性地調(diào)度容器云中資源,提升資源利用率,最大程度滿足用戶個性化需求。
Pod是容器云資源調(diào)度的最基本單位。引入Pod概念可以解決多個容器之間的通信問題,也提高了容器間數(shù)據(jù)共享能力,Pod還可以讓集群快速地判斷獲取容器的運行狀態(tài)[10]。
根據(jù)上述分析,分析容器云彈性資源調(diào)度原理與過程,如圖1所示。
圖1 容器云彈性資源調(diào)度過程
容器云當(dāng)前默認(rèn)的調(diào)度過程分為預(yù)選調(diào)度過程和優(yōu)選調(diào)度過程。API服務(wù)器在接收客戶端轉(zhuǎn)送的Pod對象創(chuàng)建請求后,然后就通過調(diào)度器從集群中選擇一個合適的最優(yōu)節(jié)點初始化并運行Pod。而在調(diào)度過程中有三個階段:節(jié)點預(yù)選階段、節(jié)點優(yōu)選階段、節(jié)點選定階段,最后篩選出最佳的節(jié)點。
綜合上述分析,構(gòu)建資源調(diào)度模型,如式(1)~式(2)所示:
式中:集群節(jié)點內(nèi)存使用率用Qm表示;在設(shè)置容器i后節(jié)點綜合負(fù)載用Q*i表示;CPU使用率用Qc表示;綜合負(fù)載使用情況用Qi表示;網(wǎng)絡(luò)帶寬使用率用Qn表示;因各應(yīng)用資源的負(fù)載狀態(tài)不同[11],通過引入?yún)?shù)λ、α、β調(diào)整Qi。
容器云彈性資源調(diào)度的子任務(wù)在虛擬資源中進(jìn)行計算時是并行獨立完成的,因此子任務(wù)在各虛擬資源中執(zhí)行時間的最大值為彈性資源調(diào)度的執(zhí)行時間花費,彈性資源調(diào)度任務(wù)在各虛擬資源的執(zhí)行成本花費k1與傳輸成本花費k2的和即為任務(wù)調(diào)度總成本花費k,即任務(wù)調(diào)度總成本花費k=k1+k2。
分析上述公式可知,容器云彈性資源默認(rèn)調(diào)度算法相對簡單,僅考慮CPU和內(nèi)存,忽視了其他資源過度消耗,使數(shù)據(jù)中心產(chǎn)生巨大的資源浪費。例如,一個節(jié)點上的硬盤負(fù)荷接近滿載但是的內(nèi)存使用率很低,而像現(xiàn)有解決算法只解決了CPU和內(nèi)存能耗,但依舊很有可能將Pod調(diào)度到該節(jié)點,導(dǎo)致該節(jié)點上大多數(shù)應(yīng)用由于節(jié)點硬盤資源的不足而難以運行,同時剩余的內(nèi)存資源亦無法被使用而浪費,從而降低集群的資源使用效率,造成能量過度消耗。
本節(jié)構(gòu)建調(diào)度模型采用基于資源權(quán)重的最大利用率算法實現(xiàn)容器云彈性資源調(diào)度。
假設(shè)在T時間內(nèi),系統(tǒng)任務(wù)必須完成,且同一任務(wù)不可被替代[12~14]。其中,用t表示最小時隙,另外等待隊列集是空。各時隙對應(yīng)與之?dāng)?shù)量相同的虛擬機資源配置類型[15]。假設(shè)有n個時隙,在物理主機Hj內(nèi)任務(wù)m的數(shù)量用Hjm表示,則此時資源利用率φ最大,同時符合0≤n≤T,具體如式(3)~式(4)所示:
式中,容器i的利用率用φi表示;容器云彈性資源權(quán)重用ω(i)表示;物理主機最大可行的配置用Hj=(H1,H2,H3,…,HM)表示;在物理主機Hj內(nèi)任務(wù)m的最大數(shù)量用H(j)max表示;資源需求用ami表示。
經(jīng)分析可知,資源需求與虛擬機內(nèi)任務(wù)m數(shù)量乘積最大,因ami值固定,為保證H(j)max最大,需要確保m數(shù)量最大。t時刻資源利用率配置Hˉr(t)需滿足如下條件,如式(5)所示:
式中:最大虛擬機分配集用Ωr表示,權(quán)重用w(i)表示,虛擬機任務(wù)數(shù)量用Hm表示,最大可行配置用Dri表示。
因不同間隙隊列Wm(t)長度存在差異,其不同時刻時隙變化如下:
式中:t時刻集群節(jié)點內(nèi)存使用率用Qm(t)表示,t時刻集群節(jié)點調(diào)度負(fù)載率用Zm(t)表示。
為了保證容器云彈性資源調(diào)度穩(wěn)定性,當(dāng)隊列中資源利用率大于閾值時,需要依據(jù)上述方法降低工作負(fù)載。根據(jù)上述過程設(shè)計云彈性資源調(diào)度算法流程如下。
按照重要程度得出i類資源平均利用率wei將其作為輸入,將虛擬機配置作為輸出。
步驟1:明確m類資源權(quán)重值。
步驟2:按照負(fù)載均衡原則選擇物理主機。
步驟3:面對集合內(nèi)各物理主機實施如下流程:
若物理主機內(nèi)某任務(wù)隊列集群節(jié)點內(nèi)存使用率Qm>閾值;返回任務(wù)隊列最大配置;跳轉(zhuǎn)至結(jié)束。
步驟4:對容器i后節(jié)點host綜合負(fù)載實施初始化賦值。
步驟5:判斷虛擬機配置。
步驟6:如果當(dāng)前的集群節(jié)點內(nèi)存使用率Qm大于容器i后節(jié)點host綜合負(fù)載,則將當(dāng)前的集群節(jié)點內(nèi)存使用率Qm視為綜合負(fù)載。
步驟7:將最佳的集群節(jié)點內(nèi)存使用率Qm對應(yīng)的虛擬機配置視為最佳配置。
步驟8:保存當(dāng)前最佳配置,結(jié)束算法運行。
為驗證本文算法的性能,通過CloudSim平臺實施實驗,按照應(yīng)用程序配置云數(shù)據(jù)中心,物理機與虛擬機數(shù)量分別為200臺、500臺。
3.1.1 實驗環(huán)境設(shè)置
實驗環(huán)境為真實的物理環(huán)境,7臺dell R720作為計算節(jié)點,采用共享存儲機制,服務(wù)器上安裝OpenStack開源云。實驗系統(tǒng)鏡像中集成自主開發(fā)的運行參數(shù)監(jiān)控軟件。
初始狀態(tài)下,隨機申請150臺虛擬機(VM1~VM150)。其中物理機1分配17臺,物理機2分配16臺,物理機3分配18臺,物理機4分配10臺,物理機5分配14臺,物理機6分配16臺和物理機7分配14臺。在實驗中,網(wǎng)絡(luò)都采用百兆網(wǎng)絡(luò)帶寬分配。
3.1.2 實驗過程設(shè)置
在模擬整合過程中,數(shù)據(jù)中心將創(chuàng)建200臺物理主機。物理主機分別對應(yīng)于CloudSim平臺中某一天每個虛擬機CPU資源利用率記錄,數(shù)據(jù)中心會創(chuàng)建相應(yīng)個數(shù)的虛擬機,這些虛擬機分成不同大小的多個種類。通過上述過程,以綜合負(fù)載、資源利用率、Pod搶占調(diào)度和任務(wù)調(diào)度總成本四個評價指標(biāo)設(shè)計實驗。
3.1.3 實驗參數(shù)設(shè)置
云數(shù)據(jù)中心負(fù)載波動較大均衡度低,集群節(jié)點內(nèi)存為2GB,其中高負(fù)載物理機為39臺,最佳負(fù)載為10臺,可遷移物理機達(dá)到31臺。
以CPU、內(nèi)存、網(wǎng)絡(luò)寬帶占用率三個指標(biāo)作為衡量指標(biāo)。采用本文算法進(jìn)行資源調(diào)度后三個指標(biāo)占用率情況,如圖2所示。
圖2 資源調(diào)度后的各指標(biāo)占用率
圖2中的資源占用率情況通過式(1)得到,即設(shè)置容器i后節(jié)點host綜合負(fù)載。分析圖2可知,采用本文算法資源調(diào)度后達(dá)到最佳負(fù)載物理機數(shù)量是60臺,負(fù)載較輕物理機數(shù)量是10臺,停止物理機10臺。經(jīng)計算本文算法調(diào)度后的負(fù)載不均衡度約為0.05,由此說明本文算法可平衡數(shù)據(jù)中心的負(fù)載情況,提高資源利用率。
如果存在服務(wù)器中某一資源的利用率超過90%則表明該資源占用較高負(fù)載,會導(dǎo)致資源負(fù)載不均衡。當(dāng)資源利用率大于負(fù)載時,表明調(diào)度后的資源負(fù)載不均衡。設(shè)置該實驗的負(fù)載為16。
節(jié)點1~節(jié)點6在應(yīng)用本文算法調(diào)度前,存在節(jié)點2和節(jié)點5的網(wǎng)絡(luò)負(fù)載的資源權(quán)重超過90%情況,同時這兩個節(jié)點的負(fù)載大于16,存在資源占用率過大現(xiàn)象。
采用本文算法對節(jié)點1~節(jié)點6的資源進(jìn)行調(diào)度,資源調(diào)度后不同節(jié)點的資源利用率結(jié)果見圖3,節(jié)點的負(fù)載、平均資源利用率見表1。
圖3 資源調(diào)度后節(jié)點的資源利用率
表1 節(jié)點的負(fù)載、平均資源利用率
圖3中,資源利用率情況數(shù)據(jù)結(jié)果通過式(4)計算得到,表1中的負(fù)載為通過式(2)計算得到的綜合負(fù)載使用情況,平均資源利用率為圖3中不同負(fù)載的平均值。分析圖3和表1中數(shù)據(jù)可知,本文算法資源調(diào)度后不存在節(jié)點資源利用過高現(xiàn)象,且各節(jié)點的資源利用率均小于負(fù)載,實驗結(jié)果表明,采用本文算法實施調(diào)節(jié)調(diào)度后,可有效避免單一資源利用過高導(dǎo)致的負(fù)載不均衡現(xiàn)象。
通過對比對高優(yōu)先級Pod實行搶占調(diào)度后集群的各項資源使用率變化情況,評價調(diào)度算法的優(yōu)劣,資源使用率通過如式(1)所示的容器i后節(jié)點host綜合負(fù)載獲取。若實行搶占調(diào)度后,節(jié)點的綜合負(fù)載較高且波動較小,說明節(jié)點的資源使用更充分、更穩(wěn)定,資源使用率通過式(1)分析得到,測試實驗結(jié)果見圖4。
圖4 本文算法節(jié)點的資源使用率
通過圖4結(jié)果表明,在實施了搶占調(diào)度算法后,本文算法的資源使用數(shù)據(jù)更加平穩(wěn),資源使用率也更加高。反觀默認(rèn)的搶占算法,由于該算法只考慮優(yōu)先級,不考慮其他的因素,所以依舊存在使用資源不穩(wěn)定的低級Pod。其主要原因是,本文在任務(wù)調(diào)度前,充分考慮資源的利用情況,針對用戶需求調(diào)度容器云彈性資源,提升了資源調(diào)度性能。
實驗設(shè)置三種任務(wù),任務(wù)1中總?cè)蝿?wù)數(shù)量為1000個,任務(wù)2中總?cè)蝿?wù)數(shù)量為10000個,任務(wù)3中總?cè)蝿?wù)數(shù)量為100000個,得出本文算法在不同任務(wù)下進(jìn)行調(diào)度的總成本k,即本文算法完成三項任務(wù)時的執(zhí)行成本花費k1與傳輸成本花費k2的和,如圖5所示。
圖5 本文算法任務(wù)調(diào)度總成本k
分析圖5可知,隨著任務(wù)總數(shù)量的增多,本文算法的任務(wù)調(diào)度總成本也呈上升趨勢,但單位成本控制在120元以下,說明本文算法在任務(wù)調(diào)度總成本方面合理,沒有過度浪費資源,可有效節(jié)省資源調(diào)度成本。
本文研究基于利用率的容器云彈性資源調(diào)度算法,將最大資源利用率作為目標(biāo),合理配置物理主機,以提高容器云中資源利用率。實驗結(jié)果表明本文算法的內(nèi)存占用率、CPU占用率、網(wǎng)絡(luò)寬帶占用率均低于10%,綜合負(fù)載較好,當(dāng)節(jié)點出現(xiàn)資源利用率不均衡情況時,采用本文算法對其實施調(diào)節(jié)調(diào)度后,可提高資源均衡度,可較好實現(xiàn)資源均衡調(diào)度的目標(biāo),滿足客戶要求,適用性較強。