CN114138423A - 基于国产gpu显卡的虚拟化构建系统及方法 - Google Patents

基于国产gpu显卡的虚拟化构建系统及方法 Download PDF

Info

Publication number
CN114138423A
CN114138423A CN202111517952.7A CN202111517952A CN114138423A CN 114138423 A CN114138423 A CN 114138423A CN 202111517952 A CN202111517952 A CN 202111517952A CN 114138423 A CN114138423 A CN 114138423A
Authority
CN
China
Prior art keywords
gpu
virtual
virtual machine
domestic
virtualization
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.)
Granted
Application number
CN202111517952.7A
Other languages
English (en)
Other versions
CN114138423B (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.)
Shanghai Jiaotong University
709th Research Institute of CSIC
Original Assignee
Shanghai Jiaotong University
709th Research Institute of CSIC
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 Shanghai Jiaotong University, 709th Research Institute of CSIC filed Critical Shanghai Jiaotong University
Priority to CN202111517952.7A priority Critical patent/CN114138423B/zh
Publication of CN114138423A publication Critical patent/CN114138423A/zh
Application granted granted Critical
Publication of CN114138423B publication Critical patent/CN114138423B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • 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/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • 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/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45575Starting, stopping, suspending or resuming virtual machine instances
    • 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/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Stored Programmes (AREA)

Abstract

本发明提供了一种基于国产GPU显卡的虚拟化构建系统及方法,包括宿主机和虚拟机;所述宿主机基于国产GPU显卡模拟虚拟GPU设备;所述虚拟机基于虚拟GPU设备进行指令和数据的转发。本发明将针对国产显卡进行适配、实现基于国产显卡的GPU虚拟化公平调度方案,在保证虚拟化GPU应该具有的资源隔离、分配等关键功能前提下,保障GPU资源的公平调度,提升云计算平台的公共显示效率,减少国产图形处理器显示虚拟化资源的开销。

Description

基于国产GPU显卡的虚拟化构建系统及方法
技术领域
本发明涉及虚拟化构建的技术领域,具体地,涉及一种基于国产GPU显卡的虚拟化构建系统及方法。尤其是,优选的涉及一种基于国产GPU显卡的虚拟化构建与QoS控制方法。
背景技术
随着国内GPU显卡技术和国产处理器的不断成熟,国产GP100系列显卡目前正被越来越多的国产处理器所使用,申威处理器架构、飞腾处理器架构都可以使用GP100系列显卡,将其用于图形加速、视频解码。在国内研究机构自主研发的前提下,国产显卡组合国产CPU处理器,可以搭建全部基于国产硬件构成的计算机系统。GP100系列显卡作为配备了国产GPU芯片的显卡,可以支持HDMI、DVI、VGA等通用显示接口,支持2D、3D图形加速和OpenGLES2.0,支持4K分辨率、视频解码和硬件图层处理等功能,可以广泛应用于军民两用电子设备、工业控制、电子信息等领域。在使用GP100系列显卡的基础上,可以根据国内组织机构的特殊需求对显卡功能和特性进行相应的调整和需求,相较于购买国外厂商提供的闭源硬件,GP100系列显卡具有更好的灵活性。GPU英文全称为graphics processing unit,中文译文为图形处理器。HDMI英文全称为High Definition Multimedia Interface,中文译文为高清多媒体接口。DVI的英文全称为Digital Visual Interface,中文译文为数字视频接口。VGA的英文全称为Video Graphics Array,中文译文为视频图形阵列。OpenGL英文全称为Open Graphics Library,中文译文为开放图形库。
然而,国产GPU设备在研发仍处于起步阶段,基于国产GPU设备的开发仍在不断进行中。GP100系列作为一个起步阶段的成果,在没有国外关于GPU的技术支持条件下,其内部架构的优化和功能的支持仍需要投入大量精力。目前,在已成功流片的国产GPU上,受限于硬件电路结构的设计,GP100系列显卡在软件上可提供的功能支持是有限的。同时,由于GP100系列是我国自主研发的GPU显卡,在架构设计上可能与目前成熟的GPU显卡存在显著差异,从而导致许多针对特殊应用场景和需求开发的软件无法成功移植到配置有GP100系列显卡的机器上。以GPU虚拟化显示为例,由于GP100系列显卡内部不支持资源的分离,无法像支持SR-IOV的硬件设备一样将单个物理GPU虚拟成多个具有相同功能的虚拟GPU,以供用户访问,因此在国产GPU设备下很难提供基于硬件的虚拟化支持。在这样的情况下,提供GPU虚拟化显示则需要通过软件模拟的方式来实现,需要允许软件提供GPU虚拟支持,让一个GP100系列显卡支持多个虚拟机的显示,并通过合理的调度方式让不同虚拟显卡的调度尽可能公平。
在基于国产GPU显卡的虚拟化构建方案中,比较关键的技术有如下几个:(1)GPU关键资源映射技术;(2)GPU多通道显示技术;(3)基于服务质量的GPU资源公平调度技术。
在GPU显卡的虚拟化构建中,首先需要通过软件方式模拟GPU显卡,为虚拟机提供虚拟GPU设备。其最终目的是将GPU设备模拟为多个单独的GPU设备,分配一定量的物理资源,让虚拟机通过调用虚拟设备的方式间接调用实际物理设备。此外,单个虚拟GPU可以具有独立的配置,完成物理设备的部分抽象。与此同时,一个物理GPU设备将可以虚拟化出多个虚拟GPU设备,为不同的虚拟机提供不同的服务。多虚拟设备的模拟则需要考虑GPU设备的多通道显示和GPU资源的公平调度,需要为每个虚拟机构建一个独立的通信通道,保证虚拟机之间数据和上下文的独立性,在运行多个虚拟机的情况下,也需要保证每个虚拟GPU设备的性能满足服务质量要求,并通过满足公平性的方式来实现虚拟GPU调度。
公开号为CN112967171A的中国发明专利文献公开了一种基于ARM架构实现GPU虚拟化的系统及方法,包括:虚拟机配置的第一软件模块,及宿主机配置的第二软件模块;所述第一软件模块包含各类应用程序App,所述第二软件模块具备3D渲染功能,可将第一软件模块中的App进行3D渲染。
针对上述中的相关技术,发明人认为目前,设计并实现基于国产GPU显卡的虚拟化构建方法需要面对以下问题:首先,不同于目前主流GPU设备提供的基于硬件的虚拟化,在GP100系列显卡无法提供硬件接口实现GPU设备的虚拟化前提下,必须通过软件方式实现虚拟化。同时,在图像渲染时,GP100系列显卡没有提供公平性调度支持,当多个任务并发时,GP100系列显卡将会因为进程阻塞而导致部分任务无法满足其服务质量的要求,因此在进行虚拟化方案的设计中,必须考虑到不同虚拟GPU设备的公平性调度问题,保证多虚拟GPU设备在满足服务质量要求下进行公平性调度。另外,现有开源虚拟化实现方案无法在飞腾国产处理平台上进行直接的移植与运行,必须以此为参考开发针对GP100系列显卡的虚拟化解决方案。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种基于国产GPU显卡的虚拟化构建系统及方法。
根据本发明提供的一种基于国产GPU显卡的虚拟化构建系统,包括宿主机和虚拟机;
所述宿主机基于国产GPU显卡模拟虚拟GPU设备;
所述虚拟机基于虚拟GPU设备进行指令和数据的转发。
优选的,所述宿主机包括虚拟机管理程序;
在所述虚拟机管理程序中,启动指令中增加虚拟GPU的配置,并启动虚拟机;
所述虚拟机管理程序接收并解析用户参数,注册挂载虚拟GPU设备的PCI-E通道;
基于用户配置,所述虚拟机管理程序注册虚拟GPU设备并挂载在PCI-E通道上。
优选的,所述虚拟机管理程序初始化虚拟GPU设备数据结构,根据用户配置填充虚拟GPU设备相应配置,初始化虚拟GPU设备状态。
优选的,所述虚拟机产生虚拟机GPU设备挂载在与PCI-E通道对应的VirtIO-PCI总线上。
优选的,所述虚拟机包括内核态驱动模块,所述内核态驱动模块构建虚拟机与虚拟机管理程序之间的数据传输通道。
优选的,所述虚拟GPU设备包括用于数据传输的环形缓冲区;所述内核态驱动模块基于环形缓冲区进行指令和数据的转发。
优选的,所述虚拟机管理程序为每个虚拟GPU设备分配共享内存,每个虚拟GPU设备的共享内存用于记录该虚拟GPU设备所需的服务质量与当前该虚拟GPU设备使用物理GPU的实际情况。
根据本发明提供的一种基于国产GPU显卡的虚拟化构建方法,包括如下步骤:
步骤S1:基于国产GPU显卡模拟虚拟GPU设备;
步骤S2:基于虚拟GPU设备进行指令和数据的转发。
优选的,所述步骤S1包括如下步骤:
步骤S1.1:在所述虚拟机管理程序中,启动指令中增加虚拟GPU的配置,并启动虚拟机;
步骤S1.2:所述虚拟机管理程序接收并解析用户参数,注册挂载虚拟GPU设备的PCI-E通道;
步骤S1.3:基于用户配置,所述虚拟机管理程序注册虚拟GPU设备并挂载在PCI-E通道上。
优选的,在所述步骤S1.3中,所述虚拟机管理程序初始化虚拟GPU设备数据结构,根据用户配置填充虚拟GPU设备相应配置,初始化虚拟GPU设备状态。
与现有技术相比,本发明具有如下的有益效果:
1、本发明将针对国产显卡进行适配、实现基于国产显卡的GPU虚拟化公平调度方案,在保证虚拟化GPU应该具有的资源隔离、分配等关键功能前提下,保障GPU资源的公平调度,提升云计算平台的公共显示效率,减少国产图形处理器显示虚拟化资源的开销;
2、本发明实现对GP100系列显卡设备功能抽象以及运行逻辑进行虚拟化设备模型模拟,并通过虚拟机管理系统与GP100系列显卡保持同步的虚拟GPU内核驱动程序;
3、本发明提供使虚拟机与物理机设备上下文保持同步的虚拟化IO通信接口,实现数据与绘图命令的传输以及虚拟GPU设备上下文状态的同步,并实现通信机制的优化以最大程度降低虚拟化IO通信导致的性能下降。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为系统平台的内部整体结构详细描述图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
本发明实施例公开了一种基于国产GPU显卡的虚拟化构建系统,如图1所示,包括宿主机和虚拟机。宿主机基于国产GPU显卡模拟虚拟GPU设备。宿主机包括虚拟机管理程序。在虚拟机管理程序中,启动指令中增加虚拟GPU的配置,并启动虚拟机。虚拟机管理程序接收并解析用户参数,注册挂载虚拟GPU设备的PCI-E通道。基于用户配置,虚拟机管理程序注册虚拟GPU设备并挂载在PCI-E通道上。虚拟机管理程序初始化虚拟GPU设备数据结构,根据用户配置填充虚拟GPU设备相应配置,初始化虚拟GPU设备状态。
虚拟机基于虚拟GPU设备进行指令和数据的转发。虚拟机产生虚拟机GPU设备挂载在与PCI-E通道对应的VirtIO-PCI总线上。虚拟机包括内核态驱动模块,内核态驱动模块构建虚拟机与虚拟机管理程序之间的数据传输通道。虚拟GPU设备包括用于数据传输的环形缓冲区;内核态驱动模块基于环形缓冲区进行指令和数据的转发。
虚拟机管理程序为每个虚拟GPU设备分配共享内存,每个虚拟GPU设备的共享内存用于记录该虚拟GPU设备所需的服务质量与当前该虚拟GPU设备使用物理GPU的实际情况。
本发明实施例还公开了一种基于国产GPU显卡的虚拟化构建与QOS控制方法,如图1所示,鉴于目前国产显卡特性和单卡提供多个虚拟GPU设备的需求,在基于GP100系列显卡上实现GPU显卡的虚拟化构建方案。本发明将针对国产显卡进行适配、实现基于国产显卡的GPU虚拟化公平调度方案,在保证虚拟化GPU应该具有的资源隔离、分配等关键功能前提下,保障GPU资源的公平调度,提升云计算平台的公共显示效率,减少国产图形处理器显示虚拟化资源的开销。
对于整套虚拟显卡构建方案,通过部署在物理机操作系统上的虚拟机管理程序,模拟出一个虚拟GPU设备,为虚拟机提供相应的通讯和硬件支持,最终调用物理GPU设备完成相关功能。
GPU虚拟化构建方案将主要包含以下几个模块进行设计与实现:用户空间虚拟机管理程序中的虚拟GPU的后端驱动模块,用户空间的图形渲染模块,内核虚拟GPU驱动模块,用户空间虚拟通用图形库和分布于虚拟机管理程序以及虚拟机GPU驱动中的基于服务质量的调度模块。各模块按层次分布于宿主机操作系统用户空间、虚拟机操作系统内核空间以及虚拟机操作系统用户空间,用来拦截虚拟机对GPU的请求并将其转发给宿主机操作系统中的图形渲染模块。
其中,位于物理机上的虚拟机管理程序作为虚拟GPU设备的模拟器,同时负责实现与虚拟机内核空间进行通讯和地址映射相关职责。基于服务质量的调度器作为调度模块以钩子函数的形式分布于虚拟机管理程序和虚拟GPU驱动中,在虚拟机管理程序中监控并计算GPU可提供的计算资源,通过Virtio通道回传给虚拟机后在虚拟GPU驱动中基于物理GPU可提供资源,提供基于服务质量的任务调度。
用户空间的图形渲染模块通过虚拟机管理程序和图形渲染程序之间的命名管道接收到虚拟GPU指令后经过序列化操作得到的真实GPU调用指令,并通过调用物理GPU设备实现图像加速功能。
在虚拟机内部,通过内核态虚拟GPU驱动模块,实现虚拟机和客户机之间的通讯,并将对驱动程序的调用封装成遵循通用图形库标准的标准图形库,为虚拟机用户提供与物理机内相同的虚拟机调用方式。
本发明通过API转发的方式提供基于GP100系列显卡的虚拟化平台,在一张物理显卡的基础上,虚拟出多个GPU设备,在多虚拟机并行状态下,提供基于服务质量的调度方案,保障GPU资源的公平调度。API英文全称为Application Programming Interface,中文译文为应用程序接口。其整体结构与交互流程如图1所示。图1表示出GPU虚拟化整体结构与流程。QoS英文全称为Quality of Service,中文译文为服务质量。
在本GPU虚拟化解决方案中,虚拟GPU设备的模拟由以下流程实现:即该虚拟化构建方法包括如下步骤:步骤S1:基于国产GPU显卡模拟虚拟GPU设备。步骤S1包括如下步骤:步骤S1.1:在虚拟机管理程序中,启动指令中增加虚拟GPU的配置,并启动虚拟机。在用户空间虚拟机管理程序中,启动指令中增加虚拟GPU的配置,并启动虚拟机。
步骤S1.2:虚拟机管理程序接收并解析用户参数,注册挂载虚拟GPU设备的PCI-E通道。虚拟机管理程序接收并解析用户参数,注册可以挂载虚拟GPU设备的PCI-E通道。PCI-E英文全称为Peripheral Component Interconnect Express,是一种告诉串行计算机扩展总线标准。
步骤S1.3:基于用户配置,虚拟机管理程序注册虚拟GPU设备并挂载在PCI-E通道上。虚拟机管理程序初始化虚拟GPU设备数据结构,根据用户配置填充虚拟GPU设备相应配置,初始化虚拟GPU设备状态。基于用户配置,虚拟机管理程序将注册一个虚拟GPU设备并将其挂载在上一步创建的PCI-E通道上,同时初始化虚拟GPU设备数据结构,包含用于数据传输的环形缓冲区,根据用户配置填充虚拟GPU设备相应配置,初始化虚拟GPU设备状态。
步骤S2:基于虚拟GPU设备进行指令和数据的转发。完成上述步骤之后,虚拟机中将产生一个虚拟机GPU设备挂载在对应的VirtIO-PCI总线上。虚拟机需要使用内核态驱动模块,构建虚拟机与虚拟机管理程序之间的数据传输通道。通过挂载本方案设计与实现的虚拟显卡驱动,提供对虚拟机PCI设备进行探测、删除、配置空间的设置和寄存器空间的读写功能。
针对于虚拟GPU特性,内核驱动模块将基于虚拟GPU设备用于数据传输的环形缓冲区,完成指令和数据的转发功能。
虚拟机用户程序只需要调用和内核驱动通信并封装了遵循OpenGL标准的通用图形库即可利用虚拟GPU驱动拦截GPU请求,继而转发给宿主机图形绘制程序即可利用物理GPU资源进行计算加速任务。
上述对于GP100系列显卡的设备模拟实现了宿主机对虚拟GPU设备的模拟与虚拟机通过虚拟GPU设备将命令转发到宿主机。通过Linux系统提供的统一虚拟IO接口驱动Virtio,实现了虚拟机和宿主机之间的数据通信,半虚拟化的方式进行数据传递,本质上虚拟机和宿主机共享地址空间,减少了数据频繁的拷贝操作,大大提高了GPU虚拟化过程中的数据传输效率。Virtio中文译文为虚拟IO接口。
在本GPU虚拟化解决方案中,基于服务质量的调度由以下流程实现:1、在创建虚拟GPU设备实例的过程中,虚拟机管理程序将为每个虚拟GPU设备实例分配一块共享内存,用于记录该虚拟GPU设备所需的服务质量与当前该虚拟设备使用物理GPU的实际情况。2、当虚拟机的调用指令通过专用传输通道传输到虚拟机管理系统之后,将基于自适应计算资源调度算法,基于用户定义的服务质量和当前物理GPU使用情况,计算得到在当前运行状态下物理GPU可以满足的实际服务质量FPS。3、在每一帧的实际渲染之前,利用当前帧渲染预估所需时间和需要满足的服务质量PFS,计算得到在本帧渲染前需要空出的GPU时间片,并通过调用sleep函数完成对服务质量的控制。
本发明基于国产GPU显卡的虚拟化方案利用共享内存的方式记录不同虚拟GPU设备对物理GPU的实际使用情况,并找到每一帧渲染的关键函数调用,利用hook函数在关键函数调用前利用自适应计算资源调度算法计算得到的可达服务质量并计算当前虚拟GPU设备睡眠时间,调用sleep函数让出物理GPU时间片,进而保障多个虚拟GPU设备的服务质量。
本发明主要涉及七个主要的点:1、基于虚拟化通用GPU设备系统架构特殊需求的常用图形渲染通用接口标准(API)的具体程序库实现技术。配置于虚拟机系统中的半虚拟化性质图形栈,为上层应用程序提供通用OpenGL图形库,同时转发调用请求并与虚拟GPU设备驱动进行通信。2、实现对GP100系列显卡设备功能抽象以及运行逻辑进行虚拟化设备模型模拟,并通过虚拟机管理系统与GP100系列显卡保持同步的虚拟GPU内核驱动程序。此驱动程序由支持虚拟化的图形库调用,在维护虚拟GPU设备上下文状态来保证GPU图形功能正确实现的同时,向下通过虚拟化IO通信,与物理机保持同步并转发绘图请求。3、支持虚拟化通用GPU设备系统架构中客户机与物理机通信需求,并适配飞腾处理器上运行的麒麟操作系统中的虚拟机管理系统的IO接口通道技术。提供使虚拟机与物理机设备上下文保持同步的虚拟化IO通信接口,实现数据与绘图命令的传输以及虚拟GPU设备上下文状态的同步,并实现通信机制的优化以最大程度降低虚拟化IO通信导致的性能下降。4、部署于物理机环境,接收虚拟机GPU操作请求并调用GPU设备驱动实际处理的图形调用代理服务技术。具体实现图形绘制任务的物理机用户空间代理服务进程,通过与虚拟机进行同步获取绘制命令,并实际访问物理GPU驱动程序实现功能,同时负责管理并呈现图形绘制结果以及相应数据。5、在虚拟机管理系统中监视虚拟机与物理机之间的GPU功能调用请求,同时实现请求统计、挂起、轮替等管理操作的虚拟GPU资源管理技术。通过虚拟机管理系统,监视并控制虚拟机与物理机环境之间的同步与通信。虚拟机管理系统统计各个虚拟机设备运行时的资源消耗,并将虚拟机实际可分配得到的GPU资源反馈给虚拟机,虚拟机驱动程序通过推迟一些请求执行调整虚拟设备之间的资源分配来控制物理机环境中的设备上下文进行操作以实现虚拟GPU设备的公平调度。6、通过对不同类型应用负载下的GPU资源调度技术进行研究,建立多虚拟机环境下的GPU虚拟化调度模型,保障GPU资源公平调度需求的GPU资源调度机制技术。为了使对公平性指标要求的具体实现成立,通过引入符合需求标准的性能指标并配置相应公平性调度策略,周期性基于引入的策略对GPU设备上下文进行控制(挂起,轮替等)以实现预定义的特定性能保证要求。7、呈现不同虚拟机图形渲染结果,并行显示运行时虚拟机图形呈现的公共GPU渲染显示终端技术。在物理机用户空间部署相应图形显示终端,通过连接绘制命令代理服务程序实时获取对应虚拟机GPU请求渲染结果,进行并行的图像实时显示。
通过这7个点的共同作用,我们能够得到的效果为:实现基于国产GP100系列显卡的虚拟化构建方案,通过API转发的方式完成GPU虚拟化任务。用户可以在虚拟机中使用与调用物理GPU相同的操作来调用虚拟GPU设备。同时,本发明也支持多个虚拟GPU设备并发执行图形绘制任务,并通过自适应的计算资源调度器实现基于服务质量的GPU公平调度。
在本实施例中,运行平台的配置确定如下。在硬件上,系统硬件的型号是:(1)平台:飞腾1500处理器。(2)CPU:飞腾1500处理器16核。(3)内存RAM:32GB。(4)存储:固态硬盘容量500GB。而软件系统的设置为:主机平台:Kylin 4.4.58。内核:Linux 4.4.58。客户机操作系统:Ubuntu 18.04。客户虚拟机vCPU数量:2。客户虚拟机内存:4GB。客户虚拟机存储容量40GB。
在本发明中,我们基于虚拟机和物理机之间各模块的依赖关系,启动虚拟机。首先运行宿主机用户态的虚拟机管理系统构建虚拟GPU设备并启动虚拟机,同时启动位于宿主机的图形绘制程序,以旁路接入的方式监听虚拟机对物理GPU设备的调用指令。在虚拟机中,首先对虚拟GPU设备驱动进行编译并安装,同时编译封装了虚拟GPU设备调用的标准图形库,完成支持虚拟化的图形库的安装。
要进行虚拟GPU功能完备性测试,只需要在虚拟机中运行OpenGL程序,若宿主机旁路接入的图形渲染程序展示结果与OpenGL程序在宿主机中调用原生通用图形库一致,则表明虚拟GPU可以提供与物理GPU相同的功能。
对于多虚拟机之下基于服务质量的公平性调度,可以使用基于渲染帧率定义基于服务质量的性能公平指标。通过确定基准帧率,然后可以通过任务平均帧率与基准帧率的偏差量绝对值定义相应基于百分比的公平性指标。一般情况下,帧率是通过在一段时间内渲染出来的帧数量除以时间,得到以秒为单位的渲染帧数。但由于不同的图形渲染任务对GPU需求量的差异,在计算公平性指标时需要对帧率进行归一化处理。具体如公式(1)所示,其中FPSi为运行过程中得到的实际帧率(每秒渲染帧数),FPSstd为基于实际渲染帧数和用户定义的图形渲染任务所需的服务质量得到的本次测试的标准渲染帧数。公式(1)中的求和部分得到的是归一化后的任务帧率和基准帧率的偏差总量,绝对公平的情况下偏差总量为0,通过单位1除以偏差总量与标准计量单位1的和得到任务的公平性指标Fairness,Fairness本质上是通过计算用户期望帧率与实际帧率的比值来得到调度的公平性指标,i表示统计的所有虚拟机的帧率差。具体FPSstd的计算公式见公式(2),其中FPSdefined为用户定义的渲染任务所需满足的服务质量。
Figure BDA0003407512650000091
Figure BDA0003407512650000092
在实际运行中,首先比较4个虚拟机执行相同的任务,当一个物理GPU设备被4个虚拟机共享,即模拟出4个独立的虚拟GPU设备,并且分别定义每个虚拟GPU设备运行的用户程序需要满足帧率为30FPS、200FPS的要求,分别代表物理GPU算力可以满足的情况和不可满足的情况,第一行展示了要求帧率为30FPS的情况下的执行结果,根据基于渲染帧率定义的服务指令性能公平指标,可以得到其调度公平性为100.00%。第二行展示了要求帧率为200FPS的情况下的执行结果,由于GPU算力无法满足定义的帧率要求,调度程序将统一将各个虚拟机中可满足的FPS同比降低,直至算力可满足公平性调度的情况,根据基于渲染帧率定义的服务指令性能公平指标,可以得到其调度公平性为98.56%。
表1多虚拟机公平性调度测试结果表
帧率 虚拟机1 虚拟机2 虚拟机3 虚拟机4 公平性指标
30FPS 30 30 30 30 100.00%
200FPS 102 103 103 103 98.56%
为了展示公平调度的有效性,选择两个不同的高资源需求的图形渲染任务。由于显卡自身性能支持,此处使用两个虚拟机来进行测试。两个虚拟GPU设备预设的服务质量均为220FPS,表2分别展示了没有公平性调度和使用本发明设计的自适应计算资源调度算法的测试结果。结果表明,在没有公平性调度的时候其调用公平性为62.46%,增加公平性调度算法后其调度公平性上升到99.45%,相较于无公平性调度的情况提升了27%的调度公平性。
表2公平性调度测试结果表
Figure BDA0003407512650000101
实验表明,本发明可以基于国产GP100系列显卡构建支持多虚拟机的虚拟化方案,同时可以在多个虚拟机之间提高不同虚拟GPU设备基于服务质量的调度公平性。
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统及其各个装置、模块、单元以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统及其各个装置、模块、单元以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同功能。所以,本发明提供的系统及其各项装置、模块、单元可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置、模块、单元也可以视为硬件部件内的结构;也可以将用于实现各种功能的装置、模块、单元视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。

Claims (10)

1.一种基于国产GPU显卡的虚拟化构建系统,其特征在于,包括宿主机和虚拟机;
所述宿主机基于国产GPU显卡模拟虚拟GPU设备;
所述虚拟机基于虚拟GPU设备进行指令和数据的转发。
2.根据权利要求1所述的基于国产GPU显卡的虚拟化构建系统,其特征在于,所述宿主机包括虚拟机管理程序;
在所述虚拟机管理程序中,启动指令中增加虚拟GPU的配置,并启动虚拟机;
所述虚拟机管理程序接收并解析用户参数,注册挂载虚拟GPU设备的PCI-E通道;
基于用户配置,所述虚拟机管理程序注册虚拟GPU设备并挂载在PCI-E通道上。
3.根据权利要求2所述的基于国产GPU显卡的虚拟化构建系统,其特征在于,所述虚拟机管理程序初始化虚拟GPU设备数据结构,根据用户配置填充虚拟GPU设备相应配置,初始化虚拟GPU设备状态。
4.根据权利要求2所述的基于国产GPU显卡的虚拟化构建系统,其特征在于,所述虚拟机产生虚拟机GPU设备挂载在与PCI-E通道对应的VirtIO-PCI总线上。
5.根据权利要求2所述的基于国产GPU显卡的虚拟化构建系统,其特征在于,所述虚拟机包括内核态驱动模块,所述内核态驱动模块构建虚拟机与虚拟机管理程序之间的数据传输通道。
6.根据权利要求5所述的基于国产GPU显卡的虚拟化构建系统,其特征在于,所述虚拟GPU设备包括用于数据传输的环形缓冲区;所述内核态驱动模块基于环形缓冲区进行指令和数据的转发。
7.根据权利要求2所述的基于国产GPU显卡的虚拟化构建系统,其特征在于,所述虚拟机管理程序为每个虚拟GPU设备分配共享内存,每个虚拟GPU设备的共享内存用于记录该虚拟GPU设备所需的服务质量与当前该虚拟GPU设备使用物理GPU的实际情况。
8.一种基于国产GPU显卡的虚拟化构建方法,其特征在于,应用权利要求1-7任一所述的基于国产GPU显卡的虚拟化构建系统,包括如下步骤:
步骤S1:基于国产GPU显卡模拟虚拟GPU设备;
步骤S2:基于虚拟GPU设备进行指令和数据的转发。
9.根据权利要求8所述的基于国产GPU显卡的虚拟化构建方法,其特征在于,所述步骤S1包括如下步骤:
步骤S1.1:在所述虚拟机管理程序中,启动指令中增加虚拟GPU的配置,并启动虚拟机;
步骤S1.2:所述虚拟机管理程序接收并解析用户参数,注册挂载虚拟GPU设备的PCI-E通道;
步骤S1.3:基于用户配置,所述虚拟机管理程序注册虚拟GPU设备并挂载在PCI-E通道上。
10.根据权利要求9所述的基于国产GPU显卡的虚拟化构建方法,其特征在于,在所述步骤S1.3中,所述虚拟机管理程序初始化虚拟GPU设备数据结构,根据用户配置填充虚拟GPU设备相应配置,初始化虚拟GPU设备状态。
CN202111517952.7A 2021-12-13 2021-12-13 基于国产gpu显卡的虚拟化构建系统及方法 Active CN114138423B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111517952.7A CN114138423B (zh) 2021-12-13 2021-12-13 基于国产gpu显卡的虚拟化构建系统及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111517952.7A CN114138423B (zh) 2021-12-13 2021-12-13 基于国产gpu显卡的虚拟化构建系统及方法

Publications (2)

Publication Number Publication Date
CN114138423A true CN114138423A (zh) 2022-03-04
CN114138423B CN114138423B (zh) 2024-05-28

Family

ID=80382030

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111517952.7A Active CN114138423B (zh) 2021-12-13 2021-12-13 基于国产gpu显卡的虚拟化构建系统及方法

Country Status (1)

Country Link
CN (1) CN114138423B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115145696A (zh) * 2022-08-30 2022-10-04 统信软件技术有限公司 确定进程虚拟机运行差异的方法、系统及计算设备
CN117251293A (zh) * 2023-11-14 2023-12-19 龙思云(北京)科技有限公司 一种云桌面共享gpu的实现方法及系统、宿主机、虚拟机
CN117873735A (zh) * 2024-03-11 2024-04-12 湖南马栏山视频先进技术研究院有限公司 一种虚拟化环境下gpu调度系统

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106325976A (zh) * 2016-08-05 2017-01-11 天河国云(北京)科技有限公司 一种渲染任务调度处理方法及服务器
CN108733490A (zh) * 2018-05-14 2018-11-02 上海交通大学 一种基于资源共享自适应配置的GPU虚拟化QoS控制系统及方法
CN109522087A (zh) * 2018-09-13 2019-03-26 上海交通大学 基于处理器的虚拟机构建方法和系统
CN109558210A (zh) * 2018-11-21 2019-04-02 郑州云海信息技术有限公司 一种虚拟机应用主机gpu设备的方法及系统
US20200118514A1 (en) * 2018-10-16 2020-04-16 Red Hat Israel, Ltd. Adjusting virtual machine gpu refresh rate to remote desktop stream frame rate
CN112433823A (zh) * 2020-12-08 2021-03-02 上海寒武纪信息科技有限公司 动态虚拟化物理卡的设备及方法
US20210110506A1 (en) * 2019-10-15 2021-04-15 Vmware, Inc. Dynamic kernel slicing for vgpu sharing in serverless computing systems
CN113377492A (zh) * 2020-03-10 2021-09-10 阿里巴巴集团控股有限公司 内存管理方法、装置、电子设备及计算机可读存储介质

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106325976A (zh) * 2016-08-05 2017-01-11 天河国云(北京)科技有限公司 一种渲染任务调度处理方法及服务器
CN108733490A (zh) * 2018-05-14 2018-11-02 上海交通大学 一种基于资源共享自适应配置的GPU虚拟化QoS控制系统及方法
CN109522087A (zh) * 2018-09-13 2019-03-26 上海交通大学 基于处理器的虚拟机构建方法和系统
US20200118514A1 (en) * 2018-10-16 2020-04-16 Red Hat Israel, Ltd. Adjusting virtual machine gpu refresh rate to remote desktop stream frame rate
CN109558210A (zh) * 2018-11-21 2019-04-02 郑州云海信息技术有限公司 一种虚拟机应用主机gpu设备的方法及系统
US20210110506A1 (en) * 2019-10-15 2021-04-15 Vmware, Inc. Dynamic kernel slicing for vgpu sharing in serverless computing systems
CN113377492A (zh) * 2020-03-10 2021-09-10 阿里巴巴集团控股有限公司 内存管理方法、装置、电子设备及计算机可读存储介质
CN112433823A (zh) * 2020-12-08 2021-03-02 上海寒武纪信息科技有限公司 动态虚拟化物理卡的设备及方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
YUSUKE SUZUKI: ""GPUvm: GPU Virtualization at the Hypervisor"", 《IEEE TRANSACTIONS ON COMPUTERS》, vol. 65, no. 9, 8 December 2015 (2015-12-08), pages 2752 - 2766, XP011618572, DOI: 10.1109/TC.2015.2506582 *
朴钦浩: ""基于虚拟化云计算的3D图形渲染系统架构与性能研究"", 《长春师范大学学报》, vol. 38, no. 04, 20 April 2019 (2019-04-20), pages 51 - 57 *
顾琦琪: ""支持国产GPU芯片的虚拟化构建与QoS控制研究"", 《航空电子技术》, vol. 53, no. 02, 15 June 2022 (2022-06-15), pages 1 - 10 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115145696A (zh) * 2022-08-30 2022-10-04 统信软件技术有限公司 确定进程虚拟机运行差异的方法、系统及计算设备
CN115145696B (zh) * 2022-08-30 2022-11-29 统信软件技术有限公司 确定进程虚拟机运行差异的方法、系统及计算设备
CN117251293A (zh) * 2023-11-14 2023-12-19 龙思云(北京)科技有限公司 一种云桌面共享gpu的实现方法及系统、宿主机、虚拟机
CN117251293B (zh) * 2023-11-14 2024-02-27 龙思云(北京)科技有限公司 一种云桌面共享gpu的实现方法及系统、宿主机、虚拟机
CN117873735A (zh) * 2024-03-11 2024-04-12 湖南马栏山视频先进技术研究院有限公司 一种虚拟化环境下gpu调度系统
CN117873735B (zh) * 2024-03-11 2024-05-28 湖南马栏山视频先进技术研究院有限公司 一种虚拟化环境下gpu调度系统

Also Published As

Publication number Publication date
CN114138423B (zh) 2024-05-28

Similar Documents

Publication Publication Date Title
US10664942B2 (en) Reconfigurable virtual graphics and compute processor pipeline
CN114138423B (zh) 基于国产gpu显卡的虚拟化构建系统及方法
WO2018119952A1 (zh) 一种设备虚拟化方法、装置、系统及电子设备、计算机程序产品
US10310879B2 (en) Paravirtualized virtual GPU
CN107003892B (zh) Gpu虚拟化方法、装置、系统及电子设备、计算机程序产品
EP2622470B1 (en) Techniques for load balancing gpu enabled virtual machines
CN105830026B (zh) 用于调度来自虚拟机的图形处理单元工作负荷的装置和方法
KR101569731B1 (ko) 가상화를 통한 스마트 장치의 직접적인 공유
CN109522087B (zh) 基于国产申威处理器的虚拟机构建方法和系统
TWI696952B (zh) 資源處理方法及裝置
US20120054740A1 (en) Techniques For Selectively Enabling Or Disabling Virtual Devices In Virtual Environments
KR101394094B1 (ko) 응용 프로그램 화상의 표시 방법 및 장치
US20050198633A1 (en) Method, apparatus and system for seamlessly sharing devices amongst virtual machines
US20180074956A1 (en) Method, apparatus, and electronic device for modifying memory data of a virtual machine
JP2011238272A (ja) 仮想マシン・モニタと、acpi準拠ゲスト・オペレーティング・システムとの間の双方向通信のための方法、装置及びシステム
KR20070100367A (ko) 하나의 가상 머신에서 다른 가상 머신으로 메모리를동적으로 재할당하기 위한 방법, 장치 및 시스템
US20110285709A1 (en) Allocating Resources Based On A Performance Statistic
CN107077376B (zh) 帧缓存实现方法、装置、电子设备和计算机程序产品
US11875145B2 (en) Virtual machine update while keeping devices attached to the virtual machine
CN115904617A (zh) 一种基于sr-iov技术的gpu虚拟化实现方法
WO2020220790A1 (zh) 数据处理的方法、装置与设备
CN110941408A (zh) 一种kvm虚拟机图形界面输出方法及装置
Chen et al. GaaS workload characterization under NUMA architecture for virtualized GPU
CN109697102A (zh) 一种实现虚拟机桌面访问的方法及装置
US8402191B2 (en) Computing element virtualization

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant