CN115526770A - 用于虚拟化图形处理的缩放 - Google Patents

用于虚拟化图形处理的缩放 Download PDF

Info

Publication number
CN115526770A
CN115526770A CN202211224622.3A CN202211224622A CN115526770A CN 115526770 A CN115526770 A CN 115526770A CN 202211224622 A CN202211224622 A CN 202211224622A CN 115526770 A CN115526770 A CN 115526770A
Authority
CN
China
Prior art keywords
virtual
gpu
compute instance
instance
physical
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202211224622.3A
Other languages
English (en)
Inventor
N·P·威尔特
A·谭布
N·L·伯恩斯
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.)
Amazon Technologies Inc
Original Assignee
Amazon Technologies Inc
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
Priority claimed from US14/938,461 external-priority patent/US9886737B2/en
Priority claimed from US14/938,656 external-priority patent/US9904975B2/en
Priority claimed from US14/938,457 external-priority patent/US9904973B2/en
Priority claimed from US14/938,654 external-priority patent/US9904974B2/en
Application filed by Amazon Technologies Inc filed Critical Amazon Technologies Inc
Publication of CN115526770A publication Critical patent/CN115526770A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/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/4557Distribution of virtual machine instances; Migration and load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances

Landscapes

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

Abstract

本公开涉及用于虚拟化图形处理的缩放。公开了用于缩放虚拟化图形处理的方法、系统和计算机可读介质。第一虚拟GPU附连到提供商网络的虚拟计算实例。所述提供商网络包括多个计算装置,所述多个计算装置被配置来利用多租户实施多个虚拟计算实例。所述第一虚拟GPU至少部分基于所述虚拟计算实例的GPU需求的变化而被第二虚拟GPU置换。所述第一和第二虚拟GPU使用所述虚拟计算实例可经由网络访问的物理GPU资源来实施。所述虚拟计算实例的处理从所述第一虚拟GPU迁移到所述第二虚拟GPU。在所述虚拟计算实例上使用所述第二虚拟GPU来执行应用程序。

Description

用于虚拟化图形处理的缩放
本申请是申请号为201680065936.X、申请日为2016年11月11日、发明名称为“用于虚拟化图形处理的扩展”的发明专利申请的分案申请。
技术领域
本发明涉及用于虚拟化图形处理的缩放。
背景技术
许多公司和其他组织运营计算机网络,所述计算机网络使众多计算系统互连以支持它们的操作,诸如其中计算系统位于同一位置(例如,作为本地网络的一部分)或者替代地位于多个不同地理位置(例如,经由一个或多个专用或公用中间网络加以连接)。例如,容纳大量互连计算系统的分布式系统已变得非常普遍。这类分布式系统可以向与客户端交互的服务器提供后端服务。这类分布式系统还可以包括数据中心,所述数据中心由实体操作来向顾客提供计算资源。一些数据中心运营商针对各个顾客所拥有的硬件提供网络接入、电力和安全安装设施,而其他数据中心运营商提供“完整服务”设施,所述完整服务设施还包括可供其顾客使用的硬件资源。由于分布式系统的规模和范围已增大,提供、掌管和管理所述资源的任务已变得越来越复杂。
在针对具有多样需求的许多客户管理大规模计算资源的方面,商品硬件的虚拟化技术的出现提供了多种益处。例如,虚拟化技术可以允许通过向每个用户提供一个或多个虚拟机来在多个用户之间共享单一物理计算装置,所述一个或多个虚拟机由单一物理计算装置托管。每个这种虚拟机可以是充当不同逻辑计算系统的软件仿真,所述逻辑计算系统向用户提供他们是给定硬件计算资源的唯一操作者和管理员的错觉,同时还在各个虚拟机之间提供应用程序隔离和安全功能。利用虚拟化,单一物理计算装置可以动态的方式创建、维持或删除虚拟机。
发明内容
本公开提供了一种计算机实现的方法,包括:将虚拟图形处理单元(GPU)附连到在计算实例中执行的容器,其中所述计算实例是使用中央处理单元(CPU)资源和存储器资源实现的,并且其中所述虚拟GPU是使用所述计算实例通过网络可访问的物理GPU实现的;以及执行所述容器中的工作负荷,其中所述工作负荷的执行生成一个或多个GPU指令,所述一个或多个GPU指令被从所述计算实例通过网络发送到所述虚拟GPU并使用所述虚拟GPU执行。
附图说明
图1示出根据一个实施方案的用于在提供商网络中虚拟化图形处理的示例系统环境。
图2A示出根据一个实施方案的用于在提供商网络中虚拟化图形处理的示例系统环境的另外的方面,包括对具有附连的虚拟GPU的虚拟计算实例的实例类型和虚拟GPU级进行选择。
图2B示出根据一个实施方案的用于在提供商网络中虚拟化图形处理的示例系统环境的另外的方面,包括供应具有附连的虚拟GPU的虚拟计算实例。
图3示出根据一个实施方案使用具有虚拟GPU的虚拟计算实例来生成虚拟GPU输出以显示在客户端装置上。
图4示出根据一个实施方案的用于实施虚拟化图形处理的示例硬件架构。
图5是示出根据一个实施方案的用于在提供商网络中虚拟化图形处理的方法的流程图。
图6A示出根据一个实施方案的用于专用虚拟化图形处理的示例系统环境,包括(至少部分)基于应用程序的需求而选择虚拟GPU。
图6B示出根据一个实施方案的用于专用虚拟化图形处理的示例系统环境的另外的方面,包括供应附连了专用虚拟GPU的虚拟计算实例。
图7A示出根据一个实施方案的用于专用虚拟化图形处理的示例系统环境的另外的方面,包括(至少部分)基于多个应用程序的需求而选择多个虚拟GPU。
图7B示出根据一个实施方案的用于专用虚拟化图形处理的示例系统环境的另外的方面,包括供应附连了多个专用虚拟GPU的虚拟计算实例。
图7C示出根据一个实施方案的用于专用虚拟化图形处理的示例系统环境的另外的方面,包括供应具有专用于单一应用程序的多个专用虚拟GPU的虚拟计算实例。
图8是示出根据一个实施方案的提供专用虚拟化图形处理的方法的流程图。
图9A示出根据一个实施方案的用于虚拟化图形处理的本地到远程迁移的示例系统环境,包括供应具有本地GPU的虚拟计算实例。
图9B示出根据一个实施方案的用于虚拟化图形处理的本地到远程迁移的示例系统环境的另外的方面,包括选择虚拟GPU并将其附连到虚拟计算实例。
图10是示出根据一个实施方案的用于将图形处理从本地GPU本地到远程地迁移到虚拟GPU的方法的流程图。
图11A示出根据一个实施方案的用于扩展虚拟化图形处理的示例系统环境,包括附连了第一虚拟GPU的虚拟计算实例。
图11B示出根据一个实施方案的用于扩展虚拟化图形处理的示例系统环境的另外的方面,包括针对虚拟计算实例用第二虚拟GPU置换第一虚拟GPU。
图11C示出根据一个实施方案的用于扩展虚拟化图形处理的示例系统环境的另外的方面,包括针对虚拟计算实例将第二虚拟GPU添加到第一虚拟GPU。
图12A示出根据一个实施方案的用于扩展虚拟化图形处理的示例系统环境,包括附连了两个虚拟GPU的虚拟计算实例。
图12B示出根据一个实施方案的用于扩展虚拟化图形处理的示例系统环境的另外的方面,包括针对虚拟计算实例用单一虚拟GPU置换虚拟GPU。
图13是示出根据一个实施方案的用于扩展虚拟化图形处理的方法的流程图。
图14示出根据一个实施方案的用于虚拟化图形处理的布置优化的示例系统环境,包括提供商网络中的多个实例位置和多个GPU位置。
图15示出根据一个实施方案的用于虚拟化图形处理的布置优化的示例系统环境的另外的方面,包括在提供商网络中设置有选定实例位置和选定GPU位置的资源。
图16A示出根据一个实施方案的提供商网络中的不同栈中的多个实例位置和多个GPU位置的示例。
图16B示出根据一个实施方案的提供商网络中的不同数据中心中的多个实例位置和多个GPU位置的示例。
图17A是根据一个实施方案的用于虚拟化图形处理的布置优化的方法的流程图,包括对用来实施虚拟GPU的物理GPU进行位置选择。
图17B是根据一个实施方案的用于虚拟化图形处理的布置优化的方法的流程图,包括对用来实施虚拟计算实例的物理计算实例进行位置选择。
图17C是根据一个实施方案的用于虚拟化图形处理的布置优化的方法的流程图,包括对用来实施虚拟GPU的物理GPU进行位置选择并且对用来实施虚拟计算实例的物理计算实例进行位置选择。
图18示出可以用在一些实施方案中的示例计算装置。
虽然在本文中通过对若干实施方案和示意性附图举例的方式描述了实施方案,但本领域技术人员将认识到,实施方案并不限于所描述的实施方案或附图。应理解,附图和对其进行的详细描述并非旨在将实施方案限于所公开的特定形式,而相反,其意图在于涵盖落入由所附权利要求书限定的精神和范围内的所有修改、等效物和替代方案。本文中使用的标题仅用于组织目的,并且并不打算用于限制本说明书或权利要求书的范围。如贯穿本申请所使用,词语“可以”是在许可的意义上(即,意指“具有某种可能”)而非强制的意义上(即,意指“必须”)使用。类似地,词语“包括(include/including/includes)”意指“包括但不限于”。
具体实施方式
描述了用于扩展虚拟化图形处理的方法、系统和计算机可读介质的各种实施方案。使用本文描述的技术,可以供应虚拟计算实例,并且第一组一个或多个GPU可以附连到实例来提供图形处理。第一组一个或多个虚拟GPU可以提供特定的图形处理水平。在确定实例的GPU需求改变之后,第二组一个或多个虚拟GPU可以被选择和附连到虚拟计算实例以用另一水平的图形处理置换第一虚拟GPU的图形处理。可以基于GPU需求的变化而选择第二虚拟GPU。取决于GPU需求的变化,这种扩展操作可以将虚拟计算实例的图形处理从能力较弱或较低的虚拟GPU级迁移到能力较强或较高的虚拟GPU级或者从能力较强或较高的虚拟GPU级迁移到能力较弱或较低的虚拟GPU级。在一个实施方案中,可以(至少部分)基于表示GPU需求的变化的用户输入而执行图形处理的迁移。在一个实施方案中,可以(至少部分)基于对图形工作负荷的增加的检测而执行图形处理的迁移。在使用第一虚拟GPU以不需要改变或重启应用程序的方式执行所述应用程序时,可以执行实时迁移。还可以执行虚拟计算实例到另一物理计算实例的迁移,例如以减少与虚拟化图形处理相关联的网络延迟。
描述了用于虚拟化图形处理的布置优化的方法、系统和计算机可读介质的各种实施方案。使用本文描述的技术,资源布置的优化可以改进GPU虚拟化的(例如,与资源使用或成本相关的)一个或多个度量。物理计算实例可以用于实施虚拟计算实例,并且物理GPU可以用于实施附连到虚拟计算实例的虚拟GPU。使用布置优化的技术,可以基于任何合适的布置标准而在提供商网络中(从一组可用的物理计算实例和/或物理GPU当中)选择虚拟计算实例和/或虚拟GPU的位置。一个或多个布置标准可以是(至少部分)基于与最大化性能、最小化成本、最小化能源使用相关联的度量和/或任何其他合适的度量。布置标准还可以与网络局域性相关联。例如,为了最小化网络延迟和/或网络使用,虚拟计算实例和所附连的虚拟GPU可以布置在同一个数据中心中的同一个栈中,使得底层物理计算实例与物理GPU之间的网络通信可能并不延伸超出架顶式交换机或栈中的其他联网部件。如果同一个栈内的位置不可用,则可以为虚拟计算实例和所附连的虚拟GPU选择同一个数据中心内的邻近位置。可以这种方式不仅对新供应的资源而且对虚拟计算实例和/或所附连的虚拟GPU在它们已经开始使用之后的迁移优化布置。当对如上所述的GPU虚拟化执行扩展时,任何虚拟GPU的位置可以基于布置标准来选择,和/或虚拟计算实例的位置可以基于布置标准来移动。
描述了用于专用虚拟化图形处理的方法、系统和计算机可读介质的各种实施方案。使用本文描述的技术,可以供应虚拟计算实例。虚拟计算实例可以被配置来执行应用程序。应用程序可以与图形需求相关联。例如,应用程序清单可以指定用于所述应用程序的推荐的图形处理单元(GPU)级和/或视频存储器的大小,或者对应用程序的执行的分析可以确定所述应用程序的图形需求。可以(至少部分)基于应用程序的图形需求而选择虚拟GPU用于虚拟计算实例。可以从具有不同图形处理能力的一组虚拟GPU(例如,从属于虚拟GPU级)选择虚拟GPU。虚拟GPU可以使用经由网络连接到虚拟计算实例的物理GPU来实施。应用程序可以使用虚拟GPU在虚拟计算实例上执行。虚拟计算实例上的其他应用程序可以使用不同的专用虚拟GPU,并且专用虚拟GPU在图形处理能力方面可以基于应用程序的不同需求而变化。
描述了用于虚拟化图形处理的本地到远程迁移的方法、系统和计算机可读介质的各种实施方案。使用本文描述的技术,虚拟计算实例可以设置有本地图形处理单元(GPU)以提供图形处理。本地GPU可以使用所附连的硬件或使用仿真来实施。由于本地GPU只可以提供低水平的图形处理能力,因此虚拟GPU可以附连到虚拟计算实例来提供相对于本地GPU改进的图形处理。可以从具有不同图形处理能力的一组虚拟GPU(例如,从属于虚拟GPU级)选择虚拟GPU。虚拟GPU可以使用经由网络连接到虚拟计算实例的物理GPU来实施。虚拟计算实例的图形处理可以从本地GPU迁移到虚拟GPU。在一个实施方案中,虚拟计算实例上的特定应用程序的图形处理可以在应用程序的执行期间从本地GPU迁移到虚拟GPU。在一个实施方案中,可以(至少部分)基于对图形工作负荷的增加的检测而执行图形处理的迁移。
提供商网络中的虚拟化图形处理
图1示出根据一个实施方案的用于在提供商网络中虚拟化图形处理的示例系统环境。提供商网络100的客户可以使用计算装置,诸如客户端装置180A-180N来访问弹性图形服务110和由提供商网络提供的其他资源。客户端装置180A-180N可以经由一个或多个网络190耦接到提供商网络100。提供商网络100可以提供计算虚拟化140,使得多个虚拟计算实例141A-141Z可以使用多个物理计算实例142A-142N来实施。虚拟计算实例141A-141Z在本文中还可以被称为虚拟机(VM)。类似地,提供商网络100可以提供GPU虚拟化150,使得多个虚拟GPU 151A-151Z可以使用多个物理GPU 152A-152N来实施。参考图5论述了用于使用物理GPU来实施虚拟GPU的示例硬件架构。底层物理计算实例142A-142N可以是多样化的,并且底层物理GPU 152A-152N也可以是多样化的。在一个实施方案中,计算虚拟化140可以使用多租户技术来供应在数量上超过物理计算实例142A-142N的虚拟计算实例141A-141Z。在一个实施方案中,GPU虚拟化150可以使用多租户技术来供应在数量上超过物理GPU 152A-152N的虚拟GPU 151A-151Z。
弹性图形服务110可以向客户端提供对具有附连的虚拟化GPU的虚拟化计算实例的选择和供应。因此,弹性图形服务110可以包括实例类型选择功能120和实例供应功能130。在一个实施方案中,提供商网络100可以提供具有不同计算和/或存储器资源的虚拟计算实例141A-141Z。在一个实施方案中,虚拟计算实例141A-141Z中的每一个可以对应于若干实例类型中的一个。实例类型的特征可以在于其计算资源(例如,中央处理单元[CPU]或CPU核心的数量、类型和配置)、存储器资源(例如,本地存储器的容量、类型和配置)、存储资源(例如,本地可访问的存储设备的容量、类型和配置)、网络资源(例如,其网络接口的特征和/或网络能力)和/或其他合适的描述性特征。使用实例类型选择功能120,可以例如(至少部分)基于来自客户端的输入而为客户端选择实例类型。例如,客户端可以从一组预定的实例类型中选择实例类型。作为另一个示例,客户端可以指定实例类型的所需资源,并且实例类型选择功能120可以基于这种指定而选择实例类型。
在一个实施方案中,提供商网络100可以提供具有不同图形处理能力的虚拟GPU151A-151Z。在一个实施方案中,虚拟GPU 151A-151Z中的每一个可以对应于若干虚拟GPU级中的一个。虚拟GPU级的特征可以在于其用于图形处理的计算资源、用于图形处理的存储器资源和/或其他合适的描述性特征。在一个实施方案中,虚拟GPU级可以表示物理GPU的图形处理能力的子部分,诸如整个GPU、半个GPU、四分之一GPU等等。使用实例类型选择功能120,可以例如(至少部分)基于来自客户端的输入而为客户端选择虚拟GPU级。例如,客户端可以从一组预定的虚拟GPU级中选择虚拟GPU级。作为另一个示例,客户端可以指定虚拟GPU级的所需资源,并且实例类型选择功能120可以基于这种指定而选择虚拟GPU级。
因此,使用实例类型选择功能120,客户端(例如,使用客户端装置180A-180N)可以指定对虚拟计算实例和虚拟GPU的需求。实例供应功能130可以基于所指定的需求(包括任何指定的实例类型和虚拟GPU级)而供应具有附连的虚拟GPU的虚拟计算实例。如本文所使用,供应虚拟计算实例通常包括为客户保留底层物理计算实例(例如,来自可用的物理计算实例池和其他资源)的资源(例如,计算和存储器资源);安装或启动所需软件(例如,操作系统);以及使得虚拟计算实例可供客户用来执行由所述客户指定的任务。对于特定客户端,虚拟计算实例可以设置有由客户端选择或针对所述客户端选择的实例类型,并且虚拟计算实例可以设置有由客户端选择或针对所述客户端选择的GPU级的附连的虚拟GPU。在一个实施方案中,基本上任何虚拟GPU级的虚拟GPU可以附连到基本上任何实例类型的虚拟计算实例。
提供商网络100可以由诸如公司或公共部门组织机构的实体建立用来将可经由互联网和/或其他网络访问的一种或多种服务(诸如各种类型的基于云的计算或存储)提供到客户端装置180A-180N。提供商网络100可以包括托管实施和分布由提供商网络100提供的基础设施和服务所需的各种资源池的众多数据中心,诸如物理和/或虚拟化计算机服务器、存储装置、联网设备以及(例如,使用以下相对于图18描述的计算系统3000实施的)类似物的集合。在一些实施方案中,提供商网络100可以提供计算资源,诸如计算虚拟化服务140和GPU虚拟化服务150;存储服务,诸如基于块的存储服务、基于键值的数据存储或各种类型的数据库系统;和/或任何其他类型的基于网络的服务。客户端装置180A-180N可以经由网络190访问由提供商网络100提供的这些不同的服务。类似地,基于网络的服务自身可以彼此通信和/或利用彼此来提供不同服务。例如,以称为“实例”的单元提供到客户端装置180A-180N的计算资源,诸如虚拟或物理计算实例或存储实例可以利用特定数据卷,从而为计算实例提供虚拟块存储。提供商网络100可以实施或提供多租户环境,使得多个客户端(例如,使用客户端装置180A-180N)可以基本上同时的方式访问或使用特定资源。
如上文所提及,计算虚拟化服务140可以向客户端装置180A-180N提供各种虚拟计算实例141A-141Z。虚拟计算实例可以例如包括具有指定计算容量(所述计算容量可以通过指示CPU的类型和数目、主存储器大小等等进行指定)和指定软件栈(例如,特定版本的操作系统,其进而可以在管理程序之上运行)的一个或多个服务器。许多不同类型的计算装置可以在不同的实施方案中单独或组合使用来实施计算虚拟化服务140的计算实例,包括通用或专用计算机服务器、存储装置、网络装置等等。在一些实施方案中,客户端装置180A-180N或任何其他用户可以被配置(和/或授权)来将网络流量引导到虚拟计算实例。在各种实施方案中,虚拟计算实例141A-141Z可以附连或映射到由存储装置提供的一个或多个数据卷以便于获得永久存储来执行各种操作。使用本文描述的技术,虚拟GPU 151A-151Z可以附连到虚拟计算实例141A-141Z以为虚拟计算实例提供图形处理。
虚拟计算实例141A-141Z可以操作或实施各种不同的平台,诸如应用服务器实例、JavaTM虚拟机(JVM)或其他虚拟机、通用或专用操作系统、支持各种解释或编译编程语言,诸如Ruby、Perl、Python、C、C++等等的平台、或适合于执行客户端应用程序,而例如不需要客户端装置180A-180N访问实例的高性能计算平台。在一些实施方案中,虚拟计算实例141A-141Z可以基于期望的正常运行时间比率而具有不同的实例类型或配置。特定虚拟计算实例的正常运行时间比率可以被定义为实例被激活的时间量与实例被保留的总时间量之比。在一些实现方式中,正常运行时间比率还可以被称为利用率。如果客户期望在保留实例的时间的相对较小部分(例如,长达一年保留的30%至35%)内使用计算实例,则客户可以决定将所述实例保留为低正常运行时间比率实例,并且客户可以根据相关联的定价策略来支付经过打折的小时使用费用。如果客户期望具有需要实例达到最大时间的稳态工作负荷,则客户可以保留高正常运行时间比率实例并且潜在地支付甚至更低的小时使用费用,但是在一些实施方案中,可以根据定价策略在整个保留持续时间内收取小时费用,而不管实际的使用小时数如何。在一些实施方案中也可以支持具有对应定价策略的中等正常运行时间比率实例的选项,其中前期成本和每小时成本落在对应的高正常运行时间比率成本与低正常运行时间比率成本之间。
虚拟计算实例配置还可以包括具有一般或特定目的的虚拟计算实例,诸如用于计算密集型应用(例如,高流量web应用、广告投放、批处理、视频编码、分布式分析、高能物理、基因组分析和计算流体动力学)的计算工作负荷、图形密集型工作负荷(例如,游戏流、3D应用流、服务器侧图形工作负荷、渲染、财务建模和工程设计)、存储器密集型工作负荷(例如,高性能数据库、分布式存储器高速缓存、存储器中分析、基因组组装和分析)以及存储优化的工作负荷(例如,数据仓储和集群文件系统)。在一些实施方案中,虚拟计算实例的特定实例类型可以与虚拟GPU的默认级别相关联。例如,一些实例类型可以在不存在虚拟GPU的情况下配置为默认配置,而指定用于图形密集型工作负荷的其他实例类型可以在特定虚拟GPU级下指定为默认配置。虚拟计算实例的配置还可以包括其在特定数据中心或可用区中的位置、地理位置以及(在保留型计算实例的情况下)保留期限长度。
客户端装置180A-180N可以表示或对应于提供商网络100的各种客户或用户,诸如试图使用由提供商网络提供的服务的顾客。客户、用户或顾客可以表示个人、商家、其他组织和/或其他实体。客户端装置180A-180N可以分布在任何合适的位置或区域上。客户端装置180A-180N中的每一个可以使用一个或多个计算装置来实施,所述计算装置中的任一个可以通过图18所示的示例计算装置3000来实施。
客户端装置180A-180N可以涵盖可配置来向提供商网络100提交请求的任何类型的客户端。例如,给定客户端装置可以包括适当版本的web浏览器,或者所述给定客户端装置可以包括配置来作为由web浏览器提供的执行环境的扩展部分执行或在其内执行的插接式模块或其他类型的代码模块。可替代地,客户端装置可以涵盖应用,诸如数据库应用(或其用户接口)、媒体应用、办公室应用或可以利用虚拟计算实例、存储卷或提供商网络100中的其他基于网络的服务来执行各种操作的任何其他应用。在一些实施方案中,这种应用可以包括足够的协议支持(例如,适当版本的超文本传输协议[HTTP])以用于生成和处理基于网络的服务请求,而不必实施用于所有类型的基于网络的数据的完整浏览器支持。在一些实施方案中,客户端装置180A-180N可以被配置来根据表述性状态转移(REST)类型的基于网络的服务架构、基于文档或基于消息的基于网络的服务架构、或另一个合适的基于网络的服务架构来生成基于网络的服务请求。在一些实施方案中,客户端装置180A-180N(例如,计算客户端)可以被配置来以对于客户端装置上实施的应用而言透明的方式提供对虚拟计算实例的访问,从而利用由虚拟计算实例提供的计算资源。在至少一些实施方案中,客户端装置180A-180N可以针对客户端装置处实施的文件系统供应、安装和配置存储服务处实施的存储卷。
客户端装置180A-180N可以经由外部网络190向提供商网络100传送基于网络的服务请求。在各种实施方案中,外部网络190可以涵盖对于在客户端装置180A-180N与提供商网络100之间建立基于网络的通信而言必要的联网的硬件和协议的任何合适的组合。例如,网络190通常可以涵盖共同实施互联网的各种电信网络和服务提供商。网络190还可以包括专用网络,诸如局域网(LAN)或广域网(WAN)以及公用或专用无线网络。例如,给定客户端装置和提供商网络100两者可以相应地供应在具有其自身内部网络的企业内。在这种实施方案中,网络190可以包括对于在给定客户端装置与互联网之间以及在互联网与提供商网络100之间建立联网链路而言必要的硬件(例如,调制解调器、路由器、交换机、负载均衡器、代理服务器等)以及软件(例如,协议栈、会计软件、防火墙/安全软件等)。应注意到,在一些实施方案中,客户端装置180A-180N可以使用专用网络而非公用互联网来与提供商网络100进行通信。
提供商网络100可以包括多个计算装置,所述计算装置中的任一个可以通过图18所示的示例计算装置3000来实施。在各种实施方案中,提供商网络100的所描述的功能的部分可以由同一个计算装置或由任何合适数量的不同计算装置提供。如果提供商网络100的部件中的任一个使用不同计算装置来实施,则所述部件及其相应的计算装置可以例如经由网络来通信地耦接。所示部件(诸如弹性图形服务110及其组成功能120和130)中的每一个可以表示可用来执行其相应的功能的软件和硬件的任何组合。
可以预期,提供商网络100可以包括未示出的其他部件、比所示更少的部件、或所示部件的不同组合、配置或数量。例如,虽然物理计算实例142A至142N被示出用于举例和说明的目的,但是可以预期,可以使用不同数量和配置的物理计算实例。类似地,虽然物理GPU152A至152N被示出用于举例和说明的目的,但是可以预期,可以使用不同数量和配置的物理GPU。另外,虽然三个客户端装置180A、180B和180N被示出用于举例和说明的目的,但是可以预期,可以使用不同数量和配置的客户端装置。本文描述用于提供虚拟化图形处理的功能的各方面可以至少部分由提供商网络100之外的部件执行。
图2A示出根据一个实施方案的用于在提供商网络中虚拟化图形处理的示例系统环境的另外的方面,包括对具有附连的虚拟GPU的虚拟计算实例的实例类型和虚拟GPU级进行选择。如上所述,提供商网络100可以向客户端装置180A提供用于虚拟计算实例的多个实例类型121。如出于说明和举例的目的所示,可以提供从类型“B”141B到类型“N”141N的虚拟计算实例。然而,可以预期,可以由提供商网络100向客户端提供任何合适数量和配置的虚拟计算实例类型。实例类型的特征可以在于其计算资源(例如,中央处理单元[CPU]或CPU核心的数量、类型和配置)、存储器资源(例如,本地存储器的容量、类型和配置)、存储资源(例如,本地可访问的存储设备的容量、类型和配置)、网络资源(例如,其网络接口的特征和/或网络能力)和/或其他合适的描述性特征。使用实例类型选择功能120,客户端装置180A可以提供对特定实例类型的指示、指定或其他选择201。例如,客户端可以使用输入201从一组预定的实例类型中选择实例类型“B”。作为另一个示例,客户端可以使用输入201来指定实例类型的所需资源,并且实例类型选择功能120可以基于这种指定而选择实例类型“B”。因此,虚拟计算实例类型可以由客户端或代表客户端例如使用实例类型选择功能120来选择。
如上所述,提供商网络100可以向客户端装置180A提供虚拟GPU的多个虚拟GPU级122。如出于说明和举例的目的所示,可以提供从级别“B”151B到级别“N”151N的虚拟GPU。然而,可以预期,可以由提供商网络100向客户端提供任何合适数量和配置的虚拟GPU级。虚拟GPU级的特征可以在于其用于图形处理的计算资源、用于图形处理的存储器资源和/或其他合适的描述性特征。在一个实施方案中,虚拟GPU级可以表示物理GPU的图形处理能力的子部分,诸如整个GPU、半个GPU、四分之一GPU等等。使用实例类型选择功能120,客户端装置180A可以提供对特定虚拟GPU级的指示、指定或其他选择202。例如,客户端可以使用输入202从一组预定的虚拟GPU级中选择虚拟GPU级“B”。作为另一个示例,客户端可以使用输入202指定虚拟GPU级的所需资源,并且实例类型选择功能120可以基于这种指定而选择虚拟GPU级“B”。因此,虚拟GPU级可以由客户端或代表客户端例如使用实例类型选择功能120来选择。
图2B示出根据一个实施方案的用于在提供商网络中虚拟化图形处理的示例系统环境的另外的方面,包括供应具有附连的虚拟GPU的虚拟计算实例。实例供应功能130可以基于指定的实例类型“B”和指定的虚拟GPU级“B”而供应具有附连的虚拟GPU 151B的虚拟计算实例141B。所供应的虚拟计算实例141B可以使用合适的物理资源,诸如物理计算实例142B经由计算虚拟化功能140来实施,并且所供应的虚拟GPU 151B可以使用合适的物理资源,诸如物理GPU 152B经由GPU虚拟化功能150来实施。如本文所使用,供应虚拟计算实例通常包括为客户保留底层物理计算实例(例如,来自可用的物理计算实例池和其他资源)的资源(例如,计算和存储器资源);安装或启动所需软件(例如,操作系统);以及使得虚拟计算实例可供客户用来执行由所述客户指定的任务。在一个实施方案中,基本上任何虚拟GPU级的虚拟GPU可以附连到基本上任何实例类型的虚拟计算实例。为了实施具有附连的虚拟GPU151B的虚拟计算实例141B,物理计算实例142B可以例如经由网络与物理GPU 152B进行通信。物理GPU 152B可以位于与物理计算实例142B不同的计算装置中。虽然它们可以使用单独的硬件来实施,但是据说虚拟GPU 151B可以附连到虚拟计算实例141B,或者据说虚拟计算实例可以包括虚拟GPU。虚拟GPU 151B可以安装在某一装置上,所述装置相对于物理GPU152B可以驻留在各种位置,例如,驻留在同一个栈上、同一个交换机上、同一个房间内和/或同一个网络上的其他合适的位置。可以对客户端装置180A隐藏物理GPU 152B的供应商。
图3示出根据一个实施方案使用具有虚拟GPU的虚拟计算实例来生成虚拟GPU输出以显示在客户端装置上。在对虚拟计算实例141B供应所附连的虚拟GPU 151B之后,客户端装置180A可以使用所供应的实例和虚拟GPU来例如基于来自客户端装置的输入而执行任何合适的任务。虚拟计算实例141B可以执行特定应用程序320。应用程序320可以由客户端选择或提供。虚拟计算实例141B还可以被配置有对应用程序321提供支持的特定操作系统322。另外,虚拟计算实例141B可以被配置有特定图形驱动器321。图形驱动器321可以与虚拟GPU 151B交互以为应用程序320提供图形处理,包括加速二维图形处理和/或加速三维图形处理。在一个实施方案中,图形驱动器321可以实施图形应用程序编程接口(API),诸如Direct3D或OpenGL。图形驱动器321可以表示在用户模式和/或内核模式下运行的部件。其他部件(未示出),诸如图形运行时间也可以用于在虚拟计算实例141B上提供加速图形处理。
客户端装置180A可以经由代理310与虚拟计算实例141B进行通信。可以经由代理310发送各种其他通信,包括例如将虚拟GPU输出302从虚拟GPU 151B发送到客户端装置180A。代理310的使用可以对客户端装置180A隐藏虚拟计算实例的地址和任何相关联的资源(包括实施虚拟GPU 151B的计算装置)。代理310和虚拟计算实例141B可以使用合适的远程协议来进行通信。在各种实施方案中,代理310可以为或不为提供商网络100的一部分。客户端装置180A可以向虚拟计算实例141B上运行的应用程序320提供应用程序输入301。例如,应用程序输入301可以包括由应用程序320进行操作所依据的数据和/或用来控制应用程序的执行的指令。
使用由虚拟GPU 151B提供的图形处理,应用程序的执行可以生成虚拟GPU输出302。虚拟GPU输出302可以例如从虚拟GPU 151B或虚拟计算实例141B提供到客户端装置180A。在一个实施方案中,虚拟GPU输出302可以从虚拟GPU 151B(例如,从包括虚拟GPU的计算装置)发送到客户端装置180A,同时绕过虚拟计算实例141B的其余部分(例如,底层物理计算实例142B)。虚拟GPU输出302还可以经由代理310发送到客户端装置180A。代理310和虚拟GPU 151B可以使用合适的远程协议来进行通信。在一个实施方案中,虚拟GPU输出302可以返回到虚拟计算实例141B,并且虚拟计算实例可以将虚拟GPU输出发送到客户端装置180A。在一个实施方案中,客户端装置180A可以将虚拟GPU输出302转发到另一个部件。
在一个实施方案中,与客户端装置180A相关联的显示装置181可以呈现对虚拟GPU输出302的显示330。在一个实施方案中,虚拟GPU输出302可以包括像素数据、图像数据、视频数据或其他图形数据。在一个实施方案中,虚拟GPU输出302可以驱动显示装置181上的全屏显示。虚拟GPU输出302的部分可以随时间而流式传输到客户端装置180A。在一个实施方案中,虚拟GPU输出302可以与一个或多个其他图形数据源合成来产生显示330。在一个实施方案中,虚拟GPU 151B可以用于通用计算(例如,GPGPU计算),并且虚拟GPU输出302可能不包括像素数据或其他图形数据。在各种实施方案中,客户端装置180A可以在显示输出之前对虚拟GPU输出302的全部或部分进行处理或变换。例如,CPU、GPU或客户端装置180A上的协同处理器可以对虚拟GPU输出302的部分进行变换并且将结果显示在显示装置181上。
在各种实施方案中,任何合适的技术可以用于将图形处理从虚拟计算实例卸载到物理GPU。在一个实施方案中,API切片可以拦截对图形API的调用并且经由网络将调用编排到包括物理GPU的外部计算装置。在一个实施方案中,驱动器切片可以将专有驱动器装饰到虚拟计算实例的表层,拦截调用并且经由网络将调用编排到包括物理GPU的外部计算装置。在一个实施方案中,硬件切片可以将硬件接口装饰到虚拟计算实例的表层并且对所述实例的尝试进行编排以与物理GPU交互。
图4示出根据一个实施方案的用于实施虚拟化图形处理的示例硬件架构。在一个实施方案中,虚拟计算实例141B可以使用物理计算实例142B来实施,并且附连到所述实例141B的虚拟GPU 151B可以使用单独且不同的称为图形服务器420的计算装置来实施。虚拟计算实例141B可以使用虚拟接口400来与接口装置410交互。虚拟接口400可以使得虚拟计算实例141B能够发送和接收网络数据。接口装置410可以包括网络接口和定制硬件接口。经由定制硬件接口,接口装置410可以运行程序代码来对GPU接口进行仿真并且将其呈现给虚拟计算实例141B以实施或包括虚拟GPU 151B。在一个实施方案中,接口装置410可以将图形API呈现给虚拟计算实例141B并且接收对图形处理(例如,加速3D图形处理)的API调用。经由网络接口,接口装置410可以通过网络与图形服务器420(以及因此与物理GPU 152B)进行通信。接口装置410可以任何合适的方式,例如作为扩展卡(诸如PCI Express卡)或物理计算实例142B的附连的外围装置来实施。接口装置410可以使用单根I/O虚拟化来向虚拟计算实例141B展示硬件虚拟功能。在一个实施方案中,物理计算实例142B可以实施多个虚拟计算实例,每个虚拟计算实例具有其自身的虚拟接口,并且虚拟计算实例可以使用接口装置410来与一个或多个图形服务器上的对应的虚拟GPU交互。物理计算实例142B可以使用合适的远程协议来与代理310进行通信,例如以将数据发送到客户端装置180A并从其接收数据。
由接口装置410(例如,通过在接口装置上执行定制程序代码)执行的图形卸载可以将图形API命令翻译成传输到图形服务器420的网络流量(封装图形API命令),并且图形服务器420可以代表接口装置执行所述命令。图形服务器420可以包括网络适配器440,所述网络适配器经由网络与接口装置410(例如,与接口装置的网络接口)进行通信。在一个实施方案中,接口装置410可以(使用定制硬件接口)接收对图形API的调用并且生成图形卸载流量以(使用网络接口)发送到网络适配器440。图形服务器410可以实施图形虚拟机430。任何合适的虚拟化技术都可以用于实施图形虚拟机430。在一个实施方案中,图形虚拟机430可以表示具有GPU功能的通用虚拟机并且致力于使用一个或多个虚拟GPU来提供加速图形处理。图形虚拟机430可以使用虚拟接口401耦接到网络适配器440。虚拟接口401可以使得图形虚拟机430能够发送和接收网络数据。图形虚拟机430可以使用物理GPU 152B的图形处理能力来实施虚拟GPU 151B。在一个实施方案中,物理GPU 152B可以直接由图形虚拟机430访问,并且物理GPU 152B可以使用直接存储器访问来写入到由图形虚拟机管理的存储器并且对其进行读取。在一个实施方案中,图形服务器420可以使用一个或多个物理GPU(诸如物理GPU 152B)来实施多个虚拟GPU(诸如虚拟GPU 151B),并且虚拟GPU可以经由网络与一个或多个物理计算实例上的对应的虚拟计算实例交互。图形服务器420可以使用合适的远程协议来与代理310进行通信,例如以将数据发送到客户端装置180A并从其接收数据。例如,图形服务器420可以基于从接口装置410发送的命令而生成虚拟GPU输出。虚拟GPU输出可以经由代理310例如从物理计算实例142B或图形服务器420提供到客户端装置180A。
图5是示出根据一个实施方案的用于在提供商网络中虚拟化图形处理的方法的流程图。如505中所示,可以选择虚拟计算实例。可以(至少部分)基于由虚拟计算实例提供的计算和存储器资源而选择虚拟计算实例。例如,可以(至少部分)基于用户对实例类型的选择而选择虚拟计算实例。如510中所示,可以选择虚拟GPU。可以(至少部分)基于由虚拟GPU提供的图形处理能力而选择虚拟GPU。例如,可以(至少部分)基于用户对虚拟GPU级的选择而选择虚拟GPU。还可以(至少部分)基于管理资源的提供商网络的资源池中的这类资源的可用性而选择虚拟计算实例和虚拟GPU。在一个实施方案中,弹性图形服务可以接收对虚拟计算实例和虚拟GPU的指定和/或选择。
如515中所示,可以供应附连了选定虚拟GPU的选定虚拟计算实例。在一个实施方案中,弹性图形服务可以与提供商网络的一个或多个其他服务或功能,诸如计算虚拟化功能和/或GPU虚拟化功能交互,以供应具有虚拟GPU的实例。虚拟计算实例可以使用物理计算实例的中央处理单元(CPU)资源和存储器资源来实施。虚拟GPU可以使用物理GPU来实施。物理GPU可以附连到与为虚拟计算实例提供CPU资源的计算装置不同的计算装置。物理计算实例可以经由网络访问物理GPU。虚拟GPU据说可以附连到虚拟计算实例,或者虚拟计算实例据说可以包括虚拟GPU。在一个实施方案中,可以在虚拟GPU与一个或多个附加虚拟GPU之间共享物理GPU,并且附加虚拟GPU可以附连到附加虚拟计算实例。在一个实施方案中,虚拟计算实例可以经由接口装置访问虚拟GPU,所述接口装置包括网络接口和定制硬件接口。经由定制硬件接口,接口装置可以对GPU进行仿真并且将其呈现给虚拟计算实例以包括虚拟GPU。经由网络接口,接口装置可以通过网络来与物理GPU进行通信。
如520中所示,应用程序可以使用虚拟GPU在虚拟计算实例上执行。应用程序的执行可以包括虚拟计算实例(例如,底层物理计算实例)和/或虚拟GPU(例如,底层物理GPU)上指令的执行。使用虚拟GPU执行应用程序可以生成虚拟GPU输出,例如,通过在虚拟GPU上执行指令或以其他方式执行任务而产生的输出。如525中所示,可以将虚拟GPU输出提供到客户端装置。虚拟GPU输出可以从虚拟计算实例或虚拟GPU提供到客户端装置。在一个实施方案中,虚拟GPU输出可以显示在与客户端装置相关联的显示装置上。虚拟GPU输出可以包括像素信息或显示在显示装置上的其他图形数据。使用虚拟GPU执行应用程序可以包括使用图形API来进行所述应用程序的图形处理(例如,加速三维图形处理)。
专用虚拟化图形处理
在一些实施方案中,可以基于特殊用途而提供虚拟化图形处理。使用上文针对提供商网络中的虚拟化图形处理论述的技术,可以供应虚拟计算实例。虚拟计算实例可以被配置来执行特定应用程序。如下文将更详细所论述,虚拟GPU可以附连到特别供特定应用程序使用的虚拟计算实例。专用虚拟GPU可以专用于特定应用程序,并且在虚拟计算实例上运行的其他应用程序无法访问这个特定虚拟GPU。在一个实施方案中,虚拟计算实例上的多个应用程序可以具有其自身的专用虚拟GPU。虚拟GPU的能力可以基于相关联的应用程序的特征而变化。在一个实施方案中,虚拟计算实例上的一个或多个其他应用程序例如在其他应用程序的图形需求不足以证明虚拟GPU的成本的合理性的情况下可能无法访问任何虚拟GPU。如本文所使用,术语“应用程序”通常包括在驻留在计算实例上的操作系统之上的被设计来在计算实例上执行时执行一组协调功能的一组程序指令、软件包、或一组互连软件资源。
图6A示出根据一个实施方案的用于专用虚拟化图形处理的示例系统环境,包括(至少部分)基于应用程序的需求而选择虚拟GPU。虚拟计算实例上的应用程序可以与一组需求602相关联。需求602可以包括图形处理需求和/或计算需求并且在本文中又可以被称为图形需求。例如,图形需求602可以指定推荐的图形处理单元(GPU)级、推荐的视频存储器的大小或推荐来运行应用程序的其他GPU特征和/或配置。在一个实施方案中,图形需求602可以使用应用程序清单605来确定,所述应用程序清单指定用于执行应用程序的平台或环境的所需或推荐的特征(例如,计算和存储器需求),包括物理计算实例或虚拟计算实例的特征。应用程序清单605可以由对应的应用程序的开发者确定和提供,所述开发者寻求对所述应用程序在其上执行的平台或环境的类型的一定程度的控制。应用程序可以使用应用程序虚拟化容器来实施,并且可以用所述容器向应用程序提供清单。
在一个实施方案中,对应用程序的程序分析606可以确定应用程序的图形需求602。应用程序分析606可以包括由应用程序要求的图形工作负荷的运行时间分析和/或应用程序的例如使用与当前实例类似的虚拟硬件的执行历史(包括图形工作负荷)的分析。用于应用程序的无论是当前的还是历史的图形工作负荷可以是基于与虚拟GPU或底层物理GPU的使用相关的任何合适的度量,诸如发送到GPU的基元的数量、GPU的所请求的操作的数量、由GPU使用的视频存储器和/或一段时间内的GPU的输出率。
在一个实施方案中,图形需求602可以由客户端180A提供到弹性图形服务110。在一个实施方案中,弹性图形服务110可以直接从应用程序清单605和/或应用程序分析606确定图形需求602。如图6A所示,如果客户端180A还致力于供应虚拟计算实例,则客户端可以提供对虚拟计算实例的所请求的实例类型201的指示连同专用虚拟GPU的图形需求602。然而,客户端还可以对虚拟计算实例提供专用虚拟GPU的图形需求602,所述虚拟计算实例已经被供应并且潜在地用于执行一个或多个应用程序。
如上所述,弹性图形服务110可以向客户端提供对具有包括专用虚拟GPU的附连的虚拟化GPU的虚拟化计算实例的选择和供应。弹性图形服务110可以包括实例类型选择功能120和实例供应功能130。如上所述,提供商网络100可以向客户端装置180A提供用于虚拟计算实例的多个实例类型121。如出于说明和举例的目的所示,可以提供从类型“B”141B到类型“N”141N的虚拟计算实例。然而,可以预期,可以由提供商网络100向客户端提供任何合适数量和配置的虚拟计算实例类型。实例类型的特征可以在于其计算资源(例如,中央处理单元[CPU]或CPU核心的数量、类型和配置)、存储器资源(例如,本地存储器的容量、类型和配置)、存储资源(例如,本地可访问的存储设备的容量、类型和配置)、网络资源(例如,其网络接口的特征和/或网络能力)和/或其他合适的描述性特征。使用实例类型选择功能120,客户端装置180A可以提供对特定实例类型的指示、指定或其他选择201。例如,客户端可以使用输入201从一组预定的实例类型中选择实例类型“B”。作为另一个示例,客户端可以使用输入201来指定实例类型的所需资源,并且实例类型选择功能120可以基于这种指定而选择实例类型“B”。因此,虚拟计算实例类型可以由客户端或代表客户端例如使用实例类型选择功能120来选择。
如上所述,提供商网络100可以向客户端装置180A提供虚拟GPU的多个虚拟GPU级122。如出于说明和举例的目的所示,可以提供从级别“B”151B到级别“N”151N的虚拟GPU。然而,可以预期,可以由提供商网络100向客户端提供任何合适数量和配置的虚拟GPU级。虚拟GPU级的特征可以在于其用于图形处理的计算资源、用于图形处理的存储器资源和/或其他合适的描述性特征。在一个实施方案中,虚拟GPU级可以表示物理GPU的图形处理能力的子部分,诸如整个GPU、半个GPU、四分之一GPU等等。客户端装置180A可以提供实例类型选择功能120可以使用来选择特定虚拟GPU级的专用图形需求602。例如,图形需求602可以从一组预定的虚拟GPU级直接指定虚拟GPU级“B”或映射到所述虚拟GPU级“B”。作为另一个示例,图形需求602可以指定虚拟GPU级的所需资源,并且实例类型选择功能120可以基于这类需求而选择虚拟GPU级“B”。如果图形需求指定了有待与应用程序一起使用的虚拟GPU的最少的一组资源,则可以选择满足或超过该组最少的资源的虚拟GPU。因此,可以由客户端或代表客户端选择虚拟GPU级以便与具有特定需求的特定应用程序一起使用。
在一些情况下,由图形需求指示用于应用程序的虚拟GPU的级别可能是不可用的。虚拟GPU级可能出于技术原因(例如,在繁忙期期间)或商业原因(例如,选定GPU级比用户与提供商网络之间的协议所容许的GPU级更昂贵)而不可用。在这类情况下,弹性图形服务可以返回失败指示或尝试协调所请求的虚拟GPU级与可用虚拟GPU之间的差异。如果较低级别的虚拟GPU可用,则弹性图形服务可以提示用户进行认可。在一个实施方案中,弹性图形服务可以寻求用户认可等待,直到所请求的虚拟GPU级在可接受的成本下可用为止。
图6B示出根据一个实施方案的用于专用虚拟化图形处理的示例系统环境的另外的方面,包括供应附连了专用虚拟GPU的虚拟计算实例。实例供应功能130可以基于指定的实例类型“B”和(至少部分)基于专用需求602而选择的虚拟GPU级“B”而供应具有附连的虚拟GPU 151B的虚拟计算实例141B。所供应的虚拟计算实例141B可以使用合适的物理资源,诸如物理计算实例142B经由计算虚拟化功能140来实施,并且所供应的虚拟GPU 151B可以使用合适的物理资源,诸如物理GPU 152B经由GPU虚拟化功能150来实施。如本文所使用,供应虚拟计算实例通常包括为客户保留底层物理计算实例(例如,来自可用的物理计算实例池和其他资源)的资源(例如,计算和存储器资源);安装或启动所需软件(例如,操作系统);以及使得虚拟计算实例可供客户用来执行由所述客户指定的任务。在一个实施方案中,基本上任何虚拟GPU级的虚拟GPU可以附连到基本上任何实例类型的虚拟计算实例。为了实施具有附连的虚拟GPU 151B的虚拟计算实例141B,物理计算实例142B可以例如经由网络与物理GPU 152B进行通信。物理GPU 152B可以位于与物理计算实例142B不同的计算装置中。虽然它们可以使用单独的硬件来实施,但是据说虚拟GPU 151B可以附连到虚拟计算实例141B,或者据说虚拟计算实例可以包括虚拟GPU。虚拟GPU 151B可以安装在某一装置上,所述装置相对于物理GPU 152B可以驻留在各种位置,例如,驻留在同一个栈上、同一个交换机上、同一个房间内和/或同一个网络上的其他合适的位置。可以对客户端装置180A隐藏物理GPU 152B的供应商。
虚拟计算实例141B可以被配置来执行应用程序620。应用程序620的执行可以包括基于由所述应用程序供应到虚拟GPU 151B的数据而使用虚拟GPU来生成输出。虚拟GPU151B可以特别附连到虚拟计算实例141B以供特定应用程序620使用。专用虚拟GPU 151B可以专用于特定应用程序620,并且在虚拟计算实例141B上运行的其他应用程序无法访问这个特定虚拟GPU 151B。
图7A示出根据一个实施方案的用于专用虚拟化图形处理的示例系统环境的另外的方面,包括(至少部分)基于多个应用程序的需求而选择多个虚拟GPU。在一个实施方案中,虚拟计算实例上的多个应用程序可以具有其自身的专用虚拟GPU。虚拟GPU的能力可以基于相关联的应用程序的特征而变化。如图7A的示例中所示,虚拟计算实例141C可以使用多租户提供商网络100的资源来由计算虚拟化设施140供应。在各种实施方案中,可以在附连任何虚拟GPU之前或在附连虚拟GPU的同时供应和使用虚拟计算实例141C(例如,以执行一个或多个应用程序)。虚拟计算实例141C可以被配置来执行多个应用程序,诸如应用程序620A至应用程序620N。应用程序620A-620N可以从任何来源安装在虚拟计算实例141C上。应用程序620A-620N在其计算需求和图形需求方面可以变化。虚拟计算实例141C可以被配置来例如使用底层物理计算实例的多个处理器或处理器核心和/或基于软件的多任务处理技术来以基本上同时的方式执行应用程序620A-620N中的任两个或更多个。
应用程序620A-620N中的每一个可以与一组图形需求相关联。如图7A所示,应用程序620A可以与需求602A相关联,并且应用程序620N可以与需求602N相关联。例如,图形需求602A-602N可以指定推荐的图形处理单元(GPU)级、推荐的视频存储器的大小或推荐来运行对应的应用程序的其他GPU特征和/或配置。在一个实施方案中,图形需求602A-602N中任一个可以使用对应的应用程序清单605A-605N来确定,所述对应的应用程序清单指定用于执行对应的应用程序的平台或环境的所需或推荐的特征,包括物理计算实例或虚拟计算实例的特征。应用程序清单605A-605N可以由对应的应用程序的开发者确定和提供,所述开发者寻求对所述应用程序在其上执行的平台或环境的类型的一定程度的控制。在一个实施方案中,对对应的应用程序620A-620N的程序分析606A-606N可以确定应用程序的图形需求605。应用程序分析606A-606N可以包括由应用程序要求的图形工作负荷的运行时间分析和/或应用程序的例如使用与当前实例类似的虚拟硬件的执行历史(包括图形工作负荷)的分析。用于应用程序的无论是当前的还是历史的图形工作负荷可以是基于与虚拟GPU或底层物理GPU的使用相关的任何合适的度量,诸如发送到GPU的基元的数量、GPU的所请求的操作的数量、由GPU使用的视频存储器和/或一段时间内的GPU的输出率。
在一个实施方案中,图形需求602A-602N可以由为之供应实例141C的客户端提供到弹性图形服务110。在一个实施方案中,弹性图形服务110可以直接从应用程序清单605A-605N和/或应用程序分析606A-606N确定图形需求602A-602N。如上所述,提供商网络100可以向客户端提供虚拟GPU的多个虚拟GPU级122。如出于说明和举例的目的所示,可以提供从级别“B”151B到级别“N”151N的虚拟GPU。然而,可以预期,可以由提供商网络100向客户端提供任何合适数量和配置的虚拟GPU级。虚拟GPU级的特征可以在于其用于图形处理的计算资源、用于图形处理的存储器资源和/或其他合适的描述性特征。在一个实施方案中,虚拟GPU级可以表示物理GPU的图形处理能力的子部分,诸如整个GPU、半个GPU、四分之一GPU等等。
专用图形需求602A-602N可以由虚拟GPU选择功能720使用来为应用程序620A-620N中的任一个从虚拟GPU级122当中选择特定虚拟GPU级。例如,图形需求602A可以从一组预定的虚拟GPU级122直接指定虚拟GPU级“C”或映射到所述虚拟GPU级“C”,并且图形需求602N可以从虚拟GPU级组直接指定虚拟GPU级“N”或映射到所述虚拟GPU级“N”。作为另一个示例,图形需求602A可以指定虚拟GPU级的所需资源,并且虚拟GPU选择功能720可以基于这类需求而选择虚拟GPU级“C”。类似地,图形需求602N可以指定虚拟GPU级的所需资源,并且虚拟GPU选择功能720可以基于这类需求而选择虚拟GPU级“N”。如果图形需求指定了有待与应用程序一起使用的虚拟GPU的最少的一组资源,则可以选择满足或超过该组最少的资源的虚拟GPU。因此,可以由客户端或代表客户端选择虚拟GPU级以便与具有特定需求的特定应用程序一起使用。在一个实施方案中,例如,如果特定应用程序的需求不足以证明虚拟GPU的成本和/或由GPU虚拟化引入的额外的延迟的合理性,则弹性图形服务110可以基于所述需求而拒绝为所述特定应用程序选择和附连虚拟GPU。
图7B示出根据一个实施方案的用于专用虚拟化图形处理的示例系统环境的另外的方面,包括供应附连了多个专用虚拟GPU的虚拟计算实例。弹性图形服务110可以根据为对应的应用程序620A-620N选择的虚拟GPU级来将专用虚拟GPU附连到实例141C。如图7B所示,基于选定虚拟GPU级“C”的虚拟GPU 151C可以附连到实例141C以专供应用程序620A使用。类似地,基于选定虚拟GPU级“N”的虚拟GPU 151N可以附连到实例141C以专供应用程序620N使用。所供应的虚拟GPU 151C-151N可以使用合适的物理资源,诸如一个或多个物理GPU 152A-152N通过GPU虚拟化功能150来实施。为了实施具有附连的虚拟GPU 151C-151N的虚拟计算实例141C,物理计算实例可以例如经由网络与一个或多个物理GPU进行通信。物理GPU可以位于与物理计算实例不同的计算装置中。虽然它们可以使用单独的硬件来实施,但是据说虚拟GPU 151C-151N可以附连到虚拟计算实例141C,或者据说虚拟计算实例可以包括虚拟GPU。虚拟GPU可以安装在一个或多个装置上,所述一个或多个装置相对于物理GPU可以驻留在各种位置,例如,驻留在同一个栈上、同一个交换机上、同一个房间内和/或同一个网络上的其他合适的位置。可以对使用虚拟计算实例141C的客户端装置隐藏物理GPU的供应商。
虚拟计算实例141C可以被配置来执行应用程序620A-620N。应用程序620A的执行可以包括基于由所述应用程序供应到虚拟GPU 151C的数据而使用虚拟GPU来生成输出。虚拟GPU 151C可以特别附连到虚拟计算实例141C以供特定应用程序620A使用。专用虚拟GPU151C可以专用于特定应用程序620A,并且在虚拟计算实例141C上运行的其他应用程序无法访问这个特定虚拟GPU 151C。类似地,应用程序620N的执行可以包括基于由所述应用程序供应到虚拟GPU 151N的数据而使用虚拟GPU来生成输出。虚拟GPU 151N可以特别附连到虚拟计算实例141C以供特定应用程序620N使用。专用虚拟GPU 151N可以专用于特定应用程序620N,并且在虚拟计算实例141C上运行的其他应用程序无法访问这个特定虚拟GPU 151N。在一个实施方案中,虚拟计算实例141C上的一个或多个其他应用程序例如在其他应用程序的图形需求不足以证明虚拟GPU的成本的合理性的情况下可能无法访问任何虚拟GPU。
在一个实施方案中,应用程序620A-620N可以如先前相对于图3所论述与一个或多个图形驱动器321交互。图形驱动器321可以与虚拟GPU 151C-151N交互以为相应的应用程序620A-620N提供图形处理。图形处理可以包括加速二维图形处理和/或加速三维图形处理。在一个实施方案中,图形驱动器321可以实施图形应用程序编程接口(API),诸如Direct3D或OpenGL。图形驱动器321可以表示在用户模式和/或内核模式下运行的部件。如先前相对于图3还论述,客户端装置可以经由代理310与虚拟计算实例141C进行通信。可以经由代理310发送各种其他通信,包括例如将虚拟GPU输出从虚拟GPU 151C-151N发送到客户端装置。代理310的使用可以对客户端装置隐藏虚拟计算实例141C的地址和任何相关联的资源(包括实施虚拟GPU 151C-151N的一个或多个计算装置)。
在各种实施方案中,任何合适的技术可以用于将图形处理从虚拟计算实例141C卸载到一个或多个物理GPU,所述一个或多个物理GPU用于实施专用虚拟GPU 151C-151N。在一个实施方案中,API切片可以拦截对图形API的调用并且经由网络将调用编排到包括物理GPU的一个或多个外部计算装置。API切片可以是专用的,使得可以在处理的背景下为具有专用虚拟GPU的每个应用程序打开用于图形处理的动态链接库(DLL)的实例。DLL可以连接到虚拟GPU 151C-151N中的特定虚拟GPU并且代表对应的应用程序提供对所述虚拟GPU的独占访问。应用程序可以使用应用程序虚拟化容器来实施,并且API切片层可以内置于应用程序的容器中。
如先前相对于图4所论述,虚拟计算实例141C可以使用物理计算实例来实施,并且附连到所述实例141C的虚拟GPU 151C-151N可以使用一个或多个图形服务器420来实施。虚拟计算实例141C可以使用虚拟接口400来与接口装置410交互。虚拟接口400可以使得虚拟计算实例141C能够发送和接收网络数据。接口装置410可以包括网络接口和定制硬件接口。经由定制硬件接口,接口装置410可以运行程序代码来对GPU接口进行仿真并且将其呈现给虚拟计算实例141C以实施或包括专用虚拟GPU 151C-151N。在一个实施方案中,接口装置410可以将图形API呈现给虚拟计算实例141C并且接收对图形处理(例如,加速3D图形处理)的API调用。经由网络接口,接口装置410可以通过网络与图形服务器420(以及因此与物理GPU 152B)进行通信。接口装置410可以任何合适的方式,例如作为扩展卡(诸如PCIExpress卡)或物理计算实例142B的附连的外围装置实施。接口装置410可以使用单根I/O虚拟化来向虚拟计算实例141C展示硬件虚拟功能。
图7C示出根据一个实施方案的用于专用虚拟化图形处理的示例系统环境的另外的方面,包括供应具有专用于单一应用程序的多个专用虚拟GPU的虚拟计算实例。在一个实施方案中,弹性图形服务110可以基于特定应用程序的需求而拒绝为所述特定应用程序选择和附连多个虚拟GPU。如图7C的示例中所示,两个或更多个虚拟GPU 151C-151M可以基于应用程序620A的需求602A而选择,并且所有虚拟GPU可以附连到实例141C以供应用程序620A独占使用。为应用程序620A选择的两个或更多个虚拟GPU 151C-151M可以统一满足或超过需求602A。在一个实施方案中,两个或更多个虚拟GPU 151C-151M可以具有相同级别,例如级别“C”以有助于供应用程序620A同时使用。两个或更多个GPU可以出于任何合适的理由而专用于特定应用程序。例如,如果单一虚拟GPU无法满足特定应用程序的需求,则两个或更多个虚拟GPU可以专用于所述应用程序。作为另一个示例,如果当前在多租户提供商网络中无法获得满足特定应用程序的需求的单一虚拟GPU,则两个或更多个虚拟GPU可以专用于所述应用程序。作为另一个示例,如果当前在客户所指定的预算内无法获得满足特定应用程序的需求的单一虚拟GPU,则两个或更多个虚拟GPU可以专用于所述应用程序。
任何合适的技术可以用于允许单一应用程序使用多个虚拟GPU。在一个实施方案中,应用程序620A的输入数据可以广播到所有专用虚拟GPU 151C-151M,并且虚拟GPU可以同时的方式对输入数据的不同部分进行操作。广播可以使用API切片来执行。然后可以例如基于虚拟GPU的相对能力而在虚拟GPU 151C-151M当中划分工作负荷。例如,虚拟GPU 151C-151M中的每一个可以专用于显示器的特定区域,并且来自虚拟GPU的输出可以组合来生成相应的帧。作为另一个示例,虚拟GPU 151C-151M中的每一个可以按一定顺序专用于特定帧(例如,每隔一个帧有两个虚拟GPU),并且来自虚拟GPU的输出可以组合来生成帧序列。
在一个实施方案中,弹性图形服务110可以拒绝为特定应用程序选择和附连虚拟GPU。如图7C的示例中所示,可能(至少部分)基于需求602N而不能为应用程序620N选择或附连专用虚拟GPU。虚拟GPU可能出于任何合适的理由而不能专用于特定应用程序。例如,如果特定应用程序的需求无法证明虚拟GPU(给客户带来)的成本和/或由GPU虚拟化引入的额外的网络延迟的合理性,则虚拟GPU可能不能专用于所述应用程序。作为另一个示例,如果当前在多租户提供商网络中无法获得满足特定应用程序的需求的虚拟GPU,则虚拟GPU可能不能专用于所述应用程序。作为另一个示例,如果当前在客户所指定的预算内无法获得虚拟GPU,则虚拟GPU可能不能专用于特定应用程序。在一个实施方案中,应用程序620N仍可以访问由本地GPU(如下文相对于图9A至图11所论述)和/或附连到实例141C但不是专用的虚拟GPU提供的图形处理。
图8是示出根据一个实施方案的提供专用虚拟化图形处理的方法的流程图。如805中所示,可以确定应用程序的图形需求。虚拟计算实例可以被配置来执行所述应用程序。在一个实施方案中,弹性图形服务可以例如从客户端接收应用程序的图形需求,或者可以另外在不存在客户端输入的情况下确定需求。图形需求可以指定推荐的图形处理单元(GPU)级、推荐的视频存储器的大小或推荐来运行应用程序的其他GPU特征和/或配置。在一个实施方案中,图形需求可以使用应用程序清单来确定,所述应用程序清单指定用于执行应用程序的平台或环境的所需或推荐的特征,包括物理计算实例或虚拟计算实例的特征。应用程序清单可以由对应的应用程序的开发者确定和提供,所述开发者寻求对所述应用程序在其上执行的平台或环境的类型的一定程度的控制。在一个实施方案中,对应用程序的程序分析可以确定应用程序的图形需求。所述分析可以包括由应用程序要求的图形工作负荷的运行时间分析和/或应用程序的例如使用与当前实例类似的虚拟硬件的执行历史(包括图形工作负荷)的分析。用于应用程序的无论是当前的还是历史的图形工作负荷可以是基于与虚拟GPU或底层物理GPU的使用相关的任何合适的度量,诸如发送到GPU的基元的数量、GPU的所请求的操作的数量、由GPU使用的视频存储器和/或一段时间内的GPU的输出率。805中所示的操作可以针对多个应用程序执行多次,使得可以针对特定实例确定多个应用程序的不同图形需求。
如810中所示,可以选择虚拟GPU。可以(至少部分)基于虚拟GPU提供的图形处理能力和应用程序的图形需求而选择所述虚拟GPU。例如,如果图形需求指定了有待与应用程序一起使用的虚拟GPU的最少的一组资源,则可以选择满足或超过该组最少的资源的虚拟GPU。可以从特征在于其用于图形处理的不同计算资源、用于图形处理的存储器资源和/或其他合适的描述性特征的一组虚拟GPU级选择虚拟GPU。在一个实施方案中,虚拟GPU级可以表示物理GPU的图形处理能力的子部分,诸如整个GPU、半个GPU、四分之一GPU等等。专用图形需求可以用于选择特定虚拟GPU级。例如,图形需求可以直接指定或映射到特定虚拟GPU级。作为另一个示例,图形需求可以指定虚拟GPU级的所需的资源,并且可以基于这类需求而选择特定虚拟GPU级。还可以(至少部分)基于管理资源的提供商网络的资源池中的这类资源的可用性而选择虚拟GPU。810中所示的操作可以针对多个应用程序执行多次,使得可以(至少部分)基于多个应用程序的不同图形需求而选择多个专用虚拟GPU。
如815中所示,选定虚拟GPU可以附连到虚拟计算实例。在一个实施方案中,弹性图形服务可以与提供商网络的一个或多个其他服务或功能,诸如计算虚拟化功能和/或GPU虚拟化功能交互,以将虚拟GPU附连到实例。虚拟计算实例可以使用物理计算实例的中央处理单元(CPU)资源和存储器资源来实施。虚拟GPU可以使用物理GPU来实施。物理GPU可以附连到与为虚拟计算实例提供CPU资源的计算装置不同的计算装置。物理计算实例可以经由网络访问物理GPU。虚拟GPU据说可以附连到虚拟计算实例,或者虚拟计算实例据说可以包括虚拟GPU。在一个实施方案中,可以在虚拟GPU与一个或多个附加虚拟GPU之间共享物理GPU,并且附加虚拟GPU可以附连到附加虚拟计算实例。在一个实施方案中,虚拟计算实例可以经由接口装置访问虚拟GPU,所述接口装置包括网络接口和定制硬件接口。经由定制硬件接口,接口装置可以对GPU进行仿真并且将其呈现给虚拟计算实例以包括虚拟GPU。经由网络接口,接口装置可以通过网络来与物理GPU进行通信。815中所示的操作可以针对多个应用程序执行多次,使得多个专用虚拟GPU可以附连到同一个实例以用于多个应用程序。810和815中所示的操作可以响应于用户输入或响应于例如弹性图形服务的自动决定而执行。
如820中所示,应用程序可以使用专用虚拟GPU在虚拟计算实例上执行。应用程序的执行可以包括虚拟计算实例(例如,底层物理计算实例)和/或虚拟GPU(例如,底层物理GPU)上指令的执行。使用专用虚拟GPU执行应用程序可以生成虚拟GPU输出,例如,通过在虚拟GPU上执行指令或以其他方式执行任务而产生的输出。虚拟计算实例上的其他应用程序可以使用不同的专用虚拟GPU,并且专用虚拟GPU在图形处理能力方面可以基于应用程序的不同需求而变化。820中所示的操作可以针对多个应用程序执行多次,使得多个专用虚拟GPU可以在同一个实例上被多个应用程序使用。
如825中所示,可以将虚拟GPU输出提供到客户端装置。虚拟GPU输出可以从虚拟计算实例或虚拟GPU提供到客户端装置。在一个实施方案中,虚拟GPU输出可以显示在与客户端装置相关联的显示装置上。虚拟GPU输出可以包括像素信息或显示在显示装置上的其他图形数据。使用虚拟GPU执行应用程序可以包括使用图形API来进行所述应用程序的图形处理(例如,加速三维图形处理)。
虚拟化图形处理的本地到远程迁移
在一些实施方案中,与虚拟计算实例相关联的一个GPU的图形处理可以迁移到虚拟GPU。在一个实施方案中,由本地GPU提供的图形处理可以迁移到虚拟GPU。在一个实施方案中,由第一虚拟GPU提供的图形处理可以迁移到第二虚拟GPU。本地GPU可以使用所附连的硬件(例如,用于实施虚拟计算实例的物理计算实例中的硬件)或使用仿真来实施。由于本地GPU只可以提供低水平的图形处理能力,因此虚拟GPU可以附连到虚拟计算实例来提供相对于本地GPU改进的图形处理。在一个实施方案中,可以(至少部分)基于对图形工作负荷的增加的检测而执行图形处理的迁移。在使用原始GPU以不需要改变或重启应用程序的方式执行所述应用程序时,可以执行实时迁移。还可以执行虚拟计算实例到另一虚拟计算实例的迁移,例如以减少与虚拟化图形处理相关联的网络延迟。虚拟计算实例的图形处理也可以从一个虚拟GPU迁移到另一个虚拟GPU,例如从能力较弱或较低的虚拟GPU级迁移到能力较强或较高的虚拟GPU级。
图9A示出根据一个实施方案的用于虚拟化图形处理的本地到远程迁移的示例系统环境,包括供应具有本地GPU的虚拟计算实例。如上所述,弹性图形服务110可以向客户端提供对潜在地具有附连的虚拟化GPU的虚拟化计算实例的选择和供应。弹性图形服务110可以包括实例类型选择功能120和实例供应功能130。如上所述,提供商网络100可以向客户端装置180A提供用于虚拟计算实例的多个实例类型。实例类型的特征可以在于其计算资源(例如,中央处理单元[CPU]或CPU核心的数量、类型和配置)、存储器资源(例如,本地存储器的容量、类型和配置)、存储资源(例如,本地可访问的存储设备的容量、类型和配置)、网络资源(例如,其网络接口的特征和/或网络能力)和/或其他合适的描述性特征。使用实例类型选择功能120,客户端装置180A可以提供对特定实例类型的指示、指定或其他选择901。例如,客户端可以使用输入901从一组预定的实例类型中选择实例类型“B”。作为另一个示例,客户端可以使用输入901来指定实例类型的所需资源,并且实例类型选择功能120可以基于这种指定而选择实例类型“D”。因此,虚拟计算实例类型可以由客户端或代表客户端例如使用实例类型选择功能120来选择。
实例供应功能130可以基于实例类型“D”而向虚拟计算实例141D供应本地GPU941。所供应的虚拟计算实例141D可以使用合适的物理资源,诸如物理计算实例142C来由计算虚拟化功能140来实施。如本文所使用,供应虚拟计算实例通常包括为客户保留底层物理计算实例(例如,来自可用的物理计算实例池和其他资源)的资源(例如,计算和存储器资源);安装或启动所需软件(例如,操作系统);以及使得虚拟计算实例可供客户用来执行由所述客户指定的任务。
实例141D在其供应时可能不具有附连的虚拟GPU。所供应的实例141D可能具有包括处于默认配置的本地GPU 941的实例类型。在一个实施方案中,本地GPU 941可以实施为用于实施虚拟计算实例的物理计算实例142C的硬件部件。例如,本地GPU 941可以使用图4所示的具有网络功能的可定制的接口装置410来实施。可替代地,本地GPU 941可以使用安装在或附连到物理计算实例142C的专用物理GPU来实施。在一个实施方案中,本地GPU 941可以使用仿真技术在软件中实施。通常,与可经由提供商网络100的GPU虚拟化功能150获得的虚拟GPU相比较,本地GPU 941可以提供低水平的图形处理能力。
虚拟计算实例141D可以用于执行一个或多个应用程序。应用程序中的至少一个可以使用本地GPU 941,例如来进行图形处理。在某一时刻,可能会在虚拟计算实例141D的使用期间检测到本地GPU 941的图形工作负荷的变化。图形工作负荷的变化可以基于用户输入而确定或基于程序监控而自动地检测。例如,用户可以指示图形工作负荷针对当前运行的应用程序或因将要添加到实例的应用程序而可能发生变化;用户供应的指示可以包括对能力较高的虚拟GPU或对特定级别的虚拟GPU的识别的一般请求。自动检测到的图形工作负荷的变化可以是基于与GPU的使用相关的任何合适的度量,诸如发送到GPU的基元的数量、GPU的所请求的操作的数量、由GPU使用的视频存储器和/或一段时间内的GPU的输出率。检测到的变化通常可以表示图形工作负荷的增加,例如超出本地GPU 941的图形能力的增加。例如,如果应用程序使用本地GPU 941来产生全屏2D或3D图形,则图形工作负荷可能会增加,使得每秒帧数(fps)降低到可接受的性能的阈值以下。作为另一个示例,在同时执行附加应用程序时,由多个应用程序生成的累积的图形工作负荷可能会对本地GPU 941施加超出可接受的性能的阈值的压力。任何合适的技术可以用于监控图形工作负荷并检测其中的变化,并且任何合适的阈值可以用于评定图形工作负荷何时增加到足以证明附连虚拟GPU的合理性。
图9B示出根据一个实施方案的用于虚拟化图形处理的本地到远程迁移的示例系统环境的另外的方面,包括选择虚拟GPU并将其附连到虚拟计算实例。如上所述,提供商网络100可以提供虚拟GPU的多个虚拟GPU级。虚拟GPU级的特征可以在于其用于图形处理的计算资源、用于图形处理的存储器资源和/或其他合适的描述性特征。在一个实施方案中,虚拟GPU级可以表示物理GPU的图形处理能力的子部分,诸如整个GPU、半个GPU、四分之一GPU等等。特定虚拟GPU 151B可以被选择用于与虚拟计算实例141D一起使用以例如置换本地GPU 941的使用或对其进行补充。可以从一组具有不同图形处理能力的虚拟GPU级选择虚拟GPU 151B。虚拟GPU 151B可以被选择来匹配虚拟计算实例的当前或预期的图形工作负荷。因此,选定虚拟GPU 151B可以具有某一级别,诸如在可接受的性能水平下能够处理图形工作负荷的级别“B”。在一个实施方案中,弹性图形服务可以存储每个级别的虚拟GPU的基准或其他度量以指示相对于各种图形工作负荷水平的图形处理能力。在一个实施方案中,虚拟GPU 151B可能不是基于检测到的图形工作负荷的变化而是基于由虚拟计算实例的用户请求或启用的配置变化而选择。例如,如果新的应用程序在虚拟计算实例的使用期间添加到所述虚拟计算实例,新的应用程序的应用程序清单可能需要高于实例当前(例如,利用本地GPU)所提供的GPU性能。
选定虚拟GPU 151B可以附连到虚拟计算实例141D。在一个实施方案中,弹性图形服务110可以与提供商网络100的一个或多个其他服务或功能,诸如计算虚拟化功能140和/或GPU虚拟化功能150交互,以将虚拟GPU 151B附连到实例141D。虚拟计算实例141D可以使用物理计算实例142C的中央处理单元(CPU)资源和存储器资源来实施。虚拟GPU 151B可以使用物理GPU 152B来实施。物理GPU 152B可以附连到与为虚拟计算实例141D提供CPU资源的计算装置142C不同的计算装置。物理计算实例142C可以经由网络访问物理GPU 152B。虚拟GPU 151B据说可以附连到虚拟计算实例141D,或者虚拟计算实例141D据说可以包括虚拟GPU 151B。在一个实施方案中,可以在虚拟GPU 151B与一个或多个附加虚拟GPU之间共享物理GPU 152B,并且附加虚拟GPU可以附连到附加虚拟计算实例。在一个实施方案中,虚拟计算实例141D可以经由接口装置访问虚拟GPU 151B,所述接口装置包括网络接口和定制硬件接口。经由定制硬件接口,接口装置可以对GPU进行仿真并且将其呈现给虚拟计算实例141D以包括虚拟GPU 151B。经由网络接口,接口装置可以通过网络来与物理GPU 152B进行通信。
虚拟计算实例141D的图形处理可以从本地GPU 941迁移到远程定位的虚拟GPU151B。图形处理的迁移可以表示相对于一个或多个应用程序用由虚拟GPU 151B提供的图形处理置换由本地GPU 941提供的图形处理。图形处理可以包括GPU上指令的执行,往往基于输入而产生图形输出。图形处理的迁移可以包括相对于一个或多个应用程序中断使用本地GPU 941来进行图形处理;以及开始使用虚拟GPU 151B来进行图形处理。在一些情况下,可以在应用程序不在使用本地GPU 941时执行迁移。更典型地,可以在一个或多个应用程序的执行期间且应用程序在使用本地GPU 941的同时开始迁移。在一个实施方案中,图形处理可以(至少部分)基于图形工作负荷的增加而从本地GPU 941迁移到虚拟GPU 151B。在一个实施方案中,本地到远程迁移可以(至少部分)基于商业原因,例如在客户的预算增加,使得虚拟GPU的成本对于所述客户来说是合理的情况下执行。
当应用程序在开始迁移时正在使用本地GPU 941时,迁移可以被称为实时迁移。为了实施实时迁移,可以暂停任何当前运行的应用程序,应用程序接至本地GPU 941的接口可以被接至虚拟GPU 151B的接口置换,任何图形指令和/或数据可以传输到虚拟GPU,并且之后虚拟GPU可以用于重新开始图形处理。在一个实施方案中,切片(诸如API切片)可以记录由源GPU使用的图形资源(例如,纹理、渲染目标等等)。为了执行迁移,可以请求,经由控键复制所述图形资源并且在目标GPU上重新创建所述图形资源。可以在源GPU与目标GPU之间同步存储器和执行栈;在抵达目标GPU之后,可以暂停实例来执行迁移。在一个实施方案中,输入数据可以广播到本地GPU 941以及虚拟GPU 151B,直到虚拟GPU准备好接管图形处理为止。在一个实施方案中,本地GPU 941上的视频存储器可以标记为写时复制,本地GPU上的视频存储器的内容可以传输到虚拟GPU 151B,并且之后本地GPU上的存储器中的“脏乱”区域可以在虚拟GPU上更新。
如上文相对于图3所论述,任何合适的技术可以用于将图形处理从虚拟计算实例卸载到不同计算装置上的虚拟GPU。在一个实施方案中,API切片可以拦截对图形API的调用并且将调用编排到实施本地GPU的接口装置。在接口装置内或在API切片级上,接至本地GPU941的接口可以被接至虚拟GPU 151B的接口置换,使得例如无需修改或重启应用程序就可相对于所述应用程序无缝而透明地迁移图形处理。在一个实施方案中,硬件切片可以将硬件接口装饰到虚拟计算实例的表层并且对所述实例的尝试进行编排以与本地GPU交互。
物理计算实例142C和物理GPU 152B相对于彼此可以位于同一个栈中、同一个数据中心中的不同栈中、不同的数据中心中、不同的可用区或区域中或任何其他位置上。在一个实施方案中,虚拟计算实例到另一虚拟计算实例的迁移也可以连同图形处理的本地到远程迁移一起执行。虚拟计算实例的迁移可以例如被执行来移动到更靠近选定虚拟GPU的底层物理计算实例,使得物理计算实例142C和物理GPU 152B处于同一个栈中或另外处于同一个数据中心中的邻近位置处。任何合适的启发法可以用于确定是否迁移虚拟计算实例和/或选择目的地物理计算实例的布置。例如,虚拟计算实例的迁移可以被执行来减少与虚拟化图形处理相关联的网络延迟和/或为虚拟化图形处理减少网络的使用。实例的迁移可以包括实时迁移,使得虚拟计算实例上执行的一个或多个应用程序可以在源实例上暂停并且之后在目的地实例上重新开始。
图10是示出根据一个实施方案的用于将图形处理从本地GPU本地到远程地迁移到虚拟GPU的方法的流程图。如1005中所示,可以从多租户提供商网络供应虚拟计算实例。多租户提供商网络可以包括多个计算装置,所述多个计算装置被配置成实施多个虚拟计算实例。虚拟计算实例可以包括本地图形处理单元(GPU)。所供应的实例可能具有包括处于默认配置的本地GPU的实例类型。在一个实施方案中,本地GPU可以实施为用于实施虚拟计算实例的物理计算实例的硬件部件。例如,本地GPU可以使用图4所示的具有网络功能的可定制的接口装置410来实施。可替代地,本地GPU可以使用安装在物理计算实例中的物理GPU来实施。在一个实施方案中,本地GPU可以使用仿真技术在软件中实施。通常,与可经由提供商网络的弹性图形服务获得的虚拟GPU相比较,本地GPU可以提供低水平的图形处理能力。
转回到图10,虚拟计算实例可以用于执行一个或多个应用程序。应用程序中的至少一个可以使用本地GPU,例如来进行图形处理。如1010中所示,可能会在虚拟计算实例的使用期间确定本地GPU的图形工作负荷的变化。图形工作负荷的变化可以基于用户输入而确定或基于程序监控而自动地检测。例如,用户可以指示图形工作负荷针对当前运行的应用程序或因将要添加到实例的应用程序而可能发生变化;用户供应的指示可以包括对能力较高的虚拟GPU或对特定级别的虚拟GPU的识别的一般请求。自动检测到的图形工作负荷的变化可以是基于与GPU的使用相关的任何合适的度量,诸如发送到GPU的基元的数量、GPU的所请求的操作的数量、由GPU使用的视频存储器和/或一段时间内的GPU的输出率。检测到的变化通常可以表示图形工作负荷的增加,例如超出本地GPU的图形能力的增加。例如,如果应用程序使用本地GPU来产生全屏2D或3D图形,则图形工作负荷可能会增加,使得每秒帧数(fps)降低到可接受的性能的阈值以下。作为另一个示例,在同时执行附加应用程序时,由多个应用程序生成的累积的图形工作负荷可能会对本地GPU施加超出可接受的性能的阈值的压力。任何合适的技术可以用于监控图形工作负荷并检测其中的变化,并且任何合适的阈值可以用于评定图形工作负荷何时增加到足以证明附连虚拟GPU的合理性。如果确定了图形工作负荷的变化,则所述方法可以进行到1015中所示的操作。
如1015中所示,虚拟GPU可以被选择用于与虚拟计算实例一起使用以例如置换本地GPU的使用或对其进行补充。可以从一组具有不同图形处理能力的虚拟GPU级选择虚拟GPU。虚拟GPU可以被选择来匹配虚拟计算实例的当前或预期的图形工作负荷。因此,选定虚拟GPU可以具有在可接受的性能水平下能够处理图形工作负荷的级别。在一个实施方案中,弹性图形服务可以存储每个级别的虚拟GPU的基准或其他度量以指示相对于各种图形工作负荷水平的图形处理能力。在一个实施方案中,虚拟GPU可能不是基于检测到的图形工作负荷的变化而是基于由虚拟计算实例的用户请求或启用的配置变化而选择。例如,如果新的应用程序在虚拟计算实例的使用期间添加到所述虚拟计算实例,新的应用程序的应用程序清单可能需要高于实例当前(例如,利用本地GPU)所提供的GPU性能。
选定虚拟GPU可以附连到虚拟计算实例。在一个实施方案中,弹性图形服务可以与提供商网络的一个或多个其他服务或功能,诸如计算虚拟化功能和/或GPU虚拟化功能交互,以将虚拟GPU附连到实例。虚拟计算实例可以使用物理计算实例的中央处理单元(CPU)资源和存储器资源来实施。虚拟GPU可以使用物理GPU来实施。物理GPU可以附连到与为虚拟计算实例提供CPU资源的计算装置不同的计算装置。物理计算实例可以经由网络访问物理GPU。虚拟GPU据说可以附连到虚拟计算实例,或者虚拟计算实例据说可以包括虚拟GPU。在一个实施方案中,可以在虚拟GPU与一个或多个附加虚拟GPU之间共享物理GPU,并且附加虚拟GPU可以附连到附加虚拟计算实例。在一个实施方案中,虚拟计算实例可以经由接口装置访问虚拟GPU,所述接口装置包括网络接口和定制硬件接口。经由定制硬件接口,接口装置可以对GPU进行仿真并且将其呈现给虚拟计算实例以包括虚拟GPU。经由网络接口,接口装置可以通过网络来与物理GPU进行通信。
如1020中所示,虚拟计算实例的图形处理可以从本地GPU迁移到远程虚拟GPU。图形处理的迁移可以表示相对于一个或多个应用程序用由虚拟GPU提供的图形处理置换由本地GPU提供的图形处理。图形处理可以包括GPU上指令的执行,往往基于输入而产生图形输出。图形处理的迁移可以包括相对于一个或多个应用程序中断使用本地GPU来进行图形处理;以及开始使用虚拟GPU来进行图形处理。在一些情况下,可以在应用程序不在使用本地GPU时执行迁移。更典型地,可以在一个或多个应用程序的执行期间且应用程序在使用本地GPU的同时开始迁移。在一个实施方案中,图形处理可以(至少部分)基于图形工作负荷的增加而从本地GPU迁移到虚拟GPU。
当应用程序在开始到远程GPU的迁移时正在使用本地GPU时,迁移可以被称为实时迁移。为了实施实时迁移,可以暂停任何当前运行的应用程序,应用程序接至本地GPU的接口可以被接至虚拟GPU的接口置换,任何图形指令和/或数据可以传输到虚拟GPU,并且之后虚拟GPU可以用于重新开始图形处理。如上文相对于图3所论述,任何合适的技术可以用于将图形处理从虚拟计算实例卸载到不同计算装置上的虚拟GPU。例如,API切片可以拦截对图形API的调用并且将调用编排到实施本地GPU的接口装置。在接口装置内或在API切片级上,接至本地GPU的接口可以被接至虚拟GPU的接口置换,使得例如无需修改或重启应用程序就可相对于所述应用程序无缝而透明地迁移图形处理。
转回到图10,如1025中所示,应用程序可以使用虚拟GPU在虚拟计算实例上执行。应用程序的执行可以包括虚拟计算实例(例如,底层物理计算实例)和/或虚拟GPU(例如,底层物理GPU)上指令的执行。使用虚拟GPU执行应用程序可以生成虚拟GPU输出,例如,通过在虚拟GPU上执行指令或以其他方式执行任务而产生的输出。本文描述用于迁移虚拟化图形处理的技术可以与本文描述用于专用虚拟化图形处理的技术一起使用。因此,虚拟计算实例上的其他应用程序可以使用不同的(例如,专用)虚拟GPU和/或本地GPU,并且专用虚拟GPU和/或本地GPU在图形处理能力方面可以基于应用程序的不同需求而变化。
如1030中所示,可以将虚拟GPU输出提供到客户端装置。虚拟GPU输出可以从虚拟计算实例或虚拟GPU提供到客户端装置。在一个实施方案中,虚拟GPU输出可以显示在与客户端装置相关联的显示装置上。虚拟GPU输出可以包括像素信息或显示在显示装置上的其他图形数据。使用虚拟GPU执行应用程序可以包括使用图形API来进行所述应用程序的图形处理(例如,加速三维图形处理)。
虚拟化图形处理的扩展
在一些实施方案中,虚拟计算实例的图形处理可能会从一个或多个虚拟GPU迁移到另一个或多个虚拟GPU。第一组一个或多个虚拟GPU可以提供特定的图形处理水平。在确定实例的GPU需求改变之后,第二组一个或多个虚拟GPU可以被选择和附连到虚拟计算实例以用另一水平的图形处理置换第一虚拟GPU的图形处理。可以基于GPU需求的变化而选择第二虚拟GPU。取决于GPU需求的变化,这种扩展操作可以将虚拟计算实例的图形处理从能力较弱或较低的虚拟GPU级迁移到能力较强或较高的虚拟GPU级或者从能力较强或较高的虚拟GPU级迁移到能力较弱或较低的虚拟GPU级。在一个实施方案中,可以(至少部分)基于表示GPU需求的变化的用户输入而执行图形处理的迁移。在一个实施方案中,可以(至少部分)基于对图形工作负荷的增加的检测而执行图形处理的迁移。在使用第一虚拟GPU以不需要改变或重启应用程序的方式执行所述应用程序时,可以执行实时迁移。还可以执行虚拟计算实例到另一虚拟计算实例的迁移,例如以减少与虚拟化图形处理相关联的网络延迟。
图11A示出根据一个实施方案的用于扩展虚拟化图形处理的示例系统环境,包括附连了第一虚拟GPU的虚拟计算实例。如上所述,弹性图形服务110可以向客户端提供对潜在地具有附连的虚拟化GPU的虚拟化计算实例的选择和供应。如图11A的示例中所示,可以在提供商网络100中供应虚拟计算实例141E。所供应的虚拟计算实例141E可以使用合适的物理资源,诸如物理计算实例142E通过计算虚拟化功能140来实施。如本文所使用,供应虚拟计算实例通常包括为客户保留底层物理计算实例(例如,来自可用的物理计算实例池和其他资源)的资源(例如,计算和存储器资源);安装或启动所需软件(例如,操作系统);以及使得虚拟计算实例可供客户用来执行由所述客户指定的任务。实例141E在其供应时间之前或之后可以具有附连的诸如级别“B”的特定级别的虚拟GPU 151B。虚拟计算实例141E可以用于执行一个或多个应用程序。应用程序中的至少一个可以使用虚拟GPU 151B,例如来进行图形处理。虚拟GPU 151B可以使用提供商网络的潜在地包括物理GPU 152A-152N的物理GPU资源152来实施。物理计算实例142E可以经由网络访问物理GPU资源152。
在某一时刻,可能例如会在虚拟计算实例141E的使用期间确定所述虚拟计算实例的GPU需求或其他需求的变化。需求的变化可以指示所述实例对较高图形处理能力或较低图形处理能力的需求。在一个实施方案中,需求的变化可以(至少部分)基于用于需求1101,例如实例的客户端180A的用户输入而确定。例如,用户可以供应需求1101,所述需求指示图形工作负荷针对当前运行的应用程序或因将要添加到实例的应用程序而可能会发生变化。在一个实施方案中,用户供应的需求1101可以包括对能力较高或较低的虚拟GPU或对特定级别的虚拟GPU的识别的一般请求。与需求1101相关联的用户输入可以直接指定虚拟GPU的所需级别或虚拟GPU的其他特征,或用户输入可以由弹性图形服务110变换和映射到虚拟GPU的所需级别或虚拟GPU的其他特征。由用户指定的需求1101可以包括对图形处理的GPU需求以及计算需求。GPU需求可以指定推荐的图形处理单元(GPU)级、推荐的视频存储器的大小、或其他GPU特征和/或推荐来运行应用程序的配置。在一个实施方案中,GPU需求可以使用应用程序清单来确定,所述应用程序清单指定用于执行应用程序的平台或环境的所需或推荐的特征(例如,计算和存储器需求),包括物理计算实例或虚拟计算实例的特征。例如,如果新的应用程序在虚拟计算实例的使用期间添加到所述虚拟计算实例,新的应用程序的应用程序清单可能需要高于实例当前(例如,利用虚拟GPU 141E)所提供的GPU性能。作为另一个示例,需求1101可以表示对用户的成本需求或预算需求的变化,使得虚拟化图形处理的扩展可以(至少部分)基于不同级别虚拟GPU的相对成本而执行。
在一个实施方案中,需求的变化可以(至少部分)基于性能监控1110而确定。任何合适的技术可以用于执行对虚拟计算实例141E和/或虚拟GPU 151B的性能监控1110。性能监控1110可以确定合适的任一组性能度量,例如与实例141E对虚拟GPU 151B的使用相关的度量。例如,可以在虚拟计算实例的使用期间检测虚拟GPU 151B的图形工作负荷。图形工作负荷可以是基于与GPU的使用相关的任何合适的度量,诸如发送到GPU的基元的数量、GPU的所请求的操作的数量、由GPU使用的视频存储器和/或一段时间内的GPU的输出率。检测到的变化可以表示图形工作负荷的增加或减少,例如超出虚拟GPU 151B的图形能力的增加或远低于其整体图形能力的减少。例如,如果应用程序使用虚拟GPU 151B来产生全屏2D或3D图形,则图形工作负荷可能会增加,使得每秒帧数(fps)降低到可接受的性能的阈值以下。作为另一个示例,在同时执行附加应用程序时,由多个应用程序生成的累积的图形工作负荷可能会对虚拟GPU 151B施加超出可接受的性能的阈值的压力。任何合适的技术可以用于监控1110图形工作负荷并检测其中的变化,并且任何合适的阈值可以用于评定图形工作负荷何时变化到足以证明附连另一组一个或多个虚拟GPU的合理性。
弹性图形服务110可以包括虚拟GPU扩展1120的功能。使用扩展功能1120,弹性图形服务可以确定实例141E的需求已变化到足以证明附连另一组一个或多个虚拟GPU来置换虚拟GPU 151B的合理性。需求的变化可能并不足以引起扩展,并且因此扩展功能1120可以使用任何合适的启发法和/或阈值来确定何时置换虚拟GPU 151B。扩展功能1120可以(至少部分)基于用户指定的需求1101和/或性能监控1110而确定需求的变化。扩展功能1120可以例如基于GPU需求的变化而使用虚拟GPU选择功能720来选择新的一组一个或多个虚拟GPU。
图11B示出根据一个实施方案的用于扩展虚拟化图形处理的示例系统环境的另外的方面,包括针对虚拟计算实例用第二虚拟GPU置换第一虚拟GPU。使用虚拟GPU扩展功能1120,弹性图形服务110可以从虚拟计算实例141E移除虚拟GPU 151B并且用附连到虚拟计算实例的另一个虚拟GPU 151A置换所述虚拟GPU。可以(至少部分)基于需求的变化而选择虚拟GPU 151A。虚拟GPU 151A可以提供相对于虚拟GPU 151B而言不同的图形处理水平,诸如更低水平或更高水平。图形处理水平可以指代如由任何合适的度量,诸如发送到GPU的基元的数量、GPU的所请求的操作的数量、由GPU使用的视频存储器和/或一段时间内的GPU的输出率所测量的虚拟GPU的图形处理实力或能力。
如上所述,提供商网络100可以提供虚拟GPU的多个虚拟GPU级。虚拟GPU级的特征可以在于其用于图形处理的计算资源、用于图形处理的存储器资源和/或其他合适的描述性特征。在一个实施方案中,虚拟GPU级可以表示物理GPU的图形处理能力的子部分,诸如整个GPU、半个GPU、四分之一GPU等等。特定虚拟GPU 151A可以被选择用于与虚拟计算实例141E一起使用以例如置换虚拟GPU 151B的使用。可以从一组具有不同图形处理能力的虚拟GPU级选择虚拟GPU 151A。虚拟GPU 151A可以被选择来满足或超过虚拟计算实例的当前或预期的GPU需求。因此,选定虚拟GPU 151A可以具有某一级别,诸如在可接受的性能水平下能够处理特定图形工作负荷或其他GPU需求的级别“A”。在一个实施方案中,弹性图形服务可以存储每个级别的虚拟GPU的基准或其他度量以指示相对于各种图形工作负荷水平的图形处理能力。
可以从虚拟计算实例141E移除虚拟GPU 151B,并且可以将选定虚拟GPU 151A附连到虚拟计算实例。在一个实施方案中,弹性图形服务110可以与提供商网络100的一个或多个其他服务或功能,诸如计算虚拟化功能140和/或GPU虚拟化功能150交互,以从实例141E移除虚拟GPU 151B并且将所述虚拟GPU(和/或用于实施所述虚拟GPU的物理GPU资源)返回到提供商网络中的可用资源池。在一个实施方案中,弹性图形服务110可以与提供商网络100的一个或多个其他服务或功能,诸如计算虚拟化功能140和/或GPU虚拟化功能150交互,以将虚拟GPU 151A附连到实例141E。虚拟计算实例141E可以使用物理计算实例142E的中央处理单元(CPU)资源和存储器资源来实施。虚拟GPU 151A可以使用提供商网络的物理GPU资源152来实施。物理GPU 152可以附连到与为虚拟计算实例141E提供CPU资源的计算装置142E不同的计算装置。物理计算实例142E可以经由网络访问物理GPU 152。虚拟GPU 151A据说可以附连到虚拟计算实例141E,或者虚拟计算实例141E据说可以包括虚拟GPU 151A。在一个实施方案中,可以在虚拟GPU 151A与一个或多个附加虚拟GPU之间共享物理GPU 152,并且附加虚拟GPU可以附连到附加虚拟计算实例。在一个实施方案中,虚拟计算实例141E可以经由接口装置访问虚拟GPU 151A,所述接口装置包括网络接口和定制硬件接口。经由定制硬件接口,接口装置可以对GPU进行仿真并且将其呈现给虚拟计算实例141E以包括虚拟GPU 151A。经由网络接口,接口装置可以通过网络来与物理GPU 152进行通信。
虚拟计算实例141E的图形处理可以从虚拟GPU 151B迁移到新附连的虚拟GPU151A。图形处理的迁移可以表示相对于一个或多个应用程序用由虚拟GPU 151A提供的图形处理置换由虚拟GPU 151B提供的图形处理。图形处理可以包括GPU上指令的执行,往往基于输入而产生图形输出。图形处理的迁移可以包括相对于一个或多个应用程序中断使用虚拟GPU 151B来进行图形处理;以及开始使用虚拟GPU 151A来进行图形处理。在一些情况下,可以在应用程序不在使用虚拟GPU 151B时执行迁移。更典型地,可以在一个或多个应用程序的执行期间且应用程序在使用虚拟GPU 151B的同时开始迁移。在一个实施方案中,图形处理可以(至少部分)基于GPU需求的变化而从虚拟GPU 151B迁移到虚拟GPU 151A。在一个实施方案中,扩展可以(至少部分)基于例如以下情况的商业原因而执行:客户的预算增加,使得虚拟GPU 141A的成本对于所述客户来说可能是合理的;或者客户的预算减少,使得虚拟GPU 151B的成本对于所述客户来说可能不再合理。
当应用程序在开始迁移时正在使用虚拟GPU 151B时,迁移可以被称为实时迁移。为了实施实时迁移,可以暂停任何当前运行的应用程序,应用程序接至虚拟GPU 151B的接口可以被接至虚拟GPU 151A的接口置换,任何图形指令和/或数据可以传输到虚拟GPU151A,并且之后虚拟GPU 151A可以用于重新开始图形处理。在一个实施方案中,切片(诸如API切片)可以记录由源GPU使用的图形资源(例如,纹理、渲染目标等等)。为了执行迁移,可以请求,经由控键复制所述图形资源并且在目标GPU上重新创建所述图形资源。可以在源GPU与目标GPU之间同步存储器和执行栈;在抵达目标GPU之后,可以暂停实例来执行迁移。在一个实施方案中,输入数据可以广播到虚拟GPU 151B以及虚拟GPU 151A,直到虚拟GPU151A准备好接管图形处理为止。在一个实施方案中,虚拟GPU 151B上的视频存储器可以标记为写时复制,虚拟GPU 151B上的视频存储器的内容可以传输到虚拟GPU 151A,并且之后虚拟GPU 151B上的存储器中的“脏乱”区域可以在虚拟GPU 151A上更新。
如上文相对于图3所论述,任何合适的技术可以用于将图形处理从虚拟计算实例卸载到不同计算装置上的虚拟GPU。在一个实施方案中,API切片可以拦截对图形API的调用并且将调用编排到接口装置。在接口装置内或在API切片级上,接至虚拟GPU 151B的接口可以被接至虚拟GPU 151A的接口置换,使得例如无需修改或重启应用程序就可相对于所述应用程序无缝而透明地迁移图形处理。在一个实施方案中,硬件切片可以将硬件接口装饰到虚拟计算实例的表层并且对所述实例的尝试进行编排以与虚拟GPU 151B交互。
物理计算实例142E和物理GPU 152相对于彼此可以位于同一个栈中、同一个数据中心中的不同栈中、不同的数据中心中、不同的可用区或区域中或任何其他位置上。虚拟计算实例的迁移可以例如被执行来移动到更靠近选定虚拟GPU的底层物理计算实例,使得物理计算实例142E和物理GPU 152处于同一个栈中或另外处于同一个数据中心中的邻近位置处。任何合适的启发法可以用于确定是否迁移虚拟计算实例和/或选择目的地物理计算实例的布置。例如,虚拟计算实例的迁移可以被执行来减少与虚拟化图形处理相关联的网络延迟和/或为虚拟化图形处理减少网络的使用。实例的迁移可以包括实时迁移,使得虚拟计算实例上执行的一个或多个应用程序可以在源实例上暂停并且之后在目的地实例上重新开始。
图11C示出根据一个实施方案的用于扩展虚拟化图形处理的示例系统环境的另外的方面,包括针对虚拟计算实例将第二虚拟GPU添加到第一虚拟GPU。如上所述,虚拟计算实例141E可以具有附连的虚拟GPU 151B。在一个实施方案中,扩展功能1120可以确定虚拟GPU151B应被一组多个虚拟GPU置换。在一个实施方案中,该组多个虚拟GPU也可以包括原始虚拟GPU 151B,使得虚拟GPU 151B可以通过一个或多个附加虚拟GPU来进行补充。如图11C的示例中所示,虚拟GPU扩展功能1120可以针对实例141放大图形处理水平,使得一组虚拟GPU151B至151D附连到所述实例来提供图形处理。虚拟GPU组151B-151D可以经由如上所述的物理GPU资源152来实施。虚拟GPU组151B-151D通常可以(但不一定)具有相同级别,诸如级别“B”。还应预期的是,虚拟GPU 151B可以整体被一组多个具有相同级别或具有不同级别的虚拟GPU置换。多个虚拟GPU 151B-151D可以共同提供高于单一虚拟GPU 151B的图形处理水平。任何合适的技术可以用于在多个虚拟GPU 151B-151D当中分布工作负荷,诸如将输入数据广播到所有虚拟GPU并且使用虚拟GPU来以同时的方式对输入数据的不同部分进行操作。
图12A示出根据一个实施方案的用于扩展虚拟化图形处理的示例系统环境,包括附连了两个虚拟GPU的虚拟计算实例。可以在提供商网络100中供应虚拟计算实例141F。所供应的虚拟计算实例141F可以使用合适的物理资源,诸如物理计算实例142F通过计算虚拟化功能140来实施。虚拟计算实例141F在其供应时或在其供应之后可以具有一组附连的虚拟GPU 151B至151D。虚拟GPU组151B-151D可以经由如上所述的物理GPU资源152来实施。虚拟GPU组151B-151D通常可以(但不一定)具有相同级别,诸如级别“B”。任何合适的技术可以用于在多个虚拟GPU 151B-151D当中分布工作负荷,诸如将输入数据广播到所有虚拟GPU并且使用虚拟GPU来以同时的方式对输入数据的不同部分进行操作。
在一个实施方案中,扩展功能1120可以例如基于根据用户输入1101和/或性能监控1110而确定的GPU需求的变化而确定虚拟GPU 151B-151D应被另一组一个或多个虚拟GPU置换来为实例141F提供不同的图形处理水平。在一个实施方案中,通常为相同级别的附加虚拟GPU可以添加到虚拟GPU 151B-151D。在一个实施方案中,虚拟GPU 151B-151D中的一个或多个可以从所附连的虚拟GPU组中移除。在一个实施方案中,虚拟GPU 151B-151D可以被具有不同级别的多个虚拟GPU置换。如下文将论述,虚拟GPU 151B-151D可以被单一虚拟GPU置换。
图12B示出根据一个实施方案的用于扩展虚拟化图形处理的示例系统环境的另外的方面,包括针对虚拟计算实例用单一虚拟GPU置换虚拟GPU。
使用虚拟GPU扩展功能1120,弹性图形服务110可以从虚拟计算实例141F移除虚拟GPU 151B-151D并且用附连到虚拟计算实例的另一个虚拟GPU 151A置换所述虚拟GPU。可以(至少部分)基于GPU需求的变化而选择虚拟GPU 151A。虚拟GPU 151A可以提供相对于虚拟GPU 151B-151D而言不同的图形处理水平。图形处理水平可以指代如由任何合适的度量,诸如发送到GPU的基元的数量、GPU的所请求的操作的数量、由GPU使用的视频存储器和/或一段时间内的GPU的输出率所测量的一个或多个虚拟GPU的总体图形处理实力或能力。在一个实施方案中,单一虚拟GPU 151A可以具有能力较强的级别并且可以提供高于多个虚拟GPU151B-151D的图形处理水平。在一个实施方案中,单一虚拟GPU 151A可以提供低于多个虚拟GPU 151B-151D的图形处理水平。
如上所述,提供商网络100可以提供虚拟GPU的多个虚拟GPU级。虚拟GPU级的特征可以在于其用于图形处理的计算资源、用于图形处理的存储器资源和/或其他合适的描述性特征。在一个实施方案中,虚拟GPU级可以表示物理GPU的图形处理能力的子部分,诸如整个GPU、半个GPU、四分之一GPU等等。特定虚拟GPU 151A可以被选择用于与虚拟计算实例141F一起使用以例如置换虚拟GPU 151B-151D的使用。可以从一组具有不同图形处理能力的虚拟GPU级选择虚拟GPU 151A。虚拟GPU 151A可以被选择来满足或超过虚拟计算实例的当前或预期的GPU需求。因此,选定虚拟GPU 151A可以具有某一级别,诸如在可接受的性能水平下能够处理特定图形工作负荷或其他GPU需求的级别“A”。在一个实施方案中,弹性图形服务可以存储每个级别的虚拟GPU的基准或其他度量以指示相对于各种图形工作负荷水平的图形处理能力。
可以从虚拟计算实例141F移除虚拟GPU 151B-151D,并且可以将选定虚拟GPU151A附连到虚拟计算实例。在一个实施方案中,弹性图形服务110可以与提供商网络100的一个或多个其他服务或功能,诸如计算虚拟化功能140和/或GPU虚拟化功能150交互,以从实例141F移除虚拟GPU 151B-151D并且将所述虚拟GPU(和/或用于实施所述虚拟GPU的物理GPU资源)返回到提供商网络中的可用资源池。在一个实施方案中,弹性图形服务110可以与提供商网络100的一个或多个其他服务或功能,诸如计算虚拟化功能140和/或GPU虚拟化功能150交互,以将虚拟GPU 151A附连到实例141F。虚拟计算实例141F可以使用物理计算实例142F的中央处理单元(CPU)资源和存储器资源来实施。虚拟GPU 151A可以使用提供商网络的物理GPU资源152来实施。物理GPU 152可以附连到与为虚拟计算实例141F提供CPU资源的计算装置142F不同的计算装置。物理计算实例142F可以经由网络访问物理GPU 152。虚拟GPU 151A据说可以附连到虚拟计算实例141F,或者虚拟计算实例141F据说可以包括虚拟GPU 151A。在一个实施方案中,可以在虚拟GPU 151A与一个或多个附加虚拟GPU之间共享物理GPU 152,并且附加虚拟GPU可以附连到附加虚拟计算实例。在一个实施方案中,虚拟计算实例141F可以经由接口装置访问虚拟GPU 151A,所述接口装置包括网络接口和定制硬件接口。经由定制硬件接口,接口装置可以对GPU进行仿真并且将其呈现给虚拟计算实例141F以包括虚拟GPU 151A。经由网络接口,接口装置可以通过网络来与物理GPU 152进行通信。
虚拟计算实例141F的图形处理可以从虚拟GPU 151B-151D迁移到新附连的虚拟GPU 151A。图形处理的迁移可以表示相对于一个或多个应用程序用由虚拟GPU 151A提供的图形处理置换由虚拟GPU 151B-151D提供的图形处理。图形处理可以包括GPU上指令的执行,往往基于输入而产生图形输出。图形处理的迁移可以包括相对于一个或多个应用程序中断使用虚拟GPU 151B-151D来进行图形处理;以及开始使用虚拟GPU 151A来进行图形处理。在一些情况下,可以在应用程序不在使用虚拟GPU 151B-151D时执行迁移。更典型地,可以在一个或多个应用程序的执行期间且应用程序在使用虚拟GPU 151B-151D的同时开始迁移。在一个实施方案中,图形处理可以(至少部分)基于GPU需求的变化而从虚拟GPU 151B-151D迁移到虚拟GPU 151A。在一个实施方案中,扩展可以(至少部分)基于例如以下情况的商业原因而执行:客户的预算增加,使得虚拟GPU 151A的增加的成本对于所述客户来说可能是合理的;或者客户的预算减少,使得虚拟GPU 151B-151D的成本对于所述客户来说可能不再合理。
当应用程序在开始迁移时正在使用虚拟GPU 151B-151D时,迁移可以被称为实时迁移。为了实施实时迁移,可以暂停任何当前运行的应用程序,应用程序接至虚拟GPU151B-151D的接口可以被接至虚拟GPU 151A的接口置换,任何图形指令和/或数据可以传输到虚拟GPU 151A,并且之后虚拟GPU 151A可以用于重新开始图形处理。在一个实施方案中,切片(诸如API切片)可以记录由源GPU使用的图形资源(例如,纹理、渲染目标等等)。为了执行迁移,可以请求,经由控键复制所述图形资源并且在目标GPU上重新创建所述图形资源。可以在源GPU与目标GPU之间同步存储器和执行栈;在抵达目标GPU之后,可以暂停实例来执行迁移。在一个实施方案中,输入数据可以广播到虚拟GPU 151B-151D以及虚拟GPU 151A,直到虚拟GPU 151A准备好接管图形处理为止。在一个实施方案中,虚拟GPU 151B-151D上的视频存储器可以标记为写时复制,虚拟GPU 151B-151D上的视频存储器的内容可以传输到虚拟GPU 151A,并且之后虚拟GPU 151B-151D上的存储器中的“脏乱”区域可以在虚拟GPU151A上更新。
如上文相对于图3所论述,任何合适的技术可以用于将图形处理从虚拟计算实例卸载到不同计算装置上的虚拟GPU。在一个实施方案中,API切片可以拦截对图形API的调用并且将调用编排到接口装置。在接口装置内或在API切片级上,接至虚拟GPU 151B-151D的接口可以被接至虚拟GPU 151A的接口置换,使得例如无需修改或重启应用程序就可相对于所述应用程序无缝而透明地迁移图形处理。在一个实施方案中,硬件切片可以将硬件接口装饰到虚拟计算实例的表层并且对所述实例的尝试进行编排以与虚拟GPU 151B-151D交互。
物理计算实例142F和物理GPU 152相对于彼此可以位于同一个栈中、同一个数据中心中的不同栈中、不同的数据中心中、不同的可用区或区域中或任何其他位置上。虚拟计算实例的迁移可以例如被执行来移动到更靠近选定虚拟GPU的底层物理计算实例,使得物理计算实例142F和物理GPU 152处于同一个栈中或另外处于同一个数据中心中的邻近位置处。任何合适的启发法可以用于确定是否迁移虚拟计算实例和/或选择目的地物理计算实例的布置。例如,虚拟计算实例的迁移可以被执行来减少与虚拟化图形处理相关联的网络延迟和/或为虚拟化图形处理减少网络的使用。实例的迁移可以包括实时迁移,使得虚拟计算实例上执行的一个或多个应用程序可以在源实例上暂停并且之后在目的地实例上重新开始。
图13是示出根据一个实施方案的用于扩展虚拟化图形处理的方法的流程图。可以从多租户提供商网络供应虚拟计算实例。多租户提供商网络可以包括多个计算装置,所述多个计算装置被配置成实施多个虚拟计算实例。如1305中所示,一个或多个虚拟GPU(在本文中被称为第一组一个或多个虚拟GPU)可以在供应虚拟计算实例时或在此之后附连到所述虚拟计算实例。虚拟计算实例可以使用物理计算实例的中央处理单元(CPU)资源和存储器资源来实施。第一虚拟GPU可以使用提供商网络的物理GPU资源(例如,一个或多个物理GPU)来实施。物理GPU可以附连到与为虚拟计算实例提供CPU资源的计算装置不同的计算装置。物理计算实例可以经由网络访问物理GPU。
第一虚拟GPU可以提供例如,如与该组所从属的一个或多个虚拟GPU级相关联的特定水平的图形处理能力。如果第一组包括超过一个虚拟GPU,则多个虚拟GPU通常可以(但不一定)具有相同级别。虚拟计算实例可以用于执行一个或多个应用程序。应用程序中的至少一个可以使用第一虚拟GPU,例如来进行图形处理。如果第一组包括超过一个虚拟GPU,则任何合适的技术可以用于在多个虚拟GPU当中分布工作负荷,诸如将输入数据广播到所有虚拟GPU并且使用虚拟GPU来以同时的方式对输入数据的不同部分进行操作。
如1310中所示,可以确定所述实例的需求的变化。需求的变化可以指示所述实例对较高图形处理能力或较低图形处理能力的需求。在一个实施方案中,需求的变化可以(至少部分)基于例如实例的用户的用户输入而确定。与需求相关联的用户输入可以直接指定虚拟GPU的所需级别或虚拟GPU的其他特征,或用户输入可以由弹性图形服务变换和映射到虚拟GPU的所需级别或虚拟GPU的其他特征。由用户指定的需求可以包括对图形处理的GPU需求以及计算需求。GPU需求可以指定推荐的图形处理单元(GPU)级、推荐的视频存储器的大小、或其他GPU特征和/或推荐来运行应用程序的配置。在一个实施方案中,需求可以使用应用程序清单来确定,所述应用程序清单指定用于执行应用程序的平台或环境的所需或推荐的特征(例如,计算和存储器需求),包括物理计算实例或虚拟计算实例的特征。例如,如果新的应用程序在虚拟计算实例的使用期间添加到所述虚拟计算实例,新的应用程序的应用程序清单可能需要高于实例当前(例如,利用第一虚拟GPU)所提供的GPU性能。
在一个实施方案中,需求的变化可以(至少部分)基于性能监控而确定。任何合适的技术可以用于执行对虚拟计算实例和/或第一虚拟GPU的性能监控。性能监控可以确定合适的任一组性能度量,例如与实例对第一虚拟GPU的使用相关的度量。例如,可以在虚拟计算实例的使用期间检测第一虚拟GPU的图形工作负荷。图形工作负荷可以是基于与GPU的使用相关的任何合适的度量,诸如发送到GPU的基元的数量、GPU的所请求的操作的数量、由GPU使用的视频存储器和/或一段时间内的GPU的输出率。检测到的变化可以表示图形工作负荷的增加或减少,例如超出第一虚拟GPU的图形能力的增加或远低于其整体图形能力的减少。例如,如果应用程序使用第一虚拟GPU来产生全屏2D或3D图形,则图形工作负荷可能会增加,使得每秒帧数(fps)降低到可接受的性能的阈值以下。作为另一个示例,在同时执行附加应用程序时,由多个应用程序生成的累积的图形工作负荷可能会对第一虚拟GPU施加超出可接受的性能的阈值的压力。任何合适的技术可以用于监控图形工作负荷并检测其中的变化,并且任何合适的阈值可以用于评定图形工作负荷何时变化到足以证明附连另一组一个或多个虚拟GPU的合理性。
如1315中所示,第二组一个或多个虚拟GPU可以被选择用于与虚拟计算实例一起使用并且附连到所述实例以置换第一虚拟GPU的使用。可以(至少部分)基于需求的变化而选择第二虚拟GPU。第二组虚拟GPU可以提供相对于第一虚拟GPU而言不同的图形处理水平,诸如更低水平或更高水平。图形处理水平可以指代如由任何合适的度量,诸如发送到GPU的基元的数量、GPU的所请求的操作的数量、由GPU使用的视频存储器和/或一段时间内的GPU的输出率所测量的一个或多个虚拟GPU的总体图形处理实力或能力。可以从一组具有不同图形处理能力的虚拟GPU级选择第二虚拟GPU。第二虚拟GPU可以被选择来满足或超过需求,例如以匹配虚拟计算实例的当前或预期的图形工作负荷。因此,第二虚拟GPU可以具有在可接受的性能水平下能够处理图形工作负荷的一个或多个级别。在一个实施方案中,弹性图形服务可以存储每个级别的虚拟GPU的基准或其他度量以指示相对于各种图形工作负荷水平的图形处理能力。
在一个实施方案中,第一组可以包括单一虚拟GPU,并且第二组可以包括多个虚拟GPU,所述多个虚拟GPU可以共同提供比单一虚拟GPU更低或更高的图形处理水平。在一个实施方案中,第一组可以包括多个虚拟GPU,并且第二组可以包括单一虚拟GPU,所述单一虚拟GPU可以提供比多个虚拟GPU更低或更高的图形处理水平。如果第二组包括超过一个虚拟GPU,则多个虚拟GPU通常可以(但不一定)具有相同级别。如果第一组包括超过一个虚拟GPU,则任何合适的技术可以用于在多个虚拟GPU当中分布工作负荷,诸如将输入数据广播到所有虚拟GPU并且使用虚拟GPU来以同时的方式对输入数据的不同部分进行操作。
可以从虚拟计算实例移除第一虚拟GPU,并且可以将第二虚拟GPU附连到虚拟计算实例。在一个实施方案中,弹性图形服务可以与提供商网络的一个或多个其他服务或功能,诸如计算虚拟化功能和/或GPU虚拟化功能交互,以移除第一虚拟GPU并且将第二虚拟GPU附连到实例。第二虚拟GPU可以使用提供商网络的潜在地包括实施第一组的相同的物理GPU资源的物理GPU资源(例如,一个或多个物理GPU)来实施。物理GPU可以附连到与为虚拟计算实例提供CPU资源的计算装置不同的计算装置。物理计算实例可以经由网络访问物理GPU。第二虚拟GPU据说可以附连到虚拟计算实例,或者虚拟计算实例据说可以包括第二虚拟GPU。在一个实施方案中,可以在第二虚拟GPU与一个或多个附加虚拟GPU(潜在地包括第一虚拟GPU)之间共享物理GPU,并且附加虚拟GPU可以附连到附加虚拟计算实例。在一个实施方案中,虚拟计算实例可以经由接口装置访问第二虚拟GPU,所述接口装置包括网络接口和定制硬件接口。经由定制硬件接口,接口装置可以对GPU进行仿真并且将其呈现给虚拟计算实例以包括第二虚拟GPU。经由网络接口,接口装置可以通过网络来与物理GPU进行通信。
如1320中所示,虚拟计算实例的图形处理可以从第一虚拟GPU迁移到第二虚拟GPU。图形处理的迁移可以表示相对于一个或多个应用程序用由第二虚拟GPU提供的图形处理置换由第一虚拟GPU提供的图形处理。图形处理的迁移可以包括相对于一个或多个应用程序中断使用第一虚拟GPU来进行图形处理;以及开始使用第二虚拟GPU来进行图形处理。在一些情况下,可以在应用程序不在使用第一虚拟GPU时执行迁移。更典型地,可以在一个或多个应用程序的执行期间且应用程序在使用第一虚拟GPU的同时开始迁移。在一个实施方案中,图形处理可以(至少部分)基于GPU需求的变化而从第一虚拟GPU迁移到第二虚拟GPU。在一个实施方案中,第二组虚拟GPU可以包括第一组中的虚拟GPU中的一个或多个,使得一个或多个虚拟GPU可以保持附连到虚拟计算实例。在一个实施方案中,可以从虚拟计算实例移除第一虚拟GPU并且将其返回到由提供商网络维护的可用虚拟GPU池。
当应用程序在开始迁移时正在使用第一虚拟GPU时,迁移可以被称为实时迁移。为了实施实时迁移,可以暂停任何当前运行的应用程序,应用程序接至第一虚拟GPU的接口可以被接至第二虚拟GPU的接口置换,任何图形指令和/或数据可以传输到第二虚拟GPU,并且之后第二虚拟GPU可以用于重新开始图形处理。如上文相对于图3所论述,任何合适的技术可以用于将图形处理从虚拟计算实例卸载到不同计算装置上的虚拟GPU。例如,API切片可以拦截对图形API的调用并且将调用编排到向第一虚拟GPU呈现接口的接口装置。在接口装置内或在API切片级上,接至第一虚拟GPU的接口可以被接至第二虚拟GPU的接口置换,使得例如无需修改或重启应用程序就可相对于所述应用程序无缝而透明地迁移图形处理。
转回到图13,如1325中所示,应用程序可以使用第二虚拟GPU在虚拟计算实例上执行。应用程序的执行可以包括虚拟计算实例(例如,底层物理计算实例)和/或第二虚拟GPU(例如,底层物理GPU)上指令的执行。使用第二虚拟GPU执行应用程序可以生成虚拟GPU输出,例如,通过在虚拟GPU上执行指令或以其他方式执行任务而产生的输出。本文描述用于迁移虚拟化图形处理的技术可以与本文描述用于专用虚拟化图形处理的技术一起使用。
如1330中所示,可以将虚拟GPU输出提供到客户端装置。虚拟GPU输出可以从虚拟计算实例或虚拟GPU提供到客户端装置。在一个实施方案中,虚拟GPU输出可以显示在与客户端装置相关联的显示装置上。虚拟GPU输出可以包括像素信息或显示在显示装置上的其他图形数据。使用虚拟GPU执行应用程序可以包括使用图形API来进行所述应用程序的图形处理(例如,加速三维图形处理)。
虚拟化图形处理的布置优化
在一些实施方案中,可以在提供商网络中优化虚拟计算实例和/或虚拟GPU的布置。如本文所使用,优化包括(性能、成本等等的)改进,即使改进并未实现理想或完美状态。物理计算实例可以用于实施虚拟计算实例,并且物理GPU可以用于实施附连到虚拟计算实例的虚拟GPU。使用布置优化的技术,可以基于任何合适的布置标准而在提供商网络中(从一组可用的物理计算实例和/或物理GPU当中)选择虚拟计算实例和/或虚拟GPU的位置。一个或多个布置标准可以是(至少部分)基于与最大化性能、最小化成本、最小化能源使用相关联的度量和/或任何其他合适的度量。布置标准还可以与网络局域性相关联。例如,为了最小化网络延迟和/或网络使用,虚拟计算实例和所附连的虚拟GPU可以布置在同一个数据中心中的同一个栈中,使得底层物理计算实例与物理GPU之间的网络通信可能并不延伸超出架顶式交换机或栈中的其他联网部件。如果同一个栈内的位置不可用,则可以为虚拟计算实例和所附连的虚拟GPU选择同一个数据中心内的邻近位置。可以这种方式不仅对新供应的资源而且对虚拟计算实例和/或所附连的虚拟GPU在它们已经开始使用之后的迁移优化布置。当对如上所述的GPU虚拟化执行扩展时,任何虚拟GPU的位置可以基于布置标准来选择,和/或虚拟计算实例的位置可以基于布置标准来移动。
图14示出根据一个实施方案的用于虚拟化图形处理的布置优化的示例系统环境,包括提供商网络中的多个实例位置和多个GPU位置。提供商网络100可以包括用于多个物理计算实例142A-142N的多个实例位置1440A-1440N。实例位置1440A-1440N可以表示多个栈、多个数据中心和/或多个地理区域。实例位置1440A-1440N中的任一个可以包括一个或多个物理计算实例。例如,物理计算实例142A-142G可以在物理上位于实例位置1440A,并且物理计算实例142H-142N可以在物理上位于实例位置1440N。
提供商网络100还可以包括用于多个物理GPU 152A-152N(例如,包括物理GPU并提供对其访问的图形服务器)的多个GPU位置1450A-1450N。GPU位置1450A-1450N可以表示多个栈、多个数据中心和/或多个地理区域。GPU位置1450A-1450N中的任一个可以包括一个或多个物理GPU。例如,物理GPU 152A-152G可以在物理上位于GPU位置1450A,并且物理GPU152H-152N可以在物理上位于GPU位置1450N。GPU位置中的一些与实例位置中的一些可以处于同一个栈、同一个数据中心和/或同一个地理区域内。布置优化往往可能会设法将虚拟计算实例以及其附连的虚拟GPU布置在同一个栈内或另外布置在彼此附近以最小化延迟。
如上所述,弹性图形服务110可以包括实例类型选择功能120。使用实例类型选择功能120,可以针对客户端选择虚拟计算实例的实例类型。使用实例类型选择功能120,也可以针对客户端选择虚拟GPU的虚拟GPU级。如上所述,实例供应功能130可以供应具有选定实例类型和虚拟GPU级的虚拟计算实例与附连的虚拟GPU。使用本文描述的布置优化技术,可以基于一个或多个布置标准而在提供商网络中选择虚拟计算实例和/或虚拟GPU的位置。
弹性图形服务可以包括位置选择功能1420,所述位置选择功能对提供商网络100中的资源执行位置优化。使用位置选择功能1420,GPU位置1450A-1450N中的特定位置可以被选择用于实施虚拟GPU的物理GPU。GPU位置可以(至少部分)基于一个或多个布置标准1425而选择。使用位置选择功能1420,实例位置1440A-1440N中的特定位置可以被选择用于实施虚拟计算实例的物理计算实例。实例位置也可以(至少部分)基于一个或多个布置标准1425而选择。
图15示出根据一个实施方案的用于虚拟化图形处理的布置优化的示例系统环境的另外的方面,包括在提供商网络中设置有选定实例位置和选定GPU位置的资源。基于布置标准1425中的一个或多个,特定GPU位置1450A可以被选择用于物理GPU 152A。基于布置标准1425中的一个或多个,特定实例位置1440A可以被选择用于物理计算实例141B。用于选择GPU位置的位置标准可以是与用于选择实例位置的布置标准相同的标准或不同的标准。在一个实施方案中,可以针对特定虚拟计算实例以及其附连的虚拟GPU优化实例位置和GPU位置两者。在一个实施方案中,用于优化特定虚拟计算实例和/或虚拟GPU的布置的布置标准可以由提供商网络的客户提供或批准。在一个实施方案中,用于优化特定虚拟计算实例和/或虚拟GPU的布置的布置标准可以由提供商网络的管理者提供或批准。在一个实施方案中,用于优化特定虚拟计算实例和/或虚拟GPU的布置的布置标准可以使用默认配置来确定。
一个或多个布置标准1425可以包括以下各项的度量的优化(例如,改进)或与之相关联:性能(例如,最大化性能)、资源使用(例如,最小化资源使用)、成本(例如,最小化成本或适合客户指定的预算内的资源成本)、能源使用(例如,最小化能源使用或优先考虑“绿色”能源)、网络局域性(例如,最小化两个或更多个资源之间的联网接近度);和/或任何其他合适的度量。用作布置标准的性能度量和成本度量往往可能会与物理计算实例对物理GPU的使用相关联。性能度量可以包括如在提供商网络内和/或在提供商网络与客户端装置之间所测量的网络相关度量,诸如延迟和带宽。性能度量可以包括与处理器使用、GPU使用、存储器使用、存储使用等等相关的任何其他度量。作为一个示例,为了最小化网络延迟和/或带宽,可以在与物理GPU 152A相同的栈内选择物理计算实例142A的实例位置1440A,使得底层物理计算实例与物理GPU之间的网络通信可能并不延伸超出栈中的架顶式交换机。如果同一个栈内的位置不可用,则可以选择邻近物理GPU(例如,在同一个数据中心内)的实例位置来优化布置标准。作为另一个示例,最接近客户端装置180A的数据中心中的GPU位置1450A可以被选择来最小化物理GPU与客户端装置之间的延迟,其中数据中心到客户端装置的接近度是基于预期或历史延迟和/或基于地理接近度而测量。
使用实例供应功能130,虚拟GPU 151B可以使用选定GPU位置1450A中的物理GPU152A来供应。可以从一组具有不同图形处理能力的虚拟GPU级选择虚拟GPU 151B。虚拟GPU可以被选择来满足或超过任何适用的GPU需求,例如以匹配虚拟计算实例的当前或预期的图形工作负荷。使用实例供应功能130,虚拟计算实例141B可以使用选定实例位置1440A中的物理计算实例142A来供应。如本文所使用,供应虚拟计算实例通常包括为客户保留底层物理计算实例(例如,来自可用的物理计算实例池和其他资源)的资源(例如,计算和存储器资源);安装或启动所需软件(例如,操作系统);以及使得虚拟计算实例可供客户用来执行由所述客户指定的任务。虚拟计算实例可以选自具有不同能力的多个实例类型。
对于网络局域性的布置优化可以(至少部分)基于网络内的接近度而尝试对多个资源(例如,一个或多个物理计算实例和一个或多个物理GPU)进行分组。网络局域性可以指代资源所从属的网络中的一个或多个位置、连接、关联或区。资源自身可以是节点或特定网络位置(例如,网络地址)以及因此网络局域性。网络局域性可以基于网络路由器、交换机或资源所连接的其他网络装置或基础设施(例如,网络骨干)而确定。在一些实施方案中,网络局域性可以根据逻辑上关联的网络装置或资源来逻辑地确定。资源可以从属于多个网络局域性,诸如连接到特定网络路由器,进而可以连接到其他网络路由器或联网装置。实例位置和/或GPU位置可以(至少部分)基于网络局域性而选择。
图16A示出根据一个实施方案的提供商网络中的不同栈中的多个实例位置和多个GPU位置的示例。如上所述,提供商网络100可以包括用于多个物理计算实例142A-142N的多个实例位置1440A-1440N,并且还包括用于多个物理GPU 152A-152N(例如,包括物理GPU并提供对其访问的图形服务器)的多个GPU位置1450A-1450N。在一个实施方案中,提供商网络100可以包括一个或多个数据中心或地理位置中的多个栈1600A-1600N。栈1600A-1600N中的任一个可以包括一个或多个实例位置以及还有一个或多个GPU位置。如图16A的示例中所示,栈1600A可以包括在实例位置1440A处的物理计算实例142A-142G,并且栈1600A还可以包括在GPU位置1450A处的物理GPU 152A-152G。类似地,栈1600N可以包括在实例位置1440N处的物理计算实例142H-142N,并且栈1600N还可以包括在GPU位置1450N处的物理GPU152H-152N。
每个栈可以具有联网部件,诸如架顶式交换机(诸如用于栈1600A的交换机1610A和用于栈1600A的交换机1610N)。架顶式交换机1610A-1610N可以调停对应的栈内的部件的网络通信并且对所述栈之外的网络的其他部分提供网络连接。当虚拟计算实例141B与所附连的虚拟GPU 151B进行通信时,在底层物理计算实例142A与底层物理GPU 152A之间发送的数据可能不会经过交换机1610A。因此,为了对网络局域性进行优化,布置优化往往可能会设法将虚拟计算实例以及其附连的虚拟GPU布置在同一个栈内或另外在数据中心中布置在彼此附近以最小化延迟和/或最小化超出所述栈的网络带宽。
图16B示出根据一个实施方案的提供商网络中的不同数据中心中的多个实例位置和多个GPU位置的示例。如上所述,提供商网络100可以包括用于多个物理计算实例142A-142N的多个实例位置1440A-1440N,并且还包括用于多个物理GPU 152A-152N(例如,包括物理GPU并提供对其访问的图形服务器)的多个GPU位置1450A-1450N。在一个实施方案中,提供商网络100可以包括在一个或多个地理位置处的多个数据中心1620A-1620N。数据中心1620A-1620N中的每一个可以表示单一设施处或在地理上接近设施组的一组计算资源、处理资源、存储资源、存储器资源等等。数据中心1620A-1620N中的任一个可以包括一个或多个实例位置以及还有一个或多个GPU位置。如图16B的示例中所示,数据中心1620A可以包括在实例位置1440A处的物理计算实例142A-142G,并且数据中心1620A还可以包括在GPU位置1450A处的物理GPU 152A-152G。类似地,数据中心1620N可以包括在实例位置1440N处的物理计算实例142H-142N,并且数据中心1620N还可以包括在GPU位置1450N处的物理GPU152H-152N。数据中心1620A-1620N在其相对于各种客户端装置的接近度方面可以变化。为了对网络局域性进行优化,布置优化可以基于相对于特定客户端装置的接近度而设法将虚拟计算实例和/或其附连的虚拟GPU布置在数据中心中以相对于所述客户端装置最小化延迟。
图17A是根据一个实施方案的用于虚拟化图形处理的布置优化的方法的流程图,包括对用来实施虚拟GPU的物理GPU进行位置选择。如1705中所示,可以在提供商网络中使用物理计算实例来供应虚拟计算实例。提供商网络可以包括用于多个物理计算实例的多个实例位置。例如,实例位置可以包括多个栈、多个数据中心和/或多个地理区域。虚拟计算实例可以供应在这些实例位置中的特定实例位置处。
所述方法可以优化虚拟GPU的布置以与虚拟计算实例一起使用。如本文所使用,优化包括(性能、成本等等的)改进,即使改进并未实现理想或完美状态。提供商网络还可以包括用于多个物理GPU(例如,包括物理GPU并提供对其访问的图形服务器)的多个GPU位置。例如,GPU位置可以包括多个栈、多个数据中心和/或多个地理区域。GPU位置中的一些与实例位置中的一些可以处于同一个栈、同一个数据中心和/或同一个地理区域内。布置优化往往可能会设法将虚拟计算实例以及其附连的虚拟GPU布置在同一个栈内或另外布置在彼此附近以最小化延迟。
如1710中所示,可以选择这些GPU位置中的特定GPU位置来用于物理GPU。GPU位置可以(至少部分)基于一个或多个布置标准而选择。一个或多个布置标准可以包括以下各项的度量的优化(例如,改进):性能(例如,最大化性能)、资源使用(例如,最小化资源使用)、成本(例如,最小化成本或适合客户指定的预算内的资源成本)、能源使用(例如,最小化能源使用或优先考虑“绿色”能源);和/或任何其他合适的度量。用作布置标准的性能度量和成本度量往往可能会与物理计算实例对物理GPU的使用相关联。性能度量可以包括如在提供商网络内和/或在提供商网络与客户端装置之间所测量的网络相关度量,诸如延迟和带宽。性能度量可以包括与处理器使用、GPU使用、存储器使用、存储使用等等相关的任何其他度量。作为一个示例,为了最小化网络延迟和/或带宽,可以在与物理计算实例相同的栈内选择物理GPU的GPU位置,使得底层物理计算实例与物理GPU之间的网络通信可能并不延伸超出栈中的架顶式交换机。如果同一个栈内的位置不可用,则可以选择邻近物理计算实例(例如,在同一个数据中心内)的GPU位置来优化布置标准。作为另一个示例,最接近客户端装置的数据中心中的GPU位置可以被选择来最小化物理GPU与客户端装置之间的延迟,其中数据中心到客户端装置的接近度是基于预期或历史延迟和/或基于地理接近度而测量。
如1715中所示,可以使用选定GPU位置处的物理GPU来供应虚拟GPU。可以从一组具有不同图形处理能力的虚拟GPU级选择虚拟GPU。虚拟GPU可以被选择来满足或超过任何适用的GPU需求,例如以匹配虚拟计算实例的当前或预期的图形工作负荷。
如1720中所示,虚拟GPU可以附连到虚拟计算实例。在一个实施方案中,弹性图形服务可以与提供商网络的一个或多个其他服务或功能,诸如计算虚拟化功能和/或GPU虚拟化功能交互,以将虚拟GPU附连到实例。用来实施虚拟GPU的物理GPU可以附连到与为虚拟计算实例提供CPU资源的计算装置不同的计算装置。物理计算实例可以经由网络访问物理GPU。虚拟GPU据说可以附连到虚拟计算实例,或者虚拟计算实例据说可以包括虚拟GPU。在一个实施方案中,可以在虚拟GPU与一个或多个附加虚拟GPU之间共享物理GPU,并且附加虚拟GPU可以附连到附加虚拟计算实例。在一个实施方案中,虚拟计算实例可以经由接口装置访问虚拟GPU,所述接口装置包括网络接口和定制硬件接口。经由定制硬件接口,接口装置可以对GPU进行仿真并且将其呈现给虚拟计算实例以包括虚拟GPU。经由网络接口,接口装置可以通过网络来与物理GPU进行通信。
在一个实施方案中,不同的虚拟GPU在如1715和1720中所示那样供应和附连虚拟GPU之前可能已附连到虚拟计算实例。新附连的虚拟GPU可以表示相对于先前附连的虚拟GPU的一个或多个布置标准的改进。虚拟计算实例的图形处理可以使用以上论述的迁移技术而从先前附连的虚拟GPU迁移到新附连的虚拟GPU。
如1725中所示,应用程序可以使用虚拟GPU在虚拟计算实例上执行。应用程序的执行可以包括虚拟计算实例(例如,底层物理计算实例)和/或虚拟GPU(例如,底层物理GPU)上指令的执行。使用虚拟GPU执行应用程序可以生成虚拟GPU输出,例如,通过在虚拟GPU上执行指令或以其他方式执行任务而产生的输出。
如1730中所示,可以将虚拟GPU输出提供到客户端装置。虚拟GPU输出可以从虚拟计算实例或虚拟GPU提供到客户端装置。在一个实施方案中,虚拟GPU输出可以显示在与客户端装置相关联的显示装置上。虚拟GPU输出可以包括像素信息或显示在显示装置上的其他图形数据。使用虚拟GPU执行应用程序可以包括使用图形API来进行所述应用程序的图形处理(例如,加速三维图形处理)。
图17B是根据一个实施方案的用于虚拟化图形处理的布置优化的方法的流程图,包括对用来实施虚拟计算实例的物理计算实例进行位置选择。如1706中所示,可以在提供商网络中使用物理GPU来供应虚拟GPU。提供商网络可以包括用于多个物理GPU的多个GPU位置。例如,GPU位置可以包括多个栈、多个数据中心和/或多个地理区域。虚拟GPU可以供应在这些GPU位置中的特定GPU位置处。可以从一组具有不同图形处理能力的虚拟GPU级选择虚拟GPU。虚拟GPU可以被选择来满足或超过任何适用的GPU需求,例如以匹配虚拟计算实例的当前或预期的图形工作负荷。
所述方法可以优化虚拟计算实例的布置以与虚拟GPU一起使用。如本文所使用,优化包括(性能、成本等等的)改进,即使改进并未实现理想或完美状态。提供商网络还可以包括用于多个物理计算实例的多个实例位置。例如,实例位置可以包括多个栈、多个数据中心和/或多个地理区域。实例位置中的一些与GPU位置中的一些可以处于同一个栈、同一个数据中心和/或同一个地理区域内。布置优化往往可能会设法将虚拟计算实例以及其附连的虚拟GPU布置在同一个栈内或另外布置在彼此附近以最小化延迟。
如1711中所示,可以选择这些实例位置中的特定实例位置来用于物理计算实例。实例位置可以(至少部分)基于一个或多个布置标准而选择。一个或多个布置标准可以包括以下各项的度量的优化(例如,改进):性能(例如,最大化性能)、资源使用(例如,最小化资源使用)、成本(例如,最小化成本或适合客户指定的预算内的资源成本)、能源使用(例如,最小化能源使用或优先考虑“绿色”能源);和/或任何其他合适的度量。用作布置标准的性能度量和成本度量往往可能会与物理计算实例对物理GPU的使用相关联。性能度量可以包括如在提供商网络内和/或在提供商网络与客户端装置之间所测量的网络相关度量,诸如延迟和带宽。性能度量可以包括与处理器使用、GPU使用、存储器使用、存储使用等等相关的任何其他度量。作为一个示例,为了最小化网络延迟和/或带宽,可以在与物理GPU相同的栈内选择物理计算实例的实例位置,使得底层物理计算实例与物理GPU之间的网络通信可能并不延伸超出栈中的架顶式交换机。如果同一个栈内的位置不可用,则可以选择邻近物理GPU(例如,在同一个数据中心内)的实例位置来优化布置标准。作为另一个示例,最接近客户端装置的数据中心中的实例位置可以被选择来最小化物理计算实例与客户端装置之间的延迟,其中数据中心到客户端装置的接近度是基于预期或历史延迟和/或基于地理接近度而测量。
如1716中所示,可以使用选定实例位置处的物理计算实例来供应虚拟计算实例。如本文所使用,供应虚拟计算实例通常包括为客户保留底层物理计算实例(例如,来自可用的物理计算实例池和其他资源)的资源(例如,计算和存储器资源);安装或启动所需软件(例如,操作系统);以及使得虚拟计算实例可供客户用来执行由所述客户指定的任务。虚拟计算实例可以选自具有不同能力的多个实例类型。
如1720中所示,虚拟GPU可以附连到虚拟计算实例。在一个实施方案中,弹性图形服务可以与提供商网络的一个或多个其他服务或功能,诸如计算虚拟化功能和/或GPU虚拟化功能交互,以将虚拟GPU附连到实例。用来实施虚拟GPU的物理GPU可以附连到与为虚拟计算实例提供CPU资源的计算装置不同的计算装置。物理计算实例可以经由网络访问物理GPU。虚拟GPU据说可以附连到虚拟计算实例,或者虚拟计算实例据说可以包括虚拟GPU。在一个实施方案中,可以在虚拟GPU与一个或多个附加虚拟GPU之间共享物理GPU,并且附加虚拟GPU可以附连到附加虚拟计算实例。在一个实施方案中,虚拟计算实例可以经由接口装置访问虚拟GPU,所述接口装置包括网络接口和定制硬件接口。经由定制硬件接口,接口装置可以对GPU进行仿真并且将其呈现给虚拟计算实例以包括虚拟GPU。经由网络接口,接口装置可以通过网络来与物理GPU进行通信。
如1725中所示,应用程序可以使用虚拟GPU在虚拟计算实例上执行。应用程序的执行可以包括虚拟计算实例(例如,底层物理计算实例)和/或虚拟GPU(例如,底层物理GPU)上指令的执行。使用虚拟GPU执行应用程序可以生成虚拟GPU输出,例如,通过在虚拟GPU上执行指令或以其他方式执行任务而产生的输出。
如1730中所示,可以将虚拟GPU输出提供到客户端装置。虚拟GPU输出可以从虚拟计算实例或虚拟GPU提供到客户端装置。在一个实施方案中,虚拟GPU输出可以显示在与客户端装置相关联的显示装置上。虚拟GPU输出可以包括像素信息或显示在显示装置上的其他图形数据。使用虚拟GPU执行应用程序可以包括使用图形API来进行所述应用程序的图形处理(例如,加速三维图形处理)。
图17C是根据一个实施方案的用于虚拟化图形处理的布置优化的方法的流程图,包括对用来实施虚拟GPU的物理GPU进行位置选择并且对用来实施虚拟计算实例的物理计算实例进行位置选择。所述方法可以优化虚拟GPU的布置以及虚拟GPU所附连的虚拟计算实例的布置。如本文所使用,优化包括(性能、成本等等的)改进,即使改进并未实现理想或完美状态。提供商网络可以包括用于多个物理GPU(例如,包括物理GPU并提供对其访问的图形服务器)的多个GPU位置。例如,GPU位置可以包括多个栈、多个数据中心和/或多个地理区域。提供商网络还可以包括用于多个物理计算实例的多个实例位置。实例位置可以包括多个栈、多个数据中心和/或多个地理区域。GPU位置中的一些与实例位置中的一些可以处于同一个栈、同一个数据中心和/或同一个地理区域内。布置优化往往可能会设法将虚拟计算实例以及其附连的虚拟GPU布置在同一个栈内或另外布置在彼此附近以最小化延迟。
如1710中所示,可以选择GPU位置中的特定GPU位置来用于物理GPU。GPU位置可以(至少部分)基于一个或多个布置标准而选择。一个或多个布置标准可以包括以下各项的度量的优化(例如,改进):性能(例如,最大化性能)、资源使用(例如,最小化资源使用)、成本(例如,最小化成本或适合客户指定的预算内的资源成本)、能源使用(例如,最小化能源使用或优先考虑“绿色”能源);和/或任何其他合适的度量。用作布置标准的性能度量和成本度量往往可能会与物理计算实例对物理GPU的使用相关联。性能度量可以包括如在提供商网络内和/或在提供商网络与客户端装置之间所测量的网络相关度量,诸如延迟和带宽。性能度量可以包括与处理器使用、GPU使用、存储器使用、存储使用等等相关的任何其他度量。作为一个示例,为了最小化网络延迟和/或带宽,可以在与物理计算实例相同的栈内选择物理GPU的GPU位置,使得底层物理计算实例与物理GPU之间的网络通信可能并不延伸超出栈中的架顶式交换机。如果同一个栈内的位置不可用,则可以选择邻近物理计算实例(例如,在同一个数据中心内)的GPU位置来优化布置标准。作为另一个示例,最接近客户端装置的数据中心中的GPU位置可以被选择来最小化物理GPU与客户端装置之间的延迟,其中数据中心到客户端装置的接近度是基于预期或历史延迟和/或基于地理接近度而测量。
如1711中所示,可以选择实例位置中的特定实例位置来用于物理计算实例。实例位置可以(至少部分)基于一个或多个布置标准而选择。再次,一个或多个布置标准可以包括以下各项的度量的优化(例如,改进):性能(例如,最大化性能)、资源使用(例如,最小化资源使用)、成本(例如,最小化成本或适合客户指定的预算内的资源成本)、能源使用(例如,最小化能源使用或优先考虑“绿色”能源);和/或任何其他合适的度量。作为一个示例,为了最小化网络延迟和/或带宽,可以在与物理GPU相同的栈内选择物理计算实例的实例位置,使得底层物理计算实例与物理GPU之间的网络通信可能并不延伸超出栈中的架顶式交换机。如果同一个栈内的位置不可用,则可以选择邻近物理GPU(例如,在同一个数据中心内)的实例位置来优化布置标准。作为另一个示例,最接近客户端装置的数据中心中的实例位置可以被选择来最小化物理计算实例与客户端装置之间的延迟,其中数据中心到客户端装置的接近度是基于预期或历史延迟和/或基于地理接近度而测量。
如1715中所示,可以使用选定GPU位置处的物理GPU来供应虚拟GPU。可以从一组具有不同图形处理能力的虚拟GPU级选择虚拟GPU。虚拟GPU可以被选择来满足或超过任何适用的GPU需求,例如以匹配虚拟计算实例的当前或预期的图形工作负荷。
如1716中所示,可以使用选定实例位置处的物理计算实例来供应虚拟计算实例。如本文所使用,供应虚拟计算实例通常包括为客户保留底层物理计算实例(例如,来自可用的物理计算实例池和其他资源)的资源(例如,计算和存储器资源);安装或启动所需软件(例如,操作系统);以及使得虚拟计算实例可供客户用来执行由所述客户指定的任务。虚拟计算实例可以选自具有不同能力的多个实例类型。
如1720中所示,虚拟GPU可以附连到虚拟计算实例。在一个实施方案中,弹性图形服务可以与提供商网络的一个或多个其他服务或功能,诸如计算虚拟化功能和/或GPU虚拟化功能交互,以将虚拟GPU附连到实例。用来实施虚拟GPU的物理GPU可以附连到与为虚拟计算实例提供CPU资源的计算装置不同的计算装置。物理计算实例可以经由网络访问物理GPU。虚拟GPU据说可以附连到虚拟计算实例,或者虚拟计算实例据说可以包括虚拟GPU。在一个实施方案中,可以在虚拟GPU与一个或多个附加虚拟GPU之间共享物理GPU,并且附加虚拟GPU可以附连到附加虚拟计算实例。在一个实施方案中,虚拟计算实例可以经由接口装置访问虚拟GPU,所述接口装置包括网络接口和定制硬件接口。经由定制硬件接口,接口装置可以对GPU进行仿真并且将其呈现给虚拟计算实例以包括虚拟GPU。经由网络接口,接口装置可以通过网络来与物理GPU进行通信。
在一个实施方案中,不同的虚拟GPU在如1715和1720中所示那样供应和附连虚拟GPU之前可能已附连到虚拟计算实例。新附连的虚拟GPU可以表示相对于先前附连的虚拟GPU的一个或多个布置标准的改进。虚拟计算实例的图形处理可以使用以上论述的迁移技术而从先前附连的虚拟GPU迁移到新附连的虚拟GPU。
如1725中所示,应用程序可以使用虚拟GPU在虚拟计算实例上执行。应用程序的执行可以包括虚拟计算实例(例如,底层物理计算实例)和/或虚拟GPU(例如,底层物理GPU)上指令的执行。使用虚拟GPU执行应用程序可以生成虚拟GPU输出,例如,通过在虚拟GPU上执行指令或以其他方式执行任务而产生的输出。
如1730中所示,可以将虚拟GPU输出提供到客户端装置。虚拟GPU输出可以从虚拟计算实例或虚拟GPU提供到客户端装置。在一个实施方案中,虚拟GPU输出可以显示在与客户端装置相关联的显示装置上。虚拟GPU输出可以包括像素信息或显示在显示装置上的其他图形数据。使用虚拟GPU执行应用程序可以包括使用图形API来进行所述应用程序的图形处理(例如,加速三维图形处理)。
可以这种方式不仅对新供应的资源而且对虚拟计算实例和/或所附连的虚拟GPU在它们已经开始使用之后的迁移优化布置标准。当对如上所述的GPU虚拟化执行扩展时,任何虚拟GPU的位置可以基于布置标准来选择,和/或虚拟计算实例的位置可以基于布置标准来移动。例如,如果虚拟GPU不足以满足虚拟计算实例的GPU需求,则虚拟GPU和虚拟计算实例两者可以移动到一组不同的位置,其中可以供应能力足够的级别的虚拟GPU。类似地,如果虚拟计算实例需要迁移到不同的位置,则同样可以迁移所附连的虚拟GPU的位置以优化一个或多个布置标准。如果对实例类型和/或GPU级的资源需求(基于用户输入和/或性能监控)随时间而变化,则虚拟计算实例和/或所附连的虚拟GPU(以及往往是两者)可以迁移到新的位置来用于优化布置标准。如果资源可用性随时间而变化,则虚拟计算实例和/或所附连的虚拟GPU(以及往往是两者)可以迁移到新的位置来用于优化布置标准。如果资源成本随时间而变化,则虚拟计算实例和/或所附连的虚拟GPU(以及往往是两者)可以迁移到新的位置来用于优化布置标准。
在一个实施方案中,诸如虚拟计算实例和/或虚拟GPU的资源的迁移可以基于布置评分而执行。可以相对于一个或多个布置标准生成对资源主机处的资源的当前布置的布置评分。布置标准如上所述可以用于在提供商网络100中优化资源布置。例如,布置标准可以包括:资源连同为分布式资源的一部分的其他资源、有效字节、每秒输入/输出操作(IOP)或时隙的配置;资源利用平衡,诸如字节对IOP平衡;对容量分割的影响;硬件/软件特性;和/或各种所需的基于位置的配置。可能最优的是将诸如虚拟GPU的资源布置在与诸如虚拟计算实例的相关资源相同(例如,连接到同一个网络路由器)的基础设施区中。布置评分可以反映当前布置相对于更为优化的场景(例如,同一个网络路由器)接近度如何的评分。评分是多个不同布置标准的考虑到对资源、资源主机和/或整个分布式系统的影响的综合评分。
可以对诸如物理计算实例的资源主机和(托管物理GPU的)图形服务器进行评估以确定那些可以托管诸如虚拟计算实例或虚拟GPU的资源的资源主机。例如,可能不会考虑不满足特定条件的主机。这类条件可以包括但不限于:逻辑组(例如,识别即将在其中布置资源的特定服务器池)、托管资源的能力或容量(例如,用来存储数据的足够的字节、足够的IOP带宽、安装的适当的硬件和/或软件等)、位置或多样性限制(例如,为分布式资源的一部分的资源无法布置在与托管分布式资源的另一个资源的另一个资源主机相同的服务器栈处的资源主机上)和/或明确被排除的资源主机(例如,黑名单)。可以托管资源的其余可用资源主机之后可以被评为潜在目的地主机。例如,可以对可能的目的地资源主机处的资源的布置生成布置评分。在至少一些实施方案中,可用资源主机的子集可以具有像可能的布置那样生成的评分,而在其他实施方案中,可以通过生成布置评分来考虑所有可用资源主机。
可以确定资源的当前布置的布置评分与可能布置的评分之间的差值并且将其与最优阈值进行比较。例如,差值可以是与阈值比较(差值>0.3)的一个值。如果任何可能布置的差值都未超过最优阈值,则可以选择对另一个资源进行评估。然而,如果任何布置的差值超过资源,则所述资源可以被识别为用于迁移的候选资源。产生最大差值的可能目的地可以被识别为目的地主机(如果对超过一个目的地主机进行评估的话)。
在至少一些实施方案中,可以指派用于执行从所述资源到目的地资源主机的迁移的优先级。优先因素可以用于评价、衡量、生成或另外指示所指派的优先级。例如,优先因素可以包括:当前与可能目的地之间的差值(例如,有利于执行带来更大改进的那些迁移)、资源年龄或历史(例如,更新的资源不太可能同样长时间存在并且因此迁移可能不会同样重要)、执行迁移的规模或成本(例如,如果资源是复杂的部件或服务或其他资源密集型迁移,则会延迟迁移)、和/或局部网络状态(例如,延迟迁移操作使其无法在可能处于网络中的分布式系统内的位置处执行,或因前台处理所致的其他资源限制,诸如服务客户端请求)。可以衡量、组合、预定或选择性地应用这些因素连同其他因素来确定迁移操作的优先级。
说明性计算机系统
在至少一些实施方案中,实施本文描述的一种或多种技术的一部分或全部的计算机系统可以包括一种计算机系统,所述计算机系统包括或被配置来访问一个或多个计算机可读介质。图18示出了这种计算装置3000。在示出的实施方案中,计算装置3000包括经由输入/输出(I/O)接口3030耦接到系统存储器3020的一个或多个处理器3010。计算装置3000还包括耦接到I/O接口3030的网络接口3040。
在各种实施方案中,计算装置3000可以为包括一个处理器3010的单处理器系统或包括若干处理器3010(例如,两个、四个、八个或另一合适的数目)的多处理器系统。处理器3010可以包括能够执行指令的任何合适的处理器。例如,在各种实施方案中,处理器3010可以是实施各种指令集架构(“ISA”)中任一种架构,诸如x86、PowerPC、SPARC或MIPS ISA或任何其他合适的ISA的处理器。在多处理器系统中,处理器3010中的每一个通常可以但不一定实施相同的ISA。
系统存储器3020可以被配置来存储可由处理器3010访问的程序指令和数据。在各种实施方案中,系统存储器3020可以使用任何合适的存储器技术来实施,诸如静态随机存取存储器(SRAM)、同步动态RAM(SDRAM)、非易失性/快闪型存储器或任何其他类型的存储器。在所示的实施方案中,实施一个或多个所需功能的程序指令和数据(诸如上文描述的那些方法、技术和数据)被示出作为代码(即,程序指令)3025和数据3026存储在系统存储器3020内。
在一个实施方案中,I/O接口3030可被配置来协调处理器3010、系统存储器3020和装置中的任何外围装置之间的I/O流量,所述外围装置包括网络接口3040或其他外围接口。在一些实施方案中,I/O接口3030可以执行任何必需协议、时序或其他数据转换以将来自一个部件(例如,系统存储器3020)的数据信号转换成适于由另一个部件(例如,处理器3010)使用的格式。在一些实施方案中,I/O接口3030可以包括对经由各种类型外围总线,例如像外围部件互连(PCI)总线标准或通用串行总线(USB)标准的变型附连的装置的支持。例如,在一些实施方案中,I/O接口3030的功能可以分到两个或更多个单独的部件中,例如像北桥和南桥。另外,在一些实施方案中,I/O接口3030的一些或全部功能,诸如接至系统存储器3020的接口可以直接并入到处理器3010中。
网络接口3040可以被配置来允许数据在计算装置3000与附连到一个或多个网络3050的其他装置3060之间进行交换。在各种实施方案中,网络接口3040可以支持经由任何合适的有线或无线通用数据网络,例如像各类以太网网络进行通信。另外,网络接口3040可以支持经由电信/电话网络诸如模拟语音网络或数字光纤通信网络,经由存储区域网络诸如光纤信道SAN,或者经由任何其他合适类型的网络和/或协议进行通信。
在一些实施方案中,系统存储器3020可以是计算机可读(即,计算机可访问)介质的一个实施方案,所述计算机可读介质被配置来存储如上所述用于实施对应方法和设备的实施方案的程序指令和数据。然而,在其他实施方案中,可以在不同类型的计算机可读介质上接收、发送或存储程序指令和/或数据。一般而言,计算机可读介质可以包括非暂态存储介质或存储器介质,诸如磁性或光学介质,例如经由I/O接口3030耦接到计算装置3000的磁盘或DVD/CD。非暂态计算机可读存储介质还可以包括可以作为系统存储器3020或另一类型存储器而被包括在计算装置3000的一些实施方案中的任何易失性或非易失性介质,诸如RAM(例如,SDRAM、DDR SDRAM、RDRAM、SRAM等)、ROM等。另外,计算机可读介质可以包括传输介质或信号,诸如经由通信介质,诸如(诸如可以经由网络接口3040实施的)网络和/或无线链路传送的电信号、电磁信号或数字信号。多个计算装置,诸如图18所示的部分或全部可以用于实施各种实施方案中的所描述的功能;例如在各种不同的装置和服务器上运行的软件部件可以协作来提供所述功能。在一些实施方案中,所描述的功能的部分可以使用存储装置、网络装置或各种类型的计算机系统来实施。如本文所使用,术语“计算装置”指代至少所有这些类型的装置并且不限于这些类型的装置。
如附图所示和本文所述的各种方法表示方法的实施方案的示例。所述方法可以在软件、硬件或其组合中实施。在所述方法的各种方法中,可以改变步骤的次序,并且可以添加、再订购、组合、省略、修改等各种元件。所述步骤的各种步骤可以自动地(例如,而不需要用户输入直接激励)和/或以程序方式(例如,根据程序指令)执行。
在本发明的说明书中使用的术语在本文中仅用于描述具体实施方案的目的,而不是意图限制本发明。除非上下文另外明确指明,否则如本发明的说明书和所附权利要求中所使用的单数形式“一个”、“一种”和“所述”同样意图包括复数形式。还将理解,如本文所使用的术语“和/或”指代并涵盖一个或多个相关联的列出项的任何及所有可能的组合。将进一步理解,术语“包括(includes)”、“包括(including)”、“包含(comprises)”和/或“包含(comprising)”在本说明书中使用时明确说明存在所述特征、整体、步骤、操作、元件和/或部件,但是并不排除存在或添加一个或多个其他特征、整体、步骤、操作、元件、部件和/或其组合。
如本文所使用,术语“如果”可以被解释为表示“在…时”或“在…后”或“响应于确定”或“响应于检测到”,这取决于上下文。类似地,短语“如果确定”或“如果检测到[所陈述的条件或事件]”可以被解释为表示“在确定后”或“响应于确定”或“在检测到[所陈述的条件或事件]后”或“响应于检测到[所陈述的条件或事件]”,这取决于上下文。
还将理解,虽然术语第一、第二等在本文中可以用于描述各种元件,但是这些元件应不受这些术语限制。这些术语仅用于区分元件。例如,在不脱离本发明的范围的情况下,第一接触可以被称为第二接触,并且类似地,第二接触可以被称为第一接触。第一接触和第二接触都是接触,但是它们不是同一接触。
根据下列条款可以更好理解前述内容:
条款1.一种系统,所述系统包括:
虚拟计算实例,其中所述虚拟计算实例使用物理计算实例的中央处理单元(CPU)资源和存储器资源来实施,其中第一虚拟图形处理单元(GPU)附连到所述虚拟计算实例,其中所述第一虚拟GPU使用所述虚拟计算实例可经由网络访问的物理GPU资源来实施,并且其中所述虚拟计算实例由多租户提供商网络提供;以及
一个或多个计算装置,所述一个或多个计算装置被配置来实施弹性图形服务,其中所述弹性图形服务被配置来:
确定所述虚拟计算实例的GPU需求的变化;
至少部分基于所述GPU需求的变化而选择第二虚拟GPU,其中所述第二虚拟GPU至少部分基于计算或存储器资源而从多个虚拟GPU级中进行选择,并且其中所述第二虚拟GPU提供相对于所述第一虚拟GPU而言不同的图形处理水平;以及
将所述第二虚拟GPU附连到所述虚拟计算实例,其中所述第二虚拟GPU使用所述物理GPU资源来实施;并且
其中所述虚拟计算实例被配置来:
将图形处理从所述第一虚拟GPU迁移到所述第二虚拟GPU;以及
使用所述第二虚拟GPU来执行应用程序。
条款2.如条款1所述的系统,其中所述GPU需求的变化至少部分基于对所述虚拟计算实例或所述第一虚拟GPU的性能监控而确定。
条款3.如条款1所述的系统,其中所述GPU需求的变化由所述虚拟计算实例的用户指定。
条款4.如条款1所述的系统,其中其中所述虚拟计算实例被配置来:
使用所述第一虚拟GPU来开始所述应用程序的执行;以及
使用所述第二虚拟GPU来继续所述应用程序的执行。
条款5.一种计算机实施的方法,所述方法包括:
将第一组一个或多个虚拟图形处理单元(GPU)附连到多租户提供商网络的虚拟计算实例,其中所述多租户提供商网络包括多个计算装置,所述多个计算装置被配置来实施多个虚拟计算实例,并且其中所述第一组一个或多个虚拟GPU使用所述虚拟计算实例可经由网络访问的物理GPU资源来实施;
至少部分基于所述虚拟计算实例的需求的变化而用第二组一个或多个虚拟GPU为所述虚拟计算实例置换所述第一组一个或多个虚拟GPU;
将所述虚拟计算实例的处理从所述第一组一个或多个虚拟GPU迁移到所述第二组一个或多个虚拟GPU;以及
在所述虚拟计算实例上使用所述第二组一个或多个虚拟GPU来执行应用程序。
条款6.如条款5所述的方法,其中所述需求的变化至少部分基于所述虚拟计算实例或所述第一虚拟GPU的性能而确定。
条款7.如条款5所述的方法,其中所述需求的变化由所述虚拟计算实例的用户指定。
条款8.如条款5所述的方法,其中所述应用程序的执行使用所述第一组一个或多个虚拟GPU来开始并且使用所述第二组一个或多个虚拟GPU来继续。
条款9.如条款5所述的方法,其中所述第二组一个或多个虚拟GPU提供相对于所述第一组一个或多个虚拟GPU而言不同的图形处理水平。
条款10.如条款5所述的方法,其中用所述第二组一个或多个虚拟GPU置换所述第一组一个或多个虚拟GPU包括用所述第二组中的多个虚拟GPU置换所述第一组中的单一虚拟GPU。
条款11.如条款5所述的方法,其中用所述第二组一个或多个虚拟GPU置换所述第一组一个或多个虚拟GPU包括用所述第二组中的单一虚拟GPU置换所述第一组中的多个虚拟GPU。
条款12.如条款5所述的方法,其中所述虚拟计算实例使用包括某一装置的物理计算实例来实施,其中所述装置包括网络接口和硬件接口,其中所述虚拟计算实例可经由所述装置访问所述第一组一个或多个虚拟GPU和所述第二组一个或多个虚拟GPU,其中所述装置在所述虚拟计算实例看来好像经由所述硬件接口包括所述第一组一个或多个虚拟GPU或所述第二组一个或多个虚拟GPU,并且其中所述装置经由所述网络接口与所述物理GPU资源进行通信。
条款13.如条款5所述的方法,所述方法还包括:
从多个虚拟GPU级中为所述第二组一个或多个虚拟GPU选择虚拟GPU级,其中所述虚拟GPU级在相应的计算资源或存储器资源方面有变化,并且其中所述虚拟GPU级至少部分基于由所述虚拟GPU级提供的所述相应的计算资源或存储器资源而选择。
条款14.一种计算机可读存储介质,所述计算机可读存储介质存储程序指令,所述程序指令可由计算机执行来执行:
其中所述虚拟计算实例使用多租户提供商网络的物理计算实例的资源来实施,其中所述多租户提供商网络包括多个计算装置,所述多个计算装置被配置来实施多个虚拟计算实例,并且其中所述第一虚拟GPU使用所述物理计算实例可经由网络访问的物理GPU资源来实施;
确定所述虚拟计算实例的GPU需求的变化;以及
至少部分基于所述GPU需求的变化而用第二虚拟GPU为所述虚拟计算实例置换所述第一虚拟GPU,其中所述虚拟计算实例的图形处理从所述第一虚拟GPU迁移到所述第二虚拟GPU。
条款15.如条款14所述的计算机可读存储介质,其中所述GPU需求的变化至少部分基于所述虚拟计算实例或所述第一虚拟GPU的性能而确定。
条款16.如条款14所述的计算机可读存储介质,其中所述GPU需求的变化由所述虚拟计算实例的用户指定。
条款17.如条款14所述的计算机可读存储介质,其中应用程序的执行使用所述第一虚拟GPU来开始并且使用所述第二虚拟GPU来继续。
条款18.如条款14所述的计算机可读存储介质,其中所述第二虚拟GPU提供相对于所述第一组虚拟GPU而言不同的图形处理水平。
条款19.如条款14所述的计算机可读存储介质,其中所述物理计算实例包括某一装置,所述装置包括网络接口和硬件接口,其中所述虚拟计算实例可经由所述装置访问所述第一虚拟GPU和所述第二虚拟GPU,其中所述装置在所述虚拟计算实例看来好像经由所述硬件接口包括所述第一虚拟GPU或所述第二虚拟GPU,并且其中所述装置经由所述网络接口与所述物理GPU资源进行通信。
条款20.如条款14所述的计算机可读存储介质,其其中所述程序指令进一步可由计算机执行来执行:
从多个虚拟GPU级中为所述第二虚拟GPU选择虚拟GPU级,其中所述虚拟GPU级在相应的计算资源或存储器资源方面有变化,并且其中所述虚拟GPU级至少部分基于由所述虚拟GPU级提供的所述相应的计算资源或存储器资源而选择。
另外,根据下列条款可以更好理解前述内容:
条款21.一种系统,所述系统包括:
虚拟计算实例,其中所述虚拟计算实例使用物理计算实例的中央处理单元(CPU)资源和存储器资源来实施,其中所述虚拟计算实例由多租户提供商网络提供,并且其中所述虚拟计算实例被配置来执行应用程序;
物理图形处理单元(GPU),所述虚拟计算实例可经由网络访问所述物理GPU;
一个或多个计算装置,所述一个或多个计算装置被配置来实施弹性图形服务,其中所述弹性图形服务被配置来:
将虚拟GPU附连到所述虚拟计算实例,其中所述虚拟GPU至少部分基于所述应用程序的需求而从多个虚拟GPU级中进行选择,并且其中所述虚拟GPU使用所述物理GPU来实施;
其中所述虚拟计算实例被配置来:
使用所述虚拟GPU来执行所述应用程序,其中所述应用程序的执行生成输出,并且其中所述输出显示在与客户端装置相关联的显示装置上。
条款22.如条款21所述的系统,其中所述应用程序的所述需求在与所述应用程序相关联的应用程序清单中进行指定。
条款23.如条款21所述的系统,其中所述应用程序的所述需求在所述应用程序的运行时间期间进行确定。
条款24.如条款21所述的系统,其中所述虚拟计算实例被配置来执行附加应用程序,并且其中所述弹性图形服务被配置来:
将附加虚拟GPU附连到所述虚拟计算实例,其中所述附加虚拟GPU至少部分基于所述附加应用程序的需求而从所述多个虚拟GPU级中进行选择;
其中所述虚拟计算实例被配置来:
使用所述附加虚拟GPU来执行所述附加应用程序,同时使用所述虚拟GPU来执行所述应用程序。
条款25.一种计算机实施的方法,所述方法包括:
从多租户提供商网络供应虚拟计算实例,其中所述多租户提供商网络包括多个计算装置,所述多个计算装置被配置来实施多个虚拟计算实例;
将虚拟图形处理单元(GPU)附连到所述虚拟计算实例,其中所述虚拟GPU至少部分基于应用程序而选择,其中所述虚拟GPU使用物理GPU来实施,并且其中所述虚拟计算实例可经由网络访问所述物理GPU;以及
在所述虚拟计算实例上使用所述虚拟GPU来执行所述应用程序。
条款26.如条款25所述的方法,其中所述虚拟GPU至少部分基于所述应用程序的需求而选择,并且其中所述应用程序的所述需求在与所述应用程序相关联的应用程序清单中进行指定。
条款27.如条款25所述的方法,其中所述虚拟GPU至少部分基于所述应用程序的推荐的虚拟GPU级而选择,并且其中所述推荐的虚拟GPU级在与所述应用程序相关联的应用程序清单中进行指定。
条款28.如条款25所述的方法,其中所述虚拟GPU至少部分基于所述应用程序的需求而选择,并且其中所述应用程序的所述需求在所述应用程序的运行时间期间进行确定。
条款29.如条款25所述的方法,其中所述虚拟GPU至少部分基于所述应用程序的需求而选择,并且其中所述应用程序的所述需求使用所述应用程序的执行历史来确定。
条款30.如条款25所述的方法,所述方法还包括:
将附加虚拟图形处理单元(GPU)附连到所述虚拟计算实例,其中所述附加虚拟GPU至少部分基于附加应用程序而选择;以及
在所述虚拟计算实例上使用所述附加虚拟GPU来执行所述附加应用程序,同时在所述虚拟计算实例上使用所述虚拟GPU来执行所述应用程序。
条款31.如条款25所述的方法,所述方法还包括:
在不使用所述虚拟GPU的情况下在所述虚拟计算实例上执行附加应用程序,同时在所述虚拟计算实例上使用所述虚拟GPU来执行所述应用程序。
条款32.如条款25所述的方法,所述方法还包括:
从多个虚拟GPU级中为所述虚拟GPU选择虚拟GPU级,其中所述虚拟GPU级在相应的计算资源或存储器资源方面有变化,并且其中所述虚拟GPU级至少部分基于所述应用程序的需求以及由所述虚拟GPU级提供的所述相应的计算资源或存储器资源而选择。
条款33.一种计算机可读存储介质,所述计算机可读存储介质存储程序指令,所述程序指令可由计算机执行来执行:
选择虚拟计算实例,其中所述虚拟计算实例至少部分基于由所述虚拟计算实例提供的资源而选择,并且其中所述虚拟计算实例被配置来执行应用程序;
选择虚拟图形处理单元(GPU),其中所述虚拟GPU至少部分基于与所述应用程序相关联的需求而选择;以及
供应包括所述虚拟GPU的所述虚拟计算实例,其中所述虚拟计算实例使用物理计算实例的资源来实施,其中所述虚拟GPU使用物理GPU来实施,并且其中所述物理计算实例可经由网络访问所述物理GPU。
条款34.如条款33所述的计算机可读存储介质,并且其中与所述应用程序相关联的所述需求在与所述应用程序相关联的应用程序清单中进行指定。
条款35.如条款33所述的计算机可读存储介质,其中与所述应用程序相关联的所述需求包括所述应用程序的推荐的虚拟GPU级,并且其中所述推荐的虚拟GPU级在与所述应用程序相关联的应用程序清单中进行指定。
条款36.如条款33所述的计算机可读存储介质,其中与所述应用程序相关联的所述需求使用所述应用程序的运行时间分析来确定。
条款37.如条款33所述的计算机可读存储介质,其中与所述应用程序相关联的所述需求使用所述应用程序的执行历史来确定。
条款38.如条款33所述的计算机可读存储介质,其中所述程序指令进一步可由计算机执行来执行:
将附加虚拟图形处理单元(GPU)附连到所述虚拟计算实例,其中所述附加虚拟GPU至少部分基于与附加应用程序相关联的需求而选择;以及
在所述虚拟计算实例上使用所述附加虚拟GPU来执行所述附加应用程序,同时在所述虚拟计算实例上使用所述虚拟GPU来执行所述应用程序。
条款39.如条款33所述的计算机可读存储介质,其中所述程序指令进一步可由计算机执行来执行:
在不使用所述虚拟GPU的情况下在所述虚拟计算实例上执行附加应用程序,同时在所述虚拟计算实例上使用所述虚拟GPU来执行所述应用程序。
条款40.如条款33所述的计算机可读存储介质,其中所述程序指令进一步可由计算机执行来执行:
从多个虚拟GPU级中为所述虚拟GPU选择虚拟GPU级,其中所述虚拟GPU级在相应的计算资源或存储器资源方面有变化,并且其中所述虚拟GPU级至少部分基于与所述应用程序相关联的所述需求以及由所述虚拟GPU级提供的所述相应的计算资源或存储器资源而选择。
另外,根据下列条款可以更好理解前述内容:
条款41.一种系统,所述系统包括:
虚拟计算实例,其中所述虚拟计算实例使用物理计算实例的中央处理单元(CPU)资源和存储器资源来实施,其中所述虚拟计算实例包括本地图形处理单元(GPU),并且其中所述虚拟计算实例由多租户提供商网络提供;
物理GPU,所述虚拟计算实例可经由网络访问所述物理GPU;
一个或多个计算装置,所述一个或多个计算装置被配置来实施弹性图形服务,其中所述弹性图形服务被配置来:
将虚拟GPU附连到所述虚拟计算实例,其中所述虚拟GPU提供相对于所述本地GPU而言改进的图形处理,其中所述虚拟GPU至少部分基于计算或存储器资源而从多个虚拟GPU级中进行选择,并且其中所述虚拟GPU使用所述物理GPU来实施;
其中所述虚拟计算实例被配置来:
将图形处理从所述本地GPU迁移到所述虚拟GPU;以及
使用所述虚拟GPU来执行应用程序。
条款42.如条款41所述的系统,其中所述本地GPU使用某一装置来实施,所述装置包括网络接口和硬件接口,其中所述虚拟计算实例可经由所述装置访问所述虚拟GPU,其中所述装置在所述虚拟计算实例看来好像经由所述硬件接口包括所述虚拟GPU,并且其中所述装置经由所述网络接口与所述物理GPU进行通信。
条款43.如条款41所述的系统,其中所述本地GPU使用仿真来实施。
条款44.如条款41所述的系统,其中所述虚拟计算实例被配置来:
使用所述本地GPU来开始所述应用程序的执行;
其中所述图形处理在所述应用程序的所述执行期间从所述本地GPU迁移到所述虚拟GPU。
条款45.一种计算机实施的方法,所述方法包括:
从多租户提供商网络供应虚拟计算实例,其中所述虚拟计算实例包括本地图形处理单元(GPU),并且其中所述多租户提供商网络包括多个计算装置,所述多个计算装置被配置来实施多个虚拟计算实例;
将虚拟GPU附连到所述虚拟计算实例,其中所述虚拟GPU使用物理GPU来实施,并且其中所述虚拟计算实例可经由网络访问所述物理GPU;
将所述虚拟计算实例的处理从所述本地GPU迁移到所述虚拟GPU;以及
在所述虚拟计算实例上使用所述虚拟GPU来执行应用程序。
条款46.如条款45所述的方法,其中所述虚拟GPU提供相对于所述本地GPU而言改进的处理。
条款47.如条款45所述的方法,其中所述本地GPU使用某一装置来实施,所述装置包括网络接口和硬件接口,其中所述虚拟计算实例可经由所述装置访问所述虚拟GPU,其中所述装置在所述虚拟计算实例看来好像经由所述硬件接口包括所述虚拟GPU,并且其中所述装置经由所述网络接口与所述物理GPU进行通信。
条款48.如条款45所述的方法,其中所述本地GPU使用仿真来实施。
条款49.如条款45所述的方法,所述方法还包括:
在所述虚拟计算实例上使用所述本地GPU来开始所述应用程序的执行;
其中所述处理在所述应用程序的所述执行期间从所述本地GPU迁移到所述虚拟GPU。
条款50.如条款49所述的方法,所述方法还包括:
在所述虚拟计算实例上使用所述本地GPU进行的所述应用程序的所述执行期间检测工作负荷的增加;
其中所述处理至少部分基于所述工作负荷的所述增加而从所述本地GPU迁移到所述虚拟GPU。
条款51.如条款45所述的方法,所述方法还包括:
将附加虚拟GPU附连到所述虚拟计算实例;以及
将所述虚拟计算实例的处理从所述虚拟GPU迁移到所述附加虚拟GPU。
条款52.如条款45所述的方法,所述方法还包括:
从多个虚拟GPU级中为所述虚拟GPU选择虚拟GPU级,其中所述虚拟GPU级在相应的计算资源或存储器资源方面有变化,并且其中所述虚拟GPU级至少部分基于由所述虚拟GPU级提供的所述相应的计算资源或存储器资源而选择。
条款53.一种计算机可读存储介质,所述计算机可读存储介质存储程序指令,所述程序指令可由计算机执行来执行:
从多租户提供商网络供应虚拟计算实例,其中所述虚拟计算实例包括本地图形处理单元(GPU),并且其中所述多租户提供商网络包括多个计算装置,所述多个计算装置被配置来实施多个虚拟计算实例;以及
将虚拟GPU附连到所述虚拟计算实例,其中所述虚拟GPU使用物理GPU来实施,其中所述虚拟计算实例可经由网络访问所述物理GPU,并且其中所述虚拟计算实例的图形处理从所述本地GPU迁移到所述虚拟GPU。
条款54.如条款53所述的计算机可读存储介质,其中所述虚拟GPU提供相对于所述本地GPU而言改进的图形处理。
条款55.如条款53所述的计算机可读存储介质,其中所述本地GPU使用某一装置来实施,所述装置包括网络接口和硬件接口,其中所述虚拟计算实例可经由所述装置访问所述虚拟GPU,其中所述装置在所述虚拟计算实例看来好像经由所述硬件接口包括所述虚拟GPU,并且其中所述装置经由所述网络接口与所述物理GPU进行通信。
条款56.如条款53所述的计算机可读存储介质,其中在所述虚拟计算实例上使用所述本地GPU来开始应用程序的执行,其中所述图形处理在所述应用程序的所述执行期间从所述本地GPU迁移到所述虚拟GPU,并且其中在所述虚拟计算实例上使用所述虚拟GPU来继续所述应用程序的所述执行。
条款57.如条款56所述的计算机可读存储介质,其中在所述虚拟计算实例上使用所述本地GPU进行的所述应用程序的所述执行期间检测图形工作负荷的增加,并且其中所述图形处理至少部分基于所述图形工作负荷的所述增加而从所述本地GPU迁移到所述虚拟GPU。
条款58.如条款53所述的计算机可读存储介质,其中所述虚拟计算实例被配置来执行第一应用程序和第二应用程序,其中所述第一应用程序的图形处理用所述本地GPU继续,并且其中所述第二应用程序的图形处理从所述本地GPU迁移到所述虚拟GPU。
条款59.如条款58所述的计算机可读存储介质,其中所述虚拟GPU至少部分基于与所述第二应用程序相关联的需求而选择,并且其中所述虚拟GPU被保留来供所述第二应用程序使用。
条款60.如条款53所述的计算机可读存储介质,所述计算机可读存储介质还包括:
从多个虚拟GPU级中为所述虚拟GPU选择虚拟GPU级,其中所述虚拟GPU级在相应的计算资源或存储器资源方面有变化,并且其中所述虚拟GPU级至少部分基于由所述虚拟GPU级提供的所述相应的计算资源或存储器资源而选择。
此外,根据下列条款可以更好理解前述内容:
条款61.一种系统,所述系统包括:
虚拟计算实例,其中虚拟图形处理单元(GPU)附连到所述虚拟计算实例,其中所述虚拟计算实例使用物理计算实例的中央处理单元(CPU)资源和存储器资源来实施,其中所述虚拟GPU使用所述物理计算实例可经由网络访问的物理GPU来实施,其中所述虚拟计算实例由多租户提供商网络提供,并且其中所述多租户提供商网络包括用于物理计算实例的多个实例位置以及用于物理GPU的多个GPU位置;以及
一个或多个计算装置,所述一个或多个计算装置被配置来实施弹性图形服务,其中所述弹性图形服务被配置来:
至少部分基于用于布置的优化的一个或多个布置标准而在所述多租户提供商网络中选择用于所述物理GPU的GPU位置或用于所述物理计算实例的实例位置,其中所述布置标准与所述物理计算实例对所述物理GPU的使用相关联;以及
使所述物理GPU供应在所述GPU位置处或使所述物理计算实例供应在所述实例位置处;并且
其中所述虚拟计算实例被配置来:
使用所述虚拟GPU来执行应用程序。
条款62.如条款61所述的系统,其中所述一个或多个布置标准是至少部分基于与所述物理计算实例对所述物理GPU的所述使用相关联的性能度量。
条款63.如条款61所述的系统,其中所述一个或多个布置标准是至少部分基于与所述物理计算实例对所述物理GPU的所述使用相关联的成本度量。
条款64.如条款61所述的系统,其中所述GPU位置或所述实例位置至少部分基于网络局域性而选择。
条款65.一种计算机实施的方法,所述方法包括:
至少部分基于一个或多个布置标准而在多租户提供商网络中选择用于物理图形处理单元(GPU)的GPU位置或用于物理计算实例的实例位置,其中所述多租户提供商网络包括用于物理计算实例的多个实例位置以及用于物理GPU的多个GPU位置;
供应虚拟计算实例以及附连到所述虚拟计算实例的虚拟GPU,其中所述虚拟计算实例使用所述实例位置处的所述物理计算实例来实施,其中所述虚拟GPU使用所述GPU位置处的所述物理GPU来实施,并且其中所述物理计算实例可经由网络访问所述物理GPU;以及
在所述虚拟计算实例上使用所述虚拟GPU来执行应用程序。
条款66.如条款65所述的方法,其中所述一个或多个布置标准包括一个或多个度量的改进。
条款67.如条款65所述的方法,其中所述一个或多个布置标准是至少部分基于与所述物理计算实例对所述物理GPU的使用相关联的性能度量。
条款68.如条款65所述的方法,其中所述一个或多个布置标准是至少部分基于与所述物理计算实例对所述物理GPU的使用相关联的成本度量。
条款69.如条款65所述的方法,其中所述一个或多个布置标准是至少部分基于与所述物理计算实例对所述物理GPU的使用相关联的能源度量。
条款70.如条款65所述的方法,其中所述GPU位置或所述实例位置至少部分基于网络局域性而选择。
条款71.如条款65所述的方法,其中所述GPU位置至少部分基于所述物理GPU与客户端装置之间的网络延迟而选择。
条款72.如条款65所述的方法,其中供应所述虚拟计算实例和所述虚拟GPU包括:
将所述虚拟计算实例从现有实例位置处的现有物理计算实例迁移到所述实例位置处的所述物理计算实例;或
将所述虚拟GPU从现有GPU位置处的现有物理GPU实例迁移到所述GPU位置处的所述物理GPU。
条款73.一种计算机可读存储介质,所述计算机可读存储介质存储程序指令,所述程序指令可由计算机执行来执行:
至少部分基于一个或多个布置标准而在多租户提供商网络中选择用于物理图形处理单元(GPU)的GPU位置以及用于物理计算实例的实例位置,其中所述多租户提供商网络包括用于物理计算实例的多个实例位置以及用于物理GPU的多个GPU位置;以及
供应虚拟计算实例以及附连到所述虚拟计算实例的虚拟GPU,其中所述虚拟计算实例使用所述实例位置处的所述物理计算实例来实施,其中所述虚拟GPU使用所述GPU位置处的所述物理GPU来实施,并且其中所述物理计算实例可经由网络访问所述物理GPU。
条款74.如条款73所述的计算机可读存储介质,其中所述一个或多个布置标准是至少部分基于一个或多个度量。
条款75.如条款73所述的计算机可读存储介质,其中所述一个或多个布置标准是至少部分基于与所述物理计算实例对所述物理GPU的使用相关联的性能度量。
条款76.如条款73所述的计算机可读存储介质,其中所述一个或多个布置标准是至少部分基于与所述物理计算实例对所述物理GPU的使用相关联的成本度量。
条款77.如条款73所述的计算机可读存储介质,其中所述一个或多个布置标准是至少部分基于与所述物理计算实例对所述物理GPU的使用相关联的能源度量。
条款78.如条款73所述的计算机可读存储介质,其中所述GPU位置和所述实例位置至少部分基于网络局域性而选择。
条款79.如条款73所述的计算机可读存储介质,其中所述GPU位置至少部分基于所述物理GPU与客户端装置之间的网络延迟而选择。
条款80.如条款73所述的计算机可读存储介质,其中供应所述虚拟计算实例和所述虚拟GPU包括:
将所述虚拟计算实例从现有实例位置处的现有物理计算实例迁移到所述实例位置处的所述物理计算实例;或
将所述虚拟GPU从现有GPU位置处的现有物理GPU实例迁移到所述GPU位置处的所述物理GPU。
总结
本文阐述了众多特定细节来提供对要求保护的主题的全面理解。然而,本领域技术人员将理解,可在没有这些特定细节的情况下实践要求保护的主题。在其他实例中,普通技术人员将公知的方法、设备或系统并未进行详细描述,以免混淆要求保护的主题。受益于本公开的本领域技术人员将清楚地知晓可做出各种修改和变化。意图包括所有这类修改和变化,并且因此上文描述应被视为具有说明性而非限制性意义。

Claims (10)

1.一种系统,包括:
一个或多个处理器以及存储计算机可执行指令的一个或多个存储器,所述计算机指令当被执行时使所述一个或多个处理器:
将虚拟图形处理单元(GPU)附连到在计算实例中执行的容器,其中所述计算实例是使用中央处理单元(CPU)资源和存储器资源实现的,并且其中所述虚拟GPU是使用所述计算实例通过网络可访问的物理GPU实现的;以及
执行所述容器中的工作负荷,其中所述工作负荷的执行生成一个或多个GPU指令,所述一个或多个GPU指令被从所述计算实例通过网络发送到所述虚拟GPU并使用所述虚拟GPU执行。
2.如权利要求1所述的系统,其中所述一个或多个存储器存储附加计算机可执行指令,所述附加计算机可执行指令当被执行时使所述一个或多个处理器:
配置所述容器的一个或多个GPU参数。
3.如权利要求2所述的系统,其中所述一个或多个GPU参数包括为所述工作负荷的执行指定的一个或多个GPU类型。
4.如权利要求1所述的系统,其中所述一个或多个存储器存储附加计算机可执行指令,所述附加计算机可执行指令当被执行时使所述一个或多个处理器:
配置所述容器的一个或多个参数,其中所述一个或多个参数指示与所述工作负荷关联的应用编程接口(API)切片,其中所述API切片拦截从所述工作负荷对图形API的调用。
5.如权利要求1所述的系统,其中所述计算实例包括节点池中的节点。
6.如权利要求1所述的系统,其中所述计算实例包括虚拟机(VM),其中所述VM是使用物理计算实例的所述CPU资源和所述存储器资源实现的。
7.一种计算机实现的方法,包括:
将虚拟图形处理单元(GPU)附连到在计算实例中执行的容器,其中所述计算实例是使用中央处理单元(CPU)资源和存储器资源实现的,并且其中所述虚拟GPU是使用所述计算实例通过网络可访问的物理GPU实现的;以及
执行所述容器中的工作负荷,其中所述工作负荷的执行生成一个或多个GPU指令,所述一个或多个GPU指令被从所述计算实例通过网络发送到所述虚拟GPU并使用所述虚拟GPU执行。
8.如权利要求7所述的方法,还包括:
配置所述容器的一个或多个GPU参数。
9.如权利要求8所述的方法,其中所述一个或多个GPU参数包括为所述工作负荷的执行推荐的一个或多个GPU类型。
10.如权利要求7所述的方法,还包括:
配置所述容器的一个或多个参数,其中所述一个或多个参数指示应用编程接口(API)切片,其中所述API切片拦截从所述工作负荷对图形API的调用。
CN202211224622.3A 2015-11-11 2016-11-11 用于虚拟化图形处理的缩放 Pending CN115526770A (zh)

Applications Claiming Priority (10)

Application Number Priority Date Filing Date Title
US14/938,461 US9886737B2 (en) 2015-11-11 2015-11-11 Local-to-remote migration for virtualized graphics processing
US14/938,656 US9904975B2 (en) 2015-11-11 2015-11-11 Scaling for virtualized graphics processing
US14/938,461 2015-11-11
US14/938,457 2015-11-11
US14/938,457 US9904973B2 (en) 2015-11-11 2015-11-11 Application-specific virtualized graphics processing
US14/938,654 US9904974B2 (en) 2015-11-11 2015-11-11 Placement optimization for virtualized graphics processing
US14/938,656 2015-11-11
US14/938,654 2015-11-11
CN201680065936.XA CN108351810B (zh) 2015-11-11 2016-11-11 用于虚拟化图形处理的扩展
PCT/US2016/061709 WO2017083781A1 (en) 2015-11-11 2016-11-11 Scaling for virtualized graphics processing

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201680065936.XA Division CN108351810B (zh) 2015-11-11 2016-11-11 用于虚拟化图形处理的扩展

Publications (1)

Publication Number Publication Date
CN115526770A true CN115526770A (zh) 2022-12-27

Family

ID=57392075

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202211224622.3A Pending CN115526770A (zh) 2015-11-11 2016-11-11 用于虚拟化图形处理的缩放
CN201680065936.XA Active CN108351810B (zh) 2015-11-11 2016-11-11 用于虚拟化图形处理的扩展

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201680065936.XA Active CN108351810B (zh) 2015-11-11 2016-11-11 用于虚拟化图形处理的扩展

Country Status (5)

Country Link
EP (2) EP3374865A1 (zh)
CN (2) CN115526770A (zh)
AU (2) AU2016353357B2 (zh)
CA (1) CA3004888C (zh)
WO (1) WO2017083781A1 (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10699364B2 (en) * 2017-07-12 2020-06-30 Citrix Systems, Inc. Graphical rendering using multiple graphics processors
CN111506385A (zh) * 2019-01-31 2020-08-07 Ati科技无限责任公司 引擎抢占和复原
CN114207589A (zh) * 2019-03-28 2022-03-18 亚马逊技术股份有限公司 分布式计算环境中的工作负载的寿命期间的计算平台优化
CN110443876A (zh) * 2019-07-31 2019-11-12 新华三大数据技术有限公司 3d图像渲染方法及装置
US11651470B2 (en) * 2021-06-28 2023-05-16 Hewlett Packard Enterprise Development Lp Scheduling jobs on graphical processing units
WO2024129080A1 (en) * 2022-12-14 2024-06-20 Robin Systems, Inc. Persistent multi-instance gpu partitions

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8387060B2 (en) * 2009-10-01 2013-02-26 Dell Products L.P. Virtual machine resource allocation group policy based on workload profile, application utilization and resource utilization
US9733963B2 (en) * 2010-09-17 2017-08-15 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Optimizing virtual graphics processing unit utilization
US8825550B2 (en) * 2012-08-23 2014-09-02 Amazon Technologies, Inc. Scaling a virtual machine instance
US9142004B2 (en) * 2012-12-20 2015-09-22 Vmware, Inc. Dynamic allocation of physical graphics processing units to virtual machines
US9298490B2 (en) * 2012-12-20 2016-03-29 Vmware, Inc. Managing a data structure for allocating graphics processing unit resources to virtual machines
TWI479422B (zh) * 2013-01-25 2015-04-01 Wistron Corp 電腦系統及其繪圖處理方法
US9734546B2 (en) * 2013-10-03 2017-08-15 Nvidia Corporation Split driver to control multiple graphics processors in a computer system

Also Published As

Publication number Publication date
CN108351810A (zh) 2018-07-31
AU2019222810B2 (en) 2020-06-18
AU2016353357A1 (en) 2018-05-24
CA3004888A1 (en) 2017-05-18
CA3004888C (en) 2020-09-08
EP3933587A1 (en) 2022-01-05
AU2019222810A1 (en) 2019-09-19
AU2016353357B2 (en) 2019-05-30
CN108351810B (zh) 2022-10-28
WO2017083781A1 (en) 2017-05-18
EP3374865A1 (en) 2018-09-19

Similar Documents

Publication Publication Date Title
US11210759B2 (en) Placement optimization for virtualized graphics processing
US9904975B2 (en) Scaling for virtualized graphics processing
EP3571586B1 (en) Dynamic and application-specific virtualized graphics processing
US10628908B2 (en) Application-specific virtualized graphics processing
US10726518B2 (en) Capacity reservation for virtualized graphics processing
CN108351810B (zh) 用于虚拟化图形处理的扩展
CA2994701C (en) Virtualizing graphics processing in a provider network
US10169841B1 (en) Dynamic interface synchronization for virtualized graphics processing
US9886737B2 (en) Local-to-remote migration for virtualized graphics processing
US10430911B1 (en) Graphics overlays with virtualized graphics processing

Legal Events

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