陳曉博
國家廣播電視總局監測數據處理中心
虛擬化技術最初用于將不同的任務合并到同一節點中,以避免其部分物理服務器的利用率過低,虛擬化促進計算和存儲資源的整合,能耗效率進一步提高。同時,虛擬化計算也通過虛擬機遷移和快照計算,提供更加靈活的資源調度管理方式。虛擬機可以異構負載,如集群任務和Web應用等作為實例。從業務支撐的角度來看,數據中心可以通過虛擬化的數據中心為業務提供各類資源,也需要面對能源成本居高不下、虛擬化復雜度提高、高可用性和高性能的應用增多等問題。因此,如何降低數據中心的運行成本是亟待解決的問題。基于此,本文提出了一種虛擬化數據中心管理的新方法,在降低運行能耗成本的同時,根據功耗、冗余性、服務級別等多個方面對數據中心節點中的虛擬機進行分配。
虛擬化技術對能耗效率的調度,不限于靜態整合和關閉一些未使用的節點,虛擬機遷移可以將工作負載從一個未充分使用的節點動態地移動到另一個大部分已滿的節點。同時,虛擬化的遷移也帶來了一些開銷,例如,虛擬機創建和實例化、遷移、快照等增加的額外開銷。基于虛擬化的特點,本文提出了一個完整的數據中心節點間虛擬機調度策略,并根據其性質將其建模為能耗成本,該策略以運行成本最低為目標,尋求最優的虛擬機分配。
如何通過虛擬化技術實現數據中心的能耗成本控制是近期研究的熱點。首先,近年來,基于集群的系統電源管理已經在計算資源管理領域得到了解決,重點是在多處理器環境中應用能源優化技術,動態電壓/頻率縮放(DVFS)或關閉空閑服務器,也可以降低能耗,但可能會增加硬件故障和降低服務等級。其次,通過更智能的調度策略來動態關閉空閑機器,以降低總體消耗,也可以通過物理服務器底層的本地節點DVFS功能,根據負載自動改變頻率。最后,還可以通過管理共享服務器資源來降低總體能耗,分配不同服務器之間分配工作負載。對于典型的網絡潮汐式工作負載,可以將服務器的能耗減少20%。考慮到虛擬化開銷,采用虛擬機來執行異構的負載,通過支持虛擬機遷移和虛擬機布局優化來降低虛擬化數據中心的功耗,同時,減少人為干預。本文為管理虛擬化數據中心提供了一個整體的調度方案,綜合考慮了虛擬化開銷、節點的可靠性以及與數據中心運行相關的能耗優化模型。
本文提出的方法主要是通過虛擬化來降低整體的能耗,根據和業務流程相關的運行成本為虛擬化數據中心建模,包括:作業執行、打開或關閉虛擬機等典型流程以及虛擬機創建、遷移和快照等。
每個虛擬機分配都有一個能耗綜合評分,分值為在主機中虛擬機相關的所有單個業務和運行成本的總和。需要考慮不同類型的成本(時間、功率和能耗),所有這些單元都需要合并到一個公共單元中。
首先,調度必須檢查物理主機是否能夠分配虛擬機。這是通過評估虛擬機需求來實現的,虛擬機需求包括硬件操作系統類型、CPU、內存數量及應用軟件等。如果物理主機不可用,則設置為無窮大,在虛擬機調度中應避免將虛擬機放置到該主機中。其次,除了靜態需求之外,在分配新虛擬機之后,要檢查主機占用情況,來檢查添加新虛擬機之后主機是否有足夠的資源來執行所有業務,不可行的情況則丟棄。
虛擬機的運行需要考慮與執行任務相關的能源消耗和業務負載。當前,有根據執行時間執行給定虛擬機所運行的業務負載,還有與運行虛擬機相關的成本及維護基礎設施的成本。其中,虛擬機運行成本Cvar(h,vm)為可變值,基礎設施的成本為固定值Cfix(h)。
(1)可變成本:在物理主機中執行虛擬機的成本為能源消耗。給定主機的耗電量與其利用率成正比,計算給定主機中每個虛擬機的耗電量Cpwr(h,vm)。
(2)固定成本:與物理主機維護及機房維護相關的成本。
(1)創建開銷,即創建和啟動虛擬機,在準備運行任務之前所需的時間。(2)遷移開銷,是在兩個不同節點之間移動正在運行的虛擬機時產生的開銷。當需要在系統中啟動一個新的虛擬機時,在每個主機中創建和啟動時間被認為是一項成本。同時,也要考慮遷移虛擬機所需的時間,防止同一個虛擬機過于頻繁地移動。
此外,使用遷移懲罰函數Pm,根據用戶初始需求估計剩余執行時間,目的是懲罰那些剩余執行時間很短的虛擬機的遷移。定義:

其中,Tm為虛擬機遷移時間,Tr為虛擬機遷移剩余時間。
另一個因素是并發性,在同一時間執行多個操作會產生對CPU、內存和磁盤空間的競爭,將增加額外的開銷。對此,為每個主機計算一個并發懲罰,以計算是否已經在創建或遷移一個虛擬機。此成本應用于那些可以創建或移動到該節點的虛擬機。
虛擬化成本還要考慮虛擬機之間的依賴關系,如果某項業務想要部署應用程序服務器和數據庫,需要避免在不同的業務集群進行部署。使用虛擬機操作的這些成本是由額外時間Top帶來的,虛擬機在運行時意味著不同的成本。具體包括:(1)物理主機維護的固定成本。(2)主機在不在虛擬機運行業務負載的情況下使用的功率。(3)使用主機而不執行虛擬機承載業務的代價。則整體的消耗為:

如果知道在每個物理主機上執行每個虛擬機的業務負載和運行成本,則得到:

通過這個矩陣,可以找到對整個系統更低成本的組合。正數代表成本低,負數代表成本高。在對矩陣進行預處理后,從每次迭代中選擇代表整個系統的矩陣的最大值開始進行優化。在將相應的虛擬機移動到新的主機之后,矩陣得到新的分數,迭代直到成本矩陣沒有正值。然而,在虛擬機移動中總是存在不收斂的可能性,因此,每個調度周期的移動次數是有限的。當矩陣達到所有值均為負或零的狀態或移動次數達到給定限制時,假定已找到當前系統配置的次優解決方案。
一旦調度策略決定了每個虛擬機的物理主機分配關系,就需要使用虛擬化工具進行虛擬機的創建和遷移。如果虛擬機從未在系統中運行過,調度程序將調用所選節點來創建此虛擬機。如果給定的虛擬機已從一個節點移動到另一個節點,調度程序將要求當前執行節點將其遷移到新位置。此外,如果虛擬機在發生故障的節點中運行,則新的執行節點會嘗試從最近的快照進行恢復,如果沒有可用的快照,則會重新創建虛擬機。
為了實現包含要創建的新虛擬機或失敗的虛擬機的隊列,添加了一個特殊的主機,即虛擬主機,充當一個隊列,其中,未分配的虛擬機是臨時調度的,通過為該主機中的虛擬機分配一個無限的開銷來實現的,保留這些虛擬機而不進行實際分配的代價是最大的。
每個主機都有一個介于0~1的給定可用性系數,如果該可用性系數為90%或更小,則該可用性系數為0;如果節點始終處于運行狀態,即沒有故障,則該可用性系數為1。此外,本文的方法支持從快照恢復執行的功能。系統根據執行檢查點的收益率周期性地決定執行快照。首先,檢查VM是否是無狀態的,在這種情況下不執行任何快照,否則將檢查最后一個檢查點之后經過的執行時間,如果需要考慮執行快照所需的時間,將執行快照恢復。其次,為了完成恢復機制,當一個節點發生故障時,將在該主機上執行的虛擬機以無限的代價移動到虛擬主機。
當一個節點可以關閉以節省功耗,或者再次打開以用于完成任務服務等級時,這個決定是由維護一個節點的成本和兩個閾值驅動的:最小工作主機閾值和最大工作主機閾值。當工作節點的比率超過閾值,調度程序必須開始打開停止的節點。根據可靠性、啟動時間等參數選擇需要開啟的節點;當工作節點的比率低于此值時,調度器可以開始關閉節點。
本文提出的調度策略將在虛擬化數據中心上進行測試,虛擬化數據中心執行批處理作業,并承載各類工作負載。考慮虛擬化開銷,包括創建、遷移、快照、打開和關閉節點的能力以及功耗。為了模擬將要執行的應用程序的性能,本團隊使用了不同的CPU密集型任務來模擬工作負載,并使用測試工具Serverspec來模擬基于Web的應用程序。為了模擬服務器的性能,將上述模式分為3個階段:當工作負載導致CPU利用率低于60%時;當CPU利用率在60%~80%;當服務器過載時,即CPU利用率大于80%。
為了驗證模擬器的功耗,將一個真實的工作負載提交給一個引起不同情況的節點,并測量了CPU使用率和功耗。工作負載主要是編目業務中的語音識別批處理作業和業務系統的Web訪問服務組成的異構工作負載。批處理作業和Web應用服務具有由不同度量值的服務級別,例如,可用性,通常表示為正常運行時間百分比;性能通常由響應時間判定,以秒為單位。一旦知道服務等級被違反的時間百分比,就使用這個違反率作為輸入來確定服務等級懲罰。
實驗包括對一個具有30個節點的整個虛擬化數據中心的模擬。根據虛擬化開銷,數據中心配置為具有3種不同類型的節點,有10個快速節點,其虛擬機創建時間為20 s,遷移時間為30 s;10個中等節點,其創建時間為40 s,遷移時間為60 s;10個慢速節點,其創建時間為60 s,遷移時間為80 s。
本節將評估建議的調度策略,并在執行已引入的異構工作負載時將其與常見的調度技術進行比較。此評估考慮了不同的參數,如功耗、業務負載和運行節點數、服務質量。為了度量服務質量,使用了編目作業的隊列時間和Web應用程序使用響應時間,用于定義服務等級懲罰的度量。
本節評估處理虛擬化開銷的效果,靜態調度的結果如表1所示,其只在提交虛擬機時分配一個節點,而不移動。靜態策略是隨機分配任務,將任務分配給每個可用節點,因此,既意味一個任務的資源量最大化,也意味這些資源的利用率較低。此外,還評估了一個合并策略,試圖填充盡可能多的節點,物理主機的利用率較高,但其對服務的響應較慢;動態策略A只考慮硬件、軟件和資源需求、電源效率,不執行遷移,B策略通過考慮虛擬化開銷來擴展A,允許通過減少服務等級懲罰來獲得更好的收益,本團隊提出的策略C考慮了所有成本并包括遷移功能。結果表明,因為沒有考慮引入的虛擬化開銷,靜態策略的性能非常差,靜態合并策略試圖進行保守的整合,共完成89次遷移;但是C能夠通過執行891次遷移來降低運行成本。

表1 不同虛擬機遷移策略的調度結果
本文提出了一種利用虛擬化的調度策略,通過調度虛擬機節點來整合多個異構工作負載,并降低運行成本。該策略能夠考慮不同的成本,如硬件功耗、虛擬化開銷、遷移或創建以及由于低性能而導致的服務等級降低的懲罰等。同時,也考慮到了虛擬化的冗余配置,系統能夠恢復以前的任務執行進度,并減少在故障環境中所需的計算時間,使其更高效和可靠。實踐結果表明,相對于典型的策略,其可以有效降低運行成本,并在這些場景中提供能耗和業務效率的實質性改進。