SR-IOV 技術是一種基於硬件的虛擬化解決方案,可提升性能和可伸縮性。SR-IOV 標準容許在虛擬機之間高效共享 PCIe(Peripheral Component Interconnect Express,快速外設組件互連)設備,而且它是在硬件中實現的,能夠得到可以與本機性能媲美的 I/O 性能。SR-IOV 規範定義了新的標準,根據該標準,建立的新設備可容許將虛擬機直接鏈接到 I/O 設備。性能
SR-IOV 規範由 PCI-SIG 在 http://www.pcisig.com 上進行定義和維護。設計
單個 I/O 資源可由許多虛擬機共享。共享的設備將提供專用的資源,而且還使用共享的通用資源。這樣,每一個虛擬機均可訪問惟一的資源。所以,啓用了 SR-IOV 而且具備適當的硬件和 OS 支持的 PCIe 設備(例如以太網端口)能夠顯示爲多個單獨的物理設備,每一個都具備本身的 PCIe 配置空間。blog
下圖介紹了針對 PCIe 硬件的 SR-IOV 技術。ip
圖 21-1 SR-IOV 技術內存
SR-IOV 中的兩種新功能類型是:ci
用於支持 SR-IOV 功能的 PCI 功能,如 SR-IOV 規範中定義。PF 包含 SR-IOV 功能結構,用於管理 SR-IOV 功能。PF 是全功能的 PCIe 功能,能夠像其餘任何 PCIe 設備同樣進行發現、管理和處理。PF 擁有徹底配置資源,能夠用於配置或控制 PCIe 設備。資源
與物理功能關聯的一種功能。VF 是一種輕量級 PCIe 功能,能夠與物理功能以及與同一物理功能關聯的其餘 VF 共享一個或多個物理資源。VF 僅容許擁有用於其自身行爲的配置資源。路由
每一個 SR-IOV 設備均可有一個物理功能 (Physical Function, PF),而且每一個 PF 最多可有 64,000 個與其關聯的虛擬功能 (Virtual Function, VF)。PF 能夠經過寄存器建立 VF,這些寄存器設計有專用於此目的的屬性。get
一旦在 PF 中啓用了 SR-IOV,就能夠經過 PF 的總線、設備和功能編號(路由 ID)訪問各個 VF 的 PCI 配置空間。每一個 VF 都具備一個 PCI 內存空間,用於映射其寄存器集。VF 設備驅動程序對寄存器集進行操做以啓用其功能,而且顯示爲實際存在的 PCI 設備。建立 VF 後,能夠直接將其指定給 IO 來賓域或各個應用程序(如裸機平臺上的 Oracle Solaris Zones)。此功能使得虛擬功能能夠共享物理設備,並在沒有 CPU 和虛擬機管理程序軟件開銷的狀況下執行 I/O。虛擬機
SR-IOV 標準容許在 IO 來賓域之間高效共享 PCIe 設備。SR-IOV 設備能夠具備數百個與某個物理功能 (Physical Function, PF) 關聯的虛擬功能 (Virtual Function, VF)。VF 的建立可由 PF 經過設計用來開啓 SR-IOV 功能的寄存器以動態方式進行控制。缺省狀況下,SR-IOV 功能處於禁用狀態,PF 充當傳統 PCIe 設備。
具備 SR-IOV 功能的設備能夠利用如下優勢:
性能-從虛擬機環境直接訪問硬件。
成本下降-節省的資本和運營開銷包括:
節能
減小了適配器數量
簡化了佈線
減小了交換機端口