AWS在11月6日推出新的實(shí)例類(lèi)型C5,其中采用了新的虛擬化引擎——一款A(yù)WS自家定制的KVM。這可能意味著AWS從2006年啟動(dòng)時(shí)就開(kāi)始使用并持續(xù)優(yōu)化至今的Xen技術(shù)棧,將逐漸淡出這一體量龐大的云計(jì)算平臺(tái)。
關(guān)于Xen與KVMXen最早是劍橋大學(xué)的一個(gè)研究項(xiàng)目。該項(xiàng)目在2003年以開(kāi)源協(xié)議發(fā)布后,先后經(jīng)歷了XenSource公司、Citrix公司、Linux基金會(huì)等組織的領(lǐng)導(dǎo),其技術(shù)陣營(yíng)包含了Citrix、IBM、Intel、HP、Novel、紅帽、Sun、Oracle、Amazon、AMD、Bromium、CA Technologies、Calxeda、Cisco、Google、三星、以及Verizon等業(yè)界巨頭。
KVM(Kernel-based Virtual Machine,直譯為“基于內(nèi)核的虛擬機(jī)”),最早是以色列初創(chuàng)企業(yè)Qumranet發(fā)布的開(kāi)源項(xiàng)目。該項(xiàng)目在2007年被合并入Linux內(nèi)核代碼——這對(duì)KVM而言是非常重要的一個(gè)節(jié)點(diǎn),該公司則在2008年被紅帽收購(gòu)。KVM技術(shù)差不多到2010年之后進(jìn)入成熟階段,該技術(shù)陣營(yíng)目前包括紅帽、SUSE、Linaro(ARM)、IBM、Intel、Google、Oracle等業(yè)界巨頭,國(guó)內(nèi)的華為、阿里巴巴、騰訊等也均有參與。
在AWS啟動(dòng)的2006年,Xen還是當(dāng)時(shí)最成熟的虛擬化引擎技術(shù)(對(duì)于Linux操作系統(tǒng)而言),而KVM項(xiàng)目還沒(méi)有出現(xiàn)在大家的視野中。因此,AWS在早期技術(shù)選型當(dāng)中采用了Xen,成為其彈性計(jì)算的底層基礎(chǔ)。(此外,2009年啟動(dòng)的阿里云也因?yàn)楫?dāng)時(shí)KVM還不成熟的原因采用了Xen,不過(guò)兩家一直未停止過(guò)對(duì)KVM的關(guān)注與投入,阿里云更是在數(shù)年前就已經(jīng)推出了基于KVM的主機(jī)。另外,2011年啟動(dòng)的Google Cloud從一開(kāi)始就采用了KVM引擎。)
AWS的用戶(hù)需要知道什么?首先,AWS的用戶(hù)現(xiàn)在已經(jīng)可以將自己跑在C4實(shí)例上的主機(jī)切換到C5,前提是:
現(xiàn)在已經(jīng)推出C5的區(qū)域有US East (Northern Virginia)、US West (Oregon)、EU (Ireland) Regions,目前要用C5的話只能在這三個(gè)區(qū),其他區(qū)還得等等。AMI鏡像的操作系統(tǒng)必須包含ENA和NVMe的驅(qū)動(dòng),因?yàn)镃5的網(wǎng)絡(luò)和存儲(chǔ)功能是在硬件層面實(shí)施的。AWS平臺(tái)上提供的最新版AMI鏡像,包括Amazon Linux、Microsoft Windows (Windows Server 2012 R2 以及 Windows Server 2016)、Ubuntu、RHEL、CentOS、SLES、Debian、FreeBSD,現(xiàn)在都支持。同理,如果你制作自己的AMI,也是一樣的要求。Reddit網(wǎng)站上已經(jīng)有用戶(hù)在分享自己的切換過(guò)程,感興趣的讀者可以前往查看或提問(wèn)。Jeff Barr也會(huì)在那里回復(fù)一些問(wèn)題。
C5實(shí)例可以選擇的實(shí)例尺寸見(jiàn)下表:
Instance Name | vCPUs | RAM | EBS Bandwidth | Network Bandwidth |
c5.large | 2 | 4 GiB | Up to 2.25 Gbps | Up to 10 Gbps |
c5.xlarge | 4 | 8 GiB | Up to 2.25 Gbps | Up to 10 Gbps |
c5.2xlarge | 8 | 16 GiB | Up to 2.25 Gbps | Up to 10 Gbps |
c5.4xlarge | 16 | 32 GiB | 2.25 Gbps | Up to 10 Gbps |
c5.9xlarge | 36 | 72 GiB | 4.5 Gbps | 10 Gbps |
c5.18xlarge | 72 | 144 GiB | 9 Gbps | 25 Gbps |
其次,如果你已經(jīng)用上了C5,想用它跑一些機(jī)器學(xué)習(xí)的推斷(inferencing)任務(wù)或者類(lèi)似的計(jì)算任務(wù),可以看一下這個(gè)Intel Math Kernel Library。C5的處理器用的是3.0 GHz Intel Xeon Platinum 8000系列,這款專(zhuān)為EC2做過(guò)優(yōu)化的處理器配合上面那個(gè)數(shù)學(xué)庫(kù)可能會(huì)有很好的性能。
此外,C5還增加了每個(gè)vCPU的內(nèi)存。對(duì)于兼容AVX-512指令集的代碼而言,矢量操作和浮點(diǎn)操作的性能甚至可以翻倍。
切換到C5之后,由于運(yùn)行在新虛擬化引擎上的實(shí)例是通過(guò)NVMe接口從EBS卷上啟動(dòng)的,而運(yùn)行在Xen上的實(shí)例是從一個(gè)模擬IDE硬盤(pán)上啟動(dòng)、再切換到Xen的半虛擬塊存儲(chǔ)驅(qū)動(dòng)上的,所以雖然操作系統(tǒng)(OS)能夠識(shí)別自己正運(yùn)行在哪個(gè)虛擬化引擎上,但如果軟件本身假設(shè)底層的虛擬化引擎是Xen并依賴(lài)于該假設(shè),則可能會(huì)引發(fā)一些問(wèn)題。
但總體來(lái)說(shuō),AWS表示只要OS層面能夠支持ENA網(wǎng)絡(luò)和NVMe存儲(chǔ),則大部分軟件都能正常工作。AWS還表示,其他的EC2功能并不會(huì)受到影響。
如果你是AWS EC2 API的重度用戶(hù),擔(dān)心這次虛擬化引擎的變更會(huì)對(duì)API造成什么變化,則不用擔(dān)心了:AWS在其FAQs頁(yè)面中表示其對(duì)外公開(kāi)的API完全不會(huì)因?yàn)橐胄碌奶摂M化引擎而有任何改變。
KVM在EC2上的正式啟用對(duì)AWS意味著什么?作為計(jì)算資源服務(wù)的提供方,提升性能、降低成本是永恒的話題。
Xen最初設(shè)計(jì)時(shí),x86架構(gòu)尚未引入虛擬化擴(kuò)展功能,所以Xen為了實(shí)現(xiàn)Linux系統(tǒng)的虛擬化,就把Linux內(nèi)核給改了——這就相當(dāng)于在之后的十幾年里,Xen一直維護(hù)著一套自己的Linux內(nèi)核版本,所以上游Linux內(nèi)核社區(qū)的很多新的好東西,它要費(fèi)一番功夫才能移植進(jìn)來(lái),這就造成了很大的維護(hù)成本。
而另一方面,因?yàn)镵VM項(xiàng)目是合并在Linux內(nèi)核代碼中的,維護(hù)起來(lái)就非常容易。Linux內(nèi)核上游社區(qū)的研發(fā)勢(shì)能是非常大的,在這種情況下,KVM的發(fā)展速度迅猛,在穩(wěn)定性、性能方面的提升很快趕超了Xen,受到很多技術(shù)人與企業(yè)的青睞。
EC2是AWS的基石,虛擬化引擎又是EC2的基石。由于AWS是一套構(gòu)建多年的、龐大而復(fù)雜的系統(tǒng),很多功能會(huì)對(duì)Xen有所依賴(lài),要讓這套系統(tǒng)同時(shí)穩(wěn)定的支持Xen與KVM,是一項(xiàng)非常復(fù)雜的工作。所以C5的推出,意味著AWS這套系統(tǒng)已經(jīng)脫離了對(duì)Xen的完全依賴(lài)。
對(duì)AWS而言,基于KVM的系統(tǒng)要比基于Xen的系統(tǒng)的維護(hù)成本更低,這是一方面。
另一方面,可能也與性能有關(guān)。按AWS首席布道師Jeff Barr在博客中所說(shuō),C5在性?xún)r(jià)比方面相比C4提升了25%,針對(duì)有些任務(wù)甚至可以達(dá)到50%——這是針對(duì)用戶(hù)而言。要知道對(duì)于AWS今天這樣的體量,哪怕是1%的節(jié)省都是巨大的;如果有25%這樣比例的性?xún)r(jià)比提升,則絕對(duì)是勢(shì)在必行,無(wú)論花費(fèi)多大代價(jià)也要上。當(dāng)然這其中的性能提升有多少是來(lái)自新的硬件,有多少是來(lái)自KVM,這就不一定了。
此外,AWS首先在“計(jì)算密集型實(shí)例”(compute-intensive)上正式采用KVM,而不是從通用型、內(nèi)存密集型等其他類(lèi)型上開(kāi)始,可能是因?yàn)榭紤]到計(jì)算密集型業(yè)務(wù)的I/O操作較少,比較獨(dú)立,耦合性比較小,因此更容易替換的原因。
這次改變對(duì)于業(yè)界有什么影響?從市場(chǎng)占有率的角度來(lái)看,就是Xen的最后一個(gè)大體量的用戶(hù)對(duì)Xen說(shuō),以后我不再需要你了。
如果說(shuō)以前還有業(yè)界傳言說(shuō)AWS在Xen上投入太過(guò)巨大、依賴(lài)太重,所以AWS將一直支持Xen的話,那么現(xiàn)在這個(gè)傳言已經(jīng)宣告終結(jié)。畢竟,如果連AWS都以實(shí)際行動(dòng)表示切換到KVM的收益大于成本了,那么那些體量更小的Xen用戶(hù)還能對(duì)Xen有什么更多的期待呢?
所以對(duì)于未來(lái)的市場(chǎng)而言,這次改變也許象征著Xen的使命已經(jīng)結(jié)束了。對(duì)于過(guò)去的市場(chǎng)而言,Xen的使命就是讓那些仍然跑在Xen上的業(yè)務(wù)們能夠繼續(xù)平穩(wěn)運(yùn)行。不過(guò)這里面還有一個(gè)變數(shù)就是Unikernel,那就是另一個(gè)話題了。
從上游社區(qū)的角度,影響可能不大,因?yàn)锳mazon一直不是個(gè)活躍的開(kāi)源社區(qū)參與者。即使作為最大的Xen用戶(hù)那么多年,Amazon對(duì)Xen上游社區(qū)的代碼貢獻(xiàn)數(shù)量卻是屈指可數(shù)。所以對(duì)于KVM項(xiàng)目,可能我們未來(lái)也不大會(huì)看到很多來(lái)自Amazon的代碼貢獻(xiàn)。
從技術(shù)發(fā)展的角度,這是個(gè)大趨勢(shì)下技術(shù)更新?lián)Q代的必然——也許從KVM被合并到Linux內(nèi)核代碼的那時(shí)起就已經(jīng)種下了種子吧。
總結(jié)關(guān)于AWS此次擁抱KVM的C5發(fā)布,目前公開(kāi)的信息就總結(jié)到此。