GPU,也即圖形處理單元。不論在手機中,還是在電腦、筆記本上,GPU都發(fā)揮著不可替代的作用。往期文章中,小編對加速原理、GPU服務器選擇、GPU存儲性能提升等均有所介紹。為增進大家對GPU的認識,本文將對GPU的5種虛擬化技術的略予以介紹。如果你對GPU具有興趣,不妨繼續(xù)往下閱讀哦。
一、設備模擬(Device Emulation)設備模擬是指通過軟件的方法來為虛擬機模擬GPU設備,這種方法的好處是虛擬機內(nèi)部都可以調(diào)用GPU命令,可以完全記GPU設備的狀態(tài),保證虛擬化技術的全部特性,滿足四個標準中的資源復用和支持虛擬化特性的標準。
QEMU 通過軟件模擬實傳統(tǒng)的VGA設備,但是該設備的性能很低,只能支持基礎的功能。軟件模擬設備的方法幾乎不會使用硬件加速,因此其實現(xiàn)的性能已經(jīng)無法滿足現(xiàn)在虛擬機的圖形圖像處理和高性能計算的需求。而且正如前文提到的,現(xiàn)代GPU架構(gòu)具有很高的復雜性缺少文檔,因此很難實現(xiàn)對一個真實的物理GPU進行軟件模擬。這意味著設備模擬方法只能模擬少量的API,只能保證少量的特性提供給虛擬機。
由于設備模擬的方法在性能和支持的GPU特性上和真實的GPU相差過大,設備模擬的技術已經(jīng)不再應用到虛擬化技術中。
二、API轉(zhuǎn)發(fā)(API Forwarding)API轉(zhuǎn)發(fā)是指通過實現(xiàn)包裹圖形API的庫,這些庫在虛擬機調(diào)用相關的API時,將這些圖形API通過遠程過程調(diào)用的方法轉(zhuǎn)機上,然后調(diào)用主機上的圖形驅(qū)動提供的API支持完成調(diào)用。通過給高層的API實現(xiàn)包裹庫,客戶機就能支持高層的API如CUDvCUDA、vGRIS等虛擬化方案都是利用API轉(zhuǎn)發(fā)的方法。這種方法的優(yōu)點是利于實現(xiàn),而且一定程度上利用了GPU硬件實現(xiàn)加同時可以使多個虛擬機調(diào)用的GPU相關指令與API在物理GPU上執(zhí)行。但是API轉(zhuǎn)發(fā)的主要問題在于這種方法失去了語言和庫的性選擇,包裹庫和支持的API的不匹配會造成GPU虛擬化不成功。而如果在遷移的過程中,目標主機與源主機的包裹庫版本不致,可能會造成遷移之后GPU虛擬化不成功,因此API轉(zhuǎn)發(fā)會影響虛擬化提供的特性。
三、中介傳遞(Mediated Pass-through)GPU已經(jīng)可以支持多個獨立的上下文,中介傳遞的方法使虛擬機只占用這些上下文的一個或者子集。高帶寬操作(指令緩交、幀緩存提交)需要使用映射到物理GPU的內(nèi)存或者MMIO資源,低帶寬操作(資源分配、傳統(tǒng)的特性)可能會通過使用全虛擬資源來實現(xiàn)。四、直接傳遞(Direct Pass-through)直接傳遞是指給一臺虛擬機使用一個物理GPU的全部訪問權限。Intel提供了Intel VT-d硬件輔助技術,使研究者不需要去GPU的編程接口就可以直接實現(xiàn)一臺虛擬機占用物理GPU的全部訪問權限。
這種方法的好處在于可以提供與真實機器相近的性及保真度,亞馬遜的Amazon EC2提供的GPU資源就是使用這種虛擬化策略。但是這種方法問題在于一個物理GPU只能被一臺機使用,犧牲了GPU資源在多臺機器之間共享的條件。而且虛擬化的遷移功能也會受到影響,因為不同體系架構(gòu)的GPU之間可在不兼容。
五、全虛擬化與半虛擬化GPU虛擬化實現(xiàn)策略按照是否需要修改客戶機操作系統(tǒng)內(nèi)部的驅(qū)動代碼分為GPU全虛擬化和GPU半虛擬化。GPU全虛擬化實現(xiàn)在多個虛擬機之間共享GPu資源的同時不需要修改虛擬機內(nèi)部的圖形驅(qū)動。GPU半虛擬化是指向虛擬機提供軟件實現(xiàn)的理備模型,對客戶機的圖形驅(qū)動進行底層的控制。
使用GPU半虛擬化的方法,比API轉(zhuǎn)發(fā)的性能消耗更小,但是客戶機的設備驅(qū)須要改寫。主流的GPU虛擬化方案GPUvm使用半虛擬化的實現(xiàn)策略對虛擬機GPU的性能有明顯的改善。