這幾年,隨著(zhù)“人手N個(gè)”手機,平板,手環(huán),手表等終端設備;云計算技術(shù)的廣泛應用;車(chē)聯(lián)網(wǎng),工業(yè)自動(dòng)化等邊緣側場(chǎng)景的發(fā)展,這些技術(shù)背后的底層技術(shù)越來(lái)越受到大家的重視,不管是芯片還是操作系統,更多的出現在公眾媒體上。作為操作系統從業(yè)者,很開(kāi)心看到國內在基礎技術(shù)上越來(lái)越重視。
2020年12月8日,CentOS社區宣布原有的CentOS8將于2021年年底停止維護,國內之前使用CentOS生態(tài)的廠(chǎng)家何去何從變成了一個(gè)非?,F實(shí)和急迫的問(wèn)題。正好這個(gè)時(shí)候,阿里、統信、英特爾、紅旗、龍芯、飛騰等多家公司發(fā)起了龍蜥社區。我有點(diǎn)好奇,看一看龍蜥在做什么事情,能不能幫助這些原有依賴(lài)CentOS生態(tài)的公司?
CentOS是一個(gè)Linux發(fā)行版(Linux distribution),通俗的說(shuō),Linux發(fā)行版是基于Linux內核,GNU工具,一系列軟件以及軟件包管理器組成的操作系統。
常見(jiàn)的發(fā)行版如下圖,大致可以分為社區和商業(yè)版本。
不同的發(fā)行版適配的軟件和硬件不盡相同。更換一個(gè)發(fā)行版意味著(zhù)原有的業(yè)務(wù)軟件和硬件可能需要重新適配,測試。RHEL支持周期可以達十二年(參見(jiàn)下圖),意味著(zhù)一次大版本適配可以管十年以上,頻繁更換發(fā)行版,會(huì )極大增加企業(yè)的成本。
圖片來(lái)源:https://access.redhat.com/support/policy/updates/errata
CentOS和Redhat的企業(yè)級Linux發(fā)行版RHEL完全一樣,不光特性一樣,bug都一樣,只是更新稍稍慢一點(diǎn),使用CentOS意味著(zhù)免費使用Redhat企業(yè)級Linux維護能力。CentOS8在2019年release之后,在2020年宣布停止維護,相當于剛剛情定十二年,第二年對方說(shuō)要分手。。。
前面提到,CentOS8沒(méi)有了,是更換么?換,意味著(zhù)之前的部分研發(fā)投入打了水漂。不換,意味著(zhù)自己要把整個(gè)發(fā)行版維護起來(lái),相當于原本只是自己家的裝修和維護,變成了要自己維護整棟樓。工作量大了不是一點(diǎn)點(diǎn)。不換,又希望有人維護,是否可能?國際上有Rocky Linux和AlmaLinux兩個(gè)新項目繼續CentOS8的維護,還有之前一直做RHEL兼容的Oracle Linux。國內則有龍蜥社區。
Rocky Linux和AlmaLinux二者的背后既有AWS、Google Cloud、微軟Azure這樣頂級云廠(chǎng)商,也有方案提供商。而Oracle Linux,除了和RHEL兼容,還有自己的增強。
一個(gè)發(fā)行版的維護周期長(cháng)達十幾年。選擇一個(gè)發(fā)行版,意味著(zhù)日后的十幾年要和這個(gè)發(fā)行版高度合作。所以對于一個(gè)基于發(fā)行版達成自己商業(yè)目標的公司來(lái)說(shuō)。這個(gè)發(fā)行版的維護能力,本公司的需要能不能有效地反饋到發(fā)行版社區,這兩個(gè)因素都非常重要。
很顯然個(gè)人和小團隊是做不了這個(gè)事情的。上面兩家新成立的公司意味著(zhù)要和這兩家公司一起發(fā)展。對于國內的公司來(lái)說(shuō),跨文化和地域的溝通實(shí)際上增加了研發(fā)成本。同時(shí)在一個(gè)發(fā)達國家主導的發(fā)行版(例如Oracle Linux)里面,國內公司能有多少話(huà)語(yǔ)權也是一個(gè)問(wèn)號。所以如果能由國內的公司提供兼容于CentOS的方案,并且這個(gè)公司有豐富的操作系統維護能力,并且能夠開(kāi)放地接納不同的需求,無(wú)疑是一個(gè)很好的選擇。
調查一下龍蜥,我發(fā)現這么幾點(diǎn):
龍蜥社區的最高機構是理事會(huì ),包括阿里云、英特爾、兆芯、統信軟件、中科方德、萬(wàn)里紅等14家單位。不僅有阿里巴巴這樣的互聯(lián)網(wǎng)廠(chǎng)商,也有統信這樣的長(cháng)期在國內做操作系統的公司,還有龍芯、兆芯、飛騰這樣的芯片原廠(chǎng)。
阿里云有豐富的場(chǎng)景。如果阿里云自身已經(jīng)有大量使用龍蜥,對外部客戶(hù)來(lái)說(shuō),相當于獲得了阿里云的高強度海量測試。
龍蜥即可以兼容已有的CentOS8,也可以選擇龍蜥自研Linux內核獲得更多功能特性。
最后龍蜥還能提供超過(guò)十年的技術(shù)支持。
嗯,看起來(lái)是一個(gè)可選項。
但是對于一個(gè)工程師背景的我。我對于這個(gè)事情處于比較謹慎的態(tài)度。不僅僅因為我之前曾經(jīng)在 SUSE也工作過(guò),對于發(fā)行版有比較深的了解。同時(shí)也是因為我之前一直在研發(fā)一線(xiàn),更看重代碼,文檔等具體工作。正如Linus所說(shuō),talk is cheap,show me your code。
對于云場(chǎng)景來(lái)說(shuō),最重要的是彈性擴容和資源隔離。我選擇了資源隔離,看一看龍蜥在資源隔離上面有哪些東西。一看發(fā)現龍蜥在資源隔離上支持的方案非常廣,能支持各種各樣的場(chǎng)景。
在云場(chǎng)景里面,容器扮演了非常重要的角色。大家都在說(shuō)的云原生的基礎就是容器。容器技術(shù)可以分成兩個(gè)層次。一個(gè)是像集裝箱一樣把應用裝到容器里面,以容器鏡像的形式發(fā)布并運行。另一個(gè)是如何管理這些集裝箱。在如何管理這一塊社區有一個(gè)事實(shí)標準Kubernetes。而集裝箱如何執行,集裝箱和集裝箱之間有多厚的保護殼?這些屬于容器運行時(shí)要解決的問(wèn)題。
傳統容器方案的特點(diǎn)是非常輕量級,但是安全性和隔離性不足。而基于虛擬化的方式,雖然提供了非常好的安全性和隔離性,但是沒(méi)有辦法做到像容器那樣輕量級和快速啟動(dòng)。
看一個(gè)發(fā)行版對容器的支持,首先要看對基本的容器和容器的管理是否支持的比較好。這部分龍蜥做的沒(méi)有問(wèn)題,而且有阿里自研的Pouch增強,還有基于互聯(lián)網(wǎng)業(yè)務(wù)的需要實(shí)現的混合部署(把需要高優(yōu)先級快速響應的業(yè)務(wù)和低優(yōu)先級的業(yè)務(wù)混合部署到一起,業(yè)界稱(chēng)為混部)?;觳康哪康氖窃谛屎统杀局g有一個(gè)非常好的平衡。在沒(méi)有混合部署之前,為了保證高優(yōu)先級業(yè)務(wù)的運行,同一個(gè)機器上容器的部署量有限,這樣浪費了一部分硬件資源,也就提高了業(yè)務(wù)的運行成本。通過(guò)混部,既保證了高優(yōu)先級業(yè)務(wù)的服務(wù)質(zhì)量,也充分利用了硬件資源:讓低優(yōu)先進(jìn)業(yè)務(wù)可以在系統負載充足的情況下適當運行。
除了基本的容器,龍蜥還在安全性和隔離性方面提供了不同的解決方案,以適合不同的業(yè)務(wù)需要。舉個(gè)例子,為了同時(shí)發(fā)揮虛擬機和容器的特點(diǎn)(虛擬機有較好的安全性和隔離性,容器能夠快速啟動(dòng)),龍蜥集成了開(kāi)源社區項目Kata,Kata的由螞蟻金服,華為和英特爾主導;為了支持機密計算的場(chǎng)景,龍蜥支持了inclavare-containers。后者是一個(gè)非常典型協(xié)作的產(chǎn)品,包括:
Occlum:由螞蟻安全計算團隊自研的實(shí)現了內存安全的多進(jìn)程 library OS(rune 的默認 enclave runtime)
Dragonwell:由阿里編譯器團隊定制的 LTS OpenJDK 發(fā)行版本(后續會(huì )提供 Golang 的支持)
Graphene:基于 IntelSGX(SoftwareGuard Extensions)技術(shù)并可以運行未經(jīng)修改程序的開(kāi)源 library OS(阿里云安全團隊合作貢獻 Golang 支持)
enclave-device-plugin:由阿里云容器服務(wù)團隊和螞蟻金服安全計算團隊針對 Enclave 硬件技術(shù)聯(lián)合開(kāi)發(fā)的 Kubernetes Device Plugin
能夠看得出來(lái),龍蜥在滿(mǎn)足業(yè)務(wù)需要和統籌集成方面有很多的工作??吹竭@兒我難免有一個(gè)疑問(wèn)。上面的團隊其實(shí)都屬于大阿里,到底龍蜥是不是一個(gè)開(kāi)放和活躍的社區?看一個(gè)社區有兩個(gè)方面,一個(gè)是它有沒(méi)有向上游貢獻自己的工作,一個(gè)是有沒(méi)有其他公司向社區貢獻。
先來(lái)看看社區貢獻這部分,云場(chǎng)景對操作系統的需要可以分為計算、存儲和網(wǎng)絡(luò )三部分。這里我選擇了存儲場(chǎng)景,在存儲場(chǎng)景,原有libaio方案的性能已經(jīng)不能滿(mǎn)足新型高性能存儲的需要,由Facebook發(fā)起的io_uring很可能可以解決這一類(lèi)問(wèn)題。
龍蜥在這里也有大量的貢獻,在最新Linux內核(5.15 rc3)使用版本管理工具查看,linux.alibaba.com的作者在io_uring貢獻了74個(gè)補?。▍⒁?jiàn)下圖),據說(shuō)在io_uring社區排名第二。比補丁數量更重要的是補丁的質(zhì)量,通過(guò)查看補丁提交信息,可以看到工作包括對多實(shí)例的編程模型的改進(jìn)、多線(xiàn)程的性能優(yōu)化和內核其他子系統的協(xié)作開(kāi)發(fā)等等。

不僅如此,龍蜥的高性能存儲技術(shù)SIG還基于這些工作,針對Redis等上層業(yè)務(wù)需要的組件做適配和優(yōu)化?!皉edis 在 event poll 和 iouring 下的 qps 對比,可以看到: 高負載情況下,io_uring相比 event poll,吞吐提升 8%~11%。開(kāi)啟 sqpoll 時(shí),吞吐提升 24%~32%“:




上面的性能優(yōu)化非常的有價(jià)值,可以想象,基于它的業(yè)務(wù)一定會(huì )有更好的性能體現。就像一棵大樹(shù),讓人看到了枝繁葉茂的樹(shù)冠。同時(shí),更重要的是這棵大樹(shù)的樹(shù)干是否健康,前面在內核社區的社區貢獻,就是龍蜥操系統的在高性能存儲等場(chǎng)景的樹(shù)干。
獨木不成林,作為一個(gè)開(kāi)放的社區,除了向外的貢獻,還需要看社區內部是一家獨大還是各家都有貢獻。前幾天我看到一個(gè)新聞,國內少有的有自主指令集的龍芯LoongArch在龍蜥社區的貢獻眾多,涉及基礎平臺、OpenStack、Ceph、AI 框架、大數據等內容。此外,我在龍蜥SIG列表還看到深度操作系統著(zhù)名的DDE桌面SIG。
其實(shí)龍蜥還有很多工作沒(méi)有來(lái)得及看。比如完整的國密解訣方案,比如Java在A(yíng)RM64的優(yōu)化獲得SPECjbb第一的得分,比如龍蜥的可靠性和調測能力。
所謂操作系統,就是對下抽象硬件,對上滿(mǎn)足業(yè)務(wù)需要。從這個(gè)角度看,操作系統可做的事情很多。尤其是在當前云計算場(chǎng)景,語(yǔ)言的開(kāi)發(fā)者越來(lái)越多地基于語(yǔ)言本身開(kāi)發(fā),越來(lái)越不關(guān)注操作系統。這無(wú)疑給操作系統的演進(jìn)和優(yōu)化提供了更大的空間。
龍蜥提到過(guò)端邊云的規劃,據稱(chēng)會(huì )把AliOS Things集成到龍蜥中。相比之下,龍蜥在邊緣側的場(chǎng)景還沒(méi)有任何消息,期待龍蜥在邊緣側最熱門(mén)的場(chǎng)景——車(chē)聯(lián)網(wǎng)——會(huì )有所動(dòng)作。目前龍蜥還沒(méi)有ARM和RISC-V的工作組,如果龍蜥能在這兩個(gè)架構上有更多發(fā)力,端和邊緣的可能行感覺(jué)會(huì )更多,也能更好地支持龍蜥做通用基礎設施的目標。
1、CentOS Project shifts focus to CentOS Stream
https://blog.centos.org/2020/12/future-is-centos-stream/
2、Ten scenarios where edge computing can bring new value
https://www.zdnet.com/article/10-scenarios-where-edge-computing-can-bring-new-value/
3、Cloud Computing Gets Enhanced by Linux Distributions
https://www.worldposta.com/en/cloud-computing-enhanced-by-linux-distributions/
4、淺談機密計算-發(fā)表在Inclavare Containers開(kāi)源之際
https://openanolis.cn/blog/detail/242161389854032808
5、高性能存儲技術(shù)SIG Redis:
https://openanolis.cn/sig/high-perf-storage/doc/218937424285597744
6、干貨滿(mǎn)滿(mǎn)!龍蜥社區Meetup走進(jìn)龍芯圓滿(mǎn)結束,5大技術(shù)分享精彩回顧
https://www.leiphone.com/category/industrycloud/NfD57X8MsBupbc3c.html
作者介紹:
張健,先后在SUSE,華為,區塊鏈創(chuàng )業(yè)公司,寒武紀等公司工作,任工程師,架構師,技術(shù)合伙人,架構師等角色。
技術(shù)方向:Linux內核,Linux發(fā)行版,ARM,RISC-V,虛擬化。
目前自由職業(yè):提供計算機軟件技術(shù)課程,職業(yè)規劃咨詢(xún)/教練服務(wù)。
聯(lián)系客服