首页 / 专利分类库 / 本部其他类目中不包括的技术主题 / 通用处理器和图形处理器之间的负载均衡

通用处理器和图形处理器之间的负载均衡

申请号 CN201180055139.0 申请日 2011-12-12 公开(公告)号 CN103582509A 公开(公告)日 2014-02-12
申请人 亚马逊技术股份有限公司; 发明人 伊恩·M·博恩; 伊登·阿什利·约翰·巴普蒂斯特;
摘要 所公开的是促进中央处理单元(CPU)和 图形处理单元 (GPU)之间的负载均衡的各个实施方案。获取 请求 以在一个或多个计算设备中执行第一应用。在一个实施方案中,当所述第一应用相关联的资源使用配置文件指示所述第一应用是比GPU密集相对更加CPU密集时,与所述第一应用相关联的第二应用被指派在所述一个或多个计算设备的GPU中而不是在所述一个或多个计算设备的CPU中执行。相反地,当所述资源使用配置文件指示所述第一应用是比CPU密集相对更加GPU密集时,所述第二应用被指派在CPU而不是GPU中执行。
权利要求

1.一种系统,其包括:
至少一个计算设备,其包括至少一个图形处理单元(GPU)和至少一个中央处理单元(CPU);和
服务器应用,其在所述至少一个计算设备中可执行,所述服务器应用包括:
获取请求以在所述至少一个计算设备中执行第一应用的逻辑;
当与所述第一应用相关联的资源使用配置文件指示所述第一应用是比GPU密集相对更加CPU密集时将与所述第一应用相关联的第二应用指派在所述至少一个GPU而不是所述至少一个CPU中执行的逻辑;和
当所述资源使用配置文件指示所述第一应用是比CPU密集相对更加GPU密集时将所述第二应用指派在所述至少一个CPU而不是所述至少一个GPU中执行的逻辑。
2.根据权利要求1所述的系统,其中所述第二应用对应于被配置来将由所述第一应用产生的视频信号编码成视频流视频编码器,以及所述服务器应用还包括当所述至少一个计算设备的硬件视频编码器可用时在所述硬件视频编码器中而不是在所述至少一个CPU或所述至少一个GPU中执行所述第二应用对应的所述视频编码器的逻辑。
3.根据权利要求1所述的系统,其中所述第二应用的指派是至少部分地基于所述至少一个GPU的当前负载和所述至少一个CPU的当前负载。
4.根据权利要求1所述的系统,其中所述第二应用的指派是至少部分地基于所述至少一个GPU的当前负载是否与所述至少一个CPU的当前负载彼此相差一阈值
5.根据权利要求1所述的系统,其中所述第二应用包括视频编码器,所述视频编码器被配置来将由所述第一应用产生的视频信号编码成视频流以用于通过数据通信网络而传输至客户端计算设备。
6.根据权利要求5所述的系统,其中所述至少一个计算设备包括所述客户端计算设备不包括的用于执行所述第一应用的至少一种能
7.根据权利要求1所述的系统,其中所述请求从应用库中选择所述第一应用,所述应用中的至少一个是比GPU密集相对更加CPU密集,以及所述应用中的至少一个是比CPU密集相对更加GPU密集。
8.根据权利要求1所述的系统,其还包括在所述至少一个计算设备中可执行的虚拟层,所述虚拟层包括响应于请求而将所述第二应用的执行从所述至少一个CPU转移到所述至少一个GPU的逻辑。
9.根据权利要求8所述的系统,其中所述第二应用被配置来从所述第一应用的输出产生视频流,以及所述视频流在所述第二应用的执行被转移时是不间断的。
10.根据权利要求1所述的系统,其还包括在所述至少一个计算设备中可执行的虚拟层,所述虚拟层包括响应于请求而将所述第二应用的执行从所述至少一个GPU转移到所述至少一个CPU的逻辑。
11.根据权利要求1所述的系统,其中所述至少一个计算设备包括多个网络计算设备,以及所述服务器应用还包括:
至少部分地基于所述资源使用配置文件以及与所述网络计算设备中的一个相关联的当前GPU负载和当前CPU负载而选择用于执行所述第一应用和所述第二应用的所述网络计算设备中的所述一个的逻辑。
12.根据权利要求11所述的系统,其中所述服务器应用还包括重新配置在所述网络计算设备中的所述一个的所述至少一个CPU中执行的至少一个应用在所述当前CPU负载满足CPU负载值时在所述网络计算设备中的所述一个的所述至少一个GPU中执行的逻辑。
13.根据权利要求11所述的系统,其中所述服务器应用还包括重新配置在所述网络计算设备中的所述一个的所述至少一个GPU中执行的至少一个应用在所述当前GPU负载满足GPU负载阀值时在所述网络计算设备中的所述一个的所述至少一个CPU中执行的逻辑。
14.一种系统,其包括:
至少一个计算设备,其包括至少一个图形处理单元(GPU)和至少一个中央处理单元(CPU);和
服务器应用,其在所述至少一个计算设备中可执行,所述服务器应用包括:
获取请求以在所述至少一个计算设备中执行第一应用的逻辑;
确定所述至少一个CPU的当前负载和所述至少一个GPU的当前负载的逻辑;和至少部分地基于所述至少一个CPU的所述当前负载和所述至少一个GPU的所述当前负载而在所述至少一个CPU或所述至少一个GPU中执行与所述第一应用相关联的第二应用的逻辑。
15.根据权利要求14所述的系统,其中所述第二应用至少部分地基于提供所述第一应用的CPU消耗度量和GPU消耗度量的资源使用配置文件而在所述至少一个CPU中或所述至少一个GPU中执行。

说明书全文

通用处理器和图形处理器之间的负载均衡

[0001] 相关申请案的交叉引用
[0002] 本申请案要求于2010年12月14日提交的第12/967,171号美国专利申请案(其以引用的方式并入本文)的权益。
[0003] 发明背景
[0004] 图形处理单元(GPU)是用于图形相关操作的专用处理器。许多计算设备包括一个或多个GPU以便卸载或加速2D和/或3D图形的渲染。GPU的高度平行结构可使GPU较之用于各种复杂算法的诸如中央处理单元(CPU)的通用处理器更有效。尤其是,计算机游戏常常受益于计算设备中的GPU的可用性。
[0005] 附图简述
[0006] 参考以下附图可更好地理解本公开的许多方面。附图中的组件不必按比例绘制、强调,而是被放置以清楚地说明本公开的原理。此外,在附图中,全文所有视图中的相同的参考数字指定对应的零件。
[0007] 图1是根据本公开的各个实施方案的网络环境的附图。
[0008] 图2是提供根据本公开的各个实施方案的图1的网络环境中采用的计算设备的一个实例说明的示意框图
[0009] 图3和图4是示出功能的实例作为在根据本公开的各个实施方案的图1的网络环境中的计算设备中执行的服务器应用的部分而实现的流程图
[0010] 详述
[0011] 本公开涉及促进中央处理单元(CPU)和图形处理单元(GPU)之间的应用的负载均衡。一些应用(诸如,例如,游戏应用)可倾向于在计算设备中施加更大的CPU负载或更大的GPU负载。换言之,一些应用可分为CPU密集型或GPU密集型。本公开的各个实施方案指派应用在至少部分地基于计算设备的当前CPU和GPU负载以及应用的CPU和GPU资源使用而选择的计算设备内执行。此外,一些应用,或应用的部分可至少部分地基于当前CPU和GPU负载被指派在CPU或GPU中执行。因此,比通过采用其它方式更能充分利用计算设备的CPU和GPU资源。在以下的论述中,提供了系统及其组件的综合描述,紧接着是关于系统及其组件的操作的论述。
[0012] 参考图1,其示出根据各个实施方案的网络环境100。网络环境100包括与一个或多个客户端106通过网络109进行数据通信的一个或多个计算设备103。网络109包括,例如,互联网、内联网、外联网、广域网(WAN)、局域网(LAN)、有线网、无线网或其它合适网络等,或两个或更多这样的网络的任何组合。
[0013] 计算设备103可包括,例如,服务器计算机或提供计算容量的任何其它系统。或者,可采用布置在例如一个或多个服务器行或计算机银行或其它布置中的多个计算设备103。例如,多个网络计算设备103一起可包括计算资源、网格计算资源和/或任何其它分配计算布置。这样的计算设备103可位于单个安装中或可被分配在许多不同的地理位置中。为了简便之目的,本文中提及的计算设备103是单数形式。尽管本文中提及的计算设备103是单数形式,但是应理解,在各个布置中可采用多个计算设备103,如上所述。
[0014] 根据各个实施方案,各个应用和/或其它功能可在计算设备103中执行。此外,将各种数据存储在计算设备103可访问的数据存储112中。数据存储112可表示多个数据存储112,如可理解的。例如,数据存储112中存储的数据与各个应用和/或下文描述的功能实体的操作相关联。
[0015] 在计算设备103上执行的组件例如包括服务器应用115、多个应用118a、118b…118N、多个视频编码器119a、119b…119N、多个封装器121a、121b…121N和本文没有详细论述的其它应用、服务、进程、系统、引擎或功能。例如,服务器应用115可对应游戏服务器应用或其它类型的应用会话服务器。执行服务器应用115以开始在提供虚拟化环境的封装器
121中执行的应用118。还可执行服务器应用115以从客户端106获取输入数据122以及将输入数据122提供给各自的封装器121。
[0016] 还执行服务器应用115以将从应用118捕获的视频数据123发送至客户端106。服务器应用115可通过以下各种协议来与客户端106进行通信:诸如,例如,超文本传输协议(HTTP)、简单对象访问协议(SOAP)、代表性状态转移(REST)、实时传输协议(RTP)、实时流协议(RTSP)、实时消息协议(RTMP)、用户数据报协议(UDP)、传输控制协议(TCP)和/或用于通过网络109进行交流数据的其它协议。服务器应用115被配置来维护与执行应用
118相关联的状态信息124。
[0017] 应用118可对应于例如游戏或另一类型的应用。作为非限制性实例,应用118可对应于第一人称射击游戏、动作游戏、冒险游戏、派对类游戏、色扮演游戏、模拟游戏、战略游戏、汽车仿真游戏和/或其它类型的游戏。应用118可以是最初被设计来在通用计算设备中或在专用视频游戏设备(诸如,例如,视频游戏控制台、携带型游戏机、街机游戏设备等)中执行的游戏。应用118还可对应于移动电话应用、计算机辅助设计(CAD)应用、计算机辅助制造(CAM)应用、照片处理应用、视频编辑应用、办公效率应用、操作系统和相关联应用、用于操作系统的仿真器、不在消费设备上呈现的架构和能以及其它应用和应用的组合。
[0018] 应用118可期望访问设备的一个或多个资源,在所述设备上执行应用118。这样的资源科对应于显示设备、输入设备或其它设备。在一些情况下,应用118可请求对一个或多个资源进行独占访问,从而没有其它应用可以访问特定资源。各个应用118可使用多个GPU资源而不是CPU资源,或者多个CPU资源而不是GPU资源。
[0019] 视频编码器119能够将由应用118产生的视频信号编码成用于通过网络109而传输至客户端106的视频流。视频流也可包括由应用118产生的音频信号。为了这个目的,视频编码器119可包括各种类型的视频和音频编码器,诸如,例如,运动图像专家组(MPEG)编码器、H.264编码器、 视频编码器等。可根据以下因素选择这样的编码器:诸如,例如数据约简、编码质量、延迟等。各种视频编码器119被配置来在一个或多个GPU或一个或多个CPU中执行。在各个实施方案中,计算设备103可包括一个或多个专用硬件视频编码器,可在一个或多个专用视频编码器上执行视频编码器119。这样的硬件视频编码器在可用时可被采用。
[0020] 封装器121对应于提供用于执行应用118的虚拟化环境的应用。尤其是,封装器121可被配置来对应用118期望访问的一个或多个资源进行虚拟化。这样的资源可包括键盘鼠标、操纵杆、视频设备、声音设备等。这样,封装器121能够向应用118提供输入命令,正如封装器121仿真键盘、鼠标或另一类型的输入设备一样。
[0021] 可为不同的应用118或不同类别的应用118提供不同类型的封装器121。作为非限制性实例,可通过使用不同的应用接口(API),诸如 图形设备接口(GDI)等来为应用118提供不同的封装器121。封装器121可包括特定于待执行的应用118的操作系统。其中,应用118包括移动电话应用,例如,封装器121可包括安卓(Android)操作系统或另一操作系统。其中,应用118被配置以在专用视频游戏设备或另一类型的计算设备中执行,封装器121可包括仿真设备的仿真应用。封装器121可被配置来将由应用118产生的视频信号传递至视频编码器119以用于编码。与应用118相关联的各个封装器121可使用多个GPU资源而不是CPU资源,或者多个CPU资源而不是GPU资源。
[0022] 由服务器应用115维护的状态信息124包括关于当前活动的应用会话的各个数据。例如,状态信息124可跟踪当前参与应用会话的用户、与用户相关联的状态信息、与应用会话相关联的安全许可(例如,谁可以或不可以加入)等。在一些实施方案中,当应用会话结束时,可删除一些或全部状态信息124。
[0023] 数据存储112存储的数据包括,例如,应用127、资源使用配置文件128、视频编码器129、封装器130、保存的状态数据133、用户数据136和潜在的其它数据。应用127对应于可作为应用118而开始的应用库。应用127可对应于在计算设备103中可执行的代码。或者,应用127可对应于可在另一类型的设备中执行但不可在计算设备103中执行的代码。
这样的应用127可被称为“二进制”、只读存储器图像(ROM)和其它术语。特定的应用127可作为多个应用会话的应用118的多个实例来执行。
[0024] 资源使用配置文件128描述每个应用127的各自资源使用配置文件128。每个资源使用配置文件128指示各自的应用127是否倾向于使用多个CPU资源或GPU资源。一些应用127倾向于为更CPU密集型,而其它应用127倾向于为更GPU密集型。例如,资源使用配置文件128可指示通常由各自的应用127消耗的CPU或GPU的比例。其中,应用127结合仿真应用而被执行,资源使用配置文件128还可反映由仿真应用消耗的资源。在一些实施方案中,资源使用配置文件128还可反映由封装器130消耗的资源。在各个实施方案中,资源使用配置文件128可描述应用127的存储器消耗配置文件。
[0025] 视频编码器129对应于可在计算设备103中采用的各自类型的视频编码器119。一些视频编码器129可对应于特定格式,诸如,例如,H.264、MPEG-4、MPEG-2和/或其它格式。一些视频编码器129可在GPU中执行,一些视频编码器129可在CPU中执行以及一些视频编码器129可在GPU和CPU二者中执行。封装器130对应于实现各种类型的封装器121的可执行代码。封装器130可在计算设备103中执行且可作为多个应用会话的封装器121的多个实例来执行。
[0026] 保存的状态数据133对应于已由应用118保存的应用状态。因为应用118在虚拟化环境中执行,所以应用118可将状态信息写入虚拟位置,接着状态信息作为保存的状态数据133被映射以存储在数据存储112中。保存的状态数据133可对应于由应用118正常保存的数据,或可对应于可在任何时候恢复的应用118的存储器图像。用户数据136包括关于应用118的用户的各个数据,诸如,例如,安全凭证、应用偏好、计费信息、允许加入由用户启动的应用会话的其它用户的清单等。
[0027] 客户端106可表示可耦接至网络109的多个客户端设备。客户端106可以是不同地理位置的。客户端106可包括,例如,基于处理器的系统,诸如计算机系统。这样的计算机系统可表现为以下形式:台式计算机、膝上型计算机、个人数据助理、蜂窝电脑、智能手机、机顶盒、音乐播放器、连网板、平板计算机系统、游戏控制台、电子书阅读器或具有相同容量的其它设备。
[0028] 客户端106可包括显示器139。显示器139可包括,例如,一个或多个设备,诸如,阴极射线管(CRT)、液晶显示屏(LCD)、气体等离子显示器、LCD投影仪或其它类型的显示设备等。客户端106可包括一个或多个输入设备142。输入设备142可包括,例如以下设备:诸如键盘、鼠标、操作杆、加速度计、光枪、游戏控制器、触控板、触控棒、按钮、光学传感器、麦克网络摄像头和/或可以提供用户输入的其它设备。
[0029] 客户端106可被配置来执行各个应用,诸如客户端应用145和/或其它应用。执行客户端应用145以允许用户开始、加入、播放或与在计算设备103中执行的应用118交互。为了这个目的,客户端应用145被配置来通过一个或多个输入设备142捕获由用户提供的输入,且将该输入作为输入数据122通过网络109发送至计算设备103。
[0030] 客户端应用145还可被配置来通过网络109而从计算设备103获取视频数据123,并在显示器139上渲染屏幕148。为了这个目的,客户端应用145可包括一个或多个视频和音频播放器以播放由视频编码器119产生的视频流。在一个实施方案中,客户端应用145包括浏览器应用中的插件。客户端106可被配置来执行客户端应用145以外的应用,诸如,例如,浏览器应用,电子邮件应用、即时消息应用和/或其它应用。
[0031] 接着参考图2,其示出根据本公开的实施方案的计算设备103的示意性框图。计算设备103包括至少一个处理器电路,例如,具有处理器203、存储器206和一个或多个图形设备207,所有的这些均耦接至局部接口209。为了这个目的,计算设备103可包括,例如,至少一个服务器计算机或类似设备。局部接口209可包括,例如,具有伴随地址的数据总线/控制总线或其它总线结构,如可理解的。图形设备207可对应于高性能图形硬件,包括一个或多个图形处理器212。可商购的图形处理器212的非限制性实例包括系列。图形设备207被配置来渲染对应于在计算设备103中执行的应用118。在一个实施方案中,图形设备207可对应于专用硬件视频编码器。
[0032] 存储器206中存储的是可由处理器203执行的数据和数个组件。尤其是,在存储器206中存储的且可由处理器203执行的是服务器应用115、应用118、视频编码器119、封装器121和潜在的其它应用。存储器206中还存储数据存储112和其它数据。此外,操作系统可在存储器206中存储,且可由处理器203执行。
[0033] 应理解,存在存储于存储器206中且可由处理器203执行的其它应用,如可理解。其中,本文论述的任何组件均可以软件的形式实现,可采用大量编程语言中的任何一个,诸如,例如,C、C++、C#、Objective C、 Perl、PHP、VisualRuby、 或其它编程语言。
[0034] 接下来,参考图1和图2,提供了关于网络环境100的各个组件的操作的综合描述。首先,在客户端106的用户将开始应用118的请求发送至服务器应用115。服务器应用115从数据存储112获取对应的应用127和封装器130。然后,服务器应用115在对应的封装器
121中开始应用118。服务器应用115可在状态信息124中跟踪应用的状态。
[0035] 可至少部分地基于与应用118相关联的资源使用配置文件128而在计算设备103的特定一个中开始应用118。资源使用配置文件128可指示应用118有使用更多的处理器203的资源而不是图形处理器212的资源的倾向。或者,资源使用配置文件128可指示应用
118有使用更多的图形处理器212的资源而不是处理器203的资源的倾向。
[0036] 因此,服务器应用115能够根据计算设备103中的一个的资源负载而将应用118匹配到计算设备103中的特定一个。作为非限制性实例,可将倾向于为CPU密集型的应用118指派到具有充足CPU容量的计算设备103。作为另一非限制性实例,可将倾向于为GPU密集型的应用118指派到具有充足GPU容量的计算设备103。在一个实施方案中,应用118可被指派以通过计算设备103而将近似相等的GPU和CPU使用维持在值范围内。进一步地,应用118可被指派以使资源使用最大化,使得使用中的计算设备103的数量最小化。
[0037] 此外,视频编码器119可被配置来在处理器203或图形处理器212中执行。在一个实施方案中,视频编码器119可被配置来使用与对应的应用118相反的资源。例如,如果应用118是CPU密集型的,那么视频编码器119可被配置来使用GPU。相反地,如果应用118是GPU密集型的,那么视频编码器119可被配置来使用CPU。因此,可使与应用118相关联的资源使用(包括视频编码器119)均等。
[0038] 此外,可部分地基于计算设备103的资源负载或当满足一定标准时而将当前执行的视频编码器119从CPU转移至GPU且反之亦然。作为非限制性实例,在当前GPU负载满足阀值时,在GPU中执行的视频编码器119可被重新配置来在CPU中执行。作为另一非限制性实例,在当前CPU负载满足阀值时,在CPU中执行的视频编码器119可被重新配置来在GPU中执行。
[0039] 虚拟层可促进视频编码器119的这种转移。这样的虚拟层,例如,可呈现以下内容:视频编码器119在虚拟设备中执行或包括可映射到处理器203或图形处理器212的虚拟编码设备。通过重新配置或转移视频编码器119,以这种方式可更改处理器203和图形处理器212之间的负载均衡,以便容纳额外的处理器118和相关联应用。在一个实施方案中,当转移视频编码器119的执行时,由视频编码器119产生的视频流是不间断的。
[0040] 在各个实施方案中,可调节由视频编码器119产生的视频流的质量,例如,以管理服务器端的资源使用。还可调节视频流的质量以对网络109上的流量进行计费。此外,可取决于客户端106的能力而调节视频流的质量,以解码视频流。
[0041] 封装器121为应用118提供虚拟化环境,应用118对计算设备103中的一个或多个资源进行虚拟化。这样的资源可包括独占式资源,即,应用118请求进行独占访问的资源。例如,应用118可从视频设备请求全屏幕访问,这是独占式资源,因为通常只有一个应用可进行全屏幕访问。此外,封装器可对以下输入设备进行虚拟化,诸如,例如,键盘、鼠标等,这些设备实际上并不出现在计算设备103中。在各个实施方案中,封装器121可对应于虚拟机和/或封装器121可在虚拟机中执行。
[0042] 在客户端106的用户通过使用客户端106的输入设备142而输入用于应用118的输入命令。作为非限制性实例,用户可按下左鼠标按钮。因此,客户端应用145用以将输入命令编码成可通过网络109而在输入数据122中传输的格式。服务器应用115接收输入命令并将其传送至封装器121。接着,封装器121可通过虚拟鼠标的方式向应用118提供按下左鼠标按钮。在一些实施方案中,从由客户端106产生的输入命令向应用118呈现不同的输入命令。作为非限制性实例,如果用户发送鼠标向下命令和客户端应用145失去焦点,那么封装器121可被配置来发送鼠标向下命令,紧接着发送鼠标向上命令。在各个实施方案中,输入命令被尽可能快地向封装器121转播,或者根据另一方法,输入命令可由封装器121进行排队,并按照队列的顺序转播至应用118。
[0043] 同时,应用118的图形输出由封装器121捕获,并被编码成视频流。此外,可捕获应用118的音频输出,并将其多路复用到视频流。由服务器应用115通过网络109将视频流作为视频数据123而传输至客户端106。客户端应用145获取视频数据123并且将其在屏幕148中的显示器139上播放。
[0044] 各个实施方案使通过客户端106中的一种类型的输入设备142产生的输入能够被封装器121转换成通过完全不同类型的虚拟输入设备向应用118提供的输入命令。作为非限制性实例,客户端106中的加速度计产生的输入可由封装器121转译成通过虚拟鼠标提供的输入。因此,在实现应用118时,完全不同种类的输入设备142可用来将输入提供给可能尚未被考虑的应用118。
[0045] 此外,因为客户端106从应用118的硬件需求去耦,应用118可用于多种多样的客户端106,客户端106能够通过网络109使用可接受的带宽和延迟来播放视频。例如,可在是智能手机的客户端106上播放需要大量的图形渲染资源的游戏。因此,客户端106不需要包括昂贵的图形硬件以实施执行应用118所需要的复杂的三维渲染。相比之下,可根据需要对计算设备103的硬件进行升级,以满足最新的且最计算密集型应用118的硬件需求。在各个实施方案中,根据计算设备103和客户端106之间的连接的比特率和/或其它特性,可通过网络109对由视频编码器119编码的视频流进行绘制。
[0046] 应用118的另一特定非限制性实例可包括移动电话应用。客户端106的用户可能想要浏览各个移动电话的特征和能力。封装器121可在移动电话操作系统中执行移动电源应用。可捕获由移动电话应用产生的视频信号,并将其作为视频流发送至客户端106。因此,用户能够在没有特定移动电话硬件的任何客户端106中测试实际的移动电话应用,并与实际的移动电话应用进行交互。
[0047] 应理解,本公开的原理可应用于多种应用,这些应用可使用处理器203和/或图形处理器212。此外,虽然将视频编码器119作为与应用118一起运行的另一应用的特定实例来论述,但是应理解,本公开的原理可应用于多种应用,这些应用可被配置来在处理器203和/或图形处理器212上执行。另一非限制性实例可能涉及渲染图形以用于动画或电视的应用。
[0048] 继续参考图3,其示出提供根据各个实施方案的服务器应用115的部分的操作的一个实例的流程图。应理解,图3的流程图仅提供可能被采用以实现服务器应用115的部分的操作的许多不同类型的功能性布置的实例,如本文所描述。作为替代,图3的流程图可被视为描绘根据一个或多个实施方案的在计算设备103(图1)中实现的方法的步骤的实例。
[0049] 从框303开始,服务器应用115从客户端106(图1)获取请求以开始新的应用118(图1)。在框306中,服务器应用115确定与应用118相关联的资源使用配置文件128(图1)。在框309中,服务器应用115从资源使用配置文件128确定应用118是否被归类为GPU密集型。
[0050] 如果应用118不被归类为GPU密集型,那么应用118可被归类为CPU密集型且服务器应用115继续进入框312。在框312中,服务器应用115为应用118配置视频编码器119(图1)以在图形处理器212(图2)而不是处理器203(图2)中执行。在框315中,服务器应用115将计算设备103中的一个指派来执行应用118和视频编码器119及任何封装器121(图1)的实例。其中,计算设备103包括云计算资源,应用118被指派到的特定计算设备103可包括在云计算资源中的虚拟机实例。将结合图4的流程图进一步描述将应用
118指派到计算设备103的功能。此后,结束服务器应用115的部分。
[0051] 如果应用118被归类为GPU密集型(在框309),那么服务器应用115继续进入框318且为应用118配置视频编码器119以在处理器203而不是图形处理器212中执行。接着,服务器应用115继续进入框315且指派计算设备103中的一个来执行应用118和视频编码器119及任何封装器121的实例。此后,结束服务器应用115的部分。
[0052] 现转到图4,其示出提供根据各个实施方案的服务器应用115的另一部分的操作的实例的流程图。尤其是,图4中示出的功能提供将应用118(图1)的新实例指派到特定计算设备103(图1)的一个实例。应理解,图4的流程图仅提供可被采用以实现服务器应用115的部分的操作的许多不同类型的功能性布置的实例,如本文所描述。作为替代,图4的流程图可被视为描绘根据一个或多个实施方案的在计算设备103中实现的方法的步骤的实例。
[0053] 从框403开始,服务器应用115确定计算设备103的资源使用状态。其中,计算设备103包括云计算资源,可为在云计算资源中执行的虚拟机实例确定资源使用状态。资源使用状态可指示与一个或多个处理器203(图2)相关联的负载、与一个或多个图形处理器212(图2)相关联的负载和/或其它资源使用信息。在框404中,服务器应用115确定最适合用于执行特定应用118(图1)的计算设备103。例如,应用118可具有非常高的图形渲染需求,以及配置有高级的基于硬件的图形加速器的计算设备103可能最适合用于执行应用118。
[0054] 在框406中,服务器应用115确定当前被分配至应用118的计算设备103中的任何一个是否具有有效容量以容纳应用118的新实例。在一个实施方案中,服务器应用115可检测资源使用配置文件128(图1)以确定与应用118相关联的资源消耗的预期量。在另一个实施方案中,服务器应用115可使用资源消耗的参考量来确定执行应用118所需要的计算容量。
[0055] 是否与应用118相关联的视频编码器119(图1)被配置来在图形处理器212或处理器203中执行可允许应用118在具有CPU和GPU负载的不同混合的计算设备103中执行。换言之,如果计算设备103具有更可用的CPU资源,那么视频编码器119可被配置来在处理器203中执行。相反地,如果计算设备103具有更可用的GPU资源,那么视频编码器119可被配置来在图形处理器212中执行。
[0056] 如果计算设备103具有有效容量,那么服务器应用115将应用118指派在具有有效容量的计算设备103中执行(框409)。在一个实施方案中,在当前GPU负载低于GPU使用的最大阀值并且与应用118相关联的资源使用配置文件指示应用118倾向于使用GPU资源而不是CPU资源时,可选择计算设备103。或者,在当前CPU负载低于CPU使用的最大阀值并且与应用118相关联的资源使用配置文件指示应用118倾向于使用CPU资源而不是GPU资源时,可选择计算设备103。因此,将应用118指派到计算设备103,目的是使处理器203和/或图形处理器212的利用最大化。
[0057] 在一个实施方案中,在当前GPU负载满足GPU使用的最大阀值并且与应用118相关联的资源使用配置文件指示应用118倾向于使用CPU资源而不是GPU资源时,可选择计算设备103。或者,在当前CPU负载满足CPU使用的最大阀值并且与应用118相关联的资源使用配置文件指示应用118倾向于使用GPU资源而不是CPU资源时,可选择计算设备103。因此,在当前足够低加载处理器203或图形处理器212时,可使用其它的空闲容量。一旦应用118被指派到计算设备103,结束服务器应用115的部分。
[0058] 然而,如果服务器应用115确定(在框406)当前被分配到应用118的计算设备103中没有一个具有有效容量以容纳应用118的新实例,那么服务器应用115移动到框412。在框412中,服务器应用115确定计算设备103中的任何一个在重新配置后是否具有有效容量。作为非限制性实例,在计算设备103上执行的视频编码器119可执行通过允许视频编码器119的执行从图形处理器212转移至处理器203的虚拟层,且反之亦然。这样的重新配置可允许释放足够的处理容量以供特定应用118使用。
[0059] 如果服务器应用115确定计算设备103在重新配置后将具有有效容量,那么服务器应用115移动到框415且重新配置在计算设备103上执行的视频编码器119,以便容纳应用118的新实例。在框418中,服务器应用115将应用118的新实例指派到已被重新配置的计算设备103。此后,结束服务器应用115的部分。
[0060] 反而,如果服务器应用115确定(在框412)即使在重新配置后也没有计算设备103具有有效容量,那么服务器应用115移动到框421。在框421中,服务器应用115配置或分配另一计算设备103以容纳应用118。换言之,当其它已分配的计算设备103中没有一个具有足够的处理资源来容纳应用118时,为应用118选择未分配的一个计算设备103。
[0061] 其中,计算设备103包括云计算资源,服务器应用115可配置新的虚拟机实例来容纳应用118。因为先使用现有的计算设备103的有效容量,所以可使额外的计算设备103的分配最小化,从而降低成本。在框424中,服务器应用115指派应用118的新实例以在新分配的计算设备103中执行。此后,结束服务器应用115的部分。
[0062] 再参考图2,大量的软件组件存储于存储器206中且可由处理器203执行。在这个方面,术语“可执行”意味着以最终可由处理器203运行的形式存在的程序文件。可执行程序的实例可以是,例如,可被转译成以可加载入存储器206的随机存取部分且可由处理器203运行的形式存在的机器代码的编译程序、可以诸如能够加载入存储器206的随机存取部分且由处理器203执行的目标代码的适当形式表示的源代码、或可由另一可执行程序解译以在存储器206中的随机存取部分生成由处理器203执行的指令的源代码等。可在存储器206的任一部分或组件存储可执行程序,包括,例如,随机存取存储器(RAM)、只读存储器(ROM)、硬盘驱动、固态驱动、USB快闪驱动、存储卡、诸如光碟(CD)或数字通用光盘(DVD)的光盘、软盘、磁带或其它存储组件。
[0063] 本文的存储器206被定义为包括易失性和非易失性存储器及数据存储组件。易失性组件是那些在断电后不保留数据的组件。非易失性组件是那些在断电后保留数据的组件。因此,存储器206可包括,例如,随机存取存储器(RAM)、只读存储器(ROM)、硬盘驱动、固态驱动、USB快闪驱动、经由存储卡阅读器访问的存储卡、经由相关联的软盘驱动访问的软盘、经由光盘驱动访问的光盘、经由适当磁带驱动访问的磁带,和/或其它存储组件或任何两个或多个这些存储组件的组合。此外,RAM可包括,例如,静态随机存取存储器(SRAM)、动态随机存储存储器(DRAM)或磁性随机存取存储器(MRAM)和其它这样的设备。ROM可包括,例如,可编程只读存储器(PROM)、可擦可编程只读存储器(EPROM)、电可擦可编程只读存储器(EEPROM)或其它类似的存储器设备。
[0064] 此外,处理器203可表示多个处理器203且存储器206可表示分别在并行处理电路中操作的多个存储器206。在这种情况下,局部接口209可以是促进多个处理器203中的任何两个之间的、任何处理器203和存储器206中的一个之间的、或存储器206中的任何两个之间等的通信的适当网络109(图1)。局部接口209可包括被设计来协调该通信(包括,例如,实施负载均衡)的额外系统。处理器203可以是电子的或一些其它可用构造的。
[0065] 本文描述的服务器应用115、应用118、视频编码器119、封装器121和其它各个系统可以体现在上述软件或由通用硬件执行的代码中,然而作为上述内容的替代物也可以体现在专用硬件或软件/通用硬件和专用软件的组合中。如果体现在专用硬件中,那么每一个均可作为采用大量技术的任何一种或组合的电路或状态机而实现。这些技术可包括,但不限于,具有用于在一个或多个数据信号的应用上实现各种逻辑功能的逻辑的离散逻辑电路、具有适当逻辑门或其它组件的专用集成电路等。这样的技术通常被本领域技术人员所熟知,且因此不在此进行详细描述。
[0066] 图3和图4的流程图示出实现服务器应用115的部分的功能和操作。如果体现在软件中,那么每个均表示包括实现指定逻辑功能的程序指令的代码的模块、分割或部分。程序指令可以源代码或机器代码的形式体现,源代码包括写入编程语言的人类可读叙述,机器代码包括可由合适的执行系统(诸如计算机系统或其它系统中的处理器203)识别的数字指令。机器代码可以从源代码等转换。如果体现在硬件中,每块可表示实现指定逻辑功能的电路或大量互联电路。
[0067] 虽然图3和图4的流程图示出执行的特定顺序,但是应理解,执行的顺序可不同于所描绘的顺序。例如,两个或多个块的执行顺序相对于所示出的顺序而言是杂乱的。此外,可以同时执行或部分并发地执行在图3和图4中接连示出的两个或多个块。进一步地,在一些实施方案中,可以跳过或省略在图3和图4中示出的一个或多个块。此外,可将任何数量的计数器、状态变量、警告信号量或消息添加至本文描述的逻辑流程,目的是增强效用、计费、性能测量、或提供疑难排解辅助等。应理解,所有这些变量均在本公开的范围内。
[0068] 此外,本文描述的包括软件或代码的任何逻辑或应用(包括服务器应用115、应用118、视频编码器119和封装器121)可体现在任何非暂态计算机可读介质中以供指令执行系统(诸如,例如,在计算机系统或其它系统中的处理器203)使用或结合指令执行系统使用。从这个意义上讲,逻辑可包括例如叙述,所述叙述包括从计算机可读介质取得的且由指令执行系统执行的指令和声明。在本公开的上下文中,“计算机可读介质”可以是含有、存储、或维持本文描述的逻辑或应用以供指令执行系统使用或结合指令执行系统使用的任何介质。计算机可读介质可包括许多物理介质中的任何一个,诸如,例如,磁性介质、光学介质或半导体介质。合适的计算机可读介质的更具体的实例包括,但不限于,磁带、磁软盘、磁硬盘驱动器、存储卡、固态驱动、USB快闪驱动或光盘。此外,计算机可读介质可以是包括例如静态随机存取存储器(SRAM)、动态随机存储存储器(DRAM)或磁性随机存取存储器(MRAM)的随机存取存储器(RAM)。此外,计算机可读介质可以是只读存储器(ROM)、可编程只读存储器(PROM)、可擦可编程只读存储器(EPROM)、电可擦可编程只读存储器(EEPROM)或其它类型的存储器设备。
[0069] 条款
[0070] 条款1.一种体现可在计算设备中执行的程序的非暂态计算机可读介质,所述程序包括:
[0071] 从客户端计算设备获取请求以在云计算资源中执行应用的代码,从应用库选择应用,每个应用与各自的资源使用配置文件相关联,每个资源使用配置文件指示是否所述各自的应用倾向于使用中央处理单元(CPU)资源多于图形处理单元(GPU)资源以及是否所述各自的应用倾向于使用所述GPU资源多于所述CPU资源;
[0072] 至少部分地基于机器实例的当前CPU负载和当前GPU负载以及应用的资源使用配置文件而从云计算资源选择所述机器实例的代码;
[0073] 确定是否在所述机器实例的至少一个GPU中而不是机器实例的至少一个CPU中执行视频编码器的代码,所述视频编码器被配置来将由所述应用产生的视频信号编码成视频流以用于传输至所述客户端;
[0074] 在所述机器实例中执行所述应用的代码;
[0075] 当确定所述视频编码器在所述至少一个GPU而不是所述至少一个CPU中执行时在所述至少一个GPU中执行所述视频编码器的代码;和
[0076] 当确定所述视频编码器在所述至少一个CPU而不是所述至少一个GPU中执行时在所述至少一个CPU中执行所述视频编码器的代码。
[0077] 条款2.根据条款1所述的非暂态计算机可读介质,其中所述程序进一步包括:
[0078] 当所述视频编码器正在所述至少一个CPU中执行且满足第一组标准时将所述视频编码器的执行从所述至少一个CPU转移至所述至少一个GPU的代码;和
[0079] 当所述视频编码器正在所述至少一个GPU中执行且满足第二组标准时将所述视频编码器的执行从所述至少一个GPU转移至所述至少一个CPU的代码。
[0080] 条款3.一种系统,其包括:
[0081] 至少一个计算设备,其包括至少一个图形处理单元(GPU)和至少一个中央处理单元(CPU);和
[0082] 服务器应用,其可在所述至少一个计算设备中执行,所述服务器应用包括:
[0083] 获取请求以在所述至少一个计算设备中执行第一应用的逻辑;
[0084] 当与所述第一应用相关联的资源使用配置文件指示所述第一应用是比GPU密集相对更加CPU密集时将与所述第一应用相关联的第二应用指派在所述至少一个GPU而不是所述至少一个CPU中执行的逻辑;和
[0085] 当所述资源使用配置文件指示所述第一应用是比CPU密集相对更加GPU密集时将所述第二应用指派在所述至少一个CPU而不是所述至少一个GPU中执行的逻辑。
[0086] 条款4.根据条款3所述的系统,其中所述第二应用对应于被配置来将由所述第一应用产生的视频信号编码成视频流的视频编码器,以及所述服务器应用还包括当所述至少一个计算设备的硬件视频编码器可用时在所述硬件视频编码器中而不是在所述至少一个CPU或所述至少一个GPU中执行视频编码器的逻辑。
[0087] 条款5.根据条款3所述的系统,其中所述第二应用的指派是至少部分地基于所述至少一个GPU的当前负载和所述至少一个CPU的当前负载。
[0088] 条款6.根据条款3所述的系统,其中所述第二应用的指派是至少部分地基于所述至少一个GPU的当前负载是否与所述至少一个CPU的当前负载彼此相差一阈值
[0089] 条款7.根据条款3所述的系统,其中所述第一应用包括游戏应用。
[0090] 条款8.根据条款3所述的系统,其中所述第一应用包括移动电话应用。
[0091] 条款9.根据条款3所述的系统,其中所述第二应用包括视频编码器,所述视频编码器被配置来将由所述第一应用产生的视频信号编码成视频流以用于通过数据通信网络而传输至客户端计算设备。
[0092] 条款10.根据条款9所述的系统,其中所述至少一个计算设备包括所述客户端计算设备不包括的用于执行所述第一应用的至少一种能力。
[0093] 条款11.根据条款3所述的系统,其中所述请求从应用的库中选择所述第一应用,所述应用中的至少一个是比GPU密集相对更加CPU密集,以及所述应用中的至少一个是比CPU密集相对更加GPU密集。
[0094] 条款12.根据条款3所述的系统,其还包括可在所述至少一个计算设备中执行的虚拟层,所述虚拟层包括响应于请求而将所述第二应用的执行从所述至少一个CPU转移到所述至少一个GPU的逻辑。
[0095] 条款13.根据条款12所述的系统,其中所述第二应用被配置来从所述第一应用的输出产生视频流,以及所述视频流在所述第二应用的执行被转移时是不间断的。
[0096] 条款14.根据条款3所述的系统,其还包括可在所述至少一个计算设备中执行的虚拟层,所述虚拟层包括响应于请求而将所述第二应用的执行从所述至少一个GPU转移到所述至少一个CPU的逻辑。
[0097] 条款15.根据条款3所述的系统,其中所述至少一个计算设备包括多个网络计算设备,以及所述服务器应用还包括:
[0098] 至少部分地基于所述资源使用配置文件以及与所述网络计算设备中的一个相关联的当前GPU负载和当前CPU负载而选择用于执行所述第一应用和所述第二应用的网络计算设备中的一个的逻辑。
[0099] 条款16.根据条款15所述的系统,其中所述网络计算设备对应于云计算资源。
[0100] 条款17.根据条款15所述的系统,其中所述服务器应用还包括重新配置在所述网络计算设备中的一个的所述至少一个CPU中执行的至少一个应用以当所述当前CPU负载满足CPU负载阀值时在所述网络计算设备中的一个的所述至少一个GPU中执行的逻辑。
[0101] 条款18.根据条款15所述的系统,其中所述服务器应用还包括重新配置在所述网络计算设备中的一个的所述至少一个GPU中执行的至少一个应用以当所述当前GPU负载满足GPU负载阀值时在所述网络计算设备中的一个的所述至少一个CPU中执行的逻辑。
[0102] 条款19.一种方法,其包括以下步骤:
[0103] 在至少一个计算设备中获取请求以执行第一应用,所述第一应用被配置来在至少一个图形处理单元(GPU)和至少一个中央处理单元(CPU)中执行,所述第一应用与资源使用配置文件相关联;
[0104] 在所述至少一个计算设备中至少部分地基于网络计算设备中的一个的当前GPU负载和当前CPU负载及资源使用配置文件而选择多个网络计算设备中的一个;和[0105] 在所述网络计算设备中的所述一个中执行所述第一应用。
[0106] 条款20.根据条款19所述的方法,其中所述资源使用配置文件指示所述第一应用是否倾向于使用CPU资源多于使用GPU资源以及所述第一应用是否倾向于使用GPU资源多于使用CPU资源。
[0107] 条款21.根据条款19所述的方法,其中所述选择步骤还包括以下步骤:
[0108] 在当前GPU负载低于GPU使用的最大阀值并且所述资源使用配置文件指示所述第一应用倾向于使用GPU资源多于使用CPU资源时在所述至少一个计算设备中选择所述多个网络计算设备中的所述一个;和
[0109] 在当前CPU负载低于CPU使用的最大阀值并且所述资源使用配置文件指示所述第一应用倾向于使用CPU资源多于使用GPU资源时在所述至少一个计算设备中选择所述多个网络计算设备中的所述一个。
[0110] 条款22.根据条款19所述的方法,其中所述选择步骤还包括以下步骤:
[0111] 在当前GPU负载满足GPU使用的最大阀值并且所述资源使用配置文件指示所述第一应用倾向于使用CPU资源多于使用GPU资源时在所述至少一个计算设备中选择所述多个网络计算设备中的所述一个;和
[0112] 在当前CPU负载满足CPU使用的最大阀值并且所述资源使用配置文件指示所述第一应用倾向于使用GPU资源多于使用CPU资源时在所述至少一个计算设备中选择所述多个网络计算设备中的所述一个。
[0113] 条款23.根据条款19所述的方法,其中所述选择步骤还包括以下步骤:当其它已分配的计算设备中没有一个具有足够的处理资源来容纳所述第一应用时在所述至少一个计算设备中选择所述网络计算设备中的未分配的一个以作为所述网络计算设备中的所述一个。
[0114] 条款24.根据条款19所述的方法,其还包括以下步骤:至少部分地基于所述网络计算设备中的所述一个的资源负载而在所述至少一个计算设备中配置结合所述第一应用一起操作以在所述网络计算设备中的所述一个的所述至少一个GPU而不是所述网络计算设备中的所述一个的所述至少一个CPU中执行的第二应用。
[0115] 条款25.根据条款19所述的方法,其还包括以下步骤:至少部分地基于所述网络计算设备中的所述一个的资源负载而在所述至少一个计算设备中配置结合所述第一应用一起操作以在所述网络计算设备中的所述一个的所述至少一个CPU而不是所述网络计算设备中的所述一个的所述至少一个GPU中执行的第二应用。
[0116] 条款26.根据条款19所述的方法,其还包括以下步骤:至少部分地基于所述网络计算设备的所述一个的资源负载而在所述至少一个计算设备中配置在所述网络计算设备中的所述一个的所述至少一个GPU中执行的至少一个应用,以在所述网络计算设备中的所述一个的所述至少一个CPU中执行。
[0117] 条款27.根据条款19所述的方法,其还包括以下步骤:至少部分地基于所述网络计算设备的所述一个的资源负载而在所述至少一个计算设备中配置在所述网络计算设备中的所述一个的所述至少一个CPU中执行的至少一个应用,以在所述网络计算设备中的所述一个的所述至少一个GPU中执行。
[0118] 条款28.一种系统,其包括:
[0119] 至少一个计算设备,其包括至少一个图形处理单元(GPU)和至少一个中央处理单元(CPU);和
[0120] 服务器应用,其可在所述至少一个计算设备中执行,所述服务器应用包括:
[0121] 获取请求以在所述至少一个计算设备中执行第一应用的逻辑;
[0122] 确定所述至少一个CPU的当前负载和所述至少一个GPU的当前负载的逻辑;和[0123] 至少部分地基于所述至少一个CPU的所述当前负载和所述至少一个GPU的所述当前负载而在所述至少一个CPU或所述至少一个GPU中执行与所述第一应用相关联的第二应用的逻辑。
[0124] 条款29.根据条款28所述的系统,其中至少部分地基于提供所述第一应用的CPU消耗度量和GPU消耗度量的资源使用配置文件而在所述至少一个CPU中或所述至少一个GPU中执行所述第二应用。
[0125] 条款30.根据条款28所述的系统,其中所述第二应用对应于被配置来将由所述第一应用产生的视频信号编码成视频流的视频编码器。
[0126] 条款31.根据条款30所述的系统,其中执行的所述逻辑还被配置来当所述至少一个计算设备的硬件视频编码器可用时在所述硬件视频编码器中而不是在所述至少一个CPU或所述至少一个GPU中执行视频编码器。
[0127] 条款32.根据条款28所述的系统,其还包括可在所述至少一个计算设备中执行的虚拟层,所述虚拟层包括响应于请求而将所述第二应用的执行从所述至少一个CPU转移到所述至少一个GPU的逻辑。
[0128] 应强调,本公开的上述实施方案仅为被陈述以清楚地理解本公开的原理的实施方式的可能实例。在不实质上不脱离本公开的精神和原理的情况下可对上述实施方案做出变化和修改。本文包括的所有这些修改和变化旨在落入本公开的范围内且受上述权利要求书保护。
QQ群二维码
意见反馈