臉書開源了一套Linux內核元件和相關工具,來解決關鍵隊列管理(Fleet Management)問題,包括資源控制、資源利用、工作負載隔離、負載平衡、測量和監控等工具。

為確保用戶可以快速可靠的存取服務,臉書基礎設施工程師開發了流量最佳化系統,而BPF則在其中扮演重要的角色。BPF是Linux核心中一個高度靈活且高效能的程式碼執行引擎,允許位元組碼在各種勾點(Hook Point)執行,讓客製化的程式碼也可以簡單並安全的修改核心行為。雖然BPF已經廣泛的應用在資料封包過濾上,但BPF的指令集具通用性且足夠靈活,可支援網路追蹤和安全性之外的應用。

使用BPF的最佳化系統Katran就是其中一種應用,Katran是軟體定義的負載平衡解決方案,具有完全重新設計的轉發平面(Forwarding Plane),充分利用了BPF虛擬機器的優點。Katran轉發平面軟體函式庫強化了臉書基礎設施,同時也幫助改進效能和網路負載平衡可擴充性,大幅減少低效率的發生。

臉書還開源了Btrfs,這是新一代的檔案系統,以當今的資料中心作為設計基礎,支援寫入時複製(Copy-on-write,COW)功能,能實現許多進階功能,具有高容錯、修復和易於管理的特性。Btrfs目的在解決和管理大型儲存子系統,支援快照、線上資料重組、池化(Pooling)和整合多重裝置支援。

Btrfs在臉書資料中心應用程式效率和資源使用率上扮演重要角色,近期的使用案例是Cgroup2進行I/O控制的時候,Btrfs會幫忙消除由前一個檔案系統的日誌行為,引起的優先順序倒置狀況。Btrfs是目前唯一可用於資源隔離的檔案系統實作,目前在臉書的百萬伺服器都有部署,顯著提升執行效率。

另外,Netconsd是一個基於UDP的Netconsole守護行程,為Linux Netconsole訊息提供輕量級的傳輸服務。Netconsd可以接收並處理來自Linux核心的日誌資料,並幫助產品工程師快速識別叢集中的問題。在臉書中,Netconsd提供重要的資料中心統計資料,該系統可以連續紀錄數百萬臺主機的資料,並允許工程師從核心中產生大量的日誌資料,以提取有意義的訊號,協助產品工程師快速識別和診斷有狀況的服務。

在7月的時候,臉書開源了內部記憶體不足解決方案Oomd,其中提到了兩項關鍵的功用工具PSI(Pressure Stall Information)和Cgroup2,現在也都開源給外部使用。Cgroup2是用於分組以及結構工作負載的Linux核心機制,能夠控制分配給每個群組的系統資源量,其具有記憶體、I/O和CPU等控制器,允許使用者隔離工作負載,並確定每個工作負載分配的資源以及優先順序。Cgroup2能良好處理記憶體中,過量使用以及記憶體稀缺的問題,改善了臉書資料中心的多租戶服務,

而PSI則提供一種規範方法,以三種主要資源指標量化資源短缺,分別是記憶體、I/O和CPU,這些壓力指標將作為此開源的一部分,能與其他核心和使用者空間工具結合使用。當在進行開發和回應時,能智慧地偵測資源短缺。PSI統計資料為即將發生的資源短缺提供早期預警,從而實現更積極主動,更細緻的回應。臉書將PSI與Cgroup2結合使用,監控每個Cgroup各種工作負載的資源使用,進而在資源不足的情況下提高利用率和可靠性。

臉書核心和核心應用程式開發人員,會與各內部團隊合作,共同開發解決臉書資料中心問題的技術,而這些問題也是同樣產業都會遇到的,臉書現在開源這些已經用於內部產品階段的專案,供其他企業使用。而臉書提到,開源解決方案是他們工程文化的一部分,這些解決方案解決了實際的產品問題,同時也解決了現代大規模雲端計算的挑戰。


Advertisement

更多 iThome相關內容