CN109690482A - 虚拟机图形处理器的分配 - Google Patents

虚拟机图形处理器的分配 Download PDF

Info

Publication number
CN109690482A
CN109690482A CN201680088864.0A CN201680088864A CN109690482A CN 109690482 A CN109690482 A CN 109690482A CN 201680088864 A CN201680088864 A CN 201680088864A CN 109690482 A CN109690482 A CN 109690482A
Authority
CN
China
Prior art keywords
gpu
host
command
api command
log
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.)
Pending
Application number
CN201680088864.0A
Other languages
English (en)
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.)
University of Toronto
Huawei Technologies Co Ltd
Original Assignee
University of Toronto
Huawei Technologies 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 University of Toronto, Huawei Technologies Co Ltd filed Critical University of Toronto
Publication of CN109690482A publication Critical patent/CN109690482A/zh
Pending legal-status Critical Current

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/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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
    • 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
    • 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
    • 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/461Saving or restoring of program or task context
    • 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
    • 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
    • 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
    • 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/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • 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]
    • 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
    • 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
    • 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
    • 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
    • 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/5083Techniques for rebalancing the load in a distributed system
    • 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/5083Techniques for rebalancing the load in a distributed system
    • G06F9/5088Techniques for rebalancing the load in a distributed system involving task migration
    • 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/54Interprogram communication
    • 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/45579I/O management, e.g. providing access to device drivers or storage
    • 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/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

本公开提供了用于为虚拟机(VM)管理图形处理器(GPU)分配的系统、方法和计算机可读介质。与第一GPU相关联的第一GPU驱动从所述VM的操作系统(OS)卸载。然后,从所述VM解除分配所述第一GPU。将第二GPU分配给所述VM,并且将与所述第二GPU相关联的第二GPU驱动器加载到所述VM的OS中。为了在所述第二GPU中恢复来自所述第一GPU的GPU上下文,来自所述第一GPU的GPU命令日志在所述第二GPU被重放。

Description

虚拟机图形处理器的分配
技术领域
本发明大体涉及虚拟机管理,更具体地,涉及用于将图形处理器分配给虚拟机的技术。
背景技术
虚拟化是一种在主机计算系统上运行称为虚拟机(virtual machine,简称VM)的一个或多个隔离的用户空间实例的技术。特定主机计算系统可以在任何给定时间运行多个VM。每个VM被分配相应数量的计算资源,包括处理器周期、存储器等,以在分配给所述VM的硬件上运行特定操作系统(operating system,简称OS),且用于执行特定的一组软件。
在使用期间,所述主机计算系统对所述VM的用户是透明的,并且所述VM可用于运行任何合适数量的应用。在某些情况下,VM可以运行一个或多个图形密集型特别是并行化的应用,这些应用可以受益于对图形处理器(graphics processing unit,简称GPU)的访问。虽然独立计算机(即,非VM)可以直接与各种硬件组件连接,但是VM通常具有虚拟化硬件或者具有所述VM的OS可以访问某些硬件元件所通过的接口,例如虚拟机监视器。
提供GPU通过虚拟机监视器访问VM的VM技术具有灵活性,因为在迁移事件中,所述虚拟机监视器可以将目标是原GPU的通信重定向到另一GPU。但是,GPU基于虚拟机监视器访问VM通常会导致性能严重受到限制。另一种称为GPU直通的技术是通过绕过所述虚拟机监视器或其它接口为VM分配一个或多个GPU资源,并在所述VM的OS内运行所述GPU的驱动。但是,GPU直通的灵活性要低得多,例如VM从一主机迁移到另一主机。
因此,需要使VM能够访问GPU资源,同时具有接口式GPU访问的灵活性和GPU直通的性能。
发明内容
本公开提供了用于为虚拟机(virtual machine,简称VM)管理图形处理器(graphics processing unit,简称GPU)分配的系统、方法和计算机可读介质。与第一GPU相关联的第一GPU驱动从所述VM的操作系统(operating system,简称OS)卸载。然后,从所述VM解除分配所述第一GPU。将第二GPU分配给所述VM,并且将与第二GPU相关联的第二GPU驱动器加载到所述VM的OS中。为在第二GPU中恢复来自第一GPU的GPU上下文,来自第一GPU的GPU命令日志在第二GPU被重放。
根据广义方面,提供了一种用于为虚拟机(virtual machine,简称VM)管理图形处理器(graphics processing unit,简称GPU)分配的方法,包括:从所述VM的操作系统(operating system,简称OS)卸载与第一GPU相关联的第一图形处理器(graphicsprocessing unit,简称GPU)驱动;从所述VM中解除分配所述第一GPU;为所述VM分配第二GPU;在所述VM的OS中加载与所述第二GPU相关联的第二GPU驱动;在第二GPU重放来自所述第一GPU的GPU命令日志以在所述第二GPU中恢复来自所述第一GPU的GPU上下文。
在一些实施例中,所述方法还包括通过使用阴影库记录至少一个GPU API命令来记录所述第一GPU的GPU命令日志。
在一些实施例中,使用所述阴影库记录所述至少一个GPU API命令包括经由用户态驱动器记录所述至少一个GPU API命令。
在一些实施例中,使用所述阴影库记录所述至少一个GPU API命令包括经由内核态驱动器记录所述至少一个GPU API命令。
在一些实施例中,所述方法还包括将所述VM从第一主机迁移到第二主机。
在一些实施例中,所述第一GPU与所述第一主机相关联,所述第二GPU与所述第二主机相关联。
在一些实施例中,所述第一GPU和所述第二GPU与公共主机相关联。
在一些实施例中,所述第一GPU和所述第二GPU中的至少一个与所述VM的主机外部的GPU组相关联。
在一些实施例中,为所述第二GPU重放GPU命令日志包括重放先前确定影响未来帧的至少一个GPU命令。
在一些实施例中,所述第一GPU和所述第二GPU中的至少一个是虚拟化GPU。
根据另一广义方面,提供了一种用于为VM管理GPU分配的系统。所述系统包括处理单元以及非瞬时性存储器,其中所述非瞬时性存储器通信上耦合到所述处理单元并且包括计算机可读程序指令。所述程序指令可由所述处理单元执行,用于:从所述VM的操作系统(operating system,简称OS)卸载与第一GPU相关联的第一图形处理器(graphicsprocessing unit,简称GPU)驱动;从所述VM中解除分配所述第一GPU;为所述VM分配第二GPU;在所述VM的OS中加载与所述第二GPU相关联的第二GPU驱动;在第二GPU重放来自所述第一GPU的GPU命令日志以在所述第二GPU中恢复来自所述第一GPU的GPU上下文。
在一些实施例中,所述计算机可读程序指令还可由所述处理单元执行,用于通过使用阴影库记录至少一个GPU API命令来记录所述第一GPU的GPU命令日志。
在一些实施例中,使用所述阴影库记录所述至少一个GPU API命令包括经由用户态驱动器记录所述至少一个GPU API命令。
在一些实施例中,使用所述阴影库记录所述至少一个GPU API命令包括经由内核态驱动器记录所述至少一个GPU API命令。
在一些实施例中,所述计算机可读程序指令还可由所述处理单元执行,用于将所述VM从第一主机迁移到第二主机。
在一些实施例中,所述第一GPU与所述第一主机相关联,所述第二GPU与所述第二主机相关联。
在一些实施例中,所述第一GPU和所述第二GPU与公共主机相关联。
在一些实施例中,所述第一GPU和所述第二GPU中的至少一个与所述VM的主机外部的GPU组相关联。
在一些实施例中,为所述第二GPU重放GPU命令日志包括重放先前确定影响未来帧的至少一个GPU命令。
在一些实施例中,所述第一GPU和所述第二GPU中的至少一个是虚拟化GPU。
本文描述的系统,设备和方法的特征可以以各种组合使用,也可以以各种组合的方式用于系统和计算机可读存储介质。
附图说明
通过阅读如下详细描述并结合附图所示,关于本技术的更多特征和优势将更显而易见,附图中:
图1是示例性VM管理系统的框图;
图2是图1的示例性主机的框图;
图3是图1的VM管理系统的实施例的框图;
图4是根据实施例的为VM管理GPU分配的方法的流程图;
图5A-D是图3的VM管理系统的各种实施例的框图;
图6是用于实现VM管理系统的示例性计算机系统的框图;
图7是用于实现图4的方法的示例性系统的框图。
需要注意的是,在所有附图中,相同的特征由相同的参考数字标号。
具体实施方式
图形处理器(Graphics processing unit,简称GPU)越来越多地用于图形密集型计算机应用和需要高级并行化的计算领域,例如密码学。也就是说,在许多场合,例如办公室或实验室,用户通过虚拟化用户空间实例或虚拟机(virtual machine,简称VM)访问计算机资源,而不是使用用户分配的硬件。为了使VM用户能够访问高性能GPU资源,同时保持所述VM的移动性和GPU资源的灵活性,提出了一种用于为VM管理GPU分配的方法。所述方法允许在GPU直通虚拟化设置中动态迁移VM和动态重新分配GPU资源。
参考图1,其示出了通用VM管理系统100。VM管理系统100具有系统控制器102,并且包括一个或多台主机110、120、130,其共同可以称为集群。每台主机110、120、130具有相应的主机控制器112、122、132,并且经由主机控制器112、122、132通信耦合到系统控制器102。虽然图1示出了包括三台主机110、120、130的集群,但是所述集群可以包括任何数量的主机。VM管理系统100可以用于各种场合,包括办公室、实验室等,以便向各种用户提供计算资源。
参考图2,主机110可以支持一个或多个VM 210、220、230,每个VM具有相应的VM控制器212、222、232。所述VM控制器为其各自的VM提供与主机控制器112连接的通信接口。VM210、220、230可以具有任何合适的计算机资源,包括物理硬件和虚拟化硬件,并且可以由一个或多个用户用来执行一个或多个应用。在一些实施例中,用户通过分配给用户的工作站访问VM 210、220、230,所述工作站用于接收来自用户的输入,例如键盘、鼠标、麦克风、游戏手柄等,并向用户提供输出,例如通过一个或多个屏幕提供的图像、通过一个或多个扬声器提供的声音、通过游戏手柄或操纵杆提供的力反馈或振动等。例如,VM 210、220、230渲染多个图形元素,形成多个帧,以呈现给各个用户。在另一示例中,VM 210、220、230执行各种通用计算。在另一示例中,VM 210、220、230用于执行图形元素渲染和通用计算。
在特定实施例中,并且参考图3,VM管理系统300包括系统控制器302和两台主机310和320。第一主机310具有主机控制器312,其管理GPU 316。第一主机310还托管VM 314,向其分配GPU 316。类似地,第二主机320具有主机控制器322,其管理两个GPU 326和328。第二主机320还托管VM 324,向其分配GPU 328。VM 314和324可以执行一个或多个应用,并且在一些实施例中,执行一个或多个图形密集型应用来利用GPU 316、328的资源。虽然图3示出了两台主机310、320,每台主机具有一个VM 314、324,并且示出了第一主机具有一个GPU316以及第二主机具有两个GPU 326、328,但是应该理解的是,VM管理系统300可以包括任意数量的主机,并且每台主机可以托管任意数量的VM并且可以具有任意数量的GPU。
在某些情况下,可能需要VM管理系统300执行有关向VM 314、324分配GPU 316、328的一个或多个管理任务,例如,要将VM 314迁移到不同主机或者VM 324需要额外的GPU资源。所述管理任务可以按照对VM 314上运行的任何应用透明的方式执行,也就是说,不会导致所述应用终止,并且所述应用也不会注意到GPU资源中有任何改变。为此,参考图4,其提供了用于为VM管理GPU分配的方法400。所述VM由第一主机托管,并且被分配第一GPU:例如,所述VM可以是托管在主机310中的VM 314并且被分配GPU 316。为了使用GPU 316,VM 314运行OS且其中加载了用于GPU 316的驱动。方法400可用于按照对运行的应用透明的方式执行所述VM管理任务。
在步骤402处,记录用于第一GPU的GPU命令日志。可以连续记录所述GPU命令日志,也可以按时记录所述GPU命令日志,例如响应触发或信号。在一些实施例中,所述信号指示需要对第一主机和/或第一GPU执行维护。在一些其它实施例中,所述信号指示正在执行主机整合,并且某些主机正在关闭或转换到较低的功率状态。在其它实施例中,所述信号指示所述VM需要更多或更少的图形处理能力,或者所述VM正在被迁移。更进一步的触发或信号可以导致为第一GPU记录GPU命令日志。
GPU命令日志用于记录从所述VM的OS发送到第一GPU的一个或多个GPU应用编程接口(application programming interface,简称API)命令。所述GPU命令日志可以记录适合于维护第一GPU上下文的任何数量的GPU API命令。所述GPU API可以是或任何其它合适处理图形或其它视觉效果的GPU API。可替代地或附加地,GPU API可以是或任何其它合适通用GPU(general purpose GPU,简称GPGPU)计算的GPUAPI。例如,可以通过阴影库记录GPU API命令,下面将进一步详细讨论。可以在本地记录和存储所述GPU命令日志,也可以远程存储所述GPU命令日志。在一些实施例中,所述GPU命令日志存储所有GPU API命令。在其它实施例中,所述GPU命令日志仅存储先前确定为影响一个或多个未来帧渲染和/或一个或多个未来计算的那些GPU API命令。
在步骤404处,从所述VM的OS卸载与第一GPU相关联的第一GPU驱动。例如,通过所述VM的OS执行第一GPU驱动的卸载。通过卸载第一GPU驱动,所述OS和所述VM不再能够向第一GPU发送命令。在一些实施例中,可以响应从所述VM的VM控制器或从任何其它合适源接收的触发或信号来完成第一GPU驱动器的卸载。
在步骤406处,从所述VM中解除分配所述第一GPU。例如,由托管所述VM所在的第一主机的主机控制器执行第一GPU的解除分配。一旦被解除分配,第一GPU可用于分配给任何其它合适的VM,并且不再与所述VM相关联。在一些实施例中,第一GPU位于所述VM的主机外部,例如在GPU组中,所述GPU组可以由一个或多台主机访问,并且所述解除分配可以由第一主机外部的实体执行,例如系统控制器。
可选地,在步骤408处,所述VM从第一主机迁移到第二主机。继续参考图3,第二主机例如是主机320。因此,在一些实施例中,第一和第二主机是公共集群的一部分,并由公共系统控制器管理。或者,第一和第二主机是不同集群的一部分。所述迁移可以按任何合适的方式由任何合适的实体执行,例如由第一主机和第二主机的主机控制器和/或由第一主机和第二主机的系统控制器执行。
在步骤410处,将第二GPU分配给所述VM,并且在步骤412处,将与第二GPU相关联的第二GPU驱动加载到所述VM的OS中。可以按任何合适的方式执行所述分配和加载步骤。在一些实施例中,第一GPU和第二GPU可以来自不同的供应商。在其它实施例中,第一GPU和第二GPU可以来自同一供应商。另外,如上所述,第一GPU和第二GPU可以是实际的硬件GPU,也可以是虚拟化的。
在步骤414处,来自第一GPU的GPU命令日志在第二GPU被重放,以将来自第一GPU的GPU上下文恢复到第二GPU。GPU命令日志由所述VM的OS重放以复制所述记录的GPU API命令,从而为第二GPU提供存在于第一GPU中的所有信息。
因此,为第二GPU提供存在于第一GPU中的整个图形上下文,允许第二GPU基本上无缝地为所述VM提供GPU处理,尽管所述GPU处理是新分配给所述VM的。这允许方法400按照对VM上运行的任何应用透明的方式为所述VM管理GPU分配。换句话说,为执行方法400,不需要终止所述应用。在一些实施例中,方法400基本上在两个后续视觉帧的渲染之间执行:前一帧由第一GPU渲染,并且一旦渲染完成,执行步骤404至414,以便后续帧由第二GPU使用在步骤414处恢复的GPU上下文渲染。在一些其它实施例中,方法400基本上在通用计算中的适当时间执行,例如在两个子例程或子例程集的执行之间。
参考图3和图5A,在方法400的第一示例性实施例中,所讨论的VM是托管在主机320中的VM 324。按照图3,最初为VM 324分配的是GPU 328。在方法400之后,GPU 328的驱动从VM 324的OS卸载,并且GPU 328从VM 324解除分配。然后,如箭头510所示,为VM 324分配GPU326,并且将用于GPU 326的驱动加载到VM 324的OS中。然后为GPU 326重放所述GPU命令日志以将来自GPU 328的GPU上下文恢复到GPU 326,这允许VM 324基本上无缝地从GPU 328交换到GPU 326。例如,在VM 324需要不同级别的GPU资源的指示之后执行方法400的该特定实现。或者,在指示要在GPU 328上执行维护之后执行该特定实现。
参考图3和图5B,在方法400的第二示例实施例中,所讨论的VM是托管在主机310中的VM 314。按照图3,最初为VM 314分配的是GPU 316。在方法400之后,用于GPU 316的驱动从VM 314的OS卸载,并且GPU 316从VM 314解除分配。然后,如箭头520所示,将VM 314迁移到主机320,为VM 314分配GPU 326,并且将用于GPU 326的驱动加载到VM 314的OS中。然后为GPU 326重放所述GPU命令日志以将来自GPU 316的GPU上下文恢复到GPU 326,这允许VM314基本上无缝地从GPU 316交换到GPU 326。例如,为了诸如减少运行成本等,在指示要在主机310上执行维护之后或者在指示将主机310的VM合并到主机320中之后执行图5B的实现。
参考图3和图5C,在方法400的第三示例实施例中,所讨论的VM是托管在主机310中的VM 314。按照图3,最初为VM 314分配的是GPU 316。在方法400之后,用于GPU 316的驱动从VM 314的OS卸载,并且GPU 316从VM 314解除分配。然后,在GPU组530中为VM 314分配GPU5341,并且将用于GPU 5341的驱动加载到VM 314的OS中。然后为GPU 5341重放所述GPU命令日志以将来自GPU 316的GPU上下文恢复到GPU 5341,这允许VM 314基本上无缝地从GPU316交换到GPU 5341。所述GPU组可以位于与主机310相同的集群中,也可以位于其外部。
参考图5D,在第四示例性实施例中,对图5C的VM 314采用方法400以GPU 5341交换GPU 5342,如箭头540所示。例如,如果GPUs 5341和5342提供不同级别的GPU资源且GPU 5342更好地匹配VM 314的要求,则可以执行此操作。因此,用于GPU 5341的驱动可以从VM 314的OS卸载,并且GPU 5341可以从VM 314解除分配。然后,将GPU 5342分配给VM 314,并且将相关联的驱动加载到VM 314的OS中。然后为GPU 5342重放所述GPU命令日志以将来自GPU 5341的GPU上下文恢复到GPU 5342,这允许VM 314基本上无缝地从GPU 5341交换到GPU 5342
还考虑了方法400的其它应用。例如,图5C中描述的实施例也可以反向执行,或者VM可以从第一GPU组中的GPU交换到第二GPU组中的GPU。在一些情况下,GPU可以在多台主机之间共享,并且将所述GPU分配给对其共享的主机中的任一主机的一个或多个VM。
参考图6,方法400可以由计算设备610实现,所述计算设备610包括处理单元612和存储器614,所述存储器614中存储计算机可执行指令616。所述处理单元612可以包括用于使一系列步骤执行以实现方法400的任何合适的设备,以便指令616在由所述计算设备610或其它可编程设备执行时可以使本文描述的方法中指定的功能/动作/步骤执行。所述处理单元612可包括例如任何类型的通用微处理器或微控制器、数字信号处理(digital signalprocessing,简称DSP)处理器、中央处理单元(central processing unit,简称CPU)、集成电路、现场可编程门阵列(field programmable gate array,简称FPGA)、可重构处理器、其它适当编程或可编程逻辑电路或其任何组合。
存储器614可包括任何合适的已知或其它机器可读存储介质。存储器614可以包括非瞬时性计算机可读存储介质,例如但不限于电子、磁、光、电磁、红外或半导体系统、装置或设备,或者前述的任何合适组合。存储器614可以包括位于设备内部或外部的任何类型的计算机存储器的适当组合,例如随机存取存储器(random-access memory,简称RAM)、只读存储器(read-only memory,简称ROM)、光盘只读存储器(compact disc read-onlymemory,简称CDROM)、电光存储器、磁光存储器、可擦除可编程只读存储器(erasableprogrammable read-only memory,简称EPROM)以及电可擦可编程只读存储器(electrically-erasable programmable read-only memory,简称EEPROM),铁电式RAM(Ferroelectric RAM,简称FRAM)等。存储器可以包括适合于可检索地存储可由处理单元执行的机器可读指令的任何存储装置(例如,设备)。
在一些实施例中,计算设备610可以按各种方式与其它计算设备通信,包括直接和间接通过一个或多个网络耦合。所述网络能够承载数据。所述网络可以涉及有线连接、无线连接或其组合。所述网络可以涉及不同的网络通信技术、标准和协议,例如全球移动通信系统(Global System for Mobile Communication,简称GSM)、码分多址(Code divisionmultiple access,简称CDMA)、无线本地环路、WiMAX、Wi-Fi、蓝牙、长期演进(Long TermEvolution,简称LTE)等等。所述网络可以涉及不同的物理介质,例如同轴电缆、光纤、收发器站等。示例性网络类型包括互联网、以太网、传统电话业务(plain old telephoneservice,简称POTS)线路、公共交换电话网络(public switched telephone network,简称PSTN)、综合业务数字网(integrated services digital network,简称ISDN)、数字用户线(digital subscriber line,简称DSL)等,包括这些的任何组合。所述网络可以包括局域网和/或广域网。
参考图7,其示出了示例VM 700,其托管在主机310上。VM 700具有VM控制器702,用于与主机控制器312和GPU 316连接。在一些实施例中,VM控制器702实现VM 700的OS。VM700可以运行一个或多个应用7081、7082,其可以将一个或多个GPU API命令发送到GPU驱动706。GPU API命令可以经由阴影库704发送,阴影库704可以在GPU日志740中记录所述GPUAPI命令中的一个或多个GPU API命令。
VM控制器702用于与主机控制器312连接。主机控制器312可以向VM控制器702发送指示要实现GPU管理任务的一个或多个信号,例如迁移VM 700或者向VM 700分配不同的GPU。替代地或另外地,VM控制器702可以向主机控制器312发送一个或多个信号,以请求对VM 700迁移或者为VM 700请求不同级别的GPU资源。在一些实施例中,按照步骤402,在接收和/或发送一个或多个GPU管理任务相关信号时,VM控制器702指示阴影库704开始记录准备中的GPU API命令。在其它实施例中,阴影库704以基本连续的方式记录GPU API命令,并且VM控制器不需要指示所述阴影库开始记录所述GPU API命令。
VM控制器702还用于按照步骤404卸载GPU驱动706,例如通过使VM 700的OS卸载GPU驱动706。在一些实施例中,VM控制器702向主机控制器312发送信号以指示GPU驱动706是否已成功卸载。如果VM控制器702未能卸载GPU驱动706,则VM控制器702可以请求主机控制器312不继续进行方法400的进一步步骤,直到所述GPU驱动被成功卸载。
按照步骤406,主机控制器312用于从VM 700解除分配GPU 316。在一些实施例中,主机控制器312部分或全部介入或协助VM 700从主机310到第二主机(例如图3中的主机320)的可选迁移。按照步骤408,VM 700的迁移还可以由系统控制器(例如图3的系统控制器302)介入和/或执行。
主机控制器312(如果执行步骤408,也可以是另一主机中的等效设备)还用于按照步骤410将第二GPU(例如GPU 318)分配给VM 700,并且VM控制器702用于按照步骤412在VM700的OS中加载用于第二GPU的驱动。分配和加载步骤可以按任何合适的方式执行,例如分别作为步骤406和404中执行的解除分配和卸载过程的镜像。
阴影库704用于拦截由应用7081、7082发送的GPU API命令,并用于将所述GPU API命令重新发送到GPU驱动706。因此,阴影库704对于应用7081、7082和GPU驱动程序706基本上是透明的,但是基本上接收发送到GPU驱动706的所有GPU API命令。按照步骤402,这允许阴影库704在GPU日志740中记录所述GPU API命令,其可以按照步骤414用于在执行GPU交换之后恢复所述GPU上下文。在一些实施例中,GPU驱动706包括至少一个本机库,用于为所述应用提供图形API,例如共享库和共享库。阴影库704可以动态地加载所述本机库并通过“dlopen”函数或其它类似函数获取GPU API的句柄,然后将所述截获的GPUAPI命令转发给所述GPU硬件。此外,在一些实施例中,可以为阴影库704创建名为“mydlopen”的新函数,并且所述“mydlopen”函数的地址包含在“dlopen”函数的GOT(全局偏移表)条目中。因此,阴影库704可以调用所述dlopen函数并使用所述创建的“mydlopen”函数记录已加载的库的句柄。
阴影库704可以经由内核态驱动器或核心态驱动器拦截GPU API命令,这取决于VM700的OS的安全设置。阴影库704可以是多个阴影库,例如用于与VM 700的OS兼容的每个GPU组的一个阴影库,并且每个阴影库704具有相应的GPU日志740。例如,能够运行应用7081、7082和OpenGL库输出GPU API命令的VM 700具有两个阴影库704。在另一示例中,能够运行应用7081、7082为OpenCL和库输出GPU API命令的VM 700具有两个阴影库704。VM 700还可以包括阴影库704的任何合适组合。
在一些实施例中,阴影库704基本上连续记录由应用7081、7082发出的所有GPU API命令。在一些其它实施例中,阴影库704记录所有GPU API命令,但仅在从例如VM控制器702接收到指令之后才记录。在其它实施例中,所述阴影库仅记录确定的影响未来帧的那些GPUAPI命令,方式是基本上连续地或响应指令。确定的影响未来帧的GPU API命令可以是先前已知的影响未来帧的GPU API命令,例如基于查找表,或者阴影库704可以自身使用任何合适的手段来执行该确定。
用于管理GPU分配的系统和/或本文描述的方法400可以按高级过程或面向对象的编程或脚本语言或其组合来实现,以与计算机系统的操作通信或协助其操作,例如计算设备610。或者,用于管理GPU分配的系统和/或方法400可以用汇编语言或机器语言实现。该语言可以是编译或解释的语言。用于实现用于管理GPU分配的系统和/或方法400的程序代码可以存储在存储介质或设备上,例如ROM、磁盘、光盘、闪存驱动器或任何其它合适的存储介质或设备。当计算机读取所述存储介质或设备以执行本文描述的过程时,所述程序代码可以被通用或专用可编程计算机读取,用于配置和操作计算机。用于管理GPU分配的系统和/或方法400的实施例还可以被认为是通过其上存储有计算机程序的非瞬时性计算机可读存储介质来实现。所述计算机程序可以包括计算机可读指令,其使计算机,或更具体地,计算机的至少一个处理单元以特定的和预定义的方式操作,以执行此处描述的功能。
计算机可执行指令可以以许多形式,包括程序模块,由一个或多个计算机或其它设备执行。一般而言,程序模块包括例程、程序、对象、组件以及数据结构等,其执行特定任务或实现特定抽象数据类型。通常,该程序模块的功能可根据各实施例需要进行组合或分配。
本文公开的用于管理GPU分配的系统的各个方面可以单独使用、组合使用或者在前面描述的实施例中没有具体讨论的各种情况中使用,因此,在其应用上不限于在前面描述中阐述的或者在附图中示出的部件的细节和布置。例如,一个实施例中描述的方面可以以任何方式与其它实施例中描述的方面组合。虽然已经显示和描述了特定实施例,但是对于本领域的技术人员来说显而易见的是,可以在其更广泛的方面进行改变和修改而不偏离本发明。所附权利要求的范围不应受实施例中所述的优选实施例的限制,而应给出与整个说明一致的最广泛的合理解释。

Claims (20)

1.一种管理虚拟机(VM)图形处理器(GPU)分配的方法,其特征在于,所述方法包括:
从所述VM的操作系统(OS)卸载与第一GPU相关联的第一图形处理器(GPU)驱动;
从所述VM中解除分配所述第一GPU;
为所述VM分配第二GPU;
在所述VM的OS中加载与所述第二GPU相关联的第二GPU驱动;
在所述第二GPU重放来自所述第一GPU的GPU命令日志以在所述第二GPU中恢复来自所述第一GPU的GPU上下文。
2.根据权利要求1所述的方法,其特征在于,还包括通过使用阴影库记录至少一个GPUAPI命令来记录所述第一GPU的GPU命令日志。
3.根据权利要求2所述的方法,其特征在于,使用所述阴影库记录所述至少一个GPUAPI命令包括经由用户态驱动器记录所述至少一个GPU API命令。
4.根据权利要求2所述的方法,其特征在于,使用所述阴影库记录所述至少一个GPUAPI命令包括经由内核态驱动器记录所述至少一个GPU API命令。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括将所述VM从第一主机迁移到第二主机。
6.根据权利要求5所述的方法,其特征在于,所述第一GPU与所述第一主机相关联,所述第二GPU与所述第二主机相关联。
7.根据权利要求1所述的方法,其特征在于,所述第一GPU和所述第二GPU与公共主机相关联。
8.根据权利要求1所述的方法,其特征在于,所述第一GPU和所述第二GPU中的至少一个与所述VM的主机外部的GPU组相关联。
9.根据权利要求1所述的方法,其特征在于,为所述第二GPU重放GPU命令日志包括重放先前确定影响未来帧的至少一个GPU命令。
10.根据权利要求1所述的方法,其特征在于,所述第一GPU和所述第二GPU中的至少一个是虚拟化GPU。
11.一种用于为虚拟机(VM)管理图形处理器(GPU)分配的系统,其特征在于,所述系统包括:
处理单元;
非瞬时性存储器,通信地耦合到所述处理单元,包括可由所述处理单元执行的计算机可读程序指令,以用于:
从所述VM的操作系统(OS)卸载与第一GPU相关联的第一图形处理器(GPU)驱动;
从所述VM中解除分配所述第一GPU;
为所述VM分配第二GPU;
在所述VM的OS中加载与所述第二GPU相关联的第二GPU驱动;
在所述第二GPU重放来自所述第一GPU的GPU命令日志以在所述第二GPU中恢复来自所述第一GPU的GPU上下文。
12.根据权利要求11所述的系统,其特征在于,所述计算机可读程序指令还可由所述处理单元执行,以用于通过使用阴影库记录至少一个GPU API命令来记录所述第一GPU的GPU命令日志。
13.根据权利要求12所述的系统,其特征在于,使用所述阴影库记录所述至少一个GPUAPI命令包括经由用户态驱动器记录所述至少一个GPU API命令。
14.根据权利要求12所述的系统,其特征在于,使用所述阴影库记录所述至少一个GPUAPI命令包括经由内核态驱动器记录所述至少一个GPU API命令。
15.根据权利要求11所述的系统,其特征在于,所述计算机可读程序指令还可由所述处理单元执行,以用于将所述VM从第一主机迁移到第二主机。
16.根据权利要求15所述的系统,其特征在于,所述第一GPU与所述第一主机相关联,所述第二GPU与所述第二主机相关联。
17.根据权利要求11所述的系统,其特征在于,所述第一GPU和所述第二GPU与公共主机相关联。
18.根据权利要求11所述的系统,其特征在于,所述第一GPU和所述第二GPU中的至少一个与所述VM的主机外部的GPU组相关联。
19.根据权利要求11所述的系统,其特征在于,为所述第二GPU重放GPU命令日志包括重放先前确定影响未来帧的至少一个GPU命令。
20.根据权利要求11所述的系统,其特征在于,所述第一GPU和所述第二GPU中的至少一个是虚拟化GPU。
CN201680088864.0A 2016-09-05 2016-09-05 虚拟机图形处理器的分配 Pending CN109690482A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2016/098137 WO2018040112A1 (en) 2016-09-05 2016-09-05 Allocation of graphics processing units for virtual machines

Publications (1)

Publication Number Publication Date
CN109690482A true CN109690482A (zh) 2019-04-26

Family

ID=61299659

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680088864.0A Pending CN109690482A (zh) 2016-09-05 2016-09-05 虚拟机图形处理器的分配

Country Status (5)

Country Link
US (1) US11321111B2 (zh)
EP (1) EP3497562B1 (zh)
KR (1) KR102202258B1 (zh)
CN (1) CN109690482A (zh)
WO (1) WO2018040112A1 (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10261847B2 (en) * 2016-04-08 2019-04-16 Bitfusion.io, Inc. System and method for coordinating use of multiple coprocessors
CN107295573B (zh) * 2017-07-12 2019-08-02 网宿科技股份有限公司 一种业务应用流量的引导方法和系统
GB2565770B (en) * 2017-08-15 2019-09-18 Advanced Risc Mach Ltd Data processing systems
US11720408B2 (en) * 2018-05-08 2023-08-08 Vmware, Inc. Method and system for assigning a virtual machine in virtual GPU enabled systems
CN111736943A (zh) * 2019-03-25 2020-10-02 阿里巴巴集团控股有限公司 虚拟机的迁移方法和系统
KR102275529B1 (ko) * 2019-12-23 2021-07-09 주식회사 텔레칩스 멀티-마스터를 지원하는 그래픽 처리 장치를 공유하는 시스템 온 칩 및 그래픽 처리 장치의 동작 방법
CN112230931B (zh) * 2020-10-22 2021-11-02 上海壁仞智能科技有限公司 适用于图形处理器的二次卸载的编译方法、装置和介质
US11604752B2 (en) 2021-01-29 2023-03-14 Arm Limited System for cross-routed communication between functional units of multiple processing units
IL309824A (en) * 2021-09-13 2024-02-01 Hyperplane Ltd Techniques for deleting internal state of a directory
WO2024034752A1 (ko) * 2022-08-09 2024-02-15 엘지전자 주식회사 신호 처리 장치, 및 이를 구비하는 차량용 증강현실 장치

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102402462A (zh) * 2010-09-30 2012-04-04 微软公司 用于对启用gpu的虚拟机进行负载平衡的技术
CN102521012A (zh) * 2011-11-24 2012-06-27 华中科技大学 基于虚拟机的gpu集群管理系统
CN103034524A (zh) * 2011-10-10 2013-04-10 辉达公司 半虚拟化的虚拟gpu
US20150178883A1 (en) * 2011-11-29 2015-06-25 Citrix Systems, Inc. Methods and systems for maintaining state in a virtual machine when disconnected from graphics hardware
CN105242957A (zh) * 2015-09-28 2016-01-13 广州云晫信息科技有限公司 一种云计算系统调配gpu资源到虚拟机的方法及系统
US20160071481A1 (en) * 2011-09-07 2016-03-10 Microsoft Technology Licensing, Llc Delivering GPU Resources to a Migrating Virtual Machine
US20160247248A1 (en) * 2015-02-25 2016-08-25 Microsoft Technology Licensing, Llc Migration of graphics processing unit (gpu) states

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7979869B2 (en) * 2007-09-28 2011-07-12 Oracle America, Inc. Method and system for performing I/O operations using a hypervisor
US7743389B2 (en) * 2007-11-06 2010-06-22 Vmware, Inc. Selecting between pass-through and emulation in a virtual machine environment
US8499297B2 (en) * 2008-10-28 2013-07-30 Vmware, Inc. Low overhead fault tolerance through hybrid checkpointing and replay
US8405666B2 (en) * 2009-10-08 2013-03-26 Advanced Micro Devices, Inc. Saving, transferring and recreating GPU context information across heterogeneous GPUs during hot migration of a virtual machine
US20110102443A1 (en) * 2009-11-04 2011-05-05 Microsoft Corporation Virtualized GPU in a Virtual Machine Environment
US20120092351A1 (en) * 2010-10-19 2012-04-19 Apple Inc. Facilitating atomic switching of graphics-processing units
US8533713B2 (en) * 2011-03-29 2013-09-10 Intel Corporation Efficent migration of virtual functions to enable high availability and resource rebalance
US8966477B2 (en) * 2011-04-18 2015-02-24 Intel Corporation Combined virtual graphics device
US20130055254A1 (en) * 2011-08-31 2013-02-28 Nokia Corporation Methods and apparatuses for providing a virtual machine with dynamic assignment of a physical hardware resource
US9298490B2 (en) * 2012-12-20 2016-03-29 Vmware, Inc. Managing a data structure for allocating graphics processing unit resources to virtual machines
KR101401523B1 (ko) 2013-02-08 2014-06-03 한국과학기술정보연구원 복수의 가상 머신들 간 조립 공유 gpu 스케줄링 방법 및 장치
US9658873B2 (en) * 2013-08-21 2017-05-23 Red Hat Israel, Ltd. Switching between devices having a common host backend in a virtualized environment
US9098323B2 (en) * 2013-09-05 2015-08-04 Nvidia Corporation Simultaneous utilization of a first graphics processing unit (GPU) and a second GPU of a computing platform through a virtual machine (VM) in a shared mode and a dedicated mode respectively
CN105830026B (zh) * 2013-11-27 2020-09-15 英特尔公司 用于调度来自虚拟机的图形处理单元工作负荷的装置和方法
WO2015100681A1 (zh) * 2013-12-31 2015-07-09 华为技术有限公司 Gpu虚拟化的实现方法及相关装置和系统
JP6472881B2 (ja) * 2014-11-12 2019-02-20 インテル コーポレイション グラフィックス仮想化を用いたホストコンピュータからの/ホストコンピュータへの仮想マシンのライブマイグレーション
US20170004808A1 (en) * 2015-07-02 2017-01-05 Nvidia Corporation Method and system for capturing a frame buffer of a virtual machine in a gpu pass-through environment

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102402462A (zh) * 2010-09-30 2012-04-04 微软公司 用于对启用gpu的虚拟机进行负载平衡的技术
US20160071481A1 (en) * 2011-09-07 2016-03-10 Microsoft Technology Licensing, Llc Delivering GPU Resources to a Migrating Virtual Machine
CN103034524A (zh) * 2011-10-10 2013-04-10 辉达公司 半虚拟化的虚拟gpu
CN102521012A (zh) * 2011-11-24 2012-06-27 华中科技大学 基于虚拟机的gpu集群管理系统
US20150178883A1 (en) * 2011-11-29 2015-06-25 Citrix Systems, Inc. Methods and systems for maintaining state in a virtual machine when disconnected from graphics hardware
US20160247248A1 (en) * 2015-02-25 2016-08-25 Microsoft Technology Licensing, Llc Migration of graphics processing unit (gpu) states
CN105242957A (zh) * 2015-09-28 2016-01-13 广州云晫信息科技有限公司 一种云计算系统调配gpu资源到虚拟机的方法及系统

Also Published As

Publication number Publication date
KR20190044097A (ko) 2019-04-29
EP3497562A1 (en) 2019-06-19
US20190213032A1 (en) 2019-07-11
US11321111B2 (en) 2022-05-03
KR102202258B1 (ko) 2021-01-13
EP3497562B1 (en) 2023-12-13
EP3497562A4 (en) 2019-07-24
WO2018040112A1 (en) 2018-03-08

Similar Documents

Publication Publication Date Title
CN109690482A (zh) 虚拟机图形处理器的分配
US10664323B2 (en) Live migration of virtual machines in distributed computing systems
US10074206B1 (en) Network-optimized graphics library for virtualized graphics processing
US9201875B2 (en) Partition file system for virtual machine memory management
US9727360B2 (en) Optimizing virtual graphics processing unit utilization
US10579404B2 (en) Provisioning virtual desktops with stub virtual disks
EP2945065A2 (en) Real time cloud bursting
US20160004531A1 (en) Interactive content development
US10366046B2 (en) Remote direct memory access-based method of transferring arrays of objects including garbage data
US10423463B1 (en) Computational task offloading for virtualized graphics
US10983913B2 (en) Securing exclusive access to a copy of a metadata track via a process while the metadata track is held in a shared mode by another process
US10540194B2 (en) Runtime GPU/CPU selection
JP2023057535A (ja) コンピュータ実装方法、システムおよびコンピュータプログラム(ワークロード実行のための動的スケーリング)
US10802865B2 (en) Fast instantiation of virtual machines in distributed computing systems
US10084877B2 (en) Hybrid cloud storage extension using machine learning graph based cache
WO2017045272A1 (zh) 虚拟机迁移方法和装置
US20180336085A1 (en) Crash dump extraction of guest failure
US10802874B1 (en) Cloud agnostic task scheduler
US20150186180A1 (en) Systems and methods for affinity dispatching based on network input/output requests
US10613986B2 (en) Adjustment of the number of tasks for a cache storage scan and destage application based on the type of elements to be destaged from the cache storage
WO2022009011A1 (en) Managing asynchronous operations in cloud computing environments
US20230075482A1 (en) Conditionally deploying a reusable group of containers for a job based on available system resources
EP4198729A1 (en) Workload characterization-based capacity planning for cost-effective and high-performance serverless execution environment
US10176120B2 (en) Cache prefetching in offloaded data transfer (ODX)
CN117687738A (zh) 一种缓存控制方法、装置和计算机设备

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
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20190426

WD01 Invention patent application deemed withdrawn after publication