騰訊雲虛擬化:堅定的開源主義者

“只要有足夠多的眼睛,就可以讓所有問題浮出水面。”
 

在開源社區,以開源理念的發起者之一、Linux創始人林納斯·託瓦茲名字來命名的林納斯定律爲不少開發者所共鳴。也正是這種共創共享的精神內核,讓開源自1988年發展至今,並逐步成爲全球IT軟件的重要組成。

 

根據全球最大開源代碼託管平臺 GitHub 年度報告數據顯示,截至 2019 年 GitHub 託管倉庫已有 1.4 億,2019 年新增倉庫 400 萬個,創建第一個項目的用戶比 2018 年增加44%,130 萬開發者對開源做出首次貢獻。SourceClear 調查報告指出開源項目已呈現指數級增長趨勢,2026 年預計超過 3 億。

 

在騰訊雲,也有這樣一支專門面向開源的小分隊:他們深耕雲計算的最根本技術之一——虛擬化,並始終以擁抱開源、回饋開源作爲使命。

 

10月29日,在全球虛擬化頂級技術峯會KVM Forum上,2020年全球企業KVM開源貢獻榜正式公佈,騰訊雲再度榮登該榜,其中兩項技術方案被評爲KVM2020年度核心突破。騰訊雲因此也成爲國內唯一連續四次登榜的雲服務商。

騰訊雲兩項技術方案獲評KVM2020年度核心突破

 

不止於此,騰訊雲目前在KVM開源社區已貢獻超過170個patch,超過20個技術特性,其中8個被評爲KVM年度核心突破,貢獻國內排名第一。也正因爲在開源領域的突出貢獻,騰訊雲已經累計7次受邀在KVM Forum發表演講。

 

團隊成員說:“之前中國人一直被開源社區詬病,認爲中國人總索取,不貢獻。我們希望用行動說話,爲開源社區貢獻真正硬核的好東西,慢慢改變開源社區對中國的偏見。”

 

  • 探索無人區

 

KVM是當前雲計算中計算虛擬化的主流技術。雲服務商通過KVM對物理服務器進行虛擬化後生產出雲服務器,用戶就能從虛擬資源池中按需購買不同規格的雲服務器產品,進而獲取對應的計算能力。

 

然而,當時間迴流至2013年,KVM卻並不是雲計算的“真命天子”。

 

彼時,騰訊雲剛剛從服務騰訊開放平臺上的合作伙伴升級爲面向社會全面開放。騰訊雲虛擬化技術團隊正在思考,採用什麼樣的技術棧,能夠保障好更大規模雲上用戶業務安全性、連續性和穩定性。

 

業界當時最主流的虛擬化技術是Xen,由劍橋大學開發。不管其他雲服務商,還是騰訊內部,Xen都是計算虛擬化的不二之選。可是,Xen的痛點在於,代碼過於複雜,當規模達到一定程度後,出問題的機率倍增,且難以把控,最終極有可能給雲上用戶帶來損失。

 

KVM更像是後起之秀。代碼簡單清晰,從原理上分析相對Xen具有更好的技術前瞻性。但問題是,它僅有一個初級的社區開源版本,而尚未作爲一個主流的技術棧爲業界所驗證。

 

是跟隨主流還是探索無人區,需要技術團隊迅速做出抉擇。

 

經過充分的探討,騰訊雲虛擬化技術團隊的選擇是KVM。“面對產業數字化的契機,雲計算作爲產業互聯網的底層基石,未來一定有巨大的成長空間。Xen大概率不能滿足未來大規模應用場景下的技術需要,探索KVM雖然相對來說更加艱難,但這是一條必由之路。”騰訊雲資深虛擬化技術專家馬文霜回憶起當時的決策過程。

 

但爲了穩妥,團隊最開始還只是拿出5%的機器作爲KVM的技術試驗場,小步快跑。

 

試驗總會充滿波折。很快,團隊就經歷了一次面積較大的KVM 虛擬機宕機事故。好在經過周密的檢查,發現這個事故源自於KVM 開源版本里一個小錯誤,改掉就可以恢復正常。

 

隨後的過程雖然也是問題不斷,但經過團隊的努力,一個個難關逐步被攻克。團隊的技術也在不斷進化,包括重構了整套技術邏輯,以及研究出基於KVM的熱升級技術,能夠在用戶無感知的前提下,快速處理一些底層故障。

   

技術團隊合影

 

這至少證明了,KVM這條技術路線能走通。2014年起,騰訊云云服務器CVM已全部基於KVM技術生產。

 

值得一提的是,2015年,其他雲服務商因爲感受到 Xen 的侷限性,也開始將虛擬化技術從 Xen 切換到 KVM。此時,騰訊雲在KVM技術棧上已經積累兩年。

 

  • 從開源中來,到開源中去

 

獨行快,衆行遠。

 

KVM運轉起來不代表一勞永逸。初級開源版本沒有經過集羣驗證和海量業務測試,也不能把所有代碼路徑跑到。在真正的業務應用過程中,需要踩的坑超出想象。

 

如何在踩坑中讓KVM快速成熟起來?騰訊雲虛擬化技術團隊的答案是開源——藉助騰訊的場景把KVM用起來,發現和解決問題,然後把方案開源,從而帶動更多開發者關注,更多人發現問題,更多人解決問題,最終實現KVM技術演進的利益共享……

 

2014年底,一個棘手的問題浮現出來。一些大型遊戲客戶在使用KVM生產出來的雲服務器時,經常出現CPU佔用率高,抖動很大的情況,用戶能感到明顯的掉幀。

 

看代碼,復現問題,技術團隊發現了中間的規律——遊戲類業務需要關聯KVM底層的定時器,遊戲人數達到一定量的時候,因爲一些原因會導致定時器異常。同時,技術團隊發現,出現這個問題是因爲KVM架構中時間戳計數器的邏輯有bug。技術團隊採取現網修復的方式解決了這個問題。

 

問題得到解決後,技術團隊迅速將bug解決的過程寫成一個patch提交給社區,經過一系列嚴格評估,官方認可了由騰訊雲團隊貢獻的第一個patch。 

KVM社區確認騰訊雲首個patch貢獻的郵件

 

後來,類似的貢獻還有,KVM架構中irq路由表的bug修復,解決大存儲高負載的場景中虛擬機出現惡性宕機……

 

2015年,更大的挑戰爆發。因爲內存存在批次性質量缺陷,基於KVM生產的雲服務器故障率飆升。廠商的解決方案是更換內存,但換內存意味着物理服務器需要關機重啓。這對於客戶尤其是大量的遊戲客戶來說,顯然無法接受。

 

能不能把虛擬機環境在運行態中直接搬遷至健康的服務器上?KVM架構中的熱遷移技術設想給了技術團隊啓發。可是問題在於,這個技術存在較大的環境依賴,需要結合業務負載、硬件代次等一系列複雜的因素做技術優化,而且沒有實踐先例。

 

“沒有退路可言,只有死磕。”如今的騰訊雲虛擬化技術負責人陳立東,這樣形容當時的壓力。

 

沒日沒夜的幾天裏,技術團隊不斷研究熱遷移的技術原理,從提升遷移成功率和服務可用性兩個維度推理技術方案。終於,在解決了幾個關鍵技術卡點後,團隊終於找到了一種能夠實現的方案。騰訊雲也因此成爲第一個大規模運用熱遷移技術,解決硬件批次性故障的雲廠商。

 

衍生問題隨之而來。這個可能會爲騰訊雲帶來至少一定時間內競爭優勢的技術方案,是否還要第一時間開源?團隊出現了一些分歧的聲音。

 

“開源應該是一種一以貫之的思想。如果我們這次的熱遷移技術方案不開源,也許能夠獲得一時的競爭優勢,但這就會讓我們一直倡導的開源價值被摧毀,這並不利於KVM技術的長遠發展。”在騰訊雲副總裁劉穎的開導下,技術團隊很快達成一致,將熱遷移技術方案貢獻到社區。

 

這個突破性的貢獻也爲騰訊雲在社區贏得了廣泛讚譽。隨後的2017年,憑藉在這一領域的持續貢獻,騰訊雲受邀在KVM Forum上發表主題演講,這也是國內雲廠商代表中的首次。

 

  • 成立專門團隊

 

2016年底,李萬鵬加入騰訊雲,身份是高級工程師。這個職責需要承擔大量的業務開發工作。

 

因爲對開源有着狂熱愛好,他每天早上五點起牀,利用上班前的時間和週末以及節假日的時間研究KVM開源相關的項目。

 

“本職工作的壓力還是很大,爲了避免耽誤工作,只能抽業餘時間做一些bugfix的工作,雖然價值相對低一點,但也算是對愛好的一種保持吧,這就是騰訊的‘工程師文化’。”與李萬鵬保持相同愛好的還有幾位同事。

 

無心插柳柳成蔭。李萬鵬和幾個同事在業餘愛好上的堅持,卻讓騰訊雲在2017年第一次登上了KVM全球企業開源貢獻榜,這也是榜單上首次出現中國雲服務商身影。

2017年騰訊雲首次登上KVM全球企業開源貢獻榜

 

登榜的消息很快傳到了騰訊公司高級執行副總裁湯道生那裏,他對團隊提出了表揚和鼓勵。

 

做出影響力,並得到了領導的肯定,也讓技術團隊更加堅定,在開源領域的持續投入很值得。“從自身角度而言能提升騰訊雲的技術影響力,往大的價值上說也是推動技術進步的一個很好的方式。尤其是對KVM這樣一個雲計算的關鍵技術,騰訊雲應該有這樣的擔當。”

 

這樣的想法得到了支持。領導決定,成立一個專注開源的虛擬團隊,虛擬團隊成員日常工作量減半,留下精力更好地投入到KVM開源方面的工作當中。

 

“虛擬化和內核的研究還是有很高的門檻,要想在開源這個領域做出成績,需要更多的人力投入。之前業餘時間做,更多就是研究怎麼修復bug,成立一個專門的團隊,大家有機會攻克一些關鍵特性。”李萬鵬說。

 

2018年開始,騰訊雲陸續向社區貢獻技術特性。

 

那一年,騰訊雲提出的PV TLB shootdown、PV IPI方案,對TLB刷新以及IPI進行優化,這些方案能夠提升大規格配置虛擬機的性能,降低虛擬化層損耗,使得部分應用場景性能提升達到130%~150%,被列入了當年核心突破。

2018年,騰訊雲提交的貢獻被列爲核心突破

 

2019年,騰訊雲Yield IPI、C-state MSRs、Exitless Timers方案再次對IPI和Timer進行進一步優化,3個方案再次被評爲2019年度核心突破。值得一提的是,2019年騰訊雲還推出35ms內啓動一臺虛擬機的輕量級虛擬化技術,創造了業界目前能最快啓動一臺虛擬機的記錄。

2019年,李萬鵬受邀參加KVM大會演講

 

團隊也吸引了越來越多的人加入,同樣熱愛開源的李海偉就是其中之一。

 

“業界做開源通常都是零散的組織,像騰訊雲一樣專門有虛擬團隊的並不多,這正是吸引我的原因。”李海偉表示,專門的組織最大的好處是能夠建立好的氛圍,成員傳幫帶,大家的視野也可以更廣,而且能有比較充裕的時間和精力去做一些高價值的技術突破。

 

2019年8月,這個組織更進一步。騰訊雲產品團隊的架構調整時一封專門的郵件,將李萬鵬、李海偉等劃在了一個部門,部門職責是:1.將經過業務實踐驗證的技術方案持續貢獻到社區;2.將社區裏好的技術特性落地到業務中實踐驗證;3.探索KVM技術新方向和難點問題的攻堅……

 

自此,KVM開源團隊,成爲了一個全職部門。

 

  • 瞄準行業最痛的問題

 

2020年,針對IPI(處理器中斷)和Timer(定時器)這兩個業務場景中出現頻次最多、性能影響最大以及最難克服的難題,騰訊雲提出了快速處理的框架, 繞過虛擬化開銷,使得IPI和Timer處理的性能提升分別有30%和16.5%,再次被評爲年度KVM核心突破。

 

除此之外,針對大規格虛擬機(多CPU和大內存)場景中性能下降明顯的問題,騰訊雲經過深入研究和探索,自主設計了完全支持CPU並行化的vMMU方案,克服了KVM原有設計中CPU執行被迫串行化帶來的性能損失,實現了虛擬機內存管理機制的架構升級。目前,該方案已經在騰訊雲穩定運行,並已經貢獻給開源社區。

 

另外,針對操作系統中元數據對內存資源佔用過高的問題,騰訊雲設計了全新的文件系統Dmemfs(Direct Memory File System), 可以直接管理部分系統預留的虛擬機內存服務,提高系統的資源利用率降低平臺成本。這個方案不僅提高了系統的資源利用率, 能夠降低平臺成本並最終讓利於用戶,同時也給系統開銷降低提供了一種新的思路。目前,這一方案也被貢獻到了開源社區。

 

“騰訊雲現階段在KVM開源方面聚焦的就是行業最痛點的問題,一方面通過持續創新解決騰訊雲線上遇到的各種挑戰並將產出反饋給社區,另一方面探索雲計算領域的新技術,做好前沿技術的預演和積累,堅定不移地持續爲虛擬化開源社區做出貢獻。”陳立東表示。

 

另一個更大範圍的數據是,截至目前,騰訊共對外開源110個項目,包含騰訊雲、微信、大數據、遊戲、AI、安全等領域,並覆蓋所有BG(事業羣)。

 

騰訊累計在GitHub獲得了約32萬Star(代表項目受歡迎程度),在GitHub全球開源企業Star數排名中位居全球前十。目前,騰訊已加入Linux、Apache等9大開源基金會,深度合作成爲最高級別會員,並向開源基金會捐贈多個優質開源項目。

 

“生於開源,長於企業,反哺開源,騰訊雲希望實現這個良性循環。”劉穎說。

 

 

-END-

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章