
Facebook開源了一套Linux內(nèi)核元件和相關(guān)工具,來解決關(guān)鍵隊(duì)列管理(Fleet Management)問題,包括資源控制、資源利用、工作負(fù)載隔離、負(fù)載平衡、測量和監(jiān)控等工具。
為確保用戶可以快速可靠的存取服務(wù),F(xiàn)acebook基礎(chǔ)設(shè)施工程師開發(fā)了流量最佳化系統(tǒng),而BPF則在其中扮演重要的角色。BPF是Linux核心中一個高度靈活且高效能的程式碼執(zhí)行引擎,允許位元組碼在各種勾點(diǎn)(Hook Point)執(zhí)行,讓客制化的程式碼也可以簡單并安全的修改核心行為。雖然BPF已經(jīng)廣泛的應(yīng)用在資料封包過濾上,但BPF的指令集具通用性且足夠靈活,可支援網(wǎng)路追蹤和安全性之外的應(yīng)用。
使用BPF的最佳化系統(tǒng)Katran就是其中一種應(yīng)用,Katran是軟體定義的負(fù)載平衡解決方案,具有完全重新設(shè)計(jì)的轉(zhuǎn)發(fā)平面(Forwarding Plane),充分利用了BPF虛擬機(jī)器的優(yōu)點(diǎn)。Katran轉(zhuǎn)發(fā)平面軟體函式庫強(qiáng)化了Facebook基礎(chǔ)設(shè)施,同時也幫助改進(jìn)效能和網(wǎng)路負(fù)載平衡可擴(kuò)充性,大幅減少低效率的發(fā)生。
Facebook還開源了Btrfs,這是新一代的檔案系統(tǒng),以當(dāng)今的數(shù)據(jù)中心作為設(shè)計(jì)基礎(chǔ),支援寫入時復(fù)制(Copy-on-write,COW)功能,能實(shí)現(xiàn)許多進(jìn)階功能,具有高容錯、修復(fù)和易於管理的特性。Btrfs目的在解決和管理大型儲存子系統(tǒng),支援快照、線上資料重組、池化(Pooling)和整合多重裝置支援。
Btrfs在Facebook數(shù)據(jù)中心應(yīng)用程式效率和資源使用率上扮演重要角色,近期的使用案例是Cgroup2進(jìn)行I/O控制的時候,Btrfs會幫忙消除由前一個檔案系統(tǒng)的日志行為,引起的優(yōu)先順序倒置狀況。Btrfs是目前唯一可用於資源隔離的檔案系統(tǒng)實(shí)作,目前在Facebook的百萬伺服器都有部署,顯著提升執(zhí)行效率。
另外,Netconsd是一個基於UDP的Netconsole守護(hù)行程,為Linux Netconsole訊息提供輕量級的傳輸服務(wù)。Netconsd可以接收并處理來自Linux核心的日志資料,并幫助產(chǎn)品工程師快速識別叢集中的問題。在Facebook中,Netconsd提供重要的數(shù)據(jù)中心統(tǒng)計(jì)資料,該系統(tǒng)可以連續(xù)紀(jì)錄數(shù)百萬臺主機(jī)的資料,并允許工程師從核心中產(chǎn)生大量的日志資料,以提取有意義的訊號,協(xié)助產(chǎn)品工程師快速識別和診斷有狀況的服務(wù)。
在7月的時候,F(xiàn)acebook開源了內(nèi)部記憶體不足解決方案Oomd,其中提到了兩項(xiàng)關(guān)鍵的功用工具PSI(Pressure Stall Information)和Cgroup2,現(xiàn)在也都開源給外部使用。Cgroup2是用於分組以及結(jié)構(gòu)工作負(fù)載的Linux核心機(jī)制,能夠控制分配給每個群組的系統(tǒng)資源量,其具有記憶體、I/O和CPU等控制器,允許使用者隔離工作負(fù)載,并確定每個工作負(fù)載分配的資源以及優(yōu)先順序。Cgroup2能良好處理記憶體中,過量使用以及記憶體稀缺的問題,改善了Facebook數(shù)據(jù)中心的多租戶服務(wù),
而PSI則提供一種規(guī)范方法,以三種主要資源指標(biāo)量化資源短缺,分別是記憶體、I/O和CPU,這些壓力指標(biāo)將作為此開源的一部分,能與其他核心和使用者空間工具結(jié)合使用。當(dāng)在進(jìn)行開發(fā)和回應(yīng)時,能智慧地偵測資源短缺。PSI統(tǒng)計(jì)資料為即將發(fā)生的資源短缺提供早期預(yù)警,從而實(shí)現(xiàn)更積極主動,更細(xì)致的回應(yīng)。Facebook將PSI與Cgroup2結(jié)合使用,監(jiān)控每個Cgroup各種工作負(fù)載的資源使用,進(jìn)而在資源不足的情況下提高利用率和可靠性。
Facebook核心和核心應(yīng)用程式開發(fā)人員,會與各內(nèi)部團(tuán)隊(duì)合作,共同開發(fā)解決Facebook數(shù)據(jù)中心問題的技術(shù),而這些問題也是同樣產(chǎn)業(yè)都會遇到的,F(xiàn)acebook現(xiàn)在開源這些已經(jīng)用於內(nèi)部產(chǎn)品階段的專案,供其他企業(yè)使用。而Facebook提到,開源解決方案是他們工程文化的一部分,這些解決方案解決了實(shí)際的產(chǎn)品問題,同時也解決了現(xiàn)代大規(guī)模云端計(jì)算的挑戰(zhàn)。