趙玉艷,陳海寶,2,趙生慧
(1.滁州學院計算機與信息工程學院,安徽滁州239000;2.華中科技大學計算機科學與技術學院,武漢430074)
一種虛擬機監控器的時間片動態調整機制
趙玉艷1,陳海寶1,2,趙生慧1
(1.滁州學院計算機與信息工程學院,安徽滁州239000;2.華中科技大學計算機科學與技術學院,武漢430074)
在同一物理主機甚至同一CPU/core上,虛擬化技術使得多個虛擬機能夠以公平共享物理資源的方式運行。然而,隨著共享同一CPU/core的虛擬機數量的增多,每個虛擬機所經歷的物理CPU/core訪問延遲也在顯著增加,造成異構型應用(運行過程中既有網絡I/O需求,也有計算需求)在性能方面的負面影響。為解決上述問題,引入一種應用類型感知的虛擬機管理器時間片動態調整機制。該機制可以根據虛擬機中應用的類型動態調整虛擬機的時間片長度。實驗結果表明,與Xen Credit調度機制相比,時間片動態調整機制可使異構型應用(Nginx Web服務器)具有更好的響應能力和吞吐能力。
應用類型驅動;虛擬機監控器;動態時間片;虛擬化;異構型應用
云計算模式可以顯著降低用戶的投資以及運營成本,因為用戶可以簡單地以按使用付費的模式租用云資源來托管和運行應用。支持云托管的一項關鍵技術是虛擬機合并,也就是利用虛擬化技術將單臺物理機劃分為多個虛擬機,每個虛擬機被分配來運行客戶的應用。盡管每個虛擬機通常被分配至少一個虛擬核(例如文獻[1]中的VCPU),但是虛擬核和物理核之間的映射并不總是一對一的。例如,在商業云平臺Amazon EC2[2]中,其計算實例是以EC2計算單元(ECU)為單位進行分配。分配了一個計算單元(ECU)的EC2實例(虛擬機)的計算能力粗略地等同于一臺配置了1 GHz CPU的物理機器。在一個配備了3 GHz CPU的物理機中,可能會有3個虛擬機共享一個物理CPU。在這樣的情況下,虛擬機監控器(Virtual Machine Monitor,VMM)的CPU調度器(例如Xen默認的Credit調度器)以輪轉的方式調度可運行的虛擬機,每個虛擬機被準許獲得相同數量的物理CPU時間來確保共享CPU的虛擬機之間的公平性。然而,文獻[3]通過實驗指出CPU在多個虛擬機之間共享會對網絡I/O處理延遲敏感的應用產生明顯負面影響。一個需要處理網絡I/O事件的虛擬機必須等到它訪問物理CPU時才可以處理這個I/O事件。而在這種情況下,CPU訪問延遲趨向于每個虛擬機所分得默認物理CPU時間片的倍數(例如Xen中的30 ms),并且不能對虛擬機中的應用隱藏這樣的延遲。這種影響非常不利于單純的網絡I/O密集型應用(如只支持對靜態頁面訪問的Web服務器。需要指出,在這種場景中,CPU大部分時間都處于空閑狀態),同時這種影響也不利于既包含網絡I/O部分,也包含計算部分的異構型應用。與單純I/O密集型應用相比,異構型應用需要消耗相對多的CPU時間來完成計算任務。為避免產生歧義,現約定如下:術語“異構型應用”在本文中特指這樣一類應用,在它們運行的過程中即對網絡I/O有需求,也對計算有需求。例如,支持動態頁面訪問的Web服務器,相對于靜態頁面訪問來說,一個Web服務器在收到客戶的動態頁面請求后,它需要通過一定的計算量來處理這個請求,在得到請求的結果后,對客戶進行響應,在這種情況下,支持動態頁面訪問的Web服務器就是一個異構型應用。
如果對共享CPU的虛擬機使用默認的CPU時間片,運行著Web服務器的虛擬機可能不會及時地訪問物理CPU來處理和響應請求。為了避免通信處理延遲所造成的影響,一種方法是選擇使用一個獨占物理CPU的虛擬機。然而,這可能會導致較高的成本,因此,它并不是成本敏感型客戶的首選。本文關注于緩解共享CPU的虛擬機(例如EC2中的小型或者微型計算實例)所受到的網絡I/O處理延遲影響,并針對上述問題,引入應用類型感知的虛擬機監控器時間片動態調整機制以提高應用性能。
虛擬機管理器的I/O性能優化是一個熱點研究領域。例如,文獻[4]通過修改客戶操作系統優化KVM(一種開源的虛擬機管理器)的I/O性能。文獻[5]對Xen的I/O虛擬化驅動進行了研究。緩解網絡I/O處理延遲的一個途徑是修改虛擬機監控器(VMM)的CPU調度器,讓網絡I/O密集型虛擬機(運行網絡I/O密集型應用的虛擬機)的優先級高于CPU密集型虛擬機(運行CPU密集型應用的虛擬機)。例如,文獻[6]在面對運行網絡I/O密集型應用的虛擬機和運行CPU密集型應用的虛擬機時,優先調度前者。然而,這種方法在CPU份額分配上引入了短期的不公平。類似地,文獻[7]使用了局部加速來幫助I/O密集型虛擬機搶占一個運行中的虛擬機以響應到來的I/O事件,但是它很難進行配置來保持共享CPU的虛擬機之間的公平性,因此,并不適用于建立在虛擬化技術之上的云計算系統。文獻[8]擴展了Xen的Credit調度器來支持軟實時應用,但是它可能給運行延遲敏感型應用的虛擬機更多的CPU時間,從而打破了虛擬機之間的公平性。Xen的Credit調度器[9]使用了BOOST機制通過臨時加速I/O密集型應用虛擬機(設置一個高的優先級)來縮短I/O響應時間。盡管這個機制對于單純I/O密集型虛擬機非常有效,但是在異構型應用運行于虛擬機的情況下,一旦一個虛擬機通過BOOST機制獲得調度來處理I/O請求,工作負荷中的計算密集部分會消耗它在當前調度周期中的CPU份額(Xen中的術語是Credits)。因為Credit調度器在虛擬機間是CPU公平的,當異構型應用的計算密集部分消耗完虛擬機所分得的CPU份額后,BOOST機制在當前調度周期的后面部分中就會失去作用,從而導致高的I/O處理延遲。
針對BOOST機制在處理異構型應用時所面臨的問題,本文提出一種基于時間片的動態調整機制來提高這類異構型應用的性能。
本節首先以一個例子來分析虛擬機共享CPU對異構應用I/O處理延遲的負面影響,然后用一個實驗進行驗證,最后引入時間片動態調整機制。
3.1 CPU共享問題的分析及驗證
在這個例子中,有3個單核虛擬機(VM1, VM2和VM3)共享一個物理CPU核,VM1和VM2運行計算密集型應用,而VM3運行著一個異構型應用。VM3中的應用等待客戶請求的到來,然后以數據或控制信息響應這個請求。假設虛擬機監控器(VMM)中的CPU調度器使用一個被許多商業虛擬機平臺采用的按比例分享的調度策略(例如,用在 Amazon EC2,RackSpace和GoGrid商業云中的Xen)。如圖1所示,一個目的地是VM3的請求發送到物理機后,它首先被緩存在VM3之外(例如,在虛擬機監控器中或者在特權驅動器域中),一直等到 VM3被調度。當VM3被調度后,它會處理這個請求并產生響應。如果CPU的時間片是30 ms,請求的響應延遲可以高達60 ms。而這樣一個高延遲影響了 VM3中應用的響應性以及請求處理率。

圖1 默認調度時間片示意圖
為了展示延遲問題,設計了如下實驗,在一臺物理機(IBM System x3650:Intel Xeon E5530,32 GB RAM,500 GB Disk)上安裝Xen4.2,并使用默認的Credit調度器。每臺虛擬機都運行了開源軟件lookbusy[10],用以保證虛擬機的CPU在實驗期間處于忙碌狀態。不失一般性,本文實驗使用虛擬機中運行的lookbusy和網絡連通性探測命令ping合成了一個異構型應用。然后,分別在3種情況下(1臺單核虛擬機獨占一個物理核;2臺單核虛擬機共享一個物理核;3臺單核虛擬機共享一個物理核),從另外一臺物理機上使用ping命令測試一個虛擬機的數據包往返時間RTT(Round-Trip Time)。
圖2展示了ping一臺虛擬機時RTT的累積分布函數(CDF)。實驗結果清晰地表明ping RTT隨著共享CPU的虛擬機數量增加而增加。

圖2 ping RTT的累計分布函數
3.2 機制和算法
由2.1節可知,對于異構型應用,如果將調度時間片減小,虛擬機可以更頻繁地訪問物理CPU,相應的I/O處理延遲也隨之降低。然而,對于計算密集型應用來說,降低調度時間片會增加上下文切換的次數,從而會帶來一定應用性能上的開銷。也就是說,對于運行了計算密集型應用的虛擬機,并不適合于縮短它們的時間片。
為了解決上述問題,本文基于Credit調度器提出了一種應用感知的動態時間片調整機制,根據運行在虛擬機中應用的類型來動態調整此虛擬機的調度時間片,從而達到提高應用性能的目的,如Web服務器的連接率和響應時間。
(1)動態調整機制:動態調整機制的思路簡述如下。首先,系統中只存在2種長度的時間片,一種是默認時間片(也就是Credit調度器中采用的30 ms);另一種是短時間片。在本文中,短時間的長度是一個經驗值,由管理員根據系統的實際情況設置(第3節的實驗部分將比較短時間片被設置為不同的長度時,對應用性能的影響)。其次,系統在開始運行時,所有虛擬機都使用默認的時間片長度。如果虛擬機運行著同構型應用(如單純的網絡I/O密集型應用或者單純計算密集型應用),則繼續用默認的時間片。因為在默認時間片下,Xen Credit調度器能夠有效保證單純計算密集型應用的性能,同時其BOOST機制也能保證單純網絡I/O密集型應用的性能[11]。而如果虛擬機中運行著異構型應用,系統則把此虛擬機的時間片調整為短時間片。
(2)應用類型推斷算法:在實現時間片動態調整機制之前,調度器需要獲取運行在虛擬機中的應用類型,由于虛擬機管理器和虛擬機之間存在著語義鴻溝的問題,虛擬機管理器并不能直接獲取虛擬機內部運行應用的信息(如應用類型)。消除語義鴻溝一般采用的是侵入式方法:在虛擬機操作系統內核中增加一個超級調用,通過這個超級調用來向虛擬機管理器傳遞虛擬機內部應用的類型信息。本文采用一種非侵入式的方法,即不需要修改虛擬機操作系統內核,VMM只需監控一些信息從而推斷出應用的類型。
本文的設計包括一個監控器用來分析和推斷運行在虛擬機中的應用類型以及一個時間片調整算法。圖3顯示了調度器的框架,它可以監控虛擬機的行為以及動態調整時間片。

圖3 調度器框架
行為監控器被周期性調用以監控每個虛擬機數據包接收頻率(在一個監控間隔內每個虛擬機接收數據包的數量)以及虛擬機的VCPU利用率。其中,數據包接收頻率用來推斷運行在虛擬機上的應用是否為網絡I/O密集型應用,虛擬機的VCPU利用率則用來推斷運行的是否為計算密集型應用。將VCPU利用率和數據包接收頻率結合起來,則可用來推斷虛擬機中運行的是否為異構型應用。
類型推斷算法如下:


為了避免因監控數據短暫變化所引起的類型變化,算法在進行類型推斷時考慮了每臺虛擬機在N個監控周期的數據包接收頻率以及VCPU利用率,N在本文中設置為5。在虛擬機的生命周期中,根據行為監控的反饋信息,每個虛擬機的類型可以變化。因為隨著監控頻率的增加,監控開銷也會增加,所以文中采用的監控間隔為1 s。
3.3 原型實現
本工作以Xen4.2中的Credit調度器為基礎設計并實現了一個原型系統。
在Credit調度器的源代碼(sched_credit.c文件)中通過添加程序段實現監控虛擬機VCPU利用率的功能。程序段首先統計每個虛擬機在一個監控周期內獲得的物理CPU時間(也就是虛擬機中每個VCPU在一個監控周期中占用物理 CPU時間之和),然后利用下面的公式計算虛擬機的VCPU利用率:Utilization=100×cpuTime/(T×VCPUsNum),其中,cpuTime是虛擬機在一個監控周期內總共獲得的物理CPU時間;T是在一個監控周期應獲得的物理CPU時間;VCPUsNum是虛擬機的VCPU數量。
在監控虛擬機數據包接收量方面,首先在特權域dom0的網絡后端設備(netback)源代碼(netback.c)中添加程序段,監控虛擬機的數據包接收數量并將相應信息寫入 dom0和虛擬機監控器(Virtual Machine Monitor,VMM)之間的共享內存頁(shared info page),然后,虛擬機管理器在需要時可以從共享內存頁中讀取該信息。
獲取以上2個參數值后,類型推斷算法根據系統設定的閾值判斷每個虛擬機中運行應用的類型。本文設定的虛擬機VCPU利用率閾值為50%,包接收率的閾值設置為每秒30個數據包。在實際應用中,系統管理員可以根據系統的運行情況修改上面2個閾值。
為了實現時間片動態調整機制,在Credit調度器的源代碼中添加了如下的控制邏輯:(1)在虛擬機結構體csched_dom中添加3個變量:分別是tslice_ ms,tick_period_ms,ticks_per_tslice。其中,tslice_ms表示時間片的長度;tick_period_ms表示Credit值的記賬周期;ticks_per_tslice表示每個時間片包含記賬周期的數量,這3個變量的關系是:第一個變量的值等于后 2個變量值的乘積,即 tslice_ms=tick_ period_ms×ticks_per_tslice。(2)根據類型算法得到的應用類型,在3個變量中設置相應的值。例如,如果應用類型是異構型,那么將tslice_ms設置為短時間片,如12(單位是ms),tick_period_ms和tick_ period_ms則分別對應的設置為4(單位是毫秒)和3。如果應用類型是同構型,3個變量設置為系統的默認值。(3)csched_schedule函數開始執行的時候,從虛擬機結構體csched_dom中讀取tslice_ms的值,同時將 csched_tick函數 (作用是定時扣除 Credit值)中定時器的定時周期設置為tick_period_ms。
另外,由于并未修改Xen Credit調度器的CPU時間分配和消耗機制,因此繼承了Credit調度器的CPU公平性保證策略,也就是能夠保證物理CPU時間在虛擬機之間得到公平共享。
本文實驗的目的是測試動態時間片機制對異構型應用的性能影響。在實驗中,依次將動態調節機制中的小時間片設定為24 ms,18 ms,12 ms,6 ms, 3 ms。然后在每種時間片下執行一遍實驗,最后將每種時間片下的性能數據與默認時間片(30 ms)下的性能數據進行比較。
4.1 實驗環境設置
物理服務器(IBM System x3650:Intel Xeon E5530, 32 GB RAM,500 GB Disk)運行了4個共享同一物理核的單核虛擬機(VM1,VM2,VM3和VM4)。為了保證CPU分配的公平性,在實驗開始前利用Xen的控制端命令“xm sched-credit-d‘vmName'-w 256-c 25”,將每個虛擬機的weight值設置為默認值(256),cap值設置為25,也就是每個虛擬機最多獲得25%的CPU時間。虛擬機VM1運行了Nginx和lookbusy合成的一個異構型應用;虛擬機VM4運行了網絡I/O密集型應用(Nginx);為了增大對VM1和VM4中應用的干擾,從而能夠更清晰地體現出本文所提機制的優勢,在剩余的2個虛擬機(VM2和VM3)中分別運行了計算密集型應用(lookbusy)。2臺客戶端機器分別同時使用Httperf[12]產生對VM1和VM4中一個4 KB靜態Web頁面的請求,以測量VM1和VM4中Web服務器的性能。
實驗中使用Nginx Web服務器的靜態頁面查詢和lookbusy來合成一個異構型應用,使其既有網絡I/O密集型部分,也有計算密集型部分。其中, Nginx對網絡I/O處理延遲非常敏感,網絡I/O處理延遲會影響Nginx服務器的響應時間和請求處理的吞吐量。Lookbusy用來產生CPU負載(使虛擬機的VCPU利用率保持在50%)。
為了進行比較,將并發連接請求率從每秒100個逐漸增加到每秒500個,步長為100,然后在每種連接請求率下分別測試了不同方法(默認時間片和小時間片)下的Web服務器響應時間和連接率等2個指標。
4.2 結果分析
圖4和圖5分別展示了VM1的響應時間和連接率。

圖4 VM1中不同連接請求率下的響應時間對比

圖5 VM1中不同時間片下的連接率對比
從圖4中可以看到,隨著連接請求率的增加,默認時間片(30 ms)下的Web服務器響應時間從每秒100個連接下的3.4 ms迅速升高到每秒500個連接下的79.9 ms。相比較而言,小時間片下的Web服務器響應時間則有明顯優勢,尤其是在3 ms的短時間片下,響應時間只從0.6 ms(每秒100個連接)升高到1.1 ms(每秒500個連接)。
從圖5中的數據可以得到3個信息:(1)相對于默認時間片(30 ms)而言,隨著連接請求率的增加,小時間片在連接率方面的優勢逐漸體現出來。(2)連接請求率在不大于每秒300個時,默認時間片和短時間片在連接率方面性能相同,這主要是因為,連接請求率沒有超出各種時間片下的服務器處理能力。當超出服務器處理能力后,也就是,連接請求率大于每秒300個時,不同時間片下的性能差距才體現出來。(3)在18 ms,12 ms,6 ms和3 ms等4種短時間片下連接率等于連接請求率(4種短時間下的數據重疊在一起),這表明系統在分別采用上述4種短時間片下,連接請求率并未超出服務器的處理能力;同時也表明在時間片為18 ms時,服務器已經能夠有效地處理客戶端發來的請求,因此,不需要進一步將時間片設置得更小。
因為VM2和VM3中運行的是計算密集型應用,本文所提動態機制并不會調節它們的時間片長度,也就是它們所運行的計算密集型應用性能與默認環境下的性能相當。此外,由于VM4中運行的是單純的網絡I/O密集型應用,動態時間片調整機制也不改變它的時間片長度。在BOOST機制的作用下,其Web服務器的性能(請求連接率和響應時間)同樣與默認環境下的性能相當。因此,此處省略了VM2,VM3和VM4的性能對比圖。
以上的實驗結果表明,與默認時間片相比,短時間片能夠有效提高虛擬機中異構型應用的性能。
本文設計了一個應用類型感知的虛擬機管理器動態時間片調整機制,并在Xen Credit調度器基礎之上實現了一個原型系統。本文基于以下思想:對于運行異構型應用的虛擬機,將其默認時間片(如Xen Credit調度器中默認的30 ms)分成多個小時間片(如10個3 ms的時間片),從而達到在一個調度周期中多次對其調度的目的。也就是說,相對于默認時間片的虛擬機,短時間片虛擬機可以更頻繁地訪問物理CPU來處理I/O事件。原型系統的實驗結果表明,在Web應用的響應時間和連接率方面優于Xen Credit調度器。
目前原型系統采用的短時間片長度是由系統管理員根據經驗提前設定的,系統根據虛擬機的應用類型,動態地在指定的短時間片和默認時間片之間進行切換。因此,下一步的研究工作就是設計一種無需系統管理員干涉的短時間設定機制,并且考慮如何將動態時間片與CPU運行隊列的動態優先級結合起來,進一步提升此類應用的性能。
[1] 薛海峰,卿斯漢,張煥國.XEN虛擬機分析[J].系統仿真學報,2008,19(23):5556-5558.
[2] 亞馬遜公司.AWS產品與解決方案[EB/OL].[2014-03-01.]http://aws.amazon.com/cn/ec2.
[3] Xu C,Gamage S,Kompella R,et al.vTurbo:Accelerating Virtual Machine I/O Processing Using Designated Turbo-SlicedCore[C]//ProceedingsofUSENIX Annual Technical Conference.[S.l.]:USENIX Press,2013: 243-254.
[4] 張彬彬,汪小林,楊 亮,等.修改客戶操作系統優化KVM虛擬機的I/O性能[J].計算機學報,2010,33(12): 2312-2320.
[5] 胡冷非,李小勇.基于Xen的I/O準虛擬化驅動研究[J].計算機工程,2009,35(23):258-262.
[6] Govindan S,Nath A R,Das A,et al.Communication-aware CPU SchedulingforConsolidated Xen-based Hosting Platforms[C]//Proceedings of the 3rd Interna-tional Conference on Virtual Execution Environments.[S.l.]: ACM Press,2007:126-136.
[7] Kim H,Lim H,Jeong J,et al.Task-aware Virtual Machine Scheduling for I/O Performance[C]//Proceedings of ACM InternationalConference on VirtualExecution Environments.[S.l.]:ACM Press,2009:101-110.
[8] Lee M,Krishnakumar A S,Krishnan P,et al.Supporting Soft Real-time Tasks in the Xen Hypervisor[C]// Proceedings of the 6th International Conference on VirtualExecution Environments.Pittsburgh,USA:[s.n.],2010:97-108.
[9] Xen Project Advisory Board.Xen Credit Scheduler[EB/ OL].[2014-03-01].http://wiki.xen.org/wiki/Credit_ Scheduler,
[10] Devin Carraway.A Synthetic Load Generator[EB/OL].[2014-03-01].http://www.devin.com/lookbusy/.
[11] Gamage S,Kangarlou A,Kompella R R,et al.vSlicer: Latency-aware Virtual Machine Scheduling via Differentiated-frequency CPU Slicing[C]//Proceedings of the 21st International Symposium on High-performance Parallel and Distributed Computing.[S.l.]:ACM Press,2012: 3-14.
[12] HP Inc.A Tool for Measuring Web Server Performance[EB/OL].[2014-03-01].http://www.hpl.hp.com/ research/linux/httperf/.
編輯 顧逸斐
A Dynamic Time Slice Adjusting Mechanism of Virtual Machine Monitor
ZHAO Yuyan1,CHEN Haibao1,2,ZHAO Shenghui1
(1.School of Computer and Information Engineering,Chuzhou University,Chuzhou 239000,China;
2.School of Computer Science and Technology,Huazhong University of Science and Technology,Wuhan 430074,China)
Multiple Virtual Machines(VMs)can be hosted in the same CPU core with virtualization technologies,in a fair share manner of the physical resources among the VMs.However,as the number of VMs sharing the same core/CPU increase,the CPU access latency perceived by each VM also increases,which translates into longer network I/O processing latency experienced by heterogeneous application including both network I/O and computation.To mitigate such impact,an application type driven dynamic time slice adjusting mechanism is presented.The evaluation of a prototype in Xen shows that,compared with Credit scheduler of Xen,this mechanism improves the connection rate and response time of Nginx Web server.
application type driven;Virtual Machine Monitor(VMM);dynamic time slice;virtualization;heterogeneous application
1000-3428(2014)11-0031-05
A
TP393.09
10.3969/j.issn.1000-3428.2014.11.006
安徽省自然科學基金資助面上項目(1408085MF126);安徽省教育廳自然科學研究基金資助重大項目(KJ2011ZD06);滁州學院優秀青年人才基金資助重點項目(2013RC006);滁州學院科研啟動基金資助項目(2014qd016)。
趙玉艷(1982-),女,講師、碩士,主研方向:數據挖掘,云計算;陳海寶,講師、博士研究生;趙生慧,教授、博士。
2014-03-07
2014-04-24E-mail:zhyy@chzu.edu.cn
中文引用格式:趙玉艷,陳海寶,趙生慧.一種虛擬機監控器的時間片動態調整機制[J].計算機工程,2014, 40(11):31-35.
英文引用格式:Zhao Yuyan,Chen Haibao,Zhao Shenghui.A Dynamic Time Slice Adjusting Mechanism of Virtual Machine Monitor[J].Computer Engineering,2014,40(11):31-35.