CN102495769A - 动态虚拟设备故障恢复 - Google Patents

动态虚拟设备故障恢复 Download PDF

Info

Publication number
CN102495769A
CN102495769A CN2011103083110A CN201110308311A CN102495769A CN 102495769 A CN102495769 A CN 102495769A CN 2011103083110 A CN2011103083110 A CN 2011103083110A CN 201110308311 A CN201110308311 A CN 201110308311A CN 102495769 A CN102495769 A CN 102495769A
Authority
CN
China
Prior art keywords
gpu
playing
virtual
virtual machine
restart
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
CN2011103083110A
Other languages
English (en)
Other versions
CN102495769B (zh
Inventor
B·S·波斯特
V·庞南潘
P·辛格
V·帕夫洛夫
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 CN102495769A publication Critical patent/CN102495769A/zh
Application granted granted Critical
Publication of CN102495769B publication Critical patent/CN102495769B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • 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
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage

Landscapes

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

Abstract

一种动态虚拟设备故障恢复的技术。在此揭示了用于从图形处理器重置中恢复的示范技术。在示范实施例中,3D图形服务管理器404可以检测图形处理单元的重置,并且可以重启配置用于为虚拟机渲染3D图形的渲染进程,并促使在渲染进程和虚拟机之间建立图形缓冲。除以上之外,在具体实施方式、权利要求书和附图中描述了其他方面。

Description

动态虚拟设备故障恢复
技术领域
本申请涉及虚拟设备故障恢复,特别是动态虚拟设备故障恢复的技术。
相关案件的交叉引用
本申请在主题上与题为“Techniques for Load Balancing GPU EnabledVirtual Machines(用于启用负载平衡GPU的虚拟机的技术)”的美国专利申请第xx/xxx,xxx号(代理人案号为MVIR-0669/330193.01)有关,该申请的内容通过引用整体结合于此。
背景技术
虚拟机平台通过在每个操作系统自己的虚拟机内运行该操作系统来允许多个客操作系统在物理机上的同时执行。可以在虚拟机中提供的一个示例性服务是虚拟桌面会话。虚拟桌面会话在本质上是在虚拟机内运行的将其用户界面发送到远程计算机的个人计算机环境。这一体系结构类似于远程桌面环境,但代之以将多个用户同时连接到服务器类操作系统,在虚拟桌面会话中,每一用户能够访问在虚拟机中执行的他们自己的商用操作系统。
现代操作系统实施了用于3D应用/视频游戏的三维(3D)图形用户界面及其操作系统用户界面。用户享受与3D环境交互的体验,并且期望能够在虚拟桌面会话中将3D图形流送给客户机;然而,由于多种原因而难以实现流送3D图形。例如,流送3D图形的动作需要带宽和/或压缩。此外,虚拟桌面服务器将需要包括3D图形处理单元(GPU),其能够执行3D功能。3D图形处理是资源密集的,并且GPU通常每次仅能渲染几个3D图形用户界面。如果这些GPU不得不渲染过多图形用户界面,则它们会快速地变得过载。遗憾的是,在虚拟桌面部署中,GPU可能不得不同时渲染大量3D图形用户界面。这会引起一个或多个操作超时,因而会引起图形驱动程序重置GPU,从而引起3D应用程序终止。因此,需要用于从重置恢复的技术。
发明内容
一示例性实施例包括一种系统。在该示例中,该系统包括但不限于处理器、以及在计算机系统可操作时与该处理器通信的存储器。在这个示例中,存储器可以包括计算机可读指令,当执行时,使得处理器建立虚拟化平台和虚拟机之间的通信信道;检测配置用于在3D图形处理单元上为虚拟机渲染图形的渲染进程的终止;重启所述渲染进程;通过通信信道向在虚拟机上执行的虚拟设备驱动程序发送指示渲染进程正在被重启的信号并在虚拟机上执行的虚拟设备驱动程序和重启的渲染进程之间建立图形缓冲。除以上之外,权利要求书、具体实施方式和附图中描述了其他技术。
另一示例性实施例包括计算机可读存储介质。在该示例中,计算机可读存储介质包括计算机指令,当执行时,使得处理器在主操作系统和虚拟机之间建立通信信道;在主操作系统中运行渲染进程,其中,所述渲染进程被配置用于在3D图形处理单元上为虚拟机渲染图形;检测所述渲染进程终止;重启所述渲染进程;通过通信信道发送指示渲染进程被重启的消息;由虚拟机上执行的虚拟设备驱动程序在客存储器范围中建立图形缓冲;并通过通信信道将3D图形数据发送给重启的渲染进程。除以上之外,权利要求书、具体实施方式和附图中描述了其他技术。
另一示例性实施例包括一种方法。在该示例中,方法包括但不局限于:由虚拟化平台在虚拟化平台和虚拟机之间建立通信信道;由虚拟化平台运行渲染进程,所述渲染进程被配置用于在3D图形处理单元上为虚拟机渲染图形;由虚拟化平台检测所述渲染进程终止;由虚拟化平台重启所述渲染进程;通过通信信道发送指示渲染进程被重启的消息;由虚拟机内执行的虚拟设备驱动程序在客存储器范围中建立图形缓冲;通过图形缓冲将3D图形数据发送给重启的渲染进程。除以上之外,权利要求书、具体实施方式和附图中描述了其他技术。
本领域技术人员将理解,本公开的一个或多个各种方面可包括但不限于用于实现此处所引用的方面的电路和/或编程;该电路和/或编程实质上可以是配置成实现本文所引用的方面的硬件、软件和/或固件的任何组合,这取决于系统设计者的设计选择。
以上是概述,并且因此必然包含细节的简化、一般化及省略。本领域技术人员将明白,本概述只是说明性的并且决不旨在是限制性的。
附图说明
图1描绘了计算机系统的高级框图。
图2描绘了虚拟机服务器的高级框图。
图3描绘了虚拟机服务器的高级框图。
图4描绘了虚拟桌面服务器的高级框图。
图5描绘了虚拟桌面服务器的高级框图。
图6描绘了操作流程。
图7示出了包括附加操作的图6的操作流程。
图8描绘了操作流程。
图9示出了包括附加操作的图8的操作流程。
图10描绘了操作流程。
图11示出了包括附加操作的图10的操作流程。
具体实施方式
在此公开的主题可以使用一个或多个计算机系统。图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)可以是任何操作系统,如来自
Figure BSA00000590593100071
开源社区等的操作系统。客操作系统可包括用户/内核运行模式,并且可具有能包括调度器、存储器管理器等的内核。一般而言,内核模式可包括处理器中的执行模式,该执行模式授予至少对特权处理器指令的访问。每一客操作系统可具有相关联的文件系统,该文件系统上存储有诸如终端服务器、电子商务服务器、电子邮件服务器等应用以及客操作系统本身。客操作系统可调度线程来在虚拟处理器上执行,并且可实现此类应用程序的实例。
现在参考图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发送通知。
二维绘制命令可从应用程序和/或桌面被接收,并由GDI 416处理。GDI 416一般可包括能生成图形对象绘制命令的进程。在本示例实施例中的GDI 416可以被配置为将命令传送到远程显示子系统418,所述远程显示子系统418接收2D绘制命令并将它们发送给客户机。
转向图5,它说明了从图形处理器重置恢复的操作环境。在此例示的实施例中,虚拟桌面服务器400可以包括图4所说明的元素,并且被配置为将指示三维图形用户界面的图象流传送给客户机,例如客户机520、520B、和/或520C。简言之,每个客户机可与运行配置成进行虚拟桌面会话的客操作系统的虚拟机(414、414B、和414C)相关联。客户机520、520B和/或520C可包括具有类似于图1中所示的那些组件的组件的计算机系统、运动设备、和/或瘦客户机。例如,瘦客户机可以具有商业硬件和单片式web浏览器,该web浏览器被配置为管理该硬件、用户输入和输出并且连接到因特网。在此示例中,瘦客户机还可包括例如显示之类的用户界面222以及诸如鼠标之类的用户输入设备。
虚拟桌面服务器400还可被配置成在其被启动时渲染3D图形。例如,当虚拟桌面服务器400运行时,诸如3D图形服务管理器404之类的3D图形服务管理器的实例可被启动。3D图形服务管理器404(其在以下段落中进行更详细的描述)可在处理器上执行,并且等待传入虚拟桌面会话连接。
当接收到虚拟桌面会话连接,可通知3D图形服务管理器404,并启动图形渲染模块(在以下段落中进行更详细的描述)的实例以及向3D-GPU服务提供者512发送将3D组件加载到客操作系统428中的信号。简而言之,3D图形服务管理器404可以为每个虚拟机加载图形渲染模块的实例并可以将它将使用的3D图形处理单元的设备标识符发送给图形渲染模块。图形渲染模块可在随后绑定到3D GPU,并代表其相关联的虚拟机向它进行渲染。在所例示的示例中,图形渲染模块506对应于虚拟机414。
可以从虚拟机向渲染模块反馈用于虚拟机的图形用户界面,这被虚拟化平台402作为生成图形用户界面的3D处理。由于大多数3D图像处理单元被设计成每次对几个进程生成几个图形用户界面,因此本领域技术人员可理解,在其中大量图形渲染模块正运行的情形中,GPU可变得更容易过载并重置。
继续初始化过程,3D-GPU服务提供者512可导致3D图形服务客户机514在客操作系统428中分散。例如,在虚拟机414中的虚拟主板的存储器地址可以对映射到IO设备的某些地址设置的截取当客操作系统428启动时,即插即用模块可执行并且可查询映射至IO的存储器地址。例如图2的管理程序202之类的管理程序可截取读取并用导致即插即用模块加载3D图形服务客户机514的设备标识符进行响应。3D图形服务客户机514可通过将存储器的一个或多个页映射为共享的并将映射传递给3D-GPU服务提供者512来建立至3D-GPU服务提供者512的通信信道。在存储器的页内,可建立通信信道516。实质上,通信信道516可以包括可以被映射到虚拟机414和虚拟化平台402的环形缓冲区等。在这个示例中,消息可以被写入环形缓冲区并且由3D GPU服务提供者/客户机从环形缓冲区中读出。在一示例性实施例中,通信信道可以使用在共同转让的题为“Partition Bus(分区总线)”的第7,689,800号美国专利中描述的技术来实现,该专利的内容通过引用被完全结合于此。
3D图形服务客户机514还可导致虚拟设备驱动程序518分散。虚拟设备驱动程序518可以在虚拟机414和虚拟化平台402之间建立图形缓冲,例如共享库、管道或图形孔径(graphics aperture)526。在示例性实施例中,虚拟机驱动程序518可分配一组客存储器页,并向3D图形服务客户机514发送包括连接请求和存储器页的地址的信号。图形渲染模块506可接收连接请求和存储器页的地址。图形渲染模块506可向管理程序发送指令该管理程序在该组存储器页中创建图形孔径526的信号。管理程序可将这些页映射至系统物理地址,并执行存储器的范围内的图形孔径526。在此示例中,虚拟设备驱动程序518可被配置成将DMA缓冲写入客存储器地址范围。当数据被写入客存储器地址范围时,图形孔径526将DMA缓冲路由至附加的图形渲染模块。
在示例性实施例中,虚拟设备驱动程序518对于客操作系统428可表现为有3D能力的图像处理单元的设备驱动程序,由此导致客操作系统428将其自己配置成支持3D图形,例如,通过加载应用程序接口524(API)的实例。虚拟设备驱动程序518被配置成与API 524接口,API 524使得3D应用程序528能产生3D图形。3D应用程序528——例如操作系统图形用户界面、应用程序/视频游戏的用户界面等等——可向API 524发出指令,该API 524可以是诸如
Figure BSA00000590593100111
的DirectX之类的API。简言之,3D图形API 524提供例如视频游戏之类的图形应用程序与驱动程序(在此情形中的虚拟设备驱动程序518)之间的抽象层。一方面,API 524提供与由虚拟设备驱动程序518展示的图形处理单元接口的低层接口,另一方面其提供可以由应用程序调用的3D图形命令库。API 524可以将3D图形命令库映射到由虚拟设备驱动程序518展示的接口,由此使游戏开发者不必理解每个图形驱动程序的特性。
API 524可以生成例如基本几何形状之类的图元,该图元在计算机图形中用作被表示成顶点和常数的其他形状的构建块,并且API 524将这些图元存储在多个直接存储器存取(DMA)缓冲中。虚拟设备驱动程序518可以通过图形孔径526将图元发送给图形渲染模块506,并且图形渲染模块506可以将缓冲存储在存储器中。当API 524发出绘制命令时,虚拟设备驱动程序518可将命令和附加数据放置在DMA缓冲器中;将它们打包到一个或多个GPU令牌中;以及经由图形孔径526将GPU令牌发送给图形渲染模块506。
图形渲染模块506可以接收令牌;从DMA缓冲器中提取所述命令并将所述命令发出给图形内核508。在示例实施例中,图形渲染模块506可以将DMA缓冲器中的命令和图元翻译成可以由3D图形驱动程序510处理的API构造。
可被配置成调度虚拟桌面服务器400内的图形处理单元上的执行的图形内核508可接收指令和DMA缓冲器的地址,并确定何时向3D图形驱动程序510发出命令。当来自各个DMA缓冲器的图元将被渲染时,图形内核508可向3D图形驱动程序510发送绘制命令,该3D图形驱动程序510可在处理器上执行并且可指示图像处理单元504执行命令以及处理DMA缓冲器中的数据。
图形处理单元504可以执行和生成表示存储器中的图像帧的位图,例如像素值阵列。图形渲染模块506可捕捉位图并将该位图传递给压缩模块,以及随后经由图形孔径526传递给远程呈现引擎406。远程呈现引擎406可经由一个或多个信息分组将位图发送给客户机520。
在示例实施例中,3D图形服务管理器404可以配置虚拟桌面服务器400以在当图形处理单元(504、504B和/或504C)重置(虽然示出了三个3D图形处理单元,但在一个示例实施例中,虚拟桌面服务器400可以包括更少或更多数目的3D GPU)时恢复。简而言之,3D图形服务管理器404可以被配置为选择一个3D GPU来为虚拟机渲染图形,并且使得关联图形渲染模块与图形处理单元绑定,例如相连接。而且,在示例实施例中,3D图形服务管理器404可以被配置为监视虚拟机和图形处理单元的性能,并且在图形处理单元重置的事件中恢复。
在一些实例中,由一个或多个图形渲染模块发送的数据流可导致图像处理单元被重置。这导致3D图形驱动程序510重置,其进而导致图形内核508重置至此GPU的连接,这导致终止绑定到GPU的任何图形程序模块。在这点处,3D图形服务管理器404可以被配置为从出于意料地的终止中恢复以最小化对虚拟桌面会话的影响。
在示范实施例中,3D图形服务管理器404可以从虚拟化平台402接收指示图形渲染模块出于意料地地退出,即图形渲染模块506被终止的信号。在该示例中,3D图形服务管理器404可以被配置为确定虚拟机图形渲染模块506与什么相关联,例如虚拟机414;确定是否要重启图形渲染模块506;以及执行恢复操作。
在示范实施例中,3D图形服务管理器404可以包括一个表,该表包括在系统中的每个图形渲染模块的标识符以及标识每个图形渲染模块与哪个虚拟机相关联的信息。该信息可以在每个虚拟机启动时提供。例如,当虚拟机,例如虚拟机414启动时,3D图形服务管理器404可以产生图形渲染模块,例如图形渲染模块506的实例,并将把图形渲染模块506链接到虚拟机414的信息存储在表中。在特定示例中,如果图形渲染模块506被重置,3D图形服务管理器404可以检查表并确定3D图形服务管理器404被配置为为虚拟机414渲染图形。
在示范实施例中,3D图形服务管理器404可以被配置为基于其在表中的信息来确定是否要重启该图形渲染模块。例如,3D图形服务管理器404可以被配置为检查与虚拟机相关联的吞吐量以试图确定该吞吐量是否指示服务拒绝攻击。服务拒绝攻击是通过用命令溢出3D图形处理单元使得该3D图形处理单元不可用于任何其他与其绑定的虚拟机的攻击。3D图形服务管理器404可以比较年夏季的吞吐量模式,并将其与正常吞吐量的模式进行比较。在吞吐量模式与服务拒绝攻击相关联的模式不匹配的实例中,3D图形服务管理器404可以被配置为为虚拟机重启图形渲染模块。
在同样或另一示例实施例中,3D图形服务管理器404可以被配置为在为虚拟机重启图形渲染模块之前确定所述图形处理单元是否过载。在图形处理单元过载,即服务了太多的虚拟机的实例中,3D图形服务管理器404可以被配置为结束虚拟桌面会话、重启GPU上的图形渲染模块,或重启图形渲染模块并将其绑定到不同的图形处理单元。
在示例实施例中,3D图形服务管理器404可以检查由GPU控制的图形存储器的估计数量以确定该GPU是否过载。例如,每个3D图形处理单元可以被整合到图形适配器中,并被附加给它可以控制的图形存储器的缓冲。简而言之,图形存储器可被用于存储屏幕图像的位图和Z缓冲(其管理3D图形中的深度坐标)、纹理、顶点缓冲、以及编译着色器程序。在示例性实施例中,图形RAM可以是高速或多端口存储器,诸如视频RAM、动态随机存取存储器、或基于诸如DDR2和图形DDR(GDDR3、GDDR4和/或GDDR5)之类的双数据率(DDR)技术的随机存取存储器。
在示范实施例中,3D图形服务管理器404可以被配置为对每个虚拟机将试图使用的图形存储器的数量或至少自适应地渲染图象所需的存储器的数量进行估计,并从图形处理单元可用的图形存储器中减去所估计的量,并将可用的图形存储器所估计的数量存储在表中。在特定示例中,假设图形处理单元被附加到4千兆字节的缓冲,3D图形服务管理器404估计虚拟机将很容易地使用存储器的1千兆字节,并且没有其他的虚拟机被绑定到图形处理单元。例中,3D图形服务管理器404可以从总可用数量(4千兆字节)中减去所估计的数量(1千兆字节),并将所估计的可用图形存储器(3千兆字节)存储在表中。
在示范的实施例中,3D图形服务管理器404基于信息对虚拟机将要需求的图形存储器的数量进行估计,所述信息包括但不局限于:像素尺寸、色彩深度、用于虚拟机显示的数目、吞吐量、压缩比、将为虚拟机渲染的表面的估计数量、存储生成顶点所需的图元所需要的存储器的数量、存储应用于顶点的纹理所需的存储器、应用选择的抗锯齿效果到对象所需的存储器等。在示范实施例中,估计可以是静态或自适应的。例如,可以存储运行时年夏季使用的图形存储器的数量并将其用于预测虚拟机将在后续虚拟桌面会话期间使用的数量。
在另一个示范实施例中,描述图形处理单元响应命令所花费的平均时间长度的信息,即等待时间,可以用于确定图形处理单元是否承受重压。例如,在一个实施例中,3D图形服务管理器404可以在表中存储平均等待时间,并且在终止时,3D图形服务管理器404可以将命令的平均等待时间与阈值进行比较,并且如果平均等待时间少于阈值,那么,3D图形服务管理器404可以重启图形渲染模块,否则,3D图形服务管理器404可以关闭虚拟机并试图使用类似于在美国专利申请号xx/xxx,xxx(代理人案号为MVIR-0669/330193.01)名为“Techniques for Load Balancing GPU Enabled Virtual Machines”(用于启用负载平衡GPU的虚拟机的技术)的申请中所描述的技术来重启不同GPU上的图形渲染模块。
阈值可以由管理员等设置并可以依赖于使用的图形处理单元。在示范实施例中,可以做加载不同类型的GPU和增加虚拟机的数目的实验。当增加了更多的虚拟机时,等待时间可以被记录并且可以通过比较在一时间周期上的重置数目和在相同时间周期上当等待时间较低时的重置数目来计算重置的概率。所监视的与高重置概率相关联的等待时间被用于设置阈值。在示例实施例中,所监视的等待时间可以设置为阈值。在其他的示范实施例中,所监视的等待时间可以被乘以标量值,并且可以使用缩放的(scaled)等待时间。例如,所监视的等待时间的80%可以被设置为阈值。
在示例实施例中,可以从图形内核508发出命令给GPU的时间开始直到接收到确认(“ACK”)为止来测量等待时间。在接收到每个ACK之后,图形内核508可以将与请求相关联的等待时间发送给3D图形服务管理器404。3D图形服务管理器404可以更新表中的值以反映该GPU的平均等待时间。
在另一示例实施例中,可以从虚拟设备驱动程序518开始直接存储器存取事务的时间开始直到接收到ACK为止来测量等待时间。例如,API 524可以发出例如绘制命令的命令,而虚拟设备驱动程序518可以在接收到该命令时启动计时器。虚拟设备驱动程序518可以将该命令发送给图形渲染模块506,图形渲染模块506接着将该命令发送给图形内核508。图形内核508可以将该命令发送给3D图形驱动程序510,它可以使得3D图形处理单元504执行操作,例如处理存储在顶点缓冲中的图元并渲染位图的渲染操作。3D GPU 504可以在它接收到该命令时生成ACK,并且ACK可以被发送回虚拟设备驱动程序518。当虚拟设备驱动程序518接收ACK时,它可以停止计时器。虚拟设备驱动程序518随后可以通过消息-递送通信信道516将等待时间发送给3D图形服务管理器404。3D图形服务管理器404可以更新表中的值以反映虚拟机的平均等待时间。
在示范实施例中,3D图形服务管理器404可以被配置为在检测到终止之后重启图形渲染模块。在该示例中,3D图形服务管理器404可以重启图形渲染模块,例如图形渲染模块506的实例,并使用消息-递送通信信道516将信号发送给虚拟设备驱动程序518。虚拟设备驱动程序518可以被配置为通过为图形孔径526分配新的客存储器范围并将存储器范围连同连接请求一起发送给重启的图形渲染模块,例如图形渲染模块506的新的实例来生成图形孔径526的新的实例。图形渲染模块506可以接受连接请求并将地址范围传递给系统管理程序。系统管理程序可以将所分配的存储器地址的范围重新映射到虚拟化平台402并在其中加载图形孔径526的新的实例。
一旦接收了指示图形渲染模块506终止的信号后,虚拟设备驱动程序518可以停止将DMA缓冲中的内容,例如命令和图元、着色器变量等,发送给图形孔径526。在重启图形渲染模块506之后,虚拟设备驱动程序518可以将先前发送的值稍一部分数据重新发送给图形重新模块506。在示范实施例中,虚拟设备驱动程序518可以存储所有的3D图形数据直到将图象发送给客户机。例如,虚拟设备驱动程序518可以重新发送队列的DMA缓冲中所有的图元。在最坏的情况下,可能会丢失数秒有价值的帧,例如60帧。在这种情况,用户可能仅仅看到1秒的暂停屏幕。
以下是描绘操作流程的一系列流程图。为便于理解,流程图被组织成使得初始流程图通过总体“大图”视点来演示各实现,并且后续的流程图提供以虚线示出的进一步的附加物和/或细节。此外,本领域的技术人员可以理解,虚线所描绘的操作流程被认为是任选的。
图6说明了用于从3D图形处理单元重置中恢复的操作流程,包括操作600、602、604、608以及610。操作600开始操作流程,并且操作602示出在虚拟化平台(402)和虚拟机之间建立通信信道(516)。例如,并转回到图5,在示范实施例中,虚拟化平台的组件,例如图3的系统管理程序302,可以包括3D GPU服务提供者512,例如可执行指令的模块,一旦由处理器执行指令,能够使得设备标识符出现在映射到虚拟机414中的IO设备的存储器中。即插即用模块可以检测设备标识符并在存储器中加载3D GPU服务客户机。3D GPU服务客户机514可以在虚拟处理器上执行并将客存储器的一组页面分配作为通信信道516使用。3D GPU服务客户机514可以配置客存储器中的通信信道516,并将其用于把信号发送给3D GPU服务提供者512,3D GPU服务提供者512可以接收该信号。消息可以现在在虚拟化平台402和虚拟机414之间的通信信道516传递。
继续对图6的描述,操作604示出了检测配置为在3D图形处理单元(504)上为虚拟机(414)渲染图形的渲染进程(506)的终止。例如,并转回到图5。在示范实施例中,3D图形服务管理器404可以接收指示图形渲染模块506出于意料地退出的信号。例如,虚拟化平台402可以被配置为启动并监视程序的执行。在程序例如图形渲染模块506退出的实例中,虚拟化平台402可以生成一个由3D图形服务管理器404可检测到的事件。
参照图6的操作606,它示出了重启所述渲染进程。例如,3D图形服务管理器404可以将信号发送给虚拟化平台402,指示其分配资源以为了虚拟机414启动图形渲染模块,即图形渲染模块506的实例。在该示例中,可以将图形渲染模块506加载到存储器,并且,3D图形服务管理器404可以向其传递配置信息,例如图形处理单元使用的身份以及虚拟机414的配置文件。图形渲染模块506可以绑定到所标识的图形处理单元并等待来自虚拟机414的连接请求。
回到图6的操作608,它示出了通过通信信道(516)将指示渲染进程正在被重启的信号发送给在虚拟机中执行的虚拟设备驱动程序(518)。参照图5,3D图形服务管理器404可以在处理器上执行,并使得指示出现重置的消息被发送给虚拟机414。例如,3D图形服务管理器404可以将信号发送给3D GPU服务提供者512,并且,3D GPU服务提供者512可以将指示出现重置的消息写入通信信道516。3D GPU服务客户机514可以通过通信信道516接收该消息,并将该消息路由给,例如远程呈现引擎406,它可以将该消息发送给虚拟设备驱动程序518。在该特定实施例中,远程呈现引擎406可以具有到3D GPU服务客户机514和虚拟设备驱动程序518两者的通信信道,并且因此,它可以趁机被用于路由两个组件之间的消息。在另一个示范实施例中,3D GPU服务客户机514可以将信号直接发送给虚拟设备驱动程序518。
再次参照图6,操作610示出在虚拟机(414)中执行的虚拟设备驱动程序(518)和重启的渲染进程之间建立图形缓冲。例如,回到图5,虚拟设备驱动程序518可以接收指示重启图形渲染模块506的信号,并且可以将其已经使用的传送3D数据,例如顶点、纹理等给虚拟化平台402的图形缓冲卸载,并创建新的图形缓冲。例如,图形缓冲可以实现为图形孔径526。在该示例中,虚拟设备驱动程序518可以分配客存储器地址的范围并将该范围传递给3D GPU服务客户机514,3D GPU服务客户机514可以在消息中将该范围发送给3DGPU服务提供者512。图形渲染模块506可以接收存储器地址的范围并将信号发送给系统管理程序。系统管理程序可以接收该信号并将客存储器地址的范围重新映射到系统存储器,即分配给虚拟化平台402的存储器,并在图形缓冲中启动将3D数据的DMA缓冲从虚拟设备驱动程序518传递给图形渲染模块506的处理。图形渲染模块506可以开始接收3D数据和命令,并将它们发送给图形内核508。图形内核508可以调度它们在3D图形处理单元,例如3D GPU 504上的执行,并且3D GPU 504可以渲染图象。
现在回到图7,其示出图6的操作流程,包括附加操作/细化712-722。操作712示出通过图形缓冲重新发送图形数据以渲染完整的帧。例如,参照图6,在建立图形缓冲,例如图形孔径526之后,可以配置虚拟设备驱动程序518以重新发送图形数据的至少一个完整帧。例如,虚拟设备驱动程序518可以保持对哪些图形数据已经被发送给图形渲染模块506的跟踪,并且保持顶点数据的副本,直到所渲染的数据被成功地发送给客户机520。在本示例中,虚拟设备驱动程序518可以确定渲染的最后的帧的身份,并将生成下一完整帧所需的图形数据重新发送。例如,由于一些3D图形数据被用于多个帧,可以用于下一帧的某些数据可能已经被发送给了图形渲染模块506。在本示例中,用于创建下一帧的所有数据可以通过图形缓冲被发送,以确保图形渲染模块506可以渲染下一帧。
参照操作714,它示出响应于确定在渲染进程终止之前虚拟机没有执行服务拒绝攻击而重启渲染进程。例如,在示范实施例中,3D图形服务管理器404可以被配置为通过将通过图形孔径526的吞吐量和表示典型的服务拒绝攻击的吞吐量模式进行比较来确定图形渲染模块506是否由于服务拒绝攻击而被终止。在模式不匹配的实例中,3D图形服务管理器404可以被配置为重启图形渲染模块506。否则,3D图形服务管理器404可以采取多个行动中的一步或多步,例如重启3D图形服务管理器404、断开客户机520、将信号发送给配置为通知可疑活动的管理员的处理等。
继续对图7的描述,操作716示出了响应于确定在渲染进程终止之前由虚拟设备驱动程序启动的直接存储器存取事务的平均等待时间少于阈值而重启所述渲染进程。例如,在示范实施例中,3D图形服务管理器404可以被配置为在重启图形渲染模块506之前确定3D GPU是否过载。在该特定示例实施例中,在重启图形渲染模块506之前,3D图形服务管理器404可以被配置为通过将由虚拟机发起的直接存储器存取事务的平均等待时间与阈值进行比较来确定是否渲染给GPU 504的任意虚拟机负责使得3D图形处理单元504重置。由虚拟机414发起的DMA事务的等待时间可以从虚拟设备驱动程序518接收包括3DGPU 504的命令的DMA缓冲的时间点开始到由虚拟设备驱动程序518接收到命令的ACK信号的时间点为止来进行测量。
在平均等待时间大于阈值的实例中,3D图形服务管理器404可以采取多个行动之一。例如,3D图形服务管理器404可以重启图形渲染模块506并将描述虚拟机414恢复了的信号发送给客户机520的用户或管理员。在本实例中,可以在客户机520的用户界面522上显示警告消息。在另一示例中,3D图形服务管理器404可以断开虚拟机414并使得指示客户机由于其引起3D图形处理单元重启而被断开的消息显示在客户机520上。在又另一个实施例中,3D图形服务管理器404可以断开虚拟机414并发送信号给管理员。在又另一个实施例中,3D图形服务管理器404可以尝试将至少一个虚拟机移动到另一图形处理单元。
转向操作718,它示出响应于确定在渲染进程终止之前3D图形处理单元响应命令所花费的时间量少于阈值而重启渲染进程。例如,在示范实施例中,3D图形服务管理器404可以被配置为在重启图形渲染模块506之前通过比较与3D GPU ACK相关联的平均等待时间来确定所述3D GPU 504是否过载。例如,图形内核508可以被配置为在每次它将硬件命令发送给3D图形处理单元504时启动计时器,并在接收到ACK时停止计时器。随后,可以将所计算的时间发送给3D图形服务管理器404,它能计算3D图形处理单元在响应上所花费的平均时间。在图形渲染模块506终止之后,3D图形服务管理器404可以将刚好在终止之前的硬件命令的平均等待时间与阈值进行比较来确定硬件是否被过量使用。
在平均等待时间大于阈值的实例中,3D图形服务管理器404可以采取多个行动之一。例如,3D图形服务管理器404可以重启图形渲染模块506并将描述虚拟机414恢复了的信号发送给客户机520的用户或管理员。在本实例中,可以在客户机520的用户界面522上显示警告消息。在另一示例中,3D图形服务管理器404可以断开虚拟机414并使得指示由于3D图形处理单元必须重启而断开客户机的消息显示在客户机520上。在又另一个实施例中,3D图形服务管理器404可以断开虚拟机414并发送信号给管理员。在又另一个实施例中,3D图形服务管理器404可以尝试将至少一个虚拟机移动到另一图形处理单元。
参照操作720,它示出响应于确定在渲染进程终止之前由3D图形处理单元所控制的可用图形存储器的估计的数量大于阈值而重启渲染进程。例如,在示范实施例中,3D图形服务管理器404可以被配置为通过将图形处理单元可用的图形存储器的估计的数量与阈值数量进行比较来在重启图形渲染模块506之前确定3D GPU 504是否过载。3D图形服务管理器404可以被配置为估计虚拟机例如虚拟机414在其重启时将试图使用多少图形存储器,并将所述值存储在表中。3D图形服务管理器404随后可以指示图形渲染模块,例如图形渲染模块506,绑定到3D GPU 504,并从反映可用图形存储器的数量估值的数值中减去用于虚拟机414的图形存储器的估计数量。在重启图形渲染模块506之前,3D图形服务管理器404可以被配置为将可用的图形存储器的估计数量与阈值进行比较,并且如果估计的值大于阈值,则3D图形服务管理器404可以重启图形渲染模块506。在示范实施例中,阈值可以被设置为零。就是说,只要在3D GPU504上的估计的负载不大于由3D GPU 504所控制的图形存储器的总量,则3D图形服务管理器404就能重启图形渲染模块506。在另一示范实施例中,阈值可以被死定为总的图形存储器的一个百分比,例如75%。在该示例中,只要估计的负载不大于由3D GPU 504所控制的图形存储器的总量的75%,则3D图形服务管理器404就能重启图形渲染模块506。
参照操作722,它示出重启所述渲染进程并指定所述渲染进程在第二3D图形处理单元上渲染。例如,参照图5,在该实施例中,3D图形服务管理器404可以被配置为将与图形渲染进程506将渲染的GPU所不同的GPU的标识符以使得重启的图形渲染模块506绑定到不同的GPU,例如3D GPU 504B。在本示例中,3D图形服务管理器404可以被配置为移动绑定到重置的图形处理单元且使得所关联的图形渲染模块终止的一个或多个虚拟机以减少GPU上的负载。例如,如果当3D GPU 504重置时,虚拟机414、414B和414C连接到该3D GPU504,则3D图形服务管理器404可以被配置为从所述组中选择一个或多个,并向所选择的虚拟机发送3D GPU 504B和/或3D GPU 504C的设备标识符。在本示例中,3D图形服务管理器404可以使用信息,例如估计的由每个虚拟机使用的图形存储器的数量和/或直接存储器存取事务的平均等待时间,来选择移动哪个虚拟机。
现在转向图8,它示出了用于从图形处理单元重置中恢复的操作流程,包括操作800-816。类似于上述操作流程,操作800可以开始流程,并且操作802示出在主操作系统和虚拟机之间建立通信信道。例如,并转向图5,在示范实施例中,3D GPU服务提供者512可以在例如图2的父部分内运行的主操作系统的内核空间之内执行。在本示例中,3D GPU服务提供者512可以由处理器执行,并且使得设备标识符出现在映射到虚拟机414的IO设备的存储器中。即插即用模块可以检测设备标识符并在存储器中加载3D GPU服务客户机。3DGPU服务客户机514可以在虚拟处理器上执行并分配客存储器的一组页面,并在所述存储器中设置通信信道516。3D GPU服务客户机514可以通过通信信道516向3D GPU服务提供者512发送连接请求,3D GPU服务提供者512可以接受请求。消息可以现在在虚拟化平台402和虚拟机414之间的通信信道516传递。
继续对图8的描述,操作804示出了在主操作系统中运行渲染进程,其中,所述渲染进程配置为在3D图形处理单元上为虚拟机渲染图形。例如,可以由虚拟化平台400接收连接请求以启动虚拟机414。在本示例中,可以将一个信号发送给3D图形服务管理器404,3D图形服务管理器404也是在主操作系统的内核模式中运行的可执行指令模块,以在主操作系统的用户空间中启动图形渲染进程,例如图形渲染模块。3D图形服务管理器404可以使得主操作系统加载图形渲染模块506并将其与虚拟机414相关联。
继续对图8的描述,操作806示出了检测渲染进程终止。例如,并转回到图5。在示范实施例中,3D图形服务管理器404可以从主操作系统接收指示图形渲染模块506出于意料地退出的信号。例如,本示例中的主操作系统可以被配置为启动并监视程序的执行。在图形渲染模块506出于意料地退出的实例中,主操作系统可以生成可以由3D图形服务管理器404检测的事件。
转向操作808,它示出重启渲染进程。例如,3D图形服务管理器404可以将信号发送给主操作系统,指示其分配资源以为了虚拟机414启动图形渲染模块,即图形渲染模块506的实例。在该示例中,可以将图形渲染模块506加载到存储器,并且,3D图形服务管理器404可以向其传递配置信息,例如图形处理单元使用的身份。图形渲染模块506可以绑定到所标识的图形处理单元,例如3D GPU 504并等待来自虚拟机414的连接请求。
参照操作810,它示出通过通信信道发送指示渲染进程被重启的消息。参照图5,3D图形服务管理器404可以在处理器上执行,并使得指示出现重置的消息被发送给虚拟机414。例如,3D图形服务管理器404可以将信号发送给3DGPU服务提供者512,并且,3D GPU服务提供者512可以写入指示图形渲染模块506重启的消息。3D GPU服务客户机514可以通过通信信道516接收该消息并将该消息路由给例如虚拟设备驱动程序518。
转向操作812,它示出由虚拟机中的虚拟设备驱动程序在客存储器的范围中建立图形缓冲。例如,回到图5,在示范实施例中,虚拟设备驱动程序518可以接收指示重启图形渲染模块506的信号,并且可以将其已经使用的从虚拟机414传送转发3D数据,例如顶点、纹理等给主操作系统的图形缓冲卸载,并创建新的图形缓冲。例如,图形缓冲可以实现为图形孔径526。在该示例中,虚拟设备驱动程序518可以分配客存储器地址的范围并将该范围传递给3DGPU服务客户机514,3D GPU服务客户机514可以在消息中将该范围发送给3D GPU服务提供者512。图形渲染模块506可以接收存储器地址的范围并将信号发送给系统管理程序。完整的系统管理程序202可以接收该信号并将客存储器地址的范围重新映射到系统存储器,即分配给虚拟化平台402的存储器,并在图形缓冲中启动将3D数据的DMA缓冲从虚拟设备驱动程序518传递给图形渲染模块506的进程。
操作814示出通过通信信道将3D数据发送给重启的渲染进程。虚拟设备驱动程序518可以将填充有顶点、纹理、命令等的DMA缓冲通过图形缓冲,例如图形孔径526发送给图形渲染模块506。图形渲染模块506可以接收DMA缓冲,并将它们发送给图形内核508。图形内核508可以调度它们在3D图形处理单元,例如3D GPU 504上的执行,并且3D GPU 504可以渲染图象。
回到图9,其示出图8的操作流程,包括附加操作916-924。操作916示出通过图形缓冲发送图形数据以渲染完整的帧。例如,在建立图形缓冲例如图形孔径526之后,可以配置虚拟设备驱动程序518以重新发送至少一个图形数据的完整帧。例如,虚拟设备驱动程序518可以保持哪些图形数据,例如在DMA缓冲中发送的顶点数据,已经被渲染并发送给客户机520的跟踪,并保持顶点数据的副本直到该渲染的图象被成功地发送给客户机520。在本示例中,虚拟设备驱动程序518可以确定渲染的最后的帧的身份,并将生成下一完整帧所需的图形数据重新发送。
参照操作918,它示出响应于确定在渲染进程终止之前虚拟机没有执行服务拒绝攻击而重启渲染进程。例如,在示范实施例中,3D图形服务管理器404可以被配置为通过将在终止之前通过图形孔径526的吞吐量和表示典型的服务拒绝攻击的吞吐量模式进行比较来确定图形渲染模块506是否由于服务拒绝攻击而被终止。在模式不匹配的实例中,3D图形服务管理器404可以被配置为重启图形渲染模块506。
参照操作920,它示出响应于确定在渲染进程终止之前3D图形处理单元在响应命令时花费的时间量少于阈值来重启渲染进程。例如,在示范实施例中,3D图形服务管理器404可以被配置为在重启图形渲染模块506之前,通过比较与3D GPU ACK相关联的平均等待时间来确定在图形渲染模块506终止之前所述3D GPU 504是否过载。在3D图形渲染模块506终止之后,3D图形服务管理器404可以将刚好在终止之前的硬件命令的平均等待时间与阈值进行比较来确定硬件是否被过量使用。在平均等待时间少于阈值的实例中,3D图形服务管理器404可以重启图形渲染模块506。
操作922示出响应于确定在渲染进程终止之前由3D图形处理单元所控制的可用图形存储器的数量大于阈值而重启渲染进程。例如,在示范实施例中,3D图形服务管理器404可以被配置为在重启图形渲染模块506之前,通过将图形处理单元可用的图形存储器的估计的数量与阈值数量进行比较来确定在终止之前3D GPU 504是否过载。3D图形服务管理器404可以被配置为估计虚拟机在其启动时将试图使用多少图形存储器,并将该值存储在表中。随后,3D图形服务管理器404可以指示图形渲染模块绑定到3D GPU,并从反映估计的可用图形存储器的数量中减去所估计的图形存储器数量。在重启图形渲染模块之前,3D图形服务管理器404可以被配置为将估计的可用的图形存储器的数量与阈值进行比较,并且如果估计的值大于阈值,则3D图形服务管理器404可以重启图形渲染模块506。在可用图形存储器的数量大于阈值的实例中,3D图形服务管理器404可以重启图形渲染模块506。
转向操作924,它示出重启所述渲染进程并指定渲染进程在第二3D图形处理单元上进行渲染。例如,参照图5,在该实施例中,3D图形服务管理器404可以被配置为将与图形渲染进程506将渲染的GPU所不同的GPU的标识符以使得重启的图形渲染模块506绑定到不同的GPU,例如3D GPU 504B。在本示例中,3D图形服务管理器404可以被配置为移动绑定到重置的图形处理单元且使得所关联的图形渲染模块终止的一个或多个虚拟机以便减少GPU上的负载。例如,如果当3D GPU 504重置时,虚拟机414、414B和414C连接到该3D GPU504,则3D图形服务管理器404可以被配置为从所述组中选择一个或多个,并向所选择的虚拟机发送3D GPU 504B和/或3D GPU 504C的设备标识符。在本示例中,3D图形服务管理器404可以使用信息,例如估计的由每个虚拟机使用的图形存储器的数量和/或直接存储器存取事务的平均等待时间,来选择移动哪个虚拟机。
现在参照图10,它示出了用于从图形处理单元重置中恢复的操作流程,包括操作1000-1014。操作1000开始操作流程,并且操作1002示出由虚拟化平台(402)在虚拟化平台(402)和虚拟机之间建立通信信道(516)。例如,并转回到图5,在示范实施例中,虚拟化平台402,例如图3的系统管理程序302,可以包括3D GPU服务提供者512,例如可执行指令的模块,一旦由处理器执行指令,能够使得设备标识符出现在映射到虚拟机414中的IO设备的存储器中。即插即用模块可以检测设备标识符并在存储器中加载3D GPU服务客户机。3D GPU服务客户机514可以在虚拟处理器上执行并分配客存储器的一组页面,并在其中设置通信信道516。3D GPU服务客户机514可以通过通信信道516向3D GPU服务提供者512发送连接请求,3D GPU服务提供者512可以接受请求。
操作1004示出由虚拟化平台(402)运行的渲染进程(506),该渲染进程(506)在3D图形处理单元上为虚拟机(414)渲染图形。例如,可以由虚拟化平台400接收连接请求以启动虚拟机414。在本示例中,可以将一个信号发送给3D图形服务管理器404,3D图形服务管理器404也是在主操作系统的内核模式中或在图3的系统管理程序中运行的可执行指令模块,以启动图形渲染进程,例如图形渲染模块,如图形渲染模块506。3D图形服务管理器404可以使得主操作系统加载图形渲染模块506并将其与虚拟机414相关联。
参照操作1006,它示出由虚拟化平台(402)检测渲染进程(506)的终止。例如并回到图5,在示范实施例中,3D图形服务管理器404可以接收指示图形渲染模块506出于意料地退出的信号。
回到操作1008,它示出由虚拟化平台(402)重启渲染进程。例如,3D图形服务管理器404可以将信号发送给主操作系统或图3的系统管理程序302的调度器,指示其分配资源以为了虚拟机414启动图形渲染模块,即图形渲染模块506的实例。在该示例中,可以将图形渲染模块506加载到存储器,并且,3D图形服务管理器404可以向其传递配置信息,例如图形处理单元使用的身份。图形渲染模块506可以绑定到所标识的图形处理单元并等待来自虚拟机414的连接请求。
操作1010示出通过通信信道将指示渲染进程(506)被重启的消息发送给虚拟机。参照图5,3D图形服务管理器404可以在处理器上执行,并使得指示出现重置的消息被发送给虚拟机414。例如,3D图形服务管理器404可以将信号发送给3D GPU服务提供者512,并且,3D GPU服务提供者512可以写入指示图形渲染模块506重启的消息。3D GPU服务客户机514可以通过通信信道516接收该消息并将该消息路由给例如虚拟设备驱动程序518。
操作1012示出由在虚拟机(414)中执行的虚拟设备驱动程序(518)在客存储器范围内建立图形缓冲(526)。例如,回到图5,在示范实施例中,虚拟设备驱动程序518可以接收指示重启图形渲染模块506的信号,并且可以将其已经使用的用于从虚拟机414传送转发3D数据,例如顶点、纹理等给虚拟化平台402的图形缓冲卸载,并创建新的图形缓冲。例如,图形缓冲可以实现为图形孔径526。在该示例中,虚拟设备驱动程序518可以分配客存储器地址的范围并将该范围传递给3D GPU服务客户机514,3D GPU服务客户机514可以在消息中将该范围发送给3D GPU服务提供者512。图形渲染模块506可以接收存储器地址的范围并将信号发送给系统管理程序。完整的系统管理程序202或图3的系统管理程序302可以接收该信号并将客存储器地址的范围重新映射到系统存储器,即分配给虚拟化平台402的存储器,并在图形缓冲中启动将3D数据的DMA缓冲从虚拟设备驱动程序518传递给图形渲染模块506的进程。
操作1014示出通过图形缓冲(526)将3D图形数据发送给被重启的渲染进程。虚拟设备驱动程序518可以将填充有顶点、纹理、命令等的DMA缓冲通过图形缓冲,例如图形孔径526发送给图形渲染模块506。图形渲染模块506可以接收DMA缓冲,并将它们发送给图形内核508。图形内核508可以调度它们在3D图形处理单元,例如3D GPU 504上的执行,并且3D GPU 504可以渲染图象。
现在参照图11,其示出图10的操作流程,包括附加操作流程1116和-1126。操作1116示出响应于确定在渲染进程终止之前虚拟机没有执行服务拒绝攻击而重启渲染进程。例如,在示范实施例中,3D图形服务管理器404可以被配置为通过将在终止之前通过图形孔径526的吞吐量和表示典型的服务拒绝攻击的吞吐量模式进行比较来确定图形渲染模块506是否由于服务拒绝攻击而被终止。在模式不匹配的实例中,3D图形服务管理器404可以被配置为重启图形渲染模块506。否则,3D图形服务管理器404可以采取多个行动中的一步或多步,例如重启3D图形服务管理器404、断开客户机520、将信号发送给配置为通知可疑活动的管理员的进程等。
参照操作1118,它示出响应于确定在终止渲染进程之前3D图形处理单元在响应命令时花费的时间量少于阈值来重启渲染进程。类似于上述操作,在示范实施例中,3D图形服务管理器404可以被配置为在重启图形渲染模块506之前通过比较与3D GPU ACK相关联的平均等待时间来确定在终止之前所述3D GPU 504是否过载。在平均等待时间少于阈值的实例中,3D图形服务管理器404可以重启图形渲染模块506。
操作1120示出通过响应于由3D图形处理单元所控制的可用图形存储器的数量大于阈值,而重启渲染进程。例如,在示范实施例中,3D图形服务管理器404可以被配置为在重启图形渲染模块506之前,通过将重置前的图形处理单元可用的图形存储器的估计的数量与阈值数量进行比较来确定在终止之前3DGPU 504是否过载。在可用图形存储器的数量大于阈值的实例中,3D图形服务管理器404可以重启图形渲染模块506。
操作1122示出重启渲染进程并指定渲染进程在第二3D图形处理单元上进行渲染。例如,在示范实施例中,3D图形服务管理器404可以被配置为在重启图形渲染模块506之前,通过将在终止前与3D GPU ACK相关联的平均等待时间与阈值量进行比较来确定所述3D GPU 504是否过载。例如,图形内核508可以被配置为在每次它将硬件命令发送给3D图形处理单元504时启动计时器,并在接收到ACK时停止计时器。随后,可以将所计算的时间发送给3D图形服务管理器404,它能计算3D图形处理单元在响应上所花费的平均时间。在终止之后,3D图形服务管理器404可以将刚好在终止之前的硬件命令的平均等待时间与阈值进行比较来确定硬件是否被过量使用。
操作1124示出响应于确定在渲染进程终止之前由虚拟设备驱动程序启动的直接存储器存取事务的平均等待时间少于阈值而重启所述渲染进程。例如,在示范实施例中,3D图形服务管理器404可以被配置为在重启图形渲染模块506之前,确定在终止之前3D GPU是否过载。在该特定示例实施例中,在重启图形渲染模块506之前,3D图形服务管理器404可以被配置为通过将与虚拟机相关联的直接存储器存取事务的平均等待时间与阈值进行比较来确定是否渲染给GPU 504的任意虚拟机负责使得3D图形处理单元504重置。由虚拟机414发起的DMA事务的等待时间可以从虚拟设备驱动程序518接收包括3DGPU 504的命令的DMA缓冲的时间点开始到由虚拟设备驱动程序518接收到命令的ACK信号的时间点为止来进行测量。
操作1126示出通过图形缓冲重新发送图形数据的帧。例如,参照图6,在建立图形缓冲,例如图形孔径526之后,可以配置虚拟设备驱动程序518以重新发送至少一个图形数据的完整帧。例如,虚拟设备驱动程序518可以保持哪些图形数据,例如在DMA缓冲中发送的顶点数据,已经被渲染并发送给客户机520的跟踪,并保持顶点数据的副本直到该渲染的图象被成功地发送给客户机520。在本示例中,虚拟设备驱动程序518可以确定渲染的最后的帧的身份,并将生成下一完整帧所需的图形数据重新发送。例如,由于一些3D图形数据被用于多个帧,可以用于下一帧的某些数据可能已经被发送给了图形渲染模块506。在本示例中,用于创建下一帧的所有数据可以通过图形缓冲被发送,以确保图形渲染模块506可以渲染下一帧。
上述详细描述通过示例和/或操作图阐明了系统和/或过程的各种实施例。就这些框图和/或示例包含一个或多个功能和/或操作而言,本领域技术人员将理解,这些框图或示例中的每一功能和/或操作都可由各种各样的硬件、软件、固件、或实际上其任意组合来单独地和/或共同地实现。
虽然已示出和描述了本文中描述的主题内容的特定方面,但是本领域技术人员将明白,基于本文中的教导,可作出改变和修改而不脱离本文中描述的主题内容,并且其更广方面以及因此所附权利要求的范围旨在涵盖落在本文中描述的主题内容的真实精神和范围内的所有此类改变和修改。

Claims (14)

1.一种配置用于从图形处理器重置中恢复的计算机系统(400),包括:
处理器(102)
3D图形处理单元(504);以及
存储器(104和/或106),所述存储器在计算机系统(400)可操作时至少与所述处理器(102)通信,所述存储器(104和/或106)其上存储有计算机可读指令,所述计算机可读指令在执行时使得所述处理器:
在虚拟化平台(402)和虚拟机(414)之间建立通信信道(516);
检测配置为在所述3D图形处理单元(504)上为所述虚拟机(414)渲染图形的渲染进程(506)的终止;
重启所述渲染进程(506);
通过所述通信信道(516)将指示渲染进程正被重启的信号发送给在所述虚拟机(414)上执行的虚拟设备驱动程序(518);以及
在在所述虚拟机(414)上执行的虚拟设备驱动程序(518)和重启的渲染进程(506)之间建立图形缓冲(526)。
2.如权利要求1所述的计算机系统,其特征在于,所述计算机可读指令还包括在执行时使所述处理器执行以下动作的计算机可读指令:
通过所述图形缓冲重新发送图形数据以渲染完整的帧。
3.如权利要求1所述的计算机系统,其特征在于,在执行时使所述处理器重启所述渲染进程的计算机可读指令还包括在执行时使所述处理器执行以下动作的计算机可读指令:
响应于确定在所述渲染进程被终止之前所述虚拟机没有执行服务拒绝攻击而重启所述渲染进程。
4.如权利要求1所述的计算机系统,其特征在于,在执行时使所述处理器重启所述渲染进程的计算机可读指令还包括在执行时使所述处理器执行以下动作的计算机可读指令:
响应于确定在所述渲染进程被终止之前由所述虚拟设备驱动程序发起的直接存储器存取事务的平均等待时间少于阈值而重启所述渲染进程。
5.如权利要求1所述的计算机系统,其特征在于,在执行时使所述处理器重启所述渲染进程的计算机可读指令还包括在执行时使所述处理器执行以下动作的计算机可读指令:
响应于确定在所述渲染进程被终止之前所述3D图形处理单元响应命令所花费的时间量少于阈值而重启所述渲染进程。
6.如权利要求1所述的计算机系统,其特征在于,在执行时使所述处理器重启所述渲染进程的计算机可读指令还包括在执行时使所述处理器执行以下动作的计算机可读指令:
响应于确定在所述渲染进程被终止之前所述3D图形处理单元所控制的可用图形存储器的估计数量大于阈值而重启所述渲染进程。
7.如权利要求1所述的计算机系统,其特征在于,在执行时使所述处理器重启所述渲染进程的计算机可读指令还包括在执行时使所述处理器执行以下动作的计算机可读指令:
重启所述渲染进程并指定所述渲染进程在第二3D图形处理单元上进行渲染。
8.一种用于从3D图形处理单元重置中恢复的方法,包括:
由虚拟化平台(402)在所述虚拟化平台(402)和虚拟机(414)之间建立通信信道(516);
由所述虚拟化平台(402)运行配置用于在3D图形处理单元(504)上为所述虚拟机(414)渲染图形的渲染进程(506);
由所述虚拟化平台(402)检测所述渲染进程(506)的终止。{0>?<0}
通过所述通信信道(516)将指示所述渲染进程(506)被重启的消息发送给所述虚拟机(414);
由在所述虚拟机(414)内执行的虚拟设备驱动程序(518)在客存储器的范围内建立图形缓冲(526);
通过所述图形缓冲(526)将3D图形数据发送给重启的渲染进程(506)。
9.如权利要求8所述的方法,其特征在于,还包括:
响应于确定在所述渲染进程被终止之前所述虚拟机没有执行服务拒绝攻击而重启所述渲染进程。
10.如权利要求8所述的方法,其特征在于,还包括:
响应于确定在所述渲染进程被终止之前所述3D图形处理单元响应命令所花费的时间量少于阈值而重启所述渲染进程。
11.如权利要求8所述的方法,其特征在于,还包括:
响应于确定在所述渲染进程被终止之前所述3D图形处理单元所控制的可用图形存储器的估计数量大于阈值而重启所述渲染进程。
12.如权利要求8所述的方法,其特征在于,还包括:
重启所述渲染进程并指定所述渲染进程在第二3D图形处理单元上进行渲染。
13.如权利要求8所述的方法,其特征在于,还包括:
响应于确定在所述渲染进程被终止之前由虚拟设备驱动程序发起的直接存储器存取事务的平均等待时间少于阈值而重启所述渲染进程。
14.如权利要求8所述的方法,其特征在于,还包括:
通过所述图形缓冲渲染图形数据的帧。
CN201110308311.0A 2010-09-30 2011-09-29 动态虚拟设备故障恢复 Active CN102495769B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/895,668 2010-09-30
US12/895,668 US8970603B2 (en) 2010-09-30 2010-09-30 Dynamic virtual device failure recovery

Publications (2)

Publication Number Publication Date
CN102495769A true CN102495769A (zh) 2012-06-13
CN102495769B CN102495769B (zh) 2015-08-19

Family

ID=45889364

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110308311.0A Active CN102495769B (zh) 2010-09-30 2011-09-29 动态虚拟设备故障恢复

Country Status (2)

Country Link
US (1) US8970603B2 (zh)
CN (1) CN102495769B (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105122204A (zh) * 2014-03-13 2015-12-02 华为技术有限公司 一种图像处理方法、虚拟机及虚拟机系统
CN105302092A (zh) * 2014-07-25 2016-02-03 费希尔-罗斯蒙特系统公司 基于最小特权的过程控制软件安全架构
CN107015845A (zh) * 2015-12-02 2017-08-04 想象技术有限公司 Gpu虚拟化
CN107729049A (zh) * 2017-09-13 2018-02-23 深信服科技股份有限公司 指令转换方法、设备及计算机可读存储介质
CN108027794A (zh) * 2015-09-24 2018-05-11 英特尔公司 用于在私有高速缓存中使用直接数据放置进行自动处理器核关联管理和通信的技术
CN111274044A (zh) * 2020-01-13 2020-06-12 奇安信科技集团股份有限公司 Gpu虚拟化资源限制处理方法及装置
CN112789830A (zh) * 2018-10-01 2021-05-11 微软技术许可有限责任公司 用于信道响应的多模式信道不可知渲染的机器人平台
CN113645484A (zh) * 2021-10-16 2021-11-12 成都中科合迅科技有限公司 基于图形处理器的数据可视化加速渲染方法
CN117274033A (zh) * 2023-11-20 2023-12-22 芯瞳半导体技术(山东)有限公司 图形驱动调试方法、装置、存储介质及电子设备

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9069622B2 (en) 2010-09-30 2015-06-30 Microsoft Technology Licensing, Llc Techniques for load balancing GPU enabled virtual machines
US9208029B2 (en) * 2010-11-12 2015-12-08 Hitachi, Ltd. Computer system to switch logical group of virtual computers
US10310879B2 (en) * 2011-10-10 2019-06-04 Nvidia Corporation Paravirtualized virtual GPU
CN102890643B (zh) * 2012-07-26 2015-01-21 上海交通大学 基于应用效果即时反馈的显卡虚拟化下的资源调度系统
EP2763039A1 (de) * 2013-01-30 2014-08-06 Siemens Aktiengesellschaft Verfahren und Virtualisierungssteuerung zur Verwaltung einer Ressource eines Computers mit zumindest zwei virtuellen Maschinen
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
US9766913B2 (en) * 2014-05-30 2017-09-19 Citrix Systems, Inc. Method and system for managing peripheral devices for virtual desktops
US9766918B2 (en) * 2015-02-23 2017-09-19 Red Hat Israel, Ltd. Virtual system device identification using GPU to host bridge mapping
US9507626B1 (en) * 2015-07-20 2016-11-29 Red Had Israel, Ltd. Virtual device backend recovery
CN106454312A (zh) * 2016-09-29 2017-02-22 乐视控股(北京)有限公司 一种图像处理方法和装置
US10250473B2 (en) 2016-11-29 2019-04-02 Red Hat Israel, Ltd. Recovery from a networking backend disconnect
WO2019209314A1 (en) 2018-04-27 2019-10-31 Hewlett-Packard Development Company, L.P. Failure shield
US11379295B1 (en) * 2019-05-15 2022-07-05 Amazon Technologies, Inc. Recovery protocols for system malfunctions in virtual computing environments
CN112380047A (zh) * 2020-09-25 2021-02-19 深圳中科德能科技有限公司 一种交换机的重启方法、装置、终端设备和存储介质

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6240531B1 (en) * 1997-09-30 2001-05-29 Networks Associates Inc. System and method for computer operating system protection
CN1790294A (zh) * 2004-12-17 2006-06-21 国际商业机器公司 保留虚拟机的高速缓存的系统和方法
US7263690B1 (en) * 2003-11-14 2007-08-28 Sun Microsystems, Inc. Mechanism for safe byte code in a tracing framework
US7360022B2 (en) * 2005-12-29 2008-04-15 Intel Corporation Synchronizing an instruction cache and a data cache on demand
US20080307259A1 (en) * 2007-06-06 2008-12-11 Dell Products L.P. System and method of recovering from failures in a virtual machine
US20090189891A1 (en) * 2008-01-27 2009-07-30 Juan Rivera Methods and systems for remoting three dimensional graphics
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
TW200948088A (en) * 2008-02-27 2009-11-16 Ncomputing Inc System and method for virtual 3D graphics acceleration and streaming multiple different video streams

Family Cites Families (19)

* 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
US7075541B2 (en) 2003-08-18 2006-07-11 Nvidia Corporation Adaptive load balancing in a multi-processor graphics processing system
JP2007510198A (ja) 2003-10-08 2007-04-19 ユニシス コーポレーション ホストシステムのパーティション内に実装されているハイパーバイザを使用したコンピュータシステムの準仮想化
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
US7444459B2 (en) 2006-12-12 2008-10-28 Lsi Logic Corporation Methods and systems for load balancing of virtual machines in clustered processors using storage related load information
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 株式会社日立製作所 仮想計算機システム
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
US8473594B2 (en) 2008-05-02 2013-06-25 Skytap Multitenant hosted virtual machine infrastructure
US20100115510A1 (en) 2008-11-03 2010-05-06 Dell Products, Lp Virtual graphics device and methods thereof
US8266618B2 (en) 2008-11-21 2012-09-11 International Business Machines Corporation Graphics hardware resource usage in a fully virtualized computing environment
US8751654B2 (en) 2008-11-30 2014-06-10 Red Hat Israel, Ltd. Determining the graphic load of a virtual desktop
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
US8830245B2 (en) 2010-12-14 2014-09-09 Amazon Technologies, Inc. Load balancing between general purpose processors and graphics processors

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6240531B1 (en) * 1997-09-30 2001-05-29 Networks Associates Inc. System and method for computer operating system protection
US7263690B1 (en) * 2003-11-14 2007-08-28 Sun Microsystems, Inc. Mechanism for safe byte code in a tracing framework
CN1790294A (zh) * 2004-12-17 2006-06-21 国际商业机器公司 保留虚拟机的高速缓存的系统和方法
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
US20080307259A1 (en) * 2007-06-06 2008-12-11 Dell Products L.P. System and method of recovering from failures in a virtual machine
US20090189891A1 (en) * 2008-01-27 2009-07-30 Juan Rivera Methods and systems for remoting three dimensional graphics
TW200948088A (en) * 2008-02-27 2009-11-16 Ncomputing Inc System and method for virtual 3D graphics acceleration and streaming multiple different video streams

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105122204A (zh) * 2014-03-13 2015-12-02 华为技术有限公司 一种图像处理方法、虚拟机及虚拟机系统
CN105302092A (zh) * 2014-07-25 2016-02-03 费希尔-罗斯蒙特系统公司 基于最小特权的过程控制软件安全架构
US11275861B2 (en) 2014-07-25 2022-03-15 Fisher-Rosemount Systems, Inc. Process control software security architecture based on least privileges
CN108027794B (zh) * 2015-09-24 2021-12-24 英特尔公司 用于数据通信的计算设备、方法和机器可读存储介质
CN108027794A (zh) * 2015-09-24 2018-05-11 英特尔公司 用于在私有高速缓存中使用直接数据放置进行自动处理器核关联管理和通信的技术
CN107015845A (zh) * 2015-12-02 2017-08-04 想象技术有限公司 Gpu虚拟化
CN107015845B (zh) * 2015-12-02 2022-04-05 想象技术有限公司 Gpu虚拟化
CN107729049A (zh) * 2017-09-13 2018-02-23 深信服科技股份有限公司 指令转换方法、设备及计算机可读存储介质
CN112789830A (zh) * 2018-10-01 2021-05-11 微软技术许可有限责任公司 用于信道响应的多模式信道不可知渲染的机器人平台
US11722439B2 (en) 2018-10-01 2023-08-08 Microsoft Technology Licensing, Llc Bot platform for mutimodal channel agnostic rendering of channel response
CN111274044A (zh) * 2020-01-13 2020-06-12 奇安信科技集团股份有限公司 Gpu虚拟化资源限制处理方法及装置
CN111274044B (zh) * 2020-01-13 2023-08-15 奇安信科技集团股份有限公司 Gpu虚拟化资源限制处理方法及装置
CN113645484A (zh) * 2021-10-16 2021-11-12 成都中科合迅科技有限公司 基于图形处理器的数据可视化加速渲染方法
CN117274033A (zh) * 2023-11-20 2023-12-22 芯瞳半导体技术(山东)有限公司 图形驱动调试方法、装置、存储介质及电子设备
CN117274033B (zh) * 2023-11-20 2024-03-26 芯瞳半导体技术(山东)有限公司 图形驱动调试方法、装置、存储介质及电子设备

Also Published As

Publication number Publication date
CN102495769B (zh) 2015-08-19
US8970603B2 (en) 2015-03-03
US20120081355A1 (en) 2012-04-05

Similar Documents

Publication Publication Date Title
CN102495769B (zh) 动态虚拟设备故障恢复
US9069622B2 (en) Techniques for load balancing GPU enabled virtual machines
CN102567052B (zh) 启用配置有图形处理器的服务器的远程管理的技术
US9110702B2 (en) Virtual machine migration techniques
US20120054740A1 (en) Techniques For Selectively Enabling Or Disabling Virtual Devices In Virtual Environments
CN102207886B (zh) 虚拟机快速仿真辅助
US8671405B2 (en) Virtual machine crash file generation techniques
US20190227728A1 (en) Virtual machine trigger
US8872835B2 (en) Prevention of DoS attack by a rogue graphics application
CN102239483A (zh) 命令遥控
US9104452B2 (en) Hybrid remote sessions
WO2022041507A1 (zh) 3d渲染方法及系统
US9959842B2 (en) On-screen display at thin client
US20230359533A1 (en) User Triggered Virtual Machine Cloning for Recovery/Availability/Scaling
US10394512B2 (en) Multi-monitor alignment on a thin client
CN113656141A (zh) 一种输入/输出i/o请求处理方法和主机设备
Lee VAR: Vulkan API Remoting for GPU-accelerated Rendering and Computation in Virtual Machines

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150723

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

Effective date of registration: 20150723

Address after: Washington State

Applicant after: Micro soft technique license Co., Ltd

Address before: Washington State

Applicant before: Microsoft Corp.

C14 Grant of patent or utility model
GR01 Patent grant