蔣維成++李蘭英
摘要: 云計算環(huán)境中存在大量的計算資源,對這些資源進行合理的配置具有重要意義。該文對任務(wù)請求隊列設(shè)置兩個閾值,結(jié)合服務(wù)節(jié)點負(fù)載情況,提出了一種計算資源動態(tài)伸縮配置的方法。該方法能根據(jù)服務(wù)請求的任務(wù)數(shù)對計算資源進行自適應(yīng)配置,理論分析表明,在任務(wù)量增加時,算法能夠增加服務(wù)能力,避免用戶的服務(wù)請求長時間得不到響應(yīng),在任務(wù)量減少時,減少系統(tǒng)閑置資源,提高計算資源的高效利用,降低能量消耗。
關(guān)鍵詞:云計算;資源調(diào)度;數(shù)據(jù)中心
中圖分類號:TP393 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2016)26-0042-02
Cloud Computing Resource Dynamic Allocation Strategy
JIANG Wei-cheng, LI Lan-ying
(The Engineering & Technical College of Chengdu University of Technology, Leshan 614000, China)
Abstract: There are a lot of computing resources in the cloud computing. It is of great significance to make the allocation of the resources. In this paper, a method of the dynamic allocation of resources is proposed, which is based on the two thresholds of the task queue and the load of the node. The resources can be adapted according to the task. It can avoid excessive response time and idle resources, which improve the efficient use of resources and reduce energy consumption.
Key words: cloud computing; resource scheduling; data center
1 引言
云計算是一種新興的計算模式,它可以為用戶提供彈性的、規(guī)??梢陨炜s的計算資源[1-3]。在云計算中,存在大量的計算資源、存儲資源,使用虛擬化技術(shù)為用戶提供按需服務(wù)。云計算核心服務(wù)主要有基礎(chǔ)設(shè)施即服務(wù)(infrastucture as a service, IaaS),平臺即服務(wù)(platform as a service, PaaS)和軟件即服務(wù)(software as a service, SaaS)。IaaS進行硬件基礎(chǔ)設(shè)施部署,提供計算、存儲等相應(yīng)服務(wù)。PaaS提供應(yīng)用程序部署和管理服務(wù),使用者上傳程序代碼和數(shù)據(jù)就能獲得服務(wù),不必關(guān)心底層具體細(xì)節(jié)問題。SaaS提供基于互聯(lián)網(wǎng)的應(yīng)用程序服務(wù),用戶通過命令行、WEB服務(wù)或WEB門戶的形式獲取服務(wù)[4]。然而,WEB服務(wù)在高并發(fā)請求時,將出現(xiàn)響應(yīng)時間增加、服務(wù)器宕機等問題。
云計算中存在大量的服務(wù)節(jié)點,如何管理這些服務(wù)節(jié)點,保持服務(wù)資源的高效利用具有重要意義,在用戶服務(wù)請求急劇增加時,避免系統(tǒng)壓力過大,用戶的服務(wù)請求長時間得不到響應(yīng),而在任務(wù)量減少時,較多的服務(wù)節(jié)點處于空閑狀態(tài),造成資源的浪費、空耗電源。為了避免這種現(xiàn)象的發(fā)生,本文提出了基于用戶任務(wù)請求的服務(wù)資源動態(tài)配置策略。
2 相關(guān)研究
文獻(xiàn)[5] 運用虛擬技術(shù)在OpenStack上構(gòu)建云平臺,實現(xiàn)對多媒體緩存服務(wù)器進行伸縮管理。文獻(xiàn)[6] 采用OpenStack和Cloudify構(gòu)建自伸縮云應(yīng)用平臺,為用戶提供CPU、存儲空間和操作系統(tǒng)等資源服務(wù)。該系統(tǒng)根據(jù)需要虛擬和部署相應(yīng)服務(wù)來分擔(dān)請求任務(wù)。在服務(wù)請求下降時,減少應(yīng)用實例,回收多余的資源,根據(jù)虛擬機資源模板的標(biāo)度值建立模糊矩陣,進行相應(yīng)的處理和調(diào)度。文獻(xiàn)[7] 使用Nagios網(wǎng)絡(luò)監(jiān)視工具對服務(wù)器的性能指標(biāo)進行采集,包括CPU利用率、內(nèi)存利用率、磁盤利用率、進程數(shù)、交換空間利用率等,實現(xiàn)對云計算集群服務(wù)器的監(jiān)控和負(fù)載均衡的調(diào)度。文獻(xiàn)[8]指出,動態(tài)獲取OpenStack資源池的信息和資源池中運行節(jié)點的數(shù)量,收集云計算節(jié)點的CPU使用率、內(nèi)存利用率和網(wǎng)絡(luò)帶寬的使用情況,綜合所有節(jié)點的CPU負(fù)載情況來決定系統(tǒng)的負(fù)載是否過重。在數(shù)據(jù)中心負(fù)載過大時,開啟和增加服務(wù)節(jié)點來減輕系統(tǒng)的壓力,而在負(fù)載過低時,關(guān)閉部分節(jié)點,減少運行節(jié)點的數(shù)量,從而提高剩余節(jié)點的資源利用率,降低數(shù)據(jù)中心整體能耗。
國外研究統(tǒng)計表明Youtube網(wǎng)站和NASA網(wǎng)站的用戶訪問具有周期性,訪問的高峰是在傍晚時分,而在深夜到凌晨降到低谷。云計算中任務(wù)的請求具有一定周期性和規(guī)律性,這就為服務(wù)資源的動態(tài)配置提供了依據(jù)。
3 算法模型
本文算法模型如圖1所示,包括分析模塊、監(jiān)控模塊和分配模塊。監(jiān)控模塊負(fù)責(zé)監(jiān)控用戶的服務(wù)請求,并把服務(wù)請求依次放入任務(wù)緩沖隊列中,任務(wù)分配模塊從緩沖隊列中取出任務(wù),分配給各服務(wù)節(jié)點進行處理。分析模塊負(fù)責(zé)分析系統(tǒng)中各服務(wù)節(jié)點的運行情況、響應(yīng)時間的快慢、負(fù)載壓力等,并把分析結(jié)果報告給監(jiān)控模塊進行決策處理,決定是否增加還是減少服務(wù)節(jié)點,以保持系統(tǒng)資源合理配置,效率較高。
文獻(xiàn)[7]指出,服務(wù)節(jié)點負(fù)載輕重狀況的判斷主要有兩種方式:1)根據(jù)服務(wù)節(jié)點對任務(wù)響應(yīng)延時來判斷節(jié)點負(fù)載是否過重。2)根據(jù)服務(wù)節(jié)點的硬件綜合指標(biāo)來判斷節(jié)點的負(fù)載情況。對于相同的任務(wù),服務(wù)節(jié)點負(fù)載較輕時任務(wù)的響應(yīng)延時相差不大,而在負(fù)載較重時,響應(yīng)延時將有所增加。服務(wù)節(jié)點的CPU使用率、內(nèi)存利用率、交換空間利用率等較高時,節(jié)點處于繁忙狀態(tài),負(fù)載壓力較大,反之,則較為空閑。但如果簡單地憑借響應(yīng)延時或硬件指標(biāo)進行評價,可能存在片面現(xiàn)象。若將二者綜合考慮,將更加全面,也更加準(zhǔn)確。
服務(wù)節(jié)點硬件利用率上升到一定比例時,服務(wù)性能將會受到較大影響,性能下降、宕機等。監(jiān)控模塊需要了解各服務(wù)節(jié)點的負(fù)載情況,避免這類現(xiàn)象的發(fā)生。服務(wù)節(jié)點硬件的利用率,節(jié)點自身進行檢查和判斷,實現(xiàn)起來比較方便。當(dāng)服務(wù)節(jié)點檢測到自身硬件的利用率超過或低于某一閾值時,把本節(jié)點的檢測信息報告給監(jiān)控模塊。通過服務(wù)節(jié)點與監(jiān)控模塊的通信,監(jiān)控模塊就可以掌握系統(tǒng)中各節(jié)點的硬件利用情況。對于任務(wù)響應(yīng)延時由分析模塊來實現(xiàn)比較方便。分析模塊根據(jù)節(jié)點這一段時間內(nèi)的任務(wù)響應(yīng)數(shù)和上一段時間的任務(wù)響應(yīng)數(shù),就能分析出該服務(wù)節(jié)點的任務(wù)響應(yīng)延時增加了還是減少了,并把分析結(jié)果交給監(jiān)控模塊。監(jiān)控模塊結(jié)合節(jié)點的硬件利用情況,就能較好地作出判斷,節(jié)點的負(fù)載是過重,還是過輕,并統(tǒng)計系統(tǒng)中這類服務(wù)節(jié)點的數(shù)目。假設(shè)用Nb表示系統(tǒng)中負(fù)載較重的節(jié)點數(shù),Ns表示系統(tǒng)中空閑節(jié)點數(shù)。系統(tǒng)將根據(jù)數(shù)目的多少,采取相應(yīng)的處理措施。
根據(jù)云計算系統(tǒng)中當(dāng)前正在運行的服務(wù)節(jié)點數(shù)所提供的服務(wù)能力和任務(wù)數(shù)的多少,可以將二者之間的關(guān)系劃分為如下三種情況:1)服務(wù)能力過剩。此時工作的服務(wù)節(jié)點數(shù)量過多,存在資源浪費,可以關(guān)閉部分節(jié)點,節(jié)省能量消耗。2)服務(wù)能力嚴(yán)重不足。此時工作的服務(wù)節(jié)點數(shù)量較少,較多的任務(wù)得不到響應(yīng),應(yīng)增加服務(wù)節(jié)點來提高服務(wù)能力。3)服務(wù)能力基本符合要求。此刻整體服務(wù)能力雖然符合要求,可能存在部分服務(wù)節(jié)點壓力過大,而部分節(jié)點較為空閑,可以對壓力過大節(jié)點的負(fù)載遷移到空閑節(jié)點,實現(xiàn)負(fù)載均衡調(diào)節(jié)。
對于任務(wù)量的多少可以通過任務(wù)隊列中的任務(wù)數(shù)來進行確定。給任務(wù)隊列設(shè)置兩個閾值,一個是hmax,另一個是hmin,如圖2所示。當(dāng)任務(wù)隊列中的任務(wù)量超過hmax時,表示系統(tǒng)的任務(wù)過大,系統(tǒng)中服務(wù)能力不足。而當(dāng)任務(wù)隊列中的任務(wù)量低于hmin時,表示系統(tǒng)中的任務(wù)過少,系統(tǒng)服務(wù)能力過剩。對于任務(wù)隊列中的任務(wù),采用Xen中的Credit調(diào)度算法,按比例公平輪轉(zhuǎn)調(diào)度VCPU(Virtual Processing Unit)的方式把任務(wù)分配給各服務(wù)節(jié)點。為各服務(wù)節(jié)點建立一個子隊列,服務(wù)節(jié)點從各自的子隊列中取出任務(wù)進行處理。為了衡量分配給服務(wù)節(jié)點的任務(wù)量是否適中,為各子隊列設(shè)置兩個閾值Hbi和Hsi,當(dāng)分配給節(jié)點i的任務(wù)量超過子隊列的Hbi時,任務(wù)量過重,而當(dāng)分配給節(jié)點i的任務(wù)量少于子隊列的Hsi時,任務(wù)量過輕。
設(shè)用T表示任務(wù)隊列中任務(wù)量的多少,系統(tǒng)中重負(fù)荷節(jié)點數(shù)量超過閾值rb時將采取措施,閾值rs表示系統(tǒng)中空閑節(jié)點數(shù)量超過該值時將采取措施。下面分情況來討論服務(wù)資源的配置處理。
1)T>hmax 且Nb>rb時,任務(wù)隊列中存在大量待處理的任務(wù),同時,服務(wù)節(jié)點負(fù)載壓力過大的數(shù)量超過閾值rb,表明系統(tǒng)中較多的任務(wù)得不到服務(wù),整體服務(wù)能力嚴(yán)重不足,應(yīng)該增加服務(wù)節(jié)點數(shù)量來提高服務(wù)能力,避免任務(wù)長時間得不到響應(yīng)。
2)T>hmax 而Nb 3)T 4)T 5)T 6)T>hmin 而Ns 從上述分析可以看出,系統(tǒng)中任務(wù)量和服務(wù)能力之間的狀態(tài)關(guān)系是動態(tài)變化的,在采取相應(yīng)措施后,能夠?qū)崿F(xiàn)狀態(tài)之間的轉(zhuǎn)化,從而保持服務(wù)能力符合任務(wù)量的要求,達(dá)到服務(wù)資源的自動伸縮調(diào)節(jié)。 4 性能分析 云計算中服務(wù)能力過剩的那部分節(jié)點的運行,造成資源浪費、空耗能量、設(shè)備折舊加速,導(dǎo)致較大的經(jīng)濟損失,而服務(wù)能力不足時,造成用戶服務(wù)請求長時間得不到響應(yīng),用戶流失,也將造成相應(yīng)的經(jīng)濟損失。 假設(shè)系統(tǒng)中任務(wù)的到達(dá)是參數(shù)為[λ]的Poission過程,任務(wù)隊列的長度為L,系統(tǒng)中有n個服務(wù)能力為[μ]的服務(wù)節(jié)點,設(shè)任 (下轉(zhuǎn)第66頁) (上接第43頁) 務(wù)隊列的任務(wù)量在長時間內(nèi)的平均值為L/2,則有 [λt=nμt+L/2] 那么 [n=limt→∞λt-L/2μt=λμ] 設(shè)在任務(wù)量少于hmin時,僅需要的服務(wù)節(jié)點數(shù)量為m1個,那么可以減少的服務(wù)節(jié)點的數(shù)目為([λ/μ-m1])個,若每個服務(wù)節(jié)點運行的總費用為K1(元/分鐘),那么在T時間里,可以節(jié)省的開支為 [C1=(λ/μ-m1)K1T] (1) 若在任務(wù)量大于hmax時,需要的服務(wù)節(jié)點數(shù)為m2個,則增加服務(wù)節(jié)點數(shù)為([m2-λ/μ]),在時間T里,增多的這些服務(wù)節(jié)點的任務(wù)處理量為[(m2-λ/μ)μT]。設(shè)耽誤任務(wù)的處理損失為K2(元/單位任務(wù)量),那么可以減少的損失為
[C2=(m2μ-λ)K2T] (2)
從以上分析可以看出,本文方法能在任務(wù)量減少時,節(jié)?。?)式的成本,而在任務(wù)量增加時可以減少(2)式的損失。
5 結(jié)束語
云計算中資源合理地配置一直是研究的重點。如何保持計算資源的高效利用,降低系統(tǒng)中的整體能耗具有重要意義。本文分析云計算中任務(wù)的特點,采用節(jié)點響應(yīng)時間和硬件指標(biāo)來分析服務(wù)節(jié)點的負(fù)載情況,提出了根據(jù)隊列中的任務(wù)量和滿足特定條件的計算節(jié)點數(shù)來對計算資源動態(tài)增加和減少的控制策略。該方法易于實現(xiàn)、方便有效,有利于提高云計算中服務(wù)節(jié)點的效能,為建設(shè)綠色云計算數(shù)據(jù)中心服務(wù)。
參考文獻(xiàn):
[1] 薛濤, 劉龍. 云計算中虛擬機資源自動配置技術(shù)的研究[J]. 計算機應(yīng)用研究, 2016, 33(3): 759-764.
[2] 林利, 石文昌. 構(gòu)建云計算平臺的開源軟件綜述[J]. 計算機科學(xué), 2012, 39(11): 1-7.
[3] 王晶, 方偉, 陳靜怡, 等. 云計算環(huán)境下的自適應(yīng)資源管理技術(shù)綜述[J]. 計算機工程與設(shè)計, 2012, 33(6): 2128-2132.
[4] 羅軍舟, 金嘉暉, 宋愛波, 等. 云計算:體系架構(gòu)與關(guān)鍵技術(shù)[J]. 通信學(xué)報, 2011, 32(7): 3-19.
[5] YANG J W, KIM S H, LEE S D,et. Design of a next generation D-CATV cloud platform based content service integration system using virtualization technology[C].//Proceedings of the 2011 International Conference on Information Science and Applications, Washington DC: IEEE Computer Society, 2011: 1-6.
[6] 裴超, 吳穎川, 劉志勤, 等. 基于OpenStack和Cloudify的自伸縮云平臺體系[J]. 計算機應(yīng)用, 2014, 34(6): 1582-1586.
[7] 董波, 沈青, 肖德寶. 云計算集群服務(wù)器系統(tǒng)監(jiān)控方法的研究[J]. 計算機工程與科學(xué), 2012, 34(10): 68-72.
[8] 李丹程, 王曉晨,宋曉雪, 等. 基于OpenStack的資源負(fù)載預(yù)測方法研究[J].計算機應(yīng)用研究, 2014, 31(7): 2178-2182.