有人把云計算技術視為個人電腦、互聯網之后的第三次革新浪潮,認為它即將甚至已經從根本上改變整個信息產業的格局,改變人類使用計算機的習慣和方式,因此云計算技術得到了迅猛發展。但是,它改變世界的同時,自己也需要被改變:由于云計算規模越來越大,它對能源與環境的影響已越來越突出,能效問題是云計算發展道路上必須要跨過的障礙。
在云計算出現之前,想要大量儲存和處理數據只能自己搭建服務器系統。這不僅需要很多IT知識,還需要很高的成本,云計算技術的出現改變了這一切。所謂“云服務”,是指通過互聯網,讓很多用戶共享軟硬件資源,按照用戶需求提供計算機等設備。于是,用戶不再需要了解“云”中的基礎設施細節,也不需要擁有相關的專業知識,就能隨時隨地處理和存儲大量數據。因為他們不用負責控制“云”中的設備和軟件,只需要付出相對低廉的費用,把技術細節交給云服務的提供商來處理就好。
通過互聯網,用戶可以非常方便地使用云服務,因此互聯網上的“云”正迅速擴張,變得越來越龐大,甚至能把產業鏈的不同環節整合在一起。此外,云計算還讓一些很有想象力的應用成為現實。
云服務提供商集成的大量存儲和計算資源能形成規模效應,用戶可以隨時根據需要購買相應服務,而不需要為了短暫的高峰需求購買大量資源。從這個意義上說,云服務比本地服務更加節約資源和能源。根據模擬軟件CLEER的估算,如果所有的美國公司都把自己的電子郵箱程序、電子表格應用和客戶管理軟件都轉移到集中的云服務器里,就可以把計算耗能降低87%,節省下的能源足夠讓洛杉磯運轉一年。
云計算的好處顯而易見,但隨著其規模越來越大,云計算本身的能耗越來越不可忽視。今天,云計算的耗電量已經超過全球總耗電量的1%。而且,把資源聚集在一起形成規模效應本身也有成本。云計算服務商需要專門建設數據中心,并在數據中心里安置成百上千臺服務器、處理器和硬盤設備。這些設備運行時會散發大量熱,因此數據中心需要額外的支持設備(比如散熱系統)來維護正常運作,互聯網公司谷歌甚至專門成立了能源部門為自己的數據中心供能。
一般來說,一個占地500平方米的數據中心每天消耗的電力就高達38000度,這一數字超過了3500戶歐洲家庭日用電量的總和。從2000年到2007年,全世界數據中心的耗電量已從700億度增至3300億度,到2020年預計將超過1萬億度。此外,在2014年,只有8.5%的數據中心負責人預計在2015年后數據中心的容量仍然夠用,到2020年時,75%的數據中心必須要擴容。因此,到2020年,預計數據中心的建設規模幾乎將是2010年的兩倍,達到780億美元,這讓云計算的能效、對環境的影響等問題更為突出。
所以,從上述數字可以看出,為云計算設計高能效的解決方案已經是迫在眉睫的問題。
A.能耗的根源
云計算系統有幾個不可或缺的部分。首先,它需要大量的硬件設備來存儲并處理數據。這些硬件設備包括放置在機柜內的計算和存儲服務器,以及處理器、內存、硬盤等服務器組件。其次,在服務器之間,服務器與用戶之間需要連接,所以網絡也必不可少,它是連接用戶與計算、存儲等云資源的橋梁。此外,數據中心還需要專門的軟件來監控和管理云計算的基礎設施,這些軟件就是云管理系統(簡稱CMS)。最后,云服務商還需要安裝合適的應用軟件,幫助用戶使用云服務。
這幾個部分都需要消耗大量的能源,也都會損失和浪費很多能源,比如在夜間溫度較低時,散熱系統仍在全速運行,或者系統在運行,卻沒有為用戶提供服務。2003年,單機柜服務器的功率密度在0.25千瓦到1.5千瓦之間,而到了2014年,這個數字上升至10千瓦,預計到2020年會上升至30千瓦。而且,大多數服務器空載時的功率超過峰值功率的50%,服務器的平均利用率一般只有10%到50%。因此,一部只以20%性能運行的服務器的能耗,可能相當于它滿載時能耗的80%。考慮到僅在2013年最后一個季度,新服務器的出貨量就超過250萬臺,提高服務器的能效就成為第一要務。
而在網絡環節,主要有3個地方會消耗能源:數據中心內部的連接、不同數據中心間的網絡連接,以及讓外部用戶訪問的固定網絡和無線網絡。在目前的數據中心,網絡成本占所有運營費用的10%,這個數字還可能隨著互聯網流量的增加上漲到50%。
如果服務器空載,就會耗費大量能源。如果網絡架構不適合云應用,信息的傳輸途徑也會發生改變,網絡的某些部分就無法得到充分利用,能源浪費就會加劇。
由于信息技術的能耗越來越高,在數據中心的設備中,監控和管理云計算的基礎設施就變得很重要,云管理系統的作用就是提高數據中心的能效。如果使用不當,云管理系統本身也會浪費能源。應用設備(如Java虛擬機)的運行通常都會產生日常能源消耗,如果應用設備性能不佳,就需要更多服務器,消耗更多的能源。
B.硬件優化之路
提高能效的第一步是升級網絡設備,增加節能模式,減少網絡設施在未被充分使用時的耗電量。如果能把未使用的端口、連接和交換機完全關閉,它們就不會因為空轉而耗能了。
升級后,設備的熱載荷也會下降,這又會降低散熱系統的能耗,提升系統的穩定性。不過,只調整網絡設備是不夠的,因為當網絡連通性降低時,系統性能也會下降。所以,還需要調整網絡結構,讓網絡流量可以沿著多個路徑傳播,或只通過少數幾個高能耗的關鍵路徑發送,而網絡中的其他部分則進入低能耗模式。這種方案還可用于數據中心間的網絡,充分挖掘網絡帶寬,因為批量傳輸所需的成本比單獨傳輸要低。
除了降低數據傳輸的能耗,優化網絡結構還可以降低基站的發射功率——基站是云端與終端之間傳輸信息的橋梁。連接手機的大型基站覆蓋面積較大,基站和手機間的距離通常也很遠,所以需要相當大的發射功率,才能保證大范圍內的手機通信,但這樣一來,能耗無疑很高。為了降低能耗,我們可以充分利用與用戶更近的小型基站。現有的研究表明,在城市地區使用小型基站,可以使空載模式下的能耗降低至原來的1/46。
服務器和網絡設備相似,如果可以根據負載自動調節功率和性能,就能降低能耗。今天的CPU、內存和硬盤都可以選擇負載和空載兩種模式,并相應調節電壓和頻率以降低能耗。為了延長硬盤空載時間,CPU會優先從緩存中讀取信息,只有在緩存中找不到數據時,服務器才會訪問硬盤。緩存本身也能優化甚至關掉部分未用緩存。最終,新的低功耗緩存技術可以和現有技術相結合,在保持性能的同時降低能耗。
服務器機柜的設計也會影響散熱和供電的能效。研究人員發現,與使用機房空調相比,能對特定組件進行局部散熱的服務器機柜有更好的節能效果。比如,通過一些特殊的冷卻技術,可消除由處理器產生的熱量。此外,還可以通過調節組件本身(比如調節內存數據吞吐量),避免熱損失的發生。從供電環節開始限制能量輸入,或對數據中心的能耗設置一個上限,也可以降低單一組件或整個服務器機架的能耗。最后,使用緊湊的服務器配置,直接去掉未使用的組件,也是減少能量損失的好辦法。
C.云管理的秘密
使用云管理系統的主要目的,是對基礎設施(包括服務器、虛擬機和應用程序)進行調度以實現負載平衡。虛擬機是體現云服務優越性的最佳范例,它借助軟件模擬出計算機系統,具有硬件功能,可以在完全隔離的環境中運行。有幾種虛擬機的使用方法能提高云計算的能效。首先,可以讓虛擬機根據負載情況重新調配資源;其次,可以為虛擬機的布置選擇能效最高的物理機;最后,可以將未充分利用的虛擬機遷移至數量更少的主機上,并把一直未使用的虛擬機關閉。
不過,這些步驟需要CPU軟件功耗模式來實現。該模式下,軟件和硬件彼此協調以共同調整能耗。而且,服務器本身也可以通過調整實際負載來降低能耗。研究表明,即便使用簡單的試探法(比如在服務器持續空載一段時間后關閉服務器),也能節約大量能源。
下一步措施是在更宏觀的范圍內實施管理措施,比如合并多個數據中心。但是,這會增加虛擬機遷移所需的開銷,在輸入輸出兩端都要消耗能量。為了弄清楚合并數據中心能否提高能效,我們可以借助一些模擬工具,如CloudSim,它可以評估云計算管理系統消耗和節約的電量,并進一步比較服務質量的變化。顯然,如果既能降低能耗,又不會影響用戶使用云服務,這種合并就有利于降低云計算的能耗。云管理系統不僅可以控制服務器,還可以控制網絡系統,甚至控制散熱和供電,因為云管理系統“知道” 需要哪些資源,不需要哪些資源,因此可以選擇合適的虛擬技術,并在服務器空載時關閉散熱設備。
云管理系統的建立方式也很重要,采用模塊化方式來建立云管理系統就很有優勢,因為這允許技術人員在實際需要某個模塊時加載相應模塊。比如,在需要監控某些特定組件時,技術人員可以在原有系統中添加某些插件;而在不需要監控這些組件時,技術人員也可以終止運行這些插件。
同時,研究人員也在開發高能效的軟件,降低應用程序在空載狀態下的能耗。比如,限制用戶遠程喚醒服務器可以延長空載狀態時間,盡量向用戶發送消息而非讓用戶或客戶端向云服務器主動發起請求,可以讓軟件在真正需要其運行之前保持休眠,對資源(如磁盤)的批量訪問也可以減少不必要的喚醒。
不在現實世界部署高能效方案并沒有看上去那么簡單。服務器組件的低能耗模式只有在服務器長期空載的情況下才有益處,而這種情況在實際使用中并不常見。而且,盡管服務器在執行輕量級任務時的使用率很低,但為了滿足訪問高峰時的需求,仍有必要保持適當的“彈性”。因此,可自我擴展的服務器組件必須與軟件組件相關聯,否則調節CPU模式的技術會被錯誤應用,導致CPU運行頻率過低,應用程序的運行時間變長,最終導致CPU的整體能耗上升。另一個目標是讓空載組件的能耗接近于零,這可以通過合并未充分利用的服務器來實現。
D.治標又治本——整體解決方案
為云計算提供支持的數據中心是一套高度耦合的系統,幾乎可以視作一臺大型計算機。因此,除了從數據中心的每個部分著手,降低能耗之外,還得把整個數據中心視作一個整體,分析各個基礎設施之間的相關性,進而尋找節能方案。
應用設備是云計算中可管理的最小單位,但它們的性能可以影響所需服務器的數量,從而產生多米諾效應,進一步影響網絡規模和支持性的設備——比如散熱和供電設備的數量。因此,為目標應用程序選擇適當的硬件資源,可能會對數據中心的總體能耗產生重大影響。這里的實例包括,用GPU而不是CPU運行可以高度并行的應用程序(有些程序可以在成千上萬個處理器上同時運行,節省運算時間)。和CPU相比,GPU上的計算單元非常密集,可以同時執行很多任務,更適合并行計算,同時能耗更低。
但是,使用新的硬件需要對應用程序進行更深的研究和更細致的分級,在特定的應用程序和潛在的硬件資源之間建立聯系。云計算的實現需要多種基礎設施的協同,這又需要建立一個靈活、全面、監控能力出色的云管理系統。作為最基本的要求,云管理系統必須要監測數據中心中正在運行的進程、硬件性能、運行狀態、數據規模等多種信息。管理系統還要對分布在不同地理位置的數據系統進行優化,讓不同的云設施合并。這些方法既需要單個數據中心中的軟件和硬件實現良好的交互,也需要讓全球各地的數據中心互換信息、負載和數據。
要實現這些目標還是要依靠網絡,利用網絡可以把計算資源和數據存儲資源放在可以利用可再生能源或涼爽的地方,降低散熱產生的能耗。當然,優化網絡設備的同時也需要改進其他設備和組件。比如,數據和處理器距離用戶很遠且分布不均,會導致云服務的性能大打折扣,而采用好的設備和云管理系統能降低網絡流量,也就可以解決這個問題。除了改進數據中心,將數據中心整合到云計算概念里能在更大規模上提升能效。
美國勞倫斯·伯克利國家實驗室開發出的開源能效評估模型CLEER能對應用轉移至云端的過程進行節能分析。CLEER估計,和現有的分布式使用商業軟件相比,云計算有可能把現在的能耗降低95%左右。此外,內容數字化也能極大降低能耗。例如,在視頻行業中,通過云計算系統向用戶提供視頻的能耗比郵遞CD和DVD要低15%。
靈活的云架構還能間接優化能源利用。比如,數據中心中用來調整硬件負載狀態的技術還可以用來調節電網頻率,這樣電網就能保持在最優頻率上,從而有助于能效在更宏觀層面上的提升。未來,研究人員既需要讓能效解決方案照顧到云計算系統里的每個單元,也要讓整個系統高效運行,這樣才能解決云計算的能耗問題,云計算也才能讓我們的世界變得更好。