CN106406977B - 一种gpu虚拟化实现系统及方法 - Google Patents

一种gpu虚拟化实现系统及方法 Download PDF

Info

Publication number
CN106406977B
CN106406977B CN201610739894.5A CN201610739894A CN106406977B CN 106406977 B CN106406977 B CN 106406977B CN 201610739894 A CN201610739894 A CN 201610739894A CN 106406977 B CN106406977 B CN 106406977B
Authority
CN
China
Prior art keywords
vgpu
gpu
module
cpu
group
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201610739894.5A
Other languages
English (en)
Other versions
CN106406977A (zh
Inventor
石磊
张辉
程栋
牛文强
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shandong Qianyun Qichuang Information Technology Co Ltd
Original Assignee
Shandong Qianyun Qichuang Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shandong Qianyun Qichuang Information Technology Co Ltd filed Critical Shandong Qianyun Qichuang Information Technology Co Ltd
Priority to CN201610739894.5A priority Critical patent/CN106406977B/zh
Publication of CN106406977A publication Critical patent/CN106406977A/zh
Application granted granted Critical
Publication of CN106406977B publication Critical patent/CN106406977B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation
    • G06F9/45525Optimisation or modification within the same instruction set architecture, e.g. HP Dynamo
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Image Generation (AREA)

Abstract

本发明公开了一种GPU虚拟化实现系统及方法,包括vGPU驱动模块、vGPU前端模块以及vGPU后端模块,分别属于客户机操作系统、客户机虚拟设备以及宿主机操作系统这三个层次,此外整个体系最终需要物理层CPU和内存等硬件资源的支撑,但是不要求具备硬件GPU。上述各部分相互协作,共同实现vGPU功能。相对于GRID技术和XENGT/KVMGT等硬件辅助技术,本发明不要求外插/内置GRID显卡,也不要求升级更换搭载具备GPU功能的CPU型号。因而在适应性和实施成本控制方面具备优势。

Description

一种GPU虚拟化实现系统及方法
技术领域
本发明涉及一种GPU虚拟化实现系统及方法。
背景技术
在GPU(Graphics Processing Unit图形处理器)虚拟化领域,目前存在三类典型的技术方案。
(1)NVIDIA主导的GRID GPU虚拟化技术
NVIDIA的GPU虚拟化方案基于其特殊设计的一款GPU显卡,该类型GPU可以模拟若干GPU的能力,从而同时为若干台虚拟机提供服务,这些模拟出来的GPU单元称为vGPU。每台虚拟机绑定一个独立的vGPU,使得GUEST操作系统和其中运行的3D应用直接使用vGPU的处理能力,达到接近于物理计算机使用本地硬件GPU处理的效果体验。
目前,Citrix、VMware以及Microsoft(RemoteFX)都基于GRID硬件,推出了自己的桌面/应用虚拟化方案,以提升其产品对3D应用的支持能力。
GRID GPU虚拟化技术已经取得一些商业化应用,但在实际中主要面临成本过高的问题。以入门级GRID K1显卡(支持8个vGPU)为例,目前其市场价格在一万元左右。而实际中,虚拟化环境需要支持的客户虚拟机数量可能达到数十台至上百台,所以显卡的投入会占据建设投资的主要比重。同时,在服务器上额外增加GRID卡,通常要受到服务器类型、设计能力等因素的影响,PCI总线能力、内存容量等都是软硬件升级方案需要考虑的方面,这也显著增加了相关成本和实施的复杂性。
(2)INTEL的XENGT/KVMGT GPU虚拟化技术方案
Intel XENGT/KVMGT方案的主要原理是,在虚拟化层为每台虚拟机模拟一块独立GPU显卡(以下也称为vGPU),vGPU对上层应用提交的3D操作请求,按照其类型识别为两类:显存操作请求和寄存器IO操作请求。对于显存操作请求,直接映射操作宿主机层硬件GPU中的一块对应显存,称为Passthrough方式,由于跨过中间若干环节,可以减少时间资源的消耗,提高整体处理效率;对于寄存器IO操作请求,采用陷入再模拟的方式统一安排调度,称为Trap方式,达到一套硬件GPU计算单元分时复用的目的。所以,XENGT/KVMGT方案试图通过一块成本较低GPU卡,同时支持多台虚拟机对GPU的需求。
该方案面临的主要问题是,必须依赖于Intel特定型号的芯片支持。Intel的GPU是与CPU集成的,不同型号用途的CPU搭载相应的GPU或者根本没有集成GPU。对于服务器而言,出于用途和成本考虑,其使用的CPU大多不集成GPU。因而在实际环境中,XENGT/KVMGT技术的应用推广具有很大的局限性。
(3)利用纯软件库模拟GPU
前面所述两种技术方案最终都需要硬件GPU支持,与它们相对应,还有一种纯软件模拟的技术方案。其原理是:在API层实现一个软件库,使得在没有GPU或仅具备低端GPU的设备上,可以模拟运行3D应用。最典型的实现是MESA,一个用于模拟OpenGL设备的开源软件库,它最基本的运行模式是纯软件模拟方式;Microsoft的Directx也支持类似的软设备模拟模式。这类软件库无论是安装到虚拟机操作系统还是实体机操作系统中,都可以模拟GPU能力,从而运行各种主流3D应用。
纯软件库模拟GPU技术,其最大的问题是性能很差,因而主要用于软件调试环境或作为硬件GPU部分特性的补充;目前不适合应用到实际生产环境中。
发明内容
本发明为了解决上述问题,提出了一种GPU虚拟化实现系统及方法,本发明为虚拟机提供虚拟GPU能力,支持主流3D应用的流畅运行。能够适应现实情况,不要求服务器外接或内置GPU硬件;从vGPU运行效率出发,整体上调整了系统虚拟化的体系结构,克服传统软件模拟库效率低下的问题。
为了实现上述目的,本发明采用如下技术方案:
一种GPU虚拟化实现系统,包括vGPU驱动模块、vGPU前端模块以及vGPU后端模块,其中:
所述vGPU驱动模块,隶属于客户机操作系统,向应用层提供vGPU支持的操作类型和支持的级别,同时截获虚拟设备层的3D请求,同时确认虚拟设备的特性信息;
所述vGPU前端模块,被配置为模拟能够被客户机操作系统发现的GPU显卡设备,具备PCI设备特性、VGA设备特性以及GPU设备特性,为vGPU驱动模块和vGPU后端模块提供衔接渠道;
所述vGPU后端模块,被配置为基于物理层硬件,通过调度并处理vGPU前端模块提交的3D请求,对服务器的物理CPU进行分组,然后选择其中一组CPU专用于GPU功能模拟从而最终完成vGPU功能。
所述vGPU后端模块,被配置在宿主机操作系统内,与物理层通讯,同时与客户机虚拟设备层的vGPU前端模块通讯,所述vGPU前端模块接收客户机操作系统的vGPU驱动模块发出的驱动请求。
所述vGPU前端模块,被配置为通过Qemu模拟向vGPU驱动模块提供ROM、RAM和I/O寄存器组三种形式的交互接口,所述ROM提供vGPU显卡的硬件信息和资源设置,RAM提供显示资源缓冲区,I/O寄存器组提供刷新命令和配置命令。
所述vGPU前端模块与vGPU后端模块共享内存实现通信,所述共享内存提供命令队列和资源缓存两种形式的接口,命令队列负责传递操作命令,资源缓存负责维护与命令相关的资源。
所述vGPU前端模块通过Qemu进程通过共享内存接口发出服务请求,vGPU后端模块为流水线进程,基于共享内存接口响应请求,提供GPU服务,前端Qemu进程由支持虚拟机的CPU组负责调度运行;流水线进程专门由Backend组CPU运行,两进程采用并发运行模式。
所述vGPU驱动模块提供一个支持特性集,说明vGPU能够支持的操作类型和支持的级别,如果集合中标记了对某项特性的支持,则必须在vGPU前端模块和vGPU后端模块的实现中支持此特性。
所述vGPU前端模块在虚拟机启动阶段被客户机操作系统发现,其被配置为表现为挂载在一级PCI总线的设备,具备独立的开发商型号和设备型号,同时保证vGPU前端模块模拟的信息与vGPU驱动模块指定的信息一致。
所述vGPU前端模块被设置有VGA设备特性,通过修改虚拟化设施中的显存资源地址范围,I/O寄存器地址范围和中断向量表地址范围来实现。
所述vGPU前端模块被设置有GPU设备特性,当增加显存段或显存页表机制时,vGPU前端模块能够任意分配显存资源,满足GPU对渲染目标平面和纹理操作的要求,支持GPU特性集合的设置与维护。
一种GPU虚拟化实现方法,包括以下步骤:
(1)进行宿主机操作系统的进程绑定CPU操作,对物理CPU进行分组使用;
(2)利用一个独立进程来承载GPU的计算能力,作为vGPU后端,构建支持多线程/多上下文的内存区域与3D处理流水线;
(3)修改虚拟化设施的设备特性,向上层驱动提供I/O寄存器组和内存映射方式两种接口,利用基于内存的前后端协同通信方式与vGPU后端通信;
(4)以vGPU前端为基础,向操作系统和应用层报告3D方面的支持特性集,并把3D操作请求转给vGPU前端处理,在驱动层截获系统渲染请求数据和进程渲染请求数据,基于Spice协议转至终端完成实际渲染。
所述步骤(1)中,对物理CPU分为三组使用,具体包括第一组用于支持虚拟机、第二组用于支持vGPU和第三组用于支持宿主机常规进程。
本发明的有益效果为:
(1)相对于GRID技术和XENGT/KVMGT等硬件辅助技术,本发明不要求外插/内置GRID显卡,也不要求升级更换搭载具备GPU功能的CPU型号。因而在适应性和实施成本控制方面具备优势;
(2)针对现有软件库模拟方式性能低的问题,本发明以调整系统虚拟化体系结构的方式,在物理层隔离出若干物理CPU专门用于执行GPU功能,解决因为虚拟机/进程上下文切换导致的无谓损耗问题。同时,这组CPU与虚拟机使用的CPU组并行工作,原理上相当于真实GPU与CPU协同并行工作的方式,有利3D系统处理性能的发挥;
(3)本发明在驱动层截获3D请求的高级语义,通过合并优化请求,显著的提升3D处理效率。
附图说明
图1为本发明的整体逻辑框架示意图;
图2为本发明的CPU分组控制示意图;
图3为本发明的vGPU驱动与vGPU前端的交互过程示意图;
图4为本发明的vGPU前端与vGPU后端的交互过程示意图。
具体实施方式:
下面结合附图与实施例对本发明作进一步说明。
现有主流的GPU虚拟化技术,可分为两类。一类技术要求在服务器上外接或内置GPU硬件,但是由于实际环境中的服务器大多数没有GPU(或相当于GPU的硬件),升级扩展服务器必须付出很高的成本,而且能否升级还要受到许多因素的制约;另一类技术是纯软件方法,直接在API层通过软件库模拟GPU的3D处理能力,虽然不用升级硬件,但是效率很低,不能满足实际生产环境的要求。
本发明的任务是提出一种GPU虚拟化技术方案,为虚拟机提供虚拟GPU能力,支持主流3D应用的流畅运行。相对于现有的第一类方案,本发明适应现实情况,不要求服务器外接或内置GPU硬件;与第二类方案单纯在API层实现功能不同,本发明从vGPU运行效率出发,整体上调整了系统虚拟化的体系结构,克服传统软件模拟库效率低下的问题。
本发明整体逻辑框架如图1所示,包括vGPU驱动、vGPU前端以及后端三个部分,分别属于客户机操作系统、客户机虚拟设备以及宿主机操作系统这三个层次,此外整个体系最终需要物理层CPU和内存等硬件资源的支撑,但是不要求具备硬件GPU。上述各部分相互协作,共同实现vGPU功能。
(1)vGPU驱动
vGPU驱动属于客户机操作系统(GUEST OS)的一部分,驱动的框架遵循客户机操作系统要求的驱动模型规范,例如对于Windows需要遵循WDDM/XDDM模型。本发明以vGPU为基础,实现一个完整的驱动,为上层的操心系统及3D应用提供各种3D能力支持。
vGPU驱动承担抽象硬件层(HAL)的接口功能,负责以下三项功能:
a)向应用层报告vGPU的能力。3D应用在实际使用GPU之前,都会首先查询GPU能力,然后决定是否进入相应的硬件协处理流程。因而vGPU驱动必须提供一个支持特性集,说明vGPU能够支持的操作类型和支持的级别。一旦集合中标记了对某项特性的支持,则必须在vGPU的前后端实现中支持此特性。该集合的定制需要根据实际需要,在支持范围和实现代价之间权衡。对于轻量级的3D应用场景,定义基本级集合,仅包含最基础的3D支持特性;对于需要使用专业3D软件的场景,则必须实现包含更多特性的高级特性集合。
b)截获3D请求。驱动层相对于设备层,更接近于应用,因而可以截获高级语义的3D请求。高级语义3D请求相对数量少,而且容易进行合并或优化。驱动最终把处理后的请求转向vGPU前端进行下一步的处理。这样的效果是:简化vGPU设备的接口设计,消除不必要的中间环节,并能显著提高效率。
c)绑定特定的关键信息。这些关键信息主要包括:开发商标识(VendorID),设备类型标识(DeviceID),资源地址信息等。它们必须与vGPU设备的前后端准备设置的特性相一致,以避免冲突。
(2)vGPU前端
vGPU前端,模拟一个可以被客户机操作系统发现的GPU显卡设备,实现三个层次的特性,包括PCI设备特性、VGA设备特性以及GPU设备特性。从实现角度,vGPU前端功能主要由虚拟化软件设施的设备虚拟化模块支持。因此具体特性的实现需要基于现有虚拟化软件设施进行改造,当前最流行的开源虚拟化软件包括KVM和XEN两类,它们的设备虚拟化设施实际都是Qemu,因此vGPU前端的实现主要集中在对Qemu的改造上。
a)PCI设备特性。vGPU作为PCI设备,首先应当在虚拟机启动阶段被客户机操作系统发现。vGPU必须表现为挂载在一级PCI总线的设备,具备独立的开发商型号和设备型号,以区别于现有的其它设备。实现方法是,修改虚拟化设施中的vgaBIOS以及显卡设备模型,使之支持指定的开发商代号ID和设备型号ID,并具备报告I/O资源和Memory资源的能力。vGPU模拟的信息必须与vGPU驱动指定的信息一致,以此确保在虚拟机操作系统的启动和运行阶段,能够按照PCI设备正常发现vGPU和完成验证检查,避免发生冲突。
b)VGA设备特性。GPU显卡的基础功能是传统的VGA显卡功能,一方面vGPU显卡通常仍然需要利用VGA的部分功能完成某些显示相关的工作;另一方面客户机操作系统会在三种情况下运行在VGA这种低级模式,包括启动阶段、显示模式切换阶段以及系统异常阶段。VGA设备特性实现方法是,修改虚拟化设施中的vgaBIOS以及显卡设备模型,按照标准VGA以及VESA的规范,完成寄存器功能和中断调用功能的模拟。现有的虚拟化设施软件通常都已经具备这些特性,仅需要对可能冲突的部分特性进行调整。包括:显存资源地址范围,I/O寄存器地址范围和中断向量表地址范围。
c)GPU设备特性。vGPU前端作为虚拟设备,其职责为衔接上层的vGPU驱动和下层的vGPU后端。同时作为虚拟设备,不需要实现物理GPU全部的复杂功能。GPU设备特性可以基于现有的虚拟化软件设施中的显卡设备模型进行修改,即修改Qemu。具体要求是,增加显存段或显存页表机制,能够任意分配显存资源,满足GPU对RenderTarget(渲染目标平面)、Texture(纹理)操作的要求,支持GPU特性集合的设置与维护。
(3)vGPU后端
vGPU后端由运行在宿主机中虚拟化软件实现,其职责是基于物理层硬件,通过调度并处理vGPU前端提交的3D请求,从而最终完成vGPU功能。
基本思路是,首先对服务器的物理CPU(颗/核)进行分组,然后选择其中一组CPU专用于GPU功能模拟。用于GPU功能模拟的CPU组,专门运行3D流水线程序,不受其它进程的抢占,与各虚拟机并发工作。
具体实现方法:
a)物理CPU分组控制。调整宿主机操作系统的CPU及进程调度策略,把服务器的物理CPU分成三组,第一组专供虚拟机使用,即支持vCPU功能和通用的设备模拟功能,该CPU组维持经典的系统虚拟化原理功能;第二组CPU则专门作为vGPU后端,完成GPU功能模拟,这是本发明原理的关键(该CPU组称为BackEnd组)。修改调度策略的主要目的,是防止其它进程或虚拟机被调度到BackEnd组,确保这组CPU的专用性;第三组支持宿主机操作系统的其它进程,例如虚拟机管理、远程管理等工具进程。CPU分组控制示意图见图2。
b)BackEnd组构成专用CPU资源池。根据vGPU前端提交的请求负载情况,组中CPU资源动态分配和伸缩,为前端提供足够能力的服务。BackEnd组中物理CPU的数量不必固定,而可以是一个可以配置的范围,这个范围的主要决定因素是实际业务环境中3D应用本身的轻重程度和平均业务量。
c)3D流水线功能。BackEnd组中CPU所运行的进程,由一组3D处理流水线模块构成。每一个流水线模块,对应完成3D处理的一个阶段;阶段之间通过预定义的输入输出格式进行传递。流水线至少需要支持两个阶段:一个是顶点渲染阶段,负责图元位置信息的处理;另一个是像素渲染阶段,负责图元颜色内容的处理。为适应当前占主流地位的定制流水线机制,对于这两个阶段还有一个特殊要求,必须支持外部渲染器(shader)代码的嵌入。
vGPU驱动、前端以及后端三个层次之间的交互方式,具体描述如下。
a)vGPU驱动与vGPU前端的交互,如图3所示。vGPU前端由Qemu模拟实现,向驱动提供三类形式的交互接口。其中,ROM负责提供vGPU显卡的硬件信息和资源设置;RAM提供显示资源缓冲区;I/O寄存器组提供刷新命令、配置命令等。
b)vGPU前端与后端的交互,如图4所示。vGPU的前端由Qemu模拟实现,从宿主机角度,vGPU前端属于Qemu进程;而vGPU的后端是承载3D流水线功能的一组模块,其运行形式也是宿主机操作系统的进程。因而,前后端的交互通信基于共享内存实现。共享内存提供两种形式的接口,命令队列和资源缓存。命令队列负责传递操作命令,资源缓存负责维护大尺寸的资源。前端Qemu进程通过共享内存接口发出服务请求;后端流水线进程,基于共享内存接口响应请求,提供GPU服务。前端Qemu进程由支持虚拟机的CPU组负责调度运行;后端流水线进程专门由Backend组CPU运行。前后端进程是真正的并发运行模式。
本发明的典型实施场景是,基于Linux宿主机操作系统,以QEMU/KVM作为虚拟化设施,以Windows 7作为客户机操作系统,通过Spice虚拟桌面协议支持3D应用的远程使用。以下以此为背景,说明本发明的最佳实施方式,主要包括以下四步。
(1)修改宿主机操作系统的调度策略
修改Linux操作系统的进程CPU亲和性设置,即进程绑定CPU策略,对物理CPU(颗/核)分为三组使用。
a)第一组用于支持虚拟机。Qemu实质上仅是宿主机操作系统中的一个普通进程,可以利用taskset命令行工具完成虚拟机与CPU绑定。通常,根据运行虚拟机的数量,分配相当数量的CPU(颗或核)与之绑定,即典型情况下一对一。
b)第二组用于支持vGPU,即BACKEND组。根据实际业务环境中,3D应用本身的轻重程度和3D请求业务量,决定组内CPU的数量。
c)第三组用于支持宿主机常规进程。作为虚拟机容器的服务器,其它用途的应用进程很少且负载轻,因此通常只要绑定一颗CPU即可。
(2)扩展虚拟化设施软件支持vGPU后端
实现一个独立进程,承载GPU的计算能力,配合Qemu完成vGPU后端功能。对于该进程有两个要求:
a)支持多线程/多上下文。每个线程对应一个独立的上下文。每个上下文内容包括:作为显存使用的一段内存区域;独立的寄存器组状态;其它内部处理阶段需要维护的必要状态。
b)由若干个功能模块构成3D处理流水线。包括:矩阵变换模块,光照处理模块,裁剪和投影模块,纹理映射模块,像素光栅化模块。模块之间定义输入输出接口,基于内存传递数据流。
(3)修改虚拟化设施软件支持vGPU前端
基于现有Qemu中显卡模型中的QXL实现模型,修改Qemu的vga设备模块和vgaBIOS。对于原有的PCI设备特性、VGA设备特性,除了解决必要冲突之外,基本保持原有功能。对于GPU方面的特性,分别面向上层驱动和下层的vGPU后端,重新构建代码。
面向上层驱动,需要提供两种虚拟设备的接口方式,一是I/O寄存器组,支持vGPU特性的设置/获取,flush等提交指令的执行等;二是内存映射方式,支持驱动通过DMA或共享方式操作renderTarget(渲染目标),texture(纹理)等显存资源。面向下层的vGPU后端,实现基于内存的前后端协同通信方式。
(4)开发vGPU驱动
Windows7操作系统的显示驱动模型为WDDM,需要实现用户态和内核态两级驱动。驱动的实现方法是,以vGPU前端为基础,向操作系统和应用层报告3D方面的支持特性集,并合理的把3D操作请求转给vGPU前端处理。同时,适应Spice协议中QXL加速要求,在驱动层截获系统渲染请求数据和进程渲染请求数据,基于Spice协议转至终端完成实际渲染。
上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。

Claims (10)

1.一种GPU虚拟化实现系统,其特征是:包括vGPU驱动模块、vGPU前端模块以及vGPU后端模块,其中:
所述vGPU驱动模块,隶属于客户机操作系统,向应用层提供vGPU支持的操作类型和支持的级别,同时截获虚拟设备层的3D请求,同时确认虚拟设备的特性信息;
所述vGPU前端模块,被配置为模拟能够被客户机操作系统发现的GPU显卡设备,具备PCI设备特性、VGA设备特性以及GPU设备特性,为vGPU驱动模块和vGPU后端模块提供衔接渠道;
所述vGPU后端模块,被配置为基于物理层硬件,通过调度并处理vGPU前端模块提交的3D请求,对服务器的物理CPU进行分组,然后选择其中一组CPU专用于GPU功能模拟从而最终完成vGPU功能。
2.如权利要求1所述的一种GPU虚拟化实现系统,其特征是:所述vGPU后端模块,被配置在宿主机操作系统内,与物理层通讯,同时与客户机虚拟设备层的vGPU前端模块通讯,所述vGPU前端模块接收客户机操作系统的vGPU驱动模块发出的驱动请求。
3.如权利要求1所述的一种GPU虚拟化实现系统,其特征是:所述vGPU前端模块,被配置为通过Qemu模拟向vGPU驱动模块提供ROM、RAM和I/O寄存器组三种形式的交互接口,所述ROM提供vGPU显卡的硬件信息和资源设置,RAM提供显示资源缓冲区,I/O寄存器组提供刷新命令和配置命令。
4.如权利要求1所述的一种GPU虚拟化实现系统,其特征是:所述vGPU前端模块与vGPU后端模块共享内存实现通信,所述共享内存提供命令队列和资源缓存两种形式的接口,命令队列负责传递操作命令,资源缓存负责维护大尺寸的资源。
5.如权利要求1所述的一种GPU虚拟化实现系统,其特征是:所述vGPU前端模块通过Qemu进程通过共享内存接口发出服务请求,vGPU后端模块为流水线进程,基于共享内存接口响应请求,提供GPU服务,前端Qemu进程由支持虚拟机的CPU组负责调度运行;流水线进程专门由Backend组CPU运行,两进程采用并发运行模式。
6.如权利要求1所述的一种GPU虚拟化实现系统,其特征是:所述vGPU前端模块在虚拟机启动阶段被客户机操作系统发现,其被配置为表现为挂载在一级PCI总线的设备,具备独立的开发商型号和设备型号,同时保证vGPU前端模块模拟的信息与vGPU驱动模块指定的信息一致。
7.如权利要求1所述的一种GPU虚拟化实现系统,其特征是:所述vGPU前端模块被设置有VGA设备特性,通过修改虚拟化设施中的显存资源地址范围,I/O寄存器地址范围和中断向量表地址范围来实现。
8.如权利要求1所述的一种GPU虚拟化实现系统,其特征是:所述vGPU前端模块被设置有GPU设备特性,当增加显存段或显存页表机制时,vGPU前端模块能够任意分配显存资源,满足GPU对渲染目标平面和纹理操作的要求,支持GPU特性集合的设置与维护。
9.一种基于如权利要求1所述的GPU虚拟化实现系统的实现方法,其特征是:包括以下步骤:
(1)进行宿主机操作系统的进程绑定CPU操作,对物理CPU进行分组使用;
(2)利用一个独立进程来承载GPU的计算能力,作为vGPU后端,构建支持多线程/多上下文的内存区域与3D处理流水线;
(3)修改虚拟化设施的设备特性,向上层驱动提供I/O寄存器组和内存映射方式两种接口,利用基于内存的前后端协同通信方式与vGPU后端通信;
(4)以vGPU前端为基础,vGPU驱动向操作系统和应用层报告3D方面的支持特性集,并把3D操作请求转给vGPU前端处理,在驱动层截获系统渲染请求数据和进程渲染请求数据,基于Spice协议转至终端完成实际渲染。
10.如权利要求9所述的一种GPU虚拟化实现方法,其特征是:所述步骤(1)中,对物理CPU分为三组使用,具体包括第一组用于支持虚拟机、第二组用于支持vGPU和第三组用于支持宿主机常规进程。
CN201610739894.5A 2016-08-26 2016-08-26 一种gpu虚拟化实现系统及方法 Active CN106406977B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610739894.5A CN106406977B (zh) 2016-08-26 2016-08-26 一种gpu虚拟化实现系统及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610739894.5A CN106406977B (zh) 2016-08-26 2016-08-26 一种gpu虚拟化实现系统及方法

Publications (2)

Publication Number Publication Date
CN106406977A CN106406977A (zh) 2017-02-15
CN106406977B true CN106406977B (zh) 2019-06-11

Family

ID=58002396

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610739894.5A Active CN106406977B (zh) 2016-08-26 2016-08-26 一种gpu虚拟化实现系统及方法

Country Status (1)

Country Link
CN (1) CN106406977B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11797323B2 (en) 2020-09-15 2023-10-24 The Boeing Company Virtual machine for virtualizing graphics functions

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108804217A (zh) * 2017-04-26 2018-11-13 中兴通讯股份有限公司 一种资源调度装置、资源调度系统和资源调度方法
CN107341020A (zh) * 2017-07-12 2017-11-10 浙江键石信息科技有限公司 显卡虚拟化的实现方法及装置、桌面云系统及终端设备
CN110231988B (zh) * 2018-03-05 2021-08-03 龙芯中科技术股份有限公司 显存访问方法、装置及存储介质
CN108829516B (zh) * 2018-05-31 2021-08-10 安徽四创电子股份有限公司 一种图形处理器资源虚拟化调度方法
CN109491788B (zh) * 2018-11-01 2022-12-09 郑州云海信息技术有限公司 一种虚拟化平台负载均衡实现方法及装置
CN109753134B (zh) * 2018-12-24 2022-04-15 四川大学 一种基于全局解耦的gpu内部能耗控制系统及方法
CN109871250A (zh) * 2019-01-16 2019-06-11 山东超越数控电子股份有限公司 基于物理显卡的桌面交付方法、装置、终端及存储介质
CN110196753A (zh) * 2019-01-21 2019-09-03 腾讯科技(北京)有限公司 基于容器的图形处理器gpu虚拟化方法、装置和可读介质
US20200409732A1 (en) * 2019-06-26 2020-12-31 Ati Technologies Ulc Sharing multimedia physical functions in a virtualized environment on a processing unit
CN110413327B (zh) * 2019-07-16 2022-07-19 创新先进技术有限公司 一种基于硬件抽象层的硬件驱动方法和装置
CN110443876A (zh) * 2019-07-31 2019-11-12 新华三大数据技术有限公司 3d图像渲染方法及装置
CN110442389B (zh) * 2019-08-07 2024-01-09 北京技德系统技术有限公司 一种多桌面环境共享使用gpu的方法
CN111090531B (zh) * 2019-12-11 2023-08-04 杭州海康威视系统技术有限公司 一种图形处理器分布式虚拟化的实现方法及分布式系统
CN111158911A (zh) * 2019-12-27 2020-05-15 迈普通信技术股份有限公司 一种处理器配置方法、装置、处理器及网络设备
CN111552554A (zh) * 2020-05-09 2020-08-18 中瓴智行(成都)科技有限公司 基于图形库api代理的gpu虚拟化方法、系统及介质
CN111901414A (zh) * 2020-07-27 2020-11-06 山东超越数控电子股份有限公司 基于虚拟化环境的安全桌面传输协议的实现方法及实现系统
CN111857852B (zh) * 2020-07-28 2022-05-27 Oppo广东移动通信有限公司 驱动系统、信息处理方法、电子设备及存储介质
CN113407353B (zh) * 2021-08-18 2021-12-10 北京壁仞科技开发有限公司 图形处理器资源的使用方法及装置、电子设备
CN113793246B (zh) * 2021-11-16 2022-02-18 北京壁仞科技开发有限公司 图形处理器资源的使用方法及装置、电子设备
CN114758047B (zh) * 2022-06-14 2022-09-13 海马云(天津)信息技术有限公司 服务器与基于服务器的图形渲染方法
CN116257276B (zh) * 2023-05-09 2023-07-25 珠海星云智联科技有限公司 支持虚拟化硬件加速的虚拟宿主机用户后端升级方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103810021A (zh) * 2014-02-19 2014-05-21 福建升腾资讯有限公司 一种vdi下基于宿主机的虚拟桌面显示方法及其系统
CN104239121A (zh) * 2014-08-28 2014-12-24 北京云巢动脉科技有限公司 显卡重定向系统和利用该系统实现图形显示的方法
CN104660711A (zh) * 2015-03-13 2015-05-27 华存数据信息技术有限公司 一种基于图形处理器虚拟化的远程可视化应用方法
CN105487915A (zh) * 2015-11-24 2016-04-13 上海君是信息科技有限公司 一种基于延迟发送机制的gpu虚拟化性能提升的方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110102443A1 (en) * 2009-11-04 2011-05-05 Microsoft Corporation Virtualized GPU in a Virtual Machine Environment
US9412146B2 (en) * 2013-10-25 2016-08-09 Futurewei Technologies, Inc. System and method for distributed virtualization of GPUs in desktop cloud

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103810021A (zh) * 2014-02-19 2014-05-21 福建升腾资讯有限公司 一种vdi下基于宿主机的虚拟桌面显示方法及其系统
CN104239121A (zh) * 2014-08-28 2014-12-24 北京云巢动脉科技有限公司 显卡重定向系统和利用该系统实现图形显示的方法
CN104660711A (zh) * 2015-03-13 2015-05-27 华存数据信息技术有限公司 一种基于图形处理器虚拟化的远程可视化应用方法
CN105487915A (zh) * 2015-11-24 2016-04-13 上海君是信息科技有限公司 一种基于延迟发送机制的gpu虚拟化性能提升的方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11797323B2 (en) 2020-09-15 2023-10-24 The Boeing Company Virtual machine for virtualizing graphics functions

Also Published As

Publication number Publication date
CN106406977A (zh) 2017-02-15

Similar Documents

Publication Publication Date Title
CN106406977B (zh) 一种gpu虚拟化实现系统及方法
US11768781B2 (en) Apparatus and method for memory management in a graphics processing environment
US11354770B2 (en) Apparatus and method for dynamic provisioning, quality of service, and prioritization in a graphics processor
CN109643291B (zh) 用于在虚拟化执行环境中高效使用图形处理资源的方法和设备
Lagar-Cavilla et al. VMM-independent graphics acceleration
CN104737129A (zh) 用于对来宾虚拟机的硬件资源进行虚拟化的专用虚拟机
CN101203834B (zh) 用于在虚拟机监视器和符合acpi的客户操作系统之间进行双向通信的方法、装置及系统
CN101976200B (zh) 在虚拟机监控器外进行输入输出设备虚拟化的虚拟机系统
CN102135866B (zh) 一种基于Xen安全计算机显示优化的方法
US20210245046A1 (en) System architecture for cloud gaming
CN102707986A (zh) 子分区与父分区之间的共享存储器
CN102915285A (zh) 虚拟化环境中的应用加速
CN109690505A (zh) 用于针对虚拟化输入/输出实施方式的混合层地址映射的设备和方法
CN109643277A (zh) 用于中介传递和共享存储器页合并的装置和方法
US11436696B2 (en) Apparatus and method for provisioning virtualized multi-tile graphics processing hardware
US10089264B2 (en) Callback interrupt handling for multi-threaded applications in computing environments
CN104025185A (zh) 用于使用gpu控制器来预加载缓存的机制
US9399172B2 (en) Mechanism for allowing a number of split-screens to share a display on a client device beyond an application's native capacity for split-screening
TW201407536A (zh) 基於伺服器之圖形處理技術
WO2020107427A1 (en) Apparatus and method for a virtualized display
CN111209115A (zh) 云桌面vGPU超分配方法
CN107479964A (zh) 一种云渲染系统
WO2020107405A1 (en) Apparatus and method for efficient local display sharing for a virtualized graphics processor
CN109857517A (zh) 一种虚拟化系统及其数据交换方法
CN107423115A (zh) 显卡虚拟化的方法、装置和系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
PE01 Entry into force of the registration of the contract for pledge of patent right
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: A GPU virtualization implementation system and method

Effective date of registration: 20210129

Granted publication date: 20190611

Pledgee: Jinan Rural Commercial Bank Co.,Ltd. Runfeng sub branch

Pledgor: SHANDONG QIANYUN QICHUANG INFORMATION TECHNOLOGY Co.,Ltd.

Registration number: Y2021980000858

PC01 Cancellation of the registration of the contract for pledge of patent right
PC01 Cancellation of the registration of the contract for pledge of patent right

Date of cancellation: 20220517

Granted publication date: 20190611

Pledgee: Jinan Rural Commercial Bank Co.,Ltd. Runfeng sub branch

Pledgor: SHANDONG QIANYUN QICHUANG INFORMATION TECHNOLOGY Co.,Ltd.

Registration number: Y2021980000858

PE01 Entry into force of the registration of the contract for pledge of patent right
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: A GPU virtualization implementation system and method

Effective date of registration: 20230131

Granted publication date: 20190611

Pledgee: Jinan Rural Commercial Bank Co.,Ltd. Runfeng sub branch

Pledgor: SHANDONG QIANYUN QICHUANG INFORMATION TECHNOLOGY Co.,Ltd.

Registration number: Y2023980031824

PC01 Cancellation of the registration of the contract for pledge of patent right
PC01 Cancellation of the registration of the contract for pledge of patent right

Date of cancellation: 20231222

Granted publication date: 20190611

Pledgee: Jinan Rural Commercial Bank Co.,Ltd. Runfeng sub branch

Pledgor: SHANDONG QIANYUN QICHUANG INFORMATION TECHNOLOGY Co.,Ltd.

Registration number: Y2023980031824

PE01 Entry into force of the registration of the contract for pledge of patent right
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: A GPU virtualization implementation system and method

Effective date of registration: 20231225

Granted publication date: 20190611

Pledgee: Jinan Rural Commercial Bank Co.,Ltd. Runfeng sub branch

Pledgor: SHANDONG QIANYUN QICHUANG INFORMATION TECHNOLOGY Co.,Ltd.

Registration number: Y2023980074231