天天看點

SR-IOV

轉載原文連結:https://blog.csdn.net/Memblaze_2011/article/details/88635993

SR-IOV,一種硬體角度出發的虛拟化解決方案,本文不僅會對這項技術的概念和原理進行介紹,還會結合AWS以及Memblaze的研究來探讨SR-IOV在雲計算資料中心的應用方法、價值和前景。

SR-IOV及虛拟化系統中相關概念

在介紹之前,需要先明确一些SR-IOV相關的概念,一個典型的SR-IOV方案架構如下。

SR-IOV

System Image(SI),客戶機,或者稱虛拟機OS。

Virtual Intermediary(VI),虛拟機管理層,是實體機和虛拟機的中介,可以是hypervisor或者VMM。(SR-IOV的主要作用就是消除VI對I/O操作的幹預,進而提升資料傳輸性能)。

SR-PCIM,配置和管理SR-IOV功能以及PF/VF的軟體,SR-PCIM可以處理相關的錯誤和實作裝置的整體控制(比如實作電源管理和熱插拔,一個PCIe裝置支援SR-IOV時,SR-PCIM就可以通過熱插入的方式為實體主機添加VF裝置,然後就可以配置VF給虛拟機使用。)

PF(Physical Function),SR-IOV中的關鍵概念, PF 是 PCIe一種實體功能,每個PF都可以被實體主機發現和管理。進一步講,借助實體主機上的PF驅動可以直接通路PF所有資源,并對所有VF并進行配置,比如:設定VF數量,并對其進行全局啟動或停止。

VF(Virtual Function),PF虛拟出來的功能。一個或者多個VF共享一個PF,其驅動裝在虛拟機上,當VF配置設定給虛拟機以後,虛拟機就能像使用普通PCIe裝置一樣初始化和配置VF。如果PF代表的是一張實體網卡,那麼VF則是一個虛拟機可以看見和使用的虛拟網卡。

一句話解釋SR-IOV:SR-IOV通過将PF分為多個VF為上層虛拟機使用,相當于虛拟機繞過VI直接使用PCIe 裝置處理I/O和傳輸資料。

值得一提的是,實體主機啟動時不能簡單的掃描SR-IOV裝置并列舉出所有VF,因為VF沒有完整的PCIe配置空間。可以用Linux PCI熱插拔API動态為實體主機增加VF,然後配置設定給虛拟機使用。

SR-IOV實作的價值

傳統虛拟化系統中大量的資源和時間損耗在Hypervisor(或者VMM)軟體層面,PCIe裝置的性能優勢是以無法徹底發揮。而SR-IOV的價值在于消除這一軟體瓶頸,助力多個虛拟機實作實體資源共享,同時使得虛拟機可以使用到NVMe SSD的高性能。

在此我們可以總結得出SR-IOV優勢:

實作SR-IOV之後,VMM把中斷交給虛拟機處理,而不是VMM處理I/O,提高了性能;

虛拟機直接和PCIe裝置互動減輕實體主機CPU負擔,使之有能力承載更多虛拟機;

SR-IOV虛拟化技術可以減少客戶所需PCIe裝置數量,進而節省PCIe插槽;

SR-IOV可以與其他的I/O虛拟化技術進行結合提供一個更加完整的兼具高性能和安全性的解決方案。

以NVMe SSD為例,今天的一塊NVMe SSD容量可以達到十幾TB,而IOPS沖到了100萬,同時有着微秒級的延遲。SR-IOV可以使NVMe SSD直接被上層多個VM所用,SSD的性能優勢也可以直接被上層應用感覺到。

可以看到虛拟化和雲計算都是SR-IOV大顯身手的領域。事實上,我們看到目前走在SR-IOV實踐最前面的,就是雲計算巨頭AWS。接下來我們也将通過AWS公布的一些資料解讀SR-IOV的實作和瓶頸。

從AWS實踐看SR-IOV

AWS從全局的角度考慮,建構了一套基于Nitro System的方案,實作存儲、網絡等多種VF功能,為此,AWS在2015年收購了以3.5億美元收購以色列晶片商Annapurna Labs。

下圖展示了AWS在SR-IOV上的進展,可以看到AWS經曆了從全虛拟化到半虛拟化,而後的2013年到2017年,通過使用SR-IOV技術使得虛拟機的網絡和存儲性能,逐漸達到近似Bare-metal performance的水準。

SR-IOV

從AWS産品服務來看,2013年的CR1的實作,不論存儲和網絡通路都是要過Amazon的hypervisor layer(Xen)的。

SR-IOV

而到了2017年的C5,VM的EBS Storage和Network全部不通過Amazon Linux hypervisor layer,而通過Lightweight Nitro hypervisor。

對于這個Nitro Hypervisior,AWS給出的解釋是這是一個new hypervisor,但是不僅僅是個hypervisor。基于Annapurna Labs這顆晶片,AWS實作了PCIe裝置PV到VF的SR-IOV虛拟化功能,利用Nitro Hypervisior實作了QoS管理功能。看AWS的C5和C5D機型的配置,VF可以是50、100、200、400、900GB的大小。

Memblaze測試工程師申請了一個亞馬遜AWS伺服器以及一個c5d.large的NVMe SSD,從AWS官方看到執行個體配置可知c5d.large的IOPS讀被限制在2萬IOPS、寫被限制在9000IOPS。

SR-IOV
SR-IOV

Amazon EBS 和 NVMe在基于 Nitro system的虛拟機上,EBS 卷顯示為 NVMe 塊儲存裝置,這些裝置依賴于作業系統上的标準 NVMe 驅動程式。這些驅動程式通常在虛拟機啟動期間,通過掃描 PCI 總線來發現連接配接的裝置,然後根據裝置響應的順序建立裝置節點。裝置名稱為 /dev/nvme0n1、/dev/nvme1n1,以此類推。

實測,可以看到AWS可同時給雲主機提供EBS(上圖Amazon Elastic Block Store)遠端存儲和本地NVMe SSD(上圖Amazon EC2 NVMe Instance Storage),兩者均被識别為一個PCIe裝置。

分别測試兩者的讀和寫延遲。測試結果如下:

SR-IOV

AWS VM的Instance store(nvme1n1)讀latency在96μs

SR-IOV

AWS VM的Instance store(nvme1n1)寫latency 99.95%都在24-37μs

通過Nitro 虛拟化後虛拟機僅增加了10μs延遲。AWS全局的SR-IOV設計理念在于,存儲和網絡都可以通過Nitro系統實作SR-IOV,分布式的EBS卷經Nitro Card到虛拟機就成為了一個NVMe塊儲存設備,而不需要底層的SSD支援SR-IOV。

但是全球隻有AWS做到了這點,他的SR-IOV實踐證明這項技術價值的同時也展示了其技術實力。

Memblaze在SR-IOV領域的研究現狀

另一方面,SSD實作SR-IOV的同時,需要系統做相應的修改和調優處理,這裡總結了企業客戶實作SR-IOV的幾點需求。

從安全性考慮,NVMe SSD需要實作多命名空間管理,并且滿足使用命名空間的租戶之間不能互相通路到資料,尤其是命名空間重新配置設定給雲主機使用者的時候。

從雲主機業務性能QoS保障的角度,需要NVMe SSD實作不同VF之間的I/O隔離。而這裡的I/O隔離同樣需要基于多命名空間實作。

(關于多命名空間可以參看《實錘,PBlaze5實力演繹multiple namespaces 功能》)

PCIe驅動以及NVMe驅動的修改。驅動是連接配接系統和SSD的關鍵,這裡需要修改PCIe Driver對 VF BAR空間位址的配置設定機制以及修改NVMe Driver對VF I/O逾時處理的機制

最後也是最重要的是合作,SR-IOV實作需要Memblaze與客戶進行環境聯調,以及大規模測試驗證,以此保障SR-IOV功能的可靠性、性能表現等。

相關閱讀

The Nitro Project: Next-Generation EC2 Infrastructure - AWS Online Tech Talks

https://www.slideshare.net/AmazonWebServices/the-nitro-project-nextgeneration-ec2-infrastructure-aws-online-tech-talks

AWS Nitro System

https://perspectives.mvdirona.com/2019/02/aws-nitro-system/

Amazon EBS 和 NVMe

https://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/nvme-ebs-volumes.html

Amazon EC2 執行個體類型

https://aws.amazon.com/cn/ec2/instance-types/

SR-IOV vs MR-IOV

http://www.ssdfans.com/blog/2016/09/12/sr-iov-vs-mr-iov/

SoC (System on Chip) 之一 Nitro Family

https://mp.weixin.qq.com/s/xQt-symeXfJZwO_ghjXnnA

實錘,PBlaze5實力演繹multiple namespaces 功能(上)

https://mp.weixin.qq.com/s?__biz=MzA3NjE0MTUwNA==&mid=2722162616&idx=1&sn=18aad640d78b81420598f7ad57b48f41&scene=19#wechat_redirect

實錘,PBlaze5實力演繹multiple namespaces 功能(下)

https://mp.weixin.qq.com/s?__biz=MzA3NjE0MTUwNA==&mid=2722162620&idx=1&sn=cab5ec9187501a8a0b8206d826dee3b2&scene=19#wechat_redirect

————————————————

上一篇: DQL語句
下一篇: DML語句

繼續閱讀