日前,ASPLOS 2020公布了計算機界最新科技成果,其中包括阿里雲提交的名為《High-density Multi-tenant Bare-metal Cloud》的論文,該論文闡述了阿里雲自研的神龍服務器架構如何解決困擾雲計算行業多年的虛擬化性能損耗問題,打破物理機的性能神話,讓雲服務器突破性能極限。
此次入選意味着全球計算機頂會對阿里雲自研技術的認可,也意味着中國創新技術在全球計算機界爭得了一席之地。
ASPLOS 是綜合體系結構、編程語言和操作系統三個方向的計算機系統領域頂級會議,從1982年創辦至今推動了多項計算機系統技術的發展,一般論文錄用率在20%左右。
阿里雲本次入選的論文題為《High-density Multi-tenant Bare-metal Cloud》,由阿里雲研究員張獻濤帶領的神龍技術團隊撰寫,詳細解讀了神龍架構的技術優勢:超越傳統物理機100%的算能、分鍾級交付能力、安全物理隔離和雲平台全系打通等。
虛擬化是雲計算的基礎,它將物理服務器虛擬化成想要的計算單元,進而擁有最大的彈性,然而卻會導致性能損耗。如何解決這樣的矛盾?阿里在2017年推出了“神龍架構”,彌補虛擬化的性能損耗,同時擁有雲的彈性和運維優勢。
2019年杭州雲棲大會上,阿里雲發布了第三代神龍架構,全面支持ECS虛擬機、裸金屬、雲原生容器等,在IOPS、PPS等方面提升5倍性能,可幫助用戶降低50%的計算成本。去年雙11核心系統100%上雲,神龍大放異彩,成功扛住了54.4萬筆/秒的訂單創建峰值,與同配置物理機相比,不僅業務系統性能提升20%,而且抗高負載壓力表現更好,整個業務性能非常平穩和線性。
不僅如此,神龍還是目前最流行的容器技術的最佳拍檔。基於神龍架構的阿里雲容器服務對比物理機有10%-30%的性能優勢。
目前,神龍架構已大規模應用於淘寶、天貓、菜鳥等業務,用於解決高峰值的性能瓶頸問題。
本次入選ACM ASPLOS論文題目為《High-density Multi-tenant Bare-metal Cloud》,由阿里雲研究員兼創新產品線總負責人張獻濤、阿里雲高級技術專家鄭曉、阿里雲資深技術專家楊航及其他神龍團隊共同撰寫。
該文首次全面解析了時下流行的裸金屬雲計算服務、神龍架構內涵。將作為新一代虛擬化技術發展方向的神龍,與現有架構作對比,詳細闡述了兩者在軟硬件、核心計算性能、虛擬化開銷的異同。論文中對多種業務表現上面的性能數據充分揭示了神龍裸金屬架構的特有優勢。以下為該論文的詳細解讀。
摘要:
虛擬化是雲計算的基石,多租戶(Virtual Machines)共享一個物理服務器,提高了數據中心服務器的利用率,使得雲計算服務商可以提供更經濟高效的服務。但是,虛擬化下多VM共享物理服務器的技術會引入不少安全問題,尤其是最近的側通道攻擊等。此外, CPU、內存和 I/O 在虛擬化性能方面會產生不可忽略的開銷。為此,物理服務器租賃已成為公共雲中新興的服務類型,物理服務器租賃為用戶提供了強大的隔離性、對硬件的全面和直接訪問以及更可預測的性能。但是物理服務器租賃的方式也有其缺點:它只能針對單租戶,且不具備可擴展性、成本又高,適應性弱。當前物理服務器租賃只能將整個物理服務器租給單個用戶,並且在租用服務器后用戶無法方便的替換鏡像,存儲等雲計算的基本服務。
在本文中,我們提出了一種創新的高密度多租戶共享彈性裸金屬服務器的設計,也就是阿里雲神龍彈性裸金屬架構(論文中為了滿足評審的要求稱為BM-Hive)。在阿里雲神龍高密裸金屬架構中,每個裸金屬實例都運行在一個單獨設計的計算子板上,該計算子板帶有專有的 CPU 和內存模塊。BM-Hive為每個計算子板配備了硬件/軟件混合 virtio I/O 系統,使客戶實例能夠直接訪問阿里雲網絡和存儲服務。BM-Hive 可在單個物理服務器中托管多達 16 個裸金屬實例,顯著提高裸金屬服務器的實例密度。此外,BM-Hive 在硬件級別嚴格隔離每個裸金屬實例,以提高安全性和隔離性。神龍彈性裸金屬高密方案已經在阿里雲的公共雲部署。它目前同時為數以萬計的用戶提供服務。
介紹
物理服務器租賃的出現是為了滿足對性能或者安全性有非常苛刻要求的客戶。但對於單租戶,低密度的物理服務器卻存在成本高的問題。公共雲上面的大多數客戶是中小規格客戶。我們統計雲服務上面的各個規格的VM的vCPU數量,對於需求小於32Core 的VM占到了95%以上。而現有物理服務器的CPU規格最小也有64Core,最高達到128Core。這些中小客戶別無選擇,要么放棄物理機級別的性能與安全性,采用傳統虛擬化的VM,要么租賃整個服務器,而放棄性價比。這也是不具備彈性的裸金屬公共雲尚未成為主流的重要原因之一。
為此,我們設計了神龍高密度彈性裸金屬架構:一個可擴展的,支持多租戶的彈性裸金屬硬件虛擬化方案。該裸金屬框架(BM-Hive)既能保證CPU和內存擁有本地物理機運行時的性能,又實現IO設備的硬件虛擬化,同時具備雲計算的分鍾級計費、彈性擴容等最重要功能。BM-Hive由三個模塊組成:計算子板,IO-Bond,BM-hypervisor。計算子板包含了可替代的裸金屬實例的CPU與內存;BM-hypervisor運行在我們的基礎物理服務器上,它可以托管最大16個計算子板;IO-Bond是連接計算子板與BM-Hypervisor的紐帶。我們在后續章節將會詳細介紹這三個部分。
采用BM-Hive的方案顯著優點:
- 經濟實惠:采用了高達16個裸金屬實例共享一個物理服務器,能顯著降低客戶成本;
- 單線程性能優異:裸金屬實例可以自由采用高主頻CPU,比如i7 4.2GHz;
- 兼容當前運維體系:客戶可以像使用其他非裸金屬實例一樣操作裸金屬實例,包括制作鏡像、更換系統盤、添加/刪除雲盤等雲計算特有便捷操作。
對比當前公共雲上多種不同實例優劣如下:
神龍裸金屬架構是軟硬一體化的虛擬化架構
神龍裸金屬軟硬一體虛擬化架構是對現有虛擬化的一個自然演進與升級換代。入下圖所示,在整體架構上面,BM-Hive與傳統虛擬化方案在CPU/內存方面、運維體系接入、多租戶復用等方面非常相近。神龍裸金屬開發了一套適合裸金屬共享方案的軟硬件一體BM-Hypervisor來處理計算子板的IO子系統。
當前虛擬化主要面臨如下問題:
在詳細探討神龍裸金屬架構之前,我們先來看看當前雲計算虛擬化面臨的一些問題。而神龍裸金屬軟硬一體虛擬化方案很好的解決了這些問題。
- 虛擬化開銷無法滿足高性能需求
- 虛擬化性能存在無法控制的抖動,從而無法滿足對性能極致要求的場景
- 虛擬化的安全隔離性達不到特定行業要求
- 嵌套虛擬化的性能無法滿足客戶需求
虛擬化開銷:
當前虛擬化的基本原理決定了CPU必須要在vCPU環境與物理CPU環境下來回切換(VM-Exit)。頻繁的切換會導致嚴重的VM性能問題。比如一個典型的直通設備中斷,在虛擬化下處理流程就非常長。KVM hypervisor下面一個虛擬化切換至少需要幾千個時鍾周期,開銷有可能會達到~10us。一般情況下VMExit(比如中斷)達到5K左右,VM的性能將開始受影響。還有各種原因導致的VMExit,比如IPI,EPT violation,MMIO訪問,等等。
我們采樣了30萬個虛擬化實例的運行數據,發現每秒1萬次以上VM-Exit的實例達到3.82%,甚至還有不少每秒超過10萬切換的實例。
神龍裸金屬BM-Hive由於采用了計算子板直接運行實例,避免了任何傳統CPU/內存虛擬化的開銷。
虛擬化的性能抖動:
由於客戶實例與系統服務都共享同一個CPU,這就導致了當宿主機系統服務繁忙時可能影響到客戶實例的運行。我們采樣了2萬個實例在運行中CPU被搶占的情況,發現在共享性實例上,有200個以上的實例,在運行中被系統占用的CPU利用率超過2%。也就是說這200個實例的實際CPU性能是98%而不是100%,同樣的情況在獨享型的實例也有發生。畢竟中斷等處理是一定需要CPU在宿主機系統中才能處理的。而在BM-Hive下的實例,系統服務在BM-hypervisor下運行,與計算子板的CPU為不同的物理CPU,所以神龍裸金屬實例根本就不存在任何搶占計算資源的問題。
虛擬化的安全性:
這個不是一個新問題,我們都承認安全級別從低到高的形態:進程->容器->虛擬化->物理機。今年發生的側信道攻擊等都說明,虛擬化下實例並非牢不可破。而神龍裸金屬實例運行在獨立的計算子板之上,是天然的物理隔離,不存在這些安全問題。
嵌套虛擬化性能問題:
一般來說KVM嵌套虛擬化的性能損失在20%以上,尤其是遇到一些IO操作更頻繁的場景。因此當前雲計算實例上很難在滿足客戶二次虛擬化的要求。而神龍裸金屬實例卻可以運行客戶在實例內部再次運行他們自己喜歡的各種硬件加速的虛擬化方案。
神龍裸金屬架構系統設計
為了解決傳統虛擬的諸多問題,BM-Hive的設計考慮目標為:
- l 多租戶
- l 物理機隔離安全性
- l 接入現有運維體系
- l 物理機性能
- l 低成本
圖3顯示了BM-Hive的整體系統架構。我們把神龍裸金屬實例稱為:BM-guest。把基於傳統虛擬化的實例稱為:VM-guest。每個裸機服務器由底座和多個計算子板構成。該底座本質上是一個簡化的基於 Xeon 的服務器。每個計算子板都有一個PCIe 擴展板連接到底座。其主要組件包括 CPU、內存、PCIe 總線和 IO-Bond。IO-Bond 是用FPGA實現的硬件接口。它連接底座和計算子板的PCIe總線,功能類似與PCIe的透明橋功能。IO-Bond在計算子板的PCIe總線上,它模擬多個virtio設備並由標准virtio內核驅動程序支持。IO-Bond充當bm-guest/virtio前端與后端BM-Hypervisor的橋梁。目前,IO-Bond 支持 virtio 設備網絡和存儲(塊設備)。它可以很容易地擴展支持其他virtio設備。
實驗數據分析
我將對BM-Hive的CPU/內存系統的性能與傳統虛擬化做對比,同時也對網絡、存儲等IO子系統做數據性能的分析。最后會我們會提供神龍裸金屬實例在真實業務場景下的性能表現。
神龍裸金屬實例的CPU與內存性能分析
裸金屬實例的本地CPU和內存性能對用戶至關重要。圖7和8呈現了相同配置下,裸金屬實例與虛擬化實例在運行SPEC CINT 2006測量的CPU性能差異,用STREAM工具測試內存性能的差距。
上圖數據做了歸一化的處理,可以看到裸金屬實例的CPU性能與物理機幾乎沒有區別,甚至有些項還優於物理機,而虛擬化實例下CPU性能一般有0-4%的損失。內存方面也類似,虛擬化實例的內存帶寬是裸金屬實例的98%左右。
IO子系統的性能分析
BM-guest和VM-guest均基於virtio的I/O路徑接入阿里雲VPC網絡與雲存儲系統,他們的區別在於BM-Hive的virtio具有硬件-軟件混合設計。在本節中,我們將BM-Guest與VM-guest的網絡與存儲子系統做性能對比。我們兩種實例產品定義的網絡訪問最大發包速限定於4M PPS,帶寬最大為10Gbit/s,存儲限制為 25 IOPS和300MBps。因此,我們測試的目的在於兩種實例是否都能達到設計目標。
PPS:我們看到BM-Guest/VM-guest都能達到設計的4M UDP PPS目標,但是VM-Guest更加平順,這個可能是由於BM-guest經過的軟硬件接口的路徑要比VM-guest長得多導致。
Latency:在延時方面,通過三種測試工具得到VM-guest的網絡延時要稍優於同類型的BM-Guest,差距不大。
Storage IO:存儲IO的性能上面BM-Guest則要全面優於VM-guest。隨機讀寫的IO訪問延時方面BM-guest優於VM-guest,而在長尾數據方面BM-guest數據優於VM-guest 50%以上。
客戶典型應用方面
通過對真實應用場景的對比,我們更能發現裸金屬實例的優勢。比如我們對比了兩種實例在分別在網絡服務器nginx,數據庫mariaDB,以及內存型數據庫Redis等數據差異。
Nginx:大多數客戶選用的網站服務類型。BM-guest的每秒請求數與每請求處理時間等方面都要優於VM-guest 50%以上
MariaDB:MariaDB是一個標准的測試數據類型,集成在sysbench之中。BM-guest的讀取性能超過VM-guest15%以上,而在寫性能上更是超出50%以上
Redis:是內存型數據結構讀取數據庫。Redis被廣泛應用於提高服務器性能與服務能力。BM-Guest在Redis測試表現也全面優於VM-guest。如圖15與圖16。此處不再累述。
一些思考
IO-Bond的性能優化:IO-Bond處於IO系統的關鍵性能路徑之上。當前由FPGA實現。在將來我們可以通過ASIC芯片的方式實現,從而進一步提升網絡與存儲、性能
熱遷移與熱升級:熱升級在裸金屬實例上面是可以實現的。我們在升級底座BM-Hypervisor的同時可以做到對客戶實例無感知。我們在2019年ASPLOS的論文中就有詳細介紹實例熱升級的技術《Fast and Scalable VMM Live Upgrade in Large Cloud Infrastructure》。熱遷移理論上,裸金屬實例也可以實現,我們做過一些嘗試。目前也正在開發中。
SGX支持:SGX的支持在裸金屬實例上面沒有任何問題。相反由於去掉了虛擬化的阻礙,SGX的支持更容易。
總結
我們介紹了神龍高密度裸金屬雲服務 BM-Hive 的設計、實施和測試數據。實踐證明,作為行業下一代虛擬化的發展方向,神龍裸金屬軟硬一體化方案在兼容現有虛擬化優點的前提下,全面提升了性能與安全性。在此,我們由衷感謝阿里雲創新產品團隊全體成員的努力付出。