GPU虛擬化的評價標準
4個主要指標用于評價GPU虛擬化的方法:
保真度(fidelity)
資源復用(multiplexing)
是否支持虛擬化的特性(interposition)
其中性能和保真度強調減小GPU虛擬化的代價,性能是指執行操作的速度,保真度是指支持多少GPU提供的特性,以及對這些特性的支持的質量。資源復用以及是否支持虛擬化的特性則強調虛擬化為我們帶來價值。資源復用是指能夠使多臺虛擬機共享同一個物理GPU的能力,資源復用要求虛擬機之間的安全隔離,GPU資源復用提高了GPU資源利用率,在保持虛擬機內GPU性能不下降的情況下,復用一個GPU的虛擬機越多,對應的GPU虛擬化方案越符合資源復用的要求。是否支持虛擬化的特性是指GPU虛擬化的方案是否能支持虛擬化技術提供的虛擬機與物理機之間的中介過程,如要求虛擬機創建系統還原點,或者掛起,以及更加高級的特性,如熱遷移、可容錯執行等。這些標準經常是相對的,比如要提升性能,就需要犧牲虛擬化的其他特性。
GPU虛擬化技術的實現策略分類
GPU虛擬化的目標是為虛擬機提供虛擬GPU設備的支持,使得虛擬機內部調用的與GPU相關的指令或者與GPU相關的API(比如OpenCL或者CUDA)能夠正常得執行。
為了提升GPU虛擬化的性能,虛擬機需要利用GPU硬件來實現加速,也就是說虛擬機內部調用的GPU相關的命令或者GPU相關的API,能夠在硬件GPU上運行。所有GPU虛擬化技術的實現策略以及GPU虛擬化技術的發展都圍繞著這一目標。
下面列舉了四種GPU虛擬化技術的實現策略,按照利用GPU硬件加速的程度從小到大分別為分為設備模擬(Device Emulation)、API轉發(API Forwarding)、中介傳遞(Mediated Pass-through)和直接傳遞(Direct Pass-through也被稱為Fixed Pass-through),如圖所示。
下面對這四種實現策略分別介紹:
設備模擬(Device Emulation)
設備模擬是指通過軟件的方法來為虛擬機模擬GPU設備,這種方法的好處是虛擬機內部都可以調用GPU命令,可以完全記錄GPU設備的狀態,保證虛擬化技術的全部特性,滿足四個標準中的資源復用和支持虛擬化特性的標準。QEMU 通過軟件模擬實現了傳統的VGA設備,但是該設備的性能很低,只能支持基礎的功能。軟件模擬設備的方法幾乎不會使用硬件加速,因此其實現的GPU性能已經無法滿足現在虛擬機的圖形圖像處理和高性能計算的需求。而且正如前文提到的,現代GPU架構具有很高的復雜性,而且缺少文檔,因此很難實現對一個真實的物理GPU進行軟件模擬。這意味著設備模擬方法只能模擬少量的API,只能保證少量的GPU特性提供給虛擬機。由于設備模擬的方法在性能和支持的GPU特性上和真實的GPU相差過大,設備模擬的技術已經不再應用到GPU虛擬化技術中。
API轉發(API Forwarding)
API轉發是指通過實現包裹圖形API的庫,這些庫在虛擬機調用相關的API時,將這些圖形API通過遠程過程調用的方法轉發到主機上,然后調用主機上的圖形驅動提供的API支持完成調用。通過給高層的API實現包裹庫,客戶機就能支持高層的API如CUDA。vCUDA、vGRIS等虛擬化方案都是利用API轉發的方法。這種方法的優點是利于實現,而且一定程度上利用了GPU硬件實現加速,同時可以使多個虛擬機調用的GPU相關指令與API在物理GPU上執行。但是API轉發的主要問題在于這種方法失去了語言和庫的靈活性選擇,包裹庫和支持的API的不匹配會造成GPU虛擬化不成功。而如果在遷移的過程中,目標主機與源主機的包裹庫版本不一致,可能會造成遷移之后GPU虛擬化不成功,因此API轉發會影響虛擬化提供的特性。
中介傳遞(Mediated Pass-through)
GPU已經可以支持多個獨立的上下文,中介傳遞的方法使虛擬機只占用這些上下文的一個或者子集。高帶寬操作(指令緩存提交、幀緩存提交)需要使用映射到物理GPU的內存或者MMIO資源,低帶寬操作(資源分配、傳統的特性)可能會通過使用全虛擬化的資源來實現。
直接傳遞(Direct Pass-through)
直接傳遞是指給一臺虛擬機使用一個物理GPU的全部訪問權限。Intel提供了Intel VT-d硬件輔助技術,使研究者不需要去了解GPU的編程接口就可以直接實現一臺虛擬機占用物理GPU的全部訪問權限。這種方法的好處在于可以提供與真實機器相近的性能以及保真度,亞馬遜的Amazon EC2提供的GPU資源就是使用這種虛擬化策略。但是這種方法問題在于一個物理GPU只能被一臺虛擬機使用,犧牲了GPU資源在多臺機器之間共享的條件。而且虛擬化的遷移功能也會受到影響,因為不同體系架構的GPU之間可能存在不兼容。
全虛擬化與半虛擬化
GPU虛擬化實現策略按照是否需要修改客戶機操作系統內部的驅動代碼分為GPU全虛擬化和GPU半虛擬化。GPU全虛擬化是指實現在多個虛擬機之間共享GPu資源的同時不需要修改虛擬機內部的圖形驅動。GPU半虛擬化是指向虛擬機提供軟件實現的理想設備模型,對客戶機的圖形驅動進行底層的控制。使用GPU半虛擬化的方法,比API轉發的性能消耗更小,但是客戶機的設備驅動必須要改寫。主流的GPU虛擬化方案GPUvm使用半虛擬化的實現策略對虛擬機GPU的性能有明顯的改善。
-
gpu
+關注
關注
28文章
4729瀏覽量
128901 -
虛擬機
+關注
關注
1文章
914瀏覽量
28161
發布評論請先 登錄
相關推薦
評論