騰訊云操作系統(tǒng)內(nèi)核團(tuán)隊(duì)悄然修復(fù)bug,獲Linux創(chuàng)始人Linus Torvalds 贊許
12月30日獲悉,騰訊云操作系統(tǒng)(Tencent OS)內(nèi)核團(tuán)隊(duì)在 Linux 社區(qū)默默提交的兩項(xiàng)改進(jìn),成功解決了自 2021 年以來一直困擾著一線廠商,并在近期讓多個(gè)Linux頂級(jí)Maintainer(軟件維護(hù)者)困惑的關(guān)鍵內(nèi)核bug。這一改進(jìn)方案最終被合并進(jìn)入后續(xù)的 Linux LTS(Long-term support) 版本中,并獲得了 Linux 之父 Linus Torvalds 的高度評(píng)價(jià)。
Linus:“不明,覺贊”
大約兩個(gè)月前,Linux 社區(qū)中的一封郵件引起了廣泛關(guān)注。其內(nèi)容主要是,自 2021 年 12 月起,Linux 內(nèi)核中啟用了 Large folio 特性(能夠提升系統(tǒng)訪存性能)的 XFS 文件系統(tǒng)用戶(但不僅限于 XFS)有概率遭遇緩存損毀導(dǎo)致的宕機(jī)問題。該問題受到了社區(qū)的高度重視。
XFS 是最常見的 Linux 文件系統(tǒng)之一,在常見的 Linux 使用場景中,如服務(wù)器、桌面等,XFS 被作為主力文件系統(tǒng)大量采用。盡管該bug較難觸發(fā),但其潛在風(fēng)險(xiǎn)仍然讓社區(qū)和各大廠商感到不安。Meta 和 Cloudflare 等公司甚至不得不暫時(shí)禁用 XFS 的 Large folio 特性以確保系統(tǒng)穩(wěn)定。
一個(gè)多星期的討論中,大家遲遲沒有捕捉到bug所引發(fā)的具體位置或線索,只是確認(rèn)bug確實(shí)存在而且亟需修復(fù)。幾位頂級(jí) Maintainer,以及 Linus Torvalds 本人也參與進(jìn)入討論。
社區(qū)在廣泛排查的過程中,突然發(fā)現(xiàn)這個(gè)問題在新的 Linux 內(nèi)核版本中已經(jīng)不復(fù)存在。進(jìn)一步的調(diào)查發(fā)現(xiàn),這一變化歸功于騰訊云操作系統(tǒng)內(nèi)核團(tuán)隊(duì)在今年 4 月提交的兩項(xiàng)改進(jìn)。
原來,騰訊云操作系統(tǒng)內(nèi)核團(tuán)隊(duì)在進(jìn)行操作系統(tǒng)性能優(yōu)化研發(fā)時(shí)發(fā)現(xiàn),操作系統(tǒng)內(nèi)核使用 XArray(內(nèi)核中用于處理廣范圍地址索引結(jié)構(gòu)的基數(shù)樹處理庫)管理 Page Cache(頁面緩存)時(shí),會(huì)因XArray在分配內(nèi)存時(shí)沒有考慮好并發(fā)修改的問題,導(dǎo)致分配的內(nèi)存指針可能指向錯(cuò)誤的數(shù)據(jù),對外表現(xiàn)為 XFS 與其他引入了 Large Folio 特性的文件系統(tǒng)均有概率出現(xiàn)卡死宕機(jī)甚至數(shù)據(jù)丟失的情況。
針對這一問題,騰訊云操作系統(tǒng)內(nèi)核團(tuán)隊(duì)在優(yōu)化 Page Cache 對 Xarray 的使用上,引入了一個(gè)新的輔助函數(shù),簡化了 Xarray 的中 Large Folio 的插入算法,并進(jìn)一步梳理和修復(fù)了內(nèi)存分配的并發(fā)處理,確保了即使在多線程環(huán)境下,內(nèi)存分配和釋放也能正確進(jìn)行。這些改動(dòng)不僅修復(fù)了數(shù)據(jù)損壞的問題,還提升了操作系統(tǒng)系統(tǒng)的性能。
經(jīng)歷了數(shù)個(gè)星期的討論與分析后,這些改動(dòng)被社區(qū)認(rèn)為是最佳的修復(fù)方案。
如今,這一修復(fù)方案已經(jīng)被合入了最新的操作系統(tǒng)版本中,為這一問題畫上了句號(hào)。同時(shí),方案也極大提升了大文件在 Page Cache 中的讀入性能,數(shù)以十億計(jì)運(yùn)行 Linux 的設(shè)備,都會(huì)因此快一點(diǎn)。
除了這次貢獻(xiàn)外,騰訊云操作系統(tǒng)內(nèi)核團(tuán)隊(duì)近年來通過與社區(qū)的緊密合作,在 swap(交換空間)、memory cgroup(內(nèi)存控制組)、頁面與熱度管理等方面持續(xù)進(jìn)行技術(shù)創(chuàng)新,不斷提升 Linux 內(nèi)核的性能和穩(wěn)定性,助力操作系統(tǒng)技術(shù)發(fā)展。
目前,騰訊云也開發(fā)了自研的服務(wù)器操作系統(tǒng)版本TencentOS Server,裝機(jī)規(guī)模超過1000萬套,除了支撐騰訊自研的國民級(jí)應(yīng)用,也廣泛服務(wù)了互聯(lián)網(wǎng)、金融、政務(wù)、工業(yè)、能源、交通等行業(yè)客戶。