JP4937266B2 - ロードバランシング - Google Patents

ロードバランシング Download PDF

Info

Publication number
JP4937266B2
JP4937266B2 JP2008536593A JP2008536593A JP4937266B2 JP 4937266 B2 JP4937266 B2 JP 4937266B2 JP 2008536593 A JP2008536593 A JP 2008536593A JP 2008536593 A JP2008536593 A JP 2008536593A JP 4937266 B2 JP4937266 B2 JP 4937266B2
Authority
JP
Japan
Prior art keywords
execution
managed code
garbage collection
notification
code
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
JP2008536593A
Other languages
English (en)
Other versions
JP2009512936A (ja
Inventor
ゼット.ステファンズ マオニ
エイチ.ダサッド パトリック
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 Corp
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 JP2009512936A publication Critical patent/JP2009512936A/ja
Application granted granted Critical
Publication of JP4937266B2 publication Critical patent/JP4937266B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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
    • 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
    • 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)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Description

マネージド実行環境におけるメモリ管理は、メモリヒープのスイープまたはスキャン中にマネージドスレッドを一時中断することを含むことができる。しかしながら、マネージドスレッドを長期に渡って中断すると、対応するアプリケーションの実行がタイムアウトする可能性がある。
マネージド実行環境においてアプリケーション、プログラム、メソッド、関数、または他のコードアセンブリの部分を実行することは、少なくとも潜在的なメモリ管理の実装規模によって影響を受ける可能性がある。
マネージド実行環境におけるロードバランシングを添付図面に従って説明する。
本明細書ではロードバランシングを説明する。より詳細には本説明は、アプリケーション、プログラム、メソッド、関数、または他のコードアセンブリの少なくとも一部の或る特定の振る舞いを、それぞれの実行環境における潜在的なメモリ管理の実装規模に少なくとも関係するデータに基づいて制御することに関する。
この「発明を実施するための最良の形態」の文脈で、およびオブジェクト指向プログラミングに関連して、メソッドをオブジェクトが実施する処理と考えることができる。従って、例えば、メッセージをオブジェクトに送信するとそのメソッドが実装される。
本明細書で説明する「プロセス」は、アプリケーション、プログラム、関数、または他のプログラム可能コードおよび実行可能コードのアセンブリのモジュールまたはコードアセンブリを実際に実行することを指すことができる。
本明細書で説明する「アセンブリ」は、コードの展開単位を指すことができ、版管理可能であるかまたはできない。
本明細書で説明する「リソース」は、所与のコンピューティング環境に関連付けられる物理的および論理的なリソースの両方を含むことができる。非限定的な例として、上記のリソースの範囲はファイルからポート、共有状態に渡ることができる。即ち上記のリソースは、複数の実行可能エンティティが共有しうる任意の実行不能エンティティであることができる。
本明細書で説明する「スレッド」は、アプリケーション、プログラム、関数、または他のプログラム可能および実行可能なコードアセンブリ内部の実行パスを指すことができる。スレッドにより、実行可能命令モジュールの複数の実行パスまたは実行ストリームが同一のアプリケーション、プログラム、関数、または他のプログラム可能および実行可能なコードアセンブリ内部で並列に生ずることができ、それにより、それぞれのストリーム内部で、様々なトランザクションまたはメッセージを処理することができる。マルチタスキングまたはマルチプロセッシング環境の中でマルチスレッディングプロセスを実行することができる。マルチタスキングまたはマルチプロセッシング環境は、マネージド実行環境またはアンマネージド実行環境に見出すことができる。
本明細書で説明する「分離境界」は、分離の単位としての役割を果たす論理的または物理的な構成概念を指すことができる。プロセスは分離境界の例である。マネージド実行環境内部では、上記の分離境界をアプリケーションドメインと呼ぶことができる。アプリケーションドメインに複数の実行スレッドを含めることができる。上記の用語は例として与えたに過ぎない。即ち、本明細書で説明する実装例はアプリケーションドメインに限定されず、または上述のマネージド実行環境にも限定されず、むしろ他の実行環境内の様々な他の分離境界実行内部で適用することができる。より詳細には、本明細書で説明したリソース配分の範囲はさらにマシン境界、プロセス境界、スレッド、およびクラス境界またはアセンブリ境界に関連することができる。さらに詳細には、リソース配分の範囲はパブリック/プライベートな公開、アセンブリ、またはクラスに関連することができる。さらに、リソース配分は複数の軸またはアノテーションを有することができ、それらには例えばリソースタイプおよびリソースの可視性が含まれる。
分離境界により、その中で実行されるコードを特定の情報源からロードすることができる。分離境界は、他の上記分離境界と独立に停止することができ、その中で発生した障害がプロセス内部の他の分離境界に影響を及ぼさないように分離境界内部の処理を分離することができる。より詳細には、他の分離境界がリソースに対する変更を認識しないか、またはシリアライズされた原子的な方法でリソースを認識するかのいずれかである限り、分離境界はその中のリソースの消費を分離することができる。
図1は処理ノードを有するネットワーク環境の例100を示す。処理ノードは、様々な個数および組合せで互いに通信して、1つまたは複数のロードバランシングの例を実装することができる。しかしながら、ロードバランシングの実装はネットワーク環境内のノードに限定されない。図1のネットワーク環境の例において、クライアント装置105、サーバ装置110Aおよび110B、および「その他」装置115をネットワーク125経由で互いに通信可能に接続することができる。さらに、クライアント装置105、サーバ装置110Aおよび110B、ならびに「その他」装置115の少なくとも1つは本明細書で説明するようにロードバランシング120を実装することができる。
クライアント装置105は多数の従来のコンピューティング装置のうち少なくとも1つであることができ、デスクトップパーソナルコンピュータ(PC)、ワークステーション、メインフレームコンピュータ、インターネット機器、およびセットトップボックスが含まれる。さらに、クライアント装置105は有線および/または無線リンクによりネットワーク125と関連付け可能な少なくとも1つの装置であることができ、携帯情報端末(PDA)、ラップトップコンピュータ、携帯電話、等が含まれる。さらに、クライアント装置105は様々な個数および/または組合せでの上述のクライアント装置を表すことができる。「その他」装置115を、任意の上記例のクライアント装置105で具体化することもできる。
サーバ装置110Aおよび110Bは任意の様々なデータおよび/または機能性を、ロードバランシング120の少なくとも1つの実装に従って、クライアント装置105または「その他」装置115に与えることができる。データは公に利用可能であるかまたはもう一つの選択しとしてデータを制限することができる。例えばデータを或る特定のユーザにのみ制限すること、または適切な受信料またはライセンス料を支払う場合にのみ制限することができる。サーバ装置110Aおよび110Bのいずれかは、様々な個数および/または組合せでのネットワークサーバ、アプリケーションサーバ、またはブレードサーバであることができる。一般に、サーバ装置110Aおよび110Bはコンテンツ源の役割を果たし、クライアント装置105は上記コンテンツをネットワーク125経由またはオフラインのいずれかで受信する。しかしながら、本明細書で説明する実装例によると、クライアント装置105ならびにサーバ装置110Aおよび110Bは交互にネットワーク環境100内でノードを送受信することができる。さらに、ロードバランシング120の少なくとも1つの例によると、サーバ装置110Aおよび110Bをネットワーク125上の多数のサーバ装置の1つとして実装することができる。上記構成を非公式に「サーバファーム」と見なすことができる。上記のサーバファームでは、2つ以上のネットワークサーバは同一のアプリケーション、プログラム、関数、または他のプログラム可能および実行可能なコードアセンブリの少なくとも一部の実行を共有することができる。さらに、「その他」装置115を任意の上記例のサーバ装置110Aおよび110Bにより具体化することもできる。
「その他」装置115は、本明細書で説明する1つまたは複数の例に従ってロードバランシング120を実装可能な任意の更なる装置であることができる。即ち、「その他」装置115は、少なくともマネージド実行環境においてアプリケーション、プログラム、関数、または他のプログラム可能および実行可能なコードアセンブリの少なくとも一部に対するロードバランシング120を実装可能な、ソフトウェア対応コンピューティング装置または処理装置であることができる。より詳細には、「その他」装置115はロードバランサの役割を果たすことができる。ロードバランサとして、「その他」装置115を、クライアント装置105またはサーバ装置110Aおよび110Bのいずれかから物理的に独立したハードウェア装置として実装することができる。または、「その他」装置115を、クライアント装置105またはサーバ装置110Aおよび110Bの少なくとも1つにおけるファームウェアまたはソフトウェアとして実装することができる。従って、「その他」装置115は、オペレーティングシステム、インタープリタ、コンバータ、コンパイラ、またはそれらの上に実装したランタイム実行環境の少なくとも1つを有するコンピューティング装置、処理装置、またはサーバ装置であることができる。これらの例は決して限定的であることを意図しておらず、従ってそのように解釈すべきではない。
ネットワーク125は任意の様々な従来のネットワークのトポロジおよび型を表すことができ、有線および/または無線ネットワークを含むことができる。ネットワーク125はさらに、パブリックおよび/または独自のプロトコルを含む任意の様々な従来のネットワークプロトコルを利用することができる。ネットワーク125は例えば、インターネットおよび、802.11システムのような1つまたは複数のローカルエリアネットワーク(個々に「LAN」とも呼ばれる)の少なくとも一部、Bluetoothのようなパーソナルエリアネットワーク(即ち「PAN」)を含むことができる。
装置105、110A、110B、および115の少なくとも1つにおけるコンピュータアーキテクチャは一般に、コンピューティングプラットフォームをハードウェアおよびソフトウェアの観点で定義している。コンピューティング装置に対するソフトウェアは、機能に基づいてグループに分類される。そのグループは、ハードウェア抽象化層(または「HAL」と呼ばれる)、オペレーティングシステム(または「OS」と呼ばれる)、およびアプリケーションを含む。
ランタイム実行環境は分離空間を指すことができ、OSとアプリケーションとの間に存在することができる。ランタイム実行環境においてアプリケーションは特定のタスクを、少なくとも1つの処理装置105、1つまたは複数のサーバ装置110Aおよび110B、または他の装置115で実行することができる。より詳細にはランタイム実行環境は、サーバ、デスクトップコンピュータ、ラップトップコンピュータ、移動体処理装置、セットトップボックス、およびゲームコンソールを含む処理装置が拡大する範囲で、上記処理装置で実行中のアプリケーションに抽象化層およびサービスを与え、さらにアプリケーションにそのメモリ管理および構成を含む能力を与えることによりアプリケーション実行の信頬性を高めることを意図している。
ランタイム実行環境はアプリケーションプログラミングおよびアプリケーション実行プラットフォームのうち少なくとも1つとしての役割を果たすことができる。
アプリケーションプログラミングプラットフォームとして、ランタイム実行環境は、複数のコンピューティング言語の1つで書くことが可能なターゲットアプリケーションを中間言語(以降、「IL」)にコンパイルすることができる。ILは一般にプラットフォームと独立であり、中央演算装置(以降、「CPU」)がILを実行する。実際、ILは多数のCPUのマシン語よりも高レベルである。
アプリケーション実行プラットフォームとして、ランタイム実行環境はILを解釈してネイティブなマシン命令にコンパイルすることができる。ランタイム実行環境はインタープリタまたは「ジャストインタイム」(以降、「JIT」)コンパイラのいずれかを利用して上記命令を実行することができる。または、ネイティブプラットフォーム実行形式ではなくIL形式でランタイム実行環境に配布し、既にアセンブリ、メソッド、または型の任意の1つにコンパイルした中間言語のコード(即ち、「IL」)をランタイム実行環境は実行、読み出し、解釈、または分析することができる。上記ILの情報源を、装置105、110、および115と同一または別個のものにおける非マネージド実行環境またはランタイム実行環境の別実装のいずれかにおいて処理することができる。情報源はILを、ILが対応するアプリケーション、プログラム、関数、または他のプログラム可能および実行可能なコードアセンブリのインストール時またはインストール前に展開することができる。
それと関係なく、ネイティブマシン命令を次いでCPUにより直接実行することができる。ILはCPU独立なので、そのCPUプラットフォーム上で実行中のOSが適切なランタイム実行環境をホストする限り、ILをCPUプラットフォーム上で実行することができる。ロードバランシング120が関連しうるランタイム環境の例には、VisualBasicランタイム環境、例えばJava(登録商標)(R)のルーチンの実行に用いるJava(登録商標)(R)仮想マシンランタイム環境、または例えばマイクロソフト.NETTMアプリケーションをルーチン呼び出しの実行前にマシン語にコンパイルする共通言語ランタイム(CLR)が含まれる。しかしながら上記のリストは例を与えるに過ぎない。実装例はこれらのマネージド実行環境にのみには限定されない。さらに、1つまたは複数の例をテスト環境および/またはアンマネージド実行環境内部で実装できるので、実装例はマネージド実行環境にのみは限定されない。
ILにコンパイルされるアプリケーションを「マネージドコード」と呼ぶことができ、従ってランタイム実行環境を代替的に「マネージド実行環境」と称することができる。マネージドコードの一部を「マネージドイメージ」と呼ぶことができる。実行にランタイム実行環境を利用しないコードをネイティブコードアプリケーションと呼ぶことができる。
図2は、ロードバランシングの例120(図1を参照)を実装可能なランタイム実行環境の例200を示す。
少なくとも1つの実装例によると、ランタイム実行環境200は、コンピューティング装置プラットフォームに対してマネージドコードの実行を促進することができる。マネージドコードを、アプリケーション開発技術のコアセットの一部であると考えることができ、さらにランタイム実行環境200での実行に対しコンパイルされて対応するサービスをそのコンピューティング装置プラットフォームに提供するコードと見なすことができる。加えて、ランタイム実行環境200は解釈レベルにあるマネージドコードを、プロセッサがプロキシして次いで実行する命令に変換することができる。ランタイム実行環境200に対するフレームワークはクラスライブラリを与えることもできる。そのクラスライブラリは、マネージドアプリケーションに対するソフトウェアビルディングブロックと見なすことができる。
さらなる実装例によるとランタイム実行環境200は、カーネルから期待できる少なくとも部分的な機能性を与えることができる。カーネルは、装置105、110A、110B、および115のうち任意の特定のものに対するリソース制限に依存して、コンピューティング装置プラットフォームを欠くことができるかまたは欠いてはならない。従って、ランタイム実行環境200の少なくとも1つの例は、入出力(以降、「I/O」)ルーチン管理、メモリ管理、認証、およびサービスルーチン管理を実装することができる。従って、ランタイム実行環境200はI/Oコンポーネント205、少なくとも1つのメモリマネージャ210、アドミニストレータ215、および実行コンポーネント220を含むことができる。これらのコンポーネントは、以下でさらに詳細に説明するが、例として与えるに過ぎない。即ち、その例は任意の特定の実装に限定されるとは意図しておらず、そのように推測するべきではない。さらにコンポーネントを、様々な組合せおよび構成でのランタイム実行環境200の例で実装することができる。
ランタイム実行環境200のI/Oコンポーネント205は、コンピューティング装置プラットフォームに関連付けたデータ源(即ち、プロセッサおよび周辺機器)に非同期にアクセスすることができる。図1に関して上述した1つまたは複数の装置105、110A、110B、および115が上記データ源の例でありうる。より詳細には、I/Oコンポーネント205はランタイム実行環境200に対して、堅牢なシステムスループット、およびI/O要求の発生元であるコードの更なるストリームラインの性能を与えることができる。
メモリマネージャ210は、「ガベージコレクタ」と見なされる、ランタイム実行環境200内部のモジュールまたはランタイム実行環境200に関連付けたモジュールを指すことができる。ガベージコレクション(または、以降で「GC」と称する)を、マネージドコード実行環境の堅牢な特徴と見なすことができる。「GC」により、オブジェクトがどのアプリケーションによっても使用されない場合、メモリヒープのスイープまたはスキャンの際にオブジェクトが解放(即ち、割り当て解除)される。メモリマネージャ210の少なくとも1つの例において、フリーメモリヒープのスイープを線形探索として実装することができる。上記の実装は、メモリサイズが制限され、対応する装置のユーザがスイープの完了の遅延を認識可能なコンピューティング装置プラットフォームの例に良く適している。
メモリマネージャ210の例は「並列GC」の機能性を実装することができ、それによりメモリヒープのスイープまたはスキャン中にマネージドスレッドは実行を継続することができる。即ち、割当解除中に、並列GCにより割当てを並行して継続することができる。並列GCの機能性(または本発明では「並列GC」と称する)は対話またはGUl(グラフィカルユーザインタフェース)ベースのアプリケーションに適している。
しかしながら、ロードバランシング120は並列GCの機能性に関連できるが、ロードバランシング120の本実装例を非並列GCの機能性のコンテクストで説明する。非並列GCの機能性により、1つまたは複数のマネージドスレッドをメモリヒープのスイープまたはスキャン中に中断することができる。
メモリマネージャ210が実装する更なる機能は、一定の揮発性RAMの1つまたは複数の連続ブロック(即ち、メモリヒープ)の記憶あるいはコンピューティング装置プラットフォーム上で実行中のタスクの間で一連の連続メモリブロックを管理すること、コンピューティング装置プラットフォーム上で実行中の少なくとも1つのアプリケーションにメモリを割り当てること、少なくとも1つのアプリケーションによる要求に応じてメモリの少なくとも一部を解放すること、および任意のアプリケーションが、任意の他のアプリケーションに割り当てたメモリ空間に強制的にアクセスすることを防止すること、を含むことができる。
アドミニストレータ215は、アプリケーション、プログラム、メソッド、関数、または他のプログラム可能および実行可能なコードのアセンブリを少なくとも一部を受信してランタイム実行環境200内で実行する役割を果たす、ランタイム実行環境220内部のモジュールまたはランタイム実行環境220に関連付けたモジュールを指すことができる。さらに、ロードバランシング120の少なくとも1つの実装例に従ってアドミニストレータ215はメモリマネージャ210と協調して、ランタイム実行環境220内部のアプリケーション、プログラム、メソッド、関数、または他のプログラム可能および実行可能なコードのアセンブリの振る舞いを、コンパイル時、初期実行時、またはそれ以降のアプリケーション実行中の任意の時点に制御することができる。
実行コンポーネント220は、コンピューティング装置プラットフォームに対するマネージドコード実行を可能とする役割を果たす、ランタイム実行環境200内部のモジュールまたはランタイム実行環境200に関連付けたモジュールを指すことができる。実行コンポーネント220を、アプリケーションのコード実行を実装する環境、およびランタイムサービス(例えば、装置アクセスおよびメモリ管理)を提供可能な環境と見なすことができる。
図3は、ロードバランシング120の実装例(図1を参照)に従うデータフローの例300を示す。データフローの例300は図1および図2の特徴を参照して記述してあるが、上記の実装は例として与えるに過ぎず、限定的に解釈するようには意図していない。
プロセス305A、305B、および305Cを、上述の「分離境界」の説明に少なくとも従って、論理的または物理的な構成概念と見なすことができる。従って、プロセス305A、305B、および305Cは、ロードバランシング120の様々な実装に従って、マシン境界、プロセス境界、スレッド、アプリケーションドメイン、およびクラス境界またはアセンブリ境界に関連することができる。さらに、ロードバランシング120の実装は3つの上記構成概念(即ち、305A、305B、および305C)に決して限定されず、本明細書では説明の目的で図示および説明するに過ぎない。
例として、プロセス305A、305B、および305Cは複数のサーバ(即ち、マシン境界)に関連することができる。ハードウェアとして実装すると、サーバ305A、305B、および305Cは別個のハードウェア装置であることができ、それらの上で少なくとも1つのランタイム実行環境200がアプリケーション実行プラットフォームとして実行されている。ソフトウェアサーバとして実装すると、プロセス305A、305B、および305Cは、ランタイム実行環境200の実装により実行されている共通アプリケーション、プログラム、メソッド、関数、またはプログラム可能および実行可能コードのアセンブリの、モジュール型コンポーネントであることができる。
メモリ管理データ310は、プロセス305A、305B、および305Cの少なくとも1つから生じ、差し迫ったメモリヒープのスイープまたはスキャン(即ち、GC)を参照するデータを含み、ランタイム実行環境200の実装が実行中のアプリケーション、プログラム、メソッド、関数、または他のコードアセンブリが使用しない1つまたは複数のオブジェクトを解放(即ち、割当解除)することができる。
プロセス305A、305B、および305Cを別個のハードウェア装置として実装する例では、メモリ管理データ310は、1つまたは複数の上記装置で実行されるランタイム実行環境200の実装から生ずることができる。プロセス305A、305B、および305Cを共通アプリケーション、プログラム、メソッド、関数、またはプログラム可能および実行可能なコードのアセンブリの、モジュール型コンポーネントとして実装する例では、メモリ管理データ310は、そのモジュール型コンポーネントが実行中のランタイム実行環境200の実装から生ずることができる。より詳細には、上記の例ではメモリ管理データ310はメモリマネージャ210またはアドミニストレータモジュール215から単独または複合的に生ずることができる。
メモリ管理データ310は、様々なシステムアーキテクチャのアプリケーションプログラムインタフェース(API)と互換性のある1つまたは複数のAPIを用いてトランザクションを実装することができる。より詳細には、メモリ管理データ310に対応するAPIは、ロードバランシング120の様々な実装に従って、プロセス305A、305B、および305Cの間で(即ち、マシン境界、プロセス境界、スレッド、アプリケーションドメイン、およびクラス境界またはアセンブリ境界に渡って)ロードバランシングを開始することができる。本明細書で説明したように、APIを、アプリケーション、プログラム、メソッド、関数、または他のプログラム可能および実行可能なコードのアセンブリが使用してランタイム実行環境200またはオペレーティングシステムによりプロシージャの性能を制御する1つまたは複数のルーチンと見なすことができる。
メモリ管理データ310は、メモリマネージャ210またはアドミニストレータモジュール215が単独または複合的に実装する1つまたは複数のAPIを含むことができる。以下で列挙および説明する上記APIの命名法は説明の目的で与えたものであり、非限定的な例として与えたものである。
MaxGenerationNotifierは、そのインスタンス化の意図が、ランタイム実行環境200の特定の実装が実行中の同一または別のアプリケーション、プログラム、メソッド、関数、または他のコードアセンブリの少なくとも一部を再配分するようロードバランサ315に指示することでありうるクラスを指すことができる。より詳細には、メモリマネージャ210またはアドミニストレータ215が単独または複合的に、ランタイム実行環境200上の差し迫ったGCがランタイム実行環境200上の同一または別のアプリケーション、プログラム、メソッド、関数、または他のコードアセンブリの実行をタイムアウトさせる程長く実行する可能性があることを検出するときに、MaxGenerationNotifierをインスタンス化することができる。上記の検出は、現在のアプリケーション、プログラム、メソッド、関数、または他のコードアセンブリを実行する間におけるメモリヒープの閾値量の割当てに基づくことができる。次いで効率的に、MaxGenerationNotifierのインスタンス化によりロードバランサにランタイム実行環境200の状態を事前に通知することができる。
より詳細には、メモリマネージャ210またはアドミニストレータ215が単独または複合的に、差し迫ったGCが論理的または物理的な大きさだけ閾値を将来超過する可能性があると検出するときに、MaxGenerationNotifierをインスタンス化することができる。例えば、メモリマネージャ210またはアドミニストレータ215が単独または複合的に、差し迫ったGCが後世代のGCの実装であり、従って現在利用可能な処理能力下で許容される最大量(即ち、2GB)のヒープをスイープまたはスキャンする可能性があることを検出するときに、MaxGenerationNotifierをインスタンス化することができる。結果として、メモリヒープのスイープまたはスキャン中にマネージドスレッドが中断される可能性があるので、アプリケーション、プログラム、メソッド、関数、または他のコードアセンブリは後世代GCの完了前にタイムアウトする可能性がある。従って上記規模のGCの開始前に、MaxGenerationNotifierをインスタンス化してロードバランサ315に対し、アプリケーション、プログラム、メソッド、関数、または他のコードアセンブリの実行の少なくとも一部を再配布する必要性を少なくとも通知することができる。
勿論、上の2GBのヒープは後世代のGCの例として説明したに過ぎない。MaxGenerationNotifierのインスタンス化に対する触媒として作用しうる差し迫ったGCの規模は無数の要因に基づいて変化することができ、処理能力が向上すると増加することができる。上記の要因は、処理装置の処理能力とGCの予想完了時間とに関連することができる。さらに、実行中のアプリケーション、プログラム、メソッド、関数、または他のコードアセンブリを書いたプログラマの嗜好により、アドミニストレータ215に対して示すように、プログラマが効率性およびセキュリティの問題の少なくとも1つにより動機付けされるとき、MaxGenerationNotifierのインスタンス化を開始することができる。
さらに、MaxGenerationNotifierの少なくとも1つの代替的な実装は、ランタイム実行環境200が実行中の対応するアプリケーション、プログラム、メソッド、関数、または他のコードアセンブリの少なくとも一部に対する実行をリダイレクトする1つまたは複数の特定の命令を含むことができる。
MaxGenerationNotifierは、そのインスタンス化の意図が、MaxGenerationNotifierがインスタンス化したGCの完了をロードバランサ315に通知することであるクラスを指すことができる。従って、MaxGenerationNotifierのインスタンス化は、実行中のアプリケーション、プログラム、メソッド、関数、または他のコードアセンブリの1つまたは複数の部分の再配分をランタイム実行環境200による実行に悪影響を与えずに停止できることを、ロードバランサ315に通知する役割を果たすことができる。より詳細には、メモリマネージャ210またはアドミニストレータ215が単独または複合的に、直近のMaxGenerationNotifierのインスタンス化の触媒の役割を果たすGCの完了、MaxGenerationNotifierのインスタンス化から経過した所定の閾値時間、あるいは別のプログラムしたコードモジュールが現在実行中のアプリケーション、プログラム、メソッド、関数、または他のコードアセンブリに対して実行されること、のうち少なくとも1つを検出するときにMaxGenerationNotifierをインスタンス化することができる。
ロードバランサ315は、クライアント装置105のいずれかから物理的に独立したハードウェア装置、あるいはクライアント装置105またはサーバ装置110Aおよび110Bのうち少なくとも1つの上のファームウェアまたはソフトウェアコンポーネントのいずれかを指すことができる。
MaxGenerationNotifierのインスタンス化の際、ロードバランサ315は現在実行中のアプリケーション、プログラム、メソッド、関数、または他のコードアセンブリの少なくとも一部の処理を再配分して、GC中のタイムアウトを回避することができる。例えば、プロセス305A上の差し迫ったGCを参照するMaxGenerationNotifierのインスタンス化を含むメモリ管理データ310の受信時に、ロードバランサ315は同一または別の現在実行中のアプリケーション、プログラム、メソッド、関数、または他のコードアセンブリの一部を実行する1つまたは複数の要求を受信し、上記実行をプロセス305Bおよびプロセス305Cのうち少なくとも1つにリダイレクトすることができる。
MaxGenerationNotifierのインスタンス化の際、ロードバランサ315は現在実行中のアプリケーション、プログラム、メソッド、関数、または他のコードアセンブリの部分の処理をプロセス305Bおよびプロセス305Cに再配分することを中止することができる。従って、ロードバランサ315は、プロセス305A上で実行される現在実行中のアプリケーション、プログラム、メソッド、関数、または他のコードアセンブリを均衡させる選択肢を有することができる。
データフロー300の少なくとも1つの代替的な実装にはロードバランサ315は含まれない。即ち、上記の代替的な実装はプロセス305A、305B、および305Cを有することでロードバランシングを実現する。
図4は、少なくとも1つのロードバランシング120の実装例(図1を参照)に対応する処理フローの例400を示す。処理フローの例400を図1−3からの特徴を参照して以下で説明するが、上記の実装は例として与えるに過ぎず、限定的に解釈されるようには意図していない。
ブロック405は、単独または様々な組合せで協調的にプロセス305A、プロセス305B、またはプロセス305Cの一部として実装されているアプリケーション、プログラム、メソッド、関数、または他のコードアセンブリの少なくとも一部の実行を指すことができる。ブロック405はマネージド実行環境(即ち、ランタイム実行環境200)での実行を指すことができるが、ロードバランシング120はそのように限定されない。
ブロック410は、メモリマネージャ210またはアドミニストレータ215が単独または共同で、現在実行しているアプリケーション、プログラム、メソッド、関数、または他のコードアセンブリの実行中に閾値量のヒープが既に割当てられ従ってGCが差し迫っていることの決定を指すことができる。またはブロック410は、メモリマネージャ210またはアドミニストレータ215が単独または共同で、プログラムコードの少なくとも一部を検査してランタイム実行環境200が実行中の処理装置のメモリヒープのスイープまたはスキャンが差し迫っていることの決定を指すことができる。
判定415は、メモリマネージャ210またはアドミニストレータ215が単独または共同で、所定閾値と比較して予想されるGCの実装規模を評価することを指すことができる。その評価を行って、メモリヒープの物理的な規模が、現在実行中のアプリケーション、プログラム、メソッド、関数、または他のコードアセンブリの実行をタイムアウトさせうる所定閾値(例えば、2GBまたはそれ以上)を超過するかどうかを決定することができる。1つの代替手段によるとその評価を、タイムアウトを回避するための所定時間閾値に対するGCの予想完了時間から構成することができる。さらに別の例によるとその評価はプログラムコードの少なくとも一部の検査を含むこともでき、そのプログラムコードは、差し迫ったGCが実行中のアプリケーション、プログラム、メソッド、関数、または他のコードアセンブリを再配分する少なくとも一部のための触媒の役割を果たすよう故意に意図されるかどうかを決定する。
否定判定415に続くブロック420Aは、メモリマネージャ210が、プロセス305A、305B、または305Cのうちホストプロセスであるものの上で実行中のアプリケーション、プログラム、メソッド、関数、または他のコードアセンブリに対するGCを実装することを指すことができる。処理フローは次いでブロック405に戻り、現在実行中のアプリケーション、プログラム、メソッド、関数、または他のコードアセンブリの実行を継続することができる。
肯定判定415に続くブロック425は、メモリマネージャ210またはアドミニストレータ215が単独または共同で、予想したGCが所定の閾値を満足または超過することをロードバランサ315に通知することを指すことができる。即ち、予想したGCの論理または物理パラメータの閾値超過が期待されると決定すると、マネージメントモジュール210またはアドミニストレータ215は単独または共同で、差し迫ったGCが現在実行中のアプリケーション、プログラム、メソッド、関数、または他のコードアセンブリに対してタイムアウトを引き起こしうることをロードバランサに通知することができる。さらに詳細には、マネージメントモジュール210またはアドミニストレータ215は単独または共同で、予想した状態を通知するAPI(例えば、MaxGenerationNotifier)をインスタンス化することができる。
ブロック425の少なくとも1つの代替的な実装において、メモリマネージャ210またはアドミニストレータ215は単独または共同で、別の形で通知を行うことができる。例えば、その通知は、メモリマネージャ210またはアドミニストレータ215で以前に登録したプロセス305A、プロセス305B、またはプロセス305Cの一部として実行されるアプリケーション、プログラム、メソッド、関数、または他のコードアセンブリの呼び出しを含むイベントであることができる。
上記の通知イベントの例は、単独または共同でメモリマネージャ310またはアドミニストレータ215を通して1つまたは複数のメモリ管理イベント(例えば、MaxGenerationNotifier)を監視する図3のプロセス305A、305B、および305Cの各々を含むことができる。例えば、プロセス305Aは、MaxGenNotifierがメモリマネージャ210またはアドミニストレータ215により単体または共同で発行されたときに呼び出し可能な2つの関数を実装することができる。上記の呼び出しの非限定的な例を以下に示す。
(1) GC.MaxGenerationNotifier += new
MaxGenerationNotificationHandler(On_MaxGeneration_Notify1)
(2) GC.MaxGenerationNotifier += new
MaxGenerationNotificationHandler(On_MaxGeneration_Notify2)
ここで、MaxGeneration_Notify1およびMaxGeneration_Notify2は前述の関数である。さらに、関数MaxGeneration_Notify1およびMaxGeneration_Notify2はロードバランサ315に監視イベントを通知することができる。従って、監視イベントが発生すると、ロードバランサ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の少なくとも1つに再配分することを指すことができ、ブロック420Aは、メモリマネージャ210がホストプロセス305A上でGCを実施することを指すことができる。
ブロック435は、メモリマネージャ210またはアドミニストレータ215が単独または共同でGCの完了をロードバランサ315に通知することを指すことができる。通知には、現在のロードバランシングの実施を中止する命令を含むことができるかまたは含むことができない。さらに詳細には、管理モジュール210またはアドミニストレータ215は単独または共同で、現在の状態を通知するAPI(例えば、MaxGenerationNotifier)をインスタンス化することができる。処理フローは次いでブロック405に戻り、現在実行中のアプリケーション、プログラム、メソッド、関数、または他のコードアセンブリの実行を継続することができる。
ブロック425での処理と同様に、通知イベントは、単独または共同でメモリ210またはアドミニストレータ215を通して1つまたは複数のメモリ管理イベント(例えば、MaxGenerationCompleteNotifier)をサブスクライブする図3のプロセス305A、305B、および305Cの各々を含むことができる。従って例えば、プロセス305Aは、MaxGenCompleteNotifierがメモリマネージャ210またはアドミニストレータ215により単独または共同で発行されたときに呼び出し可能な2つの関数を実装することができる。上記の呼び出しの非限定的な例を以下に示す。
(1) 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は要求に応じてロードバランサ315を少なくとも一時的に中止することができる。
図1−4に関連して上述したランタイム実行環境上で実行される1つまたは複数のアプリケーションに関するロードバランシングは、メモリ管理データに関連付けたデータに従って実装することができる。しかしながら、本明細書で説明した限定の例はメモリ管理データに基づくロードバランシングのみに限定されない。むしろ、通知(即ち、ノーティフィケーション)は無数の論理的および物理的基準に基づくロードバランシングを実施するようにインスタンス化することができる。
上述した任意の例および実装に対するコンピュータ環境は、例えば、1つまたは複数のプロセッサまたは演算装置、システムメモリ、および様々なシステムコンポーネントを接続するシステムバスを有するコンピューティング装置を含むことができる。
コンピューティング装置は様々なコンピュータ読取可能媒体を含むことができる。コンピュータ読取可能媒体には、揮発性および不揮発性媒体、取り外し可能および取り外し不能媒体の両方が含まれる。システムメモリはコンピュータ読取可能媒体を、ランダムアクセスメモリ(RAM)のような揮発性メモリ、および/あるいは読取専用メモリ(ROM)またはフラッシュRAMのような形態で含むことができる。コンピュータがアクセス可能なデータを記憶できる他種のコンピュータ読取可能媒体を利用して、コンピューティングシステムおよび環境の例を実装できることは理解できる。その他種のコンピュータ読取可能媒体には例えば、磁気カセットまたは他の磁気記憶装置、フラッシュメモリカード、CD−ROM、デジタル多用途ディスク(DVD)または他の光学記憶、ランダムアクセスメモリ(RAM)、読取専用メモリ(ROM)、電気的消去プログラム可能型読取専用メモリ(EEPROM)等がある。
本出願を通して言及した「例」、「代替例」、「少なくとも1つの例」、「実装」、「実装例」は、本発明の少なくとも1つの実装に含まれる特定の説明した特徴、構造、または特性を意味する。従って、上記句の使用は複数の実装を指すことができる。さらに、説明した特徴、構造、または特性を1つまたは複数の実装において適切な任意の方法で組み合わせることができる。
しかしながら当業界の技術者は、本発明を1つまたは複数の特定の詳細なしに、または他の方法、リソース、材料、等とともに実践できることを認識するであろう。他の事例では、本発明の態様が不明瞭になることを単に避けるため、公知の構造、リソース、または操作を図示または説明していない。
本発明の実装例および応用例を図示および説明してきたが、本発明は上述した構成およびリソースに正確に限定されないことは理解されるべきである。当業界の技術者に明らかな様々な修正、変更、および変形を、上述および添付請求項で説明する本発明の範囲から逸脱せずに、本明細書で開示した本発明の方法およびシステムの配置、操作、および詳細において行うことができる。
ロードバランシング技術の例を実装する装置とネットワーク上で通信する装置である。 ロードバランシング技術の例を実装する実行環境の例である。 ロードバランシングの実装例に従うデータノード間のデータフローの例である。 ロードバランシングの実装例に従う処理フローの例である。

Claims (14)

  1. コンピュータによって実行される方法であって、
    特定の分離境界においてマネージドコードを実行するステップと、
    前記マネージドコードの実行中にヒープメモリの割当てを監視するステップと、
    前記監視に基づいて、前記マネージドコードの実行により前記ヒープメモリのガベージコレクションが差し迫っていると決定することと、
    前記差し迫っているガベージコレクションの規模、該差し迫ったガベージコレクションの完了の前に前記マネージドコードの実行をタイムアウトさせることとなる閾値を超過するかどうかを決定するステップと、
    前記規模が前記閾値を超過すると決定したことに応答して、前記マネージドコードの少なくとも一部の実行を別の分離境界に再配分する必要があることを示す通知を送信するステップ
    を含むことを特徴とする方法。
  2. 前記通知は、ロードバランサに送信されることを特徴とする請求項1に記載の方法。
  3. 前記通知は、前記差し迫ったガベージコレクションの間に前記マネージドコードの実行が中断されることにより、前記マネージドコードの実行がタイムアウトすることを示す指示を含むことを特徴とする請求項1に記載の方法。
  4. 前記特定分離境界はプロセスであり、前記別の分離境界は前記プロセスとは別のプロセスであり、前記通知は、前記マネージドコードの少なくとも一部の実行を、前記プロセスから前記別のプロセスに再配分させる命令を含むことを特徴とする請求項1に記載の方法。
  5. 前記通知に基づいて、前記アプリケーションの前記少なくとも一部の実行を前記別の分離境界に再配分するステップをさらに含むことを特徴とする請求項1に記載の方法。
  6. 前記通知は、前記マネージドコード少なくとも一部の実行を、別のサーバに再配分させる命令を含むことを特徴とする請求項1に記載の方法。
  7. ロセッサによって実行されると、該プロセッサに、
    特定の分離境界においてマネージドコードを実行することと、
    前記マネージドコードの実行中ヒープメモリ割当てを監視することと
    前記監視に基づいて、前記マネージドコードの実行により前記ヒープメモリのガベージコレクションが差し迫っていると決定することと、
    前記差し迫っているガベージコレクションの規模、該差し迫ったガベージコレクションの完了の前に前記マネージドコードの実行をタイムアウトさせることとなる閾値を超過するかどうかを決定することと
    前記規模が前記閾値を超過すると決定したことに応答して、前記マネージドコードの少なくとも一部の実行を別の分離境界に再配分する必要があることを示す通知を送信すること
    を実行させるプログラムを記録したことを特徴とするコンピュータ読取可能記憶媒体。
  8. 記通知は、ロードバランサに対して送信さることを特徴とする請求項に記載のコンピュータ読取可能記憶媒体。
  9. 記通前記差し迫ったガベージコレクションにより、該差し迫ったガベージコレクションの間に実行が中断される前記マネージドコードタイムアウトすることとなることを示す指示を含むことを特徴とする請求項に記載のコンピュータ読取可能記憶媒体。
  10. 前記特定の分離境界はプロセスであり、前記別の分離境界は、前記プロセスとは別のプロセスであり、記通、前記ネージドコードの少なくとも一部実行前記プロセスから前記別のプロセスに再配分させる命令を含むことを特徴とする請求項に記載のコンピュータ読取可能記憶媒体。
  11. 記通、前記マネージドコードの少なくとも一部実行を、別のサーバに再配分させる命令を含むことを特徴とする請求項に記載のコンピュータ読取可能記憶媒体。
  12. 特定の分離境界においてマネージドコードを実行するプロセッサと、
    前記マネージドコードの実行中ヒープメモリ割当てを監視し、該監視に基づいて、前記マネージドコードの実行により前記ヒープメモリのガベージコレクションが差し迫っていると決定したとき、前記差し迫っているガベージコレクションの規模が、該差し迫ったガベージコレクションの完了の前に前記マネージドコードをタイムアウトさせることとなる閾値を超過するかどうかを決定する手段と、
    前記規模前記閾値を超過すると決定したとき、前記マネージドコードの少なくとも一部の実行を別の分離境界に再配分する必要があることを示す通知を送信する手段と
    前記通知に基づいて、前記マネージドコードの少なくとも一部の実行前記別の分離境界に配分するロードバランサと
    を備えたことを特徴とするシステム。
  13. 記通前記差し迫ったガベージコレクションにより、該差し迫ったガベージコレクションの間に実行が中断される前記マネージドコードがタイムアウトすることとなることを示すことを特徴とする請求項12に記載のシステム。
  14. 前記特定の分離境界はプロセスであり、前記別の分離境界は前記プロセスとは別のプロセスであることを特徴とする請求項12に記載のシステム。
JP2008536593A 2005-10-20 2006-09-28 ロードバランシング Active JP4937266B2 (ja)

Applications Claiming Priority (3)

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

Publications (2)

Publication Number Publication Date
JP2009512936A JP2009512936A (ja) 2009-03-26
JP4937266B2 true JP4937266B2 (ja) 2012-05-23

Family

ID=37962815

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008536593A Active JP4937266B2 (ja) 2005-10-20 2006-09-28 ロードバランシング

Country Status (15)

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

Families Citing this family (30)

* 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
WO2012070292A1 (ja) 2010-11-22 2012-05-31 インターナショナル・ビジネス・マシーンズ・コーポレーション 分散データベースの負荷均衡のためのコネクション配分を実現する情報処理システム、情報処理装置、負荷均衡方法、データベース配置計画方法およびプログラム
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 虛擬機叢集之綠能管理方法
US9483293B2 (en) * 2011-12-30 2016-11-01 Intel Corporation Technology abstraction layer
US9268663B1 (en) * 2012-04-12 2016-02-23 Amazon Technologies, Inc. Software testing analysis and control
US9058428B1 (en) 2012-04-12 2015-06-16 Amazon Technologies, Inc. Software testing using shadow requests
WO2014077637A1 (en) * 2012-11-15 2014-05-22 Samsung Electronics Co., Ltd. User function operation method and electronic device supporting the same
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 阿里巴巴集团控股有限公司 一种内存管理方法以及装置
US10523745B2 (en) * 2015-04-23 2019-12-31 Cisco Technology, Inc. Load balancing mobility with automated fabric architecture
US9547520B1 (en) 2015-09-25 2017-01-17 International Business Machines Corporation Virtual machine load balancing
US10534643B2 (en) 2016-05-09 2020-01-14 Oracle International Corporation Correlation of thread intensity and heap usage to identify heap-hoarding stack traces
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

Family Cites Families (56)

* 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
DE59310083D1 (de) 1993-09-24 2000-09-07 Siemens Ag Verfahren zum Lastausgleich in einem Multiprozessorsystem
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
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
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
JP4202709B2 (ja) * 2002-10-07 2008-12-24 株式会社日立製作所 ストレージ装置を有するネットワークにおける、ボリューム及び障害管理方法
JP4130615B2 (ja) 2003-07-02 2008-08-06 株式会社日立製作所 ストレージ装置を有するネットワークにおける障害情報管理方法及び管理サーバ
GB0302926D0 (en) 2003-02-08 2003-03-12 Grex Games Ltd System architecture and engine for massively multi-user operation
US7406692B2 (en) * 2003-02-24 2008-07-29 Bea Systems, Inc. System and method for server load balancing and server affinity
WO2004099985A1 (ja) * 2003-05-09 2004-11-18 Fujitsu Limited 実行環境の危険予測/回避方法,システム,プログラムおよびその記録媒体
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
JP2008505405A (ja) 2004-06-30 2008-02-21 グレネイル エレクトロニクス インコーポレイテッド 分散型通信プラットフォームにおけるロードバランシング
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

Also Published As

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

Similar Documents

Publication Publication Date Title
JP4937266B2 (ja) ロードバランシング
US7926071B2 (en) Load balancing interfaces
US7441094B2 (en) Memory management configuration
EP2143001B1 (en) Master and subordinate operating system kernels for heterogeneous multiprocessor systems
JP6219512B2 (ja) 仮想ハドゥープマネジャ
US7587492B2 (en) Dynamic performance management for virtual servers
JP5497201B2 (ja) 資源を配分する方法、資源を配分するためのコンピュータ・プログラム、及び資源を配分するシステム
US9946641B2 (en) Memory management model and interface for new applications
US8661447B1 (en) Method and apparatus for managing execution of a plurality of computer tasks based on availability of computer resources
US20080244507A1 (en) Homogeneous Programming For Heterogeneous Multiprocessor Systems
US20080307425A1 (en) Data Processing System and Method
US9785470B2 (en) Memory management model and interface for unmodified applications
US20170017511A1 (en) Method for memory management in virtual machines, and corresponding system and computer program product
JP2013518330A5 (ja)
US8701095B2 (en) Add/remove memory pressure per object
US8713524B2 (en) Memory management configuration
JP2009528589A (ja) 適応コンパイルコード
JP2023538938A (ja) 共用可能なアプリケーションスナップショットの為のコンパイル化戦略
US11360798B2 (en) System and method for internal scalable load service in distributed object storage system
Brumgard et al. PoliMOR
Aldwyan et al. Recovery-Oriented Resource Management in Hybrid Cloud Environments.

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090826

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111025

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120124

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120214

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120221

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150302

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4937266

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250