JP6126157B2 - 複数のコンピュータシステムによるプログラムの実行を管理するシステム - Google Patents

複数のコンピュータシステムによるプログラムの実行を管理するシステム Download PDF

Info

Publication number
JP6126157B2
JP6126157B2 JP2015075644A JP2015075644A JP6126157B2 JP 6126157 B2 JP6126157 B2 JP 6126157B2 JP 2015075644 A JP2015075644 A JP 2015075644A JP 2015075644 A JP2015075644 A JP 2015075644A JP 6126157 B2 JP6126157 B2 JP 6126157B2
Authority
JP
Japan
Prior art keywords
program
instances
specified
execution
computer
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
JP2015075644A
Other languages
English (en)
Other versions
JP2015144020A5 (ja
JP2015144020A (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.)
Amazon Technologies Inc
Original Assignee
Amazon Technologies Inc
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 Amazon Technologies Inc filed Critical Amazon Technologies Inc
Publication of JP2015144020A publication Critical patent/JP2015144020A/ja
Publication of JP2015144020A5 publication Critical patent/JP2015144020A5/ja
Application granted granted Critical
Publication of JP6126157B2 publication Critical patent/JP6126157B2/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/60Software deployment
    • 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/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5055Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering software capabilities, i.e. software resources associated or available to the machine

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Information Transfer Between Computers (AREA)
  • Debugging And Monitoring (AREA)
  • Computer And Data Communications (AREA)
  • Hardware Redundancy (AREA)
  • Multi Processors (AREA)

Description

本発明は、一般に、プログラムコピーの効率的な獲得が実行されることを可能にするようにコンピュータシステムのグループの間でプログラムのコピーを実行することなどの、複数のコンピュータシステム上でのプログラムの実行を管理することに関する。
単一の組織によって、さらに単一の組織に代行して運用される私設データセンタや、様々なビジネスモデルの下で顧客に、コンピュータリソースへのアクセスを提供する公衆データセンタなどの、相当な数の互いに接続されたコンピュータシステムを収容するデータセンタが、一般的になっている。例えば、一部の公衆データセンタ事業者は、様々な顧客によって所有されるハードウェアのためのネットワークアクセス施設、電力施設及びセキュアな設置施設を提供するのに対して、他の公衆データセンタ事業者は、顧客によって使用される実際のハードウェアリソースも含む「完全サービス」施設を提供する。しかし、従来のデータセンタの規模及び範囲が増大するにつれ、物理的コンピュータリソースを提供し、管理し、運営する作業は、ますます複雑になっている。
商品ハードウェアに関する仮想化技術の到来により、多様なニーズを有する多くの顧客のために大規模なコンピュータリソースを管理することの問題の部分的な解決がもたらされた。一般的に説明すると、仮想化技術は、様々なコンピュータリソースが、複数の顧客の間で効率的に、かつセキュアに共有されることを可能にする。例えば、VMWare、XEN、またはUser−Mode Linux(登録商標)によって提供されるような仮想化技術は、単一の物理的な計算機(computing machine)のリソースが、複数のユーザの間で共有されることを可能にすることができる。より具体的には、各ユーザには、単一の物理的な計算機によってホストされる1つまたは複数の仮想マシンが提供されることが可能であり、それぞれのそのような仮想マシンは、別個の論理コンピュータシステムの役割をするソフトウェアシミュレーションである。各仮想マシンは、ユーザが、所与のハードウェアコンピュータリソースの単独の運用者及び管理者であるという体験をユーザに提供する一方で、様々な仮想マシンの間でアプリケーションアイソレーション及びアプリケーションセキュリティも提供する。さらに、実際には複数の別々の物理的コンピュータシステムにまたがる複数の仮想プロセッサを有する単一の仮想マシンなどの一部の仮想化技術は、1つまたは複数の物理的リソースにまたがる仮想リソースを提供することができる。
しかし、多様なユーザ群のために多数のアプリケーションまたはシステムを仮想的に、または物理的にホストするデータセンタのコンテキストにおいて生じる1つの問題には、ソフトウェアアプリケーションのコピーの格納、配布及び獲得を管理することが関わる。アプリケーションは、例えば、サイズが極めて大きく、データセンタ内のすべてのコンピュータシステム上に、ホストされるすべてのアプリケーションのローカルコピーを格納する十分なストレージリソースを有することが(不可能ではないにしても)高コストになる可能性がある。しかし、アプリケーションのコピーが、当該アプリケーションを実行すべきデータセンタ内のすべてのコンピュータシステムに頻繁に伝送される集中ストレージロケーションが、代替手段として、維持される場合、ネットワーク帯域幅リソースの点でやはり高コストである。そのような代替手段において、ネットワーク帯域幅は、アプリケーションコピー伝送のために独占され、実行されるアプリケーションが、アプリケーションの動作のために十分なネットワーク帯域幅を受け取ることを妨げる可能性がある。さらに、アプリケーションコピー伝送が達せられるのを待つ間などに、アプリケーション実行に関する相当な起動待ち時間が生じる可能性もある。そのような困難は、実行されるべき新たなアプリケーションの頻繁な導入、及び/またはアプリケーションの相次ぐバージョンの頻繁な展開などの様々な要因によってさらに深刻になる可能性がある。
このため、上記問題に対処するため、アプリケーションのコピーを、当該アプリケーションを実行するコンピュータシステムに効率的に配布するとともに、他の様々な利点を提供するための技術を提供することが有益であろう。
複数のコンピュータシステム上でのプログラムの実行を管理する技術が説明される。一部の実施形態では、説明される技術は、サービスの複数のユーザ(例えば、顧客)のために複数のプログラムを実行するためのプログラム実行サービスのために実行される。一部の実施形態では、プログラム実行サービスは、様々な要因を使用して、プログラムのインスタンスを実行すべき適切なコンピュータシステムを選択することができる。その要因には、選択されたコンピュータシステムが、プログラムインスタンスの実行のために、実行されるべきプログラムのコピー、及び/または利用可能なコンピュータシステムリソースのコピーを獲得することができる、プログラムの以前に格納された1つまたは複数のコピーのロケーションなどの情報が含まれる。例えば、一部の実施形態では、プログラムのインスタンスを実行すべき適切なコンピュータシステムの選択は、そのプログラムのローカルコピーを既に格納しているコンピュータシステムを特定することに基づくことが或る程度可能である。別の例では、適切なコンピュータシステムの選択は、特定されたコンピュータシステムと共通のグループ内の他の1つまたは複数のコンピュータシステムなどの、そのようなローカルコピーをそれぞれ格納する他の1つまたは複数のコンピュータシステムに十分に近い(地理的及び/または論理的にかかわらず)コンピュータシステムを特定することに基づくことが或る程度可能である。
一部の実施形態では、プログラムを実行するのに利用可能な複数のコンピュータシステムには、計算機間でデータを伝送することができる1つまたは複数のネットワーク、または他のデータ交換媒体を介して互いに接続された複数の物理的な計算機を含めることが可能である。複数のコンピュータシステムは、例えば、或る物理的ロケーション(例えば、データセンタ)内に配置することが可能であり、また、複数のグループに分けることが可能であり、また、それらの複数のコンピュータシステムを全体として担う1つまたは複数のシステムマネージャモジュールによって管理することが可能であり、また、グループのコンピュータシステムを管理するために、グループの1つにそれぞれが関連付けられた複数のマシンマネージャモジュールによって管理することが可能である。計算機の少なくともいくつかはそれぞれ、複数のプログラムを同時に実行するのに十分なリソース(例えば、十分な書き込み可能メモリ、及び/または十分なストレージ、十分なCPUサイクルもしくは他のCPU使用指標、十分なネットワーク帯域幅、十分なスワップスペースなどの1つまたは複数)を含むことが可能である。例えば、一部のそのような実施形態における計算機の少なくともいくつかは各々、別個のユーザのために1つまたは複数のプログラムをそれぞれが実行することができる複数の仮想マシンノードをホストすることができる。前述したとおり、少なくとも一部の実施形態では、プログラム実行サービスによって管理される複数のコンピュータシステムは、物理的近さもしくは論理的近さ、または共通データ交換媒体を有することを含む基準などに基づいて、複数の別個のグループに編成される(例えば、各コンピュータシステムが単一のグループに属する)ことが可能である。一例では、グループに関する共通データ交換媒体は、グループのコンピュータシステム間で高い帯域幅の通信を提供する単一のネットワークスイッチ及び/またはラックバックプレーンによって提供されることが可能である(例えば、ネットワークスイッチまたはラックバックプレーンに接続されたコンピュータシステムの一部または全てがグループのメンバである)。また、コンピュータシステムの各グループは、グループの共通データ交換媒体と比べて低い帯域幅を有する他のデータ交換媒体などの、他の1つまたは複数のデータ交換媒体(例えば、イーサネット(登録商標)ベースの配線、無線接続、または他のデータ接続)によって他のコンピュータシステム(例えば、他のグループのコンピュータシステム、またはプログラム実行サービスによって管理されていないリモートコンピュータシステム)に接続されることも可能である。さらに、少なくとも一部の実施形態では、コンピュータシステムの一部または全てがそれぞれ、プログラムの実行前またはプログラムの実行時などに、実行プログラムのローカルコピーを格納するのに使用可能なローカルプログラムリポジトリ(例えば、ハードディスク、または他のローカルストレージ機構)をそれぞれ有することが可能である。さらに、少なくとも一部の実施形態では、複数のコンピュータシステムの各グループは、そのグループの1つまたは複数のコンピュータシステムを使用して、そのグループの他のコンピュータシステムによって使用されるようにプログラムのローカルコピーを格納することができる。
例示される実施形態では、プログラム実行サービスは、プログラムの実行を管理するために1つまたは複数のコンピュータシステム上で実行されるソフトウェアファシリティを含むことができる。ソフトウェアファシリティは、1つまたは複数のコンピュータシステムの各グループのために、そのグループのコンピュータシステムによるプログラムの取得、格納及び実行を管理する1つまたは複数のマシンマネージャモジュールを含むことができる。例えば、別個の計算機それぞれに、その計算機の複数の仮想マシンの少なくとも1つの仮想マシン上で実行されている、計算機のためのマシンマネージャモジュールなどの、別個のマシンマネージャモジュールが提供されることが可能である。さらに、一部の実施形態では、ソフトウェアファシリティは、1つまたは複数のコンピュータシステム上で実行されている1つまたは複数のシステムマネージャモジュールを含むことが可能だが、当該システムマネージャモジュールは、プログラムを実行するのに使用される複数のコンピュータシステムのすべてのためにプログラムの取得、格納及び実行を管理する。システムマネージャモジュールは、後述するとおり、適宜、マシンマネージャモジュールと対話することができる。
少なくとも一部の実施形態では、1つまたは複数のコンピュータシステム上でのプログラムの1つまたは複数のインスタンスの実行は、それらのプログラムインスタンスの即時の実行を求める現在の実行要求に応答して開始可能である。あるいは、この実行開始は、スケジューリングされた、または現時点での将来のプログラムインスタンスの実行を予約した、以前に受信されたプログラム実行要求に基づいてもよい。プログラム実行要求は、様々なやり方で受信可能である。例えば、ユーザから直接に(例えば、対話型コンソールを介して、またはプログラム実行サービスによって提供される他のGUIを介して)でも良いし、または他のプログラム、またはそのプログラム自体の1つまたは複数のインスタンスの実行を自動的に開始するユーザの実行中のプログラムから(例えば、Webサービスを使用するAPIなどの、プログラム実行サービスによって提供されるAPI(Application Program Interface)を介して)でも良い。
プログラム実行要求は、プログラムの1つまたは複数のインスタンスの実行開始の際に使用されるべき様々な情報を含むことが可能であるが、このような情報には、例えば、将来の実行のために以前に登録された、またはそれ以外で供給されたプログラムの指示及び同時に実行されるべきプログラムのインスタンスの数(例えば、所望されるインスタンスの最小数及び最大数などとして、インスタンスの単一の所望される数として表現される)などがある。加えて、一部の実施形態では、プログラム実行要求は、他の様々なタイプの情報を含むことが可能である。例えば、当該情報には、ユーザアカウントの指示、または以前に登録されたユーザの他の指示(例えば、以前に格納されたプログラムを識別する際、さらに/または要求されたプログラムインスタンス実行が許可されているかどうかを判定する際に使用するための指示)、プログラムインスタンス実行の代金の支払いをプログラム実行サービスに提供する際に使用するための支払いソースの指示、プログラムインスタンス実行に関する以前の支払い許可、または他の許可の指示(例えば、或る時間にわたって、或る数のプログラム実行インスタンスに関して、或る量のリソース利用に関して有効であるなどの、以前に購入された契約)、及び/または即時に実行されるべき、さらに/または後の実行のために格納されるべきプログラムの実行可能なコピー、または他のコピーなどがある。さらに、一部の実施形態では、プログラム実行要求は、1つまたは複数のプログラムインスタンスの実行に関する様々な他のタイプのプリファレンス及び/または要件をさらに含むことが可能である。そのようなプリファレンス及び/または要件は、使用可能な複数の計算機を収容する複数のデータセンタの1つにおいて、互いに近い複数のコンピュータシステム上で、さらに/または他の1つまたは複数の指示されたプログラムインスタンス(例えば、同一のプログラムのインスタンス、または別のプログラムのインスタンス)を実行するコンピュータシステムに近い1つまたは複数のコンピュータシステム上でなど、プログラムインスタンスの一部または全てが、指示された地理的ロケーション及び/または論理的ロケーションにおいて実行されるべきであるという指示を含むことが可能である。そのようなプリファレンス及び/または要件は、プログラムインスタンスの一部または全ては、実行中に、指示されたリソースをそれぞれ割り当てられるべきであるという指示をさらに含むことが可能である。
指示された時点でプログラムの1つまたは複数のインスタンスを実行する要求を受信した後、プログラム実行サービスは、それらのプログラムインスタンスを実行する際に使用すべき1つまたは複数のコンピュータシステムを決定する。一部の実施形態では、使用されるべきコンピュータシステムの決定は、将来の実行のためである場合でも、要求の時点で実行される。他の実施形態では、1つまたは複数のプログラムインスタンスの将来の実行のために使用されるべきコンピュータシステムの決定は、その時に利用可能な情報に基づいて、将来の実行時などの、後の時点まで延期することが可能である。各プログラムインスタンスの実行のためにいずれのコンピュータシステムが使用されるべきかという決定は、プログラム要求の中で指定された、あるいはプログラム及び/または関連するユーザに関して、それ以外で指定された(例えば、以前の登録の時点で)任意のプリファレンス及び/または要件に基づくことを含め、様々な仕方で行うことが可能である。例えば、プログラムインスタンスの実行のための好ましいリソース、及び/または要求されるリソースに関する基準が決定された場合、プログラムインスタンスを実行すべき適切なコンピュータシステムの決定は、コンピュータシステムが、それらのリソース基準を満たすのに十分なリソースを利用できるかどうかに少なくとも基づくことが或る程度可能である。
一部の実施形態では、プログラム実行サービスは、実行されるべきプログラムを実行するのにいずれのコンピュータシステムが利用されるべきかという決定を、実行されるべきプログラムの以前に格納された1つまたは複数のコピーのロケーションに基づかせることができる。特に、前述したとおり、少なくとも一部の実施形態では、プログラムを実行するのに利用可能である様々なコンピュータシステムは、グループに編成されることが可能である(各コンピュータシステムが、複数のグループの1つに属するなどして)。したがって、或るコンピュータシステムが、或るプログラムのインスタンスを実行するのに適切であるかどうかの決定は、そのコンピュータシステムのグループの1つまたは複数のコンピュータシステムが、プログラムのローカルコピーを格納するかどうかに少なくとも基づくことが或る程度可能である。プログラムのインスタンスを実行するのに、そのプログラムのローカルで格納されたコピーを既に有するコンピュータシステム、またはローカルで格納された1つまたは複数のコピーを有するグループに属するコンピュータシステムを選択することにより、プログラムのコピーを獲得することに基づくプログラム実行起動待ち時間を短縮するなどの、様々な利益が獲得可能である。或るグループ内の或るコンピュータシステムが、実行されるべきプログラムのローカルコピーを格納すると、プログラム実行サービスは、例えば、ローカルで格納されたコピーを有するコンピュータシステムが、プログラムのインスタンスを実行するのに十分なリソースを現在有していない場合や、ローカルで格納されたコピーを有するコンピュータシステムが、プログラムの1つまたは複数のインスタンスを既に実行している場合などの、様々な理由で、プログラムのインスタンスを現在実行するのに、そのグループ内の他の1つまたは複数のコンピュータシステムを選択することが可能である。
さらなる実施形態において、プログラム実行サービスは、他の様々な要因で、プログラムのインスタンスを実行するのに1つまたは複数のコンピュータシステムを選択できる。例えば、ユーザが、指示されたプログラムの複数のインスタンスが同時に実行されるべきことを要求すると、プログラム実行サービスは、これらのプログラムインスタンスの実行を、異なるグループのメンバであるコンピュータシステムの間に分散させて、グループ固有のネットワーク停止、または他の問題に直面して、より高い信頼性をもたらすようにすることを選ぶことができる。同様に、一部の実施形態では、プログラムの複数のインスタンスが、単一のコンピュータシステム上ではなく、複数のコンピュータシステム上で実行されることが可能である(その単一のコンピュータシステムが、それらの複数のインスタンスを実行するのに十分なリソースを有する場合でさえ)。プログラムインスタンスのそのような分散により、例えば、プログラムインスタンスのすべてを代わりに実行する単一のコンピュータシステムの障害、またはその単一のコンピュータシステムに対する接続が失われたことに直面しても、より高い信頼性がもたらされることが可能である。さらに、プログラム実行サービスによって管理されるコンピュータシステムが、物理的に(例えば、地理的に)分離している場合、プログラム実行サービスは、単一のデータセンタ内に配置されたコンピュータシステム上でプログラムの複数のインスタンスを実行して、実行中のプログラムのインスタンス間の通信のために比較的高いネットワーク帯域幅を提供するようにするよう、ユーザによって命令されることが可能であり、または、それ以外で選ぶことが可能である。あるいは、プログラム実行サービスは、プログラムインスタンスが、相互通信をほとんど、または全く行わない場合、さらに/または様々なプログラムインスタンスが、地理的に分散している数名の別個のエンドユーザまたはいくつかの別個のアプリケーションをサポートする場合など、複数の別個のデータセンタにおいて複数のプログラムインスタンスを実行するよう命令されることが可能であり、またはそれ以外で選ぶことが可能である。
プログラム実行サービスは、プログラムのインスタンスを実行する際に使用すべき1つまたは複数のコンピュータシステムを決定した後、それらのプログラムインスタンスの実行を様々な仕方で開始することができる。例えば、システムマネージャモジュールが、選択されたコンピュータシステムに命令及び他の様々な実行情報を与えることができる。他のそのような情報には、例えば、プログラムのローカルコピーを格納する、または格納することが可能な他の1つまたは複数のコンピュータシステムの指示が含まれることが可能である。選択されたコンピュータシステムに与えられる他のタイプの情報には、どれだけの時間、プログラムインスタンスを実行するかに関する指示、プログラムインスタンスに割り当てられるべきリソースに関する指示、プログラムインスタンスに与えられるべきアクセス権の指示、プログラムインスタンスの実行をどのように管理すべきかに関する制限の指示(例えば、どのようなタイプの通信を、プログラムインスタンスが送信する、または受信するのが許されるべきか)が含まれることが可能である。
選択されたコンピュータシステムが、指示されたプログラムの1つまたは複数のインスタンスを実行するように通知された後、選択されたコンピュータシステムは、受信された命令または他の関連する情報(例えば、事前定義されたプリファレンスまたは要件)に従ってプログラムインスタンス実行を実行しようと試みる。このプログラム実行通知は、少なくとも一部の実施形態では、選択されたコンピュータシステムに関連するマシンマネージャモジュール(例えば、選択されたコンピュータシステム上で実行されるマシンマネージャモジュール、または選択されたコンピュータシステムが属するグループのために実行されるマシンマネージャモジュール)によって受信されることが可能である。そのような実施形態において、マシンマネージャモジュールは、プログラムインスタンスの実行を管理するように動作することが可能である。例えば、選択されたコンピュータシステムが、実行されるべき指示されたプログラムのローカルコピーを既に格納しているのではない状況において、マシンマネージャモジュールは、実行のため、ならびにオプションのローカルの格納のためにプログラムのコピーを入手する、またはそれ以外で獲得するように動作することが可能である。プログラムコピーの獲得には、例えば、通知の中で指示される、またはプログラムのコピーを要求もしくは取得するためにプログラムのローカルコピーを少なくとも格納している可能性があることが知られている1つまたは複数のコンピュータシステムまたは他のシステム(例えば、データストレージシステム)と連絡をとることが含まれることが可能である。プログラムコピーの獲得は、後述されるとおり、プログラムのコピーを、プログラムインスタンスを実行するよう受信される通知と一緒に受信することによることを含め、様々な実施形態において様々な仕方で実行可能である。後述されるとおり、プログラム実行サービスは、少なくとも一部の実施形態において、プログラムの実行を管理する様々な他のアクションを行うことができる。
別の態様では、他のプログラムが、プログラムインスタンスを実行する要求をプログラムで開始すること、ならびに、場合により、様々な他のタイプの管理動作、提供動作、及び運営動作をプログラムで実行することを可能にするAPIが、提供されることが可能である。そのような動作には、ユーザアカウントの作成、実行リソースの予約、実行されるべき新たなプログラムの登録、グループ及びアクセスポリシーの管理、実行中のプログラムインスタンスの監視及び管理などが含まれるが、これらに限定されることはない。APIによって提供される機能は、例えば、プログラム実行サービスのコンピュータシステム上で実行されるプログラムインスタンスによることを含め、ユーザのためにクライアントコンピュータシステム及びクライアントデバイスによって呼び出すことが可能である。
特定のタイプのコンピュータシステム上での特定のタイプのプログラムの実行が、特定の仕方で管理されるいくつかの実施形態が例示のため後段で説明される。これらの例は、例示のために提供され、かつ簡明さのために簡略化されている。本発明の技術は、いくつかが後段で説明される多種多様な他の状況においても使用可能であり、これらの技術は、仮想マシン、データセンタ、または他の特定のタイプのコンピュータシステムもしくはコンピュータシステム構成で使用されることに限定されない。
複数のコンピュータシステムがプログラムを交換し、実行する例示的な実施形態を示すネットワーク図である。 プログラムのコピーを格納し、交換するコンピュータシステムのグループの例を示す図である。 複数のコンピュータシステム上のプログラムの実行を管理するのに適した例示的なコンピュータシステムを示すブロック図である。 システムマネージャモジュールルーチンの実施形態を示す流れ図である。 システムマネージャモジュールルーチンの実施形態を示す流れ図である。 マシンマネージャモジュールルーチンの実施形態を示す流れ図である。 プログラム実行サービスクライアントルーチンの実施形態を示す流れ図である。
図1は、複数のコンピュータシステムが、プログラム実行サービスの制御下などで、プログラムを交換し、実行する例示的な実施形態を示すネットワーク図である。特に、この例では、プログラム実行サービスが、データセンタ100内に配置された様々なコンピュータシステム上のプログラムの実行を管理する。データセンタ100は、複数のラック105を含み、各ラックは、複数のコンピュータシステム110a〜cを含むとともに、この例示的な実施形態では、ラックサポートコンピュータシステム122も含む。コンピュータシステム110a〜cはそれぞれ、1つまたは複数の仮想マシン120をホストするとともに、これらの仮想マシンを管理する別個のノードマネージャ115もホストする。各仮想マシン120は、プログラムのインスタンスを実行するための独立したコンピュータ環境を提供するように使用されることが可能である。ラックサポートコンピュータシステム122は、ラック、ならびに、場合により、データセンタ内に配置された他のコンピュータシステムにローカルの他のコンピュータシステムに、様々なユーティリティサービスを提供することができる。ユーティリティサービスには、例えば、他のコンピュータシステムのためのデータ格納及び/またはプログラム格納、他のコンピュータシステムをサポートする1つまたは複数のマシンマネージャモジュールの実行などが含まれることが可能である。各コンピュータシステム110は、代替として、別個のマシンマネージャモジュール(例えば、コンピュータシステムのノードマネージャの一部として提供される)を有することが可能であり、さらに/またはプログラムのローカルコピーを格納するローカルストレージ(図示せず)を有することが可能である。コンピュータシステム110a〜c及びラックサポートコンピュータシステム122はすべて、共通データ交換媒体を共有し、すべて、単一のグループの一部であることが可能である。この共通データ交換媒体は、例えば、データセンタ100内の他のラックまたはコンピュータシステムによって共有される1つまたは複数の外部データ交換媒体に接続されることが可能である。
さらに、例示的なデータセンタ100は、ノードマネージャ125と共通データ交換媒体を共有するコンピュータシステム130a〜b及び135をさらに含み、ノードマネージャ125は、コンピュータシステム130a〜b及び135を管理する。また、コンピュータシステム135は、1名または複数名のユーザのためにプログラムインスタンスを実行する際に使用するための実行環境として、複数の仮想マシンをホストする一方で、コンピュータシステム130a〜bは、別個の仮想マシンをホストしない。オプションのコンピュータシステム145が、データセンタ100と外部ネットワーク170の相互接続地点において存在する。オプションのコンピュータシステム145は、ネットワークプロキシの役割をする、着信するデータ伝送及び/または発信されるデータ伝送を管理するなどの、いくつかのサービスを提供することができる。さらに、データセンタ内に配置された他のコンピュータシステム上(または、オプションとして、他の1つまたは複数のデータセンタ160において配置されたコンピュータシステム上)のプログラムの実行を管理することを支援するオプションのシステムマネージャコンピュータシステム140も、図示される。オプションのシステムマネージャコンピュータシステム140は、システムマネージャモジュールを実行することができる。前述したとおり、システムマネージャモジュールは、プログラムの実行を管理することに加えて、ユーザアカウントの管理(例えば、作成、削除、料金請求など)、実行されるべきプログラムの登録、格納、及び配布、プログラムの実行と関係するパフォーマンスデータ及び監査データの収集及び処理、プログラムの実行の代金の支払いを顧客、または他のユーザから得ることなどを含む、様々なサービスを提供することができる。
データセンタ100は、ネットワーク170(例えば、インターネット)を介して、データセンタ100の運営者または第三者によって運用されることが可能なコンピュータシステム180及びデータセンタ160、並びにオプションのシステムマネージャ150を含む、他のいくつかのシステムに接続される。システムマネージャ140と同様の仕方で、システムマネージャ150は、様々な他のサービスを提供することに加えて、1つまたは複数のデータセンタ100及び/または160において配置されたコンピュータシステム上のプログラムの実行を管理することができる。例示的なシステムマネージャ150は、いずれの特定のデータセンタに対しても外部にあるものとして示されるものの、他の実施形態では、システムマネージャ150は、データセンタ160の1つなどの、データセンタ内に配置されてもよい。
図2は、プログラム実行サービスなどのために、プログラムのコピーを格納し、交換するコンピュータシステムの2つのグループの例を示す。実際の実施形態では、グループ、コンピュータシステム、及びプログラムの数は、図2に示されるグループよりはるかに多くてもよいことが理解されよう。例えば、1つの例示的な実施形態として、1グループ当たり40のコンピュータシステムが存在し、1つのデータセンタ当たり100のグループが存在して、1つのデータセンタ当たり4000のコンピュータシステムとなることが可能であり、各コンピュータシステムは、顧客のプログラムインスタンスを実行する15の仮想マシンをホストすることが可能である。さらに、各グループが、2テラバイト(TB)のストレージを有する専用のコンピュータシステムを含む場合、1グループ当たり2000の1GBの仮想マシンイメージプログラムコピーが格納可能であり、その場合1つのデータセンタ当たり合計で20万のコピーとなる。あるいは、1グループ当たり40のコンピュータシステムのそれぞれが、100GBのローカルストレージを有する場合、1グループ当たり4000の1GBの仮想マシンイメージプログラムコピーが格納可能であり、その場合1つのデータセンタ当たり合計で40万のコピーとなる。ホストされる各仮想マシンが、1つのプログラムを実行する場合、そのようなデータセンタは、同時に6000ものプログラムインスタンスを実行することができる。他の実施形態では、他の数のグループ、他の数のコンピュータシステム、及び他の数のプログラムが使用されることが可能であること、ならびにはるかに小さいサイズ及び/または可変サイズのプログラムが、格納され、実行されることが可能であることを理解されたい。
図2は、2つのグループ、グループA200及びグループB250を示す。グループAは、MA1、MA2及びMA3とそれぞれ名付けられた3つの計算機210a〜cを含む。グループB250は、MB1、MB2及びMB3とそれぞれ名付けられた3つの計算機260a〜cを同様に含む。各グループは、異なるタイプの異なる数の計算機を有してもよく、一部の実施形態では、計算機は、複数のグループのメンバであることも、いずれのグループのメンバでもないことも可能である。別の箇所で詳述されるように、各グループの計算機は、そのグループ(図示せず)に関する共通のデータ交換媒体を共有する。
例示的な例において、図2の各計算機は、ローカルプログラムリポジトリ(例えば、ハードディスクまたは他のストレージデバイスによって提供される永続ストレージの一部としてのリポジトリ)の中に1つまたは複数のローカルプログラムコピーを格納できる。計算機MA1は、計算機MA1のプログラムリポジトリ220aの中に格納されたプログラムP1、P2、P3、P5及びP9のローカルコピーを有し、ボックス230aの中に示されるとおり、プログラムP1のインスタンスを現在、実行している。各計算機上のプログラムリポジトリの記憶容量は、最大で5つまでのプログラムコピーに限られ、各コンピュータシステムの実行リソースは、最大で同時に実行される2つまでのプログラムインスタンスに限られる。この例において用いられるプログラムリポジトリのサイズ、及び実行されるプログラムの数の限度は単なる例示であり、他の実施形態では、各コンピュータシステムは、別個のリソースをさらに有することが可能である。さらに、プログラムリポジトリのサイズは、多くの実施形態において、プログラムインスタンスを実行する際に使用するのに利用可能なメモリのサイズより、1桁または数桁大きい大きさであることが可能であるが、そうであることは、必ずしも当てはまるわけではない。他の実施形態では、同時に実行されるプログラムインスタンスの最大数は、プログラムリポジトリの中にローカルで格納可能なプログラムコピーの数より多くてもよいし、少なくてもよいし、またはそのような数と同一であってもよい。したがって、少なくとも一部の計算機または他のシステムは、ローカルプログラムリポジトリと、プログラムインスタンスを実行する利用可能なリソースのいずれかだけを提供してもよい。最後に、別の箇所で詳述するとおり、一部の実施形態では、プログラムのうち少なくともいくつかのプログラムのローカルで格納されたコピーは、プログラムリポジトリが容量に達した後、他のプログラムコピーのためのスペースをあけるなどのために、いくつかの状況下で、ストレージから強制退去させられてもよいし、または除外されてもよい。一部の実施形態は、プログラムのうち少なくともいくつかのプログラムの実行中のインスタンスは、プログラム実行リソースが容量に達した後、他の実行されるプログラムインスタンスのためのスペースをあけるなどのために、いくつかの状況下で、実行を終了してもよいし、または実行から除外されてもよい。
複数の例示的なシナリオが、プログラム実行サービスの一実施形態のいくつかのタイプの動作の例を与えるように例示的な目的で本明細書において提示される。プログラム実行サービスは、指定され、事前定義され、さらに/または学習された1つまたは複数のポリシーを使用して、計算機上の実行されるプログラムインスタンスの配置に影響を与えることができ、以下のとおり、簡略化されたポリシーセットが、この例において使用される。第1に、プログラムの複数のインスタンスは、可能な場合、複数のグループの計算機上で実行される。第2に、プログラムの複数のインスタンスは、可能な場合、複数の計算機上で実行される。第3に、プログラムのインスタンスは、可能な場合、プログラムリポジトリの中にそのプログラムのコピーを既に格納している計算機上で実行される。第4に、プログラムのインスタンスは、可能な場合、プログラムリポジトリの中にそのプログラムのローカルコピーを格納している少なくとも1つの計算機を有するグループのメンバである計算機上で実行される。最後に、プログラムのインスタンスは、可能な場合、最も多くの利用可能な実行リソースを有する計算機上で実行される。
これら6つのコンピュータシステムに関するプログラム実行を管理する例示的な例から、プログラム実行サービスのクライアントが、プログラムP7の2つのインスタンスの実行を要求したものと想定されたい。この場合、前述したポリシーを所与として、プログラム実行サービスの例示的な実施形態は、グループAの中でP7の1つのインスタンスを実行し、グループBの中でP7の1つのインスタンスを実行することを選択する可能性が高い。なぜなら、そのような配置が、複数のグループにわたってコピーを分散させる傾向にあるためである。グループAの計算機間では、このグループの計算機のいずれも、このプログラムのローカルコピーを格納しないので、プログラム実行サービスは、計算機MA3が、2つのプログラム(P8及びP9)を既に実行しているので、計算機MA3上でP7のコピーを実行することを選択しない可能性が高い。計算機MA1と計算機MA2の間では、MA2が現在プログラムを全く実行していないため、MA2が実行のために選択される。一実施形態において、計算機MA2は、実行のため、ならびに、オプションとして、リポジトリ220bの中にローカルで格納するために、グループAの外部の1つまたは複数のコンピュータシステムからプログラムP7のコピーを獲得する。例えば、計算機MA2は、プログラム実行サービスの計算機のすべてに関するリモートプログラムリポジトリ、及び/またはプログラム実行サービスに外部のロケーションから、プログラムP7のコピーを獲得することが可能である。グループBの計算機に関して、プログラム実行サービスは、P7プログラムインスタンスを実行するのに3つの計算機のいずれを選択することも可能である。なぜなら、これらのコンピュータシステムのいずれも、このプログラムのローカルコピーを格納しておらず、これらの計算機のそれぞれが、1つのプログラムを実行しているからである。しかし、プログラム実行サービスは、計算機MB3が、現在、計算機MB3のプログラムリポジトリの中に1つのプログラムコピーしか格納していないため、計算機MB3を選択することができる。したがって、計算機MB3は、計算機MB3のプログラムリポジトリから格納されたプログラムコピーを強制退去させる必要なしに、所望される場合、プログラムP7のローカルコピーを格納することができる。
次に、やはり、図2に示される初期条件から始めて、プログラム実行サービスのクライアントが、プログラムP6の2つのインスタンスの実行を要求したものと想定されたい。この場合、前述したポリシーを所与として、プログラム実行サービスの例示的な実施形態は、グループAの中でP6の1つのインスタンスを実行し、グループBの中のP6の1つのインスタンスを実行することを選択する可能性が高い。なぜなら、そのような配置が、複数のグループにわたってインスタンスを分散させるからである。グループAの計算機の間では、計算機MA2がやはり選択される可能性が、これらのコンピュータシステムのいずれも、プログラムP6のローカルコピーを格納しておらず、計算機MA2が、ビジーである度合いが最も低いため、高い。グループBの同等にビジーである計算機の間では、グループ内の複数の計算機にわたって単一のプログラムのコピーを分散させることを選好するポリシーのため、MB2だけが、そのプログラムのローカルコピーを格納しているという事実にもかかわらず、計算機MB2は選択されないことがある。しかし、信頼性より効率を重んじることを反映する異なるポリシーを有する他の実施形態は、P6のコピーがMB2のプログラムリポジトリの中に既に格納されているために、計算機MB2上でP6を実行することを実際に選択することが可能であることに留意されたい。残りの候補の計算機MB3とMB1の間では、プログラム実行サービスは、MB3のプログラムリポジトリからプログラムのコピーを可能性として強制退去させる必要が全くないため、計算機MB3を選好することが可能である。したがって、MB3が、この実施形態では、実行のため、ならびにローカルリポジトリ270cの中に場合により格納するため、MB2からプログラムP6のコピーを獲得する。
次に、やはり、図2に示される初期条件から始めて、プログラム実行サービスのクライアントが、プログラムP4の1つのインスタンスの実行を要求したものと想定されたい。この場合、前述したポリシーを所与として、プログラム実行サービスの例示的な実施形態は、計算機MB1上でP4を実行することを選択する可能性が高い。特に、既に実行されているP4のインスタンスは、全く存在せず、1つのインスタンスだけしか、実行されるように要求されなかったので、複数のグループの間でプログラムインスタンスを分散させることを選好するポリシー、及びプログラムの複数の実行されるインスタンスを単一の計算機上に配置することを回避することを選好するポリシーは、適用されない。したがって、MB1は、プログラムP4のローカルコピーをMB1のプログラムリポジトリの中に既に格納しているので、MB1が、P4を実行するように選択される可能性が高い。
次に、やはり、図2に示される初期条件から始めて、プログラム実行サービスのクライアントがプログラムP10の1つのインスタンスの実行を要求したものと想定されたい。この場合、前述したポリシーを所与として、プログラム実行サービスの例示的な実施形態は、MA2上でP10を実行することを選択する可能性が高い。前述の例の場合と同様に、複数のグループの間で実行のためのプログラムのインスタンスを分散させることを選好するポリシー、及びプログラムの複数のインスタンスを単一の計算機上に配置することを回避するポリシーは、適用されない。計算機MA3は、計算機MA3のリポジトリの中にP10のコピーを既に格納しているため、魅力的な候補であるが、2つの実行されるプログラム(P8及びP9)という計算機MA3の限度に既に達しているため、P10を現在、実行する容量を有さない。このことにより、計算機MA1及びMA2が、リポジトリの中にプログラムP10の格納されたローカルコピーを有する計算機(MA3)と同一のグループに入っているため、グループB内のいずれの計算機よりも好ましいものとして残される。MA1とMA2の間では、MA2が、ビジーである度合いが最も低いため、選択される可能性が高く、MA2は、MA3からプログラムP10のコピーを獲得する。
次に、やはり、図2に示される初期条件から始めて、プログラム実行サービスの例示的な実施形態のクライアントが、プログラムP3のさらなる6つのインスタンスの実行を要求したものと想定されたい。この場合、前述したポリシーを所与として、プログラム実行サービスは、計算機MA2上で2つのインスタンスを、計算機MA1、MB1、MB2及びMB3の各マシン上で1つのインスタンスを実行する可能性が高い。計算機MA3は、2つの実行されるプログラム(P8及びP9)という計算機MA3の限度に既に達しているため、インスタンスは、この計算機上で全く実行されない可能性が高い。この場合、一部の実施形態は、プログラムP3のローカルコピーを格納するために、余分の容量を有さないプログラムリポジトリを有する計算機から、プログラムの格納されたローカルコピーを強制退去させることが可能であることに留意されたい。例えば、実行されるべきプログラムのコピーを、実行に先立ってローカルプログラムリポジトリの中に常に格納することを選択する実施形態において、計算機MA1及びMB1が、それぞれのプログラムリポジトリから1つのローカルプログラムコピーを強制退去させることが可能である。この場合、実行されるプログラムの複数のインスタンスを複数の計算機にわたって分散させることを選好するポリシーに反して、計算機MA2及びMB3がそれぞれ、P3の2つのインスタンスを実行することになることにも留意されたい。しかし、この所与の例においてP3プログラムインスタンスを実行するためのさらなる計算機は存在しないため、プログラム実行サービスは、その要求が満たされるとすれば、P3の複数のインスタンスを単一の計算機上で実行することを選択することになる。代替として、一部の実施形態では、プログラム実行サービスは、異なるウェイトをポリシーに適用して、プログラム実行サービスが、計算機MA1、MA2、MB1及びMB3の各マシン上で単一のインスタンスを実行するなど、要求された数未満のインスタンスを実行することを代わりに選択することが可能である。同様に、一部の実施形態では、プログラムP3の6つを超えるさらなるインスタンスが、要求され、プログラム及び/または要求側が、十分に高い優先度である場合、プログラム実行サービスは、別のプログラムインスタンス(例えば、MA3上のプログラムP8及び/またはP9のインスタンス)の実行を終了させること、及び/または現在、実行されているプログラムインスタンスの1つが自然に終了した後、P3のために次に利用可能なプログラムインスタンス実行を予約することになどにより、P3のさらなるインスタンスを実行することを代わりに選択してもよい。
現在の例を引き続き参照すると、計算機MB1は、グループBからのMB2とMB3がともに、プログラムのローカルコピーを格納し、グループAの計算機MA1及びMA2も同様であるので、実行のためにプログラムP3のコピーを獲得する複数の利用可能なリソースを有する。この実施形態では、MB1は、MB1自らのグループのMB2とMB3がともに、プログラムP3の一部分(例えば、Xが、プログラム実行サービスによって選択される数である、最初のXバイト及び第2のXバイト)を提供することを要求する。次に、計算機MB1は、応答が、それらの計算機からどれだけ迅速に受信されるかを監視し、プログラムの残りの部分の少なくとも大半(さらに、場合により、すべて)を供給するよう、より応答性に優れた計算機に要求する。他の実施形態では、計算機MB1のためのプログラムP3のコピーの獲得は、計算機MB2とMB3のいずれかだけからプログラムコピーを要求すること、グループA内の計算機MA1及び/またはMA2(グループBのMB2及びMB3に加えてであれ、MB2及びMB3の代わりにであれ)からプログラムコピーの少なくともいくつかの部分を要求することなどによって、他の仕方で実行されてもよい。
図3は、プログラム実行サービスシステムの或る実施形態を実行することなどによって、管理されている複数のコンピュータシステム上のプログラムの実行を管理するのに適した例示的なコンピュータシステムを示すブロック図である。この例において、コンピュータシステム300は、システムマネージャモジュールの或る実施形態を実行して、管理されている複数のコンピュータシステム上のプログラムの実行を調整する。一部の実施形態では、コンピュータシステム300は、図1のシステムマネージャ140または150に対応することが可能である。さらに、1つまたは複数のマシンマネージャコンピュータシステム370がそれぞれマシンマネージャモジュール382を実行して、関連する1つまたは複数のコンピュータシステムによるプログラムの獲得及び実行を円滑にする。一部の実施形態では、この1つまたは複数のマシンマネージャモジュール382のそれぞれは、図1のノードマネージャ115または125のいずれかに対応することが可能である。この例では、複数のマシンマネージャコンピュータシステム370が提供され、各システム370が、システムマネージャモジュールによって管理されているプログラム実行サービスの複数のコンピュータシステムの1つとして動作する。図示される例では、コンピュータシステム370の各システム上で、別個のマシンマネージャモジュール382が実行される。他の実施形態では、マシンマネージャコンピュータシステム370の各システム上のマシンマネージャモジュール382は、他の1つまたは複数のコンピュータシステム(例えば、他のコンピュータシステム388)を代わりに管理することが可能である。
この例示的な実施形態では、コンピュータシステム300には、「CPU」(中央処理装置)335と、ストレージ340と、メモリ345と、様々な「I/O」(入出力)デバイス305とを含み、図示されるI/Oデバイスには、ディスプレイ310、ネットワーク接続315、コンピュータ可読媒体ドライブ320、及び他のI/Oデバイス330が含まれる。図示されていない他のI/Oデバイスには、キーボード、マウスもしくは他のポインティングデバイス、マイクロホン、スピーカなどが含まれてもよい。図示される実施形態では、システムマネージャモジュール350が、他のコンピュータシステム上のプログラムの実行を管理するためにメモリ345の中で実行されており、他の1つまたは複数のプログラム355が、オプションとして、メモリ345の中で実行されてもよい。コンピュータシステム300とコンピュータシステム370は、互いに接続されるとともに、ネットワーク386を介して他のコンピュータシステム388にも接続される。
各コンピュータシステム370は、CPU374と、様々なI/Oデバイス372と、ストレージ376と、メモリ380とを同様に含む。図示される実施形態では、マシンマネージャモジュール382が、プログラム実行サービスの顧客のためなど、プログラム実行サービスのためにコンピュータシステム上の他の1つまたは複数のプログラム384の実行を管理するために、メモリ380の中で実行されている。一部の実施形態では、コンピュータシステム370の一部または全ては、複数の仮想マシンをホストすることが可能である。そうである場合、実行されるプログラム384のそれぞれは、ホストされる別個の仮想マシン上で実行される仮想マシンイメージ全体(例えば、オペレーティングシステム、及び1つまたは複数のアプリケーションプログラムを有する)であってもよい。マシンマネージャモジュール382は、その他のホストされる仮想マシンを監視することができる特権的仮想マシンなどの、別のホストされる仮想マシン上で同様に実行されることが可能である。他の実施形態では、実行されるプログラムインスタンス384及びマシンマネージャモジュール382は、コンピュータシステム370上で実行される単一のオペレーティングシステム(図示せず)上で別々のプロセスとして実行可能である。このため、この例示的な実施形態では、プログラム実行サービスの能力は、ネットワーク386を介して通信して、管理されているコンピュータシステム上のプログラムの分散、獲得及び実行を共同で管理するシステムマネージャ350とマシンマネージャモジュール382との対話(interaction)によって提供される。
コンピュータシステム300及び370などのコンピュータシステムは、単に例示的であり、本発明の範囲を限定することは意図していないことが理解されよう。コンピュータシステム300及び370は、ネットワークアクセス可能なデータベースシステムまたは他のデータストレージデバイスを含む、図示されていない他のデバイスに接続可能である。より一般的に、計算機またはコンピュータシステムまたはデータストレージシステムは、限定なしに、デスクトップコンピュータもしくはラップトップコンピュータ、データベースサーバ、ネットワークストレージデバイス及び他のネットワークデバイス、PDA、セル電話機、無線電話機、ページャ、電子オーガナイザ、インターネット機器、テレビベースのシステム(例えば、セットトップボックス及び/またはパーソナル/デジタルビデオレコーダを使用する)、ならびに適切な相互通信能力を含む他の様々な消費者製品を含む、対話し、説明されたタイプの機能を実行することができるハードウェアまたはソフトウェアの任意の組合せを含んでもよい。さらに、例示されるシステムモジュールによって提供される機能は、一部の実施形態では、より少ないモジュールに組み合わされても、さらなるモジュールに分散されてもよい。同様に、一部の実施形態では、例示されるモジュールのうちいくつかのモジュールの機能は、提供されなくてもよく、さらに/または他のさらなる機能が、利用可能であってもよい。
また、様々なアイテムが、使用されている間、メモリ内、またはストレージ上に格納されているものとして例示されるが、これらのアイテム、及びこれらのアイテムの部分は、メモリ管理及びデータ完全性の目的で、メモリと他のストレージデバイスとの間で転送されることが可能であることも理解されよう。代替として、他の実施形態では、ソフトウェア構成要素及び/またはソフトウェアモジュールのいくつか、またはすべては、別のデバイス上のメモリの中で実行されて、コンピュータ間通信を介して、例示されるコンピュータシステムと通信してもよい。システムモジュールまたはデータ構造のいくつか、またはすべては、ハードディスク、メモリ、ネットワーク、適切なドライブによって、または適切な接続を介して読み取られるべきポータブルメディア製品などのコンピュータ可読媒体上に格納されることも可能である(例えば、ソフトウェア命令、または構造化されたデータとして)。また、システムモジュール及びデータ構造は、無線ベースの媒体及び有線/ケーブルベースの媒体を含め、様々なコンピュータ可読伝送媒体上で、生成されたデータ信号として(例えば、搬送波、または他のアナログもしくはデジタルの伝搬される信号の一部として)伝送されることも可能であり、様々な形態(例えば、単一のアナログ信号、もしくは多重化されたアナログ信号の一部として、または複数の離散的なデジタルパケットもしくはデジタルフレームとして)をとることが可能である。また、そのようなコンピュータプログラム製品は、他の実施形態の他の形態をとることも可能である。したがって、本発明は、他のコンピュータシステム構成で実施されてもよい。
図4A〜図4Bは、システムマネージャモジュールルーチン400の一実施形態の流れ図を示す。このルーチンは、例えば、プログラム実行サービスのために複数のコンピュータシステム上の複数のプログラムの実行を管理するようになど、図1のシステムマネージャモジュール140及び/または図3のシステムマネージャモジュール350の実行によって提供されることが可能である。
このルーチンは、ステップ405で始まり、ステータスメッセージ、または1つまたは複数のプログラムの実行と関係する要求を受信する。ルーチンは、次に、ステップ410に進み、受信したメッセージまたは要求のタイプを特定する。指示された1つまたは複数のプログラムの1つまたは複数のインスタンスを実行する要求が受信されたと判定された場合、ルーチンは、ステップ415に進む。ステップ415で、ルーチンは、指示されたプログラムを実行すべきコンピュータシステムの1つまたは複数のグループを識別する。ステップ420で、ルーチンは、指示されたプログラムのインスタンスを実行すべき識別された1つまたは複数のグループの各グループ内の1つまたは複数のコンピュータシステムを選択する。この1つまたは複数のグループの選択は、グループが、そのプログラムの1つまたは複数のローカルコピーを格納する1つまたは複数のコンピュータシステムを有するかどうか、適切なコンピュータリソースの利用可能性、及びそれらのグループのコンピュータシステムのロケーションなどの、様々な要因に基づくことが可能である。識別されたグループ内の1つまたは複数のコンピュータシステムの選択は、同様に、そのグループのコンピュータシステムの間におけるプログラムの格納されたローカルコピーのロケーション、及びコンピュータリソース利用可能性などの、様々な要因に基づいてもよい。前述したとおり、ユーザ、または他の要求者によって指定された基準を含め、様々な指定されたポリシー及び他の基準が、様々な実施形態におけるグループ及びコンピュータシステムの選択の一環として使用可能である。さらに、他の実施形態において、グループ及び特定のコンピュータシステムは、グループにかかわらず(例えば、グループが全く使用されない場合)、1つまたは複数の最も適切なコンピュータシステムを単に選択するようになど、個々に選択されないことが可能である。
次に、ステップ425で、ルーチンは、実行されるべきプログラムの指示を、それらのプログラムインスタンスを実行する命令を含むメッセージを送信することなどによって、選択されたコンピュータシステム、及び/またはそれらのコンピュータシステムに関連するマシンマネージャモジュールに与える。例示される実施形態では、個別のマシンマネージャモジュールが、コンピュータシステムの各システム上で実行され、当該メッセージを受信する。前述したとおり、実行されるべきプログラムのコピーが獲得されるべき1つまたは複数のコンピュータシステムをどのように識別するかの指示を含め、様々なタイプの情報が、マシンマネージャモジュールに与えられることが可能である。代替として、一部の実施形態では、システムマネージャは、指示されたプログラムのコピーをコンピュータシステムに直接に供給し、さらに/またはマシンマネージャモジュールまたは他のさらなるモジュールの介入なしに、コンピュータシステム上でプログラムの実行を開始することが可能である。
ステップ410で、代わりに、ユーザからなど、新たなプログラムを登録する要求が受信されたと判定された場合、ルーチンは、ステップ440に進み、そのプログラムの指示、ならびにそのプログラムを登録したユーザの身元などの任意の関連する管理情報を格納する。次に、ステップ445で、ルーチンは、オプションとして、1つまたは複数のコンピュータシステムの指示されたプログラムのコピーの配信を開始する。例えば、一部の実施形態では、システムマネージャは、後のプログラム実行開始の効率を高めるために、指示されたプログラムの格納されたコピーを有する1つまたは複数のデータセンタ内の1つまたは複数のコンピュータシステム、及び/または1つまたは複数のリポジトリの中に入れる(seed)ことを選択することができる。
ステップ410で、代わりに、管理されるコンピュータシステムの1つまたは複数のシステムの動作を反映するステータスメッセージが受信されたと判定された場合、ルーチンは、ステップ450に進み、その1つまたは複数のコンピュータシステムに関するステータス情報を更新する。例えば、マシンマネージャモジュールは、関連するコンピュータシステムが、実行されているプログラムインスタンス、及び/または格納されているローカルプログラムコピーを変更したと判定することができ、それに応じて、ステータスメッセージをシステムマネージャに与えることができる。一部の実施形態では、ステータスメッセージは、プログラムを実行すべき適切なコンピュータシステムの選択の際に使用するために、管理されるコンピュータシステムの動作上のステータスについてシステムマネージャに常に知らせておくために、マシンマネージャモジュールによって定期的に送信される。他の実施形態では、ステータスメッセージは、他の時点で(例えば、関係のある変化が生じた場合にはいつでも)送信可能である。他の実施形態では、システムマネージャモジュールは、代わりに、所望に応じて、マシンマネージャモジュールから情報を要求することができる。ステータスメッセージは、或る特定のコンピュータシステム上で現在、実行されているプログラムの数及びID、或る特定のコンピュータシステム上のローカルプログラムリポジトリの中に現在、格納されているプログラムのコピーの数及びID、或るコンピュータシステムに関するパフォーマンス関連の情報、及びリソース関連の情報(例えば、CPU、ネットワーク、ディスク、メモリなどの利用率)、或るコンピュータシステムに関する構成情報、及び或る特定のコンピュータシステム上のハードウェアまたはソフトウェアと関係する誤りまたは障害のレポートなどの、様々なタイプの情報を含むことが可能である。
ステップ410で、代わりに、他の何らかのタイプの要求が受信されたと判定された場合、ルーチンは、ステップ455に進み、適宜、他の指示された動作を実行する。そのような動作には、例えば、システム内の他の構成要素からのステータスクエリに応答すること、現在、実行されている1つまたは複数のプログラムの実行を一時停止する、または終了すること、現在、実行されているプログラムを1つのコンピュータシステムから別のコンピュータシステムに移すこと、システムマネージャをシャットダウンすること、または再起動することなどが含まれることが可能である。
ステップ425、445、450及び455の後、ルーチンは、ステップ430に進み、ユーザに関する料金請求情報を計算すること、表示情報を更新すること、ノードマネージャまたは他の構成要素に定期的クエリを送信すること、ログまたは他の情報を交替させることなどの任意のハウスキーピングタスクをオプションとして実行する。次に、ルーチンは、ステップ495に進み、続けるかどうかを判定する。続ける場合、ルーチンは、ステップ405に戻り、続けない場合、ステップ499に進み、リターンする。
図5は、マシンマネージャモジュールルーチン500の流れ図を示す。ルーチンは、管理されている関連する1つまたは複数のコンピュータシステムのためのプログラムコピーの獲得、及びプログラムインスタンスの実行を円滑にするためなどに、例えば、図3のマシンマネージャモジュール382、及び/または図1のノードマネージャ115または125の実行によって提供されることが可能である。例示される実施形態では、各マシンマネージャモジュールルーチンは、1つまたは複数のプログラムインスタンスを実行するとともに、1つまたは複数のローカルプログラムコピーを格納するようにも構成された単一のコンピュータシステムのために実行され、マシンマネージャモジュールは、図4A〜図4Bに関連して説明されるシステムマネージャモジュールルーチンと協調して動作して、プログラム実行サービスのために、管理されるコンピュータシステムに関するプログラムの実行を管理する。
ルーチンは、ステップ505で始まり、システムマネージャモジュールなどから、1つまたは複数のプログラムの実行と関係する要求を受信する。ルーチンは、ステップ510に進み、指示されるプログラムを実行する、または格納する要求が受信されたかどうかを判定する。受信された場合、ルーチンは、ステップ515に進み、指示されたプログラムが、管理されているコンピュータシステムのローカルプログラムリポジトリの中に現在、格納されているかどうかを判定する。格納されていない場合、ルーチンは、ステップ540に進み、ローカルプログラムリポジトリが、指示されたプログラムを格納する十分な容量を有するかどうかを判定する。十分な容量を有さない場合、ルーチンは、ステップ545に進み、ステップ505で受信された要求の中で示されるとおり、またはそれ以外でマシンマネージャモジュールによって使用される強制退去ポリシーに基づいて、ローカルプログラムリポジトリから1つまたは複数のプログラムを強制退去させる。ステップ545の後、またはステップ540で、代わりに、ローカルプログラムリポジトリが、指示されるプログラムのローカルコピーを格納する十分な容量を有すると判定された場合、ルーチンは、ステップ550に進み、他の特定された1つまたは複数のコンピュータシステムから、指示されたプログラムのコピーを獲得する。ルーチンは、ステップ505で受信された要求の一部として受信された情報に基づくことを含め、様々な仕方でプログラムの格納されたローカルコピーを有する他のコンピュータシステムを特定することができる。さらに、近隣コンピュータシステムへのブロードキャスト、中央ディレクトリに対する要求、及び/またはピアツーピアデータ交換などの他の1つまたは複数の技術を使用することも可能である。他の実施形態では、プログラムのコピーは、ステップ505で、代わりに、要求と一緒に提供可能である。次に、ルーチンは、ステップ555に進み、指示されたプログラムの獲得されたコピーをローカルプログラムリポジトリの中に格納する。ステップ555の後、またはステップ515で、指示されたプログラムが、リポジトリの中に既に入っていたと判定された場合、ルーチンは、ステップ520に進み、実行されるべきプログラムの指示が受信されたかどうかを判定する。受信された場合、ルーチンは、ステップ525に進み、指示されたプログラムの実行を開始する。
ステップ510で、代わりに、プログラムを格納する、または実行する要求が、受信されなかったと判定された場合、ルーチンは、ステップ535に進み、適宜、他の指示された動作を実行する。例えば、他の動作には、受信された要求に応答して、さらに/または、プログラムが不規則に、またはリソースを過度に利用して動作していたことなどの、プログラムのパフォーマンスに関して収集された情報に基づいてなど、1つまたは複数のプログラムの実行を一時停止する、または終了することが含まれてもよい。さらに、他の動作には、現在、実行されているプログラムに関するステータス情報、またはローカルプログラムリポジトリの内容などを求める要求に応答することが含まれてもよい。
ステップ535、ステップ525の後、またはステップ520で、代わりに、実行されるべきプログラムの指示が受信されなかった場合、ルーチンは、ステップ530に進み、1つまたは複数のシステムマネージャモジュールにステータス情報メッセージを送信する。例示される実施形態では、ルーチンは、ノードマネージャによって管理されるコンピュータシステムの状態をシステムマネージャに常に知らせておくために、動作が行われると毎回、システムマネージャモジュールにステータス情報メッセージを送信する。他の実施形態では、ステータス情報は、他の時点で、他の仕方で送信可能である。ステップ530の後、ルーチンは、ステップ595に進み、続けるかどうかを判定する。続ける場合、ルーチンは、ステップ505に戻り、一方、続けない場合ステップ599に進み、リターンする。本明細書で示されていないが、ルーチンは、必要に応じて、様々な時点で様々なハウスキーピング動作を実行することもできる。
図6は、プログラム実行サービスクライアントルーチンの実施形態の流れ図を示す。ルーチンは、例えば、人間のユーザがプログラム実行サービスと対話することを可能にする対話型コンソールを提供するなどの、図1に示されるコンピュータシステム180の1つのシステム180上に常駐するアプリケーションによって提供されることが可能である。ルーチンは、代替として、プログラム実行サービスによって、ユーザにインタラクティブに、さらに/またはユーザのプログラムにプログラムで提供される能力を反映してもよい。代替として、このルーチンは、管理されるコンピュータシステムの1つのシステム上のプログラム実行サービスによって実行されているプログラムの1つの一部であって、そのようなプログラムが、負荷平衡化、増加または低減したデマンドを満たすなどの目的で、さらなるプログラムインスタンスを動的に実行できるようにすることなどが可能である。
ルーチンは、ステップ605で始まり、1つまたは複数のプログラムの実行と関係する要求を受信する。ステップ610で、ルーチンは、受信したメッセージのタイプを特定する。この要求が、新たなプログラム(または以前に登録されたプログラムの新たなバージョン)の登録と関係する場合、ルーチンは、ステップ625に進み、プログラム実行サービス(例えば、システムマネージャモジュール)に登録されるべき新たなプログラムの指示を送信する。この指示は、プログラムのコピー、またはプログラムをどのように獲得すべきかの命令を含むことが可能である。要求が、ステップ610で、代わりに、プログラムの実行と関係すると判定された場合、ルーチンは、ステップ615に進み、実行されるべきプログラムの1つまたは複数のインスタンスを実行する要求をプログラム実行サービスに(例えば、システムマネージャモジュールに)送信する。例えば、ルーチンは、プログラム実行サービスから以前に受信した指示を使用して、プログラムインスタンスを実行してもらうプログラム及び/またはユーザを識別することができる。ステップ610で、代わりに、他の何らかのタイプの要求が受信されたと判定された場合、ルーチンは、ステップ625に進み、適宜、他の指示された動作を実行する。例えば、ルーチンは、指示された1つまたは複数のプログラムインスタンスを或る将来の時点で実行するコンピュータリソースを予約する要求をプログラム実行サービスに送信し、1つまたは複数のプログラムの現在または以前の実行に関するステータスクエリをプログラム実行サービスに送信し、ユーザ関連の情報を(例えば、プログラム実行サービスにユーザを登録することの一環として)提供・変更し、以前に登録されたプログラムを登録解除もしくは除去し、1つまたは複数のプログラムインスタンスの実行を一時停止または終了することができる。
ステップ615、625または630の後、ルーチンは、ステップ620に進み、オプションとして表示情報を更新したり、ステップ615、625または630に応答してプログラム実行サービス(図示せず)から戻された情報を格納したり、プログラム実行サービスの定期的ステータスクエリを行ったりなどの、さらなるハウスキーピングタスクを実行する。ステップ620の後、ルーチンは、ステップ695に進み、処理を続けるかどうかを判定する。ルーチンは、続ける場合ステップ605に戻り、続けない場合ステップ699に進み、戻る。
また、一部の実施形態では、前述したルーチンによって提供される機能は、より多くのルーチンに分割される、またはより少ないルーチンに統合されるなどの、代替の仕方で提供可能であることも、当業者には理解されよう。同様に、一部の実施形態では、例示されるルーチンは、説明されるよりも多くの機能、または説明されるよりも少ない機能を提供することが、他の例示されるルーチンが、代わりに、そのような機能を欠く場合、または含む場合、あるいは提供される機能の量が変更される場合などに、可能である。さらに、様々な動作が、或る特定の仕方で(例えば、順次に、または並行に)、さらに/または或る特定の順序で実行されるように例示されることが可能であるが、他の実施形態では、動作は、他の順序及び他の仕方で実行可能であることが、当業者には理解されよう。また、前述したデータ構造は、単一のデータ構造を複数のデータ構造に分割すること、または複数のデータ構造を単一のデータ構造に統合することによってなど、様々な仕方で構造化することが可能であることも、当業者には理解されよう。同様に、一部の実施形態では、例示されるデータ構造は、説明されるよりも多くの情報または少ない情報を格納することが、他の例示されるデータ構造がそのような情報を欠く場合または含む場合、あるいは格納されている情報の量またはタイプが変更される場合に、可能である。
前述したとおり、様々な実施形態は、プログラムの実行と関係するポリシーの実施を円滑にするために、プログラム実行サービスのコンピュータシステムを1つまたは複数のグループに編成する。さらに、コンピュータシステムは、グループの階層を用いてなど、他の仕方で編成されることも可能である。例えば、最小のグループはそれぞれ、単一のコンピュータシステムを含むことが可能であり、各コンピュータシステムは、そのシステム独自のグループに割り当てられる。その場合、単一のネットワークスイッチによって接続された単一マシングループは、単一のネットワークスイッチによって物理的に接続されたコンピュータシステムのすべてを含むスイッチレベルグループにさらに含まれることが可能である。その場合、スイッチレベルグループは、所与のデータセンタ内のコンピュータシステムのすべてを含むデータセンタレベルグループにさらに含まれることが可能である。その場合、データセンタレベルグループは、複数のデータセンタ内のコンピュータシステムのすべてを含むユニバーサルグループにさらに含まれることが可能である。そのような編成において、各レベルにおけるグループは、一般に、グループ内の他のコンピュータシステム上に配置されているプログラムのコピーに順々に遅くなるアクセスを有し、単一マシングループが、最も迅速なアクセスを提供し、ユニバーサルグループが、最も遅いアクセスを提供する。そのような編成は、プログラム実行サービスが、実行されるべき或る特定のプログラムのコピーを格納しているとともに、そのプログラムを実行するのに必要とされるリソース利用可能性を有する最小のグループを探すことが可能であるので、実行されるプログラムの最適な配置を導く様々なポリシーの適用の効率的な実施を可能にすることができる。代替として、他の実施形態は、グループによってプログラム実行サービスにおけるコンピュータシステムをモデル化することは全くしない可能性がある。そのような実施形態は、例えば、ネットワークスイッチのいくつか、またはすべてに接続された、あるいはいくつかのハードウェアラック上、またはすべてのハードウェアラック上に配置された専用のデータストレージコンピュータシステムまたは他のシステムに、プログラムのうちいくつかのプログラム、またはすべてのプログラムのコピーを配置し、次に、実行されるべきプログラムを、ランダムに選択されたコンピュータシステムに、単に割り当てることができる。
前述したとおり、様々な実施形態は、プログラムを実行すべき、さらに/またはプログラムコピーの配信を受けるべき候補としてのコンピュータシステム及び/またはグループの選択に関して、様々なポリシーを実施することができる。多くの場合、様々なプログラム配置ポリシーには、信頼性や効率(例えば、起動待ち時間、ネットワーク待ち時間、またはスループットなど)などの要因の間のトレードオフが必然的に伴う可能性がある。配置ポリシーは、1つまたは複数のプログラムの実行を要求するユーザのプリファレンス、現在、実行されているプログラムの数、ID、及びロケーション、現在、実行が要求されているプログラムの数及びID、将来、実行がスケジュールされているプログラムの数及びID、プログラムの以前に格納されたコピーのロケーション、ネットワークアーキテクチャ、地理的ロケーションなどの要因を考慮に入れることが可能である。さらに、ポリシーのデフォルトの適用が、一部の場合、一部の実施形態において、ユーザ要求、または他の要因に基づいて無効にされる、または変更されることが可能である。例えば、或る特定の実施形態が、1つまたは複数のプログラムの実行を求めるユーザの要求の中で表現されたユーザ選好によって無効にされることが可能であるデフォルトポリシーのセットを提供することが可能である。
プログラム実行サービスによって管理されているコンピュータシステムが、複数のデータセンタにわたる実施形態において、プログラム実行サービスは、同一のデータセンタ内で単一のプログラムの複数のインスタンスを実行し、さらに/または同一のデータセンタ内で同一のユーザのための複数の別々のプログラムのインスタンスを実行することを選好することが可能である。そのようなポリシーは、そのようなプログラムが、プログラムインスタンス間の通信のために比較的高い帯域幅のデータセンタ内データ交換を利用することを許す傾向にある。他方、一部の実施形態は、複数のデータセンタにわたってそのようなプログラムインスタンスを分散させることを、データセンタ全体を機能停止させることが可能な停電、ネットワーク停止、または他の大規模な停止の場合に信頼性を保証するために、他のそのようなプログラムインスタンスとの通信をほとんど、または全く実行しないプログラムインスタンスなどに関して、選好する可能性がある。そのようなプログラムインスタンスを分散させる、または統合するそのような選好は、物理的サブネットワーク、グループ、及び個々のコンピュータシステムに関してなど、コンピュータシステム編成の他の様々なレベルで同様に適用可能である。さらに、一部の実施形態は、プログラム実行サービスの配置ポリシーの下で、さもなければ区別がつかない複数の候補コンピュータシステムの間で、選択を行うのに使用されることが可能なポリシーを使用することが可能である。例えば、一実施形態は、同等に良好な候補コンピュータシステムのセットから或るコンピュータシステムをランダムに選択することが可能であるのに対して、別の実施形態は、最低のリソース利用率を有するコンピュータシステムを選択することが可能であり、一方、異なる実施形態は、そのようなコンピュータシステムをラウンドロビン順に選択することが可能である。
さらに、様々な実施形態は、プログラムの実行に関して、ローカルプログラムストレージリポジトリの中にプログラムのコピーを格納することに関する様々なポリシーを実施することが可能である。例えば、一部の実施形態は、ローカルプログラムストレージリポジトリを収容するコンピュータシステム上の実行に先立って(または実行中、もしくは実行後に)、ローカルプログラムストレージリポジトリ上にプログラムのローカルコピーを常に格納することが可能である。代替として、他の実施形態では、いくつかのプログラムだけしか、そのようなローカルプログラムストレージリポジトリの中に格納されない。さらに、様々な実施形態は、プログラムストレージリポジトリが、所与のプログラムのローカルコピーを格納する十分な容量を有さない場合、異なるアプローチをとることが可能である。例えば、一部の実施形態は、最近、最も使用されていないコピー、最も古いコピー、ランダムなコピー、異なる仕方で選択されたコピー、共通グループ内の他の1つまたは複数のグループのプログラムリポジトリなどの、何らかの他の関連するプログラムリポジトリの中に依然として格納されているプログラムのコピーなどを強制退去させるなど、新たなプログラムを格納するためのスペースをあけるために、プログラムリポジトリの中に格納されていたプログラムの1つまたは複数のコピーを強制退去させる、またはそれ以外で除去することを選択する。他の実施形態では、所与のプログラムリポジトリが一杯である場合、強制退去は全く実行されない(例えば、代わりに、毎日、再起動後、その他など、プログラムリポジトリからすべてのプログラムを定期的に除去することによって、またはプログラムが、プログラム実行サービスから登録解除された場合に限って、プログラムを除去することになどによって)。
一部の実施形態では、プログラムは、複数の、場合により、固定サイズのデータブロックに分解可能である。このようにプログラムを分解することにより、そのプログラムのコピーを獲得中であるコンピュータシステムは、プログラムリポジトリの中に、その要求されるプログラムを格納している他の複数のコンピュータシステムに要求を配信することができる。これらの他の複数のコンピュータシステムのいくつかは、プログラムブロックを求める要求に応答するので、獲得するコンピュータシステムは、それらの応答するコンピュータシステムからさらなるプログラムブロックを要求することができる。したがって、十分なリソースが利用可能であるコンピュータシステムが、それほど応答性のよくない、または応答しないコンピュータシステムより、プログラムブロックを供給するのに優先される。
一部の実施形態は、ローカルプログラムリポジトリの中に既に格納されている可能性がある他のプログラムと異なるプログラムの部分だけしか転送しないことなどにより、プログラムの転送効率を向上させる最適化を行うことができる。そのようなアプローチは、同一のプログラム、あるいはコードまたはデータの相当な部分を共有する異なるプログラムの複数のインクリメンタルバージョンを考えると、有利な場合がある。例えば、プログラムが、複数の、場合により、固定サイズのブロックに分解された場合、プログラムが、プログラム実行サービスに最初に登録されると、チェックサムが、各ブロックに関して計算されて、格納されることができる。後に、プログラムが、実行のために獲得されるべき際に、コンピュータシステムは、1つまたは複数のプログラムリポジトリの中に存在するプログラムのブロックに関連するチェックサムに対してプログラムブロックチェックサムを比較し、既に格納されてはいないプログラムブロックだけを獲得することができる。代替として、一部の実施形態は、実行可能ファイル、データファイル、及びライブラリファイルなどの、1つまたは複数のファイルの集合としてプログラムを表すことができる。そのような場合、2つのプログラムは、1つまたは複数のファイル(例えば、ライブラリファイル)を共通で有することが可能であり、所与のコンピュータシステムは、実行のために獲得されるべきプログラムの、コンピュータシステムのプログラムリポジトリの中に既に格納されているファイルとは異なるファイルだけを獲得することを選択することができる。
一部の実施形態は、すべて固定サイズのプログラムを提供するのに対して、他の実施形態は、様々なサイズのプログラムを許す。固定サイズのプログラムは、メモリまたはプログラムリポジトリなどのシステムリソースのプログラム利用率を計算するコンテキストにおいて、プログラムの扱いを簡単にすることができる。様々なサイズのプログラムを提供する実施形態において、最良適合、最初適合などの様々なビンパッキングアルゴリズムを含め、固定サイズのリソース(メモリまたはディスクスペースなどの)の利用率を最適化して、プログラムのローカルコピーを格納する際、及び/またはプログラムインスタンスを実行する際にフラグメンテーションを制限する様々なアルゴリズムが適用可能である。
さらに、一部の実施形態は、プログラムを実行する要求に先立って、管理されるコンピュータシステムの様々なシステムの中にプログラムのコピーを入れるため、またはそれ以外で配信するための機能を提供することができる。一部の実施形態は、プログラムが最初に登録される際にプログラムを格納するための少なくとも1つのユニバーサルプログラムリポジトリを提供するが、これらの実施形態は、プログラムが最初に実行される際、プログラムが、そのプログラムが実行されるべきコンピュータシステムに比較的ローカルであるいずれのプログラムリポジトリの中でも見つからないので、長い待ち時間を被る可能性がある。そのような実施形態が、ローカルプログラムリポジトリの中に実行されるプログラムのローカルコピーを格納するように構成される場合、その後の実行は、最初の実行と比べると、比較的短い起動待ち時間を被る。プログラムの最初の実行に関する比較的長い起動待ち時間という問題は、プログラムを実行する要求に先立って、プログラムのコピーを入れること、またはそれ以外で配信することによって対処可能である。そのような実施形態は、プログラム実行サービスを提供する1つまたは複数のデータセンタにローカルであるプログラムリポジトリにプログラムの1つまたは複数のコピーを配信することが可能である。そのような仕方で、プログラムが、最初に実行されるように要求されると、プログラムは、一般に、プログラムを実行するように選択されたコンピュータシステム、または複数のコンピュータシステムに比較的ローカルである(少なくとも同一のデータセンタ内の)プログラムリポジトリの中で見つかる。
さらに、一部の実施形態は、単一のプログラムの複数のインスタンスの実行の同時の、つまり、重なり合う開始の場合に、最適化を行うことができる。そのような状況において、実行されるべきプログラムのコピーは、ほぼ同時に複数の別々のコンピュータシステムによって獲得される必要がある可能性がある。各コンピュータシステムが、リモートプログラムリポジトリからプログラムのコピーを独立に獲得する場合、各コンピュータシステムが、ネットワークを介して同一のデータの転送を同時に開始するので、ネットワーク、及びその他のリソースの過度の利用がもたらされる可能性がある。一部の状況において、複数のコンピュータシステムが、システムリソースをよりよく利用するように(例えば、不必要なネットワーク使用を最小限に抑えることによって)、プログラムの1つまたは複数のコピーの獲得を同期する、またはそれ以外で順序付けることが、有益な場合がある。例えば、プログラムを実行するように選択された複数のコンピュータシステムが、同一のグループの一部であり、そのグループの外部の1つまたは複数のコンピュータシステムからプログラムコピーを獲得すべき場合、その複数のコンピュータシステムの第1のコンピュータシステムが、そのグループの外部のコンピュータシステムからプログラムのコピーを最初に獲得する(さらに、ローカルプログラムリポジトリの中に格納する)ことが、有益な場合がある。第1のコンピュータシステムが、プログラムのコピーを獲得した後、その複数のコンピュータシステムの残りのシステムが、そのグループに関する共通データ交換媒体を介して、第1のコンピュータシステムからコピーを獲得することができる。
さらに、複数のコンピュータシステムがそれぞれ、プログラムのコピーを獲得すべき場合に、ネットワーク及び/または他のコンピュータリソースを効率的に利用するさらなる様々な技術が、使用可能である。例えば、複数のコンピュータシステムの第1のシステムが、その複数のコンピュータシステムのその他のシステムへのプログラムの配信を管理するように選択可能である。複数のコンピュータシステムのいずれも、ローカルプログラムリポジトリの中にプログラムの格納されたコピーを有さない場合、選択されたコンピュータシステムが、リモートロケーションからプログラムの少なくとも一部分(例えば、ブロック)の転送を開始することができる。プログラムの一部分が、選択されたコンピュータシステムによって受信されるにつれ、選択されたコンピュータシステムは、その複数のコンピュータシステムのその他のシステムに、受信した部分をマルチキャストすることができる。そのようなマルチキャストは、その複数のコンピュータシステムを接続するネットワークに、より少ない冗長なデータパケットが送信されるため、他のネットワーク通信機構(例えば、その複数のコンピュータシステムのそれぞれによるTCPベースの転送)と比べて、向上したネットワーク利用をもたらすことができる。代替として、複数のコンピュータシステムの1つまたは複数が、ローカルプログラムリポジトリの中にプログラムの格納されたコピーを有する場合、選択されたコンピュータシステムは、その複数のコンピュータシステムの他のシステムにプログラムの少なくとも部分(例えば、ブロック)をマルチキャストして、ブロックを転送する負荷を分散させ、他のコンピュータシステム、及び/またはネットワークの部分に対する影響を最小限に抑えるよう、プログラムの格納されたコピーを有する1つまたは複数のコンピュータシステムの少なくともいくつかに指示することができる。プログラムのそのようなマルチキャストベースの配信の後、複数のコンピュータシステムの1つまたは複数は、受信されなかった(例えば、ドロップされたネットワークパケットのために)プログラムの部分を獲得するために、代替の通信機構(例えば、TCP)を利用することができる。代替の配信機構は、その複数のコンピュータシステムのその他のシステム上、及び/またはネットワークのいくつかの部分の上に負荷を分散させるラウンドロビンの仕方で、または他の仕方で、部分を求める配信要求を含むことが可能である。
一部の実施形態では、さらなる技術が使用可能である。例えば、マルチキャストベースの配信機構が、或るグループのコンピュータシステムに、そのグループ内の別のコンピュータシステムからプログラムの部分を配信するのに使用される場合、様々な技術を使用して、マルチキャストによってグループの外部のネットワークトラフィックが防止される、または制限されることが可能である。例えば、スイッチが、自身に接続されていないコンピュータシステムにマルチキャストパケットを伝送しないように、短い有効期間が、マルチキャストパケット及び/またはパケットアドレス指定技術を使用することに関して指定可能である。さらに、一部の実施形態は、ネットワークリソース使用を最小限に抑えるため、実行のためのプログラムのコピーの転送または実行に関与しないコンピュータシステムにかかる負荷を最小限に抑えるため、さらに/またはネットワークリソース及び/またはコンピュータリソースの予測可能なパフォーマンスを提供するために、様々なポリシーを実施することが可能である。例えば、一部の実施形態は、マルチキャスト伝送のためであれ、さらに/またはポイントツーポイント伝送のためであれ、コンピュータシステムが、他のコンピュータシステムにプログラムのコピーを転送することができるレートを制限することが可能である。さらに、一部の実施形態は、中間ネットワークデバイス(例えば、スイッチ、ルータなど)が、サブネットワーク間でプログラムのコピーの部分を伝送するデータパケットを転送する際、中間ネットワークデバイスによって利用されることが可能な転送レートを制限し、さらに/またはネットワーク帯域幅の割合を制限することが可能である。そのようなデータパケットは、例えば、特定のタイプであること、及び/または特定のアドレス(例えば、或る特定の範囲内のマルチキャストIPアドレス)であることに基づいて、中間ネットワークデバイスによって識別されることが可能である。一部の実施形態では、前述した機構などの複数の機構が、様々なネットワーク利用ポリシーを実施するように組み合わされることが可能である。
一部の実施形態では、1つまたは複数のコンピュータシステムから他の1つまたは複数のコンピュータシステムに実行される1つまたは複数のプログラムインスタンスを移す様々な技術が、使用されることも可能である。一態様では、この移行は、プログラムインスタンスが実行されている最初のコンピュータシステムと関係する問題(例えば、コンピュータシステム、及び/またはコンピュータシステムへのネットワークアクセスの障害)を反映することが可能である。別の態様において、移行は、高い優先度のプログラム実行のため、または限られた数のコンピュータシステム上にプログラムインスタンスの実行を統合して、プログラムインスタンスを実行する元のコンピュータシステムが、メンテナンス、エネルギー節約などの理由でシャットダウンされることを可能にするようになど、最初のコンピュータシステム上で実行されるべき他のプログラムインスタンスに対処することができる。1つの特定の例として、コンピュータシステム上で実行される1つまたは複数のプログラムインスタンスが、そのコンピュータシステムから利用可能であるより多くのリソースを必要とする場合、これらのプログラムインスタンスの1つまたは複数は、さらなるリソースを有する他の1つまたは複数のコンピュータシステムに移される必要がある可能性がある。1つまたは複数のコンピュータシステムが、予期されるよりも少ないリソースを有する、コンピュータシステムの1つまたは複数が、予期される(または許される)よりも多くのリソースを使用するなどの様々な理由で、または1つまたは複数のコンピュータシステムの利用可能なリソースが、予約された、もしくは実行中の1つまたは複数のプログラムインスタンスの可能なリソースニーズと比べて、意図的に過度にコミットされている実施形態において、利用可能なリソースの過度の使用が生じる可能性がある。例えば、プログラムインスタンスの予期されるリソースニーズが、利用可能なリソースの範囲内にある場合、最大のリソースニーズは、利用可能なリソースを超える可能性がある。また、プログラムインスタンス実行のために必要とされる実際のリソースが、利用可能なリソースを超える場合、利用可能なリソースの過度の使用が生じる可能性もある。プログラムの移行は、最初のコンピュータシステム上にローカルで格納されたプログラムのコピーをターゲット宛先コンピュータシステムに転送するように、さらに/または最初のコンピュータシステム上で実行されるプログラムのターゲット宛先コンピュータシステム上で新たなインスタンスを実行することを始めるようになど、様々な仕方で実行されることが可能である。移行は、現在の実行状態情報が、新たな実行されるプログラムインスタンスに転送されるように、さらに/または最初のプログラムインスタンスと新たなプログラムインスタンスの間の他の調整を可能にするようになど、可能な場合、最初に実行されるプログラムインスタンスが終了する前に行われることが可能である。
一部の実施形態は、料金と引き換えに複数の顧客にプログラム実行サービスを提供することができる。そのような状況において、顧客は、プログラム実行サービスにプログラムを登録し、またはそれ以外で提供し、料金と引き換えにそのようなプログラムの実行を要求することができる。顧客が、時間ベース(例えば、分数、時間数、日数など)でプログラム実行サービスリソース(例えば、ネットワーク帯域幅、メモリ、ストレージ、プロセッサ)の様々な構成へのアクセスを購入するように、1つまたは複数の所定の仮想の、または物理的ハードウェア構成へのアクセスを購入するように、追加料金でプレミアムサービス(例えば、プレミアムでない顧客のプログラムに先立って、プレミアム顧客のプログラムの実行を開始する、プレミアム顧客のプログラムに先立って、プレミアムでない顧客に属するプログラムを強制退去させるようになど、優先プログラムリポジトリ配置をもたらすなど、優先実行を提供する)を購入するように、インスタンス実行ごとに指定された期間にわたってプログラムインスタンスを実行する能力を購入するようになど、様々な料金請求モデルが、使用可能である。
前述したとおり、一部の実施形態は、仮想コンピュータシステムを使用することが可能であり、そうである場合、プログラム実行サービスによって実行されるべきプログラムは、仮想計算機イメージ全体を含むことが可能である。そのような実施形態において、実行されるべきプログラムは、オペレーティングシステム全体、ファイルシステム、及び/または他のデータ、及び、場合により、1つまたは複数のユーザレベルプロセスを含むことが可能である。他の実施形態において、実行されるべきプログラムは、何らかの機能を提供するように相互動作する他の1つまたは複数のタイプの実行可能ファイルを含むことが可能である。さらに他の実施形態において、実行されるべきプログラムは、提供されるコンピュータシステム上においてネイティブで、あるいは仮想コンピュータシステム、インタプリタ、または他のソフトウェアによって実施されるハードウェア抽象化を使用して間接的に実行可能な命令及びデータの物理的集合または論理的集合を含むことが可能である。より一般的に、一部の実施形態において、実行されるべきプログラムには、1つまたは複数のアプリケーションプログラム、アプリケーションフレームワーク、ライブラリ、アーカイブ、クラスファイル、スクリプト、構成ファイル、データファイルなどが含まれてもよい。
プログラム実行サービス内のプログラムの実行を管理するのに相互通信システムマネージャモジュールとマシンマネージャモジュールとの組合せを利用する実施形態が、説明されてきたが、様々なプログラム実行サービスモジュール間の責任の他の実施及び割り当ても企図される。例えば、一部の実施形態では、単一のモジュール、または単一の構成要素が、管理される物理的なコンピュータシステムまたは仮想マシンのいくつか、またはすべてのシステム上、またはマシン上のプログラムの実行を管理することを担うことが可能である。例えば、プログラムは、様々なリモート実行技術(例えば、rexec、rshなど)によってターゲットコンピュータシステム上で直接に実行可能である。
また、前述した例示的な実施形態は、プログラム実行サービスを提供するのに使用されるデータセンタのコンテキストにおいて使用されたが、他の実施シナリオも可能であることも、当業者には認識されよう。例えば、説明されるファシリティは、ビジネス、または他の機関(例えば、大学)によって、そのビジネスまたは機関の従業員及び/または他のメンバの利益のために運営される組織全体のイントラネットのコンテキストにおいて使用されてもよい。または、説明される技術は、分散された仕方で大規模な(例えば、科学的な)コンピューティングタスクを実行する目的で、様々な第三者によって個々に管理され、運用されるノードを含む分散コンピュータシステムによって使用されてもよい。
以上から、例示の目的で特定の実施形態が、本明細書で説明されてきたが、本発明の趣旨及び範囲を逸脱することなく、様々な変更の実施が可能であることが理解されよう。従って、本発明は、添付の特許請求の範囲、及び特許請求の範囲に記載される要素による以外は、限定されない。さらに、本発明のいくつかの態様が、いくつかの請求項で提示されるが、本発明者らは、任意の請求項において本発明の様々な態様を企図する。例えば、本発明のいくつかの態様だけが、コンピュータ可読媒体において実現されるものとして述べられる可能性があるが、他の態様も同様に、そのように実現されることが可能である。

Claims (32)

  1. プログラム実行サービスのための1つまたは複数のコンピュータシステムにより、1つまたは複数の要求を前記プログラム実行サービスのクライアントから受け取るステップであって、前記受け取った1つまたは複数の要求は少なくとも1つのオペレーティングシステムの指定前記オペレーティングシステムのインスタンスのいくつかが実行されるかまたはすべてが実行されるかの指定および指定された前記オペレーティングシステムを実行する1つまたは複数の地理的ロケーションの指定を含む、受け取るステップと、
    指定された前記オペレーティングシステムの実行に使用するために、前記1つまたは複数のコンピュータシステムにより、前記プログラム実行サービスの複数のコンピューティングノードのサブセットを選択するステップであって、選択される前記複数のコンピューティングノードのサブセットは、2つ以上の異なる地理的位置に配置されている前記プログラム実行サービスの複数のコンピューティングノードの一部であり、前記複数のコンピューティングノードのサブセットを選択することは、前記1つまたは複数の地理的ロケーションの指定に少なくとも部分的に基づく、選択するステップと、
    前記選択された複数のコンピューティングノードのサブセットに、前記指定されたオペレーティングシステムの1つまたは複数のインスタンスを前記選択された複数のコンピューティングノードのサブセットに関連付けられた1つまたは複数の仮想マシン内で、前記1つまたは複数のコンピュータシステムにより実行させるステップであって、前記実行は、受け取った前記オペレーティングシステムのインスタンスのいくつかが実行されるかまたはすべてが実行されるかの前記指定に少なくとも部分的に基づく、実行させるステップと、
    を備えることを特徴とするコンピュータ実行方法。
  2. 前記1つまたは複数のコンピュータシステムにより、インターフェースを提供するステップを含むことを特徴とする請求項1に記載のコンピュータ実行方法。
  3. 提供される前記インターフェースはグラフィカルユーザーインターフェースを含み、前記1つまたは複数の要求は前記グラフィカルユーザーインターフェースを介して受け取られることを特徴とする請求項2に記載のコンピュータ実行方法。
  4. 提供される前記インターフェースはアプリケーションプログラミングインターフェース(API)を含み、前記1つまたは複数の要求を受け取ることは、前記クライアントの遠隔コンピューティングシステムによる前記APIの呼び出しに基づくことを特徴とする請求項2に記載のコンピュータ実行方法。
  5. 受け取った前記オペレーティングシステムのインスタンスのいくつかが実行されるかまたはすべてが実行されるかの前記指定は、指定された前記オペレーティングシステムの前記1つまたは複数のインスタンスを実行する1つまたは複数の仮想マシンの実行に使用する前記プログラム実行サービスのコンピューティングノードの個数を規定しており、選択された前記複数のコンピューティングノードのサブセットは規定された個数のコンピューティングノードを含むことを特徴とする請求項1に記載のコンピュータ実行方法。
  6. 受け取った前記オペレーティングシステムのインスタンスのいくつかが実行されるかまたはすべてが実行されるかの前記指定は、実行する前記指定されたオペレーティングシステムのインスタンスの個数を規定しており、選択された前記複数のコンピューティングノードのサブセットに、指定された前記オペレーティングシステムの1つまたは複数のインスタンスを実行させるステップは、前記指定されたオペレーティングシステムの前記規定された個数のインスタンスを実行させるステップであって、前記規定された個数は仮想マシンと同じ個数以内であることを特徴とする請求項1に記載のコンピュータ実行方法。
  7. 受け取った前記オペレーティングシステムのインスタンスのいくつかが実行されるかまたはすべてが実行されるかの前記指定は、実行する前記指定されたオペレーティングシステムのインスタンスの最小個数または実行する前記指定されたオペレーティングシステムのインスタンスの最大個数を少なくとも規定しており、選択された前記複数のコンピューティングノードのサブセットに、前記指定されたオペレーティングシステムの1つまたは複数のインスタンスを実行させることは、前記規定された最小個数および/または最大個数のインスタンスにしたがって行われることを特徴とする請求項1に記載のコンピュータ実行方法。
  8. 受け取った前記オペレーティングシステムのインスタンスのいくつかが実行されるかまたはすべてが実行されるかの前記指定は、指定されたオペレーティングシステムの1つまたは複数のインスタンスの実行を開始する1つまたは複数の時刻を規定しており、選択された前記複数のコンピューティングノードのサブセットに、前記指定されたオペレーティングシステムの1つまたは複数のインスタンスを実行させることは、前記規定された1つまたは複数の時刻にしたがって行われることを特徴とする請求項1に記載のコンピュータ実行方法。
  9. 受け取った前記オペレーティングシステムのインスタンスのいくつかが実行されるかまたはすべてが実行されるかの前記指定は、指定されたオペレーティングシステムの1つまたは複数のインスタンスの実行を終了させる1つまたは複数の時刻を規定しており、
    前記1つまたは複数のコンピュータシステムにより、前記1つまたは複数の仮想マシンの実行を、当該規定された1つまたは複数の時刻にしたがって管理するステップをさらに備えることを特徴とする請求項1に記載のコンピュータ実行方法。
  10. 受け取った前記オペレーティングシステムのインスタンスのいくつかが実行されるかまたはすべてが実行されるかの前記指定は、指定されたオペレーティングシステムを実行するために使用される1つまたは複数のコンピューティング関連リソースに関連した1つまたは複数の基準を規定していることを特徴とする請求項1に記載のコンピュータ実行方法。
  11. 前記規定されるコンピューティング関連リソースの基準は、指定メモリ容量、プロセッサの指定使用量、ネットワークバンド幅の指定量、ディスクスペースの指定容量およびスワップスペースの指定容量の少なくとも1つに関連することを特徴とする請求項10に記載のコンピュータ実行方法。
  12. 前記規定されるコンピューティング関連リソースの基準は、前記1つまたは複数の仮想マシンにより使用されるコンピューティング関連リソースの1つまたは複数の容量についての指示に関連していることを特徴とする請求項10に記載のコンピュータ実行方法。
  13. 前記規定されるコンピューティング関連リソースの基準は、指定されたオペレーティングシステムの実行に使用される1つまたは複数のコンピューティング関連リソースの最小容量および指定されたオペレーティングシステムの実行に使用される1つまたは複数のコンピューティング関連リソースの最大容量の少なくとも1つを含むことを特徴とする請求項10に記載のコンピュータ実行方法。
  14. 前記1つまたは複数の要求はユーザアカウントを示し、前記ユーザアカウントが、指定されたオペレーティングシステムを実行することの権限を付与されていることを前記1つまたは複数のコンピュータシステムにより判定するステップをさらに備えることを特徴とする請求項1に記載のコンピュータ実行方法。
  15. 前記1つまたは複数のコンピュータシステムにより、指定されたオペレーティングシステムの1つまたは複数のインスタンスの実行についての料金情報を生成するステップであって、前記料金情報は、選択された1つまたは複数のコンピューティングノードにより1つまたは複数の仮想マシンが実行される時間量に少なくとも部分的に基づいていることを特徴とする請求項1に記載のコンピュータ実行方法。
  16. 前記複数のコンピューティングノードのサブセットは、指定された前記オペレーティングシステムのローカルコピーが前記複数のコンピューティングノードのサブセットの少なくとも1つに格納されているかどうかに少なくも部分的に基づいて、選択されることを特徴とする請求項1に記載のコンピュータ実行方法。
  17. 複数の格納コンテンツを有する非一時的コンピュータ読み取り可能記憶媒体であって、前記複数の格納コンテンツはコンピューティングシステムに、
    プログラム実行サービスのインターフェースを介して、イメージの1つまたは複数のインスタンスを実行する要求を受け取ることであって、前記イメージはプログラムを含み、前記要求は前記イメージのインスタンスのいくつかが実行されるかまたはすべてが実行されるかの指定および指定された前記イメージのインスタンスを実行する1つまたは複数の地理的ロケーションの指定を含む、受け取ることと、
    前記1つまたは複数のインスタンスをホストする前記プログラム実行サービスの複数のコンピューティングノードのサブセットを選択することであって、前記1つまたは複数のインスタンスは、前記イメージのインスタンスのいくつかが実行されるかまたはすべてが実行されるかの前記指定に基づいて、前記選択された複数のコンピューティングノードのサブセットに関連付けられた1つまたは複数の仮想マシンを使用して実行され、選択される前記複数のコンピューティングノードのサブセットは、2つ以上の異なる地理的位置に配置されている前記プログラム実行サービスの複数のコンピューティングノードの一部であり、前記複数のコンピューティングノードのサブセットを選択することは、前記1つまたは複数の地理的ロケーションの指定に少なくとも部分的に基づく、選択することと、
    前記1つまたは複数の仮想マシンを実行するために選択された前記複数のコンピューティングノードのサブセットを管理することと
    を実行させることを特徴とする非一時的コンピュータ読み取り可能記憶媒体。
  18. 前記インターフェースはグラフィカルユーザーインターフェースを含むことを特徴とする請求項17に記載の非一時的コンピュータ読み取り可能記憶媒体。
  19. 前記インターフェースはアプリケーションプログラミングインターフェース(API)を含み、前記要求を受け取ることは遠隔コンピューティングシステムによる前記APIの呼び出しに基づくことを特徴とする請求項17に記載の非一時的コンピュータ読み取り可能記憶媒体。
  20. 受け取った前記イメージのインスタンスのいくつかが実行されるかまたはすべてが実行されるかの前記指定は、前記イメージを実行する前記プログラム実行サービスのコンピューティングノードの個数または実行する前記イメージのインスタンスの個数を規定していることを特徴とする請求項17に記載の非一時的コンピュータ読み取り可能記憶媒体。
  21. 受け取った前記イメージのインスタンスのいくつかが実行されるかまたはすべてが実行されるかの前記指定は、実行するイメージのインスタンスの最小個数または実行するイメージのインスタンスの最大個数を規定していることを特徴とする請求項17に記載の非一時的コンピュータ読み取り可能記憶媒体。
  22. 受け取った前記イメージのインスタンスのいくつかが実行されるかまたはすべてが実行されるかの前記指定は、前記イメージの1つまたは複数のインスタンスの実行を開始する1つまたは複数の時刻または前記イメージの1つまたは複数のインスタンスを終了させる1つまたは複数の時刻を規定していることを特徴とする請求項17に記載の非一時的コンピュータ読み取り可能記憶媒体。
  23. 受け取った前記イメージのインスタンスのいくつかが実行されるかまたはすべてが実行されるかの前記指定は、前記イメージの1つまたは複数のインスタンスを実行するために使用されるコンピューティング関連リソースに関連する1つまたは複数の基準を規定しており、当該規定される基準は、指定メモリ容量、プロセッサの指定使用量、ネットワークバンド幅の指定量、ディスクスペースの指定容量またはスワップスペースの指定容量に関連することを特徴とする請求項17に記載の非一時的コンピュータ読み取り可能記憶媒体。
  24. 前記格納コンテンツはさらにコンピュータシステムに、
    前記イメージの1つまたは複数のインスタンスを実行する料金を決定することであって、前記決定される料金は、1つまたは複数のインスタンスが実行される時間量に少なくとも部分的に基づく、決定することを実行させることを特徴とする請求項17に記載の非一時的コンピュータ読み取り可能記憶媒体。
  25. 前記選択された複数のコンピューティングノードのサブセットの少なくとも1つは、指定されたプログラム識別子に関連付けられた前記イメージのインスタンスのローカルコピーを格納していることを特徴とする請求項17に記載の非一時的コンピュータ読み取り可能記憶媒体。
  26. 個々のコンピューティングシステムが1つまたは複数のプロセッサを有している1つまたは複数のコンピューティングシステムと、
    命令を含む少なくとも1つのメモリであって、前記1つまたは複数のプロセッサの少なくとも1つによる実行時に前記命令がシステムに、
    1つまたは複数の地理的ロケーションに配置された複数のコンピューティングノードを有するプログラム実行サービスによるプログラムの実行において使用するために提供されるインターフェースを介して、クライアントから要求を受け取ることであって、受け取った前記要求は少なくとも1つの指定のプログラムのインスタンスのいくつかを実行するかまたはすべてを実行するかの指定および指定された前記少なくとも1つのプログラムが実行される1つまたは複数の地理的ロケーションの指定を含む、受け取ることと、
    前記1つまたは複数の地理的ロケーションの指定に少なくとも部分的に基づいて、前記指定のプログラムの1つまたは複数のインスタンスの実行に使用するために前記プログラム実行サービスの前記複数のコンピューティングノードのサブセットを選択することであって、前記指定のプログラムのインスタンスのいくつかを実行するかまたはすべてを実行するかの前記指定に基づき、前記1つまたは複数のインスタンスは、前記選択された複数のコンピューティングノードのサブセットに関連付けられた1つまたは複数の仮想マシン上で実行される、選択することと、
    前記指定のプログラムの1つまたは複数のインスタンスの実行を前記クライアントのために前記選択された複数のコンピューティングノードのサブセットにより管理することと
    を実行させる、メモリと
    を備えたことを特徴とするシステム。
  27. 前記インターフェースはアプリケーションプログラミングインターフェースを含み、前記要求を受け取ることは前記クライアントの遠隔コンピューティングシステムによる前記APIの呼び出しに基づくことを特徴とする請求項26に記載のシステム。
  28. 受け取った前記指定のプログラムのインスタンスのいくつかを実行するかまたはすべてを実行するかの前記指定は、前記指定のプログラムの実行に使用する前記プログラム実行サービスのコンピューティングノードの個数および実行する前記指定のプログラムのインスタンスの個数の少なくとも1つを規定していることを特徴とする請求項26に記載のシステム。
  29. 受け取った前記指定のプログラムのインスタンスのいくつかを実行するかまたはすべてを実行するかの前記指定は、前記指定のプログラムの1つまたは複数のインスタンスの実行を開始する1つまたは複数の時刻または前記指定のプログラムの1つまたは複数のインスタンスの実行を終了させる1つまたは複数の時刻の少なくとも1つを規定していることを特徴とする請求項26に記載のシステム。
  30. 受け取った前記指定のプログラムのインスタンスのいくつかを実行するかまたはすべてを実行するかの前記指定は、前記指定のプログラムの実行に使用する1つまたは複数のコンピューティング関連リソースに関連する1つまたは複数の基準を規定しており、前記規定される基準は、指定メモリ容量、プロセッサの指定使用量、ネットワークバンド幅の指定量、ディスクスペースの指定容量およびスワップスペースの指定容量の少なくとも1つに関連することを特徴とする請求項26に記載のシステム。
  31. 前記実行を管理することは、前記指定のプログラムの1つまたは複数のインスタンスを選択された前記複数のコンピューティングノードのサブセットにより第1の時点で開始することを含み、前記メモリは、実行時に前記システムに、
    第2の時点で前記インターフェースを介して、前記指定のプログラムのインスタンスのいくつかを実行するかまたはすべてを実行するかの追加の指定を前記クライアントから受け取ることであって、前記第2の時点は前記第1の時点よりも遅く、前記追加の指定は1つまたは複数の個々の前記プログラムの実行に関連する1つまたは複数の修正を規定している、受け取ることと、
    前記追加の指定の受け取りに応答して、前記指定のプログラムの1つまたは複数のインスタンスの少なくとも1つの実行を動的に修正することと
    をさらに実行させる命令を含むことを特徴とする請求項26に記載のシステム。
  32. 前記複数のコンピューティングノードのサブセットは、前記指定のプログラムのコピーが前記複数のコンピューティングノードのサブセットの少なくとも1つに格納されているかどうかに少なくとも部分的に基づいて選択されることを特徴とする請求項26に記載のシステム。
JP2015075644A 2006-03-31 2015-04-02 複数のコンピュータシステムによるプログラムの実行を管理するシステム Active JP6126157B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/395,463 2006-03-31
US11/395,463 US8190682B2 (en) 2006-03-31 2006-03-31 Managing execution of programs by multiple computing systems

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2013123086A Division JP5789640B2 (ja) 2006-03-31 2013-06-11 複数のコンピュータシステムによるプログラムの実行を管理するシステム

Publications (3)

Publication Number Publication Date
JP2015144020A JP2015144020A (ja) 2015-08-06
JP2015144020A5 JP2015144020A5 (ja) 2015-09-17
JP6126157B2 true JP6126157B2 (ja) 2017-05-10

Family

ID=38577081

Family Applications (4)

Application Number Title Priority Date Filing Date
JP2009502958A Active JP5174006B2 (ja) 2006-03-31 2007-03-29 複数のコンピュータシステムによるプログラムの実行を管理する方法及びシステム
JP2012052264A Active JP5335948B2 (ja) 2006-03-31 2012-03-08 複数のコンピュータシステムによるプログラムの実行を管理するシステム
JP2013123086A Active JP5789640B2 (ja) 2006-03-31 2013-06-11 複数のコンピュータシステムによるプログラムの実行を管理するシステム
JP2015075644A Active JP6126157B2 (ja) 2006-03-31 2015-04-02 複数のコンピュータシステムによるプログラムの実行を管理するシステム

Family Applications Before (3)

Application Number Title Priority Date Filing Date
JP2009502958A Active JP5174006B2 (ja) 2006-03-31 2007-03-29 複数のコンピュータシステムによるプログラムの実行を管理する方法及びシステム
JP2012052264A Active JP5335948B2 (ja) 2006-03-31 2012-03-08 複数のコンピュータシステムによるプログラムの実行を管理するシステム
JP2013123086A Active JP5789640B2 (ja) 2006-03-31 2013-06-11 複数のコンピュータシステムによるプログラムの実行を管理するシステム

Country Status (7)

Country Link
US (1) US8190682B2 (ja)
EP (2) EP3702919A1 (ja)
JP (4) JP5174006B2 (ja)
CN (2) CN101460907B (ja)
CA (1) CA2646135C (ja)
IN (1) IN2014KN02671A (ja)
WO (1) WO2007126837A2 (ja)

Families Citing this family (284)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8112798B2 (en) * 2005-11-09 2012-02-07 Microsoft Corporation Hardware-aided software code measurement
US7756893B2 (en) * 2005-11-09 2010-07-13 Microsoft Corporation Independent computation environment and data protection
US8286174B1 (en) * 2006-04-17 2012-10-09 Vmware, Inc. Executing a multicomponent software application on a virtualized computer platform
US7987512B2 (en) 2006-05-19 2011-07-26 Microsoft Corporation BIOS based secure execution environment
US20080005560A1 (en) * 2006-06-29 2008-01-03 Microsoft Corporation Independent Computation Environment and Provisioning of Computing Device Functionality
US8028090B2 (en) 2008-11-17 2011-09-27 Amazon Technologies, Inc. Request routing utilizing client location information
US7991910B2 (en) 2008-11-17 2011-08-02 Amazon Technologies, Inc. Updating routing information based on client location
US8374929B1 (en) 2007-08-06 2013-02-12 Gogrid, LLC System and method for billing for hosted services
JP5393686B2 (ja) 2007-09-26 2014-01-22 ニシラ, インコーポレイテッド ネットワークを管理する及び安全にするためのネットワークオペレーティングシステム
KR100936239B1 (ko) * 2007-12-18 2010-01-12 한국전자통신연구원 스트리밍 기반 이동형 소프트웨어 제공 시스템 및 방법
JP5507046B2 (ja) 2007-12-27 2014-05-28 株式会社インテック サービス提供システム
JP4577384B2 (ja) 2008-03-14 2010-11-10 日本電気株式会社 管理マシン、管理システム、管理プログラム、および、管理方法
US8489995B2 (en) * 2008-03-18 2013-07-16 Rightscale, Inc. Systems and methods for efficiently managing and configuring virtual servers
US9015704B2 (en) 2008-03-24 2015-04-21 International Business Machines Corporation Context agent injection using virtual machine introspection
US8447831B1 (en) 2008-03-31 2013-05-21 Amazon Technologies, Inc. Incentive driven content delivery
US8321568B2 (en) 2008-03-31 2012-11-27 Amazon Technologies, Inc. Content management
US7962597B2 (en) 2008-03-31 2011-06-14 Amazon Technologies, Inc. Request routing based on class
US7970820B1 (en) 2008-03-31 2011-06-28 Amazon Technologies, Inc. Locality based content distribution
US8601090B1 (en) 2008-03-31 2013-12-03 Amazon Technologies, Inc. Network resource identification
US8156243B2 (en) 2008-03-31 2012-04-10 Amazon Technologies, Inc. Request routing
US8533293B1 (en) 2008-03-31 2013-09-10 Amazon Technologies, Inc. Client side cache management
US8606996B2 (en) 2008-03-31 2013-12-10 Amazon Technologies, Inc. Cache optimization
US9407681B1 (en) 2010-09-28 2016-08-02 Amazon Technologies, Inc. Latency measurement in resource requests
US9912740B2 (en) 2008-06-30 2018-03-06 Amazon Technologies, Inc. Latency measurement in resource requests
US7925782B2 (en) 2008-06-30 2011-04-12 Amazon Technologies, Inc. Request routing using network computing components
US8019732B2 (en) * 2008-08-08 2011-09-13 Amazon Technologies, Inc. Managing access of multiple executing programs to non-local block data storage
US8015343B2 (en) 2008-08-08 2011-09-06 Amazon Technologies, Inc. Providing executing programs with reliable access to non-local block data storage
US7831682B2 (en) * 2008-08-08 2010-11-09 Amazon Technologies, Inc. Providing a reliable backing store for block data storage
US8788681B1 (en) * 2008-08-25 2014-07-22 Symantec Corporation Method and apparatus for autonomously managing a computer resource using a security certificate
US8364802B1 (en) 2008-09-23 2013-01-29 Gogrid, LLC System and method for monitoring a grid of hosting resources in order to facilitate management of the hosting resources
US8271974B2 (en) 2008-10-08 2012-09-18 Kaavo Inc. Cloud computing lifecycle management for N-tier applications
US8347302B1 (en) 2008-10-09 2013-01-01 Amazon Technologies, Inc. System-aware resource scheduling
US20100106578A1 (en) * 2008-10-28 2010-04-29 Michael Gregory Allio Shareholder reward system
US8073940B1 (en) 2008-11-17 2011-12-06 Amazon Technologies, Inc. Managing content delivery network service providers
US8060616B1 (en) 2008-11-17 2011-11-15 Amazon Technologies, Inc. Managing CDN registration by a storage provider
US8122098B1 (en) 2008-11-17 2012-02-21 Amazon Technologies, Inc. Managing content delivery network service providers by a content broker
US8732309B1 (en) 2008-11-17 2014-05-20 Amazon Technologies, Inc. Request routing utilizing cost information
US8065417B1 (en) 2008-11-17 2011-11-22 Amazon Technologies, Inc. Service provider registration by a content broker
US8521880B1 (en) 2008-11-17 2013-08-27 Amazon Technologies, Inc. Managing content delivery network service providers
US8918761B1 (en) * 2008-12-05 2014-12-23 Amazon Technologies, Inc. Elastic application framework for deploying software
US8201237B1 (en) 2008-12-10 2012-06-12 Amazon Technologies, Inc. Establishing secure remote access to private computer networks
US9524167B1 (en) 2008-12-10 2016-12-20 Amazon Technologies, Inc. Providing location-specific network access to remote services
US8230050B1 (en) 2008-12-10 2012-07-24 Amazon Technologies, Inc. Providing access to configurable private computer networks
US9137209B1 (en) 2008-12-10 2015-09-15 Amazon Technologies, Inc. Providing local secure network access to remote services
US8412823B1 (en) 2009-03-27 2013-04-02 Amazon Technologies, Inc. Managing tracking information entries in resource cache components
US8521851B1 (en) 2009-03-27 2013-08-27 Amazon Technologies, Inc. DNS query processing using resource identifiers specifying an application broker
US8688837B1 (en) 2009-03-27 2014-04-01 Amazon Technologies, Inc. Dynamically translating resource identifiers for request routing using popularity information
US8756341B1 (en) 2009-03-27 2014-06-17 Amazon Technologies, Inc. Request routing utilizing popularity information
CA2756289C (en) 2009-04-01 2016-02-02 Nicira Networks, Inc. Method and apparatus for implementing and managing virtual switches
US8418181B1 (en) * 2009-06-02 2013-04-09 Amazon Technologies, Inc. Managing program execution based on data storage location
US8782236B1 (en) 2009-06-16 2014-07-15 Amazon Technologies, Inc. Managing resources using resource expiration data
US8397073B1 (en) 2009-09-04 2013-03-12 Amazon Technologies, Inc. Managing secure content in a content delivery network
US8352609B2 (en) 2009-09-29 2013-01-08 Amazon Technologies, Inc. Dynamically modifying program execution capacity
US8689225B2 (en) 2009-09-29 2014-04-01 Amazon Technologies, Inc. Attributing causality to program execution capacity modifications
WO2011041253A1 (en) * 2009-09-29 2011-04-07 Amazon Technologies, Inc. Attributing causality to program execution capacity modifications and dynamically modifying program execution capacity
US8433771B1 (en) 2009-10-02 2013-04-30 Amazon Technologies, Inc. Distribution network with forward resource propagation
US10057333B2 (en) * 2009-12-10 2018-08-21 Royal Bank Of Canada Coordinated processing of data by networked computing resources
US9959572B2 (en) * 2009-12-10 2018-05-01 Royal Bank Of Canada Coordinated processing of data by networked computing resources
US9979589B2 (en) * 2009-12-10 2018-05-22 Royal Bank Of Canada Coordinated processing of data by networked computing resources
US10771536B2 (en) * 2009-12-10 2020-09-08 Royal Bank Of Canada Coordinated processing of data by networked computing resources
US9940670B2 (en) 2009-12-10 2018-04-10 Royal Bank Of Canada Synchronized processing of data by networked computing resources
SG10201704581VA (en) * 2009-12-10 2017-07-28 Royal Bank Of Canada Synchronized processing of data by networked computing resources
US8924982B2 (en) 2010-01-12 2014-12-30 Amazon Technologies, Inc. Managing private use of program execution capacity
US9495338B1 (en) 2010-01-28 2016-11-15 Amazon Technologies, Inc. Content distribution network
US9342801B2 (en) 2010-03-29 2016-05-17 Amazon Technologies, Inc. Managing committed processing rates for shared resources
US8443077B1 (en) 2010-05-20 2013-05-14 Gogrid, LLC System and method for managing disk volumes in a hosting system
US8739170B1 (en) 2010-06-30 2014-05-27 Amazon Technologies, Inc. Managing requests for computing capacity
US10103939B2 (en) 2010-07-06 2018-10-16 Nicira, Inc. Network control apparatus and method for populating logical datapath sets
US8964528B2 (en) 2010-07-06 2015-02-24 Nicira, Inc. Method and apparatus for robust packet distribution among hierarchical managed switching elements
US9680750B2 (en) 2010-07-06 2017-06-13 Nicira, Inc. Use of tunnels to hide network addresses
US8958292B2 (en) 2010-07-06 2015-02-17 Nicira, Inc. Network control apparatus and method with port security controls
US9525647B2 (en) 2010-07-06 2016-12-20 Nicira, Inc. Network control apparatus and method for creating and modifying logical switching elements
US20120054731A1 (en) * 2010-08-24 2012-03-01 International Business Machines Corporation Method, System and Computer Programs to Assist Migration to a Cloud Computing Environment
US8694400B1 (en) 2010-09-14 2014-04-08 Amazon Technologies, Inc. Managing operational throughput for shared resources
US9003035B1 (en) 2010-09-28 2015-04-07 Amazon Technologies, Inc. Point of presence management in request routing
US8577992B1 (en) 2010-09-28 2013-11-05 Amazon Technologies, Inc. Request routing management based on network components
US8468247B1 (en) 2010-09-28 2013-06-18 Amazon Technologies, Inc. Point of presence management in request routing
US8938526B1 (en) 2010-09-28 2015-01-20 Amazon Technologies, Inc. Request routing management based on network components
US10958501B1 (en) 2010-09-28 2021-03-23 Amazon Technologies, Inc. Request routing information based on client IP groupings
US9712484B1 (en) 2010-09-28 2017-07-18 Amazon Technologies, Inc. Managing request routing information utilizing client identifiers
US8930513B1 (en) 2010-09-28 2015-01-06 Amazon Technologies, Inc. Latency measurement in resource requests
US8819283B2 (en) 2010-09-28 2014-08-26 Amazon Technologies, Inc. Request routing in a networked environment
US10097398B1 (en) 2010-09-28 2018-10-09 Amazon Technologies, Inc. Point of presence management in request routing
US8924528B1 (en) 2010-09-28 2014-12-30 Amazon Technologies, Inc. Latency measurement in resource requests
US8346921B1 (en) * 2010-11-19 2013-01-01 Amazon Technologies, Inc. Predictive governing of dynamic modification of program execution capacity
US8452874B2 (en) 2010-11-22 2013-05-28 Amazon Technologies, Inc. Request routing processing
US8626950B1 (en) 2010-12-03 2014-01-07 Amazon Technologies, Inc. Request routing processing
US9391949B1 (en) 2010-12-03 2016-07-12 Amazon Technologies, Inc. Request routing processing
US10268843B2 (en) 2011-12-06 2019-04-23 AEMEA Inc. Non-deterministic secure active element machine
US9032537B2 (en) * 2011-01-31 2015-05-12 AEMEA Inc. Secure active element machine
US9288117B1 (en) 2011-02-08 2016-03-15 Gogrid, LLC System and method for managing virtual and dedicated servers
US10467042B1 (en) 2011-04-27 2019-11-05 Amazon Technologies, Inc. Optimized deployment based upon customer locality
US9043452B2 (en) 2011-05-04 2015-05-26 Nicira, Inc. Network control apparatus and method for port isolation
US9223632B2 (en) 2011-05-20 2015-12-29 Microsoft Technology Licensing, Llc Cross-cloud management and troubleshooting
US8880657B1 (en) 2011-06-28 2014-11-04 Gogrid, LLC System and method for configuring and managing virtual grids
US9621406B2 (en) 2011-06-30 2017-04-11 Amazon Technologies, Inc. Remote browsing session management
US8799412B2 (en) 2011-06-30 2014-08-05 Amazon Technologies, Inc. Remote browsing session management
US8577963B2 (en) 2011-06-30 2013-11-05 Amazon Technologies, Inc. Remote browsing session between client browser and network based browser
US8954961B2 (en) 2011-06-30 2015-02-10 International Business Machines Corporation Geophysical virtual machine policy allocation using a GPS, atomic clock source or regional peering host
US9037696B2 (en) 2011-08-16 2015-05-19 Amazon Technologies, Inc. Managing information associated with network resources
US9195768B2 (en) 2011-08-26 2015-11-24 Amazon Technologies, Inc. Remote browsing session management
US10089403B1 (en) 2011-08-31 2018-10-02 Amazon Technologies, Inc. Managing network based storage
US9769121B2 (en) * 2011-09-12 2017-09-19 Microsoft Technology Licensing, Llc Scalable, selective traffic proxying
US9383958B1 (en) 2011-09-27 2016-07-05 Amazon Technologies, Inc. Remote co-browsing session management
US9178955B1 (en) 2011-09-27 2015-11-03 Amazon Technologies, Inc. Managing network based content
US9152970B1 (en) 2011-09-27 2015-10-06 Amazon Technologies, Inc. Remote co-browsing session management
US9641637B1 (en) 2011-09-27 2017-05-02 Amazon Technologies, Inc. Network resource optimization
US8914514B1 (en) 2011-09-27 2014-12-16 Amazon Technologies, Inc. Managing network based content
US8589385B2 (en) 2011-09-27 2013-11-19 Amazon Technologies, Inc. Historical browsing session management
US10693991B1 (en) 2011-09-27 2020-06-23 Amazon Technologies, Inc. Remote browsing session management
US8615431B1 (en) 2011-09-29 2013-12-24 Amazon Technologies, Inc. Network content message placement management
US9313100B1 (en) 2011-11-14 2016-04-12 Amazon Technologies, Inc. Remote browsing session management
TWI478063B (zh) * 2011-11-21 2015-03-21 Inst Information Industry 於虛擬機器提供應用程式之系統以及方法以及儲存其之電腦可讀取記錄媒體
US8972477B1 (en) 2011-12-01 2015-03-03 Amazon Technologies, Inc. Offline browsing session management
US9367354B1 (en) 2011-12-05 2016-06-14 Amazon Technologies, Inc. Queued workload service in a multi tenant environment
US8933942B2 (en) * 2011-12-08 2015-01-13 Advanced Micro Devices, Inc. Partitioning resources of a processor
US9009334B1 (en) 2011-12-09 2015-04-14 Amazon Technologies, Inc. Remote browsing session management
US9117002B1 (en) 2011-12-09 2015-08-25 Amazon Technologies, Inc. Remote browsing session management
US9330188B1 (en) 2011-12-22 2016-05-03 Amazon Technologies, Inc. Shared browsing sessions
US9336321B1 (en) 2012-01-26 2016-05-10 Amazon Technologies, Inc. Remote browsing and searching
US9087024B1 (en) 2012-01-26 2015-07-21 Amazon Technologies, Inc. Narration of network content
US9509783B1 (en) 2012-01-26 2016-11-29 Amazon Technlogogies, Inc. Customized browser images
US8627195B1 (en) 2012-01-26 2014-01-07 Amazon Technologies, Inc. Remote browsing and searching
US9092405B1 (en) 2012-01-26 2015-07-28 Amazon Technologies, Inc. Remote browsing and searching
US8839087B1 (en) 2012-01-26 2014-09-16 Amazon Technologies, Inc. Remote browsing and searching
US9183258B1 (en) 2012-02-10 2015-11-10 Amazon Technologies, Inc. Behavior based processing of content
US8904009B1 (en) 2012-02-10 2014-12-02 Amazon Technologies, Inc. Dynamic content delivery
US9037975B1 (en) 2012-02-10 2015-05-19 Amazon Technologies, Inc. Zooming interaction tracking and popularity determination
US10021179B1 (en) 2012-02-21 2018-07-10 Amazon Technologies, Inc. Local resource delivery network
US9137210B1 (en) * 2012-02-21 2015-09-15 Amazon Technologies, Inc. Remote browsing session management
US10296558B1 (en) 2012-02-27 2019-05-21 Amazon Technologies, Inc. Remote generation of composite content pages
US9374244B1 (en) 2012-02-27 2016-06-21 Amazon Technologies, Inc. Remote browsing session management
US9208316B1 (en) 2012-02-27 2015-12-08 Amazon Technologies, Inc. Selective disabling of content portions
US9083743B1 (en) 2012-03-21 2015-07-14 Amazon Technologies, Inc. Managing request routing information utilizing performance information
US9460220B1 (en) 2012-03-26 2016-10-04 Amazon Technologies, Inc. Content selection based on target device characteristics
US9307004B1 (en) 2012-03-28 2016-04-05 Amazon Technologies, Inc. Prioritized content transmission
US10623408B1 (en) 2012-04-02 2020-04-14 Amazon Technologies, Inc. Context sensitive object management
US9626710B1 (en) 2012-05-23 2017-04-18 Amazon Technologies, Inc. Best practice analysis, optimized resource use
US8954574B1 (en) 2012-05-23 2015-02-10 Amazon Technologies, Inc. Best practice analysis, migration advisor
US10740765B1 (en) 2012-05-23 2020-08-11 Amazon Technologies, Inc. Best practice analysis as a service
US10555145B1 (en) 2012-06-05 2020-02-04 Amazon Technologies, Inc. Learned configuration of modification policies for program execution capacity
US9154551B1 (en) 2012-06-11 2015-10-06 Amazon Technologies, Inc. Processing DNS queries to identify pre-processing information
US9772979B1 (en) 2012-08-08 2017-09-26 Amazon Technologies, Inc. Reproducing user browsing sessions
US8943197B1 (en) 2012-08-16 2015-01-27 Amazon Technologies, Inc. Automated content update notification
US9525659B1 (en) 2012-09-04 2016-12-20 Amazon Technologies, Inc. Request routing utilizing point of presence load information
US9323577B2 (en) 2012-09-20 2016-04-26 Amazon Technologies, Inc. Automated profiling of resource usage
US9135048B2 (en) 2012-09-20 2015-09-15 Amazon Technologies, Inc. Automated profiling of resource usage
JP6044248B2 (ja) * 2012-10-05 2016-12-14 富士ゼロックス株式会社 情報処理装置、応用プログラム導入装置およびプログラム
US9405579B2 (en) * 2012-10-11 2016-08-02 International Business Machines Corporation Seamless extension of local computing power
US10205698B1 (en) 2012-12-19 2019-02-12 Amazon Technologies, Inc. Source-dependent address resolution
US11669441B1 (en) 2013-03-14 2023-06-06 Amazon Technologies, Inc. Secure virtual machine reboot via memory allocation recycling
US9507540B1 (en) 2013-03-14 2016-11-29 Amazon Technologies, Inc. Secure virtual machine memory allocation management via memory usage trust groups
US9323552B1 (en) 2013-03-14 2016-04-26 Amazon Technologies, Inc. Secure virtual machine memory allocation management via dedicated memory pools
US9294391B1 (en) 2013-06-04 2016-03-22 Amazon Technologies, Inc. Managing network computing components utilizing request routing
US10152463B1 (en) 2013-06-13 2018-12-11 Amazon Technologies, Inc. System for profiling page browsing interactions
US9578137B1 (en) 2013-06-13 2017-02-21 Amazon Technologies, Inc. System for enhancing script execution performance
US9805479B2 (en) * 2013-11-11 2017-10-31 Amazon Technologies, Inc. Session idle optimization for streaming server
US9582904B2 (en) 2013-11-11 2017-02-28 Amazon Technologies, Inc. Image composition based on remote object data
US9604139B2 (en) 2013-11-11 2017-03-28 Amazon Technologies, Inc. Service for generating graphics object data
US9634942B2 (en) 2013-11-11 2017-04-25 Amazon Technologies, Inc. Adaptive scene complexity based on service quality
US9641592B2 (en) 2013-11-11 2017-05-02 Amazon Technologies, Inc. Location of actor resources
US9374552B2 (en) 2013-11-11 2016-06-21 Amazon Technologies, Inc. Streaming game server video recorder
US9959106B2 (en) * 2013-11-14 2018-05-01 International Business Machines Corporation Sharing of portable initialized objects between computing platforms
JP2015106167A (ja) * 2013-11-28 2015-06-08 ソニー株式会社 情報処理装置、情報処理方法および記憶媒体
US9830188B2 (en) * 2014-06-12 2017-11-28 Vmware, Inc. Methods and systems for calculating statistical quantities in a computing environment
US10346188B1 (en) * 2014-06-13 2019-07-09 Veritas Technologies Llc Booting virtual machine instances in a distributed data processing architecture
US9880918B2 (en) 2014-06-16 2018-01-30 Amazon Technologies, Inc. Mobile and remote runtime integration
AU2015277400B2 (en) * 2014-06-16 2020-12-24 Amazon Technologies, Inc. Mobile and remote runtime integration
US9635041B1 (en) 2014-06-16 2017-04-25 Amazon Technologies, Inc. Distributed split browser content inspection and analysis
US9841961B1 (en) * 2014-07-29 2017-12-12 Intuit Inc. Method and system for providing elastic federation as a service
US10712796B2 (en) 2014-08-22 2020-07-14 Intel Corporation Method and apparatus to generate and use power, thermal and performance characteristics of nodes to improve energy efficiency and reducing wait time for jobs in the queue
US10048974B1 (en) * 2014-09-30 2018-08-14 Amazon Technologies, Inc. Message-based computation request scheduling
US9830193B1 (en) 2014-09-30 2017-11-28 Amazon Technologies, Inc. Automatic management of low latency computational capacity
US9146764B1 (en) 2014-09-30 2015-09-29 Amazon Technologies, Inc. Processing event messages for user requests to execute program code
US9678773B1 (en) * 2014-09-30 2017-06-13 Amazon Technologies, Inc. Low latency computational capacity provisioning
US9600312B2 (en) 2014-09-30 2017-03-21 Amazon Technologies, Inc. Threading as a service
US9323556B2 (en) 2014-09-30 2016-04-26 Amazon Technologies, Inc. Programmatic event detection and message generation for requests to execute program code
CN104375857B (zh) * 2014-10-22 2016-06-01 腾讯科技(深圳)有限公司 一种应用程序运行多个实例的方法、装置及终端设备
KR102403063B1 (ko) * 2014-12-05 2022-05-30 삼성전자주식회사 모바일 디바이스 및 모바일 디바이스의 메모리 관리 방법
US9413626B2 (en) 2014-12-05 2016-08-09 Amazon Technologies, Inc. Automatic management of resource sizing
US10033627B1 (en) 2014-12-18 2018-07-24 Amazon Technologies, Inc. Routing mode and point-of-presence selection service
US10091096B1 (en) 2014-12-18 2018-10-02 Amazon Technologies, Inc. Routing mode and point-of-presence selection service
US10097448B1 (en) 2014-12-18 2018-10-09 Amazon Technologies, Inc. Routing mode and point-of-presence selection service
US9733967B2 (en) 2015-02-04 2017-08-15 Amazon Technologies, Inc. Security protocols for low latency execution of program code
US9588790B1 (en) 2015-02-04 2017-03-07 Amazon Technologies, Inc. Stateful virtual compute system
US10225326B1 (en) 2015-03-23 2019-03-05 Amazon Technologies, Inc. Point of presence based data uploading
US9887932B1 (en) 2015-03-30 2018-02-06 Amazon Technologies, Inc. Traffic surge management for points of presence
US9819567B1 (en) 2015-03-30 2017-11-14 Amazon Technologies, Inc. Traffic surge management for points of presence
US9887931B1 (en) 2015-03-30 2018-02-06 Amazon Technologies, Inc. Traffic surge management for points of presence
US9930103B2 (en) 2015-04-08 2018-03-27 Amazon Technologies, Inc. Endpoint management system providing an application programming interface proxy service
US9785476B2 (en) 2015-04-08 2017-10-10 Amazon Technologies, Inc. Endpoint management system and virtual compute system
US9832141B1 (en) 2015-05-13 2017-11-28 Amazon Technologies, Inc. Routing based request correlation
US10616179B1 (en) 2015-06-25 2020-04-07 Amazon Technologies, Inc. Selective routing of domain name system (DNS) requests
US10097566B1 (en) 2015-07-31 2018-10-09 Amazon Technologies, Inc. Identifying targets of network attacks
JP6540356B2 (ja) * 2015-08-10 2019-07-10 富士通株式会社 システム複製制御装置およびシステムの複製制御方法
US9794281B1 (en) 2015-09-24 2017-10-17 Amazon Technologies, Inc. Identifying sources of network attacks
US9774619B1 (en) 2015-09-24 2017-09-26 Amazon Technologies, Inc. Mitigating network attacks
US9742795B1 (en) 2015-09-24 2017-08-22 Amazon Technologies, Inc. Mitigating network attacks
US10270878B1 (en) 2015-11-10 2019-04-23 Amazon Technologies, Inc. Routing for origin-facing points of presence
US10257307B1 (en) 2015-12-11 2019-04-09 Amazon Technologies, Inc. Reserved cache space in content delivery networks
US10049051B1 (en) 2015-12-11 2018-08-14 Amazon Technologies, Inc. Reserved cache space in content delivery networks
US10348639B2 (en) 2015-12-18 2019-07-09 Amazon Technologies, Inc. Use of virtual endpoints to improve data transmission rates
US10067801B1 (en) 2015-12-21 2018-09-04 Amazon Technologies, Inc. Acquisition and maintenance of compute capacity
US9910713B2 (en) 2015-12-21 2018-03-06 Amazon Technologies, Inc. Code execution request routing
US9940480B2 (en) * 2016-02-25 2018-04-10 Red Hat, Inc. Securing delegated remote management with digital signature
KR101771351B1 (ko) * 2016-03-23 2017-09-06 현대오토에버 주식회사 프로그램실행장치, 네트워크장치 및 자원분산 처리방법
US10891145B2 (en) 2016-03-30 2021-01-12 Amazon Technologies, Inc. Processing pre-existing data sets at an on demand code execution environment
US11132213B1 (en) 2016-03-30 2021-09-28 Amazon Technologies, Inc. Dependency-based process of pre-existing data sets at an on demand code execution environment
US20170352022A1 (en) * 2016-06-02 2017-12-07 Mastercard International Incorporated System and method for determining subscription information based on payment card transaction data over a payment card network
US10075551B1 (en) 2016-06-06 2018-09-11 Amazon Technologies, Inc. Request management for hierarchical cache
US10102040B2 (en) 2016-06-29 2018-10-16 Amazon Technologies, Inc Adjusting variable limit on concurrent code executions
US10110694B1 (en) 2016-06-29 2018-10-23 Amazon Technologies, Inc. Adaptive transfer rate for retrieving content from a server
US9992086B1 (en) 2016-08-23 2018-06-05 Amazon Technologies, Inc. External health checking of virtual private cloud network environments
US10033691B1 (en) 2016-08-24 2018-07-24 Amazon Technologies, Inc. Adaptive resolution of domain name requests in virtual private cloud network environments
US10884787B1 (en) 2016-09-23 2021-01-05 Amazon Technologies, Inc. Execution guarantees in an on-demand network code execution system
US10469513B2 (en) 2016-10-05 2019-11-05 Amazon Technologies, Inc. Encrypted network addresses
US20180157526A1 (en) * 2016-12-07 2018-06-07 Lin Gu Method for Quasi-automatic Parallelization of Application Programs
US10831549B1 (en) 2016-12-27 2020-11-10 Amazon Technologies, Inc. Multi-region request-driven code execution system
US10372499B1 (en) 2016-12-27 2019-08-06 Amazon Technologies, Inc. Efficient region selection system for executing request-driven code
US10938884B1 (en) 2017-01-30 2021-03-02 Amazon Technologies, Inc. Origin server cloaking using virtual private cloud network environments
US10542104B2 (en) * 2017-03-01 2020-01-21 Red Hat, Inc. Node proximity detection for high-availability applications
US10503613B1 (en) 2017-04-21 2019-12-10 Amazon Technologies, Inc. Efficient serving of resources during server unavailability
US11075987B1 (en) 2017-06-12 2021-07-27 Amazon Technologies, Inc. Load estimating content delivery network
US10447648B2 (en) 2017-06-19 2019-10-15 Amazon Technologies, Inc. Assignment of a POP to a DNS resolver based on volume of communications over a link between client devices and the POP
US10742593B1 (en) 2017-09-25 2020-08-11 Amazon Technologies, Inc. Hybrid content request routing system
US10664538B1 (en) 2017-09-26 2020-05-26 Amazon Technologies, Inc. Data security and data access auditing for network accessible content
US10726095B1 (en) 2017-09-26 2020-07-28 Amazon Technologies, Inc. Network content layout using an intermediary system
US10692031B2 (en) 2017-11-02 2020-06-23 International Business Machines Corporation Estimating software as a service cloud computing resource capacity requirements for a customer based on customer workflows and workloads
US10733085B1 (en) 2018-02-05 2020-08-04 Amazon Technologies, Inc. Detecting impedance mismatches due to cross-service calls
US10831898B1 (en) 2018-02-05 2020-11-10 Amazon Technologies, Inc. Detecting privilege escalations in code including cross-service calls
US10949250B2 (en) * 2018-02-07 2021-03-16 Red Hat, Inc. Image subunit based guest scheduling
US10725752B1 (en) 2018-02-13 2020-07-28 Amazon Technologies, Inc. Dependency handling in an on-demand network code execution system
US10776091B1 (en) 2018-02-26 2020-09-15 Amazon Technologies, Inc. Logging endpoint in an on-demand code execution system
US10592578B1 (en) 2018-03-07 2020-03-17 Amazon Technologies, Inc. Predictive content push-enabled content delivery network
US10782950B2 (en) * 2018-05-01 2020-09-22 Amazon Technologies, Inc. Function portability for services hubs using a function checkpoint
CN108923959A (zh) * 2018-06-15 2018-11-30 青岛宇硕云联信息科技有限公司 交互方法、交互装置、电子设备及交互系统
US10853115B2 (en) 2018-06-25 2020-12-01 Amazon Technologies, Inc. Execution of auxiliary functions in an on-demand network code execution system
US10649749B1 (en) 2018-06-26 2020-05-12 Amazon Technologies, Inc. Cross-environment application of tracing information for improved code execution
CN109067564B (zh) * 2018-06-28 2019-10-01 星环信息科技(上海)有限公司 分布式处理方法、装置、计算机设备及存储介质
US11146569B1 (en) 2018-06-28 2021-10-12 Amazon Technologies, Inc. Escalation-resistant secure network services using request-scoped authentication information
US10949237B2 (en) 2018-06-29 2021-03-16 Amazon Technologies, Inc. Operating system customization in an on-demand network code execution system
US11099870B1 (en) 2018-07-25 2021-08-24 Amazon Technologies, Inc. Reducing execution times in an on-demand network code execution system using saved machine states
US11243953B2 (en) 2018-09-27 2022-02-08 Amazon Technologies, Inc. Mapreduce implementation in an on-demand network code execution system and stream data processing system
US11099917B2 (en) 2018-09-27 2021-08-24 Amazon Technologies, Inc. Efficient state maintenance for execution environments in an on-demand code execution system
US10862852B1 (en) 2018-11-16 2020-12-08 Amazon Technologies, Inc. Resolution of domain name requests in heterogeneous network environments
US11943093B1 (en) 2018-11-20 2024-03-26 Amazon Technologies, Inc. Network connection recovery after virtual machine transition in an on-demand network code execution system
US11025747B1 (en) 2018-12-12 2021-06-01 Amazon Technologies, Inc. Content request pattern-based routing system
US10884812B2 (en) 2018-12-13 2021-01-05 Amazon Technologies, Inc. Performance-based hardware emulation in an on-demand network code execution system
US11010188B1 (en) 2019-02-05 2021-05-18 Amazon Technologies, Inc. Simulated data object storage using on-demand computation of data objects
US11861386B1 (en) 2019-03-22 2024-01-02 Amazon Technologies, Inc. Application gateways in an on-demand network code execution system
US20200389352A1 (en) * 2019-06-04 2020-12-10 Microsoft Technology Licensing, Llc Automated upgrade of multiple hosts
US11119809B1 (en) 2019-06-20 2021-09-14 Amazon Technologies, Inc. Virtualization-based transaction handling in an on-demand network code execution system
US11159528B2 (en) 2019-06-28 2021-10-26 Amazon Technologies, Inc. Authentication to network-services using hosted authentication information
US11115404B2 (en) 2019-06-28 2021-09-07 Amazon Technologies, Inc. Facilitating service connections in serverless code executions
US11190609B2 (en) 2019-06-28 2021-11-30 Amazon Technologies, Inc. Connection pooling for scalable network services
US11055112B2 (en) 2019-09-27 2021-07-06 Amazon Technologies, Inc. Inserting executions of owner-specified code into input/output path of object storage service
US10996961B2 (en) 2019-09-27 2021-05-04 Amazon Technologies, Inc. On-demand indexing of data in input path of object storage service
US11106477B2 (en) 2019-09-27 2021-08-31 Amazon Technologies, Inc. Execution of owner-specified code during input/output path to object storage service
US11023311B2 (en) 2019-09-27 2021-06-01 Amazon Technologies, Inc. On-demand code execution in input path of data uploaded to storage service in multiple data portions
US11656892B1 (en) 2019-09-27 2023-05-23 Amazon Technologies, Inc. Sequential execution of user-submitted code and native functions
US11023416B2 (en) 2019-09-27 2021-06-01 Amazon Technologies, Inc. Data access control system for object storage service based on owner-defined code
US11550944B2 (en) 2019-09-27 2023-01-10 Amazon Technologies, Inc. Code execution environment customization system for object storage service
US11360948B2 (en) 2019-09-27 2022-06-14 Amazon Technologies, Inc. Inserting owner-specified data processing pipelines into input/output path of object storage service
US11250007B1 (en) 2019-09-27 2022-02-15 Amazon Technologies, Inc. On-demand execution of object combination code in output path of object storage service
US11394761B1 (en) 2019-09-27 2022-07-19 Amazon Technologies, Inc. Execution of user-submitted code on a stream of data
US11386230B2 (en) 2019-09-27 2022-07-12 Amazon Technologies, Inc. On-demand code obfuscation of data in input path of object storage service
US11263220B2 (en) 2019-09-27 2022-03-01 Amazon Technologies, Inc. On-demand execution of object transformation code in output path of object storage service
US10908927B1 (en) 2019-09-27 2021-02-02 Amazon Technologies, Inc. On-demand execution of object filter code in output path of object storage service
US11416628B2 (en) 2019-09-27 2022-08-16 Amazon Technologies, Inc. User-specific data manipulation system for object storage service based on user-submitted code
US11119826B2 (en) 2019-11-27 2021-09-14 Amazon Technologies, Inc. Serverless call distribution to implement spillover while avoiding cold starts
US10942795B1 (en) 2019-11-27 2021-03-09 Amazon Technologies, Inc. Serverless call distribution to utilize reserved capacity without inhibiting scaling
US11714682B1 (en) 2020-03-03 2023-08-01 Amazon Technologies, Inc. Reclaiming computing resources in an on-demand code execution system
US11188391B1 (en) 2020-03-11 2021-11-30 Amazon Technologies, Inc. Allocating resources to on-demand code executions under scarcity conditions
US11775640B1 (en) 2020-03-30 2023-10-03 Amazon Technologies, Inc. Resource utilization-based malicious task detection in an on-demand code execution system
US11593270B1 (en) 2020-11-25 2023-02-28 Amazon Technologies, Inc. Fast distributed caching using erasure coded object parts
US11550713B1 (en) 2020-11-25 2023-01-10 Amazon Technologies, Inc. Garbage collection in distributed systems using life cycled storage roots
US11733988B2 (en) * 2021-01-20 2023-08-22 Microsoft Technology Licensing, Llc Application deployment for applications offered by multiple deployment sources
JP7551551B2 (ja) 2021-03-24 2024-09-17 株式会社日立製作所 エレベーターシステム及びエレベーターシステムの制御方法
US12045594B2 (en) 2021-04-07 2024-07-23 Target Brands, Inc. Application deployment platform
US11388210B1 (en) 2021-06-30 2022-07-12 Amazon Technologies, Inc. Streaming analytics using a serverless compute system
US11968280B1 (en) 2021-11-24 2024-04-23 Amazon Technologies, Inc. Controlling ingestion of streaming data to serverless function executions
CN114167828B (zh) * 2021-12-03 2024-06-14 润电能源科学技术有限公司 一种dcs控制器的外挂控制方法及相关装置
US12015603B2 (en) 2021-12-10 2024-06-18 Amazon Technologies, Inc. Multi-tenant mode for serverless code execution
US20230315523A1 (en) * 2022-03-29 2023-10-05 Jpmorgan Chase Bank, N.A. Method and system for implementing an automation stack module to manage a seeding process

Family Cites Families (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07141305A (ja) * 1993-11-16 1995-06-02 Hitachi Ltd 並列計算機の実行制御方法
US5956509A (en) 1995-08-18 1999-09-21 Microsoft Corporation System and method for performing remote requests with an on-line service network
US6199116B1 (en) 1996-05-24 2001-03-06 Microsoft Corporation Method and system for managing data while sharing application programs
US5974454A (en) * 1997-11-14 1999-10-26 Microsoft Corporation Method and system for installing and updating program module components
US6185598B1 (en) * 1998-02-10 2001-02-06 Digital Island, Inc. Optimized network resource location
US6411967B1 (en) 1999-06-18 2002-06-25 Reliable Network Solutions Distributed processing system with replicated management information base
US6529953B1 (en) 1999-12-17 2003-03-04 Reliable Network Solutions Scalable computer network resource monitoring and location system
US6724770B1 (en) 2000-02-17 2004-04-20 Kenneth P. Birman Multicast protocol with reduced buffering requirements
US6785713B1 (en) * 2000-05-08 2004-08-31 Citrix Systems, Inc. Method and apparatus for communicating among a network of servers utilizing a transport mechanism
US6457047B1 (en) * 2000-05-08 2002-09-24 Verity, Inc. Application caching system and method
US7143142B1 (en) * 2000-05-15 2006-11-28 Ricoh Co., Ltd. Method and apparatus for appliance host supported network-based application delivery
US20030154284A1 (en) * 2000-05-31 2003-08-14 James Bernardin Distributed data propagator
US6990663B1 (en) * 2000-06-08 2006-01-24 International Business Machines Corporation Hypervisor virtualization of OS console and operator panel
US6782398B1 (en) 2000-06-14 2004-08-24 Microsoft Corporation Method for executing commands on multiple computers of a network
JP4292693B2 (ja) * 2000-07-07 2009-07-08 株式会社日立製作所 計算機資源分割装置および資源分割方法
US20030050932A1 (en) 2000-09-01 2003-03-13 Pace Charles P. System and method for transactional deployment of J2EE web components, enterprise java bean components, and application data over multi-tiered computer networks
AU2001291306A1 (en) * 2000-09-12 2002-03-26 Infolibria, Inc. Managing distribution and local execution of computing resources
US7139821B1 (en) 2000-10-20 2006-11-21 Sun Microsystems, Inc. Method and apparatus for creating and deploying applications from a server application
US7076633B2 (en) * 2001-03-28 2006-07-11 Swsoft Holdings, Ltd. Hosting service providing platform system and method
JP2002323986A (ja) * 2001-04-25 2002-11-08 Hitachi Ltd コンピュータリソース流通システム及び方法
US20020165948A1 (en) * 2001-05-07 2002-11-07 International Business Machines Corporation Scalable resource discovery and reconfiguration for distributed computer networks
US6986018B2 (en) * 2001-06-26 2006-01-10 Microsoft Corporation Method and apparatus for selecting cache and proxy policy
US7174379B2 (en) 2001-08-03 2007-02-06 International Business Machines Corporation Managing server resources for hosted applications
WO2003025685A1 (en) 2001-09-14 2003-03-27 Ibex Process Technology, Inc. Scalable, hierarchical control for complex processes
US6907501B2 (en) * 2002-01-25 2005-06-14 Ntt Docomo Inc. System for management of cacheable streaming content in a packet based communication network with mobile hosts
US20040044731A1 (en) * 2002-03-22 2004-03-04 Kailai Chen System and method for optimizing internet applications
US7565398B2 (en) * 2002-06-27 2009-07-21 International Business Machines Corporation Procedure for dynamic reconfiguration of resources of logical partitions
US7269721B2 (en) * 2002-08-13 2007-09-11 Intel Corporation Method, system, and apparatus for booting with remote configuration data
US7206836B2 (en) 2002-09-23 2007-04-17 Sun Microsystems, Inc. System and method for reforming a distributed data system cluster after temporary node failures or restarts
JP2004310615A (ja) * 2003-04-09 2004-11-04 Sony Corp プログラム処理システム及びプログラム処理方法、並びにコンピュータ・プログラム
JP4291060B2 (ja) * 2003-07-01 2009-07-08 富士通株式会社 トランザクション処理方法,トランザクション制御装置およびトランザクション制御プログラム
US20050060704A1 (en) * 2003-09-17 2005-03-17 International Business Machines Corporation Managing processing within computing environments including initiation of virtual machines
US20050198303A1 (en) * 2004-01-02 2005-09-08 Robert Knauerhase Dynamic virtual machine service provider allocation
JP4241410B2 (ja) 2004-01-30 2009-03-18 キヤノン株式会社 レイアウト調整方法および装置およびレイアウト調整プログラム
US7975270B2 (en) * 2004-03-10 2011-07-05 International Business Machines Corporation Facilitating allocation of resources in a heterogeneous computing environment
JP4188281B2 (ja) 2004-06-03 2008-11-26 株式会社日立製作所 プログラム実行予約方法及び装置並びにその処理プログラム、及びプログラム実行システム
US7478361B2 (en) 2004-06-17 2009-01-13 International Business Machines Corporation Method and system for managing application deployment
US7281045B2 (en) 2004-08-26 2007-10-09 International Business Machines Corporation Provisioning manager for optimizing selection of available resources
US7640296B2 (en) * 2004-12-21 2009-12-29 Sap Ag Mapping of a content request for a cache server
US20060184936A1 (en) 2005-02-11 2006-08-17 Timothy Abels System and method using virtual machines for decoupling software from management and control systems

Also Published As

Publication number Publication date
CN101460907A (zh) 2009-06-17
US8190682B2 (en) 2012-05-29
CA2646135C (en) 2013-03-12
JP2013229040A (ja) 2013-11-07
EP2008167A4 (en) 2011-01-19
WO2007126837A3 (en) 2008-10-02
JP2012142012A (ja) 2012-07-26
CN103713951A (zh) 2014-04-09
US20070240160A1 (en) 2007-10-11
JP5174006B2 (ja) 2013-04-03
CN101460907B (zh) 2013-12-04
IN2014KN02671A (ja) 2015-05-08
JP5335948B2 (ja) 2013-11-06
JP5789640B2 (ja) 2015-10-07
CA2646135A1 (en) 2007-11-08
JP2009532771A (ja) 2009-09-10
EP2008167A2 (en) 2008-12-31
WO2007126837A2 (en) 2007-11-08
EP2008167B1 (en) 2020-05-13
CN103713951B (zh) 2018-11-13
EP3702919A1 (en) 2020-09-02
JP2015144020A (ja) 2015-08-06

Similar Documents

Publication Publication Date Title
JP6126157B2 (ja) 複数のコンピュータシステムによるプログラムの実行を管理するシステム
US11539753B2 (en) Network-accessible service for executing virtual machines using client-provided virtual machine images
US20230107188A1 (en) Providing executing programs with access to stored block data of others
EP2186012B1 (en) Executing programs based on user-specified constraints
US10824343B2 (en) Managing access of multiple executing programs to non-local block data storage
US9262273B2 (en) Providing executing programs with reliable access to non-local block data storage
JP5015351B2 (ja) 実行プログラムによる非ローカルブロックデータストレージへの信頼性の高いアクセスの実現

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150507

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150507

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150723

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160215

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160405

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20160705

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160930

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170406

R150 Certificate of patent or registration of utility model

Ref document number: 6126157

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