本发明针对一种
用于在计算环境中加速应用的执行的系统和方法。本 发明的实现提供了对应用插件的分布、管理和执行。以这种方式,可以在 本地工作站上有效利用应用,而没有与跨网络调遣整个应用相关联的时延, 并且没有在本地提供加速硬件的
费用。
图1示出了用于管理依照本发明的过程的说明性环境10。就此而言, 环境10包括可以实现文中所描述的过程的计算机
基础设施12。特别地, 所示出的计算机基础设施12包括计算设备14,计算设备14包括管理系统 30,其使得计算设备14可操作以实现文中所描述的过程。所示出的计算设 备14包括处理器20、
存储器22A、输入/输出(I/O)接口24和总线26。 另外,所示出的计算设备14与外部I/O设备/资源28以及存储系统22B进 行通信。如本领域已知的,通常,处理器20执行存储在存储器22A和/或 存储系统22B中的计算机程序代码。当执行计算机程序代码时,处理器20 可以从存储器22A、存储系统22B和/或I/O接口24读取和/或向存储器 22A、存储系统22B和/或I/O接口24写入数据(例如商业或工程解决方 案50)。总线26在计算设备14中的每个组件之间提供通信链路。I/O设 备28可以包括使得个体能够与计算设备14交互的任何设备或者使得计算 设备14能够使用任何类型的通信链路与一个或多个其它的计算设备进行 通信的任何设备。
无论在何种情况下,计算设备14均可以包括能够执行安装在其上的计 算机程序代码的任何通用计算制品(例如,个人计算机、服务器、手持设 备等)。然而,要理解到,计算设备14仅代表可以实现文中所描述的过程 的各种可能的等效计算设备。就此而言,在其它的
实施例中,计算设备14 所提供的功能性可以由包括通用和/或专用硬件和/或计算机程序代码的任 何组合的计算制品来实现。在每个实施例中,均可以使用标准编程和工程 技术相应地创建程序代码和硬件。
类似地,计算机基础设施12仅表示用于实现本发明的各种类型的计算 机基础设施。例如,在一个实施例中,计算机基础设施12包括通过任何类 型的通信链路(例如网络,共享存储器等)进行通信以实现文中所描述的 过程的两个或更多的计算设备(例如,服务器群集)。另外,当实现文中 所描述的过程时,计算机基础设施12中的一个或多个计算设备可以使用任 何类型的通信链路与位于计算机基础设施12外部的一个或多个其它的计 算设备进行通信。在任一情况下,通信链路均可以包括各种类型的有线和/ 或无线链路的任何组合;可以包括一种或多种类型的网络(例如,因特网、 广域网、局域网、虚拟专用网等)的任何组合;和/或可以利用各种类型的 传输技术和协议的任何组合。
在实施例中,以软件实现本发明,其包括但不限于
固件、常驻软件、
微码等。此外,本发明可以采取可
访问于计算机可用或计算机可读介质的 计算机程序产品的形式,该计算机可用或计算机可读介质提供由计算机或 任何指令执行系统使用的或者与计算机或任何指令执行系统结合使用的程 序代码。对于该描述来说,计算机可用或计算机可读介质可以是能够容纳、 存储、通信、传播或传送由指令执行系统、装置或设备使用的或者与指令 执行系统、装置或设备结合使用的程序的任何装置。介质可以是
电子、磁 性、光学、电磁、红外或
半导体系统(或装置或设备)或者传播介质。计 算机可读介质的例子包括半导体或固态存储器、磁带、可装卸计算机磁盘、 随机访问存储器(RAM)、
只读存储器(ROM)、硬磁盘和光盘。光盘 的当前的例子包括只读光盘存储器(CD-ROM)、读/写光盘(CD-R/W) 和DVD。
适于存储和/或执行程序代码的
数据处理系统可以包括通过
系统总线 直接地或间接地耦合于存储元件的至少一个处理器。存储元件可以包括在 程序代码的实际执行期间所使用的局部存储器、
大容量存储器,以及为了 减少在执行期间必须从大容量存储器检索代码的次数而提供对至少一些程 序代码的临时存储的
高速缓冲存储器。输入/输出或I/O设备(包括但不限 于
键盘、显示器、指点设备等)可以直接地或者通过插入I/O
控制器耦合 于系统。
网络适配器也可以耦合于系统,从而使得
数据处理系统能够适于 通过介入专用或公用网络耦合于其它的数据处理系统或远程
打印机或存储 设备。
调制解调器、
电缆调制解调器和以太网卡正是几种当前可用类型的 网络适配器。
在另一实施例中,本发明提供了一种以订购、广告和/或付费为基础实 现本发明的过程步骤的商业方法。也就是说,诸如解决方案集成商(Solution Integrator)的服务提供商可以提供向用户配备插件管理和/或执行。在这 种情况下,服务提供商可以为一个或多个客户创建、维护、支持等等实现 本发明的过程步骤的计算机基础设施。作为回报,服务提供商可以从受制 于订购和/或付费协议的客户接收报酬,以及/或者服务提供商可以根据向一 个或多个第三方销售广告内容而接收报酬。
图2示出了根据本发明的方面的混合计算系统50。该混合计算系统可 以包括所有通过网络55直接或间接连接的任何数目的任何类型的组件。网 络55可以是任何类型的电子通信网络,举例来说,诸如因特网、广域网、 局域网、虚拟专用网、无线网络、以太网等。
系统50的组件可以由任何类型的资源(例如,客户机、服务器等)、 任何类型的硬件平台,以及任何类型的
操作系统组成。例如,客户计算机 60可以连接至网络55。在实施例中,客户计算机60可以包括,但不限于, 客户工作站、个人计算机、电话、
个人数字助理等。要理解到,按照将要 执行的任务的需要,系统50可以包括任何适当数目的客户计算机60。
仍然参照图2,系统50可以进一步包括刀片型服务器65。在实施例中, 刀片型服务器65包括任何类型的一个或多个刀片服务器(例如,单元刀片 (cell blade)、图形处理器刀片、XML加速器、
数据库搜索加速器等), 然而也可以采用组件的其它组合。系统50可以进一步包括架式服务器 (rack server)70。在实施例中,架式服务器70包括任何类型的一个或多 个架式服务器(例如,1U、2U等),然而也可以采用组件的其它组合。 要理解到,按照系统50的使用意图的需要,系统50可以包括任何适当数 目的服务器。系统50可以进一步包括其它计算设备75,举例来说,诸如 游戏控制台、家用器具、嵌入式设备等。
根据本发明的实施例,系统50包括至少一个应用(未示出)。该应用 包括可以驻留在系统50的任何组件(例如工作站、游戏控制台、服务器刀 片等)的可执行程序(例如,软件)。例如,该应用可以包括存储在客户 工作站的存储器中的图形密集(graphics-intensive)
三维建模程序(例如,
计算流体动力学(CFD)程序)。
除了应用以外,系统50还包括至少一个插件(未示出)。本领域公知 的插件是与应用交互的可单独执行的程序(或程序的组件),常常提供从 单独的应用不可获得的附加功能性。例如,应用可以是Web浏览器,并且 插件可以是提供能够通过因特网播放视频剪辑的Web浏览器的组件。在常 规系统中,插件随应用一起存储在本地。然而,在本发明系统50中,插件 可以驻留于系统50内的任何地方,并不限于驻留于与应用相同的组件上。 此外,多个插件可以位于系统50内的各种位置。
更进一步地,系统50包括至少一个加速器(未示出)。本领域公知的 加速器是这样的组件,即其对特定功能的实现比通常会由
中央处理器 (CPU)实现得快。加速器常常嵌于硬件中,举例来说,诸如
协处理器(例 如,浮点单元)或适配卡(例如,视频卡)。加速器可以被设计来执行特 定类别的插件,并且反过来,插件可以被设计成在特定类型的加速器上被 执行。以这种方式,加速器可以用于加快对插件的执行,而插件又由应用 所使用(从而提高应用的速度和/或功能性)。在本发明的实施例中,加速 器可以驻留于系统50内的任何地方,举例来说,诸如工作站中的卡、服务 器刀片上的芯片、有线连接至网络55的独立硬件组件,等等。此外,多个 加速器可以置于系统50内的各种位置。
在实施例中,系统50进一步包括至少一个客户机插件管理器(PIM) 和至少一个服务器PIM。客户机PIM和服务器PIM协作以提供具有在适 当的加速器上执行的插件的应用,而与系统50内的应用、插件和加速器各 自的位置无关。也就是说,应用可以位于系统50中的第一位置(例如,客 户工作站),插件可以位于第二位置(例如,服务器刀片),并且加速器 可以位于第三位置(例如,特定的IP地址)。客户机PIM和服务器PIM 协作以安排在加速器上执行插件,并且执行的结果被返回给应用。通过调 遣插件用于执行,在没有先前与调遣整个应用到远程位置相关联的时延并 且没有在本地提供加速硬件的费用的情况下,系统50提供了具有增强的计 算能力的应用。
图3根据本发明的方面示出了先前所描述的系统50的子系统100。图 3中的箭头表示通过网络55的系统组件之间的通信。为了易于说明,关于 单客户机、两个服务器,以及两个独立加速器描述和说明了子系统,然而 要理解到,根据本发明可以采用任何适当数目的任何类型的组件。
在实施例中,子系统100包括客户机110,如上所述,客户机110可 以包括任何类型的计算机,举例来说,诸如客户工作站、个人计算机、电 话、个人数字助理、游戏控制台、家用器具、嵌入式设备等。第一应用112、 第一插件114,以及第一加速器116驻留于客户机110上。第一应用112、 第一插件114,以及第一加速器116可以是任何适当的类型,并且不必彼 此相关(尽管它们可以被设计成彼此协作)。下文较为详细描述的客户机 PIM 118也驻留于客户机110上。
子系统100进一步包括第一服务器节点120,其可以包括任何适当类 型的服务器(刀片式、架式、独立式,等等)。在实施例中,第一服务器 节点120就网络位置而言远离客户机110。第二应用122、第二插件124, 以及第二加速器126驻留于第一服务器节点120上。第二应用122、第二 插件124,以及第二加速器126可以是任何适当的类型,并且不必彼此相 关(尽管它们可以被设计成彼此协作)。下文较为详细描述的服务器PIM 128也驻留于第一服务器120上。
仍然参照图3,在实施例中,子系统100进一步包括第二服务器节点 130,如上所述,其可以包括任何适当类型的服务器(刀片式、架式、独立 式,等等)。在实施例中,第二服务器节点130就网络位置而言远离第一 服务器节点120和客户机110。第三插件134和第三加速器136驻留于第 二服务器节点130上。第三插件124和第三加速器126可以是任何适当的 类型,并且不必彼此相关(尽管它们可以被设计成彼此协作)。服务器PIM 的另一实例(示为128’)也驻留于第二服务器130上。
在实现中,子系统100包括第三服务器节点140,其包括第四插件144 和第四加速器146。并且子系统100可以进一步包括第四服务器节点150, 其包括第五加速器156。第三服务器节点140和第四服务器节点150可以 包括,例如连接至网络的独立加速器(例如,具有IP地址)。在实施例中, 第三服务器节点140和第四服务器节点150彼此远离并且远离第一服务器 节点120、第二服务器节点130和客户机110。
在实施例中,客户机PIM的实例(例如118)包括存储在客户机110 的存储器中或存储介质上的软件程序。客户机PIM维护子系统100的每个 插件(例如,114、124、134、144)的位置和类型的记录(例如,寄存器、 存储的数据,等等)。客户机PIM记录还可以包括各个插件与用于该插件 的适当的加速器(例如,116、126、136、146、156)之间的关联。如本领 域已知的,客户机PIM记录可以手动生成,例如通过系统配置文件。可选 地,如本领域已知的,客户机PIM记录可以自动生成,例如在系统启动或 在预定的间隔处通过查询用于组件的网络。此外,客户机PIM可操作以与 本地应用进行通信,从而从应用接收对执行插件的请求。这样的通信可以 通过任何适当的方式来完成。
在实施例中,服务器PIM的实例(例如128、128’)包括存储在服务 器(例如120、130)的存储器中或存储介质上的软件程序。服务器PIM还 维护包括了子系统100的加速器(例如,116、126、136、146、156)的位 置的记录(例如,寄存器、存储的数据、ip地址、主机名等)。如上所述, 服务器PIM记录可以手动或自动生成,并且可以被表示成例如共享对象位 置或远程位置。此外,如本领域已知的,服务器PIM的实例还含有用于确 定实时系统负载(例如,每个组件操作时的容量)的模
块。这适于这样的 情况,即在该情况下,取决于执行时的可用性可以将插件映射到相同系统 中的多个同样的加速器。
客户机PIM 118和服务器PIM 128、128’通过
信号交换安排来彼此有 效地进行通信。联网和非联网系统组件之间的信号交换在本领域是已知的, 并且,在本发明的实现中,其用于标识可用的系统资源。例如,客户机PIM 118可以向服务器PIM 128发送对在一种类型的加速器上执行特定插件的 请求。基于加速器位置的服务器PIM记录以及基于系统负载,服务器PIM 128确定和返回用于执行插件的加速器的网络位置给客户机PIM。以这种 方式,插件可以被调遣至适当的加速器、被执行,并且结果被返回给应用。
使用举例:
仍然参照图3,在使用的第一例子中,第一应用112正在客户机110 上执行。第一应用112向客户机PIM 118发送其要求执行第一插件114的 消息。对于该例来说,假设客户机PIM 118通过客户机PIM记录确定第 一插件114位于客户机110上并且与第三加速器136相关联。客户机PIM 118通过网络向服务器PIM 128、128’中的任何实例发送对在第三加速器 136上执行第一插件114的请求。服务器PIM 128通过服务器PIM记录和 系统负载分析确定第三加速器136位于第二服务器节点130并且是可用的。 服务器PIM 128将该信息返回给客户机PIM 118。客户机PIM 118通过网 络将第一插件114的副本发送至第三加速器136。第三加速器136执行第 一插件114并且将结果返回给第一应用112。
要注意,在子系统100内可以存在类似的,或者重复的加速器。例如, 第五加速器156可以基本上等同于第三加速器136。然后,在上述第一例 子中,服务器PIM 128通过系统负载分析确定两个加速器中的哪一个更适 合解决对执行插件的即时请求。例如,如果第三加速器136正在操作接近 100%的容量,而第五加速器156正处于空闲,那么服务器PIM 128可以 基于相应的负载(例如系统负载)将插件导向第五加速器来执行。
此外,要注意,在子系统100内可以存在类似的,或者重复的插件。 例如,第三插件134可以基本上等同于第一插件114。然后,在上述第一 例子中,客户机PIM 118通过与服务器PIM 128’的信号交换来确定插件的 副本已经驻留于与所希望的加速器相同的组件上。这可以发生在,例如, 过去将第一插件114发送到了第二服务器节点130,并且在第二服务器节 点130上维护了副本(例如,第三插件134)的情况下。(要理解到,存 在遍及系统装入插件的其它方式)。在这种情况下,客户机PIM不需要发 送第一插件114的副本到第二服务器节点130,而是发送对在第三加速器 136上执行第三插件134的请求。
此外要注意,应用、插件和加速器可以全都位于相同的系统组件上。 例如,第一应用112可以请求执行第一插件114,该第一插件114与第一 加速器116相关联。在这种情况下,第一插件114可以被加载到第一加速 器116、被执行,并且结果被提供给第一应用112。
仍然参照图3,在第二示例性使用中,第一应用112正在客户机110 上执行。第一应用112向客户机PIM 118发送其要求执行第二插件124的 消息。对于该例来说,假设客户机PIM 118通过客户机PIM记录确定第 二插件124位于第一服务器节点120上。客户机PIM 118通过客户机PIM 记录还确定第二插件124与第四加速器146相关联。客户机PIM 118向服 务器PIM 128、128’中的任何实例发送对在第四加速器146上执行第二插 件124的请求。服务器PIM 128’通过服务器PIM记录和系统负载分析确 定第四加速器146位于第四服务器节点140上并且是可用的。服务器PIM 128’将该信息返回给客户机PIM 118。客户机PIM 118向位于具有第二插 件124的第一服务器节点120上的服务器PIM 128发送请求,以便向第四 加速器发送第二插件124的副本用于执行。服务器PIM 128向第四加速器 146发送第二插件124的副本,相应地,第四加速器146执行第二插件124, 并且结果被返回给第一应用112。
要注意,如上所述,应用并不限于驻留于客户机上。应用可以驻留于 服务器上,例如驻留于第一服务器节点120上的第二应用122。以这种方 式,在服务器上执行的应用还可以获益于调遣并在遍及系统的各个加速器 上远程执行插件的能力。
使用方法:
图4是实现本发明的步骤的流程图。图4同样可以表示本发明的高级
框图。图4的步骤可以实现和执行于客户机服务器关系中的服务器,或者 其可以在将操作信息传送至用户工作站以创建以上所概述的导览的情况下 在该用户工作站上运行。另外,本发明可以采取全硬件实施例、全软件实 施例或既含硬件元素又含软件元素的实施例的形式。
图4根据本发明的方面示出了用于执行插件的方法400。在步骤410, 接收对执行插件的请求。在实施例中,这包括客户机PIM从应用接收对执 行插件的请求。可选地,或者附加地,其包括客户机PIM向服务器PIM 发送对执行插件的请求,例如,使用信号交换例程,如上所述。请求可以 包括加速器的标识,或者加速器的类型,其中该加速器与插件相关联(例 如,来自客户机PIM记录)。
在步骤420,分析用于执行所请求的插件的系统。在实施例中,服务 器PIM确定加速器在系统中的位置并且分析系统负载,如上所述。
在步骤425,基于步骤420的分析(例如,基于可用的系统资源), 服务器PIM标识和指定用于使用的最优加速器。步骤425可以进一步包括 将指定加速器的标识和位置传达回客户机PIM。
在步骤430,将插件加载到指定加速器。在实施例中,这包括在客户 机PIM与指定加速器之间的信号交换。例如,客户机PIM可以通过网络 向加速器发送对执行特定插件的请求以及该插件的副本。可选地,如果该 插件已随加速器一起位于本地,那么无需发送副本,并且仅仅将已驻留的 插件加载到加速器。加载在本领域是已知的,并且可以例如通过加载模块 功能来实现。
在步骤440,使用加速器来执行插件。在实施例中,这包括指定的加 速器执行具有由应用或客户机PIM所发送的任何关联数据的插件。
在步骤450,将执行插件的结果返回给应用。在实施例中,这包括当 加速器正在执行插件时实时地将结果传输给应用(例如,通过网络)。可 选地,其可以包括执行插件来生成一组结果,并且然后将该组结果传输给 应用。步骤450可以进一步包括将结果集成到应用中。
如上所述,本发明的实施例提供了一种用于在远离请求插件的应用的 加速器上执行插件的系统和方法。此外,本发明的实现提供了一种用于分 步和管理插件在网络连接的系统中的执行的系统和方法。以这种方式,本 发明增加了计算应用的功能性。
虽然已经根据实施例说明了本发明,但是本领域的技术人员应当认识 到,本发明可以在
修改的情况下实施,并且属于所附
权利要求的精神和范 围。