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