專利名稱:動態(tài)虛擬設(shè)備故障恢復(fù)的制作方法
動態(tài)虛擬設(shè)備故障恢復(fù)技術(shù)領(lǐng)域
本申請涉及虛擬設(shè)備故障恢復(fù),特別是動態(tài)虛擬設(shè)備故障恢復(fù)的技術(shù)。
相關(guān)案件的交叉引用
本申請?jiān)谥黝}上與題為“Techniques for Load Balancing GPU Enabled Virtual Machines (用于啟用負(fù)載平衡GPU的虛擬機(jī)的技術(shù)),,的美國專利申請第xx/xxx,xxx號 (代理人案號為MVIR-0669/330193. 01)有關(guān),該申請的內(nèi)容通過引用整體結(jié)合于此。
背景技術(shù):
虛擬機(jī)平臺通過在每個操作系統(tǒng)自己的虛擬機(jī)內(nèi)運(yùn)行該操作系統(tǒng)來允許多個客操作系統(tǒng)在物理機(jī)上的同時(shí)執(zhí)行??梢栽谔摂M機(jī)中提供的一個示例性服務(wù)是虛擬桌面會話。虛擬桌面會話在本質(zhì)上是在虛擬機(jī)內(nèi)運(yùn)行的將其用戶界面發(fā)送到遠(yuǎn)程計(jì)算機(jī)的個人計(jì)算機(jī)環(huán)境。這一體系結(jié)構(gòu)類似于遠(yuǎn)程桌面環(huán)境,但代之以將多個用戶同時(shí)連接到服務(wù)器類操作系統(tǒng),在虛擬桌面會話中,每一用戶能夠訪問在虛擬機(jī)中執(zhí)行的他們自己的商用操作系統(tǒng)。
現(xiàn)代操作系統(tǒng)實(shí)施了用于3D應(yīng)用/視頻游戲的三維(3D)圖形用戶界面及其操作系統(tǒng)用戶界面。用戶享受與3D環(huán)境交互的體驗(yàn),并且期望能夠在虛擬桌面會話中將3D圖形流送給客戶機(jī);然而,由于多種原因而難以實(shí)現(xiàn)流送3D圖形。例如,流送3D圖形的動作需要帶寬和/或壓縮。此外,虛擬桌面服務(wù)器將需要包括3D圖形處理單元(GPU),其能夠執(zhí)行3D功能。3D圖形處理是資源密集的,并且GPU通常每次僅能渲染幾個3D圖形用戶界面。如果這些GPU不得不渲染過多圖形用戶界面,則它們會快速地變得過載。遺憾的是,在虛擬桌面部署中,GPU可能不得不同時(shí)渲染大量3D圖形用戶界面。這會引起一個或多個操作超時(shí),因而會引起圖形驅(qū)動程序重置GPU,從而引起3D應(yīng)用程序終止。因此,需要用于從重置恢復(fù)的技術(shù)。發(fā)明內(nèi)容
一示例性實(shí)施例包括一種系統(tǒng)。在該示例中,該系統(tǒng)包括但不限于處理器、以及在計(jì)算機(jī)系統(tǒng)可操作時(shí)與該處理器通信的存儲器。在這個示例中,存儲器可以包括計(jì)算機(jī)可讀指令,當(dāng)執(zhí)行時(shí),使得處理器建立虛擬化平臺和虛擬機(jī)之間的通信信道;檢測配置用于在 3D圖形處理單元上為虛擬機(jī)渲染圖形的渲染進(jìn)程的終止;重啟所述渲染進(jìn)程;通過通信信道向在虛擬機(jī)上執(zhí)行的虛擬設(shè)備驅(qū)動程序發(fā)送指示渲染進(jìn)程正在被重啟的信號并在虛擬機(jī)上執(zhí)行的虛擬設(shè)備驅(qū)動程序和重啟的渲染進(jìn)程之間建立圖形緩沖。除以上之外,權(quán)利要求書具體實(shí)施方式
和附圖中描述了其他技術(shù)。
另一示例性實(shí)施例包括計(jì)算機(jī)可讀存儲介質(zhì)。在該示例中,計(jì)算機(jī)可讀存儲介質(zhì)包括計(jì)算機(jī)指令,當(dāng)執(zhí)行時(shí),使得處理器在主操作系統(tǒng)和虛擬機(jī)之間建立通信信道;在主操作系統(tǒng)中運(yùn)行渲染進(jìn)程,其中,所述渲染進(jìn)程被配置用于在3D圖形處理單元上為虛擬機(jī)渲染圖形;檢測所述渲染進(jìn)程終止;重啟所述渲染進(jìn)程;通過通信信道發(fā)送指示渲染進(jìn)程被重啟的消息;由虛擬機(jī)上執(zhí)行的虛擬設(shè)備驅(qū)動程序在客存儲器范圍中建立圖形緩沖;并通過通信信道將3D圖形數(shù)據(jù)發(fā)送給重啟的渲染進(jìn)程。除以上之外,權(quán)利要求書具體實(shí)施方式
和附圖中描述了其他技術(shù)。
另一示例性實(shí)施例包括一種方法。在該示例中,方法包括但不局限于由虛擬化平臺在虛擬化平臺和虛擬機(jī)之間建立通信信道;由虛擬化平臺運(yùn)行渲染進(jìn)程,所述渲染進(jìn)程被配置用于在3D圖形處理單元上為虛擬機(jī)渲染圖形;由虛擬化平臺檢測所述渲染進(jìn)程終止;由虛擬化平臺重啟所述渲染進(jìn)程;通過通信信道發(fā)送指示渲染進(jìn)程被重啟的消息;由虛擬機(jī)內(nèi)執(zhí)行的虛擬設(shè)備驅(qū)動程序在客存儲器范圍中建立圖形緩沖;通過圖形緩沖將3D 圖形數(shù)據(jù)發(fā)送給重啟的渲染進(jìn)程。除以上之外,權(quán)利要求書具體實(shí)施方式
和附圖中描述了其他技術(shù)。
本領(lǐng)域技術(shù)人員將理解,本公開的一個或多個各種方面可包括但不限于用于實(shí)現(xiàn)此處所引用的方面的電路和/或編程;該電路和/或編程實(shí)質(zhì)上可以是配置成實(shí)現(xiàn)本文所引用的方面的硬件、軟件和/或固件的任何組合,這取決于系統(tǒng)設(shè)計(jì)者的設(shè)計(jì)選擇。
以上是概述,并且因此必然包含細(xì)節(jié)的簡化、一般化及省略。本領(lǐng)域技術(shù)人員將明白,本概述只是說明性的并且決不旨在是限制性的。
圖1描繪了計(jì)算機(jī)系統(tǒng)的高級框圖。
圖2描繪了虛擬機(jī)服務(wù)器的高級框圖。
圖3描繪了虛擬機(jī)服務(wù)器的高級框圖。
圖4描繪了虛擬桌面服務(wù)器的高級框圖。
圖5描繪了虛擬桌面服務(wù)器的高級框圖。
圖6描繪了操作流程。
圖7示出了包括附加操作的圖6的操作流程。
圖8描繪了操作流程。
圖9示出了包括附加操作的圖8的操作流程。
圖10描繪了操作流程。
圖11示出了包括附加操作的圖10的操作流程。
具體實(shí)施方式
在此公開的主題可以使用一個或多個計(jì)算機(jī)系統(tǒng)。圖1和以下討論旨在提供其中可以實(shí)現(xiàn)所公開的主題的適當(dāng)計(jì)算環(huán)境的簡要描述。
貫穿本說明書使用的術(shù)語電路可包括諸如硬件中斷控制器、硬盤驅(qū)動程序、網(wǎng)絡(luò)適配器、圖形處理器、基于硬件的視頻/音頻編解碼器等硬件組件,以及用于操作這些硬件的固件。術(shù)語“電路”還可以包括由固件和/或軟件來配置的進(jìn)行指令讀取和執(zhí)行的微處理器、專用集成電路、以及處理器,例如多核通用處理單元的核。處理器可由從例如RAM、R0M、 固件和/或大容量存儲等存儲器加載的指令來配置,從而具體化可用于配置處理器來執(zhí)行功能的邏輯。在其中電路包括硬件和軟件的組合的示例實(shí)施例中,實(shí)現(xiàn)者可以編寫具體化邏輯的源代碼,該源代碼隨后被編譯成可由硬件執(zhí)行的機(jī)器可讀代碼。因?yàn)楸绢I(lǐng)域技術(shù)人員可以明白現(xiàn)有技術(shù)已經(jīng)進(jìn)化到硬件實(shí)現(xiàn)的功能或軟件實(shí)現(xiàn)的功能之間幾乎沒有差別的地步,因而選擇硬件還是軟件來實(shí)現(xiàn)此處描述的功能只是一個設(shè)計(jì)選擇。換言之,由于本領(lǐng)域的技術(shù)人員可以理解軟件進(jìn)程可被變換成等效的硬件結(jié)構(gòu),且硬件結(jié)構(gòu)本身可被變換成等效的軟件進(jìn)程,因此選擇硬件實(shí)現(xiàn)或是軟件實(shí)現(xiàn)留給了實(shí)現(xiàn)者。
現(xiàn)在參考圖1,描繪了示例性計(jì)算系統(tǒng)100。計(jì)算機(jī)系統(tǒng)100可包括處理器102,例如,執(zhí)行核。盡管示出了一個處理器102,但在其他實(shí)施例中,計(jì)算機(jī)系統(tǒng)100可具有多個處理器,例如每一處理器襯底有多個執(zhí)行核,和/或各自可具有多個執(zhí)行核的多個處理器襯底。如圖所示,各種計(jì)算機(jī)可讀存儲介質(zhì)110可由一個或多個系統(tǒng)總線互連,所述系統(tǒng)總線將各種系統(tǒng)組件耦合到處理器102。系統(tǒng)總線可以是幾種類型的總線結(jié)構(gòu)中的任何一種,包括存儲器總線或存儲器控制器、外圍總線、以及使用各種總線體系結(jié)構(gòu)中的任一種的局部總線。在示例實(shí)施例中,計(jì)算機(jī)可讀存儲介質(zhì)110可以包括例如隨機(jī)存取存儲器(RAM) 104、 存儲設(shè)備106(例如電機(jī)硬盤驅(qū)動程序、固態(tài)硬盤驅(qū)動程序等)、固件108(例如閃速RAM或 ROM)、以及可移動存儲設(shè)備118 (例如⑶-ROM、軟盤、DVD、閃速驅(qū)動程序、外部存儲設(shè)備等)。 本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可使用其他類型的計(jì)算機(jī)可讀存儲介質(zhì),如磁帶盒、閃存卡、 和/或數(shù)字視頻盤。
計(jì)算機(jī)可讀存儲介質(zhì)110可以提供對處理器可執(zhí)行指令122、數(shù)據(jù)結(jié)構(gòu)、程序模塊以及諸如可執(zhí)行指令之類的用于計(jì)算機(jī)100的其他數(shù)據(jù)的非易失性和易失性存儲?;据斎?輸出系統(tǒng)(BIOS) 120可被存儲在固件108中,它包含幫助在諸如啟動期間在計(jì)算機(jī)系統(tǒng)100內(nèi)的各元件之間傳遞信息的基本例程。包括操作系統(tǒng)和/或應(yīng)用程序的多個程序可被存儲在固件108、存儲設(shè)備106、RAM 104和/或可移動存儲設(shè)備118上,并且可由處理器 102來執(zhí)行。
命令和信息可由計(jì)算機(jī)100通過輸入設(shè)備116來接收,輸入設(shè)備可包括但不限于鍵盤和指向設(shè)備。其他輸入設(shè)備可以包括話筒、操縱桿、游戲手柄、掃描儀等等。這些和其他輸入設(shè)備常通過耦合到系統(tǒng)總線的串行端口接口連接到處理器102,但也可通過其他接口連接,如并行端口、游戲端口或通用串行總線(USB)。顯示器或其他類型的顯示設(shè)備也可經(jīng)由諸如視頻適配器等可以是圖形處理器單元112的一部分或可連接到圖形處理器單元112 的接口來連接到系統(tǒng)總線。除顯示器之外,計(jì)算機(jī)通常包括其他外圍輸出設(shè)備,如揚(yáng)聲器和打印機(jī)(未示出)。圖1的示例性系統(tǒng)還可包括主適配器、小型計(jì)算機(jī)系統(tǒng)接口(SCSI)總線和連接到SCSI總線的外部存儲設(shè)備。
計(jì)算機(jī)系統(tǒng)100可使用至一個或多個遠(yuǎn)程計(jì)算機(jī),如遠(yuǎn)程計(jì)算機(jī)的邏輯連接在聯(lián)網(wǎng)環(huán)境中操作。遠(yuǎn)程計(jì)算機(jī)可以是另一計(jì)算機(jī)、服務(wù)器、路由器、網(wǎng)絡(luò)PC、對等設(shè)備或其他常見的網(wǎng)絡(luò)節(jié)點(diǎn),并且通常包括上面關(guān)于計(jì)算機(jī)系統(tǒng)100所述的許多或全部元件。
當(dāng)在LAN或WAN聯(lián)網(wǎng)環(huán)境中使用時(shí),計(jì)算機(jī)系統(tǒng)100可通過網(wǎng)絡(luò)接口卡114連接至LAN或WAN。NIC 114,可以是內(nèi)部的或外部的,可被連接到系統(tǒng)總線。在聯(lián)網(wǎng)環(huán)境中,相對于計(jì)算機(jī)系統(tǒng)100或其部分所描述的程序模塊可以被存儲在遠(yuǎn)程存儲器存儲設(shè)備中??梢岳斫猓枋龅木W(wǎng)絡(luò)連接是示例性的,且可以使用在計(jì)算機(jī)之間建立通信鏈路的其他手段。此外,雖然可構(gòu)想本發(fā)明的許多實(shí)施例尤其適用于計(jì)算機(jī)化的系統(tǒng),然而在本說明中不意味著將本發(fā)明限于那些實(shí)施例。
轉(zhuǎn)向圖2,示出了可被用來生成虛擬機(jī)的示例性虛擬平臺。在該實(shí)施例中,系統(tǒng)管理程序微內(nèi)核202可被配置成控制并仲裁對計(jì)算機(jī)系統(tǒng)200的硬件的訪問。系統(tǒng)管理程序微內(nèi)核202可以生成稱為分區(qū)的執(zhí)行環(huán)境,如子分區(qū)1到子分區(qū)N(其中N是大于1的整數(shù))。在此,子分區(qū)是系統(tǒng)管理程序微內(nèi)核202所支持的基本隔離單元。系統(tǒng)管理程序微內(nèi)核202可以隔離一個分區(qū)中的進(jìn)程,使其不能訪問另一分區(qū)的資源。每個子分區(qū)都可以被映射到在系統(tǒng)管理程序微內(nèi)核202控制之下的一組硬件資源,例如,存儲器、設(shè)備、處理器周期等。在各實(shí)施例中,系統(tǒng)管理程序微內(nèi)核202可以是獨(dú)立的軟件產(chǎn)品、操作系統(tǒng)的一部分、嵌入在主板的固件中、專用集成電路、或其組合。
系統(tǒng)管理程序微內(nèi)核202可以通過限制物理計(jì)算機(jī)系統(tǒng)中的客操作系統(tǒng)的存儲器視圖來實(shí)施分區(qū)劃分。當(dāng)系統(tǒng)管理程序微內(nèi)核202實(shí)例化一虛擬機(jī)時(shí),它可以將系統(tǒng)物理存儲器(SPM)的頁(例如,具有開始和結(jié)束地址的固定長度存儲器塊)分配給虛擬機(jī)作為客物理存儲器(GPM)。在此,客的受限的系統(tǒng)存儲器視圖受系統(tǒng)管理程序微內(nèi)核202控制。術(shù)語“客物理存儲器”是從虛擬機(jī)的視點(diǎn)描述存儲器頁的簡寫方式,且術(shù)語系統(tǒng)物理存儲器是從物理系統(tǒng)的觀點(diǎn)描述存儲器頁的簡寫方式。因此,被分配給虛擬機(jī)的存儲器頁會有客物理地址(虛擬機(jī)所使用的地址)和系統(tǒng)物理地址(頁的實(shí)際地址)。
客操作系統(tǒng)可以虛擬化客物理存儲器。虛擬存儲器是一種管理技術(shù),其允許操作系統(tǒng)過度提交存儲器,并且給予應(yīng)用程序?qū)B續(xù)工作存儲器的唯一訪問。在虛擬化環(huán)境中, 客操作系統(tǒng)可以使用一個或多個頁表來將已知為虛擬客地址的虛擬地址轉(zhuǎn)換成客物理地址。在該示例中,存儲器地址可以具有客虛擬地址、客物理地址以及系統(tǒng)物理地址。
在所描繪的示例中,父分區(qū)組件也可被認(rèn)為是類似于Xen的開源系統(tǒng)管理程序的域0,父分區(qū)組件可以包括主機(jī)204。主機(jī)204可以是操作系統(tǒng)(或一組配置實(shí)用程序),并且主機(jī)204可以被配置成通過使用虛擬服務(wù)提供者228 (VSP)向在子分區(qū)1_N中執(zhí)行的客操作系統(tǒng)提供資源。VPS 228(—般在開源社區(qū)中被稱為后端驅(qū)動程序)可用來通過虛擬化服務(wù)客戶機(jī)(VSC)(在開源社區(qū)或類虛擬化設(shè)備中一般稱為前端驅(qū)動程序)對到硬件資源的接口進(jìn)行多路復(fù)用。如圖所示,虛擬服務(wù)客戶機(jī)可以在客操作系統(tǒng)的上下文中執(zhí)行。然而,這些驅(qū)動程序不同于客機(jī)中的其余驅(qū)動程序,因?yàn)橄蛩鼈兲峁┝讼到y(tǒng)管理程序而非客機(jī)。在一示例性實(shí)施例中,虛擬服務(wù)提供者228與虛擬服務(wù)客戶機(jī)216和218通信所使用的路徑可以被視為虛擬路徑。
如圖所示,仿真器234(例如虛擬化IDE設(shè)備、虛擬化視頻適配器、虛擬化NIC等) 可被配置成在主機(jī)204中運(yùn)行并被附連到可供客操作系統(tǒng)220和222使用的資源。例如,當(dāng)客操作系統(tǒng)接觸被映射到設(shè)備的寄存器所處的存儲器位置、或者存儲器被映射的設(shè)備時(shí), 微內(nèi)核系統(tǒng)管理程序202可截取該請求并將客機(jī)試圖寫入的值傳遞給相關(guān)聯(lián)的仿真器。在此,該示例中的資源可被認(rèn)為是虛擬設(shè)備所處的位置。仿真器的以這種方式的使用可以被視為仿真路徑。仿真路徑與虛擬化路徑相比是低效的,因?yàn)榕c在VSP和VSC之間傳遞消息相比,它需要更多的CPU資源來仿真設(shè)備。例如,可以將經(jīng)由仿真路徑把值寫入盤所需的、 被映射至寄存器的存儲器上的幾百個動作減少為一個消息,該消息在虛擬路徑中從VSC被傳遞至VSP。
每一子分區(qū)可包括一個或多個虛擬處理器Q30和23 ,客操作系統(tǒng)Q20和222) 可管理并調(diào)度線程以便在這些虛擬處理器上執(zhí)行。一般而言,虛擬處理器是提供具有特定架構(gòu)的物理處理器的表示的可執(zhí)行指令以及相關(guān)聯(lián)的狀態(tài)信息。例如,一個虛擬機(jī)可具有帶有英特爾x86處理器特性的虛擬處理器,而另一虛擬處理器可具有PowerPC處理器的特性。本例中的虛擬處理器可被映射到計(jì)算機(jī)系統(tǒng)的處理器,使得實(shí)現(xiàn)虛擬處理器的指令將得到處理器的支持。由此,在包括多個處理器的實(shí)施例中,虛擬處理器可以由處理器同時(shí)執(zhí)行,同時(shí)例如其他處理器執(zhí)行系統(tǒng)管理程序指令。分區(qū)中虛擬處理器和存儲器的組合可被認(rèn)為是虛擬機(jī)。
客操作系統(tǒng)Q20和222)可以是任何操作系統(tǒng),如來自微軟 、蘋果 、開源社區(qū)等的操作系統(tǒng)。客操作系統(tǒng)可包括用戶/內(nèi)核運(yùn)行模式,并且可具有能包括調(diào)度器、存儲器管理器等的內(nèi)核。一般而言,內(nèi)核模式可包括處理器中的執(zhí)行模式,該執(zhí)行模式授予至少對特權(quán)處理器指令的訪問。每一客操作系統(tǒng)可具有相關(guān)聯(lián)的文件系統(tǒng),該文件系統(tǒng)上存儲有諸如終端服務(wù)器、電子商務(wù)服務(wù)器、電子郵件服務(wù)器等應(yīng)用以及客操作系統(tǒng)本身。客操作系統(tǒng)可調(diào)度線程來在虛擬處理器上執(zhí)行,并且可實(shí)現(xiàn)此類應(yīng)用程序的實(shí)例。
現(xiàn)在參考圖3,示出了上述圖2中的替換虛擬平臺。圖3描繪了與圖2的組件相類似的組件;然而,在該示例實(shí)施例中,系統(tǒng)管理程序302可包括微內(nèi)核組件以及和圖2的主機(jī)204中的組件(如虛擬服務(wù)提供者2 和設(shè)備驅(qū)動程序224)相類似的組件,而管理操作系統(tǒng)304可包含例如用于配置系統(tǒng)管理程序302的配置實(shí)用程序。在該體系結(jié)構(gòu)中,系統(tǒng)管理程序302可以執(zhí)行與圖2的系統(tǒng)管理程序微內(nèi)核202相同或相似的功能;然而,在該體系結(jié)構(gòu)中,系統(tǒng)管理程序304可被配置成向在子分區(qū)中執(zhí)行的客操作系統(tǒng)提供資源。圖3 的系統(tǒng)管理程序302可以是獨(dú)立的軟件產(chǎn)品、操作系統(tǒng)的一部分、嵌入在主板的固件內(nèi),或者系統(tǒng)管理程序302的一部分可以由專用集成電路來實(shí)現(xiàn)。
現(xiàn)在參考圖4,它示出虛擬桌面服務(wù)器400的高級框圖。在一實(shí)施例中,虛擬桌面服務(wù)器400可以被配置成部署到客戶機(jī)(例如,諸如智能電話的移動設(shè)備)、具有和圖1所示組件相似的組件的計(jì)算機(jī)系統(tǒng)等等的虛擬桌面會話(VDQ。簡言之,虛擬桌面技術(shù)使用戶能與虛擬機(jī)中運(yùn)行的客操作系統(tǒng)遠(yuǎn)程地交互。不同于遠(yuǎn)程桌面會話,在虛擬桌面會話中,僅僅一個用戶登錄到客操作系統(tǒng)中并且該用戶可以對其具有總控制,例如,該用戶可以作為管理員運(yùn)行并且在客機(jī)上具有完全的權(quán)限。在所示例子中,虛擬桌面服務(wù)器400可以具有與圖2和圖3的計(jì)算機(jī)系統(tǒng)200或300類似的組件。虛擬化平臺402是上面在圖2和圖3 中所述的虛擬化基礎(chǔ)結(jié)構(gòu)組件的邏輯抽象。在以下章節(jié)中被描述為在虛擬化平臺402 “以內(nèi)”的功能可以在圖2和圖3所述的一個或多個元件中實(shí)現(xiàn)。例如,將在下面的段落中更詳細(xì)描述的3D圖形服務(wù)管理器404可以在圖2的主機(jī)204中實(shí)現(xiàn)。在一個更具體的示例中, 3D圖形服務(wù)管理器404可以在父分區(qū)中運(yùn)行的主機(jī)操作系統(tǒng)中實(shí)現(xiàn)。
啟動虛擬桌面會話要求對虛擬機(jī)內(nèi)的客操作系統(tǒng)進(jìn)行實(shí)例化。在示例性實(shí)施例中,虛擬桌面管理器(例如處理器可執(zhí)行指令的模塊)可以響應(yīng)于請求而啟動虛擬機(jī) 414 (其可以引導(dǎo)客操作系統(tǒng)428)。虛擬桌面管理器可以在邏輯處理器上執(zhí)行,并且可以指示虛擬化平臺402(例如微內(nèi)核系統(tǒng)管理程序20 為分區(qū)分配存儲器。虛擬化平臺402可以執(zhí)行并且配置虛擬機(jī)414的存儲器內(nèi)的虛擬設(shè)備,并且將引導(dǎo)加載器程序加載到分配給 VM 414的存儲器中。引導(dǎo)加載器程序可以在虛擬處理器上執(zhí)行(其進(jìn)而可以在處理器上運(yùn)行),并且客操作系統(tǒng)4 可以加載在虛擬機(jī)414內(nèi)。會話管理器408可以由客操作系統(tǒng) 428來加載,并且其可以加載諸如運(yùn)行時(shí)子系統(tǒng)似6之類的環(huán)境子系統(tǒng),所述環(huán)境子系統(tǒng)可以包括諸如操作系統(tǒng)核410之類的內(nèi)核模式部分。在一實(shí)施例中,環(huán)境子系統(tǒng)可以被配置成將服務(wù)的子集展示給應(yīng)用程序并向內(nèi)核420提供訪問點(diǎn)。當(dāng)客操作系統(tǒng)4 被加載時(shí),引導(dǎo)加載器程序可以退出,并將對虛擬機(jī)414的控制轉(zhuǎn)交給客操作系統(tǒng)428??筒僮飨到y(tǒng)428 可以執(zhí)行圖4所示的各個模塊,并且將其自身配置為主控虛擬桌面會話。例如,客操作系統(tǒng) 428可以包括致使遠(yuǎn)程呈現(xiàn)引擎406、會話管理器408等等在引導(dǎo)之際啟動的注冊表值。
在客操作系統(tǒng)4 運(yùn)行以后的某個時(shí)刻,其可以從客戶機(jī)接收連接請求。該傳入的連接請求可以首先由遠(yuǎn)程呈現(xiàn)引擎406來處理,該遠(yuǎn)程呈現(xiàn)引擎406可以被配置為監(jiān)聽連接消息,并且當(dāng)接收到消息時(shí),其可以產(chǎn)生棧實(shí)例。遠(yuǎn)程呈現(xiàn)引擎406可以運(yùn)行會話的協(xié)議棧實(shí)例,并且由虛擬化平臺402渲染的3D圖形用戶界面(在以下段落中進(jìn)行更詳細(xì)的描述)可以被遠(yuǎn)程顯示子系統(tǒng)418接收到并且通過協(xié)議棧實(shí)例發(fā)送給客戶機(jī)。一般而言,協(xié)議棧實(shí)例可被配置成將用戶界面輸出路由到相關(guān)聯(lián)的客戶機(jī)、以及將從相關(guān)聯(lián)的客戶機(jī)接收到的用戶輸入路由到操作系統(tǒng)核心410。簡言之,操作系統(tǒng)核心410可以被配置成管理屏幕輸出收集來自鍵盤、鼠標(biāo)和其它設(shè)備的輸入。
用戶憑證(諸如用戶名/ 口令組合)可由遠(yuǎn)程呈現(xiàn)引擎406接收并被傳遞至?xí)捁芾砥?08。會話管理器408可以將憑證傳遞至登錄過程,登錄過程可以將憑證路由至認(rèn)證子系統(tǒng)424以進(jìn)行驗(yàn)證。認(rèn)證子系統(tǒng)似4可以確定用戶憑證是有效的并且可以啟動虛擬桌面會話,也就是說用戶可以登陸到客操作系統(tǒng)428。
認(rèn)證子系統(tǒng)似4還可以生成系統(tǒng)令牌,系統(tǒng)令牌可以在每當(dāng)用戶嘗試執(zhí)行一進(jìn)程以確定用戶是否具有運(yùn)行該進(jìn)程或線程的安全憑證時(shí)使用。例如,當(dāng)進(jìn)程或線程嘗試獲得訪問時(shí)(例如,打開、關(guān)閉、刪除和/或修改例如文件、設(shè)置或應(yīng)用程序這樣的對象),線程或進(jìn)程可由安全子系統(tǒng)422來認(rèn)證。安全子系統(tǒng)422可以對照與對象相關(guān)聯(lián)的訪問控制列表來檢查系統(tǒng)令牌,并且基于系統(tǒng)令牌中的信息與訪問控制列表的比較來確定線程是否具有許可。如果安全子系統(tǒng)422確定線程被授權(quán),則允許該線程訪問對象。
繼續(xù)對圖4的描述,在一實(shí)施例中,操作系統(tǒng)核心410可以包括圖形顯示界面 416 (OTI)和輸入子系統(tǒng)412。在一示例實(shí)施例中,輸入子系統(tǒng)412可以被配置成經(jīng)由虛擬桌面會話的協(xié)議棧實(shí)例從客戶機(jī)接收用戶輸入,并將該輸入發(fā)送至操作系統(tǒng)核410。用戶輸入在一些實(shí)施例中可包括指示絕對和/或相對鼠標(biāo)移動命令、鼠標(biāo)坐標(biāo)、鼠標(biāo)點(diǎn)擊、鍵盤信號、操縱桿移動信號等的信號。例如對圖標(biāo)的鼠標(biāo)雙擊之類的用戶輸入可被操作系統(tǒng)核410 接收,并且輸入子系統(tǒng)412可被配置成確定圖標(biāo)位于與該雙擊相關(guān)聯(lián)的坐標(biāo)處。輸入子系統(tǒng)412隨后可被配置成向可執(zhí)行與該圖標(biāo)相關(guān)聯(lián)的應(yīng)用的進(jìn)程的運(yùn)行時(shí)子系統(tǒng)似6發(fā)送通知。
二維繪制命令可從應(yīng)用程序和/或桌面被接收,并由⑶I 416處理。⑶I 416 —般可包括能生成圖形對象繪制命令的進(jìn)程。在本示例實(shí)施例中的GDI 416可以被配置為將命令傳送到遠(yuǎn)程顯示子系統(tǒng)418,所述遠(yuǎn)程顯示子系統(tǒng)418接收2D繪制命令并將它們發(fā)送給客戶機(jī)。
轉(zhuǎn)向圖5,它說明了從圖形處理器重置恢復(fù)的操作環(huán)境。在此例示的實(shí)施例中,虛擬桌面服務(wù)器400可以包括圖4所說明的元素,并且被配置為將指示三維圖形用戶界面的圖象流傳送給客戶機(jī),例如客戶機(jī)520、520B、和/或520C。簡言之,每個客戶機(jī)可與運(yùn)行配置成進(jìn)行虛擬桌面會話的客操作系統(tǒng)的虛擬機(jī)G14、414B、和414C)相關(guān)聯(lián)??蛻魴C(jī)520、 520B和/或520C可包括具有類似于圖1中所示的那些組件的組件的計(jì)算機(jī)系統(tǒng)、運(yùn)動設(shè)備、和/或瘦客戶機(jī)。例如,瘦客戶機(jī)可以具有商業(yè)硬件和單片式web瀏覽器,該web瀏覽器被配置為管理該硬件、用戶輸入和輸出并且連接到因特網(wǎng)。在此示例中,瘦客戶機(jī)還可包括例如顯示之類的用戶界面222以及諸如鼠標(biāo)之類的用戶輸入設(shè)備。
虛擬桌面服務(wù)器400還可被配置成在其被啟動時(shí)渲染3D圖形。例如,當(dāng)虛擬桌面服務(wù)器400運(yùn)行時(shí),諸如3D圖形服務(wù)管理器404之類的3D圖形服務(wù)管理器的實(shí)例可被啟動。3D圖形服務(wù)管理器404(其在以下段落中進(jìn)行更詳細(xì)的描述)可在處理器上執(zhí)行,并且等待傳入虛擬桌面會話連接。
當(dāng)接收到虛擬桌面會話連接,可通知3D圖形服務(wù)管理器404,并啟動圖形渲染模塊(在以下段落中進(jìn)行更詳細(xì)的描述)的實(shí)例以及向3D-GPU服務(wù)提供者512發(fā)送將3D組件加載到客操作系統(tǒng)428中的信號。簡而言之,3D圖形服務(wù)管理器404可以為每個虛擬機(jī)加載圖形渲染模塊的實(shí)例并可以將它將使用的3D圖形處理單元的設(shè)備標(biāo)識符發(fā)送給圖形渲染模塊。圖形渲染模塊可在隨后綁定到3D GPU,并代表其相關(guān)聯(lián)的虛擬機(jī)向它進(jìn)行渲染。 在所例示的示例中,圖形渲染模塊506對應(yīng)于虛擬機(jī)414。
可以從虛擬機(jī)向渲染模塊反饋用于虛擬機(jī)的圖形用戶界面,這被虛擬化平臺402 作為生成圖形用戶界面的3D處理。由于大多數(shù)3D圖像處理單元被設(shè)計(jì)成每次對幾個進(jìn)程生成幾個圖形用戶界面,因此本領(lǐng)域技術(shù)人員可理解,在其中大量圖形渲染模塊正運(yùn)行的情形中,GPU可變得更容易過載并重置。
繼續(xù)初始化過程,3D-GPU服務(wù)提供者512可導(dǎo)致3D圖形服務(wù)客戶機(jī)514在客操作系統(tǒng)428中分散。例如,在虛擬機(jī)414中的虛擬主板的存儲器地址可以對映射到IO設(shè)備的某些地址設(shè)置的截取當(dāng)客操作系統(tǒng)4 啟動時(shí),即插即用模塊可執(zhí)行并且可查詢映射至 IO的存儲器地址。例如圖2的管理程序202之類的管理程序可截取讀取并用導(dǎo)致即插即用模塊加載3D圖形服務(wù)客戶機(jī)514的設(shè)備標(biāo)識符進(jìn)行響應(yīng)。3D圖形服務(wù)客戶機(jī)514可通過將存儲器的一個或多個頁映射為共享的并將映射傳遞給3D-GPU服務(wù)提供者512來建立至3D-GPU服務(wù)提供者512的通信信道。在存儲器的頁內(nèi),可建立通信信道516。實(shí)質(zhì)上,通信信道516可以包括可以被映射到虛擬機(jī)414和虛擬化平臺402的環(huán)形緩沖區(qū)等。在這個示例中,消息可以被寫入環(huán)形緩沖區(qū)并且由3D GPU服務(wù)提供者/客戶機(jī)從環(huán)形緩沖區(qū)中讀出。在一示例性實(shí)施例中,通信信道可以使用在共同轉(zhuǎn)讓的題為“Partition Bus(分區(qū)總線)”的第7,689,800號美國專利中描述的技術(shù)來實(shí)現(xiàn),該專利的內(nèi)容通過引用被完全結(jié)合于此。
3D圖形服務(wù)客戶機(jī)514還可導(dǎo)致虛擬設(shè)備驅(qū)動程序518分散。虛擬設(shè)備驅(qū)動程序518可以在虛擬機(jī)414和虛擬化平臺402之間建立圖形緩沖,例如共享庫、管道或圖形孔徑(graphics aperture) 5沈。在示例性實(shí)施例中,虛擬機(jī)驅(qū)動程序518可分配一組客存儲器頁,并向3D圖形服務(wù)客戶機(jī)514發(fā)送包括連接請求和存儲器頁的地址的信號。圖形渲染模塊506可接收連接請求和存儲器頁的地址。圖形渲染模塊506可向管理程序發(fā)送指令該管理程序在該組存儲器頁中創(chuàng)建圖形孔徑5 的信號。管理程序可將這些頁映射至系統(tǒng)物理地址,并執(zhí)行存儲器的范圍內(nèi)的圖形孔徑526。在此示例中,虛擬設(shè)備驅(qū)動程序518可被配置成將DMA緩沖寫入客存儲器地址范圍。當(dāng)數(shù)據(jù)被寫入客存儲器地址范圍時(shí),圖形孔徑 526將DMA緩沖路由至附加的圖形渲染模塊。
在示例性實(shí)施例中,虛擬設(shè)備驅(qū)動程序518對于客操作系統(tǒng)4 可表現(xiàn)為有3D能力的圖像處理單元的設(shè)備驅(qū)動程序,由此導(dǎo)致客操作系統(tǒng)4 將其自己配置成支持3D圖形,例如,通過加載應(yīng)用程序接口 5 (API)的實(shí)例。虛擬設(shè)備驅(qū)動程序518被配置成與API 5 接口,API 5 使得3D應(yīng)用程序5 能產(chǎn)生3D圖形。3D應(yīng)用程序528——例如操作系統(tǒng)圖形用戶界面、應(yīng)用程序/視頻游戲的用戶界面等等——可向API 524發(fā)出指令,該API 5 可以是諸如Microsoft 的DirectX之類的API。簡言之,3D圖形API 5 提供例如視頻游戲之類的圖形應(yīng)用程序與驅(qū)動程序(在此情形中的虛擬設(shè)備驅(qū)動程序518)之間的抽象層。一方面,API 5 提供與由虛擬設(shè)備驅(qū)動程序518展示的圖形處理單元接口的低層接口,另一方面其提供可以由應(yīng)用程序調(diào)用的3D圖形命令庫。API 5 可以將3D圖形命令庫映射到由虛擬設(shè)備驅(qū)動程序518展示的接口,由此使游戲開發(fā)者不必理解每個圖形驅(qū)動程序的特性。
API 5 可以生成例如基本幾何形狀之類的圖元,該圖元在計(jì)算機(jī)圖形中用作被表示成頂點(diǎn)和常數(shù)的其他形狀的構(gòu)建塊,并且API 524將這些圖元存儲在多個直接存儲器存取(DMA)緩沖中。虛擬設(shè)備驅(qū)動程序518可以通過圖形孔徑5 將圖元發(fā)送給圖形渲染模塊506,并且圖形渲染模塊506可以將緩沖存儲在存儲器中。當(dāng)API 5 發(fā)出繪制命令時(shí),虛擬設(shè)備驅(qū)動程序518可將命令和附加數(shù)據(jù)放置在DMA緩沖器中;將它們打包到一個或多個GPU令牌中;以及經(jīng)由圖形孔徑5 將GPU令牌發(fā)送給圖形渲染模塊506。
圖形渲染模塊506可以接收令牌;從DMA緩沖器中提取所述命令并將所述命令發(fā)出給圖形內(nèi)核508。在示例實(shí)施例中,圖形渲染模塊506可以將DMA緩沖器中的命令和圖元翻譯成可以由3D圖形驅(qū)動程序510處理的API構(gòu)造。
可被配置成調(diào)度虛擬桌面服務(wù)器400內(nèi)的圖形處理單元上的執(zhí)行的圖形內(nèi)核508 可接收指令和DMA緩沖器的地址,并確定何時(shí)向3D圖形驅(qū)動程序510發(fā)出命令。當(dāng)來自各個DMA緩沖器的圖元將被渲染時(shí),圖形內(nèi)核508可向3D圖形驅(qū)動程序510發(fā)送繪制命令, 該3D圖形驅(qū)動程序510可在處理器上執(zhí)行并且可指示圖像處理單元504執(zhí)行命令以及處理DMA緩沖器中的數(shù)據(jù)。
圖形處理單元504可以執(zhí)行和生成表示存儲器中的圖像幀的位圖,例如像素值陣列。圖形渲染模塊506可捕捉位圖并將該位圖傳遞給壓縮模塊,以及隨后經(jīng)由圖形孔徑526 傳遞給遠(yuǎn)程呈現(xiàn)引擎406。遠(yuǎn)程呈現(xiàn)引擎406可經(jīng)由一個或多個信息分組將位圖發(fā)送給客戶機(jī)520。
在示例實(shí)施例中,3D圖形服務(wù)管理器404可以配置虛擬桌面服務(wù)器400以在當(dāng)圖形處理單元(504、504B和/或504C)重置(雖然示出了三個3D圖形處理單元,但在一個示例實(shí)施例中,虛擬桌面服務(wù)器400可以包括更少或更多數(shù)目的3D GPU)時(shí)恢復(fù)。簡而言之, 3D圖形服務(wù)管理器404可以被配置為選擇一個3D GPU來為虛擬機(jī)渲染圖形,并且使得關(guān)聯(lián)圖形渲染模塊與圖形處理單元綁定,例如相連接。而且,在示例實(shí)施例中,3D圖形服務(wù)管理器404可以被配置為監(jiān)視虛擬機(jī)和圖形處理單元的性能,并且在圖形處理單元重置的事件中恢復(fù)。
在一些實(shí)例中,由一個或多個圖形渲染模塊發(fā)送的數(shù)據(jù)流可導(dǎo)致圖像處理單元被重置。這導(dǎo)致3D圖形驅(qū)動程序510重置,其進(jìn)而導(dǎo)致圖形內(nèi)核508重置至此GPU的連接, 這導(dǎo)致終止綁定到GPU的任何圖形程序模塊。在這點(diǎn)處,3D圖形服務(wù)管理器404可以被配置為從出于意料地的終止中恢復(fù)以最小化對虛擬桌面會話的影響。
在示范實(shí)施例中,3D圖形服務(wù)管理器404可以從虛擬化平臺402接收指示圖形渲染模塊出于意料地地退出,即圖形渲染模塊506被終止的信號。在該示例中,3D圖形服務(wù)管理器404可以被配置為確定虛擬機(jī)圖形渲染模塊506與什么相關(guān)聯(lián),例如虛擬機(jī)414 ;確定是否要重啟圖形渲染模塊506 ;以及執(zhí)行恢復(fù)操作。
在示范實(shí)施例中,3D圖形服務(wù)管理器404可以包括一個表,該表包括在系統(tǒng)中的每個圖形渲染模塊的標(biāo)識符以及標(biāo)識每個圖形渲染模塊與哪個虛擬機(jī)相關(guān)聯(lián)的信息。該信息可以在每個虛擬機(jī)啟動時(shí)提供。例如,當(dāng)虛擬機(jī),例如虛擬機(jī)414啟動時(shí),3D圖形服務(wù)管理器404可以產(chǎn)生圖形渲染模塊,例如圖形渲染模塊506的實(shí)例,并將把圖形渲染模塊506 鏈接到虛擬機(jī)414的信息存儲在表中。在特定示例中,如果圖形渲染模塊506被重置,3D圖形服務(wù)管理器404可以檢查表并確定3D圖形服務(wù)管理器404被配置為為虛擬機(jī)414渲染圖形。
在示范實(shí)施例中,3D圖形服務(wù)管理器404可以被配置為基于其在表中的信息來確定是否要重啟該圖形渲染模塊。例如,3D圖形服務(wù)管理器404可以被配置為檢查與虛擬機(jī)相關(guān)聯(lián)的吞吐量以試圖確定該吞吐量是否指示服務(wù)拒絕攻擊。服務(wù)拒絕攻擊是通過用命令溢出3D圖形處理單元使得該3D圖形處理單元不可用于任何其他與其綁定的虛擬機(jī)的攻擊。3D圖形服務(wù)管理器404可以比較年夏季的吞吐量模式,并將其與正常吞吐量的模式進(jìn)行比較。在吞吐量模式與服務(wù)拒絕攻擊相關(guān)聯(lián)的模式不匹配的實(shí)例中,3D圖形服務(wù)管理器 404可以被配置為為虛擬機(jī)重啟圖形渲染模塊。
在同樣或另一示例實(shí)施例中,3D圖形服務(wù)管理器404可以被配置為在為虛擬機(jī)重啟圖形渲染模塊之前確定所述圖形處理單元是否過載。在圖形處理單元過載,即服務(wù)了太多的虛擬機(jī)的實(shí)例中,3D圖形服務(wù)管理器404可以被配置為結(jié)束虛擬桌面會話、重啟GPU上的圖形渲染模塊,或重啟圖形渲染模塊并將其綁定到不同的圖形處理單元。
在示例實(shí)施例中,3D圖形服務(wù)管理器404可以檢查由GPU控制的圖形存儲器的估計(jì)數(shù)量以確定該GPU是否過載。例如,每個3D圖形處理單元可以被整合到圖形適配器中, 并被附加給它可以控制的圖形存儲器的緩沖。簡而言之,圖形存儲器可被用于存儲屏幕圖像的位圖和Z緩沖(其管理3D圖形中的深度坐標(biāo))、紋理、頂點(diǎn)緩沖、以及編譯著色器程序。 在示例性實(shí)施例中,圖形RAM可以是高速或多端口存儲器,諸如視頻RAM、動態(tài)隨機(jī)存取存儲器、或基于諸如DDR2和圖形DDR(GDDR3、GDDR4和/或GDDR5)之類的雙數(shù)據(jù)率(DDR)技術(shù)的隨機(jī)存取存儲器。
在示范實(shí)施例中,3D圖形服務(wù)管理器404可以被配置為對每個虛擬機(jī)將試圖使用的圖形存儲器的數(shù)量或至少自適應(yīng)地渲染圖象所需的存儲器的數(shù)量進(jìn)行估計(jì),并從圖形處理單元可用的圖形存儲器中減去所估計(jì)的量,并將可用的圖形存儲器所估計(jì)的數(shù)量存儲在表中。在特定示例中,假設(shè)圖形處理單元被附加到4千兆字節(jié)的緩沖,3D圖形服務(wù)管理器 404估計(jì)虛擬機(jī)將很容易地使用存儲器的1千兆字節(jié),并且沒有其他的虛擬機(jī)被綁定到圖形處理單元。例中,3D圖形服務(wù)管理器404可以從總可用數(shù)量0千兆字節(jié))中減去所估計(jì)的數(shù)量(1千兆字節(jié)),并將所估計(jì)的可用圖形存儲器(3千兆字節(jié))存儲在表中。
在示范的實(shí)施例中,3D圖形服務(wù)管理器404基于信息對虛擬機(jī)將要需求的圖形存儲器的數(shù)量進(jìn)行估計(jì),所述信息包括但不局限于像素尺寸、色彩深度、用于虛擬機(jī)顯示的數(shù)目、吞吐量、壓縮比、將為虛擬機(jī)渲染的表面的估計(jì)數(shù)量、存儲生成頂點(diǎn)所需的圖元所需要的存儲器的數(shù)量、存儲應(yīng)用于頂點(diǎn)的紋理所需的存儲器、應(yīng)用選擇的抗鋸齒效果到對象所需的存儲器等。在示范實(shí)施例中,估計(jì)可以是靜態(tài)或自適應(yīng)的。例如,可以存儲運(yùn)行時(shí)年夏季使用的圖形存儲器的數(shù)量并將其用于預(yù)測虛擬機(jī)將在后續(xù)虛擬桌面會話期間使用的數(shù)量。
在另一個示范實(shí)施例中,描述圖形處理單元響應(yīng)命令所花費(fèi)的平均時(shí)間長度的信息,即等待時(shí)間,可以用于確定圖形處理單元是否承受重壓。例如,在一個實(shí)施例中,3D圖形服務(wù)管理器404可以在表中存儲平均等待時(shí)間,并且在終止時(shí),3D圖形服務(wù)管理器404可以將命令的平均等待時(shí)間與閾值進(jìn)行比較,并且如果平均等待時(shí)間少于閾值,那么,3D圖形服務(wù)管理器404可以重啟圖形渲染模塊,否則,3D圖形服務(wù)管理器404可以關(guān)閉虛擬機(jī)并試圖使用類似于在美國專利申請?zhí)杧x/xxx,XXX(代理人案號為MVIR-0669/330193.01)名為 "Techniques for Load Balancing GPU Enabled Virtual Machines”(用于啟用負(fù)載平衡 GPU的虛擬機(jī)的技術(shù))的申請中所描述的技術(shù)來重啟不同GPU上的圖形渲染模塊。
閾值可以由管理員等設(shè)置并可以依賴于使用的圖形處理單元。在示范實(shí)施例中, 可以做加載不同類型的GPU和增加虛擬機(jī)的數(shù)目的實(shí)驗(yàn)。當(dāng)增加了更多的虛擬機(jī)時(shí),等待時(shí)間可以被記錄并且可以通過比較在一時(shí)間周期上的重置數(shù)目和在相同時(shí)間周期上當(dāng)?shù)却龝r(shí)間較低時(shí)的重置數(shù)目來計(jì)算重置的概率。所監(jiān)視的與高重置概率相關(guān)聯(lián)的等待時(shí)間被用于設(shè)置閾值。在示例實(shí)施例中,所監(jiān)視的等待時(shí)間可以設(shè)置為閾值。在其他的示范實(shí)施例中,所監(jiān)視的等待時(shí)間可以被乘以標(biāo)量值,并且可以使用縮放的(scaled)等待時(shí)間。例如,所監(jiān)視的等待時(shí)間的80 %可以被設(shè)置為閾值。
在示例實(shí)施例中,可以從圖形內(nèi)核508發(fā)出命令給GPU的時(shí)間開始直到接收到確認(rèn)(“ACK”)為止來測量等待時(shí)間。在接收到每個ACK之后,圖形內(nèi)核508可以將與請求相關(guān)聯(lián)的等待時(shí)間發(fā)送給3D圖形服務(wù)管理器404。3D圖形服務(wù)管理器404可以更新表中的值以反映該GPU的平均等待時(shí)間。
在另一示例實(shí)施例中,可以從虛擬設(shè)備驅(qū)動程序518開始直接存儲器存取事務(wù)的時(shí)間開始直到接收到ACK為止來測量等待時(shí)間。例如,API 5 可以發(fā)出例如繪制命令的命令,而虛擬設(shè)備驅(qū)動程序518可以在接收到該命令時(shí)啟動計(jì)時(shí)器。虛擬設(shè)備驅(qū)動程序518 可以將該命令發(fā)送給圖形渲染模塊506,圖形渲染模塊506接著將該命令發(fā)送給圖形內(nèi)核 508。圖形內(nèi)核508可以將該命令發(fā)送給3D圖形驅(qū)動程序510,它可以使得3D圖形處理單元504執(zhí)行操作,例如處理存儲在頂點(diǎn)緩沖中的圖元并渲染位圖的渲染操作。3D GPU 504 可以在它接收到該命令時(shí)生成ACK,并且ACK可以被發(fā)送回虛擬設(shè)備驅(qū)動程序518。當(dāng)虛擬設(shè)備驅(qū)動程序518接收ACK時(shí),它可以停止計(jì)時(shí)器。虛擬設(shè)備驅(qū)動程序518隨后可以通過消息-遞送通信信道516將等待時(shí)間發(fā)送給3D圖形服務(wù)管理器404。3D圖形服務(wù)管理器 404可以更新表中的值以反映虛擬機(jī)的平均等待時(shí)間。
在示范實(shí)施例中,3D圖形服務(wù)管理器404可以被配置為在檢測到終止之后重啟圖形渲染模塊。在該示例中,3D圖形服務(wù)管理器404可以重啟圖形渲染模塊,例如圖形渲染模塊506的實(shí)例,并使用消息-遞送通信信道516將信號發(fā)送給虛擬設(shè)備驅(qū)動程序518。虛擬設(shè)備驅(qū)動程序518可以被配置為通過為圖形孔徑5 分配新的客存儲器范圍并將存儲器范圍連同連接請求一起發(fā)送給重啟的圖形渲染模塊,例如圖形渲染模塊506的新的實(shí)例來生成圖形孔徑526的新的實(shí)例。圖形渲染模塊506可以接受連接請求并將地址范圍傳遞給系統(tǒng)管理程序。系統(tǒng)管理程序可以將所分配的存儲器地址的范圍重新映射到虛擬化平臺402 并在其中加載圖形孔徑526的新的實(shí)例。
一旦接收了指示圖形渲染模塊506終止的信號后,虛擬設(shè)備驅(qū)動程序518可以停止將DMA緩沖中的內(nèi)容,例如命令和圖元、著色器變量等,發(fā)送給圖形孔徑526。在重啟圖形渲染模塊506之后,虛擬設(shè)備驅(qū)動程序518可以將先前發(fā)送的值稍一部分?jǐn)?shù)據(jù)重新發(fā)送給圖形重新模塊506。在示范實(shí)施例中,虛擬設(shè)備驅(qū)動程序518可以存儲所有的3D圖形數(shù)據(jù)直到將圖象發(fā)送給客戶機(jī)。例如,虛擬設(shè)備驅(qū)動程序518可以重新發(fā)送隊(duì)列的DMA緩沖中所有的圖元。在最壞的情況下,可能會丟失數(shù)秒有價(jià)值的幀,例如60幀。在這種情況,用戶可能僅僅看到1秒的暫停屏幕。
以下是描繪操作流程的一系列流程圖。為便于理解,流程圖被組織成使得初始流程圖通過總體“大圖”視點(diǎn)來演示各實(shí)現(xiàn),并且后續(xù)的流程圖提供以虛線示出的進(jìn)一步的附加物和/或細(xì)節(jié)。此外,本領(lǐng)域的技術(shù)人員可以理解,虛線所描繪的操作流程被認(rèn)為是任選的。
圖6說明了用于從3D圖形處理單元重置中恢復(fù)的操作流程,包括操作600、602、 604,608以及610。操作600開始操作流程,并且操作602示出在虛擬化平臺(402)和虛擬機(jī)之間建立通信信道(516)。例如,并轉(zhuǎn)回到圖5,在示范實(shí)施例中,虛擬化平臺的組件,例如圖3的系統(tǒng)管理程序302,可以包括3D GPU服務(wù)提供者512,例如可執(zhí)行指令的模塊,一旦由處理器執(zhí)行指令,能夠使得設(shè)備標(biāo)識符出現(xiàn)在映射到虛擬機(jī)414中的IO設(shè)備的存儲器中。即插即用模塊可以檢測設(shè)備標(biāo)識符并在存儲器中加載3D GPU服務(wù)客戶機(jī)。3D GPU服務(wù)客戶機(jī)514可以在虛擬處理器上執(zhí)行并將客存儲器的一組頁面分配作為通信信道516使用。3D GPU服務(wù)客戶機(jī)514可以配置客存儲器中的通信信道516,并將其用于把信號發(fā)送給3D GPU服務(wù)提供者512,3D GPU服務(wù)提供者512可以接收該信號。消息可以現(xiàn)在在虛擬化平臺402和虛擬機(jī)414之間的通信信道516傳遞。
繼續(xù)對圖6的描述,操作604示出了檢測配置為在3D圖形處理單元(504)上為虛擬機(jī)(414)渲染圖形的渲染進(jìn)程(506)的終止。例如,并轉(zhuǎn)回到圖5。在示范實(shí)施例中,3D 圖形服務(wù)管理器404可以接收指示圖形渲染模塊506出于意料地退出的信號。例如,虛擬化平臺402可以被配置為啟動并監(jiān)視程序的執(zhí)行。在程序例如圖形渲染模塊506退出的實(shí)例中,虛擬化平臺402可以生成一個由3D圖形服務(wù)管理器404可檢測到的事件。
參照圖6的操作606,它示出了重啟所述渲染進(jìn)程。例如,3D圖形服務(wù)管理器404 可以將信號發(fā)送給虛擬化平臺402,指示其分配資源以為了虛擬機(jī)414啟動圖形渲染模塊, 即圖形渲染模塊506的實(shí)例。在該示例中,可以將圖形渲染模塊506加載到存儲器,并且, 3D圖形服務(wù)管理器404可以向其傳遞配置信息,例如圖形處理單元使用的身份以及虛擬機(jī) 414的配置文件。圖形渲染模塊506可以綁定到所標(biāo)識的圖形處理單元并等待來自虛擬機(jī) 414的連接請求。
回到圖6的操作608,它示出了通過通信信道(516)將指示渲染進(jìn)程正在被重啟的信號發(fā)送給在虛擬機(jī)中執(zhí)行的虛擬設(shè)備驅(qū)動程序(518)。參照圖5,3D圖形服務(wù)管理器404 可以在處理器上執(zhí)行,并使得指示出現(xiàn)重置的消息被發(fā)送給虛擬機(jī)414。例如,3D圖形服務(wù)管理器404可以將信號發(fā)送給3D GPU服務(wù)提供者512,并且,3D GPU服務(wù)提供者512可以將指示出現(xiàn)重置的消息寫入通信信道516。3D GPU服務(wù)客戶機(jī)514可以通過通信信道516接收該消息,并將該消息路由給,例如遠(yuǎn)程呈現(xiàn)引擎406,它可以將該消息發(fā)送給虛擬設(shè)備驅(qū)動程序518。在該特定實(shí)施例中,遠(yuǎn)程呈現(xiàn)引擎406可以具有到3D GPU服務(wù)客戶機(jī)514 和虛擬設(shè)備驅(qū)動程序518兩者的通信信道,并且因此,它可以趁機(jī)被用于路由兩個組件之間的消息。在另一個示范實(shí)施例中,3D GPU服務(wù)客戶機(jī)514可以將信號直接發(fā)送給虛擬設(shè)備驅(qū)動程序518。
再次參照圖6,操作610示出在虛擬機(jī)(414)中執(zhí)行的虛擬設(shè)備驅(qū)動程序(518)和重啟的渲染進(jìn)程之間建立圖形緩沖。例如,回到圖5,虛擬設(shè)備驅(qū)動程序518可以接收指示重啟圖形渲染模塊506的信號,并且可以將其已經(jīng)使用的傳送3D數(shù)據(jù),例如頂點(diǎn)、紋理等給虛擬化平臺402的圖形緩沖卸載,并創(chuàng)建新的圖形緩沖。例如,圖形緩沖可以實(shí)現(xiàn)為圖形孔徑526。在該示例中,虛擬設(shè)備驅(qū)動程序518可以分配客存儲器地址的范圍并將該范圍傳遞給3D GPU服務(wù)客戶機(jī)514,3D GPU服務(wù)客戶機(jī)514可以在消息中將該范圍發(fā)送給3DGPU 服務(wù)提供者512。圖形渲染模塊506可以接收存儲器地址的范圍并將信號發(fā)送給系統(tǒng)管理程序。系統(tǒng)管理程序可以接收該信號并將客存儲器地址的范圍重新映射到系統(tǒng)存儲器,即分配給虛擬化平臺402的存儲器,并在圖形緩沖中啟動將3D數(shù)據(jù)的DMA緩沖從虛擬設(shè)備驅(qū)動程序518傳遞給圖形渲染模塊506的處理。圖形渲染模塊506可以開始接收3D數(shù)據(jù)和命令,并將它們發(fā)送給圖形內(nèi)核508。圖形內(nèi)核508可以調(diào)度它們在3D圖形處理單元,例如 3D GPU 504上的執(zhí)行,并且3D GPU 504可以渲染圖象。
現(xiàn)在回到圖7,其示出圖6的操作流程,包括附加操作/細(xì)化712-722。操作712 示出通過圖形緩沖重新發(fā)送圖形數(shù)據(jù)以渲染完整的幀。例如,參照圖6,在建立圖形緩沖,例如圖形孔徑5 之后,可以配置虛擬設(shè)備驅(qū)動程序518以重新發(fā)送圖形數(shù)據(jù)的至少一個完整幀。例如,虛擬設(shè)備驅(qū)動程序518可以保持對哪些圖形數(shù)據(jù)已經(jīng)被發(fā)送給圖形渲染模塊 506的跟蹤,并且保持頂點(diǎn)數(shù)據(jù)的副本,直到所渲染的數(shù)據(jù)被成功地發(fā)送給客戶機(jī)520。在本示例中,虛擬設(shè)備驅(qū)動程序518可以確定渲染的最后的幀的身份,并將生成下一完整幀所需的圖形數(shù)據(jù)重新發(fā)送。例如,由于一些3D圖形數(shù)據(jù)被用于多個幀,可以用于下一幀的某些數(shù)據(jù)可能已經(jīng)被發(fā)送給了圖形渲染模塊506。在本示例中,用于創(chuàng)建下一幀的所有數(shù)據(jù)可以通過圖形緩沖被發(fā)送,以確保圖形渲染模塊506可以渲染下一幀。
參照操作714,它示出響應(yīng)于確定在渲染進(jìn)程終止之前虛擬機(jī)沒有執(zhí)行服務(wù)拒絕攻擊而重啟渲染進(jìn)程。例如,在示范實(shí)施例中,3D圖形服務(wù)管理器404可以被配置為通過將通過圖形孔徑526的吞吐量和表示典型的服務(wù)拒絕攻擊的吞吐量模式進(jìn)行比較來確定圖形渲染模塊506是否由于服務(wù)拒絕攻擊而被終止。在模式不匹配的實(shí)例中,3D圖形服務(wù)管理器404可以被配置為重啟圖形渲染模塊506。否則,3D圖形服務(wù)管理器404可以采取多個行動中的一步或多步,例如重啟3D圖形服務(wù)管理器404、斷開客戶機(jī)520、將信號發(fā)送給配置為通知可疑活動的管理員的處理等。
繼續(xù)對圖7的描述,操作716示出了響應(yīng)于確定在渲染進(jìn)程終止之前由虛擬設(shè)備驅(qū)動程序啟動的直接存儲器存取事務(wù)的平均等待時(shí)間少于閾值而重啟所述渲染進(jìn)程。例如,在示范實(shí)施例中,3D圖形服務(wù)管理器404可以被配置為在重啟圖形渲染模塊506之前確定3D GPU是否過載。在該特定示例實(shí)施例中,在重啟圖形渲染模塊506之前,3D圖形服務(wù)管理器404可以被配置為通過將由虛擬機(jī)發(fā)起的直接存儲器存取事務(wù)的平均等待時(shí)間與閾值進(jìn)行比較來確定是否渲染給GPU 504的任意虛擬機(jī)負(fù)責(zé)使得3D圖形處理單元504重置。由虛擬機(jī)414發(fā)起的DMA事務(wù)的等待時(shí)間可以從虛擬設(shè)備驅(qū)動程序518接收包括3DGPU 504的命令的DMA緩沖的時(shí)間點(diǎn)開始到由虛擬設(shè)備驅(qū)動程序518接收到命令的ACK信號的時(shí)間點(diǎn)為止來進(jìn)行測量。
在平均等待時(shí)間大于閾值的實(shí)例中,3D圖形服務(wù)管理器404可以采取多個行動之一。例如,3D圖形服務(wù)管理器404可以重啟圖形渲染模塊506并將描述虛擬機(jī)414恢復(fù)了的信號發(fā)送給客戶機(jī)520的用戶或管理員。在本實(shí)例中,可以在客戶機(jī)520的用戶界面522 上顯示警告消息。在另一示例中,3D圖形服務(wù)管理器404可以斷開虛擬機(jī)414并使得指示客戶機(jī)由于其引起3D圖形處理單元重啟而被斷開的消息顯示在客戶機(jī)520上。在又另一個實(shí)施例中,3D圖形服務(wù)管理器404可以斷開虛擬機(jī)414并發(fā)送信號給管理員。在又另一個實(shí)施例中,3D圖形服務(wù)管理器404可以嘗試將至少一個虛擬機(jī)移動到另一圖形處理單元。
轉(zhuǎn)向操作718,它示出響應(yīng)于確定在渲染進(jìn)程終止之前3D圖形處理單元響應(yīng)命令所花費(fèi)的時(shí)間量少于閾值而重啟渲染進(jìn)程。例如,在示范實(shí)施例中,3D圖形服務(wù)管理器404 可以被配置為在重啟圖形渲染模塊506之前通過比較與3D GPU ACK相關(guān)聯(lián)的平均等待時(shí)間來確定所述3D GPU 504是否過載。例如,圖形內(nèi)核508可以被配置為在每次它將硬件命令發(fā)送給3D圖形處理單元504時(shí)啟動計(jì)時(shí)器,并在接收到ACK時(shí)停止計(jì)時(shí)器。隨后,可以將所計(jì)算的時(shí)間發(fā)送給3D圖形服務(wù)管理器404,它能計(jì)算3D圖形處理單元在響應(yīng)上所花費(fèi)的平均時(shí)間。在圖形渲染模塊506終止之后,3D圖形服務(wù)管理器404可以將剛好在終止之前的硬件命令的平均等待時(shí)間與閾值進(jìn)行比較來確定硬件是否被過量使用。
在平均等待時(shí)間大于閾值的實(shí)例中,3D圖形服務(wù)管理器404可以采取多個行動之一。例如,3D圖形服務(wù)管理器404可以重啟圖形渲染模塊506并將描述虛擬機(jī)414恢復(fù)了的信號發(fā)送給客戶機(jī)520的用戶或管理員。在本實(shí)例中,可以在客戶機(jī)520的用戶界面522 上顯示警告消息。在另一示例中,3D圖形服務(wù)管理器404可以斷開虛擬機(jī)414并使得指示由于3D圖形處理單元必須重啟而斷開客戶機(jī)的消息顯示在客戶機(jī)520上。在又另一個實(shí)施例中,3D圖形服務(wù)管理器404可以斷開虛擬機(jī)414并發(fā)送信號給管理員。在又另一個實(shí)施例中,3D圖形服務(wù)管理器404可以嘗試將至少一個虛擬機(jī)移動到另一圖形處理單元。
參照操作720,它示出響應(yīng)于確定在渲染進(jìn)程終止之前由3D圖形處理單元所控制的可用圖形存儲器的估計(jì)的數(shù)量大于閾值而重啟渲染進(jìn)程。例如,在示范實(shí)施例中,3D圖形服務(wù)管理器404可以被配置為通過將圖形處理單元可用的圖形存儲器的估計(jì)的數(shù)量與閾值數(shù)量進(jìn)行比較來在重啟圖形渲染模塊506之前確定3D GPU 504是否過載。3D圖形服務(wù)管理器404可以被配置為估計(jì)虛擬機(jī)例如虛擬機(jī)414在其重啟時(shí)將試圖使用多少圖形存儲器,并將所述值存儲在表中。3D圖形服務(wù)管理器404隨后可以指示圖形渲染模塊,例如圖形渲染模塊506,綁定到3D GPU 504,并從反映可用圖形存儲器的數(shù)量估值的數(shù)值中減去用于虛擬機(jī)414的圖形存儲器的估計(jì)數(shù)量。在重啟圖形渲染模塊506之前,3D圖形服務(wù)管理器404可以被配置為將可用的圖形存儲器的估計(jì)數(shù)量與閾值進(jìn)行比較,并且如果估計(jì)的值大于閾值,則3D圖形服務(wù)管理器404可以重啟圖形渲染模塊506。在示范實(shí)施例中,閾值可以被設(shè)置為零。就是說,只要在3D GPTO04上的估計(jì)的負(fù)載不大于由3D GPU 504所控制的圖形存儲器的總量,則3D圖形服務(wù)管理器404就能重啟圖形渲染模塊506。在另一示范實(shí)施例中,閾值可以被死定為總的圖形存儲器的一個百分比,例如75%。在該示例中,只要估計(jì)的負(fù)載不大于由3D GPU 504所控制的圖形存儲器的總量的75%,則3D圖形服務(wù)管理器404就能重啟圖形渲染模塊506。
參照操作722,它示出重啟所述渲染進(jìn)程并指定所述渲染進(jìn)程在第二 3D圖形處理單元上渲染。例如,參照圖5,在該實(shí)施例中,3D圖形服務(wù)管理器404可以被配置為將與圖形渲染進(jìn)程506將渲染的GPU所不同的GPU的標(biāo)識符以使得重啟的圖形渲染模塊506綁定到不同的GPU,例如3D GPU 504B。在本示例中,3D圖形服務(wù)管理器404可以被配置為移動綁定到重置的圖形處理單元且使得所關(guān)聯(lián)的圖形渲染模塊終止的一個或多個虛擬機(jī)以減少GPU上的負(fù)載。例如,如果當(dāng)3D GPU 504重置時(shí),虛擬機(jī)414、414B和414C連接到該3D GPTO04,則3D圖形服務(wù)管理器404可以被配置為從所述組中選擇一個或多個,并向所選擇的虛擬機(jī)發(fā)送3D GPU 504B和/或3D GPU 504C的設(shè)備標(biāo)識符。在本示例中,3D圖形服務(wù)管理器404可以使用信息,例如估計(jì)的由每個虛擬機(jī)使用的圖形存儲器的數(shù)量和/或直接存儲器存取事務(wù)的平均等待時(shí)間,來選擇移動哪個虛擬機(jī)。
現(xiàn)在轉(zhuǎn)向圖8,它示出了用于從圖形處理單元重置中恢復(fù)的操作流程,包括操作 800-816。類似于上述操作流程,操作800可以開始流程,并且操作802示出在主操作系統(tǒng)和虛擬機(jī)之間建立通信信道。例如,并轉(zhuǎn)向圖5,在示范實(shí)施例中,3D GPU服務(wù)提供者512 可以在例如圖2的父部分內(nèi)運(yùn)行的主操作系統(tǒng)的內(nèi)核空間之內(nèi)執(zhí)行。在本示例中,3D GPU 服務(wù)提供者512可以由處理器執(zhí)行,并且使得設(shè)備標(biāo)識符出現(xiàn)在映射到虛擬機(jī)414的IO設(shè)備的存儲器中。即插即用模塊可以檢測設(shè)備標(biāo)識符并在存儲器中加載3D GPU服務(wù)客戶機(jī)。 3DGPU服務(wù)客戶機(jī)514可以在虛擬處理器上執(zhí)行并分配客存儲器的一組頁面,并在所述存儲器中設(shè)置通信信道516。3D GPU服務(wù)客戶機(jī)514可以通過通信信道516向3D GPU服務(wù)提供者512發(fā)送連接請求,3D GPU服務(wù)提供者512可以接受請求。消息可以現(xiàn)在在虛擬化平臺402和虛擬機(jī)414之間的通信信道516傳遞。
繼續(xù)對圖8的描述,操作804示出了在主操作系統(tǒng)中運(yùn)行渲染進(jìn)程,其中,所述渲染進(jìn)程配置為在3D圖形處理單元上為虛擬機(jī)渲染圖形。例如,可以由虛擬化平臺400接收連接請求以啟動虛擬機(jī)414。在本示例中,可以將一個信號發(fā)送給3D圖形服務(wù)管理器404, 3D圖形服務(wù)管理器404也是在主操作系統(tǒng)的內(nèi)核模式中運(yùn)行的可執(zhí)行指令模塊,以在主操作系統(tǒng)的用戶空間中啟動圖形渲染進(jìn)程,例如圖形渲染模塊。3D圖形服務(wù)管理器404可以使得主操作系統(tǒng)加載圖形渲染模塊506并將其與虛擬機(jī)414相關(guān)聯(lián)。
繼續(xù)對圖8的描述,操作806示出了檢測渲染進(jìn)程終止。例如,并轉(zhuǎn)回到圖5。在示范實(shí)施例中,3D圖形服務(wù)管理器404可以從主操作系統(tǒng)接收指示圖形渲染模塊506出于意料地退出的信號。例如,本示例中的主操作系統(tǒng)可以被配置為啟動并監(jiān)視程序的執(zhí)行。在圖形渲染模塊506出于意料地退出的實(shí)例中,主操作系統(tǒng)可以生成可以由3D圖形服務(wù)管理器404檢測的事件。
轉(zhuǎn)向操作808,它示出重啟渲染進(jìn)程。例如,3D圖形服務(wù)管理器404可以將信號發(fā)送給主操作系統(tǒng),指示其分配資源以為了虛擬機(jī)414啟動圖形渲染模塊,即圖形渲染模塊 506的實(shí)例。在該示例中,可以將圖形渲染模塊506加載到存儲器,并且,3D圖形服務(wù)管理器404可以向其傳遞配置信息,例如圖形處理單元使用的身份。圖形渲染模塊506可以綁定到所標(biāo)識的圖形處理單元,例如3D GPU 504并等待來自虛擬機(jī)414的連接請求。
參照操作810,它示出通過通信信道發(fā)送指示渲染進(jìn)程被重啟的消息。參照圖5, 3D圖形服務(wù)管理器404可以在處理器上執(zhí)行,并使得指示出現(xiàn)重置的消息被發(fā)送給虛擬機(jī)414。例如,3D圖形服務(wù)管理器404可以將信號發(fā)送給3DGPU服務(wù)提供者512,并且,3D GPU 服務(wù)提供者512可以寫入指示圖形渲染模塊506重啟的消息。3D GPU服務(wù)客戶機(jī)514可以通過通信信道516接收該消息并將該消息路由給例如虛擬設(shè)備驅(qū)動程序518。
轉(zhuǎn)向操作812,它示出由虛擬機(jī)中的虛擬設(shè)備驅(qū)動程序在客存儲器的范圍中建立圖形緩沖。例如,回到圖5,在示范實(shí)施例中,虛擬設(shè)備驅(qū)動程序518可以接收指示重啟圖形渲染模塊506的信號,并且可以將其已經(jīng)使用的從虛擬機(jī)414傳送轉(zhuǎn)發(fā)3D數(shù)據(jù),例如頂點(diǎn)、 紋理等給主操作系統(tǒng)的圖形緩沖卸載,并創(chuàng)建新的圖形緩沖。例如,圖形緩沖可以實(shí)現(xiàn)為圖形孔徑526。在該示例中,虛擬設(shè)備驅(qū)動程序518可以分配客存儲器地址的范圍并將該范圍傳遞給3DGPU服務(wù)客戶機(jī)514,3D GPU服務(wù)客戶機(jī)514可以在消息中將該范圍發(fā)送給3D GPU服務(wù)提供者512。圖形渲染模塊506可以接收存儲器地址的范圍并將信號發(fā)送給系統(tǒng)管理程序。完整的系統(tǒng)管理程序202可以接收該信號并將客存儲器地址的范圍重新映射到系統(tǒng)存儲器,即分配給虛擬化平臺402的存儲器,并在圖形緩沖中啟動將3D數(shù)據(jù)的DMA緩沖從虛擬設(shè)備驅(qū)動程序518傳遞給圖形渲染模塊506的進(jìn)程。
操作814示出通過通信信道將3D數(shù)據(jù)發(fā)送給重啟的渲染進(jìn)程。虛擬設(shè)備驅(qū)動程序518可以將填充有頂點(diǎn)、紋理、命令等的DMA緩沖通過圖形緩沖,例如圖形孔徑5 發(fā)送給圖形渲染模塊506。圖形渲染模塊506可以接收DMA緩沖,并將它們發(fā)送給圖形內(nèi)核508。 圖形內(nèi)核508可以調(diào)度它們在3D圖形處理單元,例如3D GPU 504上的執(zhí)行,并且3D GPU 504可以渲染圖象。
回到圖9,其示出圖8的操作流程,包括附加操作916-924。操作916示出通過圖形緩沖發(fā)送圖形數(shù)據(jù)以渲染完整的幀。例如,在建立圖形緩沖例如圖形孔徑5 之后,可以配置虛擬設(shè)備驅(qū)動程序518以重新發(fā)送至少一個圖形數(shù)據(jù)的完整幀。例如,虛擬設(shè)備驅(qū)動程序518可以保持哪些圖形數(shù)據(jù),例如在DMA緩沖中發(fā)送的頂點(diǎn)數(shù)據(jù),已經(jīng)被渲染并發(fā)送給客戶機(jī)520的跟蹤,并保持頂點(diǎn)數(shù)據(jù)的副本直到該渲染的圖象被成功地發(fā)送給客戶機(jī)520。 在本示例中,虛擬設(shè)備驅(qū)動程序518可以確定渲染的最后的幀的身份,并將生成下一完整幀所需的圖形數(shù)據(jù)重新發(fā)送。
參照操作918,它示出響應(yīng)于確定在渲染進(jìn)程終止之前虛擬機(jī)沒有執(zhí)行服務(wù)拒絕攻擊而重啟渲染進(jìn)程。例如,在示范實(shí)施例中,3D圖形服務(wù)管理器404可以被配置為通過將在終止之前通過圖形孔徑526的吞吐量和表示典型的服務(wù)拒絕攻擊的吞吐量模式進(jìn)行比較來確定圖形渲染模塊506是否由于服務(wù)拒絕攻擊而被終止。在模式不匹配的實(shí)例中,3D 圖形服務(wù)管理器404可以被配置為重啟圖形渲染模塊506。
參照操作920,它示出響應(yīng)于確定在渲染進(jìn)程終止之前3D圖形處理單元在響應(yīng)命令時(shí)花費(fèi)的時(shí)間量少于閾值來重啟渲染進(jìn)程。例如,在示范實(shí)施例中,3D圖形服務(wù)管理器 404可以被配置為在重啟圖形渲染模塊506之前,通過比較與3D GPU ACK相關(guān)聯(lián)的平均等待時(shí)間來確定在圖形渲染模塊506終止之前所述3D GPU 504是否過載。在3D圖形渲染模塊506終止之后,3D圖形服務(wù)管理器404可以將剛好在終止之前的硬件命令的平均等待時(shí)間與閾值進(jìn)行比較來確定硬件是否被過量使用。在平均等待時(shí)間少于閾值的實(shí)例中,3D圖形服務(wù)管理器404可以重啟圖形渲染模塊506。
操作922示出響應(yīng)于確定在渲染進(jìn)程終止之前由3D圖形處理單元所控制的可用圖形存儲器的數(shù)量大于閾值而重啟渲染進(jìn)程。例如,在示范實(shí)施例中,3D圖形服務(wù)管理器404可以被配置為在重啟圖形渲染模塊506之前,通過將圖形處理單元可用的圖形存儲器的估計(jì)的數(shù)量與閾值數(shù)量進(jìn)行比較來確定在終止之前3D GPU 504是否過載。3D圖形服務(wù)管理器404可以被配置為估計(jì)虛擬機(jī)在其啟動時(shí)將試圖使用多少圖形存儲器,并將該值存儲在表中。隨后,3D圖形服務(wù)管理器404可以指示圖形渲染模塊綁定到3D GPU,并從反映估計(jì)的可用圖形存儲器的數(shù)量中減去所估計(jì)的圖形存儲器數(shù)量。在重啟圖形渲染模塊之前,3D圖形服務(wù)管理器404可以被配置為將估計(jì)的可用的圖形存儲器的數(shù)量與閾值進(jìn)行比較,并且如果估計(jì)的值大于閾值,則3D圖形服務(wù)管理器404可以重啟圖形渲染模塊506。在可用圖形存儲器的數(shù)量大于閾值的實(shí)例中,3D圖形服務(wù)管理器404可以重啟圖形渲染模塊 506。
轉(zhuǎn)向操作924,它示出重啟所述渲染進(jìn)程并指定渲染進(jìn)程在第二 3D圖形處理單元上進(jìn)行渲染。例如,參照圖5,在該實(shí)施例中,3D圖形服務(wù)管理器404可以被配置為將與圖形渲染進(jìn)程506將渲染的GPU所不同的GPU的標(biāo)識符以使得重啟的圖形渲染模塊506綁定到不同的GPU,例如3D GPU 504B。在本示例中,3D圖形服務(wù)管理器404可以被配置為移動綁定到重置的圖形處理單元且使得所關(guān)聯(lián)的圖形渲染模塊終止的一個或多個虛擬機(jī)以便減少GPU上的負(fù)載。例如,如果當(dāng)3D GPU 504重置時(shí),虛擬機(jī)414、414B和414C連接到該 3D GPTO04,則3D圖形服務(wù)管理器404可以被配置為從所述組中選擇一個或多個,并向所選擇的虛擬機(jī)發(fā)送3D GPU 504B和/或3D GPU 504C的設(shè)備標(biāo)識符。在本示例中,3D圖形服務(wù)管理器404可以使用信息,例如估計(jì)的由每個虛擬機(jī)使用的圖形存儲器的數(shù)量和/或直接存儲器存取事務(wù)的平均等待時(shí)間,來選擇移動哪個虛擬機(jī)。
現(xiàn)在參照圖10,它示出了用于從圖形處理單元重置中恢復(fù)的操作流程,包括操作 1000-1014。操作1000開始操作流程,并且操作1002示出由虛擬化平臺(402)在虛擬化平臺(402)和虛擬機(jī)之間建立通信信道(516)。例如,并轉(zhuǎn)回到圖5,在示范實(shí)施例中,虛擬化平臺402,例如圖3的系統(tǒng)管理程序302,可以包括3D GPU服務(wù)提供者512,例如可執(zhí)行指令的模塊,一旦由處理器執(zhí)行指令,能夠使得設(shè)備標(biāo)識符出現(xiàn)在映射到虛擬機(jī)414中的IO設(shè)備的存儲器中。即插即用模塊可以檢測設(shè)備標(biāo)識符并在存儲器中加載3D GPU服務(wù)客戶機(jī)。 3D GPU服務(wù)客戶機(jī)514可以在虛擬處理器上執(zhí)行并分配客存儲器的一組頁面,并在其中設(shè)置通信信道516。3D GPU服務(wù)客戶機(jī)514可以通過通信信道516向3D GPU服務(wù)提供者512 發(fā)送連接請求,3D GPU服務(wù)提供者512可以接受請求。
操作1004示出由虛擬化平臺(402)運(yùn)行的渲染進(jìn)程(506),該渲染進(jìn)程(506)在 3D圖形處理單元上為虛擬機(jī)(414)渲染圖形。例如,可以由虛擬化平臺400接收連接請求以啟動虛擬機(jī)414。在本示例中,可以將一個信號發(fā)送給3D圖形服務(wù)管理器404,3D圖形服務(wù)管理器404也是在主操作系統(tǒng)的內(nèi)核模式中或在圖3的系統(tǒng)管理程序中運(yùn)行的可執(zhí)行指令模塊,以啟動圖形渲染進(jìn)程,例如圖形渲染模塊,如圖形渲染模塊506。3D圖形服務(wù)管理器404可以使得主操作系統(tǒng)加載圖形渲染模塊506并將其與虛擬機(jī)414相關(guān)聯(lián)。
參照操作1006,它示出由虛擬化平臺(402)檢測渲染進(jìn)程(506)的終止。例如并回到圖5,在示范實(shí)施例中,3D圖形服務(wù)管理器404可以接收指示圖形渲染模塊506出于意料地退出的信號。
回到操作1008,它示出由虛擬化平臺(402)重啟渲染進(jìn)程。例如,3D圖形服務(wù)管理器404可以將信號發(fā)送給主操作系統(tǒng)或圖3的系統(tǒng)管理程序302的調(diào)度器,指示其資源以為了虛擬機(jī)414啟動圖形渲染模塊,即圖形渲染模塊506的實(shí)例。在該示例中,可以將圖形渲染模塊506加載到存儲器,并且,3D圖形服務(wù)管理器404可以向其傳遞配置信息, 例如圖形處理單元使用的身份。圖形渲染模塊506可以綁定到所標(biāo)識的圖形處理單元并等待來自虛擬機(jī)414的連接請求。
操作1010示出通過通信信道將指示渲染進(jìn)程(506)被重啟的消息發(fā)送給虛擬機(jī)。 參照圖5,3D圖形服務(wù)管理器404可以在處理器上執(zhí)行,并使得指示出現(xiàn)重置的消息被發(fā)送給虛擬機(jī)414。例如,3D圖形服務(wù)管理器404可以將信號發(fā)送給3D GPU服務(wù)提供者512,并且,3D GPU服務(wù)提供者512可以寫入指示圖形渲染模塊506重啟的消息。3D GPU服務(wù)客戶機(jī)514可以通過通信信道516接收該消息并將該消息路由給例如虛擬設(shè)備驅(qū)動程序518。
操作1012示出由在虛擬機(jī)014)中執(zhí)行的虛擬設(shè)備驅(qū)動程序(518)在客存儲器范圍內(nèi)建立圖形緩沖(5 )。例如,回到圖5,在示范實(shí)施例中,虛擬設(shè)備驅(qū)動程序518可以接收指示重啟圖形渲染模塊506的信號,并且可以將其已經(jīng)使用的用于從虛擬機(jī)414傳送轉(zhuǎn)發(fā)3D數(shù)據(jù),例如頂點(diǎn)、紋理等給虛擬化平臺402的圖形緩沖卸載,并創(chuàng)建新的圖形緩沖。 例如,圖形緩沖可以實(shí)現(xiàn)為圖形孔徑526。在該示例中,虛擬設(shè)備驅(qū)動程序518可以分配客存儲器地址的范圍并將該范圍傳遞給3D GPU服務(wù)客戶機(jī)514,3D GPU服務(wù)客戶機(jī)514可以在消息中將該范圍發(fā)送給3D GPU服務(wù)提供者512。圖形渲染模塊506可以接收存儲器地址的范圍并將信號發(fā)送給系統(tǒng)管理程序。完整的系統(tǒng)管理程序202或圖3的系統(tǒng)管理程序 302可以接收該信號并將客存儲器地址的范圍重新映射到系統(tǒng)存儲器,即分配給虛擬化平臺402的存儲器,并在圖形緩沖中啟動將3D數(shù)據(jù)的DMA緩沖從虛擬設(shè)備驅(qū)動程序518傳遞給圖形渲染模塊506的進(jìn)程。
操作1014示出通過圖形緩沖(526)將3D圖形數(shù)據(jù)發(fā)送給被重啟的渲染進(jìn)程。虛擬設(shè)備驅(qū)動程序518可以將填充有頂點(diǎn)、紋理、命令等的DMA緩沖通過圖形緩沖,例如圖形孔徑5 發(fā)送給圖形渲染模塊506。圖形渲染模塊506可以接收DMA緩沖,并將它們發(fā)送給圖形內(nèi)核508。圖形內(nèi)核508可以調(diào)度它們在3D圖形處理單元,例如3D GPU 504上的執(zhí)行,并且3D GPU 504可以渲染圖象。
現(xiàn)在參照圖11,其示出圖10的操作流程,包括附加操作流程1116和-1126。操作 1116示出響應(yīng)于確定在渲染進(jìn)程終止之前虛擬機(jī)沒有執(zhí)行服務(wù)拒絕攻擊而重啟渲染進(jìn)程。 例如,在示范實(shí)施例中,3D圖形服務(wù)管理器404可以被配置為通過將在終止之前通過圖形孔徑526的吞吐量和表示典型的服務(wù)拒絕攻擊的吞吐量模式進(jìn)行比較來確定圖形渲染模塊506是否由于服務(wù)拒絕攻擊而被終止。在模式不匹配的實(shí)例中,3D圖形服務(wù)管理器404 可以被配置為重啟圖形渲染模塊506。否則,3D圖形服務(wù)管理器404可以采取多個行動中的一步或多步,例如重啟3D圖形服務(wù)管理器404、斷開客戶機(jī)520、將信號發(fā)送給配置為通知可疑活動的管理員的進(jìn)程等。
參照操作1118,它示出響應(yīng)于確定在終止渲染進(jìn)程之前3D圖形處理單元在響應(yīng)命令時(shí)花費(fèi)的時(shí)間量少于閾值來重啟渲染進(jìn)程。類似于上述操作,在示范實(shí)施例中,3D圖形服務(wù)管理器404可以被配置為在重啟圖形渲染模塊506之前通過比較與3D GPU ACK相關(guān)聯(lián)的平均等待時(shí)間來確定在終止之前所述3D GPU 504是否過載。在平均等待時(shí)間少于閾值的實(shí)例中,3D圖形服務(wù)管理器404可以重啟圖形渲染模塊506。
操作1120示出通過響應(yīng)于由3D圖形處理單元所控制的可用圖形存儲器的數(shù)量大于閾值,而重啟渲染進(jìn)程。例如,在示范實(shí)施例中,3D圖形服務(wù)管理器404可以被配置為在重啟圖形渲染模塊506之前,通過將重置前的圖形處理單元可用的圖形存儲器的估計(jì)的數(shù)量與閾值數(shù)量進(jìn)行比較來確定在終止之前3DGPU 504是否過載。在可用圖形存儲器的數(shù)量大于閾值的實(shí)例中,3D圖形服務(wù)管理器404可以重啟圖形渲染模塊506。
操作1122示出重啟渲染進(jìn)程并指定渲染進(jìn)程在第二 3D圖形處理單元上進(jìn)行渲染。例如,在示范實(shí)施例中,3D圖形服務(wù)管理器404可以被配置為在重啟圖形渲染模塊506 之前,通過將在終止前與3D GPU ACK相關(guān)聯(lián)的平均等待時(shí)間與閾值量進(jìn)行比較來確定所述 3D GPU 504是否過載。例如,圖形內(nèi)核508可以被配置為在每次它將硬件命令發(fā)送給3D圖形處理單元504時(shí)啟動計(jì)時(shí)器,并在接收到ACK時(shí)停止計(jì)時(shí)器。隨后,可以將所計(jì)算的時(shí)間發(fā)送給3D圖形服務(wù)管理器404,它能計(jì)算3D圖形處理單元在響應(yīng)上所花費(fèi)的平均時(shí)間。在終止之后,3D圖形服務(wù)管理器404可以將剛好在終止之前的硬件命令的平均等待時(shí)間與閾值進(jìn)行比較來確定硬件是否被過量使用。
操作IlM示出響應(yīng)于確定在渲染進(jìn)程終止之前由虛擬設(shè)備驅(qū)動程序啟動的直接存儲器存取事務(wù)的平均等待時(shí)間少于閾值而重啟所述渲染進(jìn)程。例如,在示范實(shí)施例中,3D 圖形服務(wù)管理器404可以被配置為在重啟圖形渲染模塊506之前,確定在終止之前3D GPU 是否過載。在該特定示例實(shí)施例中,在重啟圖形渲染模塊506之前,3D圖形服務(wù)管理器404 可以被配置為通過將與虛擬機(jī)相關(guān)聯(lián)的直接存儲器存取事務(wù)的平均等待時(shí)間與閾值進(jìn)行比較來確定是否渲染給GPU 504的任意虛擬機(jī)負(fù)責(zé)使得3D圖形處理單元504重置。由虛擬機(jī)414發(fā)起的DMA事務(wù)的等待時(shí)間可以從虛擬設(shè)備驅(qū)動程序518接收包括3DGPU 504的命令的DMA緩沖的時(shí)間點(diǎn)開始到由虛擬設(shè)備驅(qū)動程序518接收到命令的ACK信號的時(shí)間點(diǎn)為止來進(jìn)行測量。
操作11 示出通過圖形緩沖重新發(fā)送圖形數(shù)據(jù)的幀。例如,參照圖6,在建立圖形緩沖,例如圖形孔徑5 之后,可以配置虛擬設(shè)備驅(qū)動程序518以重新發(fā)送至少一個圖形數(shù)據(jù)的完整幀。例如,虛擬設(shè)備驅(qū)動程序518可以保持哪些圖形數(shù)據(jù),例如在DMA緩沖中發(fā)送的頂點(diǎn)數(shù)據(jù),已經(jīng)被渲染并發(fā)送給客戶機(jī)520的跟蹤,并保持頂點(diǎn)數(shù)據(jù)的副本直到該渲染的圖象被成功地發(fā)送給客戶機(jī)520。在本示例中,虛擬設(shè)備驅(qū)動程序518可以確定渲染的最后的幀的身份,并將生成下一完整幀所需的圖形數(shù)據(jù)重新發(fā)送。例如,由于一些3D圖形數(shù)據(jù)被用于多個幀,可以用于下一幀的某些數(shù)據(jù)可能已經(jīng)被發(fā)送給了圖形渲染模塊506。在本示例中,用于創(chuàng)建下一幀的所有數(shù)據(jù)可以通過圖形緩沖被發(fā)送,以確保圖形渲染模塊506 可以渲染下一幀。
上述詳細(xì)描述通過示例和/或操作圖闡明了系統(tǒng)和/或過程的各種實(shí)施例。就這些框圖和/或示例包含一個或多個功能和/或操作而言,本領(lǐng)域技術(shù)人員將理解,這些框圖或示例中的每一功能和/或操作都可由各種各樣的硬件、軟件、固件、或?qū)嶋H上其任意組合來單獨(dú)地和/或共同地實(shí)現(xiàn)。
雖然已示出和描述了本文中描述的主題內(nèi)容的特定方面,但是本領(lǐng)域技術(shù)人員將明白,基于本文中的教導(dǎo),可作出改變和修改而不脫離本文中描述的主題內(nèi)容,并且其更廣方面以及因此所附權(quán)利要求的范圍旨在涵蓋落在本文中描述的主題內(nèi)容的真實(shí)精神和范圍內(nèi)的所有此類改變和修改。
權(quán)利要求
1.一種配置用于從圖形處理器重置中恢復(fù)的計(jì)算機(jī)系統(tǒng)G00),包括處理器(102)3D圖形處理單元(504);以及存儲器(104和/或106),所述存儲器在計(jì)算機(jī)系統(tǒng)(400)可操作時(shí)至少與所述處理器 (102)通信,所述存儲器(104和/或106)其上存儲有計(jì)算機(jī)可讀指令,所述計(jì)算機(jī)可讀指令在執(zhí)行時(shí)使得所述處理器在虛擬化平臺(40 和虛擬機(jī)(414)之間建立通信信道(516);檢測配置為在所述3D圖形處理單元(504)上為所述虛擬機(jī)(414)渲染圖形的渲染進(jìn)程(506)的終止;重啟所述渲染進(jìn)程(506);通過所述通信信道(516)將指示渲染進(jìn)程正被重啟的信號發(fā)送給在所述虛擬機(jī)(414) 上執(zhí)行的虛擬設(shè)備驅(qū)動程序(518);以及在在所述虛擬機(jī)(414)上執(zhí)行的虛擬設(shè)備驅(qū)動程序(518)和重啟的渲染進(jìn)程(506)之間建立圖形緩沖(5 )。
2.如權(quán)利要求1所述的計(jì)算機(jī)系統(tǒng),其特征在于,所述計(jì)算機(jī)可讀指令還包括在執(zhí)行時(shí)使所述處理器執(zhí)行以下動作的計(jì)算機(jī)可讀指令通過所述圖形緩沖重新發(fā)送圖形數(shù)據(jù)以渲染完整的幀。
3.如權(quán)利要求1所述的計(jì)算機(jī)系統(tǒng),其特征在于,在執(zhí)行時(shí)使所述處理器重啟所述渲染進(jìn)程的計(jì)算機(jī)可讀指令還包括在執(zhí)行時(shí)使所述處理器執(zhí)行以下動作的計(jì)算機(jī)可讀指令響應(yīng)于確定在所述渲染進(jìn)程被終止之前所述虛擬機(jī)沒有執(zhí)行服務(wù)拒絕攻擊而重啟所述渲染進(jìn)程。
4.如權(quán)利要求1所述的計(jì)算機(jī)系統(tǒng),其特征在于,在執(zhí)行時(shí)使所述處理器重啟所述渲染進(jìn)程的計(jì)算機(jī)可讀指令還包括在執(zhí)行時(shí)使所述處理器執(zhí)行以下動作的計(jì)算機(jī)可讀指令響應(yīng)于確定在所述渲染進(jìn)程被終止之前由所述虛擬設(shè)備驅(qū)動程序發(fā)起的直接存儲器存取事務(wù)的平均等待時(shí)間少于閾值而重啟所述渲染進(jìn)程。
5.如權(quán)利要求1所述的計(jì)算機(jī)系統(tǒng),其特征在于,在執(zhí)行時(shí)使所述處理器重啟所述渲染進(jìn)程的計(jì)算機(jī)可讀指令還包括在執(zhí)行時(shí)使所述處理器執(zhí)行以下動作的計(jì)算機(jī)可讀指令響應(yīng)于確定在所述渲染進(jìn)程被終止之前所述3D圖形處理單元響應(yīng)命令所花費(fèi)的時(shí)間量少于閾值而重啟所述渲染進(jìn)程。
6.如權(quán)利要求1所述的計(jì)算機(jī)系統(tǒng),其特征在于,在執(zhí)行時(shí)使所述處理器重啟所述渲染進(jìn)程的計(jì)算機(jī)可讀指令還包括在執(zhí)行時(shí)使所述處理器執(zhí)行以下動作的計(jì)算機(jī)可讀指令響應(yīng)于確定在所述渲染進(jìn)程被終止之前所述3D圖形處理單元所控制的可用圖形存儲器的估計(jì)數(shù)量大于閾值而重啟所述渲染進(jìn)程。
7.如權(quán)利要求1所述的計(jì)算機(jī)系統(tǒng),其特征在于,在執(zhí)行時(shí)使所述處理器重啟所述渲染進(jìn)程的計(jì)算機(jī)可讀指令還包括在執(zhí)行時(shí)使所述處理器執(zhí)行以下動作的計(jì)算機(jī)可讀指令重啟所述渲染進(jìn)程并指定所述渲染進(jìn)程在第二 3D圖形處理單元上進(jìn)行渲染。
8.一種用于從3D圖形處理單元重置中恢復(fù)的方法,包括由虛擬化平臺(40 在所述虛擬化平臺(40 和虛擬機(jī)(414)之間建立通信信道 (516);由所述虛擬化平臺(40 運(yùn)行配置用于在3D圖形處理單元(504)上為所述虛擬機(jī) (414)渲染圖形的渲染進(jìn)程(506);由所述虛擬化平臺(40 檢測所述渲染進(jìn)程(506)的終止。{0 > < 0}通過所述通信信道(516)將指示所述渲染進(jìn)程(506)被重啟的消息發(fā)送給所述虛擬機(jī) (414);由在所述虛擬機(jī)G14)內(nèi)執(zhí)行的虛擬設(shè)備驅(qū)動程序(51 在客存儲器的范圍內(nèi)建立圖形緩沖(526);通過所述圖形緩沖(526)將3D圖形數(shù)據(jù)發(fā)送給重啟的渲染進(jìn)程(506)。
9.如權(quán)利要求8所述的方法,其特征在于,還包括響應(yīng)于確定在所述渲染進(jìn)程被終止之前所述虛擬機(jī)沒有執(zhí)行服務(wù)拒絕攻擊而重啟所述渲染進(jìn)程。
10.如權(quán)利要求8所述的方法,其特征在于,還包括響應(yīng)于確定在所述渲染進(jìn)程被終止之前所述3D圖形處理單元響應(yīng)命令所花費(fèi)的時(shí)間量少于閾值而重啟所述渲染進(jìn)程。
11.如權(quán)利要求8所述的方法,其特征在于,還包括響應(yīng)于確定在所述渲染進(jìn)程被終止之前所述3D圖形處理單元所控制的可用圖形存儲器的估計(jì)數(shù)量大于閾值而重啟所述渲染進(jìn)程。
12.如權(quán)利要求8所述的方法,其特征在于,還包括重啟所述渲染進(jìn)程并指定所述渲染進(jìn)程在第二 3D圖形處理單元上進(jìn)行渲染。
13.如權(quán)利要求8所述的方法,其特征在于,還包括響應(yīng)于確定在所述渲染進(jìn)程被終止之前由虛擬設(shè)備驅(qū)動程序發(fā)起的直接存儲器存取事務(wù)的平均等待時(shí)間少于閾值而重啟所述渲染進(jìn)程。
14.如權(quán)利要求8所述的方法,其特征在于,還包括通過所述圖形緩沖渲染圖形數(shù)據(jù)的幀。
全文摘要
一種動態(tài)虛擬設(shè)備故障恢復(fù)的技術(shù)。在此揭示了用于從圖形處理器重置中恢復(fù)的示范技術(shù)。在示范實(shí)施例中,3D圖形服務(wù)管理器404可以檢測圖形處理單元的重置,并且可以重啟配置用于為虛擬機(jī)渲染3D圖形的渲染進(jìn)程,并促使在渲染進(jìn)程和虛擬機(jī)之間建立圖形緩沖。除以上之外,在具體實(shí)施方式
、權(quán)利要求書和附圖中描述了其他方面。
文檔編號G06F11/07GK102495769SQ20111030831
公開日2012年6月13日 申請日期2011年9月29日 優(yōu)先權(quán)日2010年9月30日
發(fā)明者B·S·波斯特, P·辛格, V·帕夫洛夫, V·龐南潘 申請人:微軟公司