JP5922703B2 - ハイパーバイザ環境内の仮想マシン間で非常駐リソースの使用を同期させるためのシステムおよび方法 - Google Patents

ハイパーバイザ環境内の仮想マシン間で非常駐リソースの使用を同期させるためのシステムおよび方法 Download PDF

Info

Publication number
JP5922703B2
JP5922703B2 JP2014100308A JP2014100308A JP5922703B2 JP 5922703 B2 JP5922703 B2 JP 5922703B2 JP 2014100308 A JP2014100308 A JP 2014100308A JP 2014100308 A JP2014100308 A JP 2014100308A JP 5922703 B2 JP5922703 B2 JP 5922703B2
Authority
JP
Japan
Prior art keywords
synchronization module
garbage collection
virtual servers
computers
code optimization
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
JP2014100308A
Other languages
English (en)
Other versions
JP2014194801A (ja
Inventor
ガーマーク,ステン
Original Assignee
オラクル・インターナショナル・コーポレイション
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 オラクル・インターナショナル・コーポレイション filed Critical オラクル・インターナショナル・コーポレイション
Publication of JP2014194801A publication Critical patent/JP2014194801A/ja
Application granted granted Critical
Publication of JP5922703B2 publication Critical patent/JP5922703B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • 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
    • 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/45583Memory management, e.g. access or allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)

Description

著作権表示
この特許文献の開示の一部は、著作権保護の対象となる題材を含んでいる。著作権の所有者は、特許商標庁の包袋または記録に掲載されるように特許文献または特許情報開示を誰でも複製できることに対して異議はないが、その他の点では何があってもすべての著作権を保有する。
発明の分野:
本発明は一般にアプリケーションサーバおよび仮想マシンに関し、特にハイパーバイザ内で実行される仮想マシン(たとえば、JVM)間で非常駐リソースの使用を同期させるためのシステムおよび方法に関する。
背景:
ハイパーバイザを用いたサーバ仮想化は、サーバの動作コストを削減しかつエネルギ効率を改善するための有益な技術である。標準的なオペレーティングシステムを有する標準的なサーバおよび異なるサーバアプリケーションは、それら全体が常時使用されるということは滅多にない。ソフトウェアがアイドリング状態にあるときには現行のサーバハードウェアはエネルギ消費量を大幅に減少させることはないので、これはエネルギの無駄に繋がることになる。サーバ仮想化によって、多くの仮想サーバを単一の物理サーバ上で実行でき、したがって、以前は無駄になっていたプロセッサ(cpu)サイクルおよびメモリ)を、その代わりに別の仮想サーバのために用いることができる。これを可能にするソフトウェアのことを本明細書ではハイパーバイザと称する。
オペレーティングシステムおよびサーバアプリケーションが物理ハードウェア上に仮想化されるときには、サーバアプリケーションによりcpuサイクルの使用および/またはメモリの使用が急増する状況に対処するために安全マージンを設けなければならない。サーバアプリケーションリソースの使用がどれほど不安定であるかによって、このマージンは小さい場合もあれば、大きい場合もある。ハイパーバイザ内で実行されるすべての仮想サーバの全体的な不安定さが低ければ、マージンを小さく抑えることができ、より多くの仮想サーバを同一の物理ハードウェア上で信頼性を持って実行できるので、これは一般により大きな余裕をもたらすことになる。
米国特許出願公開第2008/0307183号明細書 国際公開第2008/019380号
現在のところ、多くのサーバアプリケーションは高級言語Java(登録商標)で書かれている。このようなアプリケーションは、Java(登録商標)仮想マシン(Java Virtual Machines)(JVMs)とともに実行される。残念ながら、JVMのcpuサイクルおよびメモリの使用は、かなり不安定であり得て、サーバアプリケーション自体から独立している可能性がある。これは、JVMがJavaヒープをガベージコレクトしなければならず、ホットであると検出されたコードを最適化しなければならないという事実のためである。これらのリソースの使用は、一時的なものであり、相当のものであり得る。
このため、仮想化されたJavaアプリケーションは他のサーバアプリケーションよりも大きな安全マージンを必要とし、これは、仮想化されたJavaサーバアプリケーションの仮想化の余裕が他の種類のサーバアプリケーションの仮想化の余裕よりも少ないことを意味している。これが、本発明の実施例が取組もうとしている分野である。
概要:
ハイパーバイザ内で実行される仮想マシン、たとえばJava仮想マシン(JVM)間で非常駐リソースの使用を同期させるためのシステムおよび方法が本明細書に開示されている。実施例によれば、このシステムは、非常駐プロセッサ(cpu)およびメモリの使用を減らすためにガベージコレクションおよびコード最適化を同期させることができる。実施例によれば、このシステムは、コンピュータと、各々がJVMを実行する仮想サーバを動作させるためのハイパーバイザと、仮想サーバ間の通信チャネルとを備え、各仮想サーバはさらに、常駐および非常駐メモリと、同期モジュールとを備える。実施例によれば、同期モジュールは、重複を最小限に抑えるためにガベージコレクトおよびコード最適化をスケジュールし、それによって、ピーク時の非常駐メモリおよびcpuの使用を減らし、結果として生じるコンピュータ内の非常駐リソースの使用の不安定さを減少させる。別の実施例によれば、クラウドマネージャは、クラウド内のコンピュータの不安定さを最適化するために、仮想サーバをコンピュータ間で移動させることができる。
図面の簡単な説明:
実施例に係る非常駐リソースの使用を同期させるためのシステムの図である。 実施例に係る、ガベージコレクションをいかに前進させることができるかを示すグラフである。 実施例に係る、ラウンドロビンスキームを用いて別個のJVMにおける同時実行のコード最適化をいかに防ぐことができるかを示す図である。 実施例に係る、ガベージコレクトを前進させてコード最適化を延期することによって3つのJVM間で同期をいかに達成するかを示す図である。 実施例に係る、達成された同期および低い不安定さを異なる尺度で示す図である。 実施例に係る非常駐リソースの使用を同期させる方法のフローチャートである。 実施例に係る、重複を回避するためにガベージコレクトを前進させる方法のフローチャートである。 実施例に係る、コンピュータの不安定さを減少させるためにクラウドマネージャが一群のコンピュータをいかに制御できるかを示す図である。 実施例に係る、コンピュータリソースの使用を減らすためにクラウドマネージャが一群のコンピュータをいかに制御できるかを示す図である。
詳細な説明:
ハイパーバイザ内で実行される仮想マシン、たとえばJVM間で非常駐リソースの使用を同期させるためのシステムおよび方法が本明細書に記載されている。本明細書に記載されているように、より多くの仮想サーバを同一のハイパーバイザ内で安全に実行できるようにするために各仮想サーバのリソースの使用の不安定さを低くすることが望ましい。残念ながら、JVMは、相当量のメモリおよびプロセッサ(cpu)リソースを消費し得るガベージコレクトおよびコード最適化のために、不安定さがかなり高い。
実施例に従って、異なるJVMにおけるプロセスの実行を前進させるかまたは延期することによって非常駐リソースの使用を同期させることができ、それによって非常駐リソースの使用のピークを回避し、したがって不安定さを低くし、同一の安全マージンでより多くの仮想サーバを単一のハイパーバイザ内で実行できるシステムおよび方法を提供する。これは以下の理由で可能である。すなわち、ガベージコレクションおよびコード最適化が、実行中のシステムの性能に大幅に影響を及ぼすことなくガベージコレクションを前進させることができ、コード最適化を延期できるプロセスである、という理由である。
重複するプロセスを回避することは必ずしも可能であるとは限らない。一定期間にわたって重複する非常駐プロセスの数は、コンピュータの全体的な不安定さの表れである。実施例によれば、この数は、コンピュータが優れた安全マージンを有しているか否かを評価するために用いることができる。別の実施例によれば、不安定さが高いサーバの不安定さを減少させ、不安定さが非効率的に低いサーバの不安定さを増大させるために、仮想サーバをクラウド内のコンピュータ間で移動させることができる。別の実施例によれば、リソースを求めて競い合う他の可能なプロセスがないという理由で、単一のJVMのみを実行できる特化したオペレーティングシステムは仮想サーバの不安定さを減少させることができる。
図1は、実施例に係るシステムの図である。図1に示されるように、このシステムの実施例は一般にハイパーバイザ102を有するコンピュータ100を備えており、そこでは複数の仮想サーバ104,105,107が実行中である。
各仮想サーバは、内部メモリ106,109,111を機能させる必要があるJVMを実行する。各仮想サーバはさらに、アプリケーションサーバコードを実行することが求められるJavaヒープ108,113,115を含んでいる。内部メモリおよびヒープは両方とも、仮にあったとしても、サイズをゆっくりと変化させる常駐メモリ110であると考えられる。
ガベージコレクションなどの短寿命プロセスは、メモリ112を動作させる必要がある。短寿命プロセスの他の例はコード最適化であり、それに必要なメモリ114を動作させる必要がある。これらの短寿命プロセスに必要なメモリは、非常駐メモリ116であると考えられる。
各仮想サーバは、同期モジュール118,119,120を含んでいる。これらの同期モジュールのうちの1つは、ランダムにマスター同期モジュール120に選ばれる。マスター同期モジュールは、通信チャネル122を用いて、ハイパーバイザ内で実行されるすべての仮想サーバの非常駐リソースの使用を同期させる。これは、異なる仮想サーバにおけるガベージコレクションおよびコード生成が同時に実行されることを防ぎ、それによって非常駐メモリおよびcpuサイクルのピーク時の使用を減らすために用いることができる。
図2は、実施例に係る、ガベージコレクションをいかに前進させることができるかを示すグラフである。図2に示されるように、図表200は、Javaヒープの使用されるメモリ202が時間とともにいかに増えていくかの例を示している。
使用されるメモリにおける各々の小さな落ち込み204は、高速でありかつcpuおよびメモリの使用をほとんど必要としないナーサリーガーベジコレクション(nursery garbage collection)の結果である。
使用されるメモリにおける大きな落ち込み206は、相当量のcpuおよびメモリの使用を必要とし得るホールヒープガーベジコレクション(whole heap garbage collection)の結果である。ホールヒープガーベジコレクションは、時刻208においてすべてのJavaヒープを使い尽くしたときに強制的に行なわれる。実施例によれば、この時刻は、Javaヒープ使用グラフの傾きを線形近似し、この線がJavaヒープサイズ210と交わるまでこの線を延ばすことで予測できる。ガベージコレクトの終了時刻は、開始時刻+同一のJVMにおける以前のガベージコレクトの長さであると予測できる。
ガベージコレクトは、208以前であればいつでも開始できる。すなわち、ガベージコレクトは、Javaヒープがいっぱいであるときである自然実行時間より前に前進させられる。時刻212において、マスター同期モジュールは、予測されたガベージコレクトを時刻208から時刻214まで前進させる必要がある。実施例によれば、それは、GCが確実に時刻214より前に起こるようにするための好適な期限とともに通信チャネル122を用いて開始GCトークン216を送ることによってなされる。
図3は、実施例に係る、マスター同期モジュールによって制御されるラウンドロビンスキームを用いて別個のJVMにおける同時実行のコード最適化をいかに防ぐことができるかを示す図である。図3に示されるように、3つの最適化キュー300,301,303が設けられ、複数のJVMの各々に対して1つの最適化キューが設けられ、各キューは、そのJVMについて最適化が必要な方法の一覧を含んでいる。最適化されたコードは通常、異なるJVM間では共有されない。なぜなら、最適化は時には、JVM間で異なり得るランタイム挙動に依存するためである。最適化されたコードが異なるJVM間で共有されない別の理由は、最適化されたコードがまた、その特定のJVM内でのみ有効な固定アドレスへのいくつかのランタイム参照をコード化する、というものである。もし異なるJVM間で最適化されたコードを移動させれば、これらの参照を再び結びつけなければならないであろう。この例に示されるように、第1のJVMが方法Buyer.toString302を最適化した後、同期モジュールは最適化トークン304を第2のJVMに転送する。最適化トークンは、多くても最適化トークンによって規定された一定の時間にわたって、この例では1秒間にわたって方法を最適化する権利をJVMに与える。一旦方法が最適化されると、最適化トークンは別のJVMに提供されることができ、プロセスはストライピングの態様で複数のJVMにわたって続いていく。
事実上、JVMが最適化トークンを受取るまで、JVMにおけるあらゆる最適化は延期される。JVMが割当てられた時間内に最適化を完了できなければ、JVMは、この例では中止された最適化306によって示されるように最適化を中止しなければならず、JVMがその後新たな最適化トークンを与えられると、その後最適化を再開させる。最適化を完了できなかったことは同期モジュールに報告され、この同期モジュールは、この例では2秒である元のタイムスロットの長さを2倍にする修正最適化トークン308をJVMに送ることができる。このようにして、MusicPurchase.sampleの最適化をその後再開でき310、完了の見込みがより高くなる。
図4は、実施例に係る、ガベージコレクトを前進させてコード最適化を延期することによって3つのJVM間で同期をいかに達成するかを示す図である。図4に示されるように、ガベージコレクトおよびコード最適化のスケジュールは、スケジュール400,402,404,406〜408の異なるインスタンスから次々に展開する。ガベージコレクトは長方形として視覚化されており、コード最適化は楕円形として視覚化されている。
示される例では、スケジュール400の第1のインスタンスでは、時刻412において、マスター同期モジュールが、時刻412において開始し時刻416において終了する予測されたガベージコレクト414をJVM1から受取った。マスター同期モジュールはまた、コード最適化418をスケジュールした。JVM3がガベージコレクト420を予測し、JVM2がコレクト422を予測した。
時刻424において、マスター同期モジュールは、JVMに新たな予測を要求し、その元のインスタンス400から修正インスタンス402にスケジュールを更新する。この例では、スケジュールは、JVM1のための新たな予測されたガベージコレクト426で更新される。マスター同期モジュールはまた、ガベージコレクト422の予測開始時刻が428に移動しており、したがって現在予測されているガベージコレクト420と重複していることを検出する。
これを解決するために、マスター同期モジュールは、スケジュール404を更新し、ガベージコレクト420を、重複を回避するのに十分な新たな時刻430まで前進させる。それは、好適な開始GCトークンをJVM3に送ることによってなされる。残念ながら、予定されている最適化418を延期しなければならない。なぜなら、短縮した時間枠内では完了しないことを従前の最適化統計が示しているので、予定されている最適化418を開始させることができないためである。したがって、予定されている最適化418は時刻432に移動される。
時刻434において、マスター同期モジュールは再び最新の予測をJVMから取得し、したがってスケジュール406,408を更新でき、新たな最適化436をスケジュールできる。
図5は、実施例に係る、達成された同期および低い不安定さを異なる尺度で示す図である。図5に示されるように、スケジュール500は、現実世界の値を反映する尺度502(この例では、20秒)で実際のガベージコレクションおよびコード最適化を示している。ガベージコレクトはここでも長方形504として視覚化されており、コード最適化は楕円形506として視覚化されている。示される例では、2つのガベージコレクトが同時に起こるようにスケジュールされている508、および、1つのガベージコレクトと1つのコード最適化とが同時に起こる510を除けば、ガベージコレクトおよびコード最適化の大半は重複していない。2つのコード最適化が同時に起こるようにスケジュールされていない、ということは注目に値する。したがって、重複の数は2個であり、これは20秒という期間のコンピュータの不安定さである。
図6は、実施例に係る非常駐リソースの使用を同期させる方法のフローチャートである。図6に示されるように、ステップ600において、マスター同期モジュールは、ガベージコレクトまたはコード最適化が開始または終了したという、任意のJVMからの通知を待つ。JVMはまた、以前に報告されたガベージコレクション予測時刻が変化したことをマスター同期モジュールに通知し得る。ステップ602において、マスター同期モジュールは、ハイパーバイザ内で実行されるすべてのJVMにガベージコレクトの開始および終了時刻の予測を要求する。マスター同期モジュールは、それに応じてスケジュールを更新する。ステップ604において、マスター同期モジュールは、ガベージコレクションの重複を検出し、予測されたガベージコレクトの開始時刻を前進させることによって重複を最小限に抑える。JVMが予測よりも早く強制的にガベージコレクトを行なう場合、または、ガベージコレクトを前進させることができない場合、依然として重複が存在し得る。これは、アプリケーションの挙動が突然変化する場合に起こる可能性がある。ステップ606において、マスター同期モジュールは、コード最適化とガベージコレクトとの重複を検出し、何らかの重複を発見すると、重複を回避するためにコード最適化が延期される。JVMが予測よりも早く強制的にガベージコレクトを行なう場合、以前として重複が存在し得る。ステップ608において、マスター同期モジュールは、ラウンドロビンスキームを用いて新たなコード最適化をスケジュールする。ステップ610において、マスター同期モジュールは再び待ち状態に入る。
図7は、実施例に係る、重複を回避するためにガベージコレクトを前進させる方法のフローチャートである。図7に示されるように、ステップ700において、マスター同期モジュールは、各ガベージコレクトの各開始時点および終了時点について繰返し適用する。各時点において、マスター同期モジュールは、その特定の時点においていくつの他のガベージコレクトがアクティブであるかを数える。マスター同期モジュールは、同時にアクティブであるガベージコレクションの最大数を記憶する。ステップ702において、記憶された数が0であるか否かが確認される。なぜなら、0であれば、重複しているガベージコレクションがなく、方法は終了する704ためである。重複しているガベージコレクトがあれば706、ステップ708において、方法は、その他のものと重複する各ガベージコレクトについて、同時に重複しているガベージコレクトの最大数が減少するまでにどれほどガベージコレクトを前進させなければならないかを計算する。どれほど前進させようとも同時実行のガベージコレクトの最大数を減らすことができないガベージコレクトは、前進不可能なガベージコレクトである。すべてのガベージコレクトが前進不可能であれば712、方法は終了する。前進可能なガベージコレクトがあれば714、システムは最小量の前進を必要とするものを選択し、このガベージコレクトを前進させる。次いで、ステップ700において方法が再開する。
図7に示される方法は、繰返すごとに同時実行のガベージコレクトの最大数を減らすことになる(ステップ716)ので、最終的には終了しなければならない。同時実行のガベージコレクトの数を減らすことができなければ、この方法は、重複しているガベージコレクトがないステップ702、または、改善を行なうことができないステップ710で終了する。
図8は、実施例に係る、コンピュータの不安定さを減少させるためにクラウドマネージャが一群のコンピュータをいかに制御できるかを示す図である。図8に示されるように、一群のコンピュータ800は個々のコンピュータ802,804,806を備えており、各々は、1つ以上のJVM808を動作させる複数の仮想サーバを動作させる。各々の単一のコンピュータ内のJVMは、そのコンピュータのマスター同期モジュール810,812,814に関連付けられている。実施例によれば、マスター同期モジュールはクラウド不安定さマネージャ816によって制御され、このクラウド不安定さマネージャ816は、一般にこのようなクラウド環境が備わった他の管理ツール818とともに動作し得る。第1のコンピュータ802の全体的な不安定さが高く、すなわち、このコンピュータ上で実行される仮想サーバ間でガベージコレクトとコード最適化とのコリジョンが多く存在し、第2のコンピュータ804の全体的な不安定さが低い場合、クラウド不安定さマネージャ816は、仮想サーバ820および822のためのコンピュータホスト824を切換えるまたは変更することを決定し得る。コンピュータ802の全体的な不安定さの減少が804の全体的な不安定さの増大よりも多くなければ、この切換えは元に戻されるであろう。実施例によれば、この切換えに先行して、仮想サーバ820が仮想サーバ822よりも予測不可能な挙動を有していることを確認する。これは、たとえば、ガベージコレクト間の距離の標準偏差によって測定可能である。
図9は、実施例に係る、コンピュータリソースの使用を減らすためにクラウドマネージャが一群のコンピュータをいかに制御できるかを示す図である。図9に示されるように、一群のコンピュータ900は個々のコンピュータ902,904,906を備えており、各々は、1つ以上のJVMを動作させる複数の仮想サーバを動作させる。各JVMは、常駐メモリ使用量908と、非常駐メモリ使用量910とを有している。メモリおよびcpuの使用量の最大の余裕を達成するために、クラウド不安定さマネージャが、非常駐メモリおよびcpuの使用量が同一である仮想サーバを同一のコンピュータ上に位置付けることも重要である。したがって、すべてのコンピュータ902,904および906が同一の大量の非常駐メモリを必要とするので、クラウド900は準最適である。仮想サーバを新たなクラウド構成911に再配置することによって、サーバ912の非常駐メモリの最大使用量は元の構成902とほぼ同等になる。しかしながら、非常駐メモリの最大使用量は、元の構成904および906と比較して、914および916では大幅に減少する。実施例によれば、このような再配置は、仮想サーバの非常駐メモリ使用量の平均値および標準偏差に基づいている。非常駐メモリ使用量が減少するので、コンピュータ914および916上により多くの仮想サーバを配置できる。
本発明は、本開示の教示に従ってプログラムされた1つ以上の従来の汎用または専用デジタルコンピュータ、計算装置、マシンまたはマイクロプロセッサを用いて、都合よく実現されてもよい。ソフトウェア分野の当業者に明らかであるように、本開示の教示に基づいて、熟練したプログラマーによって適切なソフトウェアコード化を容易に準備できる。
いくつかの実施例では、本発明は、本発明のプロセスのいずれかを実行するようにコンピュータをプログラムするために用いることができる、命令を記憶させた記憶媒体またはコンピュータ可読媒体であるコンピュータプログラム製品を含む。記憶媒体は、フロッピー(登録商標)ディスク、光ディスク、DVD、CD−ROM、マイクロドライブおよび光磁気ディスクを含む任意のタイプのディスク、ROM、RAM、EPROM、EEPROM、DRAM、VRAM、フラッシュメモリデバイス、磁気もしくは光カード、(分子記憶ICを含む)ナノシステム、または命令および/もしくはデータの記憶に好適な任意のタイプの媒体もしくはデバイスを含み得るが、それらに限定されない。
本発明の上記の説明は、例示および説明の目的でなされてきた。本発明の上記の説明は、網羅的なものであることを意図したものではなく、本発明を開示されている厳密な形態に限定することを意図したものではない。多くの変形例および変更例が当業者に明らかである。本発明の原理およびその実際の用途を最もよく説明するように実施例を選択して説明し、それによって、当業者は、さまざまな実施例についておよび意図された特定の使用に適したさまざまな変形例とともに、本発明を理解できるようになる。本発明の範囲は、以下の特許請求の範囲およびその等化物によって規定されることが意図されている。
100,800,802,804,806,900,902,904,906,914 コンピュータ、102 ハイパーバイザ、104,105,107,820,822 仮想サーバ、106,109,111 内部メモリ、108,113,115 ヒープ、110 常駐メモリ、112,114,202 メモリ、116 非常駐メモリ、118,119,120 同期モジュール、120,810,812,814 マスター同期モジュール、122 通信チャネル、300,301,303 最適化キュー、304 最適化トークン、306,418,436 最適化、308 修正最適化トークン、400,402,404,406,408,500 スケジュール、400 インスタンス、402 修正インスタンス、414,420,422,426 ガベージコレクト、418 コード最適化、422 コレクト、802 第1のコンピュータ、804 第2のコンピュータ、816 クラウド不安定さマネージャ、818 管理ツール、824 コンピュータホスト、900 クラウド、902,904 構成、908 常駐メモリ使用量、
910 非常駐メモリ使用量、911 クラウド構成、912 サーバ。

Claims (15)

  1. 仮想サーバ間で一時的なリソース使用のタイミングを調整するためのシステムであって、
    クラウド内に設けられた1つ以上のコンピュータを備え、前記1つ以上のコンピュータの各々は、
    プロセッサと、
    複数の仮想サーバとを含み、前記複数の仮想サーバの各々は、その関連付けられた仮想サーバにおける、ガベージコレクション、コード最適化、および他のプロセスの時刻を予測する同期モジュールを含み、
    特定の同期モジュールがマスター同期モジュールとして動作するように選択され、前記マスター同期モジュールは、
    他の同期モジュールからの予測を要求し、
    前記予測を用いて、ガベージコレクション、コード最適化、および他のプロセスのスケジュールを更新し、さらに
    前記複数の仮想サーバ間の同期を可能にする通信チャネルを含み、
    前記仮想サーバは、それらに関連付けられた同期モジュールおよび通信チャネルを用いて、そこで実行されている前記ガベージコレクション、コード最適化、および他のプロセスの実行を繰上げまたは延期させることを含みつつ、前記仮想サーバの間で一時的なリソース使用のタイミングを調整する、システム。
  2. 各仮想サーバは、1つ以上のJava仮想マシン(JVM)を実行する、請求項1に記載のシステム。
  3. 前記仮想サーバの1つ以上は、単一のJVMのみを実行するように適合されたオペレーティングシステムを含む、請求項1または2に記載のシステム。
  4. 一時的に使用されるリソースは、ガベージコレクションプロセスのために使用されるメモリである、請求項1〜3のいずれか1項に記載のシステム。
  5. 一時的に使用されるソースは、コード最適化プロセスのために使用されるメモリである、請求項1〜3のいずれか1項に記載のシステム。
  6. 一時的に使用されるリソースは、ガベージコレクションプロセスのために使用され、前記同期モジュールは、ガベージコレクションを繰上げて、他のガベージコレクションとの重複を避ける、請求項1〜3のいずれか1項に記載のシステム。
  7. 一時的に使用されるリソースは、コード最適化プロセスのために使用され、前記同期モジュールは、コード最適化プロセスを延期させて、ガベージコレクションおよび他のコード最適化との重複を避ける、請求項1〜3のいずれか1項に記載のシステム。
  8. 各同期モジュールは、前記通信チャネルを用いて、前記複数の仮想サーバ間で情報を遣り取り、前記仮想サーバ間で一時的なリソース使用のタイミングを調整する、請求項1に記載のシステム。
  9. 各同期モジュールは、
    仮想サーバからの通知を待つステップと、
    他の仮想サーバからのガベージコレクション予測を要求するステップと、
    必要に応じてガベージコレクションを繰上げることによって、同時に実行されるガベージコレクションの検出された数を最小化するステップと、
    必要に応じてコード最適化を延期することによって、同時に実行されるコード最適化の検出された数を最小化するステップと、
    ガベージコレクション、コード最適化、または他のプロセスをスケジュールして、前記複数の仮想サーバ間で一時的なリソース使用のタイミングを調整するステップとを実行する、請求項1に記載のシステム。
  10. 前記1つ以上のコンピュータは、前記1つ以上の仮想サーバを動作させるための、前記コンピュータ上で実行されるハイパーバイザを含む、請求項1に記載のシステム。
  11. 前記システムは、仮想サーバのクラウドにおける一時的に使用されるリソースの使用量に関連付けられる不安定さを制御するためのコンポーネントとして用いられ、前記システムはさらに、
    前記クラウド内のコンピュータの不安定さを監視するクラウド不安定さマネージャと、
    前記クラウドに参加する複数のコンピュータとを備え、1つ以上のコンピュータの各々はさらに、測定されたリソース使用に起因する不安定さを伴うとともに、前記複数の仮想サーバ間で一時的なリソース使用のタイミングを調整するように構成された仮想サーバを含み、
    前記クラウド不安定さマネージャは、前記クラウド内の不安定さを改善するために、前記クラウドに参加する前記複数のコンピュータのうちの第1のコンピュータから、前記クラウドに参加する前記複数のコンピュータのうちの第2のコンピュータへ、仮想サーバを切換えまたは移動させることができる、請求項1に記載のシステム。
  12. 前記特定の同期モジュールが前記マスター同期モジュールとして動作するように、複数の同期モジュールからランダムに選択される、請求項1に記載のシステム。
  13. 前記マスター同期モジュールは、前記予測を用いて、元のスケジュールから、ガベージコレクション、コード最適化、および他のプロセスの修正後のスケジュールに更新する、請求項1に記載のシステム。
  14. 仮想サーバ間で一時的なリソース使用のタイミングを調整する方法であって、
    クラウド内に1つ以上のコンピュータを設けるステップを備え、前記1つ以上のコンピュータの各々は、
    プロセッサと、
    複数の仮想サーバとを含み、前記複数の仮想サーバの各々は、その関連付けられた仮
    想サーバにおける、ガベージコレクション、コード最適化、および他のプロセスの時刻を予測する同期モジュールを含み、
    特定の同期モジュールがマスター同期モジュールとして動作するように選択され、前記マスター同期モジュールは、
    他の同期モジュールからの予測を要求し、
    前記予測を用いて、ガベージコレクション、コード最適化、および他のプロセスのスケジュールを更新し、さらに
    前記複数の仮想サーバ間の同期を可能にする通信チャネルを含み、
    前記仮想サーバは、それらに関連付けられた同期モジュールおよび通信チャネルを用いて、そこで実行されている前記ガベージコレクション、コード最適化、および他のプロセスの実行を繰上げまたは延期させることを含みつつ、前記仮想サーバの間で一時的なリソース使用のタイミングを調整する、方法。
  15. プロセッサを含む1つ以上のコンピュータによって読取られて実行されると、前記1つ以上のコンピュータに以下の環境を実現させるプログラムであって、前記1つ以上のコンピュータの各々は
    数の仮想サーバを含み、前記複数の仮想サーバの各々は、その関連付けられた仮想サーバにおける、ガベージコレクション、コード最適化、および他のプロセスの時刻を予測する同期モジュールを含み、
    特定の同期モジュールがマスター同期モジュールとして動作するように選択され、前記マスター同期モジュールは、
    他の同期モジュールからの予測を要求し、
    前記予測を用いて、ガベージコレクション、コード最適化、および他のプロセスのスケジュールを更新し、さらに
    前記複数の仮想サーバ間の同期を可能にする通信チャネルを含み、
    前記仮想サーバは、それらに関連付けられた同期モジュールおよび通信チャネルを用いて、そこで実行されている前記ガベージコレクション、コード最適化、および他のプロセスの実行を繰上げまたは延期させることを含みつつ、前記仮想サーバの間で一時的なリソース使用のタイミングを調整する、プログラム。
JP2014100308A 2009-09-21 2014-05-14 ハイパーバイザ環境内の仮想マシン間で非常駐リソースの使用を同期させるためのシステムおよび方法 Active JP5922703B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/563,440 US8261269B2 (en) 2009-09-21 2009-09-21 System and method for synchronizing transient resource usage between virtual machines in a hypervisor environment
US12/563,440 2009-09-21

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2012529783A Division JP5627689B2 (ja) 2009-09-21 2010-08-30 ハイパーバイザ環境内の仮想マシン間で非常駐リソースの使用を同期させるためのシステムおよび方法

Publications (2)

Publication Number Publication Date
JP2014194801A JP2014194801A (ja) 2014-10-09
JP5922703B2 true JP5922703B2 (ja) 2016-05-24

Family

ID=43064426

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2012529783A Active JP5627689B2 (ja) 2009-09-21 2010-08-30 ハイパーバイザ環境内の仮想マシン間で非常駐リソースの使用を同期させるためのシステムおよび方法
JP2014100308A Active JP5922703B2 (ja) 2009-09-21 2014-05-14 ハイパーバイザ環境内の仮想マシン間で非常駐リソースの使用を同期させるためのシステムおよび方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2012529783A Active JP5627689B2 (ja) 2009-09-21 2010-08-30 ハイパーバイザ環境内の仮想マシン間で非常駐リソースの使用を同期させるためのシステムおよび方法

Country Status (5)

Country Link
US (2) US8261269B2 (ja)
EP (1) EP2480972B1 (ja)
JP (2) JP5627689B2 (ja)
CN (2) CN102576331B (ja)
WO (1) WO2011034717A1 (ja)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8800055B2 (en) * 2010-10-20 2014-08-05 International Business Machines Corporation Node controller for an endpoint in a cloud computing environment
US8934483B2 (en) * 2011-01-20 2015-01-13 Broadcom Corporation Data center switch
US8521890B2 (en) 2011-06-07 2013-08-27 International Business Machines Corporation Virtual network configuration and management
US8650300B2 (en) 2011-06-07 2014-02-11 International Business Machines Corporation Transparent heterogenous link pairing
US8914515B2 (en) * 2011-10-28 2014-12-16 International Business Machines Corporation Cloud optimization using workload analysis
US9110892B2 (en) 2012-03-13 2015-08-18 Microsoft Technology Licensing, Llc Synchronizing local and remote data
US8881149B2 (en) * 2012-04-11 2014-11-04 International Business Machines Corporation Control of java resource runtime usage
US9535749B2 (en) 2012-05-11 2017-01-03 Infosys Limited Methods for managing work load bursts and devices thereof
US9612853B2 (en) 2012-09-07 2017-04-04 International Business Machines Corporation Virtual machine monitoring in cloud infrastructures
US9311236B2 (en) * 2012-11-20 2016-04-12 International Business Machines Corporation Out-of-memory avoidance in dynamic virtual machine memory adjustment
US9075789B2 (en) 2012-12-11 2015-07-07 General Dynamics C4 Systems, Inc. Methods and apparatus for interleaving priorities of a plurality of virtual processors
US9256469B2 (en) 2013-01-10 2016-02-09 International Business Machines Corporation System and method for improving memory usage in virtual machines
WO2015023191A1 (en) * 2013-08-13 2015-02-19 Putyrski Sławomir Power balancing to increase workload density and improve energy efficiency
WO2015094187A1 (en) * 2013-12-17 2015-06-25 Hewlett-Packard Development Company, L.P. Synchronizing a cloud service template with an infrastructure template
CN104052803A (zh) * 2014-06-09 2014-09-17 国家超级计算深圳中心(深圳云计算中心) 一种去中心化的分布式渲染方法及渲染系统
US10642663B2 (en) * 2014-09-10 2020-05-05 Oracle International Corporation Coordinated garbage collection in distributed systems
US9971683B1 (en) 2014-10-20 2018-05-15 Sprint Communications Company L.P. Automatic computer memory management coordination across a group of servers
CN104503891B (zh) * 2014-12-10 2018-10-02 北京京东尚科信息技术有限公司 对jvm线程进行在线监控的方法和装置
US9804962B2 (en) * 2015-02-13 2017-10-31 Microsoft Technology Licensing, Llc Garbage collection control in managed code
US20160350214A1 (en) * 2015-05-29 2016-12-01 Google Inc. Idle time software garbage collection
US10438253B2 (en) 2015-11-29 2019-10-08 International Business Machines Corporation Reuse of computing resources for cloud managed services
US10417125B2 (en) * 2016-02-11 2019-09-17 Oracle International Corporation Feedback-based selection of regions for abortable garbage collection
JP7013934B2 (ja) * 2018-02-26 2022-02-01 オムロン株式会社 コントローラ
CN110502310B (zh) * 2018-05-18 2021-12-14 北京东土科技股份有限公司 一种虚拟机的时间同步方法及装置
US10884641B2 (en) 2019-04-16 2021-01-05 Paypal, Inc. Low latency gateway for an asynchronous orchestration engine using direct memory
CN111309645B (zh) * 2020-03-12 2023-06-27 上海交通大学 基于非易失性内存的新型混合内存垃圾回收方法及系统
CN113449292B (zh) * 2020-03-27 2022-07-29 支付宝(杭州)信息技术有限公司 一种可信应用的运行方法、装置及设备
CN111507650B (zh) * 2020-07-02 2021-01-05 深圳微品致远信息科技有限公司 一种边缘计算平台算力分配调度方法及系统
US11436000B2 (en) * 2020-10-19 2022-09-06 Oracle International Corporation Prioritized non-active memory device update
US11809839B2 (en) 2022-01-18 2023-11-07 Robert Lyden Computer language and code for application development and electronic and optical communication

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7574496B2 (en) * 2001-11-30 2009-08-11 Surgient, Inc. Virtual server cloud interfacing
US7299468B2 (en) * 2003-04-29 2007-11-20 International Business Machines Corporation Management of virtual machines to utilize shared resources
US7320129B2 (en) * 2003-05-14 2008-01-15 Hewlett-Packard Development Company, L.P. Native language verification system and method
US8301809B2 (en) * 2003-07-02 2012-10-30 Infortrend Technology, Inc. Storage virtualization computer system and external controller thereof
US20070033240A1 (en) * 2005-08-04 2007-02-08 International Business Machines Corporation Scheduling garbage collection
CN100472452C (zh) * 2006-06-23 2009-03-25 联想(北京)有限公司 一种虚拟机系统及其硬件设备的切换方法
AU2007281686A1 (en) * 2006-08-07 2008-02-14 Bea Systems, Inc. System and method for providing hardware virtualization in a virtual machine environment
US8051266B2 (en) * 2007-06-11 2011-11-01 International Business Machines Corporation Automatic memory management (AMM)
US8156492B2 (en) * 2007-09-07 2012-04-10 Oracle International Corporation System and method to improve memory usage in virtual machines running as hypervisor guests
US8261264B2 (en) * 2008-01-03 2012-09-04 Dell Products L.P. Accessing a network

Also Published As

Publication number Publication date
US20120304173A1 (en) 2012-11-29
CN102576331A (zh) 2012-07-11
JP2014194801A (ja) 2014-10-09
US8261269B2 (en) 2012-09-04
WO2011034717A1 (en) 2011-03-24
JP2013505498A (ja) 2013-02-14
CN104699625B (zh) 2018-04-10
CN102576331B (zh) 2015-05-13
JP5627689B2 (ja) 2014-11-19
EP2480972B1 (en) 2019-12-18
CN104699625A (zh) 2015-06-10
US8566826B2 (en) 2013-10-22
US20110072427A1 (en) 2011-03-24
EP2480972A1 (en) 2012-08-01

Similar Documents

Publication Publication Date Title
JP5922703B2 (ja) ハイパーバイザ環境内の仮想マシン間で非常駐リソースの使用を同期させるためのシステムおよび方法
US9996401B2 (en) Task processing method and virtual machine
US7086053B2 (en) Method and apparatus for enabling threads to reach a consistent state without explicit thread suspension
US8286152B2 (en) Systems, methods, and computer products for just-in-time compilation for virtual machine environments for fast application startup and maximal run-time performance
US8495107B2 (en) System and method for use with garbage collected languages for enabling the allocated heap memory to be updated at runtime
US9213562B2 (en) Garbage collection safepoint system using non-blocking asynchronous I/O call to copy data when the garbage collection safepoint is not in progress or is completed
TW201413456A (zh) 處理巢狀串流事件的方法和系統
CN106537364A (zh) 存储事务
WO2016160035A1 (en) Persistent memory versioning and merging
JP2010113585A (ja) 外部資源を排他使用しながら実行される命令の実行時間の遅延を防ぐためのコンピュータ・システム、並びにその方法及びコンピュータ・プログラム
WO2011027626A1 (ja) メモリ管理方法、計算機システム及びコンピュータ可読媒体
US7080374B2 (en) System and method for using native code interpretation to move threads to a safe state in a run-time environment
US7225443B2 (en) Stack usage in computer-related operating systems
TWI489289B (zh) 分散作業的預先排程重播
JP5051961B2 (ja) モジュール式ガーベッジコレクタを実現するための方法および装置
JP7122299B2 (ja) 処理タスクを実行するための方法、装置、デバイス、および記憶媒体
CN112445614A (zh) 一种线程数据的存储管理方法、计算机设备及存储介质
JP2021509509A (ja) 同時コピー・ガベージ・コレクションのためのコピーおよび転送
JP5334048B2 (ja) メモリ装置および計算機
KR101203157B1 (ko) 데이터 전달 시스템, 장치 및 방법
Tapus et al. Kernel level speculative DSM
TWI357017B (en) Systems and methods for synchronous code retrieval
CN113590536A (zh) 一种数据存储方法、系统、电子设备及存储介质

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150929

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151204

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: 20160405

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160414

R150 Certificate of patent or registration of utility model

Ref document number: 5922703

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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