白話版《openEuler 21.09 技術白皮書》
2021 國慶前一天,歐拉操作系統按照既定的半年發布一個創新版本的節奏,發布了第三個創新版本 openEuler 21.09。在前不久召開的「華為全連接 2021 大會」上,我聽到了歐拉即將進行「全新」發布的消息。作為一名長期觀察歐拉發展的業內人士,我對這「全新」的說法是好奇的,這究竟是一種宣傳的手法,亦或是真的有了很大不同?
懷著這個疑問,我對在「華為全連接 2021」後幾天發布的 openEuler 21.09 是頗為關注的,希望可以第一時間拿到它的白皮書一窺究竟。幾天後,歐拉發布了該版本的技術白皮書。我在翻閱後感覺,與其說歐拉是一輛粉飾一新的新車,不如說是它在引擎蓋下做了頗多改進。
在這份幾十頁的《openEuler 21.09 技術白皮書》,頗有一些值得重視的技術變化被掩蓋在了枯燥的技術術語之中,因此,本著一饗讀者的想法,我對其中值得關注的地方,用更淺顯的語言進行了一些解讀。
openEuler 發布
首先回顧一下歐拉的基本情況。歐拉最初脫胎於華為內部的 Linux 發行版 EulerOS,後於 2019 年底宣布開源,成為 openEuler。其主要面對的是伺服器基礎設施領域,並在次年春季發布了第一個 LTS 版本。歐拉的主要技術路線沿襲了紅帽系的技術方向,無論是從軟體包管理、文件系統布局、操作系統體驗方面,都吸收了不少 CentOS/RHEL 慣例。但是,歐拉又不是一個 CentOS 的某個版本的下游分支版本,因為其從內核、特性、技術演進方向,都有自己的獨立而確定的發展計劃,這一點和 SUSE 公司的 openSUSE/SLES 發行版家族類似。
歐拉採用了定期發布版本的發行計劃,每兩年發布一個長期支持版本(LTS)。除了作為伺服器操作系統所重視的長期支持和特性穩定之外,歐拉也是一個技術孵化器,它每半年發布一次的創新版,集成了社區的最新技術成果,將社區驗證成熟的特性逐步回合到發行版中。從 2020 年 3 月發布第一個 LTS 版本之後,它已經發布了三個創新版本,按照計劃,下一個 LTS 版本將於 2022 年 3 月到來。
openEuler 版本圖
如上所述,這次發布的 21.09 是一個創新版本,主要是迭代演進即將放入到下一個 LTS 版本中的新特性。在這個版本中,重點引入和發展的特性有:
- 內核的創新:新介質文件系統和內存分級擴展
- 雲原生創新:容器操作系統、安全容器和雙平面部署
- 增強的特性:對語言編譯器的支持、對運維的支持
- 全場景創新:對編譯計算、嵌入式場景的支持和集群加速引擎
下面,我們就這些特性展開來了解一下。
白話解析白皮書
如果不是歐拉社區的相關貢獻者和長期參與者,你可能會覺得這份技術白皮書有些難讀。我也是這樣覺得的,不過,進行梳理之後,我把這幾十頁的內容凝聚成了幾個關鍵字:內核特性**、容器技術、架構支持和**場景支持。
內核特性
Linux 系統給你的感受是什麼?可能有很多答案,但是歸根到底,這是一幢建立在 Linux 內核基礎之上的華廈。內核提供的各種新特性,通過上層的應用最終提供了各種公用。因此,一個 Linux 操作系統的根本就是內核。
說句題外話,國內流行的 CentOS,主要的原因還是大家信任它的內核。這一點,誰做過運維誰知道。而華為作為國內首屈一指的在 Linux 內核方面頗有建樹的企業,這些年來,在 Linux 內核方面已經做出了諸多貢獻。
內核貢獻圖
華為在晶元架構、ACPI、內存管理、文件系統、介質、內核文檔、內核質量加固及代碼重構等方面,十餘年來總計向社區貢獻 17000+ 個補丁。而在 Linux 內核 5.10 和 5.14 版本中,歐拉內核研發團隊代碼貢獻量排名全球第一。
那麼我們來看看具體在這個版本中,歐拉在內核方面做了什麼努力。
歐拉 21.09 還是基於 Linux 內核 5.10 構建,但在進程調度、內存管理、網路等方面帶來了 12 處創新,這主要有:用來提升性能的進程調度優化、大頁內存性能優化、OOM 內存回收優化、XDP 網路性能優化等。
除了這些隱蔽但重要的內核改進之外,如今在運維領域已經大量使用的非易失性內存(NVDIMM)存儲介質,在使用傳統的 ext4 文件系統時,尚缺乏針對性的優化,因為 Ext4 本身是針對旋轉式硬碟設計的文件系統。尤其在元數據管理方面,基於現有日誌同步機制,元數據管理開銷大,且容易出現寫放大問題,NVDIMM 優勢無法充分發揮。華為推出的 Eulerfs 創新的元數據軟更新技術,減少了元數據同步開銷,有效提升文件系統的系統調用性能。在單機應用、雲原生分散式應用高性能數據存儲場景,可以代替 Ext4、XFS 等文件系統。
容器技術
現在的運維領域,幾乎是言必稱雲原生。一個操作系統的對雲原生、虛擬化的支持力度,也成了一種試金石。
歐拉麵向雲原生業務混合部署場景提出了一種 QAS 演算法。它是一種適用於雲原生場景,業務混合部署的全新調度演算法,可以確保在線任務對 CPU 的快速搶佔,確定性的調度運行,同時壓制離線任務干擾。此外,在歐拉中還優化了 OOM(內存使用超量)時內存回收調度演算法,在發生 OOM 時,優先對低優先順序的進程組進行內存回收,保障在線業務的正常運行。這些改進適用於對交互類等時延敏感型業務(比如 MySQL、Redis、Nginx 等)和 CPU 消耗重且時延不敏感的業務(如 AI 離線訓練)混合部署,它包括了容器與容器、容器與進程、容器與虛機、虛機與虛機等多種混合部署場景。
Kubernetes 已經成為事實上的雲原生軟體基礎設施底座。業界的主流操作系統廠商都推出了針對雲原生場景的操作系統。歐拉自然也不甘人後,推出了容器化操作系統 KubeOS,實現雲原生集群操作系統的統一容器化管理。它可以對操作系統容器化管理、對接 Kubernetes、原子化的生命周期管理;它也對操作系統進行了輕量化裁剪,減少不必要的冗餘包,可實現系統的快速升級、替換等。
再往底層看,歐拉結合虛擬化運行時 StratoVirt、容器管理引擎 iSulad 構建了安全容器方案,較之傳統的 Docker + Qemu 方案,其底噪和啟動時間優化高達 40% 以上,為應用提供了一個輕量、安全的執行環境,隔離了容器和宿主機操作系統間、容器間的安全風險。
架構支持
針對不同的硬體架構,歐拉在編程語言和架構方面還做了支持。
歐拉提供的畢昇 JDK 是基於 OpenJDK 開發的增強版本,具備高性能、高可用等優點,可用於生產環境。值得一提的是,它積累了大量使用場景,並針對 ARM 進行了性能優化。畢昇 JDK 支持 OpenJDK 8 和 OpenJDK 11 兩個版本。
在歐拉中也有鯤鵬處理器打造的高性能編譯器,Kunpeng GCC 編譯器是基於 GCC 開發的,可以充分發揮鯤鵬的硬體特性,運行效率更高。
據測試,畢昇 JDK 在 SPECjbb2015 等基準測試中性能優於 OpenJDK。Kunpeng GCC 編譯器在 SPEC CPU 2017 等基準測試中性能大幅優於上游社區的 GCC 10.3 版本。歐拉最初就是針對華為鯤鵬硬體架構開發的操作系統,因此,在歐拉中自然提供了針對性的優化,以充分發揮鯤鵬伺服器硬體特性,這也算是應有之義。
在這次發布中,華為還重點提及,歐拉最初是作為對鯤鵬硬體的支持出現的,但是現在已經擴展到支持 x86、ARM、RISC-V 等多處理器架構,未來還會擴展 PowerPC、SW64 等更多晶元架構支持。但是從白皮書中,我們尚沒有看到對其它處理器架構的特定優化工作和測試數據。
場景支持
從白皮書中我們看到,歐拉現在從對伺服器場景的應用,逐步拓展到雲計算、邊緣計算、嵌入式等更多場景,正成為覆蓋全場景的操作系統。
歐拉透露,它將發布面向邊緣計算的版本 openEuler 21.09 Edge 和面向嵌入式的版本 openEuler 21.09 Embedded。這兩個針對不同場景的版本突破了原有的伺服器基礎設施領域,但是,從我了解到的情況看,這其實已經不是 Linux 內核為基礎的操作系統了,而是基於華為本身在這些領域的內核及應用開發的。可以理解為在一個統一的框架下的不同內核、不同操作系統。
歐拉的多場景支持
當然,除此以外,在這次發布的歐拉 21.09 中,還有很多具體方向的創新和改進,感興趣的同學可以獲取這份技術白皮書以了解究竟。
結語
每半年發布的一個創新版,我認為並不是很適合於需要特性穩定的產品環境部署,但是通過這些創新版本,社區和相關生態的企業可以提前針對新的特性進行開發、測試和優化。而無論是伺服器環境,還是嵌入式、邊緣技術,都需要一個具備穩定性、高性能、精細調優的操作系統,這就是明年 3 月將發布的下一個 LTS 版本的目標。而且,除了長期支持以外,我們可以期待在創新版中發布的新特性,也會經過打磨後融入到 LTS 版本中。
當然,我認為,LTS 版本並不是一個口號,而是需要真正地提供支持和維護。這是一種並不像發布新版本那麼令人激動的工作,但是這種持續的支持,才是一個企業級的操作系統的根本。我們期望看到歐拉能夠踐行其對技術創新和長期支持的承諾和落實。
想要進一步了解這份《openEuler 21.09 技術白皮書》,可以點擊此處下載。
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive