Single Root I/O Virtualization (SR-IOV) 介紹
在虛擬化技術中, 最一開始的技術從硬碟開始,
之後是 CPU 與記憶體的虛擬化,
最後則慢慢走向網路以及各種周邊裝置虛擬化,
其中, 在網路虛擬化的部分, 一開始以軟體方案 (OpenVSwitch) 為主,
此類方法依賴 Host Machine 上的程式進行資料的轉傳,
限制了 Virtual Machine 上的網路的效能.
為了增進其他裝置 (CPU, 記憶體, 硬碟) 的虛擬化程度,
Intel 提出了 SR-IOV (Single Root I/O Virtualization) 的機制,
目標是透過對 PCIe 介面的虛擬化, 使一個裝置可以服務多個虛擬機,
其中, SR 代表只有一個 Host Machine, 也就是一般家用電腦狀況,
相對應的有所謂的 MR-IOV (Multi-Root I/O Virtualization),
MR-IOV 適用於刀鋒伺服器 (Blade Server) 架構,
在此架構下, 多張刀鋒伺服器共享同一機櫃之 IO 支援 (如對外網路),
因此會出現多台 Host Machine (Multi-Root) 對單一 IO 裝置的存取需求.
考慮到 MR-IOV 可視為 SR-IOV 的延伸, 我們著重介紹 SR-IOV 的部分,
在 SR-IOV 中, 將原本提供 Physical Function (PF),
切割成多個 Virtual Function (VF), 而每個 VF 對應到不同的虛擬網卡,
其框架可以以下圖表示:
SR-IOV 需要裝置本身的支援 (PF和VF的功能提供), 以及虛擬層 (hypervisor) 的支援,
其中, PF 可以視為原本裝置的 driver 支援, 負責和 hpervisor 進行溝通,
當虛擬機生成後, 就直接透過 VF 進行溝通, 直接操作裝置,
我們可以把過去虛擬化的架構和 SR-IOV 的架構的資料流表示於下圖:
圖片的左邊顯示的是舊有虛擬機 (Child Partition 1) 的架構,
可以看到來自於網卡的資料會透過 Host Machine (Parent Partition) 上的 vSwitch,
以及虛擬機程式的匯流排 (VMBus) 導給虛擬機,
此架構中的資料流透過許多軟體轉傳, 耗費 CPU 資源, 並減低整體效能.
SR-IOV 的架構則顯示於圖右 (Child Partition 2),
在 SR-IOV 的架構下, 此虛擬機的流量由一個 VF 服務,
可以減少 CPU 的負載, 並減低由於虛擬化產生的效能限制.
相同的 SR-IOV 架構不只可以適用於網卡的虛擬化,
也可以用於圖形加速卡 (GPU) 等裝置虛擬化, 例如:
考慮到目前機器學習的應用, 應該會是下一個雲端運算的課題.
留言
張貼留言