[go: up one dir, main page]

JP6189875B2 - プログラム実行能力の私的利用の管理 - Google Patents

プログラム実行能力の私的利用の管理 Download PDF

Info

Publication number
JP6189875B2
JP6189875B2 JP2015001907A JP2015001907A JP6189875B2 JP 6189875 B2 JP6189875 B2 JP 6189875B2 JP 2015001907 A JP2015001907 A JP 2015001907A JP 2015001907 A JP2015001907 A JP 2015001907A JP 6189875 B2 JP6189875 B2 JP 6189875B2
Authority
JP
Japan
Prior art keywords
execution
program
computing
user
surplus
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
JP2015001907A
Other languages
English (en)
Other versions
JP2015084252A (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 JP2015084252A publication Critical patent/JP2015084252A/ja
Application granted granted Critical
Publication of JP6189875B2 publication Critical patent/JP6189875B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/466Transaction processing
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5072Grid computing
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/08Payment architectures
    • G06Q20/085Payment architectures involving remote charge determination or related payment systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Business, Economics & Management (AREA)
  • General Engineering & Computer Science (AREA)
  • Accounting & Taxation (AREA)
  • Mathematical Physics (AREA)
  • Finance (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Stored Programmes (AREA)

Description

本願発明は、プログラム実行を管理する技術に関する。
多くの企業および他の組織において動作しているコンピュータネットワークは、多数のコンピューティングシステムの動作をサポートするために、前記コンピューティングシステムを相互接続する。このような相互接続は、(例えば、ローカルネットワークの一部として)共同設置されているかまたは複数の別個の地理的位置に配置されている(例えば、1つ以上の私的中間ネットワークまたは公的中間ネットワークを介して接続されている)コンピューティングシステムに対して用いられている。例えば、多数の相互接続されたコンピューティングシステムを収容したデータセンターが一般的になっている(例えば、単一の組織によってまたは単一の組織を代表するか、そのために動作される私的データセンターや、コンピューティングリソースを顧客へ提供する事業体によって動作される公的データセンター)。いくつかの公的データセンターオペレータからは、多様な顧客が所有しているハードウェアのためのネットワークアクセス、出力およびセキュアなインストール施設が提供されており、他の公的データセンターオペレータからは、「フルサービス」施設が提供されており、このサービスの中には、顧客が利用することが可能なハードウェアリソースも含まれる。しかし、典型的なデータセンターのスケールおよび範囲の増加と共に、物理的なコンピューティングリソースの提供、運営および管理もますます複雑化してきている。
コモディティーハードウェアの仮想化技術の出現により、多様なニーズを抱えている多くの顧客のための大規模コンピューティングリソースの管理において一定の恩恵が得られており、その結果、複数の顧客間における多様なコンピューティングリソースの共有が効率化され、セキュアになっている。例えば、仮想化技術(例えば、VMWare、XEN、LinuxのKVM(「カーネル仮想化基盤」)またはユーザーモードLinuxによって提供されているもの)によれば、単一の物理的なコンピューティングマシンによってホストされる1つ以上の仮想マシンを各ユーザに提供することにより、単一の物理的なコンピューティングマシンを複数のユーザ間で共有することが可能となっている。このような仮想マシンはそれぞれソフトウェアシミュレーションであり、別個の論理コンピューティングシステムとして機能して、多様な仮想マシン間におけるアプリケーション隔離およびセキュリティを提供しつつ、ユーザが所与のハードウェアコンピューティングリソースの唯一のオペレータでありかつ運営管理者であるかのような幻想を付与する。
プログラム実行を管理する技術について説明する。少なくともいくつかの実施形態において、プログラム実行の管理を、1つ以上のコンピューティングシステムの余剰コンピューティング能力を用いている複数のユーザについて行う。詳細には、少なくともいくつかのこのような実施形態において、1人以上のユーザそれぞれについて、当該関連付けられたユーザによる専用使用のために割り当てられたプログラム実行能力のうち現在未使用状態であるプログラム実行能力などに基づいて、余剰コンピューティング能力の私的プールが、当該ユーザのために維持されかつ当該ユーザと関連付けられる。このような私的プールはまた、当該関連付けられたユーザによる優先使用のために利用可能である余剰コンピューティング能力の私的プールとも関連付けられる。いくつかの実施形態において、複数のユーザ(例を任意選択的に挙げると、私的余剰コンピューティング能力プール(単数または複数)と関連付けられた1人以上のユーザ)が利用可能な一般的な非私的余剰コンピューティング能力プールに加えて、このような私的余剰コンピューティング能力プールがさらに提供され得る。いくつかの実施形態において、これらの技術は、プログラム実行サービス(「PES」)と共に用いられ得る。プログラム実行サービスは、サービス(例えば、ユーザプログラム実行のための複数のコンピューティングノード(例えば、1つ以上の物理的なコンピューティングシステム上においてホストされる複数の物理的なコンピューティングシステムおよび/または仮想マシン)を提供するプログラム実行サービス)の複数の顧客または他のユーザを代表するか、そを代表するか、そのために複数のプログラムを実行する。加えて、少なくともいくつかの実施形態において、上記技術のうちいくつかまたは全ては、以下により詳細に説明するように、プログラム実行サービスシステムマネージャモジュールの実施形態によって自動的に実行することができる。
いくつかの実施形態において、PESまたは他のコンピューティングノード群の少なくともいくつかの余剰プログラム実行能力または他の場合において未使用状態であるプログラム実行能力が、ユーザを代表するか、そのために一時的様態または非保証様態でプログラム実行を行うために利用することが可能であり、これにより、前記余剰プログラム実行能力は、他の目的(例えば、1つ以上の他のプログラムの実行のための優先的使用または予約使用)のために当該プログラム実行能力が必要となるときまで、このようなプログラムの実行に利用することが可能である。このような余剰プログラム実行能力は、例えば、多様なユーザ(例えば、一般的な余剰コンピューティング能力プールを提供するPESの任意の顧客)によって利用可能な1つ以上の一般的な余剰コンピューティング能力プールの一部として利用可能であり、例えば、供給および需要を反映して価格が動的に変動するスポット市場を介してあるいは他の様態で利用することが可能である。いくつかの場合において、余剰プログラム実行能力が他の目的のために必要であるときに前記余剰プログラム実行能力を用いるユーザを代表するか、そのために1つ以上のプログラムが実行され得、いくつかのこのような場合において、余剰プログラム実行能力を他の目的のために利用することができるよう、これらの1つ以上のプログラムの実行が自動的にPESによって終了され得る(例えば、シャットダウン、アボートされ得る)。少なくともいくつかのこのような実施形態において、自動終了されたプログラムは、将来(例えば、将来において、十分な量の余剰プログラム実行能力が前記ユーザのためのプログラム実行のために再度利用可能となった場合)に前記ユーザを代表するか、そのために自動的に再開させることができる。あるいは、他の目的に必要な余剰プログラム実行能力を用いている1つ以上のプログラムを終了させる代わりに、いくつかの実施形態および状況において、他のプログラム実行能力を特定して、前記他の目的に必要な前記余剰プログラム実行能力の代わりにこのプログラム実行能力を用いることもでき、これにより、前記余剰プログラム実行能力を用いた前記1つ以上のプログラムの実行継続が可能となる。余剰プログラム実行能力の利用に関連するさらなる詳細について、以下に記載する。
いくつかの実施形態において、プログラム実行のためにPESから利用することが可能なプログラム実行能力のうち少なくとも一部を1人以上のユーザに割り当てることで、これらのユーザがこの一部を優先的に利用することを可能とし、これにより、これらのユーザ各人が、各量のプログラム実行能力を利用する際の優先アクセスを他のユーザに優先して持つことができる。例えば、このようなユーザの優先アクセスは、各量のプログラム実行能力を利用するための専用アクセスまたは独占アクセスを有する各ユーザ(例えば、プログラム実行におけるユーザの利用予約または利用保証のために割り当てられた1つ以上の専用コンピューティングノードおよび/またはその部位を有する各ユーザ、または、複数のユーザによって用いられる複数のコンピューティングノードからなる大きな群からユーザが専用として利用することが可能な1つ以上のコンピューティングノードに相当する一定量のプログラム実行能力を有する各ユーザ)に基づき得る。少なくともいくつかのこのような実施形態において、PESの各量のプログラム実行能力は、特定のユーザによる指定期間にわたる専用アクセスへと割り当てることができ、このような割当は、1つ以上の物理的なコンピューティングシステムのリースの場合と同様に行われ、これにより、前記指定期間中において、各量のプログラム実行能力を前記ユーザを代表するか、そのためにプログラム実行のために利用することが可能となる。加えて、いくつかの実施形態において、プログラム実行のための優先的アクセスまたは他の専用アクセスをユーザに付与するための基準として、1つ以上の要素を基準とすることができる(例えば、前記ユーザが支払った料金、一定期間および/または他の条件に基づいた専用アクセスを利用するための契約上の義務)。
少なくともいくつかの実施形態において、一定期間において(例えば、前記割り当てられた専用能力が優先的利用のために利用されていないときおよび/または前記専用能力が割り当てられているユーザが前記割り当てられた専用能力を余剰能力として利用することができるときに)、専用利用または他の優先的利用のために1人以上のユーザへと割り当てられたプログラム実行能力のうち少なくとも一部を余剰プログラム実行能力として利用することが可能である。このようにして、第1のグループのユーザに割り当てられた少なくともいくつかのプログラム実行能力を、他のユーザを代表するか、そのためにプログラムを実行するために一時的に適宜利用することができる。複数のユーザからの余剰プログラム実行能力への需要が現在利用可能な供給よりも高い場合、余剰プログラム実行能力を多様な様態で利用できる特定のユーザおよびプログラムを選択することができる。例えば、いくつかの実施形態において、プログラム実行のために余剰プログラム実行能力を要求しているユーザを他のこのようなユーザよりも優先することができ、このような優先は、1つ以上の要素に基づいて決定される(例えば、ユーザから提供された料金および/またはユーザが支払った料金、余剰プログラム実行能力利用の要求が提出された時間、余剰プログラム実行能力の利用の希望開始時間または希望開始時刻、余剰プログラム実行能力の利用の希望完了時間または希望完了時刻、希望の余剰プログラム実行能力の種類および/または量(例えば、指定された数量のコンピューティングノード)。専用プログラム実行能力の利用についてのさらなる詳細について、以下に説明する。
加えて、上記したように、少なくともいくつかの実施形態において、1人以上のユーザはそれぞれ、当該ユーザに対して独占アクセスまたは優先アクセスが付与された余剰コンピューティング能力の関連付けられた私的プールを持ち得る。例えば、ユーザが1つ以上のコンピューティングノードの専用コンピューティング能力を持っているが当該専用能力のうち一部または全てを現在利用していない状態である場合、その未使用状態である専用能力への優先アクセスを、当該ユーザのためのプログラム実行のための余剰コンピューティング能力の私的プールとして当該ユーザに付与することができる。いくつかの実施形態において、このようなユーザのための余剰コンピューティング能力の私的プールは、当該ユーザからの明示的命令に応答して確立することができる(例えば、当該ユーザからの料金)。他の実施形態において、未使用状態である専用コンピューティング能力を持っているユーザのうち一部または全員は、当該ユーザの未使用状態である専用コンピューティング能力に基づいて、余剰コンピューティング能力の私的プールをそれぞれ自動的に受領し得る。さらに、いくつかの実施形態において、ユーザの未使用状態である専用コンピューティング能力を用いて当該ユーザが余剰コンピューティング能力の私的プールを自動的に受領した場合、当該ユーザは、当該私的プールの存在に気づかない場合がある。
多様な実施形態および状況において、このように余剰コンピューティング能力の私的プールをユーザのために用いることにより、多様な恩恵を前記ユーザに付与することができる。例えば、いくつかの実施形態において、ユーザが専用コンピューティング能力を利用した場合に漸増していくコストを、前記ユーザが同程度の余剰コンピューティング能力を一般的プールから利用した場合のコストよりも低くすることができ、このような場合、前記ユーザが自分の余剰コンピューティング能力の私的プールを利用するためのコストを、一般的なプールを利用した場合のコストよりも低額に設定することができる(例えば、ユーザが専用コンピューティング能力を利用するための漸増していくコストと同一のコストにすることができるか、ユーザが専用コンピューティング能力を利用するための漸増していくコストと、前記一般的なプールから用いる際のより高いコストとの間のコストにすることができる)。加えて、いくつかの実施形態において、ユーザは、自分の私的プール中の余剰コンピューティング能力への独占アクセスまたは優先アクセスを得ることができ、これにより、前記ユーザは、一般的な余剰コンピューティング能力プールを用いた即時実行よりも当該余剰コンピューティング能力要求を十分に優先する必要が無い場合であっても、自分の私的プールを用いて当該要求を即座に実行することができる。よって、ユーザのプログラム実行の際にこのような余剰コンピューティング能力の私的プールを用いることで、プログラム実行の際の一般的な余剰コンピューティング能力プールの利用から発生する少なくともいくつかの他のプログラム実行特性と異なる有益なプログラム実行特性を得ることが可能となる(例えば、指定時間間隔での指定量のプログラム実行能力の使用の漸増的コストの低下、私的プールからのコンピューティング能力へのアクセスが利用可能となることによる、一般的なプールよりも高い利用可能性、私的プールからのコンピューティング能力を用いたプログラム実行の継続が可能なことによる、一般的なプールよりも高い能力のうちの1つ以上)。
私的余剰コンピューティング能力プールの1つの特定の例として、第1のユーザは、特定の目的のための複数のコンピューティングノードの専用使用を開始することができる。その場合、第1のユーザは、これらの複数のコンピューティングノードの一部を予約として維持する必要がある(例えば、コンピューティング負荷が予想よりも高かった場合および/または特定の目的のために用いられている任意のコンピューティングノードが利用不可能となった場合に交換できるように特定の目的のために用いられているコンピューティングノードを自動的にスケールするために、複数のコンピューティングノードの合計のうち20%を後で利用できるようにバックアップとして予約しておく必要がある)。このような状況においては、予約として保存されているコンピューティングノードが特定の目的に用いられていない場合、当該コンピューティングノードを第1のユーザのための余剰コンピューティング能力の第1の私的プールとして利用することができる。しかし、これらの予約として保存されているコンピューティングノードが後で必要となった場合、第1のユーザは当該コンピューティングノードを特定の目的のために利用することができる。私的余剰コンピューティング能力プールの利用の別の特定の例として、第2のユーザは、複数のコンピューティングノードの専用使用を開始し得るが、前記複数のコンピューティングノードは全て、第2のユーザのための余剰コンピューティング能力の第2の私的プールとして第2のユーザによって利用されることを意図している。その後、複数のユーザが一般的な余剰コンピューティング能力プールを用いる際に発生する複数の要求を管理するための本明細書中に記載の技術と同様の様態で、余剰コンピューティング能力の第2の私的プールを、第2のユーザと関連付けられた複数のエンティティからの要求を満たすために用いることができる(例えば、第2のユーザが組織である場合、前記複数のエンティティは、前記組織内の異なるグループまたは人間であり、前記複数のエンティティは、余剰コンピューティング能力の第2の私的プールへのアクセスが第2のユーザから販売されたサードパーティである)。さらに、第2のユーザのための余剰コンピューティング能力の第2の私的プールが複数のエンティティからの要求を満たすために用いられた場合、いくつかの実施形態において、これらの要求および第2の私的プールの管理は、PESのサードパーティオペレータおよび/またはプログラム実行サービスシステムマネージャ(「PESSM」)モジュールにより(例えば、第2のユーザへ課金された料金について)行われ得る。他の実施形態において、第2のユーザは、PESSMモジュールを入手および利用することができ、あるいは、他の場合において、第2のユーザは、このような行為を自身のために行うことができる。さらに、いくつかの実施形態において、例えば第1の余剰コンピューティング能力プールおよび第2の余剰コンピューティング能力プールそれぞれのために用いられているコンピューティングノードのうち少なくとも一部を上記した第1のユーザおよび/または第2のユーザが提供する場合、ユーザのために用いられている専用能力コンピューティングノードのうち一部または全てを当該ユーザが提供することができるかあるいは他の場合において当該ユーザが管理することができる。
ユーザが余剰コンピューティング能力の私的プールを有しておりかつ別の余剰コンピューティング能力の一般的なプールも利用可能である場合、この異なる余剰コンピューティング能力プールを多様な様態で用いることができる。例えば、このようなユーザが余剰コンピューティング能力を利用することを要求した場合において、当該ユーザの私的プールが当該要求に見合った十分なコンピューティング能力を有する場合、当該私的プールを用いて当該要求をすぐに満たすことができ、当該ユーザの私的プールが当該要求に見合った十分なコンピューティング能力を持たない場合、当該要求は、他のユーザからの要求と共に一般的な余剰コンピューティング能力プールで十分であるとみなされ得る。同様に、このようなユーザのために1つ以上の第1のプログラムがユーザの余剰コンピューティング能力の私的プールを用いて実行されている最中である場合において、当該ユーザが当該余剰コンピューティング能力を他の目的(例えば、当該ユーザの専用コンピューティング能力の一部として1つ以上の他の第2のプログラムを実行すること)のために必要としている場合、いくつかの実施形態において、前記1つ以上の第1のプログラムの実行を自動的に前記一般的な余剰コンピューティング能力プールへと移動させることができる(例えば、前記第1のプログラムの実行を終了させることなく継続することにより(例えば、当該ユーザの専用コンピューティング能力の代替品として機能する他の利用可能なコンピューティング能力の特定および利用により、当該ユーザの専用コンピューティング能力の一部である1つ以上のコンピューティングノード上の第1のプログラムの実行を終了させることにより、余剰コンピューティング能力の一般的なプールの一部である他のコンピューティングノードを用いて第1のプログラムのさらなる実行を迅速に開始することにより、当該ユーザの専用コンピューティング能力の一部である1つ以上のコンピューティングノード上の第1のプログラムの実行を終了させ、一般的な余剰コンピューティング能力プールの利用に関する他の要求と共に第1のプログラムのさらなる実行に関する要求を要求キューに入れて送ることにより))。私的余剰コンピューティング能力プールの利用に関するさらなる詳細について、以下に記載する。
上記した専用コンピューティング能力および余剰コンピューティング能力の種類に加えて、PESは、オンデマンド可変プログラム実行能力をさらに含み得る。前記オンデマンド可変プログラム実行能力は、ユーザのプログラム実行のための少なくともいくつかの動的に受信された要求を満たすために利用することができる(例えば、これらのユーザからの要求があった直後、指定された将来の時間、指定された将来の時間における一定時期)いくつかの実施形態において、このような要求によって示される1つ以上のプログラムが要求された実行を満たすのに十分なコンピューティングリソースが前記要求された時間(またはそれに近い時間において)利用可能であるが、このような要求が満たされる保証が無い(すなわち、十分なコンピューティングリソースが利用可能であることが保証されない)場合がある。例えば、ユーザを代表するか、そのために(例えば、即時実行のために)1つ以上のプログラムを動的に実行するようにとのオンデマンド可変プログラム実行能力要求が受信された後、適切な量のオンデマンドプログラム実行能力がこれらのプログラムの実行のために現在利用可能である場合(例えば、十分な数の利用可能なコンピューティングノードが前記要求を満たすためのリソースと共に存在すると決定された場合)、前記1つ以上のプログラムを前記ユーザのために実行することができる。そうではない場合、前記要求は拒否され得る(あるいは、いくつかの場合においては延期され得る)。よって、いくつかのこのような実施形態において、このようなオンデマンド可変プログラム実行能力に関する要求は成功しない場合がある(例えば、適切な量のプログラム実行能力が1つ以上のプログラムの実行のために前記要求された実行時間において利用することができない場合(例えば、現在利用可能なコンピューティングノードが不十分であり、即時実行要求を満たすだけの十分なリソースを備えていないと決定された場合))。
いくつかの実施形態において、オンデマンド可変プログラム実行能力を提供するために用いられるコンピューティングノードは、専用プログラム実行能力の提供に用いられるコンピューティングノードおよび/または余剰プログラム実行能力の提供に用いられるコンピューティングノードと別個のものであり得、その場合、前記オンデマンド可変プログラム実行能力の提供に用いられるコンピューティングノードのうち一部が用いられなければ、いくつかの実施形態において、オンデマンド可変プログラム実行能力要求が受信されるまで、余剰プログラム実行能力の提供に用いられ得る。他の実施形態において、それらは、このような余剰プログラム実行能力の提供に用いられない場合もある。加えて、いくつかの実施形態において、即時(または予定)実行に関するオンデマンド可変プログラム実行能力要求が満足され、各ユーザを代表するか、そのために1つ以上のプログラムの実行の開始が成功した場合、前記オンデマンド可変プログラム実行能力の継続的使用が一定の将来の時間が来るまで保証され得る(例えば、各ユーザによる選択が行われるまで(例えば、前記プログラム実行能力の使用を終了および/または解放せよとの各ユーザからの通知に基づいたもの)および/またはユーザによる設計に基づいた時間(例えば、ユーザを代表するか、そのために実行している1つ以上のプログラムがタスクの完了または他の場合などにおいて自動終了すること、および/または各ユーザを代表するか、そのために実行している1つ以上のプログラムと相互作用している他のユーザが前記実行を終了した場合(例えば、各ユーザのために実行している1つ以上のプログラムが他のユーザの相互作用的使用のために提供される場合)))。あるいは、いくつかの実施形態において、可変プログラム実行能力の継続的使用の保証に対してある制限がかけられる場合もある(例えば、PESがその使用を他の目的のために先取しない場合には保証が得られるが、プログラムを実行しているコンピューティングノードの故障については保証しない)。
加えて、上記したように、少なくともいくつかの実施形態において、PESの専用プログラム実行能力機能を1人以上のユーザが利用することができ、これにより、前記1人以上のユーザそれぞれが、PESから割り当てられた一定の専用量のプログラム実行能力を持つことができ、また、1人以上のユーザ(例えば、PESから提供された専用数の1つ以上のコンピューティングノード、PESのコンピューティングノードのうち1つ以上ののグループによって提供されたコンピューティングリソースの専用部位)のためのプログラム実行のための利用について保証を受けることができる。例えば、専用プログラム実行能力の保証された利用可能性を、1つ以上のQoS(「サービス品質」)基準と共に提供することができる(例えば、プログラムの実行を開始せよとの要求があってから一定期間内(例えば、余剰コンピューティング能力を用いた他のプログラムの実行の終了および当該プログラムの実行開始に対応する期間)において専用プログラム実行能力が利用となること)。オンデマンド可変プログラム実行能力機能および余剰プログラム実行能力機能と対照的に、専用能力機能のユーザは、一定の使用期間内においてユーザのためのプログラム実行のために利用可能であることが保証された一定の指定量のプログラム実行能力を持つことができ、これにより、予期できない事象および/または不測の事態に起因してPESサービスが利用できなくなる事態(例えば、サービス不具合、メンテナンス)が防がれる。
さらに、専用コンピューティング能力、余剰コンピューティング能力およびオンデマンド可変コンピューティング能力のうち2つ以上がPESからユーザへと有料で提供される実施形態において、これらの異なる種類のコンピューティング能力と関連付けられた料金を多様な様態で異ならせることができる(例えば、関連付けられた利用可能性の保証および/または他の要素を反映するように、異ならせることができる)。一例として、ユーザが特定量の専用コンピューティング能力を利用する際の合計コストを、ユーザが同等量のオンデマンド可変コンピューティング能力(利用可能である場合)を利用する際のコストよりも高くすることができ、ユーザがオンデマンド可変コンピューティング能力を利用する際のコストを、ユーザが一般的なプールからの同等量の余剰コンピューティング能力(利用可能である場合)を利用する際のコストよりも高くすることができる。しかし、いくつかの場合において、専用コンピューティング能力を利用するためのコストには、実際の使用に基づいていない単回料金または定期料金が含まれる場合もあり、ユーザが特定量の専用コンピューティング能力を特定期間において用いた場合の漸増していくコストも別個にあり、特定量の専用コンピューティング能力の利用のための漸増コストは、同等量の一般的な余剰コンピューティング能力プールを上記期間にわたって用いた場合のコストよりも任意選択的に低くされる。さらに、上記したように、私的余剰コンピューティング能力プールを利用するためのコストは、一般的な余剰コンピューティング能力プールを利用するためのコストと異なり得、例えば、いくつかの実施形態において、専用コンピューティング能力を利用した場合の漸増的コストと同一であり得る。価格設定およびコストに関連するさらなる詳細について、以下に記載する。
ネットワーク図であり、プログラム実行サービスの複数のユーザが利用することが可能なプログラム実行能力の使用を管理するための相互作用の例示的実施形態を示す。 ネットワーク図であり、プログラム実行サービスの複数のユーザが利用することが可能なプログラム実行能力の使用を管理するための相互作用の例示的実施形態を示す。 複数のコンピューティングノードのプログラム実行能力の使用を管理するための技術の例を示す。 複数のコンピューティングノードのプログラム実行能力の使用を管理するための技術の例を示す。 ブロック図であり、複数のユーザによるコンピューティングノードの使用を管理するためのコンピューティングシステムの例示的実施形態を示す。 プログラム実行サービスシステムマネージャルーチンの例示的実施形態のフロー図を示す。 余剰能力使用量マネージャルーチンの例示的実施形態のフロー図を示す。 余剰能力使用量マネージャルーチンの例示的実施形態のフロー図を示す。 専用能力使用量マネージャルーチンの例示的実施形態のフロー図を示す。 オンデマンド可変能力使用量マネージャルーチンの例示的実施形態のフロー図を示す。
図1Aは、ネットワーク図であり、複数のユーザのためにプログラムを実行するための複数の種類のプログラム実行能力の利用の管理の一例を示す。例示目的のため、以下、特定の種類のプログラム実行能力が特定の様態で提供および管理される、いくつかの例および実施形態について説明する。これらの例は例示目的のために記載するものであり、簡潔さのために簡略化されており、本発明の技術は多様な他の状況において利用することが可能であり、そのうちの一部のみについて以下に説明ことが理解される。
図1Aの例において、プログラム実行サービスシステムマネージャモジュール110の図示の実施形態を用いて、複数のユーザがネットワーク100を介して相互作用している。プログラム実行サービスシステムマネージャモジュール110は、ユーザのプログラム実行において利用することが可能な1つ以上のコンピューティングノード120上においてプログラムを実行する。このPESSMモジュール110は、特定のプログラム実行サービス(図示せず)の機能のうち一部または全体を提供する。詳細には、図示の実施形態において、PESSMモジュール110およびコンピューティングノード120は提供されるプログラム実行サービスの一部としてプログラム実行サービスプロバイダ105によって提供され、PESSMモジュール110は、1つ以上のコンピューティングシステム(図示せず)上において実行し得る。この例において、前記プログラム実行サービスは、多様なユーザのためにコンピューティングノード120上においてプログラム実行を管理するための多様な機能を提供する。
多様な遠隔ユーザ130、140、150および160は、この例において、ネットワーク100を介してPESSM110と相互作用して、ユーザを代表するか、そのためにプログラムの多様な種類の実行を構成および/または要求することができる。この例において、これらの遠隔ユーザは、以下に記載のように、1つ以上の専用能力ユーザ140と、1つ以上の余剰能力ユーザ150と、1つ以上のオンデマンド可変能力ユーザ130と、任意選択的に1つ以上の他のユーザ160とを含む。ネットワーク100は、例えば、リンクされたネットワークによって構成された公的アクセスが可能なネットワークであり得、多様な別個のパーティによって操作される(例えば、インターネット)。他の実施形態において、ネットワーク100は、私的ネットワークであり得る(例えば、非優先的ユーザからのアクセスが全体的または部分的に可能な企業ネットワークまたは大学ネットワーク)。さらに他の実施形態において、ネットワーク100は、インターネットへのアクセスおよび/またはインターネットからのアクセスを有する1つ以上の私的ネットワークを含み得る。
例示のコンピューティングノード120は、ユーザを代表するか、そのためにプログラム実行を行う際に用いられ、いくつかの実施形態において、複数の物理的なコンピューティングシステムおよび/または複数の仮想マシンを含み得る。これらの複数の物理的なコンピューティングシステムおよび/または複数の仮想マシンは、(図1Bを参照してさらに詳述するように)1つ以上の物理的なコンピューティングシステム上においてホストされる。コンピューティングノード120はそれぞれ、1つ以上のプログラム実行において利用することが可能な一定量のコンピューティングリソースを有し、特定の量のプログラム実行能力を提供する(例えば、処理能力(例えば、処理ユニットの数および/またはサイズ)、メモリ能力、記憶能力、ネットワーク帯域能力などのうちの1つ以上の組み合わせによって測定することが可能なもの)。いくつかの実施形態において、PESプロバイダ105は、事前構成されたコンピューティングノードを提供し得、各事前構成されたコンピューティングノードは、ユーザのためのプログラム実行において利用することが可能な類似のかつ/または相当量のリソースを有し、他の実施形態において、PESプロバイダ105は、選択対象として多様な異なるコンピューティングノードを提供し得、これらのコンピューティングノードから、ユーザは、前記ユーザのためのプログラム実行の際に用いられるものを選択することができる(例えば、異なる量および/または種類のコンピューティング関連リソース(例えば、処理ユニットのサイズ、速度および/または種類、処理ユニット数、メモリおよび/または記憶、プラットフォーム構成(例えば、32ビットまたは64ビット)))。
いくつかの実施形態において、多様なユーザ130、140、150および160は、PESSM110と相互作用して、ユーザのためのプログラム実行において好適なリソースおよび/または必要なリソースを(例えば、1つ以上のコンピューティングノードを指定することにより)指定することができる。多様な実施形態において、このようなリソースの指定は、ユーザのためのプログラム実行の要求が有ったときならびに/あるいは1つ以上の他のとき(例えば、ユーザがプログラム実行サービスを登録および/または加入したとき)に、行われ得る。いくつかの実施形態において、PESSM110は、加入サービスおよび/または登録サービスを1人以上のユーザに提供することができ、これにより、ユーザは、ユーザを代表するか、そのために実行されるべき1つ以上のプログラムに関連する情報を指定することができる(例えば、プログラム、ソースコード、1つ以上のプログラムのアドレス指定可能な位置)、アカウント情報(例えば、ユーザ名、課金情報、等)、使用条件)。加えて、ユーザがPESSM110と相互作用してサービスの加入および/または登録を終えた後、いくつかの実施形態において、前記ユーザに対し、1つ以上の識別子が発行され得る(例えば、鍵、トークン、ユーザ名、証明書、等)。これらの識別子は、前記ユーザと関連付けられ、前記ユーザのためのプログラム実行と関連して用いられる。他の実施形態において、PES加入サービスおよび/または登録サービスに関連する多様な動作を行うために、PESSM110以外のモジュールが提供され得る。
図示の実施形態において、1つ以上の可変能力ユーザ130は、PESSM110と相互作用して、例えば即時実行の要求の提出および/または以降の実行に関する情報の提供を提出することにより、オンデマンド可変プログラム実行能力を用いた1つ以上のプログラムを構成および/または実行要求する。即時実行要求を受信した後、PESSM110は、前記要求を満たすだけの十分な数のコンピューティングノード120および利用可能なリソースが利用可能であるか否かを決定することができる。前記要求を満たすだけの十分な数のコンピューティングノード120および利用可能なリソースが利用可能である場合、PESSM110は、適切な量のコンピューティングノード上において、当該要求に見合った1つ以上のプログラムの実行をユーザを代表するか、そのために開始し得る。1つ以上のプログラムを1回以上将来において実行してほしいとの要求をユーザが予定した場合、PESSM110は、1つ以上のプログラムを1つ以上の将来の時間において実行するための適切な量のコンピューティングノードを予約しようとし得、かつ/または、実行に利用すべきコンピューティングノードの決定を一定時期まで(例えば、1つ以上の将来の時間が来るまで)遅延させ得る。図示の実施形態において、PESSM110が可変能力ユーザ要求実行のためにコンピューティングノードを割り当てることができなかった場合、前記要求は失敗し得、その結果前記プログラムは実行されない。このような場合、ユーザ130は、失敗した要求を後で実行できるよう、再提出し得る。上記したように、いくつかの実施形態において、可変能力ユーザに対し、例えば、用いられるコンピューティングノードの数、用いられるコンピューティングノードの種類、コンピューティングノードが利用される期間に基づいて、PES利用に関連する多様な料金を課金することができる。加えて、ここでは図示していないが、いくつかの実施形態において、オンデマンド可変プログラム実行能力を提供するためにコンピューティングノード120のうち一定部分を指定することができ、他の実施形態において、オンデマンド可変プログラム実行能力を他の様態で(例えば、コンピューティングノード120全てを用いて、別の目的(例えば、専用能力)に起因して割り当てられていないコンピューティングノード120の全てを用いて)提供することができる。
加えて、この例において、コンピューティングノード120の一部が専用能力ユーザ140のうち1つ以上によって用いられるように割り当てられており、これにより、1つ以上の専用能力ユーザ140のうちそれぞれは、これらの割り当てられたコンピューティングノードの少なくとも一部上における前記ユーザのためのプログラム実行のための優先アクセスを持つことができる。例えば、いくつかの実施形態において、専用能力ユーザ140はそれぞれ、指定された利用期間におけるユーザのためのプログラム実行の際に専用として用いられる1つ以上のコンピューティングノード120を持ち得、これにより、前記ユーザは、前記指定された利用期間内における任意の時期において、ユーザのためのプログラム実行を行うために前記1つ以上のコンピューティングノードにアクセスすることができ、かつ/または、前記1つ以上のコンピューティングノード上においてプログラムを前記指定された利用期間にわたって連続的に実行することができる。1つの特定の例として、専用能力ユーザ140のうち1つ以上は、長期(例えば、1年間の)契約をPESプロバイダ105と締結し得、これにより、これらのユーザはそれぞれ、(例えば前払い方式で課金されるかまたは定期的に課金される)固定料金および、いくつかの場合において、他の利用料金(例えば、多様なリソース(例えば、電気、物理的なラック空間、ネットワーク利用)の利用と関連付けられた可変料金)を支払うことで、契約期間における専用量のコンピューティングノード120への優先アクセスを持つ。
専用能力ユーザ140がPESSM110と相互作用して専用量のコンピューティングノードの優先的利用を要求した後、PESSM110は、コンピューティングノード120からの1つ以上のコンピューティングノードをユーザによる専用使用のために割り当てることができる。例えば、いくつかの実施形態において、複数のコンピューティングノード120の1つ以上の特定のコンピューティングノード(例えば、1つ以上の特定の物理的なコンピューティングノードおよび/または仮想コンピューティングノード)を、(例えば、前記特定のコンピューティングノードを登録時においておよび/または1つ以上の他の時期において割り当てることにより)、関連付けられた特定の専用能力ユーザによる利用期間全体にわたる優先的利用のために割り当てることができ、これにより、専用コンピューティングノード上における前記利用期間における前記特定の専用ユーザのためのプログラム実行要求が発行され、その結果、前記特定の1つ以上の割り当てられたコンピューティングノード上におけるプログラム実行が開始される。他の実施形態において、利用期間全体において特定のコンピューティングノードを特定の専用ユーザ140に割り当てる代わりに、PESSM110は、複数のコンピューティングノードを有する専用コンピューティングノードグループからコンピューティングノードを割り当て得、これにより、適切な量のコンピューティングノードと、多様な専用能力ユーザ140による実行要求を満たすだけの十分なリソースとを専用コンピューティングノードグループにおいて利用することが可能となる。いくつかのこのような実施形態において、専用ユーザ140のために1つ以上の専用コンピューティングノード上において1つ以上のプログラムを実行せよとの要求が受信された後、前記1つ以上のプログラムを実行せよとの要求がでたときに、前記プログラムを実行できるだけの十分な適切な量のコンピューティングノード120を専用コンピューティングノードグループから選択することができる。前記選択された量のコンピューティングノードが専用ユーザ140のための要求の実行において不要となった場合(例えば、前記要求された実行の終了および/または完了後において不要となった場合)、これらのコンピューティングノードを前記専用コンピューティングノードグループへと返却して、他の専用能力ユーザによって利用可能とすることができ、あるいは、いくつかの実施形態において、以下に説明するように、専用ユーザ140のための余剰コンピューティング能力の私的プールの一部として利用可能なものとしてこれらのコンピューティングノードをさらに追跡することも可能である。加えて、特定の専用能力ユーザ140の利用期間が期限切れとなった場合、(例えば、1つ以上の他の(例えば、新規の)専用能力ユーザによる利用のために前記コンピューティングノードを割り当てることができるようにすることにより)前記ユーザの利用のために割り当てられた1つ以上のコンピューティングノードを同様に他の者による利用のために解放することができる。加えて、PESSM110は、実行要求の達成に関する1つ以上の多様な他の管理動作を行うことができる(例えば、要求および/またはユーザ提出要求と関連付けられた利用期間および/または他の期間の実行、要求達成のためのコンピューティングリソースの確保、要求および/または要求元ユーザの認証および/または証明)。いくつかの実施形態において、専用プログラム実行能力の実行が要求されたときと当該要求が満たされたときの間に遅延が発生し得る(例えば、多様な管理動作が行われる際の遅延)。多様な他の実施形態において、専用能力ユーザのためのコンピューティングノードの割り当て、追跡、予約および/または解放を多様な他の技術を用いて行うことができる。
加えて、図示の実施形態において、複数の余剰能力ユーザ150は、PESSM110と相互作用して、1つ以上のプログラムの実行をPESの余剰プログラム実行能力を用いて構成および/または要求する。このような余剰能力ユーザは、私的余剰能力プールおよび/または1つ以上の一般的な余剰能力プールを用いるユーザを含み得る。上記したように、余剰プログラム実行能力は、余剰プログラム実行能力および/または未使用状態であるプログラム実行能力を含み得、このようなプログラム実行能力は、他の場合において他の用途に割り当てることができ、いくつかの実施形態において、少なくとも1つの一般的な余剰能力プール中に分割することができる。このような一般的な余剰能力プールは、1つ以上の他の私的余剰能力プールの一部として利用されていない余剰コンピューティング能力を含む。例えば、図示の実施形態において、余剰プログラム実行能力は、複数のコンピューティングノード120を含み得る。これらの複数のコンピューティングノード120は、他の場合において他の目的(例えば、専用能力ユーザ140、可変能力ユーザ130、および/または他のユーザ160による利用)のために割り当てられるが、現在はこれらの目的のために用いられていないものである。余剰能力ユーザは、プログラム実行要求を多様な実施形において多様な様態で構成することができる(例えば、プログラム実行のためのコンピューティングノードの数および/または種類、利用すべきコンピューティングノードの最小数および/または最大数、当該要求の期限切れ時間、好適な実行時期および/または実行期間、余剰プログラム実行能力の利用の支払いに関する1つ以上の入札(例えば、コンピューティングノードの各使用毎の入札、一定の単位時間あたりの1つ以上のコンピューティングノードの利用毎の入札、最小および/または最大入札の指定))。
図2Aおよび図2Bを参照してさらに説明するように、PESSM110の図示の実施形態は、余剰能力ユーザ150によって利用することが可能な余剰プログラム実行能力から1つ以上のコンピューティングノード120を含むおよび/または除去する時期と、要求されたプログラム実行を余剰能力ユーザ150のために開始および/または終了する時期と、余剰能力ユーザによる利用が可能なコンピューティングノード120のうち前記プログラム実行に用いられるものとを決定し得る。加えて、PESSM110は、私的余剰能力プール中の1つ以上の余剰能力ユーザ150それぞれについて(例えば、専用能力ユーザ140でもある余剰能力ユーザ150のうち一部または全部について)、利用することが可能な余剰能力の量をさらに追跡し得る。多様な実施形態において、PESSM110は、1つ以上のコンピューティングノードが未使用状態でありかつ/または他の場合において余剰能力ユーザ150によって多様な様態で利用可能であることを決定し得る。例えば、いくつかの実施形態において、PESSM110は、多様なユーザおよび/またはエンティティから、1つ以上のコンピューティングノードが現在用いられていないかまたは他の場合において余剰能力ユーザによって利用可能である旨を示す通知を受信し得る(例えば、1つ以上の専用能力140ユーザがこれらのユーザによって専用使用されるコンピューティングノードのうち一定数および/または一部を用いていない旨を示す通知)。いくつかのこのような実施形態において、このような専用能力ユーザは、専用コンピューティングノードが専用能力ユーザによって未使用状態として提供される可能性が高い時期または未使用状態が明言される時期ならびに/あるいは利用可能となる1つ以上の時期(例えば、特定の日時、特定の日数、期間)を示し得る。加えて、いくつかの実施形態において、1つ以上の他のユーザ160は、類似の様態で相互作用して、1つ以上のコンピューティングノード(例えば、1つ以上の他のユーザ160(例えば、サードパーティコンピューティングシステム、図示せず)の制御下にある1つ以上のコンピューティングノード)が余剰能力ユーザによって利用することが可能である旨を通知し得る。
他の実施形態において、PESSM110は、例えばコンピューティングノード120のうち一部または全てを監視して、コンピューティングノードが利用されていない時期を決定することおよび/またはこのようなコンピューティングノードの1人以上のユーザ(例えば、専用能力ユーザ140、可変能力ユーザ130、他のユーザ160)の使用量パターンを追跡することにより、コンピューティングノードが余剰能力ユーザによって利用可能である時期を自動的に決定することができる。いくつかのこのような場合において、コンピューティングノードが未使用状態であるかまたは他の場合において十分に利用されていないかを決定するステップは、1つ以上の余剰能力ユーザのプログラムを実行するのに十分な少なくとも一定の期間にわたってコンピューティングノードが未使用状態である可能性を決定および/または予測するステップを含み得る。前記決定および/または予測するステップは、例えば、1人以上のユーザによる前記コンピューティングノードの過去の利用パターンの分析に基づいて、行われる。多様な実施形態において、1つ以上の余剰能力ユーザのプログラム実行に十分な期間は、1つ以上の制約に基づき得る(例えば、ユーザを代表するか、そのためにプログラムを停止/開始する時間、利用されるコンピューティングノードを構成する時間、余剰能力ユーザを代表するか、そのために実行されるプログラムの種類(例えば、いくつかの種類のプログラムは、有用な量の仕事を短期間内において行い得(例えば、多様な種類のデータ処理)、他のプログラムは、有用な結果を得るまでにより長い期間を必要とする)。
1つ以上のコンピューティングノード120が1つ以上の余剰能力ユーザ150によって利用可能であると決定された後、このようなコンピューティングノードは、利用可能な余剰プログラム実行能力の一般的なプールに付加され得、かつ/または、他の場合において1つ以上の私的余剰能力プールの一部として追跡され得、これにより、コンピューティングノードの他の用途が(例えば、専用能力ユーザ140、可変コンピューティングユーザ130、および/または1つ以上の他のユーザまたはエンティティ160による優先使用)発生するまで、前記1つ以上のコンピューティングノードは、対応する余剰能力ユーザ150を代表するか、そのためにプログラム実行を行うためにPESSM110によって利用可能となる。PESSM110は、余剰能力コンピューティングノードのうち1つ以上が余剰能力ユーザ150によって多様な様態で多様な実施形態において利用される必要がもはや無くなったと決定し得る。例えば、いくつかの実施形態において、PESSM110は、1つ以上のコンピューティングノードがもはや利用不能となったという通知を受信し得る(例えば、これらのコンピューティングノードを制御しているユーザ160からの前記コンピューティングノードの利用を停止せよとの明示的な要求、優先ユーザのプログラムを1つ以上のコンピューティングノード上において実行せよとの要求、指定利用可能期間の期限切れなどに基づいたもの)。別の例として、いくつかの実施形態において、PESSM110は、例えば、1人以上のユーザから受信された要求のうち他の用途に基づいた要求に基づいてまたは1つ以上のコンピューティングノード120についての需要可能性に基づいて(例えば、コンピューティングノードが用いられ得る他のリソースおよび/またはプログラムの使用量の増加の検出に基づいて)、コンピューティングノードの他の用途を自動的に決定することができる。
いくつかの実施形態において、余剰能力ユーザ150は、PESSM110と相互作用して、指定された数の余剰コンピューティングノード上における1つ以上のプログラムの即時実行を要求し、かつ/または、1つ以上の将来の時間におけるこのような実行を予定し得、これにより、PESSM110は、前記指定された数の余剰コンピューティングノードが前記要求された実行時間において利用可能であると決定された場合、前記指定された数の余剰コンピューティングノード上における前記要求された実行を開始することができる。前記指定された数の余剰コンピューティングノードが前記時間において利用可能であるかを決定するステップは、前記ユーザの私的余剰能力プールが(少しでも存在する場合に)前記指定された数の余剰コンピューティングノードを含むか否かを第1に考慮するステップと、これらの余剰コンピューティングノードが利用可能である場合、これらの余剰コンピューティングノードを利用対象として選択するステップとを含み得る。前記指定された数の余剰コンピューティングノードのうち一部のみしか前記ユーザのための私的余剰能力プール中において利用できない場合、いくつかの実施形態において、PESSM110は、前記要求を部分的に満たすために利用するためのものとしてこれらの私的余剰コンピューティングノードを選択し、残りの余剰コンピューティングノードを一般的な余剰能力プールから入手しようとするか、または、他の様態で進行し得る(例えば、利用可能な私的余剰コンピューティングノードのうちの前記一部のみを用いて前記要求を満足するか、前記私的余剰能力プールが前記指定された数の余剰コンピューティングノード全てを含んでいないため、前記要求が失敗に終わった旨を通知するか、一般的な余剰能力プールからの余剰コンピューティングノードのみを用いて前記要求を満たすことを試行する)。加えて、いくつかの実施形態において、余剰能力ユーザ150は、PESSM110と相互作用して、指定された数の余剰コンピューティングノード上における1つ以上のプログラムの実行に関する要求が、前記1つ以上のプログラムの実行のためにこのような余剰コンピューティングノードが利用可能となったとき(例えば、指定された将来の時期)に実行されるように構成することができる。いくつかのこのような実施形態において、PESSM110は、前記指定された数の余剰コンピューティングノードが前記期間において利用可能となったと決定した場合、前記要求された実行を前記指定された数の余剰コンピューティングノード上において開始し得る。いくつかの実施形態において、余剰能力ユーザ150は、要求された実行を行う際に用いられるべき最小数および/または最大数の余剰コンピューティングノードを指定し得、これにより、PESSM110が少なくとも前記最小数の余剰コンピューティングノードが(私的余剰能力プールからのものおよび/または一般的な余剰能力プールからのものに関わらず)利用可能であると決定した場合に、前記要求された実行が開始され得、PESSM110は、前記余剰コンピューティングノードの利用可能性に基づいて、前記要求に関する余剰コンピューティングノードの最大数(ただし、指定されている場合)まで、前記要求された実行を開始し得る。
余剰能力ユーザ150のための1つ以上のプログラムの実行についての要求が受信された後、PESSM110は、適切な数のコンピューティングノードと、前記要求された実行を満たすための十分なコンピューティングリソース(私的余剰能力プールからのものおよび/または一般的な余剰能力プールからのものに関わらない)とが存在すると決定した場合、前記PESSMは、前記要求された実行を多様な様態で行うために用いられるべき利用可能なコンピューティングノードを選択し得る。例えば、いくつかの実施形態において、前記PESSMは、適切な数の余剰コンピューティングノードを、十分なリソースを備えた利用可能なコンピューティングノードのうち任意のものから単に選択し得る(例えば、利用可能なコンピューティングノードのプールからランダム選択する)。他の実施形態において、1つ以上の特定のコンピューティングノードが、1つ以上の他の要素(例えば、1つ以上の特定のコンピューティングノードの利用可能性の継続の予測される長さおよび/または可能性、前記1つ以上の特定のコンピューティングノードと、1つ以上の他のコンピューティングノードとの間の物理的近接度、前記1つ以上の特定のコンピューティングノードおよび/または1つ以上の他のコンピューティングノードの地理的位置)に基づいて選択され得る。さらに、1つ以上の特定のコンピューティングノードが特定のユーザによる専用利用対象として指定されている場合、これらの特定のコンピューティングノードは、当該特定のユーザのための私的余剰能力プールの一部としてのみ用いられ得る。
上記したように、余剰コンピューティングノード上における余剰能力ユーザのためのプログラム実行を一時的なものとすることができるため、前記余剰コンピューティングノードについて他の好適な用途が発生した場合(例えば、専用コンピューティングノードを今まで用いていなかった専用能力ユーザ140が前記余剰コンピューティングノードを再要求した場合)、PESSM110は、このようなプログラムを自動的に終了させることができる。このような場合、これらの余剰コンピューティングノードのうちいずれかの上において余剰能力ユーザ150を代表するか、そのためにプログラム実行が現在行われている場合、これらのプログラムを自動的に終了させることができ(例えば、アボート、シャットダウン、休止)、これにより、前記コンピューティングノードは他の目的のために自由に利用可能となり、そのため余剰能力ユーザのために利用できなくなる。加えて、別に詳述するように、いくつかの実施形態において、これらのプログラムの実行状態を保存した後終了させることが可能であり、これにより例えばプログラムを後で再開させることが可能となる。さらに、いくつかのこのような実施形態において、前記数のコンピューティングノードを他の目的のために満たすことが可能な余剰能力ユーザ150を代表するか、そのためにプログラムを現在実行している複数の余剰コンピューティングノードが存在し得、このような場合、PESSM110は、多様な要素に基づいて(例えば、先ずユーザの私的余剰能力プールからの余剰能力コンピューティングノードを専用能力用途のために前記ユーザからの要求を満たすために用いるよう再要求するかまたは例えば提出された時間または入札価格などに基づいた余剰能力ユーザの現在の要求のうち決定された優先を用いることにより)、前記余剰コンピューティングノードのうち他の目的のために自由に利用可能であるものを決定することができる。いくつかの実施形態において、前記終了したプログラムのうち少なくとも一部の実行を1つ以上の他の利用可能な余剰コンピューティングノード(少しでも存在する場合)上において例えば即時的にまたは後で移転および/または再開可能にすることができる。いくつかのこのような場合において、プログラムを実行しているか(またはプログラム実行を要求している)現在の余剰能力ユーザ150全員を満足させるために利用可能な余剰コンピューティングノードが不足している場合、PESSM110は、1つ以上の他の余剰コンピューティングノード上において実行している1つ以上のさらなるプログラムを終了させることを決定することができ、その結果、前記特定のコンピューティングノード上において実行していた先に終了された1つ以上のプログラムを、新規に利用可能となった余剰コンピューティングノード上において再開させることができる(例えば、余剰能力ユーザの決定された優先に基づいて再開させることができ、これにより、1つ以上の特定のコンピューティングノード上において実行されていた先に終了されたプログラムと関連付けられた要求は、前記1つ以上のさらなるプログラムと関連付けられた要求のうち少なくとも一部よりも優先される)。いくつかの実施形態において、PESSM110は、ユーザのプログラムを自動終了させた後、余剰コンピューティングノードが前記ユーザのためのプログラム実行のために利用可能となったとき、前記プログラムの実行を自動的に再開させることができる。加えて、他の実施形態において、ユーザの少なくともいくつかの終了されたプログラムを、1つ以上の他のコンピューティングシステムおよび/またはプログラム実行サービス上において、前記プログラムの実行において利用することが可能な十分なコンピューティングリソース(例えば、可変能力ユーザ130へと提供された可変能力機能を介して利用可能な1つ以上のコンピューティングノード、専用能力ユーザ140へと提供された専用能力機能、および/またはPESの外部の1つ以上のサードパーティコンピューティングシステム(図示せず))によって自動的に移転および/または再開させることができる。
加えて、多様な種類のプログラムが、このような余剰能力プールによって提供されるような一時的実行環境における実行により適している(例えば、突発的終了に起因する予期せぬ干渉に比較的耐えるプログラム)。いくつかの実施形態において、余剰能力ユーザは、進捗(例えば、中間結果、現在のランタイム状態)を間欠的に追跡および/または保存するように設計された余剰プログラム実行能力上において1つ以上のプログラムを実行することができ、これにより、前記プログラムを将来の時間において再開して、活動を再開することができる。加えて、いくつかの実施形態において、PESSM110が余剰コンピューティングノード上で実行しているプログラムを自動終了すると、PESSM110は、現在のシステムおよび/またはプログラム実行状態を自動検出することができ、これにより、前記検出された状態を各余剰能力ユーザ150へと保存および/または提供しておいて、前記プログラムが自動終了したときと同様の状態でプログラム実行を後で再開することが可能になる。あるいは、特定の実行プログラムが自身の実行状態を保存することができる場合、PESSM110は、前記プログラムを終了させる前に、前記プログラム自身の実行状態保存を行うように前記プログラムに通知することができる。プログラム実行状態の保存の例示的実施形態に関するさらなる詳細について、米国特許出願第12/334,004号(出願日:2008年12月12日、名称:「Saving Program Execution Program State」)中に記載がある。同文献全体を参考のため援用する。
上記したように、少なくともいくつかの実施形態において、私的余剰能力プールを有するユーザは、(例えば、他の任意のユーザから余剰能力要求が来る前に前記ユーザからの任意の余剰能力要求を実行するように)前記私的余剰能力プール中の任意のプログラム実行能力への優先アクセスを受信するが、このような私的余剰能力プールが、私的プールのために関連付けられたユーザによって現在用いられていない余剰能力を含む場合、前記現在利用可能な余剰能力は、一般的な余剰能力プールを介して他のユーザが一時的に利用できるようにされる。加えて、複数の余剰能力ユーザ150のためのプログラム実行を行うための一般的な余剰能力プールから余剰コンピューティングノードへのアクセスは、少なくともいくつかの実施形態において、余剰能力ユーザ150間の優先に基づき得、これにより、プログラム実行に関する2つ以上の要求間の余剰コンピューティングノードにおいて一定量の競合がある場合、関連付けられた優先度がより高い要求に対し、前記競合する量の余剰コンピューティングノードをプログラム実行のために用いるためのアクセスが付与される。少なくとも1つの例示的実施形態において、最高入札額(例えば、最高入札)の要求が入札額の低い要求よりも優先され得、入札額間の関係は、他の要素(例えば、より早期に受信された要求)に基づいて解消される。いくつかの実施形態において、余剰能力ユーザ150のうち1つ以上は、PESSM110の実施形態と相互作用して、一般的な余剰能力プールの1つ以上の利用可能な余剰コンピューティングノード(例えば、現在利用可能なおよび/または1つ以上の将来の時間において利用可能な)へのアクセスについて(例えば、オークションスタイルで)入札し得、これにより、落札した入札ユーザは、1つ以上の利用可能な余剰コンピューティングノードへのアクセスを受けることができる。いくつかの実施形態において、PESSM110は、1つ以上の余剰コンピューティングノード上におけるより優先順位の高い要求のプログラム実行に従って、余剰コンピューティングノードのうち1つ以上の上で現在実行しているより低い優先要求と関連付けられたプログラム実行を自動終了させる。いくつかの他の実施形態(例えば、非優先的実施形態)において、PESSM110は、係属中の要求を場合によって循環して余剰コンピューティングノード上においてプログラム実行を行うことができ、これにより、余剰コンピューティングノードのうち1つ以上の上において一定の実行時間を各要求へと付与することができる。
いくつかの実施形態において、PESSM110は、PESSM110と相互作用している余剰能力ユーザ150のうち1つ以上に対して双方向フィードバックを提供することができ、これにより、一般的な余剰能力プールの一定量の余剰コンピューティングノード上におけるプログラム実行を構成および/または要求することができる。例えば、いくつかのこのような実施形態において、双方向フィードバックは、例えば、現在の需要および/または予測される需要、現在の余剰コンピューティングノードの量および/または余剰コンピューティングノードのあり得る量、1つ以上の入札レベルなどに基づいた、指定された量の余剰コンピューティングノード上において要求されたプログラムが実行される時期および/または長さについての通知を含み得る。1つの例示的実施形態において、PESSM110は、提案される入札レベルと、対応する情報とを含み得る。前記対応する情報は、要求された実行が発生しそうな時期および/または完了しそうな時期を示す。このような情報により、(例えば、異なる入札額、異なる量および/または種類のコンピューティングノード、異なる実行長さ)、余剰能力ユーザの希望を満たすための要求を指定することにより、余剰能力ユーザ150を再構成することが可能となる。その結果、前記要求を例えばより早期に行うことが可能となる。
上記したように、余剰能力ユーザ150に対し、余剰プログラム実行能力の利用と関連して多様な料金を課金することができる。このような課金は、例えば、ユーザのために用いられている余剰プログラム実行能力が当該ユーザのための私的余剰能力プールの一部であるかに基づいて、利用されているコンピューティングノードの数量および/または1つ以上の利用要素(例えば、用いられた時間数、消費された共有リソース量、時間コンピューティングノードの使用量など)に基づいてかつ/またはコンピューティングノードの利用についての1つ以上の余剰能力ユーザ150からの1つ以上の入札に基づいて行うことができる。いくつかの実施形態において、一般的な余剰コンピューティング能力プールを利用する1つ以上の余剰能力ユーザ150に課金される料金のうち一部を、前記一般的な余剰能力プール中のコンピューティングノードを提供した1つ以上の他のユーザへと提供することができる(例えば、1つ以上の専用能力ユーザ140、1つ以上の他のユーザ160)。例えば、いくつかの実施形態において、このような他のユーザに対し、余剰能力ユーザから収集された料金のうち比例する一部が支払われ得る(例えば、その他のユーザによって経時的に貢献されるコンピューティングノードの量を反映する比例する額)。いくつかの場合において、他のユーザに供給されるこのような料金は、これらの他のユーザに起因して発生する他の課金(例えば、専用能力ユーザに起因して発生する課金)を相殺するように、PESプロバイダによって自動的に貸方記入されるかおよび/または前記他のユーザへと支払われ得る。
加えて、いくつかの実施形態において、PESSM110は、電子市場(図示せず)を1つ以上の専用能力ユーザ140へと提供することができ、これにより、1つ以上の専用能力ユーザ140は、前記専用能力の使用期間において、自身の専用コンピューティングノードへのアクセスを1つ以上の他のユーザ160へと移転させることができる。他の実施形態において、専用能力ユーザ140および別のユーザ160は、PESの外部において入れ替えて配置され得る。いくつかの実施形態において、ユーザ160は、専用能力ユーザの専用コンピューティングノードの移転された部位へのアクセスの対価として支払いを専用能力ユーザへと提供し得、これにより、購入したユーザは、前記専用プログラム実行能力の移転された部位へとアクセスして、前記購入したユーザを代表するか、そのためにプログラム実行を行うことができる。交換のために提供されるアクセスの価格は、例えば専用能力ユーザが指定した固定価格またはユーザ160が提案した入札価格を介して、多様な実施形態において多様な様態で決定することができる。いくつかの実施形態において、専用コンピューティングノードのための交換は、当該交換が一時的でありかつ/または永久となるように、行われ得る。例えば、いくつかの実施形態において、交換は、指定された一定期間にわたっておよび/または多様な時間間隔にわたって行われ得、これにより、購入したユーザは、当該指定された期間にわたっておよび/または多様な間隔にわたってコンピューティングノードへアクセスすることができ、その後、前記専用コンピューティングノードは、前記専用能力ユーザによって用いられるよう前記専用能力ユーザへと戻り得る。他の実施形態において、前記交換は永久であり得、その場合、購入したユーザは、専用コンピューティングノードと関連付けられた残りの利用期間全体にわたって前記専用コンピューティングノードへアクセスすることができる。いくつかの実施形態において、加入した専用能力ユーザ140による専用使用のための1つ以上のコンピューティングノードの初期割り当ての一環として、PESSM110は、1人以上のユーザトークンを加入ユーザへと割り当て得、かつ/または、割り当てられたコンピューティングノードを他の場合において加入専用能力ユーザのアカウントと関連付け得、これにより、前記専用能力ユーザによるコンピューティングノードの利用を多様な目的のために追跡することが可能となる(例えば、構成、認証、課金)。このような実施形態において、専用能力ユーザが自身の専用コンピューティングノードのうち一部を新規ユーザへと移転させた場合、任意の提供されたトークンを前記新規ユーザへと移転させることができ、かつ/または、前記コンピューティングノードの一部を他の場合において前記新規ユーザのアカウントと関連付けることができる。いくつかの実施形態において、PESSM110のプロバイダは、専用コンピューティングノードの一部のユーザ間での移転と関連して、さらに料金を収集し得る。
上記の図1Aの例示的実施形態について、多様な種類の機能を多様な種類のユーザ(例えば、可変能力ユーザ、専用能力ユーザおよび余剰能力ユーザ)のために提供するPESを用いて説明したが、多様な他の実施形態(例えば、多様な種類のユーザのうち1つ以上を用いるかまたは用いない実施形態)も存在し得ることが理解される。例えば、いくつかの実施形態において、プログラム実行サービスは、余剰能力ユーザのための機能は提供するが、可変能力ユーザおよび/または専用能力ユーザは含まない場合があり得る(例えば、1つ以上のサードパーティおよび/またはPESと関連付けられたアフィリエイトエンティティによって余剰プログラム実行能力が提供され、これにより、このようなパーティおよび/またはエンティティは、他の場合において未使用状態であるコンピューティングリソースを収益化することができる)ことが理解される。加えて、当該サービスによって提供されるプログラム実行能力全てに一時的に基づいてプログラム実行を行うための要求をユーザが提出しかつ/または予定することを可能にする入札ベースのPESと関連して上記技術のうち一部を用いることも可能であり、その場合、実行時における優先レベルの高い要求が実行される。加えて、多様なユーザ130、140、150および160はそれぞれ、他の多様なユーザのうち1つ以上として時に機能することができることが理解される(例えば、これらのユーザが、これらの他の多様なユーザに対応する種類の関連付けられた機能にアクセスする場合(例えば、専用能力ユーザ140が余剰能力ユーザ150として時に機能し、これらのユーザが未使用状態である専用能力に基づいて私的余剰能力プールを利用する場合))。別の例として、いくつかの実施形態において、専用プログラム実行能力上のプログラム実行を行う専用能力ユーザとして機能する特定のユーザは、オンデマンド可変能力ユーザとしても機能することができる(例えば、特定のユーザが、各ユーザのための1つ以上のプログラムの実行のためにさらなるコンピューティングリソースを必要とする場合)。
加えて、少なくともいくつかのさらなる実施形態において、コンピューティングノード120のうちの1つの未使用状態である部位(例えば、未使用状態である処理ユニットクロックサイクル、メモリの未使用状態部位)を1つ以上の余剰能力ユーザ150によって利用可能とすることができ、これにより、前記1つ以上の余剰能力ユーザの1つ以上のプログラムが、単一のコンピューティングノードのリソースを専用能力ユーザ140および/または他の余剰能力ユーザ150と共有することができる。加えて、いくつかの実施形態において、専用能力ユーザ140の利用対象として割り当てられたコンピューティングノードのうち少なくとも一部を、1つ以上の可変能力ユーザ130によって利用可能とすることができる(例えば、このようなアクセスに起因する専用能力ユーザへの影響は無い可能性が高いと決定された場合(例えば、将来の需要の正確な予測が可能である場合))。さらに、いくつかの実施形態において、1つ以上の専用能力ユーザ140によって専用として用いられるコンピューティングノードのうち一部が加入超過状態になっている場合(例えば、売れすぎでありかつ/または1つ以上の他の長期ユーザへと提供されている場合)において、これらのユーザが前記加入超過状態のコンピューティングノードの利用を要求しているために前記加入超過状態のコンピューティングノードを1つ以上の専用能力ユーザ140が利用することができない場合、前記加入超過状態のコンピューティングノード上で実行しているプログラムのうち1つ以上を1つ以上の他のコンピューティングノードへと移転させることができる(例えば、1つ以上の遠隔データセンターにおいて利用可能である1つ以上の他のコンピューティングノードおよび/または1つ以上のプログラムの実行のために利用可能な他のコンピューティングシステム(例えば、別のプログラム実行サービスによって提供されるコンピューティングシステム))。
加えて、いくつかの実施形態においてプログラム実行サービスおよびプログラム実行能力について記載しているが、上記記載の技術は、多様な他のコンピューティングノードグループまたは他の種類のコンピューティング関連リソースへのアクセスの管理にも利用可能であることが理解される。複数のユーザによって利用され得る他の種類のコンピューティング関連リソースの非限定的リストの例を以下に挙げる:永続的データ記憶能力(例えば、不揮発性メモリデバイス(例えば、ハードディスクドライブ)上のもの)、一時的データ記憶能力(例えば、揮発性メモリ(例えば、RAM)上のもの)、メッセージ待ち行列および/または通過能力、他の種類の通信能力(例えば、ネットワークソケット、仮想通信回路)、データベース管理能力、専用帯域または他のネットワークに関連するリソース、入力デバイス能力、出力デバイス能力、プロセッサ(例えば、CPU)サイクルまたは他の命令実行能力。例えば、ユーザは、1つ以上の通知された種類のコンピューティング関連リソースを使用することを要求し得、PESSMモジュールは、各通知された種類のリソースの量を自動的に決定し得る(このような自動決定は、例えば、前記要求中において前記ユーザが指定した明示的な数量または他の量に基づいて、特定のリソース種類と関連付けられた所定の量に基づいて、通知されたリソース種類の利用可能な量に基づいて行われ得る)。その結果、前記ユーザに対し、例えば第1の量の揮発性メモリおよび第2の量の永続的記憶が付与される。
図1B中に示す実施形態において、複数の物理的なコンピューティングシステムを含む1つ以上のデータセンターを用いてプログラム実行サービスが提供され得る。詳細には、図1B中に示す例示的実施形態において、プログラム実行サービスのPESSMモジュール180は、ユーザのための1つ以上のプログラムの実行を管理する。例示の例は、PESによって用いられるデータセンター170を含む。前記PESは、データセンター170の外部にあるインターネット196へと接続される。この例において、インターネット196は、私的ネットワーク194および他のコンピューティングシステム192を介した多様な外部コンピューティングシステム(例えば、コンピューティングシステム190)へのアクセスならびに1つ以上の他のデータセンター198にあるさらなるコンピューティングシステム(図示せず)へのアクセスを提供する。私的ネットワーク194は、例えば企業ネットワークであり得、私的ネットワーク194の外部にある非優先的コンピューティングシステムから全体的または部分的にアクセスが不可能である。コンピューティングシステム192を挙げると、例えば、(例えば、電話モデムまたはケーブルモデム、デジタル加入者線(「DSL」)などを介して)インターネットへと直接接続された家庭コンピューティングシステムがある。加えて、少なくともいくつかの実施形態において、1つ以上の他のデータセンター198はPESによってさらに用いられ得る。
例示的なデータセンター170は、複数の物理的なホストコンピューティングシステム175と、物理的なコンピューティングシステム182と、PESのPESSMモジュール180とを含む。この例において、ホストコンピューティングシステム175はそれぞれ、複数の仮想マシン177を提供し、仮想マシン(「VM」)マネージャコンポーネント179を有する。仮想マシン(「VM」)マネージャコンポーネント179は、これらの仮想マシン(例えば、ハイパーバイザまたは他の仮想マシンモニタ)を管理する。コンピューティングシステム182のうち一部または全体も、同様に1つ以上のこのような仮想マシンおよび/またはVMマネージャコンポーネント(図示せず)を持ち得る。あるいは、他の実施形態において、データセンターにおける物理的なホストコンピューティングシステムのうちの一部または全ては、任意の仮想マシンを提供せず、その代わりに、PESのエンドユーザ顧客を代表するか、そのために1つ以上のプログラムを直接実行する。さらに、いくつかの実施形態において、多様なコンピューティングシステム175および182は、異なる能力を持ち得、異なる関連付けられた利用料金を持ち得、異なる種類のユーザプログラム(例えば、異なるサイズの仮想マシンソフトウェア画像インスタンス、または異なる種類のリソース基準および/またはコンピューティングリソース使用量プログラム(例えば、異なるパターンのI/Oおよびメモリアクセスおよびネットワーク使用量))をサポートし得る。このようなサポートが可能な場合、1つ以上のこのような要素に従って、特定のユーザおよび/またはそのプログラムを(例えば自動的に)グループ分けすることができる。前記グループ分けされたユーザおよび/またはそのプログラムを、特定のプログラムの実行のために用いられるコンピューティングシステムの選択において用いられる制限事項および/または選好事項としてさらに用いることができる。例示的データセンター170は、内部ネットワーク172をさらに含む。内部ネットワーク172は、複数のネットワーキングデバイス(図示せず)を含む(例えば、スイッチ、エッジルータ、およびコアルータ)。PESSMモジュール180を実行するコンピューティングシステム175および182ならびに1つ以上のコンピューティングシステム(図示せず)は、内部ネットワーク172へと接続される。
例示のPESSMモジュール180は、他により詳細に説明するように、上記した技術のうち少なくともいくつかを行って、コンピューティングシステム175および182を用いたプログラム実行を管理する。特定のコンピューティングノードまたはシステムが、ユーザの1つ以上のプログラムを実行するために選択されると、いくつかの実施形態において、PESSMモジュールは、選択されたコンピューティングノード/システムのためのプログラム実行を制御するVMマネージャコンポーネントまたは他のマネージャコンポーネントと相互作用することにより、これらのプログラムの実行を開始することもできるし、あるいは、選択されたコンピューティングノード/システム上のプログラムを直接実行することもできる。PESのユーザは、多様なコンピューティングシステムを用いて、PESSMモジュール180(例えば、コンピューティングシステム190または192、または他のデータセンター198のうちの1つにおけるコンピューティングシステム)と相互作用することができる。
図1Bのデータセンターはひとえに例示目的のために記載されたものであり、他の実施形態において、プログラム実行サービスおよび他のソフトウェア実行サービスを他の様態で利用することが可能であることが理解される。例えば、PESSMモジュール180は、データセンター170の外部にある1つ以上の他のコンピューティングシステム(例えば、コンピューティングシステム190、192)またはデータセンター198にあるものを用いて提供され得る。他の実施形態において、PESは、任意のデータセンターを用いて提供され得る。
図2Aおよび図2Bは、余剰コンピューティングノードの利用を管理するための技術の例を示す(例えば、PESSMモジュールの実施形態によって自動実行され得るもの)。詳細には、図2Aは、一般的な余剰コンピューティング能力プールからの余剰コンピューティング能力の利用要求の受信および取り扱いの例を示す。図2A中の例示的ユーザは、関連付けられた私的余剰コンピューティング能力プールを有しない。図2Bは、図2Aの例からの続きであるが、前記ユーザのうちの1つが私的余剰コンピューティング能力プールを持っており、多様な要求の取扱は、私的余剰コンピューティング能力プールの利用を含む。
図2Aを参照して、表200は、プログラム実行サービスの多様なユーザが時間205と共にプログラム実行サービスの複数のコンピューティングノード210を利用した際の利用量に関する情報を示す。各コンピューティングノード210の利用が、逐次的時間間隔205a〜205oにおいて例示される。加えて、表250は、プログラム実行サービスの一般的な余剰コンピューティング能力プールの余剰コンピューティングノードを用いてユーザのためのプログラムを実行するためのプログラム実行サービスによって受信される例示的要求A、B、CおよびDに関する情報を示す。例示の表200中において、陰影付部分は、以下のように用いられる:灰色一色の背景で示された時間間隔(例えば、専用コンピューティングノード212bの時間間隔205aおよび他のコンピューティングノード214aの時間間隔205h)は、上記各時間間隔内において各コンピューティングノードを余剰プログラム実行能力のために用いることができないことを示す(例えば、各コンピューティングノードは、1つ以上の他の目的のために用いられておりかつ/または他の場合において利用不可能である)、白色一色の背景で示された時間間隔(例えば、専用コンピューティングノード212cの時間間隔205bおよび205c)または斜線で示された背景で示された時間間隔(例えば、専用コンピューティングノード212bの時間間隔205fおよび他のコンピューティングノード214bの時間間隔205o)は、各時間間隔において各コンピューティングノードが余剰プログラム実行能力として利用可能であることを示す、A、B、CまたはDの文字を含む時間間隔(例えば、専用コンピューティングノード212aの時間間隔205f〜205k)は、余剰プログラム実行能力に関する各要求のプログラムが、前記時間間隔内において各コンピューティングノード上において実行されることを示す。1つの例示的例として、各時間間隔205a〜205oは、1時間に対応するか、または、他の時間間隔に対応する(例えば、1日、10分間)。
上記したように、表250は、多様な指示時間においてプログラム実行サービスが受信する多様な要求を示す。前記多様な要求はそれぞれ、コンピューティングノード210を用いてプログラム実行サービスから利用可能な指定量の余剰コンピューティングノード上において1つ以上のプログラムを実行することである。加えて、前記要求はそれぞれ、多様な指定構成情報を有する(この例において例を挙げると、前記要求の1つ以上のプログラムを実行するための、指定された最小数および最大数のコンピューティングノード、コンピューティングノードそれぞれの上における1つ以上のプログラムの実行のためにユーザが快く支払える入札料金額(例えば、単一のコンピューティングノードの1時間の利用あたりの金額(ドル))、当該要求が期限切れとなる指定時期(例えば、経過後は要求が期限切れとなる、指定された合計実行時間、要求が期限切れとなる指定時間)。1つの例示的例として、要求Aは、時間間隔205cにほぼ対応する時期において受信された(例えば、時間間隔205cの直前または時間間隔205cの最中)、最小数および最大数のコンピューティングノードはどちらとも、単一の余剰能力コンピューティングノード上において実行されるべき選好事項を示す(例えば、入札価格として、単一の余剰コンピューティングノードが利用される1時間あたり$0.05が指定され、期限切れは指定されていない(例えば、プログラム実行が完了するまで当該要求が継続的に実行および/または再実行することを示す))。この例において、コンピューティングノード210は全て、ほぼ同一の量またはまったく同一の量のコンピューティング能力を時間間隔あたりにおいて提供することができ、他の実施形態において、標準的量のプログラム実行能力を他の様態で指示することもできる(例えば、このような指示は、特定の量のコンピューティングリソースに対応する論理「コンピューティングノード」手段を用いて、および、提供される論理「コンピューティングノード」の数としての特定の実際のコンピューティングノードの評価として行うことができる)。他の実施形態において、多様な要求を多様な様態で構成することができる(例えば、利用対象としての指定された特定の種類のコンピューティングノードのうち1つ以上(例えば、および/またはこのようなコンピューティングノードの特性)、最小入札額および/または最大入札額、ならびに/あるいは1つ以上の他の構成(例えば、耐故障要求、実行局所性および/または近接選好事項))。加えて、いくつかの実施形態において、他の種類の情報を示すこともできる(例えば、各要求について実行されるべき1つ以上の特定のプログラム、当該要求における、凝集コンピューティングノード時間間隔の合計)。
例示の表200は、複数の専用能力コンピューティングノード212を含む(例えば、プログラム実行サービスの1つ以上の特定の専用能力ユーザへの専用アクセスのために割り当てられたコンピューティングノード)。例示の表200はまた、複数の他のコンピューティングノード214も含む(例えば、他の種類のプログラム実行能力(例えば、オンデマンド可変プログラム実行能力)のために利用することが可能なコンピューティングノード)。例えば、専用能力ユーザ(図示せず)は、指定期間(例えば、1年間)において、特定のコンピューティングノード212aへの優先アクセスを持ち得、これにより、ユーザは、自身のためのプログラムを実行するためのコンピューティングノード212aへのアクセスを前記指定期間内における任意の時期を行うことができる。このようなアクセスにおいては、遅延期間および/またはユーザ側におけるアクセス獲得のための1つ以上の相互作用が発生し得る(例えば、コンピューティングノード212aを特定の時期において利用する意図を示す通知、コンピューティングノード212a上におけるプログラム実行要求)。他の実施形態において、専用能力ユーザ(図示せず)は、コンピューティングノード212a(例えば、相当する処理能力、メモリ)としての相当するコンピューティングリソースを有するコンピューティングノードへの優先アクセスを持ち得るが、特定の割り当てられたコンピューティングノード212は持っていない。その場合、ユーザに対し、ユーザのためのプログラム実行のための212aに相当しかつ利用可能であるコンピューティングノード212のうち任意のものへのアクセスが付与され得る。多様なこのような実施形態において、プログラム実行サービスは、212aに相当する十分な数の専用コンピューティングノードが、このようなコンピューティングノードへのアクセスを持ち得る専用ユーザによって利用可能であることを、多様な様態で保証することができる(例えば、このようなコンピューティングノードのグループの維持および/または他の場合において特定の量のこのようなノードの予約)。
表200中において、間隔205a〜205cにおいて、例えばコンピューティングノード212cが割り当てられている専用能力ユーザが専用コンピューティングノード212cが未使用状態であると決定したため、専用コンピューティングノード212cが余剰能力であると決定されており、その結果、専用コンピューティングノード212cが余剰能力ユーザによって利用可能となる。例えば、専用能力ユーザは、プログラム実行サービスと相互作用して、例えば時間間隔205aよりも前の時期においてコンピューティングノード212cが余剰プログラム実行能力のために利用可能となっていることを通知し、あるいは、プログラム実行サービスがコンピューティングノード212cが未使用状態であると自動的に決定している場合もある。例示の例において、例示のコンピューティングノードのうちその他全て(例えば、212a〜212b、212d、および214a〜214b)は、間隔205a〜205cにおいて利用可能であると決定されていない。時間間隔205cにおいて、要求Aが受信され、プログラム実行サービスは、要求Aと関連付けられたプログラムを利用可能な余剰能力コンピューティングノード212c上においてユーザが指定した$0.05/時間の料金で実行することを決定し、コンピューティングノード212c上においてプログラム実行を開始する。他の実施形態において、あるいは、プログラム実行サービスは、一部のまたは全部の余剰能力ユーザが利用する固定価格を用い得る。
時間間隔205dにおいて、プログラム実行サービスは、余剰プログラム実行能力要求を満たすためにコンピューティングノード212cを利用することがもはやできないことを決定する(例えば、このような決定は、前記コンピューティングノードの利用を再請求している専用能力ユーザから受信された通知に基づく)。その後、要求Aと関連付けられたプログラムの実行は、コンピューティングノード212b上において終了される。間隔205fにおいて、プログラム実行サービスは、2つのコンピューティングノードが要求Aを実行するための十分なリソース(例えば、専用コンピューティングノード212aおよび212b)と共に余剰能力コンピューティングノードとして利用可能であると決定し、要求Aのプログラムの実行を専用コンピューティングノード212a上において再開することを決定する。図示の実施形態において、専用コンピューティングノード212bについての時間間隔205f中の斜線は、前記時間間隔においてノード212bが余剰コンピューティング能力として利用可能であるが、余剰コンピューティング能力としての用途には不適切であるため、要求Aを満足するために選択されていない旨を示す。コンピューティングノード212bは、多様な理由に起因して不適切である(例えば、(以前の利用履歴または利用予測などに基づいて)プログラム実行サービスが割り当てられた専用能力ユーザからの通知に基づいて、コンピューティングノード212bの利用可能性の長さが短くかつ/または不確実である(例えば、プログラム実行サービスが決定した理由))。一方、ノード212aについて、利用可能性がノード212bよりも相対的に長い可能性が高いと決定される場合もある。このような状況において、プログラム実行サービスは、余剰能力ユーザの要求を実行するための利用可能性がもはや無くなったコンピューティングノードを選択するという選好事項を持ち得る(例えば、多様なコンピューティングノード210上における実行プログラムの開始/停止が必要であるための最小化のためのもの)。よって、この例において、コンピューティングノード212bは、時間間隔205fにおいて利用されず、別の余剰コンピューティング能力要求が時間間隔205fに先行して受信された場合、ノード212bは、当該他の要求に起因して用いられる場合がある。
この例において、表250によって例示するように、要求Bは、間隔205gで受信される。この例において、そのときに利用可能な余剰コンピューティングノードは1つしか存在しない(例えば、専用コンピューティングノード212a)場合、プログラム実行サービスは、例えば要求A(例えば、$0.05/時間)よりも入札額がより高い要求B(例えば、$0.08/時間)または他の場合において優先レベルがより高い要求Bに基づいて、要求Bのプログラムの代わりに要求Aのためにプログラム実行を終了することを決定する。この例において、要求Bは、$0.08/時間の料金で時間間隔205g〜205iにわたって、専用コンピューティングノード212a上において連続的に実行される。時間間隔205iにおいて、2つのコンピューティングノードは、余剰コンピューティングノード(専用コンピューティングノード212aおよび212d)として利用可能であり、これらはそれぞれ、要求Bについてプログラム実行を行うための十分なリソースを有する。なぜならば、要求Bは、最大で2つのコンピューティングノードを指定しており、要求Bのプログラムは、図示の実施形態中のノード212a上に実行し続けており、同様にノード212d上において開始される。
時間間隔205jにおいて、3つの専用コンピューティングノードは、余剰能力コンピューティングノード(コンピューティングノード212a、212cおよび212d)として利用可能であると決定され、要求Cが受信される。この実施形態において、要求Bのプログラムが専用コンピューティングノード212dおよび212a上での実行から終了され、要求Cと関連付けられた1つ以上のプログラムが、最大で3つのノード上での実行と、要求Aおよび要求Bよりも相対的により高い入札額(例えば、$0.10/時間)とを有する指示選好事項を有する要求Cに基づいて、3つの利用可能な余剰コンピューティングノード全ての上において実行される。その結果、要求Aおよび要求Bよりも要求Cが優先される。時間間隔205kにおいて、例えば他の目的のために再請求されたかまたは他の場合において利用不可能となったコンピューティングノード212dに基づいて、2つの専用コンピューティングノードが余剰コンピューティングノード(コンピューティングノード212aおよび212c)として利用可能であると決定される。要求Cと関連付けられた1つ以上のプログラムは、コンピューティングノード212d上において終了されるが、例えば要求Cについての好適な最大数および最小数のコンピューティングノードに基づき、また要求Cは要求Aおよび要求Bよりも優先されるため、要求Cと関連付けられた1つ以上のプログラムは、ノード212aおよび212c上において実行し続けられる。要求Cのプログラム(単数または複数)は、時間間隔205lにおいてコンピューティングノード212c上において実行し続けるが、前記コンピューティングノードは余剰コンピューティング能力の用途において利用不可能となっているため、コンピューティングノード212a上における実行は終了する。時間間隔205l後において、プログラム実行サービスは、要求Cが少なくとも3時間にわたって時間間隔205j〜205lにおいて実行されたため期限切れとなったことを決定する。よって、前記プログラム実行サービスは、要求Cと関連付けられたプログラムの余剰能力コンピューティングノード上における実行を終了し、要求Cは、満足されるべき係属中の要求として取り扱われなくなる。時間間隔205mにおいて、1つのコンピューティングノード(専用コンピューティングノード212c)が余剰プログラム実行能力として引き続き利用可能であると決定され、要求Bと関連付けられたプログラムの実行がコンピューティングノード上において再開される。
時間間隔205mにおいて、(例えば、連続5時間の実行後に完了したプログラム(単数または複数)または要求Bを提出した余剰能力ユーザからの要求Bを取り消す旨の受信された命令(図示せず)に基づいて)要求Bについてのプログラム(単数または複数)の実行が終了し、要求Bは、満足されるべき係属中の要求として取り扱われなくなる。加えて、このときまたはこれに近いタイミングで、要求Dが受信される。要求Dは、以前に受信された要求Aに相当する入札額(例えば、$0.05/時間)を有する。この場合、プログラム実行サービスは、Dよりも早期に受信された要求Aに基づいて、(要求Dと関連付けられたプログラムではなく)要求Aと関連付けられたプログラムの利用可能な専用コンピューティングノード212c上における実行を次の時間間隔205nにおいて再開することを決定する。要求Aは、時間間隔205o後において何らかの未知の将来の時間が来るまで、ノード212c上において実行し続ける。間隔205oにおいて、他のコンピューティングノード214bのうち1つは、余剰プログラム実行能力として利用可能となり、不適切な余剰能力コンピューティングノードであると決定されるが、要求Dのプログラムはそれでも他のコンピューティングノード214b上において実行される。なぜならば、現在利用可能な余剰コンピューティングノードは他に無いからである。
図2Aの例示的例において、プログラム実行サービスは、多様な要求A〜Dに対応するコンピューティングノード210の使用量を追跡することができ、これにより、多様な関連付けられたユーザに対し、前記多様な要求によって示された入札額に対応する料金が課金される。加えて、前記プログラム実行サービスは、用いられたコンピューティングノード210および/または余剰能力ユーザによって利用可能となったコンピューティングノード210を追跡し得、これにより、これらのコンピューティングノードと関連付けられた1人以上のユーザに対し、余剰能力ユーザから収集された料金のうち一部を付与することができる。
図2Bは、図2Aの例を引き続き示すが、前記ユーザのうち1人は、私的余剰コンピューティング能力プールを有し、多様な要求の取扱には、前記私的余剰コンピューティング能力プールの利用が含まれる。図2Bは、図2Aにおけると同様、情報200および250を示すが、前記私的余剰コンピューティング能力プールの利用を以下に説明するように反映するために、一定の変更が含まれている。加えて、図2Aと比較して、新規情報260および270が図2Bにおいて追加されている。
詳細には、図2Bの例において、要求B(図2B中、RequesterB*と呼ぶ)を提出したユーザは、専用能力ユーザでもあり、情報270によって示すように、時間間隔205a〜205oを含む期間にわたるコンピューティングノード212aの専用使用が割り当てられている。よって、図2Bにおいて、コンピューティングノード212aの陰影付部分のうち平行線模様部分として変更されている部分は、コンピューティングノード212aの未使用状態である能力のうちRequesterB*について私的余剰能力プールとして利用可能であるものを反映する。この例において、コンピューティングノード212aについての時間間隔205a〜205eおよび205l〜205oは、RequesterB*によるコンピューティングノード212aの専用使用に対応する。よって、コンピューティングノード212aは時間間隔205f〜205kにわたってRequesterB*について私的余剰コンピューティング能力プールの一部として利用可能である。他にさらに詳述するように、RequesterB*からの要求は、私的余剰コンピューティング能力プールのための利用において優先される。
時間間隔205a〜205iにおける割り当ては、図2Bも図2Aも同じである。例えば、RequesterB*からの要求Bは、図2A中の一般的な余剰コンピューティング能力プールにおいて要求Aよりも優先される要求Bに基づいて、図2Aにおいて時間間隔205g〜205iにわたってコンピューティングノード212aを利用するように既に割り当てられており、よって、コンピューティングノード212aが図2B中の私的余剰コンピューティング能力プールのために利用された場合でも、これらの先行割り当ては変更されない。しかし、時間間隔205jにわたって要求Cが受信された後、図2B中の割り当ては、前記私的余剰コンピューティング能力プールの利用に基づいて、図2Aに対して変化する。詳細には、図2Aにおいて、要求Cは、一般的な余剰コンピューティング能力プールについて要求Aおよび要求Bよりも優先され、よって、図2A中の時間間隔205jにおいて利用可能な3つの余剰コンピューティング能力ノードは全て、プログラム(単数または複数)を要求Cについて実行することを開始する。しかし、図2Bを参照して、RequesterB*からの要求Bは、時間間隔205jにおいてRequesterB*の私的余剰コンピューティング能力プール中の余剰コンピューティング能力について最も高い優先順位を引き続き持ち、よって、要求Cについてのプログラム(単数または複数)も、図2B中の時間間隔205jにおいてコンピューティングノード212cおよび212d上において実行開始されるが、要求Bのついてのプログラム(単数または複数)は、図2Aの様態と異なる様態で、図2B中の前記時間間隔においてコンピューティングノード212a上において引き続き実行する。詳細には、RequesterB*からの要求は時間間隔205jにおいて利用可能であるため、当該要求(この例において、要求B)は、RequesterB*の私的余剰コンピューティング能力プールの一部であるコンピューティングノード212aの余剰コンピューティング能力について優先される。同様に、後続の時間間隔205kにおいて、要求Bについてのプログラム(単数または複数)が引き続き実行した場合、これらのプログラム(単数または複数)は、RequesterB*の私的余剰コンピューティング能力プールについて要求Cよりも優先される要求Bに基づいて、同じ理由によってコンピューティングノード212a上において引き続き実行している。しかし、この例において、要求Bは連続する5時間のプログラム実行後に終了するため、要求Bのプログラム(単数または複数)は、時間間隔205j後に終了する。よって、時間間隔205kにおけるコンピューティングノード212aのための余剰コンピューティング能力は、一般的な余剰コンピューティング能力プールへと戻り、要求Cのプログラム(単数または複数)は、時間間隔205kにわたってコンピューティングノード212a上において実行し始める。
よって、私的余剰コンピューティング能力プールを利用することにより、図2Bの例中のRequesterB*において多様な恩恵が得られる。例えば、第1の恩恵として、要求Bは、図2Bの例においてより早期に(詳細には、図2A中の時間間隔205mの終了ではなく図2B中の時間間隔205jの終了までに)完了する。加えて、図2Bの例中の第2の恩恵として、RequesterB*について、要求Bの動作は、図2A中の要求Bの動作よりもより安価に行われる。詳細には、図2Bの例において、RequesterB*による私的余剰コンピューティング能力プールの利用は、情報270に示すように専用コンピューティングノード212aの利用において必要となる漸増的な現在のコスト(この例において、$0.04/時間間隔)と同じレートでRequesterB*に課金される。よって、図2A中の要求Bの動作においては、要求Bについての連続する5時間のプログラム(単数または複数)の実行それぞれについて、要求Bに対し入札価格として$0.08/時間間隔(すなわち、各時間間隔について、専用コンピューティングノード212aの利用に必要となる漸増的な現在のコストの倍額)が必要となるのに対し、コスト情報260g〜260j中に示すように私的余剰コンピューティング能力プールが用いられた連続5時間のうち4時間における、図2B中において要求Bを行うコストは、$0.04/時間間隔に過ぎない。図2B中のコンピューティングノード212d上において一般的な余剰コンピューティング能力プールの一部として要求Bが実行されるその他の時間間隔においては、コスト情報260zに示すように、要求Bにおいて入札価格$0.08/時間間隔のコストが必要となる。よって、図2B中の要求Bを行うのに必要な合計コストは$0.24であり、図2A中の要求Bを行うのに必要な合計コストは$0.40である。余剰コンピューティング能力の利用量は限られているため、この例における絶対数は少数であるが、実世界の状況においてこのような余剰コンピューティング能力を大幅に増量させた場合、これに対応して実際のコスト節減額も大きくなる(例えば、利用量が1000倍で増加した場合、この例において、実際のコストは$4000ではなく$2400となるため、これに対応する節減額は−$1600である)ことが理解される。
さらに、他の状況において、図2Bの例よりもより低コストで要求Bを行うことができる。例えば、図2Bにおいて、要求Bのプログラム(単数または複数)が実行される連続5/時間のうち1時間(すなわち、合計連続実行時間のうち20%)は、一般的な余剰コンピューティング能力プールを用いて(すなわち、コンピューティングノード212dのための時間間隔205iを用いて)行われ、私的余剰コンピューティング能力プールからの利用可能な他の時間(すなわち、コンピューティングノード212aのための時間間隔205k)は用いられていない。よって、他の状況において、要求Bについてのプログラム(単数または複数)の実行は、要求Bのためのプログラム(単数または複数)の実行全てのための私的余剰コンピューティング能力プールを用い得、よって、当該実行全てについて私的余剰コンピューティング能力プールについてより低いコストが課金され得る。このような私的余剰コンピューティング能力プールの利用は、例えば、最大で1つのコンピューティングノードを指定している要求Bによってトリガされ得る(これにより、前記コンピューティングノードが利用可能である場合、私的余剰コンピューティング能力プールのみが用いられる)。あるいは、他の実施形態において、RequesterB*は、私的余剰コンピューティング能力プールの補充として用いられる一般的な余剰コンピューティング能力プールも利用するのではなく、要求B(または1つ以上の他の要求)がユーザの私的余剰コンピューティング能力プールのみを用いて実行されるべき旨を指定し得る。
加えて、いくつかの実施形態において、私的余剰コンピューティング能力プールを他の様態でさらに用いることで、他の恩恵を得ることができる。例えば、図2Bと同様の状況を考えるが、この状況において、要求Bは、一般的な余剰コンピューティング能力プールの利用について要求Cよりも優先される(例えば、要求Cの入札価格が$0.10ではなく$0.07である場合)。この場合、要求Bは、連続する5時間ではなく連続する6時間を用いて、そのプログラム(単数または複数)の実行を完了する。要求Bは、最大で2つではなく1つのコンピューティングノードを利用することを指定する。このような状況において、図2Bについて既述した割り当てスキームを用いて、要求Bは、時間間隔205iにおいて一般的な余剰コンピューティング能力からのコンピューティングノード212dを用いるために選択される(コンピューティングノードは最大1つであり、私的余剰コンピューティング能力プールを用いるという選好事項があるため)。これと同時に、要求Bは、時間間隔205kにおいて私的余剰コンピューティング能力プールからのコンピューティングノード212aを引き続き用いることを選択される。しかし、この状況において、時間間隔205iの終了時において、要求Bは、さらなる1時間の実行を完了まで持つが、時間間隔205lにおける私的余剰コンピューティング能力プールにおけるコンピューティングノード212aの利用可能性は、前記時間間隔におけるRequesterB*による専用能力の利用の再開に基づいて消失する。よって、この状況における1つの選択肢としては、要求Bについてコンピューティングノード212a上でのプログラム(単数または複数)の実行を時間間隔205kの終了時において終了し、これらのプログラム(単数または複数)のコンピューティングノード212c上での実行を時間間隔205lにおいてさらに1時間だけ即時再開する選択肢がある。しかし、他の実施形態において、他の可能な行為もとられ得る。例えば、完了までに短時間しか残っていない場合において、要求Bについてプログラム(単数または複数)の実行を終了した後に再開した場合のオーバーヘッドを回避するために、要求Bのためのこれらのプログラム(単数または複数)のコンピューティングノード212a上での実行を時間間隔205lのうち一部または全体において完了させる。RequesterB*によれば、時間間隔205lにおける専用能力の利用再開をこの状況において延期できることが望まれるが、このような時間間隔205lにおける専用能力利用の再開に対応するための代替策として、RequesterB*の専用能力利用を少なくとも時間間隔205lにおいて一時利用するために、別のコンピューティングノード(例えば、コンピューティングノード212c)を選択する。このようにして、RequesterB*は、時間間隔205lにおける所望される専用能力利用を受領し、要求Bのためのプログラム(単数または複数)の実行は、より効率的かつ高速に完了される。それにも関わらず、このような例において、要求Bのためのプログラム(単数または複数)の実行完了のための時間間隔205lにおけるコンピューティングノード212aの利用は、少なくともいくつかのこのような実施形態において、私的余剰コンピューティング能力プールの一部としてコスト目的のために取り扱われず、これにより、RequesterB*は、専用能力利用の価格として$0.04を時間間隔205lにおけるコンピューティングノード212cの利用について受領することができるが、要求Bのための時間間隔205lにおけるコンピューティングノード212aを用いたプログラム(単数または複数)の実行は、要求Bの入札価格を反映するために、一般的な余剰コンピューティング能力プール価格である$0.08で課金され得る。他の実施形態におよび状況において、他の代替例も利用することが可能であることが理解される。
加えて、上記例は例示目的のために記載したものであり、その他の実施形態は、上記例と多様な様態で異なり得る。例えば、コンピューティングノード210を相当するものとして(例えば、相当するコンピューティングリソースを有するものとして)記載しているが、他の実施形態も可能であり、このような他の実施形態において、多様なコンピューティングノード210は、異なる種類であり得、多様な特性(例えば、異なる量の処理能力、メモリ、プラットフォーム仕様)を持ち得ることが理解される。いくつかのこのような実施形態において、多様な要求を挙げると、要求と関連付けられたプログラムの実行において用いられる1つ以上の特定の種類のコンピューティングノードの通知があり、これらの要求は、対応する指定された種類のコンピューティングノードのみにおいて実行することができる。加えて、いくつかの実施形態において、未使用状態である専用コンピューティングノードに基づいた余剰コンピューティング能力および図示のような他のコンピューティングノードだけではなく、他の実施形態も可能であり、このような実施形態において、1つのコンピューティングノードグループのみおよび/またはさらなるコンピューティングノードグループが、余剰能力ユーザの要求実行において利用することが可能な余剰能力コンピューティングノードへと貢献し得る。さらに、いくつかの実施形態において、他のコンピューティングノード214のうち少なくとも一部は、1つ以上のサードパーティからプログラム実行サービスへと提供されるコンピューティングノードを含み得る。
上述したように、多様な種類の機能が多様な実施形態においてPESによって提供および利用され得、前記機能は、多様な様態で提供することができる。例えば、いくつかの実施形態において、PESから利用可能なプログラム実行能力を挙げると、例えば1つ以上のネットワークを介して相互接続された複数の物理的なコンピューティングマシンまたはコンピューティングマシン間のデータ送信が可能な他のデータ交換媒体を介した、ユーザのためのプログラム実行を行うための複数のコンピューティングノードがある。いくつかの実施形態において、前記コンピューティングマシンのうち少なくとも一部はそれぞれ、複数のプログラムを同時実行するための十分なコンピューティング関連リソースを含み得る(例えば、十分な書き込み可能なメモリ、不揮発性記憶、CPUサイクルまたは他のCPU使用方法、ネットワーク帯域、スワップ領域)。いくつかのこのような実施形態において、前記コンピューティングマシンのうち少なくとも一部はそれぞれ、複数の仮想マシンコンピューティングノードをホストし得る。前記複数の仮想マシンコンピューティングノードはそれぞれ、個別ユーザを代表するか、そのために1つ以上のプログラムを実行し得る。さらに、多様な実施形態において、PESは、複数のユーザを代表するか、そのために多様な種類のプログラムを実行し得る。例えば、ユーザを代表するか、そのために実行されるこのようなプログラムを挙げると、1つ以上のオペレーティングシステム、アプリケーション(例えば、サーバーおよび/または他のソフトウェアアプリケーション)、ユーティリティ、ライブラリ、等がある。加えて、少なくともいくつかの実施形態において、このようなプログラムを挙げると、実行可能なソフトウェア画像(例えば、ブータブルであるかまたは他の場合において1つ以上の仮想マシンコンピューティングノードへとロード可能である仮想マシン画像)があり、これらはそれぞれ、オペレーティングシステムソフトウェア、1つ以上のアプリケーションプログラムのためのソフトウェアおよび/または構成情報などを含み得る。
少なくともいくつかの実施形態において、PESによる1つ以上のコンピューティングノード上における1つ以上のプログラムの実行は、これらのプログラムの即時実行を指示する現在の実行要求に応答して、開始され得る。あるいは、前記開始は、以前に受信されたプログラム実行要求に基づき得る。前記以前に受信されたプログラム実行要求は、現時点のためにこれらのプログラムの現在から将来の実行を予定するかまたは他の場合において予約している。プログラム実行要求の受信は、多様な様態で可能である(例えば、(例えば、プログラム実行サービスによって提供される双方向コンソールまたは他のGUIを介した)ユーザからの直接受信)。あるいは、プログラム実行要求の受信は、1つ以上の他のプログラムまたはその他のインスタンスの実行を(例えば、プログラム実行サービス(例えば、ウェブサービスを利用するAPI)によって提供されるAPIまたはアプリケーションプログラミングインターフェースを介して)自動開始するユーザの実行プログラムから行われる。プログラム実行要求中には、1つ以上のプログラムの実行開始において用いられる多様な情報が含まれ得る(例えば、実行可能なプログラムまたは要実行プログラムの他のコピー、以前に登録されたかまたは他の場合において実行対象として供給されたプログラムの通知、同時実行すべきプログラムのインスタンスの数(例えば、単一の所望のインスタンス数として表現されたもの、所望の最小数インスタンスおよび最大インスタンス数として表現されたもの)、ならびに1つ以上のプログラムの実行に関する多様な他の種類の選好事項および/または要求(例えば、リソース割り当て、実行における地理的位置および/または論理位置、他のプログラムおよび/またはコンピューティングノードに対する実行の近隣、タイミング関連基準など)。
プログラムの1つ以上のインスタンスの実行を指示時間において行う旨の要求を受信した後、PESは、前記プログラムインスタンスの実行において用いられる1つ以上のコンピューティングノードを決定し得る。いくつかの実施形態において、用いられるべきコンピューティングノードの決定は、実行が将来行われる場合であっても、要求時において行われる。他の実施形態において、1つ以上のプログラムインスタンスの将来の実行において用いられるべきコンピューティングノードの決定は、後の時点まで延期することができる(例えば、そのときにおいて利用可能である情報に基づいた将来の実行時間)。いくつかの実施形態において、ユーザのための1つ以上のプログラムの実行において用いられるべきコンピューティングノードの決定は、実行要求に先行して行われ得る(例えば、ユーザがPESの利用について加入および/または登録したとき、ならびに/あるいはユーザのためのプログラム実行よりも前の別の時点)。例えば、いくつかのこのような実施形態において、1つ以上のコンピューティングノードが一定期間にわたってユーザと関連付けられ得、これにより、前記ユーザを代表するか、そのためにプログラムを前記関連付けられたコンピューティングノード上において実行することが前記期間内の任意の時点において可能となる(例えば、前記ユーザのためのソフトウェア実行要求が受信された、前記期間内の任意の時点)。加えて、いくつかの実施形態において、ユーザのためのプログラム実行の際に用いられるべきコンピューティングノードの決定は、1つ以上のコンピューティングノードおよび/または1つ以上のコンピューティングノードのコンピューティングリソースが前記ユーザのプログラム実行のために利用可能となった場合に行われ得る(例えば、1つ以上のコンピューティングノードが未使用状態でありかつ/または他の場合において1つ以上の係属中の要求のプログラムの実行のために利用可能である場合において、前記1つ以上のコンピューティングノード上における前記1つ以上の係属中の要求のプログラムの実行を行うために利用可能となった場合)。
各プログラムインスタンスの実行の際に用いられるべきコンピューティングノードの決定は、多様な様態で行うことができる(例えば、当該要求中に指定されている任意の選好事項および/または要求あるいは他の場合において(例えば、登録時などにおいて)当該プログラムおよび/または関連付けられたユーザについて指定された任意の選好事項および/または要求に基づいて行うことができる)。例えば、プログラムインスタンス実行のための好適なリソースおよび/または必要なリソースについて基準が決定された場合(例えば、メモリおよび/または記憶、CPU種類、サイクルまたは他の動作測定基準、ネットワーク能力、プラットフォーム種類)、プログラムインスタンス実行のための適切なコンピューティングノードの決定は、これらのリソース基準を満足するために利用することが可能な十分なリソースをコンピューティングノードが有するかに少なくとも部分的に基づいて行われ得る。プログラム実行サービス上において実行するプログラムの実行および構成に関するさらなる詳細について、係属中の米国特許出願第11/395,463号(出願日:2006年3月31日、名称「Managing Execution of Programs by Multiple Computing System」)中に記載がある。同文献全体を参考のため援用する。
加えて、上記したように、少なくともいくつかの実施形態において、自動終了される余剰プログラム実行能力を用いてプログラム実行は、PESによって後で自動的に再開することができる。例えば、いくつかのこのような場合において、PESは、要求された実行が完了するまで(例えば、ユーザによって取り消されるかまたは他の場合において明示的に終了されるまで、1つ以上のプログラムが1つ以上のタスクを完了したとの通知が受信されるまで)、指定時間になるまで(例えば、期限切れになるまで、蓄積実行時間になるまで)、指定された実行回数になるまで、または無期限で、プログラム実行を継続し得る。
いくつかの実施形態において、料金をPESの利用と関連付けることができ、これにより、PESは、ユーザが支払う1つ以上の料金に対して、ユーザを代表するか、そのためにプログラムを実行することができる。例えば、いくつかの実施形態において、ユーザへの料金の課金は、ユーザのための1つ以上のプログラムの実行のために割り当てられたプログラム実行能力の量および/または種類(例えば、前記ユーザのプログラム実行のために割り当てられた処理ユニット数、メモリ量、記憶量、ネットワークリソース量のうち1つ以上)に基づき得る。いくつかの実施形態において、料金は、他の要素に基づき得る(例えば、プログラム実行に用いられるコンピューティングリソースの多様な特性(例えば、CPUの能力または動作、プラットフォームの種類(例えば、32ビット、64ビット))。いくつかの実施形態において、料金の課金は、多様な利用要素に基づいて行われ得る(例えば、サービス利用あたりの価格、コンピューティングサービスの単位利用時間あたりの価格、利用記憶あたりの価格、内部移転されかつ/または外部移転されたデータあたりの価格)。少なくともいくつかの実施形態において、以下により詳細に説明するように、料金を多様な他の要素に基づいて決定することができる(例えば、プログラム実行能力の利用可能性に関連する要素(例えば、異なるレベルの利用可能性(例えば、保証された利用可能性および/または可変利用可能性))ならびに/あるいはプログラム実行に関連する多様な特性(例えば、実行継続性、耐故障))。少なくともいくつかの実施形態において、PESのプロバイダは、複数のユーザのためのプログラム実行を行う際に用いられる1つ以上の多様な層、種類および/またはレベルのサービスまたは機能を提供し得、いくつかのこのような実施形態において、前記多様な層、種類および/またはレベルのサービスを多様な料金と関連付けることができる。例えば、いくつかの実施形態において、ユーザに対し、PESから提供される専用プログラム実行能力機能の利用に関連する1つ以上の料金を課金することができる(例えば、PESのオンデマンド可変プログラム実行能力サービスの同等の利用と関連付けられた料金よりもそれぞれ低い料金)。このようなより低い料金は、例えば、前記ユーザが、1つ以上の特定の料金を長期契約期間にわたって(例えば、前払いでかつ/または定期的に)支払うために、指定利用期間にわたる長期契約を締結していることを反映している(例えば、複数の週、複数の月、複数の年)。加えて、例えば、PESから提供される特定の種類の機能のために、層を用いることができる(例えば、機能の例を挙げると、第1の層における第1の量の専用プログラム実行能力機能についての料金課金(例えば、利用中のコンピューティングノードについての指定された第1の閾値までの課金)、第2の量の専用プログラム実行能力機能についての第2の層(例えばより低価格の層)における課金(例えば、前記指定された第1の閾値よりも上でありかつ利用中のコンピューティングノードについての指定された第2の閾値までの課金)がある)。層は、用いられる機能の数の代わりに基づくかまたはさらに基づくかに関係無く、少なくともいくつかの実施形態において用いられる機能の数以外の多様な要素にさらに基づき得る。プログラム実行サービスと関連付けられた多様な料金のさらなる詳細について、係属中の米国特許出願第11/963,331号(出願日:2007年12月21日、名称:「Providing Configurable Pricing for Execution of Software Image」)中に記載がある。同文献全体を参考のため援用する。
専用コンピューティング能力の利用期間は、多様な実施形態において多様な様態で指定することができる(例えば、ユーザが専用プログラム実行能力へのアクセスを持つ指定期間を通知する(例えば、複数の週、複数の月、複数の年)、ユーザのための1つ以上のプログラムの連続的実行が可能である期間(例えば、所与の期間において1つ以上のプログラムが実行可能である時間数(例えば、1日あたり1時間、1週間あたり1時間など))、その範囲内において1つ以上のプログラムが実行可能な時間窓(例えば、毎日において1:00p.m.〜3:00p.m.))。上記したように、いくつかの実施形態において、電子市場をPESのユーザに提供することができ、これにより、前記専用プログラム実行能力ユーザは、自身の指定された利用期間のうち一部または全体を、1つ以上の他のユーザからの支払いの対価としてこれらのユーザに専用プログラム実行能力のために提供することができる。これにより、1つ以上の他のユーザは、前記提供された専用プログラム実行能力部分を用いて、前記1つ以上の他のユーザのためのプログラム実行を行うことができ、前記専用プログラム実行能力ユーザは、このような利用に対する支払いを受け取ることができる。他の実施形態において、専用プログラム実行能力ユーザは、前記専用プログラム実行能力ユーザのプログラム実行能力を早急に必要としている1つ以上の他のユーザ(例えば、専用プログラム実行能力の利用のための割増料金を1人以上のユーザが支払う意志によって示されるようなもの(例えば、専用プログラム実行能力ユーザが支払うよりも割高の料金))に部分的に基づいて、自身の専用プログラム実行能力のうち一定部分の利用を1人以上のユーザによる利用のために一時的に提供することができる。少なくともいくつかのこのような実施形態において、前記1人以上のユーザから収集された一部および/または全体を前記専用能力ユーザへと提供することができる。
さらに、多様な実施形態において、他にさらに詳述するように、多様な他の種類の機能がPESによって提供および利用され得る。
図3はブロック図であり、複数のユーザによるコンピューティングノードの利用を管理するための技術を行うのに適したシステムの例示的実施形態を示す。詳細には、図3は、プログラム実行サービスシステムマネージャモジュールの実施形態の実行に適したサーバコンピューティングシステム300と、多様なユーザコンピューティングシステム350と、コンピューティングノード360と、他のコンピューティングシステム380とを示す。図示の実施形態において、サーバコンピューティングシステム300は、CPU305を含むコンポーネントと、多様なI/Oコンポーネント310と、記憶部320、メモリ330とを含む。例示のI/Oコンポーネントは、ディスプレイ311と、ネットワーク接続部312と、コンピュータによる読み出しが可能なメディアドライブ313と、他のI/Oデバイス315(例えば、キーボード、マウス、スピーカ)とを含む。加えて、この例において簡潔さのために詳細を例示していないものもあるものの、例示のユーザコンピューティングシステム350は、サーバコンピューティングシステム300と同様のコンポーネントを有する(例えば、CPU351、I/Oコンポーネント352、記憶部354、およびメモリ357)。その他のコンピューティングシステム380およびコンピューティングノード360もそれぞれ、サーバコンピューティングシステム300を参照して例示したコンポーネントのうちいくつかまたはその全てと同様のコンポーネントを含み得るが、このようなコンポーネントはこの例において簡潔さのために例示しない。
プログラム実行サービスシステムマネージャモジュール340の実施形態は、メモリ330内において実行し、コンピューティングシステム350および380およびコンピューティングノード360との相互作用をネットワーク390を介して(例えば、インターネットおよび/またはワールドワイドウェブを介して、私的セルラーネットワークを介して)行う。この例示的実施形態において、PESSM340は、例えばソフトウェア命令を含み得る。これらのソフトウェア命令が実行されると、これらのソフトウェア命令は、上記した技術のうち一部または全体を行うように1つ以上のプロセッサ(例えば、CPU305)をプログラムする(上記した技術の例を挙げると、例えばPESSM340によって管理されるプログラム実行サービスと関連してユーザコンピューティングシステム350と相互作用している多様なユーザ(図示せず)による複数のコンピューティングノード360の利用の管理に関連する機能がある)。その他のコンピューティングシステム350および380およびコンピューティングノード360は、PESSMとの相互作用の一環として、多様なソフトウェアを実行し得る。例えば、ユーザコンピューティングシステム350は、メモリ357中のソフトウェアを実行して、(例えば、ウェブブラウザまたは特殊なクライアント側アプリケーションプログラムの一部として)PESSM340と相互作用し得、これにより、1つ以上のコンピューティングノード360上における多様な様態(例えば、可変実行能力の利用、専用実行能力の利用および/または余剰実行能力の利用に関連する様態)でのこれらのシステムのユーザのためのプログラム実行を構成および/または要求し得る。加えて、他にさらに詳述するように、ユーザコンピューティングシステム350の1人以上のユーザは、PESSM340と相互作用して、多様な他の種類の行為を行い得る。PESSMモジュール340の機能に関連する多様な情報は、記憶部320中に保存され得る(例えば、私的余剰能力プールに関連する情報324(例えば、現在の利用可能性の追跡、構成および/または他の構成情報に関連するユーザ命令)ならびに他の情報322(例えば、複数ユーザのためのプログラム実行のための構成、実行および/または登録に関連する情報)。
この例において、PESSMモジュール340は、3つの構成モジュールを含む(例えば、専用能力使用量マネージャモジュール342、余剰能力使用量マネージャモジュール344、およびオンデマンド可変能力使用量マネージャモジュール346)。専用能力使用量マネージャモジュール342は、ユーザによる専用コンピューティング能力の利用を管理する。図6は、1つの例示的実施形態におけるモジュール342の動作に対応するルーチンを示す。余剰能力使用量マネージャモジュール344は、ユーザによる一般的な余剰コンピューティング能力プールおよび私的余剰コンピューティング能力プールの利用を管理し、図5Aおよび図5Bは、1つの例示的実施形態におけるモジュール344の動作に対応するルーチンを示す。オンデマンド可変能力使用量マネージャモジュール346は、ユーザによるオンデマンド可変コンピューティング能力の利用を管理する。図7は、1つの例示的実施形態におけるモジュール346の動作に対応するルーチンを示す。他の実施形態において、PESSMモジュール340によって提供される機能は、他の様態で構築することができる(例えば、構成モジュール342〜346のうち1つ以上を任意選択的に含まないような構成(例えば、オンデマンド可変能力使用量を提供しない実施形態においてオンデマンド可変能力使用量マネージャモジュール346を含まない構成))。
PESSMモジュール340が1つ以上のコンピューティングノード360上における1つ以上のプログラムの実行についての要求(または他の通知)を受信すると、PESSMモジュール340は、利用対象として指示された種類のプログラム実行能力に対応する構成モジュール342〜346を決定し、前記要求を前記決定された構成モジュールへと転送する。その後、前記決定された構成モジュールおよびPESSMモジュール340は、前記要求に応答するための多様な動作を行う(例えば、前記1つ以上のプログラムを実行する前記1つ以上のコンピューティングノードを選択し、これらのコンピューティングノード360上におけるこれらのプログラムの実行を開始する)。加えて、PESSMモジュール340(構成モジュール342〜346を含む)は、例えば、コンピューティングノード360と相互作用して、開始されたプログラムのコンピューティングノード上における実行を終了し、前記プログラムのうち1つ以上を1つ以上の他のコンピューティングノード360またはコンピューティングシステム380へと移転させ、あるいは他の場合においてコンピューティングノード360のうちの1つ以上との相互作用を監視して、これらのコンピューティングノードの利用を追跡する動作をさらに行い得る。コンピューティングノード360は、多様な実施形態において多様な形態を含み得る(例えば、複数の物理的なコンピューティングシステムおよび/または1つ以上の物理的なコンピューティングシステム上において実行する複数の仮想マシンを含む形態)。いくつかの実施形態において、サーバコンピューティングシステム300およびコンピューティングノード360は、データセンターまたは他の共同設置されたコンピューティングシステムのグループの一部であり得るか、あるいは、他の場合において、私的ネットワークのコンピューティングノードであり得る。加えて、いくつかの実施形態において、PESSMモジュール340は、1つ以上の他のコンピューティングシステム380と相互作用して、これらのコンピューティングシステム上の1つ以上のプログラムの実行を開始または終了させ得る(例えば、他のユーザによって利用される余剰プログラム実行能力を提供している1つ以上のサードパーティ参加者によってコンピューティングシステム380が提供される場合)。いくつかの実施形態において、PESSMモジュール340は、プログラム実行サービス以外の1つ以上の種類のコンピューティング関連のリソースまたはサービス(例えば、永続的または一時的なデータ記憶サービス、メッセージングサービス、データベースサービス)へのアクセスをさらにまたは代わりに管理し得る。
コンピューティングシステム300、350および380ならびにコンピューティングノード360はひとえに例示的なものであり、本発明の範囲を制限することを意図していないことが理解される。上記以外にも、これらのコンピューティングシステムおよび/またはノードはそれぞれ、複数の相互作用するコンピューティングシステムまたはデバイスを含み得、前記コンピューティングシステム/ノードは、例示されていない他のデバイスに(例えば、1つ以上のネットワーク(例えば、インターネット)を介して、ウェブを介して、または私的ネットワーク(例えば、モバイル通信ネットワーク)を介して)接続され得る。より一般的には、コンピューティングノードまたは他のコンピューティングシステムは、上記記載の種類の機能(例を非限定的に挙げると、デスクトップまたは他のコンピュータ、データベースサーバ、ネットワーク記憶デバイスおよび他のネットワークデバイス、PDA、携帯電話、無線電話、ポケットベル、電子オーガナイザ、インターネット機器、テレビベースのシステム(例えば、セットトップボックスおよび/またはパーソナル/デジタルビデオレコーダを用いたもの)、ならびに適切な通信能力を含む多様な他の消費者製品)と相互作用して実行し得るハードウェアまたはソフトウェアの任意の組み合わせを含み得る。加えて、例示のPESSMモジュール340およびその構成モジュールによって提供される機能は、いくつかの実施形態において、さらなるモジュール中に分散させてもよいし、あるいはより少数のモジュール中に組み合わせて分散させてもよい。同様に、いくつかの実施形態において、PESSMモジュール340の機能の一部を提供し、かつ/または、他のさらなる機能が利用可能である。
利用中にメモリ中または記憶部上に保存されるものとして多様なアイテムを例示しているが、これらのアイテムまたはその一部は、メモリ管理およびデータ完全製の目的のためにメモリと他の記憶デバイスとの間で移転させることが可能であることも理解される。あるいは、他の実施形態において、ソフトウェアPESSMモジュール340および/または構成モジュールのうち一部または全体は、別のデバイス上のメモリ中において実行し得、例示のコンピューティングシステムとの通信をコンピュータ間通信を介して行い得る。さらに、いくつかの実施形態において、PESSMモジュール340および/または構成モジュールのうち一部または全体は、他の様態で実行または提供することができる(例えば、少なくとも部分的にファームウェアおよび/またはハードウェアとして(例を非限定的に挙げると、1つ以上の特定用途向け集積回路(ASIC)、標準的な集積回路、コントローラ(例えば、適切な命令を実行し、マイクロコントローラおよび/または埋め込みコントローラを含む))、フィールドプログラマブルゲートアレイ(FPGA)、複雑なプログラマブル論理デバイス(CPLD)を含めることにより)。前記モジュールおよびデータ構造のうち一部または全体も(例えば、ソフトウェア命令または構成データとして)、コンピュータによる読み出しが可能な媒体(例えば、適切なドライブによってまたは適切な接続を介して読み出される、ハードディスク、メモリ、ネットワーク、またはポータブルメディア物品)上において、保存され得る。前記モジュールおよびデータ構造は、多様なコンピュータによる読み出しが可能な伝送媒体(例えば、無線ベースの媒体および有線/ケーブルベースの媒体)上の生成されたデータ信号として(例えば、搬送波あるいは他のアナログ伝播信号またはデジタル伝播信号の一部として)送信することもでき、多様な形態をとり得る(例えば、単一のアナログ信号または多重化アナログ信号の一部として、あるいは複数の別個のデジタルパケットまたはフレームとしての形態)。このようなコンピュータプログラム製品は、他の実施形態における他の形態もとり得る。よって、本発明は、他のコンピュータシステム構成を用いても実行することができる。
図4は、プログラム実行サービスシステムマネージャルーチン400の例示的実施形態のフロー図である。前記ルーチンは、例えば、図1Aおよび図1BのPESSMモジュール110および180それぞれ、図2Aおよび図2Bに対応する動作を行うPESSMモジュール(図示せず)、ならびに/あるいは図3のPESSMモジュール340の実行によって得られ得る(例えば、複数のコンピューティングノードおよび/または他の種類のプログラム実行能力の利用の管理の支援や、いくつかの状況における他の種類の管理動作を実行するためのもの)。この図示の実施形態において、ルーチン400は、複数のユーザのためのプログラム実行を行うためのプログラム実行能力を提供するプログラム実行サービスの利用の多様な局面を管理する。
図示の実施形態において、ルーチンはブロック405から開始する。ブロック405において、情報または要求が受信される。前記ルーチンはブロック410へと進んで、前記受信された要求または情報が専用能力の利用に関連するか否かを決定する。前記受信された要求または情報が専用能力の利用に関連する場合、前記ルーチンはブロック415へと進んで、専用コンピューティング能力使用量の管理に関連するルーチンを行う。このようなルーチンの1つの例示的実施形態について、図6を参照してより詳細に説明する。あるいは、ブロック410においてブロック405の情報または要求が専用能力の利用に関連しないと決定された場合、ルーチンはブロック430へと進んで、前記情報または要求が余剰コンピューティング能力の利用に関連するかを決定する。前記情報または要求余剰コンピューティング能力の利用に関連する場合、ルーチンはブロック435へと進んで、余剰コンピューティング能力使用量の管理に関連するルーチンを行う。このようなルーチンの1つの例示的実施形態について、図5A〜図5Bを参照してより詳細に説明する。あるいは、ブロック405の情報または要求が余剰能力の利用に関連しないとブロック430において決定された場合、ルーチンはブロック440へと進んで、前記情報または要求がオンデマンド可変コンピューティング能力の利用に関連するか否かを決定する。前記情報または要求がオンデマンド可変コンピューティング能力の利用に関連する場合、ルーチンはブロック445へと進んで、オンデマンド可変コンピューティング能力使用量の管理に関連するルーチンを実行する。記載のこのようなルーチンの1つの例示的実施形態について、図7を参照してより詳細に説明する。
あるいは、可変能力の利用に関連する情報または要求が受信されていないとブロック440において決定された場合、ルーチンはブロック460へと進んで、前記情報または要求が第2の専用能力市場に関連するかを決定し、前記情報または要求が第2の専用能力市場に関連する場合、ルーチンはブロック462へと進んで、第2の専用能力市場に関連して1つ以上の通知された動作を適切に行う。例えば、多様な実施形態において、このような動作を挙げると、多様な量のユーザの専用プログラム実行能力を販売および/または貸し出したいとの専用能力ユーザからの通知、専用能力ユーザからのプログラム実行能力を販売および/または貸し出したいとの1つ以上の他のユーザからの通知、多様な量のプログラム実行能力についての割増料金を支払う意志のある1人以上の急ぎのユーザからの通知のうちの1つ以上がある。
ブロック415、435、445および462の後、あるいは、第2の専用能力市場に関連する情報または要求が受信されていないとブロック460において決定された場合、ルーチンはブロック470へと進んで、ブロック405において情報または要求に基づいて任意のユーザ課金または払戻活動を任意選択的に行うか、あるいは、他の場合のように(例えば、定期的に)開始される(例えば、ユーザによって提供または可能化された提供について、ユーザへと提供されたプログラム実行機能に基づいて1人以上のユーザ(例えば、専用能力ユーザ、可変能力ユーザ、余剰能力ユーザ、および/または他のユーザ)から料金を課金および/または集金し、かつ/あるいは、1人以上のユーザ(例えば、専用能力ユーザおよび/または余剰能力ユーザによって用いられるコンピューティングリソースを提供した他のユーザ)への支払いおよび/または払い戻しを行う)。
ブロック470の後、ルーチンはブロック475へと進んで、利用されている任意の一般的な余剰コンピューティング能力プールおよび私的余剰コンピューティング能力プールについて、余剰プログラム実行能力を任意選択的に監視する。これにより、プログラム実行能力は、1つ以上の余剰能力ユーザによって利用可能である余剰プログラム実行能力へと追加されかつ/または前記余剰プログラム実行能力から除去され得る。他の実施形態において、ルーチンは、現在のプログラム実行能力の使用量および/または予測されるプログラム実行能力の使用量の他の通知を受信し得る(例えば、プログラム実行サービスの1つ以上のコンピューティングリソース(例えば、現在の使用状態を示し得る常駐モニタを備えるコンピューティングノード)からの通知、1人以上のユーザからの通知)。上記と同時に/または上記に代わって、ルーチンは、他の場合においてコンピューティングリソースが利用される時期および/または利用される可能性のある時期、未使用状態である時期または十分に利用されていない時期を決定し得る。
次に、ルーチンはブロック495へと進んで、1つ以上の他の通知された動作を任意選択的に行う。いくつかの実施形態において、このような動作を挙げると、ユーザのためのプログラム実行サービスの多様なリソースおよび/または機能の利用の構成、加入動作または登録動作、スケジューリング動作などがある。ブロック495の後、ルーチンはブロック498へと進んで、例えばルーチン実行を終了せよとの明示的通知が受信されるまでルーチンを継続するか否かを決定する。例えばルーチン実行を終了せよとの明示的通知が受信されるまでルーチンを継続すると決定された場合、ルーチンはブロック405へと進み、例えばルーチン実行を終了せよとの明示的通知が受信されるまでルーチンを継続すると決定されなかった場合、ルーチンはブロック499へと進んで終了する。
図6は、専用能力使用量マネージャルーチン600の例示的実施形態のフロー図である。ルーチンは、例えば図3のPESSMモジュール340の専用能力使用量マネージャモジュール342の実行によって提供することもできるし、あるいは、図1Aおよび図1BのPESSMモジュール110および180それぞれおよび/または図2Aおよび図2Bに対応する動作を行うPESSMモジュール(図示せず)によって提供することもでき、図4中のルーチン400のブロック415から開始するかまたは他の場合において呼び出すことができる。
図示の実施形態において、ルーチン600はブロック605から開始する。ブロック605において、要求、情報および/または他の専用能力の利用に関連する通知が受信される。その後、ブロック612において、ルーチンは、専用プログラム実行能力の利用について加入しようとしているユーザからの要求が受信されたかを決定する。専用プログラム実行能力の利用について加入しようとしているユーザからの要求が受信された場合、ルーチンはブロック614へと進み、ブロック614において、対応する情報が加入ユーザから得られ、専用プログラム実行能力の利用の加入に関連する多様な動作が行われる。例えば、いくつかの実施形態において、ユーザは、前記ユーザが専用アクセスを得ようとしている1つ以上のコンピューティングノードを選択および/または通知し得る。他に記載するように、いくつかの実施形態において、ユーザは、1つ以上の多様な種類のコンピューティングノードから選択し、かつ/または、他の場合において多様な量および/または種類の所望のコンピューティングリソース(例えば、処理ユニット種類/量、メモリ量、プラットフォーム仕様)を指定し得る。加えて、加入ユーザは、ユーザが専用アクセスを得ることを望む利用期間も通知し得る(例えば、複数の時間、複数の週、複数の月、複数の年)。上記に加えておよび/または上記に代えて、加入ユーザは、他の情報を提供し得る(例えば、課金情報、ユーザを代表するか、そのために実行されるプログラムの通知、1つ以上の将来の時間において1つ以上のプログラムを実行するためのスケジューリング情報)。加入者が所望の専用プログラム実行能力の種類および/または量に関連する情報を提供した後、ルーチンはブロック616へと進んで、適切な量の要求されたプログラム実行能力が加入ユーザによる専用使用(可能な場合)のために割り当てられる。他に記載のように、プログラム実行能力(例えば、1つ以上のコンピューティングノード)は、特定の加入専用能力ユーザによって用いられるように、多様な実施形態において多様な様態で割り当てられかつ/またはあてがわれる。
ブロック616の後、ルーチンはブロック618へと進んで、加入者に割り当てられたコンピューティング能力のうち少なくとも一部を、加入者(および/または他の指定ユーザ)によって用いられる余剰コンピューティング能力の私的プールの一部としてかつ専用使用対象として、用いるかを任意選択的に決定し、加入者に割り当てられたコンピューティング能力のうち少なくとも一部を、加入者(および/または他の指定ユーザ)によって用いられる余剰コンピューティング能力の私的プールの一部としてかつ専用使用対象として、用いる場合、前記私的余剰コンピューティング能力プールの利用を可能化するための対応する情報を保存する。例えば、いくつかの実施形態において、決定された能力加入者ユーザについて、私的余剰コンピューティング能力プールが可能化されて利用可能となり、これにより、このようなユーザへと割り当てられた専用コンピューティング能力が他の場合においてユーザによって利用されていないときに、前記割り当てられた専用コンピューティング能力全てを私的余剰コンピューティング能力プール中において前記ユーザが後で利用することが可能となる。あるいは、いくつかの実施形態において、PESSMモジュールは、他の場合において命令無き限り、全ての専用能力ユーザのためにこのような私的余剰コンピューティング能力プールをデフォルトで生成し得る。他の実施形態において、このような専用能力ユーザのための私的余剰コンピューティング能力プールは、命令生成せよとの明示的な命令をユーザが発行しない限りかつ/または他の事前決定された基準が満たされない限り、ブロック618において生成することができない。さらに他の実施形態において、このようなユーザのための私的余剰能力プールを生成するかについての決定は、他の時期においても行われ得る(例えば、このような専用能力ユーザからの余剰コンピューティング能力リソースの利用についての要求が受信されたとき)。さらに、少なくともいくつかの実施形態において、加入者ユーザは、このようなユーザのための私的余剰コンピューティング能力プールの他の局面を構成し得る(例えば、専用能力利用のうち私的余剰能力プールの一部として利用可能である量(例えば、全てのコンピューティングノード、指定されたパーセンテージまたは指定された数のコンピューティングノード)、私的余剰能力プールを利用することが可能なユーザ、私的余剰能力プールを利用可能とするかまたは利用不可能とすべき特定の期間および/または他の基準)。
あるいは、専用プログラム実行能力の利用についての加入要求がブロック612において受信されていないと決定された場合、ルーチンはブロック630へと進む。ブロック630において、ルーチンは、割り当てられた専用プログラム実行能力上において加入者ユーザを代表するか、そのために1つ以上のプログラムを実行せよとの要求が受信されたかを決定する(例えば、即時実行せよとの現在の要求、以前予定された実行要求)。また、対応する専用プログラム実行能力は、他の専用プログラム実行について既に利用されていないかまたは利用が予定されていないと決定する。十分な専用プログラム実行能力が利用不可能である場合、エラーメッセージまたは他の類似の応答が提供される(例えば、ブロック635を参照して図示されるもの)。いくつかの実施形態において、ルーチンは、適切な利用期間内において実行要求が受信されたことを保証しかつ/または他の場合において前記要求を認証し得る(例えば、前記要求の証明、加入者ユーザの認証)。適切な要求が専用能力によって利用されるものとして受信された場合、ルーチンはブロック640へと進んで、要求者のための私的余剰コンピューティング能力プールの一部としての要求者からの先行要求を満足するステップの一部として、前記要求のために用いられるべき割り当てられた専用プログラム実行能力が現在利用されているかを決定する。このような現在の私的余剰コンピューティング能力プールの利用がブロック645において特定された場合、ルーチンはブロック650へと進み、他の場合においてブロック660へと進んで、前記要求された実行を実行する(例えば、前記割り当てられたプログラム実行能力上での前記1つ以上のプログラムの実行を開始する)。ルーチンが先ずブロック650へと進んだ後にブロック660へと進んだ場合、ブロック650において、ルーチンは、私的余剰コンピューティング能力プールからの先行要求を一般的な余剰コンピューティング能力プールへと転送するステップを開始する。なぜならば、前記私的余剰コンピューティング能力プールは、前記先行要求を満たすために現在利用できなくなっているからである。しかし、他の実施形態および状況(例えば、前記先行要求について指定された命令に基づいたもの)において、ルーチンは、先行要求を前記私的余剰コンピューティング能力プールについてのキュー中に残留させておき、これにより、前記私的余剰コンピューティング能力プール中において十分な能力が利用可能となるまで、前記先行要求が延期される。いくつかの実施形態において、ブロック660の一部として、ルーチンは、プログラム実行を多様な様態で行うためのコンピューティングリソースおよび/またはコンピューティングノードを選択し得、いくつかの状況において、ルーチンは、他のユーザ(例えば、一般的な余剰能力プールユーザ)の1つ以上のプログラムを終了しおよび/または他の場合において前記要求された実行を行うためにコンピューティングリソースを解放し得る。いくつかの実施形態において、専用能力ユーザが(例えば自身に割り当てられた専用プログラム実行能力の別のユーザへの販売または貸し出しのために)前記専用プログラム実行能力を一定量だけ1つ以上の他のユーザによって用いられるものとして以前供給している場合、前記受信された要求を満たすための専用能力は、前記ユーザが前記要求について能力を再請求できない限り、前記要求時において前記専用ユーザによって利用することができない。加えて、いくつかの実施形態において、(例えば、1つ以上の決定された行為を完了するかまたは他の場合において実行するために加入者ユーザのために私的余剰能力プールの一部として実行している加入者ユーザからの先行要求を可能にするために)専用能力の利用についての加入者ユーザからの現在の要求を一時的に遅延させることができる。
あるいは、ブロック630において加入ユーザを代表するか、そのために割り当てられたプログラム実行能力上において1つ以上のプログラムを実行せよとの要求が受信されないと決定される場合、ルーチンはブロック635へと進んで、専用能力の適切な利用に関連する1つ以上の他の指示された動作を任意選択的に行う。例えば、いくつかの実施形態において、このような動作を挙げると、私的余剰能力プールおよび/または一般的な余剰能力プールに関わらず、余剰プログラム実行能力として利用可能とするための一定量の専用プログラム実行能力を通知するステップならびに/あるいは一定量の以前指定されたプログラム実行能力が専用能力ユーザによって利用されるように再請求するステップがある。加えて、上記したように、ブロック635中のルーチンは、ブロック605において受信された要求が満足されない場合、エラーメッセージまたは他の関連情報を提供し得る。加えて、いくつかの実施形態において、以前開始された専用能力の利用を終了せよとの要求または命令がブロック605において受信され得、そうである場合、ブロック635においてルーチンはこのようなプログラム終了を行い得、また、対応する私的余剰コンピューティング能力プール(存在する場合)または得られた利用可能な余剰能力の一般的な余剰コンピューティング能力プールを更新し得る。他の実施形態において、ユーザは、ルーチン600に通知することなく、前記コンピューティングノード上におけるプログラム実行を終了させ得る。PESSMモジュールは、得られた余剰コンピューティング能力を後で自動的に特定し得る(例えば、図4のブロック475を参照したもの)。
ブロック618、635または660の後、ルーチンはブロック699へと進み、その後戻る。
図5A〜図5Bは、余剰能力使用量マネージャルーチン500の例示的実施形態のフロー図である。ルーチンは、例えば図3のPESSMモジュール340の余剰能力使用量マネージャモジュール344の実行によって提供することもできるし、あるいは、図1Aおよび図1BのPESSMモジュール110および180それぞれおよび/または図2Aおよび図2Bに対応する動作を行うPESSMモジュール(図示せず)の一部として提供することもでき、図4中のルーチン400のブロック435から開始されるか他の場合において呼び出される。
図示の実施形態において、ルーチン500が呼び出されると、余剰能力の利用に関連する要求、情報および/または他の通知がブロック502においてルーチンに提供される。その後、ブロック505において、ルーチンは、プログラム実行能力を利用可能な余剰プログラム実行能力へと付加すべきである旨の通知が受信されたかを決定する(この決定は、例えば、図4のブロック475について得られる情報に基づくか、または、図6のブロック635を参照した専用コンピューティング能力の利用の終了によってトリガされる)。そうである場合、ルーチンはブロック510へと進み、前記通知されたプログラム実行能力を利用可能なプログラム実行能力へと付加する。詳細には、前記余剰プログラム実行能力が私的余剰コンピューティング能力プールに対応する場合、前記私的プールは、前記指示された余剰能力を受信するように選択され、他の場合において、一般的な余剰コンピューティング能力プールが選択される。加えて、いくつかの実施形態において、新規私的余剰能力プールを生成せよとの要求がブロック510を参照してあるいは以下に説明するようなブロック595を参照して受信され、取り扱われ得る。例えば、いくつかの実施形態において、ルーチンは、このような指示されたプログラム実行能力(例えば、1つ以上の特定のコンピューティングノード)の1つ以上の通知を利用可能なプログラム実行能力の選択されたプールへと付加し得る。いくつかの実施形態において、私的余剰能力プールおよび一般的な余剰能力プールについて上述したような様態でかつ/または他の様態で複数のプールが提供され得る(例えば、多様な異なる種類のプログラム実行能力が利用可能とされ得、プログラム実行能力の種類と関連付けられた対応する私的プールおよび/または一般的なプールへとグループ分けされ得る)。
あるいは、余剰プログラム実行能力への通知が受信されていないとブロック505において決定された場合、ルーチンはブロック515へと進んで、利用可能な余剰プログラム実行能力からプログラム実行能力を除去せよとの通知が受信されたかについて決定する。利用可能な余剰プログラム実行能力からプログラム実行能力を除去せよとの通知が受信されたと決定された場合、ルーチンはブロック520へと進んで、(例えば、例えば余剰能力を用いて現在実行している1つ以上のプログラムについての通知されている特定のプログラム実行能力に基づいて)余剰能力を除去すべき対応する私的余剰能力プールおよび/または一般的な余剰能力プールを選択する。その後、ルーチンは、前記通知されたプログラム実行能力を前記選択された能力プールについて利用可能な余剰プログラム実行能力から除去し、これにより、前記通知されたプログラム実行能力(または相当する量のプログラム実行能力)は、前記選択された能力プールの余剰能力ユーザのためのプログラム実行のための余剰プログラム実行能力として利用することができなくなる。
あるいは、利用可能なプログラム実行能力からプログラム実行能力を除去せよとの通知が受信されていないとブロック515において決定された場合、ルーチンはこの場合はブロック525へと進んで、一定量の利用可能な余剰プログラム実行能力上において余剰能力ユーザを代表するか、そのために1つ以上のプログラムを実行せよとの要求が受信されたか(またはこのような実行について以前に予定されていた要求がトリガされたか)を決定する。一定量の利用可能な余剰プログラム実行能力上において余剰能力ユーザを代表するか、そのために1つ以上のプログラムを実行せよとの要求が受信された(あるいは、このような実行について以前に予定されていた要求がトリガされた)と決定された場合、ルーチンはブロック530へと進んで、前記要求に基づいて1つ以上のプログラムの実行を行う際に用いられるべき余剰能力の供給源となる、対応する私的余剰能力プールおよび/または一般的な余剰能力プールを選択する(このような決定は、例えば、余剰能力ユーザに基づいてあるいは利用されるべき特定のプログラム実行能力についての別の通知に基づいて、行われる)。そして、要求された実行に関連する要求側の余剰能力ユーザからさらなる情報を任意選択的に入手または受信する。いくつかの実施形態において、このようなさらなる情報を挙げると、構成情報がある(例えば、要求されるプログラム実行能力の量および/または種類についての通知(例えば、最小量および最大量)、入札額(例えば、最小入札額および最大入札額)、期限、利用すべき特定の余剰能力プール(例えば、ユーザと関連付けられた特定の私的余剰能力プールのみ、あるいは、利用可能な場合は特定の私的余剰能力プールを利用し、他の場合においては一般的な余剰能力プールを利用するなどの指示))。いくつかの実施形態において、このようなさらなる情報の一部または全体をブロック502において受信された要求の一部としてあるいは余剰能力ユーザによって行われた別個の構成および/または登録の一部として設けることができる。加えて、いくつかの実施形態において、ルーチンは、1つ以上の種類の余剰能力ユーザに対し、フィードバックを提供することができる(例えば、要求された実行の起こり得る特性の通知(例えば、要求実行が起こり得る時期、起こり得る実行期間、利用されるべき余剰能力プールとして可能性の高いもの)および/または任意選択的な他の情報(例えば、提案される構成))。ブロック530後において、ルーチンはブロック535へと進んで、利用対象として選択された余剰能力プールからの余剰プログラム実行能力上での実行についての要求を現在の要求グループへと付加する。他の実施形態において、他の要求のグループへと前記要求を付加する代わりに、ルーチンは、前記要求を即時的に満足しようとし得る(例えば、前記要求を前記即時的時間において実行するために利用することが可能な余剰プログラム実行能力が(例えば、特定の私的余剰能力プール中に)あるかを決定し、このような余剰プログラム実行能力がある場合、プログラム実行を開始するか、あるいは、このような余剰プログラム実行能力が無い場合、他の行動をとる(例えば、前記要求を利用不可能な私的余剰能力プールから一般的な余剰能力プールへと移動させる、失敗する、等)。
あるいは、利用可能な余剰プログラム実行能力上においてプログラムを実行せよとの要求が受信されていないとブロック525において決定された場合、ルーチンはブロック540へと進んで、以前通知された実行要求を除去せよとの要求が受信されたかを決定する(例えば、ブロック535において要求グループに以前付加された、通知された実行要求)(例えば、現在の実行要求および/または他の場合において要求が期限切れとなった旨受信された通知を取り消す旨の余剰能力ユーザからの要求)。以前通知された実行要求を除去せよとの要求が受信されたと決定された場合、ルーチンはブロック545へと進んで、一定量の余剰プログラム実行能力上において現在実行している通知された要求と関連付けられたプログラム全てを終了させ、その後ブロック550へと進んで、前記通知された要求を含む1つ以上の要求グループから前記通知された要求を除去する。これにより、前記通知された要求はその後余剰プログラム実行能力上での実行対象として検討されなくなる。
ブロック510、520、535および550の後、あるいは、通知された実行要求が受信されていないとブロック540において決定された場合、ルーチンはブロック555へと進んで、余剰プログラム実行能力上での実行に関する現在の要求を管理するかを決定する。例えば、いくつかの実施形態において、ブロック502において受信された通知が要求を管理するためにルーチン500へと送られ、かつ/または、利用可能なプログラム実行能力の変化に基づいて提供されている場合がある(例えば、ブロック510および520それぞれにおける利用可能なプログラム実行能力への追加または利用可能なプログラム実行能力からの除去)、かつ/または現在の実行要求の変更(例えば、ブロック535および550それぞれにおける要求の付加または除去)。そうである場合、ルーチンはブロック560へと進んで、利用されている1つ以上の私的余剰コンピューティング能力プールおよび/または一般的な余剰コンピューティング能力プールに対する現在利用可能な余剰プログラム実行能力の量を決定する(例えば、ブロック510および520それぞれにおいて利用可能なプログラム実行能力に付加および/または利用可能なプログラム実行能力から除去されるプログラム実行能力の量)。ブロック560の後、ルーチンはブロック562へと進んで、任意の利用可能な私的余剰コンピューティング能力プールを用いて実行することが可能な係属中の要求を選択する(例えば、これから入来する期間において即時に実行または実行される要求)(例えば、私的余剰能力プールを用いて既に実行されている要求、私的余剰能力プールのために待ち行列に入れられている要求、一般的な余剰能力プールを用いて現在実行されておりかつ好適な対応する私的余剰能力プールを有している(ただし、利用可能な場合)要求、現在一般的な余剰能力プールのために待ち行列に入れられておりかつ好適な対応する私的余剰能力プールを有している(ただし、利用可能な場合)要求、等)。このような選択された要求が存在する場合、ブロック560において、ルーチンは、対応する量の余剰コンピューティング能力を対応する私的余剰コンピューティング能力プールから割り当てる(または入来する期間におけるこのような割り当てを予定する)。その後、ルーチンはブロック565へと進んで、ブロック562において選択されなかった残留している全ての要求について、1つ以上の一般的な余剰コンピューティング能力プールを用いて実行されるべき他の要求を選択する(例えば、入来する期間において即時実行または実行されるもの)。その後、ルーチンは、現在利用可能な余剰プログラム実行能力のグループを、これらの選択された他の要求によって用いられる対応する一般的な余剰コンピューティング能力プール(単数または複数)から割り当てる。
以下により詳細に説明するように、ブロック562および565における要求選択は、多様な実施形態において多様な様態で行うことができる(例えば、要求およびそのユーザと関連付けられた優先レベルに少なくとも部分的に基づいた様態)。例えば、いくつかの実施形態において、ルーチンは、一定量の余剰プログラム実行能力を対応する余剰コンピューティング能力プールから各要求へと割り当るステップをその要求に基づいて行おうととする(例えば、指定されたコンピューティングノード数)。いくつかのこのような実施形態において、特定の余剰コンピューティング能力プールについての現在の実行要求を全て満たすだけの十分な現在利用可能な余剰プログラム実行能力がある場合、前記要求それぞれに対し、前記要求と関連付けられたプログラムの実行を行うための要求された量の余剰プログラム実行能力が割り当てられる。特定の余剰コンピューティング能力プールについての現在の要求全てを満足できるだけの十分な現在利用可能な余剰プログラム実行能力が無い場合、ルーチンは、前記要求に優先順位を付け、より優先度の高い要求を満足した後により優先度の低い優先要求を満足しようとする。多様な実施形態において、優先度は、私的余剰コンピューティング能力プールと関連付けられた特定のユーザ、入札額、要求の受信時刻などのうち1つ以上に基づき得る。多様な実施形態において、ルーチンは、現在利用可能な余剰プログラム実行能力のうち前記要求によって多様な様態(例えば、上述したような様態)で用いられるために割り当てられるべきものを決定し得る。
ブロック565の後、ルーチンはブロック570へと進んで、余剰プログラム実行能力上において既に実行しておりかつブロック562および565において現在の実行対象として選択されていない要求と関連付けられた実行プログラム全てを終了させる(例えば、前記要求が期限切れとなっているかまたは現在進行中のものを満足させるほど十分に高い優先度を持っていないことを反映させる)。その後、ブロック575において、ルーチンは、各要求と関連付けられた1つ以上のプログラムを実行し(かつ/またはブロック565における進行中の実行のために選択された余剰プログラム実行能力上において以前実行されたプログラムを残留させる)。ブロック575の後、ルーチンはブロック580へと進んで、ハウスキーピング動作を任意選択的に行う。例えば、いくつかの実施形態において、ルーチンは、要求グループ中に期限切れとなっている実行要求があるかまたは他の場合において除去すべきである実行要求または余剰コンピューティング能力プール間において移動させるべき実行要求があるかを検出および通知することができる。
余剰プログラム実行能力上での現在の実行要求を管理すべきではないとブロック555において決定された場合、ルーチンはブロック595へと進んで、任意選択的に1つ以上の他の通知された動作を適切に行う。例えば、ブロック502において受信された要求は、(例えば、ユーザに割り当てられた専用能力のうち一部または全ての利用に基づいて)前記ユーザのために新規の私的余剰能力プールを作成せよとの前記ユーザからの要求であり得る(例えば、図6のブロック618を参照して説明した様態と同様の様態のもの)。あるいは、ブロック502において受信された要求は、既存の私的余剰能力プールの構成を変更せよとの要求であり得る。そうである場合、ルーチンは、対応する行為をブロック595において行い得る。ブロック580または595の後、ルーチンは、ブロック599へと進み、その後戻る。
図7は、オンデマンド可変能力使用量マネージャルーチン700の例示的実施形態のフロー図である。前記ルーチンは、例えば図3のPESSMモジュール340のオンデマンド可変能力使用量マネージャモジュール346の実行によって得ることもできるし、あるいは、図1Aおよび図1BのPESSMモジュール110および180および/または図2Aおよび図2Bに対応する動作を行うPESSMモジュール(図示せず)の一部として得ることもでき、図4中のルーチン400のブロック455から開始することができ、あるいは他の場合において呼び出すことができる。
図示の実施形態において、ルーチン700は、ブロック705から開始する。ブロック705において、オンデマンド可変能力の利用に関連して要求、情報および/または他の通知が受信される。その後、ブロック710において、ルーチンは、現在利用可能なオンデマンド可変コンピューティング能力上において1つ以上のプログラムを実行せよとの要求(例えば、即時実行についての現在の要求、以前予定された要求)があるかを決定する。他において記載した通り、このような要求は、可変能力ユーザのための1つ以上のプログラムを行うための多様な種類および/または量のプログラム実行能力を指定し得る。1つ以上のプログラムを実行せよとの要求が受信されたとブロック710において決定された場合、ルーチンはブロック744へと進む。その後、ブロック744および746において、ルーチンは、前記要求されたプログラム実行能力が現在利用可能であるかを決定する。前記要求されたプログラム実行能力が現在利用可能である場合、ルーチンはブロック748へと進んで、前記利用可能な可変プログラム実行能力上における前記1つ以上の通知されたプログラムの実行を開始する。前記要求されたプログラム実行能力が現在利用可能ではない場合、ルーチンはブロック750へと進んで、可変プログラム実行能力についての要求が失敗に終わる(例えば、前記要求された1つ以上のプログラムは実行されない)。他の実施形態において、このような状況において、他の行為が任意選択的にとられ得る(例えば、余剰コンピューティング能力との利用に関する待ち行列へと前記要求を移動させるかまたはこのような移動を少なくともいくつかの実施形態および状況において自動的に行うかについてユーザへ問い合わせる)。加えて、いくつかの実施形態において、可変プログラム実行能力上においてプログラムを実行せよとの要求に応答して、ルーチンは、余剰能力ユーザの1つ以上のプログラムを自動終了させることで、可変プログラム実行能力を解放させることができる(例えば、対応する要求を余剰能力使用量マネージャモジュールへと送る)。
あるいは、1つ以上のプログラムを実行せよとの要求が受信されていないとブロック710において決定された場合、ルーチンはブロック790へと進んで、他の1つ以上の動作を適切に行う。ブロック748、750または790の後、ルーチンはブロック799へと進んだ後、戻る。
いくつかの実施形態において、上記したルーチンによって提供される機能は、別の方法で得ることが可能である(例えば、ルーチン間での機能分割またはより少数のルーチンへの機能統合)ことが理解される。同様に、いくつかの実施形態において、例示のルーチンによって提供される機能は記載された量よりも多いかまたは少ない場合がある(例えば、他の例示のルーチンがこのような機能をそれぞれ含まないかまたは含む場合、または提供される機能の量が変更される場合)。加えて、多様な動作が特定の様態で(例えば、直列または並列の様態で)および/または特定の順序で行われる様子が例示され得るが、当業者であれば、他の実施形態において、これらの動作を他の順序および他の様態で行うことが可能であることを理解する。また、当業者であれば、上記したデータ構造を異なる様態で構築することが可能である(例えば、単一のデータ構造を複数のデータ構造へ分割するかまたは複数のデータ構造を単一のデータ構造に統合することが可能である)ことを理解する。同様に、いくつかの実施形態において、例示のデータ構造が保存し得る情報量は記載の量よりもより多いかまたは少ない場合があり得る(例えば、他の例示のデータ構造がこのような情報をそれぞれ含まないかまたは含む場合、または保存される情報の量または種類が変更される場合)。
上記から、本明細書中、特定の実施形態について例示目的のために記載してきたが、本発明の意図および範囲から逸脱することなく多様な変更が可能であることが理解される。よって、本発明は、添付の特許請求の範囲およびその要素以外の何物によっても制限されない。加えて、本発明の特定の局面を以下の特定の請求項形態中に示すが、本発明者らは、任意の利用可能な請求項形態の本発明の多様な局面を企図する。例えば、本発明のいくつかの局面のみをコンピュータによる読み出しが可能な媒体中に埋め込まれたものとして現在記載しているが、他の局面も同様に具現化され得る。

Claims (15)

  1. ユーザのためのプログラム実行を管理するための、コンピュータによって実行される方法であって、
    プログラム実行サービスの1つまたは複数のプログラムされたコンピューティングシステムが、第1のユーザによる使用のために前記プログラム実行サービスよって予約されたプログラム実行能力を使用して、前記第1のユーザの代わりに第1のプログラムを実行するステップであって、前記第1のプログラムの実行のための前記予約されたプログラム実行能力の前記使用は、前記予約されたプログラム実行能力以外の前記第1のプログラムの実行のためのプログラム実行能力を使用するための前記第1のユーザからの命令に応答して、前記プログラム実行サービスにより行われる、ステップと、
    前記1つまたは複数のプログラムされたコンピューティングシステムが、前記第1のプログラムの実行継続中に、前記予約されたプログラム実行能力を使用して前記第1のユーザの代わりに1つまたは複数の第2のプログラムを実行するための前記第1のユーザからの要求を受信するステップと、
    前記1つまたは複数のプログラムされたコンピューティングシステムが、前記受信した要求に少なくとも部分的に基づき、前記第1のプログラムの実行のための前記予約されたプログラム実行能力の前記使用を終了することを決定するステップ、および前記1つまたは複数の第2のプログラムの実行のために前記予約されたプログラム実行能力の使用を開始するステップと、
    を備える、方法。
  2. 前記第1のプログラムの実行のための前記予約されたプログラム実行能力の前記使用を終了することを決定するステップは、前記1つまたは複数のプログラムされたコンピューティングシステムが、前記第1のプログラムの前記実行を終了するステップを含む、
    ことを特徴とする請求項1に記載の方法。
  3. 前記第1のプログラムの前記実行を終了するステップは、前記1つまたは複数のプログラムされたコンピューティングシステムが、後の使用のための前記第1のプログラムの実行状態に関連する情報を保存するステップを含む、
    ことを特徴とする請求項2に記載の方法。
  4. 前記第1のプログラムの前記実行の前記終了の後、前記1つまたは複数のプログラムされたコンピューティングシステムが、前記プログラム実行サービスの一般的な余剰能力プールおよび前記保存された実行状態情報を使用して前記第1のプログラムの別のインスタンスの実行を開始するステップであって、前記一般的な余剰能力プールは、前記第1のユーザのための前記予約されたプログラム実行能力とは別個のものである、ステップをさらに備える
    ことを特徴とする請求項3に記載の方法。
  5. 前記プログラム実行サービスの前記一般的な余剰能力プールの前記使用は、指定された時間間隔にわたってプログラム実行能力の指定された量の使用に応じて課金される第1の料金を有し、前記予約されたプログラム実行能力は、前記指定された時間間隔にわたってプログラム実行能力の前記指定された量の使用に応じて課金される別個の第2の料金を有し、前記一般的な余剰能力プールを使用して前記第1のプログラムの前記別のインスタンスの実行を開始するステップは、前記第1の料金に基づいて料金を発生させるステップを含む、
    ことを特徴とする請求項4に記載の方法。
  6. 前記1つまたは複数の第2のプログラムの実行のための前記予約されたプログラム実行能力の前記使用が完了した後、前記1つまたは複数のプログラムされたコンピューティングシステムが、前記第1のユーザの前記予約されたプログラム実行能力および前記保存された実行状態情報を使用して前記第1のプログラムのさらなる実行を開始するステップをさらに備える
    ことを特徴とする請求項3に記載の方法。
  7. 前記第1のプログラムの実行のための前記予約されたプログラム実行能力の前記使用を終了することを決定するステップは、前記1つまたは複数のプログラムされたコンピューティングシステムが、前記第1のユーザの前記予約されたプログラム実行能力とは別個の、前記プログラム実行サービスの一般的な余剰能力プールのコンピューティング関連リソースを使用し、前記第1のプログラムの実行を継続するように変更するステップを含む、
    ことを特徴とする請求項1に記載の方法。
  8. 前記第1のプログラムの実行のための前記予約されたプログラム実行能力の前記使用を終了することを決定するステップは、前記1つまたは複数のプログラムされたコンピューティングシステムが、前記第1のプログラムが実行完了の定義された閾値内であることに基づいて、前記1つまたは複数の第2のプログラムの実行のための前記予約されたプログラム実行能力の前記使用を開始することを行う前に、前記予約されたプログラム実行能力を使用して前記第1のプログラムの前記実行を完了せさることを決定するステップを含む、
    ことを特徴とする請求項1に記載の方法。
  9. 前記第1のプログラムの実行のための前記予約されたプログラム実行能力の前記使用は、前記予約されたプログラム実行能力の第1のサブセットを使用するステップおよび前記予約されたプログラム実行能力の第2のサブセットを使用しないステップを含み、前記受信した要求は、前記1つまたは複数の第2のプログラムの実行のために使用する、前記第2のサブセットよりも大きいプログラム実行能力の量の通知を含み、および前記1つまたは複数の第2のプログラムの実行のための前記予約されたプログラム実行能力の前記使用を開始することは、前記予約されたプログラム実行能力の前記第2のサブセットを使用するステップおよび前記プログラム実行サービスのさらなる未使用の余剰能力を使用するステップを含む、
    ことを特徴とする請求項1に記載の方法。
  10. コンピュータシステムに、請求項1から請求項9のいずれか1項に記載の、ユーザのためのプログラム実行を管理するための方法を実行させる、コンピュータ実行可能命令を備えることを特徴とするコンピュータ可読記憶媒体。
  11. ユーザのためのプログラム実行を管理するための、コンピュータ可読記憶媒体に格納されるコンピュータプログラムであって、コンピュータシステムに、請求項1から請求項9のいずれか1項に記載のステップを実行させるためのプログラムコードを備えることを特徴とするコンピュータプログラム。
  12. プログラム実行を管理するように構成されたコンピューティングシステムであって、
    1または複数のプロセッサと、
    前記1または複数のプロセッサのうち少なくとも1つによって実行された場合、オンラインサービスのユーザのためにプログラム実行を管理するシステムマネージャモジュールであって、前記システムマネージャモジュールは、
    前記オンラインサービスの第1のユーザによる使用のために前記オンラインサービスによって予約されたコンピューティング関連リソースを使用して、前記第1のユーザの代わりに第1のプログラムを実行することであって、前記第1のプログラムの実行のための前記予約されたコンピューティング関連リソースの前記使用は、前記第1のプログラムの実行のための他のプログラム実行能力を使用するための前記第1のユーザからの命令に応答して、前記オンラインサービスにより行われ、
    前記第1のプログラムの実行継続中に、前記予約されたコンピューティング関連リソースを使用して前記第1のユーザの代わりに1つまたは複数の第2のプログラムを実行するための前記第1のユーザからの要求を受信し、
    前記受信した要求に少なくとも部分的に基づき、前記第1のプログラムの実行のための前記予約されたコンピューティング関連リソースの前記使用を終了することを決定し、および前記1つまたは複数の第2のプログラムの実行のために前記予約されたコンピューティング関連リソースの使用を開始するように構成された
    ことを特徴とするコンピューティングシステム。
  13. 前記オンラインサービスはプログラム実行サービスであり、前記第1のプログラムの実行のための前記予約されたコンピューティング関連リソースの前記使用を終了することを決定することは、前記プログラム実行サービスが、前記第1のプログラムの前記実行を終了することを含む、
    ことを特徴とする請求項12に記載のコンピューティングシステム。
  14. 前記システムマネージャモジュールは前記プログラム実行サービスの一部であり、前記システムマネージャモジュールはさらに、
    前記第1のプログラムの実行状態に関連する情報を保存し、
    前記保存された実行状態に関連する情報に基づいて、前記予約されたコンピューティング関連リソースを使用することなく、前記第1のプログラムの別のインスタンスの実行を開始するように構成された
    ことを特徴とする請求項13に記載のコンピューティングシステム。
  15. 前記システムマネージャモジュールはさらに、前記予約されたコンピューティング関連リソースではない、前記オンラインサービスのさらなるコンピューティング関連リソースをさらに使用することにより、前記1つまたは複数の第2のプログラムの前記実行を行うように構成された
    ことを特徴とする請求項12に記載のコンピューティングシステム。
JP2015001907A 2010-01-12 2015-01-07 プログラム実行能力の私的利用の管理 Active JP6189875B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/686,273 2010-01-12
US12/686,273 US8924982B2 (en) 2010-01-12 2010-01-12 Managing private use of program execution capacity

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2012548204A Division JP5705877B2 (ja) 2010-01-12 2011-01-10 プログラム実行能力の私的利用の管理

Publications (2)

Publication Number Publication Date
JP2015084252A JP2015084252A (ja) 2015-04-30
JP6189875B2 true JP6189875B2 (ja) 2017-08-30

Family

ID=44259533

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2012548204A Active JP5705877B2 (ja) 2010-01-12 2011-01-10 プログラム実行能力の私的利用の管理
JP2015001907A Active JP6189875B2 (ja) 2010-01-12 2015-01-07 プログラム実行能力の私的利用の管理

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2012548204A Active JP5705877B2 (ja) 2010-01-12 2011-01-10 プログラム実行能力の私的利用の管理

Country Status (7)

Country Link
US (2) US8924982B2 (ja)
EP (1) EP2524311B1 (ja)
JP (2) JP5705877B2 (ja)
CN (1) CN105204924B (ja)
CA (1) CA2786611C (ja)
SG (2) SG10201402407QA (ja)
WO (1) WO2011087982A1 (ja)

Families Citing this family (120)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9122538B2 (en) 2010-02-22 2015-09-01 Virtustream, Inc. Methods and apparatus related to management of unit-based virtual resources within a data center environment
US9058210B2 (en) * 2010-03-23 2015-06-16 Ebay Inc. Weighted request rate limiting for resources
US9342801B2 (en) 2010-03-29 2016-05-17 Amazon Technologies, Inc. Managing committed processing rates for shared resources
US20110238857A1 (en) * 2010-03-29 2011-09-29 Amazon Technologies, Inc. Committed processing rates for shared resources
US8972551B1 (en) * 2010-04-27 2015-03-03 Amazon Technologies, Inc. Prioritizing service requests
US8739170B1 (en) * 2010-06-30 2014-05-27 Amazon Technologies, Inc. Managing requests for computing capacity
US8612330B1 (en) 2010-09-14 2013-12-17 Amazon Technologies, Inc. Managing bandwidth for shared resources
US8694400B1 (en) 2010-09-14 2014-04-08 Amazon Technologies, Inc. Managing operational throughput for shared resources
US8533103B1 (en) 2010-09-14 2013-09-10 Amazon Technologies, Inc. Maintaining latency guarantees for shared resources
US11106479B2 (en) * 2010-09-30 2021-08-31 Amazon Technologies, Inc. Virtual provisioning with implementation resource boundary awareness
US10013662B2 (en) 2010-09-30 2018-07-03 Amazon Technologies, Inc. Virtual resource cost tracking with dedicated implementation resources
US8346921B1 (en) * 2010-11-19 2013-01-01 Amazon Technologies, Inc. Predictive governing of dynamic modification of program execution capacity
US9043798B2 (en) 2010-12-16 2015-05-26 International Business Machines Corporation Remediating gaps between usage allocation of hardware resource and capacity allocation of hardware resource
DE102012103654A1 (de) * 2011-05-17 2012-11-22 International Business Machines Corp. Installieren und Prüfen einer Anwendung auf einer stark genutzten Computerplattform
US9621406B2 (en) 2011-06-30 2017-04-11 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
US8799412B2 (en) 2011-06-30 2014-08-05 Amazon Technologies, Inc. Remote browsing session management
US9037696B2 (en) 2011-08-16 2015-05-19 Amazon Technologies, Inc. Managing information associated with network resources
WO2013029051A2 (en) 2011-08-25 2013-02-28 to fuVIRTUSTREAM, INC. Systems and methods of host-aware resource management involving cluster-based resource pools
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
US9722866B1 (en) 2011-09-23 2017-08-01 Amazon Technologies, Inc. Resource allocation to reduce correlated failures
US9178955B1 (en) 2011-09-27 2015-11-03 Amazon Technologies, Inc. Managing network based content
US9383958B1 (en) 2011-09-27 2016-07-05 Amazon Technologies, Inc. Remote co-browsing session management
US8589385B2 (en) 2011-09-27 2013-11-19 Amazon Technologies, Inc. Historical browsing session management
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
US10693991B1 (en) 2011-09-27 2020-06-23 Amazon Technologies, Inc. Remote browsing session management
US8914514B1 (en) 2011-09-27 2014-12-16 Amazon Technologies, Inc. Managing network based content
US8615431B1 (en) 2011-09-29 2013-12-24 Amazon Technologies, Inc. Network content message placement management
US8819229B1 (en) * 2011-10-04 2014-08-26 Amazon Technologies, Inc. Techniques for accessing logical networks via a programmatic service call
US9313100B1 (en) 2011-11-14 2016-04-12 Amazon Technologies, Inc. Remote browsing session management
US20130132621A1 (en) * 2011-11-23 2013-05-23 Ankit Sihare Method and apparatus to share hardware resources across storage controllers within a system using resource sharing module
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
US9117002B1 (en) 2011-12-09 2015-08-25 Amazon Technologies, Inc. Remote browsing session management
US9009334B1 (en) 2011-12-09 2015-04-14 Amazon Technologies, Inc. Remote browsing session management
US9330188B1 (en) 2011-12-22 2016-05-03 Amazon Technologies, Inc. Shared browsing sessions
US20130179289A1 (en) 2012-01-09 2013-07-11 Microsoft Corportaion Pricing of resources in virtual machine pools
US8904008B2 (en) * 2012-01-09 2014-12-02 Microsoft Corporation Assignment of resources in virtual machine pools
US9170849B2 (en) 2012-01-09 2015-10-27 Microsoft Technology Licensing, Llc Migration of task to different pool of resources based on task retry count during task lease
US9372735B2 (en) 2012-01-09 2016-06-21 Microsoft Technology Licensing, Llc Auto-scaling of pool of virtual machines based on auto-scaling rules of user associated with the pool
US9336321B1 (en) 2012-01-26 2016-05-10 Amazon Technologies, Inc. Remote browsing and searching
US9092405B1 (en) 2012-01-26 2015-07-28 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
US8839087B1 (en) 2012-01-26 2014-09-16 Amazon Technologies, Inc. Remote browsing and searching
US8627195B1 (en) 2012-01-26 2014-01-07 Amazon Technologies, Inc. Remote browsing and searching
US9037975B1 (en) 2012-02-10 2015-05-19 Amazon Technologies, Inc. Zooming interaction tracking and popularity determination
US9183258B1 (en) 2012-02-10 2015-11-10 Amazon Technologies, Inc. Behavior based processing of content
US9137210B1 (en) 2012-02-21 2015-09-15 Amazon Technologies, Inc. Remote browsing session management
US9208316B1 (en) 2012-02-27 2015-12-08 Amazon Technologies, Inc. Selective disabling of content portions
US9374244B1 (en) 2012-02-27 2016-06-21 Amazon Technologies, Inc. Remote browsing session management
US10296558B1 (en) 2012-02-27 2019-05-21 Amazon Technologies, Inc. Remote generation of composite content pages
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
US10686677B1 (en) 2012-05-18 2020-06-16 Amazon Technologies, Inc. Flexible capacity reservations for network-accessible resources
US10555145B1 (en) 2012-06-05 2020-02-04 Amazon Technologies, Inc. Learned configuration of modification policies for program execution capacity
US9438466B1 (en) * 2012-06-15 2016-09-06 Juniper Networks, Inc. Migrating virtual machines between oversubscribed and undersubscribed compute devices
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
US9507612B1 (en) 2012-08-31 2016-11-29 United Services Automobile Association (Usaa) Managing dedicated and floating pool of virtual machines based on demand
US9104607B2 (en) * 2012-10-31 2015-08-11 International Business Machines Corporation Simulation engine for use in disaster recovery virtualization
WO2014107276A1 (en) * 2013-01-04 2014-07-10 Rockethouse, Llc Rendering
US9544348B2 (en) * 2013-01-04 2017-01-10 Google Inc. Cloud-based rendering
US9384517B2 (en) 2013-03-14 2016-07-05 Google Inc. Rendering
US9020945B1 (en) * 2013-01-25 2015-04-28 Humana Inc. User categorization system and method
US9634958B2 (en) 2013-04-02 2017-04-25 Amazon Technologies, Inc. Burst capacity for user-defined pools
WO2014165507A1 (en) 2013-04-02 2014-10-09 Amazon Technologies, Inc. User-defined pools
US9645840B2 (en) 2013-04-02 2017-05-09 Amazon Technologies, Inc. User-defined pools
US9063669B2 (en) * 2013-04-09 2015-06-23 International Business Machines Corporation Self-detecting storage bottleneck while handling sequential I/O operations
WO2014193361A1 (en) * 2013-05-29 2014-12-04 Empire Technology Development Llc Tiered eviction of instances of executing processes
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
US9635041B1 (en) 2014-06-16 2017-04-25 Amazon Technologies, Inc. Distributed split browser content inspection and analysis
US9600312B2 (en) 2014-09-30 2017-03-21 Amazon Technologies, Inc. Threading as a service
US9678773B1 (en) * 2014-09-30 2017-06-13 Amazon Technologies, Inc. Low latency computational capacity provisioning
US9146764B1 (en) 2014-09-30 2015-09-29 Amazon Technologies, Inc. Processing event messages for user requests to execute program code
US9413626B2 (en) 2014-12-05 2016-08-09 Amazon Technologies, Inc. Automatic management of resource sizing
US9588790B1 (en) 2015-02-04 2017-03-07 Amazon Technologies, Inc. Stateful virtual compute system
US9733967B2 (en) 2015-02-04 2017-08-15 Amazon Technologies, Inc. Security protocols for low latency execution of program code
US10069680B1 (en) * 2015-03-16 2018-09-04 Amazon Technologies, Inc. Dedicated virtual computing system servers
US10498807B2 (en) * 2015-10-19 2019-12-03 Citrix Systems, Inc. Multi-tenant multi-session catalogs with machine-level isolation
US9904586B2 (en) * 2015-10-28 2018-02-27 Intel Corporation Interfacing with block-based storage in a processor
US10419965B1 (en) * 2016-01-06 2019-09-17 Cisco Technology, Inc. Distributed meters and statistical meters
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
JP2017182591A (ja) * 2016-03-31 2017-10-05 三菱電機インフォメーションシステムズ株式会社 コンピュータ資源配分決定方法、コンピュータ資源配分決定方法プログラムおよび制御用コンピュータ
US10102040B2 (en) 2016-06-29 2018-10-16 Amazon Technologies, Inc Adjusting variable limit on concurrent code executions
CN108156122B (zh) * 2016-12-06 2021-08-13 中移(杭州)信息技术有限公司 能力开放平台的能力引入方法、系统及设备
US10540210B2 (en) * 2016-12-13 2020-01-21 International Business Machines Corporation Detecting application instances that are operating improperly
US10374880B1 (en) 2017-03-28 2019-08-06 Amazon Technologies, Inc. Methods and apparatus for reconfiguring hosts in provider network environments
JP6374059B2 (ja) * 2017-06-21 2018-08-15 三菱電機インフォメーションシステムズ株式会社 コンピュータ資源配分決定方法、コンピュータ資源配分決定方法プログラムおよび制御用コンピュータ
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
US10901806B2 (en) * 2018-05-01 2021-01-26 International Business Machines Corporation Internet of things resource optimization
US10853115B2 (en) 2018-06-25 2020-12-01 Amazon Technologies, Inc. Execution of auxiliary functions in an on-demand network code execution system
US11146569B1 (en) 2018-06-28 2021-10-12 Amazon Technologies, Inc. Escalation-resistant secure network services using request-scoped authentication information
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
WO2020099924A1 (en) * 2018-11-08 2020-05-22 Iagon As Intelligent, decentralized and autonomous marketplace for distributed computing and storage
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
US11010188B1 (en) 2019-02-05 2021-05-18 Amazon Technologies, Inc. Simulated data object storage using on-demand computation of data objects
US12327133B1 (en) 2019-03-22 2025-06-10 Amazon Technologies, Inc. Application gateways in an on-demand network code execution system
US11861386B1 (en) 2019-03-22 2024-01-02 Amazon Technologies, Inc. Application gateways in an on-demand network code execution system
US11119809B1 (en) 2019-06-20 2021-09-14 Amazon Technologies, Inc. Virtualization-based transaction handling in an on-demand network code execution system
US11190609B2 (en) 2019-06-28 2021-11-30 Amazon Technologies, Inc. Connection pooling for scalable network services
US11159528B2 (en) 2019-06-28 2021-10-26 Amazon Technologies, Inc. Authentication to network-services using hosted authentication information
US11119826B2 (en) 2019-11-27 2021-09-14 Amazon Technologies, Inc. Serverless call distribution to implement spillover while avoiding cold starts
US11714682B1 (en) 2020-03-03 2023-08-01 Amazon Technologies, Inc. Reclaiming computing resources in an on-demand code execution system
CN115606164A (zh) * 2020-05-14 2023-01-13 三星电子株式会社(Kr) 用于在通信系统中升级随机接入网络的方法和装置
CN111831450B (zh) * 2020-07-20 2023-07-28 北京百度网讯科技有限公司 用于分配服务器资源的方法、装置、电子设备及存储介质
US11550713B1 (en) 2020-11-25 2023-01-10 Amazon Technologies, Inc. Garbage collection in distributed systems using life cycled storage roots
US11593270B1 (en) 2020-11-25 2023-02-28 Amazon Technologies, Inc. Fast distributed caching using erasure coded object parts
US12095774B2 (en) * 2020-12-11 2024-09-17 International Business Machines Corporation Control of usage of computing services based on dynamic grouping
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
US12015603B2 (en) 2021-12-10 2024-06-18 Amazon Technologies, Inc. Multi-tenant mode for serverless code execution
US12381878B1 (en) 2023-06-27 2025-08-05 Amazon Technologies, Inc. Architecture for selective use of private paths between cloud services
US12476978B2 (en) 2023-09-29 2025-11-18 Amazon Technologies, Inc. Management of computing services for applications composed of service virtual computing components

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6799208B1 (en) 2000-05-02 2004-09-28 Microsoft Corporation Resource manager architecture
US6993764B2 (en) * 2000-06-30 2006-01-31 The Regents Of The University Of California Buffered coscheduling for parallel programming and enhanced fault tolerance
US7139821B1 (en) * 2000-10-20 2006-11-21 Sun Microsystems, Inc. Method and apparatus for creating and deploying applications from a server application
JP2003131892A (ja) 2001-10-25 2003-05-09 Matsushita Electric Ind Co Ltd タスク実行制御装置及びタスク実行制御方法
US7093004B2 (en) * 2002-02-04 2006-08-15 Datasynapse, Inc. Using execution statistics to select tasks for redundant assignment in a distributed computing platform
CA2519221A1 (en) 2003-04-03 2004-10-14 International Business Machines Corporation Apparatus and method for providing metered capacity of computer resources
US20050060704A1 (en) * 2003-09-17 2005-03-17 International Business Machines Corporation Managing processing within computing environments including initiation of virtual machines
JP4197303B2 (ja) 2004-02-17 2008-12-17 株式会社日立製作所 計算機リソース管理方法及び実施装置並びに処理プログラム
US8230426B2 (en) * 2004-10-06 2012-07-24 Digipede Technologies, Llc Multicore distributed processing system using selection of available workunits based on the comparison of concurrency attributes with the parallel processing characteristics
US8140371B2 (en) * 2005-02-18 2012-03-20 International Business Machines Corporation Providing computing service to users in a heterogeneous distributed computing environment
US8103642B2 (en) * 2006-02-03 2012-01-24 Oracle International Corporation Adaptive region locking
US7792944B2 (en) * 2006-03-31 2010-09-07 Amazon Technologies, Inc. Executing programs based on user-specified constraints
US8190682B2 (en) * 2006-03-31 2012-05-29 Amazon Technologies, Inc. Managing execution of programs by multiple computing systems
US20080080396A1 (en) * 2006-09-28 2008-04-03 Microsoft Corporation Marketplace for cloud services resources
JP5000456B2 (ja) 2007-10-31 2012-08-15 ヒューレット−パッカード デベロップメント カンパニー エル.ピー. 資源管理システム、資源管理装置およびその方法
US20110055841A1 (en) 2008-06-24 2011-03-03 Yuuki Senno Access control apparatus, access control program, and access control method
US8364481B2 (en) * 2008-07-02 2013-01-29 Google Inc. Speech recognition with parallel recognition tasks
US7870044B2 (en) * 2008-10-02 2011-01-11 Verizon Patent And Licensing Inc. Methods, systems and computer program products for a cloud computing spot market platform
US8249904B1 (en) * 2008-12-12 2012-08-21 Amazon Technologies, Inc. Managing use of program execution capacity
US8689225B2 (en) * 2009-09-29 2014-04-01 Amazon Technologies, Inc. Attributing causality to program execution capacity modifications
US8739170B1 (en) * 2010-06-30 2014-05-27 Amazon Technologies, Inc. Managing requests for computing capacity

Also Published As

Publication number Publication date
CA2786611C (en) 2016-12-13
EP2524311B1 (en) 2018-04-04
US8924982B2 (en) 2014-12-30
CN102934083A (zh) 2013-02-13
SG10201402407QA (en) 2014-07-30
US20150121400A1 (en) 2015-04-30
SG182420A1 (en) 2012-08-30
US10114668B2 (en) 2018-10-30
WO2011087982A1 (en) 2011-07-21
JP2015084252A (ja) 2015-04-30
CN105204924B (zh) 2017-08-25
EP2524311A1 (en) 2012-11-21
JP2013517544A (ja) 2013-05-16
JP5705877B2 (ja) 2015-04-22
US20110173637A1 (en) 2011-07-14
CN105204924A (zh) 2015-12-30
CA2786611A1 (en) 2011-07-21
EP2524311A4 (en) 2015-06-03

Similar Documents

Publication Publication Date Title
JP6189875B2 (ja) プログラム実行能力の私的利用の管理
US12229077B2 (en) Managing use of program execution capacity
US8495648B1 (en) Managing allocation of computing capacity
JP5944021B2 (ja) コンピューティング能力に対する要求を動的に管理するための方法およびシステム
US8966030B1 (en) Use of temporarily available computing nodes for dynamic scaling of a cluster
US8739170B1 (en) Managing requests for computing capacity
US9374243B1 (en) Managing operational throughput for shared resources
US8612330B1 (en) Managing bandwidth for shared resources
CN102934083B (zh) 管理程序执行能力的私有使用
US10592262B1 (en) Managing shared computing environments
HK40047099A (en) Intelligent, decentralized and autonomous marketplace for distributed computing and storage

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20151209

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160119

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20160419

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20161206

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170405

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20170417

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170803

R150 Certificate of patent or registration of utility model

Ref document number: 6189875

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250