騰訊操作系統的創新之路
作者 | 陶鬆橋
策劃 | 王一鵬
審校 | 冬雨
“缺芯少魂”一直是我國信息產業發展的一大難題,而“少魂”就是指操作系統等基礎軟件薄弱。“拿來主義”這種傳統解決方式在給我們帶來便利的同時,也桎梏了我們的創新。騰訊的操作系統研發也走過了從拿來主義到創新研發的道路。雲計算時代,操作系統向下適配多元化硬件,向上支撐多樣化產品,其重要性不言而喻。讓我們一起了解下騰訊操作系統的創新之路。
分享主要分爲四個部分展開:第一部分商業系統時代;第二部分⾃主運營時代;第三部分創新研發時代;第四部分展望未來。
本文整理自騰訊操作系統研發高級工程師陶鬆橋在DIVE 全球基礎軟件創新大會 2022的演講分享,主題爲“騰訊操作系統的創新之路”。
以下爲整理內容。
大家知道 “缺芯少魂”一直是咱們國家信息產業的一大難題,而少魂就是指操作系統這些基礎軟件比較薄弱,曾經“拿來主義”這種傳統解決方式在給我們帶來便利的同時,也桎梏了我們的創新。
騰訊操作系統的研發也走過了從拿來主義到創新研發的道路,我們知道雲計算時代,操作系統向下適配各種多元化的一個硬件,向上支撐多元化的一個產品,它的重要性創新性不言而喻。今天就讓我們來一起了解一下騰訊操作系統的創新之路,我將從三個時代一個未來來給大家分享。
商業系統時代
早期騰訊的業務還比較單一,服務器數量比較少,購買商業的 Linux 操作系統就可以滿足業務需求。後來隨着業務和機器數量的不斷增多,OS 廠商支持費用也越來越高,這時候業務也有一些定製化的需求。但是,OS 廠商常常不能滿足這些需求,遇到一些問題廠商的支持也沒有那麼及時。
在這種情況下,我們成立了操作系統研發團隊,開始研發和運營我們自己的 Linux 操作系統,也就是 Tlinux。我們知道,操作系統包括用戶態和內核兩部分,接近十年的時間,我們的研發投入主要集中在 Linux 內核,而用戶態發行版使用的是相對穩定的 TencentOS 進行定製開發。2019 年底,Tlinux 命名改爲 TencentOS Server,並對外正式開源。2021 年,隨着國內外供應鏈大環境的變化,我們開啓了 TencentOS Server Stream 的研發,併發起了 OpenCloudOS 社區。
在騰訊發展初期,公司業務比較單一,服務器數量比較少,操作系統很多潛在缺陷基本上不會爆發,因此,我們就選擇了開源操作系統,可以滿足當時的需求,並且不需要花費額外的成本,所以公司當時就選擇了 slackware 作爲服務器操作系統。
但是,隨着公司的不斷髮展,業務數量和規模都在快速的擴張,業務場景也越來越複雜,服務器數量也急劇增長。這個時候,開源操作系統的穩定性問題就不斷爆發出來,經常會宕機,並且隨着業務場景的增加,開始對操作系統底層特性提出一些需求,業務側非常需要操作系統研發層面的支持。但當時公司沒有操作系統研發團隊,就只能找商業操作系統提供支持。2006 年,公司通過招標引入了 Noware 的商業操作系統 SUSE,藉助於 Noware 的統一技術支持解決了當時面臨的一些困難。
但幾年之後,公司操作系統支持又面臨了新的挑戰,公司業務迅猛發展,運營了成百上千個自研業務,並且有第三方業務接入,服務器數量也隨之增加。快速發展導致業務場景更加複雜,對操作系統平臺的穩定性、性能、底層特性支持方面又有了更高的需求,這與商業操作系統逐漸產生了一些矛盾,這些矛盾和挑戰主要體現在以下幾個方面:
第一個是運營需求,我們知道生產環境下的故障解決是否及時,直接關係到業務的競爭力、業務的收入,但是我們與廠家溝通成本很高,無法做到及時有效。OS 平臺廠商,更多考慮的是通用客戶的需求,無法專門針對公司業務提供穩定高效的底層 OS 平臺;
第二是特性方面的支持,有時候業務需要去深入定製 Linux 內核,但是商業 Linux 發行版不允許我們去改內核代碼;
第三是運營成本的考慮,商業 Linux 操作系統一般按照每年每服務器的標準收費,但是隨着服務器數量的迅猛增長,操作系統的使用成本就越來越高;
最後是運營風險的考慮,如果說一個公司的所有操作系統都依賴某個廠商,操作系統運營是存在潛在風險的。
自主運營時代
業務對底層操作系統的支持需求也不斷提升,自研操作系統顯得非常必要。因此 2009 年,公司就組建了操作系統團隊,專門負責公司服務器操作系統的研發和底層的運營支持,自研操作系統並不是所有的一切都從頭開始,把所有的商業操作系統開源操作系統都撇開從頭去造,這樣投入會非常大。俗話說的好,站在巨人的肩膀上飛得更高,我們沒必要重複發明輪子,所以從最開始我們使用的發行版還是 SUSE,只是在上面做了我們內核的定製,取名爲 Tlinux 內核。我們結合公司業務的需求和使用場景進行了一些定製,比如:
精簡內核
新硬件支持
新技術引進
業務開發需要
穩定性提升
性能改進
隨着業務需求的進一步增長,僅僅定製化內核已經不能滿足很多業務,我們就開始研發 Tlinux 發行版。同很多其他的這些大型互聯網公司一樣,我們也是基於開源的 TencentOS 系統做了定製、升級、裁減、調整、添加,形成了我們自己的 Tlinux 發行版,內核使用的還是 Tlinux。這幾年,隨着 TencentOS 的版本變更,Tlinux 也不斷進行演進,相繼發佈了 Tlinux1 版本、Tlinux2 版本,還有 TencentOS Server3 版本,內核方面迭代得更快,相繼發佈了四個大版本,依次爲 TK1-2.6.32、TK2-3.10、TK3-4.14、TK4-5.4。
我們也開發了很多運營系統來管理維護服務器 OS,比如我們研發了宕機自動分析系統。我們的系統可用率可能是非常高的,比如系統可利用率能夠達到 4 個 9、甚至 5 個 9 以上,但是因爲基數太大,服務器有幾百萬臺,每週還是有上百臺的機器宕機,如果一臺一臺去分析宕機原因,非常耗時耗力。因此,我們研發了宕機自動化分析系統,機器因系統問題導致宕機時,會自動進入第二內核,第二內核會啓動 kdump 服務去生成 vmcore,然後自動重啓,系統重新開機時會去把 Agent 拉起,Agent 會自動查找有沒有生成 vmcore 並進行分析處理,然後對比一些引擎和庫,最終給出診斷結果,發給所有 OS 開發人員、機器負責人,告知宕機時間、原因以及修復建議。如果是未知問題,自動分析系統無法分析宕機原因,OS 開發人員就要去介入,手動分析宕機原因,給出修復補丁,一方面製作熱補丁去修復,另一方面合入新內核,升級操作系統去解決。
僅僅宕機分析系統還不夠,我們還研發了 TManager 運營管理系統。在這個系統中,我們實現了很多功能,比如鏡像自定義功能,母盤、ISO、單核鏡像或者子集鏡像都可以通過我們的平臺進行自定義製作;還實現了軟件的監控告警,比如有些軟件版本比較低、有什麼 Bug、有什麼安全漏洞,會給出提示和告警;還提供了一些主機運維的能力,比如可以自動批量下發任務、腳本、熱補丁。另外還實現了漏洞管理的功能。通過這樣一套管理系統,OS 開發和業務都能夠很好察看自己 OS 的狀態,對一些問題能夠及時處理,以此來保證操作系統安全穩定的運行。
創新研發時代
十年操作系統自主運營經驗,讓我們對 OS 產品研發有了更深厚的底氣,有了更紮實的技術基礎,這十年我把它叫做自主運營時代。2019 年,我們對外開源了我們的操作系統產品。2021 年,我們角色進行了一個大的轉變,之前是發行版定製,現在變成了發行版自主研發。發行版自主研發肯定是 OS 研發人員一直以來的夢想,我們不再基於開源的 Linux 發行版,而是基於 Upstream 開源社區,或者我們自研從頭開始構建操作系統發行版 TencentOS Server Stream,基於這個版本再去研發商業版本 TencentOS Server,研發社區版本 OpenCloudOS,OpenCloudOS 社區是我們發起的一個開放中立的 Linux 開源社區,我們希望通過建立這樣一個開放平臺,能夠聯合公司內外的開發者,最終把我們這個操作系統共同打造成一個綠色節能的操作系統,能夠充當雲原生的底座、基石,共建全場景、多元應用生態。
互聯網的下半場是屬於產業互聯網,也就是說要實現人和設備、設備和設備、設備和服務之間的連接,作爲整個公司業務的基石和服務器的靈魂,我們的操作系統也完成了新一輪的變革,從單一的服務器操作系統,拓展到覆蓋雲數據中心、邊緣、物聯網終端,提供基於業務場景化的全棧 OS 佈局。TencentOS Server 是服務器操作系統,面向雲數據中心,主要特點是高性能、安全可靠;TencentOS Edge 是邊緣計算操作系統,能夠將雲上的計算能力邊緣化;TencentOS Tiny 是物聯網終端操作系統,它的特點是小而精,比如低功耗、低資源佔用、模塊化。我們通過這樣一套操作系統佈局,希望能夠打造我 2B 端的生態鏈全棧 OS,能夠全面覆蓋雲數據中心、邊緣物聯網終端,實現產業互聯網的操作系統佈局。
首先我們基於開源上游社區開發社區上游的 LE 版本,再通過社區力量共同開發社區穩定版,研發完成後會用於生產環境,通過海量業務這部署驗證,再次提升這個社區版本的穩定性,並且我們也支持 OS 廠商依據這個社區版本去構建穩定的商業版本,或者衍生版本。
OpencloudOS社區 去年發佈了一個百川計劃,目的是向生態夥伴發出邀約,通過培訓任務體系,吸引行業的優秀人才或者優秀項目加入進來,去適配 OpenCloudOS 社區版本。在商業應用方面,我們希望藉助社區成員和夥伴的各自渠道賦予激勵政策,推動不同軟件廠商主動適配,不斷豐富生態覆蓋度。
在開源軟件方面,OpenCloudOS 社區通過自動化 CI 系統,持續保障通用開源軟件的兼容性。商業中間件方面,社區會成立專門的生態拓展組織,搭建相應的基礎設施,推進自動化的流程,持續進行兼容性的驗證工作。對硬件廠商來說,OpenCloudOS 會通過社區特色技術和項目將商業合作與社區建設相結合,吸引 OSV 廠商積極貢獻,並衍生應用商業版本,同時會推動硬件廠商積極參與貢獻回饋社區,保障硬件的一個兼容性。
在技術創新方面,我們也做了很多。這張圖是整個操作系統的框架圖。內核一方面是要去適配更多的硬件,比如 CPU、GPU、NPU、DPU,另外我們也做了很多方面的優化,比如 CPU 調度優化、內存管理優化、網絡優化、I/O 優化,還有云原生優化。我們還開發了宕機自動分析、熱補丁功能、虛擬化。在虛擬化容器方面,我們做了很多原創的雲原生特性和優化,在運行時和編譯器方向,我們有 Kona JDK、Tencent Compiler 加速庫。在應用中間件方面,騰訊有非常多的應用,比如 TDSQL、TBDS、CKafka、TKE。
我們的技術創新可以概括成這四個方面:對於企業應用來說,我們可以提升雲場景的資源利用率,降低數據中心的一個能耗;對於管理員來講,我們希望能夠達到高效的智能運維、無損升級,支持快速部署和遷移;對於開發者來講,我們支持 IDE 的高效開發,並且能夠支持典型應用的高效部署;對於 OS 開發人員來說,我們在虛擬化、編譯器、調度相關貢獻了很多代碼,雲原生相關也有貢獻代碼,是我們努力的一個方向。
接下來給大家介紹一下 TencentOS Server 在助力碳中和方面取得的一些結果。早在 2021 年 1 月,騰訊宣佈啓動碳中和規劃,成爲國內首批啓動碳中和規劃的互聯網企業之一。
TencentOS Server 在節能降耗領域取得突破,推出如意大規模全場景混部技術。隨着語音的快速發展,IDC 的規模不斷擴大,投入越來越大。有研究顯示,服務器成本佔比高達 69%,每年各大互聯網廠商服務器支出投入非常大,與此形成鮮明對比的是服務器的平均利用率卻很低,通常業界的 CPU 利用率只有 15% 左右。這就是我們研發如意這款大規模容器集羣混部技術的初衷。如意包括 CPU、網絡、IU、內存四大模塊,針對四種服務器資源將用戶的離線和在線任務部署到同一臺服務器上,既能保證在線業務的服務質量,又能有效提升資源的利用率。我們做了一些統計,比如按混部三萬臺機器進行測算,CPU 利用率可以從 15% 提高到 45%,大概每年可以節省兩億度電,減少碳排放達到八萬噸的級別。
爲了進一步降低數據中心的能耗,我們還開發了悟能系統。悟能系統是一套集羣級能耗優化方案。它能夠對集羣進行能效評估,動態啓停 CPU 的節能模式,還支持動態遷移進程,部分 CPU 開啓節能模式。它包括數據模塊、彈性 CPU 策略、遷移策略,調度等等,通過能耗優化降低服務器的能耗,爲實現碳中和同樣做出了很大的貢獻。
系統級的能耗優化與全場景混部系統讓 TencentOS 成爲國內最綠色最節能的操作系統,並且我們在 2021 年榮獲了中國新能院授予的奧斯卡金鋒開源項目及開源社區獎項。
展望未來
最後我們來看一下騰訊操作系統的未來規劃。作爲一家大型的科技公司,自主創新肯定是我們長期堅持的道路,一方面我們要做自主可控的操作系統,保證 OS 供應鏈的安全性,另一方面我們也需要持續不斷地創新,讓操作系統這棵老樹能夠不斷綻放出新的花朵。其次爲了助力國家的碳中和戰略,我們會持續優化操作的資源利用率,將 TencentOS 努力打造成綠色經濟的 OS。最後作爲操作系統的開發者,力爭上游或者上游優先是我們的使命,我們會同全球的 OS 開發者一起不斷貢獻自己的力量,加大開源社區的貢獻。
演講嘉賓:
陶鬆橋,騰訊操作系統研發高級工程師。負責騰訊操作系統的研發工作,主導了 TencentOS 和 OpenCloudOS 多個版本產品的研發和運營,在操作系統體系結構,應用開發,系統適配等具有豐富經驗。