雲計算

從 VMWare 到阿里神龍,虛擬化技術 40 年演進史

以下為張獻濤演講實錄:

各位朋友們大家好,我是張獻濤,花名旭卿。我於2014年加入阿里雲智能,當前在阿里雲負責彈性計算團隊。加入阿里雲之前,我在英特爾從事虛擬化相關工作。過去十幾年,我基本專注在虛擬化領域。

今天要與各位分享的,是過去三四年間,阿里雲智能在新型計算架構方面的一個探索——神龍計算架構,以及阿里雲計算架構演進的相關實踐。

我今天分享的內容分成四部分:

第一部分是關於神龍架構的背景——阿里云為什麼要做神龍,神龍解決了雲計算哪些業務痛點。

第二部分介紹神龍架構相關的演進——第一、二、三、四代神龍之間有什麼異同點,它們一步一步解決了哪些業務訴求,為用戶帶來哪些核心價值;

第三點主要介紹的神龍架構的實踐——它能給雲計算的客戶帶來哪些價值,比如像剛才叔同老師講的,神龍結合容器能夠提供比在物理機上還要好的性能。

一直以來,從事虛擬化的技術人員都是物理機的性能作為優化目標,研究怎麼樣能把虛擬化後的能力無限接近物理機,比如做到90%,91%、92%、93%、95%,做到97%、98%可能就做不下去了——它只能無限接近物理機。今天用神龍這種新型計算架構的服務器,再加上阿里雲的容器,就可以提供比物理機高百分之幾十的性能,收益非常高。

最後我簡單介紹一下神龍架構的未來。

一、神龍架構的背景

在介紹神龍架構的背景之前,這裡面有幾個數字,來自一個大項目。我相信在線的很多網友都參與過這個好幾千億的項目,每年可能都有機會參與一次,就是天貓雙十一。

image.png

在2019年的天貓雙十一,我們又創造了很多新的歷史記錄,比如說全天交易額達到了2684億,相比去年有比較大的提升。第二個數字是54.4萬筆每秒,這個代表在0點清空購物車時,每秒鐘能夠處理交易的筆數。12.92億個包裹意味著幾乎人均一個包裹。

一個個的天量數字背後,都是在阿里雲公共雲上完成。我們去年達成了一個里程碑事件——整個阿里巴巴經濟體業務,全面遷到公共雲上面來,100%核心交易系統全面在阿里雲上完成。

在三四年之前,沒有今天講的這個神龍架構之前,其實是做不到的。因為雙十一上雲對公共雲平臺的挑戰非常大,線下也餓徐用物理機去堆是可以的。但是使用公共雲的基礎設施,要承擔阿里巴巴經濟體,比如電商、金融、物流相關交易,並且是雙十一這種天量的交易,是極大的挑戰。

今天我們做到了。背後是神龍服務器在起作用。

image.png

我們通過這張圖簡單直接看一下,左邊的照片是2017年10月的雲棲大會,我們發佈第一代神龍服務器的時刻。在這個時期起,神龍架構開始成為整個阿里雲智能最核心的競爭力之一。

為什麼它能夠承擔起像阿里巴巴雙十一這樣複雜的業務?

第一、因為神龍能夠充分地利用雲基礎設施的力量,也就是這裡展示的高彈性。單臺服務器,或者一個集群,在線下其實很難利用雲基礎設施的能力,而神龍雲服務器能和雲基礎設施融合在一起,提供高彈性的資源。比如,你需要更多的存儲、更多的網絡資源、甚至更多的數據庫,你不用停機、你也不用去插硬盤,系統會根據你的管控命令,自動進行資源伸縮。

第二是高穩定,尤其是性能的輸出,需要非常穩定。對於筆記本、PC這可能無所謂,但是對於企業級用戶所用的服務器來說,性能輸出需要是一個穩定的值。

為什麼?可能做過業務規劃或者容量規劃的同學能理解,如果計算性能處於波動的狀態,那很難規劃業務需要多少臺服務器支撐。比如說在線直播,八千人需要多少臺服務器,一萬人又需要多少臺服務器?這些需要精準規劃,所以對性能的要求是非常穩定的,神龍服務器可以完美滿足,它在雙十一的性能表現非常平穩。

第三是高性能。這個是本質的,如果性能不足夠高的話,或者連物理機甚至虛擬機都達不到的話,做這樣一款服務器,一個新型的計算架構,其實是沒有意義的。

這幾點,是我們做神龍服務器的一些思考。就像主持人所說,我其實已經做了十幾年的虛擬化技術,談到神龍每一次必須要談到的就是虛擬化技術。

虛擬化技術歷史

image.png

我是2004年開始做虛擬化,我當時還在讀博士。當時在整個業界,在整個世界範圍內真正是做虛擬化技術研究的不多,全球可能加一塊來還不到一百人。我當時一直在想,我畢業之後到底能不能找到工作,因為這個擇業範圍太小了。

在那個時間點上,虛擬化基本上都是一些高校在研究,比如說斯坦福大學、劍橋大學,微軟、VMWare等公司,還有我的老東家英特爾。

我們回顧歷史,其實虛擬化的歷史要比2004年還要早很多,不過一直都是在科研機構、大型IT公司裡做研究。

第一個時間點是1974年。最早的理論成立,1974年有一篇論文《Formal Requirement for Virtualizable Third Generation Architecture》,這篇論文為未來40多年的虛擬化技術的快速演進奠定了理論基礎:定義了什麼樣的技術才能叫做虛擬化,什麼樣的條件才能滿足虛擬化的定義。

第二個時間點就是1997年。1997年,斯坦福大學的教授創立了VMWare公司。這家公司的成立,真正地把虛擬化技術的理論研究,落實到應用。

VMWare做了一個叫二進制翻譯技術的創新

為什麼要做這個?

不得不說,英特爾X86架構,對虛擬化技術是不友好的。因為整個X86的演進,從4位、8位、16位到32位、64位。這樣的過程,其實天生就和一些大型機、和虛擬化是不一樣的。大型機最早就是為了多操作系統運行而設計的,要從指令集的設備層面去虛擬化。

而X86是逐漸演進的過程,最早從一個很小很小的PC市場開始做起。PC是沒有虛擬化要求的,所以X86指令集對虛擬化不友好。一定程度上,二進制翻譯技術可以在指令執行的過程中,動態掃描對虛擬化不友好的條件,一個個切換指令執行情況。這種方法的弊端是性能不太好。

在這個階段,VMWare主要還都是在PC上面運行虛擬化,還不是今天所講的雲計算數據中心的虛擬化技術。雲計算數據中心的虛擬化技術推行,是2005年。當年,英特爾發佈了VT-x和VT-d技術,這是英特爾和AMD兩家芯片公司為首發布的。他們覺得自己的X86的架構對虛擬化不友好,就擴展了指令集、擴展CPU的設計,讓它能夠更好地支持虛擬化技術。

這個技術加速了虛擬化進入數據中心,能夠服務於雲計算。

2009年,阿里雲成立,雲計算不太可能使用VMWare這樣的商業化軟件,所以就採用了當時比較流行的開源虛擬化軟件Xen,後來我們到2014年切到了KVM。當時阿里雲是深度定製化的KVM和Xen,做了產品化開發的。

我是2007年參與KVM研發的。在2014年之前,雲計算行業裡,大家想的都是,怎麼樣能夠把當前CPU提供的能力、Xen、KVM等虛擬化的軟件應用好,卻沒有發生多大變革。除了VMWare提供這個二進制翻譯技術,還有PPT裡沒有展示的,劍橋大學提出的準虛擬化技術paravirtualization——除了這兩個,沒有太大的創新。

2014年、2015年,阿里雲面臨要服務大B類市場的時候,我們要解決成本問題,提升我們的服務能力。

當時我們的虛擬化技術,已經滿足不了雲計算髮展的步伐。尤其在那個時間點上,我們也在探討,怎樣能夠把阿里巴巴經濟體的業務也遷移到雲上面來,這遇到了很大的難題,我們需要去變革虛擬化技術。

於是, 2015年我們開始探索,2016年開始立項,到2017年,X-dragon神龍架構問世了。它真正使用軟硬融合、軟硬件協同設計的模式,改變了傳統虛擬化技術和當前的計算架構不友好的地方。

以前虛擬化技術的設計思路,前提都是服務器和計算架構都已經定了,如何通過軟件適配計算架構。

我們做神龍則是反其道而行之。我們覺得今天的虛擬化已經發展得非常好了,那我怎樣能設計一種新的計算架構,讓虛擬化運行得更好?它代表著雲計算、雲數據中心、虛擬化技術帶來一個變革,它也給我們雲計算、阿里雲的高速發展帶來了更堅定的信心。

傳統虛擬化架構的缺陷

要設計這樣一種新型架構,我們需要簡單來看一下雲數據中心的傳統虛擬化架構是怎麼樣的、它有什麼樣的優缺點、我們為什麼要變革它。

這張圖是非常典型的虛擬化組織架構圖。

image.png

我們可以看到,底層是大型的物理機集群,每一臺物理機上面其實都會運行著Hypervisor——即虛擬化的系統軟件,還有一個宿主機,比如Xen裡面的Domain0。基本上是這樣的模式。

在雲計算裡面,客戶買到的都是虛擬機,虛擬機的計算能力、平穩性、彈性由下沉的虛擬化軟件——而不是虛擬機——來完成的。比如說計算的虛擬化,虛擬一個CPU、虛擬內存、虛擬中斷都會由Hypervisor軟件來完成;虛擬存儲,基本都由host的虛擬化實現模塊來完成,即通過軟件來做;網絡也是,我們會引入虛擬交換機、虛擬路由器這些的虛擬網絡。

這是一個非常典型的架構。在神龍出現之前大家都是這麼用的,也沒有覺得它有多麼的不好。但阿里巴巴經濟體,在把自身業務,以及部分大B類的客戶上雲時,我們發現了很多方面的問題。

我給大家簡單介紹一下這些問題。

image.png

1、資源爭搶、隔離性弱:這張圖中,虛擬機就是客戶的系統,宿主機就是我們的虛擬化管理系統。它們之間共處一室,會導致有資源的爭搶。它們之間資源的爭搶就會帶來虛擬機計算能力的波動。

2、算力損失、成本高:宿主機和Hypervisor都要消耗CPU和內存方面的資源,這就沒法把這臺機器的資源全部給到客戶,意味著成本的提升。比如說,我買了一個32核的物理服務器,我只能把16核或者20核給到客戶,那剩下的12核可能就是一個浪費。但是沒有它還不行,因為它要幫助虛擬化存儲、虛擬化網絡。資源的浪費就導致了成本的提升。

3、性能瓶頸明顯:還有整個存儲、網絡的虛擬化,如前所述,都是由軟件實現。軟件實現方案優點是靈活和有一定的擴展性,但是缺點也很明顯——性能、穩定性會比較差。這是它最大的問題。
**
4、難以支持裸機服務**:因為物理機裡面已經運行了這樣一套Hypervisor軟件,我們難以雲的方式提供裸機、提供存儲網絡的彈性。即便雲計算越發普及,部分企業還是有物理機的訴求,雲廠商沒有辦法提供。如果提供只能提供物理機託管了,這就不是雲計算了,而是回到了傳統IT。

架構的缺陷帶來了很多產品挑戰。我們要解決這些問題。

帶著這些問題,我們先去分析一下,客戶到底要什麼?

image.png

分析完之後,我們發現客戶真正買我們計算型產品的時候,他需要更強的計算性能、需要更快的網絡接入、更高的存儲讀寫能力,存儲的IOPS要高、網絡的PPS要高、網絡的帶寬存儲能力要高。這意味著說,我要有更高的更好的QoS(服務質量),網絡、性能不能忽高忽低;還要更加安全;要有更低的成本。這就是客戶的訴求。

我們拿著訴求,再對照虛擬化技術的缺點,進行技術探索和創新,看如何解決這些方面。

神龍就應運而生了,神龍是為雲而生,是軟硬融合的虛擬化技術。

神龍服務器性能關鍵的部分全部用芯片用硬件去實現,性能非關鍵的比如控制面部分,都用軟件去做。最後帶來靈活性和性能完美有機的結合。它和傳統的虛擬化相比,代表了雲數據中心虛擬化新一代技術,可以真正解決掉我們剛才說的問題。

二、神龍架構的演進

我們進入第二部分。

第一代神龍:裸金屬虛擬化的先行者

第一代神龍,更多的是解決上雲後如何支持裸機服務,說得直接點就是物理機,但是又不能是傳統的物理機,需要充分和雲計算基礎設施融合。比如,它可以充分利用池化過的雲存儲資源、網絡資源、數據庫等。

image.png

在這種情況下,第一代神龍誕生了。我們叫bare metal virtualization,裸金屬虛擬化。我們在業界第一個發佈類似的產品。

它的體驗可以用下面的一句話來總結,就是:超越物理機的性能,有虛擬機的體驗。

什麼是虛擬機的體驗?我們知道,虛擬機整個運維全部都是自動化的,所有的資源都是池化過的,這其實是非常好的一種模式。傳統虛擬化技術,有優勢也有問題。如果說我們能夠通過新技術,解決劣勢保留優勢——這是我們做第一代虛擬化的初衷。我們也做到了。

在這種架構下面,我們進行深層次的探索,設計了神龍MOC卡。

MOC卡里,有一個神龍芯片做高速數據面的轉發;有一個芯片加速引擎,存儲EBS、網絡,所有管控面的東西,都下沉到芯片中;整個生命週期的管理、所有的接口都和虛擬機保持一致。比如,存儲都是用virtio-blk,網絡都是virtio-net的接口,其他設備也和虛擬機保持一致。

如此一來,它可以和虛擬機無縫兼容,可以和虛擬機在同樣的VPC裡、可以掛載雲盤,跟虛擬機使用體驗一樣。

我們設計了X-dragon Hypervisor和自研神龍芯片,提供了安全可靠可信、計算無損的服務。神龍支持彈性的存儲,可以支持掛16塊EBS雲盤,並且每一個EBS雲盤都可以高達32G;它也可以提供31個ENS動態、彈性的網絡接口,可以動態地插進去一些網卡。一個物理機,它的網絡接口可以動態增加和減少。

芯片加速的IO引擎,支持無縫接入VPC,無縫接入EBS存儲,支持免裝機,直接一個芯片就可以啟動,一兩分鐘就交付了裸機服務。

image.png

第一代的特點是,一張芯片其實解決了所有問題,物理機可以使用雲存儲、VPC網絡、掛載本地盤的問題。所有系統管理也都在這張卡里面做。我們加入了安全芯片的能力,可以讓彈性、穩定性、性能和成本完美地結合。虛擬化下沉到這張卡,就是本質。

第二代神龍:融合虛擬化的踐行者

image.png

第二代的神龍叫融合虛擬化的踐行者,這就是阿里雲線上第六代實例大規模使用的技術。

和第一代相比,整個神龍芯片能力進一步增強,不但可以支持的裸金屬系統,它還可以支持虛擬機。

我們為虛擬機設計了一個超薄的Hypervisor,叫Dragonfly,就是讓神龍能夠飛起來的Hypervisor。它幾乎不佔用任何的資源,可以支撐很多的虛擬機系統,所有的計算資源都可以給到客戶,資源和性能無損;並且每個虛擬機之間,是通過硬件的隊列進行隔離的,虛擬機和虛擬機之間,雖然共處一室但各行其道,沒有任何共線的干擾。

我們做到了:

① 技術的融合、資源的並池,就是一套軟硬件支持容器、虛擬機和裸金屬三套服務。

② Dragonfly Hypervisor超輕薄,能夠讓整個虛擬機資源的佔用接近於0。

③ 直通型的硬件IO設備,比如提供512個網絡隊列,最高提供512個ENI,存儲有512個隊列,至少能夠下載幾十塊雲盤。它的能力會進一步的增強。

④ 最難做的是全組件的熱遷移,包含芯片、FPGA組件全部做熱升級。解決了熱升級的問題,我才解決整個研發上能夠快速迭代的難題。

image.png

剛剛一直提到的Dragonfly Hypervisor有以下特點:

超輕薄,資源零損耗。內存佔用大概每個虛擬機不到1 MB,但是CPU佔用小於0.1%

超平穩,接近零抖動。100萬個數據包可能會有一個抖動。業界可能做得最好的是10萬級別的。我們做到100萬。

超平滑,兼容原架構,和KVM無縫兼容,能夠解決掉資源池之間互相熱遷移的難題。

第三代:極致性能的追求者

image.png

第三代神龍架構,它是極致性能的追求者。我們在去年的雲棲大會發布。整個性能處於業界最高的水平。相對於同行的類似架構,我們性能大概在5倍之多,存儲、網絡等關鍵性能指標,都是他的5倍以上。

第三代神龍的最大變化,就是

① 所有的數據面路徑全面芯片化,存儲、網絡、數據都芯片化,性能大幅提升。

② 提供了硬件級、電信級QoS的管理,比如存儲、網絡每秒鐘需要多少數據包、多大的帶寬,都超級精確,精確到了一個數據包。原來只有電信級的設備裡才有。我們在雲數據中心服務器裡實現了。

③ 增強型融合網絡,可以提供接近裸機的低延時網絡。

④ 增強型硬件隊列,支持1千個1024存儲隊列和1024網絡隊列,隊列和隊列之間的隔離性進一步增強。

image.png

三代神龍拓展了彈性計算產品的邊界。第一代發佈於2017年10月份,第二代在2018年9月份發佈,第三代是去年的9月26號上午發佈。

我們整個的網絡性能,單機做到了2500萬PPS,這個相當於友商大概5倍左右。存儲做到了100萬IOPS。現有的彈性計算產品在提供這些特性,有一些實例裡大家能夠感受到明顯提升。接下來我們會全面切到第三代。

image.png

神龍發展到今天,去年,不僅僅集團經濟體的業務全面遷到了神龍,整個公共雲的計算類服務,也全部都遷到神龍架構。阿里巴巴、阿里雲新增的任何一代服務器,全部都是神龍架構:X86通用實例——G系列、T系列和R系列全面升級,異構計算以及高性能計算相關實例全部都切到了神龍,可以提供剛剛講到的第三代神龍的能力,比如說100萬數據包才會有一個抖動。

三、神龍架構的實踐

最後,我簡單介紹一下神龍到目前的一些實踐。

剛才叔同老師也介紹了,神龍和容器之間有一種雙劍合璧效果。

我們為容器設計了一個特別的網絡,叫Terway network ,它和VPC(virtual private cloud)能夠天然融合。每一個容器都會有一個VPC的IP,它們之間全部網絡和存儲,都是一個硬件隊列來進行相對隔離。

在去年的雙十一,很多典型的應用,容器加神龍表現出了非常好的能力。

image.png

這裡展現的是我們電商裡的某一個很關鍵的應用,也是我們每次下單都要用到的應用,它整個QPS提升了30%,RT下降了96%。

在極限壓力情況下,它還有這麼好的表現。客戶資源的利用率,CPU利用率最高可以提升到80%。

為什麼會有這種效果?

image.png

圖裡藍色這根線是傳統的物理機,紅色這跟是同規格的——就是CPU、內存相關等所有的東西都一樣的——神龍架構的物理機。

它們兩個在雲上運行業務的時候,我們可以看到藍色這個,可能CPU利用率到40%的時候,業務延遲就會增加了,超過50%、60%,整個業務就出現崩盤了。但是神龍,當CPU利用率即使高到接近100%的時候,業務延遲增長還是非常少。

平均下來,一般的服務器能壓到百分之二三十的CPU利用率,就已經不錯了。神龍可以壓到百分之五六十,都有非常線性、平穩的業務表現。有很多的客戶都開始使用我們的神龍服務器。

image.png

另外一個神龍的用處,就是能夠把VMWare的私有云,遷到公共雲上。我們知道,線下有很多數據中心,都使用都了VMWare私有云。很多客戶會用龍都把線下的VMWare的私有云遷上來。沒有神龍,這實現不了,因為傳統雲計算實例,沒法支持VMWare這種虛擬化軟件。

如果用了OpenStack,底層使用了KVM,想把你整個線下OpenStack的私有云搬到雲上面來,神龍裸金屬服務器也可以解決。

image.png

最後,近段時間新冠病毒爆發了之後,阿里云為十幾家公共科研機構提供算力直吹。這背後就是用神龍裸金屬搭建的高性能計算能力。

四、神龍架構的未來

前幾天,我們神龍架構的論文,在計算機系統的頂會ASPLOS 2020做了分享。

論文介紹了裸金屬虛擬化相關的整體規劃,和我們未來要做的東西。興趣的朋友,可以到這個地址去下載我們的論文,也有視頻講解。

未來,我們也會繼續在神龍架構持續創新,大家如果對這個領域有什麼疑問或者想法,歡迎聯繫我們。

謝謝大家!

【END】

Leave a Reply

Your email address will not be published. Required fields are marked *