2007年9月,PCI-SIG官方發(fā)布了《Single Root I/O Virtualization and Sharing Specification Revision 1.0》規(guī)范,定義了多個(gè)System Images如何共享PCI接口的I/O硬件設(shè)備,這里的設(shè)備可以是PCIe 網(wǎng)卡,一塊PCIe SSD等等。
這就是今天要討論的話題——SR-IOV,一種硬件角度出發(fā)的虛擬化解決方案,本文不僅會(huì)對(duì)這項(xiàng)技術(shù)的概念和原理進(jìn)行介紹,還會(huì)結(jié)合AWS以及Memblaze的研究來(lái)探討SR-IOV在云計(jì)算數(shù)據(jù)中心的應(yīng)用方法、價(jià)值和前景。
SR-IOV及虛擬化系統(tǒng)中相關(guān)概念
在介紹之前,需要先明確一些SR-IOV相關(guān)的概念,一個(gè)典型的SR-IOV方案架構(gòu)如下。
SR-IOV的實(shí)現(xiàn)模型
(來(lái)源:http://www.pcisig.com/)
System Image(SI),客戶機(jī),或者稱(chēng)虛擬機(jī)OS。
Virtual Intermediary(VI),虛擬機(jī)管理層,是物理機(jī)和虛擬機(jī)的中介,可以是hypervisor或者VMM。(SR-IOV的主要作用就是消除VI對(duì)I/O操作的干預(yù),進(jìn)而提升數(shù)據(jù)傳輸性能)。
SR-PCIM,配置和管理SR-IOV功能以及PF/VF的軟件,SR-PCIM可以處理相關(guān)的錯(cuò)誤和實(shí)現(xiàn)設(shè)備的整體控制(比如實(shí)現(xiàn)電源管理和熱插拔,一個(gè)PCIe設(shè)備支持SR-IOV時(shí),SR-PCIM就可以通過(guò)熱插入的方式為物理主機(jī)添加VF設(shè)備,然后就可以配置VF給虛擬機(jī)使用。)
PF(Physical Function),SR-IOV中的關(guān)鍵概念, PF 是 PCIe一種物理功能,每個(gè)PF都可以被物理主機(jī)發(fā)現(xiàn)和管理。進(jìn)一步講,借助物理主機(jī)上的PF驅(qū)動(dòng)可以直接訪問(wèn)PF所有資源,并對(duì)所有VF并進(jìn)行配置,比如:設(shè)置VF數(shù)量,并對(duì)其進(jìn)行全局啟動(dòng)或停止。
VF(Virtual Function),PF虛擬出來(lái)的功能。一個(gè)或者多個(gè)VF共享一個(gè)PF,其驅(qū)動(dòng)裝在虛擬機(jī)上,當(dāng)VF分配給虛擬機(jī)以后,虛擬機(jī)就能像使用普通PCIe設(shè)備一樣初始化和配置VF。如果PF代表的是一張物理網(wǎng)卡,那么VF則是一個(gè)虛擬機(jī)可以看見(jiàn)和使用的虛擬網(wǎng)卡。
一句話解釋SR-IOV
SR-IOV通過(guò)將PF分為多個(gè)VF為上層虛擬機(jī)使用,相當(dāng)于虛擬機(jī)繞過(guò)VI直接使用PCIe 設(shè)備處理I/O和傳輸數(shù)據(jù)。
值得一提的是,物理主機(jī)啟動(dòng)時(shí)不能簡(jiǎn)單的掃描SR-IOV設(shè)備并列舉出所有VF,因?yàn)閂F沒(méi)有完整的PCIe配置空間。可以用Linux PCI熱插拔API動(dòng)態(tài)為物理主機(jī)增加VF,然后分配給虛擬機(jī)使用。
SR-IOV實(shí)現(xiàn)的價(jià)值
傳統(tǒng)虛擬化系統(tǒng)中大量的資源和時(shí)間損耗在Hypervisor(或者VMM)軟件層面,PCIe設(shè)備的性能優(yōu)勢(shì)因此無(wú)法徹底發(fā)揮。而SR-IOV的價(jià)值在于消除這一軟件瓶頸,助力多個(gè)虛擬機(jī)實(shí)現(xiàn)物理資源共享,同時(shí)使得虛擬機(jī)可以使用到NVMe SSD的高性能。
在此我們可以總結(jié)得出SR-IOV優(yōu)勢(shì):
實(shí)現(xiàn)SR-IOV之后,VMM把中斷交給虛擬機(jī)處理,而不是VMM處理I/O,提高了性能;
虛擬機(jī)直接和PCIe設(shè)備交互減輕物理主機(jī)CPU負(fù)擔(dān),使之有能力承載更多虛擬機(jī);
SR-IOV虛擬化技術(shù)可以減少客戶所需PCIe設(shè)備數(shù)量,進(jìn)而節(jié)省PCIe插槽;
SR-IOV可以與其他的I/O虛擬化技術(shù)進(jìn)行結(jié)合提供一個(gè)更加完整的兼具高性能和安全性的解決方案。
以NVMe SSD為例,今天的一塊NVMe SSD容量可以達(dá)到十幾TB,而IOPS沖到了100萬(wàn),同時(shí)有著微秒級(jí)的延遲。SR-IOV可以使NVMe SSD直接被上層多個(gè)VM所用,SSD的性能優(yōu)勢(shì)也可以直接被上層應(yīng)用感知到。
可以看到虛擬化和云計(jì)算都是SR-IOV大顯身手的領(lǐng)域。事實(shí)上,我們看到當(dāng)前走在SR-IOV實(shí)踐最前面的,就是云計(jì)算巨頭AWS。接下來(lái)我們也將通過(guò)AWS公布的一些資料解讀SR-IOV的實(shí)現(xiàn)和瓶頸。
從AWS實(shí)踐看SR-IOV
AWS從全局的角度考慮,構(gòu)建了一套基于Nitro System的方案,實(shí)現(xiàn)存儲(chǔ)、網(wǎng)絡(luò)等多種VF功能,為此,AWS在2015年收購(gòu)了以3.5億美元收購(gòu)以色列芯片商Annapurna Labs。
下圖展示了AWS在SR-IOV上的進(jìn)展,可以看到AWS經(jīng)歷了從全虛擬化到半虛擬化,而后的2013年到2017年,通過(guò)使用SR-IOV技術(shù)使得虛擬機(jī)的網(wǎng)絡(luò)和存儲(chǔ)性能,逐步達(dá)到近似Bare-metal performance的水平。
從AWS產(chǎn)品服務(wù)來(lái)看,2013年的CR1的實(shí)現(xiàn),不論存儲(chǔ)和網(wǎng)絡(luò)訪問(wèn)都是要過(guò)Amazon的hypervisor layer(Xen)的。
而到了2017年的C5,VM的EBS Storage和Network全部不通過(guò)Amazon Linux hypervisor layer,而通過(guò)Lightweight Nitro hypervisor。
對(duì)于這個(gè)Nitro Hypervisior,AWS給出的解釋是這是一個(gè)new hypervisor,但是不僅僅是個(gè)hypervisor?;贏nnapurna Labs這顆芯片,AWS實(shí)現(xiàn)了PCIe設(shè)備PV到VF的SR-IOV虛擬化功能,利用Nitro Hypervisior實(shí)現(xiàn)了QoS管理功能。看AWS的C5和C5D機(jī)型的配置,VF可以是50、100、200、400、900GB的大小。
Memblaze測(cè)試工程師申請(qǐng)了一個(gè)亞馬遜AWS服務(wù)器以及一個(gè)c5d.large的NVMe SSD,從AWS官方看到實(shí)例配置可知c5d.large的IOPS讀被限制在2萬(wàn)IOPS、寫(xiě)被限制在9000IOPS。
Memblaze申請(qǐng)的AWS服務(wù)器
Amazon EBS 和 NVMe
在基于 Nitro system的虛擬機(jī)上,EBS 卷顯示為 NVMe 塊儲(chǔ)存設(shè)備,這些設(shè)備依賴(lài)于操作系統(tǒng)上的標(biāo)準(zhǔn) NVMe 驅(qū)動(dòng)程序。這些驅(qū)動(dòng)程序通常在虛擬機(jī)啟動(dòng)期間,通過(guò)掃描 PCI 總線來(lái)發(fā)現(xiàn)連接的設(shè)備,然后根據(jù)設(shè)備響應(yīng)的順序創(chuàng)建設(shè)備節(jié)點(diǎn)。設(shè)備名稱(chēng)為 /dev/nvme0n1、/dev/nvme1n1,以此類(lèi)推。
實(shí)測(cè),可以看到AWS可同時(shí)給云主機(jī)提供EBS(上圖Amazon Elastic Block Store)遠(yuǎn)程存儲(chǔ)和本地NVMe SSD(上圖Amazon EC2 NVMe Instance Storage),兩者均被識(shí)別為一個(gè)PCIe設(shè)備。
分別測(cè)試兩者的讀和寫(xiě)延遲。測(cè)試結(jié)果如下:
AWS VM的Instance store(nvme1n1)讀latency在96μs
AWS VM的Instance store(nvme1n1)寫(xiě)latency 99.95%都在24-37μs
通過(guò)Nitro 虛擬化后虛擬機(jī)僅增加了10μs延遲。AWS全局的SR-IOV設(shè)計(jì)理念在于,存儲(chǔ)和網(wǎng)絡(luò)都可以通過(guò)Nitro系統(tǒng)實(shí)現(xiàn)SR-IOV,分布式的EBS卷經(jīng)Nitro Card到虛擬機(jī)就成為了一個(gè)NVMe塊存儲(chǔ)設(shè)備,而不需要底層的SSD支持SR-IOV。
但是全球只有AWS做到了這點(diǎn),他的SR-IOV實(shí)踐證明這項(xiàng)技術(shù)價(jià)值的同時(shí)也展示了其技術(shù)實(shí)力。
Memblaze在SR-IOV領(lǐng)域的研究現(xiàn)狀
另一方面,SSD實(shí)現(xiàn)SR-IOV的同時(shí),需要系統(tǒng)做相應(yīng)的修改和調(diào)優(yōu)處理,這里總結(jié)了企業(yè)客戶實(shí)現(xiàn)SR-IOV的幾點(diǎn)需求。
從安全性考慮,NVMe SSD需要實(shí)現(xiàn)多命名空間管理,并且滿足使用命名空間的租戶之間不能互相訪問(wèn)到數(shù)據(jù),尤其是命名空間重新分配給云主機(jī)用戶的時(shí)候。
從云主機(jī)業(yè)務(wù)性能QoS保障的角度,需要NVMe SSD實(shí)現(xiàn)不同VF之間的I/O隔離。而這里的I/O隔離同樣需要基于多命名空間實(shí)現(xiàn)。
(關(guān)于多命名空間可以參看文末相關(guān)閱讀中的《實(shí)錘,PBlaze5實(shí)力演繹multiple namespaces 功能》)
PCIe驅(qū)動(dòng)以及NVMe驅(qū)動(dòng)的修改。驅(qū)動(dòng)是連接系統(tǒng)和SSD的關(guān)鍵,這里需要修改PCIe Driver對(duì) VF BAR空間地址的分配機(jī)制以及修改NVMe Driver對(duì)VF I/O超時(shí)處理的機(jī)制
最后也是最重要的是合作,SR-IOV實(shí)現(xiàn)需要Memblaze與客戶進(jìn)行環(huán)境聯(lián)調(diào),以及大規(guī)模測(cè)試驗(yàn)證,以此保障SR-IOV功能的可靠性、性能表現(xiàn)等。
-
云計(jì)算
+關(guān)注
關(guān)注
39文章
7679瀏覽量
137034 -
虛擬化
+關(guān)注
關(guān)注
1文章
359瀏覽量
29740 -
AWS
+關(guān)注
關(guān)注
0文章
423瀏覽量
24265
原文標(biāo)題:超低延遲SR-IOV!全球只有他做到了
文章出處:【微信號(hào):SSDFans,微信公眾號(hào):SSDFans】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論