CN1906580B - 对于具有可移动对象的启用网格的虚拟机的方法和系统 - Google Patents

对于具有可移动对象的启用网格的虚拟机的方法和系统 Download PDF

Info

Publication number
CN1906580B
CN1906580B CN200480040746XA CN200480040746A CN1906580B CN 1906580 B CN1906580 B CN 1906580B CN 200480040746X A CN200480040746X A CN 200480040746XA CN 200480040746 A CN200480040746 A CN 200480040746A CN 1906580 B CN1906580 B CN 1906580B
Authority
CN
China
Prior art keywords
virtual machine
group
objects
gjvm
thread
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN200480040746XA
Other languages
English (en)
Other versions
CN1906580A (zh
Inventor
斯科特·J·布鲁萨尔德
刘�英
埃德瓦尔多·N·斯普林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN1906580A publication Critical patent/CN1906580A/zh
Application granted granted Critical
Publication of CN1906580B publication Critical patent/CN1906580B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • G06F9/5088Techniques for rebalancing the load in a distributed system involving task migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5072Grid computing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99956File allocation

Abstract

一种方法、设备、计算机程序产品以及数据处理系统给虚拟机的操作提供了嵌入的功能,用于与计算网络中的其他虚拟机进行交互操作。多个虚拟机在数据处理系统内的一个或多个设备上运行;多个虚拟机中的每一个虚拟机都包括以类似于网格的方式与虚拟机群集中的其他虚拟机进行交互操作和关联的功能。虚拟机群集中的每一个虚拟机充当虚拟机群集内的节点。虚拟机对与对象组相关联的其对象进行管理,每一个虚拟机管理多个对象组。虚拟机共享信息,以便对象组可以在虚拟机群集中的虚拟机之间移动,从而允许虚拟机群集充当一个逻辑虚拟机。

Description

对于具有可移动对象的启用网格的虚拟机的方法和系统
技术领域
本发明涉及改进的数据处理系统,具体来说,涉及用于进行多计算机数据传输以及程序执行的方法和设备。
背景技术
与因特网相关的和与Web相关的技术广泛采用使得在物理上由成千上万个单位和企业以及成千上万的个人支持的互相连接的计算机组成的全球网络得到迅猛的发展。近来,企业进行了许多努力,以将许多计算机的计算容量组织到网格中,网格是许多计算机的逻辑组织,用于提供计算容量和数据仓库容量的集体共享,同时维护对单个计算机的本地自治控制。
例如,许多企业在由GGF,Inc.,支持的Global Grid ForumTM内进行合作,以为网格计算开发团体驱动的标准。Globus ProjectTM是一项由政府机构、公司和大学支持的项目,以开发与网格相关的技术,开发成功了开放式网格服务体系结构(OGSA),这是用于将网格概念包括在基于Web服务内的面向服务的框架内的倡议。GlobusToolkit是开放式网格服务体系结构的一种实现方式,它为开发启用网格的应用程序提供了软件编程工具,而Java
Figure S04840746X20060728D000012
Community Grid(CoG)Kit是Globus Toolkit
Figure S04840746X20060728D000013
的组成部分,它通过Java框架提供了对网格服务的访问。
虽然Java
Figure S04840746X20060728D000015
CoG Kit在访问网格服务时支持Java应用程序,但是,JavaCoG Kit不将网格的计算特征包括到Java
Figure S04840746X20060728D000018
虚拟机(JVM)中。因此,应该有一种将网格的计算特征包括在虚拟机内的方法、系统、设备和/或计算机程序产品。特别是应该在虚拟机内执行对象管理,以便虚拟机可以在动态地变化的网格计算环境内实现。
发明内容
一种方法、设备、计算机程序产品以及数据处理系统给虚拟机的操作提供了嵌入的功能,用于与计算网络中的其他虚拟机进行交互操作。多个虚拟机在数据处理系统内的一个或多个设备上运行;多个虚拟机中的每一个虚拟机都包括以类似于网格的方式与虚拟机群集中的其他虚拟机进行交互操作和关联的功能。虚拟机群集中的每一个虚拟机充当虚拟机群集内的节点。虚拟机对其与对象组相关联的对象进行管理,每一个虚拟机都可以管理多个对象组。虚拟机共享信息,以便对象组可以在虚拟机群集中的虚拟机之间移动,从而允许虚拟机群集充当一个逻辑虚拟机。符合典型的应用程序模型的单个应用程序映像可以以这样的方式在启用网格的虚拟机群集内执行,以便允许应用程序的执行横跨多个启用网格的虚拟机的实例,从而可使应用程序的执行横跨多个设备。
附图说明
在所附的权利要求中阐述了本发明的新颖的特征。本发明本身,进一步的目标和优点,通过参考下面的详细描述并参考附图,将得到最好的理解,其中:
图1A描述了数据处理系统的典型的网络,其中每一个数据处理系统都可以实现本发明;
图1B描述了可以在其中可以实现本发明的数据处理系统内使用的典型的计算机体系结构;
图2描述了一个方框图,该方框图显示了根据本发明的实施例的分布式数据处理系统中的虚拟机群集;
图3A描述了一个方框图,该方框图显示了可以用来作为根据本发明的实施例的可群集化虚拟机来增强虚拟机的组件和/或信息;
图3B-3D描述了一组方框图,该组方框图显示了对象组在群集化虚拟机之间的转移;
图4描述了一个流程图,该流程图显示了初始化主要gJVM节点的过程;
图5A描述了一个流程图,该流程图显示了在主要gJVM中向正在被初始化的非主要gJVM分配唯一gJVM标识符的过程;
图5B描述了一个流程图,该流程图显示了在主要gJVM中向正在被初始化的非主要gJVM分配唯一gJVM标识符的另一个过程;
图6描述了一个流程图,该流程图显示了在主要gJVM中向非主要gJVM分配唯一对象组标识符的过程;
图7描述了一个流程图,该流程图显示了在主要gJVM中向非主要gJVM提供有关gJVM群集的信息的过程;
图8描述了一个流程图,该流程图显示了在主要gJVM中改变非主要gJVM的运行状态的过程;
图9描述了一个流程图,该流程图显示了在主要gJVM中改变对象组的迁移状态的过程;
图10描述了一个流程图,该流程图显示了初始化非主要gJVM节点的过程;
图11描述了一个流程图,该流程图显示了在群集化虚拟机上构建线程的过程;
图12描述了一个流程图,该流程图显示了在群集化虚拟机上破坏线程的过程;
图13描述了一个流程图,该流程图显示了在群集化虚拟机上构建对象的过程;
图14描述了一个流程图,该流程图显示了在群集化虚拟机上处理对对象的访问的过程;
图15描述了一个流程图,该流程图显示了在本地群集化虚拟机上将对象组迁移到远程群集化虚拟机的过程;
图16描述了一个流程图,该流程图显示了在本地群集化虚拟机上从远程群集化虚拟机接受对象组的迁移的过程;
图17描述了一个流程图,该流程图显示了在本地群集化虚拟机上将线程迁移到远程群集化虚拟机的过程;
图18描述了一个流程图,该流程图显示了在本地群集化虚拟机上从远程群集化虚拟机接受线程的迁移的过程;
图19描述了一个流程图,该流程图显示了在本地群集化虚拟机上对群集化虚拟机执行关闭操作的过程;
图20描述了一个流程图,该流程图显示了在本地群集化虚拟机上从远程群集化虚拟机收集负载或性能信息的过程;
图21描述了一个流程图,该流程图显示了在本地群集化虚拟机上响应来自群集化虚拟机的对本地群集化虚拟机的当前负载或性能信息的请求的过程;
图22描述了一个流程图,该流程图显示了本地群集化虚拟机上的根据负载或性能信息确定将线程和/或对象组从本地群集化虚拟机迁移到远程群集化虚拟机的过程;以及
图23描述了一个方框图,该方框图显示了通过多个设备横跨单一逻辑虚拟机中的多个启用网格的虚拟机的单个应用程序映像的执行。
具体实施方式
一般而言,可以包括或涉及本发明的设备包括各式各样的数据处理技术。因此,作为背景,在比较详细地描述本发明之前,先描述分布式数据处理系统内的硬件和软件组件的典型的组织。
现在参考附图,图1A描述了数据处理系统的典型的网络,其中每一个数据处理系统都可以实现本发明的一部分。分布式数据处理系统100包含网络101,这是可以用来在分布式数据处理系统100内的连接在一起的各个设备和计算机之间提供通信链路的媒介。网络101可以包括诸如线路或光纤电缆之类的永久连接,或通过电话或无线通信建立的临时连接。在所描述的示例中,服务器102和服务器103与存储单元104一起连接到网络101。此外,客户端105-107也连接到网络101。客户端105-107和服务器102-103可以由诸如大型机、个人计算机、个人数字助理(PDA)等等各种各样的计算设备来代表。分布式数据处理系统100可以包括更多的未显示的服务器、客户端,路由器,其他设备和对等体系结构。
在所描述的示例中,分布式数据处理系统100可以包括因特网,网络101表示全世界的网络和网关的集合,它们使用诸如轻型目录访问协议(LDAP)、传输控制协议/因特网协议(TCP/IP)、超文本传输协议(HTTP)、无线应用程序协议(WAP)等等协议彼此进行通信。当然,分布式数据处理系统100还可以包括许多不同类型的网络,例如,内部网、局域网(LAN)或广域网(WAN)。例如,服务器102直接支持客户端109和网络110,其中包括无线通信链路。支持网络的电话111通过无线链路112连接到网络110,PDA 113通过无线链路114连接到网络110。电话111和PDA 113也可以使用诸如BluetoothTM无线技术之类的适当的技术跨无线链路115直接在其本身之间进行数据传输,以创建所谓的个人区域网络(PAN)或个人专门网络。同样,PDA 113也可以通过无线通信链路116向PDA107传输数据。本发明可以在各种各样的硬件平台上实现。图1A作为异构计算环境的示例,而不是对本发明作出体系结构的限制。
现在参考图1B,该图描述了诸如图1A所示的其中可以实现本发明的数据处理系统的典型的计算机体系结构。数据处理系统120包含连接到内部系统总线123的一个或多个中央处理单元(CPU)122,总线123将随机存取存储器(RAM)124、只读存储器126,以及输入/输出适配器128(该适配器128支持诸如打印机130、磁盘单元132或诸如音频输出系统等等未显示的其他设备)互相连接在一起。系统总线123还连接用于访问通信链路136的通信适配器134。用户接口适配器148连接诸如键盘140和鼠标142之类的各种用户设备或诸如触摸屏、笔尖、麦克风之类的未显示的其他设备。显示适配器144将系统总线123连接到显示设备146。
那些本领域普通技术人员将认识到,图1B中的硬件可以随系统实现方式不同而不同。例如,系统可以具有诸如基于Intel
Figure S04840746X20060728D000051
Pentium
Figure S04840746X20060728D000052
处理器之类的一个或多个处理器,数字信号处理器(DSP),以及一种或多种易失性和非易失性存储器。除了图1B中所描述的硬件之外,还可以使用其他外围设备加以补充或来代替它们。所描述的示例不对本发明的体系结构作出限制。
除了能够在各种各样的硬件平台上实现外,本发明还可以以各种各样的软件环境来实现。可以使用典型的操作系统来控制每一个数据处理系统内的程序执行。例如,一个设备可以运行Unix
Figure S04840746X20060728D000061
操作系统,而另一个设备可以包含简单的Java运行时环境。典型的计算机平台可以包括浏览器,这是著名的用于访问各种各样格式和语言的超文本文档的软件应用程序,如图形文件、字处理文件、可扩展标记语言(XML)、超文本标记语言(HTML)、手持设备标记语言(HDML)、无线标记语言(WML),以及各种其他格式和类型的文件。
虚拟机群集/网格
如上文参考图1A和图1B所述的,本发明可以在各种各样的硬件和软件平台上实现。具体来说,如参考其余的图所描述的,本发明旨在提供一种改进的虚拟机,该虚拟机包括改进的虚拟机内的网格的计算特征,以便改进的虚拟机可以以类似于网格的方式与类似的改进的虚拟机进行交互。虽然下面的附图被描述为包括Java
Figure S04840746X20060728D000063
技术,以便本发明可以作为改进的Java
Figure S04840746X20060728D000064
虚拟机(JVM)来实现,但是,本发明也可以结合其他类型的虚拟机的技术来实现。
现在参考图2,该图中的方框图描述了根据本发明的实施例的分布式数据处理系统中的虚拟机群集/网格。网络200连接一组虚拟机201-205;网络200类似于图1中的网络101,虚拟机201-205可以在各种各样的设备上得到支持,如图1所示的任何设备上。
下面介绍一下术语,群集是两个或更多交互的实体的集合。虚拟机的群集可以称为虚拟机群集、虚拟机网格或逻辑虚拟机。包含用于在群集/网格中操作的功能的单个虚拟机可以称为可群集化虚拟机或启用网格的虚拟机。包括在群集/网格内的单个虚拟机可以称为群集化虚拟机或嵌入网格的虚拟机。
如上所述,本发明可以在使用Java虚拟机的Java环境内实现,Java
Figure S04840746X20060728D000067
虚拟机已经被增强以包括用于实现本发明的实施例的功能。或者,本发明可以在对Java
Figure S04840746X20060728D000071
类库的扩展内实现。如此,上文所提供的术语可以在Java
Figure S04840746X20060728D000072
上下文内使用。在下文中,启用网格的JVM或嵌入网格的JVM被称为gJVM。图2显示了连接包含gJVM 201-205的gJVM群集的网络200。
单一群集化虚拟机或单一嵌入网格的虚拟机可以称为给定虚拟机群集、给定虚拟机网格或给定逻辑虚拟机内的节点。在图2所示的示例中,一组虚拟机以类似于网格的方式作为单个虚拟机内的多个节点而进行交互。本发明支持虚拟机群集中的多个节点,分布式数据处理系统可以支持一个以上的虚拟机群集/网格。此外,给定设备可以支持一个以上可群集化/启用网格的虚拟机或一个以上群集化/嵌入网格的虚拟机。换句话说,给定设备可以支持第一群集化/嵌入网格的虚拟机和第二群集化/嵌入网格的虚拟机,其中,两个群集化/嵌入网格的虚拟机包括在两个不同的和独立的虚拟机群集/网格中;两个群集化/嵌入网格的虚拟机和两个虚拟机群集/网格将唯一地可识别和可访问。
依据在给定虚拟机群集/网格内执行的进程的类型,为方便起见,将给定虚拟机群集/网格内交互的节点称为本地节点或远程节点,以便在节点之间进行区别。例如,从给定gJVM的角度来看,给定gJVM可以称为本地节点,本地gJVM或本地gJVM节点;从给定gJVM的角度来看,与本地节点进行交互的不同的gJVM,不论是在同一台设备上还是在另一台设备上执行,都可以称为远程节点、远程gJVM、远程gJVM节点。
本发明旨在透明地允许应用程序在一组机器或设备上运行,其中每一台机器或设备都至少支持一个群集化虚拟机节点。例如,多线程Java
Figure S04840746X20060728D000073
应用程序可以在多个gJVM上运行,应用程序将不知道也不必知道其线程被发往哪些机器。虚拟机群集动态地在可用的群集化虚拟机组上管理和分布应用程序的线程。
每一个虚拟机群集都具有单个主要节点。在图2中,gJVM节点201是主要gJVM节点,而gJVM节点202-205是非主要gJVM节点。主要节点可以具有为群集内的非主要节点执行的某些职责。例如,主要节点可以具有定义应用程序环境和应用程序的上下文的一组对象,例如,针对文件访问的,以及虚拟机群集的类加载(类路径)。
主要节点和非主要节点可以以稍微不同的方式启动,从而向将充当主要节点或充当非主要节点的给定可群集化虚拟机提供指示。例如,Java环境中的可群集化虚拟机可以以下列示范性实例化命令来启动:
Java[-main-clusterName][mainClass]“java”命令可以实例化可群集化虚拟机,即,启动可群集化虚拟机的给定副本的执行。“-main”参数表示,gJVM的特定实例将充当由“-clusterName”参数标识的gJVM群集内的主要gJVM节点;当gJVM的特定实例将充当非主要gJVM节点时,实例化命令将不包括“-main”参数。“mainClass”参数指定要由gJVM运行的主程序。如此,包括主要节点和非主要节点的软件模块可以是彼此的副本,从而使软件基本上类似,即,主要节点和非主要节点可以是所谓的对等或克隆,尽管主要节点和非主要节点可以因为主要节点的实例化进程与非主要节点的实例化进程稍有不同而表现出不同的行为。
由于主要节点和非主要节点可以只是可群集化虚拟机的独立实例,其中,主要节点和非主要节点只根据两种不同的操作模式来进行运行,例如,通过以不同的方式初始化,主要节点可以将其职责委派或转交给非主要节点,以便可以在系统启动之后将主要节点关闭后进行维护或达到其他目的。
启用网格的虚拟机
现在参考图3A,该图中的方框图显示了可以用来增强作为根据本发明的实施例的可群集化/启用网格的虚拟机的虚拟机的组件和/或信息。图3A描述了表示诸如图2中的任何节点201-205之类的单个可群集化虚拟机的gJVM节点300。虽然没有显示,gJVM节点300包括用于以类似于典型的JVM的方式执行各种任务的其他组件和信息;换句话说,gJVM节点300可以被视为已经被增强以包括本发明的功能的典型的JVM。虽然显示的gJVM节点300包含了多种类型的表,但是,那些本领域普通技术人员将理解,可以由给定可群集化虚拟机节点对不同类型的信息和不同信息格式来进行管理,以实现本发明的功能。
P2P通信单元302可使每一个gJVM以对等方式与任何其他gJVM进行通信,特别是向另一个gJVM传递gJVM的性能信息。例如,gJVM可以将其CPU负载因子、其存储器因子,以及其通信队列负载因子传递到其他gJVM,以便虚拟机群集可以以分布式方式平衡其总负载。唯一gJVM ID 304是一个数据值,该数据值表示已经指派给由gJVM组名称306标识的给定gJVM群集内特定gJVM的唯一虚拟机标识符。应用程序环境/上下文参数308定义了各种值和信息,这些值和信息在gJVM 300的寿命内可能需要,用于从其运行时环境中获取附加信息并用于与其运行时环境进行交互。例如,每一个gJVM都可能必须知道其中配置了主要gJVM的主要gJVM IP地址和端口值310,以便与主要gJVM进行通信。
每一个群集化虚拟机都有运行状态,例如,已停止、正在启动、已经启动,以及正在停止。当在虚拟机群集内正在实例化新节点时,即,添加到已经在虚拟机群集内的多个虚拟机时,有关其存在的信息被传播到整个虚拟机群集;当虚拟机群集内的特定节点正在被停止时,即,从虚拟机群集内多个虚拟机的其余部分删除时,(这可以在不停止整个虚拟机群集的情况下发生),有关特定节点被停止的信息被传播到整个虚拟机群集。在图3A所示的示例中,假设每一个gJVM节点都维护了gJVM群集内的gJVM节点的列表的本地副本(这显示为gJVM注册表312);gJVM节点300可以接收有关其他节点的状态的更新的信息,然后该信息将反映在gJVM注册表312内。如此,gJVM注册表312提供对gJVM节点300已知的gJVM的注册表。gJVM注册表312包含每一个已知的gJVM的特征值的列表,如其唯一gJVM ID 314、其IP地址和端316,以及其运行状态318。gJVM群集内的每一个gJVM都可以在彼此之间传递各种工作负荷或计算资源利用参数,以便它们可以确定向哪里分派线程。
在gJVM启动之后,它可以接受来自其gJVM群集的线程工作;当它停止时,它将其线程和关联的对象移动到另一个gJVM。与典型的虚拟机不同的是,本发明提供了可群集化虚拟机,其中,对象可在gJVM节点之间移动,从而当可群集化虚拟机的实例正在被停止时可使线程以及其关联的对象移动。
在典型的采用现有技术的系统中,远程对象是通过IP地址、TCP/IP端口号、以及对象标识符引用的组合来进行编址的;远程方法调用(RMI)引用或通用对象请求代理体系结构(CORBA)引用还包含相对较大的其他信息。与其中存根类可以在典型的RMI或CORBA实现方式中使用的典型的虚拟机不同的是,本发明提供了对象引用,以便对对象的访问在gJVM运行时环境内透明地进行管理而无需存根类,关于这一点,下面将详细描述。
为支持本发明内的可移动对象,对象与对象组关联,即,在逻辑上包含在对象组内。只要对象存在,其与特定对象组的关联确保了对象组将继续存在。换句话说,只要对象组至少具有一个对象,它就继续存在。当一个对象组中的所有对象都已经被回收时,那么,该对象组也将被回收。
对象组可以在群集化虚拟机之间移动。可访问的对象组只在单个群集化虚拟机上存在;当对象组处于在群集化虚拟机之间的迁移状态时,对该对象组的访问可以得到限制。因此,每一个群集化虚拟机都具有有关对象组在虚拟机群集内的位置的信息。
在图3A所示的示例中,对象组注册表320包含对gJVM 300已知的对象组ID的列表及其他关联的信息,以在gJVM 300的gJVM群集内定位那些对象组,从而将每一个已知的对象组与对gJVM 300已知的gJVM关联。例如,特定对象组由对象组ID 322表示;在其上面给对象组指派了对象组ID 322的gJVM节点由gJVM ID 324标识,指派给对象组ID 322的对象组的迁移状态由迁移状态值326标识,状态值326可以是一组恒定值中的某一个值,其中每一个值都表示不同的可能的迁移状态。
为了提供透明的访问并提供对象在虚拟机群集内的可动性,内部虚拟机的到对象的句柄,即对象引用,包含紧凑的信息项集,该信息项集提供了对象的定位和访问,但没有指定对象的位置。例如,可以使用下列Java结构来指定Java
Figure S04840746X20060728D000112
环境中的对象句柄:
Struct ObjectHandle{
Int objectGroupID;//Unique object group ID
Byte[]objectID;//Unique object ID of the object
}
上文所提供的示例中指定的ObjectHandle允许在gJVM群集内执行的应用程序访问gJVM群集内的任何地方的对应的对象。通过知道一组对象的唯一对象组标识符,任何gJVM节点都可以定位gJVM群集内的标识的对象组;例如,如果对象组在一个表中或在将对象组标识符与gJVM标识符关联的其他类型的数据仓库中进行管理,那么,可以确定在其上面驻留了对象的gJVM节点。通过使用有关对gJVM节点进行编址或访问的方式的其他信息,可以使用唯一gJVM标识符与在其上面驻留了对象的gJVM节点进行通信;例如,如果gJVM标识符在一个表中或将gJVM标识符与IP地址和端口号关联的其他类型的数据仓库中进行管理,例如,如gJVM注册表312所示,那么,可以以某种方式访问相应的gJVM节点上的相应的对象组。虽然给定gJVM节点可以由IP地址和端口号进行标识,但是此信息不直接包含在对象引用内,从而可使对象透明地在gJVM节点之间移动。通过知道要被访问的对象的唯一对象标识符,那么,可以以某种方式访问相应的gJVM节点上的对象组内的相应的对象。
有关对象组的位置的信息可以由gJVM群集的所有gJVM节点都可以访问的JVM单个对象提供,以查询对象组标识符和托管对象组的gJVM节点之间的关联。在图3A所示的示例中,gJVM节点300包含由对象组注册表320提供的本地信息;例如,gJVM节点300可以从另一个gJVM节点(例如,主要gJVM节点)检索或接收对对象组注册表320的更新,从而可使gJVM节点300执行快速而有效的本地查询。
对象和它们的对象组是根据需要在本地gJVM节点的堆阵内创建的。可以本地引用对象,直到对象引用被传递到线程范围之外,此时,可以作为远程对象透明地访问对象,从而可使其他线程潜在地在其他机器上运行,以对其进行访问。在一个实施例中,优选情况下,在gJVM节点的线程本地堆阵中创建对象组;或者,对象组可以在群集化虚拟机内的其他类型的堆阵内创建。当构建线程时,给每一个新线程都提供了新线程本地堆阵;线程可以根据需要获取更多的线程本地堆阵。线程本地堆阵提供了高性能,因为:对大多数对象的大多数访问都是在特定线程本地进行的;可以轻松地将对象回收;不需要堆阵锁定就可以满足对象分配。线程本地堆阵通常是作为特定线程可以对其进行访问的可配置大小的对象来实现的。为满足典型的小对象分配,线程本地堆阵在一端分离,以释放所需空间。如果线程本地堆阵不足够大,以满足分配,则丢弃线程本地堆阵的其余部分,并由全新的线程本地堆阵替代。较大的对象分配可以绕过线程本地堆阵机制,并可以直接从虚拟机内的较大的堆阵来进行满足。图3A描述了gJVM节点300内的单个线程328;线程328与两个线程本地堆阵330和332关联,从而显示了一个线程可以与多个线程本地堆阵具有一对多的关联。显示的线程本地堆阵330包含对象组334和对象组336,它们包含在图中没有显示的对象;显示的线程本地堆阵332包含对象组338,其本身包含对象340-342。
用于管理线程的信息存储在对象内,此对象也存储在对象组内。同样,线程的堆栈帧是作为对象来管理的。图3A描述了线程管理对象344和用于管理这样的信息的堆栈帧对象346。如此,与线程相关的实例数据存储在对象组内。如果线程从一个gJVM节点移到另一个gJVM节点,则实例数据作为移动对象组的过程的一部分来移动。线程代码本身不必存储在对象组中;如果代码在存储器内不存在,则在需要时从类文件中提供。
当建立新线程时也创建新对象组;将在对象组和新建立的线程(它具有唯一的线程标识符)之间创建关联。线程标识符在整个群集中是唯一的;每一个群集化虚拟机都具有唯一的虚拟机标识符,从而可使唯一线程标识符优选情况下基于唯一虚拟机标识符和线程标识符(它在给定虚拟机内是唯一的)的组合。
可以根据需要将更多的对象组添加到线程中。在图3A所示的示例中,本地对象组管理表350包含在gJVM节点300内管理的对象组列表,即,存储在gJVM节点300内的对象组,与其他关联的信息一起,管理gJVM节点300内的那些对象组。例如,特定对象组由表中的行表示,表包含对象组ID 352,指向包含特定对象组的线程本地堆阵的指针354,以及与对象组关联的线程标识符356;如果在群集化虚拟机内的其他类型的堆阵内创建对象组,那么,不同的信息将在本地对象组管理表350内进行管理。
如上所述,只要对象组至少具有一个对象,它就继续存在;即使负责创建对象的线程被终止,对象也可以被仍需要其存在的另一个线程引用,从而需要对象位于其中的对象组继续存在。或者,也可以在gJVM节点内维护主全局对象组360。当线程结束时,包含在其关联的对象组(或关联的对象组)中的并且仍可从其他线程引用的所有其余的对象,例如,对象362-368被移到主全局对象组中。甚至在始发线程结束的情况下,主全局对象组也将包含在gJVM群集内全局引用的所有对象,从而可以对较少的对象组进行管理。
在虚拟机群集/网格内的对象组移动
现在参考图3B-3D,一组方框图显示了根据本发明的实施例的对象组在群集化虚拟机之间的转移。图3B-3D描述了在一段时间内虚拟机群集内的一组gJVM节点;图3B描述了一个比图3C中描述的时间点(该时间点比图3D中描述的时间点较早)较早的时间点。图3B以类似于图3A的方式显示了包含对象组334、336和338的gJVM节点300。此外,gJVM节点370包含对象组372,而gJVM节点380包含对象组382。
如上所述,只要对象组至少具有一个对象,它就继续存在,即使最初与对象组关联的线程被终止。图3C描述了与图3B相同的gJVM节点和相同对象组。然而,图3C与图3B不同的是,对象组338已经从gJVM节点300转移到gJVM节点380;例如,可以响应与对象组338关联的线程(如图3A所示的线程328)终止而进行转移。
还是如上所述,只要对象组至少具有一个对象,它就继续存在,即使建立了对象组的群集化虚拟机已经被停止或终止。图3D描述了与图3C中的某些相同的gJVM节点和对象组的稍晚的时间点。然而,图3D与图3C不同的是,对象组334和336已经从gJVM节点300转移到gJVM节点370。例如,可以响应支持对象组334和336的gJVM节点300的终止而进行转移;当给定gJVM关闭时,给定gJVM上的堆阵和/或对象组可以转移到另一个机器中,整个虚拟机群集中的gJVM节点中的信息将用对象组的位置进行更新。
还可以在虚拟机群集内进行垃圾回收。在典型的Java
Figure S04840746X20060728D000141
虚拟机中,垃圾回收是用标记-清除(mark-and-sweep)方法来进行。在标记-清除方法中,当应用程序试图分配对象,但是存储器利用使对象分配操作难以进行或不可能完成时,由应用程序显式地或者自动地调用垃圾回收。虚拟机穿过所有对象,将它们标记起来,然后,扫描所有线程和统计数据(全局数据),以再次标记所有可以遍历到的所有对象。虚拟机暂停所有线程,然后遍查每一个线程的堆栈帧的数据结构,从而它标记可由任何线程引用的所有对象,可能是一个应用程序一个应用程序地进行。然后,破坏或删除没有被标记为可引用的所有对象,从而释放存储器,以便让虚拟机分配对象。
大多数对象通常是只能由一个线程访问的对象。利用本发明的虚拟机群集,可以远程地引用对象;当远程地引用对象时,它被同样地标记起来。在一个实施例中,gJVM节点可以具有一个单独的守护线程,该线程以低优先级运行并定期遍历系统,以执行远程垃圾回收处理。每一个对象都可以具有远程垃圾回收位,该位将由远程垃圾回收守护程序在标记-清除方法中使用。如果被远程引用的对象不再在其中建立了该对象的gJVM节点内引用,那么,远程垃圾回收守护线程则努力判断远程对象引用是否仍需要对象的存在。守护线程可以向其他gJVM节点发送请求消息以查询可以准备在本地gJVM内释放的特定对象是否仍被远程gJVM引用;这些请求可以为多个对象成批发出,以便可以有效地检查引用组。如果没有远程gJVM节点报告特定对象仍在被远程引用,那么,本地gJVM节点上的远程垃圾回收守护线程可以启动对象删除;例如,远程垃圾回收守护线程可以删除关于对象正在/曾经被远程引用的任何指示,从而可使对象随后在普通/本地垃圾回收过程中被删除。
主要启用网格的虚拟机的初始化
现在参考图4,该图中的流程图显示了根据本发明的实施例的初始化主要gJVM的过程。过程从通过使用上文所描述的实例化命令初始化主群集化虚拟机节点(步骤402)开始。将gJVM群集名称以这样的方式进行注册,以便使应用程序可以查询可用的gJVM群集,并防止与其他gJVM群集发生名称冲突(步骤404)。主要gJVM节点获取将被新启动的gJVM群集使用的任何环境参数或上下文参数(步骤406),并以这样的方式存储信息,以便对gJVM群集中的所有节点都可用。初始化主要gJVM节点内的对象组注册表的主副本(步骤408),此后,将主副本作为副本传播到诸如图3A所示的对象组注册表320之类的非主要gJVM节点。还初始化主要gJVM节点内的gJVM注册表的主副本(步骤410),此后,也将主副本作为副本传播到诸如图3A所示的gJVM注册表312之类的非主要gJVM节点,从而结束该过程。
为启用网格的虚拟机节点分配或注册唯一ID
现在参考图5A,该图中的流程图显示了在主要gJVM中向正在被初始化的非主要gJVM分配唯一gJVM标识符的过程。过程开始时,主要gJVM从非主要gJVM接收有关唯一gJVM标识符的请求(步骤502)。主要gJVM产生唯一gJVM标识符(步骤504),并将新产生的gJVM标识符添加到gJVM注册表(步骤506)。主要gJVM将gJVM注册表中的非主要gJVM的运行状态设置为正在启动状态值(步骤508),然后,主要gJVM通过发送包含新产生的唯一gJVM标识符的消息来响应发出请求的非主要gJVM(步骤510)。然后,主要gJVM将包含更新的gJVM注册表的消息广播到所有非主要gJVM节点(步骤512),从而结束该过程。
现在参考图5B,该图中的流程图显示了在主要gJVM中向正在被初始化的非主要gJVM分配唯一gJVM标识符的另一个过程。过程开始时,主要gJVM从非主要gJVM接收注册唯一gJVM标识符的请求(步骤522)。与其中非主要gJVM节点依靠主要gJVM节点分配唯一gJVM标识符的图5A不同的是,图5B显示了其中非主要gJVM节点分配其自己的唯一gJVM标识符然后向主要gJVM节点注册其标识符的示范性系统。非主要gJVM节点可以通过执行用于这样的用途的算法来产生其自己的保证是唯一的标识符。例如,许多设备在制造时包括可读、不可改变的序列号,有时称为全局唯一标识符;由于分布式gJVM群集内的每一个gJVM节点都在设备上运行,因此,gJVM节点可以使用一种算法以创建唯一gJVM标识符,其中,算法接受设备的全局唯一标识符作为输入。
然后,主要gJVM将新gJVM标识符添加到或注册到gJVM注册表中(步骤524)。主要gJVM将gJVM注册表中的非主要gJVM的运行状态设置为正在启动状态值(步骤526),然后,主要gJVM通过发送包含表示注册是否成功的状态值的响应消息来响应发出请求的非主要gJVM(步骤528)。然后,主要gJVM将包含更新的gJVM注册表的消息广播到所有非主要gJVM节点(步骤530),从而结束该过程。
将对象组ID分配到非主要启用网格的虚拟机节点
现在参考图6,该图中的流程图显示了在主要gJVM中向非主要gJVM分配唯一对象组标识符的过程。过程开始时,主要gJVM从非主要gJVM接收有关唯一对象组标识符的请求(步骤602)。主要gJVM产生唯一对象组标识符(步骤604),并将新产生的对象组标识符添加到对象组注册表中(步骤606)。主要gJVM将对象组注册表中的对象组的迁移状态设置为正在启动状态值(步骤608),然后,主要gJVM通过发送包含新产生的唯一对象组标识符的消息来响应发出请求的非主要gJVM(步骤610)。然后,主要gJVM将包含更新的对象组注册表的消息广播到所有非主要gJVM节点(步骤612),从而结束该过程。
或者,与其中非主要gJVM节点依靠主要gJVM节点分配唯一对象组标识符的图6相对比,可以使用另一个过程,其中,非主要gJVM节点分配其自己的唯一对象组标识符,然后向主要gJVM节点注册此新产生的对象组标识符。非主要gJVM节点可以通过执行用于这样的用途的算法来产生其自己的保证是唯一的对象组标识符,例如,以类似于上文参考图5B所描述的方式。
向非主要启用网格的虚拟机节点提供群集特定的信息
现在参考图7,该图中的流程图显示了在主要gJVM中向非主要gJVM提供有关gJVM群集的信息的过程。过程开始时,主要gJVM从非主要gJVM接收有关群集特定的信息的请求,如当前gJVM注册表、当前对象组注册表或群集的环境/上下文参数(步骤702)。主要gJVM通过发送包含被请求的信息的消息来响应发出请求的非主要gJVM(步骤704),从而结束该过程。如此,非主要gJVM节点能够从主要gJVM节点获取信息,假设本发明的实施例具有这样的gJVM群集,其中,主要gJVM节点代表非主要gJVM节点管理群集特定的信息。
改变非主要启用网格的虚拟机节点的运行状态
现在参考图8,该图中的流程图显示了在主要gJVM中改变非主要gJVM的运行状态的过程。过程开始时,主要gJVM从非主要gJVM接收改变其运行状态的请求(步骤802)。主要gJVM用请求的运行状态更新gJVM注册表(步骤804),并用确认消息响应发出请求的非主要gJVM(步骤806)。然后,主要gJVM将包含更新的gJVM注册表的消息广播到所有非主要gJVM节点(步骤808),从而结束该过程。
通过非主要启用网格的虚拟机节点改变对象组迁移状态
现在参考图9,该图中的流程图显示了在主要gJVM中改变对象组的迁移状态的过程。过程开始时,主要gJVM从非主要gJVM接收改变对象组的迁移状态的请求(步骤902)。主要gJVM用请求的迁移状态更新对象组注册表(步骤904),并用确认消息响应发出请求的非主要gJVM(步骤906)。然后,主要gJVM将包含更新的对象组注册表的消息广播到所有非主要gJVM节点(步骤908),从而结束该过程。
非主要启用网格的虚拟机节点的初始化
现在参考图10,该图中的流程图显示了根据本发明的实施例的初始化非主要gJVM节点的过程。过程从例如通过使用上文所描述的实例化命令初始化非主群集化虚拟机节点(步骤1002)开始。例如从实例化命令获取gJVM群集名称(步骤1004),例如使用gJVM群集名称执行查询操作(步骤1006),以从全局可用的数据库获取网络参数,以启动与标识的gJVM群集的主要gJVM节点的通信(步骤1008)。
非主要gJVM节点从主要gJVM节点请求并接收唯一gJVM标识符(步骤1010),如图5A或图5B所示。非主要gJVM节点获取任何群集范围内的信息,如由gJVM群集使用的环境参数或上下文参数(步骤1012),如图7所示。非主要gJVM节点还从主要gJVM节点请求并接收gJVM注册表(步骤1014)和对象组注册表(步骤1016),如图7所示。虽然显示的步骤1010-1016是以同步方式实现的,但是,也可以以各种各样的方式异步地执行这些步骤。由于非主要gJVM节点已经完成其初始化,非主要gJVM节点向主要gJVM节点发送改变其运行状态的请求:从表示它处于正在启动状态的值改变为表示它处于正在运行状态的值(步骤1018)。假设请求被成功地执行,非主要gJVM节点从主要gJVM节点接收确认(步骤1020),从而结束该过程。
图10显示了非主要gJVM节点上的初始化过程,而图5A-9显示了主要gJVM节点根据非主要gJVM节点的请求执行任务,以集中地作为整体代表gJVM群集管理信息的过程。其余的图描述了非主要gJVM节点管理gJVM群集内的对象组和线程的过程;换句话说,其余的图从非主要gJVM节点的角度显示了过程。然而,应该注意,对于对象组和线程的管理,主要gJVM节点执行类似的过程;在其中的图显示了向主要gJVM节点传输信息或从中接收信息的过程中的步骤的实例中,应该理解,主要gJVM节点将执行类似的步骤,只是主要gJVM节点可以将信息直接放到群集特定的表或数据库中,如gJVM注册表或对象组注册表,而不必与其本身(即,主要gJVM节点)协调步骤。
启用网格的虚拟机节点中的线程构建
现在参考图11,该图中的流程图显示了在群集化虚拟机上构建线程的过程。过程开始时,本地gJVM在群集化虚拟机的控制下通过正在执行的应用程序执行的相应的API调用接收构建线程的请求(步骤1102),虽然本地gJVM也可以在控制虚拟机上的应用程序的执行的同时主动地执行类似的过程。本地gJVM节点(在某些情况下可以被假定为非主要gJVM)向主要gJVM发送请求,以索取唯一对象组标识符,然后接收它(步骤1104)。本地gJVM构建线程(步骤1106),这可能需要创建各种线程管理对象并更新各种线程管理表。产生唯一线程标识符,并指派给新建立的线程(步骤1108)。然后,本地gJVM分配线程本地堆阵(步骤1110),在线程本地堆阵内创建或划分对象组(步骤1112),依据实现方式,该过程优选情况下存储线程相关的对象。通过更新相应的管理表,将新创建的对象组标识符与新构建的线程关联(步骤1114)。
然后,本地gJVM向主要gJVM发送改变对象组的迁移状态的请求:从表示正在启动状态的值(这是在请求新对象组标识符时由主要gJVM设置的)改变为表示稳定状态的值(步骤1116)。然后,本地gJVM从主要gJVM接收迁移状态改变确认(步骤1118)。然后,本地gJVM将线程构建的响应(可能包含线程标识符及其他与线程相关的信息)返回到发出请求的应用程序(步骤1120),从而结束该过程。
启用网格的虚拟机节点中的线程破坏
现在参考图12,该图中的流程图显示了在群集化虚拟机上破坏线程的过程。过程开始时,本地gJVM在群集化虚拟机的控制下通过正在执行的应用程序执行的相应的API调用接收破坏线程的请求(步骤1202),虽然当本地gJVM决定,例如由于各种终止条件而主动地破坏线程时也可以执行类似的过程。
假设与正在终止的线程关联的对象组具有对其本身内的对象的外部/远程/外来引用,那么,对象组需要保留,即使最初是创建对象组的原因的线程现在正在被终止或破坏。因此,本地gJVM以相应的方式将正在终止的线程的线程标识符与每一个关联的对象组分离(步骤1204),这可以包括更新各种线程管理表和对象组管理表(步骤1206)。在必要时,依据本地gJVM中的存储器分配方法,对象组可能需要从线程本地堆阵移到本地gJVM内的普通堆阵(步骤1208)。常常可能会有这样的情况:终止线程将会导致其几乎所有的对象被回收;在另一个实施例中,由于远程可引用而保留的对象可以移到主全局对象组中。
然后,例如通过破坏用于控制线程的线程相关的管理对象来破坏线程(步骤1210)。然后,将线程破坏操作的响应返回到发出请求的应用程序(步骤1212),从而结束该过程。
启用网格的虚拟机节点中的对象分配
现在参考图13,该图中的流程图显示了在群集化虚拟机上构建对象的过程。过程开始时,本地gJVM节点在群集化虚拟机的控制下通过正在执行的应用程序执行的相应的API调用接收构建对象的请求(步骤1302),虽然当本地gJVM判断主动地创建线程时也可以执行类似的过程。确定发出请求的线程的线程标识符(步骤1304),检索与发出请求的线程关联的对象组的对象组信息(步骤1306)。然后,本地gJVM分配发出请求的线程的某一个对象组中的对象(步骤1308),并产生新分配的对象的对象标识符并指派给对象(步骤1310)。创建新创建的对象的对象引用/句柄(步骤1312),这可能包含对象组标识符和对象标识符,具体取决于实现对象引用的方式。然后,将对象引用/句柄返回到发出请求的线程(步骤1314),从而结束该过程。
启用网格的虚拟机节点中的对象引用
现在参考图14,该图中的流程图显示了在群集化虚拟机上处理对对象的访问的过程。过程从本地gJVM通过对象句柄截取访问或引用对象的尝试开始(步骤1402)。本地gJVM从对象句柄检索对象组标识符(步骤1404),并例如,通过查询对象组管理表来判断标识对象组是本地管理的还是远程管理的(步骤1406)。如果对象是本地存储的,那么本地gJVM获取指向相应的线程本地堆阵的指针(步骤1408),并使用对象标识符访问线程本地堆阵中的对象(步骤1410)。
如果对象是远程存储的,那么,本地gJVM获取对象所在的对象组的远程gJVM节点的标识符(步骤1412)。从例如gJVM注册表的本地副本检索远程gJVM的IP地址和端口ID。然后,本地gJVM将对象访问请求发送到远程gJVM(步骤1416),从而结束该过程。
对象组从启用网格的虚拟机节点的迁移
现在参考图15,该图中的流程图显示了在本地群集化虚拟机上将对象组迁移到远程群集化虚拟机的过程。过程开始时,本地gJVM节点准备将对象组从本地gJVM节点迁移到远程gJVM节点(步骤1502),这可能需要将请求消息发送到远程gJVM以迁移对象组。此准备迁移对象组的操作可能由于各种条件的结果而发生,关于这一点,下面将进一步地详细描述。例如,如参考图19所描述的,在停止gJVM节点之前,gJVM节点内的任何对象组都将迁移到具有gJVM群集的其他gJVM节点。
本地gJVM向主要gJVM发送将迁移对象组的迁移状态从稳定改变为正在迁移的请求(步骤1504),在此之后,本地gJVM从主要gJVM接收迁移状态改变确认(步骤1506)。然后,本地gJVM平化或序列化迁移对象组中的每一个对象(步骤1508),并以某种方式将平化或序列化的对象从本地gJVM推向远程gJVM,以便对象仍与对象组关联(步骤1510),在此之后,本地gJVM从远程gJVM接收确认(步骤1512)。然后,本地gJVM破坏刚刚移动的对象组的本地gJVM内的对象组和/或堆阵(步骤1514),同时还清除或更新本地对象组表中的对象组项以及本地gJVM节点内的需要清除或更新的任何其他表或数据库项(步骤1516),因为对象组现在位于不同的gJVM节点内,从而结束该过程。
对象组向启用网格的虚拟机的迁移
现在参考图16,该图中的流程图显示了在本地群集化虚拟机上从远程群集化虚拟机接受对象组的迁移的过程。图16所示的过程应该被视为图15所示的过程的补充;图15中的本地gJVM和远程gJVM是图16中的远程gJVM和本地gJVM,分别颠倒了它们的角色。
过程开始时,本地gJVM接收将对象组从远程gJVM迁移到本地gJVM的请求(步骤1602),在此之后,本地gJVM分配线程本地堆阵或其他相应的类型的堆阵(步骤1604),并从远程gJVM接收对象组中的平化或序列化的对象(步骤1606)。本地gJVM将对象读取或膨胀到本地gJVM内的所选择的位置(步骤1608),并在必要时(例如,如果线程与对象组一起迁移)将接收到的对象组与线程关联(步骤1610)。然后,本地gJVM执行用于管理新接收到的对象组的相应的管理任务,如在本地对象组表中创建对象组项(步骤1612)。然后,本地gJVM向主要gJVM发送将迁移对象组的迁移状态从正在迁移改变为稳定的请求(步骤1614),在此之后,本地gJVM从主要gJVM接收迁移状态改变确认(步骤1616)。然后,本地gJVM向远程gJVM发送确认消息,表示对象组迁移完成(步骤1618),从而结束该过程。
线程从启用网格的虚拟机中迁移
现在参考图17,该图中的流程图显示了在本地群集化虚拟机上将线程迁移到远程群集化虚拟机的过程。过程开始时,本地gJVM节点准备将线程从本地gJVM节点迁移到远程gJVM节点(步骤1702),这可能需要将请求消息发送到远程gJVM以迁移线程。此准备迁移线程的操作可能由于各种条件的结果而发生,关于这一点,下面将进一步地详细描述。本地gJVM将线程管理信息从本地gJVM推向远程gJVM(步骤1704);线程管理信息可以包括本地gJVM节点内的本地线程管理表中的信息,在此之后,本地gJVM从远程gJVM接收确认(步骤1706)。然后,本地gJVM根据需要更新本地线程管理表,以反映线程已经移到不同gJVM节点的事实(步骤1708),从而结束该过程。
线程向启用网格的虚拟机中迁移
现在参考图18,该图中的流程图显示了在本地群集化虚拟机上从远程群集化虚拟机接受线程的迁移的过程。图18所示的过程应该被视为图17所示的过程的补充;图17中的本地gJVM和远程gJVM是图18中的远程gJVM和本地gJVM,分别颠倒了它们的角色。
过程开始时,本地gJVM接收将线程从远程gJVM迁移到本地gJVM的请求(步骤1802),在此之后,本地gJVM从远程gJVM接收线程的线程管理信息(步骤1804)。然后,本地gJVM执行用于管理新接收到的线程的相应的管理任务,如更新本地线程管理表(步骤1806)。然后,本地gJVM向远程gJVM发送确认消息,表示线程迁移完成(步骤1808),从而结束该过程。
关闭启用网格的虚拟机
现在参考图19,该图中的流程图显示了在本地群集化虚拟机上对群集化虚拟机执行关闭操作的过程。过程从判断本地gJVM需要执行关闭操作开始(步骤1902)。关闭操作可以是由于种种原因在本地gJVM节点内判断自我终止的结果;或者,关闭gJVM节点的判断可以由主要gJVM节点、由管理实用程序、由管理命令或由某些其他机制来控制。本地gJVM节点向主要gJVM节点发送改变本地gJVM节点的运行状态的请求:从表示运行状态的值改变为表示停止状态的值(步骤1904),在此之后,本地gJVM节点从主要gJVM接收确认消息(步骤1906)。然后,本地gJVM开始将其所有线程迁移到其他gJVM节点(步骤1908),同时,还将其所有对象组迁移到其他gJVM节点(步骤1910)。如下面所详细讨论的,gJVM节点可以根据有关gJVM群集内的其他gJVM节点性能特征的信息执行迁移操作。然后,本地gJVM节点向主要gJVM节点发送改变本地gJVM节点的运行状态的请求:从表示正在停止状态的值改变为表示已经停止状态的值(步骤1912),在此之后,本地gJVM节点从主要gJVM接收确认消息(步骤1914),从而结束该过程。
如上所述,主要节点可以将其职责委派或转交给非主要节点,以便可以在系统启动之后将主要节点关闭后进行维护或达到其他目的。如果主要节点开始关闭过程,则主要节点可能通过请求/响应机制选择非主要节点以充当新委派主要节点。如此,主要节点执行更多的在主要节点处于停止状态期间没有由非主要节点执行的操作。在委派操作之后,新委派的主要节点可以将其作为虚拟机群集的主要节点的新身份广播到虚拟机群集内的其他非主要节点,这将相应地更新它们的信息数据结构。
启用网格的虚拟机执行的性能信息收集
现在参考图20,该图中的流程图显示了在本地群集化虚拟机上从远程群集化虚拟机收集负载或性能信息的过程。图20所示的过程以迭代的方式对所有已知的远程gJVM节点执行操作。因此,过程开始时,本地gJVM节点从gJVM注册表的本地副本获取有关迭代循环内还没有处理的下一个远程gJVM节点的信息(步骤2002)。然后,本地gJVM向标识的远程gJVM节点发送要求其负载信息的请求消息(步骤2004),在此之后,本地gJVM接收包含远程gJVM节点的负载信息的响应消息(步骤2006);信息可以使用下面参考图22描述的过程存储在本地表或数据库内,以便以后进行分析。然后,本地gJVM节点检查在本地gJVM注册表内是否存在未处理的gJVM节点(步骤2008)。如果存在,那么过程返回步骤2002,以处理另一个远程gJVM节点;如果没有未处理的远程gJVM节点,那么过程结束。
启用网格的虚拟机执行的性能信息收集
现在参考图21,该图中的流程图显示了在本地群集化虚拟机上响应来自群集化虚拟机的对本地群集化虚拟机的当前负载或性能信息的请求的过程。图21所示的过程应该被视为图20所示的过程的补充;图20中的本地gJVM和远程gJVM是图21中的远程gJVM和本地gJVM,分别颠倒了它们的角色。过程开始时,本地gJVM接收本地gJVM和/或本地设备上的负载信息的请求消息(步骤2102)。例如,负载信息可以包括表示CPU使用率、存储器使用率的值,本地gJVM节点在其上面运行的数据处理设备的其他硬件、软件或计算资源使用率信息,gJVM内或由gJVM控制的资源的计算资源使用率信息,及其他信息。然后,本地gJVM发送包含请求的负载信息的响应消息(步骤2104),从而结束该过程。
启用网格的虚拟机节点之间的负载平衡操作
现在参考图22,该图中的流程图显示了本地群集化虚拟机上的根据负载或性能信息确定将线程和/或对象组从本地群集化虚拟机迁移到远程群集化虚拟机的过程。过程开始时,本地gJVM节点判断是否开始负载平衡操作(步骤2202);如果适当,本地gJVM节点获取或检查其自己的负载信息(步骤2204)。本地gJVM还使用上文参考图20和图21所描述的过程从gJVM群集内的其他gJVM节点获取负载信息(步骤2206),虽然只有在已经作出启动负载平衡操作的判断之后才可以从其他gJVM节点收集负载信息。
负载平衡操作可以这样执行,以便确保由执行群集内的各种应用程序所引起的工作负荷在整个gJVM群集中进行分布。负载平衡操作可以是由于在本地gJVM节点内根据由gJVM群集内的所有gJVM节点所使用的算法判断启动负载平衡操作而进行的;或者,执行负载平衡操作的判断可以由主要gJVM节点、由管理实用程序、由管理命令或由某些其他机制来控制。例如,本地gJVM节点可以在它已经构建线程并准备分派线程之后执行负载平衡操作;或者,为节省计算资源,可以定期执行负载平衡操作,例如,在每隔十个新建立的线程之后。
然后,本地gJVM节点开始评估其负载信息以检查本地gJVM节点上的某些资源是否已经超过可配置的阈值,例如,如群集特定的上下文参数所指出的。在图22所示的示例中,执行两次评估;所执行的评估的数量可以取决于负载平衡算法、可用的负载信息或某些其他因素。
就本地gJVM节点的CPU负载值是否超过CPU负载阈值作出判断(步骤2208);如果没有,那么过程转到步骤2214。如果本地gJVM节点的CPU负载值超过可配置的CPU负载阈值,那么,本地gJVM节点就通过分析以前从远程gJVM节点收集的相对于可配置的负载阈值的负载信息,选择具有可用的CPU资源的远程gJVM节点(步骤2210)。然后,本地gJVM节点使用上文参考图17和图18所描述的过程开始迁移操作,以将线程从本地gJVM节点移动到一个或多个所选择的远程gJVM节点(步骤2212)。
然后,就本地gJVM节点的存储器负载值是否超过存储器负载阈值作出判断(步骤2214);如果没有,那么,过程就结束。如果本地gJVM节点的存储器负载值超过可配置的存储器负载阈值,那么,本地gJVM节点就通过分析以前从远程gJVM节点收集的相对于可配置的负载阈值的负载信息,选择具有可用存储器资源的远程gJVM节点(步骤2216)。然后,本地gJVM节点使用上文参考图15和图16所描述的过程开始迁移操作,以将对象组从本地gJVM节点移动到一个或多个所选择的远程gJVM节点(步骤2218),从而结束该过程。
逻辑虚拟机上的多线程应用程序
现在参考图23,该图中的方框图描述了通过多个设备横跨单一逻辑虚拟机中的多个启用网格的虚拟机的单个应用程序映像的执行。机器2302-2306支持逻辑虚拟机2308和逻辑虚拟机2310。
逻辑虚拟机2308只包括由主要gJVM节点2312所代表的单个节点,该节点可以通过指定“GRID_B”为逻辑虚拟机2308的群集名称的命令行接口来进行调用。逻辑虚拟机2308在单个设备(即,机器2306)上得到支持。
相反,逻辑虚拟机2310包括由多个设备(即,机器2302-2306)支持的多个gJVM节点2314-2320;机器2302正巧同时支持两个gJVM节点2314和2320。虚拟机2314-2320作为单个逻辑虚拟机而进行交互操作。在此示例中,虚拟机2314-2320是使用Java技术来实现的;因此,虚拟机2314-2320可以被描述为Java
Figure S04840746X20060728D000272
虚拟机。由于虚拟机2314-2320作为逻辑虚拟机嵌入了以类似于网格的方式进行交互操作的功能,虚拟机2314-2320可以被描述为启用网格的Java
Figure S04840746X20060728D000273
虚拟机(gJVM),其中每一个gJVM都是逻辑gJVM 2310内的节点。
每一个gJVM节点2314-2320都可以通过指定“GRID_A”为逻辑gJVM 2310的群集名称的命令行接口来进行调用。节点2316-2320是非主要节点;gJVM 2314在启动时被指定为主要节点,虽然它可以在稍后的时间点将其作为主要节点的状态委派给逻辑gJVM 2310内的另一个节点。在此示例中,节点2314-2320是同一个gJVM应用程序的特有的实例。通过使用上文所描述的方法,gJVM节点2316-2320注册到由主要gJVM节点2314进行管理的节点的群集/网格中;对对象的远程引用和gJVM节点之间的协调是通过gJVM节点能够建立的gJVM-gJVM(对等)通信链路提供的。
利用本发明,多个gJVM节点作为逻辑gJVM进行交互操作,以便在一个gJVM节点上启动的应用程序随后可以以横跨多个gJVM节点的方式执行。在图23中的示例中,包括主线程2322的应用程序已经在gJVM节点2318上启动,其其中一个辅助线程2324也在gJVM节点2318上执行。此外,同一个应用程序的辅助线程2326-2332也在逻辑gJVM 2310内的gJVM节点2314和2316上执行。
本发明允许节点2314-2320共享在逻辑gJVM 2310上执行的Java
Figure S04840746X20060728D000281
应用程序2334的工作负荷,而不需要Java
Figure S04840746X20060728D000282
应用程序2334偏离标准Java
Figure S04840746X20060728D000283
应用程序模型;换句话说,Java
Figure S04840746X20060728D000284
应用程序2334不需要任何专有的功能,而gJVM节点2314-2320不需要专有的应用程序代理来跨多个JVM代表Java
Figure S04840746X20060728D000285
应用程序2334来进行操作。利用本发明,gJVM节点2314嵌入了以类似于网格的方式进行交互操作的功能,以执行Java
Figure S04840746X20060728D000286
应用程序。
对象组2336-2346在整个逻辑gJVM 2310中进行分布。任何给定应用程序线程都可以引用多个对象组中存在的对象,不管相同应用程序内的应用程序线程或另一个线程是否建立或分配了那些对象组。因此,给定线程可以引用本地对象组中的对象或远程对象组中的对象,不管对象组是否与本地gJVM节点或远程gJVM节点上的给定线程或另一个线程关联。事实上,对象组可以不与任何现有的线程关联,或者对象可以包含在本地gJVM节点或远程gJVM节点上的所谓的全局对象组内。在图23所示的示例中,显示的线程2330引用了本地gJVM节点2314内的对象组2336和2346中的对象,同时也引用了远程gJVM节点2316内的对象组2338中的对象。
参考上文提供的对本发明的详细描述,本发明的优点是显而易见的。在虚拟机上执行的应用程序可以在多个虚拟机上以类似于网格的方式运行,从而可使计算资源作为类似于实用程序的服务提供,以便进行补偿。当数据处理系统和设备关闭时,那些系统和设备上的可群集化虚拟机可以停止;那些系统和设备上的线程和对象可以迁移到其他系统和设备,同时虚拟机群集允许任何应用程序继续运行,虽然在不同的系统和设备集上。
值得注意的是,尽管是在完全运转的数据处理系统的上下文中描述本发明的,那些本领域普通技术人员将认识到,本发明的进程能够以存储了指令的计算机可读的介质的形式和各种各样的形式进行分发,不管实际用于进行分发的承载信号的介质的特定类型是什么。计算机可读的介质的示例包括诸如EPROM、ROM、磁带、纸张、软盘、硬盘驱动器、RAM和CD-ROM之类的介质,和诸如数字和模拟通信链路之类的传输类型的介质。
方法一般来说是产生所希望的结果的步骤的首尾一致的序列。这些步骤要求对物理量进行物理操作。通常,尽管不一定,这些量呈现能够存储、转移、合成、比较以及以其他方式进行操作的电的或磁性信号的形式。有时,主要是由于通用的原因,将这些信号称为位、值、参数、项目、元素、对象、符号、字符、术语、数字等等是很方便的。然而,应该注意,所有这些术语和类似的术语都与相应的物理量关联,只是应用于这些量的方便的标记。
本发明的描述只作说明,而不是详尽的说明或只限于所说明的实施例。那些本领域普通技术人员将认识到,可以进行许多修改。所选择的实施例只是为了最好地说明本发明的原理以及其实际应用,并使精通本技术的其他人理解本发明,以便实现带有各种修改的各种实施例,只要可以适合于其他预期的用途。

Claims (18)

1.一种操作数据处理系统内的虚拟机的方法,该方法包括下列计算机实现的步骤:
将对象存储在由所述虚拟机进行管理的存储器中,所述虚拟机在数据处理系统内的设备上运行;
将对象与对象组内的多个对象关联;
为对象创建独立于对象的位置并且独立于对象与之关联的对象组的位置的对象引用;
将对象组与所述虚拟机关联,其中,所述虚拟机包括与虚拟机群集中的其他虚拟机进行交互操作的功能,其中,虚拟机群集中的每一个虚拟机充当虚拟机群集内的节点;
对虚拟机群集的每一个虚拟机内的多个对象组进行管理;以及
允许对象组从所述虚拟机移动到虚拟机群集中的不同的虚拟机,
其中,虚拟机群集中的每一个虚拟机共享关于多个对象组的位置的信息。
2.根据权利要求1所述的方法,进一步包括:
将对象组与所述虚拟机解除关联;
将对象组移动到虚拟机群集中的不同的虚拟机中;以及
响应将对象组移动到不同的虚拟机,将对象组与所述不同的虚拟机关联。
3.根据权利要求1所述的方法,进一步包括:
将对象组和不同的对象组与由所述虚拟机进行管理的线程关联。
4.根据权利要求3所述的方法,进一步包括:
将对象组和不同的对象组存储在与线程关联的线程本地堆阵中。
5.根据权利要求3所述的方法,进一步包括:
将对象组存储在与线程关联的第一线程本地堆阵中;以及
将不同的对象组存储在与线程关联的第二线程本地堆阵中。
6.根据权利要求3所述的方法,进一步包括:
将对象组与线程解除关联;
终止线程;以及
响应终止线程,在对象组和由所述虚拟机进行管理的线程之间没有关联的情况下,对对象组进行管理。
7.根据权利要求1所述的方法,进一步包括:
为对象创建独立于对象的位置的对象句柄。
8.根据权利要求7所述的方法,进一步包括:
为对象生成对象句柄;
将对象与之关联的对象组的组标识符存储在对象句柄中,其中,组标识符在虚拟机群集内是唯一的;以及
将对象的对象标识符存储在对象句柄中,其中,对象标识符在对象与之关联的对象组内是唯一的。
9.根据权利要求1所述的方法,进一步包括:
当对象位于所述虚拟机中时,为对象创建第一对象引用;
将对象与之关联的对象组移动到不同的虚拟机中;以及
当对象位于不同的虚拟机中时,为对象创建第二对象引用,其中,第一对象引用和第二对象引用相同。
10.数据处理系统中的用于操作虚拟机的设备,该设备包括:
用于将对象存储在由所述虚拟机进行管理的存储器中的装置,所述虚拟机在数据处理系统内的设备上运行;
用于将对象与对象组内的多个对象关联的装置;
用于为对象创建独立于对象的位置并且独立于对象与之关联的对象组的位置的对象引用的装置;
用于将对象组与所述虚拟机关联的装置,其中,虚拟机包括与虚拟机群集中的其他虚拟机进行交互操作的功能,其中,虚拟机群集中的每一个虚拟机充当虚拟机群集内的节点;
用于对虚拟机群集的每一个虚拟机内的多个对象组进行管理的装置;以及
用于允许对象组从所述虚拟机移动到虚拟机群集中的不同的虚拟机的装置,
其中,虚拟机群集中的每一个虚拟机共享关于多个对象组的位置的信息。
11.根据权利要求10所述的设备,进一步包括:
用于将对象组与所述虚拟机解除关联的装置;
用于将对象组移动到虚拟机群集中的不同的虚拟机中的装置;以及
用于响应将对象组移动到不同的虚拟机,将对象组与所述不同的虚拟机关联的装置。
12.根据权利要求10所述的设备,进一步包括:
用于将对象组和不同的对象组与由所述虚拟机进行管理的线程关联的装置。
13.根据权利要求12所述的设备,进一步包括:
用于将对象组和不同的对象组存储在与线程关联的线程本地堆阵中的装置。
14.根据权利要求12所述的设备,进一步包括:
用于将对象组存储在与线程关联的第一线程本地堆阵中的装置;以及
用于将不同的对象组存储在与线程关联的第二线程本地堆阵中的装置。
15.根据权利要求12所述的设备,进一步包括:
用于将对象组与线程解除关联的装置;
用于终止线程的装置;以及
用于响应终止线程,在对象组和由所述虚拟机进行管理的线程之间没有关联的情况下,对对象组进行管理的装置。
16.根据权利要求10所述的设备,进一步包括:
用于为对象创建独立于对象的位置的对象句柄的装置。
17.根据权利要求16所述的设备,进一步包括:
用于为对象生成对象句柄的装置;
用于将对象与之关联的对象组的组标识符存储在对象句柄中的装置,其中,组标识符在虚拟机群集内是唯一的;以及
用于将对象的对象标识符存储在对象句柄中的装置,其中,对象标识符在对象与之关联的对象组内是唯一的。
18.根据权利要求10所述的设备,进一步包括:
用于当对象位于所述虚拟机中时,为对象创建第一对象引用的装置;
用于将对象与之关联的对象组移动到不同的虚拟机中的装置;以及
用于当对象位于不同的虚拟机中时,为对象创建第二对象引用的装置,其中,第一对象引用和第二对象引用相同。
CN200480040746XA 2004-01-21 2004-10-26 对于具有可移动对象的启用网格的虚拟机的方法和系统 Active CN1906580B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/761,998 2004-01-21
US10/761,998 US7526515B2 (en) 2004-01-21 2004-01-21 Method and system for a grid-enabled virtual machine with movable objects
PCT/EP2004/052667 WO2005071539A1 (en) 2004-01-21 2004-10-26 Method and system for a grid-enabled virtual machine with movable objects

Publications (2)

Publication Number Publication Date
CN1906580A CN1906580A (zh) 2007-01-31
CN1906580B true CN1906580B (zh) 2010-08-25

Family

ID=34750299

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200480040746XA Active CN1906580B (zh) 2004-01-21 2004-10-26 对于具有可移动对象的启用网格的虚拟机的方法和系统

Country Status (9)

Country Link
US (2) US7526515B2 (zh)
EP (2) EP1706819A1 (zh)
JP (1) JP5089990B2 (zh)
KR (1) KR100861738B1 (zh)
CN (1) CN1906580B (zh)
BR (1) BRPI0418438A (zh)
CA (2) CA2548594A1 (zh)
IL (2) IL176760A0 (zh)
WO (1) WO2005071539A1 (zh)

Families Citing this family (66)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005089239A2 (en) 2004-03-13 2005-09-29 Cluster Resources, Inc. System and method of providing a self-optimizing reservation in space of compute resources
US8458691B2 (en) * 2004-04-15 2013-06-04 International Business Machines Corporation System and method for dynamically building application environments in a computational grid
US20050234937A1 (en) * 2004-04-15 2005-10-20 International Business Machines Corporation System and method for rating performance of computing grid service providers
US7257811B2 (en) * 2004-05-11 2007-08-14 International Business Machines Corporation System, method and program to migrate a virtual machine
US8069443B2 (en) * 2004-06-29 2011-11-29 Novell, Inc. Techniques for providing services and establishing processing environments
US7765552B2 (en) * 2004-09-17 2010-07-27 Hewlett-Packard Development Company, L.P. System and method for allocating computing resources for a grid virtual system
WO2006053093A2 (en) 2004-11-08 2006-05-18 Cluster Resources, Inc. System and method of providing system jobs within a compute environment
US7930338B2 (en) * 2004-12-20 2011-04-19 Sap Ag Observer for grid-enabled software applications
US9231886B2 (en) 2005-03-16 2016-01-05 Adaptive Computing Enterprises, Inc. Simple integration of an on-demand compute environment
CA2603577A1 (en) 2005-04-07 2006-10-12 Cluster Resources, Inc. On-demand access to compute resources
US7607129B2 (en) * 2005-04-07 2009-10-20 International Business Machines Corporation Method and apparatus for using virtual machine technology for managing parallel communicating applications
US7698706B2 (en) * 2005-05-20 2010-04-13 International Business Machines Corporation Methods and apparatus for implementing an integrated user interface for managing multiple virtual machines operative in a computing system
US7802257B1 (en) * 2005-06-20 2010-09-21 Oracle America, Inc. Mechanism for bridging a thread-oriented computing paradigm and a job-oriented computing paradigm
US8504521B2 (en) * 2005-07-28 2013-08-06 Gopivotal, Inc. Distributed data management system
FI20055429L (fi) * 2005-08-08 2007-02-09 Rainer Wehkamp Hilalaskentaverkon hallinta
WO2007037709A1 (en) * 2005-09-30 2007-04-05 Manabars Ip Limited An abstract platform to facilitate the interoperability of information
JP2007265193A (ja) * 2006-03-29 2007-10-11 Fujitsu Ltd ジョブ割当プログラム、ジョブ割当装置およびジョブ割当方法
US8286174B1 (en) 2006-04-17 2012-10-09 Vmware, Inc. Executing a multicomponent software application on a virtualized computer platform
US8627402B2 (en) 2006-09-19 2014-01-07 The Invention Science Fund I, Llc Evaluation systems and methods for coordinating software agents
US20080071793A1 (en) * 2006-09-19 2008-03-20 Searete Llc, A Limited Liability Corporation Of The State Of Delaware Using network access port linkages for data structure update decisions
US20080098309A1 (en) * 2006-10-24 2008-04-24 Microsoft Corporation Managing virtual machines and hosts by property
US8694972B2 (en) * 2006-11-10 2014-04-08 The Mathworks, Inc. System and method for interoperating with foreign objects from a single language computing environment
US8001336B2 (en) * 2007-03-02 2011-08-16 International Business Machines Corporation Deterministic memory management in a computing environment
US8205207B2 (en) * 2007-03-15 2012-06-19 International Business Machines Corporation Method of automated resource management in a partition migration capable environment
JP5088366B2 (ja) * 2007-03-27 2012-12-05 富士通株式会社 仮想計算機制御プログラム、仮想計算機制御システムおよび仮想計算機移動方法
US20080250407A1 (en) * 2007-04-05 2008-10-09 Microsoft Corporation Network group name for virtual machines
JP2009003625A (ja) * 2007-06-20 2009-01-08 Yokogawa Electric Corp フィールド機器
US8045828B2 (en) * 2007-07-09 2011-10-25 Kabushiki Kaisha Toshiba Apparatus for processing images, and method and computer program product for detecting image updates
AU2008281324B2 (en) * 2007-07-30 2010-06-10 Clear Falls Pty Ltd A method and system for reactively assigning computational threads of control between processors
JP4982347B2 (ja) * 2007-12-11 2012-07-25 株式会社東芝 画像情報の更新を検出するプログラム、方法および画像処理装置
KR101007279B1 (ko) * 2007-12-17 2011-01-13 한국전자통신연구원 가상 머신 디스크 풀을 이용한 가상 머신 프로비저닝 방법 및 시스템
JP5010492B2 (ja) * 2008-01-31 2012-08-29 株式会社東芝 通信装置、方法及びプログラム
US8069362B2 (en) * 2008-02-26 2011-11-29 Sap Ag Automated electrical power savings in virtualization environments
US20100042723A1 (en) * 2008-08-12 2010-02-18 Srikanth Sundarrajan Method and system for managing load in a network
US9842004B2 (en) * 2008-08-22 2017-12-12 Red Hat, Inc. Adjusting resource usage for cloud-based networks
JP5352367B2 (ja) * 2009-07-27 2013-11-27 株式会社エヌ・ティ・ティ・データ 仮想マシン起動端末および仮想マシン起動プログラム
JP5511262B2 (ja) * 2009-08-20 2014-06-04 三菱電機株式会社 情報処理システム及びプログラム
US20110055838A1 (en) * 2009-08-28 2011-03-03 Moyes William A Optimized thread scheduling via hardware performance monitoring
CN101650666B (zh) * 2009-08-31 2016-01-13 曙光信息产业(北京)有限公司 一种计算机管理系统及方法
US11720290B2 (en) 2009-10-30 2023-08-08 Iii Holdings 2, Llc Memcached server functionality in a cluster of data processing nodes
US20110214115A1 (en) * 2010-02-26 2011-09-01 Nokia Corporation Method and appartus for providing a high level mobile virtual machine
JP5448083B2 (ja) * 2010-03-11 2014-03-19 株式会社日立製作所 計算機モニタリングシステム及びプログラム
US8412810B1 (en) * 2010-07-02 2013-04-02 Adobe Systems Incorporated Provisioning and managing a cluster deployed on a cloud
US8726274B2 (en) * 2010-09-10 2014-05-13 International Business Machines Corporation Registration and initialization of cluster-aware virtual input/output server nodes
US8495630B2 (en) * 2010-11-03 2013-07-23 International Business Machines Corporation Transferring objects between virtual machines
KR101497516B1 (ko) * 2010-12-29 2015-03-02 엠파이어 테크놀로지 디벨롭먼트 엘엘씨 디렉토리 기반의 멀티코어 아키텍처 상에서 캐시 상태 전송의 가속화
CN102103518B (zh) 2011-02-23 2013-11-13 运软网络科技(上海)有限公司 一种在虚拟化环境中管理资源的系统及其实现方法
US8442955B2 (en) 2011-03-30 2013-05-14 International Business Machines Corporation Virtual machine image co-migration
US10108630B2 (en) * 2011-04-07 2018-10-23 Microsoft Technology Licensing, Llc Cluster unique identifier
US8832690B1 (en) * 2011-06-21 2014-09-09 Google Inc. Multi-threaded virtual machine processing on a web page
US8756601B2 (en) * 2011-09-23 2014-06-17 Qualcomm Incorporated Memory coherency acceleration via virtual machine migration
CN102768629B (zh) * 2012-04-16 2017-02-08 中兴通讯股份有限公司 基于调度层实现虚拟机间通讯的方法和装置
US9052963B2 (en) * 2012-05-21 2015-06-09 International Business Machines Corporation Cloud computing data center machine monitor and control
US9304811B2 (en) * 2012-06-29 2016-04-05 Intel Corporation Methods and systems to identify and migrate threads among system nodes based on system performance metrics
CN103828326B (zh) * 2012-09-07 2016-08-17 运软网络科技(上海)有限公司 基于交付点的实时资源供应流程控制系统和方法
US10311014B2 (en) * 2012-12-28 2019-06-04 Iii Holdings 2, Llc System, method and computer readable medium for offloaded computation of distributed application protocols within a cluster of data processing nodes
US8904389B2 (en) * 2013-04-30 2014-12-02 Splunk Inc. Determining performance states of components in a virtual machine environment based on performance states of related subcomponents
US9716666B2 (en) 2013-11-27 2017-07-25 International Business Machines Corporation Process cage providing attraction to distributed storage
US9223574B2 (en) * 2014-03-27 2015-12-29 International Business Machines Corporation Start virtual execution instruction for dispatching multiple threads in a computer
US9658897B2 (en) 2014-06-23 2017-05-23 International Business Machines Corporation Flexible deployment and migration of virtual machines
US9473353B2 (en) * 2014-06-23 2016-10-18 International Business Machines Corporation Cluster reconfiguration management
US10623481B2 (en) 2015-04-27 2020-04-14 Microsoft Technology Licensing, Llc Balancing resources in distributed computing environments
WO2017011223A1 (en) * 2015-07-10 2017-01-19 Rambus, Inc. Thread associated memory allocation and memory architecture aware allocation
US10789223B2 (en) * 2016-03-24 2020-09-29 Microsoft Technology Licensing, Llc Hybrid garbage collection in a distributed storage system
US10969929B2 (en) 2018-10-19 2021-04-06 Oracle Financial Services Software Limited Dependency graph-controlled object and compute pipeline migration
US20220272041A1 (en) * 2019-07-25 2022-08-25 Snapt, Inc Controlling a destination of network traffic

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002010549A2 (en) * 2000-08-01 2002-02-07 Weatherford/Lamb, Inc. Drilling and lining method using a spoolable tubing
EP1359505A1 (en) * 2000-12-11 2003-11-05 Matsushita Electric Industrial Co., Ltd. A memory management apparatus and method

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11238011A (ja) * 1998-02-23 1999-08-31 Nippon Telegr & Teleph Corp <Ntt> オブジェクト移動方法及びシステム及び分散オブジェクト管理装置及び分散オブジェクト管理プログラムを格納した記憶媒体
WO1999044129A1 (en) * 1998-02-26 1999-09-02 Sun Microsystems, Inc. Method, apparatus, and product for leasing of group membership in a distributed system
JP2001067325A (ja) * 1998-09-30 2001-03-16 Hitachi Software Eng Co Ltd 分散オブジェクト管理方法およびシステム
US6430570B1 (en) * 1999-03-01 2002-08-06 Hewlett-Packard Company Java application manager for embedded device
JP2000259581A (ja) * 1999-03-09 2000-09-22 Toshiba Corp 計算機システムの制御プログラム及びオブジェクト生成プログラムを記憶したコンピュータ読み取り可能な記憶媒体並びに計算機システム
US6842175B1 (en) * 1999-04-22 2005-01-11 Fraunhofer Usa, Inc. Tools for interacting with virtual environments
AU1250401A (en) * 1999-09-10 2001-04-10 Amweld Building Products Llc Door construction and method
JP2002163119A (ja) * 2000-11-29 2002-06-07 Elmic Systems Inc 情報処理システム、オブジェクトの管理方法、オペレーティングシステム、記録媒体
US6959430B2 (en) * 2001-05-09 2005-10-25 Sun Microsystems, Inc. Specialized heaps for creation of objects in object-oriented environments
US7036120B2 (en) * 2001-07-31 2006-04-25 Sun Microsystems, Inc. Two tier clusters for representation of objects in Java programming environments
US7203944B1 (en) * 2003-07-09 2007-04-10 Veritas Operating Corporation Migrating virtual machines among computer systems to balance load caused by virtual machines

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002010549A2 (en) * 2000-08-01 2002-02-07 Weatherford/Lamb, Inc. Drilling and lining method using a spoolable tubing
EP1359505A1 (en) * 2000-12-11 2003-11-05 Matsushita Electric Industrial Co., Ltd. A memory management apparatus and method

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
ACHARYA A, RANGANATHAN M,SALTZ J.Sumatra:a language for resource-aware mobile programs.MOBILE OBJECT SYSTEMS. TOWARDS THEPROGRAMMABLE INTERNET. SECONDINTERNALTIONAL WORKSHOP, MOS`96. SELECTEDPRESENTATIONS AND INVITED PAPERSSPRINGER-VERLAG BERLIN,GERMANY,1997,111,115,116,121,122. *
RANGANATHAN M ET AL.NETWORK-AWARE MOBILE PROGRAMS.PROCEEDINGS OF THE USENIX 1997 ANNUALTECHNICAL CONFERENCE,ANAHEIM,CHLIFORNIA,1997,1-14. *

Also Published As

Publication number Publication date
EP2177989A2 (en) 2010-04-21
KR20070006695A (ko) 2007-01-11
JP5089990B2 (ja) 2012-12-05
IL176981A0 (en) 2006-12-10
CA2548594A1 (en) 2005-08-04
CA2735349A1 (en) 2005-08-04
KR100861738B1 (ko) 2008-10-06
WO2005071539A1 (en) 2005-08-04
BRPI0418438A (pt) 2007-06-19
JP2007519110A (ja) 2007-07-12
US20050160413A1 (en) 2005-07-21
IL176760A0 (en) 2006-10-31
EP1706819A1 (en) 2006-10-04
US7827217B2 (en) 2010-11-02
US20090193414A1 (en) 2009-07-30
US7526515B2 (en) 2009-04-28
CN1906580A (zh) 2007-01-31

Similar Documents

Publication Publication Date Title
CN1906580B (zh) 对于具有可移动对象的启用网格的虚拟机的方法和系统
CN100418057C (zh) 用于应用程序分布式管理的启用网格的虚拟机的方法和系统
CN100498699C (zh) 在运行时系统中共享对象
US9165047B2 (en) Data synchronization system and method
CN1989488B (zh) 运行时系统的鲁棒共享
US6205464B1 (en) System for building optimal commit trees in a distributed transaction processing system
CN100466651C (zh) 用于应用实例级工作负荷分配亲合性的方法和系统
CN100388265C (zh) 管理数据处理系统中的应用文件的方法和装置
US7237239B1 (en) Availability and consistent service semantics in a load balanced collection of services running different instances of an application
EP1408407A2 (en) Method and apparatus for task allocation in a distributed computing environment
CN103473696A (zh) 一种收集、分析和分发网络商业信息的方法和系统
WO2001013228A9 (en) Graceful distribution in application server load balancing
Wang et al. A component‐based approach to online software evolution
Huang et al. HCloud: A trusted JointCloud serverless platform for IoT systems with blockchain
Lux Adaptable object migration: concept and implementation
US20210067599A1 (en) Cloud resource marketplace
Richard et al. The I-Cluster Cloud: distributed management of idle resources for intense computing
CN100472455C (zh) 动态配置服务的网络及方法
CN101075307A (zh) 报表检索与呈现的方法及系统
Chockler et al. Aquarius: A data-centric approach to corba fault-tolerance
Cuce et al. Adaptable consistency control mechanism for a mobility enabled file system
Khalil et al. A reconfigurable computing environment for urban traffic systems
Ko³odziej Comparison of Mobile Agent Frameworks for Distributed Geospatial Data Integration
Bacon Report on the eighth ACM SIGOPS European workshop
MXPA06007915A (en) Method and system for a grid-enabled virtual machine with movableobjects

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant