文/何花 楊段生
圖1:實(shí)驗(yàn)設(shè)置
隨著云計(jì)算的加速技術(shù),數(shù)據(jù)中心在云計(jì)算中扮演了一個(gè)中樞角色,并且消耗了大量的電能。如何解決電力消費(fèi)已經(jīng)成為未來數(shù)據(jù)中心面臨的主要挑戰(zhàn)之一。最近,服務(wù)器整合被吹捧為提高數(shù)據(jù)中心能源效率的有效途徑。在這種方法中,運(yùn)行在多個(gè)服務(wù)器上的應(yīng)用程序可以通過虛擬化合并到一個(gè)服務(wù)器中。因此,數(shù)據(jù)中心的空閑服務(wù)器可以被關(guān)閉以減少服務(wù)器虛擬化的能源使用。并且已經(jīng)證明,通過虛擬化優(yōu)化數(shù)據(jù)中心操作,可以節(jié)省數(shù)據(jù)中心20%的能耗。然而,虛擬化還會(huì)導(dǎo)致潛在的危險(xiǎn)效應(yīng),比如可能的能源開銷,或者可能減少最大吞吐量。這些有害的影響,如果不是很好理解的話,可能會(huì)抵消服務(wù)器虛擬化帶來的好處。因此,對(duì)數(shù)據(jù)中心服務(wù)器能量使用的清晰理解和精確建模將為數(shù)據(jù)中心的操作優(yōu)化提供基本依據(jù)。
在本文中,研究了服務(wù)器虛擬化對(duì)數(shù)據(jù)中心能源使用的影響,目的是為優(yōu)化數(shù)據(jù)中心操作提供見解。采用了一種經(jīng)驗(yàn)方法來度量不同虛擬化配置下的服務(wù)器所消耗的能量,包括一個(gè)基準(zhǔn)案例和兩個(gè)替代的管理程序(即Xen和KVM,其中物理服務(wù)器被虛擬化為多個(gè)虛擬機(jī)(VMs)。在獲得了CPU使用率、任務(wù)執(zhí)行時(shí)間、電力和能源消耗的統(tǒng)計(jì)數(shù)據(jù)后,在本地計(jì)算出密集型任務(wù)和網(wǎng)絡(luò)密集流量下,對(duì)應(yīng)于云計(jì)算和數(shù)據(jù)中心的兩個(gè)重要資源、計(jì)算和網(wǎng)絡(luò)。
虛擬機(jī)監(jiān)控程序,也指虛擬機(jī)管理器(VMM),它是允許多個(gè)操作系統(tǒng)(OSs)同時(shí)在一臺(tái)服務(wù)器上運(yùn)行的虛擬化技術(shù)之一?,F(xiàn)有的管理程序基于它們與硬件平臺(tái)的關(guān)系,可以分為兩種類型。具體來說,Xen是一個(gè)type-1管理程序,它直接與底層硬件接口,并使用一個(gè)特權(quán)域0來管理其他內(nèi)核修改的客戶機(jī)。KVM被設(shè)計(jì)為一個(gè)type-2管理程序,其中虛擬化接口與實(shí)際物理硬件的作用相同。
Xen公開了一個(gè)超調(diào)用機(jī)制(也稱為半虛擬化接口),所有用戶操作系統(tǒng)都必須被修改以執(zhí)行特權(quán)操作(例如,更新頁表)。此外,還建議事件通知機(jī)制提供從實(shí)際設(shè)備中斷到VMs的虛擬中斷。相反,KVM通常使用完全虛擬化。在KVM之上的客戶OSs不需要改變,它們看起來是正常的Linux進(jìn)程。當(dāng)用戶OSs發(fā)出I/O指令時(shí),系統(tǒng)管理程序中的進(jìn)程上下文切換可以允許I/O信號(hào)通過。
Xen和KVM的虛擬化I/O機(jī)制的差異直接影響了虛擬服務(wù)器的能源消耗。Xen允許客戶在不調(diào)用主機(jī)OS的內(nèi)核的情況下進(jìn)行系統(tǒng)調(diào)用,而KVM則需要額外的內(nèi)核操作來支持I/O行為。額外的操作可能會(huì)轉(zhuǎn)化為額外的CPU周期和內(nèi)存訪問,這將進(jìn)一步導(dǎo)致額外的能源使用。
Xen中的默認(rèn)CPU調(diào)度器是基于信用的調(diào)度器。這個(gè)調(diào)度程序運(yùn)行在主機(jī)上的一個(gè)獨(dú)立的會(huì)計(jì)線程上,為每個(gè)虛擬CPU(VCPU)分配一定的信用。當(dāng)一個(gè)VCPU運(yùn)行時(shí),它會(huì)消耗它的信用。一旦VCPU耗盡了信用,它只在其他更節(jié)約的VCPU完成執(zhí)行時(shí)運(yùn)行。
KVM使用常規(guī)的Linux CPU和內(nèi)存調(diào)度器。默認(rèn)情況下,KVM使用完全公平的調(diào)度器(CFS)來將每個(gè)客戶視為正常的線程。在KVM上運(yùn)行的每個(gè)任務(wù)都有一個(gè)優(yōu)先級(jí),這決定了CPU周期和內(nèi)存分配的大小。
盡管有不同的機(jī)制,但這兩個(gè)CPU調(diào)度程序的目標(biāo)是平衡多核上的全局負(fù)載,以達(dá)到更好的分配,這將得到我們的驗(yàn)證。
圖1展示了我們實(shí)驗(yàn)的物理設(shè)置,該實(shí)驗(yàn)由三個(gè)相同的服務(wù)器組成。正在測試的機(jī)器是浪潮3060服務(wù)器,每個(gè)服務(wù)器包含一個(gè)四核Intel 2.13 GHz英特爾至強(qiáng)處理器,2GB內(nèi)存,500gb硬盤和1千兆以太網(wǎng)卡。所有這些都連接到友訊gds-1024t 1000 Base-T開關(guān)試驗(yàn)網(wǎng)。Kill-A-Watt功率表,標(biāo)準(zhǔn)精度為0.2%,用于測量每個(gè)服務(wù)器的能源使用情況。使用Linux內(nèi)核2.6.18的CentOS 5.6-final-x86 64被用作主機(jī)和客戶系統(tǒng)的操作系統(tǒng)平臺(tái)。Xen 3.0.3和KVM 83分別安裝在服務(wù)器B和C上。3個(gè)客戶虛擬機(jī)配置4個(gè)VCPUs、512mb RAM和50gb映像。我們保留了所有的軟件參數(shù)。
我們的實(shí)驗(yàn)由另一臺(tái)計(jì)算機(jī)控制,它也與內(nèi)部網(wǎng)相連,以獲得基準(zhǔn)時(shí)間、能源和電能消耗。每個(gè)服務(wù)器負(fù)責(zé)收集其平均CPU使用量。
圖2:局部任務(wù)基準(zhǔn)的相對(duì)能量開銷
圖3:網(wǎng)絡(luò)基準(zhǔn)測試的相對(duì)能量開銷
圖4:完成時(shí)間曲線
圖5:能耗曲線
我們從收集所有服務(wù)器空閑時(shí)的背景能耗開始。在此之后,一組本地和網(wǎng)絡(luò)的連接被啟動(dòng),以強(qiáng)調(diào)所有的三個(gè)服務(wù)器。詳細(xì)的測試用例說明如下:
(1)本地計(jì)算基準(zhǔn):Linux中的bc命令用于計(jì)算常量π到精確的水平(小數(shù)點(diǎn)后10萬位數(shù))。我們同時(shí)運(yùn)行多個(gè)實(shí)例來生成計(jì)算密集型負(fù)載。5個(gè)案例的數(shù)據(jù)數(shù)量從3個(gè)到7個(gè),測試了2個(gè)或3個(gè)活動(dòng)域。在物理機(jī)器上,所有實(shí)例都是在相同的操作系統(tǒng)上執(zhí)行的,而在虛擬服務(wù)器上,并發(fā)實(shí)例分布在所有活動(dòng)域上。
(2)Http請(qǐng)求基準(zhǔn):通過Http請(qǐng)求模擬網(wǎng)絡(luò)密集型的流量基準(zhǔn)。
在服務(wù)器端,測試的所有服務(wù)器上配置了三個(gè)Apache服務(wù)器。在物理上,三個(gè)HTTP服務(wù)器在三個(gè)TCP端口上執(zhí)行連接隔離。對(duì)于虛擬機(jī),三個(gè)實(shí)例在所有活躍的客戶域上均勻分布,用于2或3個(gè)活動(dòng)域。使用相同的TCP端口進(jìn)行公平的比較。在HTTP服務(wù)器上存儲(chǔ)的內(nèi)容是從商業(yè)web站點(diǎn)檢索的1000個(gè)唯一文件,平均文件大小為10.8 KB。
在客戶端,我們使用AB(Apache Bench)工具模擬真實(shí)的Web流量。配置了三個(gè)客戶端來生成特定速率的http GET請(qǐng)求,每個(gè)請(qǐng)求都將使用一個(gè)Apache服務(wù)器實(shí)例。每個(gè)客戶機(jī)向每個(gè)文件發(fā)送5000個(gè)請(qǐng)求。在這個(gè)測試概要文件中,傳輸?shù)臄?shù)據(jù)的總體大小可以達(dá)到大約150 GB。
我們的實(shí)驗(yàn)產(chǎn)生了各種請(qǐng)求率,將能量使用作為工作負(fù)載的函數(shù)。具體來說,有2500、5000、10000、15000個(gè)請(qǐng)求/秒被用來模擬低、中等、高和峰值的Web流量負(fù)載,這是由真正的商業(yè)Web服務(wù)器的工作負(fù)載提出的
(1)虛擬服務(wù)器比物理服務(wù)器消耗更少的能量。具體來說,當(dāng)執(zhí)行5個(gè)實(shí)例時(shí)(實(shí)例中比CPU核心的數(shù)量多一個(gè)),基于Xen的服務(wù)器的能量開銷為負(fù),如圖2所示。
圖2可以理解為在多核服務(wù)器中并發(fā)進(jìn)程和CPU核心之間的相互作用。在這種情況下,基于Xen的服務(wù)器,運(yùn)行2個(gè)或3個(gè)VMs,消耗的時(shí)間比物理服務(wù)器少10%,消耗的能量也少了11%。對(duì)于基于KVM的服務(wù)器,在大多數(shù)情況下,CPU調(diào)度器的優(yōu)點(diǎn)被額外的系統(tǒng)管理程序所抵消,除了在配置了兩個(gè)活躍的VMs之外,導(dǎo)致節(jié)省了比物理服務(wù)器的2%的能量。這一發(fā)現(xiàn)表明,如果運(yùn)行過程和cpu核心之間沒有綁定,本地操作系統(tǒng)就不能真正利用多核架構(gòu);相比之下,基于Xen或KVM的虛擬化系統(tǒng)可以將計(jì)算資源劃分為更小的部分,從而在活躍的VMs之間實(shí)現(xiàn)更好的資源分配,以節(jié)省能源。
(2)基于KVM的服務(wù)器比Xen-base服務(wù)器消耗更多的能量。例如,在處理7個(gè)并行任務(wù)時(shí),2個(gè)KVM虛擬機(jī)消耗的能量超過2個(gè)Xen VMs的5.4%,而3個(gè)KVM VMs和3個(gè)Xen VMs之間的差距達(dá)到了23%。這是因?yàn)镵VM管理程序比Xen管理程序消耗更多的CPU周期,占用更高的內(nèi)存占用空間。額外的需求轉(zhuǎn)化為更高的能源消耗。
(3)活動(dòng)VMs的數(shù)量影響了基于KVM的服務(wù)器的能源使用情況。特別是在配置3個(gè)活躍的VMs時(shí),基于KVM的服務(wù)器消耗的能量比在同一臺(tái)服務(wù)器上配置的兩個(gè)活躍的VMs消耗的能量要多。這可以歸因于頻繁的鎖持有者搶占(LHP)機(jī)制。當(dāng)主機(jī)調(diào)度VCPU線程時(shí),基于KVM的服務(wù)器上的客戶機(jī)VCPU可能被搶占。如果搶占的VCPU在關(guān)鍵部分運(yùn)行,那么鎖將從客戶VMs的角度持有一定時(shí)間。在更活躍的VMs中,LHP的概率更高。一旦LHP發(fā)生,CPU資源就會(huì)被簡單地浪費(fèi)在鎖定期間,而這反過來又會(huì)增加任務(wù)完成時(shí)間。因此,以KVM為基礎(chǔ)的服務(wù)器和3個(gè)活躍的VMs的平均功耗最低,但任務(wù)完成時(shí)間最長。
圖6:虛擬化能量開銷
在圖3中繪制了HTTP基準(zhǔn)的結(jié)果。
(1)網(wǎng)絡(luò)密集型流量的虛擬化開銷比計(jì)算密集型流量要大得多。對(duì)于基于Xen的服務(wù)器,計(jì)算密集型流量的能量開銷小于5%,而網(wǎng)絡(luò)密集型流量的開銷可能上升到70%。同樣的情況也發(fā)生在基于KVM的服務(wù)器上。這一發(fā)現(xiàn)的原因至少有兩方面。首先,對(duì)于網(wǎng)絡(luò)流量,虛擬化服務(wù)器的CPU使用率要遠(yuǎn)遠(yuǎn)高于本地服務(wù)器;對(duì)于本地計(jì)算任務(wù),所有服務(wù)器的CPU使用情況幾乎是相同的。這一差異表明,在KVM的Xen或TUN/TAP中,VFR/VIF的預(yù)算為CPU周期。其次,根據(jù)鎖持有優(yōu)先權(quán)(LHP)的概率,虛擬服務(wù)器的I/O密集型工作負(fù)載的概率為39%。高頻率的LHP轉(zhuǎn)化為高能源成本。
(2)虛擬服務(wù)器的能量開銷與活躍的VMs的數(shù)量相關(guān)。對(duì)于3個(gè)活動(dòng)的KVM VMs,能量開銷大約是兩個(gè)活躍的VMs的1.5倍;類似地,3個(gè)活躍的Xen VMs消耗了2個(gè)活躍的VMs的幾乎兩倍的開銷。此外,基于KVM的服務(wù)器的差距也越來越大。例如,在15000 請(qǐng)求次/秒的情況下,KVM的活動(dòng)VMs和2個(gè)活動(dòng)VMs之間的開銷差距超過80%;而Xen的約為20%。
(3)基于KVM的服務(wù)器的網(wǎng)絡(luò)吞吐量最大達(dá)到10000個(gè)請(qǐng)求次/秒和15000個(gè)請(qǐng)求次/秒。圖4和圖5使這個(gè)發(fā)現(xiàn)非常清楚。
當(dāng)請(qǐng)求率為15000個(gè)請(qǐng)求次/秒時(shí),基于kvm的服務(wù)器需要更長的時(shí)間來完成任務(wù),因此消耗了更多的能量,相比之下,10000次的請(qǐng)求次/秒就需要消耗更多的能量。作為一種比較,物理機(jī)和基于Xen的服務(wù)器的任務(wù)完成時(shí)間和能源成本隨著請(qǐng)求率的增加到15000個(gè)請(qǐng)求次/秒而單調(diào)減少。由于KVM的額外內(nèi)存占用。在Apache服務(wù)器中,每個(gè)服務(wù)請(qǐng)求都需要特定的內(nèi)存??梢酝瑫r(shí)服務(wù)的請(qǐng)求的最大數(shù)量與可用資源的數(shù)量成比例。對(duì)于KVM來說,額外的內(nèi)存占用會(huì)縮小請(qǐng)求服務(wù)可用內(nèi)存的數(shù)量。
(4)與服務(wù)器空閑時(shí)所消耗的功率相比,服務(wù)器在不同負(fù)載條件下消耗的邊際功率是有限的。具體地說,服務(wù)器在不同的網(wǎng)絡(luò)請(qǐng)求級(jí)別下消耗的額外能量最多為37.3%,而本地計(jì)算基準(zhǔn)的額外功耗為57.6%。此外,邊際功耗與所觀察到的CPU使用率高度相關(guān)。因此,我們的實(shí)驗(yàn)驗(yàn)證了服務(wù)器以前的功耗模型,在此模型中,服務(wù)器的功耗幾乎可以看作是CPU使用的一個(gè)affline函數(shù),而空閑功耗為y軸截距。y軸截距要盡可能小,才能達(dá)到能量比例的結(jié)構(gòu)。
(5)虛擬化服務(wù)器的能量開銷非常大。如圖6所示。
由一個(gè)多項(xiàng)式擬合線是彎曲的基于不同配置的功耗,權(quán)力差距基線和虛擬化服務(wù)器Xen和KVM增加隨著吞吐量的增加,在基于KVM的服務(wù)器的最大吞吐量。當(dāng)沒有網(wǎng)絡(luò)流量時(shí),Xen和基線之間的差距約為1%(0.8W),而基于kvm的服務(wù)器和基線服務(wù)器之間的差距約為10%(6.9W)。當(dāng)吞吐量增加到10000個(gè)請(qǐng)求次/秒時(shí),Xen的差距為15.2%(10.8W),KVM的差距為11.2%(7.9W)。
本文對(duì)服務(wù)器虛擬化對(duì)能源效率的影響進(jìn)行了實(shí)證研究。通過密集的測量,我們獲得了來自本地服務(wù)器的能源使用的統(tǒng)計(jì)數(shù)據(jù),以及Xen和KVM的虛擬化服務(wù)器,以及基于我們的動(dòng)機(jī)的一些發(fā)現(xiàn)。最后,我們揭示了虛擬服務(wù)器之間的基本平衡,這將決定如何設(shè)計(jì)和部署服務(wù)器整合來控制數(shù)據(jù)中心的能源使用。
參考文獻(xiàn)
[1]羅亮,吳文峻,張飛.面向云計(jì)算數(shù)據(jù)中心的能耗建模方法[J].軟件學(xué)報(bào),2014,25(07):1371-1387.
[2]王德文,劉楊.一種電力云數(shù)據(jù)中心的任務(wù)調(diào)度策略[J].電力系統(tǒng)自動(dòng)化,2014,38(08):61-66+97.
[3]劉德欣,閆永明,郭軍等.云環(huán)境下基于多目標(biāo)決策的待整合服務(wù)器選擇方法研究[J].小型微型計(jì)算機(jī)系統(tǒng),2016,37(04):699-704.
[4]李佟,葛敬國,鄂躍鵬等.基于標(biāo)簽的POF網(wǎng)絡(luò)虛擬化技術(shù)研究[J].計(jì)算機(jī)應(yīng)用研究,2017(03):1-10.
[5]孫超.服務(wù)器虛擬化技術(shù)的應(yīng)用[J].電子技術(shù)與軟件工程,2017(10):31.
[6]史椸,馮雨聲,齊勇等.多用戶服務(wù)器程序自恢復(fù)系統(tǒng)[J].軟件學(xué)報(bào),2015,26(08):1907-1924.
[7]吳迪,薛政,潘嶸.基于XEN云平臺(tái)的網(wǎng)絡(luò)安全實(shí)驗(yàn)教學(xué)[J].實(shí)驗(yàn)室研究與探索,2013,32(07):62-66.
[8]范偉,孔斌,張珠君等.KVM虛擬化動(dòng)態(tài)遷移技術(shù)的安全防護(hù)模型[J].軟件學(xué)報(bào),2016,27(06):1402-1416.
[9]黃秋蘭,李莎,程耀東等.高能物理計(jì)算環(huán)境中KVM虛擬機(jī)的性能優(yōu)化與應(yīng)用[J].計(jì)算機(jī)科學(xué),2015,42(01):67-70.
[10]湯儒,李秦偉.Openstack云環(huán)境中KVM虛擬機(jī)性能分析[J].微型機(jī)與應(yīng)用,2013,32(23):94-96+100.
[11]曾少寧,汪華斌,袁秀蓮等.應(yīng)用虛擬化技術(shù)的計(jì)算機(jī)虛擬實(shí)驗(yàn)平臺(tái)[J].科技通報(bào),2013,29(02):203-205.
[12]魏小鋒,郭玉東,林鍵.基于MNT隨機(jī)化容器文件系統(tǒng)安全性加強(qiáng)技術(shù)[J].計(jì)算機(jī)工程與應(yīng)用,2017(04):1-6.
[13]王艷,陳衛(wèi)衛(wèi).基于Nginx替代Apache在高并發(fā)WEB負(fù)載均衡系統(tǒng)中的應(yīng)用[J].電子測試,2015(06):88-92.