intel虛擬設(shè)備隊(duì)列VMDq技術(shù)解析
現(xiàn)在人們已經(jīng)接受并開始逐步實(shí)施虛擬化技術(shù),為提供理想的性能和可靠的安全性,硬件虛擬化技術(shù)必不可少。它的發(fā)展是循序漸進(jìn)的,在我們最熟悉的世界,硬件虛擬化是先從處理器開始,再到芯片組,再到IO設(shè)備,因?yàn)槊恳粋€(gè)階段都以上一個(gè)階段作為基礎(chǔ),如下圖所示:
其中VT-x和VT-d技術(shù)已經(jīng)被人熟悉(競爭對手也有類似的技術(shù))
現(xiàn)在的階段就處在IO虛擬化階段,一個(gè)老生常談的問題是:外部IO已經(jīng)逐漸跟不上處理器等的發(fā)展。無論你需不需要虛擬化,你都需要解決IO的問題。何況,隨著處理器的架構(gòu)越來越先進(jìn),核心數(shù)越來越多,提高資源利用率的需求使這些機(jī)器越來越傾向于虛擬化。
現(xiàn)在IO虛擬化的問題和處理器虛擬化等的問題差不多,就是人們希望硬件輔助方案能解決軟件方案的性能損耗問題。在IO設(shè)備上,頻繁的VMM切換以及對中斷的處理是導(dǎo)致虛擬化效率低下的兩個(gè)重點(diǎn)因素,如下圖所示:
軟件實(shí)現(xiàn)的IO虛擬化網(wǎng)絡(luò)吞吐量低下
硬件的IO虛擬化就是為了解決這個(gè)問題,對應(yīng)的解決方案相關(guān)的很多,我們這次介紹的是Intel的VMDq:Virtual Machine Device Queue,虛擬機(jī)設(shè)備隊(duì)列。這是一個(gè)專門用于提升網(wǎng)卡的虛擬化IO性能的技術(shù),對于服務(wù)器來說,最關(guān)鍵的IO組成部分就是網(wǎng)絡(luò)和存儲(chǔ)了,甚至網(wǎng)絡(luò)更為重要一些。
虛擬化的精髓就是多個(gè)虛擬機(jī)共享一定的硬件資源,特別地:網(wǎng)卡。盡管VT-d技術(shù)提供了不同的虛擬機(jī)直接使用不同的網(wǎng)卡的可能性,不過多個(gè)虛擬機(jī)共用一塊或者數(shù)塊網(wǎng)卡仍然是絕大多數(shù)情況。對于VT-d技術(shù),一些人可能會(huì)很高興地看到,不同的顯卡也可以通過它在不同的虛擬機(jī)之間直接分配,如Paralles Workstation Extreme軟件可以主機(jī)和虛擬機(jī)直接使用不同的Quadro顯卡進(jìn)行渲染工作(是的,它和前面說的還有些距離,不過原理相同)。
因?yàn)檫@樣的緣故,實(shí)際上所有的提供上網(wǎng)能力的虛擬機(jī)軟件都內(nèi)置了一個(gè)虛擬交換機(jī),大部分還在這個(gè)基礎(chǔ)上提供了路由器的功能,作用就是和真實(shí)的交換機(jī)/路由器一樣,將多臺(tái)虛擬機(jī)連成一個(gè)或者多個(gè)網(wǎng)絡(luò):
VMDq實(shí)際上將這個(gè)虛擬交換機(jī)的一部分功能用硬件進(jìn)行加速
VMDq實(shí)際上實(shí)現(xiàn)了一個(gè)半軟半硬的虛擬交換機(jī),和原有的純軟件方案相比,新的方案提供了更高的性能、更低的資源占用率,它怎么實(shí)現(xiàn)的呢?
VMDq技術(shù)提供了一個(gè)屬于ISO OSI 9層網(wǎng)絡(luò)模型中的第二層的分類/排序引擎實(shí)現(xiàn)了交換機(jī)的部分功能,為了提供合適的性能,它必須使用到一堆緩存隊(duì)列,因此支持VMDq的網(wǎng)卡通常也支持RSS接收方擴(kuò)展功能
在支持VMDq的網(wǎng)卡上,用硬件實(shí)現(xiàn)了一個(gè)Layer 2分類/排序器,通過MAC地址或者VLAN來講數(shù)據(jù)包發(fā)送到指定的虛擬機(jī)隊(duì)列中去(這堆隊(duì)列叫做pool),最后的VMM軟件只需要非常簡單的數(shù)據(jù)復(fù)制工作就可以完成虛擬交換機(jī)的任務(wù)。從而極大地提升了虛擬化網(wǎng)絡(luò)效率。
支持VMDq隊(duì)列的網(wǎng)卡通常也支持RSS隊(duì)列,例如Intel 82576EB網(wǎng)卡支持8個(gè)虛擬機(jī)隊(duì)列,支持16個(gè)RSS隊(duì)列,它們實(shí)質(zhì)上都是16個(gè)發(fā)送/接收隊(duì)列對的劃分,另外意味著,每個(gè)虛擬機(jī)可以分配到兩個(gè)發(fā)送/接收隊(duì)列對。
Hyper-V 1.0,也就是Windows Server 2008攜帶的版本,所有的網(wǎng)絡(luò)IO都需要經(jīng)過經(jīng)過純軟件實(shí)現(xiàn)的虛擬交換機(jī)
Hyper-V 2.0,也就是Windows Server 2008 R2攜帶的版本,提供了一個(gè)新的VMQ特性,它利用硬件的VMDq將虛擬交換機(jī)的大部分工作放到了網(wǎng)卡上,并通過內(nèi)存映射設(shè)計(jì)避免了數(shù)據(jù)需要在多個(gè)空間來來回復(fù)制移動(dòng)
VMware的NetQueue同樣也利用了VMDq技術(shù),實(shí)現(xiàn)了兩倍以上的吞吐量提升