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