首頁 > 新聞 > 國際 >

Google:基于Linux的世界級跨數(shù)據(jù)中心服務(wù)器

2013-04-26 09:47:56   作者:   來源:The Register    評論:0  點擊:


  Google已經(jīng)實現(xiàn)世界級數(shù)據(jù)中心服務(wù)器監(jiān)控,新的技術(shù)可以監(jiān)控世界范圍內(nèi)每臺服務(wù)器上的每個任務(wù);其最終目的是通過這些數(shù)據(jù)有選擇對進程進行干預(yù)、甚至是關(guān)閉該進程讓同CPU上的其它進程得以運行。

  搜索巨頭在技術(shù)論文中詳細的描述了這一世界級監(jiān)視技術(shù)的實現(xiàn)方法,相信使用大型基于Linux云計算基礎(chǔ)設(shè)施的機構(gòu)都會對此感興趣。

  論文中寫道:

  性能隔離是云計算的主要挑戰(zhàn)。不幸的是,Linux缺少對共享資源(比如:處理器緩存、存儲器總線等)中性能干擾的防御;這樣的話,公有云中的應(yīng)用程序?qū)o法避免來自鄰居們的干擾。

  CPI方案使用從硬件性能計數(shù)器獲得的CPI(cycles-per-instruction,平均指令周期數(shù))數(shù)據(jù)檢測問題,中斷或者關(guān)閉“問題”進程從而達到預(yù)期的效果,當然它會根據(jù)相同作業(yè)中大量任務(wù)數(shù)據(jù)認知這個任務(wù)的反常與否。

  本質(zhì)上講,CPI讓Google可以在集群上萬個CPU核心中隔離單個核心上的單個性能低下任務(wù),對這個任務(wù)進行檢查并進行操作,而造成的CPU開銷甚至不到0.1%。它并不需要特殊的硬件支持,唯一的軟件依賴恰是使用Linux。

  CPI允許Google收集任何指定指令的預(yù)期CPU CPI,從這些數(shù)據(jù)中分析出標準的資源配置文件,然后使用這些標準的配置文件去幫助網(wǎng)絡(luò)巨頭確定哪些任務(wù)比一般情況下耗費了更多的CPI,從而解放與這些任務(wù)使用相同CPU的其它進程。

  Google稱,其絕大多數(shù)機器上都運行著多任務(wù)。作業(yè)的處理類型分為實時處理和批處理兩種,同時這些作業(yè)由大量的任務(wù)組成。Google服務(wù)器上96%的任務(wù)都會與至少10個的任務(wù)組成一個作業(yè),而87%左右的任務(wù)會與100或以上的任務(wù)組成一個作業(yè)。

  但是這些任務(wù)可能會相互干擾,導(dǎo)致處理器緩存和內(nèi)存分配問題,造成應(yīng)用中的某個任務(wù)延時飆升——這正是Google不惜一切代價都想避免的問題。

  為了實現(xiàn)任務(wù)流下每個處理器的控制,Google使用CPI監(jiān)視所有運行的服務(wù)器。通過測量處理器硬件計數(shù)器,然后用CPU_CLK_UNHALTED.REF除以INSTRUCTIONS_RETIRED來獲得CPI數(shù)據(jù)。

  通過計算模式下的perf_event工具,Google每分鐘都會收集一個長為10秒周期的數(shù)據(jù)。系統(tǒng)中總CPU的開銷低于0.1%,并且不會對延時產(chǎn)生影響。

  因為集群需要跨大量的平臺運行,CPI的目的在于體現(xiàn)各種平臺下的CPU運行情況。CPI的值通過每臺機器上的agent進行本地分析和測量。agent通常會被給予作業(yè)中任務(wù)預(yù)期最常見的CPI分布,所以它可以獨立的分析出運行的正常與否。

  如果agent發(fā)現(xiàn)有“victim”任務(wù)受到影響變得緩慢,它將會每秒一次的對“antagonist”任務(wù)進行干涉。agent會使用一個算法來判斷“antagonist”任務(wù)的CPU占用增加與“victim”任務(wù)的遲緩是否曾在關(guān)系,依據(jù)的則是指令的周期數(shù)。

  如果agent識別了一個“antagonist”并發(fā)現(xiàn)它是個批量作業(yè),系統(tǒng)將會“通過CPU hard-capping來強制減少‘antagonist的CPU占用率’”。

  鑒于CPI和Omega論文的聯(lián)合作者中都有John Wilkes,Google很有可能是通過Omega(Google大型基礎(chǔ)設(shè)施管理系統(tǒng)的一個組件)給agent發(fā)布任務(wù)。

  “antagonis”任務(wù)的配置文件與CPI數(shù)據(jù)進行的是離線的記錄和存儲,這樣管理員就可以通過Google的主要網(wǎng)絡(luò)分析工具Dremel進行查詢。

  Google工程師使用Dremel進行性能取證,用以確定“antagonists”任務(wù),在將來他們可能為“antagonists”任務(wù)重新制定策略,讓它們在單獨的主機集中運行,然后使用這個調(diào)度進度來徹底的避免這個問題。

  其中有一個需要改進的方面是處理多個“antagonists”,它將會復(fù)雜化算法;另一個則是為capping任務(wù)建立的反饋途徑。

  論文中寫道:“即使這兩方面還未改善,但是CPI是個強大的、實用的工具。”

  使用CPI獲得應(yīng)用性能可行信息的開銷比Google其它方案來的更少,這里還存在一個被稱為“Google-Wide Profiling”可同時對硬件和軟件性能進行追蹤的平行技術(shù),但是只在Google小范圍的進行使用。

  從整體上看,CPI提供的不只是管理,更傾向于讓集群運行的更加穩(wěn)定、效率。如果你在執(zhí)行搜索或者查看Gmail、通過Google服務(wù)查找地址時發(fā)現(xiàn)比平常需要更多的時間,那么你可能就會被CPI冷酷及無情的當做是“antagonists”。

分享到: 收藏

專題