亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        云計算環(huán)境中虛擬機內(nèi)存自適應調節(jié)算法研究*

        2017-01-18 08:15:17王德勝張偉哲魯剛釗白恩慈
        計算機與生活 2017年1期
        關鍵詞:空閑負載量內(nèi)存

        王德勝,張偉哲,郝 萌,魯剛釗,白恩慈

        哈爾濱工業(yè)大學 計算機科學與技術學院,哈爾濱 150001

        云計算環(huán)境中虛擬機內(nèi)存自適應調節(jié)算法研究*

        王德勝,張偉哲+,郝 萌,魯剛釗,白恩慈

        哈爾濱工業(yè)大學 計算機科學與技術學院,哈爾濱 150001

        WANG Desheng,ZHANG Weizhe,HAO Meng,et al.Research of adaptive virtual machine memory scheduling algorithm in cloud computing environment.Journal of Frontiers of Computer Science and Technology,2017, 11(1):70-79.

        Xen虛擬機;swap空間;內(nèi)存調度算法

        1 引言

        隨著互聯(lián)網(wǎng)時代的發(fā)展,云計算已經(jīng)發(fā)展成大范圍全局資源的池化、分配調度和管理監(jiān)控,通過網(wǎng)絡提供給用戶動態(tài)易擴展且經(jīng)常是虛擬化的資源,可以讓用戶體驗超強的運算能力[1]。虛擬化技術的應用是將計算機的實體資源分開使用,重新呈現(xiàn),虛擬機就是虛擬化應用的代表作。其中,Xen虛擬機憑著獨特的虛擬化性能優(yōu)勢得到社會的廣泛應用[2],主要應用于服務器應用整合、軟件開發(fā)測試和集群運算等。

        在學習工作過程中虛擬機的使用很多,用戶實際使用時會發(fā)現(xiàn),有的虛擬機會運行大量程序而使內(nèi)存負載較大[3]。如果負載量大于事先設定的內(nèi)存量,此時虛擬機會去使用swap而造成系統(tǒng)工作效率降低,而有的虛擬機運行進程較少,進而內(nèi)存比較空閑。從全局的角度來看,內(nèi)存有浪費現(xiàn)象,所有虛擬機的內(nèi)存并沒有得到很好的利用而使實際工作效率降低。在一臺物理主機上運行多臺虛擬機時,由于虛擬機在創(chuàng)建之初內(nèi)存資源就已經(jīng)是固定值了,當虛擬機由于運行進程太多而出現(xiàn)內(nèi)存使用不足的情況時,可以設計合理的內(nèi)存調度算法實現(xiàn)將其他虛擬機空閑內(nèi)存分配到該虛擬機中,避免虛擬機使用swap空間。當所有虛擬機負載量高出總內(nèi)存量,調節(jié)使各個虛擬機也能夠分配到相應的內(nèi)存,提高整體虛擬機運行時使用效率。這樣不僅可以提高虛擬機的運行效率,還可以更加合理地利用整體物理資源。

        顯然,虛擬機內(nèi)存靜態(tài)分配不夠合理,要實現(xiàn)動態(tài)的內(nèi)存分配系統(tǒng),需要考慮兩個問題:一是正確使用內(nèi)存調度的開發(fā)平臺,本文研究的是Xen虛擬機,這個平臺提供了氣球驅動機制,能夠穩(wěn)定地完成內(nèi)存調度任務;二是在多虛擬機運行時,各個虛擬機之間要有合理完善的內(nèi)存調度策略。

        本文從這兩個問題進行討論,重點關注內(nèi)存調度算法的設計。目前已經(jīng)有很多關于內(nèi)存調度算法的研究,其中Zhang等人提出的虛擬機內(nèi)存調度算法是本文研究和比對的對象[4]。該算法得出了一個當總內(nèi)存能夠滿足總負載情況下的內(nèi)存分配策略,但由于算法中沒有考慮到swap空間的使用情況而使得調節(jié)過程變長,降低調節(jié)效率。同時該算法還忽略了總內(nèi)存不能滿足總負載的情況,這種情況下,調節(jié)結果會導致部分虛擬機內(nèi)存調節(jié)越來越偏離合理值,且swap使用情況越來越大,也會導致部分虛擬機會因為分配內(nèi)存太少而使得系統(tǒng)進程被殺死,出現(xiàn)死機情況。本文在Zhang的算法上,設計一個更加合理全面的內(nèi)存調度算法,將swap使用情況作為算法計算的考慮因素之一,同時綜合考慮總內(nèi)存滿足和不滿足總負載兩種情況。

        本文探討在Xen虛擬機中多虛擬機運行時的內(nèi)存調度算法。第2章介紹多虛擬機內(nèi)存調度系統(tǒng)的相關設計與實現(xiàn);第3章介紹內(nèi)存調度算法;第4章分析系統(tǒng)實驗結果;最后,總結全文。

        2 系統(tǒng)實現(xiàn)原理

        下面主要介紹多虛擬機內(nèi)存分配系統(tǒng)的相關技術和實現(xiàn)原理。

        2.1 Xen虛擬機系統(tǒng)介紹

        Xen Project包括Xen Hypervisor[5-9]。Xen Hyper-visor(即Xen的virtual machine monitor,VMM)位于操作系統(tǒng)和硬件環(huán)境之間,負責為上層運行的操縱系統(tǒng)內(nèi)核提供虛擬化的硬件資源,為上層創(chuàng)建的虛擬機,也叫作域,提供相互隔離的物理資源環(huán)境。Hypervisor中并不包含任何與硬件對話的驅動,也沒有與root或管理員對話的接口,因此通過賦予Domain0特權調用這些驅動來管理操作Hypervisor,這樣就可以通過Domain0來調用Xen創(chuàng)建虛擬機(DomainU)的命令,從而創(chuàng)建其他虛擬機。另外Domain0中會載入xend進程,有管理DomainU的權限,提供DomainU的控制臺訪問權限,在創(chuàng)建虛擬機的過程中會直接與Domain0控制臺對話并進行配置。

        2.2 氣球驅動機制

        氣球驅動機制這一概念最早是Carl在VMware ESX Server中提出并使用[10],后來沿用到Xen中,氣球驅動機制提供了調節(jié)虛擬機內(nèi)存的功能[11]。

        在整個氣球驅動過程中有充氣(inflate)和放氣(deflate)兩個過程。圖1所示為氣球驅動原理。

        Fig.1 Mechanism of Xen balloon driver圖1 氣球驅動機制原理

        圖1中給虛擬機VM1和VM2確定了初始內(nèi)存,在運行過程中由于系統(tǒng)自調節(jié)或者Domain0控制Hypervisor進行內(nèi)存調節(jié),要將VM1的內(nèi)存頁面分配給VM2,首先Hypervisor向VM1發(fā)出獲取內(nèi)存頁面的請求,通過后,運行在VM1中的氣球驅動程序會進行充氣操作,獲取內(nèi)存頁面,將頁面交付給Hypersivor;然后Hypervisor向VM2發(fā)出釋放內(nèi)存頁的請求,通過之后,進行放氣操作,將內(nèi)存頁面分給VM2,這樣VM2就可以使用分配到的內(nèi)存頁面。Hypersivor獲取頁面時就已經(jīng)做了處理,可以放心地釋放給需要的虛擬機來使用。

        2.3 XenStore

        XenStore是在Domain之間的一種分等級的共享命名空間[12]。系統(tǒng)設計過程中將利用這一技術,對XenStore進行文件讀寫操作,在此過程中需要用到系統(tǒng)提供的接口函數(shù),這樣就可以在虛擬機使用過程中存儲各個虛擬機的信息。在本文研究中會重點利用XenStore,其中/local/domain目錄下就存儲著每個domain的本地信息,也可以向該目錄下讀寫數(shù)據(jù),這樣可以獲取各個虛擬機在運行過程中的內(nèi)存使用情況。

        2.4 Libxenctrl

        Libxenctrl是系統(tǒng)提供的C語言函數(shù)接口,該函數(shù)接口提供了很多功能,可以直接調用氣球驅動完成虛擬機內(nèi)存分配。列舉幾個有關的接口函數(shù):xc_ interface_open()和xc_interface_close()分別是開啟和關閉一個叫作xc_handle的句柄;xc_domain_set_maxmem()是設置虛擬機最大內(nèi)存;xc_domain_set_pod_ target()是設置虛擬機目標內(nèi)存。

        2.5 proc文件系統(tǒng)

        /proc[13]是非常特殊的虛擬化文件系統(tǒng),它并不包含真正的文件,而是存儲記錄系統(tǒng)運行時的信息,比如系統(tǒng)內(nèi)存信息、設備掛載信息、硬件配置等。因此,/proc可以被視為內(nèi)核服務的控制和信息中心。其中/proc/meminfo文件是負責記錄物理內(nèi)存和swap空間使用信息的,像內(nèi)存的空閑空間MemFree、總內(nèi)存MemTotal、交換空間SwapFree和SwapTotal,以及被內(nèi)核使用的buffer和cache等[14]。

        2.6 Swap性能

        Linux系統(tǒng)中的swap空間類似于Windows的虛擬機內(nèi)存,當系統(tǒng)內(nèi)存不足時,swap空間的功能是將磁盤虛擬成內(nèi)存來使用,將內(nèi)存中暫時不用的數(shù)據(jù)或命令移交到swap空間中,但是會有大量的I/O消耗,使系統(tǒng)性能有所降低。盡管swap空間可以作為虛擬的內(nèi)存來使用,但是速度卻遠不及物理內(nèi)存。本文論述目的之一就是讓虛擬機分得足夠的內(nèi)存,從而避免使用swap空間造成不必要的消耗。

        2.7 多虛擬機內(nèi)存分配管理系統(tǒng)

        系統(tǒng)架構如圖2所示,系統(tǒng)分為服務器端、虛擬機端和網(wǎng)頁端。主要的功能實現(xiàn)是在服務器端和虛擬機端,網(wǎng)頁顯示端只是將虛擬機的內(nèi)存信息顯示出來。

        Fig.2 Automatic memory control system圖2 內(nèi)存分配管理系統(tǒng)

        虛擬機端,主要負責從/proc/meminfo中收集內(nèi)存和swap數(shù)據(jù)來說明虛擬機的內(nèi)存狀態(tài),其中空閑內(nèi)存=MemFree+Buffers+Cached。獲取數(shù)據(jù)之后就可以將數(shù)據(jù)寫入到Xenstore下的對應目錄中,這樣服務器端就可以從中獲取數(shù)據(jù)。

        服務器端,是整個系統(tǒng)的核心,里面包含著內(nèi)存數(shù)據(jù)計算機構以及內(nèi)存執(zhí)行機構。前者是從Xen-Store下的對應目錄中獲取所有的虛擬機內(nèi)存數(shù)據(jù),根據(jù)設計的內(nèi)存調節(jié)算法,根據(jù)虛擬機這一時刻的內(nèi)存情況,計算出虛擬機下一時刻的目標內(nèi)存。而后者就是為了調節(jié)所有虛擬機的內(nèi)存,爭取下一時刻到達算法計算出的目標內(nèi)。

        3 多虛擬機內(nèi)存分配管理系統(tǒng)內(nèi)存調度算法描述

        現(xiàn)在已經(jīng)有很多關于內(nèi)存調度算法的研究[15-20],本文提出的多虛擬機內(nèi)存調度算法思想來自Zhang等人提出的調度算法[4],但是經(jīng)過推敲發(fā)現(xiàn)該算法的不足之處,進而做出修改得出更加合理完善的算法。表1為算法中的變量定義。

        Table 1 Summary of key notations表1 變量定義

        Zhang的算法如下:

        式中變量A的原始意義是系統(tǒng)負載量的大小,然而沒有考慮到swap信息是不合理的,因為內(nèi)存不足使用swap的部分也是系統(tǒng)負載的一部分,也應當計算在A內(nèi)。另外這個算法的思想不夠全面,只能應用于系統(tǒng)總負載小于系統(tǒng)總內(nèi)存的情況。

        為了簡化設計過程,沿用了式(1)中的一些變量,但是虛擬機的負載量重新定義為內(nèi)存使用量與swap使用量之和。在虛擬機實際運行中,根據(jù)不同的內(nèi)存使用情況可以分為兩種情況:總內(nèi)存量能夠滿足總負載量和總內(nèi)存量不能滿足總負載量。

        3.1 總內(nèi)存滿足總負載

        公式前半部分是固定的數(shù)據(jù),也就是將所有內(nèi)存按運行虛擬機數(shù)量進行均等分配;后半部分是關于每臺虛擬機總負載量與平均負載量的差值的線性函數(shù);參數(shù)τ是這個函數(shù)的關鍵。公式右邊的所有數(shù)據(jù),比如Ti,以采集到數(shù)據(jù)的時間為標準,以調節(jié)周期為時間單位,Ti是0時刻的數(shù)據(jù)。而公式左邊的Nti是1時刻的數(shù)據(jù),也就是說,左邊的運算結果是虛擬機下一時刻的目標內(nèi)存。

        3.1.1 虛擬機可行域范圍和τ的關系

        在總內(nèi)存滿足總負載量的情況下,系統(tǒng)調節(jié)的目標是使得虛擬機分配得到的目標內(nèi)存能夠滿足負載量,因此只需要滿足:

        當總內(nèi)存量能夠滿足總負載量時,針對式(1),令Ai=Ti,其中Ti=Si+Ai,也就是將swap使用量算入虛擬機真正的進程負載量,如式(2):

        也就是:

        不等式中有τ和Ti未知量,是由Ti組成的變量。為了方便討論,假設n=2,這樣只需要滿足:

        τ在不等式中決定T1和T2的使用范圍,通過圖3可以觀察到在不同τ下的虛擬機內(nèi)存的可行解。

        Fig.3 Relationship betweenτand memory圖3 τ值和內(nèi)存可行域的關系

        橫縱坐標分別為T1和T2。線段下方代表在該τ值下,兩臺虛擬機的內(nèi)存只要保證這樣的狀態(tài)就不會使用swap空間。如果內(nèi)存狀態(tài)達到線段上方,此時虛擬機會使用swap空間而造成內(nèi)存浪費現(xiàn)象。

        τ<0的情況沒有意義,會讓最大目標內(nèi)存小于0;τ>1的情況也是沒有意義的,這會過度放大負載量與平均負載量的差值。當總負載量過高,而某臺虛擬機負載量很低,會導致分配目標內(nèi)存小于0,或者某臺虛擬機負載量很高,會導致分配目標內(nèi)存大于總負載,這些情形都是不合理的。因此參數(shù)τ∈[0,1]。

        3.1.2 空閑內(nèi)存的討論

        系統(tǒng)調節(jié)的目標是讓虛擬機可用內(nèi)存達到不使用swap空間,對于調節(jié)后的空閑內(nèi)存進行如下討論。

        這里假設運行n臺虛擬機,任意比較兩個虛擬機調節(jié)之后的空閑內(nèi)存大小。假設編號為a和b的兩臺虛擬機,借助空閑內(nèi)存公式比較Fa和Fb,則有:

        化簡,可得:

        由于τ∈[0,1],結果也正如上面討論的那樣,F(xiàn)i∝-Ti。從空閑內(nèi)存相減的結果中可以看到,如果虛擬機a正是負載量最大的虛擬機m,則結果如下:

        因此從結果中可以看出,負載量最大的虛擬機在經(jīng)過調節(jié)后,分得的空閑內(nèi)存最小。

        3.1.3 動態(tài)τ的使用

        首先在可行域討論中,只有τ=1時可以滿足虛擬機在總內(nèi)存范圍內(nèi)進行內(nèi)存調節(jié);其次當τ=1時,從調節(jié)結果上來看,是將所有的空閑內(nèi)存平均分配到每個虛擬機中,這是一種盲目分配的行為,當系統(tǒng)能夠正常工作時要盡可能減少調節(jié)內(nèi)存的動作。

        綜合考慮這些,在調節(jié)過程中使用動態(tài)τ進行內(nèi)存調節(jié)。

        理論上系統(tǒng)調節(jié)的要求要使得每臺虛擬機調節(jié)之后的空閑內(nèi)存量大于0,這樣調節(jié)的結果能夠使虛擬機不使用swap空間。但在實際系統(tǒng)中,并不是當可用內(nèi)存減少到0時才去使用swap空間,當可用內(nèi)存少于某個值時,系統(tǒng)就會去使用swap。這里不對具體空閑內(nèi)存降到什么程度才去使用swap做深究。假設虛擬機調用swap空間前的最小空閑內(nèi)存為f,只需要保證一個值f′≥f,保證所有虛擬機調節(jié)目標內(nèi)存中空閑內(nèi)存不少于f′,要求滿足Fi>f′。以此為條件,討論參數(shù)τ。

        系統(tǒng)調節(jié)之后虛擬機的空閑內(nèi)存Fi=Nti-Ti,為了滿足以上條件,則有:

        分析公式結構易得當最大的負載Tm滿足即可:

        化簡后,取臨界條件,如式(4):

        從上述內(nèi)容得知,內(nèi)存調節(jié)范圍隨著τ值增大而增大,負載量最大的虛擬機在最終分配的目標內(nèi)存最大,并且空閑內(nèi)存最小。在調節(jié)過程中,當內(nèi)存申請最大的虛擬機仍然有不少于f′的空閑內(nèi)存,按公式計算會有τ<0,此時強制使τ=0,即是將總內(nèi)存均等分配到各個虛擬機,比較合理。等到最大負載量達到使空閑內(nèi)存不大于f′時,τ值就可以根據(jù)公式計算得到,并進行調節(jié)。調節(jié)之后,負載量最大的虛擬機會調整到空閑內(nèi)存為f′,而其他虛擬機可以分配到更多的空閑內(nèi)存。當負載量最大的虛擬機經(jīng)過調節(jié)后空閑內(nèi)存不能達到f′,此時會使得τ=1,將可用內(nèi)存進行均等分配。因此f′在調節(jié)過程中決定著內(nèi)存調節(jié)的一些特殊情況的切換時刻。

        3.2 總內(nèi)存不滿足總負載

        對于總負載量高于總內(nèi)存的情況,需要知道無論怎么分配系統(tǒng)都會去調用swap空間,因為系統(tǒng)無法超越實際資源的局限。

        算法設計需要保證兩點:一是保證每個虛擬機分配到最小內(nèi)存,也就是在算法上設定分配目標內(nèi)存最小值,以供系統(tǒng)進程運行;二是保證最小內(nèi)存以外的內(nèi)存都被使用,不能有空閑內(nèi)存。

        利用上面的算法處理總內(nèi)存不能滿足系統(tǒng)負載時,會出現(xiàn)負載量低的虛擬機顯示系統(tǒng)進程被殺死而進入死機狀態(tài),因此要保證一個最小內(nèi)存x運行系統(tǒng)程序。這個最小值跟上面的人工預留內(nèi)存f相似,此處不需要它的具體數(shù)字,只需要保證在實際使用中確定一個參數(shù)x′>x。在實驗操作中x′取150 MB。

        算法的思路是,在獲取虛擬機內(nèi)存和swap空間使用信息之后,進過上述算法計算,如果出現(xiàn)分配目標內(nèi)存不能達到x′的虛擬機,從所有虛擬機的總內(nèi)存Ni中扣除x′內(nèi)存信息,并且是當作已用內(nèi)存來扣除。假設扣除之后的虛擬機內(nèi)存為,即:

        這使得Ti減少了x′,同時也改變了總內(nèi)存N。假設所有虛擬機扣除之后的總內(nèi)存為N′,則有:

        然后將改變之后的數(shù)據(jù)帶入式(2)中進行計算,得式(5):

        這種情況下,虛擬機對內(nèi)存可行域要求是全域可行的,因此要求τ=1。其實此時τ=1,導致的分配結果是所有虛擬機會使用相同大小的swap空間,從而使得負載量較小的虛擬機獲得理論目標內(nèi)存為負。為了解決這一問題,將目標內(nèi)存為負的虛擬機內(nèi)存置0,然后讓所有為負的內(nèi)存作為債務,利用τ=1的分配思想,讓其他分配目標為正的虛擬機來還。還的思想是不斷地平均分配債務給這些虛擬機,過程中會遇到“還不起”的虛擬機,則直接將其結果置為0,繼續(xù)將債務平均分到剩余各個虛擬機中,直至還完。這樣處理結束之后,會保證所有虛擬機的分配內(nèi)存。最后Nti≥0分配內(nèi)存再加上之前扣除的x′,即:

        就可以保證所有虛擬機的目標內(nèi)存:

        在上述算法實現(xiàn)過程中,x′是最小目標內(nèi)存衡量標準。在總內(nèi)存不能滿足總負載時,如果某臺虛擬機不開啟任何負載進程,內(nèi)存調節(jié)系統(tǒng)為其分配不少于x′的內(nèi)存,可能系統(tǒng)實際使用的內(nèi)存比分配得到的目標內(nèi)存要小而導致有空閑空間。不過在實驗中發(fā)現(xiàn),取x′為150 MB時,盡管有這種情況發(fā)生,造成的空閑空間也是非常少的,可以忽略不計。因此算法保證了系統(tǒng)在內(nèi)存分配過程中內(nèi)存都被使用,沒有空閑內(nèi)存,同時也保證了每個虛擬機的最小目標內(nèi)存。

        4 實驗結果與分析

        4.1 實驗方案

        實驗主要測試多虛擬機內(nèi)存調節(jié)算法相比較之前算法在功能和性能上的提升,創(chuàng)建10臺虛擬機供實驗測試。實驗前給每臺虛擬機設定相同初始內(nèi)存和最大內(nèi)存,在初始化虛擬機內(nèi)存時將每臺虛擬機都設置成統(tǒng)一值,方便實驗數(shù)據(jù)對總內(nèi)存的管理和計算。同時也要為每個虛擬機設置最大內(nèi)存,這個可以根據(jù)實驗預期的結果進行設定。在啟動服務器端內(nèi)存調節(jié)程序時,會輸入總內(nèi)存N和人工預留內(nèi)存f′兩個參數(shù)。

        利用這些虛擬機,在功能方面設計了有效性測試實驗,主要是模擬虛擬機實際使用過程中遇到的內(nèi)存使用情況,設計的實驗如下。

        4.1.1 mono實驗

        mono測試就是根據(jù)輸入?yún)?shù)[low,high],系統(tǒng)負載量從low開始進行申請,之后每隔相同時間等量遞增負載量,直到負載量為high,之后負載量從high開始釋放,每隔相同時間等量釋放,直到負載量為low結束,其中l(wèi)ow<high。

        4.1.2 靜態(tài)負載實驗

        靜態(tài)負載測試是通過人工操作在不同的虛擬機上申請負載,從而模擬虛擬機使用過程中遇到的各種內(nèi)存使用情況,整理內(nèi)存調節(jié)過程中各個虛擬機內(nèi)存的變化。該實驗是與之前算法實驗結果進行比對,觀察新算法在功能上的提升,設計了幾組比對情景。

        另外,還設計性能檢測實驗測試系統(tǒng)運行時的性能,主要利用DaCapo測試集來比較兩個算法的優(yōu)劣性。

        4.1.3 DaCapo實驗

        DaCapo測試集專門用于測試編程語言[21]、內(nèi)存管理和系統(tǒng)結構,由一些開源的真實應用程序組成,運行時進行一些非正常的負載手段。DaCapo測試集開發(fā)至今,已經(jīng)有了一些版本,本實驗用的DaCapo測試集版本是9.12-bach。這個jar包中包含的測試程序,根據(jù)測試類型可分為內(nèi)存測試型、磁盤測試型和CPU測試型。其中內(nèi)存型測試程序有h2、tradebeans、tradesoap;磁盤型測試程序有eclipse、luindex;CPU型測試程序有avrora、fop、jython、lusearch、pmd、sunflow、tomcat和xalan。實驗中將運行所有測試程序,所得測試結果是各個測試程序運行指定次數(shù)需要的時間,運行多次的目的是將同一項測試程序的結果取平均數(shù),測得的結果更可靠,以時間消耗反應系統(tǒng)對應性能狀態(tài)。

        4.2 功能有效性測試

        功能測試時首先設計mono測試來驗證內(nèi)存調度算法的功能有效性,然后用靜態(tài)負載實驗與之前算法實驗進行比對。

        4.2.1 mono測試

        這個實驗僅僅是為了驗證本文算法的功能有效性。實驗配置如表2所示。在Domain0上運行調節(jié)程序,在虛擬機上運行內(nèi)存采集程序,在VM1中運行mono測試程序,并觀察實驗結果。本實驗中令low= 50 MB,high=500 MB。

        Table 2 Experiment configuration表2 實驗配置

        實驗結果如圖4所示,從VM1的內(nèi)存變化曲線中可以看到,一開始mono增加內(nèi)存負載時,VM1內(nèi)存并沒有變化,而是當空閑內(nèi)存達到預留值時,才開始進行改變,此時從VM2中分得空閑內(nèi)存,而VM2的內(nèi)存也因此改變。從兩臺虛擬機的實驗結果可以得出結論,模擬接近真實環(huán)境的動態(tài)負載量,內(nèi)存調節(jié)系統(tǒng)對于內(nèi)存的調節(jié)結果和預期一致,能夠合理地為虛擬機動態(tài)分配內(nèi)存。

        Fig.4 Automatic memory curve of two VMs圖4 虛擬機內(nèi)存變化曲線

        4.2.2 靜態(tài)負載測試

        這個實驗是為了比對在不同內(nèi)存使用情況下,新舊兩種調節(jié)程序的調節(jié)情況。

        情景1調節(jié)程序啟動后,在一臺虛擬機VM1中運行800 MB負載,實驗配置如表3所示,圖5是觀察的VM1的數(shù)據(jù)。

        Table 3 Experiment configuration表3 實驗配置

        Fig.5 Automatic memory curve of VM1圖5 VM1數(shù)據(jù)變化曲線

        情景2調節(jié)程序啟動后,依次在10臺虛擬機中運行1 GB負載程序實驗配置如表4所示。在實驗中以前的算法不能做出分配而導致實驗失敗,而圖6是觀察本文內(nèi)存調度算法中每臺虛擬機的內(nèi)存數(shù)據(jù)變化曲線。

        Table 4 Experiment configuration表4 實驗配置

        綜合這兩個實驗,可以得出兩個結論:(1)情景1的實驗結果顯示,負載程序啟動后,在內(nèi)存方面,新算法能夠更快地調整到目標內(nèi)存;在swap使用方面,新算法能夠更短時間且更少地使用swap空間,這都說明了新算法提升了多虛擬機內(nèi)存調節(jié)系統(tǒng)的調節(jié)效率。(2)情景2的實驗更有說服力,舊算法不能對情景2進行處理,因為此時負載量已經(jīng)超出總內(nèi)存;而新算法仍然能夠進行合理的內(nèi)存分配。雖然看到最終每臺虛擬機有幾乎相近的swap使用量,那是因為總負載超出總內(nèi)存的部分必須要swap空間來補給,并且這個swap使用量的結果也是非常合理的,說明新算法更加全面,不管總內(nèi)存能否滿足負載,系統(tǒng)都能合理穩(wěn)定地為虛擬機分配內(nèi)存。

        Fig.6 Automatic memory curve of 10 VMs圖6 10臺虛擬機數(shù)據(jù)變化曲線

        4.2.3 DaCapo測試

        這個實驗是為了檢測新的調節(jié)算法是否能減少DaCapo的測試時間。

        實驗使用了5臺虛擬機,每臺初始內(nèi)存為1 GB,實驗配制如表5所示。為了檢驗內(nèi)存調節(jié)系統(tǒng)對于物理主機性能提升的幫助,將對是否開啟內(nèi)存調節(jié)系統(tǒng)兩種情況進行比較。至于負載量的選擇,由于低負載狀態(tài)并沒有涉及太多內(nèi)存調節(jié)過程,進行實驗的話沒有意義,實驗中會選擇讓虛擬機處于高負載狀態(tài)進行測試,因為該狀態(tài)會有頻繁調節(jié)過程。再分別測試在兩種內(nèi)存調度算法下的系統(tǒng)性能。

        Table 5 Experiment configuration表5 實驗配置

        實驗過程中,讓虛擬機處于高負載的狀態(tài),分別測試虛擬機在兩種內(nèi)存調度算法下的內(nèi)存調節(jié)情況。啟動虛擬機后,運行服務器端和虛擬機端程序,在VM1虛擬機中運行1 GB負載程序,從調節(jié)程序中觀察到虛擬機內(nèi)存趨于穩(wěn)定時,關閉調節(jié)程序,再開啟調節(jié)程序,同時在該虛擬機中運行DaCapo測試集,測試所有程序,運行次數(shù)為10,并記錄實驗結果。

        實驗結果對比情況如圖7所示,顯示了DaCapo中的13個測試程序分別在新舊兩種調節(jié)算法下的測試結果。從實驗結果可以看到eclipse測試項的運行時間得到了明顯的減少,這是disk類型的測試程序。還有tradesoap的運行時間也有微弱的減少,tradesoap是內(nèi)存性的測試程序。整體看來,實驗結果顯示在虛擬機運行性能上得到了某些方面的提升。

        Fig.7 Automatic memory of VM1圖7 VM1數(shù)據(jù)變化

        5 結束語

        本文論述了多虛擬機內(nèi)存分配系統(tǒng)的內(nèi)存調度算法,相比較之前的算法,新的內(nèi)存調度算法在功能上提高了內(nèi)存調度策略的效率,并且完善了總內(nèi)存不能滿足總負載的情況;新的內(nèi)存調度算法使得在多虛擬機運行環(huán)境下的虛擬機整體性能得到提升,在云計算高速發(fā)展的時代,這一研究很有應用前景和價值。

        [1]Armbrust M,Fox A,Griffith R,et al.Above the clouds:a Berkeley view of cloud computing,UCB/EECS 28[R].University of California,Department of Electrical Engineering and Computer Sciences,Berkeley,2009.

        [2]Gupta D,Cherkasova L,Gardner R,et al.Enforcing performance isolation across virtual machines in Xen[C]//LNCS 4290:Proceedings of the ACM/IFIP/USENIX 7th International Middleware Conference,Melbourne,Australia,Nov 27-Dec 1,2006.Berlin,Heidelberg:Springer,2006:342-362.

        [3]Govil K,Teodosiu D,Huang Yongqiang,et al.Cellular disco: resource management using virtual clusters on shared-memory multiprocessors[J].ACM Transactions on Computer Systems,2000,18(3):229-262.

        [4]Zhang Weizhe,Xie Hucheng,Hsu R.Automatic memory control of multiple virtual machines on a consolidated server[J]. IEEE Transactions on Cloud Computing,2015.

        [5]Magenheimer D.Memory overcommit without the commitment[J].Extended Abstract at the Xen Summit Boston, 2008:1-3.

        [6]Abels T,Dhawan P,Chandrasekaran B.An overview of Xen virtualization[J].Dell Power Solutions,2005,8:109-111.

        [7]Barham C P,Dragovic B,Fraser K,et al.Xen and the art of virtualization[C]//Proceedings of the 19th ACM Symposium on Operating Systems Principles,Bolton Landing, USA,Oct 19-22,2003.New York:ACM,2003:164-177.

        [8]Smith J,Nair R.Virtual machines:versatile platforms for systems and processes[M].San Francisco,USA:Morgan Kaufmann Publishers Inc,2005.

        [9]Rosenblum M.VMware's virtual platform:a virtual machine monitor for commodity PCs[C]//Proceedings of the 11th Hotchips Conference,1999.

        [10]Waldspurger C A.Memory resource management in VM-ware ESX server[J].ACM SIGOPS Operating Systems Review,2002,36(SI):181-194.

        [11]Schopp J H,Fraser K,Silbermann M J.Resizing memory with balloons and hotplug[J].Proceedings of the Linux Symposium,2006,2:313-319.

        [12]XEN.XenStore reference[EB/OL].(2013)[2015-10-31].http: //wiki.xen.org/wiki/XenStoreReference.

        [13]Wilding M,Behman D.Self service Linux[M].Upper Saddle River,USA:Prentice Hall,2006.

        [14]Jones S T,Arpaci-Dusseau A C,Arpaci-Dusseau R H.Geiger:monitoring the buffer cache in a virtual machine environment[J].ACM SIGOPS Operating Systems Review, 2006,40(5):14-24.

        [15]Ma Bo.Dynamic memory management for virtual machines via memory hotplug[D].Wuhan:Huazhong University of Science and Technology,2012.

        [16]Zhao Weiming,Wang Zhenlin,Luo Yingwei.Dynamic memory balancing for virtual machines[J].ACM SIGOPS Operating Systems Review,2009,43(3):37-47.

        [17]Li Dawei,Zhao Fengyu.Memory scheduling strategy for virtual machine in private cloud platform[J].Journal of ComputerApplications,2014,34(9):2523-2526.

        [18]Wang Zhigang,Wang Xiaolin,Jin Xinxin,et al.Mbalancer: predictive dynamic memory balancing for virtual machines [J].Journal of Software,2014,25(10):2206-2219.

        [19]Wei Yong.Research and implementation of Xen virtual machine memory live migration techniques[D].Shenyang: Northeastern University,2012.

        [20]Hu Yao,Xiao Ruliang,Jiang Jun,et al.Virtual machine memory of real-time monitoring and adjusting on-demand based on Xen virtual machine[J].Journal of Computer Applications,2013,33(1):254-257.

        [21]The DaCapo benchmark suite[EB/OL].[2015-10-31].http:// www.dacapobench.org/.

        附中文參考文獻:

        [15]馬博.基于內(nèi)存熱插拔的虛擬機動態(tài)內(nèi)存管理系統(tǒng)[D].武漢:華中科技大學,2012.

        [17]李大為,趙逢禹.私有云平臺的虛擬機內(nèi)存調度策略[J].計算機應用,2014,34(9):2523-2526.

        [18]王志鋼,汪小林,靳辛欣,等.Mbalancer:虛擬機內(nèi)存資源動態(tài)預測與調配[J].軟件學報,2014,25(10):2206-2219.

        [19]魏勇.Xen虛擬機內(nèi)存實時遷移技術研究與實現(xiàn)[D].沈陽:東北大學,2012.

        [20]胡耀,肖如良,姜軍,等.基于Xen虛擬機的內(nèi)存資源實時監(jiān)控與按需調整[J].計算機應用,2013,33(1):254-257.

        WANG Desheng was born in 1992.He is an M.S.candidate at Harbin Institute of Technology,and the student member of CCF.His research interests include virtualization techniques for cloud computing and machine learning,etc.

        王德勝(1992—),男,安徽全椒人,哈爾濱工業(yè)大學計算機學院碩士研究生,CCF學生會員,主要研究領域為云計算環(huán)境中虛擬化技術,機器學習等。

        ZHANG Weizhe was born in 1976.He received the Ph.D.degree from Harbin Institute of Technology in 2006. Now he is a professor and Ph.D.supervisor at Harbin Institute of Technology.His research interests include virtualization techniques,parallel and distributed system,etc.

        張偉哲(1976—),男,黑龍江哈爾濱人,2006年于哈爾濱工業(yè)大學獲得博士學位,現(xiàn)為哈爾濱工業(yè)大學教授、博士生導師,主要研究領域為虛擬化技術,并行與分布式系統(tǒng)等。

        HAO Meng was born in 1991.He is a Ph.D.candidate at Harbin Institute of Technology,and the student member of CCF.His research interest is performance prediction of parallel applications.

        郝萌(1991—),男,山東濟寧人,哈爾濱工業(yè)大學計算機學院博士研究生,CCF學生會員,主要研究領域為并行程序性能預測技術。

        LU Gangzhao was born in 1990.He received the M.S.degree from Harbin Institute of Technology in 2014.Now he is a Ph.D.candidate at Harbin Institute of Technology,and the student member of CCF.His research interests include performance analysis of scientific programs,analytical performance model and statistical performance model,etc.

        魯剛釗(1990—),男,河北唐山人,2014年于哈爾濱工業(yè)大學獲得碩士學位,現(xiàn)為哈爾濱工業(yè)大學博士研究生,CCF學生會員,主要研究領域為科學計算程序的性能分析,分析性能模型和統(tǒng)計性能模型等。

        BAI Enci was born in 1988.He received the M.S.degree in computational mathematics from Harbin Institute of Technology in 2013.His research interests include real time system and cloud computing,etc.

        白恩慈(1988—),男,河北邯鄲人,2013年于哈爾濱工業(yè)大學獲得碩士學位,主要研究領域為實時系統(tǒng),云計算等。

        Research of Adaptive Virtual Machine Memory Scheduling Algorithm in Cloud Computing Environment*

        WANG Desheng,ZHANG Weizhe+,HAO Meng,LU Gangzhao,BAI Enci
        School of Computer Science and Technology,Harbin Institute of Technology,Harbin 150001,China
        +Corresponding author:E-mail:wzzhang@hit.edu.cn

        Resource of Xen virtual machines has been fixed when booted.However,some virtual machines have to use swap space because of the lack of memory while there is idle memory in other virtual machines,which reduces the usage efficiency of memory.There has been the design of memory scheduling algorithm among virtual machines in the previous research,but the scheduling algorithm is inefficient without the consideration of swap.On the foundation of the previous research,this paper puts forward a more reasonable scheduling algorithm that combines swap and the usage of memory to adjust the allocation of memory in virtual machines.The algorithm is also designed on the theory of the idle memory tax proposed by Carl.Firstly,the range of the adjustment will be settled based on the usage of memory and swap.Then the object memory will be calculated in the range.Compared with the previous algorithm,the improved algorithm has been proved to be more effective in experiments.

        Xen virtual machine;swap space;memory scheduling algorithm

        A

        :TP391

        10.3778/j.issn.1673-9418.1512055

        *The National Natural Science Foundation of China under Grant Nos.61202457,61472108(國家自然科學基金);the National Basic Research Program of China under Grant No.2013CB329606(國家重點基礎研究發(fā)展計劃(973計劃));the Specialized Research Fund for the Doctoral Program of Higher Education of China under Grant No.20132302110037(高等學校博士學科點專項科研基金(博導類)).

        Received 2015-11,Accepted 2016-01.

        CNKI網(wǎng)絡優(yōu)先出版:2016-01-07,http://www.cnki.net/kcms/detail/11.5602.TP.20160107.1540.002.html

        摘 要:Xen虛擬機自身的資源在創(chuàng)建之初已經(jīng)固定,往往會因某些虛擬機內(nèi)存不足而使用swap,使得虛擬機工作性能降低,而有的虛擬機內(nèi)存比較空閑,使得整體虛擬機內(nèi)存使用效率不高。之前已經(jīng)有研究對虛擬機使用過程中的內(nèi)存調度算法進行設計,但是經(jīng)過推敲發(fā)現(xiàn),之前內(nèi)存調度算法由于沒有考慮swap空間使用情況而導致整體內(nèi)存調度不夠高效。在前人算法研究基礎上,提出了一個更加完善合理的內(nèi)存調度算法,結合swap和內(nèi)存使用情況一起調節(jié)虛擬機內(nèi)存。算法仍然延續(xù)了Carl提出的空閑內(nèi)存稅概念加以設計,首先根據(jù)虛擬機內(nèi)存和swap使用情況確定該次調節(jié)周期的調節(jié)范圍,之后根據(jù)各個虛擬機的內(nèi)存和swap空間使用情況計算虛擬機目標內(nèi)存。對前后兩種算法分別設計實驗進行測試,驗證了新算法的高效性。

        猜你喜歡
        空閑負載量內(nèi)存
        恩賜
        詩選刊(2023年7期)2023-07-21 07:03:38
        不同CuO負載量CuO/SBA-16對CO催化活性的影響*
        化學工程師(2023年1期)2023-02-17 15:09:48
        定量核磁共振碳譜測定甘氨酸鉀-二氧化碳吸收體系的二氧化碳負載量
        不同負載量及花穗整形斱式對‘戶太八號’葡萄果實品質的影響
        中國果樹(2020年2期)2020-07-25 02:14:28
        “鳥”字謎
        小讀者之友(2019年9期)2019-09-10 07:22:44
        “春夏秋冬”的內(nèi)存
        當代陜西(2019年13期)2019-08-20 03:54:22
        不同負載量對“翠冠”梨果實性狀的影響
        彪悍的“寵”生,不需要解釋
        WLAN和LTE交通規(guī)則
        CHIP新電腦(2016年3期)2016-03-10 14:09:48
        基于內(nèi)存的地理信息訪問技術
        午夜国产精品久久久久| 国产a国产片国产| 国产suv精品一区二区883| 国产女精品| 日本成人三级视频网站| 澳门蜜桃av成人av| 亚洲va久久久噜噜噜久久男同| 一卡二卡三卡视频| 免费国人成人自拍视频| 一区二区三区中文字幕在线播放| 内射人妻少妇无码一本一道| 最新亚洲人成无码网站| 久久国产av在线观看| 国产高潮流白浆视频在线观看| 国产日产综合| 色丁香色婷婷| 久久亚洲春色中文字幕久久久综合| 日本精品一区二区高清| 图片区小说区激情区偷拍区| 亚洲人成人一区二区三区| 成年女人18毛片观看| 婷婷色综合视频在线观看| 国产内射在线激情一区| 2017天天爽夜夜爽精品视频| 亚洲精品一区二区三区四区久久| 国产乡下三级全黄三级| 青青操国产在线| 日本在线一区二区三区四区| www夜片内射视频在观看视频 | 尹人香蕉久久99天天拍| 国产精品va无码一区二区| 久久久久国产精品片区无码| 全亚洲最大的私人影剧院在线看 | 日本不卡在线视频二区三区| 国产亚洲精选美女久久久久| 亚洲av少妇高潮喷水在线| 极品新婚夜少妇真紧| 日本一区二区三区激情视频| 国产av无毛无遮挡网站| 亚洲av永久无码精品三区在线| 久久半精品国产99精品国产 |