一種新的云環(huán)境虛擬機調(diào)度方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于計算機技術(shù)領(lǐng)域,涉及云環(huán)境下虛擬機迀移算法。
【背景技術(shù)】
[0002] 現(xiàn)今云計算在理論及技術(shù)上發(fā)展強勁,逐漸成為人們關(guān)注的焦點和未來計算模式 的發(fā)展趨勢。隨著越來越多的應(yīng)用服務(wù)提供商和中小型企業(yè)把應(yīng)用部署到云平臺上,云平 臺數(shù)據(jù)中心的數(shù)據(jù)逐漸增多,需要的服務(wù)器也逐漸增多,但是資源利用率不高、能量消耗大 以及負(fù)載失衡等現(xiàn)象卻普遍存在于云數(shù)據(jù)中心,制約著平臺的發(fā)展。
【發(fā)明內(nèi)容】
[0003] 本發(fā)明的目的是提高云平臺主機資源利用率,維持系統(tǒng)的負(fù)載均衡并減少能量消 耗,根據(jù)云平臺的特點,提出了一種新的虛擬機動態(tài)調(diào)度算法。
[0004] 本發(fā)明的技術(shù)方案為:
[0005] 云環(huán)境下虛擬機動態(tài)迀移問題,目的在于平衡系統(tǒng)中各節(jié)點的負(fù)載,實現(xiàn)資源的 動態(tài)調(diào)度,主要涉及的問題包括以下三個方面:一是虛擬機迀移的處罰機制,即哪個節(jié)點需 要進行虛擬機迀移;二是源節(jié)點中帶歉意的虛擬機的選取,及這個節(jié)點中需要迀移哪些虛 擬機;三是目的節(jié)點的選取,即將這些虛擬機迀移到哪些節(jié)點上。三者之間的關(guān)系可以用圖 1動態(tài)迀移流程圖來表示。
[0006] 第一個問題,一個節(jié)點的工作負(fù)載可以用節(jié)點的CPU使用率和內(nèi)存使用率計算而 得,采用加權(quán)因子W=[W1, W2]對兩種資源的利用率進行加權(quán)計算,具體該節(jié)點的負(fù)載定義為 WorkLoad: WorkLoad=wiCUSage (t) +W2Mem usage (t)
[0007] C_ge為該節(jié)點在時亥Ijt的CPU使用率,Memusag(3為該節(jié)點在時亥Ijt的內(nèi)存使用率,式 中 W1+W2 = 1 〇
[0008] 用WorkLoadi表示節(jié)點i的負(fù)載,B表示系統(tǒng)負(fù)載均衡度,系統(tǒng)中有η個節(jié)點,則B可 以用以下公式求得:
[0009]當(dāng)負(fù)載過高時,顯然需要對節(jié)點內(nèi)虛擬機進行迀移,而負(fù)載過低時,節(jié)點幾乎處于 空閑狀態(tài),而基礎(chǔ)電能卻依然在消耗,故也應(yīng)該將該節(jié)點內(nèi)虛擬機迀出,從而關(guān)閉節(jié)點,以 達到節(jié)約能源的效果。故而我們給出要求,當(dāng)WorkLoad高于80 %或者低于30 %的時候觸發(fā)。
[0010] 第二個問題,CPU作為核心資源,是虛擬機是否迀移的第一因素,而所占內(nèi)存決定 論迀移時間,故而對于一個虛擬機而言,CPU使用量占該節(jié)點CPU總量的百分比為匕,虛擬機 內(nèi)存使用量占該節(jié)點內(nèi)存總量的百分比為Mi,Ui為CPU使用率和內(nèi)存使用率的比值,即: Ui = Ci/Mi
[0011] 在選取虛擬機的時,該虛擬機的Ci越大越好,Mi越小越好,即Ui越大越好。
[0012] 在選取虛擬機前,先將該節(jié)點上虛擬機的仏進行排序,選取U最大的虛擬機進行迀 移。
[0013] 第三個問題,目的節(jié)點的選取直接影響系統(tǒng)數(shù)據(jù)中心運行節(jié)點的負(fù)載均衡情況。 [00M] 本文中用CPU使用率、內(nèi)存、網(wǎng)絡(luò)帶寬的三維向量〈0?1],1^111,此〇來描述虛擬機和 目的節(jié)點的資源。
[0015]定義迀移虛擬機i對目的節(jié)點j的資源需求向量Dijvm= (dijcpu,dijmem,dijnet),計算 公式如下: di jcpu = CPUi-need/ ( CPUj-total-CPUj-use-CPU j-reserve ) dijmem- MeiTli-need/ ( Mem j-total_MeiTlj-use_Menij_ reserve ) di jnet - Neti need/ (Νθ? j total-Νθ? j_use-Νθ? j-reserve )
[0016] i_need表示虛擬機i所需的CPU資源、內(nèi)存資源、帶寬資源,j_total表示節(jié)點j的 CPU資源、內(nèi)存資源、帶寬資源的總量,j_use表示節(jié)點j的CPU資源、內(nèi)存資源、帶寬資源已使 用量,j_r es erve表示節(jié)點j的CPU資源、內(nèi)存資源、帶寬資源的預(yù)留量。
[0017] 只有的值均在(0,1)時,才能滿足迀移虛擬機對節(jié)點的資源需 求。
[0018]設(shè)定權(quán)值向量W= (Wi,W2,W3),對三種資源需求進行加權(quán)計算,得到虛擬機i對節(jié)點 j的需求量Si j: Si j = Di(其中 W1+W2+W3 = 1)
[0019 ] Si j在(0,1)內(nèi),Si j越大,將該虛擬機迀移至該節(jié)點后,該節(jié)點的狀態(tài)越趨近于達到 上限。
[0020] 這樣的迀移,會導(dǎo)致其他虛擬機的Su較小而無法找到合適的目的節(jié)點,擁有更多 資源的節(jié)點卻無法接收到迀移的虛擬機,無法滿足負(fù)載均衡。
[0021] 在此,定義虛擬機i對節(jié)點j的匹配度M1J: Mij = l_Sij
[0022] Mi j也在(0,1)內(nèi),Mi j越大,虛擬機i對該節(jié)點j的需求越高,虛擬機迀移到該節(jié)點的 可能性越大,虛擬機i和節(jié)點j的匹配度越高。
[0023] 資源多,性能好的節(jié)點能匹配到相對多的虛擬機,此時就容易引起群聚效應(yīng),為避 免群聚效應(yīng)的發(fā)生,采用概率輪盤來進行目的節(jié)點的選擇。
[0024] 定義虛擬機i最終選擇目的節(jié)點j的概率為:
[0025] 為虛擬機i對節(jié)點j的匹配度。
[0026] 共有η個目的節(jié)點可以選取。其中,
[0027] 在實現(xiàn)過程中,可以通過一個(0,1)的隨機數(shù)字來判斷所在的區(qū)間,實現(xiàn)虛擬機目 的節(jié)點的選取。
[0028] 本發(fā)明的有益效果是:根據(jù)虛擬機迀移的特點,分別對待迀移節(jié)點的選擇、節(jié)點中 虛擬機的選擇以及目的節(jié)點的選擇三個問題進行研究以及說明,對系統(tǒng)能耗、CPU資源、內(nèi) 存資源、帶寬資源進行綜合考慮,最后通過概率輪盤來決定最終的選擇。本發(fā)明可以提高云 平臺的穩(wěn)定性,有助于提高工作效率,減少硬件損耗。
【附圖說明】
[0029] 本發(fā)明有如下附圖:
[0030] 圖1動態(tài)迀移流程圖。
[0031] 圖2節(jié)點能耗圖。
[0032]圖3節(jié)點負(fù)載狀態(tài)分類圖。
[0033] 圖4上線閾值觸發(fā)迀移模擬圖。
[0034] 圖5下線閾值觸發(fā)迀移模擬圖。
[0035]圖6虛擬機i的選擇概率輪盤圖。
【具體實施方式】
[0036 ]參照說明書附圖對本發(fā)明作以下詳細(xì)地說明。
[0037] 該發(fā)明包括三部分內(nèi)容,其一是虛擬機迀移的觸發(fā)機制,即哪個節(jié)點需要進行虛 擬機迀移;其二是源節(jié)點中待迀移的虛擬機的選取,即這個節(jié)點中需要迀移哪些虛擬機;其 三是目的節(jié)點的選取,即將這些虛擬機迀移到哪些節(jié)點上。具體如下:
[0038] 第一,虛擬機迀移的觸發(fā)機制:
[0039] 定義 1,能耗(Power Consumption) 〇
[0040] -般情況下,一個節(jié)點的電能消耗絕大部分來自于CPU的使用,與CPU的使用率近 似成以下關(guān)系:
[0041] P為電能消耗總和,Cu胃為節(jié)點CPU使用率,F(xiàn)max為滿負(fù)載情況下節(jié)點的電能消耗,k 為空閑情況下節(jié)點電能消耗占滿負(fù)載情況下電能消耗的比例。
[0042] 由公式可以看出當(dāng)Fmax確定,且k值一定時,該節(jié)點的電能消耗P的大小只取決于該 節(jié)點CPU的利用率Cusag(3,節(jié)點從空閑到滿負(fù)載的電能消耗與CPU利用率近似成線性關(guān)系。
[0043] 如圖2所示。隨著利用率升高,節(jié)點的能耗增加并不大,但是利用率為0 % (即空閑節(jié)點)的能耗卻很高,所以應(yīng)在保持節(jié)點能正常運行的情況下,盡量提高節(jié)點的負(fù) 載,并且將空閑出來的節(jié)點關(guān)掉,以此來有效的減少電能消耗。
[0044] 定義2,工作負(fù)載(Work Load)。
[0045] 一個節(jié)點的工作負(fù)載可以用節(jié)點的CPU使用率和內(nèi)存使用率計算而得,采用加權(quán) 因子w= [ wi,W2 ]對兩種資源的利用率進行加權(quán)計算,具體該節(jié)點的負(fù)載定義為WorkLoad: W〇rkL〇cld - WlCusage ( ? ) ~^W2M6niusage ( ? )
[0046] C_ge為該節(jié)點在時亥Ijt的CPU使用率,Mem_ge為該節(jié)點在時亥Ijt的內(nèi)存使用率,式 中 W1+W2 = 1 〇
[0047]定義3,負(fù)載均衡度(Load Balance)。
[0048] WorkLoadi表示節(jié)點i的負(fù)載,B表示系統(tǒng)負(fù)載均衡度,系統(tǒng)中有η個節(jié)點,則B可以 用以下公式求得:
[0049] B越小,說明各節(jié)點間負(fù)載差值越小,系統(tǒng)負(fù)載越均衡。
[0050] 定義4,節(jié)點負(fù)載等級(Node Load Level):根據(jù)節(jié)點負(fù)載的大小,將各節(jié)點負(fù)載分 為如圖3所示四個等級:
[0051 ]根據(jù)對節(jié)點負(fù)載定義,設(shè)定雙閾值觸發(fā)機制:基于節(jié)點負(fù)載的上線閾值觸發(fā)迀移 和下線閾值觸發(fā)迀移,如圖4和圖5。
[0052] 采用雙閾值觸發(fā)主要是基于兩方面的考慮,上線閾值的設(shè)定主要是為了避免節(jié)點 負(fù)載過高,無法滿足用戶需求,或者因負(fù)載過高導(dǎo)致節(jié)點運行出現(xiàn)故障;下線閾值的設(shè)定主 要是為了盡量減少運行節(jié)點的數(shù)量,達到節(jié)能的效果。
[0053] 節(jié)點的負(fù)載信息包括了CPU的利用率、內(nèi)存的使用率,能更加準(zhǔn)確地描述資源的使 用情況,單一的CHJ利用率或內(nèi)存利用率無法真實反映資源的使用情況。
[0054] 實時更新節(jié)點負(fù)載信息容易出現(xiàn)瞬時低谷或高峰現(xiàn)象,可能節(jié)點負(fù)載瞬間超出了 設(shè)定閾值,但是能在短時間內(nèi)迅速恢復(fù)下來。
[0055] 為了避免因瞬間的振蕩而錯誤地迀移,引