Facebook發(fā)布免費(fèi)Linux內(nèi)核工具
幫助那些管理大量的服務(wù)器釋放代碼,這些服務(wù)器是由一堆字母組成的。
多年來,F(xiàn)acebook讓世界變得更加開放、更加緊密。這讓每個人都很高興最近,F(xiàn)acebook開始讓世界變得更加緊密。在追求全局壓縮的同時,數(shù)據(jù)業(yè)務(wù)部開發(fā)了一些難以拼寫的Linux內(nèi)核組件,以使開源操作系統(tǒng)更適合于大量的服務(wù)器。周二,F(xiàn)acebook將其內(nèi)核工具套件作為開源提供,以幫助其他組織尋找更有效地管理大量Linux服務(wù)器的方法。Facebook工程師Tejun Heo和Thomas Connally在一篇博客文章中說:“這個版本中包含的內(nèi)核組件和工具可以用來解決無數(shù)的生產(chǎn)問題。他們相信,這些服務(wù)和產(chǎn)品的集合將有助于任何開發(fā)人員構(gòu)建應(yīng)用程序,以在多個平臺上為數(shù)百萬用戶服務(wù)。
首先是BPF, Linux內(nèi)核中的代碼執(zhí)行引擎。這個名稱曾經(jīng)指的是Berkeley包過濾器,現(xiàn)在它包含了一組更廣泛的函數(shù)。該軟件允許字節(jié)碼響應(yīng)特定事件運(yùn)行,以修改和擴(kuò)展內(nèi)核行為。從本質(zhì)上說,它是一個能夠進(jìn)行C調(diào)用的通用指令集。雖然BPF是基于內(nèi)核代理來在邊界分離內(nèi)核和用戶空間之間過濾數(shù)據(jù)包,但它不僅僅是用于網(wǎng)絡(luò)。例如,它可以用于跟蹤和沙箱。Facebook將BPF虛擬機(jī)與其開源的Katran負(fù)載平衡軟件一起用于網(wǎng)絡(luò)流量優(yōu)化。谷歌和Netflix也參與了BPF。然后是Btrfs,一個為數(shù)據(jù)中心設(shè)計的元音匱乏的文件系統(tǒng),著眼于容錯、文件修復(fù)和易于管理。顯然,富士通、英特爾、甲骨文、SUSE和Red Hat等公司都對項目的發(fā)展做出了貢獻(xiàn)。根據(jù)Heo和Connally的說法,Btrfs使Facebook的數(shù)據(jù)中心在各種應(yīng)用程序中更加高效。他們說Btrfs幫助消除了以前的文件系統(tǒng)在使用cgroup2進(jìn)行I/O控制時,日志記錄行為導(dǎo)致的優(yōu)先級倒置。注冊用戶詢問Facebook是否可以提供任何指標(biāo)來量化其代碼如何改進(jìn)。一名公司發(fā)言人拒絕承諾可以提高博客文章的效率。
這讓我們想到了cgroup2,這是一個Linux內(nèi)核工具,通過將工作負(fù)載劃分為組并分配內(nèi)存、IO和處理等資源來控制它們。Facebook使用該軟件隔離和保護(hù)主系統(tǒng)工作負(fù)載,使其不受正在運(yùn)行的二進(jìn)制文件和其他系統(tǒng)服務(wù)的影響。它甚至進(jìn)行了一個案例研究,以記錄利用率的提高。
套件中的另一塊代碼區(qū)域叫做Netconsd。雖然它聽起來像瀉藥,但實際上它是用來穿梭和構(gòu)造Linux netconsole消息的代碼,也就是日志數(shù)據(jù)。Heo和Connally說它持續(xù)記錄來自數(shù)百萬臺主機(jī)的數(shù)據(jù),并允許工程師從內(nèi)核中產(chǎn)生的大量日志數(shù)據(jù)噪聲中提取有意義的信號,幫助隨叫隨到的生產(chǎn)工程師快速識別和診斷不正常的服務(wù)。作為cgroup2的補(bǔ)充,PSI提供了一種測量內(nèi)存、CPU和I/O的方法。這個工具的目的是允許組織在事情失控之前對資源短缺做出反應(yīng)。最后是Oomd。不要和80年代的科技流行樂隊OMD混淆,它是一個對內(nèi)存不足(OOM)條件做出反應(yīng)的過程劊子手。Oomd介入用戶空間以防止Linux內(nèi)核中的OOM條件。它支持自定義邏輯檢測,可以針對不同的工作負(fù)載進(jìn)行定制。