透過SR-IOV讓虛擬伺服器I/O最佳化
文/Steve Abbott‧譯/Nica 2012/2/29 下午 01:48:22
佈署伺服器虛擬化幾乎已經是降低成本與充份利用資料中心資源的普遍基本概念了。隨著功能強大的多核心伺服器、更多的記憶體容量,以及更大的頻寬網路通道的演進,現在是必須重新思考I/O最佳化的時候了。
其成果是產生一些網路技術,其中包括了Single Root I/O Virtualization (SR-IOV)。SR-IOV為PCI-SIG標準,允許PCIe的I/O裝置以多個實體與虛擬裝置呈現。
傳統虛擬伺服器hypervisor提供虛擬機器一組模擬實體伺服器功能的資源。以I/O來說,這代表每個虛擬機器使用的虛擬I/O裝置是透過hypervisor呈現。雖然這樣可以在虛擬化下的運作很好,但通常沒有效率,尤其是對接收I/O來說更是如此。
在多核心伺服器下,hypervisor處理接收I/O時步驟依序如下:
.其中一個CPU核心被中斷,檢查封包並決定應由哪個虛擬機器接收。
.服務虛擬機器的核心被中斷,並處理I/O。
.初始接收封包的核心,會回到正常工作狀態。
這些步驟裡的每一個都會拖慢I/O速度,還會使用可觀的CPU資源。SR-IOV透過引進實體與虛擬功能的概念,讓這個程序更順暢:
.Physical function (PF)—網路卡的每個實體埠至少會有一個PF。在某些情況下,網路卡的每個實體埠可以分割為四個通訊埠之多。以這個例子來說,每個通訊埠可以有四個PF,或說每個帶有兩個實體埠的網路卡總共可以有八個PF。最關鍵的差異在於PF擁有完整的組態能力。它們與hypervisor息息相關,而且可以像實體裝置一樣被管理。
.Virtual function (VF (VFC))--VF與虛擬機器有關,在I/O資料流的處理上是受限的-主要是在移動資料上。它們不支援實體裝置的管理。支援的VF數量也各不相同,通常每片實體網路卡會有64個VF左右。
雖然SR-IOV標準是套用在網路與儲存裝置的I/O上,但目前與預期的實作執行皆僅止於網路上。對虛擬伺服器會造成影響的效能,大都集中在乙太網路的流量上,一般來說它所產生的I/O需求量最大,且使用最多的伺服器資源。儲存裝置I/O 極少使用在這上面,而且多半都能達到滿載的速度。
進階管理解決方案
提升虛擬機器效能的傳統方式之一是使用direct I/O(或pass-through)為每個虛擬機器分配單一實體埠,繞過hypervisor。這種方式可以提高執行效能,但會受限於實體埠可以連接在伺服器上的數量。
這也將導致了一堆網路卡通訊埠、交換器通訊埠與線路的複雜化以及成本花費。direct I/O的選項亦不相容於執行中虛擬機器的遷移。遷移必須手動處理虛擬機器的停機、移動與重啟。很明顯這個選擇沒那麼好。
有了SR-IOV,便能指定VF給虛擬機器。這麼作可以讓網路卡通訊埠、交換器通訊埠與網路線,支援許多個虛擬機器使用direct I/O。適當情況下,可以多個VF指定給一個虛擬機器,例如,為了高可用性,可以從有兩個通訊埠的網路卡裡的每個實體通訊埠,指派VF給虛擬機器。
為了接收I/O,被指定給虛擬機器的伺服器核心與其相關的VF,會執行所有封包的處理程序。這裏不需要中斷指定給其它虛擬機器的核心。為了進一步提升效能,同一PF裡的VF之間的I/O,可以透過使用內部Layer 2交換器的網路卡處理,免除經過實體交換器的路由。
總之,SR-IOV相容於執行中虛擬機器的轉移。SR-IOV是生存在bootstrapping本身程序裡。它需要網路卡、交換器與hypervisor供應商的支援。它也需要伺服器廠商的支援,以便加入管理工具程式,完整啟動健全的解決方案。 SR-IOV目前支援Red Hat Enterprise Linux 6 與SUSE Enterprise Linux 11(及以上版本)的Kernel Virtual Machine (KVM)。
預期未來還有其它hypervisor供應商會發表對SR-IOV的支援。SR-IOV將會是最佳化虛擬化伺服器I/O的關鍵技術,提升虛擬化的比率以達到最多的成本節約。SR-IOV 將提供比多重實體通訊埠更多更具成本效益的解決方案,並且會與虛擬機器轉移完全相容。