操作系統(tǒng)專家解讀 openEuler 22.09 最新技術特性
前不久,歐拉社區(qū)發(fā)布了今年的創(chuàng)新版本 openEuler 22.09。作為歐拉社區(qū)貢獻給開放原子開源基金會后的首個創(chuàng)新版本,此版本中新增了 2012 萬行代碼,其中僅在 Linux 內核上就新增了 4.8 萬行代碼,全量代碼已達 6.7 億行!
openEuler 采用長期支持(LTS)版本和創(chuàng)新版本間隔的發(fā)布方式,每兩年發(fā)布一個 LTS 版本,期間每半年發(fā)布一個創(chuàng)新版本,用于推出實驗性的技術特性。本次發(fā)布的 openEuler 22.09 創(chuàng)新版就帶有不少的創(chuàng)新特性。但是在歐拉社區(qū)官方發(fā)布的公告中,并沒有特別詳細地介紹這些特性,因此,我特別邀約了華為服務器 OS 首席架構師、openEuler 社區(qū)技術委員會委員熊偉來為我們解讀了本次發(fā)布中的一些最新、最酷的技術特性。
從內核說起
在本次的 openEuler 22.09 發(fā)布公告中提及了若干技術特性,比如可編程內核、分布式軟總線、嵌入式硬實時,這些新的名稱給人一種似曾相識,但又不明其中奧秘的感覺。作為歐拉技術委員會的專家,熊偉針對我的好奇,給出了他的解答:
什么是可編程內核?
“可編程內核”這個名詞是我最迷惑的 —— 內核難道不是代碼嗎?肯定是編程產生的,那這個“可編程”的意思是什么?
對此,熊偉首先解釋了“可編程內核”產生的背景,“現(xiàn)在的硬件迭代變化非常快,但是相對而言,軟件的變化就有點跟不上。比如說,芯片一般的生命周期就三年,你得花一年時間上傳到上游,半年后進入內核社區(qū),而從社區(qū)到用戶手里還有很長的周期。本質原因在于內核相對是固定的,一次開發(fā)完成以后,編譯成內核模塊后就相對固定了?!币虼耍琽penEuler 創(chuàng)新性地借鑒了 eBPF 的思想,將機制和框架分離,框架內置到內核,而實現(xiàn)的功能和策略只需要寫完以后注入到內核即可。
在實現(xiàn)上,主要是兩個方面:
- 把這種類似 eBPF 的機制擴展到內核的很多方面。比如說,擴展到內存、可調度性,讓它們都成為可變化的;
- 把內核中的驅動程序和內核主體的綁定解耦。
Linux 內核中的大部分代碼都是驅動程序。熊偉說,“我們有一種想法,是不是能把內核驅動也能抽離出來?,F(xiàn)在驅動程序跟 Linux 內核綁定得太死了,是不是能把內核驅動也變成可變化?”換言之,讓驅動程序和 Linux 內核版本的演進盡量減少關系,這樣的話,內核版本可以不斷演進,但驅動程序可以在幾個大版本內不斷復用,而不像現(xiàn)在內核稍微一變化,所有的內核驅動都得重新測試驗證甚至重新開發(fā)。
而關于“可編程內核”的開發(fā)計劃,熊偉稱,“從現(xiàn)在開始嘗試,到明年的下半年,我們期望能推出一個相對比較完整的框架。”
對此,我不禁想到,我們知道內核的各個部分都是模塊化的,不但可以在編譯內核時選擇和配置不同的模塊,而且可以在運行中根據需要動態(tài)加載。那么,“可編程內核”和內核的模塊化有什么關系和區(qū)別呢?
熊偉解釋稱,內核的模塊還不是“徹底可變化的”,這些內核模塊(KO)插入內核后是固定的,在運行過程中是不能變化的。而“可編程內核,是可以靈活動態(tài)進行調整的?!备M一步說,動態(tài)加載的不僅僅是模塊,更多的是策略,模塊加載進去以后可以動態(tài)地給它提供新的策略。比如說,可以根據運行的業(yè)務使用不同的內核調度器,來適應不同的需求,比如大數據和數據庫對內核所采用的調度器是有不同的需求的。
對于這樣的一種在內核底層機制層面進行的創(chuàng)新,而不僅僅是某些內核驅動程序或某個子系統(tǒng),我非常期待在后繼的幾個版本中看到它變得成熟和更多應用。
什么是分布式軟總線?
在最近的幾個版本中,openEuler 提到了一個“分布式軟總線”,這個名詞有的人可能在鴻蒙操作系統(tǒng)中見到過,這是否標志著歐拉和鴻蒙的進一步融合?
熊偉稱,openEuler 的“分布式軟總線”就是來自于鴻蒙操作系統(tǒng)?!败浛偩€”是鴻蒙的萬物互聯(lián)、自動發(fā)現(xiàn)、自動識別、自動認證、自動連通的基礎。平移過來以后,凡是基于 openEuler 的操作系統(tǒng)和所有基于鴻蒙的操作系統(tǒng)的設備之間就可以實現(xiàn)同樣的特性。在 openEuler 的上個版本中已經開始進行“分布式軟總線”的平移,而在此版本中已經基本完成。
“分布式軟總線”基礎設施的工作,相當于提供了一個“底座”,能在這個基礎上出現(xiàn)什么有趣的應用和場景,我們期待合作伙伴和用戶去探索。
什么是嵌入式硬實時?
我也看到了這次 openEuler 22.09 中提到了“嵌入式硬實時”,這是將 RTLinux 的部分加入到了 openEuler 中了么?
熊偉首先澄清了“硬實時”這個名詞:硬實時能力是個通用詞,實時到什么程度才能稱作“硬”,這個沒有什么明確的說法。實時一般分為三個層次:
第一層,就是標準的 Linux 內核,現(xiàn)在芯片處理能力是比較快的,只要達到一定的響應速度,其實一般的 Linux 可以滿足大部分實時的要求。
第二層,在內核中打上 RTLinux 補丁,相對于標準的 Linux 內核具有更強的實時性。
但是第三層,對實時性要求就會特別嚴格。比如汽車的剎車系統(tǒng),目前 Linux 是達不到相關的要求的,同時合規(guī)層面等也都面臨挑戰(zhàn),所以一般這類場景中還是選用專用的實時操作系統(tǒng)。對此,歐拉社區(qū)容納了多個不同的內核,不僅僅是 Linux 內核,還包括了 Zephyr 內核、一個華為貢獻的小型實時內核 uniproton 等。此外,歐拉也在和國內的實時性操作系統(tǒng) RT-Thread、翼輝等形成合作。
面對紛繁復雜的場景,社區(qū)目前正在做的一個方案是混合部署方案。比如說,一個芯片或一個 SOC 中有 8 個核心,可以分出兩個核做強實時性的工作,運行 RT-Thread、翼輝等這種實時內核,而另外六個核可以跑 openEuler 的 Linux 版本,兩者之間構建通信機制,兩者之間可以進行交互。實時部分做實時的工作,非實時部分充分利用 Linux 龐大的生態(tài),兩者再通過標準化的語義聯(lián)通起來,這樣就能兼顧各種場景的需求。熊偉稱,這個部分社區(qū)還正在開發(fā)當中,應該在年底到明年年初大家可以看到樣例。
對架構的支持
根據歐拉社區(qū)披露的信息,openEuler 全版本支持 x86、ARM、申威、龍芯、RISC-V 五種架構,支持眾多的芯片廠商的多種芯片,多個硬件廠商發(fā)布的多款整機型號、板卡型號,支持網卡、RAID、FC、GPU&AI、DPU、SSD、安全卡七種類型的板卡,具備良好的兼容性。
對國產的龍芯和申威等架構的支持是應有之義。此外,隨著內核對樹莓派的支持,包括 openEuler 在內的各個 Linux 發(fā)行版也都紛紛提供了對最新的樹莓派板卡的支持。
此外, openEuler 對 RISC-V 的支持也引起了業(yè)界關注。RISC-V 被譽為硬件里的 Linux,因其開放性而廣受開源界的追捧。提及 RISC-V 支持,熊偉說,對于單板級的產品來講,RISC-V 的成熟度已經比較高,但對于邊緣計算以上的,比如說服務器、桌面,差距還是比較大。如果想在 RISC-V 上把歐拉操作系統(tǒng)的數千個軟件包都編譯過,這個本身就是一個很大挑戰(zhàn)。但編譯通過還只是第一步,第二步你得先能跑起來,第三步是要跑得好。第二步、第三步對于整個 Linux 產業(yè)線來講,熊偉覺得 RISC-V 還有比較長的路要走。
熊偉說,“我們在去年上半年和國內很多 RISC-V 廠商都有過溝通,還組織過相關的討論會等活動,現(xiàn)在的情況是大家先合力把技術準備工作做好,歡迎 RISC-V 相關廠商基于 openEuler 來開放相關產品”。
對應用場景的支持
什么是虛擬化混合部署,其意義何在?
前面我們在嵌入式硬實時部分提到一種虛擬化混合部署場景,熊偉就此做了進一步展開:對于未來的趨勢可以探討一下。以汽車為例,汽車上分為實時部分和非實時部分,汽車設計起初是分離式的,非實時部分和實時部分都是各走各的芯片,各走各的線路,但這樣成本就比較高,結合起來也比較復雜。未來可能會出現(xiàn)這種趨勢,這些功能都集中在一個板卡上,甚至一個 SOC 上,而 SOC 會分成不同的分區(qū),有實時控制的分區(qū),有非實時控制的分區(qū)。實時分區(qū)進行車輛控制,非實時分區(qū)負責車載娛樂系統(tǒng)。在很多場景上都會產生這種需求,其好處就是它的成本會降低,交互和互聯(lián)或者信息共享更加容易方便。openEuler 有幾種內核,會通過構建系統(tǒng)進行混合部署,根據不同的場景采用不同的內核。
所以,基于混合部署可能會催生出很多有趣的想象力,熊偉稱,今年年底可以推出混合部署的一個原型,明年有望變得相對比較成熟。
對云計算/服務器場景的支持
對于云計算和服務器場景的支持,除了對英特爾最新硬件的支持之外,openEuler 還在云原生、混合部署方面做了較多工作,比如離線/在線的混合部署,增強了資源利用率。熊偉稱,云以及云原生方向是 openEuler 的發(fā)力重點。
此外,熊偉還提到了一個令我頗感興趣的東西,即一個新的初始化系統(tǒng)。我們知道,Linux 最初的初始化系統(tǒng),比如 sysVinit,已經基本上被 systemd 所取代。雖然 systemd 也帶來很多新的進步,但是其也因不透明、龐雜、大一統(tǒng)等有違 UNIX 傳統(tǒng)思維的做法而廣受詬病。因而,歐拉社區(qū)也在開發(fā)一個新的初始化系統(tǒng) SysMaster,它是一個使用 Rust 開發(fā)的輕量級初始化系統(tǒng),目前計劃首先應用在嵌入式和容器中。熊偉稱,今年年底將會發(fā)布原型系統(tǒng),并預期未來會支持更多的場景。
當然,在 openEuler 社區(qū)里,SysMaster 和 systemd 可以按照客戶的要求自行選擇,在特定場景下可以提供更好的性能、更輕量的資源占用。熊偉還就此表達了歐拉操作系統(tǒng)的設計理念,“沿這個脈絡出發(fā),openEuler 做的很多工作都是期望把操作系統(tǒng)的部件盡量簡化,而不是越做越復雜。做事太多對操作系統(tǒng)也是一種負面影響?!?/p>
可能有人會對技術圈重復造輪子感到不以為然,熊偉說,“我們是非常強烈地建議大家重復造輪子的。重復造輪子,造更好的輪子才能不斷推動技術的進步。比如說 OpenSSL 問題也比較多,如果誰用 Rust 或者其它語言重寫了 SSL 實現(xiàn),我們也非常樂意支持,會融合到我們的操作系統(tǒng)當中?!?/p>
歐拉為開發(fā)者提供的支持
從這次公布的數據來看,歐拉社區(qū)的開發(fā)者、貢獻者增長迅速。有 1265 名開發(fā)者參與了 openEuler 22.09 的版本貢獻,相較于上一個版本,參與版本貢獻的開發(fā)者數量新增 63%,是 openEuler 已發(fā)布的版本中開發(fā)者數量最多的一次。
對此,我和熊偉進行了討論,歐拉社區(qū)為開發(fā)者做了什么支持,才能有這么多的開發(fā)者、貢獻者參與貢獻。熊偉對這個話題表示了很大的興趣。他認為,如果對標 Debian、Fedora 等操作系統(tǒng)社區(qū)來看,在 openEuler 之前,甚至是 openEuler 早期,其實中國是沒有一個完整的操作系統(tǒng)社區(qū)的。
在開始階段,歐拉社區(qū)是以包括華為在內的各個廠商的力量結合在一起組成的,但坦白來講,開始階段還是人拉肩扛這種方式比較多,相當于堆人力。熊偉說,但是從今年開始,歐拉開始真正地把社區(qū)的一些綜合性的機制建立起來了,同時我們正在重構基礎設施。比如建立統(tǒng)一賬號,之前歐拉操作系統(tǒng)的開發(fā)需要在 Gitee 上注冊賬號進行,而如果是 GitHub 上的開發(fā)者就沒辦法參與。所以,歐拉首先要有一個統(tǒng)一賬號,把這個基礎設施變成分布式的,不會強制捆綁到某一個托管平臺。通過分布式平臺,使用統(tǒng)一的工具從不同的平臺上拉取到一個構建倉進行構建。
這樣,整個基礎設施做了脫胎換骨式的變革,把公共能力抽取出來,可以適配不同的平臺,你個人的開發(fā)行為和平臺的綁定就可以進行隔離了。這樣做有非常大的好處,不光是可以集合幾個廠商的力量,還可以讓更多的個人開發(fā)者參與進來。這使得整個社區(qū)的運作更加分布化,同時也容易走向國際化。熊偉說,基礎設施改造完成后,一些自動化的工具,包括一些看板、可視化、可量化的評估體系都健全了,社區(qū)后續(xù)走向國際化、社區(qū)規(guī)模的進一步擴大也就有了堅實的基礎了。
這一點我聽了以后特別受鼓舞,我一直在看著歐拉社區(qū)是怎么發(fā)展起來的,我認為這是下一步發(fā)展的重要動力。
說到這里,熊偉也說,“大家在社區(qū)里抱怨很多事情,其實我們都是聽得到的,技術委員會都聽得到。但是很多事情是比較復雜的,消耗的工作量很大,這需要有條不紊地在一點一點去改進。整個社區(qū)的演變,我們肯定是有清晰規(guī)劃的,一定會實現(xiàn),但是大家可能要稍微耐心點,因為它不可能一蹴而就?!?/p>
下一個版本的藍圖
之后,熊偉還談到了之后的版本藍圖。社區(qū)也在討論如何更好的使得上下游企業(yè),把社區(qū)的開發(fā)節(jié)奏和產品迭代速度相適應。
從目前的計劃來看,歐拉社區(qū)期望能在下一個 LTS 版本中真正實現(xiàn)全場景、全覆蓋,真正能夠從嵌入式、邊緣計算到服務器、云計算全部拉通。目前的全場景還是比較初級的,組件只是能通,從構建、從基礎設施角度來講還都是比較分離的組件。熊偉稱,“至少從我的角度來講,最重要的就是把整個東西都能變成一個大的體系,而不是分離性的系統(tǒng)?!?/p>
此外,歐拉還期望在下一個 LTS 版本上完成基礎設施的分布式化、國際化。這是從整個社區(qū)角度來講,歐拉最關心的兩件事。熊偉稱,運行基礎只要好了,產出一定不會差,但是如果運行基礎不好,還是原先按照堆人力,手動的太多,這個路是走不下去的,因為社區(qū)已經大到不可能走下去。
最后,熊偉還談到了關于基礎工作的觀點,“我們做的事不但困難、花費又大、成效又很緩慢。水面下的工作可能并不那么顯眼,但實際上它真正是我們這個產業(yè)最基礎的?!?/p>