午夜毛片免费看,老师老少妇黄色网站,久久本道综合久久伊人,伊人黄片子

一種GPU虛擬化實現(xiàn)系統(tǒng)及方法與流程

文檔序號:11133707閱讀:905來源:國知局
一種GPU虛擬化實現(xiàn)系統(tǒng)及方法與制造工藝

本發(fā)明涉及一種GPU虛擬化實現(xiàn)系統(tǒng)及方法。



背景技術:

在GPU(Graphics Processing Unit圖形處理器)虛擬化領域,目前存在三類典型的技術方案。

(1)NVIDIA主導的GRID GPU虛擬化技術

NVIDIA的GPU虛擬化方案基于其特殊設計的一款GPU顯卡,該類型GPU可以模擬若干GPU的能力,從而同時為若干臺虛擬機提供服務,這些模擬出來的GPU單元稱為vGPU。每臺虛擬機綁定一個獨立的vGPU,使得GUEST操作系統(tǒng)和其中運行的3D應用直接使用vGPU的處理能力,達到接近于物理計算機使用本地硬件GPU處理的效果體驗。

目前,Citrix、VMware以及Microsoft(RemoteFX)都基于GRID硬件,推出了自己的桌面/應用虛擬化方案,以提升其產(chǎn)品對3D應用的支持能力。

GRID GPU虛擬化技術已經(jīng)取得一些商業(yè)化應用,但在實際中主要面臨成本過高的問題。以入門級GRID K1顯卡(支持8個vGPU)為例,目前其市場價格在一萬元左右。而實際中,虛擬化環(huán)境需要支持的客戶虛擬機數(shù)量可能達到數(shù)十臺至上百臺,所以顯卡的投入會占據(jù)建設投資的主要比重。同時,在服務器上額外增加GRID卡,通常要受到服務器類型、設計能力等因素的影響,PCI總線能力、內(nèi)存容量等都是軟硬件升級方案需要考慮的方面,這也顯著增加了相關成本和實施的復雜性。

(2)INTEL的XENGT/KVMGT GPU虛擬化技術方案

Intel XENGT/KVMGT方案的主要原理是,在虛擬化層為每臺虛擬機模擬一塊獨立GPU顯卡(以下也稱為vGPU),vGPU對上層應用提交的3D操作請求,按照其類型識別為兩類:顯存操作請求和寄存器IO操作請求。對于顯存操作請求,直接映射操作宿主機層硬件GPU中的一塊對應顯存,稱為Passthrough方式,由于跨過中間若干環(huán)節(jié),可以減少時間資源的消耗,提高整體處理效率;對于寄存器IO操作請求,采用陷入再模擬的方式統(tǒng)一安排調(diào)度,稱為Trap方式,達到一套硬件GPU計算單元分時復用的目的。所以,XENGT/KVMGT方案試圖通過一塊成本較低GPU卡,同時支持多臺虛擬機對GPU的需求。

該方案面臨的主要問題是,必須依賴于Intel特定型號的芯片支持。Intel的GPU是與CPU集成的,不同型號用途的CPU搭載相應的GPU或者根本沒有集成GPU。對于服務器而言,出于用途和成本考慮,其使用的CPU大多不集成GPU。因而在實際環(huán)境中,XENGT/KVMGT技術的應用推廣具有很大的局限性。

(3)利用純軟件庫模擬GPU

前面所述兩種技術方案最終都需要硬件GPU支持,與它們相對應,還有一種純軟件模擬的技術方案。其原理是:在API層實現(xiàn)一個軟件庫,使得在沒有GPU或僅具備低端GPU的設備上,可以模擬運行3D應用。最典型的實現(xiàn)是MESA,一個用于模擬OpenGL設備的開源軟件庫,它最基本的運行模式是純軟件模擬方式;Microsoft的Directx也支持類似的軟設備模擬模式。這類軟件庫無論是安裝到虛擬機操作系統(tǒng)還是實體機操作系統(tǒng)中,都可以模擬GPU能力,從而運行各種主流3D應用。

純軟件庫模擬GPU技術,其最大的問題是性能很差,因而主要用于軟件調(diào)試環(huán)境或作為硬件GPU部分特性的補充;目前不適合應用到實際生產(chǎn)環(huán)境中。



技術實現(xiàn)要素:

本發(fā)明為了解決上述問題,提出了一種GPU虛擬化實現(xiàn)系統(tǒng)及方法,本發(fā)明為虛擬機提供虛擬GPU能力,支持主流3D應用的流暢運行。能夠適應現(xiàn)實情況,不要求服務器外接或內(nèi)置GPU硬件;從vGPU運行效率出發(fā),整體上調(diào)整了系統(tǒng)虛擬化的體系結(jié)構(gòu),克服傳統(tǒng)軟件模擬庫效率低下的問題。

為了實現(xiàn)上述目的,本發(fā)明采用如下技術方案:

一種GPU虛擬化實現(xiàn)系統(tǒng),包括vGPU驅(qū)動模塊、vGPU前端模塊以及vGPU后端模塊,其中:

所述vGPU驅(qū)動模塊,隸屬于客戶機操作系統(tǒng),向應用層提供vGPU支持的操作類型和支持的級別,同時截獲虛擬設備層的3D請求,同時確認虛擬設備的特性信息;

所述vGPU前端模塊,被配置為模擬能夠被客戶機操作系統(tǒng)發(fā)現(xiàn)的GPU顯卡設備,具備PCI設備特性、VGA設備特性以及GPU設備特性,為vGPU驅(qū)動模塊和vGPU后端模塊提供銜接渠道;

所述vGPU后端模塊,被配置為基于物理層硬件,通過調(diào)度并處理vGPU前端模塊提交的3D請求,對服務器的物理CPU進行分組,然后選擇其中一組CPU專用于GPU功能模擬從而最終完成vGPU功能。

所述vGPU后端模塊,被配置在宿主機操作系統(tǒng)內(nèi),與物理層通訊,同時與客戶機虛擬設備層的vGPU前端模塊通訊,所述vGPU前端模塊接收客戶機操作系統(tǒng)的vGPU驅(qū)動模塊發(fā)出的驅(qū)動請求。

所述vGPU前端模塊,被配置為通過Qemu模擬向vGPU驅(qū)動模塊提供ROM、RAM和I/O寄存器組三種形式的交互接口,所述ROM提供vGPU顯卡的硬件信息和資源設置,RAM提供顯示資源緩沖區(qū),I/O寄存器組提供刷新命令和配置命令。

所述vGPU前端模塊與vGPU后端模塊共享內(nèi)存實現(xiàn)通信,所述共享內(nèi)存提供命令隊列和資源緩存兩種形式的接口,命令隊列負責傳遞操作命令,資源緩存負責維護與命令相關的資源。

所述vGPU前端模塊通過Qemu進程通過共享內(nèi)存接口發(fā)出服務請求,vGPU后端模塊為流水線進程,基于共享內(nèi)存接口響應請求,提供GPU服務,前端Qemu進程由支持虛擬機的CPU組負責調(diào)度運行;流水線進程專門由Backend組CPU運行,兩進程采用并發(fā)運行模式。

所述vGPU驅(qū)動模塊提供一個支持特性集,說明vGPU能夠支持的操作類型和支持的級別,如果集合中標記了對某項特性的支持,則必須在vGPU前端模塊和vGPU后端模塊的實現(xiàn)中支持此特性。

所述vGPU前端模塊在虛擬機啟動階段被客戶機操作系統(tǒng)發(fā)現(xiàn),其被配置為表現(xiàn)為掛載在一級PCI總線的設備,具備獨立的開發(fā)商型號和設備型號,同時保證vGPU前端模塊模擬的信息與vGPU驅(qū)動模塊指定的信息一致。

所述vGPU前端模塊被設置有VGA設備特性,通過修改虛擬化設施中的顯存資源地址范圍,I/O寄存器地址范圍和中斷向量表地址范圍來實現(xiàn)。

所述vGPU前端模塊被設置有GPU設備特性,當增加顯存段或顯存頁表機制時,vGPU前端模塊能夠任意分配顯存資源,滿足GPU對渲染目標平面和紋理操作的要求,支持GPU特性集合的設置與維護。

一種GPU虛擬化實現(xiàn)方法,包括以下步驟:

(1)進行宿主機操作系統(tǒng)的進程綁定CPU操作,對物理CPU進行分組使用;

(2)利用一個獨立進程來承載GPU的計算能力,作為vGPU后端,構(gòu)建支持多線程/多上下文的內(nèi)存區(qū)域與3D處理流水線;

(3)修改虛擬化設施的設備特性,向上層驅(qū)動提供I/O寄存器組和內(nèi)存映射方式兩種接口,利用基于內(nèi)存的前后端協(xié)同通信方式與vGPU后端通信;

(4)以vGPU前端為基礎,向操作系統(tǒng)和應用層報告3D方面的支持特性集,并把3D操作請求轉(zhuǎn)給vGPU前端處理,在驅(qū)動層截獲系統(tǒng)渲染請求數(shù)據(jù)和進程渲染請求數(shù)據(jù),基于Spice協(xié)議轉(zhuǎn)至終端完成實際渲染。

所述步驟(1)中,對物理CPU分為三組使用,具體包括第一組用于支持虛擬機、第二組用于支持vGPU和第三組用于支持宿主機常規(guī)進程。

本發(fā)明的有益效果為:

(1)相對于GRID技術和XENGT/KVMGT等硬件輔助技術,本發(fā)明不要求外插/內(nèi)置GRID顯卡,也不要求升級更換搭載具備GPU功能的CPU型號。因而在適應性和實施成本控制方面具備優(yōu)勢;

(2)針對現(xiàn)有軟件庫模擬方式性能低的問題,本發(fā)明以調(diào)整系統(tǒng)虛擬化體系結(jié)構(gòu)的方式,在物理層隔離出若干物理CPU專門用于執(zhí)行GPU功能,解決因為虛擬機/進程上下文切換導致的無謂損耗問題。同時,這組CPU與虛擬機使用的CPU組并行工作,原理上相當于真實GPU與CPU協(xié)同并行工作的方式,有利3D系統(tǒng)處理性能的發(fā)揮;

(3)本發(fā)明在驅(qū)動層截獲3D請求的高級語義,通過合并優(yōu)化請求,顯著的提升3D處理效率。

附圖說明

圖1為本發(fā)明的整體邏輯框架示意圖;

圖2為本發(fā)明的CPU分組控制示意圖;

圖3為本發(fā)明的vGPU驅(qū)動與vGPU前端的交互過程示意圖;

圖4為本發(fā)明的vGPU前端與vGPU后端的交互過程示意圖。

具體實施方式:

下面結(jié)合附圖與實施例對本發(fā)明作進一步說明。

現(xiàn)有主流的GPU虛擬化技術,可分為兩類。一類技術要求在服務器上外接或內(nèi)置GPU硬件,但是由于實際環(huán)境中的服務器大多數(shù)沒有GPU(或相當于GPU的硬件),升級擴展服務器必須付出很高的成本,而且能否升級還要受到許多因素的制約;另一類技術是純軟件方法,直接在API層通過軟件庫模擬GPU的3D處理能力,雖然不用升級硬件,但是效率很低,不能滿足實際生產(chǎn)環(huán)境的要求。

本發(fā)明的任務是提出一種GPU虛擬化技術方案,為虛擬機提供虛擬GPU能力,支持主流3D應用的流暢運行。相對于現(xiàn)有的第一類方案,本發(fā)明適應現(xiàn)實情況,不要求服務器外接或內(nèi)置GPU硬件;與第二類方案單純在API層實現(xiàn)功能不同,本發(fā)明從vGPU運行效率出發(fā),整體上調(diào)整了系統(tǒng)虛擬化的體系結(jié)構(gòu),克服傳統(tǒng)軟件模擬庫效率低下的問題。

本發(fā)明整體邏輯框架如圖1所示,包括vGPU驅(qū)動、vGPU前端以及后端三個部分,分別屬于客戶機操作系統(tǒng)、客戶機虛擬設備以及宿主機操作系統(tǒng)這三個層次,此外整個體系最終需要物理層CPU和內(nèi)存等硬件資源的支撐,但是不要求具備硬件GPU。上述各部分相互協(xié)作,共同實現(xiàn)vGPU功能。

(1)vGPU驅(qū)動

vGPU驅(qū)動屬于客戶機操作系統(tǒng)(GUEST OS)的一部分,驅(qū)動的框架遵循客戶機操作系統(tǒng)要求的驅(qū)動模型規(guī)范,例如對于Windows需要遵循WDDM/XDDM模型。本發(fā)明以vGPU為基礎,實現(xiàn)一個完整的驅(qū)動,為上層的操心系統(tǒng)及3D應用提供各種3D能力支持。

vGPU驅(qū)動承擔抽象硬件層(HAL)的接口功能,負責以下三項功能:

a)向應用層報告vGPU的能力。3D應用在實際使用GPU之前,都會首先查詢GPU能力,然后決定是否進入相應的硬件協(xié)處理流程。因而vGPU驅(qū)動必須提供一個支持特性集,說明vGPU能夠支持的操作類型和支持的級別。一旦集合中標記了對某項特性的支持,則必須在vGPU的前后端實現(xiàn)中支持此特性。該集合的定制需要根據(jù)實際需要,在支持范圍和實現(xiàn)代價之間權(quán)衡。對于輕量級的3D應用場景,定義基本級集合,僅包含最基礎的3D支持特性;對于需要使用專業(yè)3D軟件的場景,則必須實現(xiàn)包含更多特性的高級特性集合。

b)截獲3D請求。驅(qū)動層相對于設備層,更接近于應用,因而可以截獲高級語義的3D請求。高級語義3D請求相對數(shù)量少,而且容易進行合并或優(yōu)化。驅(qū)動最終把處理后的請求轉(zhuǎn)向vGPU前端進行下一步的處理。這樣的效果是:簡化vGPU設備的接口設計,消除不必要的中間環(huán)節(jié),并能顯著提高效率。

c)綁定特定的關鍵信息。這些關鍵信息主要包括:開發(fā)商標識(VendorID),設備類型標識(DeviceID),資源地址信息等。它們必須與vGPU設備的前后端準備設置的特性相一致,以避免沖突。

(2)vGPU前端

vGPU前端,模擬一個可以被客戶機操作系統(tǒng)發(fā)現(xiàn)的GPU顯卡設備,實現(xiàn)三個層次的特性,包括PCI設備特性、VGA設備特性以及GPU設備特性。從實現(xiàn)角度,vGPU前端功能主要由虛擬化軟件設施的設備虛擬化模塊支持。因此具體特性的實現(xiàn)需要基于現(xiàn)有虛擬化軟件設施進行改造,當前最流行的開源虛擬化軟件包括KVM和XEN兩類,它們的設備虛擬化設施實際都是Qemu,因此vGPU前端的實現(xiàn)主要集中在對Qemu的改造上。

a)PCI設備特性。vGPU作為PCI設備,首先應當在虛擬機啟動階段被客戶機操作系統(tǒng)發(fā)現(xiàn)。vGPU必須表現(xiàn)為掛載在一級PCI總線的設備,具備獨立的開發(fā)商型號和設備型號,以區(qū)別于現(xiàn)有的其它設備。實現(xiàn)方法是,修改虛擬化設施中的vgaBIOS以及顯卡設備模型,使之支持指定的開發(fā)商代號ID和設備型號ID,并具備報告I/O資源和Memory資源的能力。vGPU模擬的信息必須與vGPU驅(qū)動指定的信息一致,以此確保在虛擬機操作系統(tǒng)的啟動和運行階段,能夠按照PCI設備正常發(fā)現(xiàn)vGPU和完成驗證檢查,避免發(fā)生沖突。

b)VGA設備特性。GPU顯卡的基礎功能是傳統(tǒng)的VGA顯卡功能,一方面vGPU顯卡通常仍然需要利用VGA的部分功能完成某些顯示相關的工作;另一方面客戶機操作系統(tǒng)會在三種情況下運行在VGA這種低級模式,包括啟動階段、顯示模式切換階段以及系統(tǒng)異常階段。VGA設備特性實現(xiàn)方法是,修改虛擬化設施中的vgaBIOS以及顯卡設備模型,按照標準VGA以及VESA的規(guī)范,完成寄存器功能和中斷調(diào)用功能的模擬?,F(xiàn)有的虛擬化設施軟件通常都已經(jīng)具備這些特性,僅需要對可能沖突的部分特性進行調(diào)整。包括:顯存資源地址范圍,I/O寄存器地址范圍和中斷向量表地址范圍。

c)GPU設備特性。vGPU前端作為虛擬設備,其職責為銜接上層的vGPU驅(qū)動和下層的vGPU后端。同時作為虛擬設備,不需要實現(xiàn)物理GPU全部的復雜功能。GPU設備特性可以基于現(xiàn)有的虛擬化軟件設施中的顯卡設備模型進行修改,即修改Qemu。具體要求是,增加顯存段或顯存頁表機制,能夠任意分配顯存資源,滿足GPU對RenderTarget(渲染目標平面)、Texture(紋理)操作的要求,支持GPU特性集合的設置與維護。

(3)vGPU后端

vGPU后端由運行在宿主機中虛擬化軟件實現(xiàn),其職責是基于物理層硬件,通過調(diào)度并處理vGPU前端提交的3D請求,從而最終完成vGPU功能。

基本思路是,首先對服務器的物理CPU(顆/核)進行分組,然后選擇其中一組CPU專用于GPU功能模擬。用于GPU功能模擬的CPU組,專門運行3D流水線程序,不受其它進程的搶占,與各虛擬機并發(fā)工作。

具體實現(xiàn)方法:

a)物理CPU分組控制。調(diào)整宿主機操作系統(tǒng)的CPU及進程調(diào)度策略,把服務器的物理CPU分成三組,第一組專供虛擬機使用,即支持vCPU功能和通用的設備模擬功能,該CPU組維持經(jīng)典的系統(tǒng)虛擬化原理功能;第二組CPU則專門作為vGPU后端,完成GPU功能模擬,這是本發(fā)明原理的關鍵(該CPU組稱為BackEnd組)。修改調(diào)度策略的主要目的,是防止其它進程或虛擬機被調(diào)度到BackEnd組,確保這組CPU的專用性;第三組支持宿主機操作系統(tǒng)的其它進程,例如虛擬機管理、遠程管理等工具進程。CPU分組控制示意圖見圖2。

b)BackEnd組構(gòu)成專用CPU資源池。根據(jù)vGPU前端提交的請求負載情況,組中CPU資源動態(tài)分配和伸縮,為前端提供足夠能力的服務。BackEnd組中物理CPU的數(shù)量不必固定,而可以是一個可以配置的范圍,這個范圍的主要決定因素是實際業(yè)務環(huán)境中3D應用本身的輕重程度和平均業(yè)務量。

c)3D流水線功能。BackEnd組中CPU所運行的進程,由一組3D處理流水線模塊構(gòu)成。每一個流水線模塊,對應完成3D處理的一個階段;階段之間通過預定義的輸入輸出格式進行傳遞。流水線至少需要支持兩個階段:一個是頂點渲染階段,負責圖元位置信息的處理;另一個是像素渲染階段,負責圖元顏色內(nèi)容的處理。為適應當前占主流地位的定制流水線機制,對于這兩個階段還有一個特殊要求,必須支持外部渲染器(shader)代碼的嵌入。

vGPU驅(qū)動、前端以及后端三個層次之間的交互方式,具體描述如下。

a)vGPU驅(qū)動與vGPU前端的交互,如圖3所示。vGPU前端由Qemu模擬實現(xiàn),向驅(qū)動提供三類形式的交互接口。其中,ROM負責提供vGPU顯卡的硬件信息和資源設置;RAM提供顯示資源緩沖區(qū);I/O寄存器組提供刷新命令、配置命令等。

b)vGPU前端與后端的交互,如圖4所示。vGPU的前端由Qemu模擬實現(xiàn),從宿主機角度,vGPU前端屬于Qemu進程;而vGPU的后端是承載3D流水線功能的一組模塊,其運行形式也是宿主機操作系統(tǒng)的進程。因而,前后端的交互通信基于共享內(nèi)存實現(xiàn)。共享內(nèi)存提供兩種形式的接口,命令隊列和資源緩存。命令隊列負責傳遞操作命令,資源緩存負責維護大尺寸的資源。前端Qemu進程通過共享內(nèi)存接口發(fā)出服務請求;后端流水線進程,基于共享內(nèi)存接口響應請求,提供GPU服務。前端Qemu進程由支持虛擬機的CPU組負責調(diào)度運行;后端流水線進程專門由Backend組CPU運行。前后端進程是真正的并發(fā)運行模式。

本發(fā)明的典型實施場景是,基于Linux宿主機操作系統(tǒng),以QEMU/KVM作為虛擬化設施,以Windows 7作為客戶機操作系統(tǒng),通過Spice虛擬桌面協(xié)議支持3D應用的遠程使用。以下以此為背景,說明本發(fā)明的最佳實施方式,主要包括以下四步。

(1)修改宿主機操作系統(tǒng)的調(diào)度策略

修改Linux操作系統(tǒng)的進程CPU親和性設置,即進程綁定CPU策略,對物理CPU(顆/核)分為三組使用。

a)第一組用于支持虛擬機。Qemu實質(zhì)上僅是宿主機操作系統(tǒng)中的一個普通進程,可以利用taskset命令行工具完成虛擬機與CPU綁定。通常,根據(jù)運行虛擬機的數(shù)量,分配相當數(shù)量的CPU(顆或核)與之綁定,即典型情況下一對一。

b)第二組用于支持vGPU,即BACKEND組。根據(jù)實際業(yè)務環(huán)境中,3D應用本身的輕重程度和3D請求業(yè)務量,決定組內(nèi)CPU的數(shù)量。

c)第三組用于支持宿主機常規(guī)進程。作為虛擬機容器的服務器,其它用途的應用進程很少且負載輕,因此通常只要綁定一顆CPU即可。

(2)擴展虛擬化設施軟件支持vGPU后端

實現(xiàn)一個獨立進程,承載GPU的計算能力,配合Qemu完成vGPU后端功能。對于該進程有兩個要求:

a)支持多線程/多上下文。每個線程對應一個獨立的上下文。每個上下文內(nèi)容包括:作為顯存使用的一段內(nèi)存區(qū)域;獨立的寄存器組狀態(tài);其它內(nèi)部處理階段需要維護的必要狀態(tài)。

b)由若干個功能模塊構(gòu)成3D處理流水線。包括:矩陣變換模塊,光照處理模塊,裁剪和投影模塊,紋理映射模塊,像素光柵化模塊。模塊之間定義輸入輸出接口,基于內(nèi)存?zhèn)鬟f數(shù)據(jù)流。

(3)修改虛擬化設施軟件支持vGPU前端

基于現(xiàn)有Qemu中顯卡模型中的QXL實現(xiàn)模型,修改Qemu的vga設備模塊和vgaBIOS。對于原有的PCI設備特性、VGA設備特性,除了解決必要沖突之外,基本保持原有功能。對于GPU方面的特性,分別面向上層驅(qū)動和下層的vGPU后端,重新構(gòu)建代碼。

面向上層驅(qū)動,需要提供兩種虛擬設備的接口方式,一是I/O寄存器組,支持vGPU特性的設置/獲取,flush等提交指令的執(zhí)行等;二是內(nèi)存映射方式,支持驅(qū)動通過DMA或共享方式操作renderTarget(渲染目標),texture(紋理)等顯存資源。面向下層的vGPU后端,實現(xiàn)基于內(nèi)存的前后端協(xié)同通信方式。

(4)開發(fā)vGPU驅(qū)動

Windows7操作系統(tǒng)的顯示驅(qū)動模型為WDDM,需要實現(xiàn)用戶態(tài)和內(nèi)核態(tài)兩級驅(qū)動。驅(qū)動的實現(xiàn)方法是,以vGPU前端為基礎,向操作系統(tǒng)和應用層報告3D方面的支持特性集,并合理的把3D操作請求轉(zhuǎn)給vGPU前端處理。同時,適應Spice協(xié)議中QXL加速要求,在驅(qū)動層截獲系統(tǒng)渲染請求數(shù)據(jù)和進程渲染請求數(shù)據(jù),基于Spice協(xié)議轉(zhuǎn)至終端完成實際渲染。

上述雖然結(jié)合附圖對本發(fā)明的具體實施方式進行了描述,但并非對本發(fā)明保護范圍的限制,所屬領域技術人員應該明白,在本發(fā)明的技術方案的基礎上,本領域技術人員不需要付出創(chuàng)造性勞動即可做出的各種修改或變形仍在本發(fā)明的保護范圍以內(nèi)。

當前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1