CN102402462B - 用于对启用gpu的虚拟机进行负载平衡的技术 - Google Patents

用于对启用gpu的虚拟机进行负载平衡的技术 Download PDF

Info

Publication number
CN102402462B
CN102402462B CN201110308337.5A CN201110308337A CN102402462B CN 102402462 B CN102402462 B CN 102402462B CN 201110308337 A CN201110308337 A CN 201110308337A CN 102402462 B CN102402462 B CN 102402462B
Authority
CN
China
Prior art keywords
processing unit
virtual machine
graphics processing
amount
gpu
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
CN201110308337.5A
Other languages
English (en)
Other versions
CN102402462A (zh
Inventor
B·S·波斯特
V·庞南潘
P·辛格
W·M·P·约翰斯顿
E·K-h·韩
P·查克拉博蒂
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of CN102402462A publication Critical patent/CN102402462A/zh
Application granted granted Critical
Publication of CN102402462B publication Critical patent/CN102402462B/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/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/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Image Generation (AREA)
  • Processing Or Creating Images (AREA)

Abstract

本文描述了用于对启用GPU的虚拟机进行负载平衡的技术。本文公开了用于对虚拟机之间的3D图形处理单元使用进行平衡的示例性技术。在一示例性实施方式中,虚拟化平台可为虚拟机加载图形渲染模块的实例;选择供图形渲染模块在其上运行的GPU;以及将虚拟机配置成向所选CPU进行渲染。除以上之外,在具体实施方式、权利要求书和附图中描述了其他方面。

Description

用于对启用GPU的虚拟机进行负载平衡的技术
相关案例的交叉引用
本申请在主题上与题为“Dynamic Virtual Device Failure Recovery(动态虚拟机设备故障恢复)”的美国专利申请第xx/xxx,xxx号(代理人案号为MVIR-0670/330194.01)有关,该申请的内容通过引用整体结合于此。
技术领域
本发明涉及计算机显示技术,尤其涉及用于对启用GPU的虚拟机进行负载平衡的技术。
背景技术
虚拟机平台通过在每个操作系统自己的虚拟机内运行该操作系统来允许多个客操作系统在物理机上的同时执行。可由虚拟机中提供的一个示例性服务是虚拟桌面会话。虚拟桌面会话在本质上是在虚拟机内运行的将其用户界面发送到远程计算机的个人计算机环境。这一体系结构类似于远程桌面环境,但改为将多个用户同时连接到服务器类操作系统,在虚拟桌面会话中,每一用户能够访问在虚拟机中执行的他们自己的商用操作系统。
现代操作系统实施了用于3D应用/视频游戏的三维(3D)图形用户界面及其操作系统用户界面。用户享受与3D环境交互的体验,并且期望能够在虚拟桌面会话中将3D图形流传送给客户机;然而,由于多种原因而难以实现流传送3D图形。例如,流传送3D图形的动作需要带宽和/或压缩。此外,虚拟桌面服务器将需要包括3D图形处理单元(GPU),其能够执行3D功能。3D图形处理是资源密集的,并且GPU通常每次仅能渲染几个3D图形用户界面。如果这些GPU不得不渲染过多图形用户界面,则它们会快速地变得过载。遗憾的是,在虚拟桌面部署中,GPU可能不得不同时渲染大量3D图形用户界面。这会导致一个或多个操作超时,并且图形驱动程序进而将重置图形处理单元——其会导致3D应用程序终止。因此,需要用于防止GPU变得过载且崩溃的技术。
发明内容
示例性实施方式包括一种系统。在该示例中,该系统包括但不限于处理器、以及在计算机系统可操作时与该处理器通信的存储器。在此示例中,存储器可包括计算机可读指令,该计算机可读指令在执行时使处理器:指派一组虚拟机在第一3D图形处理单元上渲染3D图形;至少基于第一3D图形处理单元用来对命令进行响应所花的时间量来确定第一3D图形处理单元(504)被过度使用;至少响应于对第一3D图形处理单元被过度使用的判定,将第一虚拟机从该组虚拟机移至第二图形处理单元。除以上之外,权利要求书、具体实施方式和附图中描述了其他技术。
另一示例性实施方式包括计算机可读存储介质。在此示例中,计算机可读存储指令包括计算机可读指令,该计算机可读指令在执行时使处理器:估计用于为第一虚拟机渲染3D图形的图形存储器的量;响应于确定与由被指派在第一图形处理单元上渲染图形的一组虚拟机所发出的直接存储器存取事务相关联的等待时间值小于第一阈值以及所估计的用于渲染3D图形的图形存储器的量小于第二阈值,从多个3D图形处理单元选择第一3D图形处理单元;以及指派所述第一虚拟机在第一3D图形处理单元上渲染3D图形。除以上之外,权利要求书、具体实施方式和附图中描述了其他技术。
另一示例性实施方式包括一种方法。在此示例中,方法包括但不限于:估计用于为虚拟机渲染图形的图形存储器的量;将所估计的图形存储器的量与所估计的由多个3D图形处理单元控制的可用图形存储器的量进行比较;根据比较从多个3D图形处理单元选择为虚拟机渲染3D图形的3D图形处理单元;以及指派所选3D图形处理单元来为虚拟机渲染3D图形。除以上之外,权利要求书、具体实施方式和附图中描述了其他技术。
本领域技术人员将理解,本公开的一个或多个各种方面可包括但不限于用于实现此处所引用的方面的电路和/或编程;该电路和/或编程实质上可以是配置成实现本文所引用的方面的硬件、软件和/或固件的任何组合,这取决于系统设计者的设计选择。
以上是概述,并且因此必然包含细节的简化、一般化及省略。本领域技术人员将明白,本概述只是说明性的并且决不旨在是限制性的。
附图说明
图1描绘了计算机系统的高级框图。
图2描绘了虚拟机服务器的高级框图。
图3描绘了虚拟机服务器的高级框图。
图4描绘了虚拟桌面服务器的高级框图。
图5描绘了虚拟桌面服务器的高级框图。
图6描绘了虚拟桌面服务器的高级框图。
图7描绘了数据中心的高级框图。
图8描绘了用于平衡虚拟机之间的GPU使用的操作流程。
图9示出了包括附加操作的图8的操作流程。
图10描绘了用于平衡虚拟机之间的GPU使用的操作流程。
图11示出了包括附加操作的图10的操作流程。
图12描绘了用于平衡虚拟机之间的GPU使用的操作流程。
图13示出了包括附加操作的图12的操作流程。
具体实施方式
本发明可使用一个或多个计算机系统。图1及以下讨论旨在提供可在其中实现所公开的主题的合适计算环境的简要概括描述。
贯穿本说明书使用的术语电路可包括诸如硬件中断控制器、硬盘驱动程序、网络适配器、图形处理器、基于硬件的视频/音频编解码器等硬件组件,以及用于操作这些硬件的固件。术语“电路”还可以包括由固件和/或软件来配置的进行指令读取和执行的微处理器、专用集成电路、以及处理器,例如多核通用处理单元的核。处理器可由从例如RAM、ROM、固件和/或大容量存储等存储器加载的指令来配置,从而具体化可用于配置处理器来执行功能的逻辑。在其中电路包括硬件和软件的组合的示例实施方式中,实现者可以编写具体化逻辑的源代码,该源代码随后被编译成可由硬件执行的机器可读代码。因为本领域技术人员可以明白现有技术已经进化到硬件实现的功能或软件实现的功能之间几乎没有差别的地步,因而选择硬件还是软件来实现此处描述的功能只是一个设计选择。换言之,由于本领域的技术人员可以理解软件进程可被变换成等效的硬件结构,且硬件结构本身可被变换成等效的软件进程,因此选择硬件实现或是软件实现留给了实现者。
现在参考图1,描绘了示例性计算系统100。计算机系统100可包括处理器102,例如,执行核。尽管示出了一个处理器102,但在其他实施方式中,计算机系统100可具有多个处理器,例如每一处理器衬底有多个执行核,和/或各自可具有多个执行核的多个处理器衬底。如图所示,各种计算机可读存储介质110可由一个或多个系统总线互连,所述系统总线将各种系统组件耦合到处理器102。系统总线可以是几种类型的总线结构中的任何一种,包括存储器总线或存储器控制器、外围总线、以及使用各种总线体系结构中的任一种的局部总线。在示例实施方式中,计算机可读存储介质110可以包括例如随机存取存储器(RAM)104、存储设备106(例如电机硬盘驱动程序、固态硬盘驱动程序等)、固件108(例如闪速RAM或ROM)、以及可移动存储设备118(例如CD-ROM、软盘、DVD、闪速驱动程序、外部存储设备等)。本领域的技术人员应当理解,可使用其他类型的计算机可读存储介质,如磁带盒、闪存卡、和/或数字视频盘。
计算机可读存储介质110可以提供对处理器可执行指令122、数据结构、程序模块以及诸如可执行指令之类的用于计算机100的其他数据的非易失性和易失性存储。基本输入/输出系统(BIOS)120可被存储在固件108中,它包含帮助在诸如启动期间在计算机系统100内的各元件之间传递信息的基本例程。包括操作系统和/或应用程序的多个程序可被存储在固件108、存储设备106、RAM 104和/或可移动存储设备118上,并且可由处理器102来执行。
命令和信息可由计算机100通过输入设备116来接收,输入设备可包括但不限于键盘和定点设备。其他输入设备可以包括话筒、操纵杆、游戏手柄、扫描仪等等。这些和其他输入设备常通过耦合到系统总线的串行端口接口连接到处理器102,但也可通过其他接口连接,如并行端口、游戏端口或通用串行总线(USB)。显示器或其他类型的显示设备也可经由诸如视频适配器等可以是图形处理器单元112的一部分或可连接到图形处理器单元112的接口来连接到系统总线。除显示器之外,计算机通常包括其他外围输出设备,如扬声器和打印机(未示出)。图1的示例性系统还可包括主适配器、小型计算机系统接口(SCSI)总线和连接到SCSI总线的外部存储设备。
计算机系统100可使用至一个或多个远程计算机,如远程计算机的逻辑连接在网络化环境中操作。远程计算机可以是另一计算机、服务器、路由器、网络PC、对等设备或其他常见的网络节点,并且通常包括上面关于计算机系统100所述的许多或全部元件。
当在LAN或WAN联网环境中使用时,计算机系统100可通过网络接口卡114连接至LAN或WAN。NIC 114可以是内置或外置的,其可以连接到系统总线。在联网环境中,相对于计算机系统100所描述的程序模块或其部分可被储存在远程存储器存储设备中。可以理解,所描述的网络连接是示例性的,且可以使用在计算机之间建立通信链路的其他手段。虽然可构想本发明的许多实施方式尤其适用于计算机化的系统,然而在本说明中不意味着将本发明限于那些实施方式。
转向图2,示出了可被用来生成虚拟机的示例性虚拟平台。在该实施方式中,系统管理程序微内核202可被配置成控制并仲裁对计算机系统200的硬件的访问。系统管理程序微内核202可以生成称为分区的执行环境,如子分区1到子分区N(其中N是大于1的整数)。在此,子分区是系统管理程序微内核202所支持的基本隔离单元。系统管理程序微内核202可以隔离一个分区中的进程,使其不能访问另一分区的资源。每个子分区都可以被映射到在系统管理程序微内核202控制之下的一组硬件资源,例如,存储器、设备、处理器周期等。在各实施方式中,系统管理程序微内核202可以是独立的软件产品、操作系统的一部分、嵌入在主板的固件中、专用集成电路、或其组合。
系统管理程序微内核202可以通过限制物理计算机系统中的客操作系统的存储器视图来实施分区划分。当系统管理程序微内核202实例化一虚拟机时,它可以将系统物理存储器(SPM)的页(例如,具有开始和结束地址的固定长度存储器块)分配给虚拟机作为客物理存储器(GPM)。在此,客的受限的系统存储器视图由系统管理程序微内核202来控制。术语“客物理存储器”是从虚拟机的视点描述存储器页的简写方式,且术语系统物理存储器是从物理系统的观点描述存储器页的简写方式。因此,被分配给虚拟机的存储器页会有客物理地址(虚拟机所使用的地址)和系统物理地址(页的实际地址)。
客操作系统可以虚拟化客物理存储器。虚拟存储器是一种管理技术,其允许操作系统过度提交存储器,并且给予应用程序对连续工作存储器的唯一访问。在虚拟化环境中,客操作系统可以使用一个或多个页表来将已知为虚拟客地址的虚拟地址转换成客物理地址。在该示例中,存储器地址可以具有客虚拟地址、客物理地址以及系统物理地址。
在所描绘的示例中,父分区组件也可被认为是类似于Xen的开源系统管理程序的域0,父分区组件可以包括主机204。主机204可以是操作系统(或一组配置实用程序),并且主机204可以被配置成通过使用虚拟服务提供者228(VSP)向在子分区1-N中执行的客操作系统提供资源。VPS 228(一般在开源社区中被称为后端驱动程序)可用来通过虚拟化服务客户机(VSC)(在开源社区或类虚拟化设备中一般称为前端驱动程序)对到硬件资源的接口进行多路复用。如图所示,虚拟服务客户机可以在客操作系统的上下文中执行。然而,这些驱动程序不同于客机中的其余驱动程序,因为向它们提供了系统管理程序而非客机。在一示例性实施方式中,虚拟服务提供者228与虚拟服务客户机216和218通信所使用的路径可以被视为虚拟路径。
如图所示,仿真器234(例如虚拟化IDE设备、虚拟化视频适配器、虚拟化NIC等)可被配置成在主机204中运行并被附连到可供客操作系统220和222使用的资源。例如,当客操作系统接触被映射到设备的寄存器所处的存储器位置、或者存储器被映射的设备时,微内核系统管理程序202可截取该请求并将客机试图写入的值传递给相关联的仿真器。在此,该示例中的资源可被认为是虚拟设备所处的位置。仿真器的以这种方式的使用可以被视为仿真路径。仿真路径与虚拟化路径相比是低效的,因为与在VSP和VSC之间传递消息相比,它需要更多的CPU资源来仿真设备。例如,可以将用来经由仿真路径把值写入盘的、被映射至寄存器的存储器上的几百个动作减少为单个消息,该消息在虚拟路径中从VSC被传递至VSP。
每一子分区可包括一个或多个虚拟处理器(230和232),客操作系统(220和222)可管理并调度线程以便在这些虚拟处理器上执行。一般而言,虚拟处理器是提供具有特定架构的物理处理器的表示的可执行指令以及相关联的状态信息。例如,一个虚拟机可具有带有英特尔x86处理器特性的虚拟处理器,而另一虚拟处理器可具有PowerPC处理器的特性。本例中的虚拟处理器可被映射到计算机系统的处理器,使得实现虚拟处理器的指令将得到处理器的支持。由此,在包括多个处理器的实施方式中,虚拟处理器可以由处理器同时执行,同时例如其他处理器执行系统管理程序指令。分区中虚拟处理器和存储器的组合可被认为是虚拟机。
客操作系统(220和222)可以是任何操作系统,如来自微开源社区等的操作系统。客操作系统可包括用户/内核操作模式,并且可具有能包括调度器、存储器管理器等的内核。一般而言,内核模式可包括处理器中的执行模式,该执行模式授予至少对特权处理器指令的访问。每一客操作系统可具有相关联的文件系统,该文件系统上存储有诸如终端服务器、电子商务服务器、电子邮件服务器等应用程序以及客操作系统本身。客操作系统可调度线程来在虚拟处理器上执行,并且可实现此类应用程序的实例。
现在参考图3,示出了上述图2中的替换虚拟平台。图3描绘了与图2的组件相类似的组件;然而,在该示例实施方式中,系统管理程序302可包括微内核组件以及和图2的主机204中的组件(如虚拟服务提供者228和设备驱动程序224)相类似的组件,而管理操作系统304可包含例如用于配置系统管理程序302的配置实用程序。在该体系结构中,系统管理程序302可以执行与图2的系统管理程序微内核202相同或相似的功能;然而,在该体系结构中,系统管理程序304可被配置成向在子分区中执行的客操作系统提供资源。图3的系统管理程序302可以是独立的软件产品、操作系统的一部分、嵌入在主板的固件内,或者系统管理程序302的一部分可以由专用集成电路来实现。
现在参考图4,它示出虚拟桌面服务器400的高级框图。在一实施方式中,虚拟桌面服务器400可以被配置成部署到客户机(例如,诸如智能电话的移动设备)、具有和图1所示组件相似的组件的计算机系统等等的虚拟桌面会话(VDS)。简言之,虚拟桌面技术使用户能与虚拟机中运行的客操作系统远程地交互。不同于远程桌面会话,在虚拟桌面会话中,仅仅一个用户登录到客操作系统中并且该用户可以对其具有总控制,例如,该用户可以作为管理员运行并且在客机上具有完全的权限。在所示例子中,虚拟桌面服务器400可以具有与图2和图3的计算机系统200或300类似的组件。虚拟化平台402是上面在图2和图3中所述的虚拟化基础结构组件的逻辑抽象。在以下章节中被描述为在虚拟化平台402“以内”的功能可以在图2和图3所述的一个或多个元件中实现。例如,将在下面的段落中更详细描述的3D图形服务管理器404可以在图2的主机204中实现。在一个更具体的示例中,3D图形服务管理器404可以在父分区中运行的主机操作系统中实现。
启动虚拟桌面会话要求对虚拟机内的客操作系统进行实例化。在示例性实施方式中,虚拟桌面管理器(例如处理器可执行指令的模块)可以响应于请求而启动虚拟机414(其可以引导客操作系统428)。虚拟桌面管理器可以在逻辑处理器上执行,并且可以指示虚拟化平台402(例如微内核系统管理程序202)为分区分配存储器。虚拟化平台402可以执行并且配置虚拟机414的存储器内的虚拟设备,并且将引导加载器程序加载到分配给VM 414的存储器中。引导加载器程序可以在虚拟处理器上执行(其进而可以在处理器上运行),并且客操作系统428可以加载在虚拟机414内。会话管理器408可以由客操作系统428来加载,并且其可以加载诸如运行时子系统426之类的环境子系统,所述环境子系统可以包括诸如操作系统核410之类的内核模式部分。在一实施方式中,环境子系统可以被配置成将服务的子集展示给应用程序并向内核420提供访问点。当客操作系统428被加载时,引导加载器程序可以退出,并将对虚拟机414的控制转交给客操作系统428。客操作系统428可以执行图4所示的各个模块,并且将其自身配置为主控虚拟桌面会话。例如,客操作系统428可以包括致使远程呈现引擎406、会话管理器408等等在引导之际启动的注册表值。
在客操作系统428运行以后的某个时刻,其可以从客户机接收连接请求。该传入的连接请求可以首先由远程呈现引擎406来处理,该远程渲染引擎406可以被配置为监听连接消息,并且当接收到消息时,其可以产生栈实例。远程呈现引擎406可以运行会话的协议栈实例,并且由虚拟化平台402渲染的3D图形用户界面(在以下段落中进行更详细的描述)可以被远程显示子系统418接收到并且通过协议栈实例发送给客户机。一般而言,协议栈实例可被配置成将用户界面输出路由到相关联的客户机、以及将从相关联的客户机接收到的用户输入路由到操作系统核心410。简言之,操作系统核心410可以被配置成管理屏幕输出:收集来自键盘、鼠标和其它设备的输入。
用户凭证(诸如用户名/口令组合)可由远程呈现引擎406接收并被传递至会话管理器408。会话管理器408可以将凭证传递至登录过程,登录过程可以将凭证路由至认证子系统424以进行验证。认证子系统424可以确定用户凭证是有效的并且可以启动虚拟桌面会话,也就是说用户可以登陆到客操作系统428。
认证子系统424还可以生成系统令牌,系统令牌可以在每当用户尝试执行一进程以确定用户是否具有运行该进程或线程的安全凭证时使用。例如,当进程或线程尝试获得访问时(例如,打开、关闭、删除和/或修改例如文件、设置或应用程序这样的对象),线程或进程可由安全子系统422来认证。安全子系统422可以对照与对象相关联的访问控制列表来检查系统令牌,并且基于系统令牌中的信息与访问控制列表的比较来确定线程是否具有许可。如果安全子系统422确定线程被授权,则允许该线程访问对象。
继续对图4的描述,在一实施方式中,操作系统核心410可以包括图形显示界面416(GDI)和输入子系统412。在一示例实施方式中,输入子系统412可以被配置成经由虚拟桌面会话的协议栈实例从客户机接收用户输入,并将该输入发送至操作系统核410。在一些实施方式中,用户输入可包括指示绝对和/或相对鼠标运动命令、鼠标坐标、鼠标点击、键盘信号、操纵杆运动信号等的信号。例如对图标的鼠标双击之类的用户输入可被操作系统核410接收,并且输入子系统412可被配置成确定图标位于与该双击相关联的坐标处。输入子系统412随后可被配置成向可执行与该图标相关联的应用的进程的运行时子系统426发送通知。
转到图5,其例示了可被用于配置虚拟桌面服务器400以渲染虚拟机(414、414B、和/或414C)的3D图形,并对诸如3D GPU 504、504B、和/或504C之类的图形处理单元上的虚拟机进行负载平衡。在此例示的实施方式中,虚拟桌面服务器400进而向诸如客户机520、520B、和/或520C之类的客户机流传送指示三维图形用户界面的图像。简言之,每个客户机可与运行配置成进行虚拟桌面会话的客操作系统的虚拟机(414、414B、和/或414C)相关联。客户机520、520B和/或520C可包括具有类似于图1中所示的那些组件的组件的计算机系统、运动设备、和/或瘦客户机。例如,瘦客户机可以具有商业硬件和单片式web浏览器,该web浏览器被配置为管理该硬件、用户输入和输出并且连接到因特网。在此示例中,瘦客户机还可包括例如显示之类的用户界面222以及诸如鼠标之类的用户输入设备。
虚拟桌面服务器400还可被配置成在其被启动时渲染3D图形。例如,当虚拟桌面服务器400运行时,诸如3D图形服务管理器404之类的3D图形服务管理器的实例可被启动。3D图形服务管理器404(其在以下段落中进行更详细的描述)可在处理器上执行,并且等待传入虚拟桌面会话连接。简言之,3D图形服务管理器404可被配置成通过确定将每个虚拟机指派到何处以及通过基于性能信息来移动虚拟机,来对图形处理单元上的虚拟机进行负载平衡。
在接收到对启动虚拟机的3D服务的请求之前,3D图形服务管理器404被配置成对系统中的每个图形处理单元进行询问,以标识其特征并将表示其特征的信息存储到表中。特征信息可在随后被用于对图形处理单元的使用进行平衡。在示例性实施方式中,图形处理单元的特征可包括一组能力,即硬件功能,诸如支持表面和纹理共享或支持3D图形应用程序接口(API)的最小版本的能力。另外,图形处理单元的特征可包括图形处理单元的硬件标识符、属性列表、以及3D图形处理单元控制的图形随机存取存储器(图形RAM)的数量,即,嵌入在容纳3D图形处理单元的适配器内的存储器。例如,图形随机存取存储器可被用于存储屏幕图像的位图和Z缓冲器(其管理3D图形中的深度坐标)、纹理、顶点缓冲器、以及编译着色器程序。在示例性实施方式中,图形存储器可以是高速或多端口存储器,诸如视频RAM、动态随机存取存储器、或基于诸如DDR2和图形DDR(GDDR3、GDDR4和/或GDDR5)之类的双数据率(DDR)技术的随机存取存储器。
当接收到虚拟桌面会话连接;启动图形渲染模块(在以下段落中进行更详细的描述)以及向3D-GPU服务提供者512发送将3D组件加载到客操作系统428中的信号时,可通知3D图形服务管理器404。简言之,3D图形服务管理器404可为每个虚拟机加载图形渲染模块的实例;确定图形渲染模块要在哪个GPU上运行;以及向图形渲染模块传递所确定的图形处理单元的设备标识符。图形渲染模块可在随后绑定到3D GPU,并代表其相关联的虚拟机向它进行渲染。在所例示的示例中,图形渲染模块506对应于虚拟机414。用于创建虚拟机414的图形用户界面的定点数据、纹理等可以从虚拟机414被馈送到图形渲染模块506,该图形渲染模块可被虚拟化平台402作为生成图形用户界面的进程来对待。由于大多数3D图形处理单元被设计成每次对几个进程生成几个图形用户界面,因此本领域技术人员可理解,在其中大量图形渲染模块正运行的情形中,GPU可变得更容易过载并重置。
继续初始化过程,3D-GPU服务提供者512可导致3D图形服务客户机514在客操作系统428中分散(spawn)。例如,虚拟机414中的虚拟主板的存储器地址可具有对被映射到IO设备的某些地址的截取集合。当客操作系统428启动时,即插即用模块可执行并且可查询映射至IO的存储器地址。例如图2的管理程序202之类的管理程序可截取读取并用导致即插即用模块加载3D图形服务客户机514的设备标识符进行响应。3D图形服务客户机514可通过将存储器的一个或多个页映射为共享的并将映射传递给3D-GPU服务提供者512来建立至3D-GPU服务提供者512的通信信道。在存储器的页内,可建立消息-传递通信信道516。本质上,消息-传递通信信道516是存储器中3D GPU服务提供者/客户机可对其写入消息并从其读取消息的共享区域。
3D图形服务客户机514还可导致虚拟设备驱动程序518分散。虚拟设备驱动程序518还可在虚拟机514与虚拟化平台402之间建立共享图形孔径526。在示例性实施方式中,虚拟机驱动程序518可分配一组客存储器页,并向3D图形服务客户机514发送包括连接请求和存储器页的地址的信号。图形渲染模块506可接收连接请求和存储器页的地址。图形渲染模块506可向管理程序发送指令该管理程序在该组存储器页中创建图形孔径526的信号。管理程序可将这些页映射至系统物理地址,并执行存储器的范围内的图形孔径526。在此示例中,虚拟设备驱动程序518可被配置成将DMA缓冲器写入客存储器地址范围。当数据被写入客存储器地址范围时,图形孔径526将DMA缓冲器路由至图形渲染模块506。
在示例性实施方式中,虚拟设备驱动程序518对于客操作系统428可表现为有3D能力的图形处理单元的设备驱动程序,由此导致客操作系统428将其自己配置成支持3D图形,例如,通过加载应用程序接口524(API)的实例。虚拟设备驱动程序518被配置成与API 524接口,API 524使得3D应用程序528能产生3D图形。3D应用程序528——例如操作系统图形用户界面、应用程序/视频游戏的用户界面等等——可向API 524发出指令,该API 524可以是诸如的DirectX之类的API。简言之,3D图形API 524提供例如视频游戏之类的图形应用程序与驱动程序(在此情形中的虚拟设备驱动程序518)之间的抽象层。一方面,API 524提供与由虚拟设备驱动程序518展示的图形处理单元接口的低层接口,另一方面其提供可以由应用程序调用的3D图形命令库。API 524可以将3D图形命令库映射到由虚拟设备驱动程序518展示的接口,由此使游戏开发者不必理解每个图形驱动程序的特性。
在操作中,API 524可以生成例如基本几何形状之类的图元,该图元在计算机图形中用作被表示成顶点和常数的其他形状的构建块,并且API 524将这些定点存储在多个直接存储器存取(DMA)缓冲器中。当API 524写入缓冲器时,虚拟设备驱动程序518可重新格式化存储在DMA缓冲器中的数据;将它们打包到一个或多个GPU令牌;以及经由图形孔径526将GPU令牌发送给图形渲染模块506。类似地,当API 524发出命令时,其可被插入到DMA缓冲器中并在令牌中被传送给图形渲染模块506。
图形渲染模块506可接收令牌;提取DMA缓冲器;以及将它们存储在与虚拟化平台402相关联的存储器的页中。在示例性实施方式中,图形渲染模块506可将DMA缓冲器中的命令和图元翻译成API构造,该API构造可被3D图形驱动程序510处理并向图形内核508发出命令连同虚拟化平台402中的DMA缓冲器的地址。
可被配置成调度虚拟桌面服务器400内的图形处理单元上的执行的图形内核508可接收指令和DMA缓冲器的地址,并确定何时向3D图形驱动程序510发出命令。当来自各个DMA缓冲器的图元将被渲染时,图形内核508可向3D图形驱动程序510发送绘制命令,该3D图形驱动程序510可在处理器上执行并且可指令图形处理单元504执行命令以及处理DMA缓冲器中的数据。
图形处理单元504可以执行和生成表示存储器中的图像帧的位图,例如像素值阵列。图形渲染模块506可捕捉位图并将该位图传递给压缩模块,以及随后经由图形孔径526传递给远程呈现引擎406。远程呈现引擎406可经由一个或多个信息分组将位图发送给客户机520。
在一些实例中,由一个或多个图形渲染模块发送的数据流可导致图形处理单元被重置。例如,在图形处理单元过载——即GPU必须渲染过多图像——的情形中,其会超时且GPU将被重置。这导致3D图形驱动程序510重置,其进而导致图形内核508重置至此GPU的连接,这导致终止绑定到GPU的任何图形程序模块。
在示例性实施方式中,3D图形服务管理器404可被配置成对虚拟桌面服务器400内的图形处理单元上的负载进行平衡,以减少重置发生的机会。例如,以及参考图6,其示出了包括5个虚拟机(414-414F,其中虚拟机414在此实例中可被认为是虚拟机414A)的虚拟桌面服务器400的另一高层框图。每个虚拟机可具有在虚拟化平台402(506-506F)中运行的相关联的渲染进程。如附图所示,每个图形渲染模块(506-506F)可被绑定,例如附连到图形处理单元。例如,虚拟机414、414D和414E被绑定到3D GPU 504,虚拟机414B被绑定到3D GPU 504B,而虚拟机414C和414F被绑定到3D GPU 504C。在运行时期间,每个虚拟机可被3D图形服务管理器404移动,且所例示的示例中的虚线示出了将虚拟机414从3D GPU 504移动到3D GPU 504B。
3D图形服务管理器404可被配置成使用循环算法和/或动态放置算法来平衡GPU。例如,循环算法可被用来寻找图形处理单元和用于确定是否指派该图形处理单元以从虚拟机渲染图形的信息。如果信息指示图形处理单元过载,则循环算法可定位下一GPU并执行相同操作。另外,或替换地,3D图形服务管理器404可被配置成使用该信息来选择渲染来自虚拟机的图形的图形处理单元,而不连续地检查每一个。
在示例性实施方式中,用于向例如3D GPU 504之类的GPU指派虚拟机的信息可包括所估计的可为3D图形处理单元所用的图形存储器的量。所估计的可用图形存储器的量可被用于预测GPU是否将超时,以及连接是否将被重置。在此示例中,3D图形服务管理器404可被配置成使用所估计的可用图形存储器的量来设置阈值。当3D图形服务管理器404接收到指派虚拟机的请求时,3D图形服务管理器404可估计虚拟机将尝试使用的图形存储器的量或者用来至少足够为虚拟机渲染图像所需的量,并将所估计的量与阈值(例如,所估计可为图形处理单元所用的图形存储器的量)作比较,并且在所估计的被虚拟机使用的图形存储器的量小于阈值的情况下,向GPU指派图像渲染进程。
在特定示例中,假定3D图形处理单元504控制4千兆字节的缓冲器,3D图形服务管理器404估计虚拟机414E将使用1千兆字节的存储器,阈值被设置为所估计的由GPU控制的可用存储器的量,所估计的被虚拟机414使用的图形存储器的量为1千兆字节,而所估计的被虚拟机414D使用的图形存储器的量为512兆字节。在此示例中,3D图形服务管理器404可将所估计的用于虚拟机414E的量(1千兆字节)与所估计的可用量(大致2.5千兆字节)作比较,并确定GPU可操作虚拟机。3D图形服务管理器404可将虚拟机指派给GPU;减去所估计的用于虚拟机414E的量,以获得所估计的可用于GPU的量(大致1.5千兆字节),并将值存储在表中。
在示例性实施方式中,阈值可被设置为所估计的由GPU控制的可用图形存储器的量。在另一实施方式中,阈值可通过随时间监视图形处理单元并确定在图形处理单元重置时有多少所估计的可用图形存储器可用来设置阈值。例如,可根据性能数据来计算图形处理单元将被重置的概率,并将其与所估计的可用图形存储器进行关联。在示例实施方式中,此所估计的可用图形存储器的量可被设置为阈值。在其他实施方式中,可将此所估计的可用图形存储器的量乘以标量值,并且经缩放的所估计的可用图形存储器的量可被用作阈值。例如,所估计的可用图形存储器的量的80%可被设置为阈值。
在示范的实施方式中,3D图形服务管理器404基于信息来估计虚拟机可使用的图形存储器的量,该信息包括但不局限于:像素尺寸、色彩深度、用于虚拟机的显示的数量、吞吐量、压缩比、所估计的将为虚拟机渲染的表面的量、存储生成顶点所需的图元所需的存储器的量、存储应用于顶点的纹理所需的存储器、向对象应用选择的抗锯齿效果所需的存储器等。响应于接收到虚拟机启动的指示,3D图形服务管理器404可被配置成估计虚拟机将使用的图形存储器的量。在此示例中,用于估计所使用的图形存储器的量的信息的一些或全部可被存储在与虚拟机相关联的配置文件中。在另一实施方式中,所估计的虚拟机在运行时使用的图形存储器的量可被监视,被3D图形服务管理器404使用,并被存储在配置文件中以供在后继虚拟桌面会话期间使用。
除了前述之外,在示例性实施方式中,其他信息可被用于向可用GPU指派虚拟机。例如,已被指派给GPU的虚拟机的数量可被用于预测GPU是否过载。可随时间监视指派给GPU的虚拟机的数量,并且可在图形处理单元重置时,记录所绑定的虚拟机的数量。参看图6,3D图形服务管理器404可包括表中反映以下内容的值:3D GPU 504附连3个虚拟机、3D GPU 504B附连1个虚拟机、而3D GPU 504C附连两个虚拟机。如果3D图形处理单元重置,则3D图形服务管理器404可根据表来确定在其崩溃时有多少虚拟机被附连。可根据随时间捕捉的性能数据来计算不同类型的图形处理单元将被重置的概率,并将其与所估计的附连的虚拟机的量进行关联。在其中3D图形服务管理器404也使用所估计的图形存储器的量来选择GPU的示例性实施方式中,所估计的可用图形存储器的量可具有比所附连的虚拟机的数量更大的权重。
在相同或另一示例性实施方式中,3D图形服务管理器404用来确定是否向GPU指派虚拟机的信息可包括描述图形处理单元用来对命令作出响应所花的平均时间长度,即等待时间,可用来确定图形处理单元是否有压力。在一实施方式中,3D图形服务管理器404可将平均等待时间存储在表中,并且在崩溃之际,3D图形服务管理器404可将命令的平均等待时间与阈值作比较。如果平均等待时间小于阈值,则3D图形服务管理器404可被配置成向GPU指派虚拟机。
阈值可以由管理员等设置并可以依赖于使用的图形处理单元。在示例性实施方式中,可以执行对不同类型的GPU加载递增数量的虚拟机的实验。随着更多虚拟机被添加时,等待时间可以被记录并且可以通过将在一时间段上的重置的量与在等待时间较低时的相同时间段上的重置的量作比较来计算重置的概率。所监视的与高重置概率相关联的等待时间可被用于设置阈值。在示例实施方式中,所监视的等待时间可被设置为阈值。在其他的示范实施方式中,所监视的等待时间可被乘以标量值,并且可以使用经缩放的等待时间。例如,所监视的等待时间的80%可以被设置为阈值。
在示例性实施方式中,可以自图形内核508向GPU发出命令的时间起测量等待时间直至接收到确认(“ACK”)。在接收到每个ACK之后,图形内核508可以将与请求相关联的等待时间发送给3D图形服务管理器404。3D图形服务管理器404可以更新表中反映该GPU的平均等待时间的值。
在另一示例实施方式中,可自虚拟设备驱动程序518开始直接存储器存取事务的时间起测量等待时间。例如,API 524可向DMA缓冲器写入图元,其可被虚拟设备驱动程序518捕捉并被发送到图形渲染模块506。API 524可最终发出命令。当虚拟设备驱动程序518接收命令时,它可启动计时器。虚拟设备驱动程序518可以将该命令发送给图形渲染模块506,图形渲染模块506进而将向图形内核508发送命令。图形内核508可向3D图形驱动程序510发送命令,其可导致3D图形处理单元504处理DMA缓冲器中的图元。3D GPU 504可生成ACK,并且情况可被传播回虚拟机驱动程序518,且虚拟设备驱动程序518可停止定时器。虚拟设备驱动程序518随后可以经由消息-递送通信信道516将等待时间发送给3D图形服务管理器404。3D图形服务管理器404可以更新表中反映虚拟机的平均等待时间的值。
例如,虚拟设备驱动程序518可向3D图形服务客户机514发送包括事务的等待时间的消息。3D GPU服务提供者512可接收该消息并将该消息发送给3D图形服务管理器404,后者可更新表。在此示例中,事务的等待时间可被用于确定由虚拟机414发出的DMA事务的平均等待时间,这反映3D GPU 504的资源是否被过量使用。
在示例性实施方式中,除了在虚拟机分散时对它们进行负载平衡之外,响应于当前条件,3D图形服务管理器404可被配置成将更多虚拟机从一个3DGPU移动到另一个(通过重新绑定其相关联图形渲染模块)。例如,图6示出了被从3D GPU 504移动到3D GPU 504B的图形渲染模块506。在此示例性实施方式中,当上下文切换发生以运行虚拟化平台402时、当检测到对启动虚拟机的请求时、和/或在预定时间量期满且生成中断之后,3D图形服务管理器404可运行。
在此示例性实施方式中,3D图形服务管理器404可被配置成确定任何GPU是否过载,例如,是否处于重置风险,以及是否移动虚拟机(在迁移操作可降低过载GPU的风险且将不会令人难以接受地增大导致其他GPU重置的风险的情形中)。例如,3D图形服务管理器404可被配置成确定被绑定到每个3D GPU的虚拟机的数量、对于每个3D GPU可用的图形存储器的量、由绑定到每个3D GPU的每个虚拟机发起的DMA事务的平均等待时间、每个图形渲染模块使用3D GPU的百分比、与每个图形渲染模块相关联的吞吐量、和/或图形内核命令的平均等待时间。在此信息指示3D GPU过载的情形中,3D图形服务管理器404可被配置成表示哪个虚拟机处于最大压力下。3D图形服务管理器404可在随后向另一图形处理单元指派有压力的虚拟机。该操作流程中的指派部分类似于以上所描述的指派过程。
在示例性实施方式中,3D图形服务管理器404可通过向图形渲染模块(例如,图形渲染模块506)发送移动命令连同新GPU的设备标识符,来发起移动操作。在此示例中,图形渲染模块506可接收命令并找到与新标识符相关联的GPU,例如,3D GPU 504B。在此示例中,图形渲染模块可被配置成复制任何内核缓冲器;绑定到3D GPU 504B,以及拆卸至3D GPU 504的映射。在绑定操作完成之后,图形渲染模块可向3D图形服务管理器404通知发生了移动,而3D图形服务管理器404可更新其表以反映图形渲染模块506被附连到3DGPU 504B。
参看图7,在示例性实施方式中,移动操作可被用于将虚拟机迁移到不同的虚拟桌面服务器(400B-400D)。如附图中所示的,每个虚拟桌面服务器(400-400D)可包括一组一个或多个图形处理单元(704-704D)以及3D图形服务管理器(404-404D)的实例。还示出了可被配置成成控制数据中心700的管理系统702。管理系统702任选地可包括主3D图形服务管理器(以虚线指示以标示其被认为是任选的),该主3D图形服务管理器可控制数据中心700中的所有其他3D图形服务管理器(404-404D)。
标识每个虚拟机的独特信息可被用于影响迁移操作。例如,当每个虚拟机被启动时,在其中启动VM的服务器上运行的3D图形服务管理器(例如,3D图形服务管理器404)可创建数据中心内的虚拟机的唯一标识符。唯一标识符可包括虚拟机在其上渲染的图形处理单元的类型,所估计的其使用的图形存储器的量等。在示例实施方式中,如果虚拟机414有压力,且在服务器上没有合适的GPU可用,则3D图形服务管理器404可向数据中心内的每个虚拟桌面服务器或者任选地向管理系统702发送唯一标识符。
在其中唯一标识符被发送给每个虚拟桌面服务器的示例中,图形服务管理器(404-404D)可基于先前段落中描述的信息确定虚拟机是否可被指派给图形处理单元。在图形服务管理器(例如,图形服务管理器404C)确定其可操作虚拟机414的情形中,虚拟桌面服务器400可被配置成将虚拟机414迁移到虚拟桌面服务器400C。
在其中唯一标识符被发送给主3D图形服务管理器706的情形中,主3D图形服务管理器706可被配置成包括来自数据中心700内的每个3D图形服务管理器(404-404D)的所有性能信息;并且主3D图形服务管理器706可基于在先前段落中描述的信息来确定虚拟机是否可被指派给数据中心700内的任何图形处理单元。
以下是描绘操作流程的一系列流程图。为便于理解,流程图被组织成使得初始流程图通过总体“大图”视点来演示各实现,并且后续的流程图提供以虚线示出的进一步的附加物和/或细节。此外,本领域的技术人员可以理解,虚线所描绘的操作流程被认为是任选的。
参看图8,其示出了用于对虚拟机之间的图形处理器使用进行平衡的操作流程,包括操作800、802、804和806。操作800指示操作流程的开始,而操作802示出指派一组虚拟机在第一3D图形处理单元上渲染3D图形。例如,并参考图6,在示例性实施方式中,3D图形服务管理器400可指派一组虚拟机在图形处理单元上进行渲染,例如,指派虚拟机414、虚拟机414D、和虚拟机414E在3D图形处理单元504上渲染3D图形。在此特定示例中,每个虚拟机(414-414F)可与图形渲染模块(506、506D和506)相关联,这些图形渲染模块在虚拟化平台402中执行,例如在图2的主机204内执行,这些图形渲染模块可经由应用程序接口调用来绑定到3D图形处理单元504。在此示例中,图形渲染模块(506、506D和506)可被配置成收集包含图元的DMA缓冲器以及表示命令的API结构;任选地,将命令翻译成可被3D图形驱动程序510处置的命令;以及将这些命令连同包含DMA缓冲器的存储器的页发给图形内核508。
继续图8的描述,操作804示出至少基于第一3D图形处理单元用来对命令进行响应所花的时间量来确定第一3D图形处理单元被过度使用。例如,在示例性实施方式中,3D图形服务管理器404可在处理器上执行,并确定3D图形处理单元504被过度使用,例如,3D图形处理单元504不具有用于服务所有其请求的足够的资源,并且可被重置,由此导致图形渲染模块(506、506D和506)终止。在此特定示例中,确定可至少基于图形处理单元(例如3D GPU504)用来用ACK答复图形内核508所花的平均时间长度。在此示例中,可用硬件用来响应图形内核命令所花的等待时间来更新由3D图形服务管理器404所控制的表。可将平均值与阈值等待时间值作比较,并且如果平均值大于阈值,则3D图形服务管理器404可被配置成确定3D GPU 504被过度使用。
继续图8的描述,操作806示出至少响应于对第一3D图形处理单元被过度使用的判定来将第一虚拟机从该组虚拟机移至第二图形处理单元。例如,并再次参看图6,在示例性实施方式中,3D图形服务管理器404可被配置成选择第一虚拟机(例如,虚拟机414)来移至第二图形处理单元(例如,3D GPU504B)。在示例中,将虚拟机414移至3D GPU 504B涉及将图形渲染模块506从3D GPU 504移至3D GPU 504B。例如,3D图形服务管理器404可将移动命令连同3D GPU 405B的设备标识符发送给图形渲染模块506。图形渲染模块506可接收命令;复制内部缓冲器;以及绑定至3D GPU 504B。在绑定操作完成之后,图形渲染模块506可拆卸至3D GPU 504的映射,并将完成信号发送给3D图形服务管理器404,该3D图形服务管理器可更新表以反映虚拟机414被绑定到3D GPU 504B。进一步,图形渲染模块506可向3D GPU 504B发出渲染命令,且可由3D图形服务管理器404监视命令的平均等待时间。
现在回到图9,其示出图8的操作流程,包括附加操作/细化908-916。操作908示出了响应于确定所估计的由第二图形处理单元控制的可用图形存储器的量大于阈值,将第一虚拟机移至第二图形处理单元。例如,并参看图6,在示例性实施方式中,3D图形服务管理器404可被配置成被绑定至3D GPU 504(例如,虚拟机414)的虚拟机来移动。在此示例中,决定将虚拟机414移至3D GPU 504B可至少基于对所估计的可为3D GPU 504B所用的图形存储器的量大于阈值的判定,该阈值可基于所估计的用于渲染虚拟机414的图形的图形存储器的量。在此情形中,3D图形服务管理器404可被配置成响应于对3D GPU504过载的判定以及对3D GPU 504B可容纳虚拟机414的判定来移动虚拟机414。
继续图9的描述,操作910示出基于由第一虚拟机发起的直接存储器存取事务的平均等待时间确定第一3D图形处理单元被过度所用。在此示例中,3D图形服务管理器404可移动虚拟机414,因为与虚拟机414相关联的DMA事务的平均等待时间大于例如绑定至3D GPU 504的所有其他图形渲染模块(506D和506E)。在此示例中,3D图形服务管理器404可被配置成首先确定由图形内核508发出的命令的平均等待时间,并在随后所用DMA事务的平均等待时间来确定虚拟机414是与GPU相关联的受压力最重的虚拟机。
转到操作912,其示出了响应于确定指派给第二图形处理单元的第二虚拟机的直接存储器存取事务的平均等待时间小于阈值来移动第一虚拟机。在示例性实施方式中,3D图形服务管理器404可被配置成响应于确定绑定到3D GPU504B的一个或多个虚拟机的DMA事务的平均等待时间小于阈值来将虚拟机移至3D GPU 504B。例如,3D图形服务管理器404可检查包括虚拟机414B的DMA事务的平均等待时间的表。3D图形服务管理器404可将平均等待时间与阈值作比较,并确定平均等待时间小于阈值。这指示虚拟机414B内的负载较低,且理论上指示3D GPU 504B上的负载较低。在此情形中,3D图形服务管理器404可被配置成至少基于此确定移动图形渲染模块506。
转到操作914,其示出了响应于确定指派给第二图形处理单元的虚拟机的数量小于阈值来移动第一虚拟机。在示例性实施方式中,3D图形服务管理器404可被配置成响应于确定绑定到3D GPU 504B的虚拟机的数量小于阈值数量来将虚拟机414移至3D GPU 504B。在此示例中,3D图形服务管理器404可配置成从其表中读取指示当前被绑定到3D GPU 504B的虚拟机的数量(其在所示示例中为1)的值并确定当前所绑定的虚拟机的数量小于阈值数量(即基于性能和/或管理偏好的数量)。在此情形中,3D图形服务管理器404可被配置成至少基于此确定移动图形渲染模块506。
转到操作916,其示出了确定第一图形处理单元和第二图形处理单元的特征。例如,在一实施方式中,3D图形服务管理器404可被配置成确定计算机系统中的每个3D图形处理单元的特征。例如,并继续先前的示例,3D图形服务管理器404可被配置成确定3D图形处理单元504、504B和504C的特征。在此示例中,这些特征可被用于确定图形处理单元是否能够为虚拟机处理3D图形。例如,3D图形服务管理器404可被配置成进行检查以查看图形卡是否支持共享表面和纹理,其是否至少支持例如的特定版本,与图形处理单元相关联的图形存储器的量等等。在此示例中,该信息可被用于填充可被用来平衡虚拟机之间的图形处理单元使用的表。
现在参看图10,其示出了用于对虚拟机之间的图形处理单元使用进行平衡的操作流程,包括操作1000、1002、1004、1006、和1008。转到操作1000,其开始操作流程,而操作1002示出了接收对将第一虚拟机指派给第一3D图形处理单元的请求。例如,并参看图5,在示例性实施方式中,3D图形服务管理器404可执行并接收对将第一虚拟机(例如,虚拟机414)指派给3D图形处理单元(例如,3D GPU 504)的指令。在此示例中,请求可以是指示诸如客户机520之类的客户机已请求虚拟桌面会话的信号。
继续图10的描述,操作1004示出了估计用于为第一虚拟机渲染3D图形的图形存储器的量。例如,在一实施方式中,3D图形服务管理器404可估计虚拟机414可用来渲染3D图形的图形存储器的量,例如,可至少允许足够为虚拟机渲染图形的图形存储器的量。例如,估计可基于从与虚拟机414相关联的配置文件获得的信息,其指示例如虚拟机414在其运行的最后的时间期间所使用的图形存储器的平均量。在另一示例性实施方式中,所估计的为虚拟机渲染图形所需的图形存储器的量可以是根据描述显示图像所需的最小存储器量的信息来估计的。在另一示例实施方式中,所估计的图形存储器的量可以基于所估计的高速缓存图元所需的存储器的量等等。
操作1006示出了响应于确定与由被指派在第一图形处理单元上渲染图形的一组虚拟机所发出的直接存储器存取事务相关联的等待时间值小于第一阈值以及所估计的用于渲染3D图形的图形存储器的量小于第二阈值,来从多个3D图形处理单元选择第一3D图形处理单元。例如,3D图形服务管理器404可存储指示被绑定到3D GPU 504的每个虚拟机的DMA事务的等待时间值的信息。例如,当3D图形服务管理器404接收到对将虚拟机414指派给3D GPU的请求时,虚拟机414D和414E可被绑定到3D GPU 504。在此示例中,3D图形服务管理器404可从表获得等待时间值,并将该等待时间值与阈值作比较。在此示例中,3D图形服务管理器404还可将所估计的用于渲染虚拟机414的3D图形的图形存储器的量与阈值作比较。在虚拟机414D和414E的平均等待时间小于阈值且所估计的用于渲染虚拟机414的3D图形的图形存储器的量小于第二阈值的情况下,3D图形服务管理器404可选择3D GPU 504。
在示例性实施方式中,第二阈值(即,与所估计的用于渲染3D图形的图形存储器的量相关联的阈值)可以基于由3D GPU 504控制的图形存储器的总量以及所估计的用于渲染虚拟机414D和414E的3D图形的图形存储器的量。例如,当虚拟机414D和414E被启动时,3D图形服务管理器404可能已计算了所估计的用于渲染虚拟机414D和414E的3D图形的图形存储器的量,并将这些值存储在表中。当3D图形服务管理器404为虚拟机414D和414E中的每一个选择了3D GPU 504时,3D图形服务管理器404可从所估计的由GPU 504控制的可用图形存储器的量中减去其相关联的所估计的用于渲染3D图形的图形存储器的量,并将该值存储在表中。此值随后可被用作第二阈值,或者第二阈值可至少部分地基于此值。
操作1008示出指派第一虚拟机在第一3D图形处理单元上渲染3D图形。例如,并再次参看图6,在示例性实施方式中,3D图形服务管理器404可被配置成初始化图形渲染模块506并将向其发送绑定到3D图形处理单元504的命令。图形渲染模块506可接收该命令并绑定到3D图形处理单元504。在图形渲染模块504绑定到3D图形处理单元504且在虚拟机414与图形渲染模块506之间建立通信信道之后,图形渲染模块506可接收顶点的DMA缓冲器,并在3D处理单元504上渲染它们。
转到图11,其示出图11的操作流程,包括附加操作1110-1118。操作1110示出了至少根据标识组中的每一个虚拟机的像素尺寸的信息估计用于为第一虚拟机渲染3D图形的图形存储器的量。例如,在一实施方式中,用于为每个虚拟机渲染3D图形的图形存储器的量可基于与虚拟机相关联的像素尺寸。例如,当虚拟机被初始化时,可接收配置文件,该配置文件包括诸如虚拟机的所需显示分辨率之类的信息。3D图形服务管理器404可接收此信息并使用其来估计用于为此虚拟机渲染3D图形的图形存储器的量。
例如,像素尺寸描述可由监视器描述的每个尺寸中的截然不同的像素的数量。由于监视器是两维表面,因此这些尺寸仅两维被使用(高度和宽度)。在示例性实施方式中,可将像素尺寸乘以深度并除以8。该结果描述可用于在所需显示分辨率下渲染图像的图形存储器的量。
继续图11的描述,操作1112示出了至少根据标识第一3D图形处理单元所用的压缩比的信息估计用于为第一虚拟机渲染3D图形的图形存储器的量。例如,在实施方式中,压缩比(即,经压缩的图像与未经压缩的图像的大小之间的比率)可被用于估计虚拟机将使用多少图形存储器来充分地渲染第一虚拟机的图像。例如,3D图形处理单元可被配置成使用经压缩的纹理来减小其大小。当3D图形服务管理器404询问硬件时,其可确定纹理压缩是否可被启用且将达成什么样的压缩比。3D图形服务管理器404可使用此信息来估计虚拟机将使用的图形存储器的量。
参看操作1114,其描绘了至少根据标识所估计的、将为第一虚拟机渲染的表面的数量的信息来估计用于为第一虚拟机渲染3D图形的图形存储器的量。例如,在一实施方式中,所估计的虚拟机将尝试渲染的表面的数量可被用来估计该虚拟机将使用来足够为虚拟机渲染3D图形的图形存储器的量。
转到操作1116,其描绘了响应于确定由图形内核发出的至少一个命令的等待时间小于第三阈值从多个3D图形处理单元选择第一3D图形处理单元。例如,并回顾图6,在示例性实施方式中,3D图形服务管理器404可在处理器上执行,并且响应于确定图形处理单元(例如,3D GPU 504)用来用ACK对由图形内核508所发出的至少一个命令作出答复所花的时间小于阈值,确定指派虚拟机414在3D图形处理单元504上渲染3D图形。在此示例中,可用硬件用来响应图形内核命令所花的等待时间来更新由3D图形服务管理器404所控制的表,并且在一示例性实施方式中,可使用等待时间,或者可为3D GPU504计算平均值。在其中使用平均值的示例中,可将平均值与阈值等待时间值作比较,并且如果平均值大于阈值,则3D图形服务管理器404可被配置成确定3D GPU 504被过度使用。
现在参看操作1118,其示出了响应于确定当前指派给第一3D图形处理单元的虚拟机的数量小于第四阈值来从多个3D图形处理单元选择第一3D图形处理单元。3D图形服务管理器404可被配置成响应于确定绑定到3D图形处理单元504的虚拟机的数据小于阈值数量来确定选择3D图形处理单元504来为虚拟机414渲染图形。在此示例中,3D图形服务管理器404可配置成从其表中读取指示当前被绑定到3D图形处理单元504的虚拟机的数量(其在所示示例中为2)的值并确定当前所绑定的虚拟机的数量小于阈值数量(即基于性能和/或管理偏好的数量)。
现在参考图12,它示出了包括操作1200、1202、1204、1206、以及1208、的操作流程。操作1200开始操作流程,而操作1202示出至少估计用于为虚拟机渲染图形的图形存储器的量。例如,在一实施方式中,3D图形服务管理器404可接收虚拟机(例如,虚拟机414)正被初始的指示,且3D图形服务管理器404可开始操作流程以选择要运行的图形处理单元(例如,3D图形处理单元504)。在此示例中,操作流程可包括估计将被用来充分地渲染虚拟机414的图形的图形存储器的量。例如,所估计的图形存储器的量可被用作虚拟机在运行时上有多存储器密集的指示符。
前述对所用图形存储器的量的估计可基于显示图像所需的最小存储器量。在另一示例实施方式中,所估计的图形存储器的量可基于所估计的用于存储生成顶点所需的图元所必需的存储器的量、应用于这些顶点的纹理、这些顶点应是什么颜色、用于将抗混叠技术应用于对象的存储器等等。在一示例中,此估计可以是静态的,即,由管理员基于预期使用来设置,或者其可以是动态的。例如,虚拟机414使用或尝试使用的图形存储器的量可随时间而被监视,例如,跨虚拟桌面会话,且估计可被用于细化估计。
现在转到操作1204,其描绘了将所估计的图形存储器的量与所估计的由多个3D图形处理单元控制的可用图形存储器的量进行比较。例如,3D图形服务管理器404可被配置成将所估计的将被虚拟机414使用的图形存储器的量与所估计的对于附连到虚拟桌面服务器400的每个图形处理单元可用的图形存储器的量进行比较。在此示例中,3D图形服务管理器404可先前已获得图形卡(该图形卡容纳图形处理单元)内集成的图形存储器的量,并将该信息存储在表中。另外,每次虚拟机被绑定到图形处理单元,3D图形服务管理器404就可被配置成从总数量减去所估计虚拟机将使用的图形存储器顶点的量,并将此值存储在表中。在此,3D图形服务管理器404可将虚拟机414所需的图形存储器的量与所估计的3D GPU 504、3D GPU 504B和3D GPU 504C上的可用图形存储器的量进行比较。
继续图12的描述,操作1206示出了根据比较从多个3D图形处理单元选择3D图形处理单元来为虚拟机渲染3D图形。例如,3D图形服务管理器404可至少基于比较的结果来选择要绑定到虚拟机的GPU(例如,3D GPU 506)。例如,并继续先前示例,3D图形服务管理器404可至少部分地基于3D GPU 504被估计为具有足够的图形存储器这个事实来确定3D GPU 504可主存虚拟机414。
现在转到操作1208,其示出了指派所选3D图形处理单元来为虚拟机渲染3D图形。例如,并再次参看图6,在示例性实施方式中,3D图形服务管理器404可被配置成初始化图形渲染模块506并将向其发送绑定到3D图形处理单元504的命令。图形渲染模块506可接收该命令并绑定到3D图形处理单元504。
参照图13,其描绘了图13的操作流程,包括附加操作1310-1322。操作1310示出了响应于至少基于由虚拟机发起的直接存储器存取图形事务的平均等待时间确定3D图形处理单元被过度使用来将虚拟机移至第二图形处理单元。例如,并回顾图6,在示例性实施方式中,3D图形服务管理器404可在处理器上执行,并确定3D图形处理单元504被过度使用,例如,3D图形处理单元504不具有用于服务所有其请求的足够的资源,并且可被重置,由此导致图形渲染模块(506、612和614)终止。在此特定示例中,确定可基于由虚拟机414发起的DMA图形事务的平均等待时间。在此示例中,可将虚拟机的平均等待时间与阈值作比较,并且3D图形服务管理器404可被配置成至少基于此信息确定3D GPU 504的资源被过度使用。响应于确定,3D图形服务管理器404可被配置成将图形渲染模块506移至另一GPU,诸如3D GPU 504B或504C。
继续图13的描述,操作1312示出响应于至少基于由图形内核向3D图形处理单元发出的图形命令的平均等待时间确定3D图形处理单元被过度使用,来将虚拟机移至第二图形处理单元。例如,在示例性实施方式中,描述在接收到ACK之前由图形内核508发出命令所花的平均时间长度的信息可被用来确定3D GPU是否被过度使用。在此示例中,可用关于图形内核命令的等待时间来更新由3D图形服务管理器404所控制的表,并且可为3D GPU 504计算平均值。可将平均值与阈值等待时间值作比较,并且如果平均值大于阈值,则3D图形服务管理器404可被配置成确定3D GPU 504被过度使用。响应于确定,3D图形服务管理器404可被配置成将图形渲染模块506移至另一GPU,诸如3D GPU 504B或504C。
转到操作1314,其示出了确定当前指派给所选3D图形处理单元的虚拟机的数量小于阈值。3D图形服务管理器404可被配置成响应于确定绑定到3DGPU 504B的虚拟机的数量小于阈值来将虚拟机414移至3D GPU 504B。在此示例中,3D图形服务管理器404可配置成从其表中读取指示当前被绑定到3DGPU 504B的虚拟机的数量(其在所示示例中为1)的值并确定当前所绑定的虚拟机的数量小于阈值数量(即基于性能和/或管理偏好的数量)。在此情形中,3D图形服务管理器404可被配置成至少基于此确定移动图形渲染模块506。
转到操作1316,其示出了确定多个3D图形处理单元中的每个3D图形处理单元的硬件特征。例如,在一实施方式中,3D图形服务管理器404可被配置成确定计算机系统中的每个3D图形处理单元的特征。例如,并继续先前的示例,3D图形服务管理器404可被配置成确定3D图形处理单元504和3D图形处理单元B616的特征。在此示例中,这些特征可被用于确定图形处理单元是否能够为虚拟机处理3D图形。例如,3D图形服务管理器404可被确定成进行检查以查看图形卡是否支持共享表面和纹理,其是否至少支持例如的特定版本,与图形处理单元相关联的图形存储器的量等等。在此示例中,该信息可被用于填充由3D图形服务管理器404控制的、可被用来平衡虚拟机之间的图形处理单元使用的表。
参考操作1318,其示出了至少根据标识虚拟机的像素尺寸的信息估计用于为虚拟机渲染3D图形的图形存储器的量。例如,在一实施方式中,用于为每个虚拟机渲染3D图形的图形存储器的量可基于与虚拟机相关联的像素尺寸。例如,当虚拟机被初始化时,可接收配置文件,该配置文件包括诸如虚拟机的所需显示分辨率之类的信息。3D图形服务管理器404可接收此信息并使用其来估计用于为此虚拟机渲染3D图形的图形存储器的量。
转到操作1320,其示出了至少根据标识由所选3D图形处理单元使用的压缩比的信息估计用于为虚拟机渲染3D图形的图形存储器的量。例如,在实施方式中,压缩比(即,经压缩的图像与未经压缩的图像的大小之间的比率)可被用于估计虚拟机将使用多少图形存储器来充分地渲染第一虚拟机的图像。例如,第一3D图形处理单元可被配置成使用经压缩的纹理来减小其大小。当3D图形服务管理器404询问硬件时,其可确定纹理压缩是否可被启用且将达成什么样的压缩比。3D图形服务管理器404可使用此信息来估计虚拟机将使用的图形存储器的量。
操作1322示出了至少根据标识所估计的、将为第一虚拟机渲染的表面的数量的信息来估计用于为虚拟机渲染3D图形的图形存储器的量。例如,在一实施方式中,所估计的虚拟机将尝试渲染的表面的数量可被用来估计该虚拟机将使用来足够为虚拟机渲染3D图形的图形存储器的量。例如,表面是表示3D图形中的对象的方式,并且被存储在缓冲器中。
前述的详细描述通过示例和/或操作图阐述了系统和/或进程的各实施方式。在这样的框图和/或示例包含一个或多个功能和/或操作的范围内,本领域技术人员将理解,这样的框图,或示例内的每一功能和/或操作可以分别地和/或共同地通过范围广泛的硬件、软件、固件或几乎其任何组合来实现。
尽管示出和描述了此处所描述的本主题的特定方面,但是,对于本领域的技术人员显而易见的是,基于此处的原理,在不偏离此处所描述的主题以及其广泛的方面的情况下,可以作出更改和修改,因此,所附权利要求书将包含在它们的范围内,所有这样的更改和修改都将在此处所描述的主题的真正的精神和范围内。

Claims (22)

1.一种被配置成对虚拟机之间的图形处理器使用进行平衡的方法,包括:
指派一组虚拟机在第一3D图形处理单元上渲染3D图形;
至少基于所述第一3D图形处理单元用来对命令进行响应所花的时间量来确定所述第一3D图形处理单元被过度使用;以及
至少响应于对所述第一3D图形处理单元被过度使用的判定,将第一虚拟机从该组虚拟机移至同一计算机系统内的第二3D图形处理单元。
2.如权利要求1所述的方法,其特征在于,将第一虚拟机移至第二3D图形处理单元还包括:
响应于确定所估计的由所述第二3D图形处理单元控制的可用图形存储器的量大于阈值,将所述第一虚拟机移至所述第二3D图形处理单元。
3.如权利要求1所述的方法,其特征在于,确定所述第一3D图形处理单元被过度使用还包括:
基于由所述第一虚拟机发起的直接存储器存取事务的平均等待时间来确定所述第一3D图形处理单元被过度使用。
4.如权利要求1所述的方法,其特征在于,将第一虚拟机移至第二3D图形处理单元还包括:
响应于确定指派给所述第二3D图形处理单元的第二虚拟机的直接存储器存取事务的平均等待时间小于阈值来移动所述第一虚拟机。
5.如权利要求1所述的方法,其特征在于,将第一虚拟机移至第二3D图形处理单元还包括:
响应于确定指派给所述第二3D图形处理单元的虚拟机的数量小于阈值来移动所述第一虚拟机。
6.如权利要求1所述的方法,其特征在于,还包括:
确定所述第一3D图形处理单元和所述第二3D图形处理单元的特征。
7.一种被配置成对虚拟机之间的图形处理器使用进行平衡的系统,包括:
用于指派一组虚拟机在第一3D图形处理单元上渲染3D图形的装置;
用于至少基于所述第一3D图形处理单元用来对命令进行响应所花的时间量来确定所述第一3D图形处理单元被过度使用的装置;以及
用于至少响应于对所述第一3D图形处理单元被过度使用的判定,将第一虚拟机从该组虚拟机移至同一计算机系统内的第二3D图形处理单元的装置。
8.如权利要求7所述的系统,其特征在于,用于将第一虚拟机移至第二3D图形处理单元的装置还包括:
用于响应于确定所估计的由所述第二3D图形处理单元控制的可用图形存储器的量大于阈值,将所述第一虚拟机移至所述第二3D图形处理单元的装置。
9.如权利要求7所述的系统,其特征在于,用于确定所述第一3D图形处理单元被过度使用的装置还包括:
用于基于由所述第一虚拟机发起的直接存储器存取事务的平均等待时间来确定所述第一3D图形处理单元被过度使用的装置。
10.如权利要求7所述的系统,其特征在于,用于将第一虚拟机移至第二3D图形处理单元的装置还包括:
用于响应于确定指派给所述第二3D图形处理单元的第二虚拟机的直接存储器存取事务的平均等待时间小于阈值来移动所述第一虚拟机的装置。
11.如权利要求7所述的系统,其特征在于,用于将第一虚拟机移至第二3D图形处理单元的装置还包括:
用于响应于确定指派给所述第二3D图形处理单元的虚拟机的数量小于阈值来移动所述第一虚拟机的装置。
12.如权利要求7所述的系统,其特征在于,还包括:
用于确定所述第一3D图形处理单元和所述第二3D图形处理单元的特征的装置。
13.一种用于对虚拟机之间的图形处理单元使用进行平衡的设备,所述设备包括:
用于接收将第一虚拟机指派给第一3D图形处理单元的请求的装置;
用于估计用于为所述第一虚拟机渲染3D图形的图形存储器的量的装置;
用于响应于确定与由被指派在所述第一3D图形处理单元上渲染图形的一组虚拟机发出的直接存储器存取事务相关联的等待时间值小于第一阈值以及所估计的用于渲染3D图形的图形存储器的量小于第二阈值,从同一计算机系统内的多个3D图形处理单元选择所述第一3D图形处理单元的装置;
用于指派所述第一虚拟机在所述第一3D图形处理单元上渲染3D图形的装置。
14.如权利要求13所述的设备,其特征在于,还包括:
用于至少根据标识所述组中的每一个虚拟机的像素尺寸的信息估计用于为所述第一虚拟机渲染3D图形的图形存储器的量的装置。
15.如权利要求13所述的设备,其特征在于,还包括:
用于至少根据标识由所述第一3D图形处理单元使用的压缩比的信息估计用于为所述第一虚拟机渲染3D图形的图形存储器的量的装置。
16.如权利要求13所述的设备,其特征在于,还包括:
用于至少根据标识所估计的、将为所述第一虚拟机渲染的表面的数量的信息来估计用于为所述第一虚拟机渲染3D图形的图形存储器的量的装置。
17.如权利要求13所述的设备,其特征在于,还包括:
用于响应于确定由图形内核发出的至少一个命令的等待时间小于第三阈值,从所述多个3D图形处理单元选择所述第一3D图形处理单元的装置。
18.如权利要求13所述的设备,其特征在于,还包括:
用于响应于确定当前指派给所述第一3D图形处理单元的虚拟机的数量小于第四阈值,从所述多个3D图形处理单元选择所述第一3D图形处理单元的装置。
19.如权利要求13所述的设备,其特征在于,还包括:
用于响应于至少基于由所述第一虚拟机发起的直接存储器存取图形事务的平均等待时间确定所述第一3D图形处理单元被过度使用,将所述第一虚拟机移至第二3D图形处理单元的装置。
20.如权利要求13所述的设备,其特征在于,还包括:
用于响应于至少基于由图形内核向所述第一3D图形处理单元发出的图形命令的平均等待时间确定所述第一3D图形处理单元被过度使用,将所述第一虚拟机移至第二3D图形处理单元的装置。
21.如权利要求13所述的设备,其特征在于,还包括:
用于确定多个3D图形处理单元中的每个3D图形处理单元的硬件特征的装置。
22.一种用于对图形处理单元上的负载进行平衡的方法,包括:
估计用于为虚拟机渲染图形的至少的图形存储器的量;
将所估计的图形存储器的量与所估计的由同一计算机系统内的多个3D图形处理单元控制的可用图形存储器的量进行比较;
根据比较从同一计算机系统内的多个3D图形处理单元选择为虚拟机渲染3D图形的3D图形处理单元;以及
指派所选3D图形处理单元来为虚拟机渲染3D图形。
CN201110308337.5A 2010-09-30 2011-09-29 用于对启用gpu的虚拟机进行负载平衡的技术 Active CN102402462B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/895,605 US9069622B2 (en) 2010-09-30 2010-09-30 Techniques for load balancing GPU enabled virtual machines
US12/895,605 2010-09-30

Publications (2)

Publication Number Publication Date
CN102402462A CN102402462A (zh) 2012-04-04
CN102402462B true CN102402462B (zh) 2015-02-25

Family

ID=45884692

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110308337.5A Active CN102402462B (zh) 2010-09-30 2011-09-29 用于对启用gpu的虚拟机进行负载平衡的技术

Country Status (5)

Country Link
US (1) US9069622B2 (zh)
EP (1) EP2622470B1 (zh)
JP (1) JP5902175B2 (zh)
CN (1) CN102402462B (zh)
WO (1) WO2012050718A2 (zh)

Families Citing this family (108)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9208029B2 (en) * 2010-11-12 2015-12-08 Hitachi, Ltd. Computer system to switch logical group of virtual computers
US8910154B2 (en) * 2010-12-23 2014-12-09 Mitel Networks Corporation Obtaining diagnostic information in a virtual environment
US9130899B1 (en) 2011-04-27 2015-09-08 Cisco Technology, Inc. Integrated user interface for unified communications applications
US9183030B2 (en) * 2011-04-27 2015-11-10 Microsoft Technology Licensing, Llc Virtual processor allocation techniques
US8990292B2 (en) * 2011-07-05 2015-03-24 Cisco Technology, Inc. In-network middlebox compositor for distributed virtualized applications
US8902248B1 (en) * 2011-07-14 2014-12-02 Vmware, Inc. Method and system for measuring display performance of a remote application
US20130104149A1 (en) * 2011-10-25 2013-04-25 Handong Lnc Co., Ltd. Selective data processing method between docked terminals and selective data processing system using the same
US20130210522A1 (en) * 2012-01-12 2013-08-15 Ciinow, Inc. Data center architecture for remote graphics rendering
US9055139B1 (en) 2012-03-12 2015-06-09 Cisco Technology, Inc. Display protocol interception in the network for services and network-based multimedia support for VDI
WO2013178244A1 (en) * 2012-05-29 2013-12-05 Qatar Foundation A graphics processing unit controller, host system, and methods
US8813240B1 (en) 2012-05-30 2014-08-19 Google Inc. Defensive techniques to increase computer security
US9015838B1 (en) * 2012-05-30 2015-04-21 Google Inc. Defensive techniques to increase computer security
CN102902576B (zh) * 2012-09-26 2014-12-24 北京奇虎科技有限公司 一种渲染网页的方法、服务器和系统
TWI482118B (zh) * 2012-10-18 2015-04-21 Wistron Corp 處理圖形運算負載平衡之方法及系統
US9135052B2 (en) 2012-11-06 2015-09-15 Red Hat Israel, Ltd. Distributed multiple monitor display split using multiple client devices in a virtualization system
US8959514B2 (en) * 2012-11-06 2015-02-17 Red Hat Israel, Ltd. Virtual machine monitor display split using multiple client devices in a virtualization system
EP2936426B1 (en) * 2012-12-21 2021-10-13 Jason Spencer System and method for graphical processing of medical data
CN103970555B (zh) * 2013-01-31 2017-09-12 中兴通讯股份有限公司 自适应的虚拟机启动控制方法及装置
CN103984669A (zh) 2013-02-07 2014-08-13 辉达公司 一种用于图像处理的系统和方法
CN104053019A (zh) * 2013-03-12 2014-09-17 中兴通讯股份有限公司 基于虚拟桌面的视频播放、处理方法及装置
US9525586B2 (en) 2013-03-15 2016-12-20 Intel Corporation QoS based binary translation and application streaming
US9430258B2 (en) * 2013-05-10 2016-08-30 Vmware, Inc. Efficient sharing of identical graphics resources by multiple virtual machines using separate host extension processes
TW201445500A (zh) * 2013-05-16 2014-12-01 Hon Hai Prec Ind Co Ltd 顯示適配器控制系統、控制方法及電腦裝置
US9600774B1 (en) * 2013-09-25 2017-03-21 Amazon Technologies, Inc. Predictive instance suspension and resumption
US9734546B2 (en) * 2013-10-03 2017-08-15 Nvidia Corporation Split driver to control multiple graphics processors in a computer system
US9332046B2 (en) 2013-10-17 2016-05-03 Cisco Technology, Inc. Rate-adapted delivery of virtual desktop image elements by an edge server in a computer network environment
CN104580124B (zh) * 2013-10-29 2019-04-05 华为技术有限公司 协议栈选择方法、装置及设备
US9674265B2 (en) 2013-11-04 2017-06-06 Vmware, Inc. Filtering unnecessary display updates for a networked client
US9604139B2 (en) 2013-11-11 2017-03-28 Amazon Technologies, Inc. Service for generating graphics object data
US9596280B2 (en) 2013-11-11 2017-03-14 Amazon Technologies, Inc. Multiple stream content presentation
US9641592B2 (en) 2013-11-11 2017-05-02 Amazon Technologies, Inc. Location of actor resources
US20150130815A1 (en) * 2013-11-11 2015-05-14 Amazon Technologies, Inc. Multiple parallel graphics processing units
US9578074B2 (en) 2013-11-11 2017-02-21 Amazon Technologies, Inc. Adaptive content transmission
US9805479B2 (en) 2013-11-11 2017-10-31 Amazon Technologies, Inc. Session idle optimization for streaming server
US9582904B2 (en) 2013-11-11 2017-02-28 Amazon Technologies, Inc. Image composition based on remote object data
US9634942B2 (en) 2013-11-11 2017-04-25 Amazon Technologies, Inc. Adaptive scene complexity based on service quality
US10191759B2 (en) * 2013-11-27 2019-01-29 Intel Corporation Apparatus and method for scheduling graphics processing unit workloads from virtual machines
US9674518B2 (en) 2013-12-20 2017-06-06 Vmware, Inc. Measuring remote video display with embedded pixels
CN104754464A (zh) * 2013-12-31 2015-07-01 华为技术有限公司 一种音频播放方法、终端及系统
GB201406392D0 (en) 2014-04-09 2014-05-21 Advanced Risc Mach Ltd Data processing systems
GB2525002B (en) 2014-04-09 2021-06-09 Advanced Risc Mach Ltd Data processing systems
GB2525003B (en) 2014-04-09 2021-06-09 Advanced Risc Mach Ltd Data Processing Systems
US9898794B2 (en) * 2014-06-19 2018-02-20 Vmware, Inc. Host-based GPU resource scheduling
US9898795B2 (en) * 2014-06-19 2018-02-20 Vmware, Inc. Host-based heterogeneous multi-GPU assignment
CN104123452B (zh) * 2014-07-18 2017-10-10 西北工业大学 基于模糊决策的gpu负载综合评判方法
CN104102546B (zh) * 2014-07-23 2018-02-02 浪潮(北京)电子信息产业有限公司 一种实现cpu和gpu负载均衡的方法及系统
DE102014221247A1 (de) * 2014-10-20 2016-04-21 Continental Automotive Gmbh Computersystem für ein Kraftfahrzeug
JP6472881B2 (ja) 2014-11-12 2019-02-20 インテル コーポレイション グラフィックス仮想化を用いたホストコンピュータからの/ホストコンピュータへの仮想マシンのライブマイグレーション
US9928094B2 (en) * 2014-11-25 2018-03-27 Microsoft Technology Licensing, Llc Hardware accelerated virtual context switching
CN104333607B (zh) * 2014-11-25 2019-12-13 武汉理工数字传播工程有限公司 一种实现虚拟云端图形工作站海量传输装置及传输方法
KR101647099B1 (ko) * 2014-12-18 2016-08-09 권영민 가상화 멀티 세션 지원을 위한 서버 구조
WO2016145632A1 (en) * 2015-03-18 2016-09-22 Intel Corporation Apparatus and method for software-agnostic multi-gpu processing
CN106296564B (zh) * 2015-05-29 2019-12-20 展讯通信(上海)有限公司 嵌入式soc片上系统
US11145271B2 (en) * 2015-08-10 2021-10-12 Amazon Technologies, Inc. Virtualizing graphics processing in a provider network
WO2017049538A1 (en) * 2015-09-24 2017-03-30 Intel Corporation Apparatus and method for pattern driven self-adaptive virtual graphics processor units
EP3366011B1 (en) 2015-10-21 2022-04-06 Intel Corporation Mobile edge compute dynamic acceleration assignment
US9904973B2 (en) 2015-11-11 2018-02-27 Amazon Technologies, Inc. Application-specific virtualized graphics processing
US9886737B2 (en) 2015-11-11 2018-02-06 Amazon Technologies, Inc. Local-to-remote migration for virtualized graphics processing
US9904975B2 (en) 2015-11-11 2018-02-27 Amazon Technologies, Inc. Scaling for virtualized graphics processing
US9904974B2 (en) 2015-11-11 2018-02-27 Amazon Technologies, Inc. Placement optimization for virtualized graphics processing
US10565009B2 (en) * 2015-12-08 2020-02-18 Nec Corporation Planning system for planning disposition of virtual machine, planning method, and recording medium for storing planning program
JP6398963B2 (ja) * 2015-12-14 2018-10-03 コニカミノルタ株式会社 画像形成装置および画像形成装置で実行されるプログラム
CN107102957A (zh) * 2016-02-22 2017-08-29 深圳市知穹科技有限公司 一种基于gpu与nic之间的内存高速直接交换的方法及系统
US10181172B1 (en) 2016-06-08 2019-01-15 Amazon Technologies, Inc. Disaggregated graphics asset delivery for virtualized graphics
CN107483390B (zh) * 2016-06-08 2020-10-16 成都云创互联信息技术有限公司 一种云渲染网络部署子系统、系统及云渲染平台
US10181173B1 (en) 2016-06-08 2019-01-15 Amazon Technologies, Inc. Disaggregated graphics asset management for virtualized graphics
US10423463B1 (en) 2016-06-09 2019-09-24 Amazon Technologies, Inc. Computational task offloading for virtualized graphics
US9990211B2 (en) 2016-06-15 2018-06-05 Vmware, Inc. Tracking window position in a VDI environment
US10592279B2 (en) * 2016-06-23 2020-03-17 Advanced Micro Devices, Inc. Multi-processor apparatus and method of detection and acceleration of lagging tasks
US10102605B1 (en) 2016-08-26 2018-10-16 Amazon Technologies, Inc. Graphics library virtualization for virtualized graphics processing
KR102202258B1 (ko) * 2016-09-05 2021-01-13 후아웨이 테크놀러지 컴퍼니 리미티드 가상 머신을 위한 그래픽처리장치의 할당
US10200249B1 (en) 2016-12-09 2019-02-05 Amazon Technologies, Inc. Network traffic management for virtualized graphics devices
US10373284B2 (en) 2016-12-12 2019-08-06 Amazon Technologies, Inc. Capacity reservation for virtualized graphics processing
US10430911B1 (en) 2016-12-16 2019-10-01 Amazon Technologies, Inc. Graphics overlays with virtualized graphics processing
US10482561B1 (en) 2017-01-11 2019-11-19 Amazon Technologies, Inc. Interaction monitoring for virtualized graphics processing
US10255652B2 (en) 2017-01-18 2019-04-09 Amazon Technologies, Inc. Dynamic and application-specific virtualized graphics processing
US10692168B1 (en) 2017-01-26 2020-06-23 Amazon Technologies, Inc. Availability modes for virtualized graphics processing
US10204392B2 (en) * 2017-02-02 2019-02-12 Microsoft Technology Licensing, Llc Graphics processing unit partitioning for virtualization
US10593009B1 (en) 2017-02-22 2020-03-17 Amazon Technologies, Inc. Session coordination for auto-scaled virtualized graphics processing
TWM545940U (zh) * 2017-03-10 2017-07-21 Evga Corp 顯示卡無線監控裝置
US10169841B1 (en) 2017-03-27 2019-01-01 Amazon Technologies, Inc. Dynamic interface synchronization for virtualized graphics processing
US10043232B1 (en) * 2017-04-09 2018-08-07 Intel Corporation Compute cluster preemption within a general-purpose graphics processing unit
US10074206B1 (en) 2017-05-23 2018-09-11 Amazon Technologies, Inc. Network-optimized graphics library for virtualized graphics processing
US10459751B2 (en) * 2017-06-30 2019-10-29 ATI Technologies ULC. Varying firmware for virtualized device
US10699364B2 (en) * 2017-07-12 2020-06-30 Citrix Systems, Inc. Graphical rendering using multiple graphics processors
CN107423019B (zh) * 2017-07-31 2020-11-10 山东超越数控电子股份有限公司 一种基于飞腾平台控制3d图形加速的实现方法
GB2565770B (en) * 2017-08-15 2019-09-18 Advanced Risc Mach Ltd Data processing systems
US10649790B1 (en) 2017-08-24 2020-05-12 Amazon Technologies, Inc. Multithreaded rendering for virtualized graphics processing
US10338847B1 (en) 2017-08-28 2019-07-02 Amazon Technologies, Inc. Coherent buffer mapping for virtualized graphics processing
US10908940B1 (en) 2018-02-26 2021-02-02 Amazon Technologies, Inc. Dynamically managed virtual server system
CN110278235A (zh) * 2018-03-16 2019-09-24 上海远动科技有限公司 基于云技术的scada移动监控桌面系统
US11182189B2 (en) * 2018-08-24 2021-11-23 Vmware, Inc. Resource optimization for virtualization environments
US11126452B2 (en) * 2018-08-24 2021-09-21 Vmware, Inc. Performance modeling for virtualization environments
CN109656714B (zh) * 2018-12-04 2022-10-28 成都雨云科技有限公司 一种虚拟化显卡的gpu资源调度方法
CN111381914B (zh) * 2018-12-29 2021-07-30 中兴通讯股份有限公司 一种云桌面虚机实现3d能力的方法和系统
CN109840135B (zh) * 2019-01-30 2022-02-18 郑州云海信息技术有限公司 一种负载均衡方法、装置及电子设备
CN110545415A (zh) * 2019-07-16 2019-12-06 西安万像电子科技有限公司 数据传输方法、装置及服务器
CN110557624A (zh) * 2019-07-16 2019-12-10 西安万像电子科技有限公司 数据传输方法、装置及服务器
CN111475256A (zh) * 2020-03-18 2020-07-31 西安万像电子科技有限公司 资源分配方法、装置及系统
US11886898B2 (en) * 2020-03-30 2024-01-30 Vmware, Inc. GPU-remoting latency aware virtual machine migration
CN111935471B (zh) * 2020-08-14 2021-04-06 北京泽塔云科技股份有限公司 基于云服务的远程立体图形生成系统及方法
US11915060B2 (en) * 2021-03-25 2024-02-27 Dell Products L.P. Graphics processing management system
CN113094015A (zh) * 2021-04-19 2021-07-09 上海跃影科技有限公司 全息多屏显示实现方法、系统、计算机设备和存储介质
CN113342534B (zh) * 2021-06-29 2024-01-02 天翼云科技有限公司 图形处理资源调配方法、装置、设备及存储介质
CN113590263B (zh) * 2021-07-01 2022-07-05 深圳大学 虚拟机调度方案获得方法、装置、终端设备以及存储介质
US11595321B2 (en) 2021-07-06 2023-02-28 Vmware, Inc. Cluster capacity management for hyper converged infrastructure updates
CN116954929B (zh) * 2023-09-20 2023-12-01 四川并济科技有限公司 一种实时迁移的动态gpu调度方法及系统
CN117331704B (zh) * 2023-11-30 2024-03-15 摩尔线程智能科技(北京)有限责任公司 图形处理器gpu调度方法、装置和存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101601014A (zh) * 2006-12-12 2009-12-09 Lsi公司 利用存储负载信息来平衡集群虚拟机
CN101739285A (zh) * 2008-11-21 2010-06-16 国际商业机器公司 用于全虚拟化计算环境中图形硬件资源使用的系统和方法

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5675762A (en) 1992-04-03 1997-10-07 International Business Machines Corporation System for locking down part of portion of memory and updating page directory with entry corresponding to part of portion of the memory locked down
US5991856A (en) 1997-09-30 1999-11-23 Network Associates, Inc. System and method for computer operating system protection
JP2005062927A (ja) * 2003-08-11 2005-03-10 Hitachi Ltd 負荷制御方法および装置並びにその処理プログラム
US7075541B2 (en) 2003-08-18 2006-07-11 Nvidia Corporation Adaptive load balancing in a multi-processor graphics processing system
WO2005036806A2 (en) 2003-10-08 2005-04-21 Unisys Corporation Scalable partition memory mapping system
US7263690B1 (en) 2003-11-14 2007-08-28 Sun Microsystems, Inc. Mechanism for safe byte code in a tracing framework
US7446773B1 (en) * 2004-12-14 2008-11-04 Nvidia Corporation Apparatus, system, and method for integrated heterogeneous processors with integrated scheduler
US8060683B2 (en) 2004-12-17 2011-11-15 International Business Machines Corporation System, method and program to preserve a cache of a virtual machine
US8341624B1 (en) * 2006-09-28 2012-12-25 Teradici Corporation Scheduling a virtual machine resource based on quality prediction of encoded transmission of images generated by the virtual machine
US8365021B2 (en) 2005-06-17 2013-01-29 Nec Corporation Information processing device comprising a plurality of domains having a plurality of processors, recovery device, program and recovery method
US20070143762A1 (en) 2005-12-16 2007-06-21 Arnold Kevin M Assigning tasks in a distributed system based on ranking
US7360022B2 (en) 2005-12-29 2008-04-15 Intel Corporation Synchronizing an instruction cache and a data cache on demand
US7594042B2 (en) 2006-06-30 2009-09-22 Intel Corporation Effective caching mechanism with comparator coupled to programmable registers to store plurality of thresholds in order to determine when to throttle memory requests
US7673113B2 (en) 2006-12-29 2010-03-02 Intel Corporation Method for dynamic load balancing on partitioned systems
JP4882845B2 (ja) 2007-04-19 2012-02-22 株式会社日立製作所 仮想計算機システム
US7797587B2 (en) 2007-06-06 2010-09-14 Dell Products L.P. System and method of recovering from failures in a virtual machine
EP2006770B1 (en) 2007-06-19 2014-01-01 VirtualLogix SA Load balancing
US8330762B2 (en) 2007-12-19 2012-12-11 Advanced Micro Devices, Inc. Efficient video decoding migration for multiple graphics processor systems
CN101918921B (zh) 2008-01-27 2013-12-04 思杰系统有限公司 用于远程提供三维图形的方法和系统
US20090322784A1 (en) 2008-02-27 2009-12-31 Gabriele Sartori System and method for virtual 3d graphics acceleration and streaming multiple different video streams
US8230069B2 (en) * 2008-03-04 2012-07-24 International Business Machines Corporation Server and storage-aware method for selecting virtual machine migration targets
JP5251188B2 (ja) * 2008-03-18 2013-07-31 富士通株式会社 情報処理装置、情報処理装置の制御方法及びコンピュータプログラム
US10127059B2 (en) 2008-05-02 2018-11-13 Skytap Multitenant hosted virtual machine infrastructure
US20100115510A1 (en) * 2008-11-03 2010-05-06 Dell Products, Lp Virtual graphics device and methods thereof
US8751654B2 (en) * 2008-11-30 2014-06-10 Red Hat Israel, Ltd. Determining the graphic load of a virtual desktop
CN101452406B (zh) 2008-12-23 2011-05-18 北京航空航天大学 一种对操作系统透明的机群负载平衡方法
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
US8589921B2 (en) * 2009-11-30 2013-11-19 Red Hat Israel, Ltd. Method and system for target host optimization based on resource sharing in a load balancing host and virtual machine adjustable selection algorithm
US8413144B1 (en) 2010-07-30 2013-04-02 Symantec Corporation Providing application-aware high availability of virtual machines
US8970603B2 (en) 2010-09-30 2015-03-03 Microsoft Technology Licensing, Llc Dynamic virtual device failure recovery
US8830245B2 (en) * 2010-12-14 2014-09-09 Amazon Technologies, Inc. Load balancing between general purpose processors and graphics processors

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101601014A (zh) * 2006-12-12 2009-12-09 Lsi公司 利用存储负载信息来平衡集群虚拟机
CN101739285A (zh) * 2008-11-21 2010-06-16 国际商业机器公司 用于全虚拟化计算环境中图形硬件资源使用的系统和方法

Also Published As

Publication number Publication date
WO2012050718A3 (en) 2012-05-31
CN102402462A (zh) 2012-04-04
US9069622B2 (en) 2015-06-30
EP2622470B1 (en) 2022-06-08
JP2014500535A (ja) 2014-01-09
US20120084774A1 (en) 2012-04-05
WO2012050718A2 (en) 2012-04-19
JP5902175B2 (ja) 2016-04-13
EP2622470A4 (en) 2015-01-07
EP2622470A2 (en) 2013-08-07

Similar Documents

Publication Publication Date Title
CN102402462B (zh) 用于对启用gpu的虚拟机进行负载平衡的技术
CN102495769B (zh) 动态虚拟设备故障恢复
US11094031B2 (en) GPU resource usage display and dynamic GPU resource allocation in a networked virtualization system
CN102207886B (zh) 虚拟机快速仿真辅助
US9141417B2 (en) Methods and systems for integrated storage and data management using a hypervisor
US7797699B2 (en) Method and apparatus for scheduling virtual machine access to shared resources
CN102567052B (zh) 启用配置有图形处理器的服务器的远程管理的技术
CN102906691B (zh) 虚拟机迁移技术
Lagar-Cavilla et al. VMM-independent graphics acceleration
US20120054740A1 (en) Techniques For Selectively Enabling Or Disabling Virtual Devices In Virtual Environments
US20100115510A1 (en) Virtual graphics device and methods thereof
CN110832457B (zh) 用于虚拟化加速处理装置的提前虚拟化上下文切换
JP2008530706A (ja) メモリを1台のバーチャル・マシンからもう一方へダイナミックに再割り当てする方法、装置及びシステム
JP2009110518A (ja) 仮想マシンデバイスの動的割り当て
CN101819538A (zh) 管理执行在虚拟机中的操作系统的请求
WO2022041507A1 (zh) 3d渲染方法及系统
US20170131928A1 (en) Method for performing hot-swap of a storage device in a virtualization environment
US20050108440A1 (en) Method and system for coalescing input output accesses to a virtual device
Chang et al. On construction and performance evaluation of a virtual desktop infrastructure with GPU accelerated
KR20190074165A (ko) 가상화 환경에서의 gpu 자원 관리 방법 및 장치
Manfroi et al. A walking dwarf on the clouds
CN110383255A (zh) 管理对物理设备的客户分区访问
JP2022548563A (ja) フレキシブルマルチユーザグラフィックアーキテクチャ
US8402191B2 (en) Computing element virtualization
Nguyen et al. YOLO: Speeding up VM Boot Time by reducing I/O operations

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150727

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150727

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.