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