国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種基于負(fù)載預(yù)測的DockerSwarm集群資源調(diào)度優(yōu)化方法與流程

      文檔序號:11544969閱讀:1593來源:國知局
      一種基于負(fù)載預(yù)測的Docker Swarm集群資源調(diào)度優(yōu)化方法與流程

      本發(fā)明屬于計算機系統(tǒng)虛擬化技術(shù)領(lǐng)域,更具體地,涉及一種基于負(fù)載預(yù)測的dockerswarm集群資源調(diào)度優(yōu)化方法。



      背景技術(shù):

      docker自發(fā)布以來就立即在云計算領(lǐng)域引起了高度關(guān)注,社區(qū)異?;钴S,成為目前最炙手可熱開源軟件之一。業(yè)界巨頭如微軟、谷歌、ibm等紛紛與docker建立合作,并在各自相應(yīng)平臺上支持docker。docker的發(fā)展勢頭相當(dāng)迅猛。簡單地講,docker就是一個應(yīng)用程序運行容器,可將應(yīng)用及所有依賴打包進一個標(biāo)準(zhǔn)的單元中,如同集裝箱一樣。docker的功能類似虛擬機,但是要比虛擬機啟停更快、更加節(jié)省計算機的資源。

      docker集群管理工具swarm的出現(xiàn)進一步促進了docker在集群中的使用,為云計算平臺及數(shù)據(jù)中心的虛擬化方法提供了一種新的思路。但是目前docker在下面兩個方面還存在一些問題:

      1、docker的資源限制:

      docker通過cgroup(控制組)來控制容器使用的資源配額,包括cpu、內(nèi)存、磁盤三大方面,基本覆蓋了常見的資源配額和使用量控制。但目前docker只是用了cgroup的一部分子系統(tǒng),實現(xiàn)對資源配額和使用的控制。通常用法是在啟動一個容器時,通過設(shè)置權(quán)重或者上限等參數(shù),來達(dá)到資源控制的作用。在集群中,多個容器運行在一個節(jié)點上,它們之間的資源分配策略分為兩種:在資源利用不飽和時,各個容器盡最大努力使用資源,但受上限限制;而當(dāng)資源利用飽和時,即容器開始競爭資源,則按分配的權(quán)重來進行資源分配,也受到上限的限制。

      這樣的資源調(diào)度方法在靈活性上有所欠缺,不能動態(tài)改變?nèi)萜鞯馁Y源權(quán)重和限制。這樣可能會造成資源浪費和缺乏反饋的資源競爭:在資源利用不飽和的時候,部分容器運行時需要更多的資源,但受到了資源上限的限制,沒有充分利用節(jié)點資源;在資源利用飽和時,有的容器對某些資源的需求比較大,但權(quán)重和上限都限制了它對資源的使用,而其他一些容器則對資源的需求不是很迫切,這時需要動態(tài)調(diào)整容器的資源權(quán)重和上限,達(dá)到總體提高容器運行性能的效果。

      2、dockerswarm集群的調(diào)度策略:

      目前swarm內(nèi)置的調(diào)度策略有三種,分別是random(隨機)、spread(擴散)和binpack(裝箱):random調(diào)度策略是隨機選擇容器生成的位置,一般用于調(diào)試集群;而用spread和binpack調(diào)度策略時,主要的依據(jù)是swarm統(tǒng)計出的每個物理節(jié)點的內(nèi)存和cpu的分配情況,其中,使用spread調(diào)度策略時,swarm會按照各個node節(jié)點的總的內(nèi)存和cpu的比例來使容器分散在每一個節(jié)點上;使用binpack調(diào)度策略時,swarm會先把一個node節(jié)點的資源使用完后,再將容器生成在其他可用的節(jié)點上。

      目前使用的最多的就是spread策略,但它也存在著不足之處:在分配新容器時,只關(guān)注節(jié)點上的內(nèi)存和cpu占用比例,沒有考慮節(jié)點的i/o性能,也沒有考慮節(jié)點上容器的資源偏向特性,例如新容器是cpu密集型的,而正好有滿足條件的節(jié)點上面也都是cpu密集型容器,這樣就很可能在之后出現(xiàn)嚴(yán)重的cpu。理想的情況是節(jié)點上,有著各種資源偏向的容器,例如把cpu密集型和i/o密集型的容器放在一個節(jié)點上,這樣可以大大減少競爭資源的可能,并能提高節(jié)點的資源利用率。



      技術(shù)實現(xiàn)要素:

      針對現(xiàn)有技術(shù)的以上缺陷或改進需求,本發(fā)明提供了一種基于負(fù)載預(yù)測的dockerswarm集群資源調(diào)度優(yōu)化方法,其目的在于采取arima-rbf模型來對容器的資源歷史使用量進行建模預(yù)測,獲取資源未來使用量,集合資源目前使用情況對資源使用上限和資源使用權(quán)限進行調(diào)整;并根據(jù)容器的歷史資源使用量來確定容器對資源的使用;并在集群啟動一個新容器時根據(jù)該容器和滿足容器資源需求的節(jié)點集上的資源使用偏向程度,選擇一個加入該容器后資源使用偏向最均衡的節(jié)點來部署這個新容器,由此提高容器性能,提高了節(jié)點資源利用率和節(jié)點效益的作用。

      為實現(xiàn)上述目的,按照本發(fā)明的一個方面,提供了一種基于負(fù)載預(yù)測的dockerswarm集群資源調(diào)度優(yōu)化方法,所述方法包括:

      (1)通過dockerdaemon的api接口函數(shù),周期性地收集容器的資源歷史使用量;

      (2)對所述資源歷史使用量按時間序列后利用arima模型進行建模預(yù)測,得到容器資源未來使用量,再用rbf神經(jīng)網(wǎng)絡(luò)對預(yù)測結(jié)果的誤差進行建模預(yù)測,得到資源未來使用量的預(yù)測誤差,再將容器資源未來使用量和預(yù)測誤差結(jié)合,得到修正后容器資源未來使用量;

      (3)將容器資源未來使用量、容器資源目前使用量和資源限制量進行對比后,進行動態(tài)調(diào)整容器對資源的限制量和容器對資源的權(quán)重;

      (4)根據(jù)容器的資源歷史使用量確定容器對資源的使用偏向程度;

      (5)分配容器到節(jié)點上時,根據(jù)容器對資源的使用偏向程度篩選出部署該容器的節(jié)點。

      進一步地,其特征在于,所述步驟(1)具體為在集群的每個節(jié)點上,實時獲取每個容器的cpu、內(nèi)存和帶寬的歷史使用量,按時間排序并生成相應(yīng)的時間序列。

      進一步地,其特征在于,所述步驟(2)具體包括:

      (21)對所述資源歷史使用量按時間序列,再對資源歷史使用量的時間序列進行多次差分得到穩(wěn)定的時間序列;

      (22)對穩(wěn)定的時間序列進行零均值化,再計算其自相關(guān)函數(shù)和偏自相關(guān)函數(shù)并識別出arima模型和估計參數(shù),計算出arima模型的階數(shù)和參數(shù);

      (23)對arima模型進行有效性檢驗,通過檢驗后,利用該模型進行預(yù)測,得到容器的資源未來使用量;

      (24)對比預(yù)測后一段時間內(nèi)容器的資源使用量和預(yù)測得到此段時間的資源未來使用量,得到預(yù)測誤差,使用rbf神經(jīng)網(wǎng)絡(luò)對誤差進行建模,得到誤差預(yù)測;

      (25)將容器資源未來使用量和誤差預(yù)測結(jié)合,得到修正后容器資源未來使用量。

      進一步地,其特征在于,所述步驟(3)具體包括:

      (31)從容器s的r資源開始遍歷,檢查節(jié)點上r資源占用率是否飽和,若不飽和,進入步驟(32);否則進入步驟(33);

      (32)比較容器s的rfuture和rnlimit,若rfuture大,則使rnlimit=rfuture;其中,rfuture表示容器的r資源未來使用量;rnlimit表示容器對r資源的限制量;進入步驟(34);

      (33)檢測r資源的調(diào)度策略中是否有權(quán)重這一屬性,若沒有,則等待下一輪調(diào)度;否則比較容器s的rfuture、rcur和rnlimit,若rfuture>rcur=rnlimit,則使rnlimit=rfuture;其中,rcur表示容器的r資源當(dāng)前使用量;

      (34)將rfuture與rnwgt/rallwgt·rall的比值記為則更新rnwgt使其中,th表示資源未來使用量與資源限制量的比例閾值;rnwgt表示容器對r資源的權(quán)重;rallwgt表示所有容器對r資源的權(quán)重之和;rall表示r資源的總量;

      (35)將更新后的rnlimit和rnwgt,傳遞到dockerdaemon中。

      進一步地,其特征在于,所述步驟(4)具體為:

      容器對資源的使用偏向程度由偏向參數(shù)m確定,

      其中,ε為資源閾值;ni為i時刻資源的使用率;p表示p個時刻;f()為指示函數(shù),若x>0時,則f(x)=1,否則f(x)=0;偏向參數(shù)m越大,說明該容器對資源越偏向。

      進一步地,其特征在于,所述步驟(5)具體包括:

      (51)在集群部署一個新的容器時,先檢測這個容器之前是否分析過資源偏向程度;若是則篩選出能夠運行該容器的節(jié)點集,計算節(jié)點集中所有節(jié)點的balance;

      其中,mi是所有容器對資源i的偏向參數(shù)之和;n表示資源種類數(shù);

      (52)選出balance最小的節(jié)點,作為部署節(jié)點。

      總體而言,通過本發(fā)明所構(gòu)思的以上技術(shù)方案與現(xiàn)有技術(shù)相比,具有以下技術(shù)特征及有益效果:

      (1)本發(fā)明技術(shù)方案使用了arima-rbf模型,可以根據(jù)容器的資源使用歷史,預(yù)測出未來的資源使用量,并及時調(diào)整各個容器的資源限制和權(quán)重,能夠起到提高容器性能的作用;

      (2)本發(fā)明技術(shù)方案在集群中各個節(jié)點中分析出該節(jié)點的資源使用偏向,并將其資源使用偏向納入到容器調(diào)度策略中,盡量避免了容器在節(jié)點上的資源競爭,提高了節(jié)點資源利用率和節(jié)點效益的作用;

      (3)本發(fā)明技術(shù)方案實時根據(jù)資源使用情況進行資源調(diào)度,具有容器資源調(diào)度實時性的優(yōu)點。

      附圖說明

      圖1是本發(fā)明技術(shù)方案集群級的功能示意圖;

      圖2是本發(fā)明技術(shù)方案步驟(2)的流程圖;

      圖3是本發(fā)明技術(shù)方案步驟(3)的流程圖;

      圖4是本發(fā)明技術(shù)方案步驟(5)的流程圖。

      具體實施方式

      為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明進行進一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅用以解釋本發(fā)明,并不用于限定本發(fā)明。此外,下面所描述的本發(fā)明各個實施方式中所涉及到的技術(shù)特征只要彼此之間未構(gòu)成沖突就可以相互組合。

      如圖1所示,本發(fā)明集群資源調(diào)度優(yōu)化方法包括以下步驟:

      (1)通過dockerdaemon的api接口函數(shù),周期性地收集容器的資源歷史使用量;具體為在集群的每個節(jié)點上,實時獲取每個容器的cpu、內(nèi)存和帶寬的歷史使用量,按時間排序并生成相應(yīng)的時間序列。

      (2)對所述資源歷史使用量按時間序列后利用arima模型進行建模預(yù)測,得到容器資源未來使用量,再用rbf神經(jīng)網(wǎng)絡(luò)對預(yù)測結(jié)果的誤差進行建模預(yù)測,得到資源未來使用量的預(yù)測誤差,再將容器資源未來使用量和預(yù)測誤差結(jié)合,得到修正后容器資源未來使用量;

      如圖2所示為步驟(2)具體工作流程,具體包括:

      (21)對所述資源歷史使用量按時間序列,再對資源歷史使用量的時間序列進行多次差分得到穩(wěn)定的時間序列;

      (22)對穩(wěn)定的時間序列進行零均值化,再計算其自相關(guān)函數(shù)和偏自相關(guān)函數(shù)并識別出arima模型和估計參數(shù),計算出arima模型的階數(shù)和參數(shù);

      (23)對arima模型進行有效性檢驗,通過檢驗后,利用該模型進行預(yù)測,得到容器的資源未來使用量;

      (24)對比預(yù)測后一段時間內(nèi)容器的資源使用量和預(yù)測得到此段時間的資源未來使用量,得到預(yù)測誤差,使用rbf神經(jīng)網(wǎng)絡(luò)對誤差進行建模,得到誤差預(yù)測;

      (25)將容器資源未來使用量和誤差預(yù)測結(jié)合,得到修正后容器資源未來使用量。

      (3)將容器資源未來使用量、容器資源目前使用量和資源限制量進行對比后,進行動態(tài)調(diào)整容器對資源的限制量和容器對資源的權(quán)重;

      如圖3所示為步驟(3)具體工作流程,具體包括:

      (31)從容器s的r資源開始遍歷,檢查節(jié)點上r資源占用率是否飽和,若不飽和,進入步驟(32);否則進入步驟(33);

      (32)比較容器s的rfuture和rnlimit,若rfuture大,則使rnlimit=rfuture;其中,rfuture表示容器的r資源未來使用量;rnlimit表示容器對r資源的限制量;進入步驟(34);

      (33)檢測r資源的調(diào)度策略中是否有權(quán)重這一屬性,若沒有,則等待下一輪調(diào)度;否則比較容器s的rfuture、rcur和rnlimit,若rfuture>rcur=rnlimit,則使rnlimit=rfuture;其中,rcur表示容器的r資源當(dāng)前使用量;

      (34)將rfuture與rnwgt/rallwgt·rall的比值記為則更新rnwgt,使;其中,th表示未來資源使用量與資源限制量的比值閾值,1<th<2,優(yōu)選th=1.2;rnwgt表示容器對r資源的權(quán)重;rallwgt表示所有容器對r資源設(shè)置的權(quán)重之和;rall表示r資源的總量;

      (35)將更新后的rnlimit和rnwgt,傳遞到dockerdaemon中。

      (4)根據(jù)容器的資源歷史使用量來確定容器對資源的使用偏向程度;

      具體為容器對資源的使用偏向程度由偏向參數(shù)m確定,

      其中,ε為資源閾值,0<ε<1,ε=0.7;ni為i時刻資源的使用率;p表示取p個時刻;f()為指示函數(shù),若x>0時,則f(x)=1,否則f(x)=0;偏向參數(shù)m越大,說明該容器對資源越偏向。

      (5)在集群管理器分配容器到節(jié)點上時,根據(jù)容器對資源的使用偏向程度篩選出部署該容器的節(jié)點;

      如圖4所示為步驟(5)具體工作流程,具體包括:

      (51)在集群部署一個新的容器時,先檢測這個容器之前是否分析過資源偏向;若有則篩選出能夠運行該容器的節(jié)點集,計算節(jié)點集中所有節(jié)點的balance;

      其中,mi是所有容器對資源i的偏向參數(shù)之和;n表示資源種類數(shù);

      (52)選出balance最小的節(jié)點,作為部署節(jié)點。

      本領(lǐng)域的技術(shù)人員容易理解,以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。

      當(dāng)前第1頁1 2 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1