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

        ?

        基于Xen 的虛擬磁盤調(diào)度算法改進

        2010-07-25 07:16:22劉可超李小勇
        微型電腦應(yīng)用 2010年4期
        關(guān)鍵詞:磁盤內(nèi)核隊列

        劉可超,李小勇

        0 引言

        Xen[1][2]是一款開源的虛擬機監(jiān)視器,最初由劍橋大學(xué)開發(fā)。它同時支持準虛擬化(Para-Virtualization,也稱為半虛擬化或泛虛擬化)和全虛擬化(Full-Virtualization)。準虛擬化主要是通過修改客戶操作系統(tǒng)內(nèi)核完成的;而全虛擬化的實現(xiàn)有兩種方式:動態(tài)二進制翻譯;硬件虛擬化技術(shù),如Intel VT和AMD-V技術(shù)。以前由于缺乏硬件支持,而基于動態(tài)二進制翻譯的全虛擬化方式性能較差,因此 Xen只支持準虛擬化。但是準虛擬化需要修改客戶操作系統(tǒng)的內(nèi)核,非開源的操作系統(tǒng)難以實現(xiàn)準虛擬化。隨著硬件虛擬化技術(shù)的出現(xiàn),Xen開始支持全虛擬化,這種基于硬件的虛擬化(HVM,Hardware Virtual Machine)性能要更好。

        Xen本身并沒有集成各種設(shè)備的驅(qū)動程序,而是通過一個特殊的Linux內(nèi)核實現(xiàn)的。這個Linux內(nèi)核是經(jīng)過修改的,開機之后就會運行,主要功能就是為各個虛擬機提供設(shè)備驅(qū)動以及實現(xiàn)虛擬機的管理功能。在 Xen中,運行的操作系統(tǒng)內(nèi)核稱為域(Domain),提供驅(qū)動的內(nèi)核稱為Domain 0,其它虛擬機稱為Domain U。

        1 存儲虛擬化

        1.1 存儲虛擬化

        存儲的虛擬化可以通過以下幾種不同的方式[3]:直接使用物理硬盤或其分區(qū);通過網(wǎng)絡(luò)存儲協(xié)議,例如 NFS網(wǎng)絡(luò)文件系統(tǒng);基于邏輯卷(LVM,Logical Volume Manager);基于文件的虛擬存儲,也稱為虛擬磁盤鏡像(Virtual Disk Image)。本文主要研究的是基于文件的虛擬存儲。

        Xen使用 QEMU[4]來為虛擬機模擬各種設(shè)備,包括磁盤、網(wǎng)卡等。從虛擬機上發(fā)出的I/O請求的處理流程如圖1所示(以全虛擬化為例):

        圖1 全虛擬化環(huán)境下Xen虛擬機的I/O路徑

        首先 Domain U的內(nèi)核執(zhí)行磁盤讀寫訪問指令,觸發(fā)VMExit,處理器調(diào)用虛擬機監(jiān)視器(VMM)設(shè)置的VMExit處理函數(shù),從非根環(huán)境轉(zhuǎn)入根環(huán)境。然后,將I/O指令的具體信息寫入Domain U 內(nèi)核與QEMU設(shè)備模型共享的I/O共享頁中,并通過事件通道(Event Channel)機制通知Domain 0。接著虛擬機監(jiān)視器阻塞Domain U,并且調(diào)用調(diào)度算法,把執(zhí)行控制交給Domain 0。Domain 0負責(zé)收集這些虛擬機的I/O請求,并將執(zhí)行控制從內(nèi)核態(tài)返回用戶態(tài),處于用戶態(tài)的QEMU設(shè)備模型通過讀取I/O共享頁,識別對于磁盤設(shè)備的訪問,調(diào)用相應(yīng)的回調(diào)函數(shù),完成對磁盤的讀寫操作。

        當(dāng)硬盤讀寫操作完成后,磁盤控制器觸發(fā)硬件中斷,該中斷首先由虛擬機監(jiān)視器的處理函數(shù)接管,接著通知Domain 0,調(diào)用其中的中斷處理函數(shù)。Domain 0的中斷處理函數(shù)處理完后,喚醒正阻塞于I/O等待隊列中的設(shè)備模型進程,當(dāng)設(shè)備模型發(fā)現(xiàn)有虛擬硬件中斷時,通過I/O共享頁設(shè)置相應(yīng)的中斷位,同時把這個虛擬硬件中斷通過事件通道通知虛擬機監(jiān)視器。當(dāng)虛擬機下次 VMEntry返回時,就可以喚醒被阻塞的Domain U,完成整個I/O操作。

        1.2 I/O調(diào)度

        Xen的Domain 0是基于改進后的Linux 2.6內(nèi)核實現(xiàn)的,它支持四種 I/O調(diào)度算法[5]:完全公平隊列(CFQ,Complete Fair Queuing);最后期限調(diào)度(Deadline);基于預(yù)期的調(diào)度(Anticipatory);簡單的先到先服務(wù)調(diào)度(NOOP)。而其中CFQ算法支持基于優(yōu)先級的調(diào)度。CFQ算法根據(jù)同步和異步,對進程提交的I/O請求進行分類,優(yōu)先處理同步的I/O請求。CFQ算法內(nèi)部維護多個請求隊列,它根據(jù)發(fā)出I/O請求的進程的標識號(PID),通過散列函數(shù)將該請求映射到相應(yīng)的隊列中。CFQ優(yōu)先選擇I/O優(yōu)先級高的隊列進行處理;在同優(yōu)先級的隊列之間,CFQ算法使用輪詢調(diào)度(Round Robin)的機制處理各個活動隊列,實現(xiàn)將I/O請求從CFQ隊列傳送到設(shè)備隊列。

        為了避免引起其它活動隊列的饑餓現(xiàn)象,CFQ算法同時還引入了時間片(Time Slice)的概念,對請求設(shè)置截止期限(Deadline)。當(dāng)請求在超過截止期限之后還沒有得到服務(wù)時,它們就會在下一個調(diào)度周期被優(yōu)先處理。處理過的請求被移出活動隊列并插入到底層設(shè)備的隊列中,該插入操作可以按照I/O請求的磁盤扇區(qū)順序進行排列,目的是減少磁盤尋道時間。

        CFQ算法可以保證公平性,但是對于很多應(yīng)用場合來說(如服務(wù)器整合),除了公平性,還應(yīng)該合理的分配帶寬。因為不同的應(yīng)用所需的帶寬是不一樣的,對帶寬穩(wěn)定性的要求也是不一樣的,如果單純的在應(yīng)用之間平均分配,可能會導(dǎo)致有的應(yīng)用所獲得的帶寬超過了它所需的最低帶寬,而其它應(yīng)用的帶寬需求則沒有得到滿足。雖然CFQ調(diào)度算法中支持優(yōu)先級調(diào)度,通過設(shè)置I/O優(yōu)先級可以使服務(wù)得到不同的磁盤帶寬;但是它并不能夠提供定量的帶寬保證。

        2 動態(tài)優(yōu)先級實現(xiàn)模型

        基于反饋機制的動態(tài)優(yōu)先級調(diào)度的結(jié)構(gòu)如圖2所示:

        圖2 基于反饋的動態(tài)優(yōu)先級調(diào)度

        主要包括三個模塊:性能實時統(tǒng)計模塊、動態(tài)優(yōu)先級模塊以及控制模塊:

        2.1 性能實時統(tǒng)計

        由于虛擬機對于磁盤的訪問,都是通過QEMU設(shè)備模型來完成的,因此,通過改進 QEMU,可以實現(xiàn)實時的磁盤性能信息統(tǒng)計。而統(tǒng)計的時間間隔就顯得非常重要,因為如果間隔太短,則無法正確的得到實際的性能數(shù)據(jù);相反,如果間隔太長,則會影響到優(yōu)先級調(diào)整的速度,使得性能達不到預(yù)期的目的。目前,采用的時間間隔默認是5秒鐘,實時統(tǒng)計模塊會記錄每個虛擬機在每5秒鐘之內(nèi)的I/O請求的大小,并將得到的帶寬傳給控制模塊。帶寬數(shù)據(jù)的傳遞是通過QEMU與控制模塊之間的消息隊列完成的。

        2.2 動態(tài)優(yōu)先級

        Linux 2.6內(nèi)核中從低到高支持3個I/O優(yōu)先級類型,分別是:空閑(Idle)、最大有效度(Best Effort)和實時(Real Time)。而每個優(yōu)先級類型中有分別包含8個優(yōu)先級,從低到高依次為7,6,…,0。在進行調(diào)度的時候,優(yōu)先的處理實時類型的請求,根據(jù)具體的優(yōu)先級,從0到7進行處理;當(dāng)優(yōu)先處理完實時優(yōu)先級的I/O請求之后,便會接著處理最大有效度類型的請求;最后當(dāng)系統(tǒng)中沒有其它類型的請求時,才會處理空閑類型的請求。而如果同一類型的多個進程同時發(fā)出I/O請求,那么優(yōu)先級較高(數(shù)值較低)的進程會得到更多的磁盤服務(wù)。但是,優(yōu)先級低的進程并不是完全得不到服務(wù),而只是所占的比例較小。因此,可以通過調(diào)整I/O優(yōu)先級,使得磁盤帶寬在多個虛擬機之間,按照預(yù)先設(shè)定的目標帶寬進行分配。

        動態(tài)優(yōu)先級模塊負責(zé)通過系統(tǒng)調(diào)用動態(tài)的升高或降低各個虛擬機的QEMU設(shè)備模型進程的I/O優(yōu)先級。具體如何調(diào)整是由控制模塊進行控制的。在實際進行調(diào)整的過程中,首先,將所有的虛擬機對應(yīng)的I/O優(yōu)先級都設(shè)置為Best Effort,優(yōu)先級為 4,這樣就處于一個居中的優(yōu)先級,便于靈活調(diào)整。然后,根據(jù)控制模塊傳來的控制信息,如果目前某個虛擬機的帶寬沒有達到預(yù)期,則升高它的I/O優(yōu)先級,如變?yōu)?,隔一定時間后,再根據(jù)控制信息進行增減。如果增加到Best Effort 0還是達不到要求,則調(diào)整為Real Time 7;反之亦然。

        2.3 控制模塊

        每隔一定的時間間隔(5秒鐘),性能統(tǒng)計模塊就會將信息反饋給控制模塊。控制模塊通過實時的性能參數(shù)和預(yù)設(shè)的目標參數(shù)來控制I/O優(yōu)先級的調(diào)整。如果虛擬機當(dāng)前的磁盤帶寬沒有達到它的目標帶寬,就需要對該虛擬機所對應(yīng)的設(shè)備模型進程的I/O優(yōu)先級進行調(diào)整。這樣就可以通過反饋的機制來不斷進行優(yōu)先級調(diào)整,以便使得各個虛擬機都能夠達到目標帶寬。如果系統(tǒng)總體的性能無法滿足所有虛擬機的需求,則嘗試滿足盡量多的虛擬機。

        當(dāng)然,實際帶寬不可能完全和目標帶寬一致,應(yīng)該允許一定的誤差范圍;同時由于目前的I/O調(diào)度算法中優(yōu)先級劃分的粒度較大,調(diào)整一個優(yōu)先級別就會使帶寬發(fā)生很大變化,頻繁調(diào)整優(yōu)先級會導(dǎo)致虛擬機的磁盤帶寬波動嚴重。因此,在實際實現(xiàn)中,只有當(dāng)有某個虛擬機的實際帶寬低于目標帶寬超過 1MB/s時,才會向動態(tài)優(yōu)先級模塊發(fā)出控制信息,進行優(yōu)先級調(diào)整。而如果某個虛擬機的實際帶寬超過了它的目標帶寬,但是其它虛擬機的帶寬需求也能得到滿足,為了避免波動,不會進行優(yōu)先級調(diào)整。

        3 性能評估

        3.1 實驗環(huán)境

        實驗機器配置如下:CPU:Intel Pentium 4 3.0GHz(支持VT-x),內(nèi)存:1GB,磁盤:80G B。使用的Xen版本為:Xen-Unstable:Change Set 20128, Xen Linux內(nèi)核版本:2.6.18.8。在其上運行兩個Red Hat Enterprise Linux 5.2(內(nèi)核2.6.18)的虛擬機,分配給虛擬機的內(nèi)存大小都是為256 MB,兩個虛擬機的虛擬磁盤文件大小均為4 GB。

        3.2 結(jié)果對比

        分別在兩個虛擬機之上運行測試程序(使用dd命令進行讀測試:dd if=/dev/hda1 of=/dev/null)。假定虛擬機2對帶寬的要求較高,其目標帶寬為30MB/s;而虛擬機1則沒有這么高的要求,它只需要10MB/s左右的帶寬。對加入基于反饋的動態(tài)優(yōu)先級調(diào)度前后兩個虛擬機的平均磁盤帶寬進行比較,結(jié)果如圖3所示:

        圖3 改進前后對比

        在改進之前,由于CFQ算法能保證較好的公平性,因此,兩個虛擬機的磁盤帶寬基本相等,都為22MB/s左右,總的系統(tǒng)吞吐量約為44MB/s。但是存在的問題是,虛擬機2的實際帶寬并沒有達到目標的30MB/s,虛擬機1并不需要20多MB/s的帶寬,也就是說帶寬的分配不夠合理。

        增加了基于反饋的動態(tài)I/O優(yōu)先級調(diào)度之后,可以看到虛擬機2的帶寬約為31MB/s,達到了預(yù)期的30MB/s。這種情況下,虛擬機1的帶寬約為15MB/s,滿足了它本身的需要。總的系統(tǒng)吞吐量約為46MB/s,與改進之前相比,并沒有減少。結(jié)果表明,動態(tài)優(yōu)先級的引入達到帶寬按需分配的預(yù)期目標,而且對系統(tǒng)整體性能的影響很小。加入動態(tài)優(yōu)先級調(diào)度之后,兩個虛擬機的帶寬變化過程如圖4所示(以5秒鐘為單位測得):

        圖4 改進后帶寬變化過程

        從結(jié)果中可以看出,兩個虛擬機在第2個5秒鐘就達到了目標帶寬,后面基本都保持在目標帶寬之上。當(dāng)然,結(jié)果中的帶寬還是有一些波動,但是都是在目標帶寬之上的波動,也就是說達到了預(yù)期的目標。

        4 結(jié)束語

        本文通過研究Xen中的存儲虛擬化以及I/O調(diào)度算法原理,提出了一種基于反饋的動態(tài)優(yōu)先級調(diào)度機制,以此來實現(xiàn)磁盤帶寬的動態(tài)調(diào)整,為運行于多個虛擬機之上的各種服務(wù)提供存儲帶寬的保證。而通過測試也可以看出,改進之后,磁盤帶寬能夠在多個虛擬機之間按照需要進行分配。

        [1]Barham P, Dragovic B, Fraser K, Hand S, Harris T, Ho A,Neugebauer R, Pratt I.and A Warfield. Xen and the art of virtualization. In 19th ACM Symposium on Operating Systems Principles, Oct 2003.

        [2]Pratt I, Fraser K, Hand S, Limpach C, Warfield A,Magenheimer D, Nakajima J, and Malick A. Xen 3.0 and the art of virtualization. In Proceedings of the 2005 Ottawa Linux Symposium, Ottawa, Canada, July 2005.

        [3]Xen 3.3 User Manual, http://bits.xensource.com/Xen/docs/user.pdf

        [4]Bellard F.QEMU, a Fast and Portable Dynamic Translator.In Proceedings of the USENIX Annual Technical Conference, 2005.

        [5]Pratt S, Heger D.Workload Dependent Performance Evaluation of the Linux 2.6 I/O Schedulers.In Proceedings of the Ottawa Linux Symposium, 2004.

        猜你喜歡
        磁盤內(nèi)核隊列
        萬物皆可IP的時代,我們當(dāng)夯實的IP內(nèi)核是什么?
        強化『高新』內(nèi)核 打造農(nóng)業(yè)『硅谷』
        隊列里的小秘密
        基于多隊列切換的SDN擁塞控制*
        軟件(2020年3期)2020-04-20 00:58:44
        解決Windows磁盤簽名沖突
        電腦愛好者(2019年2期)2019-10-30 03:45:31
        基于嵌入式Linux內(nèi)核的自恢復(fù)設(shè)計
        Linux內(nèi)核mmap保護機制研究
        在隊列里
        修改磁盤屬性
        豐田加速駛?cè)胱詣玉{駛隊列
        亚洲天堂av路线一免费观看| 中文字幕一区二区三区精彩视频| 污污污污污污WWW网站免费| 一本色道久久88精品综合| vr成人片在线播放网站| 草莓视频在线观看无码免费| 少妇一区二区三区精选| 亚洲国产精品久久久av| 久久综合国产乱子伦精品免费| 亚洲一区二区综合色精品| 成人综合亚洲国产成人| 麻神在线观看免费观看| 午夜无遮挡男女啪啪免费软件| 66lu国产在线观看| 亚洲欧洲日产国码无码av野外| av在线不卡免费中文网| 粗大的内捧猛烈进出小视频| 国产又黄又猛又粗又爽的a片动漫| 在线观看av国产自拍| 国产自拍av在线观看| 最近中文字幕国语免费| 三年片在线观看免费大全电影| 国产欧美久久久精品影院| 爱爱免费视频一区二区三区| 亚洲av永久无码天堂网| 小12箩利洗澡无码视频网站| 狠狠综合亚洲综合亚色 | 一区二区韩国福利网站| 欧美成人网视频| 日本午夜剧场日本东京热| 天天噜日日噜狠狠噜免费| 亚洲三级黄色| 麻豆av在线免费观看精品| 老熟妇乱子交视频一区| 亚洲 自拍 另类 欧美 综合| 国产自精品在线| 水蜜桃视频在线观看免费18| 在线观看一区二区三区国产 | 小荡货奶真大水真多紧视频| 亚洲欧美一区二区三区国产精| 在线视频自拍视频激情|