導(dǎo)讀:長期以來,對于擁有成千上萬臺服務(wù)器的互聯(lián)網(wǎng)各大廠商而言,如何提升服務(wù)器資源利用率,降低IT基礎(chǔ)設(shè)施的TCO(總擁有成本)成為數(shù)據(jù)中心集群建設(shè)的重要問題。
長期以來,對于擁有成千上萬臺服務(wù)器的互聯(lián)網(wǎng)各大廠商而言,如何提升服務(wù)器資源利用率,降低IT基礎(chǔ)設(shè)施的TCO(總擁有成本)成為數(shù)據(jù)中心集群建設(shè)的重要問題。Gartner調(diào)研數(shù)據(jù)顯示全球數(shù)據(jù)中心服務(wù)器CPU利用率只有6%~12%。這是因為企業(yè)往往為在線業(yè)務(wù)預(yù)留大量的服務(wù)器資源以保證其服務(wù)質(zhì)量。與此同時隨著數(shù)據(jù)分析和人工智能訓(xùn)練的大規(guī)模應(yīng)用,離線業(yè)務(wù)對計算資源的需求又在日益增長?;诖?在保障在線作業(yè)性能的前提下,將在線集群的空閑資源分配給離線作業(yè)成為提升數(shù)據(jù)中心整體資源利用率的理想方法。如今,在離線混部方案成為各大互聯(lián)網(wǎng)公司提升服務(wù)器資源的有效集群方案。
在離線混部方案,即將在線業(yè)務(wù)與離線業(yè)務(wù)混合部署到統(tǒng)一的物理集群上,通過資源隔離、調(diào)度等控制手段,充分利用集群資源,在保證服務(wù)穩(wěn)定的同時提升數(shù)據(jù)中心的資源利用率。以微博為例,基于Kubernetes和HadoopYARN構(gòu)建的在離線混部方案,充分發(fā)揮英特爾至強可擴展處理器集成的英特爾資源調(diào)配技術(shù) (英特爾RDT)和英特爾Speed Select 技術(shù)(英特爾SST),實現(xiàn)了大幅度提升CPU利用率的同時保證了大規(guī)模業(yè)務(wù)服務(wù)的落地。
在線業(yè)務(wù)和離線業(yè)務(wù)現(xiàn)狀和挑戰(zhàn)
微博將混部概念的應(yīng)用類型分為在線業(yè)務(wù)和離線業(yè)務(wù)兩種。在線和離線業(yè)務(wù)如何劃分?微博認(rèn)為在線業(yè)務(wù)特點包括但不限于:任務(wù)運行時間長,響應(yīng)延時敏感高,對穩(wěn)定向要求較高,對服務(wù)質(zhì)量要求高,服務(wù)不穩(wěn)定業(yè)務(wù)會立馬感知并且?guī)頁p失,比如廣告搜索業(yè)務(wù)、網(wǎng)頁搜索、即時通信等;而離線業(yè)務(wù)的特點包括但不限于非延時敏感,可重試,運行時間較短在幾十分鐘左右,一般為大數(shù)據(jù)處理、分析、機器學(xué)習(xí)訓(xùn)練作業(yè)等服務(wù)。
從微博業(yè)務(wù)的特征可以看到,在線業(yè)務(wù)資源平均利用率不高,離線業(yè)務(wù)資源不夠用等特征,通過整合方案實現(xiàn)時間和資源上的互補,既要保證服務(wù)質(zhì)量,又可以提高集群的資源的利用率,降低TCO。
如何通過填充離線作業(yè)把集群各個時段的在線空閑資源利用起來?微博結(jié)合實際業(yè)務(wù)通過通過在線業(yè)務(wù)容器化,并把部分離線作業(yè)部署在在線的統(tǒng)一資源池節(jié)點上,通過充分利用英特爾至強可擴展處理器為核心的服務(wù)器資源,達(dá)到了提升資源利用率的目的。
微博通過Hadoop作業(yè)通過YARN提交,k8s作業(yè)通過APIServer提交,實現(xiàn)業(yè)務(wù)方無感知的離線混部方案,通過ApplicationMaster管控Hadoop節(jié)點和混部節(jié)點中的離線任務(wù),混部節(jié)點中部署的NodeManager以及Kubelet,分別用于離線服務(wù)和在線服務(wù)的管控。
保證在線業(yè)務(wù)的質(zhì)量保證(QoS),防止受到離線作業(yè)干擾
在現(xiàn)實場景中,在線業(yè)務(wù)和離線業(yè)務(wù)訴求不同決定了資源需求和性能敏感度的異同。在線機房關(guān)注業(yè)務(wù)聚集的是用戶體驗、訪問速度,而離線業(yè)務(wù)更關(guān)注的是計算、存儲基礎(chǔ)設(shè)施的規(guī)模。比如在線業(yè)務(wù)中的微博熱點實時新聞的進程就需要優(yōu)先推送,背后運行的一些進程不同,對CPU等關(guān)鍵資源的依賴性就有所不同。
如果在離線業(yè)務(wù)不做隔離,這樣多種作業(yè)要競爭共享資源(如CPU、緩存、內(nèi)存、內(nèi)存帶寬、網(wǎng)絡(luò)帶寬),比如在混合部署環(huán)境中,宿主機的資源(包括CPUcache和內(nèi)存帶寬)都是共享的。但是如果有一個消耗cache的應(yīng)用快速消耗了L3緩存,或者一個應(yīng)用消耗了系統(tǒng)大量內(nèi)存帶寬,就會因競爭L3緩存資源而引起的性能干擾,增加了在離線混部作業(yè)性能預(yù)測的難度。那么如何保證其他虛擬機應(yīng)用呢?如何限制這些“可惡”的鄰居呢?
針對上訴問題,以前都是通過控制虛擬機邏輯資源來實現(xiàn),通過虛擬層對于混部作業(yè)調(diào)度和資源管理的顆粒度還是太粗,針對處理器緩存這樣敏感而稀缺的資源,幾乎是無能為力的。
對于微博而言,微博基于混部節(jié)點隔離技術(shù)來實現(xiàn)業(yè)務(wù)之間的防干擾。資源隔離技術(shù)分為操作系統(tǒng)層的資源隔離技術(shù)和硬件層的資源隔離技術(shù)。微博的混部系統(tǒng)實例就采用了軟件資源隔方案,通過占用資源少、部署快的容器技術(shù)結(jié)合CPU內(nèi)置的調(diào)配能力來實現(xiàn)資源的隔離、監(jiān)控和管理。不僅通過多個進程并發(fā)的執(zhí)行,來提高了CPU的利用率,還基于CPU更細(xì)粒度的資源調(diào)度和資源管理能力,來減少在離線作業(yè)的相互干擾下,保證更好的實現(xiàn)在線業(yè)務(wù)的質(zhì)量同時,加速離線業(yè)務(wù)的運行。
打造硬件級別的抗干擾機制是提高資源利用率的核心能力
英特爾至強可擴展處理器作為最重要的計算資源,提供了硬件級別的細(xì)粒度抗干擾機制,實現(xiàn)了不同的資源調(diào)度機制使得作業(yè)在運行時具有不同的抗干擾性。比如英特爾資源調(diào)配技術(shù) (英特爾RDT)和英特爾Speed Select 技術(shù)(英特爾SST),通過對CPU性能的細(xì)粒度控制和緩存調(diào)度功能來更好的實現(xiàn)分時共享或搶占式調(diào)度,從而提升了由隔離和控制緩存資源引起的性能干擾。
在動態(tài)環(huán)境中釋放系統(tǒng)性能
英特爾資源調(diào)配技術(shù) (英特爾RDT) 使得應(yīng)用程序、虛擬機 (VM)和容器使用共享資源(例如最新級別高速緩存 (LLC)和內(nèi)存帶寬)的方式的可見性和可控性達(dá)到全新水平。它使工作負(fù)載整合密度、性能穩(wěn)定性以及動態(tài)服務(wù)交付有了革命性飛躍,有助于提升整個數(shù)據(jù)中心的效率和靈活性,并全面降低總擁有成本(TCO)。隨著軟件定義的基礎(chǔ)設(shè)施和先進的資源感知型編排技術(shù)不斷推動行業(yè)變革,英特爾RDT 成了優(yōu)化應(yīng)用程序性能的關(guān)鍵功能,并增強了使用英特爾至強處理器的服務(wù)器系統(tǒng)編排和虛擬化管理的功能。
英特爾RDT 提供了一個由多個組件功能(包括 CMT、CAT、CDP、MBM和MBA)組成的框架,用于緩存和內(nèi)存監(jiān)控及分配功能。這些技術(shù)可以跟蹤和控制平臺上同時運行的多個應(yīng)用程序、容器或VM 使用的共享資源,例如最后一級緩存(LLC) 和主內(nèi)存(DRAM) 帶寬。RDT可以幫助檢測“吵鬧的鄰居”并減少性能干擾,從而確保復(fù)雜環(huán)境中關(guān)鍵工作負(fù)載的性能。
這5個功能模塊分為監(jiān)控和控制兩大類,CMT和MBM為監(jiān)控技術(shù),而CAT、MBA和CDP為控制技術(shù)。具體而言:
高速緩存監(jiān)控技術(shù)(CMT)
借助監(jiān)控單個線程、應(yīng)用程序或 VM對最后一級緩存 (LLC)的利用率所獲得的新洞察,CMT改進了工作負(fù)載表征,實現(xiàn)了先進的資源感知型調(diào)度決策,能幫助檢測“吵鬧的鄰居”,并改進性能調(diào)試。
內(nèi)存帶寬監(jiān)控(MBM)
內(nèi)存帶寬監(jiān)控 (MBM)可以獨立跟蹤多臺虛擬機或多個應(yīng)用程序,同時對每個運行線程進行內(nèi)存帶寬監(jiān)控。優(yōu)點包括:對“吵鬧的鄰居”的檢測,對帶寬敏感型應(yīng)用程序的性能界定和調(diào)試的檢測,以及對更高效的非一致性內(nèi)存訪問(NUMA) 感知型調(diào)度的檢測。
高速緩存分配技術(shù)(CAT)
CAT支持軟件引導(dǎo)的緩存容量重新分配,使重要的數(shù)據(jù)中心VM、容器或應(yīng)用程序能夠從提升緩存容量和減少緩存爭用中受益。CAT可用于增強運行時確定性,并且在各種優(yōu)先級工作負(fù)載的資源爭用中優(yōu)先考慮重要的應(yīng)用程序,如虛擬交換機或數(shù)據(jù)平面開發(fā)套件(DPDK) 數(shù)據(jù)包處理應(yīng)用程序。
代碼和數(shù)據(jù)優(yōu)先級(CDP)
代碼和數(shù)據(jù)優(yōu)先級 (CDP)作為 CAT的專用擴展,實現(xiàn)了對最新級別 (L3)高速緩存中代碼和數(shù)據(jù)放置的獨立控制。某些特殊類型的工作負(fù)載可從增加的運行時決策中受益,從而提高應(yīng)用程序性能的可預(yù)測性。
內(nèi)存寬帶分配(MBA)
MBA可對工作負(fù)載可用的內(nèi)存寬帶進行近似和間接控制,從而為系統(tǒng)中存在的“吵鬧的鄰居”提供全新水平的干擾抑制和帶寬整形。
歡迎進入細(xì)粒度控制時代
細(xì)粒度對于混部作業(yè)調(diào)度和資源管理具有重要意義,細(xì)粒度能夠更好的規(guī)劃不同作業(yè)階段與階段之間的有序混部運行,減少資源競爭,降低性能干擾,對于混部資源管理,基于細(xì)粒度可以設(shè)計更為精細(xì)的資源動態(tài)算法,合理利用作業(yè)運行期間的碎片資源,進一步提高資源利用率。英特爾Speed Select 技術(shù)(英特爾SST)包含的一組強大的全新功能,幫助CPU性能進行細(xì)粒度控制,從而優(yōu)化總擁有成本。
如今,微博已完成在離線混部節(jié)點規(guī)模達(dá)到上千臺,為離線任務(wù)提供數(shù)萬個VCore的計算能力,通過在離線混部方案實現(xiàn)了極致的彈性調(diào)度,助力微博在熱點事件/高峰的業(yè)務(wù)場景下,k8s節(jié)點彈性擴容離線集群的能力,在調(diào)度方面,通過更有計劃的調(diào)度,實現(xiàn)了資源畫的精細(xì)化,可以更精準(zhǔn)的預(yù)測熱點概率,優(yōu)化調(diào)度能力,減少熱點率。
在檢測沖突和資源隔離方面,基于英特爾RDT、CPUQoS以及相關(guān)的隔離、調(diào)度等技術(shù),實現(xiàn)了對緩存空間,內(nèi)存帶寬等細(xì)粒度的管理,實現(xiàn)了更好的檢測沖突和資源隔離,并根據(jù)業(yè)務(wù)來分配真實的CPU資源的能力。不僅平均CPU利用率從25%以下,提升到60%以上,而且在線服務(wù)的指標(biāo)影響范圍可控下,離線任務(wù)也實現(xiàn)了更快的運行速度,從而支持更多的業(yè)務(wù)進入在離線混部場景。