CN101292234B - 用于负载平衡的方法和系统 - Google Patents

用于负载平衡的方法和系统 Download PDF

Info

Publication number
CN101292234B
CN101292234B CN2006800391456A CN200680039145A CN101292234B CN 101292234 B CN101292234 B CN 101292234B CN 2006800391456 A CN2006800391456 A CN 2006800391456A CN 200680039145 A CN200680039145 A CN 200680039145A CN 101292234 B CN101292234 B CN 101292234B
Authority
CN
China
Prior art keywords
execution
application program
notice
code
border
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
CN2006800391456A
Other languages
English (en)
Other versions
CN101292234A (zh
Inventor
M·Z·史蒂芬斯
P·H·杜斯德
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft 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 Microsoft Corp filed Critical Microsoft Corp
Publication of CN101292234A publication Critical patent/CN101292234A/zh
Application granted granted Critical
Publication of CN101292234B publication Critical patent/CN101292234B/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
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1008Server selection for load balancing based on parameters of servers, e.g. available memory or workload
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1012Server selection for load balancing based on compliance of requirements or conditions with available server resources
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • G06F9/528Mutual exclusion algorithms by using speculative mechanisms

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

避免在执行托管执行环境中的应用程序期间超时的工作通过监视存储器分配来实现。

Description

用于负载平衡的方法和系统 
                            技术领域
本发明涉及负载平衡。 
                            背景技术
托管执行环境中的存储器管理可以包括在清扫或扫描存储器堆的期间临时挂起托管线程。然而,托管线程的延长挂起会使对应的应用程序的执行超时。 
                         发明内容
对在托管执行环境中的应用程序、程序、方法、函数、或其它的代码集合体的部分的执行至少受存储器管理实现的潜在大小的影响。 
附图说明
现根据以下的附图描述托管执行环境中的负载平衡。 
图1显示通过网络通信的设备,其中这些设备实现用于负载平衡的示例技术。 
图2显示用于实现负载平衡的示例技术的执行环境的示例。 
图3显示根据负载平衡的示例实现的数据节点之间的示例数据流。 
图4显示根据负载平衡的示例实现的示例处理流。 
                          具体实施方式
此处描述负载平衡。更具体而言,本描述涉及基于至少关于在相应的执行环境中的存储器管理实现的潜在大小的数据来控制应用程序、程序、方法、函数、或其它的代码集合体(assemblage)中的至少数部分的某些行为。 
在该详细描述的上下文中,并根据面向对象的编程,方法可被视为对象所执行的处理。因此,例如,当消息被发送到对象时,该方法被实现。 
此处描述的“进程”可表示与应用程序、程序、函数、或其它可编程或可执行代码的集合体有关的模块或代码程序集的实际运行。 
此处描述的“程序集”可表示代码的部署单元,其可以或不能版本化。 
此处描述的“资源”可包括与给定计算环境相关联的物理资源和逻辑资源两者。作为非限制性示例,该资源的范围可以从文件到端口到共享状态;即,可被一个以上的可执行实体共享的任何不可执行的实体。 
此处描述的“线程”可表示应用程序、程序、函数、或其它可编程或可执行代码的集合体内的执行路径。线程使得可执行指令的模块的多条执行路径或流在同一个应用程序、程序、函数、或其它可编程和可执行代码的集合体内并发地出现;这样,在每个流内,可处理不同的事务或消息。其中可执行多线程进程的多任务或多处理环境可在托管执行环境中或非托管执行环境中的任一个中被发现。 
此处描述的“隔离边界(isolation boundary)”可表示可用作隔离单元的逻辑或物理构造。进程是隔离边界的一个示例。在托管执行环境中,这样的隔离边界可被称作应用程序域,该应用程序域可包括多个执行的线程。此术语仅作为示例提供。即,此处描述的示例实现不限于上述的应用程序域或甚至不限于托管执行环境,而是可以被应用于其它执行环境中的各种其它隔离边界实现中。更具体地,与此处描述的资源分配的范围有关的隔离边界还可涉及机器边界、进程边界、线程、以及类或程序集边界。甚至更具体地,资源分配的范围可涉及公有/私有展示、程序集、或类。此外,资源分配可具有多个轴(axis)或注解,包括,例如,资源的类型以及资源的可见性。 
隔离边界可以使要在那里执行的代码从指定源中加载;隔离边界可以独立于其它这样的隔离边界而被中止;并且隔离边界内的处理可以被隔离以便在其中发生的错误不影响进程中的其它隔离边界。更具体地,隔离边界可隔离其中资源的消耗,以致其它隔离边界或者看不见资源的任何变化、或者只能以串行的、原子的方式看见资源。 
图1示出具有处理结点的示例网络环境100,这些处理结点可以按任何数量及其组合互相通信来实现负载平衡的一个或多个示例。然而,负载平衡的实现不限于网络环境中的节点。此外,在图1的示例网络环境中,客户机设备105、服务器设备110A和110B以及“其它”设备115可以通过网络125通信地互相耦合;并且,此外,客户机设备105、服务器设备110A和110B、和“其它” 设备115中的至少一个能够实现此处所描述的负载平衡120。 
客户机设备105可以是包括台式个人计算机(PC)、工作站、大型计算机、因特网设备、以及机顶盒等各种常规计算机设备中的至少一个。此外,客户机设备105可以是能够通过有线和/或无线链路与网络125相关联的任何设备中的至少一个,这些设备包括个人数字助理(PDA)、膝上型计算机、蜂窝电话等等。此外,客户机设备105可以按各种数量和/或其组合来表示上述客户机设备。“其它”设备115还可以由客户机设备105的上述任何一个示例来体现。 
服务器设备110A和110B可根据负载平衡120的至少一个实现向客户机设备105或“其它”设备115提供各种数据和/或功能中的任何一种。数据可以是公共可获得的或者是受限制的,例如,仅限于某些用户或只有付了适当的订阅费或许可费时才可用。服务器设备110A和110B的任何一个可以是各种数量的网络服务器、应用程序服务器、或刀片服务器及其各种组合。通常,服务器设备110A和110B用作内容源,而客户机设备105或者通过网络125或者以离线方式接收这样的内容。然而,根据此处描述的示例实现,客户机设备105和服务器设备110A与110B可互换地成为网络环境100中的发送节点或接收节点。此外,根据负载平衡120的至少一个示例,服务器设备110A和110B可被实现为网络125上的众多服务器设备中的一个。这样的配置可以被非正式地视为“服务器农场(server farm)”。在这样一个服务器农场中,两个或更多联网的服务器可在执行同一个应用程序、程序、功能、或其它可编程和可执行代码的集合体中的至少数部分时共享。此外,“其它”设备115还可以由服务器设备110A和110B的上述任何一个示例来体现。 
“其它”设备115可以是根据此处描述的一个或多个示例的能够实现负载平衡120的任何另外的设备。即,“其它”设备115可以是能够实现用于在至少一个托管执行环境中的应用程序、程序、功能、或其它可编程和可执行代码的集合体的至少一部分的负载平衡120的启用软件的计算或处理设备。更具体地,“其它”设备115可用作负载平衡器。作为负载平衡器,“其它”设备115可被实现为物理上与客户机设备105或服务器设备110A和110B中的任一个分开的硬件设备;或者,“其它”设备115可以被实现为在客户机设备105或服务器设备110A和110B中的至少一个上的固件或软件。因此,“其它”设 备115可以是其上实现了操作系统、解释器、转换器、编译器、或运行时执行环境中的任何一个的计算、处理、或服务器设备。这些示例并不意在以任何方式为限制性的,并且因此,不应该以那种方式来解释。 
网络125可以表示包括有线和/或无线网络等各种常规网络拓扑和类型中的任何一种。网络125还可采用包括公共和/或专有协议等各种常规网络协议中的任何一种。网络125可包括(例如)因特网以及诸如802.11系统等一个或多个局域网(也被个别地称为LAN)中的至少数部分;诸如蓝牙等个人局域网(即,PAN)。 
设备105、110A、110B及115中的至少一个设备中的计算机体系结构典型地按照硬件与软件来定义计算平台。用于计算设备的软件基于功能被归类成组,这些组包括硬件抽象层(或者称为“HAL”)、操作系统(或者称为“OS”)以及应用程序。 
运行时执行环境可表示在OS和应用程序之间的隔离空间,在该空间中,应用程序可在处理设备105、一个或多个服务器设备110A和110B、或其它设备115中的至少一个上执行具体任务。更具体地,运行时执行环境意在通过向在包括服务器、台式计算机、膝上型计算机、移动处理设备、机顶盒以及游戏控制台等范围不断增加的处理设备上运行的应用程序提供抽象层和服务并进一步向该应用程序提供包括存储器管理及其配置的能力来提高在这些处理设备上执行应用程序的可靠性。 
运行时执行环境可用作应用程序编程平台以及应用程序执行平台中的至少一个。 
作为应用程序编程平台,运行时执行环境可将以多种计算语言中的一种编写的目标应用程序编译为中间语言(下文称“IL”)。IL通常独立于平台并且中央处理单元(下文称“CPU”)执行IL。事实上,IL是比许多CPU机器语言更高级的语言。 
作为应用程序执行平台,运行时执行环境可将已编译的IL解释成本机机器指令。运行时执行环境可以或者采用解释器或者采用“即时(just-in-time)”(下文称JIT)编译器来执行这样的指令。或者,运行时执行环境可执行、读取、解释或以其它方式分析以IL格式而不是本机平台执行格式分配到运行时 执行环境中的并已被编译为程序集、方法或类型中的任何一种的中间语言代码(即,“IL”)。此IL的源可被置于非托管执行环境中或在设备105、110和115中的相同或单独的一个设备上的运行时执行环境的单独实现中。该源可在或先于与该IL对应的应用程序、程序、方法、函数或其它可编程和可执行代码的集合体的安装时间部署IL。 
不管怎样,接着,本机机器指令可被CPU直接执行。由于IL是独立于CPU的,因此只要在那个CPU平台上运行的OS主宿适当的运行时执行环境,IL即可在该CPU平台上执行。负载平衡120所涉及的运行时环境的示例包括:Visual Basic运行时环境;用于运行例如 
Figure S2006800391456D00051
例程的 
Figure S2006800391456D00052
虚拟机运行时环境;或在执行一调用例程之前将例如Microsoft.NetTM应用程序编译成机器语言的公共语言运行库(CLR)环境。然而,这个列表只是提供示例而已。示例实现不仅仅限于这些托管执行环境。此外,由于可在测试环境和/或非托管执行环境内实现一个或多个示例,因此示例实现不仅限于托管执行环境。 
被编译为IL的应用程序可被称为“托管代码”,由此,运行时执行环境也可被称为“托管执行环境”。托管代码的各部分可被称为“托管映像”。不采用运行时执行环境来执行的代码可被称为本机代码应用程序。 
图2显示了其中可实现负载平衡120(见图1)的示例的运行时执行环境200的示例。 
根据至少一个示例实现,运行时执行环境200可帮助用于计算机设备平台的托管代码的执行。托管代码可被认为是一组核心应用程序开发技术的一部分,并且还可被视为为在运行时执行环境200上执行而被编译以便向计算设备平台提供对应的服务的代码。另外,运行时执行环境200可将解释级的托管代码翻译成可被代理并随后由处理器执行的指令。用于运行时执行环将200的框架还可提供被视为用于托管应用程序的软件构件块(software building block)的类库。 
根据进一步的示例实现,运行时执行环境200可提供原本期望从内核获得的至少部分功能,取决于设备105、110A、110B和115中的任何一个特定设备的资源限制,计算设备可能有或没有该至少部分功能。因此,运行时执行环境200的至少一个示例可实现以下:输入/输出(下文称“I/O”)例程管、存 储器管理、主管(administration)、以及服务例程管理。因此,运行时执行环境200可包括I/O组件205、至少一个存储器管理器210、主管器215(administrator)、以及执行组件220。这些组件仅作为示例提供,并且将在下面进一步详细描述;即,并不意在将这些示例限于任何特定实现,并且不应该作这样的推断。此外,可以在运行时执行环境200的示例的各种组合及其配置中实现该组件。 
运行时执行环境200的I/O组件205可提供对与计算设备平台相关联的数据源(即,处理器和外围设备)的异步访问。这样的数据源的示例可以是如前面图1所述的设备105、110A、110B以及115中的一个或多个。更具体地,I/O组件205可以为运行时执行环境200提供稳健的系统吞吐量并且进一步使得对I/O请求从其中生成的代码的执行流线化。 
存储器管理器210可表示在运行时执行环境200内或与运行时执行环境200相关联的被称为“无用信息收集器”的模块。无用信息收集(或者下文称为“GC”)可被视为托管代码执行环境的一个稳健特征,通过无用信息收集,如果经对存储器堆的清扫或扫描发现一个对象不再被任何应用程序使用,则该对象被释放(即解除分配)。在存储器管理器210的至少一个示例中,空闲存储器堆的清扫可被实现为一线性搜索。这一实现会非常适用于其存储器大小受到约束并且相应设备的用户可察觉到清扫完成的延迟的计算设备平台的一个示例。 
存储器管理器210的一个示例可实现“并发GC”功能以便允许托管线程在存储器堆的清扫或扫描期间继续运行。即,在解除分配期间,并发GC可允许并行地继续分配。并发GC功能(或者此处称为“并发GC”)适用于基于互动或GUI(图形用户界面)的应用程序。 
然而,尽管负载平衡120可能与并发GC功能有关,但本负载平衡120的示例实现在非并发GC功能的上下文中描述,通过非并发GC功能,一个或多个托管线程会在存储器堆的清扫或扫描期间内被挂起。 
由存储器管理器210实现的进一步功能可包括:在计算设备平台上运行的各任务中,管理有限易失性RAM(即,存储器堆)存储的一个或多个邻接块或存储器的一组邻接块;向在该计算设备平台上运行的至少一个应用程序分配 存储器;根据应用程序中的至少一个的请求释放存储器的至少数部分;以及防止任何应用程序入侵性地访问已经被分配给任何其它应用程序的存储器空间。 
主管器215可表示运行时执行环境220内或与该运行时执行环境相关联的用来接收应用程序、程序、方法、函数、或其它可编程和可执行代码的集合体中的至少一部分以便在运行时执行环境200中执行的模块。此外,根据负载平衡120的至少一个示例实现,主管器215可与存储器管理器210相协调以便在应用程序执行期间在编译时、初始运行时、或在其之后的任何时刻控制运行时执行环境220内的应用程序、程序、方法、函数、或其它可编程和可执行代码的集合体的行为。 
执行组件220可表示运行时执行环境200内或与运行时执行环境相关联的用来使托管代码能在计算设备平台上执行的模块。执行组件220可被视为在其中实现应用程序代码的执行以及提供运行时服务(例如,设备访问和存储器管理)的环境。 
图3示出根据负载平衡120(见图1)的示例实现的示例数据流300。现参照图1至图2的特征来描述示例数据流300,然而这样的实现仅作为示例被提供并且并不意在以任何限制的方式来解释。 
至少根据上面提供的“隔离边界”的描述,进程305A、305B和305C可被视为逻辑或物理构造。因此,根据负载平衡120的各种实现,进程305A、305B和305C可涉及机器边界、进程边界、线程、应用程序域、以及类或程序集边界。此外,负载平衡120的实现绝不限于仅用于描述目的而在此处示出和描述的这三种构造(即,305A、305B和305C)。 
作为示例,进程305A、305B和305C可涉及多个服务器(即,机器边界)。作为硬件来实现,服务器305A、305B和305C可以是至少一个运行时执行环境200在其上作为应用程序执行平台而运行的独立的硬件设备。作为软件服务器来实现,进程305A、305B和305C可以是正被运行时执行环境200的一个实现执行的公共应用程序、程序、方法、函数、或其它可编程和可执行代码的集合体的模块化组件。 
源自进程305A、305B和305C中的任何一个的存储器管理数据310可包括表示即将到来的存储器堆的清扫或扫描(即,GC)的数据,以便解除分配 (即,释放)不再被正被运行时执行环境200的一个实现执行的应用程序、程序、方法、函数、或其它代码集合体使用的一个或多个对象。 
在进程305A、305B和305C被实现为独立的硬件设备的示例中,存储器管理数据310可源自在一个或多个这样的设备上运行的运行时执行环境200的一个实现。在进程305A、305B和305C被实现为公共应用程序、程序、方法、函数、或其它可编程和可执行代码的集合体的模块化组件的示例中,存储器管理数据310可以源自模块化组件在其上正被执行的运行时执行环境200的一个实现。更具体地,在上述示例中,存储器管理数据310可单个地或经组合地源自存储器管理器210或主管器模块215。 
存储器管理数据310可通过采用与各种系统体系结构的应用程序接口(API)兼容的一个或多个API来实现事务处理。更具体地,根据负载平衡120的各种实现,对应于存储器管理数据310的API可以能够启动进程305A、305B和305C之间的负载平衡(即,跨机器边界、进程边界、线程、应用程序域、以及类或程序集边界)。如此处所描述的,API可被视为被应用程序、程序、方法、函数、或其它可编程和可执行代码的集合体使用来指引运行时执行环境200或甚至是操作系统的过程执行的一个或多个例程。 
存储器管理数据310可包括由存储器管理器210或主管器模块215单个地或组合地实现的一个或多个API。以下所列和所描述的这种API的命名仅出于描述的目的而被提供,并且作为非限制性的示例来提供。 
MaxGenerationNotifier(最大生成通知器)可表示其例示意在提示负载平衡器315对正被运行时执行环境200的特定实现执行的同一个或另一个应用程序、程序、方法、函数、或其它代码集合体中的至少一部分进行重新分配的类。更具体地,当存储器管理器210或主管器215单个地或组合地检测到运行时执行环境200上的即将到来的GC会一直运行以至引起执行运行时执行环境200上的同一个或另一个应用程序、程序、方法、函数、或其它代码集合体时的超时的时候,MaxGenerationNotifier被例示。这样的检测可基于在应用程序、程序、方法、函数、或其它代码集合体的当前执行期间对阈值量存储器堆的分配。然后,有效地,MaxGenerationNotifier的例示可向负载平衡器提供运行时执行环境200的状态的主动通知。 
更具体地,当存储器管理器210或主管器215或单个地或组合地检测到即将到来的GC有可能会超过阈值逻辑或物理大小时,MaxGenerationNotifier被例示。例如,当存储器管理器210或主管器215或者单个地或者组合地检测到即将到来的GC是一个晚生成(late generation)GC的实例并因此可能清扫或扫描当前可获得的处理能力所允许的最大量的堆(例如,2GB)时,可例示MaxGnerationNotifier。结果,由于托管线程在存储器堆的清扫或扫描期间会被挂起,因此对应用程序、程序、方法、函数、或其它代码集合体的执行会在晚生成GC完成之前超时。因此,在这一大小的GC开始之前,MaxGenerationNotifier会被例示来通知负载平衡器315至少需要对应用程序、程序、方法、函数、或其它代码集合体中的至少一部分执行进行重新分配。 
当然,2GB堆仅作为晚生成GC的一个示例来描述。可担当用于例示MaxGenerationNotifier的催化剂的即将到来的GC的大小可基于众多因素而改变,并且会随处理能力的演变而增大。该因素可与处理器设备的处理能力以及完成GC的预期时间有关。此外,当编写了该正执行的应用程序、程序、方法、函数、或其它代码集合体的程序员出于效率和安全考虑中的至少一个目的时,该程序员的偏好(如向主管器215所指示的)也可启动对MaxGenerationNotifier的例示。 
此外,MaxGenerationNotifier的至少一个替换实现可包括用于重定向正被运行时执行环境200执行的对应的应用程序、程序、方法、函数、或其它代码集合体中的至少一部分的执行的一个或多个特定指令。 
MaxGenerationCompleteNotifier(最大生成完成通知器)可表示其例示意在通知负载平衡器315被MaxGenerationNotifier例示的GC已经完成的类。因此,MaxGenerationCompleteNotifier的例示可用来通知负载平衡器315对正执行的应用程序、程序、方法、函数、或其它代码集合体中的一个或多个部分的重新分配在不会不利地影响运行时执行环境200的执行的情况下可停止。更具体地,当存储器管理器210或主管器215或者单个地或组合地检测到以下的至少一个情况时MaxGenerationNotifier可被例示,这些情况有:用作MaxGenerationNotifier的最新近例示的催化剂的GC完成;自MaxGeneratationMotifier的例示开始过了一个预定的时间阈值;或者为当前正 执行的应用程序、程序、方法、函数、或其它代码集合体执行了另一编程模块代码。 
负载平衡器315可表示物理上与客户机设备105分开的硬件设备,或作为客户机105或服务器设备110A和110B中的至少一个上的固件或软件组件。 
当例示MaxGenerationNotifier时,负载平衡器315可以重新分配对当前正执行的应用程序、程序、方法、函数、或其它代码集合体中的至少数部分的处理以便避免在GC期间的超时。例如,当接收包括表示进程305A上的即将到来的GC的MaxGenerationNotifier的例示的存储器管理数据310时,负载平衡器315可以接收执行同一个或另一个当前正执行的应用程序、程序、方法、函数、或其它代码集合体中的数部分的一个或多个请求,并将该执行重定向至进程305B和进程305C中的至少一个。 
当例示MaxGenerationCompleteNotifier时,负载平衡器315可停止将当前正执行的应用程序、程序、方法、函数、或其它代码集合体的处理重新分配给进程305B和305C。因此,负载平衡器315可拥有在进程305A上执行当前正执行的应用程序、程序、方法、函数、或其它代码集合体的选项。 
数据流300的至少一个替换实现不包括负载平衡器315。即,这个替换实现通过拥有进程305A、305B和305C来实现负载平衡。 
图4显示对应于负载平衡120(见图1)的至少一个示例实现的示例处理流400。示例处理流400参考图1-3的特征在下文中描述,然而此实现仅作为示例而提供并且并不意在以任何限制方式来解释。 
框405可表示单个地或以各种组合共同地被实现为进程305A、过程305B、或过程305C的一部分的应用程序、程序、方法、函数、或其它代码集合体中的至少一部分的执行。尽管负载平衡120并不如此受限制,但框405可表示在托管执行环境(即,运行时执行环境200)中的执行。 
框410可表示存储器管理器210或主管器215或者单个地或者组合地确定在当前正执行的应用程序、程序、方法、函数、或其它代码集合体的执行期间已经分配了阈值量的堆,并且由此GC即将到来。或者,框410可表示存储器管理器210或主管器215或者单个地或者组合地检查编程代码的至少一部分来确定对运行时执行环境200在其上运行的处理设备的存储器堆的清扫或扫描即 将到来。 
判决框415可表示存储器管理器210或主管器215或者单个地或者组合地相对于预定阈值评估预期GC实现的大小。该评估被用来确定存储器堆的物理大小是否超出预定阈值(例如,2GB或更多)以至于将可能使当前正执行的应用程序、程序、方法、函数、或其它代码集合体的执行超时。根据一个替换例,可对照避免超时的预定时间阈值来对将预期GC完成的时间做出该评估。根据另一个示例,该评估甚至可包括检查编程代码的至少一部分来确定即将到来的GC是否有意作为要重新分配的正执行的应用程序、程序、方法、函数、或其它代码集合体中的至少数部分的催化剂。 
接着否定判决框415,框420A可表示存储器管理器210实现用于进程305A、305B、或305C中的一个宿主进程上的正执行的应用程序、程序、方法、函数、或其它代码集合体的GC。然后,处理流程可返回到框405以继续执行当前执行的应用程序、程序、方法、函数、或其它代码集合体。 
接着肯定判决框415,框425可表示存储器管理器210或主管器215单个地或组合地通知负载平衡器315该预期GC达到或超过预定阈值。即,当确定预期的GC的逻辑或物理参数将会超过阈值时,管理模块210或主管器215可单个地或者组合地通知负载平衡器该即将到来的GC有可能会引起当前被执行的应用程序、程序、方法、函数、或其它代码集合体的超时。甚至更具体地,管理模块210或主管器215可单个地或组合地例示提供对预期状态的通知的API(例如,MaxGenerationNotifier)。 
在框425的至少一个替换实现中,存储器管理器210或主管器215可单个地或者组合地提供其它形式的通知。例如,该通知可以是包括调用作为先前向存储器管理器210或主管器215注册过的进程305A、进程305B、或进程305C的一部分被执行的应用程序、程序、方法、函数、或其它代码集合体的事件。 
该通知事件的一个示例可包括图3中的进程305A、305B、和305C中的每一个通过单个或组合的存储器管理器210或主管器215订阅一个或多个存储器管理事件(例如,MaxGenerationNotifier)。例如,进程305A可实现可在存储器管理器210或主管器215单个地或组合地发布MaxGenNotifier时被调用的两个函数。这样的调用的非限制性示例如下: 
(1)GC.MaxGenerationNotifier+=new 
MaxGenerationNotificationHandler(On_MaxGeneration_Notify1); 
(2)GC.MaxGenerationNotifier+=new 
MaxGenerationNotificationHandler(On_MaxGeneration_Notify2); 
其中MaxGeneration_Notify1和MaxGeneration_Notify2是上述的函数。此外,函数MaxGeneration_Notify1和MaxGeneration_Notify2可通知负载平衡器310订阅的事件。因此,当订阅的事件发生时,负载平衡器315可采取所请求的负载平衡动作。 
框430可表示负载平衡器315在进程305A、305B、和305C中重新分配当前被执行的应用程序、程序、方法、函数、或其它代码集合体中的至少数部分。因此,例如,如果在预期依据宿主进程305A的GC实现时接收到框425处的通知,框430可表示负载平衡器315接收执行同一个或另一个当前被执行的应用程序、程序、方法、函数、或其它代码集合体的至少一部分的请求,并将所请求的执行重定向至进程305B和305C中的至少一个。即,框430可表示负载平衡器315将当前运行的进程305A中的当前被执行的应用程序、程序、方法、函数、或其它代码集合体中的至少数部分重新分配至并发运行的进程305B和305C中的一个。 
框420B可表示存储器管理器210实现用于在进程305A、305B、或305C中的一个宿主进程上正执行的应用程序、程序、方法、函数、或其它代码集合体的GC,而相应的应用程序、程序、方法、函数、或其它代码集合体中的至少数部分正在其它并发运行的进程305A、305B、和305C上执行。因此,例如,如果在预期依据宿主进程305A的GC实现时接收到框425处的通知,框430可表示负载平衡器315将当前被执行的应用程序、程序、方法、函数、或其它代码集合体中的至少数部分重新分配给进程305B和305C中的至少一个,并且框420A可表示存储器管理器210在宿主进程305A上实现GC。 
框435可表示存储器管理器210或主管器215单个地或者组合地通知负载平衡器GC已经完成。该通知可包括或不包括用来停止当前负载平衡实现的指令。甚至更具体地,管理模块219或主管器215可单个地或者组合地例示提供当前状态的通知的API(例如,MaxGenerationNotifier)。然后,处理流返回 到框405以继续执行当前被执行的应用程序、程序、方法、函数、或其它代码集合体。 
类似于框425处的处理,通知事件可包括图3中的进程305A、305B、和305C中的每一个通过单个或组合的存储器管理器210或主管器215订阅一个或多个存储器管理事件(例如,MaxGenerationCompleteNotifier)。因此,例如,进程305A可实现可在存储器管理器210或主管器215单个地或组合地发布MaxGenCompleteNotifier时被调用的两个函数。这样的调用的非限制性示例如下: 
(2)GC.MaxGenerationCompleteNotifier+=new 
MaxGenerationCompleteNotificationHandler(On_MaxGenerationComplete_Notify1); 
(2)GC.MaxGenerationCompleteNotifier+=new 
MaxGenerationCompleteNotificationHandler(On_MaxGenerationComplete_Notify2); 
其中MaxGenerationComplete_Notify1和MaxGenerationComplete_Notify2是上述的函数。此外,函数MaxGenerationComplete_Notify1和MaxGenerationComplete_Notify2可通知负载平衡器315订阅的事件。因此,当订阅的事件发生时,负载平衡器315可根据请求至少暂时停止负载平衡。 
关于图1-4的上述描述,对于在运行时执行环境上执行的一个或多个应用程序的负载平衡可根据与存储器管理数据相关联的数据来实现。然而,此处描述的示例限制并不局限于仅基于存储器管理数据的负载平衡。相反,通知(即,通知)可被例示来实现基于众多逻辑和物理准则的负载平衡。 
用于上述的示例和实现中的任何一个的计算机环境可包括具有例如一个或多个处理器或处理单元、系统存储器、耦合各种系统组件的系统总线等计算设备。 
计算设备可包括各种计算机可读介质,包括易失性和非易失性介质、可移动和不可移动介质两者。系统存储器可包括采用诸如随机存取存储器(RAM)等易失性存储器和/或诸如只读存储器(ROM)或闪存RAM等非易失性存储器形式的计算机可读介质。可以意识到,能存储可被计算机访问的数据的其它 类型的计算机可读介质,诸如磁带盒或其它磁存储设备、闪存卡、CD-ROM、数字多功能盘(DVD)或其它光学存储、随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)等,也可被用来实现示例计算系统和环境。 
整篇说明书对“示例”、“替换示例”、“至少一个示例”、“实现”或“示例实现”的表述表示一个具体描述的特征、结构或特点被包括在本发明的至少一个实现中。因此,该词语的使用可表示比一个实现多的更多实现。此外,所描述的特征、结构、或特点可以用任何合适的方式在一个或多个实现中组合。 
然而,相关领域的技术人员可认识到,可以不采用一个或多个具体细节或者采用其它方法、资源、材料等来实践本发明。在另一个示例中,公知的结构、资源、或操作没有被显示或详细描述仅仅是为了避免混淆本发明的各方面。 
尽管示出和描述了本发明的各示例实现和应用,但将理解,本发明并不局限于上述的精确配置和资源。本领域的技术人员可根据本发明此处所公开的各个方法和系统的安排、操作以及细节作出各种修改、变化、以及变型,而不背离如上述以及下面所请求保护的本发明的范围。 

Claims (17)

1.一种用于负载平衡的方法,包括:
接收(415)在执行(405)托管执行环境(200)中的应用程序期间存储器分配超过阈值的指示;以及
重新分配(430)所述应用程序的至少一部分在隔离边界的执行,
其中所接收到的指示包括即将到来的存储器堆的清扫预期会引起执行超时的通知。
2.如权利要求1所述的方法,其特征在于,所述方法是根据负载平衡器来执行的。
3.如权利要求1所述的方法,其特征在于,所接收到的指示包括为预期的执行超时做准备的通知。
4.如权利要求1所述的方法,其特征在于,所接收到的指示包括对关于所述应用程序的执行的状态的预览。
5.如权利要求1所述的方法,其特征在于,所述接收还包括接收来自与所述托管执行环境相关联的存储器管理组件中的应用程序编程接口(API)的例示。
6.如权利要求1所述的方法,其特征在于,所述隔离边界可以是机器边界、进程边界、线程边界、类边界、或程序集边界中的任何一种。
7.如权利要求1所述的方法,其特征在于,所述重新分配包括重新分配所述应用程序的至少一部分的执行。
8.如权利要求1所述的方法,其特征在于,所述重新分配包括重定向在所述隔离边界执行所述应用程序的至少数部分的请求。
9.如权利要求1所述的方法,其特征在于,所述重新分配包括将执行所述应用程序的一部分的请求重定向至另一服务器。
10.一种用于负载平衡的方法,包括:
监视(410)执行(405)托管代码期间内的存储器分配;
确定(415)所述存储器分配何时超过阈值;以及
发送(425)所述存储器分配已超过所述阈值的通知,
其中所述通知包括即将到来的对象解除分配的实现可引起托管代码的执行超时的指示。
11.如权利要求10所述的方法,其特征在于,所述发送使得将所述通知发送至一负载平衡器。
12.如权利要求10所述的方法,其特征在于,所述发送使得例示一API类。
13.如权利要求10所述的方法,其特征在于,所述通知包括重定向在隔离边界执行所述托管代码的一部分的请求的指令。
14.如权利要求10所述的方法,其特征在于,所述通知包括重定向在机器边界、进程边界、线程边界、类边界、或程序集边界中的任一种执行所述托管代码的一部分的请求的指令。
15.如权利要求10所述的方法,其特征在于,所述通知包括将执行所述托管代码的一部分的请求重定向至另一服务器的指令。
16.一种用于负载平衡的系统,包括:
监视(410)执行(405)托管代码期间的存储器分配的管理器(210);
当所监视的分配超过阈值时发送(425)通知的主管器(215);以及
被所述通知提示的、分配(430)所述托管代码的部分以便在隔离边界执行的组件(315),其中
所述通知指示即将到来的所述存储器的扫描将使托管代码的执行超时。
17.如权利要求16所述的系统,其特征在于,所述隔离边界是机器边界、进程边界、线程边界、类边界、或程序集边界中的一种。
CN2006800391456A 2005-10-20 2006-09-28 用于负载平衡的方法和系统 Active CN101292234B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/254,649 US8234378B2 (en) 2005-10-20 2005-10-20 Load balancing in a managed execution environment
US11/254,649 2005-10-20
PCT/US2006/038117 WO2007047066A1 (en) 2005-10-20 2006-09-28 Load balancing

Publications (2)

Publication Number Publication Date
CN101292234A CN101292234A (zh) 2008-10-22
CN101292234B true CN101292234B (zh) 2011-05-25

Family

ID=37962815

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2006800391456A Active CN101292234B (zh) 2005-10-20 2006-09-28 用于负载平衡的方法和系统

Country Status (15)

Country Link
US (2) US8234378B2 (zh)
EP (1) EP1941382B1 (zh)
JP (1) JP4937266B2 (zh)
KR (1) KR20080059574A (zh)
CN (1) CN101292234B (zh)
AU (1) AU2006303019A1 (zh)
BR (1) BRPI0617331A2 (zh)
CA (1) CA2622546A1 (zh)
ES (1) ES2632153T3 (zh)
IL (1) IL190037A0 (zh)
NO (1) NO341682B1 (zh)
NZ (1) NZ567314A (zh)
RU (1) RU2008115484A (zh)
TW (1) TW200731136A (zh)
WO (1) WO2007047066A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107409097B (zh) * 2015-04-23 2021-08-24 思科技术公司 用于负载平衡移动性的装置、介质和方法

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8234378B2 (en) 2005-10-20 2012-07-31 Microsoft Corporation Load balancing in a managed execution environment
US8073952B2 (en) * 2009-04-22 2011-12-06 Microsoft Corporation Proactive load balancing
JP5446602B2 (ja) * 2009-08-26 2014-03-19 株式会社リコー 画像形成装置
US20120109852A1 (en) * 2010-10-27 2012-05-03 Microsoft Corporation Reactive load balancing for distributed systems
DE112011103497T5 (de) 2010-11-22 2013-08-14 International Business Machines Corp. Informationsverarbeitungssystem, Informationsverarbeitungsvorrichtung, Lastausgleichsverfahren, Planungsverfahren für die Datenbankbereitstellung und Programm zum Durchführen der Verbindungsverteilung für den Lastausgleich in einer verteilten Datenbank
US8473957B2 (en) * 2010-12-13 2013-06-25 Microsoft Corporation Architecture for providing on-demand and background processing
WO2012126180A1 (en) 2011-03-24 2012-09-27 Microsoft Corporation Multi-layer search-engine index
TW201324357A (zh) * 2011-12-01 2013-06-16 Univ Tunghai 虛擬機叢集之綠能管理方法
WO2013101217A1 (en) * 2011-12-30 2013-07-04 Intel Corporation Technology abstraction layer
US9058428B1 (en) 2012-04-12 2015-06-16 Amazon Technologies, Inc. Software testing using shadow requests
US9268663B1 (en) * 2012-04-12 2016-02-23 Amazon Technologies, Inc. Software testing analysis and control
EP2733606A3 (en) * 2012-11-15 2014-06-11 Samsung Electronics Co., Ltd Method for loading a process on an electronic device based on a user event
US9274971B2 (en) * 2012-11-27 2016-03-01 International Business Machines Corporation Low latency data exchange
US9330119B2 (en) 2013-04-11 2016-05-03 Oracle International Corporation Knowledge intensive data management system for business process and case management
CN103365784B (zh) * 2013-06-27 2016-03-30 华为技术有限公司 内存回收与分配的方法及装置
KR20150068747A (ko) 2013-12-12 2015-06-22 삼성전자주식회사 비휘발성 메모리 시스템, 이를 포함하는 모바일 장치 및 비휘발성 메모리 시스템의 동작방법
US9749208B2 (en) * 2014-06-30 2017-08-29 Microsoft Technology Licensing, Llc Integrated global resource allocation and load balancing
US9971683B1 (en) * 2014-10-20 2018-05-15 Sprint Communications Company L.P. Automatic computer memory management coordination across a group of servers
CN104468745A (zh) * 2014-11-24 2015-03-25 惠州Tcl移动通信有限公司 一种基于网络的文件传输方法及系统
CN105701019A (zh) * 2014-11-25 2016-06-22 阿里巴巴集团控股有限公司 一种内存管理方法以及装置
US9547520B1 (en) 2015-09-25 2017-01-17 International Business Machines Corporation Virtual machine load balancing
US10417111B2 (en) 2016-05-09 2019-09-17 Oracle International Corporation Correlation of stack segment intensity in emergent relationships
US10237339B2 (en) * 2016-08-19 2019-03-19 Microsoft Technology Licensing, Llc Statistical resource balancing of constrained microservices in cloud PAAS environments
US10771365B2 (en) * 2017-12-26 2020-09-08 Paypal, Inc. Optimizing timeout settings for nodes in a workflow
US10802965B2 (en) 2019-02-05 2020-10-13 Microsoft Technology Licensing, Llc Reducing synchronization reliance in garbage collection marking
US11068393B2 (en) 2019-10-17 2021-07-20 Microsoft Technology Licensing, Llc Enhanced concurrency garbage collection stack scanning
US11422932B2 (en) 2019-12-20 2022-08-23 Microsoft Technology Licensing, Llc Integrated reference and secondary marking
US11392427B2 (en) 2020-01-06 2022-07-19 Microsoft Technology Licensing, Llc Lock-free reading of unitary value sets
US11954023B2 (en) 2022-07-20 2024-04-09 Microsoft Technology Licensing, Llc Garbage collection prefetching state machine

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5339411A (en) * 1990-12-21 1994-08-16 Pitney Bowes Inc. Method for managing allocation of memory space
US5619701A (en) * 1992-01-23 1997-04-08 International Business Machines Corporation Method and system for adapter configuration in a data processing system
US5893159A (en) * 1997-10-22 1999-04-06 International Business Machines Corporation Methods and apparatus for managing scratchpad memory in a multiprocessor data processing system
US6397252B1 (en) * 1997-12-19 2002-05-28 Electronic Data Systems Corporation Method and system for load balancing in a distributed object system

Family Cites Families (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ES2149794T3 (es) 1993-09-24 2000-11-16 Siemens Ag Procedimiento para compensar la carga en un sistema multiprocesador.
US6341293B1 (en) 1994-07-13 2002-01-22 Object Technology Licensing Corp Real-time computer “garbage collector”
JPH08286989A (ja) 1995-04-19 1996-11-01 Fuji Xerox Co Ltd ネットワーク管理システム
US5745703A (en) * 1995-07-18 1998-04-28 Nec Research Institute, Inc. Transmission of higher-order objects across a network of heterogeneous machines
US6886035B2 (en) 1996-08-02 2005-04-26 Hewlett-Packard Development Company, L.P. Dynamic load balancing of a network of client and server computer
US5938722A (en) 1997-10-15 1999-08-17 Mci Communications Corporation Method of executing programs in a network
US6065020A (en) * 1998-05-27 2000-05-16 Microsoft Corporation Dynamic adjustment of garbage collection
WO2000005652A1 (en) 1998-07-24 2000-02-03 Sun Microsystems, Inc. Method and apparatus for achieving deterministic memory allocation response in a computer system
US6728748B1 (en) 1998-12-01 2004-04-27 Network Appliance, Inc. Method and apparatus for policy based class of service and adaptive service level management within the context of an internet and intranet
US6393458B1 (en) 1999-01-28 2002-05-21 Genrad, Inc. Method and apparatus for load balancing in a distributed object architecture
US6571270B1 (en) 1999-03-15 2003-05-27 International Business Machines Corporation Timeout detection facility
US6389448B1 (en) 1999-12-06 2002-05-14 Warp Solutions, Inc. System and method for load balancing
US6865591B1 (en) 2000-06-30 2005-03-08 Intel Corporation Apparatus and method for building distributed fault-tolerant/high-availability computed applications
US6505275B1 (en) 2000-07-24 2003-01-07 Sun Microsystems, Inc. Method for scalable memory efficient thread-local object allocation
US20020078002A1 (en) * 2000-08-25 2002-06-20 Bottomley Thomas Mark Walter Memory garbage collection method and apparatus
JP2002140202A (ja) 2000-11-01 2002-05-17 Hitachi Ltd 情報配信システムおよびその負荷分散方法
US7165108B2 (en) 2001-03-19 2007-01-16 Sun Microsystems, Inc. Method and apparatus for providing application specific strategies to a JAVA platform including load balancing policies
US6737099B2 (en) * 2001-03-29 2004-05-18 The United States Of America As Represented By The Secretary Of Agriculture Process for the deagglomeration and the homogeneous dispersion of starch particles
US7330872B2 (en) 2001-10-02 2008-02-12 Citrix Systems, Inc. Method for distributed program execution with web-based file-type association
EP1307018B1 (en) 2001-10-24 2006-10-11 Sun Microsystems, Inc. Load balancing unit and method of its operation
US6842759B2 (en) * 2002-01-16 2005-01-11 International Business Machines Corporation Single-instance class objects across multiple JVM processes in a real-time system
US7243267B2 (en) * 2002-03-01 2007-07-10 Avaya Technology Llc Automatic failure detection and recovery of applications
US6856991B1 (en) 2002-03-19 2005-02-15 Cisco Technology, Inc. Method and apparatus for routing data to a load balanced server using MPLS packet labels
JP4079684B2 (ja) * 2002-05-08 2008-04-23 株式会社日立製作所 ヒープメモリ管理方法およびそれを用いた計算機システム
US7908355B2 (en) 2002-06-20 2011-03-15 International Business Machines Corporation Method for improving network server load balancing
US7454458B2 (en) 2002-06-24 2008-11-18 Ntt Docomo, Inc. Method and system for application load balancing
JP4130615B2 (ja) 2003-07-02 2008-08-06 株式会社日立製作所 ストレージ装置を有するネットワークにおける障害情報管理方法及び管理サーバ
JP4202709B2 (ja) 2002-10-07 2008-12-24 株式会社日立製作所 ストレージ装置を有するネットワークにおける、ボリューム及び障害管理方法
GB0302926D0 (en) 2003-02-08 2003-03-12 Grex Games Ltd System architecture and engine for massively multi-user operation
WO2004077259A2 (en) 2003-02-24 2004-09-10 Bea Systems Inc. System and method for server load balancing and server affinity
JP4170988B2 (ja) 2003-05-09 2008-10-22 富士通株式会社 実行環境の危険予測/回避方法,システム,プログラムおよびその記録媒体
US7636917B2 (en) 2003-06-30 2009-12-22 Microsoft Corporation Network load balancing with host status information
AU2003903629A0 (en) * 2003-07-14 2003-07-31 Fujisawa Pharmaceutical Co., Ltd. New compound
US7472144B2 (en) * 2003-07-28 2008-12-30 International Business Machines Corporation Method and system for resolving memory leaks and releasing obsolete resources from user session data
US7392314B2 (en) 2003-08-15 2008-06-24 International Business Machines Corporation System and method for load—balancing in a resource infrastructure running application programs
US7325118B2 (en) * 2003-09-30 2008-01-29 Samsung Electronics, Co., Ltd. Method and apparatus for executing dynamic memory management with object-oriented program
KR100528973B1 (ko) 2003-11-05 2005-11-16 한국전자통신연구원 가비지 콜렉션 방법 및 그 장치
JP2005141441A (ja) 2003-11-06 2005-06-02 Hitachi Ltd 負荷分散システム
US7421695B2 (en) 2003-11-12 2008-09-02 Cisco Tech Inc System and methodology for adaptive load balancing with behavior modification hints
US7197521B2 (en) * 2003-11-21 2007-03-27 Intel Corporation Method and system performing concurrently mark-sweep garbage collection invoking garbage collection thread to track and mark live objects in heap block using bit vector
US8156217B2 (en) 2003-11-24 2012-04-10 Hewlett-Packard Development Company, L.P. Dynamically balancing load for servers
US7434214B2 (en) * 2004-01-21 2008-10-07 International Business Machines Corporation Method for determining a close approximate benefit of reducing memory footprint of a Java application
US7231199B2 (en) * 2004-02-27 2007-06-12 Research In Motion Limited Data protection for applications on a mobile electronic device
US20050198088A1 (en) * 2004-03-03 2005-09-08 Sreenivas Subramoney Method and system for improving the concurrency and parallelism of mark-sweep-compact garbage collection
WO2006004995A2 (en) 2004-06-30 2006-01-12 Glenayre Electronics, Inc. Load balancing in a distributed telecommunications platform
US7647586B2 (en) * 2004-08-13 2010-01-12 Sun Microsystems, Inc. System and method for providing exceptional flow control in protected code through watchpoints
US7886294B2 (en) 2004-12-28 2011-02-08 Sap Ag Virtual machine monitoring
US7565497B1 (en) * 2005-05-26 2009-07-21 Sun Microsystems, Inc. Coarse write barrier control mechanism
US7953773B2 (en) * 2005-07-15 2011-05-31 Oracle International Corporation System and method for deterministic garbage collection in a virtual machine environment
US7502921B2 (en) * 2005-08-02 2009-03-10 Sandisk Corporation Situation sensitive memory performance
US7685580B1 (en) * 2005-08-30 2010-03-23 Sun Microsystems, Inc. Method and apparatus for selectively eliminating write barriers in snapshot-at-the beginning concurrent-marking garbage collectors
US8234378B2 (en) 2005-10-20 2012-07-31 Microsoft Corporation Load balancing in a managed execution environment

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5339411A (en) * 1990-12-21 1994-08-16 Pitney Bowes Inc. Method for managing allocation of memory space
US5619701A (en) * 1992-01-23 1997-04-08 International Business Machines Corporation Method and system for adapter configuration in a data processing system
US5893159A (en) * 1997-10-22 1999-04-06 International Business Machines Corporation Methods and apparatus for managing scratchpad memory in a multiprocessor data processing system
US6397252B1 (en) * 1997-12-19 2002-05-28 Electronic Data Systems Corporation Method and system for load balancing in a distributed object system

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Lorenz Huelsbergen,James R.Larus.A Concurrent Copying Garbage Collector for Languages thatDistinguish (Im)mutable Data.ACM SIGPLAN Notices28 7.1993,28(7),73-82.
Lorenz Huelsbergen,James R.Larus.A Concurrent Copying Garbage Collector for Languages thatDistinguish (Im)mutable Data.ACM SIGPLAN Notices28 7.1993,28(7),73-82. *
Soila M.Pertet.Proactive Fault-Recovery in Distributed Systems.a dissertation submitted in CMU.2004,1-82. *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107409097B (zh) * 2015-04-23 2021-08-24 思科技术公司 用于负载平衡移动性的装置、介质和方法

Also Published As

Publication number Publication date
WO2007047066A1 (en) 2007-04-26
US8234378B2 (en) 2012-07-31
RU2008115484A (ru) 2009-10-27
US20070094651A1 (en) 2007-04-26
US20120278813A1 (en) 2012-11-01
IL190037A0 (en) 2008-08-07
ES2632153T3 (es) 2017-09-11
TW200731136A (en) 2007-08-16
KR20080059574A (ko) 2008-06-30
EP1941382B1 (en) 2017-04-12
EP1941382A1 (en) 2008-07-09
AU2006303019A1 (en) 2007-04-26
NO20081268L (no) 2008-07-08
CN101292234A (zh) 2008-10-22
JP4937266B2 (ja) 2012-05-23
CA2622546A1 (en) 2007-04-26
BRPI0617331A2 (pt) 2011-07-19
JP2009512936A (ja) 2009-03-26
NO341682B1 (no) 2017-12-18
US10334031B2 (en) 2019-06-25
EP1941382A4 (en) 2009-02-25
NZ567314A (en) 2010-05-28

Similar Documents

Publication Publication Date Title
CN101292234B (zh) 用于负载平衡的方法和系统
US8959484B2 (en) System for hosted, shared, source control build
US10873623B2 (en) Dynamically modifying a cluster of computing nodes used for distributed execution of a program
US7926071B2 (en) Load balancing interfaces
EP3155522B1 (en) Precisely tracking memory usage in multi-process computing environment
EP3149591B1 (en) Tracking application deployment errors via cloud logs
US7441094B2 (en) Memory management configuration
US9384031B2 (en) Information processor apparatus, virtual machine management method and virtual machine management program
EP2761494B1 (en) System and method for supporting a dynamic resource broker in a transactional middleware machine environment
CN101361058A (zh) 经定性化注释的代码
US8701095B2 (en) Add/remove memory pressure per object
Lama et al. Performance isolation of data-intensive scale-out applications in a multi-tenant cloud
CA2442795A1 (en) Software license optimization
US12013750B2 (en) Network service management apparatus and network service management method
Anglano et al. Prometheus: A flexible toolkit for the experimentation with virtualized infrastructures
KR100915533B1 (ko) 미복귀 대기 리소스 이용량 결정 방법, 장치 및 컴퓨터 판독 가능한 기록 매체
US20230155958A1 (en) Method for optimal resource selection based on available gpu resource analysis in large-scale container platform
CN111241540A (zh) 一种业务处理方法及装置
US12081386B2 (en) Network service management apparatus and network service management method for identifying a failure
Nair et al. Performance degradation assessment and VM placement policy in cloud
KR20160122959A (ko) 클라우드 관리 시스템 및 방법
Hermenier et al. Hotspot Mitigations for the Masses
US20240036905A1 (en) Network service management apparatus and network service management method
US20230251942A1 (en) Network service management apparatus and network service management method
CN118170516A (zh) 一种线程管理方法、相关设备以及可读存储介质

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
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150504

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150504

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.