彭麗蘋,呂曉丹,蔣朝惠
貴州大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,貴陽 550025
近年來,各種各樣的云平臺(tái)層出不窮,基于云平臺(tái)的應(yīng)用也在急劇增長(zhǎng),云計(jì)算給社會(huì)和國家?guī)淼睦娓遣谎远?。隨著云計(jì)算的廣泛應(yīng)用,數(shù)據(jù)中心的規(guī)模也在不斷擴(kuò)大[1],亞馬遜、谷歌、阿里巴巴、HP等巨頭公司都擁有自己的云平臺(tái),這些云平臺(tái)擁有的數(shù)據(jù)中心節(jié)點(diǎn)少則上萬臺(tái),多則上百萬臺(tái)。據(jù)資料顯示,亞馬遜構(gòu)建了全球最大的云計(jì)算平臺(tái),數(shù)據(jù)中心的節(jié)點(diǎn)已經(jīng)多達(dá)200萬臺(tái),并在持續(xù)擴(kuò)大。然而,隨著數(shù)據(jù)中心規(guī)模的擴(kuò)大,數(shù)據(jù)中心集群能耗也在急劇增長(zhǎng)。事實(shí)上,在實(shí)際生產(chǎn)中,能耗成本占數(shù)據(jù)中心總體擁有成本(Total Cost of Ownership,TCO)的很大一部分。據(jù)統(tǒng)計(jì),2015年全球數(shù)據(jù)中心的用電量占世界總用電量的1.1%~1.5%,而我國數(shù)據(jù)中心耗電量約為1.0×103TWh,相當(dāng)于三峽水電站一年的發(fā)電量。在過去的十年里,雖然使用了虛擬化技術(shù),數(shù)據(jù)中心服務(wù)器的使用率卻一直持續(xù)穩(wěn)定在12%~18%之間,浪費(fèi)了絕大部分電量。
針對(duì)上述問題,研究者們做了大量研究。Leverich等人在文獻(xiàn)[2]中首次提出了關(guān)閉部分節(jié)點(diǎn)以節(jié)約集群能耗的思想。他們對(duì)Hadoop集群中節(jié)點(diǎn)的狀態(tài)進(jìn)行統(tǒng)計(jì)分析,發(fā)現(xiàn)大量節(jié)點(diǎn)在很多時(shí)候都處于非活躍狀態(tài),節(jié)點(diǎn)的CPU利用率非常低,于是通過關(guān)閉部分節(jié)點(diǎn)來節(jié)約集群能耗,但他們并沒有考慮集群性能問題。Kaushik等人在文獻(xiàn)[3]中提出了一種能耗感知的異構(gòu)集群數(shù)據(jù)放置方法,第一次將HDFS集群分為熱區(qū)和冷區(qū)兩個(gè)部分。熱區(qū)用大量高性能的服務(wù)器存放訪問率高的熱點(diǎn)數(shù)據(jù),冷區(qū)用少量大容量服務(wù)器存放訪問率低的數(shù)據(jù),并通過將冷區(qū)服務(wù)器設(shè)置成非活躍的低能耗模式來節(jié)約數(shù)據(jù)中心的能耗,但熱區(qū)消耗的電量遠(yuǎn)超過冷區(qū),他們并沒有提出針對(duì)熱區(qū)服務(wù)器的能耗管理策略。
基于云計(jì)算虛擬化環(huán)境的虛擬機(jī)動(dòng)態(tài)整合技術(shù)是一種節(jié)約數(shù)據(jù)中心能耗的重要技術(shù)。該技術(shù)通過將輕負(fù)載的虛擬機(jī)有效整合到少量物理服務(wù)器上運(yùn)行,并關(guān)閉空閑的物理服務(wù)器來節(jié)約集群能耗。李俊濤等人在文獻(xiàn)[4]中提出了一種基于布朗指數(shù)法的虛擬機(jī)動(dòng)態(tài)整合方法。文中采用布朗指數(shù)平滑法建立預(yù)測(cè)模型,并通過主機(jī)的歷史負(fù)載數(shù)據(jù)來預(yù)測(cè)CPU的使用率,進(jìn)而確定需要遷移的虛擬機(jī)和其目的主機(jī),以此來合理配置數(shù)據(jù)中心資源和節(jié)約能耗。但文中并沒有考慮虛擬機(jī)過度整合問題,資源的有效整合并不是往最少數(shù)量的服務(wù)器上裝滿負(fù)載或保證每個(gè)服務(wù)器的資源得到100%的利用,這樣有可能達(dá)不到節(jié)能的效果。
建立能耗模型對(duì)數(shù)據(jù)中心能耗進(jìn)行評(píng)估預(yù)測(cè)是很多能耗感知資源調(diào)度方法的研究基礎(chǔ),對(duì)數(shù)據(jù)中心能耗管理具有重大意義。宋杰等人在文獻(xiàn)[5]中分別針對(duì)單機(jī)環(huán)境和云環(huán)境中的CPU密集型、I/O密集型、交互型運(yùn)算提出了相應(yīng)的能效計(jì)算方法和優(yōu)化方法,并指出云系統(tǒng)能效利用率有很大提升空間,而研究任務(wù)的調(diào)度和執(zhí)行算法是最有效的方法,為接下來的能效優(yōu)化研究提供了借鑒。
能耗感知資源調(diào)度是目前數(shù)據(jù)中心常用的節(jié)能方法。黃慶佳在文獻(xiàn)[6]中提出了一種能耗成本感知的云數(shù)據(jù)中心資源調(diào)度機(jī)制,從大規(guī)模并行化任務(wù)處理能耗、虛擬機(jī)動(dòng)態(tài)整合能耗和跨地域多數(shù)據(jù)中心能耗成本三方面解決數(shù)據(jù)中心能耗最小化問題。此外,改進(jìn)的蟻群算法、神經(jīng)網(wǎng)絡(luò)算法、遺傳算法等也被廣泛地用來解決該類問題。
以上總結(jié)的方法具有交叉性,可以多種方法結(jié)合使用以達(dá)到節(jié)能的目的。例如房丙午等人將虛擬機(jī)遷移技術(shù)和能耗感知資源調(diào)度技術(shù)相結(jié)合,提出了一種基于二階段迭代啟發(fā)式算法的能耗和性能感知的調(diào)度算法以節(jié)約數(shù)據(jù)中心能耗[7]。
Ceph[8]是一個(gè)分布式文件系統(tǒng)。Sage等人針對(duì)Ceph集群提出了CRUSH算法,CRUSH算法是一種偽隨機(jī)Hash值散列算法[9],通過計(jì)算來確定要存儲(chǔ)數(shù)據(jù)的OSD位置,進(jìn)而決定數(shù)據(jù)的存儲(chǔ)位置。與傳統(tǒng)的元數(shù)據(jù)機(jī)制相比,CRUSH算法消除了中心式的服務(wù)器/網(wǎng)關(guān)需求。沈良好等人在文獻(xiàn)[10]中對(duì)Ceph集群數(shù)據(jù)布局在節(jié)能方面的不足進(jìn)行了分析,提出了一種Ceph集群的多級(jí)能耗管理策略。他們將集群節(jié)點(diǎn)分為多個(gè)功耗組,通過關(guān)閉部分功耗組來節(jié)約集群能耗,但功耗組的劃分粒度很大,很難達(dá)到最大限度節(jié)能的目的。
本文針對(duì)Ceph集群能耗問題,提出了一種能耗管理策略。建立了一個(gè)系統(tǒng)能耗優(yōu)化模型,并在該優(yōu)化模型的基礎(chǔ)上提出了一種Ceph集群的數(shù)據(jù)副本放置策略,使得云平臺(tái)在滿足用戶SLA需求和保證服務(wù)質(zhì)量(Quality of Service,QOS)的前提下,達(dá)到盡可能節(jié)約數(shù)據(jù)中心能耗的目的。最后,在真實(shí)的Ceph集群環(huán)境中驗(yàn)證了該方法的有效性。
Ceph是由Sage等人提出的一個(gè)分布式文件存儲(chǔ)系統(tǒng),因具有統(tǒng)一存儲(chǔ)(塊存儲(chǔ)、對(duì)象存儲(chǔ)、文件存儲(chǔ))的特性及高擴(kuò)展性、高性能、高可靠性,而得到工業(yè)界的廣泛青睞。Ceph集群主要由監(jiān)視器MON、對(duì)象存儲(chǔ)設(shè)備OSD、可靠自治分布式對(duì)象存儲(chǔ)(Reliable Autonomic Distributed Object Store,RADOS)、Librados庫、塊設(shè)備(RBD)、RADOS網(wǎng)關(guān)接口(RGW)、元數(shù)據(jù)服務(wù)器(MDS)、CephFS組成。MON監(jiān)視整個(gè)集群的健康狀態(tài),Ceph集群中的所有數(shù)據(jù)都是以對(duì)象的形式存儲(chǔ)的,RADOS負(fù)責(zé)保存這些對(duì)象,它是Ceph集群存儲(chǔ)的基礎(chǔ)。Librados是訪問RADOS 的庫,支持PHP、Java、Ruby、Pathon等多種語言。而RGW僅用于對(duì)象存儲(chǔ),MDS和CephFS僅用于文件存儲(chǔ)。因本文重點(diǎn)解決Ceph集群數(shù)據(jù)副本存儲(chǔ)帶來的能耗問題,所以下面詳細(xì)介紹了Ceph集群數(shù)據(jù)存儲(chǔ)過程。
當(dāng)Ceph客戶端有寫請(qǐng)求時(shí),客戶端首先向MON提出創(chuàng)建新用戶和認(rèn)證請(qǐng)求,認(rèn)證通過之后,MON會(huì)將集群狀態(tài)圖Cluster Map發(fā)送給Ceph客戶端,客戶端經(jīng)DATA STRIPING過程將數(shù)據(jù)分成很多碎片strinpings,這些碎片會(huì)按照一定的方式組成一個(gè)或多個(gè)64 MB(若不足64 MB,就用字符0填充)的object對(duì)象,并用Object ID唯一標(biāo)識(shí)。然后生成一個(gè)RBD并指定一個(gè)Pool ID,接著利用CRUSH算法將Object映射到PG中,然后根據(jù)PG Name、PG、Rule規(guī)則和CRUSH算法將PG映射到集群的OSD中,最后將要存儲(chǔ)的PG存儲(chǔ)在主OSD中,主OSD負(fù)責(zé)將剩下的數(shù)據(jù)副本寫到次OSD中。當(dāng)該P(yáng)G的最后一個(gè)副本成功存儲(chǔ)到OSD中時(shí),OSD會(huì)向Ceph客戶端發(fā)送一個(gè)存儲(chǔ)完成報(bào)告。一個(gè)主OSD和多個(gè)次OSD組成該P(yáng)G的活動(dòng)集(Active Set),當(dāng)活動(dòng)集中的主OSD出錯(cuò)時(shí),一個(gè)次OSD會(huì)被設(shè)置成主OSD。活動(dòng)集中各個(gè)OSD之間可以相互通信,當(dāng)其中一個(gè)OSD出錯(cuò)時(shí),會(huì)有一個(gè)Peering過程來重新平衡數(shù)據(jù),而該過程是由主OSD負(fù)責(zé)的。整個(gè)數(shù)據(jù)存儲(chǔ)流程如圖1所示。由于CRUSH算法是一種偽隨機(jī)Hash算法,且Ceph有自動(dòng)平衡數(shù)據(jù)的機(jī)制,所以當(dāng)集群穩(wěn)定時(shí)數(shù)據(jù)總是盡可能均勻地存放在集群中。
圖1 Ceph客戶端數(shù)據(jù)存儲(chǔ)過程
圖2 運(yùn)行區(qū)機(jī)架邏輯部署圖
Sage等人在提出Ceph分布式文件系統(tǒng)時(shí),特別注重系統(tǒng)的性能和吞吐量,對(duì)于集群能耗問題并沒有作太多的考慮。數(shù)據(jù)中心服務(wù)器的利用率非常低,而CRUSH算法是一種偽隨機(jī)算法,加之Ceph集群的自我平衡機(jī)制,Ceph總是盡可能地將數(shù)據(jù)均勻存放在集群的物理節(jié)點(diǎn)中,這就必然導(dǎo)致了很多服務(wù)器的負(fù)載都非常低,因此集群中的許多資源都處于空閑狀態(tài)。Ceph作為云平臺(tái)的存儲(chǔ)系統(tǒng),如何合理有效地利用Ceph集群的資源以達(dá)到節(jié)能的目的,正是節(jié)約數(shù)據(jù)中心能耗需要做的重點(diǎn)工作。
服務(wù)等級(jí)協(xié)議SLA是數(shù)據(jù)中心供應(yīng)商和客戶簽訂的一項(xiàng)重要協(xié)議,其中包含了機(jī)房環(huán)境、業(yè)務(wù)正常運(yùn)行時(shí)間、系統(tǒng)響應(yīng)時(shí)間、網(wǎng)絡(luò)帶寬等重要指標(biāo),本文在以降低數(shù)據(jù)中心能耗為目標(biāo)的同時(shí),綜合考慮這些重要指標(biāo),將TSLA表示為用戶要求的應(yīng)用完成限制時(shí)間。
大量研究表明[11-14],CPU的使用率與數(shù)據(jù)中心的能耗成正相關(guān)關(guān)系。磁盤作為文件系統(tǒng)的存儲(chǔ)媒介,所產(chǎn)生的存儲(chǔ)能耗占到整體能耗的65%[15],很多研究者都建立了磁盤能耗模型來預(yù)測(cè)數(shù)據(jù)中心的能耗問題,為精確的能耗管理技術(shù)奠定了基礎(chǔ)[16]。本文通過監(jiān)控集群中節(jié)點(diǎn)的CPU和磁盤的使用率來調(diào)節(jié)整個(gè)Ceph集群的狀態(tài),并且以用戶應(yīng)用程序所要求的完成時(shí)間TSLA作為參數(shù),建立能耗模型,然后基于該模型提出了一種數(shù)據(jù)副本放置策略,使得Ceph集群在滿足用戶SLA需求和保證用戶QoS的前提下,有效降低Ceph集群的能耗。
假設(shè)Ceph集群分為運(yùn)行區(qū)和待機(jī)區(qū)。兩個(gè)區(qū)的服務(wù)器分別位于不同的機(jī)架上,待機(jī)區(qū)的Ceph節(jié)點(diǎn)用來應(yīng)對(duì)應(yīng)用高峰期的極端情況,所以待機(jī)區(qū)的節(jié)點(diǎn)大多數(shù)時(shí)間都處于待機(jī)狀態(tài)。運(yùn)行區(qū)有a個(gè)機(jī)架,機(jī)架Racki用 Ai(1≤i≤a)編碼;待機(jī)區(qū)有b個(gè)機(jī)架,機(jī)架Racki用Bi(1≤i≤b)編碼。每個(gè)機(jī)架中有m個(gè)集群節(jié)點(diǎn),將運(yùn)行區(qū)中的機(jī)架進(jìn)行分組,k個(gè)機(jī)架為一組,若最后一組不足k個(gè)機(jī)架,則用(k-a%k)個(gè)虛擬機(jī)架(虛擬機(jī)架中節(jié)點(diǎn)的計(jì)算能力為0)補(bǔ)足,則整個(gè)運(yùn)行區(qū)中的機(jī)架被分組。運(yùn)行區(qū)機(jī)架的邏輯部署如圖2所示,最后一臺(tái)橙色的機(jī)架表示虛擬機(jī)架。用aij(0≤i≤k,0≤j≤L)表示對(duì)應(yīng)機(jī)架At(t=L×(i-1)+j)中一臺(tái)服務(wù)器的計(jì)算能力參數(shù),該數(shù)據(jù)可從集群的監(jiān)控平臺(tái)讀取。虛擬機(jī)架中的服務(wù)器計(jì)算能力參數(shù)設(shè)為0,即圖2中aLk=0。假設(shè)系統(tǒng)有n個(gè)應(yīng)用程序需要執(zhí)行,每個(gè)應(yīng)用程序?qū)?yīng)的里的 K 是一個(gè)常數(shù)系數(shù),可以根據(jù)TSLA的大小來調(diào)整,而TSLA指用戶應(yīng)用完成限制時(shí)間。令:
優(yōu)化模型的基本形式如下:
其中X為決策變量、Pmin為目標(biāo)函數(shù)、s.t.為約束條件。A為節(jié)點(diǎn)的計(jì)算能力參數(shù)矩陣,B為用戶的TSLA矩陣,W為TSLA調(diào)整參數(shù),Pmin指Ceph集群的最小能耗,為集群狀態(tài)矩陣,為的元素,φn表示的附加節(jié)點(diǎn),η為啟用待機(jī)區(qū)服務(wù)器產(chǎn)生的能耗。具體的參數(shù)含義和求解過程將在3.2節(jié)中介紹。
集群中CPU和磁盤的使用率與系統(tǒng)能耗問題始終是一個(gè)很難平衡的問題。如果關(guān)閉的節(jié)點(diǎn)太多,雖然能大大減少系統(tǒng)能耗,但也會(huì)使得集群的吞吐量嚴(yán)重下降;如果關(guān)閉的節(jié)點(diǎn)太少,雖然保證了系統(tǒng)的吞吐量,但卻達(dá)不到大量節(jié)能的目的。因此,集群能耗最小化問題是NP-hard難題,又由于集群中各個(gè)節(jié)點(diǎn)的計(jì)算性能不同,因此集群最小化能耗問題屬于NP-hard問題中的線性組合優(yōu)化問題。該類問題的求解是上個(gè)世紀(jì)的難題,到目前為止研究者們已經(jīng)提出了許多算法能很好地求得該類問題的解,如背包算法、模擬退火算法、遺傳算法等[17],但不同的算法有不同的優(yōu)勢(shì),應(yīng)用中可根據(jù)自己的實(shí)際情況選擇合適的算法求得能耗模型中決策變量X。
得到方程組AX+W=B的解X,將X與矩陣A的每個(gè)行向量作相與運(yùn)算,便可得到放置用戶數(shù)據(jù)后的集群狀態(tài)矩陣A*,由于引入了TSLA調(diào)整參數(shù)W(-1<W<0)且取值盡可能的小,故得到的 X為不等式AX≥B的最優(yōu)解。即在滿足用戶SLA需求的情況下,要開啟的最小節(jié)點(diǎn)數(shù)為果只開啟Tmin個(gè)節(jié)點(diǎn),相當(dāng)于在不做任何處理的基礎(chǔ)上,關(guān)閉了大量的節(jié)點(diǎn),那么在大規(guī)模并行處理時(shí)集群的吞吐量和數(shù)據(jù)可用性會(huì)嚴(yán)重下降,為了保證Ceph集群的服務(wù)質(zhì)量,下文提出了一種數(shù)據(jù)副本放置策略。
數(shù)據(jù)副本放置策略是影響數(shù)據(jù)中心能耗的重要因素,良好的數(shù)據(jù)副本放置策略能夠有效地降低數(shù)據(jù)中心的能耗[17]。本文基于第3章提出的集群能耗模型,提出了一種數(shù)據(jù)副本放置策略。Tmin已經(jīng)解決了用戶的SLA問題,因此在此基礎(chǔ)上的副本放置問題主要考慮Ceph集群數(shù)據(jù)的完整性和容錯(cuò)性。
Ceph集群有replicated和erasure兩種類型的存儲(chǔ)池pool,前一種是基于純數(shù)據(jù)的,后一種是基于糾刪碼的。本文提出的是基于純數(shù)據(jù)的PG副本放置策略。假設(shè)一個(gè)應(yīng)用程序有R≥3個(gè)PG副本需要存放,hostm為該P(yáng)G的主OSD所在節(jié)點(diǎn),Ai(1≤i≤a)為hostm所在機(jī)架。將其中一個(gè)PG副本存放在與hostm相鄰的節(jié)點(diǎn)中,然后以Ai為中心,將另一個(gè)PG副本存儲(chǔ)在與其左右相鄰的s個(gè)機(jī)架中,假設(shè)該機(jī)架為。主機(jī)架 Ai(PG的主OSD所在機(jī)架)的數(shù)據(jù)恢復(fù)域(Data Recovery Field,DRF)為 ?i(t)={At|i-s≤t≤i+s,t≠i} ,它總是關(guān)于主機(jī)架對(duì)稱,以此來保證數(shù)據(jù)恢復(fù)過程中的數(shù)據(jù)傳輸時(shí)間,而又體現(xiàn)了數(shù)據(jù)存儲(chǔ)的隨機(jī)性。極端情況下,為了應(yīng)對(duì)高峰期,數(shù)據(jù)的PG副本數(shù)R可能大于3,那么將剩下的R-3個(gè)PG副本隨機(jī)存放在待機(jī)區(qū)節(jié)點(diǎn)的OSD中。集群副本放置策略如圖3所示,其中Region1為運(yùn)行區(qū),Region2為待機(jī)區(qū)。
賓夕法尼亞州立大學(xué)的Shekhar Srikantaiah教授針對(duì)數(shù)據(jù)中心的資源利用率和能源消耗問題做了實(shí)驗(yàn),他指出當(dāng)磁盤利用率超過50%,CPU利用率超過70%時(shí),計(jì)算機(jī)消耗的能量將隨著磁盤使用率的增大而急劇上升[18],這就會(huì)導(dǎo)致磁盤的單位I/O能耗值(單位I/O能耗值=加,使得集群能效下降??紤]集群能效問題,實(shí)驗(yàn)基于3.2節(jié)中的最小開啟節(jié)點(diǎn)數(shù)目Tmin以及上章提出的數(shù)據(jù)副本放置策略,只將服務(wù)器的一半磁盤用作OSD,將節(jié)點(diǎn)的CPU平均使用率控制在70%左右。當(dāng)在Ceph Calamari中監(jiān)控到節(jié)點(diǎn)參數(shù)超出這個(gè)范圍時(shí),就把該服務(wù)器的計(jì)算能力置為0,那么由3.1節(jié)的能耗模型可知,將不會(huì)有新的數(shù)據(jù)存儲(chǔ)到該節(jié)點(diǎn)上。另外,由于Ceph集群有自我平衡的特性,將會(huì)嚴(yán)重影響該實(shí)驗(yàn)的進(jìn)行,所以在該實(shí)驗(yàn)中,通過修改Ceph集群的配置文件,關(guān)閉了Ceph集群的自動(dòng)平衡功能。
圖3 集群副本放置策略
為了驗(yàn)證和評(píng)估該策略的有效性,在Ceph集群環(huán)境中進(jìn)行了實(shí)驗(yàn)測(cè)試。實(shí)驗(yàn)中使用了13臺(tái)戴爾R710服務(wù)器。服務(wù)器的部署環(huán)境如下:運(yùn)行區(qū)包括a=12臺(tái)物理服務(wù)器;待機(jī)區(qū)包括b=1臺(tái)物理服務(wù)器;運(yùn)行區(qū)和待機(jī)區(qū)的服務(wù)器分別放在不同的機(jī)柜中,以便從IDC室的UPS中讀取耗電量。為了更真實(shí)地模擬異構(gòu)集群環(huán)境,在服務(wù)器上運(yùn)行了占用不同服務(wù)器計(jì)算資源的虛擬機(jī),并在集群中添加了3臺(tái)交換機(jī)(S3352P-SI 48口),將運(yùn)行區(qū)的服務(wù)器分開放在6個(gè)機(jī)架,則k=2,L=6;每個(gè)機(jī)架中放置了m=2臺(tái)服務(wù)器。服務(wù)器采用Centos7 64位操作系統(tǒng),所使用的Ceph版本為Jewel(10.2.5),數(shù)據(jù)副本數(shù)為3。用FIO測(cè)試軟件測(cè)試集群的吞吐量,用Ceph Calamari監(jiān)控Ceph集群狀態(tài),包括集群CPU使用情況、節(jié)點(diǎn)平均負(fù)載和集群IOPS等。整個(gè)Ceph集群的邏輯部署如圖4所示。
圖4 Ceph集群部署邏輯圖
OSD是Ceph集群中的主要能耗組件。針對(duì)運(yùn)行區(qū),假定服務(wù)器的平均功耗為Q,由A和X可得集群副本放置狀態(tài)圖第4章提出的數(shù)據(jù)副本策略需開啟的集群節(jié)點(diǎn)數(shù)目為表示恢復(fù)域中的另一個(gè)附加節(jié)點(diǎn)。在沒有啟動(dòng)待機(jī)區(qū)服務(wù)器的情況下,當(dāng)前狀態(tài)下的集群的總能耗為:
其中n(0≤n≤N且n為整數(shù))表示用戶SLA請(qǐng)求批次。
算法步驟如下:
步驟1輸入TSLA,即用戶應(yīng)用完成限制時(shí)間,得到B=1 000/TSLA,其中 K=1 000 。
步驟2從calamari中讀取CPU的使用率,并計(jì)算節(jié)點(diǎn)的CPU平均使用率,得到A。
步驟3由能耗模型計(jì)算出W和X,將A的行向量與向量X相與,得到集群狀態(tài)圖A*。
步驟4根據(jù)新得到的集群狀態(tài)圖修改crushmap的內(nèi)容,并將新的crushmap應(yīng)用于Ceph集群中。
步驟5計(jì)算出當(dāng)前集群總能耗p。
步驟6用FIO壓力測(cè)試工具,模擬不同的負(fù)載,進(jìn)行集群性能測(cè)試。
當(dāng)有新的用戶應(yīng)用需求時(shí),重復(fù)步驟1~6。
本文的具體實(shí)驗(yàn)過程如下:對(duì)運(yùn)行區(qū)的服務(wù)器進(jìn)行測(cè)試,向Ceph集群中存入40 GB數(shù)據(jù),數(shù)據(jù)的pg副本數(shù)為3,開始時(shí),可設(shè),其中 Rack7和Rack8是虛擬機(jī)架,假定第一個(gè)用戶的應(yīng)用完成時(shí)間TSLA=500 s,則 B1=(2 ,0)T,此時(shí)由能耗模型中的式(2)可解得:X1=(0 ,0,1,1)T,W1=0,由 A1和 X1可得 A*1=,根據(jù)該計(jì)算結(jié)果,僅將Rack3和Rack4中的所有服務(wù)器和機(jī)架Rack2中的1臺(tái)服務(wù)器切換到運(yùn)行狀態(tài),并將隔離域設(shè)置成host,其他機(jī)架中的服務(wù)器仍然處于待機(jī)狀態(tài),由于此時(shí)運(yùn)行區(qū)的大多數(shù)節(jié)點(diǎn)都處于待機(jī)狀態(tài),所以待機(jī)區(qū)的節(jié)點(diǎn)不需進(jìn)行狀態(tài)切換。可將crushmap的內(nèi)容做如下修改:
gRoot setA1{
id-1
alg straw
hash 0
item osd.0 weight 0.000
…… ……
item osd.7 weight 0.000
item osd.8 weight 0.010
…… ……
item osd.11 weight 0.010
item osd.12 weight 0.000
…… ……
item osd.15 weight 0.000
item osd.16 weight 0.010
…… ……
item osd.31 weight 0.010
item osd.32 weight 0.000
…… ……
item osd.52 weight 0.000
}
然后將此rule規(guī)則應(yīng)用到Ceph集群,分別將數(shù)據(jù)存放在第3個(gè)和第4個(gè)機(jī)架中的兩個(gè)節(jié)點(diǎn)和第2個(gè)機(jī)架的第1個(gè)節(jié)點(diǎn)中,其中2號(hào)機(jī)架為附加機(jī)架,可以計(jì)算出此時(shí)的集群能耗為4 400 W 。以此類推,當(dāng)有新的應(yīng)用請(qǐng)求時(shí),重復(fù)以上操作便可得到對(duì)應(yīng)的集群能耗。限于篇幅,現(xiàn)給出不同TSLA請(qǐng)求時(shí),各個(gè)機(jī)架中節(jié)點(diǎn)的平均CPU的使用率統(tǒng)計(jì)情況,如圖5所示。將不同TSLA請(qǐng)求下模型中的各參數(shù)值列于表1中。
圖5 各機(jī)架中節(jié)點(diǎn)的CPU平均使用率
經(jīng)一個(gè)月的數(shù)據(jù)統(tǒng)計(jì),服務(wù)器忙時(shí)的平均功耗大約為500 W,空閑時(shí)的平均功耗為200 W,可以計(jì)算出兩種情況下對(duì)應(yīng)OSD的平均能耗大致為125 W和50 W。在優(yōu)化前和優(yōu)化后,分別從Ceph集群中存儲(chǔ)40 GB數(shù)據(jù),數(shù)據(jù)的恢復(fù)域S=2,在用戶不同TSLA請(qǐng)求的情況下,監(jiān)控集群的運(yùn)行情況。圖6是處于運(yùn)行狀態(tài)的OSD個(gè)數(shù)對(duì)比圖。
圖6 集群中運(yùn)行的OSD對(duì)比圖
圖7為采用第3章的能耗優(yōu)化模型計(jì)算的集群能耗和采用該數(shù)據(jù)副本放置策略前后的實(shí)際集群能耗對(duì)比圖。從圖7中可以看到,當(dāng)集群穩(wěn)定時(shí),用優(yōu)化模型計(jì)算的能耗值與采用優(yōu)化數(shù)據(jù)副本策略所產(chǎn)生的實(shí)際能耗值基本保持一致,且誤差率100%)維持在6%左右,因此,使用該能耗優(yōu)化模型,能很好地預(yù)測(cè)集群能耗的走向,進(jìn)而方便對(duì)集群能耗的控制和管理。
表1 能耗模型各個(gè)參數(shù)
圖7 集群能耗對(duì)比圖
圖7中,隨著TSLA值的增大,節(jié)約的能耗由少變多再變少。這是因?yàn)?,TSLA=500 s時(shí),集群的負(fù)載太小,優(yōu)化前和優(yōu)化后集群中的節(jié)點(diǎn)產(chǎn)生的能耗都很少,所以節(jié)約電量的效果并不明顯。此外,計(jì)算時(shí)采用了節(jié)點(diǎn)能耗的最大值來計(jì)算,難免存在誤差。而當(dāng)1 000 s<TSLA<2 500 s時(shí),集群的負(fù)載適中,節(jié)點(diǎn)可調(diào)節(jié)的空間很大,所以優(yōu)化前和優(yōu)化后耗電量的差值增大,能耗節(jié)約效果明顯。而當(dāng)TSLA=2 500 s時(shí),集群的負(fù)載臨近上限,所以當(dāng)又有TSLA=3 000 s的用戶請(qǐng)求時(shí),集群的能耗幾乎不再增加。從圖6中也可以看出,當(dāng)TSLA=2 500 s時(shí),集群中運(yùn)行區(qū)的所有節(jié)點(diǎn)都已經(jīng)處于運(yùn)行狀態(tài),這就說明集群可調(diào)整的空間特別小,所以節(jié)約的能耗值偏低。從以上的分析中可得出一個(gè)結(jié)論:當(dāng)集群穩(wěn)定且TSLA值適中時(shí),采用該優(yōu)化數(shù)據(jù)副本放置策略的效果較好,節(jié)約的耗電量可達(dá)到14.3%,而當(dāng)服務(wù)器節(jié)點(diǎn)本身的能耗越大時(shí),節(jié)約的耗電量會(huì)高于這個(gè)值。
響應(yīng)時(shí)間是一個(gè)衡量集群服務(wù)質(zhì)量和性能的重要指標(biāo),它是滿足用戶SLA需求的前提條件。若響應(yīng)時(shí)間太長(zhǎng),必定會(huì)增加應(yīng)用的完成時(shí)間,用戶的SLA需求就得不到保證。但由于關(guān)閉了集群中的部分節(jié)點(diǎn),集群的性能和服務(wù)質(zhì)量必將受到影響,因此要控制集群的響應(yīng)時(shí)間,以保證集群的服務(wù)質(zhì)量,這也是不能關(guān)閉太多服務(wù)器的原因。本文采用FIO壓力測(cè)試軟件對(duì)集群進(jìn)行了模擬測(cè)試。圖8為采用該數(shù)據(jù)副本策略前后的集群響應(yīng)時(shí)間對(duì)比圖。包括順序讀和隨機(jī)讀,實(shí)驗(yàn)數(shù)據(jù)大小均為40 MB。
圖8 集群平均響應(yīng)時(shí)間
從圖8可以看到,集群采用該策略后,順序讀取數(shù)據(jù)的響應(yīng)時(shí)間增加了3.1%,而隨機(jī)讀數(shù)據(jù)的響應(yīng)時(shí)間反而變少了。由此可以看出,該數(shù)據(jù)副本放置策略在對(duì)集群的服務(wù)質(zhì)量影響不大的情況下,對(duì)集群能耗問題進(jìn)行了優(yōu)化,有效降低了數(shù)據(jù)中心能耗。
本文針對(duì)數(shù)據(jù)中心巨大的能耗問題,對(duì)系統(tǒng)進(jìn)行建模,并在此基礎(chǔ)上提出了一種基于Ceph集群的數(shù)據(jù)副本放置策略,最后在Ceph集群環(huán)境中驗(yàn)證了該策略的有效性。實(shí)驗(yàn)表明,該能耗管理策略,能在對(duì)集群服務(wù)質(zhì)量影響不大的前提下,有效減少集群能耗,達(dá)到了優(yōu)化集群能耗的目的。而如何有效利用待機(jī)區(qū)節(jié)點(diǎn),實(shí)現(xiàn)數(shù)據(jù)和應(yīng)用的遷移,是將來要做的工作。
:
[1]周品.Hadoop云計(jì)算實(shí)戰(zhàn)[M].北京:清華大學(xué)出版社,2012:10-11.
[2]Leverich J,Kozyrakis C.On the energy (in) efficiency of Hadoop clusters[J].ACM Sigops Operating Systems Review,2010,44(1):61-65.
[3]Kaushik R T,Bhandarkar M.GreenHDFS:towards an energyconserving,storage-efficient,hybrid Hadoop compute cluster[C]//International Conference on Power Aware Computing and Systems,2010:1-9.
[4]李俊濤,吳小開.基于布朗指數(shù)法的虛擬機(jī)動(dòng)態(tài)整合方法[J].計(jì)算機(jī)工程與應(yīng)用,2016,52(7):56-61.
[5]宋杰,李甜甜,閆振興,等.一種云計(jì)算環(huán)境下的能效模型和度量方法[J].軟件學(xué)報(bào),2012,23(2):200-214.
[6]黃慶佳.能耗成本感知的云數(shù)據(jù)中心資源調(diào)度機(jī)制研究[D].北京:北京郵電大學(xué),2014.
[7]房丙午,黃志球.云計(jì)算中能耗和性能感知的虛擬機(jī)優(yōu)化部署算法[J].計(jì)算機(jī)工程與科學(xué),2016,38(12):2419-2424.
[8]Weil S A,Brandt S A,Miller E L,et al.Ceph:a scalable,high-performance distributed file system[C]//Proceedings of the 7th Symposium on Operating Systems Design and Implementation,2006:307-320.
[9]Weil S A,Brandt S A,Miller E L,et al.CRUSHR:controlled,scalable,decentralized placement of replicated data[C]//Proceedings of 2006 ACM/IEEE Conference on Supercomputing.Tampa,USA:ACM Press,2006:367-378.
[10]沈良好,吳慶波,楊沙洲.基于Ceph的分布式存儲(chǔ)節(jié)能技術(shù)研究[J].計(jì)算機(jī)工程,2015,41(8):13-17.
[11]Ren C,Wang D,Urgaonkar B,et al.Carbon-aware energy capacity planning for datacenters[C]//2012 IEEE 20th International Symposium on Modeling,Analysis&Simulation of Computer and Telecommunication Systems(MASCOTS),2012:391-400.
[12]Feller E,Morin C,Leprince D.State of the art of power saving in clusters and results from the EDF case study[D].Institut National de Recherche en Informatique et en Automatique(INRIA),2010.
[13]羅亮,吳文峻,張飛.面向云計(jì)算數(shù)據(jù)中心的能耗建模方法[J].軟件學(xué)報(bào),2014(7):1371-1387.
[14]Kontorinis V,Zhang L E,Aksanli B,et al.Managing distributed UPS energy for effective power capping in data centers[C]//2012 39th Annual International Symposium on Computer Architecture(ISCA),2012:488-499.
[15]孫鑒,李戰(zhàn)懷,張曉,等.基于統(tǒng)計(jì)量的存儲(chǔ)系統(tǒng)磁盤功耗建模方法研究[J].計(jì)算機(jī)研究與發(fā)展,2016,53(7):1517-1531.
[16]Pinheiro E,Bianchini R.Energy conservation techniques for disk array-based servers[C]//ACM International Conference on Supercomputing,2014:369-379.
[17]邢文訓(xùn),謝金星.現(xiàn)代優(yōu)化計(jì)算方法[M].2版.北京:清華大學(xué)出版社,2005:113-208.
[18]Srikantaiah S,Kansal A,Zhao F.Energy aware consolidation for cloud computing[C]//Proceedings of the 2008 Conference on Power Aware Computing and Systems,2008:1-5.