如何利用優(yōu)化技術(shù)降低虛擬服務(wù)器成本
單根I/O虛擬化(SingleRootI/OVirtualizationSR-IOV)就是其中的一項優(yōu)化技術(shù)。SR-IOV是PCI-SIG推出的一項標(biāo)準(zhǔn),是“虛擬通道”的一個技術(shù)實現(xiàn),用于將一個PCIe設(shè)備虛擬成多個PCIe設(shè)備,每個虛擬PCIe設(shè)備如同物理PCIe設(shè)備一樣向上層軟件提供服務(wù)。
傳統(tǒng)的虛擬服務(wù)器虛擬機管理程序提供虛擬機(VM)的資源,模擬每一臺物理服務(wù)器的功能,使每個虛擬機獨立的運行。對于I/O,即意味著每個虛擬機使用虛擬的I/O設(shè)備是由虛擬機管理程序提供的。雖然這非常適用于虛擬化,但這樣通常情況下效率是不高的。
SR-IOV是一種不需要軟件模擬就可以共享I/O設(shè)備I/O端口的物理功能的方法。這個過程創(chuàng)造了一系列I/O設(shè)備物理端口的虛擬功能。每個虛擬功能都被直接分配到一個虛擬機,因此實現(xiàn)了接近本機的性能。
傳統(tǒng)的多核虛擬服務(wù)器管理程序執(zhí)行以下步驟來處理收到的I/O:
一個CPU核心對數(shù)據(jù)包進行中斷和檢查,并確定由哪些VM來接受它。
服務(wù)于虛擬機的CPU核心進行中斷和處理I/O。
最初的CPU核心將收到的數(shù)據(jù)包返回到正常的工作路徑中。
而SR-IOV規(guī)范的目標(biāo)是在繞過虛擬機參與數(shù)據(jù)遷移過程中實施標(biāo)準(zhǔn)化,為每個虛擬機提供獨立內(nèi)存空間、中斷和DirectMemoryAccess(DMA)流。SR-IOV架構(gòu)的設(shè)計允許一個I/O設(shè)備支持多個虛擬功能,同時將每個功能的硬件成本降至最低。SRIOV引入了兩個新的功能類型:
物理功能(PhysicalFunctions,PFs):這是一些支持SR-IOV擴展功能的PCIe功能,被用于配置和管理SR-IOV功能特性。
虛擬功能(VirtualFunctions,VFs):這是一些“精簡”的PCIe功能,包括數(shù)據(jù)遷移必需的資源,以及經(jīng)過謹(jǐn)慎精簡的配置資源集。他們不支持物理設(shè)備的管理。
雖然SR-IOV標(biāo)準(zhǔn)可以適用于網(wǎng)絡(luò)和存儲的I/O,在現(xiàn)在和將來對它的期望也僅僅在網(wǎng)絡(luò)方面。虛擬服務(wù)器的性能問題主要集中在以太網(wǎng)流量上,通常虛擬服務(wù)器會產(chǎn)生大量的網(wǎng)絡(luò)流量,而流量的增長就意味著成本的支出。相對于網(wǎng)絡(luò)來講,存儲的I/O成本則可以忽略不計,不需要特別進行優(yōu)化。
先進的管理解決方案
在改善虛擬機的性能上,傳統(tǒng)的管理解決方案是直接管理I/O(或傳遞引導(dǎo)),這就要求為每個虛擬機分配一個唯一的物理端口,然后進行管理。這種方法的確可以提高性能,但卻受到可以連接到物理服務(wù)器的端口數(shù)量的限制。
這樣的后果之一就是網(wǎng)絡(luò)適配器,交換機端口和電纜會變得很復(fù)雜,而且直接管理I/O也不能和虛擬機的遷移相互兼容。在虛擬機遷移的時候,需要手動的關(guān)閉和重啟,顯然這并不是最佳的優(yōu)化方案。
SR-IOV提供了一項功能以多個獨立物理設(shè)備呈現(xiàn)的機制。支持SR-IOV的設(shè)備可以配置成以多個虛擬功能形式呈現(xiàn)在PCI配置空間中,每個都有它們自己的PCI配置空間。然后VMM可以通過模擬配置空間來分配一個或者多個虛擬功能給虛擬機。
每個虛擬功能可以支持針對PCIe層中I/O相關(guān)功能的一個特有且單獨的數(shù)據(jù)路徑。在網(wǎng)絡(luò)設(shè)備中使用SR-IOV可使一個端口(功能)的帶寬分成更小的塊,然后通過一個標(biāo)準(zhǔn)接口分配到特定虛擬機或者客戶端中。為了進一步加強PCIe層中不同設(shè)備的可操作性,還創(chuàng)建了一個配置和管理的通用方法體系。這種資源的共享提高了在一個支持SR-IOV的PCIe設(shè)備上任何特定資源的總利用率,從而降低了虛擬系統(tǒng)的成本。最后,SR-IOV的是和虛擬機的遷移相互兼容的。
SR-IOV的系統(tǒng)建立在自身發(fā)展的過程。它不僅需要適配器,交換機和管理程序供應(yīng)商的支持,同時也需要通過服務(wù)器廠商的支持。服務(wù)器廠商可以通過增加管理工具,來實現(xiàn)完全可靠的解決方案。目前,SR-IOV得到了RedHat的Linux6系統(tǒng)和SUSE的Linux11(以及后續(xù)版本)系統(tǒng)的支持,其他管理程序的供應(yīng)商也被期望能夠支持SR-IOV。
總的來說,SR-IOV實現(xiàn)了將PCI功能分配到多個虛擬接口以在虛擬化環(huán)境中共享一個PCI設(shè)備的資源。SR-IOV能夠讓網(wǎng)絡(luò)傳輸繞過軟件模擬層,直接分配到虛擬機。這樣就降低了軟加模擬層中的I/O開銷。SR–IOV將會成為一個優(yōu)化虛擬服務(wù)器的I/O的關(guān)鍵性技術(shù),在最大程度上節(jié)約虛擬機的運行成本。SR-IOV將提供一個比多物理端口方案更具成本效益的解決方案。