用于远程显示器的基于云的虚拟化图形处理方法和系统与流程

文档序号:16061809发布日期:2018-11-24 12:15阅读:332来源:国知局
用于远程显示器的基于云的虚拟化图形处理方法和系统与流程

相关申请的交叉引用

本申请要求于2012年11月28日提交的、题为“用于远程显示器的基于云的虚拟化图形处理”的、美国序列号为61/730,940的共同持有的临时专利申请的优先权和权益,且该申请具有代理人案号nvid-p-sc-12-0727-us0,其以全文引用并入本文中。

本申请要求于2012年11月28日提交的、题为“用于远程显示器的基于云的虚拟化图形处理”的、美国序列号为61/730,939的共同持有的临时专利申请的优先权和权益,且该申请具有代理人案号nvid-p-sc-12-0728-us0,其以全文引用并入本文中。

本申请要求于2013年1月4日提交的、题为“附网gpu设备”的、美国序列号为61/749,224的共同持有的临时专利申请的优先权和权益,且该申请具有代理人案号nvid-p-sc-12-0814-us0,其以全文引用并入本文中。

本申请要求于2013年1月4日提交的、题为“托尔系统结构”的、美国序列号为61/749,231的共同持有的临时专利申请的优先权和权益,且该申请具有代理人案号nvid-p-sc-12-0470-us0,其以全文引用并入本文中。

本申请要求于2013年9月5日提交的、题为“托尔系统结构”的、美国序列号为61/874,056的共同持有的临时专利申请的优先权和权益,且该申请具有代理人案号nvid-p-sc-12-0470-usx,其以全文引用并入本文中。

本申请要求于2013年9月5日提交的、题为“附网gpu设备”的、美国序列号为61/874,078的共同持有的临时专利申请的优先权和权益,且该申请具有代理人案号nvid-p-sc-12-0470-usx,其以全文引用并入本文中。

本申请与要求于2012年12月26日提交的、题为“用于远程显示器的虚拟化图形处理”的、美国专利申请序列号为13/727,357的共同审理的美国专利相关,具有代理人案号nvid-p-sc-09-0210-us1,其以各种方式引用并入本文中。

背景技术

在历史上,诸如视频游戏的申请是通过使用个人电脑(pc)或使用附接到电视的控制台完成的。用户购买或租赁下载到pc或插入游戏控制台的游戏,然后以公知的方式进行游戏。

最近,线上游戏开始盛行。线上游戏是通过诸如因特网的网络进行游戏的。该游戏被下载到用户设备上,同时需要位于服务器上的其他软件经由网络进行游戏。线上游戏允许多用户在服务器上的软件所提供的游戏环境中进行彼此间的竞赛。

此外,移动游戏也开始盛行。例如,一部移动设备(例如电话)可以向用户提供视频游戏,其能够通过移动电话的诸如触摸屏来进行控制。这种控制被虚拟地产生并显示在触摸屏上。由于这种移动电话并不是专门制造用于游戏的,这种移动电话的处理能力对于多数游戏来说通常过低。移动电话的另外一个问题是,它们通常不能支撑特定的游戏,因为这些游戏要求在特定的操作系统环境中运行。进一步的,这些虚拟按键占用了宝贵的屏幕空间,由此减少了向用户呈现的游戏整体显示。

此外,仿真的虚拟控制按键通过显示器触摸屏提供了用户和游戏之间的简单接口。由于按键虚拟存在于平面屏幕上,将难以从虚拟按键获取触觉互动。在没有触觉参考的情况下,保证虚拟按键被使用的唯一方法就是同时盯着手指和虚拟按键。这可能会在游戏中的关键时刻剥夺玩家的注视。同样的,这些按键被局限于移动设备的前表面。由于这些按键是虚拟产生的,它们仅能被显示在触摸屏幕上。对于屏幕空间的竞争可能会引起按键数量的减少,或者致使它们变得很小,从而难以使用。



技术实现要素:

在本发明的实施例中,描述了一种用于提供图形处理的装置。该装置包括双核中央处理单元(cpu)插槽结构,包括第一cpu插槽和第二cpu插槽。该装置包括多个图形处理单元(gpu)板,以提供多个耦连到第一cpu插槽和第二cpu插槽的gpu处理器,其中每个gpu板包括多个gpu处理器中的两个或多个。该装置包括将第一cpu插槽耦连到一个或多个gpu板的第一子设备、并将第二cpu插槽耦连到一个或多个gpu板的第二子设备的通信接口。在另一个实施例中,描述了一种附网gpu设备。该附网gpu设备包括多个处理板,提供多个虚拟cpu和gpu处理器。每个处理板包括双核cpu插槽结构,包括第一cpu插槽和第二cpu插槽。每个处理板包括多个gpu板,提供多个耦连到第一cpu插槽和第二cpu插槽的gpu处理器,其中每个gpu板包括多个gpu处理器中的两个或多个。每个处理板包括第一通信桥,每个均将相应的gpu板耦连到所述cpu插槽和所述第二cpu插槽。每个处理板包括将第一cpu插槽耦连到一个或多个gpu板的第一子设备、并将第二cpu插槽耦连到一个或多个gpu板的第二子设备的通信接口。

在本发明的实施例中,描述了一种用于转换传送到远程显示器的视频流的计算机实现方法。在其他实施例中,公开了一种非暂时性计算机可读介质,具有计算机可执行的指令,用于使计算机系统执行转换传送到远程显示器的视频流的方法。同样在其他实施例中,公开了一种计算机系统,包括处理器和耦连到处理器的存储器,并且具有存储在其中的指令,如果由计算机系统执行该指令,将使得计算机系统来执行转换传送到远程显示器的视频流的方法。该方法包括将应用的例示(instantiation)初始化。该方法包括形成呈现在数幅帧上的图形,从而通过执行该应用来产生第一视频流,其中第一视频流包括数幅帧。该方法包括将数幅帧依次加载到一个或多个帧缓冲器中。该方法包括确定于何时将帧的第一位图加载到相应的匹配应用签名的帧缓冲器,其包括与第一视频流的关键帧相关的主位图的衍生图。

在另一个实施例中,公开了一种用于转换传送到远程显示器的视频流的系统。该系统包括用于将应用的例示初始化的处理器。该系统包括图形渲染器,用以形成呈现在数幅帧上的图形,从而通过执行该应用来产生第一视频流,其中第一视频流包括数幅帧。该系统包括帧缓冲器,用于依次接收与第一视频流相关的数幅帧。该系统包括比较器,其配置用于确定于何时将帧的第一位图加载到相应的匹配应用签名的帧缓冲器,其包括与第一视频流的关键帧相关的主位图的衍生图。

在本发明的实施例中,计算机实现了网络云端资源生成的方法。该方法包括在基于云的系统中创建模板虚拟机。该方法包括创建虚拟机的例示,通过克隆模板用于终端用户。该方法包括将由虚拟机执行的应用进行加载。该方法包括访问与终端用户相关的第一信息。该方法包括在所述应用的例示中加载第一信息。

在本发明的实施例中,描述了一种计算机实现的分配方法。在另一个实施例中,公开了一种非暂时性计算机可读介质,具有计算机可执行的指令,用于使计算机系统执行分配的方法。同样在其他实施例中,公开了一种计算机系统,包括处理器和耦连到处理器的存储器,并且具有存储在其中的指令,如果由计算机系统执行该指令,将使得计算机系统来执行分配的方法。该方法包括从与终端用户相关的客户端设备接收执行该应用的请求。该方法包括确定应用的第一性能级别。该方法包括确定可获取的第一性能级别的第一虚拟机。该方法包括指定第一虚拟机用于客户端设备相关的应用的执行目的。

在阅读在各附图中示出的以下具体实施方式后,本公开各个实施例的这些或其他目的及优势将被本领域普通技术人员所熟知。

附图说明

附图并入并构成了本说明书的部分,且其中以数字描述相应部件,示出了本公开的实施例以及说明书,用以解释本公开的原理。

图1示出了适于实现根据本公开的实施例的、示例性计算机系统的框图。

图2为能够实现根据本公开的实施例的、示例性客户端设备的框图。

图3为根据本发明的实施例的、客户端系统和服务器可以耦连至网络的网络结构示例的框图。

图4a示出了根据本公开的实施例的、可配置实现用于远程显示器的基于云的虚拟化图形处理的图形系统400a。

图4b为根据本公开的实施例的、配置实现用于远程显示器的基于云的虚拟化图形处理的结构400b的示例。

图5a-b为根据本公开的实施例的、实现配置多个图形处理器芯片组以提供一个或多个附网gpu设备的双插槽结构的示例。

图6为实现多gpu可处理板以提供用于远程显示器的基于云的虚拟化图形处理的示例。

图7为根据本公开的一个实施例的、配置用于检测关键帧的系统的框图。

图8a为根据本公开的一个实施例的、示出在提供用于远程显示器的虚拟化图形处理的云计算平台所支撑的虚拟机的应用执行中用于检测关键帧的方法的流程图。

图8b为根据本公开的一个实施例的、示出检测关键帧的过程的信息流程图。

图9为根据本公开的一个实施例的、配置为使用模板虚拟机产生新虚拟机并以用户专用数据来个性化设置虚拟机的各个例示的框图。

图10a为根据本公开的一个实施例的、示出用于远程显示器的基于云的虚拟化图形处理的提供用于远程新虚拟机的资源生成的方法的流程图。

图10b为根据本公开的一个实施例的、示出当产生新虚拟机来减缓其对现有虚拟机操作的影响时用于限制资源分配的流程图。

图11为根据本公开的一个实施例的、能够执行在远程显示器上的窗口管理、以减少远程显示器前窗的桌面操作系统展示(exposure)的系统的框图。

图12为根据本公开的一个实施例的、示出用于完成远程显示器上的窗口管理、以减少远程显示器前窗的桌面操作系统展示的方法的流程图。

图13a-o根据本公开的一个实施例示出了提供用于远程显示器的基于云的虚拟化图形处理的游戏平台的实现方案。

图14a-h为根据本公开的一个实施例的、示出在基于云的游戏/应用环境中用于动态分配并执行游戏占位的系统和方法的图。

图15为示出了用于在基于云的图形处理系统中向终端客户端分配虚拟机的方法的流程图。

图16为示出了用于实现全局锁以命令请求处理的计算机实现方法的流程图1600。

图17a-f为根据本发明的实施例、各种在基于云的图形处理系统中实现占位分配的方法的示例。

具体实施方式

现将参考本公开的各个实施例的具体细节,其示例由附图示出。在结合这些实施例进行描述时,应当理解其并不意图将这些实施例限制于本公开。相反,本公开意图涵盖不偏离附属权利要求所定义的本公开的精神和范围的替代、修改和等同。此外,在本公开的以下详细说明中,将列出多个具体细节以提供对本公开的深入理解。然而,应当理解本公开可以在没有这些具体细节的情况下得以实施。在其他实例中,没有对公知的方法、程序、部件以及电路进行详细的描述,从而避免对本发明方面的不必要的混淆。

以下详细说明的某些部分以程序、逻辑块、进程以及其他在计算机存储器中对数据位进行操作的符号表示来表示。这些描述和表示是数据处理领域的技术人员惯用的方法,以有效地将他们工作的实质传达给领域内的其他技术人员。在本申请中,程序、逻辑块、进程等,被认为是通向预期结果的步骤或指令的自洽序列。这些步骤使用物理量的物理控制。通常,虽非必要,这些量采用可保存、转移、合并及在计算机系统中以其他形式操作的电或磁信号的形式。主要由于习惯用语的原因,已经多次证实用事务、二进制数字、值、元素、符号、字符、样本、像素等来表示这些信号较为方便。

应当考虑到,所有这些及类似术语是与适当的物理量相关的,且仅为应用于这些量的便捷标识。除非明确声明与明显与以下讨论不同,应当理解,本公开通过使用诸如“执行”、“接收”、“连接”、“操纵”、“促进”、“安装”等的计算术语的讨论会涉及计算机系统的操作和进程,或者类似的电子计算设备或处理器(例如,在本申请的流程图8a、10a-b、12、15、16和17a-f)。计算机系统或类似电子计算设备在计算机系统存储器、寄存器或其他类似信息储存、传送或显示器设备中操纵并转换显示为物理(电子)量的数据。

图8a、10a-b、12、15、16和17a-f为根据本发明的实施例的,提供用于远程显示器的基于云的虚拟化图形处理的计算机实现方法的示例的流程图。虽然流程图中公开了明确步骤,但这些步骤是示例性的。即,本发明的实施例适于进行列举在流程图中的各种其他步骤或步骤的变更。

本文描述的其他实施例将在存在于某些形式的计算机可读储存介质上的计算机可执行指令的大环境下来讨论,诸如由一个或多个计算机或其他设备执行的程序模块。举例来说,且不进行限制,计算机可读储存介质可以包括非暂时性计算机储存介质和通信介质。一般说来,程序模块包括例行程序、程序、对象、部件、数据结构等,其进行特别任务或实现抽象数据类型。程序模块的功能可以如预期合并或分布在各个实施例中。

计算机储存介质包括易失性和非易失性的、可移动的和不可移动的介质,其以任何储存信息的方法或技术实现,诸如计算机可读指令、数据结构、程序模块或其他数据。计算机储存介质包括但不限于,随机存取存储器(ram)、只读存储器(rom)、电可擦只读存储器(eeprom)、闪存或其他存储技术,只读光盘(cd-rom),数字通用光盘(dvds)或其他光学储存器、磁卡带、磁带、磁盘储存或其他磁储存设备,或任何其他可以用于保存预期信息并可以访问以检索信息的介质。

通信介质可以将计算机可执行指令、数据结构和数据模块进行具体化,并且包括任何信息递送介质。举例来说,且不进行限制,通信介质包括诸如有线网络或直接线连接的有线介质,和诸如声学、无线电频率(rf)、红外线和其他无线介质的无线介质。以上任意几种的组合也可以包括在计算机可读介质的范围内。

图1为能够实现本公开的实施例的、示例性计算机系统100的框图。计算机系统100广泛地示出了能够执行计算机可读指令的任意单或多处理器计算设备或系统。计算机系统100的示例包括而不限于:工作站、膝上型电脑、客户端终端、服务器、分布式计算系统、手持设备,或任何其他计算系统或设备。在最基本的配置中,计算机系统100可以包括至少一个处理器105和系统存储器110。

应当理解,本文描述的计算机系统100示出了操作平台的示例性配置,基于此实施例可以实现优势。然而,其他具有不同配置的计算机系统也可以在本发明的范围内用于计算机系统100。即,计算机系统100可以包括除结合图1描述的元件之外的元件。另外,实施例可以在任意配置为能够实现的系统上实现,而不仅是诸如计算机系统100的计算机系统。应当理解,实施例可以在不同类型的计算机系统100上实施。系统100可以实现为,例如具有耦连到专用图形渲染gpu的通用功率cpu的台式计算机系统或服务器计算机系统。在该实施例中,部件可以包括添加外围总线、专用音频/视频部件、i/o设备等。类似的,系统100可以实现为手持设备(例如,手机等)或者机顶视频游戏控制台设备,诸如例如可以从华盛顿雷德蒙德的微软集团获取的或者从日本东京的索尼电脑娱乐公司获取的系统100也可以实现为“片上系统”,其中计算机设备的电子器件(例如部件105、110、115、120、125、130、150等)整体包含在单一集成电路管芯中。示例包括带有显示器的手持工具、汽车导航系统、便携式娱乐系统等等。

在图1的示例中,计算机系统100包括中央处理单元(cpu)105,用于运行软件应用以及可选的操作系统。存储器110存储用于cpu105使用的应用和数据。储存器115为软件和数据提供非易失性储存器,且可以包括固定磁盘驱动器、可移动磁盘驱动器、闪存设备和cd-rom、dvd-rom或其他光学储存设备。可选的用户输入120包括将一个或多个用户的用户输入与计算机系统100相联系的设备,且可以包括键盘、鼠标、操纵杆、触摸屏和/或麦克风。

通信或网络接口125允许计算机系统100与其他计算机系统通过电子通信网络进行通信,包括有线和/或无线通信并包括因特网。可选显示器设备150可以是任意能够响应计算机系统100的信号显示虚拟信息的设备。计算机系统100的部件,包括cpu105、存储器110、数据储存器115、用户输入设备120、通信接口125,以及显示器设备150,可以经由一个或多个数据总线160耦连。

在图1的实施例中,图形系统130可以与数据总线160和计算机系统100的部件耦连。图形系统130可以包括物理图形处理单元(gpu)135和图形存储器。gpu135为渲染命令的输出图像生成像素数据。物理gpu135可以配置为多虚拟gpu,其可以由多个并行执行的应用来并行使用(并发)。

图形存储器可以包括显示器存储器140(例如,帧缓冲器),用于存储输出图像的每个像素的像素数据。在另一个实施例中,显示器存储器140和/或附加存储器145可以是存储110的一部分并且可以被cpu105共享。可选的,显示器存储器140和/或附加存储器145可以是一个或多个分立的存储器,提供给图形系统130专门使用。

在另一个实施例中,图形处理系统130包括一个或多个类似于gpu135的附加物理gpu155。每个附加gpu155可以适用于与gpu135并行操作。每个附加gpu155为渲染命令的输出图像生成像素数据。每个附加gpu155可以配置为多虚拟gpu,其可以由多个并行执行的应用来并行使用(并发)。每个附加gpu155可以与gpu135联合操作,以同时生成输出图像的不同部分的像素数据,或者同时生成不同输出图像的像素数据。

每个附加gpu155可以同gpu135一样位于同一电路板上,与gpu135共享与数据总线160的连接,或者每个附加gpu155可以分立地位于另一电路板上,与数据总线160耦合。每个附加gpu155也可以同gpu135一样被集成到相同的模块中或者芯片封装中。每个附加gpu155可以具有附加存储器,类似于显示器存储器140和附加存储器145,或者可以与gpu135共享存储器140和145.

图2是能够实现本发明的实施例的终端用户或客户端设备200的示例的框图。在图2的示例中,客户端设备200包括cpu205,用于运行软件应用以及可选的操作系统。用户输入220包括将一个或多个用户的用户输入与计算机系统100相联系的设备,且可以包括键盘、鼠标、操纵杆、触摸屏和/或麦克风。

通信接口225允许客户端设备200与其他计算机系统(例如图1中的计算机系统100)通过电子通信网络进行通信,包括有线和/或无线通信并包括因特网。解码器255可以是任何能够解码(解压缩)被编码(压缩)数据的设备。例如,解码器255可以是h.264解码器。显示器设备250可以是任意能够显示虚拟信息的设备,包括从解码器255接收到的信息。显示器设备250可以用于显示至少部分有客户端设备200生成的虚拟信息。然而,显示器设备250可以用于显示从计算机系统100接收的虚拟信息。客户端设备200的部件可以经由一条或多条数据总线260进行耦连。进一步的,这些部件可能或可能不在物理上包括到客户端设备200的外壳中。例如,显示器250可以是与客户端设备200通过线缆或无线进行相互通信的监视器。

与计算机系统100相关的,图2的示例中的客户端设备200可以具有更少的部件和更少的功能,并且,可以被认为是精简型客户端。通常,客户端设备200可以是具有显示功能、解码(解压缩)数据功能、和从用户接收输入的功能和将该输入发送到计算机系统100的功能的任意类型的设备。然而,客户端设备200可以具有以上提及的功能以外的附加功能。客户端设备200可以是,例如个人电脑、平板电脑、电视、手持游戏系统等等。

图3为网络结构300的示例的框图,其中客户端系统310、320和330以及服务器340和345可以耦连到网络350。客户端系统310、320、以及330通常表示为任何类型或形式的计算机设备或系统,诸如图1的计算机系统110和/或图2的客户端设备200。

类似的,服务器340和345通常表示为计算机设备或系统,诸如应用服务器、gpu服务器或数据库服务器,配置为提供各种数据库服务和/或运行特定的软件应用。网络350通常表现为任何电信或计算机网络,包括例如内联网、广域网(wan)、局域网(lan)、个人局域网(pan)或者因特网。

参考图1中的计算机系统100,诸如通信接口125的通信接口可以用于提供与每个客户端系统310、320、和330以及网络350之间的连通。客户端系统310、320和330可以访问服务器340或345上的信息,使用例如网络浏览器或者其他客户端软件。以这种方式,客户端系统310、320和330可以配置为访问提供图形处理功能的服务器340和/或345,由此将图形处理卸载给后端服务器340和/或345,用于显示在前端客户端系统310、320和330。进一步的,该软件允许客户端系统310、320和330访问由服务器340、服务器345、储存设备360(1)-(l)、储存设备370(1)-(n)、储存设备390(1)-(m)的数据,或者智能储存阵列395。虽然图3描述了网络的用于交换数据的应用(诸如因特网),本文描述的实施例并不限于因特网或任意特殊的基于网络的环境。

在一个实施例中,本文公开的全部或者部分的一个或多个示例性实施例被编码为计算机程序,并被服务器340、服务器345、储存设备360(1)-(l)、储存设备370(1)-(n)、储存设备390(1)-(m)、智能储存阵列395或其组合加载并执行。本文公开的全部或者部分的一个或多个示例性实施例也可以被编码为计算机程序,存储在服务器340、服务器345、和通过网络350分布在客户端系统310、320和330。

用于grid结构提供用于远程显示器的基于云的虚拟化图形处理方法和系

图4a根据本公开的实施例示出了配置用于实现用于远程显示器的基于云的虚拟化图形处理的图形系统400a。如图所示,图形处理系统400a包括图1的图形gpu135,而系统400a可以如上所述包括附加物理gpu155。

根据本发明的实施例,物理gpu135被配置为由n个应用1,2…n并发使用。更具体地说,物理gpu135被配置为被1,2…n个应用使用的m个虚拟gpu415a、415b…415m。每个附加gpu155可以类似地配置为多虚拟gpu。在一个实施例中,gpu135和附加gpu155被耦连到存储器管理单元420(mmu;例如输入/输出mmu),反过来它耦连到与图1共同描述的图形存储器。

在一个实施例中,应用1,2…n为视频游戏应用;而,本发明不限于此。即,应用1,2…n可以是任意类型的应用。例如,应用可以提供金融服务、计算机辅助设计(cad)服务等等。在另一个示例中,该应用可以是节目指南,其以表的形式提供了在不同播放时段中的在不同电视频道上的各个节目,并且该客户端设备可以是机顶盒(有线或卫星)。

图4b为根据本公开的一个实施例示出了结构400b,其配置为实现用于远程显示器的基于云的虚拟化图形处理。图形结构400b提供了由一个或多个主操作系统管理的网络资源,其中网络资源(例如cpu、gpu等)在一个或多个虚拟机(vm)和外部通信网络中虚拟且共享。特别的,示出了云端系统45a-n,其中云端系统450a-n中的每个进行协同工作,以通过通信网络连接多重计算资源。因此,计算资源分布在结构400b中。在本发明的实施例中,云端系统450a-n提供完整、虚拟的游戏系统,其也设计为提供高功率的图形处理。

作为示例,云端系统450a提供分布式的计算资源,且代表了每个云端系统450a-n,其提供了用于远程显示器的基于云的虚拟化图形处理。特别的,云端系统450a包括游戏机(gm)服务器云端系统460,其包括了多个物理服务器或游戏机460a-n。本文描述了该gm系统461a且其代表了每个gm461a-n。特别的,物理gm461a提供了主系统,其支持多个虚拟机。为了在gm461a中实现虚拟机455a-n,vm主管理器462连同超级监督者(hypervisor)451包括生成、管理和运行虚拟机(也称作“游戏占位”)455a-n的软件、固件或硬件。特别的,该vm住管理器462与超级监督者451共同作用,以在gm系统461a中分配游戏占位455a-n。更为具体的是,该vm主管理器可以绑定并链接分配了特定游戏占位的物理资源(例如,一个或多个cpu核芯和物理gpu)。

游戏占位(例如vm)455a在物理服务器或gm461中代表了游戏占位455a-n。每个虚拟游戏占位455a在其自身的通过相应操作系统运行的虚拟环境中操作,诸如,虚拟操作系统。例如,操作系统给出游戏占位455a以执行游戏应用458a,将其转化为视频流,并且将其从要使用的端口和频道中送出给客户端服务器490处的接收者。客户端服务器490包括任意配置为与云端系统450a-n通信的电子设备用于虚拟机的例示。例如,客户端服务器490包括精简型客户端、哑(dumb)服务器、移动设备、膝上电脑、个人电脑等等。

游戏代理456a将游戏占座455a例示化并且有助于多个云端系统450a中游戏占位的管理和协调。例如,与所有其他游戏代理一起的游戏代理456a使用供应管理器云端470中的供应管理器471进行工作,以生成、管理并供应在云端系统450a-n中的终端客户端系统490的必要的游戏占位。例如,供应管理器470使用客户端系统490工作,以供应相应的游戏占位(例如455a)。进一步的,供应管理器包括与每个游戏应用(例如458)相关的信息,其包括在游戏题录资产块(gametitleassetsblock)467中。因此,游戏代理456a可以接收与将游戏占位455a例示化的游戏应用458相关的信息,诸如,描述信息、基于游戏占位455a的性能的推荐配置设置等等。先进先出(fifo)部件468将游戏占位的输入请求排序。在一个实施例中,该fifo部件控制fifo排序中的请求。

雷神(mjolnir)服务器457a提供了信息的编码和分包。例如,雷神(mjolnir)服务器457a配置为编码和分包图形视频数据,其由游戏占位(vm)455a通过执行游戏应用458a产生。如图所示,游戏应用458a的例示由度量储存471提供,其耦连到提供对游戏应用458a的示例的访问的第三方内容供应商。

op控制台(opconsole)服务器463在物理服务器461a-n的结点上与各种vm主管理器(例如462)协调。特别的,op控制台(opconsole)服务器463作为服务器或gm461a-n的群集管理器。例如,op控制台(opconsole)服务器463通知服务注册表464或占位注册表哪个游戏占位是可选的、哪个游戏占位正在使用、哪个游戏占位被发布、哪个游戏占位正排队、哪个游戏占位正在重置、哪个游戏占位需要服务等等。

此外,op控制台(opconsole)服务器463与服务器注册表464共同作用,由此提供游戏占位的所有群集的当前状态。游戏占位的状态在服务器注册表464中维护。此外,部署管理器465被配置为向每个游戏占位提供通知服务。例如,部署管理器465能够推出新游戏的例示,或者新游戏的信息、新软件的更新、新版软件等等。以这种方式,部署管理器465为向每个游戏代理和游戏占位通知相关信息提供了可度量的方法。

度量储存471被配置为在相应的游戏占位中收集与游戏应用操作相关的数据。例如,度量储存471收集比特率、服务质量(qos)等等。负载均衡器466均衡从客户端服务器490进入的为游戏收集请求的负载。

实现用于远程显示器的基于云的虚拟化图形处理的虚拟计算应用(vca)

图5a为根据本发明的一个实施例的、提供图形处理的对称grid系统结构500a的示例。例如,该结构实现为具有一个或多个集成芯片的电路板,其在通信上相互耦连以提供图形处理性能。在一个实施例中,grid结构500a在基于云的结构400b中实现,以实现用于远程显示器的基于云的虚拟化图形处理。

grid系统结构500a包括双插槽结构,其包括第一cpu插槽501a和第二cpu插槽501b。在一个实现方式中,每个cpu插槽配置为在提供cpu性能的微处理器和下方板之间提供电学连接。如图5a所示,多核处理器在通信上耦连到每个第一和第二cpu插槽。例如,集成电路或“芯片组”包括结合计算系统的硬件部件的多核处理器,其配置为按照通过操作系统的操作执行计算机程序的指令。在一个实施例中,多核处理器包括xeone2670处理器。如图5a所示,xeone2670处理器耦连到第一插槽501a且xeone2670处理器也耦连到第二插槽501b。

在一个实施例中,双插槽结构500a配置为包括多核处理器的桑迪桥(sandybridge)处理器结构。例如,在第一和第二cpu插槽之间提供快速通道互连(quickpathinterconnect)(qpi)链接,以提供两个插槽和耦连到插槽的cpu处理器之间的点对点前端总线接口。以这种方式,在第一cpu插槽501a和第二cpu插槽501b中的两个cpu处理器可以作为在单一操作系统下的同一机器工作。即,由于qpi链接的支持,单一操作系统管理耦连到第一cpu插槽501a和第二cpu插槽501b的cpu多核处理器。

此外,双插槽结构500a配置有多图形处理器(例如,集成电路,芯片组等等)。特别的,结构500a包括提供多个gpu处理器和/或芯片组的多个gpu板510a、510b…510n,其中gpu处理器耦连到第一cpu插槽和第二cpu插槽。每个gpu板通过将第一cpu插槽501a耦连到一个或多个gpu板的第一子设备并将第二cpu插槽501b耦连到一个或多个gpu板的第二子设备的通信总线接口耦连到相应的cpu插槽。在一个实施例中,通信总线接口包括通信桥505a-n,诸如,一个实施例中的pciexpress(pcie)桥。在该配置中,pcie控制器通过相应的pcie桥辅助相应的gpu板和cpu插槽之间的通信。由此,双插槽结构500a包括多个通信桥,其中每个通信桥在通信上将相应gpu板耦连到对应的第一或第二cpu插槽。例如,如图5a所示,桥505a-d将每个gpu板510a-d耦连到第一cpu插槽501a或第二cpu插槽501b。

在一个实施例中,多个gpu板沿双cpu插槽结构500a对称分布。例如,相同数量的gpu板连接到或悬接于每个cpu插槽。如图5a所示,双cpu插槽结构500a包括四个gpu板,其耦连到第一cpu插槽501a和第二cpu插槽501b。更为具体的是,在四gpu板备至中,第一gpu板510a和第二gpu板510b中的每个均耦连到第一cpu插槽501a,且第三gpu板510c和第四gpu板510d中的每个均耦连到第二cpu插槽510b。

在一个实施例中,每个gpu板510a-d具有相同配置。在其他实施例中,gpu板510a-d可以与每个gpu板包含的多个gpu处理器进行不同的配置。如图所示,每个gpu板510a-d包括两个或更多数量的gpu处理器。如图5a所示,gpu板510a-d中的每个包括两个gpu处理器,而在其他实施例中使用了更多的gpu处理器。出于示例性目的,gpu板510a-d被装配在gk107图形处理芯片中。每个gpu板510a-d包括桥分离器,其耦连到对应的通信桥。桥分离器指向源于适当的gpu板的通信。

图5b为根据本发明的一个实施例的、提供图形处理的对称grid结构500b的示例。即,多个gpu板500a-c沿双插槽结构500b对称分布。通常,双插槽grid系统结构500b与grid系统结构500a具有相同配置,包括两个cpu插槽560a和560b,每个均在通信上耦连到一个或多个gpu板。

例如,对称配置包括不等数量的连接到cpu插槽560a或560b的gpu板。如图5b所示,双cpu插槽结构500b包括三个gpu插槽,其耦连到第一cpu插槽560a和第二cpu插槽560b。更为具体的是,在gpu板的配置中,第一gpu板550a和第二gpu板550b中的每个均耦连到第一cpu插槽560a。在另一方面,仅一个gpu板550c耦连到第二cpu板560b。

在一个实施例中,每个gpu板550a-c具有相同配置。在其他实施例中,gpu板510可以与每个gpu板包含的多个gpu处理器进行不同的配置。如图所示,每个gpu板550a-c包括两个或更多数量的gpu处理器。如图5b所示,gpu板550a-c中的每个包括四个gpu处理器,而在其他实施例中使用了不同数量的gpu处理器。出于示例性目的,gpu板550a-c被装配在gk107图形处理芯片中。

在一个实施例中,双cpu插槽结构(例如500a)和多个gpu板支持多个虚拟机(例如,通过基于云的结构),其中每个包括一个或多个cpu核芯的端口和一个或多个gpu处理器。在另一个实施例中,双插槽结构500a配置以这种方式配置,一个gpu处理器支持一个由双插槽结构500a构成的虚拟机例示。在另一个实施例中,多个虚拟化gpu处理器由多个物理gpu处理器支持,其中一个虚拟化gpu支持一个虚拟机。由此,物理gpu或物理gpu的端口可以支持任何数量的虚拟机。

在一个实施例中,双cpu插槽结构和多个gpu板在在单一操作系统下操作的伪虚拟机系统中实现。即,软件层允许单一操作系统的使用来进行诸如游戏应用的多个应用。即,软件层(例如中间件)例示了伪虚拟机,其可以支持多个终端客户端,其中伪虚拟机为一个或多个终端用户运行且/或执行多个应用。

在一个实施例中,用于提供适合的cpu对gpu的比率和硬件资源的num寻码(pinning)软件配置描述如下:

cpu寻码(pinning)=[“0,1,2,3,4,5,6,7”,“8,9,10,11,12,13,14,15”,“8,9,10,11,12,13,14,15”,“16,17,18,19,20,21,22,23”,“24,25,26,27,28,29,30,31”,“24,25,26,27,28,29,30,31”]}

在另一个实施例中,用于实现适合的cpu对gpu的比率的num寻码(pinning)软件配置描述如下:

cpu寻码(pinning)=[“0,1,2,3,4,5,6,7”,“0,1,2,3,4,5,6,7”,“8,9,10,11,12,13,14,15”,“8,9,10,11,12,13,14,15”,“8,9,10,11,12,13,14,15”,“16,17,18,19,20,21,22,23”,“16,17,18,19,20,21,22,23”,“24,25,26,27,28,29,30,31”,“24,25,26,27,28,29,30,31”]}

图6为多gpu处理板实现的示例,以实现用于远程显示器的基于云的虚拟化图形处理。更为具体的是,图6使出了附网gpu应用620,其提供远程显示器的基于云的图形处理。在一个实施例中,gpu应用620在pc仿真环境中提供图形处理,并且gpu应用620作为虚拟计算应用(vca)而使用。

如图6所示,vca620包括一个或多个frid系统结构或处理板610。例如,grid结构610与grid系统结构500a和500b在功能上相似,分别在图5a-b中进行了总体描述。特别的,grid结构610包括双cpu插槽615。在一个实现方式中,每个cpu插槽配置为在提供在提供cpu性能的微处理器和下方板之间提供电学连接。在一个实施例中,多核处理器在通信上耦连到每个cpu插槽。此外,双插槽cpu结构610包括含有一个或多个图形处理器(未示出)的多gpu板,提供多个耦连到cpu插槽615的gpu处理器和/或芯片组。即,每个gpu板通过通信总线接口耦连到相应的cpu插槽。

目前,vca620和gpu结构610在线a—a以下实现,其意图在实现用于远程显示器的基于云的虚拟化图形处理时将硬件从软件层中分离。由此,在线a—a以上,示出了云计算平台630,其产生并管理多个虚拟机,每个均设置为提供高功率的图形处理。云计算平台630与图4b的云系统450a-n提供相同的服务和特征。在一个实施例中,虚拟机在作为pc仿真器的云计算平台层630产生并管理,其从终端用户客户端设备(例如,精简型客户端)取得指令命令、处理指令,并随后将结果返回到精简型客户端。

云计算平台630可以采取以客户端设备为代表的多种形式。例如,层640表示云计算平台可以表示为计算资源的群集。例如,群集会采取数据中心群集或虚拟游戏机群集的形式。

表1

权利要求列表

当在提供远程服务器的虚拟图形处理基于云的系统中执行应用时的关键帧检测

图7为根据本发明的一个实施例的、配置为检测关键帧的系统700的框图。在一个实施例中,系统700在图4a的图形系统400a和/或图4b的结构400b中实现,其配置为实现用于远程显示器的基于云的虚拟化图形处理。在诸如广告的次要流视频后,检测预选关键帧对于确定何时复用来自应用的流视频非常重要。

如图7所示,系统700包括配置为初始化应用例示的处理器701。在一个实施例中,处理器701为由基于云的图形处理系统支持的虚拟机,其部分提供用于远程显示器的虚拟图形渲染和处理。该在虚拟机中例示化的应用历经加载过程以将应用初始化。在一个实施例中,加载过程包括确定虚拟机在执行应用时的适合的配置设置。该配置设置可以考虑虚拟机的资源性能以及终端客户端设备的资源性能。

系统700包括图形渲染器705,用于进行图形渲染以生成形成第一视频流的基础的数幅帧。图形渲染通过执行应用来进行,其中第一视频流包括数幅帧。

在一个实施例中,可选的,系统700包括视频编码器/解码器710,其在向远程显示器传送编码视频流时将被渲染的视频编码成为压缩格式。在本实施例中,编码视频流被用于检测关键帧。

系统700也包括应用签名生成器,其配置为生成与应用的预选渲染关键帧相关的主签名,其用于确定何时所执行的应用例示已经具有相同的关键帧,正如图8a-b将更详细描述的那样。特别的,应用签名通过访问与所述主视频流相关的相应帧的主位图产生。在一个实施例中,主位图使用哈希算法进行哈希运算以生成哈希关键帧位图,其包括应用的应用签名。

系统700包括帧缓冲器725,用于依次接收多个与第一视频流相关的帧。在一个实施例中,图形渲染由在基于云的图形渲染系统中的虚拟机进行,其中渲染视频的视频流被传送到远程显示器。帧缓冲器包括一个或多个配置为接收渲染视频流的帧缓冲器。例如,图形管线可以输出渲染视频到相应的帧缓冲器。在并行系统中,多管线图形处理器的每个管线将输出它的渲染视频到相应的帧缓冲器。

系统700包括比较器730,其配置为确定于何时将帧的第一位图被加载到相应的匹配应用签名的帧缓冲器,其包括与所述第一视频流的关键帧相关的主位图的衍生图。

图8a-b结合示出了执行应用并确定在执行中何时渲染预定关键帧的方法。由于许多原因,关键帧检测十分重要,其中一个包括理解何时在应用的执行生成的第一视频流和提供有可能与应用无关的其他信息的第二视频流(例如广告等等)之间转换。

特别的,图8a为根据本发明的一个实施例的、示出了在虚拟机上执行应用期间通过提供用于远程显示器的虚拟图形处理的云计算平台检测关键帧的方法的流程图800a。在另一个实施例中,流程图800a示出了通过提供用于远程显示器的虚拟图形处理的云计算平台在虚拟机上执行应用期间检测关键帧的计算机实现方法。在另一个实施例中,流程图800a在计算机系统中实现,包括处理器和耦连到处理器且具有储存在其中的指令的存储器,如果通过计算机系统执行引发系统执行通过提供用于远程显示器的虚拟图形处理的云计算平台在虚拟机上执行应用期间检测关键帧的计算机实现方法。在另一个实施例中,进行如流程图800a概述的方法的指令被储存在非易失性计算机可读储存介质上,该介质具有计算机可执行指令,用于引发计算机系统来进行通过提供用于远程显示器的虚拟图形处理的云计算平台在虚拟机上执行应用期间检测关键帧的计算机实现方法。在实施例中,流程图800a概述的方法由一个或多个图1和2的计算机系统100、客户端设备200的部件以及图7的系统700的部件分别实现。

在850处,该方法包括初始化应用的例示。例如,当虚拟机应终端用户的请求在基于云的虚拟化图形处理平台被例示化时,应用(例如游戏应用)被例示化。即,终端用户请求在应用中进行游戏,且基于云的虚拟化图形处理平台生成了虚拟机用于执行应用。应用的初始化在虚拟机中加载了应用,并且可以包括任何依次的可能或可能不生成输出视频流的操作。例如,一些应用将在加载应用时在空白或黑暗的屏幕上显示旋转沙漏。

在一个实施例中,基于云的虚拟化图形处理平台在应用加载时向终端用户留出第二视频流。第二视频流并不是应用的一部分。例如,第二视频流包括附加信息,诸如广告、通知等等。在一个预期的时间,图形处理平台不继续留出第二视频流且复用由应用产生的视频流。提供本发明的实施例用于检测特定和预订的关键帧,其指出了何时转回(switchback)由应用生成的视频流。

在855中,该方法包括通过应用执行进行在多个渲染帧上的图形渲染。所生成的第一视频流包括多个渲染帧。图8b为信息流程图800b根据本发明的一个实施例的、示出了检测关键帧的过程。如其所示,在包括虚拟机的处理器的任意处理器中执行应用,包括向虚拟gpu415发送指令,其先前描述了有关图4b的虚拟gvu415a-m。例如,gpu415可以是任意虚拟gpu415a-m。gpu415依次输出渲染帧,正如一个或多个图形管线所执行的那样。例如,gpu415生成帧1-n。

在865处,该方法包括确定何时加载到相应帧缓冲器的帧的第一位图匹配应用签名。如图8b所示,着色器模块将来自执行应用的渲染帧的位图和形成应用签名820的主位图进行比较。例如,当gpu415生成了渲染帧,且它的相应的位图加载到了相应的帧缓冲器中,渲染帧或其相关的位图被输入到着色器830a,且与应用专有的应用签名820进行的比较也被输入到着色器830a。着色器830a进行应用签名820和加载到帧缓冲器1的相关位图信息之间的比较。

初步得出,在一个实施例中,应用签名由应用的原件生成。特别的,在一个实施例中,应用签名包括与第一视频流的关键帧相关的主位图的衍生图。即,主应用被执行并包括多个被渲染的主帧。从主视频流中选出一个渲染帧作为关键帧。例如,关键帧可以是在执行、初始化和/或任意应用例示加载中的持续期间内被渲染的特殊场景,或特殊标志。关键帧的主位图被加载到帧缓冲器用于显示,随后操纵以形成主关键帧的衍生图并形成应用签名。例如,应用签名的生成包括访问主位图并在主位图上进行哈希算法,以生成哈希关键帧位图。哈希关键帧位图现包括应用的应用签名820。在任何随后的应用例示中,对每个渲染帧具有适当的操纵(例如,进行哈希运算),本发明的实施可以确定何时修改的或未修改的渲染帧匹配关键帧,或者关键帧的衍生图。

当确定渲染很和主关键帧是否匹配时,该方法包括访问帧的被加载到相应的帧缓冲器的第一位图。例如在于相应虚拟机中例示化的应用执行期间生成的第一位图。无论在主关键帧或主关键帧位图上进行何种操纵,也在第一位图上进行了操纵。例如,如果主关键帧位图进行了哈希运算,以生成应用签名,则该方法包括在第一位图上进行哈希运算以生成哈希的第一位图。当然,在进行哈希算法之外,在其他实施例中可以进行其他操纵。

继续主关键帧位图被哈希运算以生成应用签名的示例,该方法包括比较哈希关键帧位图(例如应用签名)和哈希的第一位图来确定它们是否匹配。在一个实施例中,在第一位图的哈希算法中存在兼容性且关键帧的主位图可以具有兼容性。只要它们具有兼容性(例如95%匹配),则随后由主位图生成的哈希运算和第一位图相匹配。

该方法包括确定何时执行该应用具有了关键帧。这种情况发生在确定哈希的主位图和哈希的第一位图的时候。在一个实施例中,确定何时应用具有关键帧用来在视频流之间进行转换。在那种情况下,当确定了匹配,匹配的通知会被传送到负责向客户端设备传送编码视频的软件堆栈,由此可以进行转换。例如,当应用加载时,该方法包括将第二视频流发送到请求终端用户的客户端设备用于显示。第二视频流包括与应用无关的信息和/或独立由应用生成。在一个示例中,第二视频流包括广告。

因此,当执行应用达到一个点,此处渲染帧匹配了关键帧,这指示被例示化的应用也具有了关键帧。以这种方式,该方法包括基于关键帧的检测转换到第一视频流,其中第一视频流为由应用生成的多个渲染视频(编码或未编码)。同样的,该方法包括将第一视频流传送到每个客户端设备,且暂停传送第二视频流(例如广告)。在一个实施例中,第一视频流以匹配用于显示器的客户设备的关键帧的帧开始传送。在另一个实施例中,第一视频流以匹配用于显示器的客户设备的关键帧的后面一幅帧开始传送。

表2

权利要求列表

虚拟机的快速克隆

图9为根据本发明的一个实施例的、资源生成系统900的框图,系统配置为利用模板虚拟机生成新的虚拟机并且以用户专用数据定制每个虚拟机的例示。系统900在图4b的云结构400b中实现,并且用于生成新的虚拟机。在一个实施例中,资源生成系统900配置为gm服务器461a的主管理器462。

如其所示,系统900包括快速克隆模块910,其配置为色很难过成虚拟机的新的例示。特别的,快速克隆模块910由模板虚拟机生成新的虚拟机。该新的虚拟机通过用更新值修改临时值定制到特定用户。以这种方式,取代储存定制虚拟机的所有图像,仅需要储存定制到请求用户的更新值。该更新值随后用于修改临时值,以生成新的虚拟机的定制到终端用户的例示。

系统900也包括应用加载器920。在一个实施例中,终端用户访问提供用于远程服务器的虚拟图形处理的执行应用的基于云的服务。虚拟机被例示化,以执行该应用。例如,可以生成基于云的图形处理平台以提供基于云的游戏体验,其中游戏应用被储存并执行用于基于云的平台。终端用户典型地将请求在特定的游戏应用中进行,且虚拟机被例示化以支持该请求以进行游戏应用。由此,响应终端用户的进行游戏应用的请求,虚拟机被例示化且游戏申请被应用加载器加载以在虚拟机中执行。

系统900也包括独立的和永久的储存器930特别的,和终端用户有关的更新和/或信息被储存在储存器930中。该信息随后被用于当生成虚拟机的例示时定制模板虚拟机,其定制到特定终端用户。例如,该信息可以包括与用户与特定应用(例如,游戏状态等)相互作用有关的用户预置信息。由此,随着更新和/或用户相关信息的储存,用户专有的虚拟机和应用的图像或例示不需要持续,且可以取消虚拟机的例示。这提供了附加的益处,因为每个新的虚拟机例示从没有漏洞和病毒的初始的、模板虚拟机开始,并且仅需要更新与请求的终端用户相关的信息(例如,更新和/或用户预置信息)。

系统900也包括供应/分配(provision/allocation)管理器940。在一个实施例中,管理器940完成与图4b中的供应管理器470相似的功能。特别的,供应/分配管理器940配置为向新的例示化虚拟机分配资源。在一个实施例中,供应/分配管理器940包括资源节流器945,其配置为减少和/或节流初始分配到例示虚拟机的资源数量,以减少任何对现有的和选择性虚拟机的负面影响。在初始化之后,资源排列模型947配置为在虚拟机中增加资源,直至达到初始资源分配。

图10a为根据本发明的一个实施例的、示出虚拟机的新例示的资源生成方法的流程图1000a,以提供用于远程显示器的基于云的虚拟化图形处理。在另一个实施例中,流程图1000a示出了计算机实现的方法,用于虚拟机的新例示的资源生成,以提供用于远程显示器的基于云的虚拟化图形处理。在另一个实施例中,流程图1000a在包括处理器和耦连到处理器且具有储存在其中的指令的存储器的计算机系统中,如果通过计算机系统执行引发了系统执行虚拟机的新例示的、提供用于远程显示器的基于云的虚拟化图形处理资源生成的方法。在另一个实施例中,进行如流程图1000a概述的方法的指令被储存在非易失性计算机可读储存介质上,该介质具有计算机可执行指令,用于引发计算机系统来进行虚拟机的新例示的、提供用于远程显示器的基于云的虚拟化图形处理资源生成的方法。在实施例中,流程图1000a概述的方法由一个或多个图1和2的计算机系统100、客户端设备200的部件以及图9的系统900的部件实现。

在1010处,该方法包括生成模板虚拟机。该临时值被用于克隆附加虚拟机。在1015处,该方法包括通过克隆模板虚拟机向请求终端用户生成虚拟机的例示。特别的,该克隆操作在定制与终端用户相关的虚拟机例示上是有效的,仅需要储存临时值的修改而不是虚拟机的所有图像。该更新信息随后被用于修改临时值以生成定制到终端用户的虚拟机的例示。在一个实施例中,该更新信息包括前述的用户预置信息,和应用保存文件数据。例如,在游戏应用中,该“保存游戏”文件数据包括当游戏应用执行时与玩家在游戏中的进程相关的信息。

在一个实施例中,虚拟机在请求终端用户的基于云的图形处理系统中初始化。例如,虚拟机可以在图4b的结构400b中例示化。进一步的,在基于云的游戏平台中,其提供了用于远程显示器的虚拟图形处理,模板虚拟机包括每个终端用户可用的多个预选的游戏应用。即,临时值已经包括每个游戏应用的所有副本。在这种方式下,终端用户仅访问平台并请求受支持的游戏应用,并且通过相应的虚拟机开始游戏应用。

在1020处,该方法包括加载虚拟机执行的应用。例如,终端用户会访问平台以使用特定的应用,诸如视频生成软件。在游戏环境中,终端用户典型地访问基于云的平台以进行游戏应用。由此,在虚拟机的例示之后,终端用户请求的特定的应用加载到虚拟机上并被执行。

在1025处,该方法包括访问与终端用户相关的第一信息。该第一信息被用于定制虚拟机和在虚拟机中执行的游戏应用的例示。在一个实施例中,第一信息用于修改模板虚拟机用于为终端用户进行定制。例如,如前所述,第一信息包括“游戏保存”信息,和/或用户预置信息。

在1030处,该方法包括将第一信息加载到应用的例示中。例如访问与应用相关的“游戏保存”信息,并用于将用户带入他或/她最近更新的应用例示的版本。在游戏环境中,应用被更新到最近的、终端用户的合理的分配,或与终端用户相关的角色玩家。

模板虚拟机的生成保证了虚拟机的新例示是从初始源开始的。由此,任何虚拟机的新例示中不会有病毒进入用户预置信息和/或更新信息。以这种方式,当用户会话结束时虚拟机不会持续。特别的,该方法包括接收指令以结束虚拟机的例示。此时,将终端用户专用和相关的信息更新(例如“保存游戏”文件被更新)并储存在独立于虚拟机的储存系统。由于虚拟机的例示将被结束,因此这是必要的。终端用户专用和相关的信息随后在虚拟机下一次被终端用户请求时使用。

图10b为根据本发明的实施例的、示出在生成新虚拟机以减少其对现有虚拟机的操作的影响时的节流资源分配方法的流程图1000b。特别的,生成虚拟机以包括分配可以在已有的正在执行应用的虚拟机上提供显著负载的资源。该负载影响了正在进行的应用的执行,并且可能负面地减少了终端用户的整体游戏体验。由此,流程图1000b提供了当对终端用户的虚拟机进行例示化时用于减少对已有虚拟机的操作的影响的方法。

在1050处,该方法包括确定虚拟机的例示的多个资源的初始分配。即,虚拟机包括多个资源,每个均被指定了初始分配。例如,资源可以包括cpu处理器核芯、存储器等等。示例器件,虚拟机可以被初始分配八个处理器核芯。

在1055处,该方法包括减少多个资源的初始分配。在一个实施例中,该减少表现为所减少的分配少于初始分配的25%。在进一步的实施例中,该减少在每个不同的资源进行,且在一个实施方式中,该减少在所有的不同资源同等地进行。即,每个资源在相应的少于相应的资源的初始分配的25%的数量中减少。在1060处,该方法包括使用该减少的多个资源的分配来初始化虚拟机。

在虚拟机被例示化之后,附加资源分配应当进行,以使虚拟机具有预期性能。由此,在1065处,该方法包括为多个资源中的每个分配附加资源。资源被分配由此如果对多个资源进行资源的附加分配,将致资源分配达到初始分配。

表3

权利要求列表

窗口管理以减少前窗显示的桌面操作系统的展示

图11是根据本发明的一个实施例的、能够进行远程前窗上进行窗口以达到减少桌面操作系统展示的目的的管理系统1100的框图。系统1100在图4b的云端结构400b中实现,且用于监控相应虚拟机的输出视频以保证相应的终端用户请求的应用显示在显示器的前窗,并且潜在操作系统的桌面的显示和/或消息在一个或多个后窗中渲染。在一个实施例中,能够进行窗口管理的系统100配置为虚拟机的例示的游戏代理456a。

如图11所示,系统1100包括基于云的图形处理系统1110,其提供用于远程的虚拟图形处理。特别的,系统1110能够通过相应的终端机(例如,精简型客户端等)配置多个终端用户的多个虚拟机。例如,虚拟机的例示包括用来在可用的资源上执行应用指令并指定虚拟机的操作系统。在一个实施例中,即使它们可以配置并实现为游戏平台,每个虚拟机运行在操作系统上。

系统1100包括虚拟机1120,其通过基于云的图形处理系统例示化或实施。虚拟机执行了典型地由终端用户进行选择的应用以进行交互。即,作为基于云的图形处理系统的游戏会话的终端用户具有在基于云的游戏应用中通过相应的虚拟机例示进行游戏的目的。该虚拟机在执行应用时生成了视频流,其包括用于显示的渲染图像。该渲染视频最终编码并流出到远程显示器,用于一个或多个终端用户的观看。

系统1100包括一个应用管理模块1130,其配置为保证显示在远程显示器的前窗的信息处于在被执行的应用相关的应用内容中。特别的,监视器1140配置为监控前端缓冲器以检测何时存储在前端缓冲器的视频信息在应用内容之外。从前端缓冲器被检索到的或读到的信息扫描输出用于即时显示。

当包含在前端缓冲器的视频信息在应用内容之外,缓解模块1150配置为采取减缓要显示的视频信息的影响的行为。例如,在应用内容之外的视频信息可以是如操作系统的终端用户(例如,进入命令序列的诸如alt-enter)初始化的操作系统消息或桌面。

图12为根据本发明的一个实施例的、示出了在远程显示器进行窗口管理的方法,以用于减少远程显示器上的前窗显示的桌面操作系统的展示的目的。在另一个实施例中,流程图1200示出了用于在远程显示器进行窗口管理的计算机实现方法,以用于减少远程显示器上的前窗显示的桌面操作系统的展示的目的。在另一个实施例中,流程图1200在包括处理器和耦连到处理器并具有储存在其中的指令的存储器的计算机系统中实现,如果由计算机系统执行引发系统执行在远程显示器进行窗口管理的方法,以用于减少远程显示器上的前窗显示的桌面操作系统的展示的目的。在另一个实施例中,用于进行如流程图1200概述的方法的指令被储存在非易失性计算机可读储存介质上,该介质具有计算机可执行指令,用于引发计算机系统来进行在远程显示器进行窗口管理的方法,以用于减少远程显示器上的前窗显示的桌面操作系统的展示的目的。在实施例中,流程图1200概述的方法由一个或多个图1和2的计算机系统100、客户端设备200的部件以及图11的能够窗口管理的系统1100来实现。

在1210处,该方法包括在虚拟机中执行应用,其通过基于云的图形处理系统来实现。例如,云端系统通过图4b的配置为向多个终端用户提供多个虚拟机的结构400b中实现,其中每个虚拟机是运行操作系统的完全可选的计算系统,例如,windows操作系统。在一个实施例中,基于云的图形处理系统为游戏平台,其中终端用户进入游戏应用进行游戏,其通过相应的虚拟机储存并例示在游戏平台中。

在通过虚拟机的应用执行期间,产生了包括渲染图像的视频流用于显示。在1220处,该方法包括将应用的视频流指引到相应的虚拟机的前端缓冲器,其中前端缓冲器的信息被获取并扫描以用于远程显示器上的表示。通过将视频流指引到前端缓冲器中,这保证了视频流显示在远程显示器的前端窗口。这对于作为例如游戏平台的基于云的图形处理系统十分重要。通过将游戏应用指引到前端窗口或最前端窗口,增强了终端用户的游戏体验,由于用户完全沉浸在前端和中心的游戏环境中。此外,终端用户并不面对向潜在操作系统的任何展示(例如,桌面、错误消息等)。在进一步的实施例中,前端窗口被最大化,因此视频流被显示在远程显示器的全屏上。在一个实施方式中,向前端缓冲器指引视频流,并且通过应用程序接口(api)调用的执行完成将前端窗口最大化。

在1230处,方法包括监控前端缓冲器以检测何时存储在前端缓冲器中的视频流在应用内容之外。即,取代与运行在虚拟机上的应用的视频流相关的信息,前端缓冲器加载了在应用内容之外的其他视频信息。作为示例,视频信息可以操作系统专有的,并且包括响应用户初始化的操作系统命令序列。例如,命令次序的一些实例包括alt-tab,其将操作系统桌面带到前端管理;或者alt-tab,其将前端窗口最小化;或ctl-alt-delete,其重启系统。这些命令中的每个命令示出了窗口包含的信息,其不再应用内容之内,并且可以包括对话或消息,或者第二视频(例如,桌面)。

在另一个实施例中,视频信息包括静止屏幕。即,应用可能已经崩溃,并且将不向远程显示器发送视频流。该方法包括检测何时游戏应用崩溃。这是通过检测何时视频流结束而完成的。在这种情况下,远程显示器可以锁定到显示的一幅图像。且,这不是一种预期的游戏体验,并且本发明的实施例可以检测并采取行为来减缓这种负面的游戏体验。

在1240处,该方法包括采取行为来减缓显示在应用内容之外的视频信息的影响。在一个实施例中,减缓行为是通过减小操作系统桌面、消息或任何其他在前端窗口的通信形式的展示来选择的。

在一个实施例中,视频信息为强制在前端窗口的操作系统消息或视频。减缓行为包括执行api调用以强制渲染视频流返回前端缓冲器,并且由此,来自视频流的渲染图像有被储存在准备显示的前端缓冲器中。在一个实施例中,减缓行为包括忽略在应用内容之外的视频信息,并且制止视频信息向显示器的传输。

在另一个实施例中,作为最后的方式,虚拟机会话被终止。例如,应用已经崩溃并且不能够在虚拟机例示中重启。由此,减缓行为包括终止实现虚拟机的用户会话,以及重新例示化另一台虚拟机以执行游戏应用的另一个例示。

表4

权利要求列表

提供用于远程显示器的基于云的虚拟化图形处理的在游戏平台中用于向虚拟机动态分配资源的系统和方法

图13a-o根据本发明的实施例示出了提供用于远程显示器的基于云的虚拟化图形处理的游戏平台的实现方式。游戏平台向连接的终端用户提供了完整的游戏体验。例如游戏平台通过相应的虚拟机提供了必要的cpu和gpu处理功率,并且向要进行游戏的终端用户供给了被请求的游戏应用。实质上,终端用户与游戏平台通过用户会话相连接,以进行其支持的游戏应用。图13a-o提供的示例提供了最初在图4b的结构400b中的进一步的细节和特性。虽然图13a-o提及游戏应用,应当理解基于云的图形处理平台配置为支持任意类型的应用。

图13a为系统1300a的框图,其向终端用户提供了基于云的图形处理,其中根据本发明的一个实施例,规则管理器在终端用户游戏会话中将游戏占位或虚拟机例示化。规则管理器1303与客户设备1302协调以将于请求应用相关的游戏占位1301例示化。规则管理器1303与op服务层1347进行通信,以确定所请求的应用需要游戏占位的何种性能水平。一旦虚拟机由最佳数量的资源例示化以用户进行游戏应用,规则管理器1303配置为与例示化的游戏占位或虚拟机1301通过游戏代理1305进行通信。游戏代理1305配置为将所请求的应用例示化。流服务器1306与客户侧1302上的流部件1307进行通信,以流出由执行在游戏占位1301上的游戏应用产生的客户设备1302的视频数据。

图13b为根据本发明的一个实施例的、示出了基于云的图形处理系统400b的部件之间的网络连接的网络框图1300b。

图13c为根据本发明的一个实施例的,示出了通过规则管理器1303在终端用户1302和游戏占位(vm)1301之间设置标准游戏会话的工作流程的框图1300c。如图所示,在步骤1中,访问了游戏列表。规则管理器1303(例如虹桥(bifrost)客户端)从会话管理器中获取列表,它反过来会从游戏数据储存中获取列表。在步骤2处,对于进行游戏的请求由客户端设备1302做出。在步骤3处,请求被传送到规则管理器1303,其响应请求与游戏占位1301的例示相协调。特别的,在步骤4处,规则管理器1303与服务注册表1304通信,以获取可用的虚拟机。规则管理器与虚拟机的资源性能相匹配,其被指定为所请求的游戏应用要求的推荐资源,以向终端用户给出尽可能好的游戏体验。服务注册表1304管理多个虚拟机,并且维持每个虚拟机的状态。由此,服务注册表1304知晓哪个虚拟机被主动使用或例示化,且那个虚拟机为闲置的并以备指定。

在步骤5处,规则管理器1303与被指定的游戏占位1301通过游戏代理1305进行通信。在步骤6处,进行握手以例示化游戏占位1301.在步骤7处,游戏占位1301安装了游戏应用。在步骤8处,进行用户会话。在步骤9处,游戏占位打开了游戏应用通过规则管理器1303到终端用户1302的流视频的必要端口。在步骤11处,建立了在游戏占位1301的雷神(mjolnir)服务器1306和在终端客户端1302的雷神(mjolnir)客户端1307之间的通信会话。雷神(mjolnir)服务器提供了信息的编码和分包。例如,雷神(mjolnir)服务器1306配置为编码并分包图像视频数据,其有游戏占位(vm)通过游戏应用的执行而生成。在步骤12处,游戏占位1301开始执行游戏应用。在步骤13处,雷神(mjolnir)服务器1306开始向客户端设备1303的雷神(mjolnir)服务器1307流出来自游戏应用的视频。

图13d为根据本发明的一个实施例的,示出了向游戏占位1301分配资源(例如,cpu核芯,虚拟gpu,gpu,存储器等)的工作流程的框图1300d。该图13d概述的进程以guid会话id和具有该id的游戏应用的请求产生。客户端设备1303与规则管理器1303进行通信。在步骤2中,在规则管理器1303中的会话处理程序线程1310检查以确定会话id位于活跃的会话存储(如果已经存在就覆盖)中;验证游戏应用,检查机器型号,并向基于游戏占位1301的机器型号的redis会话储存和fifo队列1313添加请求。对虚拟机的每个机器型号存在一个fifo请求。1312在步骤3处,一个在游戏会话规则管理器(gspm)1311中的分配线程被唤醒。在步骤4处,会话处理程序线程1310将会话对象返回给客户端设备1303.在步骤5处,gspm线程唤醒;获取在fifo队列(检查处理锁,如果找到,将其清除)上的全局(global)锁;并且读取每个队列的第一项。在步骤6处,gspm1311通过从服务注册表1304(通过sim)移除第一相关的闲置/热门(hot)占位对最早的请求会话进行分配。在步骤7处,该分配的会话从fifo队列1313中移动到分配进行中(in-allocation)列表,且全局锁被发布。

在图13d中,在步骤8处,gspm1311与vm主管理器通过vn主api:占位分配消息确认占位是可用的。特别的,在a)处,gspm请求vm主管理器1314;在b)处,vm主管理器1314在内部确认占位的可用性(保证没有突出防护(fence)请求);在c)处,vm主管理器1314确认占位的正常;在d)处,vm主管理器1314将游戏占位1301放入服务注册表1304上的分配贮体(bucket)(通过它自己的sim);且在e)处,vm主管理器1314向spm反馈一切正常。

在图13d的步骤9处,gspm1311向游戏占位1301分配带有逆向代理(reverseproxy)的端口。在步骤10处,gspm1311与游戏代理1305在分配的游戏占位1301上进行握手,并且传递游戏预置信息、端口等等。在步骤11处,游戏代理1305向游戏代理监听器(listener)(ga-监听器)线程上的规则管理器1303报告游戏占位以准备好客户连接。

图13e为根据本发明的一个实施例的、示出发布游戏占位1301的工作流程的框图1300e。在步骤1处,客户端设备1303或者游戏代理1305提供游戏应用结束的通知。在步骤2处,在规则管理器1303中的会话处理程序线程1310或者ga监听器线程做出api调用来发布游戏占位(例如,调用“游戏占位规则管理器api:发布”),其通过另一个api调用(例如vm主api:占位发布消息)来调用vm主管理器1314。在步骤3处,vm主管理器1314循环虚拟机。在步骤4处,一旦虚拟机返回,vm主管理器1314将虚拟机放回服务注册表1304上的热门/闲置贮体。

图13f是根据本发明的一个实施例的、示出了在游戏会话期间处理不可恢复的错误的工作流程的框图1300f。在步骤1处,游戏代理1305提供了不可恢复的错误的通知,或者游戏占位1301bsod已经发生的通知,或者一些其他系列错误发生(例如,规则管理器在游戏代理通信上暂停等)的通知。在步骤2处,规则管理器1303通过api调用(例如,“游戏占位规则管理器api:发布+错误”)来调用spm或者游戏占位规则管理器1311。在步骤3处,spm1311通过api调用(例如“vm主api:防护+发布”)来调用vm主管理器1314。在步骤4处,vm主管理器1314标识了游戏占位1301作为防护,并且进行其他适合行为的重置。在步骤5处,vm主管理器1314将游戏占位1301放回到服务注册表1304上的适合的贮体(例如,错误/防护)中。

图13g根据本发明的一个实施例示出了分配游戏占位1301的工作流程的框图1300g。在步骤1处,客户端设备1303请求来自游戏平台或者基于云的图形处理系统的游戏应用。在步骤2处,规则管理器1303通过api调用(例如,“游戏占位规则管理器:分配”)来调用spm1311。在步骤3处,spm1311通过或服务注册表接口模块和simapi来调用服务注册表1304,使用服务注册表模式。在步骤4处,服务注册表1304返回“没有”热门游戏占位,其指示没有游戏占位可用。在步骤5处,spm1311与vm主管理器1314通过api调用(例如,“vm主api:占位分配消息”)确定占位可用:其中在a)处,vm主管理器1314确定了占位的可用性;在b)处,vm主管理器1314将占位放入服务注册表1304上的贮体(通过其自身的sim);并且在表c)中,vm主管理器1314向spm1311回复一切正常。在步骤6处,规则管理器1303与分配游戏占位1301上的游戏代理1305握手。

图13h是根据本发明的一个实施例的,示出了客户端设备1303和规则管理器1303之间的通信的工作流程的框图1300h。在步骤1处,客户端设备1303使用超文本传输协议(http)与规则管理器1303进行初始连接。规则管理器1303响应并进行分配等。在步骤2处,客户端设备1303检测到用户数据报协议(udp)消息问“我是什么状态?”。这是周期性进行的。在步骤3处,规则管理器1303发送带有会话状态的udp响应。在步骤4处,如果在特定秒数内(例如,y)没有来自规则管理器1303的duo响应,则客户端设备1303将执行http调用以获取会话状态。

图13i为根据本发明的一个实施例的、示出会话重连的工作流程的框图1300i。如图所示,基于客户端设备和已有游戏占位之间的成功连接,雷神(mjolnir)客户端在客户端设备上重新启动。

图13j为示出了游戏数据储存1320的特征的框图1300j。游戏数据储存1320在基于云的图形处理系统(前述)中提供了对虚拟机的多个游戏应用的访问。特别的,数据储存1320与客户端设备和虚拟机的游戏代理相互作用。数据储存1320向每个客户端设备发送了所支持的游戏应用的游戏列表。同样的,每个区域/dc能够维持它们自己的游戏列表(包括游戏防护)。每个操作者/mso能够维持它们自身的游戏列表(包括游戏防护)。并且客户端设备能够从提供游戏会话的基于云的平台加载游戏列表。

如图所示,游戏数据储存1320为每个游戏应用提供了游戏预置。例如,游戏预置包括题录数据1322;题录资产1321;过滤器数据1323;启动数据1324和防护数据。游戏题录数据1322(如图13k所示)包括游戏id(唯一的);建立id;发布数据(向云端);屏幕截图(例如玩家1)和视频(url连接)(例如,搭载(onboard)为文件名);单人玩家/多人玩家性能;支持的语言;游戏名称,发布者名称,风格,游戏描述;游戏发布数据,发布者的url;用于支持或附加推广(例如geforce网站url)的url;封面艺术或封面艺术的链接(例如,像文件名一样搭载);等级/年龄要求;购买参数(例如,购买路径的链接);以及用户输入的闲置预警限制(例如若干秒)。

此外,题录资产1321包括通过题录数据url指向的二进制/可下载的资产。过滤器数据1323包括区域许可的硬件配置支持列表和vm图像,以包括os/驱动,和兼容的输入设备。启动数据1324包括安装脚本、启动脚本、关键帧类型和星形帧、开始时间、游戏进程名和辅助进程,每硬件的pops、游戏设置脚本/可执行程序、游戏硬盘i/o预置、用户输入限制最大量限制(若干秒)。防护数据包括游戏启动/关闭(专区宽度或用户/账户级别)以及游戏娱乐时间限制(例如全局)。

图13k为示出游戏预置数据流的框图1300k。在步骤1处,客户端设备(通过到终端用户的用户接口)请求游戏列表。在步骤2处,云端客户端sdk从一个或多个规则管理器1302处获取游戏列表。在步骤3处,如前所述,规则管理器1303通过检查缓存的题录和过滤器数据(例如,实现为文件夹)获取未防护的游戏列表。游戏预置数据结构包括以下:“游戏/发布”指出了哪个游戏应用是可玩的;“游戏/防护”指出了哪个游戏是不可用的;以及“游戏/进行”指出了哪个游戏正在进行。在步骤4处,规则管理器将过滤后的题录数据返回到客户端设备1303。在步骤5处,在客户端设备1303上的ui加载了http文件服务器的题录资产。在步骤6处,游戏请求被从客户端设备1303发送到规则管理器1303。在步骤7处,规则管理器1303检查可用的游戏占位的过滤器数据并从游戏占位注册表1304中分配。在步骤8处,规则管理器1303将启动数据发送到已获取的游戏占位1301上的游戏代理1305。在步骤9处,进行了常规游戏启动和会话初始化。

图13l根据本发明的一个实施例示出了游戏应用和在会话开始时的应用的动态分辨率的框图1300l。

图13m为根据本发明的一个实施例示出使用基于云的虚拟化图形处理系统的每层部件的框图1300m。例如,云端设施1330包括vm控制器、物理节点、虚拟化、nas、网络、监控和工具、服务质量(qos)、支持等等。软件堆栈层1331实现了基于云的图形处理服务(例如游戏平台)并包括进行流、编码、qos、管理、保存和加载、drm/系列关键管理的游戏管理器1332。软件堆栈层1331包括规则管理器1302,其包括调度程序、用户队列、用户验证、和游戏注册。游戏客户端层1335包括各种功能性部件,包括典型客户、gfe、一个或多个网络内容的链接(例如,geforce网络)、平板本机客户端以及用户管理。同样的,数据库1334配置为储存永久数据,用来生成用户定制的虚拟机。例如,如前所述,数据库1334储存用户预置信息,和游戏保存信息。

图13n为根据本发明的一个实施例的、示出了游戏管理器1340和规则管理器1303的框图。如图所示,游戏管理器1340的例示在虚拟机或游戏占位1301中提供。游戏管理器1304管理在游戏占位1301中启动的游戏应用,并且包括游戏代理1305。游戏代理1305包括以下:进行游戏启动的启动器、应用的终止、清除、和应用的监控;游戏状态管理器,其进行表述和加载操作;和系列关键管理器。游戏管理器1340也包括流服务器1341,其管理向外输出的流。流服务器1341进一步包括qos管理器、视频流、音频流和用户行为流结构。

规则管理器的示例在于由多个提供服务云端461a-n的服务器所服务的基于云的虚拟机的网络中。规则管理器包括用户验证模块、游戏注册模块、物理示例启动器、示例池、游戏代理接口和用户队列。

图13o为提供用于远程显示器的基于云的图形处理的gpu虚拟化的各种实现方式的框图。在类型1中,存在gpu的物理虚拟化。即,每个虚拟机(例如vm1和vm2)通过虚拟化接口(例如xen虚拟机接口)被指定到一个诸如芯片组的物理gpu中。在类型2中,存在gpu的虚拟化。即,每个虚拟机(例如vm1和vm2)通过虚拟化接口指定到虚拟gpu。在类型3中,又存在通过伪虚拟机的gpu虚拟化。即,虚拟机自身被拆分为一个或多个子虚拟机(例如vbox)。每个子虚拟机被指定到虚拟gpu。

图14a-h为根据本发明的实施例的、示出在基于云的游戏/应用环境或游戏平台中动态分配和指定游戏占位的系统和方法。同样,游戏平台向终端用户提供了完整的游戏体验。例如,游戏平台通过相关的虚拟机提供了必要的cpu和gpu处理功率,并且向要进行游戏的终端用户供给了被请求的游戏应用。实质上,终端用户与游戏平台通过用户会话相连接,以进行其支持的游戏应用。图14a-h提供的示例提供了最初在图4b的结构400b中的进一步的细节和特性。虽然图14a-h提及游戏应用,应当理解基于云的图形处理平台配置为支持任意类型的应用。

当分配游戏占位时,虚拟机需要被管理。例如,虚拟机需要启动和/或初始化。活跃的虚拟机需要将它的可用性和性能通过网络被管理并推广。虚拟机在应用结束后、或者当虚拟机变“坏”时、或者由于任何其他原因需要循环使用。虚拟机的管理与虚拟机的详情有关,并且对运行在虚拟机上的与管理应用相关的应用来说是不必要的。

在另一方面,如前所述,应用的管理包括管理进行游戏应用的请求。应用的管理包括接收请求,通过知晓作业执行的应用请求、提供与初始化进程相关的反馈、建立游戏会话和终止游戏会话将请求与适宜资源的游戏占位相匹配。

特别的,接收用户的请求的用户会话管理器在入口或机器上运行,包括规则管理器1302。此外,vm管理器或者vm主管理器462知晓如何处理虚拟机,但不知晓应用的详情。占位注册表1304提供了游戏占位被推广的空间,和管理(采取分配,和返回以稍后分配)游戏占位的分配和分配状态的位置。

图14a为根据本发明的一个实施例的、示出了输入请求的处理的框图1400a。如图所示,负载均衡器466接收从终端用户或客户端设备1302输入的请求。存在多个终端用户和潜在的请求爆发,并且仅有限数量的用户会话管理器位于入口1402中。为了在接收请求之后向客户端设备1302提供进步的更新,用户会话管理1401将请求放入优先fifo队列,在这之中被异步处理。如图14a所示,请求被放入fifo队列,其根据性能级别安排。即,每个队列与特定的游戏占位性能级别相关(高、中、低资源性能)。例如,队列1403可以与高性能级别相关,且队列1404可以与中性能级别相关。特别的,基于应用要求,虚拟机的一个或多个性能级别可以服务应用。例如,应用可以运行在最高功率的虚拟机上并给出最好的整体游戏体验,但也可以运行在中等功率的虚拟机上,同样给出满意的游戏体验。

将基于各种因素指定特定性能级别的游戏占位。例如,考虑用户请求诸如,用户想要执行何种应用。此外,考虑到请求的资源要求,诸如,何种要求对执行应用来说是必要的(例如,cpu,gpu,存储器,带宽要求)。此外,考虑到了用于设置游戏会话的进程,并且也考虑到了何时预期游戏会话终止。

图14b为根据本发明的一个实施例的、示出了执行应用的输入请求的进一步的处理的框图1400b。在入口1402处,用户会话管理器理解请求的应用详情并请求能够满足应用专有请求的服务器或用户占位。特别的,用户会话管理1401与占位规则管理器1406进行对话并且提供了所请求的服务的参数。占位规则管理器1406理解如何转译请求并将其翻译到由sim模块1407处理的sim请求。sim模块1407与占位注册表1304通过由占位规则管理器1406提供的密钥进行对话,对值进行检索,并将其返回占位规则管理器1406。占位规则管理器1406于是将值进行转译并将其返回给用户会话管理器1401。特别的,游戏占位被表示为密钥对(key-valuepairs)。

以占位注册表1304而言,所有输入均为密钥对。此外,允许相同密钥具有多个值,由此该值被储存为一个列表。以占位规则管理器1406而言,密钥被用于检索终点虚拟机,其能够进行特定的任务。在密钥对中,密钥使用“/占位空闲/性能级别/”的形式。一个示例密钥包括“占位/空闲/中等”,其指出虚拟机能够进行“中等”水平的服务。在密钥对中,值可以采用作为示例的以下形式:在10.0.0.1处的10.0.172.192.168.1.1。值指出虚拟机存在于ip地址为10.0.0.1的管理主机上。

图14c为示出用于请求处理的占位注册表进入的框图1400c。存在四个虚拟机或游戏占位注册的不同的贮体。热门贮体1410包括空闲的占位和已指定的游戏占位的列表。启动贮体1411包括当前正在启动的游戏占位的列表。防护贮体1412包括不可用和已隔开的游戏占位的列表。失效贮体1413包括已经失效的游戏占位的列表。

图14d为根据本发明的实施例的、示出了占位分配的进程的框图1400d。特别的,占位规则管理器1406返回可以服务请求的第一空闲服务或游戏占位。在一个实施例中,具有高性能级别的占位要求被首先供给,然后是次高级,等等。登录被占位规则管理器1406取出,以找到占位的实际位置。用户会话管理器1401现具有表示游戏占位的ip地址,其能够执行所要求的任务,或执行应用。用户会话管理器与vm主管理器462联系,其控制游戏占位,并使其保证游戏占位正常。特别的,vm主管理器会询问有关游戏占位1301的正常的游戏代理1305。vm主管理器随后遵从并标记将被指定的游戏占位1301。用户会话管理器1401随后联系游戏代理1305以将游戏应用初始化。

在占位分配中,空闲列表中的游戏占位多数时间(例如高于95%)是可用的。由此,占位注册登录被移动到热门/指定列表。当空闲列表中的游戏占位不可用时,将返回一个错误代码。在那种情况下,所有物理硬件均被使用,并且进行了等待进程,直至服务在服务任何请求之前释放了占用。在另一种情况下,虽然不存在更多的热门虚拟机,但更多的虚拟机能够被带到线上以服务在特定时间点激增的需求。进一步的,在等待中,占位规则管理器1406被配置为支持“当这种占位类型可用时调用我”的功能。即,占位规则管理器1406从占位注册表1304寻找特定类型的游戏占位已经可用的通知。

图14e为根据本发明的一个实施例的、示出从游戏代理1305到用户会话管理器1401a或1401b的通信的框图1400e。游戏代理1305在规则管理器上将消息发回给用户会话管理器1401a和1401b,以给出游戏初始化过程的更新、流更新、崩溃等。该通信使用入口1402a或1402b或例示化游戏应用的规则管理器的ip地址完成。如果ip地址没有响应/不可用,而游戏代理能够将请求询问“是否有能够处理我的请求的pm存在”的广播至所有规则管理器(例如1402a-n)。所有列出的规则管理器将进行响应。此外,游戏代理1305接收第一个响应的提供管理器的更新。当广播时、当提及注册规则管理器时和查看游戏占位时,存在两个主要优势。第一,如果一个规则管理器失效,则注册表的通道将以1000倍(例如,每1000个游戏占位具有一个规则管理器)飙升。此外,失效的规则管理器仍可以存在于注册表中。

图14f为根据本发明的一个实施例的、示出了发布游戏占位时使用的进程的框图1400f。一旦任务(例如游戏会话)完成,用户会话管理器1401唤醒占位规则管理器1406以发布游戏占位。在步骤1中,该占位规则管理器1406包括运行在物理机器/服务器上的vm主管理器462以重设游戏占位/服务(例如,重设虚拟机)。在步骤2处,vm主管理器指示服务注册表1304来移动游戏占位,且由此,其被从指定的块中移出。在步骤3处,vm主管理器462重新设置服务并将注册发送到服务注册表1304,由此游戏占位现空闲且可用。即,游戏占位的状态从指定块移动到了空闲块。

当维持占位注册时,vm主管理器有责任维护占位注册。vm主管理器验证其控制下的游戏占位使用服务注册表1304注册。此外,如果vm主管理器发现游戏占位从服务注册表1304中缺失,则vm主管理器将游戏占位添加到服务注册表1304。对游戏占位状态的检查是周期性的。例如,vm主管理器知晓注册位于何处(例如,在哪个贮体中,因此应当在正确的贮体列表下进行检查)。此外,向服务注册表1304添加游戏占位对vm主管理器时同步操作。同样的,vm主管理器处理所有的可能存在在占位管理过程中的竞态条件。该竞态条件被处理,由此占位重注册将不会过于匆忙地进行,并且重验证进程将在重注册之前进行。

在优先的fifo处理中,当进行游戏的请求进入,其被标注运行的全局序列号码,并被置于与请求的性能相应的队列中。这意味着存在和占位性能一样多的进入请求的队列。该处理请求的线程将生成短暂的全局所以保证队列的fifo特性的确认。即,在一个时刻仅有一个处理请求的线程可以持有全局锁。该线程将尝试向请求满足带有项(其与游戏占位相关)的最低序列号码。如果没有占位可用,它将尝试向存在的次低的请求项满足可能具有较低性能的游戏占位。这样做是为了保证最大的占位占有率。即,对较低性能的占位的请求没有卡在较高性能的占位的请求之后,且维持了fifo的完整性。

图14g为根据本发明的一个实施例的,示出了占位规则管理器回调的框图1400g。占位规则管理器1406支持“当服务可用时调用我”的特性。具体的,占位规则管理器1406并不轮询注册表,但其坚挺来自vm主管理器的广播。即,vm主管理器在占位注册表1304中注册占位,并且一旦虚拟机热门,vm主管理器将广播占位可用性。

当占位规则管理器1406接收到广播,回调方法“占位可能是可用的”被唤醒。用户会话管理的回调方法实现通知正在处理来自用户队列的请求的线程,并且该线程获取优先fifo队列的第一登录且以常规执行处理。具体的,多线程可以交错在可用的单一游戏占位上,而使用全局锁维持fifo队列的整体性。同样的,队列处理线程唤醒终端点(例如游戏代理)以执行任务。

图14h为根据本发明的实施例的,示出了进行占位分配的基于云的图形处理平台的部件之间的网络连接的框图1400h。在一个实现方式中,框图1400h结合了框图1400a和1400f的部分,其中框图1400a和1400h示出了通过位于规则管理器1303的入口1402中的用户会话管理器1401来处理进入请求的进程。该请求被传送到优先fifo(例如1403)。用户会话管理器1401理解所请求的应用详情且通过调查服务注册表1304询问可以满足应用详情请求的服务或游戏占位。此外,框图1400f和1400h示出了使用vm主管理器462、占位注册表1304和管理主机指定并公布游戏占位的进程。

图15为根据本发明的一个实施例的、示出了在基于云的图形处理系统中将虚拟机分配到终端用户的方法的流程图。在另一个实施例中,流程图1500示出了在基于云的图形处理系统中将虚拟机分配到终端用户的计算机实现方法。在另一个实施例中,流程图1500在计算机系统上实现,包括处理器和耦连到处理器且具有储存在其中的指令的存储器,如果由计算机系统执行引发系统执行在基于云的图形处理系统中将虚拟机分配到终端用户的方法。在另一个实施例中,用于进行如流程图1500概述的方法的指令被储存在非易失性计算机可读储存介质上,该介质具有计算机可执行指令,用于引发计算机系统来进行在基于云的图形处理系统中将虚拟机分配到终端用户的方法。在实施例中,流程图1500概述的方法由一个或多个图1和2的计算机系统100、客户端设备200的部件分别实现。

流程图1500示出了在云端分配和指定游戏占位的方法,其中每个游戏占位被配置为主持一个或多个游戏或应用执行的实例。软件模块规则管理器1303处理队列中的游戏占位的请求。其将请求转译(translate)为特定性能级别的游戏占位以向终端用户提供最好的游戏体验。游戏占位的每个性能级别与请求加入的队列相关。

特别的,在1510处,该方法包括接收与终端用户相关的客户端设备的执行应用的请求。在1520处,该方法包括确定应用的第一性能级别,其指示恰当地执行应用需求何种资源,以向终端用户给出好的游戏体验。多个性能级别可以指定到应用。在1530处,该方法包括确定可获取的第一性能级别的第一虚拟机。即,虚拟机已指定匹配指定到应用的性能级别。通过在应用和虚拟机之间匹配性能级别,作为示例,在进行游戏应用时,最优的游戏体验被提供给终端用户。在1540处,该方法包括指定第一虚拟机用于客户端设备相关的应用的执行目的。即,第一虚拟机被指定到终端用户。

如果确定第一性能级别的虚拟机不可用,则该方法包括确定应用的第二性能级别,并确定同样具有第二性能级别的第二虚拟机可用。第二虚拟机于是被指定到终端用户用于相关应用的执行目的。

游戏占位的请求以先进先出(fifo)方式处理。工作线程的池通过前瞻队列中的第一项、检查关键值储存的可用性、以及当可用时以fifo方式推动请求从而在不同队列上工作。全局锁被用于保证该请求以fifo方式进行处理。全局锁的操作关于图16进行描述。规则管理器1303联系游戏占位的资源持有者以进行确认,并更新游戏占位的注册。分配通过联系运行在游戏占位1301上游戏代理1305并传递请求细节而完成。

当实现fifo队列时,请求被指定到唯一的全局序列号。基于应用的指定性能级别,该请求被置于一个或多个fifo队列中。请求的处理通过检索多个队列中的每个队列的第一项进行处理,其中多个队列中的每一项与具有相应的序列号的请求相关。已确定哪一项具有最低序列号。可用的虚拟机被指定到与项相关的请求。如果没有该项的虚拟机可用,则具有次低序列号的下一项被确定。可用的虚拟机被指定到下一项。一般来说,如果没有确定具有最低序列号的项的占位,则该方法重复确定具有最低序列号的下一项,其中下一项尚未被考虑用于占位指定和分配。由此,可用的虚拟机被指定到该项。

在主持多虚拟机的物理服务器中,每个虚拟机被认为是游戏占位(例如1301)。应当理解每个虚拟机可以支持多占位,或一个占位可以由多个虚拟机支持。不同应用可以要求不同数量资源和/处理功率。例如,3d(三维)游戏应用比2d(二维)游戏应用可能要求更多的资源和处理。基于游戏用,可用的占位和它们相应的性能级别、不可用的占位和游戏应用的性能级别以及史上支持该应用的游戏占位的性能级别、给出的占位可能使用特定水平的性能级别来指定。由此,可以确定占位是否适于开始执行要求更多或更少处理功率的游戏应用。相应的,基于可用游戏占位和将要执行的应用的性能级别,游戏占位可能被分配或指定到不同的应用。

图16为根据本发明的一个实施例的、示出了实现全局锁以处理请求的计算机实现方法的流程图1600。在另一个实施例中,流程图1600示出了实现全局锁以处理请求的计算机实现方法。在另一个实施例中,流程图1600在计算机系统上实现,包括处理器和耦连到处理器且具有储存在其中的指令的存储器,如果由计算机系统执行引发系统执行实现全局锁以处理请求的方法。在另一个实施例中,用于进行如流程图1600概述的方法的指令被储存在非易失性计算机可读储存介质上,该介质具有计算机可执行指令,用于引发计算机系统来进行实现全局锁以处理请求的方法。在实施例中,流程图1600概述的方法由一个或多个图1和2的计算机系统100、客户端设备200的部件分别实现。

在1601处,该方法尝试获取全局锁。在1620处,全局锁尝试被获取。在1603处,进行尝试以通过检查锁名称和检视是否有当前线程或其他线程设置了锁名称而获取该锁。在1603处,如果为否,则该名称不同,另一线程已经设置了该名称,且该进程进入1605。在1603处,如果为是,则获取该锁,且进程进入1604,其中该请求可以被分配。

在另一方面,如果该锁没有被获取,则该进程进入1605并检查该锁正常程度以检视是否应当破坏该锁并重置。在1620处,该进程验证该锁为正常的。在1621处,该锁的值从redis数据库中获取。在1622处,进行对比以检视是否暂停已经失效,和锁的最长寿命。在1623处,做出尝试以释放该锁。即,锁的值第二次获取,且带有与当前线程相关的名称的新值被设置。在1624处,做出了比较以确定该第二次获取的锁是否与第一次获取的锁的名称相同。如果它们相同,则该线程可以在1625处释放该锁并获取该锁(将它的名称放入redis中的锁)。如果不相同,则另一线程超越该线程以释放该锁。由此,在1626处,第二次获取的值被储存回到位于redis数据库中的存储器。

在1630处释放该锁时,在1631处强制进行释放,且尝试近10次。如果成功,则该进程结束,且该锁被释放。而,如果没有释放,则在1632处尝试删除锁名称的操作。如果在1633处成功,则在1634处等待6毫秒,并且在1631处重试。如果没有成功,或者重试超过了尝试的最大限制,则该在1635处的进程引发1636处的异常。

转回到1606处,如果该锁没有被获取,则在1607处进行锁脉冲机制。该机制提供锁已被释放的通知。该公告被提供给排队的下一线程以获取该锁,其中该线程在1601处开始。

图17a-f为根据本发明的实施例的、实现在基于云的图形处理系统中占位分配的各种方法的示例。例如,图17a为根据本发明的实施例的、示出通过处理fifo队列的请求的线程进行占位分配的方法的流程图1700a。图17b-c为根据本发明的实施例的、示出当要求全局锁时处理请求的方法的流程图1700b-c。图17d为根据本发明的实施例的、示出初始化游戏的方法的流程图1700d。图17e为根据本发明的实施例的、示出其中基于占位分配后发生的、分离线程监控“指定”列表的、“指定”列表覆盖线程的方法的流程图1700e。图17f为根据本发明的一个实施例的、示出佳通远程通信的方法的流程图1700f。

表5

权利要求列表

由此,根据本发明的实施例,描述了通过虚拟计算应用实现用于远程显示器的基于云的虚拟化图形处理的系统和方法。

尽管前述公开使用具体框图、流程图和实例提出各种实施例,每一框图部件、流程图步骤、操作,和/或本文描述和/或示出的部件可以使用广泛的硬件、软件或固件(或其任何组合)单独、共同实现。另外,任何公开的包含在其它部件内的部件应当视为许多结构变型中的实例可以实现以完成相同功能的实例。

本文描述和/或示出的进程参数和步骤序列仅通过实例给出并且可以按需要变化。例如,虽然本文描述和/或示出的步骤以具体顺序示出或讨论,这些步骤不是必须以示出或讨论的依次执行的。本文描述和/或示出的各种实例方法也可以略去本文描述和/或示出的一个或多个步骤,或者包括除那些公开的以外附加的步骤。

尽管本文各种实施例在全功能计算系统的背景下描述和/或示出,一个或多个这些实例实施例可以分布为各种形式的程序产品,不管实际用于完成所述分布的可读计算机介质的类型。本文公开的实施例可以使用执行特定任务的软件模块实现。这些软件模块可以包括脚本、批处理或其他存储在计算机可读存储介质上或计算系统内的可执行文件。这些软件模块可以配置计算系统以执行一个或多个本文公开的实例实施例。一个或多个本文公开的软件模块可以在云计算环境中实现。云计算环境可以通过因特网提供各种服务和应用。这些基于云的服务(例如,软件服务,平台服务、基础设施服务等)可以通过网络浏览器或其他远程接口访问。本文描述的各种功能可以通过远程桌面计算机环境或任何其他云计算环境提供。

上述说明书出于解释目的,参考具体实施例进行描述。然而,上述示意性讨论不意味着将本发明穷尽或限制到所讨论的精确形式。鉴于上述技术各种改进和变型是可能的。所选择和描述的实施例是为了最好的解释本发明的原则以及其实际应用,以因此使本领域其他技术人员能够最好地实现本发明和具有适合于具体使用预期的改进的各种实施例。

因而讨论根据本公开的实施例。虽然本公开以具体实施例进行描述,应该明白,本公开不应理解为限制于这些实施例,而应根据以下权利要求理解。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1