作者 | 何苗
Linux 核心是個龐大而複雜的作業系統的核心,猶如人的大腦一樣,處理各種各樣的請求,一般而言 Linux 核心更新比較頻繁,但最近卻被 Linus Torvalds 電腦的記憶體問題絆住了腳。
Linux 6.1 的合併窗口目前處於開啟狀態。前兩天,一位 Linux 核心開發者問Linus Torvalds是否錯過了一個合併請求,Linus 表示:「我正在膝上型電腦上進行合併(非常緩慢)。」

看來電腦速度太慢的問題,連 Linus 大神也躲不過。一開始他以為是個新的核心 bug,檢查後發現是記憶體條問題。
到底怎麼回事?

Linus 的電腦記憶體風波
在出現請求合併非常緩慢的問題之後,Linus 做了檢測,他發現,「是我的電腦主桌面上使用者空間的隨機記憶體損壞,導致了 allmodconfig 構建隨機失敗,並出現內部編譯器錯誤等」。
一開始,他以為是新的核心 bug 造成的,雖然偶有發生,但這次他的直覺錯了。接著,他啟動舊核心進行驗證,並在夜間使用記憶體測試軟體進行驗證,最終確認——在我的電腦穩定運行兩年半後,一個 DIMM 記憶體隨機壞了。
後續 Linus 也只能等新的 DIMM 到貨更換。他抱怨道:相當多的時間浪費在了錯誤的事情上。
Linus 的主 PC 是一臺搭載了 AMD RyzenThreadripper 3970X CPU 的工作站,由他在新冠疫情早期組裝完成。帖子裡還提到,他的主 PC 是為糾錯碼記憶體(ECC 記憶體)設置的,這與日常工作有關,因為 Linux(和所有其他軟體)可以從 ECC RAM 執行的糾錯中受益。
由於新冠疫情早期 ECC 記憶體條稀缺且昂貴,他為此還公開抱怨英特爾宣稱 ECC 記憶體是為伺服器和嵌入式設備服務的,導致一般使用者難以購買到便宜的 ECC 記憶體條。他認為 ECC 適合所有人,很討厭那些讓 ECC 記憶體「特殊化」的商業行為。

Linux 6.1的最終發佈會推遲嗎?
目前,Linus 表示電腦的問題不會對合並窗口產生影響,因為他還可以在另一臺機器上完成 Linux 6.1 補丁合併工作,但在常用機器上執行合併對他來說更方便。
Linux 6.1 在今年本就備受開發者關注。自 Linux 6.0 正式發佈之時就有人預測今年 12 月發佈的 6.1 將會成為今年的 LTS (Long Term Support)版本。根據正常的時間表,Linux 6.1-rc1 將於 10 月 16 日發佈,而 Linux 6.1 穩定版則可能在 12 月 4 日或 11 日左右發佈。除非 Linux 6.1 的開發出現一些意外狀況導致無法準時推出,否則 Linux 6.1 將會在今年正式推出。
Linux 穩定維護者 Greg Kroah-Hartman 在7號的郵件中表示:「他正在編寫《Linux 核心程式設計》第二版,他希望這本書是建立在最新的 Linux 版本之上,目前 Linux 5.10 LTS 版本是在 2026 年到期,然而如果可能,Linux 6.1 是否會成為最新的 LTS 版本,這樣他就有可能採用這個最新的 LTS 版本,不過他也無法確定,具體還要等到正式發佈。目前 Linux 已正式發佈 6.0 版本。」
目前來看,Linux 6.1 很有可能成為今年的 LTS 版本。不過現在 Linux 6.1 補丁合併發生了一點小意外,但大家也不必過於擔憂。
據了解,即將到來的Linux 6.1 新增了一個有意思的新功能,那就是檢測 CPU 損壞。以往大型集群中總會有部分 CPU 報錯,以往是通過查看核心程式碼來識別,現在開發人員增加了一些程式碼,可以在檢測到CPU損壞、出錯時輸出資訊,這樣系統管理員就可以省事了。該功能來自 Linux 6.1 合併窗口的 x86/cpu 分支補丁:在出現分段錯誤(segfault)時,故障訊息會列印出 「有嫌疑」 的 CPU 編號。
此外,新的 AMD GPU IP 支持,英特爾 DG2/Alchemist 的改進,Rust 基礎內容,Btrfs 的重大改進,可能還有 MGLRU 等一系列新變化都非常令人期待!
參考來源:
https://www.theregister.com/2022/10/10/linus_torvalds_ecc_memory_fail/
https://lkml.iu.edu/hypermail/linux/kernel/2210.1/00691.html
https://www.solidot.org/story?sid=73011