首页> 中国专利> 按需网络代码执行系统中的基于性能的硬件仿真

按需网络代码执行系统中的基于性能的硬件仿真

摘要

描述了用于在按需网络代码执行系统中提供基于性能的硬件仿真的系统和方法。用户可通过提交代码而在所述系统上生成任务。所述系统可基于所述代码或其执行而确定在诸如对处理器的指令集的扩展等特定功能性可用的情况下所述代码更高效地执行。所述系统可进一步确定其可使用各种计算资源来提供所需的功能性,所述计算资源可包括物理硬件、仿真的硬件(例如,虚拟机)或它们的组合。所述系统随后可确定和提供在执行所述用户提交的代码时要使用的一组计算资源,这可基于诸如可用性、成本、所估计的性能、所期望的性能或其他标准等因素。所述系统还可将代码从一组计算资源迁移至另一组计算资源,并且可分析需求并且计划未来的计算资源需要。

著录项

说明书

背景技术

计算装置可以利用通信网络来交换数据。公司和组织操作将许多计算装置互连的计算机网络以支持操作或向第三方提供服务。计算系统可位于单个地理位置或位于多个不同的地理位置(例如,经由专用通信网络或公共通信网络进行互连)。具体地,托管型计算环境或数据处理中心,本文一般称为“数据中心”,可包括许多互连的计算系统来向数据中心的用户提供计算资源。所述数据中心可以是代表组织进行运营的专用数据中心或者是代表公众或为了公众的利益而运营的公共数据中心。

为了促进对数据中心资源的增加的利用率,虚拟化技术允许单个物理计算装置托管虚拟机的一个或多个实例,所述虚拟机的一个或多个实例相对于数据中心的用户显现且操作为独立的计算装置。通过虚拟化,单个物理计算装置可通过动态的方式创建、维持、删除或以其他方式管理虚拟机。用户继而可向数据中心请求计算资源,诸如单个计算装置或连网的计算装置的配置,并且被供应不同数目的虚拟机资源。

在一些情景下,用户可请求数据中心提供计算资源以执行特定任务。所述任务可对应于一组计算机可执行指令,数据中心随后可代表用户执行所述一组计算机可执行指令。所述数据中心因此可进一步有助于对数据中心资源的增加的利用率。

附图说明

在整个附图中,可重复使用参考数字来指示参考元件之间的对应性。提供图式以说明本文描述的示例性实施方案并且无意限制本公开的范围。

图1是描绘说明性环境的框图,在所述说明性环境中,按需代码执行系统可执行与可由按需代码执行系统的用户提交的代码相对应的任务,并且可确定要使用哪些计算资源来促进所提交的代码的执行。

图2描绘提供仿真性能分析系统的计算装置的通用架构,所述仿真性能分析系统被配置为确定用于促进在图1的按需代码执行系统上执行任务的计算资源。

图3是描绘向图1的按需代码执行系统提交与任务相对应的代码并且使按需代码执行系统分析所述代码并且确定可用于促进执行的一组计算资源的说明性交互的流程图。

图4是描绘图1的按需代码执行系统进行以下操作的说明性交互的流程图:分析与使用特定一组计算资源来执行代码相关联的性能度量;确定替代性一组计算资源是否可用且将是优选的;以及如果是,则将代码执行迁移至所述替代性一组计算资源。

图5是描绘用于分析所提交的代码以确定可用于促进在图1的按需代码执行系统上执行所述代码的一组资源的说明性例程的流程图。

图6是描绘用于分析在图1的按需代码执行系统上使用特定一组资源执行代码的性能并且在需要时将代码迁移至替代组资源的说明性例程的流程图。

具体实施方式

一般来说,本公开的各方面涉及按需代码执行系统。按需代码执行系统使得能够快速执行可由按需代码执行系统的用户供应的代码。更具体地,本公开的实施方案涉及提高使用各种计算资源实施的按需代码执行系统的性能。如本文详细描述,按需代码执行系统可提供网络可访问服务,所述网络可访问服务使用户能够提交或指定将要由虚拟机实例在按需代码执行系统上执行的计算机可执行代码。按需代码执行系统上的每一组代码可限定“任务”并且当在按需代码执行系统的虚拟机实例上被执行时实施与那个任务相对应的特定功能性。在按需代码执行系统上单独地实施任务可称为“执行”任务(或“任务执行”)。按需代码执行系统可进一步使用户能够基于多种潜在事件来触发任务的执行,所述潜在事件诸如为在基于网络的存储系统处检测到新的数据、向按需代码执行系统传输应用编程接口(“API”)调用或向按需代码执行系统传输特殊格式的超文本传输协议(“HTTP”)包。因此,用户可利用按需代码执行系统“按需”执行任何指定的可执行代码,而不需要配置或维护在其上执行代码的基础硬件或基础设施。此外,按需代码执行系统可被配置为通过快速的方式(例如,在100毫秒[ms]以下)执行任务,从而实现“实时”(例如,在终端用户几乎不可感知的延迟的情况下)执行任务。

按需代码执行系统可按需将虚拟机实例实例化以执行指定任务。虚拟机实例可具备提供用户指定的可执行代码在执行期间可能需要的功能性的虚拟处理器或其他计算资源。例如,虚拟机实例可具备促进或加速经常由神经网络使用的操作的处理器。处理器可实施(例如)与这些操作相关的特定指令集(或指令集的扩展)。在一些实施方案中,所述指令集还可由虚拟机实例在其上被实例化的物理计算装置的基础硬件处理器实施。在其他实施方案中,虚拟机实例可仿真实施特定指令集的处理器,并且可使用不实施所述指令集的物理处理器将虚拟机实例实例化。虚拟机实例因此可将由虚拟处理器实施的指令转译为由物理处理器实施的指令,其中对性能或效率具有不同的影响。

按需代码执行系统可利用计算资源池来执行用户提交的代码。所述池可包括依据功能性而变的资源,并且对实施特定功能性的资源的需求可能会超过那些资源的可用供应。例如,若干用户提交的任务可需要或更想要实施特定指令集的处理器,但仅有限数目个这些处理器可能是可用的。在一些实施方案中,对实施特定功能性的资源的过度需求可使用仿真所述功能性的资源来满足。例如,如上文所论述,仿真处理器的虚拟机实例可被实例化,并且按需代码执行系统可基于诸如相对性能等因素向物理资源和虚拟资源指派用户提交的任务。例如,第一用户提交的任务可能够在经仿真处理器上在可接受的性能下执行,而第二用户提交的任务可非常慢地执行或完全不可执行。按需代码执行系统因此可基于对所述功能性是否被需要或仅仅是期望的以执行特定任务的评估来给稀缺资源的分配区分优先级,并且可进一步基于不同任务的相对性能来区分优先级,使得最受益于所述功能性的任务接收所述功能性。

在一些实施方案中,在快速物理处理器上实例化的虚拟机实例可胜过使用较慢处理器的虚拟或物理计算装置,即使较慢的处理器提供了较快的处理器未提供的功能性也如此。例如,可在不具有特定指令集的较新的处理器上实例化的虚拟机实例中仿真具有所述指令集的较老的处理器,并且通过在较新的处理器上执行而实现的性能增益可多于补偿与仿真处理器或指令集相关联的性能开销。因此将理解,当确定推荐的一组计算资源时,按需代码执行系统不限于物理处理器,并且对物理处理器的虚拟仿真可提供优良的性能。

本领域技术人员鉴于本公开将了解,本文公开的实施方案提高了诸如按需代码执行系统等计算系统通过有效的方式执行代码的能力。另外,目前公开的实施方案解决了计算系统内固有的技术问题;具体地,执行代码所使用的计算资源的有限性质、与供应虚拟机以促进代码执行相关联的资源开销以及由供应未利用的功能性(或未供应在可用的情况下将利用的功能性)引起的低效。这些技术问题由本文描述的各种技术解决方案来解决,包括基于将要执行的代码所需的功能性而供应执行环境。因此,本公开表示现有的数据处理系统和一般计算系统的改进。

按需代码执行系统可包括虚拟机实例管理器,所述虚拟机实例管理器被配置为接收用户代码(通过多种编程语言中的任一者编撰的线程、程序等)并且通过高度可扩展、低时延的方式执行代码,而不需要用户配置虚拟机实例。具体地,虚拟机实例管理器可在接收用户代码之前以及在从用户接收关于任何特定虚拟机实例配置的任何信息之前根据预定组配置来创建和配置虚拟机实例,每组配置对应于多种运行时环境中的任何一者或多者。其后,虚拟机实例管理器接收用户发起的执行代码的请求,并且基于与所述请求相关联的配置信息来识别预配置的虚拟机实例以执行代码。虚拟机实例管理器可进一步分配所识别的虚拟机实例以至少部分地通过以下操作来执行用户的代码:在所分配的虚拟机实例内部创建和配置容器,并且向所述容器提供任务的代码以及相依性代码对象。在标题为“PROGRAMMATIC EVENT DETECTION AND MESSAGE GENERATION FOR REQUESTS TO EXECUTEPROGRAM CODE”且在2014年9月30日提交的美国专利号9,323,556(“’556专利”)中更详细地描述了用于实施虚拟机实例管理器并且在虚拟机实例上执行用户代码的各种实施方案,所述专利的全部内容在此以引用的方式并入。

如本文使用,术语“虚拟机实例”意在是指仿真硬件以提供软件可在其上执行的环境或平台(“执行环境”)的软件或其他可执行代码的执行。虚拟机实例一般由硬件装置执行,所述硬件装置可不同于由虚拟机实例仿真的物理硬件。例如,虚拟机可仿真第一类型的处理器和存储器,同时在第二类型的处理器和存储器上执行。因此,可利用虚拟机在正在执行第二执行环境(例如,第二操作系统)的物理装置上执行既定针对第一执行环境(例如,第一操作系统)的软件。在一些情况下,由虚拟机实例仿真的硬件可与基础装置的硬件相同或类似。例如,具有第一类型的处理器的装置可实施多个虚拟机实例,每个虚拟机实例仿真那个第一类型的处理器的实例。因此,可使用虚拟机实例将装置分割为一定数目的逻辑子装置(每个逻辑子装置称为“虚拟机实例”)。虽然虚拟机实例一般可提供远离基础物理装置的硬件的抽象水平,但此抽象并非所需的。例如,假设装置实施多个虚拟机实例,所述多个虚拟机实例中的每一者仿真与由装置提供的硬件相同的硬件。在此类情景下,每个虚拟机实例可允许软件应用在不转译的情况下在基础硬件上执行代码,同时维持在其他虚拟机实例上运行的软件应用之间的逻辑分隔。一般称为“本机执行”的此过程可用于增加虚拟机实例的速度或性能。还可使用允许直接利用基础硬件的其他技术,诸如硬件直通技术。

虽然执行操作系统的虚拟机在本文被描述为执行环境的一个示例,但其他执行环境也是可能的。例如,可在软件“容器”内执行任务或其他过程,所述软件“容器”提供运行时环境而自身不提供硬件的虚拟化。可在虚拟机内实施容器以提供额外的安全性,或者可在虚拟机实例的外部运行所述容器。

虽然本文关于处理器指令集描述了示例性实施方案,但将理解,本公开不限于任何特定计算资源或功能性。例如,可对代码进行分析以确定它花费了大量时间来等待存储装置读取或写入信息,并且可确定提供更高速的数据存储区(例如,存储器缓存或固态装置)来促进对所述代码的更高效的执行。作为另一示例,可对代码或性能度量进行分析以确定提供特定图形处理单元(“GPU”)将促进执行用户提交的任务,并且可提供或仿真所识别的GPU。作为又一示例,可对代码进行分析以确定其针对特定类型的存储器(诸如非易失性随机存取存储器(“NVRAM”)或动态随机存取存储器(“DRAM”))经过优化,并且可供应所述特定类型的存储器。示例性实施方案因此被理解为说明性的而不是限制性的。

在一些实施方案中,用户可提交需要特定功能性的代码或在不知晓相依性的情况下在提供某个功能性的情况下更高效地运行的代码。例如,用户提交的代码可利用第三方库,并且所述库可需要所述功能性或在所述功能性可用的情况下大量使用所述功能性。在其他实施方案中,用户可知晓需要特定功能性,但可能不知晓按需代码执行系统是否提供所述功能性或在提供所述功能性的情况下所述功能性当前是否可用。通过实施本文描述的实施方案,按需代码执行系统解决这些问题并且允许用户在未识别需要的功能性的情况下提交代码,并且不必特别请求按需代码执行系统提供所述功能性。

现在将参考附图描述本公开的实施方案,其中相同的数字始终是指相同的元件。在本文呈现的描述中使用的术语无意通过任何限制或约束性方式来解释,仅仅是因为所述术语是结合本发明的某些特定实施方案的详细描述来利用。此外,本发明的实施方案可包括若干新颖特征,所述特征中的单个特征不单独地负责其期望的属性或是实践本文描述的发明所必不可少的。

图1是说明性操作环境100的框图,在所述说明性操作环境中,按需代码执行系统110可基于与用户计算装置102、辅助服务106和基于网络的数据存储服务108的通信进行操作。一般来说,用户计算装置102可以是任何计算装置,诸如桌上型计算机、膝上型计算机或平板计算机、个人计算机、可穿戴计算机、服务器、个人数字助理(PDA)、混合PDA/移动电话、移动电话、电子书阅读器、机顶盒、语音命令装置、相机、数字媒体播放器等。按需代码执行系统110可向用户计算装置102提供一个或多个用户界面、命令行界面(CLI)、应用编程界面(API)和/或用于以下操作的其他编程界面:生成并上传用户可执行代码(例如,包括识别所上传的代码的相依性代码对象的元数据);调用用户提供的代码(例如,提交在按需代码执行系统110上执行用户代码的请求);调度基于事件的作业或定时的作业;跟踪用户提供的代码;和/或观看与他们的请求和/或用户代码相关的其他记录或监视信息。虽然一个或多个实施方案可能在本文被描述为使用用户界面,但应了解,这些实施方案可另外或可替代地使用任何CLI、API或其他编程界面。

说明性环境100还包括一个或多个基于网络的数据存储服务108,所述一个或多个基于网络的数据存储服务被配置为使按需代码执行系统110能够存储数据以及从一个或多个持久的或基本上持久的数据源检索数据。说明性地,基于网络的数据存储服务108可使按需代码执行系统110能够:存储与任务相对应的信息,诸如代码或元数据;存储表示任务的相依性的额外的代码对象;检索将要在执行任务期间处理的数据;以及存储关于那个执行的信息(例如,结果)。基于网络的数据存储服务108可表示(例如)关系或非关系数据库。在另一示例中,基于网络的数据存储服务108可表示网络附接存储装置(NAS),所述网络附接存储装置被配置为提供对被布置成文件系统的数据的访问。基于网络的数据存储服务108可进一步使按需代码执行系统110能够诸如通过以下操作来查询和检索关于存储在按需代码执行系统110内的数据的信息:查询许多相关文件或记录、那些文件或记录的大小、文件或记录名称、文件或记录创建时间等。在一些情况下,基于网络的数据存储服务108可提供额外的功能性,诸如将数据分隔为逻辑组(例如,与单独的账户相关联的组等)的能力。虽然示出为不同于辅助服务106,但基于网络的数据存储服务108在一些情况下也可表示一种类型的辅助服务106。

用户计算装置102、辅助服务106和基于网络的数据存储服务108可经由网络104与按需代码执行系统110通信,所述网络可包括任何有线网络、无线网络或它们的组合。例如,网络104可以是个人区域网、局域网、广域网、空中广播网络(例如,用于收音机或电视)、电缆网络、卫星网络、蜂窝电话网络或它们的组合。作为另一示例,网络104可以是可能由各种不同方运营的链接网络的公共可访问的网络,诸如互联网。在一些实施方案中,网络104可以是专用网络或半专用网络,诸如公司或大学内联网。网络104可包括一个或多个无线网络,诸如全球移动通信系统(GSM)网络、码分多址(CDMA)网络、长期演进(LTE)网络或任何其他类型的无线网络。网络104可使用用于经由互联网或其他前述类型的网络中的任一者进行通信的协议和部件。例如,由网络104使用的协议可包括超文本传输协议(HTTP)、HTTP安全(HTTPS)、消息队列遥测传输(MQTT)、受约束应用协议(CoAP)等。用于经由互联网或其他前述类型的通信网络中的任一者进行通信的协议和部件对于本领域技术人员来说是众所周知的,并且因此在本文不更详细地描述。

按需代码执行系统110在图1中被描绘为在分布式计算环境中操作,所述分布式计算环境包括使用一个或多个计算机网络(在图1中未示出)互连的若干计算机系统。按需代码执行系统110还可在具有比图1中绘示的装置更少或更多数量的装置的计算环境内操作。因此,在图1中描绘按需代码执行系统110应视为说明性的而非限制本公开。例如,按需代码执行系统110或其各种构成可实施各种Web服务部件、托管或“云”计算环境和/或对等的网络配置以实施本文描述的过程的至少一部分。

此外,按需代码执行系统110可在直接硬件或由硬件装置执行的软件中实施,并且可(例如)包括在被配置为执行计算机可执行指令用于执行将在本文描述的各种特征的物理计算机硬件上实施的一个或多个物理或虚拟服务器。一个或多个服务器可在地理上分散或在地理上共同位于(例如)一个或多个数据中心中。在一些情况下,一个或多个服务器可作为快速提供和释放的计算资源的系统(常常称为“云计算环境”)的部分进行操作。

在图1的示例中,按需代码执行系统110被绘示为连接到网络104。在一些实施方案中,按需代码执行系统110内的部件中的任一者可经由网络104与按需代码执行系统110的其他部件通信。在其他实施方案中,不是按需代码执行系统110的所有部件都能够与虚拟环境100的其他部件通信。在一个示例中,仅前端120(其在一些情况下可表示多个前端120)可连接到网络104,并且按需代码执行系统110的其他部件可经由前端120与环境100的其他部件通信。

在图1中,用户可通过用户计算装置102与按需代码执行系统110交互以提供可执行代码,并且建立限定应何时以及如何在按需代码执行系统110上执行此类代码的规则或逻辑,如此建立“任务”。例如,用户可能希望结合用户已经开发的web或移动应用来运行一条代码。运行所述代码的一种方式将是:从提供基础设施作为服务的服务提供者获取虚拟机实例;配置所述虚拟机实例以适合用户的需要;以及使用所配置的虚拟机实例来运行所述代码。为了避开此过程的复杂性,用户可以可替代地向按需代码执行系统110提供所述代码,并且请求按需代码执行系统110执行所述代码。按需代码执行系统110可基于代码执行请求来处置计算能力(例如,在下文更详细地描述的容器、实例等)的获取和配置,并且使用所述计算能力来执行所述代码。按需代码执行系统110可基于量进行自动缩放,进而减轻用户不得不担忧过度利用(例如,获取太少的计算资源并且遭受性能问题)或利用不足(例如,获取比运行代码所需的计算资源更多的计算资源,并且因此付出太多)的负担。根据本公开的实施方案,并且如在下文更详细地描述,按需代码执行系统110可使用自定义的操作系统来配置虚拟机实例以更有效地执行用户的代码并且减少对计算资源的利用。

为了实现与按需代码执行系统110的交互,系统110包括实现与按需代码执行系统110的交互的一个或多个前端120。在说明性实施方案中,前端120用作由按需代码执行系统110提供的其他服务的“前门”,从而使用户能够(经由用户计算装置102)提供计算机可执行代码、请求执行计算机可执行代码并且观看计算机可执行代码的结果。前端120包括用以实现在按需代码执行系统110与其他计算装置之间的交互的多种部件。例如,每个前端120可包括请求界面,所述请求界面向用户计算装置102提供以下能力:将用户指定的代码上传或以其他方式传送到按需代码执行系统110并且其后请求执行那个代码。在一个实施方案中,所述请求界面经由图形用户界面(GUI)、CLI或API与外部计算装置(例如,用户计算装置102、辅助服务106等)通信。前端120处理所述请求并且确保所述请求被恰当地授权。例如,前端120可确定与所述请求相关联的用户是否被授权访问在所述请求中指定的用户代码。

对本文使用的用户代码的引用可指通过特定程序语言编写的任何程序代码(例如,程序、例程、子例程、线程等)。在本公开中,术语“代码”、“用户代码”和“程序代码”可以可互换地使用。可(例如)结合由用户开发的特定web应用或移动应用来执行此类用户代码以实现特定功能。如上文所述,用户代码的单独集合(例如,用以实现特定功能)在本文称为“任务”,而对那个代码的特定执行(包括(例如)编译代码、解译代码或以其他方式使代码能够执行)称为“任务执行”或简称为“执行”。举非限制性示例,可通过JavaScript(例如,node.js)、Java、Python和/或Ruby(和/或另一编程语言)来编写任务。可通过多种方式“触发”任务以便在按需代码执行系统110上执行。在一个实施方案中,用户或其他计算装置可传输执行任务的请求,其一般可称为执行所述任务的“调用”。此类调用可包括将要执行的用户代码(或其位置)和用于执行所述用户代码的一个或多个自变量。例如,调用可提供任务的用户代码以及执行所述任务的请求。在另一示例中,调用可通过先前上传的任务的名称或标识符来识别所述任务。在另一示例中,与任务相对应的代码可包括于对所述任务的调用中,以及在按需代码执行系统110接收所述请求之前上传在单独的位置(例如,辅助服务106的存储装置或在按需代码执行系统110内部的存储系统)。如上文所述,任务的代码可通过使用额外的代码对象的标识符来引用在按需代码执行系统110处维持的那些代码对象,使得所述代码对象在执行环境中与任务的代码进行组合,之后执行所述任务。按需代码执行系统110可基于在处理对任务的调用时所述任务的代码在哪里可得到来改变其对所述任务的执行策略。前端120的请求界面可从用户接收调用以执行作为超文本传输协议安全(HTTPS)请求的任务。而且,还可在执行任务时处理和利用在HTTPS请求中包括的任何信息(例如,报头和参数)。如上文所论述,任何其他协议,包括(例如)HTTP、MQTT和CoAP,可用于将包含任务调用的消息传递到请求界面122。

执行任务的调用可指定将要与对应于所述任务的用户代码一起使用的一个或多个第三方库(包括本地库)。在一个实施方案中,所述调用可向按需代码执行系统110提供文件,所述文件包含与请求执行的任务相对应的用户代码和任何库(和/或其存储位置的识别)。在一些实施方案中,所述调用包括元数据,所述元数据指示将要执行的任务的程序代码、编写所述程序代码的语言、与所述调用相关联的用户和/或被保留用于执行所述程序代码的计算资源(例如,存储器等)。例如,任务的程序代码可通过所述调用提供、先前由用户上传、由按需代码执行系统110提供(例如,标准例程)和/或由第三方提供。说明性地,未包括在调用内或先前未由用户上传的代码可通过使用与所述代码相关联的URI在任务的元数据内引用。在一些实施方案中,此类资源层级约束(例如,将要分配多少存储器来执行特定用户代码)针对特定任务指定,并且在任务的每次执行期间可不变。在此类情况下,按需代码执行系统110可在接收每个单独的调用之前具有对此类资源层级约束的访问权,并且单独的调用可能未指定此类资源层级约束。在一些实施方案中,所述调用可指定其他约束,诸如许可数据,所述许可数据指示所述调用叫用什么种类的许可或权限来执行所述任务。此类许可数据可由按需代码执行系统110使用以访问专用资源(例如,在专用网络上)。在一些实施方案中,单独的代码对象还可与许可或授权相关联。例如,第三方可提交代码对象并且将所述对象指定为仅可由用户的子集读取。按需代码执行系统110可包括用以实施关于代码对象的这些许可或授权的功能性。

在一些实施方案中,调用可指定处置所述调用所应采用的行为。在这些实施方案中,所述调用可包括用于启用执行在所述调用中引用的任务所处的一个或多个执行模式的指示符。例如,所述调用可包括用于指示是否应以调试模式执行任务的旗标或报头,在所述调试模式下,可结合所述任务的执行而生成的调试和/或记录输出被提供回给用户(例如,经由控制台用户界面)。在此示例中,按需代码执行系统110可检查所述调用并且寻找旗标或报头,并且如果存在所述旗标或报头,则按需代码执行系统110可修改在其中执行所述任务的容器的行为(例如,记录设施),并且致使将输出数据提供回给用户。在一些实施方案中,通过由按需代码执行系统110提供给用户的用户界面将行为/模式指示符添加到所述调用。还可基于在调用中提供的指示来启用或停用其他特征,诸如源代码性能分析、远程调试等。

为了管理对代码执行的请求,前端120可包括执行队列(在图1中未示出),所述执行队列可维持所请求的任务执行的记录。说明性地,按需代码执行系统110同时执行的任务的数目是有限的,并且因此,可将在按需代码执行系统110处发起(例如,经由API调用、经由从被执行或正在执行的任务的调用等)的新的任务执行置于执行队列124上并且例如按照先进先出的次序进行处理。在一些实施方案中,按需代码执行系统110可包括多个执行队列,诸如用于每个用户账户的单独的执行队列。例如,按需代码执行系统110的用户可能想要限制按需代码执行系统110上的任务执行的速率(例如,出于成本原因)。因此,按需代码执行系统110可利用账户专有的执行队列来节制特定用户账户进行的同时的任务执行的速率。在一些情况下,按需代码执行系统110可区分任务执行的优先级,使得特定账户或指定优先级的任务执行绕过或者在执行队列内优先。在其他情况下,按需代码执行系统110可在接收到对任务的调用之后立即或基本上立即执行那个任务,并且因此,可省略执行队列。

如上文所述,可基于来自用户计算装置102的显式调用(例如,在请求界面处接收)来触发任务以便在按需代码执行系统110处执行。可替代地或另外,可基于从一个或多个辅助服务106或基于网络的数据存储服务108检索到的数据来触发任务以便在按需代码执行系统110处执行。为了促进与辅助服务106的交互,前端120可包括轮询界面(在图1中未示出),所述轮询界面操作以向辅助服务106或数据存储服务108轮询数据。说明性地,轮询界面可周期性地将请求传输到一个或多个用户指定的辅助服务106或数据存储服务108以检索任何新的可用的数据(例如,社交网络“帖子”、新闻文章、文件、记录等),并且确定该数据是否对应于触发在按需代码执行系统110上执行任务的用户建立的标准。说明性地,任务的执行标准可包括但不限于在辅助服务106或数据存储服务108处是否可得到新的数据、数据的类型或内容或与所述数据相对应的定时信息。在一些情况下,辅助服务106或数据存储服务108可用以向前端120通知新数据的可用性,并且因此,关于此类服务,轮询服务可以是不必要的。

除了基于显式用户调用以及来自辅助服务106的数据而执行的任务之外,按需代码执行系统110在一些情况下可操作以独立地触发执行任务。例如,按需代码执行系统110可操作(基于来自用户的指令)以触发在一定数目的指定时间间隔(例如,每10分钟)中的每一者处执行任务。

前端120还可包括输出界面(在图1中未示出),所述输出界面被配置为输出关于在按需代码执行系统110上的任务的执行的信息。说明性地,所述输出界面可将关于任务执行的数据(例如,任务的结果、与任务执行相关的错误或任务执行的细节,诸如完成所述执行所需的总时间、经由所述执行所处理的总数据等)传输到用户计算装置102或辅助服务106,所述辅助服务可包括(例如)计费或记录服务。所述输出界面还可实现将诸如服务调用的数据传输到辅助服务106。例如,可在任务执行期间利用所述输出界面以将API请求传输到外部服务106(例如,以存储在任务执行期间所生成的数据)。

在一些实施方案中,按需代码执行系统110可包括多个前端120。在这些实施方案中,可提供负荷平衡器(在图1中未示出)以(例如)按照循环方式将传入的调用分发给多个前端120。在一些实施方案中,负荷平衡器将传入的调用分发给多个前端120的方式可基于按需代码执行系统110的其他部件的位置或状态。例如,负荷平衡器可将调用分发给地理上在附近的前端120或具有服务于所述调用的能力的前端。在其中每个前端120对应于按需代码执行系统的另一部件的单独的实例(诸如在下文描述的活动池140A)的情况下,负荷平衡器可根据那些其他部件上的能力或负荷来分发调用。如将在下文更详细地描述,在一些情况下,可在前端120之间确定性地分发调用,使得执行任务的给定调用将始终(或几乎始终)被路由到同一前端120。这可(例如)辅助维持对任务的准确的执行记录,从而确保所述任务仅执行期望的次数。虽然说明性地描述了经由负荷平衡器来分发调用,但本领域技术人员将明白其他分发技术,诸如任播路由。

为了执行任务,按需代码执行系统110包括一个或多个工作者管理器140,所述一个或多个工作者管理器管理用于服务于传入的调用以执行任务的实例。在图1中说明的示例中,每个工作者管理器140管理虚拟机实例154A-C的活动池,所述虚拟机实例当前被指派给一个或多个用户并且由一个或多个物理主机计算装置150A-B实施。物理主机计算装置150A-B和虚拟机实例154A-C可进一步实施一个或多个容器158A-F,所述一个或多个容器可包含和执行一个或多个用户提交的代码160A-G。容器是使用在虚拟机实例或主机计算装置上可用的资源在那个实例内或装置上创建的逻辑单元。例如,每个工作者管理器140可基于在执行任务的调用中指定的信息来创建新的容器或者定位现有的容器158A-F并且指派所述容器以处置任务的执行。

容器156A-F、虚拟机实例154A-C和主机计算装置150A-B还可包括语言运行时、代码库或促进用户提交的代码160A-G的执行的其他支持功能(在图1中未描绘)。物理计算装置150A-B和虚拟机实例154A-C还可包括操作系统152A-B和156A-C。在各种实施方案中,操作系统152A-B和156A-C可以是相同的操作系统、相同的操作系统的变体、不同的操作系统或它们的组合。

虽然虚拟机实例154A-C在这里被描述为指派给特定用户,但在一些实施方案中,可将实例154A-C指派给一组用户,使得所述实例被绑到所述组用户并且所述组的任何成员可利用所述实例上的资源。例如,同一组中的用户可属于同一安全组(例如,基于他们的安全证书),使得已经在特定实例上的容器中执行了一个成员的任务之后在同一实例上的另一容器中执行另一成员的任务不会造成安全风险。类似地,工作者管理器140可根据一个或多个策略来指派实例和容器,所述一个或多个策略规定可在哪些容器中执行哪些请求以及可将哪些实例指派给哪些用户。示例性策略可指定将实例指派给共享同一账户的用户的集合(例如,考虑到访问由按需代码执行系统110提供的服务)。在一些实施方案中,与同一用户组相关联的请求可共享相同的容器(例如,如果与所述请求相关联的用户代码是相同的)。在一些实施方案中,任务不在所述组的不同用户之间进行区分,而是简单地指示与任务相关联的用户所属的组。

一旦前端120已经成功地处理了执行任务的触发事件,前端120便将请求传递到工作者管理器140以执行所述任务。在一个实施方案中,每个前端120可与对应的工作者管理器140相关联(例如,位于同一地点或地理上在前端120附近的工作者管理器140),并且因此,前端120可将大多数或所有请求传递到那个工作者管理器140。在另一实施方案中,前端120可包括位置选择器,所述位置选择器被配置为确定将执行请求传递到的工作者管理器140。在一个实施方案中,所述位置选择器可基于将调用散列来确定接收所述调用的工作者管理器140,并且将所述调用分发到基于散列值(例如,经由散列环)而选择的工作者管理器140。本领域技术人员将明白用于在工作者管理器140之间分发调用的各种其他机构。根据本公开的实施方案,工作者管理器140可根据来自仿真供应系统170的推荐来确定用于执行任务的主机计算装置150A-B或虚拟机实例154A-C。

按需代码执行系统110还包括仿真供应系统170,所述仿真供应系统实施本公开的各方面,包括(例如)确定如何提供特定任务可能需要的功能性。在一些实施方案中,仿真供应系统170包括代码分析器162,在用户经由前端120提交代码时可叫用所述代码分析器,以静态地分析所提交的代码并且确定所述所提交的代码所需要的功能性。如在下文更详细地描述,代码分析器162可分析用户的代码并且识别(例如)API调用、操作系统调用、功能调用或代码在执行期间将需要的功能性的其他指示。在各种实施方案中,代码分析器162可分析用户的代码的关键词、符号、报头、指示或其他方面。在其他实施方案中,按需代码执行系统110包括执行分析器164,可在用户的代码被执行时叫用所述执行分析器,以分析执行的代码的性能和在代码的执行期间实际上利用的功能性。执行分析器164可识别(例如)需要特定功能性但在执行期间极难接触到的源代码的一部分。在其他实施方案中,仿真供应系统170可包括计算资源数据存储区176,所述计算资源数据存储区可存储关于由各种主机计算装置150A-B提供或由各种虚拟机实例154A-C仿真的功能性的信息。

如图1中所示,主机计算装置150A-B、虚拟机实例154A-C与容器158A-F的各种组合和配置可用于促进用户提交的代码160A-G的执行。在所说明的示例中,主机计算装置150A实施两个虚拟机实例154A和154B。虚拟机实例154A又实施两个容器158A和158B,所述两个容器分别包含用户提交的代码160A和160B。虚拟机实例154B实施单个容器158C,所述单个容器包含用户提交的代码160C。主机计算装置150B进一步实施虚拟机实例154C并且直接实施容器158E和158F,所述容器包含用户提交的代码160F和160G。虚拟机实例154C又实施容器158D,所述容器包含用户提交的代码160D和160E。将理解,出于示例的目的而说明这些实施方案,并且许多其他实施方案在本公开的范围内。

虽然一些功能性在本文一般参考按需代码执行系统110的单独的部件进行描述,但其他部件或部件的组合可另外或可替代地实施此类功能性。例如,工作者管理器140可操作以提供如本文参考仿真供应系统170描述的与用户提交的代码的执行相关联的功能性。

图2描绘操作以确定应将如何在按需代码执行系统110内提供由特定任务使用的功能性的计算系统(参考为仿真供应系统170)的通用架构。在图2中描绘的仿真供应系统170的通用架构包括可用于实施本公开的各方面的计算机硬件和软件模块的布置。可使用物理电子装置实施硬件模块,如下文更详细地论述。仿真供应系统170可包括比在图2中示出的元件更多(或更少)的元件。然而,并不需要示出所有这些一般常规元件以便提供适用性广的公开内容。另外,在图2中绘示的通用架构可用于实施在图1中绘示的其他部件中的一者或多者。如所绘示,仿真供应系统170包括处理器202、输入/输出装置接口204、网络接口206和数据存储区208,其全部可通过通信总线彼此通信。网络接口292可提供对一个或多个网络或计算系统的连接性。处理器202因此可经由网络104从其他计算系统或服务接收信息和指令。处理器202还可与存储器280通信,并且进一步经由输入/输出装置接口204提供用于任选的显示器(未示出)的输出信息。输入/输出装置接口296还可从任选的输入装置(未示出)接受输入。

存储器220可包含处理器202执行以便实施本公开的一个或多个方面的计算机程序指令(在一些实施方案中被分组为模块)。存储器220一般包括随机存取存储器(RAM)、只读存储器(ROM)和/或其他持久的、辅助的或非暂时性计算机可读介质。存储器220可存储操作系统222,所述操作系统提供计算机程序指令以供处理器202用于对仿真供应系统170的一般管理和操作中。存储器220还可包括用于实施本公开的各方面的计算机程序指令和其他信息。例如,在一个实施方案中,存储器220包括用户界面模块224,所述用户界面模块例如经由安装在计算装置上的诸如浏览器或应用等导航和/或浏览界面而生成用于在计算装置上显示的用户界面(和/或用于所述用户界面的指令)。另外,存储器220可包括一个或多个数据存储库(未示出)和/或与一个或多个数据存储库通信,例如,以访问用户程序代码和/或库。

存储器220可包括可由处理器202执行的代码分析器172和执行分析器174以作为用户界面模块224的补充和/或与所述用户界面模块组合。在一个实施方案中,代码分析器172和执行分析器174单独地或共同地实施本公开的各个方面,例如分析代码或代码执行以确定所需的功能性并且有效地提供那个功能性,如在下文进一步描述。

虽然代码分析器172和执行分析器174在图2中示出为仿真供应系统170的部分,但在其他实施方案中,代码分析器172和执行分析器174的全部或一部分可由按需代码执行系统110的其他部件和/或另一计算装置实施。例如,在本公开的某些实施方案中,与按需代码执行系统110通信的另一计算装置可包括与被绘示为仿真供应系统170的部分的模块和部件类似地操作的若干模块或部件。

存储器220还可包括用户提交的代码160,可将所述用户提交的代码连同用以在按需代码执行系统110上执行任务的用户提交的请求一起加载到存储器中。可由代码分析器172说明性地分析代码160以识别所需的功能性,如在下文更详细地描述。存储器220还可包括执行性能度量226,所述执行性能度量可当在物理或虚拟机上执行代码160时从这些平台收集,并且可由执行分析器174分析。

在一些实施方案中,仿真供应系统170还可包括除了在图2中绘示的部件之外的部件。例如,存储器220还可包括识别由可用于执行用户提交的代码160的各种物理和虚拟计算资源提供的功能性的计算资源信息,或者可包括与请求一起提交的元数据或其他信息,诸如曾对用户提交的代码160进行编译以便在提供特定功能性的计算资源上执行的指示。图2因此被理解为说明性的而不是限制性的。

图3描绘用于基于对用于任务的用户提交的代码的分析来确定在执行所述任务时使用的计算资源的说明性交互。在(1)处,用户装置102向按需代码执行系统的前端120提交执行任务的请求。所述请求可包括用户提交的代码,或在一些实施方案中可识别先前已经提交的用户代码。在(2)处,前端120请求代码分析器172分析用户提交的代码以识别所述代码在执行期间可能需要的功能性。说明性地,所述用户提交的代码可利用特定指令集(在其可用的情况下),诸如实施向量指令、浮点指令、融合乘加指令、神经网络指令、张量处理指令、单指令多数据(“SIMD”)指令、密码指令等的指令集。物理处理器可实施一个或多个这些指令集。虚拟机中的虚拟处理器也可实施这些指令集中的一者或多者,其中取决于在虚拟机与基础物理计算资源之间的交互,执行结果不同。

在(3)处,代码分析器172可向计算资源数据存储区176请求计算资源数据。所述计算资源数据可指示(例如)在按需代码执行系统110内可用以便执行用户提交的代码的特定计算资源,并且可进一步指示与这些计算资源相关联的功能性、在提供指定功能性时的这些计算资源的性能、以及使代码分析器172能够确定所推荐的计算资源的其他参数或信息。在(4)处,计算资源数据存储区176可提供所请求的计算资源数据。在一些实施方案中,计算资源数据存储区176可仅提供关于可用的计算资源的数据。在其他实施方案中,计算资源数据存储区176可提供关于不可用的计算资源(例如,因为它们当前正用于执行其他用户提交的代码)的数据,并且代码分析器172可通过(例如)迁移其他任务来确定是否使这些资源可用。

在(5)处,代码分析器172可确定在执行用户提交的代码时使用的一组计算资源。在一些实施方案中,代码分析器172可依据资源可用性、对所请求的任务的优先级区分以及其他因素而生成工作者管理器140可任选地实施的推荐。在其他实施方案中,代码分析器172可在作出其确定时考虑一些或所有这些因素,并且可确定一组计算资源供工作者管理器140进行分配。代码分析器172可分析指令、操作、功能、API调用、库或用户提交的代码的其他方面以识别所述代码可使用的功能性,并且可识别提供此功能性的计算资源。例如,代码分析器172可分析用户提交的代码并且识别出所述用户提交的代码已经被编译以用于在特定处理器上执行(例如,通过在编译时间设置特定旗标),或识别出所述用户提交的代码包括要频繁使用浮点算术的库。在一些实施方案中,代码分析器172可获得关于用户提交的代码的先前执行的信息,并且在那个基础上确定由所述代码使用的功能性。在其他实施方案中,代码分析器172可获得关于由同一用户提交的其他代码的信息,并且可评估用户的提交是否频繁利用特定功能性。代码分析器172可进一步分析数据,诸如用户优先级或偏好,并且可分析计算资源数据以考虑若干因素,诸如特定资源的有限的可用性(其可表达为资源成本)、对某些计算资源的整体需求、对请求和任务的优先级区分或其他考虑因素。

在(6)处,代码分析器172向前端120提供资源推荐,并且在(7)处,前端120向工作者管理器140提供资源推荐和用户提交的代码。在一些实施方案中,可省略(6)处的交互,并且代码分析器172可直接向工作者管理器140提供资源推荐。在其他实施方案中,可组合(6)和(7)处的交互,并且代码分析器172可向工作者管理器140提供用户提交的代码和推荐两者。在其他实施方案中,工作者管理器140可执行在(2)处的所述交互并且向代码分析器172请求资源推荐。在各种实施方案中,前端120或代码分析器172可提供允许工作者管理器140获得用户提交的代码的标识符或其他信息而不是直接提供用户提交的代码。

在(8)处,在一些实施方案中,工作者管理器140可确定由代码分析器172推荐的资源的可用性。在一些实施方案中,代码分析器172可提供用于执行用户提交的代码的潜在计算资源的被区分优先级的或经过排序的列表,并且工作者管理器140可通过将所述被区分优先级的列表与可用的资源池进行比较来确定“最佳可用的”资源。在其他实施方案中,代码分析器172可提供各种潜在计算资源(或任务的相对优先级)的得分或加权因子,并且工作者管理器140可基于这些因素来确定计算资源。在其他实施方案中,如上文描述,代码分析器172可在确定一组计算资源时考虑资源可用性,并且可省略(8)处的交互,或者所述交互可以是确定必须将任务从一个资源迁移至另一资源,以腾出将用于执行新提交的任务的资源。

在(9)处,工作者管理器140可分配将用于执行用户提交的代码的计算资源。在各种实施方案中,分配计算资源可包括:分配主机计算装置150A;分配现有的虚拟机实例(在图3中未示出);将新的虚拟机实例(在图3中未示出)实例化;或它们的组合。在一些实施方案中,如上文描述,工作者管理器140可分配除了由代码分析器142推荐的计算资源之外的计算资源。例如,如果由代码分析器142推荐的计算资源不可用,则工作者管理器140可基于推荐或资源可用性来确定替代性资源。在(10)处,主机计算装置150A或其他分配的计算资源执行用户提交的代码。

在一些实施方案中,可修改上文描述的操作的排序和实施,或者可通过按需代码执行系统110的额外的或替代性元件来执行这些交互。例如,在一些实施方案中,工作者管理器140可被配置为分析性能度量,并且响应于所述度量满足特定标准而向执行分析器174请求资源推荐。作为另一示例,可在接收执行用户提交的代码的请求之前执行代码分析,并且可存储此类分析的结果(例如,存储在计算资源数据存储区176中)以供稍后在请求代码执行时使用。

图4描绘用于基于对任务的当前或先前执行的分析来确定在执行所述任务时使用的计算资源的说明性交互。在(1)处,正在执行任务的计算资源(诸如主机计算装置150A或在所述主机计算装置150A上执行的虚拟机实例)收集关于所述任务的执行的性能度量。性能度量可包括(例如)每个时钟循环执行的处理器指令的数目,其可提供虚拟机实例正在仿真未物理地提供的处理器的有效程度的指示。在各种实施方案中,性能度量可包括测量结果,诸如总执行时间、在执行期间利用(或未利用)的计算资源等。在(2)处,所述计算资源向执行分析器174报告执行度量。在各种实施方案中,所述计算资源可在任务执行期间或在任务完成之后报告度量。

在(3)处,执行分析器174可确定所推荐的计算资源。说明性地,执行分析器174可基于执行度量来确定不同的一组计算资源可更高效地执行所述代码。例如,执行分析器174可确定所述代码正在执行在不同的计算资源(例如,实施特定指令集的处理器)上会更高效地执行的若干操作。作为另一示例,执行分析器174可确定所述代码很少使用或不使用计算资源,并且因此可将所述代码迁移至不同的计算资源而不会显著影响性能。在一些实施方案中,执行分析器174可从计算资源数据存储区176获得关于可以可用于执行所述代码的其他计算资源的信息,并且可相对于所接收的性能度量来估计在那些资源上执行所述代码的性能。

在(4)处,执行分析器174可将经更新的计算资源数据存储至计算资源数据存储区176。说明性地,执行分析器174可基于所收集的性能度量而存储特定一组计算资源以特定程度的效率(或低效)执行了所述代码,并且此信息可用于改进由执行分析器174或代码分析器172进行的后续分析。在一些实施方案中,如上文所论述,执行分析器174可存储计算资源未被充分利用或在执行所述代码时需要但不存在特定功能性。在一些实施方案中,执行分析器174可分析对各种用户提交的代码的多次执行的结果,以识别可促进分配计算资源来执行用户提交的代码的趋势或模式。

在(5)处,在一些实施方案中,执行分析器174可向工作者管理器140提供经更新的资源推荐。在一些实施方案中,如上文所论述,执行分析器174可考虑若干因素,诸如资源可用性和优先级区分,并且可指导工作者管理器140将用户提交的代码迁移至不同的一组计算资源。在其他实施方案中,执行分析器174可提供推荐,并且工作者管理器140可确定是否实施所述推荐。在这些实施方案中,在(6)处,工作者管理器140可确定计算资源是否可用或可使得可用以实施执行分析器174的推荐。在一些实施方案中,工作者管理器140或执行分析器174可考虑通过将执行的代码迁移至不同的一组计算资源而实现的所估计的性能增益是否胜过与所述迁移相关联的任何成本,诸如执行状态的传递或与腾出所述资源相关联的成本。在其他实施方案中,工作者管理器140或执行分析器174可对推荐进行聚合或区分优先级,以确保资源被整体有效地分配。

在(7)处,工作者管理器140可将对用户提交的代码的执行从一组计算资源迁移至另一组计算资源。例如,工作者管理器140可将对所述代码的执行从主机计算装置150A迁移至实施不同功能性的另一主机计算装置150B。在各种实施方案中,工作者管理器140可将代码执行从一个物理计算装置迁移至另一物理计算装置,从一个虚拟机实例迁移至另一虚拟机实例,从物理计算装置迁移至虚拟机实例(或反之亦然),或它们的组合。在一些实施方案中,工作者管理器140可通过以下操作来迁移代码执行:挂起主机计算装置150A上的执行;将代码和状态信息迁移至主机计算装置150B;以及随后在主机计算装置150B上重新开始代码执行并且释放主机计算装置150A上的曾执行所述代码的资源。在其他实施方案中,工作者管理器140可通过终止主机计算装置150A上的进行中的执行并且在主机计算装置150B上重新开始来迁移代码执行。在其他实施方案中,工作者管理器可执行“现场”迁移,并且可在不在主机计算装置150A上挂起执行的情况下在主机计算装置150B上开始执行,或者可在完成迁移之前的时间内在两个装置150A-B上并行地执行。迁移执行的代码的其他实施方案将理解为在本公开的范围内。在(8)处,主机计算装置150A可挂起其对用户提交的代码的执行,并且在(9)处,主机计算装置150B(或其他物理或虚拟计算装置)可从挂起执行的点重新开始对所述代码的执行。

在一些实施方案中,执行分析器174可确定在接下来执行用户提交的代码时将要使用的一组计算资源,并且可向代码分析器172、工作者管理器140提供此推荐或将所述推荐存储在计算资源数据存储区176中。另外,在一些实施方案中,执行分析器174可基于在先前的执行期间收集的性能度量而在代码的后续执行开始时作出确定或推荐,这可补充或取代对用于后续执行的基于代码的分析。

在一些实施方案中,可在执行用户提交的代码期间连续地执行(2)处的对执行度量的报告,并且执行分析器174可动态地分析在用户提交的代码的执行期间的各个点处用户提交的代码是否需要不同的计算资源。例如,执行分析器174可确定用户提交的代码已经开始或结束了利用某个功能性的执行阶段,并且可推荐使那个功能性可用或指示不再需要所述功能性。另外,在一些实施方案中,工作者管理器140可请求执行分析器174提供对特定计算资源(例如,已经变得可用的计算资源)的推荐,并且可接收将对特定用户提交的代码的执行迁移至所述资源的推荐。

图5是用于基于对用户提交的代码的分析来确定要推荐的一组计算资源的说明性例程500的流程图。例程500可(例如)由图1的代码分析器172执行。例程500开始于框502处,其中可获得用于任务的代码(例如,由用户提交)。在一个实施方案中,任务的代码被表示为代码对象,诸如包括任务的源代码的压缩文件。在框504处,对所述代码进行分析以识别在代码执行期间可能需要的功能性。如上文描述,可关于库、编程语言特征、API调用或其他特征来分析所述代码,以识别在代码执行期间可有利于提供的功能性。在一些实施方案中,可将所述代码与由按需代码执行系统110执行的其他代码进行比较,并且可识别共同的特征或相似度。

在框506处,可识别可用的计算资源。在一些实施方案中,如上文描述,可不管计算资源的可用性如何来识别计算资源。在各种实施方案中,可在特定数据中心内的可用性(例如,存在资源)和使用的可用性(例如,资源是闲置的或可被释放)两个方面考虑可用性。在框508处,可将提供所识别的功能性的多组计算资源识别为用于执行用户提交的代码的潜在候选者。一组计算资源可包括(例如)各种物理或虚拟资源,诸如处理器、存储器、接口、数据存储区等。在一些实施方案中,虚拟计算资源可与特定主机计算环境相关联。例如,虚拟处理器可与基础的物理处理器相关联,以便在提供所需的功能性时评估所述虚拟处理器的性能。

在框510处,可选择尚未通过例程500的此执行分析出的一组资源。在框512处,可关于执行用户提交的代码来估计此组资源的性能。可(例如)基于基准、度量、先前的执行或其他标准来估计性能。在各种实施方案中,可依据数字得分、等级、类别(例如,高、中等和低)或实现比较的其他格式来表达性能估计。

在决策框514处,可确定例程500是否已经分析了所有候选组的计算资源。如果否,则例程500分叉至框510,并且迭代通过框512和514,直到已经分析了所有组的计算资源为止。一旦已经分析了所有资源组,例程500便分叉至框516,其中可基于性能估计而确定推荐的一组计算资源。在一些实施方案中,可推荐具有最高估计性能的所述一组计算资源。在其他实施方案中,所述一组计算资源可与成本、稀缺性或可被考虑进推荐的其他标准相关联。例如,仅在与广泛可用的计算资源相关的性能上的差异超过阈值的情况下才可分配稀缺的计算资源。

在框518处,可使用推荐的一组计算资源来执行所述代码。在一些实施方案中,如上文描述,推荐的一组计算资源可以是在分配计算资源方面的一个因素,并且可与诸如资源可用性或成本等其他考虑因素一起加权。在其他实施方案中,可输出候选计算资源的被区分优先级的列表,并且可使用所述列表来确定在执行代码时使用的计算资源。在其他实施方案中,例程500可确定应使特定资源可用,并且可基于在将要可用的特定资源上正在执行的各种任务的所估计或测量的性能来识别要迁移的另一任务(以及相关联的用户提交的代码)以便释放所述资源。

图6是用于基于对执行性能度量的分析来确定要推荐的一组计算资源的说明性例程600的流程图。例程600可(例如)由图1的执行分析器174执行。例程600开始于框602处,其中可获得与在特定一组计算资源上执行用于指定任务的用户提交的代码相关的性能度量。在一些实施方案中,如上文描述,可在执行所述代码期间获得所述性能度量。在其他实施方案中,可周期性、响应于各种事件(例如,计算资源变得可用或不可用、代码叫用特定库或API调用等)或基于其他标准而获得性能度量。在其他实施方案中,可在代码已经完成执行之后获得所述性能度量。

在框604处,可分析所述性能度量。在一些实施方案中,可将所述性能度量与阈值或其他标准进行比较以评估所述一组计算资源的性能是否令人满意。例如,所述性能度量可用于评估在每个时钟循环执行的指令数目是否满足阈值,或评估代码执行是否在时间间隔内完成。在其他实施方案中,所述性能度量可相对于其他性能度量来分析,诸如当在不同的一组计算资源上执行相同或类似的代码时获得的度量、当在同一组计算资源上执行其他代码时获得的度量、或平均或基线性能度量。

在决策框606处,可确定所述一组计算资源在执行用户提交的代码时的相对性能是否可接受。如果所述相对性能与基线相当或好于基线,则例程600可结束,而不采取任何措施来提高性能。在一些实施方案中,在相对性能好于平均的情况下,例程600可分叉至框618并且存储性能度量或其他信息,并且可在进一步推荐在执行用于特定任务的用户提交的代码时要使用哪些计算资源时使用此信息。在其他实施方案中,在相对性能高于所需的性能的情况下,例程600可分叉至框608,并且考虑将任务迁移至其他计算资源。例如,用户可要求在指定时间量内完成特定任务,并且所述一组计算资源可使得能够比用户所要求的快得多地完成所述任务。决策框606处的确定因此可以是可在较慢的一组计算资源上完成任务并且仍然满足用户的性能要求,并且因此应迁移所述任务以便为更多时间紧要的任务腾出较快的计算资源。

如果决策框606处的确定是应将用户提交的代码的执行迁移至不同的一组计算资源,则例程600分叉至框608,其中可识别可用的计算资源。在框610处,可分析所述可用的计算资源以识别可用于执行任务的替代性一组计算资源,并且在框612处,可估计所述替代性一组计算资源在执行所述任务时的性能。在一些实施方案中,可识别和分析多组计算资源,并且可针对每个候选组迭代地执行框612。在其他实施方案中,可基于当前的一组计算资源的相对性能来识别替代性一组计算资源。

在决策框614处,可确定是否应将用户提交的代码的执行从当前的一组计算资源迁移至所述替代性一组计算资源。在一些实施方案中,可基于所获得和估计的性能度量而确定所述替代性一组计算资源是否将提供更好的性能。例如,所述确定可以是所述替代性一组计算资源将比当前的一组计算资源在每个时钟循环执行更多的指令,并且因此将导致性能提高。在其他实施方案中,可基于诸如执行时间、成本、资源利用率或其他度量等标准确定所述替代性一组计算资源是否提供可接受的性能。在这些实施方案中,当前的一组计算资源可提供比当前的一组计算资源更高的性能,但上文论述的其他因素可导致确定使用所述替代性一组计算资源。如果决策框614处的确定是不应迁移执行,则例程600结束。

如果决策框614处的确定是应迁移代码执行,则在框616处,将代码执行迁移至所述替代性一组计算资源。在框618处,可存储所获得或估计的性能度量以提高估计的准确度或提高在起初分配计算资源时的决策,如上文所论述。例程600随后结束。

上文描述的例程的框在本公开的实施方案中可变化。例如,在任一例程的一些实现方式中,可将对可用的计算资源的识别推给或委托给工作者管理器140,并且例程500或600可提供工作者管理器140基于诸如资源可用性和将任务从一组资源迁移至另一组资源的成本效益等因素而确定是否实施的推荐。根据各种实施方案,所述例程还可包括额外的框,或者可重新布置例程的框。

将理解,不一定所有目的或优势都可根据本文描述的任何特定实施方案来实现。因此,例如,本领域技术人员将认识到,某些实施方案可被配置为按照实现或优化如本文所教导的一个优点或一组优点而不一定实现可在本文中教导或暗示的其他目的或优点的方式来操作。

可在包括由计算系统执行的一个或多个特定计算机可执行指令的软件代码模块中并且完全经由所述软件代码模块自动地体现本文描述的所有过程。所述计算系统可包括一个或多个计算机或处理器。所述代码模块可存储在任何类型的非暂时性计算机可读介质或其他计算机存储装置中。可以在专用计算机硬件中体现所述方法中的一些或全部。

根据本公开,除了本文描述的变化之外的许多其他变化将明显。例如,依据实施方案,可按照不同顺序执行、可添加、合并或完全省去本文描述的算法中的任一者的某些动作、事件或功能(例如,不是所有的所描述的动作或事件对于算法的实践来说都是必要的)。此外,在某些实施方案中,可同时(例如,通过多线程处理、中断处理或多个处理器或处理器核心或在其他并行架构上)而非循序地执行动作或事件。另外,不同的任务或过程可由可一起运行的不同机器和/或计算系统执行。

可通过机器来实施或执行结合本文公开的实施方案而描述的各种说明性逻辑块和模块,所述机器诸如为处理单元或处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其他可编程逻辑装置、离散门或晶体管逻辑、离散硬件部件、或其经设计以执行本文描述的功能的任何组合。处理器可以是微处理器,但在替代方案中,处理器可以是控制器、微控制器或状态机、它们的组合等。处理器可包括被配置为处理计算机可执行指令的电路。在另一实施方案中,处理器包括在不处理计算机可执行指令的情况下执行逻辑操作的FPGA或其他可编程装置。处理器还可实施为计算装置的组合,例如,DSP与微处理器的组合、多个微处理器、一个或多个微处理器与DSP核心的联合、或任何其他此类配置。虽然本文主要关于数字技术进行描述,但处理器还可主要包括模拟部件。计算环境可包括任何类型的计算机系统,包括(但不限于)基于微处理器、大型计算机、数字信号处理器、便携式计算装置、装置控制器或电器内的计算引擎(仅举几例)的计算机系统。

除非另有明确规定,否则诸如尤其是“能够”、“可以”、“可能”或“可”等条件语言在上下文内应另外理解为一般用于传达某些实施方案包括某些特征、元件和/或步骤,而其他实施方案不包括某些特征、元件和/或步骤。因此,此类条件语言一般无意暗示一个或多个实施方案无论如何需要特征、元件和/或步骤,或者一个或多个实施方案一定包括用于在具有或不具有用户输入或提示的情况下决定是否在任何特定实施方案中包括或将执行这些特征、元件和/或步骤的逻辑。

除非另有明确规定,否则诸如措辞“x、Y或Z中的至少一者”等连接性语言在上下文另外被理解为一般用于呈现项目、项等可以是X、Y或Z或它们的任何组合(例如,X、Y和/或Z)。因此,此类连接性语言一般无意并且将不暗示某些实施方案需要存在X中的至少一者、Y中的至少一者或Z中的至少一者。

在本文描述和/或在附图中描绘的流程图中的任何过程描述、元素或框应理解为潜在地表示包括用于实施所述过程中的特定逻辑功能或元素的一个或多个可执行指令的代码的模块、段或部分。本领域技术人员将理解,在本文描述的实施方案的范围内包括了替代性实现方式,其中元素或功能可删除、按照不同于所示出或论述的次序执行,包括基本上同时执行或以相反次序执行,这取决于所涉及的功能性。

除非另外明确规定,否则诸如“一(a)”或“一(an)”等冠词一般应理解为包括一个或多个所描述的物品。因此,诸如“被配置为......的装置”等措辞意在包括一个或多个所述装置。此类一个或多个所述装置还可共同地被配置为执行所陈述的叙述。例如,“被配置为执行叙述A、B和C的处理器”可包括与被配置为执行叙述B和C的第二处理器联合工作的被配置为执行叙述A的第一处理器。

可鉴于以下条款来描述本公开的实施方案的示例:

条款1.一种系统包括:非暂时性数据存储区,所述非暂时性数据存储区存储关于物理和虚拟处理器的信息;以及计算装置,所述计算装置配置有可执行指令以:接收能够在按需代码执行系统上执行的用户提交的代码;识别与所述用户提交的代码相关联的指令集,其中所述用户提交的代码当在所述按需代码执行系统上执行时利用所述指令集;以及响应于执行所述用户提交的代码的请求:获得关于实施所述指令集的物理处理器的可用性信息;获得关于物理处理器的第一性能信息;获得关于实施所述指令集的虚拟处理器的第二性能信息;至少部分地基于可用性信息、所述第一性能信息和所述第二性能信息来确定用于执行所述用户提交的代码的推荐的处理器;以及致使所述按需代码执行系统在所述推荐的处理器上执行所述用户提交的代码。

条款2.根据条款1所述的系统,其中所述指令集包括向量指令、浮点指令、融合乘加指令、神经网络指令、张量处理指令、单指令多数据指令、安全指令或密码指令。

条款3.根据条款1所述的系统,其中所述指令集是至少部分地基于由所述用户提交的代码叫用的软件库来识别。

条款4.根据条款1所述的系统,其中所述第二性能信息与在不实施所述指令集的物理处理器上将所述虚拟处理器实例化相关联。

条款5.根据条款1所述的系统,其中所述用户提交的代码被编译用于所述物理处理器。

条款6.一种计算机实施的方法包括:接收能够在按需代码执行系统上执行的用户提交的代码;至少部分地基于所述用户提交的代码来确定与在所述按需代码执行系统上执行所述用户提交的代码相关联的功能性;以及响应于执行所述用户提交的代码的请求:获得关于实施所述功能性的第一计算资源的第一性能信息;获得关于仿真所述功能性的第二计算资源的第二性能信息;至少部分地基于所述第一性能信息和所述第二性能信息来确定用于执行所述用户提交的代码的推荐的计算资源;以及向所述按需代码执行系统提供包括所述推荐的计算资源的推荐,其中所述按需代码执行系统至少部分地基于所述推荐来选择用于执行所述用户提交的代码的计算资源。

条款7.根据条款6所述的计算机实施的方法,其中在先前在所述按需代码执行系统上执行所述用户提交的代码期间生成所述第一性能信息和所述第二性能信息中的至少一者。

条款8.根据条款6所述的计算机实施的方法,所述计算机实施的方法还包括:从所述按需代码执行系统获得关于使用选择的计算资源来执行所述用户提交的代码的性能度量;至少部分地基于所述性能度量来识别替代性计算资源;以及向所述按需代码执行系统提供包括所述替代性计算资源的经更新的推荐,其中提供所述经更新的推荐致使所述按需代码执行系统将对所述用户提交的代码的执行迁移至不同的计算资源。

条款9.根据条款8所述的计算机实施的方法,其中所述性能度量包括在每个时钟循环执行的处理器指令的数目。

条款10.根据条款8所述的计算机实施的方法,所述计算机实施的方法还包括确定所述替代性计算资源是可用的。

条款11.根据条款6所述的计算机实施的方法,其中所述第一计算资源是物理计算资源,并且所述第二计算资源是虚拟计算资源。

条款12.根据条款6所述的计算机实施的方法,所述计算机实施的方法还包括至少部分地基于与执行所述用户提交的代码相关联的功能性来识别所述第一计算资源和所述第二计算资源。

条款13.根据条款6所述的计算机实施的方法,所述计算机实施的方法还包括聚合对计算资源的多个先前的推荐以确定用于按需代码执行系统的推荐的硬件配置。

条款14.根据条款13所述的计算机实施的方法,其中所述推荐的硬件配置至少部分地基于所述多个先前的推荐中的一个或多个趋势。

条款15.根据条款13所述的计算机实施的方法,其中所述推荐的硬件配置至少部分地基于性能度量。

条款16.根据条款6所述的计算机实施的方法,其中所述第一计算资源通过仿真所述功能性来实施所述功能性。

条款17.非暂时性计算机可读介质包括计算机可执行指令,所述计算机可执行指令在由按需代码执行系统执行时致使所述按需代码执行系统进行以下操作:获得能够在所述按需代码执行系统上执行的用户提交的代码;至少部分地基于所述用户提交的代码来确定与在所述按需代码执行系统上执行所述用户提交的代码相关联的功能性,其中所述按需代码执行系统不接收提供所述功能性的请求;识别实施所述功能性的多个计算资源;响应于执行所述用户提交的代码的请求:识别所述多个计算资源的可用子集;从所述可用子集选择用于执行所述用户提交的代码的推荐的计算资源;以及在所述推荐的计算资源上执行所述用户提交的代码。

条款18.根据条款17所述的非暂时性计算机可读介质,所述非暂时性计算机可读介质包括在由所述按需代码执行系统执行时致使所述按需代码执行系统进行以下操作的其他计算机可执行指令:至少部分地基于所述多个计算资源中的单独的计算资源的性能估计来生成计算资源的被区分优先级的列表。

条款19.根据条款17所述的非暂时性计算机可读介质,所述非暂时性计算机可读介质包括在由所述按需代码执行系统执行时致使所述按需代码执行系统进行以下操作的其他计算机可执行指令:至少部分地基于不可用的计算资源的性能估计来确定迁移至少一个其他任务以使所述不可用的计算资源可用。

条款20.根据条款17所述的非暂时性计算机可读介质,其中所述执行所述用户提交的代码的请求指定用于执行所述用户提交的代码的优选的计算资源,并且其中所述优选的计算资源不提供所述功能性。

条款21.根据条款20所述的非暂时性计算机可读介质,其中所述推荐的计算资源是至少部分地基于以下操作来确定:将用于在所述推荐的计算资源上执行所述用户提交的代码的性能估计与用于在所述优选的计算资源上执行所述用户提交的代码的性能估计进行比较。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号