梁桂才,巫耀中
(1.廣西機(jī)電職業(yè)技術(shù)學(xué)院,廣西 南寧 530007;2.上海榕湖投資管理有限公司,上海 200122)
十多年來(lái),高性能計(jì)算(HPC)程序員和研究人員采用了一種新的計(jì)算范式,該范式結(jié)合了兩種架構(gòu):具有強(qiáng)大和通用核心的多核處理器和多核加速器,例如圖形處理單元(GPU),具有大量的簡(jiǎn)單核,在加速算法具有高度的數(shù)據(jù)并行性,在這方面很有優(yōu)勢(shì)。盡管核數(shù)量不斷增加,多核處理器設(shè)計(jì)仍然旨在通過(guò)使用復(fù)雜的控制邏輯和大的緩存內(nèi)存來(lái)減少順序程序中的延遲。相反,GPU試圖通過(guò)數(shù)千個(gè)簡(jiǎn)單內(nèi)核和高內(nèi)存帶寬架構(gòu)來(lái)提高并行應(yīng)用程序的執(zhí)行吞吐量。GPU在云計(jì)算中的作用非常重要。包括亞馬孫和阿里巴巴在內(nèi)的大多數(shù)頂級(jí)云服務(wù)提供商已經(jīng)將GPU資源引入到他們的基礎(chǔ)設(shè)施即時(shí)服務(wù)解決方案中。這些GPU資源通常以整個(gè)物理GPU的粒度提供給每個(gè)客戶端。然而,在許多實(shí)際情況下,一小部分物理GPU就足以完成渲染任務(wù),這導(dǎo)致了資源利用不足的問(wèn)題。提出了GPU虛擬化技術(shù)(例如,API重定向和中介傳遞)來(lái)解決資源利用率不足的問(wèn)題。然而,這些技術(shù)只關(guān)注本地主機(jī)。瘦客戶端架構(gòu)的出現(xiàn),允許人們通過(guò)互聯(lián)網(wǎng)享受硬件加速器和GPU虛擬化技術(shù),以擴(kuò)大用戶范圍。然而,現(xiàn)有的框架傾向于將所有的工作負(fù)載歸因于服務(wù)器端,讓客戶別無(wú)選擇。受API重定向技術(shù)啟發(fā)設(shè)計(jì)的一個(gè)新的框架,云邊緣集成,似乎解決了這一限制。
隨著AI技術(shù)的發(fā)展,AI運(yùn)算迫切需要大規(guī)模的并行計(jì)算。隨著圖形處理單元GPU的出現(xiàn)使得并行計(jì)算算力得到很快提高。2006年,英偉達(dá)的集成架構(gòu)CUDA誕生了。GPU迅速?gòu)膯我粓D形處理發(fā)展成為具有AI運(yùn)算的算力資源。圖形處理單元(GPGPU)上通用計(jì)算的快速發(fā)展極大地簡(jiǎn)化了GPU編程。在這種環(huán)境下,越來(lái)越多的應(yīng)用程序嘗試使用GPU強(qiáng)大的并行計(jì)算能力來(lái)得出結(jié)果。在并行計(jì)算方面GPU相比CPU有明顯的優(yōu)勢(shì),無(wú)論是在算力還是內(nèi)存帶寬、功耗和成本方面。GPU的結(jié)構(gòu)不同,它使用大量晶體管作為ALU計(jì)算單元,而CPU主要是做邏輯運(yùn)算,它使用的晶體管作為復(fù)雜的控制單元和緩存來(lái)優(yōu)化串行代碼。GPU專注于大量、快速、低延遲地實(shí)施特定操作。21世紀(jì)以來(lái),很多大型集群系統(tǒng)都采用了CPU+GPU異構(gòu)計(jì)算模型,這代表CPU+GPU異構(gòu)計(jì)算模型向大數(shù)據(jù)計(jì)算領(lǐng)域發(fā)展。
API重定向首先作為一種GPU虛擬化技術(shù)而出現(xiàn),重點(diǎn)是提高GPU利用率的問(wèn)題。與其他技術(shù)不同,包括與特定硬件緊密耦合的中介傳遞,A PI重定向技術(shù)可以在不需要硬件支持的情況下存在。因此,A PI重定向系統(tǒng)具有健壯的可伸縮性。隨著GPGPU設(shè)計(jì)的成熟,GPU的功能不再局限于圖形加速。因此,遠(yuǎn)程API重定向系統(tǒng)不僅關(guān)注轉(zhuǎn)發(fā)渲染命令,而且還關(guān)注與GPGPU相關(guān)的命令。
當(dāng)談到API重定向技術(shù)時(shí),它們可以分為兩類:本地機(jī)器上的本地API重定向系統(tǒng)和將用戶區(qū)域從本地主機(jī)擴(kuò)展到云的遠(yuǎn)程API重定向系統(tǒng)。由于遠(yuǎn)程API重定向技術(shù)要求服務(wù)器和客戶機(jī)之間的合作,我們稱之為云邊緣集成框架。在下面的部分中,我們將簡(jiǎn)要描述這兩種技術(shù)之間的差異、本地技術(shù)的局限性和遠(yuǎn)程技術(shù)的獨(dú)特優(yōu)勢(shì)。本地API重定向系統(tǒng)(例如SRIOV6、7和共享渲染)將每臺(tái)服務(wù)器上的隔離單元(虛擬機(jī)或容器)作為客戶機(jī)。盡管這種技術(shù)增加了GPU的利用率,但將所有功能歸因于服務(wù)器端會(huì)給服務(wù)器機(jī)器帶來(lái)很大的壓力。此外,多個(gè)應(yīng)用程序之間的資源共享加劇了服務(wù)器端的壓力。因此,遠(yuǎn)程API重定向系統(tǒng)似乎解決了這個(gè)問(wèn)題。
以前的虛擬機(jī)因?yàn)镚PU異構(gòu)化和供應(yīng)商鎖定,不能直接使用主機(jī)的 GPU,若要使用就必須通過(guò)設(shè)備仿真來(lái)實(shí)現(xiàn) GPU 并行運(yùn)算的基本功能。Younge等人使用PCI直通技術(shù)和SHOC基準(zhǔn)測(cè)試評(píng)估了XenVM基礎(chǔ)設(shè)施的性能。作者發(fā)現(xiàn),在最壞的情況下,在支持開(kāi)普勒K20mgpu的虛擬機(jī)中,只有1.2%的性能損失,而API遠(yuǎn)程方法會(huì)產(chǎn)生高達(dá)40%的性能開(kāi)銷。在最近的研究中,他們使用SR-IOV的PCI傳遞評(píng)估了虛擬化集群中的HPC工作負(fù)載。SR-IOV是一種硬件輔助的網(wǎng)絡(luò)虛擬化技術(shù),它在虛擬機(jī)內(nèi)提供10 Gbps連接的近本地帶寬。GPUDirect通過(guò)支持無(wú)限波段互連上的GPU之間的直接RDMA,降低了跨GPU的數(shù)據(jù)傳輸開(kāi)銷。為了進(jìn)行評(píng)估,他們使用了兩種分子動(dòng)力學(xué)(MD)應(yīng)用程序。作者觀察到,使用MPI和CUDA的MD應(yīng)用程序可以在接近本地的性能下運(yùn)行,而LAMMPS和HOOMD的管理率分別僅為1.9%和1.5%。
現(xiàn)在有些商業(yè)云直連將GPU部署到云平臺(tái)。但是只是保證了與本地設(shè)備的GPU能被虛擬機(jī)調(diào)度使用,它不適合共享。多用戶在云計(jì)算場(chǎng)景、專業(yè)化方面,GPU的利用率低,在執(zhí)行計(jì)算能力不足的任務(wù)時(shí)浪費(fèi)計(jì)算資源,沒(méi)有所需的維護(hù)和監(jiān)控,不支持虛擬機(jī)等高級(jí)功能。
設(shè)備仿真方式只能仿真簡(jiǎn)單的硬件,性能較差。API 重定向可以實(shí)現(xiàn)接近本機(jī)硬件的性能,但需要更改主機(jī) VM 庫(kù)。該設(shè)備的直接方法提供了出色的性能,但被廣泛共享。最近的完整GPU虛擬化提案結(jié)合了上述解決方案,以提供對(duì)訪客VM使用情況的完全透明。這種方法對(duì)寄存器等硬件上下文信息使用軟件仿真,允許直接連接的硬件設(shè)備在上下文切換后充分利用 GPU。完全的GPU虛擬化意味著您可以使用GPU 而無(wú)須更改虛擬機(jī)驅(qū)動(dòng)程序,即無(wú)縫。全 GPU虛擬化比共享直連設(shè)備要好得多,但同時(shí),它不需要對(duì)主機(jī) VM的驅(qū)動(dòng)程序進(jìn)行任何修改,并且在性能上遠(yuǎn)優(yōu)于設(shè)備仿真。這是有史以來(lái)最好的 GPU虛擬化解決方案??滋锏热颂岢隽薵Virt來(lái)實(shí)現(xiàn)完全虛擬化的 GPU 圖像渲染解決方案并進(jìn)一步優(yōu)化系統(tǒng),并提出了gHyvi和gScale。在通用計(jì)算領(lǐng)域,YusukeSuzuki 等人提出了一個(gè)vm GPU系統(tǒng),它通過(guò)修改一個(gè)完全虛擬化的VMM來(lái)實(shí)現(xiàn)一個(gè)GPU。gVirt 的示意圖如圖1所示。
圖1 gVirt框架結(jié)構(gòu)示意圖
在通用計(jì)算中,GPUvm的全GPU虛擬化實(shí)現(xiàn)得更充分,更改僅在 Xen中進(jìn)行。與 gVirt一樣,GPUvm使用 GPU幻像頁(yè)表機(jī)制來(lái)隔離視頻內(nèi)存。每個(gè)虛擬機(jī)訪問(wèn)自己的虛擬機(jī)。另外,CPU和GPU之間發(fā)送命令的隊(duì)列是虛擬化的,這意味著每個(gè)虛擬機(jī)都有自己的隊(duì)列結(jié)構(gòu),當(dāng)虛擬機(jī)發(fā)生更改時(shí),命令隊(duì)列也會(huì)相應(yīng)更改。GPUvm使用寬帶支持,非搶占式調(diào)度算法允許您在虛擬機(jī)之間平衡 GPU。
目前,因?yàn)镚PU異構(gòu)化和供應(yīng)商鎖定,集群中的GPU資源結(jié)構(gòu)復(fù)雜多樣,群集的GPU有多個(gè)品牌、多種架構(gòu),它們的處理能力又各同樣,節(jié)點(diǎn)上的GPU數(shù)量也很不統(tǒng)一。怎么樣才能在這些差異化資源上實(shí)現(xiàn)調(diào)度任務(wù)、資源負(fù)載均衡、系統(tǒng)資源充分利用,是一個(gè)GPU資源池化亟待解決的問(wèn)題。如果像CPU虛擬化一樣,GPU虛擬化也可以實(shí)現(xiàn)對(duì)CPU資源進(jìn)行集中高效的管理,然后再進(jìn)行動(dòng)態(tài)分配。但是CPU天生就容易實(shí)現(xiàn)虛擬化,面GPU卻不容易實(shí)現(xiàn),所以真正高效的GPU虛擬化管理系統(tǒng)遲遲沒(méi)有出現(xiàn)。為了實(shí)現(xiàn)GPU資源池動(dòng)態(tài)管理、動(dòng)態(tài)分配,滿足不同資源需求,應(yīng)實(shí)現(xiàn)軟硬件解耦和GPU資源共享的目標(biāo)。
GPU資源池在虛擬化服務(wù)層維護(hù)多個(gè)GPU計(jì)算資源,并將不同品牌、不同型號(hào)、不同速率的物理GPU計(jì)算資源化整為0,統(tǒng)一管理動(dòng)態(tài)分配。根據(jù)虛擬機(jī)客戶端的需求,將不同的計(jì)算資源池化并動(dòng)態(tài)分配,實(shí)現(xiàn)GPU硬件資源的“分離、分區(qū)、整合”。圖2為gRemote的詳細(xì)架構(gòu)圖,該框架利用了API重新定向技術(shù),在資源調(diào)動(dòng)整合方面有著很大的優(yōu)勢(shì)。
圖2 gRemote框架示意圖
隔離性體現(xiàn)在提供給虛擬機(jī)客戶端的GPU計(jì)算資源不能相互影響,即使是在同一個(gè)物理GPU上。GPU資源池會(huì)實(shí)時(shí)更新服務(wù)器的UPG資源的使用狀態(tài),實(shí)時(shí)同步虛擬機(jī)客戶端的虛擬GPU的使用情況,某一虛擬機(jī)沒(méi)有釋放GPU之前不能再使用該資源,避免虛擬機(jī)之間的相互干擾。在虛擬機(jī)客戶機(jī)上,都有自己獨(dú)立的GPU資源,但GPU資源池會(huì)動(dòng)態(tài)地被分配給各個(gè)虛擬機(jī),因?yàn)橥ǔC恳粋€(gè)虛擬機(jī)的使用率都不會(huì)太高,據(jù)不完全統(tǒng)計(jì),使用率在20%左右,這樣使得GPU資源池的資源可以超分。虛擬機(jī)上有自己完整的GPU資源。這種拆分體現(xiàn)在提供給虛擬機(jī)客戶端的GPU是GPU資源池中實(shí)際物理硬件的一個(gè)子集。虛擬機(jī)根據(jù)用戶的需要,實(shí)時(shí)分配GPU,動(dòng)態(tài)劃分物理GPU資源空間,提供相應(yīng)的資源給虛擬機(jī)客戶端。在GPU資源池端,將服務(wù)線程動(dòng)態(tài)分配給不同的客戶端,實(shí)現(xiàn)GPU資源共享,多個(gè)虛擬機(jī)客戶端共享單個(gè)圖形卡并允許使用多個(gè)圖形卡。這種融合體現(xiàn)了傳統(tǒng)的硬盤(pán)池和內(nèi)存池技術(shù),可以將多個(gè)物理GPU資源映射到單個(gè)虛擬GPU,合理分配GPU資源給虛擬機(jī)客戶端,也可以將一個(gè)物理GPU資源映射到多個(gè)虛擬機(jī)使用。GPU資源池是資源提供者角色,虛擬機(jī)客戶端是資源使用者角色,GPU資源池維護(hù)兩端的角色,中間件消耗池中的GPU資源,并將其提供給虛擬客戶端。GPU資源池跨越整個(gè)虛擬集群。隨著GPU資源加入虛擬集群,由GPU資源池監(jiān)控,統(tǒng)一調(diào)度。從集群中移動(dòng)GPU資源時(shí),資源池及其子對(duì)象中的資源不可用。GPU虛擬資源池以資源分配、占用、釋放、回收模式運(yùn)行,而不是分配銷毀模式。GPU資源池不僅可以靈活擴(kuò)展以滿足用戶需求,還具有統(tǒng)一動(dòng)態(tài)監(jiān)控調(diào)度和分配的能力。這樣可以實(shí)現(xiàn)資源的快速分配或回收,根據(jù)系統(tǒng)需求靈活執(zhí)行調(diào)度功能,動(dòng)態(tài)調(diào)整GPU資源。
在過(guò)去的幾年中,異構(gòu)計(jì)算作為一種新的計(jì)算范式獲得了廣泛的關(guān)注,它有潛力為HPC和云平臺(tái)提供更高的性能、更高的資源利用率和更低的運(yùn)營(yíng)成本。在云數(shù)據(jù)計(jì)算中,GPU虛擬化是在多個(gè)用戶之間有效共享GPU設(shè)備的關(guān)鍵技術(shù)。本文對(duì)GPU虛擬化技術(shù)及其調(diào)度方法的研究工作進(jìn)行了深入的研究,通過(guò)對(duì)GPU虛擬化的代表性研究,介紹了該領(lǐng)域的關(guān)鍵研究貢獻(xiàn),這些研究包括API重定向和全虛擬化以及硬件輔助虛擬化;此外還討論了在異構(gòu)云計(jì)算中實(shí)現(xiàn)公平有效的GPU共享的GPU調(diào)度方法;最后提出了一些未來(lái)的研究方向,并推進(jìn)GPU虛擬化的實(shí)踐狀態(tài)?!?/p>