閆健恩 張宏莉 許海燕
摘要:隨著云計(jì)算平臺(tái)運(yùn)營(yíng)成本增加,對(duì)物力資源的利用率要求也越來(lái)越高。虛擬機(jī)放置方法是為虛擬機(jī)選擇合適的物理宿主機(jī)方法,其優(yōu)劣直接影響到宿主機(jī)資源利用的高低,進(jìn)而影響云計(jì)算平臺(tái)的運(yùn)營(yíng)成本。本文提出了一個(gè)基于負(fù)載優(yōu)化的虛擬機(jī)放置方法,利用CPU、MEM和硬盤的占用率作為資源負(fù)載的指標(biāo),描述系統(tǒng)的負(fù)載情況,采用“稱重”的方式,計(jì)算宿主機(jī)的資源利用情況,從而達(dá)到資源利用的最大化。實(shí)驗(yàn)表明,相較于OpenStack自帶的虛擬機(jī)調(diào)度方法,該方法在資源利用率方面有明顯提升。
關(guān)鍵詞:云計(jì)算:負(fù)載優(yōu)化;虛擬機(jī)放置
0引言
隨著云計(jì)算的普及應(yīng)用。虛擬化技術(shù)得到快速的發(fā)展。云計(jì)算中放棄使用價(jià)格昂貴的大型機(jī)而采用價(jià)格相對(duì)低廉的集群,使用虛擬化技術(shù)實(shí)現(xiàn)大型計(jì)算和提供基礎(chǔ)設(shè)施服務(wù)成為趨勢(shì)。KVM性能優(yōu)異、擴(kuò)展性好以及安全優(yōu)勢(shì)明顯,是目前相關(guān)領(lǐng)域選用較多的虛擬化平臺(tái)之一。不過(guò)由于運(yùn)營(yíng)成本不斷提升,人們對(duì)資源利用率的要求在不斷提高。如何將物理資源合理的規(guī)劃使用,減少物理服務(wù)器的使用量,降低運(yùn)營(yíng)與維護(hù)成本,提升資源利用效率是系統(tǒng)優(yōu)化資源配置的關(guān)鍵問(wèn)題。
將虛擬機(jī)分配到物理服務(wù)器中,其本質(zhì)是虛擬機(jī)放置問(wèn)題。在滿足虛擬機(jī)資源需求的前提下,如果能夠?qū)⒆銐蚨嗟奶摂M機(jī)放置在一個(gè)物理服務(wù)器中,那么每個(gè)物理設(shè)備的資源將得到充分的利用,從而減少物理服務(wù)器的使用。物理服務(wù)器使用量的減少,也必然帶來(lái)能量消耗等情況的降低,進(jìn)而降低云計(jì)算平臺(tái)的運(yùn)營(yíng)成本,保證平臺(tái)的可持續(xù)性發(fā)展。
1 相關(guān)研究工作
不少研究者對(duì)虛擬機(jī)放置問(wèn)題進(jìn)行了研究。并將其建模成裝箱問(wèn)題或多維裝箱問(wèn)題:箱子即為物理服務(wù)器,裝入的物品是運(yùn)行應(yīng)用服務(wù)的虛擬機(jī),虛擬機(jī)所用虛擬CPU、MEM、網(wǎng)絡(luò)帶寬等資源是物品的尺寸體積,箱子容量是物理服務(wù)器資源的使用閾值。如果物理服務(wù)器的數(shù)量為M,待放置虛擬機(jī)的數(shù)量為N,那么虛擬機(jī)放置到物理服務(wù)器上的解空間為MN。這是一個(gè)NP-Hard問(wèn)題。在多項(xiàng)式時(shí)間內(nèi)無(wú)法找到最優(yōu)解,所以大部分的研究工作都是通過(guò)近似算法找到一個(gè)近似最優(yōu)解。
在多維空間求解最優(yōu)值的策略中,主要有啟發(fā)式算法、進(jìn)化算法及群體智能算法。文獻(xiàn)[3]、文獻(xiàn)[4]和文獻(xiàn)[5]采用啟發(fā)式算法,從降低能量消耗的目標(biāo)研究了虛擬機(jī)放置的問(wèn)題,減少電力資源浪費(fèi)帶來(lái)的成本壓力;文獻(xiàn)[6]和文獻(xiàn)[7]利用啟發(fā)式算法研究了各種資源負(fù)載均衡在虛擬機(jī)放置問(wèn)題中的作用。文獻(xiàn)[8]采用遺傳算法對(duì)虛擬機(jī)放置方案的多目標(biāo)優(yōu)化問(wèn)題進(jìn)行了研究,并獲得了一定的成果。文獻(xiàn)[9]采用群體智能算法的蟻群算法,在考慮能耗和網(wǎng)絡(luò)總流量的前提下,研究了虛擬機(jī)放置問(wèn)題,也取得了良好的效果。
2 負(fù)載優(yōu)化的虛擬機(jī)放置算法
在進(jìn)行虛擬機(jī)放置時(shí)。僅僅考慮將虛擬機(jī)放置到哪個(gè)物理服務(wù)器中是不夠的,若處理方法過(guò)于簡(jiǎn)單,如隨機(jī)或順序等方法,只能完成基本的資源使用需求:如果方法過(guò)于復(fù)雜,屬性參數(shù)在實(shí)際應(yīng)用環(huán)境中又存在獲取困難的情況。因此,需要在有限的資源下,尋找合理可行的分配調(diào)度方案,實(shí)現(xiàn)資源使用效率和方法實(shí)用性的平衡。只有充分將已有資源有效利用,才可以減少基礎(chǔ)物理設(shè)備的消耗,降低運(yùn)營(yíng)成本,將服務(wù)能力最大化。
2.1 負(fù)載計(jì)算
基于KVM的虛擬化技術(shù)中,每個(gè)KVM虛擬機(jī)就是運(yùn)行在物理宿主機(jī)上的一個(gè)進(jìn)程,可以通過(guò)進(jìn)程使用的物理資源情況,衡量虛擬機(jī)對(duì)宿主機(jī)的負(fù)載影響。在本文的方法中,考慮實(shí)際情況的可操作性,選擇進(jìn)程的內(nèi)存占用率、CPU占用率和硬盤占用率作為主要的系統(tǒng)負(fù)載參考指標(biāo),這些數(shù)據(jù)可以隨時(shí)進(jìn)行采集,具備可操作性,當(dāng)為虛擬機(jī)分配物理資源時(shí),這三項(xiàng)指標(biāo)是重要配置參數(shù),直接影響到虛擬機(jī)的系統(tǒng)性能。
算法采用的負(fù)載計(jì)算定義為:
其中,μA、μB、μC分別為內(nèi)存、CPU和硬盤在定量計(jì)算時(shí)的占比;Rused、Rtotal分別為已用內(nèi)存總量、內(nèi)存總量;Cused、Ctotal分別為已用CPU總量、CPU總量;Dused、Dtotal為已用硬盤總量、硬盤總量;Li為物理宿主機(jī)i的負(fù)載。
利用上述負(fù)載計(jì)算方法,本文提出一種簡(jiǎn)便易行的基于資源優(yōu)化的虛擬機(jī)放置方法,每當(dāng)有虛擬機(jī)請(qǐng)求放置到物理宿主機(jī)上時(shí),便對(duì)每臺(tái)物理宿主機(jī)進(jìn)行“稱重”(weight calculating algorithm),即計(jì)算物理主機(jī)剩余資源總量與請(qǐng)求資源的差額,剩余資源與請(qǐng)求資源越接近,則被選擇的可能性越高。此處需解決資源的定量計(jì)算問(wèn)題。當(dāng)資源種類涉及內(nèi)存、CPU和硬盤等多種資源時(shí)定義,物理服務(wù)器的負(fù)載為:
其中,Rfree、Rreq、Rtotal分別為可用內(nèi)存總量、請(qǐng)求內(nèi)存大小、內(nèi)存總量;Cfree、Creq、Ctotal分別為可用CPU總量、請(qǐng)求CPU數(shù)、CPU總量;Dfree、Dreq、Dtotal分別為可用硬盤總量、請(qǐng)求硬盤大小、硬盤總量;μA、μB、μC分別為內(nèi)存、CPU和硬盤在定量計(jì)算時(shí)的比例系數(shù);wi為物理宿主機(jī)i稱重之后的計(jì)算結(jié)果。
2.2 虛擬機(jī)放置方法
進(jìn)行虛擬機(jī)調(diào)度時(shí),首先獲取虛擬機(jī)規(guī)格等信息。同時(shí),獲取各個(gè)物理主機(jī)的狀態(tài),主要包括物理主機(jī)的資源總量和剩余資源。
其次,使用過(guò)濾方法過(guò)濾配額不足的物理主機(jī),如果過(guò)濾后結(jié)果為空,說(shuō)明沒(méi)有適合放置的物理主機(jī),至此放置失敗,反之則對(duì)每個(gè)通過(guò)過(guò)濾的物理主機(jī)進(jìn)行稱重。稱重時(shí),分別對(duì)內(nèi)存、CPU以及硬盤計(jì)算資源差百分比,即物理主機(jī)剩余資源與請(qǐng)求資源的差值占總資源的百分比,再把上述計(jì)算結(jié)果分別乘以相應(yīng)的系數(shù)并相加得到稱重結(jié)果。本文中,內(nèi)存、CPU以及硬盤三者的系數(shù)分別為0.6、0.3和0.1,系數(shù)的取值主要考慮了以下因素:
(1)資源豐富程度。在實(shí)際情況,硬盤相較前兩者資源最為豐富,不易成為瓶頸,CPU的虛擬化程度較內(nèi)存更高,同時(shí)CPU切換的靈活性要高于內(nèi)存頁(yè)面的置換。因此從虛擬化的角度來(lái)看,相同情況下,CPU資源要富于內(nèi)存資源:
(2)實(shí)驗(yàn)結(jié)果。在多次實(shí)驗(yàn)測(cè)試中,觀察到該系數(shù)配比下,資源利用率達(dá)到了一個(gè)較高的水平,滿足實(shí)際需要。
最后。對(duì)稱重之后的物理主機(jī)列表進(jìn)行升序排序,選擇稱重結(jié)果最小的物理主機(jī)放置虛擬機(jī)。
3 實(shí)驗(yàn)分析
下面對(duì)上述方法進(jìn)行實(shí)驗(yàn),以測(cè)試該方法的可行性。測(cè)試中將本方法與OpenStack自帶的filter虛擬機(jī)調(diào)度算法進(jìn)行對(duì)比測(cè)試。
首先,使用5臺(tái)計(jì)算節(jié)點(diǎn)作為初始計(jì)算資源節(jié)點(diǎn),分別在5臺(tái)服務(wù)器中運(yùn)行一定的負(fù)載,模擬生產(chǎn)環(huán)境。初始服務(wù)的資源占用情況見(jiàn)表1.每臺(tái)物理主機(jī)節(jié)點(diǎn)配置為AMD 4core CPU、8GB RAM、1T GB硬盤,操作系統(tǒng)為Ubuntu Server 14.04,OpenStack的版本為Kilo。申請(qǐng)資源的虛擬機(jī)規(guī)格相同,都為1核CPU、1G內(nèi)存、10G硬盤。
分別對(duì)10個(gè)、20個(gè)虛擬機(jī)放置的情況,以及1-10個(gè)虛擬機(jī)進(jìn)行放置后的物理服務(wù)器負(fù)載情況進(jìn)行測(cè)試。虛擬機(jī)放置情況如圖1和圖2所示,虛擬機(jī)放置后物理服務(wù)器的負(fù)載按2.1節(jié)所給負(fù)載計(jì)算公式分別計(jì)算負(fù)載變化情況。兩種算法負(fù)載變化情況如圖3、圖4所示。
由圖1和圖2中可以看到。WCA方法在宿主機(jī)的資源利用上更好,使用的物理服務(wù)器數(shù)量少,而OpenStack自帶的filter調(diào)度方法更趨向于各個(gè)宿主物理服務(wù)器的負(fù)載相對(duì)均衡,這樣的結(jié)果雖然增加了物理資源的使用量,從而也導(dǎo)致資源利用率的降低。
由圖3和圖4的負(fù)載變化情況可知。優(yōu)化后的算法較原虛擬機(jī)調(diào)度算法負(fù)載變化情況更為穩(wěn)定,且資源利用更加集中。優(yōu)化算法中,物理主機(jī)負(fù)載平穩(wěn)提高,而原算法始終存在2臺(tái)主機(jī)負(fù)載并未發(fā)生變化。綜上所述,優(yōu)化算法基本達(dá)到預(yù)期要求。
4 結(jié)束語(yǔ)
虛擬機(jī)放置方法的優(yōu)劣直接影響到云計(jì)算平臺(tái)的資源利用率高低,高效的資源利用率會(huì)減少資源消耗,明顯降低平臺(tái)的運(yùn)行成本壓力,有利于平臺(tái)提供更好的服務(wù)能力。本文的方法雖然在提升宿主物理服務(wù)器資源利用上取得了一定的效果,但后續(xù)還要繼續(xù)研究其它因素對(duì)平臺(tái)資源負(fù)載的影響情況,例如網(wǎng)絡(luò)帶寬,網(wǎng)絡(luò)流量等。