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