(57)【要約】プログラムの実行（例えば、１つ以上のコンピューティングシステムの余剰プログラム実行能力の利用）を管理するための技術について、記載する。例えば、ユーザが余剰コンピューティング能力の私的プールを優先的に利用することができる場合、前記ユーザに割り当てられた専用プログラム実行能力のうち未使用状態であるものに基づいて、前記余剰コンピューティング能力の私的プールを前記ユーザのために維持することができる。いくつかの実施形態において、複数のユーザ（任意選択的に例を挙げると、私的余剰能力プールと関連付けられたユーザ）が利用することが可能な一般的な非私的な余剰コンピューティング能力プールに加えて、このような私的余剰能力プールがさらに提供され得る。いくつかのこのような状況において、プログラム実行を一時的に行うために余剰コンピューティング能力を利用することが可能であり、これにより、前記余剰能力の他の好適な用途が発生した場合、いつでも前記余剰能力を用いたプログラム実行を終了させることが可能となる。
2013517544.tif 000002
【特許請求の範囲】
【請求項１】
ユーザのためのプログラム実行を管理するための、コンピュータによって実行される方法であって、
第１のユーザのための１つ以上のコンピューティングノードのプログラム実行能力を指定期間において備蓄しておくことで、前記備蓄されたプログラム実行能力を用いて前記指定期間においてプログラムを実行するための専用アクセスを前記第１のユーザが得ることが可能となるステップであって、前記備蓄されたプログラム実行能力は、プログラム実行サービスのユーザのためにプログラムを実行する当該プログラム実行サービスの複数のコンピューティングノードによって提供される利用可能なプログラム実行能力のサブセットであり、前記複数のコンピューティングノードはそれぞれ、前記ユーザのうち１つ以上のために１つ以上のプログラムを実行するように構成することができる、ステップと、
前記指定期間のうち第１の期間サブセットにおいて前記備蓄されたプログラム実行能力を用いて前記第１のユーザのために１つ以上の第１のプログラムを実行するステップであって、前記１つ以上の第１のプログラムを実行するステップは、前記第１のユーザによる前記備蓄されたプログラム実行能力への専用アクセスを用いるための第１の要求に応答する、ステップと、
前記第１のユーザから第２の要求を受信して前記指定期間のうち第２の期間サブセットにおいて前記第１のユーザのために１つ以上の第２のプログラムを実行するステップであって、前記第２の期間サブセットは前記第１の期間サブセットと異なり、前記第２の要求は、前記第１のユーザが専用アクセスを持っていない前記プログラム実行サービスの前記利用可能なプログラム実行能力の未使用状態である余剰能力を用いて前記１つ以上の第２のプログラムを実行することであり、前記プログラム実行サービスの前記余剰能力の利用は、前記プログラム実行サービスによって制御される第１のプログラム実行特性を有し、前記第１のプログラム実行特性は、前記プログラム実行サービスによって制御される第２のプログラム実行特性と異なり、前記プログラム実行サービスは、前記備蓄されたプログラム実行能力の利用から発生する、ステップと、
前記第１のユーザのための前記備蓄されたプログラム実行能力を用いて、前記１つ以上の第２のプログラムを前記第２の要求のために前記第２の期間サブセットにおいて実行することを自動決定するステップであって、前記備蓄されたプログラム実行能力を用いることを自動決定するステップは、前記プログラム実行サービスの１つ以上のプログラムされたコンピューティングシステムによって行なわれ、そうしなければ前記第２の期間サブセットにおいて前記備蓄されたプログラム実行能力への前記専用アクセスを用いることのない前記第１のユーザに少なくとも部分的に基づく、ステップと
前記第１のユーザのために前記第２の期間サブセットにおいて前記１つ以上の第２のプログラムの実行を開始するステップであって、前記開始するステップは、前記備蓄されたプログラム実行能力を用いて行われ、前記１つ以上の第２のプログラムの実行は、前記備蓄されたプログラム実行能力の利用に基づいて、前記第２のプログラム実行特性のうち少なくとも一部を有する、ステップと、
を含む、方法。
【請求項２】
前記第１のユーザのために前記指定期間の第３の期間サブセットにわたって１つ以上の第３のプログラムを実行せよとの第３の要求を前記第１のユーザから受信するステップであって、前記第３の要求は、前記プログラム実行サービスの前記未使用状態である余剰能力を用いて前記１つ以上の第３のプログラムを実行することである、ステップと、
前記得第３の要求のために前記第３の期間サブセットにわたって前記１つ以上の第３のプログラムを実行する際に、前記備蓄されたプログラム実行能力を前記第１のユーザのために用いないことを自動的に決定するステップであって、前記備蓄されたプログラム実行能力を用いないことを自動的に決定するステップは、そうしなければ前記第３の期間サブセットにおいて前記第１のユーザによって用いられる前記備蓄されたプログラム実行能力に少なくとも部分的に基づく、ステップと、
前記１つ以上の第３のプログラムの実行を前記第１のユーザのために前記第３の期間サブセットにおいて開始しようとするステップであって、前記開始しようとするステップは、前記プログラム実行サービスの前記未使用状態である余剰能力を用いることによって行われる、ステップと、
をさらに含む、請求項１に記載の方法。
【請求項３】
前記未使用状態である余剰能力を用いた前記１つ以上の第３のプログラムの実行は、前記第１のプログラム実行特性を有し、前記第１のプログラム実行特性は、第１の指定量のプログラム実行能力について前記第１のユーザに課金される第１の料金を含み、前記方法は、前記プログラム実行サービスの前記未使用状態である余剰能力を用いて前記１つ以上の第３のプログラムの実行が開始された後でありかつ前記１つ以上の第３のプログラムの実行が完了する前において、
前記第１のユーザのための前記備蓄されたプログラム実行能力のうち少なくとも一部が利用可能であると自動的に決定するステップと、
前記１つ以上の第３のプログラムを実行して、前記少なくともいくつかの利用可能な備蓄されたプログラム実行能力を利用することを継続するように変更することを自動的に決定するステップと、
前記プログラム実行サービスの余剰能力の代わりに前記少なくともいくつかの利用可能な備蓄されたプログラム実行能力を用いて前記１つ以上の第３のプログラムの前記継続的実行を開始するステップであって、前記１つ以上の第３のプログラムの前記継続的実行は、前記少なくともいくつかの第２のプログラム実行特性を有し、前記少なくともいくつかの第２のプログラム実行特性は、第２の指定量のプログラム実行能力について前記第１のユーザに課金される第２の料金を含み、前記第２の料金は前記第１の料金と異なる、ステップと、
を含む、請求項２に記載の方法。
【請求項４】
前記第２のユーザのために前記指定期間の第３の期間サブセットにわたって１つ以上の第３のプログラムを実行せよとの第３の要求を第２のユーザから受信するステップであって、前記第３の要求は、前記１つ以上の第３のプログラムの実行を前記プログラム実行サービスの前記未使用状態である余剰能力を用いて行うことであり、前記第２のユーザは前記第１のユーザと異なる、ステップと、
前記第３の要求のために前記第３の期間サブセットにわたって前記１つ以上の第３のプログラムを実行する際に、前記備蓄されたプログラム実行能力を前記第１のユーザのために用いないことを自動的に決定するステップであって、前記備蓄されたプログラム実行能力を用いないことを自動的に決定するステップは、前記第１のユーザと異なる前記第２のユーザに少なくとも部分的に基づき、かつ、他の場合において前記第３の期間サブセットにおいて前記第１のユーザによって用いられない前記備蓄されたプログラム実行能力と無関係である、ステップと、
前記１つ以上の第３のプログラムの実行を前記第２のユーザのために前記第３の期間サブセットにおいて開始しようとするステップであって、前記開始しようとするステップは、前記プログラム実行サービスの前記未使用状態である余剰能力を用いることによって行われる、ステップと、
をさらに含む、請求項１に記載の方法。
【請求項５】
前記１つ以上の第２のプログラムを前記第１のユーザのために実行せよとの前記第１のユーザからの前記第２の要求は、用いられるべき複数のコンピューティングノードの数量の通知を含み、他の場合において前記第２の期間サブセットにおいて前記第１のユーザによって用いられない前記第１のユーザのための前記備蓄されたプログラム実行能力は、前記１つ以上のコンピューティングノードの利用可能な数量に対応し、前記１つ以上のコンピューティングノードの利用可能な数量は、前記通知された数量よりも少量であり、前記備蓄されたプログラム実行能力を用いることにより前記１つ以上の第２のプログラムの実行を前記第１のユーザのために開始するステップは、前記１つ以上のコンピューティングノードの前記利用可能な数量を用いるステップを含み、前記方法は、前記１つ以上の第２のプログラムの他の実行を前記第１のユーザのために前記第２の期間サブセットにおいて開始するステップをさらに含み、前記開始するステップは、前記プログラム実行サービスの前記未使用状態である余剰能力を用いることによって行われ、前記他の実行を開始するステップは、前記通知された数量と前記利用可能な数量との間の数値差である数量の１つ以上の未使用状態である余剰コンピューティングノードを用いるステップを含む、
請求項１に記載の方法。
【請求項６】
前記方法は、前記備蓄されたプログラム実行能力を私的余剰コンピューティング能力プールの一部として前記第１のユーザのために前記指定期間において用いることを自動的に決定するステップをさらに含み、前記指定期間において、前記備蓄されたプログラム実行能力は用いられておらず、これにより、前記第１のユーザへと専用アクセスが提供され、前記方法はまた、前記備蓄されたプログラム実行能力の前記第１のユーザのための利用を自動的に監視して、前記備蓄されたプログラム実行能力が前記私的余剰コンピューティング能力プールのために利用可能かを決定するステップをさらに含む、請求項１に記載の方法。
【請求項７】
前記備蓄されたプログラム実行能力を前記私的余剰コンピューティング能力プールの一部として前記第１のユーザのために用いることを自動的に決定するステップは、前記第１のユーザの知識無しに行われる、請求項６に記載の方法。
【請求項８】
前記備蓄されたプログラム実行能力を前記第１のユーザのために用いて前記１つ以上の第２のプログラムを前記第２の要求のために前記第２の期間サブセットにおいて実行するかを自動的に決定するステップは、前記備蓄されたプログラム実行能力を前記プログラム実行サービスの前記未使用状態である余剰能力の代わりに用いることを決定するステップを含み、前記備蓄されたプログラム実行能力を前記私的余剰コンピューティング能力プールの一部として前記第１のユーザのために用いて前記１つ以上の第２のプログラムを前記第２の要求のために実行することを自動的に決定するステップは、前記第１のユーザの知識無しに行われる、請求項１に記載の方法。
【請求項９】
前記備蓄されたプログラム実行能力の利用からの前記第２のプログラム実行特性は、前記第１のユーザのための前記備蓄されたプログラム実行能力の保証された利用可能性を含み、前記プログラム実行サービスの余剰能力の利用のための前記第１のプログラム実行特性は、前記余剰能力の継続的利用可能性の保証が無いことを含む、請求項１に記載の方法。
【請求項１０】
前記備蓄されたプログラム実行能力の利用からの前記第２のプログラム実行特性は、第１の進行中の料金を含み、前記第１の進行中の料金は、指定量の前記備蓄されたプログラム実行能力を指定された時間間隔にわたって用いた場合に前記第１のユーザに課金され、前記プログラム実行サービスの余剰能力の利用のための前記第１のプログラム実行特性は第２の料金を含み、前記第２の料金は、前記指定量の前記余剰能力を前記指定された時間間隔を用いた場合に前記第１のユーザに課金され、前記第１の料金は前記第２の料金よりも少額であり、前記備蓄されたプログラム実行能力を前記第１のユーザのために前記１つ以上の第２のプログラムを実行するために用いることを自動的に決定するステップは、前記１つ以上の第２のプログラムの実行のために前記備蓄されたプログラム実行能力を利用したために前記より低い第１の料金が課金された前記第１のユーザに少なくとも部分的に基づき、前記１つ以上の第２のプログラムの実行のための前記少なくともいくつかの第２のプログラム実行特性は、前記より低い第１の料金の利用を含む、請求項１に記載の方法。
【請求項１１】
前記備蓄されたプログラム実行能力は、複数の備蓄されたコンピューティングノードの前記第１のユーザのための利用に基づき、前記複数の備蓄されたコンピューティングノードは全て、前記第１の期間サブセット以外の前記指定された期間の一部において前記プログラム実行サービスの前記未使用状態である余剰能力の代わりに用いられるべき前記第１のユーザによって指定され、前記第１のユーザのための前記１つ以上の第２のプログラムの実行の開始を前記備蓄されたプログラム実行能力を用いることによって行うステップは、前記複数の備蓄されたコンピューティングノードのサブセットを用いるステップを含み、前記方法は、１つ以上の他の第３のプログラムの実行を前記第１のユーザを代表するか、そのために前記指定された期間の１つ以上の部位において開始するステップをさらに含み、前記開始するステップは、前記複数の備蓄されたコンピューティングノードのうち少なくともいくつかを用いることにより、行われる、請求項１に記載の方法。
【請求項１２】
前記備蓄されたプログラム実行能力を用いた前記１つ以上の第２のプログラムの実行時において、
前記第１のユーザが有する前記備蓄されたプログラム実行能力への前記専用アクセスを利用して、１つ以上の第３のプログラムを前記第１のユーザのために実行せよとの第３の要求を前記第１のユーザから受信するステップと、
前記備蓄されたプログラム実行能力を用いた前記１つ以上の第２のプログラムの実行を終了することを前記受信された第３の要求に基づいて決定するステップと、
前記１つ以上の第３のプログラムの前記第１のユーザのための実行を開始するステップであって、前記実行を開始するステップは、前記１つ以上の第２のプログラムの実行の代わりに前記備蓄されたプログラム実行能力を用いることによって行われる、ステップと、
をさらに含む、請求項１に記載の方法。
【請求項１３】
前記備蓄されたプログラム実行能力を用いた前記１つ以上の第２のプログラムの実行時において、
前記第１のユーザが有する前記備蓄されたプログラム実行能力への前記専用アクセスを利用して、１つ以上の第３のプログラムを前記第１のユーザのために実行せよとの第３の要求を前記第１のユーザから受信するステップと、
前記受信された第３の要求に応答して、前記プログラム実行サービスの余剰能力を用いるための前記１つ以上の第２のプログラムの継続的実行を変更することを自動的に決定し、前記１つ以上の第２のプログラムの前記継続的実行を前記備蓄されたプログラム実行能力の代わりに前記余剰能力を用いて開始し、前記１つ以上の第２のプログラムの前記継続的実行は、前記第１のプログラム実行特性を有する、ステップと、
をさらに含む、請求項１に記載の方法。
【請求項１４】
前記１つ以上の第２のプログラムの前記備蓄されたプログラム実行能力を用いた実行に関する前記少なくともいくつかの第２のプログラム実行特性は第１の料金を含み、前記第１の料金は、第１の指定量のプログラム実行能力について前記第１のユーザに課金され、前記余剰能力を用いた前記１つ以上の第２のプログラムの継続的実行に関する前記第１のプログラム実行特性は第２の料金を含み、前記第２の料金は、第２の指定量のプログラム実行能力について前記第１のユーザに課金され、前記第２の料金は前記第１の料金と異なる、請求項１３に記載の方法。
【請求項１５】
前記複数のコンピューティングノードは、複数の物理的なコンピューティングシステムそれぞれについて、前記物理的なコンピューティングシステムによってホストされた複数の仮想マシンを含み、前記複数の仮想マシンはそれぞれ、少なくとも１つのプログラムを実行するように構成可能であり、前記備蓄されたプログラム実行能力のために用いられる前記１つ以上のコンピューティングノードは、それぞれホストされた仮想マシンである、請求項１に記載の方法。
【請求項１６】
１つ以上の第３のプログラムを前記第２のユーザのために前記指定期間の第３の期間サブセットにおいて実行せよとの第３の要求を第２のユーザから受信するステップであって、前記第３の要求は、前記１つ以上の第３のプログラムの実行を前記プログラム実行サービスの前記未使用状態である余剰能力を用いて行うことであり、前記第２のユーザは前記第１のユーザと異なる、ステップと、
前記備蓄されたプログラム実行能力を前記第１のユーザのために用いないことを自動的に決定し、前記第３の要求のために前記第３の期間サブセットにおいて前記１つ以上の第３のプログラムを実行するステップであって、前記備蓄されたプログラム実行能力を用いないことを自動的に決定するステップは、前記第１のユーザと異なる前記第２のユーザに少なくとも部分的に基づき、かつ、そうでなければ前記第３の期間サブセットにおいて前記第１のユーザによって用いられない前記備蓄されたプログラム実行能力と無関係である、ステップと、
前記１つ以上の第３のプログラムの前記第２のユーザのための前記第３の期間サブセットにおける実行の開始を試行するステップであって、前記試行するステップは、前記プログラム実行サービスの前記未使用状態である余剰能力を用いることにより、行われる、ステップと
をさらに有する請求項１〜３のうちいずれかに記載の方法。
【請求項１７】
前記１つ以上の第２のプログラムを前記第１のユーザのために実行せよとの前記第１のユーザからの前記第２の要求は、用いられるべき複数のコンピューティングノードの数量の通知を含み、前記第１のユーザのための前記備蓄されたプログラム実行能力は、そうでなければ前記第２の期間サブセットにおいて前記第１のユーザによって用いられず、前記通知された数量よりも少量である前記１つ以上のコンピューティングノードの利用可能な数量に対応し、前記備蓄されたプログラム実行能力を用いることにより前記１つ以上の第２のプログラムの実行を前記第１のユーザのために開始するステップは、前記利用可能な数量の前記１つ以上のコンピューティングノードを用いることを含み、前記方法は、前記１つ以上の第２のプログラムの前記第１のユーザのための前記第２の期間サブセットにおける他の実行を開始するステップをさらに含み、前記他の実行を開始するステップは、前記プログラム実行サービスの前記未使用状態である余剰能力を用いることによって行われ、前記他の実行を開始するステップは、前記通知された数量と前記利用可能な数量との間の数値差である数量の１つ以上の未使用状態である余剰コンピューティングノードを用いるステップを含む、
請求項１〜３または１６のうちいずれかに記載の方法。
【請求項１８】
前記方法は、前記備蓄されたプログラム実行能力を私的余剰コンピューティング能力プールの一部として前記第１のユーザのために前記指定期間において用いることを自動的に決定するステップをさらに含み、前記指定期間において、前記備蓄されたプログラム実行能力は用いられておらず、これにより、前記第１のユーザに専用アクセスが提供され、前記方法はまた、前記備蓄されたプログラム実行能力の前記第１のユーザのための利用を自動的に監視して、前記備蓄されたプログラム実行能力の前記私的余剰コンピューティング能力プールについての利用可能性を決定するステップをさらに含む、
請求項１〜３または１６〜１７のうちいずれかに記載の方法。
【請求項１９】
前記備蓄されたプログラム実行能力を前記私的余剰コンピューティング能力プールの一部として前記第１のユーザのために用いることを自動的に決定するステップは、前記第１のユーザの知識無しに行われる、
請求項１８に記載の方法。
【請求項２０】
前記備蓄されたプログラム実行能力を前記第１のユーザのために用いて、前記第２の期間サブセットにおいて前記１つ以上の第２のプログラムを前記第２の要求のために実行することを自動的に決定するステップは、前記プログラム実行サービスの前記未使用状態である余剰能力の代わりに前記備蓄されたプログラム実行能力を用いることを決定するステップを含み、前記備蓄されたプログラム実行能力を前記私的余剰コンピューティング能力プールの一部として前記第１のユーザのために用いて、前記１つ以上の第２のプログラムを前記第２の要求を実行することを自動的に決定するステップは、前記第１のユーザの知識無しに行われる、
請求項１〜３または１６〜１９のうちいずれかに記載の方法。
【請求項２１】
前記備蓄されたプログラム実行能力の利用からの前記第２のプログラム実行特性は、前記備蓄されたプログラム実行能力の前記第１のユーザのための保証された利用可能性を含み、前記プログラム実行サービスの前記余剰能力を用いるための前記第１のプログラム実行特性は、前記余剰能力の継続的利用可能性の保証が無いことを含む、請求項１〜３または１６〜２０のうちいずれかに記載の方法。
【請求項２２】
前記備蓄されたプログラム実行能力の利用からの前記第２のプログラム実行特性は、指定量の前記備蓄されたプログラム実行能力が指定された時間間隔にわたって利用された場合に前記第１のユーザに課金される第１の進行中の料金を含み、前記プログラム実行サービスの前記余剰能力を用いるための前記第１のプログラム実行特性は、前記指定量の前記余剰能力が前記指定された時間間隔にわたって利用された場合に前記第１のユーザに課金される第２の料金を含み、前記第１の料金は前記第２の料金よりも少額であり、前記備蓄されたプログラム実行能力を前記第１のユーザのために用いて前記１つ以上の第２のプログラムを実行することを自動的に決定するステップは、前記１つ以上の第２のプログラムの実行について前記備蓄されたプログラム実行能力を用いたために前記より低い第１の料金が課金されている前記第１のユーザに少なくとも部分的に基づき、前記１つ以上の第２のプログラムの実行のための前記少なくともいくつかの第２のプログラム実行特性は、前記より低い第１の料金の利用を含む、
請求項１〜３または１６〜２１のうちいずれかに記載の方法。
【請求項２３】
前記備蓄されたプログラム実行能力は、複数の備蓄されたコンピューティングノードの前記第１のユーザのための利用に基づき、前記複数の備蓄されたコンピューティングノードは全て、前記第１の期間サブセット以外の前記指定された期間の一部において前記プログラム実行サービスの前記未使用状態である余剰能力の代わりに用いられるべきものとして前記第１のユーザによって指定され、前記備蓄されたプログラム実行能力を用いることにより、前記１つ以上の第２のプログラムの前記第１のユーザのための実行を開始するステップは、前記複数の備蓄されたコンピューティングノードのサブセットを用いるステップを含み、前記方法は、前記指定された期間のうち１つ以上の部位における１つ以上の他の第３のプログラムの実行を前記第１のユーザのために開始するステップをさらに含み、前記開始するステップは、前記複数の備蓄されたコンピューティングノードのうち少なくともいくつかを用いることにより、行われる、
請求項１〜３または１６〜２２のうちいずれかに記載の方法。
【請求項２４】
前記備蓄されたプログラム実行能力を用いた前記１つ以上の第２のプログラムの実行時において、
前記第１のユーザの前記備蓄されたプログラム実行能力への専用アクセスを用いて１つ以上の第３のプログラムを前記第１のユーザのために実行せよとの第３の要求を前記第１のユーザから受信するステップと、
前記受信された第３の要求に基づいて、前記備蓄されたプログラム実行能力を用いた前記１つ以上の第２のプログラムの実行を終了することを決定するステップと、
前記１つ以上の第２のプログラムの実行の代わりに前記備蓄されたプログラム実行能力を用いることにより、前記１つ以上の第３のプログラムの前記第１のユーザのための実行を開始するステップと、
をさらに含む、請求項１〜３または１６〜２３のうちいずれかに記載の方法。
【請求項２５】
前記備蓄されたプログラム実行能力を用いた前記１つ以上の第２のプログラムの実行時において、
前記第１のユーザの前記備蓄されたプログラム実行能力への専用アクセスを用いて１つ以上の第３のプログラムを前記第１のユーザのために実行せよとの第３の要求を前記第１のユーザから受信するステップと、
前記受信された第３の要求に応答して、前記プログラム実行サービスの余剰能力を用いるための前記１つ以上の第２のプログラムの継続的実行を変更することを自動的に決定し、前記１つ以上の第２のプログラムの前記継続的実行を前記備蓄されたプログラム実行能力の代わりに前記余剰能力を用いて開始し、前記１つ以上の第２のプログラムの前記継続的実行は、前記第１のプログラム実行特性を有する、ステップと、
をさらに含む、請求項１〜３または１６〜２４のうちいずれかに記載の方法。
【請求項２６】
前記備蓄されたプログラム実行能力を用いた前記１つ以上の第２のプログラムの実行についての前記少なくともいくつかの第２のプログラム実行特性は第１の料金を含み、前記第１の料金は、第１の指定量のプログラム実行能力について前記第１のユーザに課金され、前記余剰能力を用いた前記１つ以上の第２のプログラムの継続的実行に関する前記第１のプログラム実行特性は第２の料金を含み、前記第２の料金は、第２の指定量のプログラム実行能力について前記第１のユーザに課金され、前記第２の料金は前記第１の料金と異なる、請求項２５に記載の方法。
【請求項２７】
前記複数のコンピューティングノードは、複数の物理的なコンピューティングシステムそれぞれについて、前記物理的なコンピューティングシステムによってホストされた複数の仮想マシンを含み、前記複数の仮想マシンはそれぞれ、少なくとも１つのプログラムを実行するように構成可能であり、前記備蓄されたプログラム実行能力のために用いられる前記１つ以上のコンピューティングノードは、それぞれホストされた仮想マシンである、請求項１〜３または１６〜２６のうちいずれかに記載の方法。
【請求項２８】
コンピュータによる読み出しが可能な記憶媒体であって、前記記憶媒体のコンテンツにより、コンピューティングシステムは、
指定期間にわたるプログラム実行時において用いられる専用アクセスを第１のユーザが有する１つ以上の備蓄されたコンピューティング関連リソースを提供するステップであって、前記備蓄されたコンピューティング関連リソースは、ネットワークアクセシブルサービスによって管理され、前記ネットワークアクセシブルサービスは、前記第１のユーザから遠隔であり、かつ、前記指定期間のうち通知された部位における前記第１のユーザによる専用アクセスのために用いられない、ステップと、
前記第１のユーザのための前記通知された部位における１つ以上の第１のプログラムの実行時において、少なくとも１つの通知されたコンピューティング関連リソースを用いよとの前記第１のユーザからの通知に自動的に応答するステップであって、前記少なくとも１つのコンピューティング関連リソースは、前記遠隔サービスのうち未使用状態である余剰コンピューティング関連リソースでありかつ前記第１のユーザが専用アクセスを持っていないものとして通知され、前記自動応答ステップは、
前記第１のユーザのための前記備蓄されたコンピューティング関連リソースが前記少なくとも１つの通知されたコンピューティング関連リソースを含むことを決定し、前記１つ以上の第１のプログラムの実行時において前記第１のユーザのために前記通知された部位において前記遠隔サービスの前記未使用状態である余剰コンピューティング関連リソースの代わりに前記備蓄されたコンピューティング関連リソースを用いることを決定するステップと、
前記１つ以上の第１のプログラムの実行時において前記第１のユーザのために前記通知された部位において、前記備蓄されたコンピューティング関連リソースの利用を開始するステップと、
を含む、ステップと、
を含む方法を行うことができる、コンピュータによる読み出しが可能な記憶媒体。
【請求項２９】
前記サービスはプログラム実行サービスであり、前記プログラム実行サービスのユーザのプログラムを実行するように構成することが可能な複数のコンピューティングノードを提供し、前記１つ以上の備蓄されたコンピューティング関連リソースは、１つ以上のプログラムの実行において前記第１のユーザによって用いられるために割り当てられた前記複数のコンピューティングノードのうち１つ以上を含み、前記少なくとも１つの通知されたコンピューティング関連リソースは、前記複数のコンピューティングノードの１つ以上のうち指定された数量であり、前記備蓄されたコンピューティング関連リソースの利用を前記１つ以上の第１のプログラムの実行時において開始するステップは、前記第１のユーザによって用いられるように割り当てられた前記１つ以上のコンピューティングノードからの少なくとも前記指定された数量のコンピューティングノードによって前記１つ以上の第１のプログラムの実行を開始するステップを含む、
請求項２８に記載の、コンピュータによる読み出しが可能な記憶媒体。
【請求項３０】
前記第１のユーザが専用アクセスを有する前記１つ以上の備蓄されたコンピューティング関連リソースを提供するステップは、１つ以上の第２のプログラムを前記第１のユーザのために前記指定期間の第２の部位にわたって前記第１のユーザの前記専用アクセスを用いて実行するステップを含み、前記第２の部位は前記通知された部位と異なり、前記第１のユーザのための前記少なくとも指定された数量のコンピューティングノードによる前記１つ以上の第１のプログラムの実行は第１のプログラム実行特性を有し、前記第１のプログラム実行特性は、第２のプログラム実行特性と異なり、前記第２のプログラム実行特性は、前記遠隔サービスの前記未使用状態である余剰コンピューティング関連リソースの利用に起因して発生する、
請求項２９に記載の、コンピュータによる読み出しが可能な記憶媒体。
【請求項３１】
少なくとも１つの通知されたコンピューティング関連リソースを利用せよとの前記第１のユーザからの前記要求は、コンピューティング関連リソースの種類の通知を含み、前記少なくとも１つの通知されたコンピューティング関連リソースは、前記通知された種類の決定された量である、請求項２８に記載の、コンピュータによる読み出しが可能な記憶媒体。
【請求項３２】
前記少なくとも１つの通知されたコンピューティング関連リソースは、永続的記憶、メモリおよびプロセッササイクルのうち少なくとも１つである、請求項２８に記載の、コンピュータによる読み出しが可能な記憶媒体。
【請求項３３】
前記コンピュータによる読み出しが可能な媒体は、前記コンテンツを保存する前記コンピューティングシステムのメモリであり、前記コンテンツは命令であり、前記命令が実行されると、前記命令は、前記方法を行うように前記コンピューティングシステムをプログラムする、請求項２８に記載の、コンピュータによる読み出しが可能な記憶媒体。
【請求項３４】
ユーザのためのプログラム実行を管理するように構成されたコンピューティングシステムであって、
１つ以上のプロセッサと、
システムマネージャモジュールと
を含み、
前記システムマネージャモジュールは、前記１つ以上のプロセッサのうち少なくとも１つによって実行された場合、ユーザのためのプログラム実行サービスのプログラム実行を管理するように構成され、前記管理するステップは、複数の前記ユーザそれぞれについて、
前記ユーザがプログラム実行のために専用アクセスを有する指定された第１の量の備蓄されたプログラム実行能力を提供するステップであって、前記備蓄されたプログラム実行能力は、前記プログラム実行サービスによって提供されたプログラム実行能力のサブセットであるステップと、
前記指定された第１の量の備蓄されたプログラム実行能力の提供後、１つ以上の第１のプログラムを前記ユーザのために前記プログラム実行サービスの第２の量の余剰プログラム実行能力を用いて実行せよとの前記ユーザからの要求に自動的に応答するステップであって、前記第２の量の余剰プログラム実行能力に対し、前記ユーザは専用アクセスを持っておらず、
前記ユーザのための前記備蓄されたプログラム実行能力が、前記ユーザによって用いられていない少なくとも前記第２の量の利用可能なプログラム実行能力を含むかを自動的に決定するステップと、
前記ユーザのための前記備蓄されたプログラム実行能力が、少なくとも前記第２の量の前記利用可能なプログラム実行能力を含むものとして自動的に決定された場合、前記ユーザのための前記備蓄されたプログラム実行能力を用いた前記１つ以上の第１のプログラムの前記ユーザのための実行を開始するステップと、
前記ユーザのための前記備蓄されたプログラム実行能力が、少なくとも前記第２の量の前記利用可能なプログラム実行能力を含まないものとして自動的に決定された場合、現在未使用状態であるプログラム実行サービスの他の余剰プログラム実行能力を得ることにより、前記１つ以上の第１のプログラムの前記ユーザのための実行を開始しようとするステップであって、前記プログラム実行サービスの前記他の余剰プログラム実行能力は、前記ユーザのための前記備蓄されたプログラム実行能力と異なる、ステップと
を含むステップと
によって行われる、
コンピューティングシステム。
【請求項３５】
前記プログラム実行サービスは、複数のコンピューティングノードを用いて前記プログラム実行サービスのための前記プログラム実行能力を提供し、前記複数のコンピューティングノードはそれぞれ、前記プログラム実行サービスのユーザのうち１つ以上のために１つ以上のプログラムを実行するように構成可能であり、前記指定された第１の量の備蓄されたプログラム実行能力を前記複数のユーザのうちの１つのために提供するステップは、前記複数のコンピューティングノードのうち１つ以上を前記１つのユーザによる指定期間にわたる専用使用のために割り当てるステップを含み、１つ以上の第２のプログラムを前記１つのユーザのために前記指定期間の一部にわたって実行するステップを含み、前記実行するステップは、前記割り当てられた１つ以上のコンピューティングノードの前記備蓄されたプログラム実行能力への前記１つのユーザによる専用アクセスを用いて行われ、前記１つのユーザによる前記割り当てられた１つ以上のコンピューティングノードの前記備蓄されたプログラム実行能力への専用アクセスが前記１つ以上の第２のプログラムの実行のために用いられた場合において前記自動的に決定するステップが前記指定期間の前記部位において発生した場合に、前記１つのユーザのための前記備蓄されたプログラム実行能力は、少なくとも前記第２の量の前記利用可能なプログラム実行能力を含まないように自動的に決定される、請求項３４に記載のコンピューティングシステム。
【請求項３６】
前記１つのユーザのための前記備蓄されたプログラム実行能力が少なくとも前記第２の量の利用可能なプログラム実行能力を含むかを自動的に決定するステップは、前記１つのユーザのための前記備蓄されたプログラム実行能力が少なくとも前記第２の量の前記利用可能なプログラム実行能力を含まないと決定するステップを含み、前記１つ以上の第１のプログラムの実行を前記１つのユーザのために前記１つのユーザのための前記備蓄されたプログラム実行能力を用いて行うステップは、第１のプログラム実行特性を有し、前記第１のプログラム実行特性は、第２のプログラム実行特性と異なり、前記第２のプログラム実行特性は、前記プログラム実行サービスのその他の余剰プログラム実行能力の利用に起因して発生する、請求項３５に記載のコンピューティングシステム。
【請求項３７】
前記システムマネージャモジュールは、前記コンピューティングシステムの前記１つ以上のプロセッサによって実行されるソフトウェア命令を含む、請求項３４に記載のコンピューティングシステム。
【請求項３８】
前記システムマネージャモジュールは、プログラム実行サービスのユーザのためのプログラム実行を管理する手段からなり、前記管理は、前記複数のユーザそれぞれについて、
前記ユーザがプログラム実行のために専用アクセスを有する指定された第１の量の備蓄されたプログラム実行能力を提供するステップであって、前記備蓄されたプログラム実行能力は、前記プログラム実行サービスによって提供されるプログラム実行能力のサブセットである、ステップと、
前記指定された第１の量の備蓄されたプログラム実行能力を提供するステップの後、１つ以上の第１のプログラムの実行を前記ユーザのために前記プログラム実行サービスの第２の量の余剰プログラム実行能力を用いて実行せよとの前記ユーザからの要求に自動的に応答するステップであって、前記第２の量の余剰プログラム実行能力に対して前記ユーザは専用アクセスを持っておらず、
前記ユーザのための前記備蓄されたプログラム実行能力が、前記ユーザによって用いられない少なくとも前記第２の量の利用可能なプログラム実行能力を含むかを自動的に決定するステップと、
前記ユーザのための前記備蓄されたプログラム実行能力が少なくとも前記第２の量の前記利用可能なプログラム実行能力を含むと自動的に決定された場合、前記１つ以上の第１のプログラムの前記ユーザのための実行を前記ユーザのための前記備蓄されたプログラム実行能力を用いて開始するステップと、
前記ユーザのための前記備蓄されたプログラム実行能力が少なくとも前記第２の量の前記利用可能なプログラム実行能力を含まないと自動的に決定された場合、現在未使用状態である前記プログラム実行サービスの他の余剰プログラム実行能力の利用を入手することにより、前記１つ以上の第１のプログラムの前記ユーザのための実行を開始しようとするステップであって、前記プログラム実行サービスの前記他の余剰プログラム実行能力は、前記ユーザのための前記備蓄されたプログラム実行能力と異なる、ステップと、
を含むステップとを行うことによって行われる、請求項３４に記載のコンピューティングシステム。
【請求項３９】
ユーザのためのプログラム実行を管理するための、コンピュータによって実行される方法であって、
第１のユーザによって用いられる複数のコンピューティングノードを備蓄しておくことで、指定期間におけるプログラム実行のために、前記備蓄されたコンピューティングノードへの専用アクセスの保証された利用可能性を前記第１のユーザが受領することを可能にするステップであって、前記備蓄されたコンピューティングノードは、プログラム実行サービスによって提供された複数のコンピューティングノードのサブセットであり、前記複数のコンピューティングノードはそれぞれ、前記プログラム実行サービスの複数のユーザのうちの１つのために１つ以上のプログラムを実行するように構成することができる、ステップと、
前記備蓄されたコンピューティングノードそれぞれを前記指定期間において私的余剰コンピューティング能力プールの一部として用いることを自動的に決定するステップであって、前記指定期間において、前記備蓄されたコンピューティングノードは用いられておらず、これにより、前記第１のユーザに専用アクセスが提供され、前記自動的に決定するステップは、前記プログラム実行サービスの１つ以上のプログラムされたコンピューティングシステムによって行われ、前記第１のユーザの知識無しに行われる、ステップと、
１つ以上の第１のプログラムを前記備蓄されたコンピューティングノードを用いて前記第１のユーザのために前記指定期間の第１の期間サブセットにおいて実行するステップであって、前記１つ以上の第１のプログラムを実行するステップは、前記第１のユーザが有する前記備蓄されたコンピューティングノードへの専用アクセスを利用したいという第１の要求に応答して行われる、ステップと、
１つ以上の第２のプログラムの実行を通知された数量のコンピューティングノード上において前記第１のユーザのために前記指定期間の第２の期間サブセットにわたって行いたいという第２の要求を前記第１のユーザから受信するステップであって、前記第２の期間サブセットは、前記第１の期間サブセットと異なり、前記第２の要求は、前記通知された数量のコンピューティングノードを前記プログラム実行サービスの一般的な余剰コンピューティング能力プールから入手することであり、前記プログラム実行サービスの一般的な余剰コンピューティング能力プールは、前記第１のユーザが専用アクセスを持っていない前記プログラム実行サービスの未使用状態である余剰コンピューティングノードに基づき、前記一般的な余剰コンピューティング能力プールの利用は、これらの未使用状態である余剰コンピューティングノードの継続的利用についての保証された利用可能性無しに提供される、ステップと、
前記一般的な余剰コンピューティング能力プールを用いる代わりに前記私的余剰コンピューティング能力プールを前記第１のユーザのために用いて、前記１つ以上の第２のプログラムのうち少なくとも一部の前記通知された数量のコンピューティングノード上における実行を前記第２の要求のために前記第２の期間サブセットにおいて行うことを自動的に決定するステップであって、前記私的余剰コンピューティング能力プールを用いることを自動的に決定するステップは、前記プログラム実行サービスの前記１つ以上のプログラムされたコンピューティングシステムによって行われる、ステップと、
前記１つ以上の第２のプログラムの前記少なくともいくつかの実行を前記第１のユーザのための前記第２の期間サブセットにおいて開始するステップであって、前記開始するステップは、前記備蓄されたコンピューティングノードのうち１つ以上を前記私的余剰コンピューティング能力プールの一部として用いることにより、行われる、ステップと、
を含む、方法。
【請求項４０】
前記プログラム実行サービスは料金ベースのサービスであり、前記第１のユーザは、前記備蓄されたコンピューティングノードのうちの１つを指定された時間間隔で前記第１のユーザの前記専用アクセスの一部として用いた場合に第１の漸増的料金を支払い、前記第１のユーザは、前記一般的な余剰コンピューティング能力プールの前記未使用状態である余剰コンピューティングノードのうちの１つを前記指定された時間間隔において用いた場合に第２の料金を支払い、前記第１の料金は前記第２の料金よりも少額であり、前記私的余剰コンピューティング能力プールを前記第１のユーザのために前記１つ以上の第２のプログラムのうち前記少なくともいくつかの実行のために用いることを自動的に決定するステップは、前記備蓄されたコンピューティングノードを前記私的余剰コンピューティング能力プールの一部として用いたことに起因して前記より低い第１の料金が課金された前記第１のユーザに少なくとも部分的に基づく、請求項３９に記載の方法。
【請求項４１】
前記通知された数量のコンピューティングノードよりも少量の前記私的余剰コンピューティング能力プールを用いることを自動的に決定するステップにおいて、前記私的余剰コンピューティング能力プールは一定数量の前記備蓄されたコンピューティングノードを含み、前記１つ以上の第２のプログラムの前記少なくともいくつかの実行を前記１つ以上の備蓄されたコンピューティングノードを前記私的余剰コンピューティング能力プールの一部として用いることによって開始するステップは、前記含まれる数量の前記備蓄されたコンピューティングノードを用いるステップを含み、前記方法は、前記１つ以上の第２のプログラムの他の実行を前記第１のユーザのために前記第２の期間サブセットにおいて開始するステップをさらに含み、前記開始するステップは、前記未使用状態である余剰コンピューティングノードのうち１つ以上を前記一般的な余剰コンピューティング能力プールの一部として用いることにより行われ、前記１つ以上の未使用状態である余剰コンピューティングノードは、通知された数量のコンピューティングノードと、前記含まれる数量の前記備蓄されたコンピューティングノードとの間の数値差である数量である、請求項４０に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本願発明は、プログラム実行を管理する技術に関する。
【背景技術】
【０００２】
多くの企業および他の組織において動作しているコンピュータネットワークは、多数のコンピューティングシステムの動作をサポートするために、前記コンピューティングシステムを相互接続する。このような相互接続は、（例えば、ローカルネットワークの一部として）共同設置されているかまたは複数の別個の地理的位置に配置されている（例えば、１つ以上の私的中間ネットワークまたは公的中間ネットワークを介して接続されている）コンピューティングシステムに対して用いられている。例えば、多数の相互接続されたコンピューティングシステムを収容したデータセンターが一般的になっている（例えば、単一の組織によってまたは単一の組織を代表するか、そのために動作される私的データセンターや、コンピューティングリソースを顧客へ提供する事業体によって動作される公的データセンター）。いくつかの公的データセンターオペレータからは、多様な顧客が所有しているハードウェアのためのネットワークアクセス、出力およびセキュアなインストール施設が提供されており、他の公的データセンターオペレータからは、「フルサービス」施設が提供されており、このサービスの中には、顧客が利用することが可能なハードウェアリソースも含まれる。しかし、典型的なデータセンターのスケールおよび範囲の増加と共に、物理的なコンピューティングリソースの提供、運営および管理もますます複雑化してきている。
【０００３】
コモディティーハードウェアの仮想化技術の出現により、多様なニーズを抱えている多くの顧客のための大規模コンピューティングリソースの管理において一定の恩恵が得られており、その結果、複数の顧客間における多様なコンピューティングリソースの共有が効率化され、セキュアになっている。例えば、仮想化技術（例えば、ＶＭＷａｒｅ、ＸＥＮ、ＬｉｎｕｘのＫＶＭ（「カーネル仮想化基盤」）またはユーザーモードＬｉｎｕｘによって提供されているもの）によれば、単一の物理的なコンピューティングマシンによってホストされる１つ以上の仮想マシンを各ユーザに提供することにより、単一の物理的なコンピューティングマシンを複数のユーザ間で共有することが可能となっている。このような仮想マシンはそれぞれソフトウェアシミュレーションであり、別個の論理コンピューティングシステムとして機能して、多様な仮想マシン間におけるアプリケーション隔離およびセキュリティを提供しつつ、ユーザが所与のハードウェアコンピューティングリソースの唯一のオペレータでありかつ運営管理者であるかのような幻想を付与する。
【発明の概要】
【０００４】
プログラム実行を管理する技術について説明する。少なくともいくつかの実施形態において、プログラム実行の管理を、１つ以上のコンピューティングシステムの余剰コンピューティング能力を用いている複数のユーザについて行う。詳細には、少なくともいくつかのこのような実施形態において、１人以上のユーザそれぞれについて、当該関連付けられたユーザによる専用使用のために割り当てられたプログラム実行能力のうち現在未使用状態であるプログラム実行能力などに基づいて、余剰コンピューティング能力の私的プールが、当該ユーザのために維持されかつ当該ユーザと関連付けられる。このような私的プールはまた、当該関連付けられたユーザによる優先使用のために利用可能である余剰コンピューティング能力の私的プールとも関連付けられる。いくつかの実施形態において、複数のユーザ（例を任意選択的に挙げると、私的余剰コンピューティング能力プール（単数または複数）と関連付けられた１人以上のユーザ）が利用可能な一般的な非私的余剰コンピューティング能力プールに加えて、このような私的余剰コンピューティング能力プールがさらに提供され得る。いくつかの実施形態において、これらの技術は、プログラム実行サービス（「ＰＥＳ」）と共に用いられ得る。プログラム実行サービスは、サービス（例えば、ユーザプログラム実行のための複数のコンピューティングノード（例えば、１つ以上の物理的なコンピューティングシステム上においてホストされる複数の物理的なコンピューティングシステムおよび／または仮想マシン）を提供するプログラム実行サービス）の複数の顧客または他のユーザを代表するか、そを代表するか、そのために複数のプログラムを実行する。加えて、少なくともいくつかの実施形態において、上記技術のうちいくつかまたは全ては、以下により詳細に説明するように、プログラム実行サービスシステムマネージャモジュールの実施形態によって自動的に実行することができる。
【０００５】
いくつかの実施形態において、ＰＥＳまたは他のコンピューティングノード群の少なくともいくつかの余剰プログラム実行能力または他の場合において未使用状態であるプログラム実行能力が、ユーザを代表するか、そのために一時的様態または非保証様態でプログラム実行を行うために利用することが可能であり、これにより、前記余剰プログラム実行能力は、他の目的（例えば、１つ以上の他のプログラムの実行のための優先的使用または予約使用）のために当該プログラム実行能力が必要となるときまで、このようなプログラムの実行に利用することが可能である。このような余剰プログラム実行能力は、例えば、多様なユーザ（例えば、一般的な余剰コンピューティング能力プールを提供するＰＥＳの任意の顧客）によって利用可能な１つ以上の一般的な余剰コンピューティング能力プールの一部として利用可能であり、例えば、供給および需要を反映して価格が動的に変動するスポット市場を介してあるいは他の様態で利用することが可能である。いくつかの場合において、余剰プログラム実行能力が他の目的のために必要であるときに前記余剰プログラム実行能力を用いるユーザを代表するか、そのために１つ以上のプログラムが実行され得、いくつかのこのような場合において、余剰プログラム実行能力を他の目的のために利用することができるよう、これらの１つ以上のプログラムの実行が自動的にＰＥＳによって終了され得る（例えば、シャットダウン、アボートされ得る）。少なくともいくつかのこのような実施形態において、自動終了されたプログラムは、将来（例えば、将来において、十分な量の余剰プログラム実行能力が前記ユーザのためのプログラム実行のために再度利用可能となった場合）に前記ユーザを代表するか、そのために自動的に再開させることができる。あるいは、他の目的に必要な余剰プログラム実行能力を用いている１つ以上のプログラムを終了させる代わりに、いくつかの実施形態および状況において、他のプログラム実行能力を特定して、前記他の目的に必要な前記余剰プログラム実行能力の代わりにこのプログラム実行能力を用いることもでき、これにより、前記余剰プログラム実行能力を用いた前記１つ以上のプログラムの実行継続が可能となる。余剰プログラム実行能力の利用に関連するさらなる詳細について、以下に記載する。
【０００６】
いくつかの実施形態において、プログラム実行のためにＰＥＳから利用することが可能なプログラム実行能力のうち少なくとも一部を１人以上のユーザに割り当てることで、これらのユーザがこの一部を優先的に利用することを可能とし、これにより、これらのユーザ各人が、各量のプログラム実行能力を利用する際の優先アクセスを他のユーザに優先して持つことができる。例えば、このようなユーザの優先アクセスは、各量のプログラム実行能力を利用するための専用アクセスまたは独占アクセスを有する各ユーザ（例えば、プログラム実行におけるユーザの利用予約または利用保証のために割り当てられた１つ以上の専用コンピューティングノードおよび／またはその部位を有する各ユーザ、または、複数のユーザによって用いられる複数のコンピューティングノードからなる大きな群からユーザが専用として利用することが可能な１つ以上のコンピューティングノードに相当する一定量のプログラム実行能力を有する各ユーザ）に基づき得る。少なくともいくつかのこのような実施形態において、ＰＥＳの各量のプログラム実行能力は、特定のユーザによる指定期間にわたる専用アクセスへと割り当てることができ、このような割当は、１つ以上の物理的なコンピューティングシステムのリースの場合と同様に行われ、これにより、前記指定期間中において、各量のプログラム実行能力を前記ユーザを代表するか、そのためにプログラム実行のために利用することが可能となる。加えて、いくつかの実施形態において、プログラム実行のための優先的アクセスまたは他の専用アクセスをユーザに付与するための基準として、１つ以上の要素を基準とすることができる（例えば、前記ユーザが支払った料金、一定期間および／または他の条件に基づいた専用アクセスを利用するための契約上の義務）。
【０００７】
少なくともいくつかの実施形態において、一定期間において（例えば、前記割り当てられた専用能力が優先的利用のために利用されていないときおよび／または前記専用能力が割り当てられているユーザが前記割り当てられた専用能力を余剰能力として利用することができるときに）、専用利用または他の優先的利用のために１人以上のユーザへと割り当てられたプログラム実行能力のうち少なくとも一部を余剰プログラム実行能力として利用することが可能である。このようにして、第１のグループのユーザに割り当てられた少なくともいくつかのプログラム実行能力を、他のユーザを代表するか、そのためにプログラムを実行するために一時的に適宜利用することができる。複数のユーザからの余剰プログラム実行能力への需要が現在利用可能な供給よりも高い場合、余剰プログラム実行能力を多様な様態で利用できる特定のユーザおよびプログラムを選択することができる。例えば、いくつかの実施形態において、プログラム実行のために余剰プログラム実行能力を要求しているユーザを他のこのようなユーザよりも優先することができ、このような優先は、１つ以上の要素に基づいて決定される（例えば、ユーザから提供された料金および／またはユーザが支払った料金、余剰プログラム実行能力利用の要求が提出された時間、余剰プログラム実行能力の利用の希望開始時間または希望開始時刻、余剰プログラム実行能力の利用の希望完了時間または希望完了時刻、希望の余剰プログラム実行能力の種類および／または量（例えば、指定された数量のコンピューティングノード）。専用プログラム実行能力の利用についてのさらなる詳細について、以下に説明する。
【０００８】
加えて、上記したように、少なくともいくつかの実施形態において、１人以上のユーザはそれぞれ、当該ユーザに対して独占アクセスまたは優先アクセスが付与された余剰コンピューティング能力の関連付けられた私的プールを持ち得る。例えば、ユーザが１つ以上のコンピューティングノードの専用コンピューティング能力を持っているが当該専用能力のうち一部または全てを現在利用していない状態である場合、その未使用状態である専用能力への優先アクセスを、当該ユーザのためのプログラム実行のための余剰コンピューティング能力の私的プールとして当該ユーザに付与することができる。いくつかの実施形態において、このようなユーザのための余剰コンピューティング能力の私的プールは、当該ユーザからの明示的命令に応答して確立することができる（例えば、当該ユーザからの料金）。他の実施形態において、未使用状態である専用コンピューティング能力を持っているユーザのうち一部または全員は、当該ユーザの未使用状態である専用コンピューティング能力に基づいて、余剰コンピューティング能力の私的プールをそれぞれ自動的に受領し得る。さらに、いくつかの実施形態において、ユーザの未使用状態である専用コンピューティング能力を用いて当該ユーザが余剰コンピューティング能力の私的プールを自動的に受領した場合、当該ユーザは、当該私的プールの存在に気づかない場合がある。
【０００９】
多様な実施形態および状況において、このように余剰コンピューティング能力の私的プールをユーザのために用いることにより、多様な恩恵を前記ユーザに付与することができる。例えば、いくつかの実施形態において、ユーザが専用コンピューティング能力を利用した場合に漸増していくコストを、前記ユーザが同程度の余剰コンピューティング能力を一般的プールから利用した場合のコストよりも低くすることができ、このような場合、前記ユーザが自分の余剰コンピューティング能力の私的プールを利用するためのコストを、一般的なプールを利用した場合のコストよりも低額に設定することができる（例えば、ユーザが専用コンピューティング能力を利用するための漸増していくコストと同一のコストにすることができるか、ユーザが専用コンピューティング能力を利用するための漸増していくコストと、前記一般的なプールから用いる際のより高いコストとの間のコストにすることができる）。加えて、いくつかの実施形態において、ユーザは、自分の私的プール中の余剰コンピューティング能力への独占アクセスまたは優先アクセスを得ることができ、これにより、前記ユーザは、一般的な余剰コンピューティング能力プールを用いた即時実行よりも当該余剰コンピューティング能力要求を十分に優先する必要が無い場合であっても、自分の私的プールを用いて当該要求を即座に実行することができる。よって、ユーザのプログラム実行の際にこのような余剰コンピューティング能力の私的プールを用いることで、プログラム実行の際の一般的な余剰コンピューティング能力プールの利用から発生する少なくともいくつかの他のプログラム実行特性と異なる有益なプログラム実行特性を得ることが可能となる（例えば、指定時間間隔での指定量のプログラム実行能力の使用の漸増的コストの低下、私的プールからのコンピューティング能力へのアクセスが利用可能となることによる、一般的なプールよりも高い利用可能性、私的プールからのコンピューティング能力を用いたプログラム実行の継続が可能なことによる、一般的なプールよりも高い能力のうちの１つ以上）。
【００１０】
私的余剰コンピューティング能力プールの１つの特定の例として、第１のユーザは、特定の目的のための複数のコンピューティングノードの専用使用を開始することができる。その場合、第１のユーザは、これらの複数のコンピューティングノードの一部を備蓄として維持する必要がある（例えば、コンピューティング負荷が予想よりも高かった場合および／または特定の目的のために用いられている任意のコンピューティングノードが利用不可能となった場合に交換できるように特定の目的のために用いられているコンピューティングノードを自動的にスケールするために、複数のコンピューティングノードの合計のうち２０％を後で利用できるようにバックアップとして備蓄しておく必要がある）。このような状況においては、備蓄として保存されているコンピューティングノードが特定の目的に用いられていない場合、当該コンピューティングノードを第１のユーザのための余剰コンピューティング能力の第１の私的プールとして利用することができる。しかし、これらの備蓄として保存されているコンピューティングノードが後で必要となった場合、第１のユーザは当該コンピューティングノードを特定の目的のために利用することができる。私的余剰コンピューティング能力プールの利用の別の特定の例として、第２のユーザは、複数のコンピューティングノードの専用使用を開始し得るが、前記複数のコンピューティングノードは全て、第２のユーザのための余剰コンピューティング能力の第２の私的プールとして第２のユーザによって利用されることを意図している。その後、複数のユーザが一般的な余剰コンピューティング能力プールを用いる際に発生する複数の要求を管理するための本明細書中に記載の技術と同様の様態で、余剰コンピューティング能力の第２の私的プールを、第２のユーザと関連付けられた複数のエンティティからの要求を満たすために用いることができる（例えば、第２のユーザが組織である場合、前記複数のエンティティは、前記組織内の異なるグループまたは人間であり、前記複数のエンティティは、余剰コンピューティング能力の第２の私的プールへのアクセスが第２のユーザから販売されたサードパーティである）。さらに、第２のユーザのための余剰コンピューティング能力の第２の私的プールが複数のエンティティからの要求を満たすために用いられた場合、いくつかの実施形態において、これらの要求および第２の私的プールの管理は、ＰＥＳのサードパーティオペレータおよび／またはプログラム実行サービスシステムマネージャ（「ＰＥＳＳＭ」）モジュールにより（例えば、第２のユーザへ課金された料金について）行われ得る。他の実施形態において、第２のユーザは、ＰＥＳＳＭモジュールを入手および利用することができ、あるいは、他の場合において、第２のユーザは、このような行為を自身のために行うことができる。さらに、いくつかの実施形態において、例えば第１の余剰コンピューティング能力プールおよび第２の余剰コンピューティング能力プールそれぞれのために用いられているコンピューティングノードのうち少なくとも一部を上記した第１のユーザおよび／または第２のユーザが提供する場合、ユーザのために用いられている専用能力コンピューティングノードのうち一部または全てを当該ユーザが提供することができるかあるいは他の場合において当該ユーザが管理することができる。
【００１１】
ユーザが余剰コンピューティング能力の私的プールを有しておりかつ別の余剰コンピューティング能力の一般的なプールも利用可能である場合、この異なる余剰コンピューティング能力プールを多様な様態で用いることができる。例えば、このようなユーザが余剰コンピューティング能力を利用することを要求した場合において、当該ユーザの私的プールが当該要求に見合った十分なコンピューティング能力を有する場合、当該私的プールを用いて当該要求をすぐに満たすことができ、当該ユーザの私的プールが当該要求に見合った十分なコンピューティング能力を持たない場合、当該要求は、他のユーザからの要求と共に一般的な余剰コンピューティング能力プールで十分であるとみなされ得る。同様に、このようなユーザのために１つ以上の第１のプログラムがユーザの余剰コンピューティング能力の私的プールを用いて実行されている最中である場合において、当該ユーザが当該余剰コンピューティング能力を他の目的（例えば、当該ユーザの専用コンピューティング能力の一部として１つ以上の他の第２のプログラムを実行すること）のために必要としている場合、いくつかの実施形態において、前記１つ以上の第１のプログラムの実行を自動的に前記一般的な余剰コンピューティング能力プールへと移動させることができる（例えば、前記第１のプログラムの実行を終了させることなく継続することにより（例えば、当該ユーザの専用コンピューティング能力の代替品として機能する他の利用可能なコンピューティング能力の特定および利用により、当該ユーザの専用コンピューティング能力の一部である１つ以上のコンピューティングノード上の第１のプログラムの実行を終了させることにより、余剰コンピューティング能力の一般的なプールの一部である他のコンピューティングノードを用いて第１のプログラムのさらなる実行を迅速に開始することにより、当該ユーザの専用コンピューティング能力の一部である１つ以上のコンピューティングノード上の第１のプログラムの実行を終了させ、一般的な余剰コンピューティング能力プールの利用に関する他の要求と共に第１のプログラムのさらなる実行に関する要求を要求キューに入れて送ることにより））。私的余剰コンピューティング能力プールの利用に関するさらなる詳細について、以下に記載する。
【００１２】
上記した専用コンピューティング能力および余剰コンピューティング能力の種類に加えて、ＰＥＳは、オンデマンド可変プログラム実行能力をさらに含み得る。前記オンデマンド可変プログラム実行能力は、ユーザのプログラム実行のための少なくともいくつかの動的に受信された要求を満たすために利用することができる（例えば、これらのユーザからの要求があった直後、指定された将来の時間、指定された将来の時間における一定時期）いくつかの実施形態において、このような要求によって示される１つ以上のプログラムが要求された実行を満たすのに十分なコンピューティングリソースが前記要求された時間（またはそれに近い時間において）利用可能であるが、このような要求が満たされる保証が無い（すなわち、十分なコンピューティングリソースが利用可能であることが保証されない）場合がある。例えば、ユーザを代表するか、そのために（例えば、即時実行のために）１つ以上のプログラムを動的に実行するようにとのオンデマンド可変プログラム実行能力要求が受信された後、適切な量のオンデマンドプログラム実行能力がこれらのプログラムの実行のために現在利用可能である場合（例えば、十分な数の利用可能なコンピューティングノードが前記要求を満たすためのリソースと共に存在すると決定された場合）、前記１つ以上のプログラムを前記ユーザのために実行することができる。そうではない場合、前記要求は拒否され得る（あるいは、いくつかの場合においては延期され得る）。よって、いくつかのこのような実施形態において、このようなオンデマンド可変プログラム実行能力に関する要求は成功しない場合がある（例えば、適切な量のプログラム実行能力が１つ以上のプログラムの実行のために前記要求された実行時間において利用することができない場合（例えば、現在利用可能なコンピューティングノードが不十分であり、即時実行要求を満たすだけの十分なリソースを備えていないと決定された場合））。
【００１３】
いくつかの実施形態において、オンデマンド可変プログラム実行能力を提供するために用いられるコンピューティングノードは、専用プログラム実行能力の提供に用いられるコンピューティングノードおよび／または余剰プログラム実行能力の提供に用いられるコンピューティングノードと別個のものであり得、その場合、前記オンデマンド可変プログラム実行能力の提供に用いられるコンピューティングノードのうち一部が用いられなければ、いくつかの実施形態において、オンデマンド可変プログラム実行能力要求が受信されるまで、余剰プログラム実行能力の提供に用いられ得る。他の実施形態において、それらは、このような余剰プログラム実行能力の提供に用いられない場合もある。加えて、いくつかの実施形態において、即時（または予定）実行に関するオンデマンド可変プログラム実行能力要求が満足され、各ユーザを代表するか、そのために１つ以上のプログラムの実行の開始が成功した場合、前記オンデマンド可変プログラム実行能力の継続的使用が一定の将来の時間が来るまで保証され得る（例えば、各ユーザによる選択が行われるまで（例えば、前記プログラム実行能力の使用を終了および／または解放せよとの各ユーザからの通知に基づいたもの）および／またはユーザによる設計に基づいた時間（例えば、ユーザを代表するか、そのために実行している１つ以上のプログラムがタスクの完了または他の場合などにおいて自動終了すること、および／または各ユーザを代表するか、そのために実行している１つ以上のプログラムと相互作用している他のユーザが前記実行を終了した場合（例えば、各ユーザのために実行している１つ以上のプログラムが他のユーザの相互作用的使用のために提供される場合）））。あるいは、いくつかの実施形態において、可変プログラム実行能力の継続的使用の保証に対してある制限がかけられる場合もある（例えば、ＰＥＳがその使用を他の目的のために先取しない場合には保証が得られるが、プログラムを実行しているコンピューティングノードの故障については保証しない）。
【００１４】
加えて、上記したように、少なくともいくつかの実施形態において、ＰＥＳの専用プログラム実行能力機能を１人以上のユーザが利用することができ、これにより、前記１人以上のユーザそれぞれが、ＰＥＳから割り当てられた一定の専用量のプログラム実行能力を持つことができ、また、１人以上のユーザ（例えば、ＰＥＳから提供された専用数の１つ以上のコンピューティングノード、ＰＥＳのコンピューティングノードのうち１つ以上ののグループによって提供されたコンピューティングリソースの専用部位）のためのプログラム実行のための利用について保証を受けることができる。例えば、専用プログラム実行能力の保証された利用可能性を、１つ以上のＱｏＳ（「サービス品質」）基準と共に提供することができる（例えば、プログラムの実行を開始せよとの要求があってから一定期間内（例えば、余剰コンピューティング能力を用いた他のプログラムの実行の終了および当該プログラムの実行開始に対応する期間）において専用プログラム実行能力が利用となること）。オンデマンド可変プログラム実行能力機能および余剰プログラム実行能力機能と対照的に、専用能力機能のユーザは、一定の使用期間内においてユーザのためのプログラム実行のために利用可能であることが保証された一定の指定量のプログラム実行能力を持つことができ、これにより、予期できない事象および／または不測の事態に起因してＰＥＳサービスが利用できなくなる事態（例えば、サービス不具合、メンテナンス）が防がれる。
【００１５】
さらに、専用コンピューティング能力、余剰コンピューティング能力およびオンデマンド可変コンピューティング能力のうち２つ以上がＰＥＳからユーザへと有料で提供される実施形態において、これらの異なる種類のコンピューティング能力と関連付けられた料金を多様な様態で異ならせることができる（例えば、関連付けられた利用可能性の保証および／または他の要素を反映するように、異ならせることができる）。一例として、ユーザが特定量の専用コンピューティング能力を利用する際の合計コストを、ユーザが同等量のオンデマンド可変コンピューティング能力（利用可能である場合）を利用する際のコストよりも高くすることができ、ユーザがオンデマンド可変コンピューティング能力を利用する際のコストを、ユーザが一般的なプールからの同等量の余剰コンピューティング能力（利用可能である場合）を利用する際のコストよりも高くすることができる。しかし、いくつかの場合において、専用コンピューティング能力を利用するためのコストには、実際の使用に基づいていない単回料金または定期料金が含まれる場合もあり、ユーザが特定量の専用コンピューティング能力を特定期間において用いた場合の漸増していくコストも別個にあり、特定量の専用コンピューティング能力の利用のための漸増コストは、同等量の一般的な余剰コンピューティング能力プールを上記期間にわたって用いた場合のコストよりも任意選択的に低くされる。さらに、上記したように、私的余剰コンピューティング能力プールを利用するためのコストは、一般的な余剰コンピューティング能力プールを利用するためのコストと異なり得、例えば、いくつかの実施形態において、専用コンピューティング能力を利用した場合の漸増的コストと同一であり得る。価格設定およびコストに関連するさらなる詳細について、以下に記載する。
【図面の簡単な説明】
【００１６】
【図１Ａ】ネットワーク図であり、プログラム実行サービスの複数のユーザが利用することが可能なプログラム実行能力の使用を管理するための相互作用の例示的実施形態を示す。
【図１Ｂ】ネットワーク図であり、プログラム実行サービスの複数のユーザが利用することが可能なプログラム実行能力の使用を管理するための相互作用の例示的実施形態を示す。
【図２Ａ】複数のコンピューティングノードのプログラム実行能力の使用を管理するための技術の例を示す。
【図２Ｂ】複数のコンピューティングノードのプログラム実行能力の使用を管理するための技術の例を示す。
【図３】ブロック図であり、複数のユーザによるコンピューティングノードの使用を管理するためのコンピューティングシステムの例示的実施形態を示す。
【図４】プログラム実行サービスシステムマネージャルーチンの例示的実施形態のフロー図を示す。
【図５Ａ】余剰能力使用量マネージャルーチンの例示的実施形態のフロー図を示す。
【図５Ｂ】余剰能力使用量マネージャルーチンの例示的実施形態のフロー図を示す。
【図６】専用能力使用量マネージャルーチンの例示的実施形態のフロー図を示す。
【図７】オンデマンド可変能力使用量マネージャルーチンの例示的実施形態のフロー図を示す。
【発明を実施するための形態】
【００１７】
図１Ａは、ネットワーク図であり、複数のユーザのためにプログラムを実行するための複数の種類のプログラム実行能力の利用の管理の一例を示す。例示目的のため、以下、特定の種類のプログラム実行能力が特定の様態で提供および管理される、いくつかの例および実施形態について説明する。これらの例は例示目的のために記載するものであり、簡潔さのために簡略化されており、本発明の技術は多様な他の状況において利用することが可能であり、そのうちの一部のみについて以下に説明ことが理解される。
【００１８】
図１Ａの例において、プログラム実行サービスシステムマネージャモジュール１１０の図示の実施形態を用いて、複数のユーザがネットワーク１００を介して相互作用している。プログラム実行サービスシステムマネージャモジュール１１０は、ユーザのプログラム実行において利用することが可能な１つ以上のコンピューティングノード１２０上においてプログラムを実行する。このＰＥＳＳＭモジュール１１０は、特定のプログラム実行サービス（図示せず）の機能のうち一部または全体を提供する。詳細には、図示の実施形態において、ＰＥＳＳＭモジュール１１０およびコンピューティングノード１２０は提供されるプログラム実行サービスの一部としてプログラム実行サービスプロバイダ１０５によって提供され、ＰＥＳＳＭモジュール１１０は、１つ以上のコンピューティングシステム（図示せず）上において実行し得る。この例において、前記プログラム実行サービスは、多様なユーザのためにコンピューティングノード１２０上においてプログラム実行を管理するための多様な機能を提供する。
【００１９】
多様な遠隔ユーザ１３０、１４０、１５０および１６０は、この例において、ネットワーク１００を介してＰＥＳＳＭ１１０と相互作用して、ユーザを代表するか、そのためにプログラムの多様な種類の実行を構成および／または要求することができる。この例において、これらの遠隔ユーザは、以下に記載のように、１つ以上の専用能力ユーザ１４０と、１つ以上の余剰能力ユーザ１５０と、１つ以上のオンデマンド可変能力ユーザ１３０と、任意選択的に１つ以上の他のユーザ１６０とを含む。ネットワーク１００は、例えば、リンクされたネットワークによって構成された公的アクセスが可能なネットワークであり得、多様な別個のパーティによって操作される（例えば、インターネット）。他の実施形態において、ネットワーク１００は、私的ネットワークであり得る（例えば、非優先的ユーザからのアクセスが全体的または部分的に可能な企業ネットワークまたは大学ネットワーク）。さらに他の実施形態において、ネットワーク１００は、インターネットへのアクセスおよび／またはインターネットからのアクセスを有する１つ以上の私的ネットワークを含み得る。
【００２０】
例示のコンピューティングノード１２０は、ユーザを代表するか、そのためにプログラム実行を行う際に用いられ、いくつかの実施形態において、複数の物理的なコンピューティングシステムおよび／または複数の仮想マシンを含み得る。これらの複数の物理的なコンピューティングシステムおよび／または複数の仮想マシンは、（図１Ｂを参照してさらに詳述するように）１つ以上の物理的なコンピューティングシステム上においてホストされる。コンピューティングノード１２０はそれぞれ、１つ以上のプログラム実行において利用することが可能な一定量のコンピューティングリソースを有し、特定の量のプログラム実行能力を提供する（例えば、処理能力（例えば、処理ユニットの数および／またはサイズ）、メモリ能力、記憶能力、ネットワーク帯域能力などのうちの１つ以上の組み合わせによって測定することが可能なもの）。いくつかの実施形態において、ＰＥＳプロバイダ１０５は、事前構成されたコンピューティングノードを提供し得、各事前構成されたコンピューティングノードは、ユーザのためのプログラム実行において利用することが可能な類似のかつ／または相当量のリソースを有し、他の実施形態において、ＰＥＳプロバイダ１０５は、選択対象として多様な異なるコンピューティングノードを提供し得、これらのコンピューティングノードから、ユーザは、前記ユーザのためのプログラム実行の際に用いられるものを選択することができる（例えば、異なる量および／または種類のコンピューティング関連リソース（例えば、処理ユニットのサイズ、速度および／または種類、処理ユニット数、メモリおよび／または記憶、プラットフォーム構成（例えば、３２ビットまたは６４ビット）））。
【００２１】
いくつかの実施形態において、多様なユーザ１３０、１４０、１５０および１６０は、ＰＥＳＳＭ１１０と相互作用して、ユーザのためのプログラム実行において好適なリソースおよび／または必要なリソースを（例えば、１つ以上のコンピューティングノードを指定することにより）指定することができる。多様な実施形態において、このようなリソースの指定は、ユーザのためのプログラム実行の要求が有ったときならびに／あるいは１つ以上の他のとき（例えば、ユーザがプログラム実行サービスを登録および／または加入したとき）に、行われ得る。いくつかの実施形態において、ＰＥＳＳＭ１１０は、加入サービスおよび／または登録サービスを１人以上のユーザに提供することができ、これにより、ユーザは、ユーザを代表するか、そのために実行されるべき１つ以上のプログラムに関連する情報を指定することができる（例えば、プログラム、ソースコード、１つ以上のプログラムのアドレス指定可能な位置）、アカウント情報（例えば、ユーザ名、課金情報、等）、使用条件）。加えて、ユーザがＰＥＳＳＭ１１０と相互作用してサービスの加入および／または登録を終えた後、いくつかの実施形態において、前記ユーザに対し、１つ以上の識別子が発行され得る（例えば、鍵、トークン、ユーザ名、証明書、等）。これらの識別子は、前記ユーザと関連付けられ、前記ユーザのためのプログラム実行と関連して用いられる。他の実施形態において、ＰＥＳ加入サービスおよび／または登録サービスに関連する多様な動作を行うために、ＰＥＳＳＭ１１０以外のモジュールが提供され得る。
【００２２】
図示の実施形態において、１つ以上の可変能力ユーザ１３０は、ＰＥＳＳＭ１１０と相互作用して、例えば即時実行の要求の提出および／または以降の実行に関する情報の提供を提出することにより、オンデマンド可変プログラム実行能力を用いた１つ以上のプログラムを構成および／または実行要求する。即時実行要求を受信した後、ＰＥＳＳＭ１１０は、前記要求を満たすだけの十分な数のコンピューティングノード１２０および利用可能なリソースが利用可能であるか否かを決定することができる。前記要求を満たすだけの十分な数のコンピューティングノード１２０および利用可能なリソースが利用可能である場合、ＰＥＳＳＭ１１０は、適切な量のコンピューティングノード上において、当該要求に見合った１つ以上のプログラムの実行をユーザを代表するか、そのために開始し得る。１つ以上のプログラムを１回以上将来において実行してほしいとの要求をユーザが予定した場合、ＰＥＳＳＭ１１０は、１つ以上のプログラムを１つ以上の将来の時間において実行するための適切な量のコンピューティングノードを備蓄しようとし得、かつ／または、実行に利用すべきコンピューティングノードの決定を一定時期まで（例えば、１つ以上の将来の時間が来るまで）遅延させ得る。図示の実施形態において、ＰＥＳＳＭ１１０が可変能力ユーザ要求実行のためにコンピューティングノードを割り当てることができなかった場合、前記要求は失敗し得、その結果前記プログラムは実行されない。このような場合、ユーザ１３０は、失敗した要求を後で実行できるよう、再提出し得る。上記したように、いくつかの実施形態において、可変能力ユーザに対し、例えば、用いられるコンピューティングノードの数、用いられるコンピューティングノードの種類、コンピューティングノードが利用される期間に基づいて、ＰＥＳ利用に関連する多様な料金を課金することができる。加えて、ここでは図示していないが、いくつかの実施形態において、オンデマンド可変プログラム実行能力を提供するためにコンピューティングノード１２０のうち一定部分を指定することができ、他の実施形態において、オンデマンド可変プログラム実行能力を他の様態で（例えば、コンピューティングノード１２０全てを用いて、別の目的（例えば、専用能力）に起因して割り当てられていないコンピューティングノード１２０の全てを用いて）提供することができる。
【００２３】
加えて、この例において、コンピューティングノード１２０の一部が専用能力ユーザ１４０のうち１つ以上によって用いられるように割り当てられており、これにより、１つ以上の専用能力ユーザ１４０のうちそれぞれは、これらの割り当てられたコンピューティングノードの少なくとも一部上における前記ユーザのためのプログラム実行のための優先アクセスを持つことができる。例えば、いくつかの実施形態において、専用能力ユーザ１４０はそれぞれ、指定された利用期間におけるユーザのためのプログラム実行の際に専用として用いられる１つ以上のコンピューティングノード１２０を持ち得、これにより、前記ユーザは、前記指定された利用期間内における任意の時期において、ユーザのためのプログラム実行を行うために前記１つ以上のコンピューティングノードにアクセスすることができ、かつ／または、前記１つ以上のコンピューティングノード上においてプログラムを前記指定された利用期間にわたって連続的に実行することができる。１つの特定の例として、専用能力ユーザ１４０のうち１つ以上は、長期（例えば、１年間の）契約をＰＥＳプロバイダ１０５と締結し得、これにより、これらのユーザはそれぞれ、（例えば前払い方式で課金されるかまたは定期的に課金される）固定料金および、いくつかの場合において、他の利用料金（例えば、多様なリソース（例えば、電気、物理的なラック空間、ネットワーク利用）の利用と関連付けられた可変料金）を支払うことで、契約期間における専用量のコンピューティングノード１２０への優先アクセスを持つ。
【００２４】
専用能力ユーザ１４０がＰＥＳＳＭ１１０と相互作用して専用量のコンピューティングノードの優先的利用を要求した後、ＰＥＳＳＭ１１０は、コンピューティングノード１２０からの１つ以上のコンピューティングノードをユーザによる専用使用のために割り当てることができる。例えば、いくつかの実施形態において、複数のコンピューティングノード１２０の１つ以上の特定のコンピューティングノード（例えば、１つ以上の特定の物理的なコンピューティングノードおよび／または仮想コンピューティングノード）を、（例えば、前記特定のコンピューティングノードを登録時においておよび／または１つ以上の他の時期において割り当てることにより）、関連付けられた特定の専用能力ユーザによる利用期間全体にわたる優先的利用のために割り当てることができ、これにより、専用コンピューティングノード上における前記利用期間における前記特定の専用ユーザのためのプログラム実行要求が発行され、その結果、前記特定の１つ以上の割り当てられたコンピューティングノード上におけるプログラム実行が開始される。他の実施形態において、利用期間全体において特定のコンピューティングノードを特定の専用ユーザ１４０に割り当てる代わりに、ＰＥＳＳＭ１１０は、複数のコンピューティングノードを有する専用コンピューティングノードグループからコンピューティングノードを割り当て得、これにより、適切な量のコンピューティングノードと、多様な専用能力ユーザ１４０による実行要求を満たすだけの十分なリソースとを専用コンピューティングノードグループにおいて利用することが可能となる。いくつかのこのような実施形態において、専用ユーザ１４０のために１つ以上の専用コンピューティングノード上において１つ以上のプログラムを実行せよとの要求が受信された後、前記１つ以上のプログラムを実行せよとの要求がでたときに、前記プログラムを実行できるだけの十分な適切な量のコンピューティングノード１２０を専用コンピューティングノードグループから選択することができる。前記選択された量のコンピューティングノードが専用ユーザ１４０のための要求の実行において不要となった場合（例えば、前記要求された実行の終了および／または完了後において不要となった場合）、これらのコンピューティングノードを前記専用コンピューティングノードグループへと返却して、他の専用能力ユーザによって利用可能とすることができ、あるいは、いくつかの実施形態において、以下に説明するように、専用ユーザ１４０のための余剰コンピューティング能力の私的プールの一部として利用可能なものとしてこれらのコンピューティングノードをさらに追跡することも可能である。加えて、特定の専用能力ユーザ１４０の利用期間が期限切れとなった場合、（例えば、１つ以上の他の（例えば、新規の）専用能力ユーザによる利用のために前記コンピューティングノードを割り当てることができるようにすることにより）前記ユーザの利用のために割り当てられた１つ以上のコンピューティングノードを同様に他の者による利用のために解放することができる。加えて、ＰＥＳＳＭ１１０は、実行要求の達成に関する１つ以上の多様な他の管理動作を行うことができる（例えば、要求および／またはユーザ提出要求と関連付けられた利用期間および／または他の期間の実行、要求達成のためのコンピューティングリソースの確保、要求および／または要求元ユーザの認証および／または証明）。いくつかの実施形態において、専用プログラム実行能力の実行が要求されたときと当該要求が満たされたときの間に遅延が発生し得る（例えば、多様な管理動作が行われる際の遅延）。多様な他の実施形態において、専用能力ユーザのためのコンピューティングノードの割り当て、追跡、備蓄および／または解放を多様な他の技術を用いて行うことができる。
【００２５】
加えて、図示の実施形態において、複数の余剰能力ユーザ１５０は、ＰＥＳＳＭ１１０と相互作用して、１つ以上のプログラムの実行をＰＥＳの余剰プログラム実行能力を用いて構成および／または要求する。このような余剰能力ユーザは、私的余剰能力プールおよび／または１つ以上の一般的な余剰能力プールを用いるユーザを含み得る。上記したように、余剰プログラム実行能力は、余剰プログラム実行能力および／または未使用状態であるプログラム実行能力を含み得、このようなプログラム実行能力は、他の場合において他の用途に割り当てることができ、いくつかの実施形態において、少なくとも１つの一般的な余剰能力プール中に分割することができる。このような一般的な余剰能力プールは、１つ以上の他の私的余剰能力プールの一部として利用されていない余剰コンピューティング能力を含む。例えば、図示の実施形態において、余剰プログラム実行能力は、複数のコンピューティングノード１２０を含み得る。これらの複数のコンピューティングノード１２０は、他の場合において他の目的（例えば、専用能力ユーザ１４０、可変能力ユーザ１３０、および／または他のユーザ１６０による利用）のために割り当てられるが、現在はこれらの目的のために用いられていないものである。余剰能力ユーザは、プログラム実行要求を多様な実施形において多様な様態で構成することができる（例えば、プログラム実行のためのコンピューティングノードの数および／または種類、利用すべきコンピューティングノードの最小数および／または最大数、当該要求の期限切れ時間、好適な実行時期および／または実行期間、余剰プログラム実行能力の利用の支払いに関する１つ以上の入札（例えば、コンピューティングノードの各使用毎の入札、一定の単位時間あたりの１つ以上のコンピューティングノードの利用毎の入札、最小および／または最大入札の指定））。
【００２６】
図２Ａおよび図２Ｂを参照してさらに説明するように、ＰＥＳＳＭ１１０の図示の実施形態は、余剰能力ユーザ１５０によって利用することが可能な余剰プログラム実行能力から１つ以上のコンピューティングノード１２０を含むおよび／または除去する時期と、要求されたプログラム実行を余剰能力ユーザ１５０のために開始および／または終了する時期と、余剰能力ユーザによる利用が可能なコンピューティングノード１２０のうち前記プログラム実行に用いられるものとを決定し得る。加えて、ＰＥＳＳＭ１１０は、私的余剰能力プール中の１つ以上の余剰能力ユーザ１５０それぞれについて（例えば、専用能力ユーザ１４０でもある余剰能力ユーザ１５０のうち一部または全部について）、利用することが可能な余剰能力の量をさらに追跡し得る。多様な実施形態において、ＰＥＳＳＭ１１０は、１つ以上のコンピューティングノードが未使用状態でありかつ／または他の場合において余剰能力ユーザ１５０によって多様な様態で利用可能であることを決定し得る。例えば、いくつかの実施形態において、ＰＥＳＳＭ１１０は、多様なユーザおよび／またはエンティティから、１つ以上のコンピューティングノードが現在用いられていないかまたは他の場合において余剰能力ユーザによって利用可能である旨を示す通知を受信し得る（例えば、１つ以上の専用能力１４０ユーザがこれらのユーザによって専用使用されるコンピューティングノードのうち一定数および／または一部を用いていない旨を示す通知）。いくつかのこのような実施形態において、このような専用能力ユーザは、専用コンピューティングノードが専用能力ユーザによって未使用状態として提供される可能性が高い時期または未使用状態が明言される時期ならびに／あるいは利用可能となる１つ以上の時期（例えば、特定の日時、特定の日数、期間）を示し得る。加えて、いくつかの実施形態において、１つ以上の他のユーザ１６０は、類似の様態で相互作用して、１つ以上のコンピューティングノード（例えば、１つ以上の他のユーザ１６０（例えば、サードパーティコンピューティングシステム、図示せず）の制御下にある１つ以上のコンピューティングノード）が余剰能力ユーザによって利用することが可能である旨を通知し得る。
【００２７】
他の実施形態において、ＰＥＳＳＭ１１０は、例えばコンピューティングノード１２０のうち一部または全てを監視して、コンピューティングノードが利用されていない時期を決定することおよび／またはこのようなコンピューティングノードの１人以上のユーザ（例えば、専用能力ユーザ１４０、可変能力ユーザ１３０、他のユーザ１６０）の使用量パターンを追跡することにより、コンピューティングノードが余剰能力ユーザによって利用可能である時期を自動的に決定することができる。いくつかのこのような場合において、コンピューティングノードが未使用状態であるかまたは他の場合において十分に利用されていないかを決定するステップは、１つ以上の余剰能力ユーザのプログラムを実行するのに十分な少なくとも一定の期間にわたってコンピューティングノードが未使用状態である可能性を決定および／または予測するステップを含み得る。前記決定および／または予測するステップは、例えば、１人以上のユーザによる前記コンピューティングノードの過去の利用パターンの分析に基づいて、行われる。多様な実施形態において、１つ以上の余剰能力ユーザのプログラム実行に十分な期間は、１つ以上の制約に基づき得る（例えば、ユーザを代表するか、そのためにプログラムを停止／開始する時間、利用されるコンピューティングノードを構成する時間、余剰能力ユーザを代表するか、そのために実行されるプログラムの種類（例えば、いくつかの種類のプログラムは、有用な量の仕事を短期間内において行い得（例えば、多様な種類のデータ処理）、他のプログラムは、有用な結果を得るまでにより長い期間を必要とする）。
【００２８】
１つ以上のコンピューティングノード１２０が１つ以上の余剰能力ユーザ１５０によって利用可能であると決定された後、このようなコンピューティングノードは、利用可能な余剰プログラム実行能力の一般的なプールに付加され得、かつ／または、他の場合において１つ以上の私的余剰能力プールの一部として追跡され得、これにより、コンピューティングノードの他の用途が（例えば、専用能力ユーザ１４０、可変コンピューティングユーザ１３０、および／または１つ以上の他のユーザまたはエンティティ１６０による優先使用）発生するまで、前記１つ以上のコンピューティングノードは、対応する余剰能力ユーザ１５０を代表するか、そのためにプログラム実行を行うためにＰＥＳＳＭ１１０によって利用可能となる。ＰＥＳＳＭ１１０は、余剰能力コンピューティングノードのうち１つ以上が余剰能力ユーザ１５０によって多様な様態で多様な実施形態において利用される必要がもはや無くなったと決定し得る。例えば、いくつかの実施形態において、ＰＥＳＳＭ１１０は、１つ以上のコンピューティングノードがもはや利用不能となったという通知を受信し得る（例えば、これらのコンピューティングノードを制御しているユーザ１６０からの前記コンピューティングノードの利用を停止せよとの明示的な要求、優先ユーザのプログラムを１つ以上のコンピューティングノード上において実行せよとの要求、指定利用可能期間の期限切れなどに基づいたもの）。別の例として、いくつかの実施形態において、ＰＥＳＳＭ１１０は、例えば、１人以上のユーザから受信された要求のうち他の用途に基づいた要求に基づいてまたは１つ以上のコンピューティングノード１２０についての需要可能性に基づいて（例えば、コンピューティングノードが用いられ得る他のリソースおよび／またはプログラムの使用量の増加の検出に基づいて）、コンピューティングノードの他の用途を自動的に決定することができる。
【００２９】
いくつかの実施形態において、余剰能力ユーザ１５０は、ＰＥＳＳＭ１１０と相互作用して、指定された数の余剰コンピューティングノード上における１つ以上のプログラムの即時実行を要求し、かつ／または、１つ以上の将来の時間におけるこのような実行を予定し得、これにより、ＰＥＳＳＭ１１０は、前記指定された数の余剰コンピューティングノードが前記要求された実行時間において利用可能であると決定された場合、前記指定された数の余剰コンピューティングノード上における前記要求された実行を開始することができる。前記指定された数の余剰コンピューティングノードが前記時間において利用可能であるかを決定するステップは、前記ユーザの私的余剰能力プールが（少しでも存在する場合に）前記指定された数の余剰コンピューティングノードを含むか否かを第１に考慮するステップと、これらの余剰コンピューティングノードが利用可能である場合、これらの余剰コンピューティングノードを利用対象として選択するステップとを含み得る。前記指定された数の余剰コンピューティングノードのうち一部のみしか前記ユーザのための私的余剰能力プール中において利用できない場合、いくつかの実施形態において、ＰＥＳＳＭ１１０は、前記要求を部分的に満たすために利用するためのものとしてこれらの私的余剰コンピューティングノードを選択し、残りの余剰コンピューティングノードを一般的な余剰能力プールから入手しようとするか、または、他の様態で進行し得る（例えば、利用可能な私的余剰コンピューティングノードのうちの前記一部のみを用いて前記要求を満足するか、前記私的余剰能力プールが前記指定された数の余剰コンピューティングノード全てを含んでいないため、前記要求が失敗に終わった旨を通知するか、一般的な余剰能力プールからの余剰コンピューティングノードのみを用いて前記要求を満たすことを試行する）。加えて、いくつかの実施形態において、余剰能力ユーザ１５０は、ＰＥＳＳＭ１１０と相互作用して、指定された数の余剰コンピューティングノード上における１つ以上のプログラムの実行に関する要求が、前記１つ以上のプログラムの実行のためにこのような余剰コンピューティングノードが利用可能となったとき（例えば、指定された将来の時期）に実行されるように構成することができる。いくつかのこのような実施形態において、ＰＥＳＳＭ１１０は、前記指定された数の余剰コンピューティングノードが前記期間において利用可能となったと決定した場合、前記要求された実行を前記指定された数の余剰コンピューティングノード上において開始し得る。いくつかの実施形態において、余剰能力ユーザ１５０は、要求された実行を行う際に用いられるべき最小数および／または最大数の余剰コンピューティングノードを指定し得、これにより、ＰＥＳＳＭ１１０が少なくとも前記最小数の余剰コンピューティングノードが（私的余剰能力プールからのものおよび／または一般的な余剰能力プールからのものに関わらず）利用可能であると決定した場合に、前記要求された実行が開始され得、ＰＥＳＳＭ１１０は、前記余剰コンピューティングノードの利用可能性に基づいて、前記要求に関する余剰コンピューティングノードの最大数（ただし、指定されている場合）まで、前記要求された実行を開始し得る。
【００３０】
余剰能力ユーザ１５０のための１つ以上のプログラムの実行についての要求が受信された後、ＰＥＳＳＭ１１０は、適切な数のコンピューティングノードと、前記要求された実行を満たすための十分なコンピューティングリソース（私的余剰能力プールからのものおよび／または一般的な余剰能力プールからのものに関わらない）とが存在すると決定した場合、前記ＰＥＳＳＭは、前記要求された実行を多様な様態で行うために用いられるべき利用可能なコンピューティングノードを選択し得る。例えば、いくつかの実施形態において、前記ＰＥＳＳＭは、適切な数の余剰コンピューティングノードを、十分なリソースを備えた利用可能なコンピューティングノードのうち任意のものから単に選択し得る（例えば、利用可能なコンピューティングノードのプールからランダム選択する）。他の実施形態において、１つ以上の特定のコンピューティングノードが、１つ以上の他の要素（例えば、１つ以上の特定のコンピューティングノードの利用可能性の継続の予測される長さおよび／または可能性、前記１つ以上の特定のコンピューティングノードと、１つ以上の他のコンピューティングノードとの間の物理的近接度、前記１つ以上の特定のコンピューティングノードおよび／または１つ以上の他のコンピューティングノードの地理的位置）に基づいて選択され得る。さらに、１つ以上の特定のコンピューティングノードが特定のユーザによる専用利用対象として指定されている場合、これらの特定のコンピューティングノードは、当該特定のユーザのための私的余剰能力プールの一部としてのみ用いられ得る。
【００３１】
上記したように、余剰コンピューティングノード上における余剰能力ユーザのためのプログラム実行を一時的なものとすることができるため、前記余剰コンピューティングノードについて他の好適な用途が発生した場合（例えば、専用コンピューティングノードを今まで用いていなかった専用能力ユーザ１４０が前記余剰コンピューティングノードを再要求した場合）、ＰＥＳＳＭ１１０は、このようなプログラムを自動的に終了させることができる。このような場合、これらの余剰コンピューティングノードのうちいずれかの上において余剰能力ユーザ１５０を代表するか、そのためにプログラム実行が現在行われている場合、これらのプログラムを自動的に終了させることができ（例えば、アボート、シャットダウン、休止）、これにより、前記コンピューティングノードは他の目的のために自由に利用可能となり、そのため余剰能力ユーザのために利用できなくなる。加えて、別に詳述するように、いくつかの実施形態において、これらのプログラムの実行状態を保存した後終了させることが可能であり、これにより例えばプログラムを後で再開させることが可能となる。さらに、いくつかのこのような実施形態において、前記数のコンピューティングノードを他の目的のために満たすことが可能な余剰能力ユーザ１５０を代表するか、そのためにプログラムを現在実行している複数の余剰コンピューティングノードが存在し得、このような場合、ＰＥＳＳＭ１１０は、多様な要素に基づいて（例えば、先ずユーザの私的余剰能力プールからの余剰能力コンピューティングノードを専用能力用途のために前記ユーザからの要求を満たすために用いるよう再要求するかまたは例えば提出された時間または入札価格などに基づいた余剰能力ユーザの現在の要求のうち決定された優先を用いることにより）、前記余剰コンピューティングノードのうち他の目的のために自由に利用可能であるものを決定することができる。いくつかの実施形態において、前記終了したプログラムのうち少なくとも一部の実行を１つ以上の他の利用可能な余剰コンピューティングノード（少しでも存在する場合）上において例えば即時的にまたは後で移転および／または再開可能にすることができる。いくつかのこのような場合において、プログラムを実行しているか（またはプログラム実行を要求している）現在の余剰能力ユーザ１５０全員を満足させるために利用可能な余剰コンピューティングノードが不足している場合、ＰＥＳＳＭ１１０は、１つ以上の他の余剰コンピューティングノード上において実行している１つ以上のさらなるプログラムを終了させることを決定することができ、その結果、前記特定のコンピューティングノード上において実行していた先に終了された１つ以上のプログラムを、新規に利用可能となった余剰コンピューティングノード上において再開させることができる（例えば、余剰能力ユーザの決定された優先に基づいて再開させることができ、これにより、１つ以上の特定のコンピューティングノード上において実行されていた先に終了されたプログラムと関連付けられた要求は、前記１つ以上のさらなるプログラムと関連付けられた要求のうち少なくとも一部よりも優先される）。いくつかの実施形態において、ＰＥＳＳＭ１１０は、ユーザのプログラムを自動終了させた後、余剰コンピューティングノードが前記ユーザのためのプログラム実行のために利用可能となったとき、前記プログラムの実行を自動的に再開させることができる。加えて、他の実施形態において、ユーザの少なくともいくつかの終了されたプログラムを、１つ以上の他のコンピューティングシステムおよび／またはプログラム実行サービス上において、前記プログラムの実行において利用することが可能な十分なコンピューティングリソース（例えば、可変能力ユーザ１３０へと提供された可変能力機能を介して利用可能な１つ以上のコンピューティングノード、専用能力ユーザ１４０へと提供された専用能力機能、および／またはＰＥＳの外部の１つ以上のサードパーティコンピューティングシステム（図示せず））によって自動的に移転および／または再開させることができる。
【００３２】
加えて、多様な種類のプログラムが、このような余剰能力プールによって提供されるような一時的実行環境における実行により適している（例えば、突発的終了に起因する予期せぬ干渉に比較的耐えるプログラム）。いくつかの実施形態において、余剰能力ユーザは、進捗（例えば、中間結果、現在のランタイム状態）を間欠的に追跡および／または保存するように設計された余剰プログラム実行能力上において１つ以上のプログラムを実行することができ、これにより、前記プログラムを将来の時間において再開して、活動を再開することができる。加えて、いくつかの実施形態において、ＰＥＳＳＭ１１０が余剰コンピューティングノード上で実行しているプログラムを自動終了すると、ＰＥＳＳＭ１１０は、現在のシステムおよび／またはプログラム実行状態を自動検出することができ、これにより、前記検出された状態を各余剰能力ユーザ１５０へと保存および／または提供しておいて、前記プログラムが自動終了したときと同様の状態でプログラム実行を後で再開することが可能になる。あるいは、特定の実行プログラムが自身の実行状態を保存することができる場合、ＰＥＳＳＭ１１０は、前記プログラムを終了させる前に、前記プログラム自身の実行状態保存を行うように前記プログラムに通知することができる。プログラム実行状態の保存の例示的実施形態に関するさらなる詳細について、米国特許出願第１２／３３４，００４号（出願日：２００８年１２月１２日、名称：「Ｓａｖｉｎｇ  Ｐｒｏｇｒａｍ  Ｅｘｅｃｕｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｓｔａｔｅ」）中に記載がある。同文献全体を参考のため援用する。
【００３３】
上記したように、少なくともいくつかの実施形態において、私的余剰能力プールを有するユーザは、（例えば、他の任意のユーザから余剰能力要求が来る前に前記ユーザからの任意の余剰能力要求を実行するように）前記私的余剰能力プール中の任意のプログラム実行能力への優先アクセスを受信するが、このような私的余剰能力プールが、私的プールのために関連付けられたユーザによって現在用いられていない余剰能力を含む場合、前記現在利用可能な余剰能力は、一般的な余剰能力プールを介して他のユーザが一時的に利用できるようにされる。加えて、複数の余剰能力ユーザ１５０のためのプログラム実行を行うための一般的な余剰能力プールから余剰コンピューティングノードへのアクセスは、少なくともいくつかの実施形態において、余剰能力ユーザ１５０間の優先に基づき得、これにより、プログラム実行に関する２つ以上の要求間の余剰コンピューティングノードにおいて一定量の競合がある場合、関連付けられた優先度がより高い要求に対し、前記競合する量の余剰コンピューティングノードをプログラム実行のために用いるためのアクセスが付与される。少なくとも１つの例示的実施形態において、最高入札額（例えば、最高入札）の要求が入札額の低い要求よりも優先され得、入札額間の関係は、他の要素（例えば、より早期に受信された要求）に基づいて解消される。いくつかの実施形態において、余剰能力ユーザ１５０のうち１つ以上は、ＰＥＳＳＭ１１０の実施形態と相互作用して、一般的な余剰能力プールの１つ以上の利用可能な余剰コンピューティングノード（例えば、現在利用可能なおよび／または１つ以上の将来の時間において利用可能な）へのアクセスについて（例えば、オークションスタイルで）入札し得、これにより、落札した入札ユーザは、１つ以上の利用可能な余剰コンピューティングノードへのアクセスを受けることができる。いくつかの実施形態において、ＰＥＳＳＭ１１０は、１つ以上の余剰コンピューティングノード上におけるより優先順位の高い要求のプログラム実行に従って、余剰コンピューティングノードのうち１つ以上の上で現在実行しているより低い優先要求と関連付けられたプログラム実行を自動終了させる。いくつかの他の実施形態（例えば、非優先的実施形態）において、ＰＥＳＳＭ１１０は、係属中の要求を場合によって循環して余剰コンピューティングノード上においてプログラム実行を行うことができ、これにより、余剰コンピューティングノードのうち１つ以上の上において一定の実行時間を各要求へと付与することができる。
【００３４】
いくつかの実施形態において、ＰＥＳＳＭ１１０は、ＰＥＳＳＭ１１０と相互作用している余剰能力ユーザ１５０のうち１つ以上に対して双方向フィードバックを提供することができ、これにより、一般的な余剰能力プールの一定量の余剰コンピューティングノード上におけるプログラム実行を構成および／または要求することができる。例えば、いくつかのこのような実施形態において、双方向フィードバックは、例えば、現在の需要および／または予測される需要、現在の余剰コンピューティングノードの量および／または余剰コンピューティングノードのあり得る量、１つ以上の入札レベルなどに基づいた、指定された量の余剰コンピューティングノード上において要求されたプログラムが実行される時期および／または長さについての通知を含み得る。１つの例示的実施形態において、ＰＥＳＳＭ１１０は、提案される入札レベルと、対応する情報とを含み得る。前記対応する情報は、要求された実行が発生しそうな時期および／または完了しそうな時期を示す。このような情報により、（例えば、異なる入札額、異なる量および／または種類のコンピューティングノード、異なる実行長さ）、余剰能力ユーザの希望を満たすための要求を指定することにより、余剰能力ユーザ１５０を再構成することが可能となる。その結果、前記要求を例えばより早期に行うことが可能となる。
【００３５】
上記したように、余剰能力ユーザ１５０に対し、余剰プログラム実行能力の利用と関連して多様な料金を課金することができる。このような課金は、例えば、ユーザのために用いられている余剰プログラム実行能力が当該ユーザのための私的余剰能力プールの一部であるかに基づいて、利用されているコンピューティングノードの数量および／または１つ以上の利用要素（例えば、用いられた時間数、消費された共有リソース量、時間コンピューティングノードの使用量など）に基づいてかつ／またはコンピューティングノードの利用についての１つ以上の余剰能力ユーザ１５０からの１つ以上の入札に基づいて行うことができる。いくつかの実施形態において、一般的な余剰コンピューティング能力プールを利用する１つ以上の余剰能力ユーザ１５０に課金される料金のうち一部を、前記一般的な余剰能力プール中のコンピューティングノードを提供した１つ以上の他のユーザへと提供することができる（例えば、１つ以上の専用能力ユーザ１４０、１つ以上の他のユーザ１６０）。例えば、いくつかの実施形態において、このような他のユーザに対し、余剰能力ユーザから収集された料金のうち比例する一部が支払われ得る（例えば、その他のユーザによって経時的に貢献されるコンピューティングノードの量を反映する比例する額）。いくつかの場合において、他のユーザに供給されるこのような料金は、これらの他のユーザに起因して発生する他の課金（例えば、専用能力ユーザに起因して発生する課金）を相殺するように、ＰＥＳプロバイダによって自動的に貸方記入されるかおよび／または前記他のユーザへと支払われ得る。
【００３６】
加えて、いくつかの実施形態において、ＰＥＳＳＭ１１０は、電子市場（図示せず）を１つ以上の専用能力ユーザ１４０へと提供することができ、これにより、１つ以上の専用能力ユーザ１４０は、前記専用能力の使用期間において、自身の専用コンピューティングノードへのアクセスを１つ以上の他のユーザ１６０へと移転させることができる。他の実施形態において、専用能力ユーザ１４０および別のユーザ１６０は、ＰＥＳの外部において入れ替えて配置され得る。いくつかの実施形態において、ユーザ１６０は、専用能力ユーザの専用コンピューティングノードの移転された部位へのアクセスの対価として支払いを専用能力ユーザへと提供し得、これにより、購入したユーザは、前記専用プログラム実行能力の移転された部位へとアクセスして、前記購入したユーザを代表するか、そのためにプログラム実行を行うことができる。交換のために提供されるアクセスの価格は、例えば専用能力ユーザが指定した固定価格またはユーザ１６０が提案した入札価格を介して、多様な実施形態において多様な様態で決定することができる。いくつかの実施形態において、専用コンピューティングノードのための交換は、当該交換が一時的でありかつ／または永久となるように、行われ得る。例えば、いくつかの実施形態において、交換は、指定された一定期間にわたっておよび／または多様な時間間隔にわたって行われ得、これにより、購入したユーザは、当該指定された期間にわたっておよび／または多様な間隔にわたってコンピューティングノードへアクセスすることができ、その後、前記専用コンピューティングノードは、前記専用能力ユーザによって用いられるよう前記専用能力ユーザへと戻り得る。他の実施形態において、前記交換は永久であり得、その場合、購入したユーザは、専用コンピューティングノードと関連付けられた残りの利用期間全体にわたって前記専用コンピューティングノードへアクセスすることができる。いくつかの実施形態において、加入した専用能力ユーザ１４０による専用使用のための１つ以上のコンピューティングノードの初期割り当ての一環として、ＰＥＳＳＭ１１０は、１人以上のユーザトークンを加入ユーザへと割り当て得、かつ／または、割り当てられたコンピューティングノードを他の場合において加入専用能力ユーザのアカウントと関連付け得、これにより、前記専用能力ユーザによるコンピューティングノードの利用を多様な目的のために追跡することが可能となる（例えば、構成、認証、課金）。このような実施形態において、専用能力ユーザが自身の専用コンピューティングノードのうち一部を新規ユーザへと移転させた場合、任意の提供されたトークンを前記新規ユーザへと移転させることができ、かつ／または、前記コンピューティングノードの一部を他の場合において前記新規ユーザのアカウントと関連付けることができる。いくつかの実施形態において、ＰＥＳＳＭ１１０のプロバイダは、専用コンピューティングノードの一部のユーザ間での移転と関連して、さらに料金を収集し得る。
【００３７】
上記の図１Ａの例示的実施形態について、多様な種類の機能を多様な種類のユーザ（例えば、可変能力ユーザ、専用能力ユーザおよび余剰能力ユーザ）のために提供するＰＥＳを用いて説明したが、多様な他の実施形態（例えば、多様な種類のユーザのうち１つ以上を用いるかまたは用いない実施形態）も存在し得ることが理解される。例えば、いくつかの実施形態において、プログラム実行サービスは、余剰能力ユーザのための機能は提供するが、可変能力ユーザおよび／または専用能力ユーザは含まない場合があり得る（例えば、１つ以上のサードパーティおよび／またはＰＥＳと関連付けられたアフィリエイトエンティティによって余剰プログラム実行能力が提供され、これにより、このようなパーティおよび／またはエンティティは、他の場合において未使用状態であるコンピューティングリソースを収益化することができる）ことが理解される。加えて、当該サービスによって提供されるプログラム実行能力全てに一時的に基づいてプログラム実行を行うための要求をユーザが提出しかつ／または予定することを可能にする入札ベースのＰＥＳと関連して上記技術のうち一部を用いることも可能であり、その場合、実行時における優先レベルの高い要求が実行される。加えて、多様なユーザ１３０、１４０、１５０および１６０はそれぞれ、他の多様なユーザのうち１つ以上として時に機能することができることが理解される（例えば、これらのユーザが、これらの他の多様なユーザに対応する種類の関連付けられた機能にアクセスする場合（例えば、専用能力ユーザ１４０が余剰能力ユーザ１５０として時に機能し、これらのユーザが未使用状態である専用能力に基づいて私的余剰能力プールを利用する場合））。別の例として、いくつかの実施形態において、専用プログラム実行能力上のプログラム実行を行う専用能力ユーザとして機能する特定のユーザは、オンデマンド可変能力ユーザとしても機能することができる（例えば、特定のユーザが、各ユーザのための１つ以上のプログラムの実行のためにさらなるコンピューティングリソースを必要とする場合）。
【００３８】
加えて、少なくともいくつかのさらなる実施形態において、コンピューティングノード１２０のうちの１つの未使用状態である部位（例えば、未使用状態である処理ユニットクロックサイクル、メモリの未使用状態部位）を１つ以上の余剰能力ユーザ１５０によって利用可能とすることができ、これにより、前記１つ以上の余剰能力ユーザの１つ以上のプログラムが、単一のコンピューティングノードのリソースを専用能力ユーザ１４０および／または他の余剰能力ユーザ１５０と共有することができる。加えて、いくつかの実施形態において、専用能力ユーザ１４０の利用対象として割り当てられたコンピューティングノードのうち少なくとも一部を、１つ以上の可変能力ユーザ１３０によって利用可能とすることができる（例えば、このようなアクセスに起因する専用能力ユーザへの影響は無い可能性が高いと決定された場合（例えば、将来の需要の正確な予測が可能である場合））。さらに、いくつかの実施形態において、１つ以上の専用能力ユーザ１４０によって専用として用いられるコンピューティングノードのうち一部が加入超過状態になっている場合（例えば、売れすぎでありかつ／または１つ以上の他の長期ユーザへと提供されている場合）において、これらのユーザが前記加入超過状態のコンピューティングノードの利用を要求しているために前記加入超過状態のコンピューティングノードを１つ以上の専用能力ユーザ１４０が利用することができない場合、前記加入超過状態のコンピューティングノード上で実行しているプログラムのうち１つ以上を１つ以上の他のコンピューティングノードへと移転させることができる（例えば、１つ以上の遠隔データセンターにおいて利用可能である１つ以上の他のコンピューティングノードおよび／または１つ以上のプログラムの実行のために利用可能な他のコンピューティングシステム（例えば、別のプログラム実行サービスによって提供されるコンピューティングシステム））。
【００３９】
加えて、いくつかの実施形態においてプログラム実行サービスおよびプログラム実行能力について記載しているが、上記記載の技術は、多様な他のコンピューティングノードグループまたは他の種類のコンピューティング関連リソースへのアクセスの管理にも利用可能であることが理解される。複数のユーザによって利用され得る他の種類のコンピューティング関連リソースの非限定的リストの例を以下に挙げる：永続的データ記憶能力（例えば、不揮発性メモリデバイス（例えば、ハードディスクドライブ）上のもの）、一時的データ記憶能力（例えば、揮発性メモリ（例えば、ＲＡＭ）上のもの）、メッセージ待ち行列および／または通過能力、他の種類の通信能力（例えば、ネットワークソケット、仮想通信回路）、データベース管理能力、専用帯域または他のネットワークに関連するリソース、入力デバイス能力、出力デバイス能力、プロセッサ（例えば、ＣＰＵ）サイクルまたは他の命令実行能力。例えば、ユーザは、１つ以上の通知された種類のコンピューティング関連リソースを使用することを要求し得、ＰＥＳＳＭモジュールは、各通知された種類のリソースの量を自動的に決定し得る（このような自動決定は、例えば、前記要求中において前記ユーザが指定した明示的な数量または他の量に基づいて、特定のリソース種類と関連付けられた所定の量に基づいて、通知されたリソース種類の利用可能な量に基づいて行われ得る）。その結果、前記ユーザに対し、例えば第１の量の揮発性メモリおよび第２の量の永続的記憶が付与される。
【００４０】
図１Ｂ中に示す実施形態において、複数の物理的なコンピューティングシステムを含む１つ以上のデータセンターを用いてプログラム実行サービスが提供され得る。詳細には、図１Ｂ中に示す例示的実施形態において、プログラム実行サービスのＰＥＳＳＭモジュール１８０は、ユーザのための１つ以上のプログラムの実行を管理する。例示の例は、ＰＥＳによって用いられるデータセンター１７０を含む。前記ＰＥＳは、データセンター１７０の外部にあるインターネット１９６へと接続される。この例において、インターネット１９６は、私的ネットワーク１９４および他のコンピューティングシステム１９２を介した多様な外部コンピューティングシステム（例えば、コンピューティングシステム１９０）へのアクセスならびに１つ以上の他のデータセンター１９８にあるさらなるコンピューティングシステム（図示せず）へのアクセスを提供する。私的ネットワーク１９４は、例えば企業ネットワークであり得、私的ネットワーク１９４の外部にある非優先的コンピューティングシステムから全体的または部分的にアクセスが不可能である。コンピューティングシステム１９２を挙げると、例えば、（例えば、電話モデムまたはケーブルモデム、デジタル加入者線（「ＤＳＬ」）などを介して）インターネットへと直接接続された家庭コンピューティングシステムがある。加えて、少なくともいくつかの実施形態において、１つ以上の他のデータセンター１９８はＰＥＳによってさらに用いられ得る。
【００４１】
例示的なデータセンター１７０は、複数の物理的なホストコンピューティングシステム１７５と、物理的なコンピューティングシステム１８２と、ＰＥＳのＰＥＳＳＭモジュール１８０とを含む。この例において、ホストコンピューティングシステム１７５はそれぞれ、複数の仮想マシン１７７を提供し、仮想マシン（「ＶＭ」）マネージャコンポーネント１７９を有する。仮想マシン（「ＶＭ」）マネージャコンポーネント１７９は、これらの仮想マシン（例えば、ハイパーバイザまたは他の仮想マシンモニタ）を管理する。コンピューティングシステム１８２のうち一部または全体も、同様に１つ以上のこのような仮想マシンおよび／またはＶＭマネージャコンポーネント（図示せず）を持ち得る。あるいは、他の実施形態において、データセンターにおける物理的なホストコンピューティングシステムのうちの一部または全ては、任意の仮想マシンを提供せず、その代わりに、ＰＥＳのエンドユーザ顧客を代表するか、そのために１つ以上のプログラムを直接実行する。さらに、いくつかの実施形態において、多様なコンピューティングシステム１７５および１８２は、異なる能力を持ち得、異なる関連付けられた利用料金を持ち得、異なる種類のユーザプログラム（例えば、異なるサイズの仮想マシンソフトウェア画像インスタンス、または異なる種類のリソース基準および／またはコンピューティングリソース使用量プログラム（例えば、異なるパターンのＩ／Ｏおよびメモリアクセスおよびネットワーク使用量））をサポートし得る。このようなサポートが可能な場合、１つ以上のこのような要素に従って、特定のユーザおよび／またはそのプログラムを（例えば自動的に）グループ分けすることができる。前記グループ分けされたユーザおよび／またはそのプログラムを、特定のプログラムの実行のために用いられるコンピューティングシステムの選択において用いられる制限事項および／または選好事項としてさらに用いることができる。例示的データセンター１７０は、内部ネットワーク１７２をさらに含む。内部ネットワーク１７２は、複数のネットワーキングデバイス（図示せず）を含む（例えば、スイッチ、エッジルータ、およびコアルータ）。ＰＥＳＳＭモジュール１８０を実行するコンピューティングシステム１７５および１８２ならびに１つ以上のコンピューティングシステム（図示せず）は、内部ネットワーク１７２へと接続される。
【００４２】
例示のＰＥＳＳＭモジュール１８０は、他により詳細に説明するように、上記した技術のうち少なくともいくつかを行って、コンピューティングシステム１７５および１８２を用いたプログラム実行を管理する。特定のコンピューティングノードまたはシステムが、ユーザの１つ以上のプログラムを実行するために選択されると、いくつかの実施形態において、ＰＥＳＳＭモジュールは、選択されたコンピューティングノード／システムのためのプログラム実行を制御するＶＭマネージャコンポーネントまたは他のマネージャコンポーネントと相互作用することにより、これらのプログラムの実行を開始することもできるし、あるいは、選択されたコンピューティングノード／システム上のプログラムを直接実行することもできる。ＰＥＳのユーザは、多様なコンピューティングシステムを用いて、ＰＥＳＳＭモジュール１８０（例えば、コンピューティングシステム１９０または１９２、または他のデータセンター１９８のうちの１つにおけるコンピューティングシステム）と相互作用することができる。
【００４３】
図１Ｂのデータセンターはひとえに例示目的のために記載されたものであり、他の実施形態において、プログラム実行サービスおよび他のソフトウェア実行サービスを他の様態で利用することが可能であることが理解される。例えば、ＰＥＳＳＭモジュール１８０は、データセンター１７０の外部にある１つ以上の他のコンピューティングシステム（例えば、コンピューティングシステム１９０、１９２）またはデータセンター１９８にあるものを用いて提供され得る。他の実施形態において、ＰＥＳは、任意のデータセンターを用いて提供され得る。
【００４４】
図２Ａおよび図２Ｂは、余剰コンピューティングノードの利用を管理するための技術の例を示す（例えば、ＰＥＳＳＭモジュールの実施形態によって自動実行され得るもの）。詳細には、図２Ａは、一般的な余剰コンピューティング能力プールからの余剰コンピューティング能力の利用要求の受信および取り扱いの例を示す。図２Ａ中の例示的ユーザは、関連付けられた私的余剰コンピューティング能力プールを有しない。図２Ｂは、図２Ａの例からの続きであるが、前記ユーザのうちの１つが私的余剰コンピューティング能力プールを持っており、多様な要求の取扱は、私的余剰コンピューティング能力プールの利用を含む。
【００４５】
図２Ａを参照して、表２００は、プログラム実行サービスの多様なユーザが時間２０５と共にプログラム実行サービスの複数のコンピューティングノード２１０を利用した際の利用量に関する情報を示す。各コンピューティングノード２１０の利用が、逐次的時間間隔２０５ａ〜２０５ｏにおいて例示される。加えて、表２５０は、プログラム実行サービスの一般的な余剰コンピューティング能力プールの余剰コンピューティングノードを用いてユーザのためのプログラムを実行するためのプログラム実行サービスによって受信される例示的要求Ａ、Ｂ、ＣおよびＤに関する情報を示す。例示の表２００中において、陰影付部分は、以下のように用いられる：灰色一色の背景で示された時間間隔（例えば、専用コンピューティングノード２１２ｂの時間間隔２０５ａおよび他のコンピューティングノード２１４ａの時間間隔２０５ｈ）は、上記各時間間隔内において各コンピューティングノードを余剰プログラム実行能力のために用いることができないことを示す（例えば、各コンピューティングノードは、１つ以上の他の目的のために用いられておりかつ／または他の場合において利用不可能である）、白色一色の背景で示された時間間隔（例えば、専用コンピューティングノード２１２ｃの時間間隔２０５ｂおよび２０５ｃ）または斜線で示された背景で示された時間間隔（例えば、専用コンピューティングノード２１２ｂの時間間隔２０５ｆおよび他のコンピューティングノード２１４ｂの時間間隔２０５ｏ）は、各時間間隔において各コンピューティングノードが余剰プログラム実行能力として利用可能であることを示す、Ａ、Ｂ、ＣまたはＤの文字を含む時間間隔（例えば、専用コンピューティングノード２１２ａの時間間隔２０５ｆ〜２０５ｋ）は、余剰プログラム実行能力に関する各要求のプログラムが、前記時間間隔内において各コンピューティングノード上において実行されることを示す。１つの例示的例として、各時間間隔２０５ａ〜２０５ｏは、１時間に対応するか、または、他の時間間隔に対応する（例えば、１日、１０分間）。
【００４６】
上記したように、表２５０は、多様な指示時間においてプログラム実行サービスが受信する多様な要求を示す。前記多様な要求はそれぞれ、コンピューティングノード２１０を用いてプログラム実行サービスから利用可能な指定量の余剰コンピューティングノード上において１つ以上のプログラムを実行することである。加えて、前記要求はそれぞれ、多様な指定構成情報を有する（この例において例を挙げると、前記要求の１つ以上のプログラムを実行するための、指定された最小数および最大数のコンピューティングノード、コンピューティングノードそれぞれの上における１つ以上のプログラムの実行のためにユーザが快く支払える入札料金額（例えば、単一のコンピューティングノードの１時間の利用あたりの金額（ドル））、当該要求が期限切れとなる指定時期（例えば、経過後は要求が期限切れとなる、指定された合計実行時間、要求が期限切れとなる指定時間）。１つの例示的例として、要求Ａは、時間間隔２０５ｃにほぼ対応する時期において受信された（例えば、時間間隔２０５ｃの直前または時間間隔２０５ｃの最中）、最小数および最大数のコンピューティングノードはどちらとも、単一の余剰能力コンピューティングノード上において実行されるべき選好事項を示す（例えば、入札価格として、単一の余剰コンピューティングノードが利用される１時間あたり＄０．０５が指定され、期限切れは指定されていない（例えば、プログラム実行が完了するまで当該要求が継続的に実行および／または再実行することを示す））。この例において、コンピューティングノード２１０は全て、ほぼ同一の量またはまったく同一の量のコンピューティング能力を時間間隔あたりにおいて提供することができ、他の実施形態において、標準的量のプログラム実行能力を他の様態で指示することもできる（例えば、このような指示は、特定の量のコンピューティングリソースに対応する論理「コンピューティングノード」手段を用いて、および、提供される論理「コンピューティングノード」の数としての特定の実際のコンピューティングノードの評価として行うことができる）。他の実施形態において、多様な要求を多様な様態で構成することができる（例えば、利用対象としての指定された特定の種類のコンピューティングノードのうち１つ以上（例えば、および／またはこのようなコンピューティングノードの特性）、最小入札額および／または最大入札額、ならびに／あるいは１つ以上の他の構成（例えば、耐故障要求、実行局所性および／または近接選好事項））。加えて、いくつかの実施形態において、他の種類の情報を示すこともできる（例えば、各要求について実行されるべき１つ以上の特定のプログラム、当該要求における、凝集コンピューティングノード時間間隔の合計）。
【００４７】
例示の表２００は、複数の専用能力コンピューティングノード２１２を含む（例えば、プログラム実行サービスの１つ以上の特定の専用能力ユーザへの専用アクセスのために割り当てられたコンピューティングノード）。例示の表２００はまた、複数の他のコンピューティングノード２１４も含む（例えば、他の種類のプログラム実行能力（例えば、オンデマンド可変プログラム実行能力）のために利用することが可能なコンピューティングノード）。例えば、専用能力ユーザ（図示せず）は、指定期間（例えば、１年間）において、特定のコンピューティングノード２１２ａへの優先アクセスを持ち得、これにより、ユーザは、自身のためのプログラムを実行するためのコンピューティングノード２１２ａへのアクセスを前記指定期間内における任意の時期を行うことができる。このようなアクセスにおいては、遅延期間および／またはユーザ側におけるアクセス獲得のための１つ以上の相互作用が発生し得る（例えば、コンピューティングノード２１２ａを特定の時期において利用する意図を示す通知、コンピューティングノード２１２ａ上におけるプログラム実行要求）。他の実施形態において、専用能力ユーザ（図示せず）は、コンピューティングノード２１２ａ（例えば、相当する処理能力、メモリ）としての相当するコンピューティングリソースを有するコンピューティングノードへの優先アクセスを持ち得るが、特定の割り当てられたコンピューティングノード２１２は持っていない。その場合、ユーザに対し、ユーザのためのプログラム実行のための２１２ａに相当しかつ利用可能であるコンピューティングノード２１２のうち任意のものへのアクセスが付与され得る。多様なこのような実施形態において、プログラム実行サービスは、２１２ａに相当する十分な数の専用コンピューティングノードが、このようなコンピューティングノードへのアクセスを持ち得る専用ユーザによって利用可能であることを、多様な様態で保証することができる（例えば、このようなコンピューティングノードのグループの維持および／または他の場合において特定の量のこのようなノードの備蓄）。
【００４８】
表２００中において、間隔２０５ａ〜２０５ｃにおいて、例えばコンピューティングノード２１２ｃが割り当てられている専用能力ユーザが専用コンピューティングノード２１２ｃが未使用状態であると決定したため、専用コンピューティングノード２１２ｃが余剰能力であると決定されており、その結果、専用コンピューティングノード２１２ｃが余剰能力ユーザによって利用可能となる。例えば、専用能力ユーザは、プログラム実行サービスと相互作用して、例えば時間間隔２０５ａよりも前の時期においてコンピューティングノード２１２ｃが余剰プログラム実行能力のために利用可能となっていることを通知し、あるいは、プログラム実行サービスがコンピューティングノード２１２ｃが未使用状態であると自動的に決定している場合もある。例示の例において、例示のコンピューティングノードのうちその他全て（例えば、２１２ａ〜２１２ｂ、２１２ｄ、および２１４ａ〜２１４ｂ）は、間隔２０５ａ〜２０５ｃにおいて利用可能であると決定されていない。時間間隔２０５ｃにおいて、要求Ａが受信され、プログラム実行サービスは、要求Ａと関連付けられたプログラムを利用可能な余剰能力コンピューティングノード２１２ｃ上においてユーザが指定した＄０．０５／時間の料金で実行することを決定し、コンピューティングノード２１２ｃ上においてプログラム実行を開始する。他の実施形態において、あるいは、プログラム実行サービスは、一部のまたは全部の余剰能力ユーザが利用する固定価格を用い得る。
【００４９】
時間間隔２０５ｄにおいて、プログラム実行サービスは、余剰プログラム実行能力要求を満たすためにコンピューティングノード２１２ｃを利用することがもはやできないことを決定する（例えば、このような決定は、前記コンピューティングノードの利用を再請求している専用能力ユーザから受信された通知に基づく）。その後、要求Ａと関連付けられたプログラムの実行は、コンピューティングノード２１２ｂ上において終了される。間隔２０５ｆにおいて、プログラム実行サービスは、２つのコンピューティングノードが要求Ａを実行するための十分なリソース（例えば、専用コンピューティングノード２１２ａおよび２１２ｂ）と共に余剰能力コンピューティングノードとして利用可能であると決定し、要求Ａのプログラムの実行を専用コンピューティングノード２１２ａ上において再開することを決定する。図示の実施形態において、専用コンピューティングノード２１２ｂについての時間間隔２０５ｆ中の斜線は、前記時間間隔においてノード２１２ｂが余剰コンピューティング能力として利用可能であるが、余剰コンピューティング能力としての用途には不適切であるため、要求Ａを満足するために選択されていない旨を示す。コンピューティングノード２１２ｂは、多様な理由に起因して不適切である（例えば、（以前の利用履歴または利用予測などに基づいて）プログラム実行サービスが割り当てられた専用能力ユーザからの通知に基づいて、コンピューティングノード２１２ｂの利用可能性の長さが短くかつ／または不確実である（例えば、プログラム実行サービスが決定した理由））。一方、ノード２１２ａについて、利用可能性がノード２１２ｂよりも相対的に長い可能性が高いと決定される場合もある。このような状況において、プログラム実行サービスは、余剰能力ユーザの要求を実行するための利用可能性がもはや無くなったコンピューティングノードを選択するという選好事項を持ち得る（例えば、多様なコンピューティングノード２１０上における実行プログラムの開始／停止が必要であるための最小化のためのもの）。よって、この例において、コンピューティングノード２１２ｂは、時間間隔２０５ｆにおいて利用されず、別の余剰コンピューティング能力要求が時間間隔２０５ｆに先行して受信された場合、ノード２１２ｂは、当該他の要求に起因して用いられる場合がある。
【００５０】
この例において、表２５０によって例示するように、要求Ｂは、間隔２０５ｇで受信される。この例において、そのときに利用可能な余剰コンピューティングノードは１つしか存在しない（例えば、専用コンピューティングノード２１２ａ）場合、プログラム実行サービスは、例えば要求Ａ（例えば、＄０．０５／時間）よりも入札額がより高い要求Ｂ（例えば、＄０．０８／時間）または他の場合において優先レベルがより高い要求Ｂに基づいて、要求Ｂのプログラムの代わりに要求Ａのためにプログラム実行を終了することを決定する。この例において、要求Ｂは、＄０．０８／時間の料金で時間間隔２０５ｇ〜２０５ｉにわたって、専用コンピューティングノード２１２ａ上において連続的に実行される。時間間隔２０５ｉにおいて、２つのコンピューティングノードは、余剰コンピューティングノード（専用コンピューティングノード２１２ａおよび２１２ｄ）として利用可能であり、これらはそれぞれ、要求Ｂについてプログラム実行を行うための十分なリソースを有する。なぜならば、要求Ｂは、最大で２つのコンピューティングノードを指定しており、要求Ｂのプログラムは、図示の実施形態中のノード２１２ａ上に実行し続けており、同様にノード２１２ｄ上において開始される。
【００５１】
時間間隔２０５ｊにおいて、３つの専用コンピューティングノードは、余剰能力コンピューティングノード（コンピューティングノード２１２ａ、２１２ｃおよび２１２ｄ）として利用可能であると決定され、要求Ｃが受信される。この実施形態において、要求Ｂのプログラムが専用コンピューティングノード２１２ｄおよび２１２ａ上での実行から終了され、要求Ｃと関連付けられた１つ以上のプログラムが、最大で３つのノード上での実行と、要求Ａおよび要求Ｂよりも相対的により高い入札額（例えば、＄０．１０／時間）とを有する指示選好事項を有する要求Ｃに基づいて、３つの利用可能な余剰コンピューティングノード全ての上において実行される。その結果、要求Ａおよび要求Ｂよりも要求Ｃが優先される。時間間隔２０５ｋにおいて、例えば他の目的のために再請求されたかまたは他の場合において利用不可能となったコンピューティングノード２１２ｄに基づいて、２つの専用コンピューティングノードが余剰コンピューティングノード（コンピューティングノード２１２ａおよび２１２ｃ）として利用可能であると決定される。要求Ｃと関連付けられた１つ以上のプログラムは、コンピューティングノード２１２ｄ上において終了されるが、例えば要求Ｃについての好適な最大数および最小数のコンピューティングノードに基づき、また要求Ｃは要求Ａおよび要求Ｂよりも優先されるため、要求Ｃと関連付けられた１つ以上のプログラムは、ノード２１２ａおよび２１２ｃ上において実行し続けられる。要求Ｃのプログラム（単数または複数）は、時間間隔２０５ｌにおいてコンピューティングノード２１２ｃ上において実行し続けるが、前記コンピューティングノードは余剰コンピューティング能力の用途において利用不可能となっているため、コンピューティングノード２１２ａ上における実行は終了する。時間間隔２０５ｌ後において、プログラム実行サービスは、要求Ｃが少なくとも３時間にわたって時間間隔２０５ｊ〜２０５ｌにおいて実行されたため期限切れとなったことを決定する。よって、前記プログラム実行サービスは、要求Ｃと関連付けられたプログラムの余剰能力コンピューティングノード上における実行を終了し、要求Ｃは、満足されるべき係属中の要求として取り扱われなくなる。時間間隔２０５ｍにおいて、１つのコンピューティングノード（専用コンピューティングノード２１２ｃ）が余剰プログラム実行能力として引き続き利用可能であると決定され、要求Ｂと関連付けられたプログラムの実行がコンピューティングノード上において再開される。
【００５２】
時間間隔２０５ｍにおいて、（例えば、連続５時間の実行後に完了したプログラム（単数または複数）または要求Ｂを提出した余剰能力ユーザからの要求Ｂを取り消す旨の受信された命令（図示せず）に基づいて）要求Ｂについてのプログラム（単数または複数）の実行が終了し、要求Ｂは、満足されるべき係属中の要求として取り扱われなくなる。加えて、このときまたはこれに近いタイミングで、要求Ｄが受信される。要求Ｄは、以前に受信された要求Ａに相当する入札額（例えば、＄０．０５／時間）を有する。この場合、プログラム実行サービスは、Ｄよりも早期に受信された要求Ａに基づいて、（要求Ｄと関連付けられたプログラムではなく）要求Ａと関連付けられたプログラムの利用可能な専用コンピューティングノード２１２ｃ上における実行を次の時間間隔２０５ｎにおいて再開することを決定する。要求Ａは、時間間隔２０５ｏ後において何らかの未知の将来の時間が来るまで、ノード２１２ｃ上において実行し続ける。間隔２０５ｏにおいて、他のコンピューティングノード２１４ｂのうち１つは、余剰プログラム実行能力として利用可能となり、不適切な余剰能力コンピューティングノードであると決定されるが、要求Ｄのプログラムはそれでも他のコンピューティングノード２１４ｂ上において実行される。なぜならば、現在利用可能な余剰コンピューティングノードは他に無いからである。
【００５３】
図２Ａの例示的例において、プログラム実行サービスは、多様な要求Ａ〜Ｄに対応するコンピューティングノード２１０の使用量を追跡することができ、これにより、多様な関連付けられたユーザに対し、前記多様な要求によって示された入札額に対応する料金が課金される。加えて、前記プログラム実行サービスは、用いられたコンピューティングノード２１０および／または余剰能力ユーザによって利用可能となったコンピューティングノード２１０を追跡し得、これにより、これらのコンピューティングノードと関連付けられた１人以上のユーザに対し、余剰能力ユーザから収集された料金のうち一部を付与することができる。
【００５４】
図２Ｂは、図２Ａの例を引き続き示すが、前記ユーザのうち１人は、私的余剰コンピューティング能力プールを有し、多様な要求の取扱には、前記私的余剰コンピューティング能力プールの利用が含まれる。図２Ｂは、図２Ａにおけると同様、情報２００および２５０を示すが、前記私的余剰コンピューティング能力プールの利用を以下に説明するように反映するために、一定の変更が含まれている。加えて、図２Ａと比較して、新規情報２６０および２７０が図２Ｂにおいて追加されている。
【００５５】
詳細には、図２Ｂの例において、要求Ｂ（図２Ｂ中、ＲｅｑｕｅｓｔｅｒＢ＊と呼ぶ）を提出したユーザは、専用能力ユーザでもあり、情報２７０によって示すように、時間間隔２０５ａ〜２０５ｏを含む期間にわたるコンピューティングノード２１２ａの専用使用が割り当てられている。よって、図２Ｂにおいて、コンピューティングノード２１２ａの陰影付部分のうち平行線模様部分として変更されている部分は、コンピューティングノード２１２ａの未使用状態である能力のうちＲｅｑｕｅｓｔｅｒＢ＊について私的余剰能力プールとして利用可能であるものを反映する。この例において、コンピューティングノード２１２ａについての時間間隔２０５ａ〜２０５ｅおよび２０５ｌ〜２０５ｏは、ＲｅｑｕｅｓｔｅｒＢ＊によるコンピューティングノード２１２ａの専用使用に対応する。よって、コンピューティングノード２１２ａは時間間隔２０５ｆ〜２０５ｋにわたってＲｅｑｕｅｓｔｅｒＢ＊について私的余剰コンピューティング能力プールの一部として利用可能である。他にさらに詳述するように、ＲｅｑｕｅｓｔｅｒＢ＊からの要求は、私的余剰コンピューティング能力プールのための利用において優先される。
【００５６】
時間間隔２０５ａ〜２０５ｉにおける割り当ては、図２Ｂも図２Ａも同じである。例えば、ＲｅｑｕｅｓｔｅｒＢ＊からの要求Ｂは、図２Ａ中の一般的な余剰コンピューティング能力プールにおいて要求Ａよりも優先される要求Ｂに基づいて、図２Ａにおいて時間間隔２０５ｇ〜２０５ｉにわたってコンピューティングノード２１２ａを利用するように既に割り当てられており、よって、コンピューティングノード２１２ａが図２Ｂ中の私的余剰コンピューティング能力プールのために利用された場合でも、これらの先行割り当ては変更されない。しかし、時間間隔２０５ｊにわたって要求Ｃが受信された後、図２Ｂ中の割り当ては、前記私的余剰コンピューティング能力プールの利用に基づいて、図２Ａに対して変化する。詳細には、図２Ａにおいて、要求Ｃは、一般的な余剰コンピューティング能力プールについて要求Ａおよび要求Ｂよりも優先され、よって、図２Ａ中の時間間隔２０５ｊにおいて利用可能な３つの余剰コンピューティング能力ノードは全て、プログラム（単数または複数）を要求Ｃについて実行することを開始する。しかし、図２Ｂを参照して、ＲｅｑｕｅｓｔｅｒＢ＊からの要求Ｂは、時間間隔２０５ｊにおいてＲｅｑｕｅｓｔｅｒＢ＊の私的余剰コンピューティング能力プール中の余剰コンピューティング能力について最も高い優先順位を引き続き持ち、よって、要求Ｃについてのプログラム（単数または複数）も、図２Ｂ中の時間間隔２０５ｊにおいてコンピューティングノード２１２ｃおよび２１２ｄ上において実行開始されるが、要求Ｂのついてのプログラム（単数または複数）は、図２Ａの様態と異なる様態で、図２Ｂ中の前記時間間隔においてコンピューティングノード２１２ａ上において引き続き実行する。詳細には、ＲｅｑｕｅｓｔｅｒＢ＊からの要求は時間間隔２０５ｊにおいて利用可能であるため、当該要求（この例において、要求Ｂ）は、ＲｅｑｕｅｓｔｅｒＢ＊の私的余剰コンピューティング能力プールの一部であるコンピューティングノード２１２ａの余剰コンピューティング能力について優先される。同様に、後続の時間間隔２０５ｋにおいて、要求Ｂについてのプログラム（単数または複数）が引き続き実行した場合、これらのプログラム（単数または複数）は、ＲｅｑｕｅｓｔｅｒＢ＊の私的余剰コンピューティング能力プールについて要求Ｃよりも優先される要求Ｂに基づいて、同じ理由によってコンピューティングノード２１２ａ上において引き続き実行している。しかし、この例において、要求Ｂは連続する５時間のプログラム実行後に終了するため、要求Ｂのプログラム（単数または複数）は、時間間隔２０５ｊ後に終了する。よって、時間間隔２０５ｋにおけるコンピューティングノード２１２ａのための余剰コンピューティング能力は、一般的な余剰コンピューティング能力プールへと戻り、要求Ｃのプログラム（単数または複数）は、時間間隔２０５ｋにわたってコンピューティングノード２１２ａ上において実行し始める。
【００５７】
よって、私的余剰コンピューティング能力プールを利用することにより、図２Ｂの例中のＲｅｑｕｅｓｔｅｒＢ＊において多様な恩恵が得られる。例えば、第１の恩恵として、要求Ｂは、図２Ｂの例においてより早期に（詳細には、図２Ａ中の時間間隔２０５ｍの終了ではなく図２Ｂ中の時間間隔２０５ｊの終了までに）完了する。加えて、図２Ｂの例中の第２の恩恵として、ＲｅｑｕｅｓｔｅｒＢ＊について、要求Ｂの動作は、図２Ａ中の要求Ｂの動作よりもより安価に行われる。詳細には、図２Ｂの例において、ＲｅｑｕｅｓｔｅｒＢ＊による私的余剰コンピューティング能力プールの利用は、情報２７０に示すように専用コンピューティングノード２１２ａの利用において必要となる漸増的な現在のコスト（この例において、＄０．０４／時間間隔）と同じレートでＲｅｑｕｅｓｔｅｒＢ＊に課金される。よって、図２Ａ中の要求Ｂの動作においては、要求Ｂについての連続する５時間のプログラム（単数または複数）の実行それぞれについて、要求Ｂに対し入札価格として＄０．０８／時間間隔（すなわち、各時間間隔について、専用コンピューティングノード２１２ａの利用に必要となる漸増的な現在のコストの倍額）が必要となるのに対し、コスト情報２６０ｇ〜２６０ｊ中に示すように私的余剰コンピューティング能力プールが用いられた連続５時間のうち４時間における、図２Ｂ中において要求Ｂを行うコストは、＄０．０４／時間間隔に過ぎない。図２Ｂ中のコンピューティングノード２１２ｄ上において一般的な余剰コンピューティング能力プールの一部として要求Ｂが実行されるその他の時間間隔においては、コスト情報２６０ｚに示すように、要求Ｂにおいて入札価格＄０．０８／時間間隔のコストが必要となる。よって、図２Ｂ中の要求Ｂを行うのに必要な合計コストは＄０．２４であり、図２Ａ中の要求Ｂを行うのに必要な合計コストは＄０．４０である。余剰コンピューティング能力の利用量は限られているため、この例における絶対数は少数であるが、実世界の状況においてこのような余剰コンピューティング能力を大幅に増量させた場合、これに対応して実際のコスト節減額も大きくなる（例えば、利用量が１０００倍で増加した場合、この例において、実際のコストは＄４０００ではなく＄２４００となるため、これに対応する節減額は−＄１６００である）ことが理解される。
【００５８】
さらに、他の状況において、図２Ｂの例よりもより低コストで要求Ｂを行うことができる。例えば、図２Ｂにおいて、要求Ｂのプログラム（単数または複数）が実行される連続５／時間のうち１時間（すなわち、合計連続実行時間のうち２０％）は、一般的な余剰コンピューティング能力プールを用いて（すなわち、コンピューティングノード２１２ｄのための時間間隔２０５ｉを用いて）行われ、私的余剰コンピューティング能力プールからの利用可能な他の時間（すなわち、コンピューティングノード２１２ａのための時間間隔２０５ｋ）は用いられていない。よって、他の状況において、要求Ｂについてのプログラム（単数または複数）の実行は、要求Ｂのためのプログラム（単数または複数）の実行全てのための私的余剰コンピューティング能力プールを用い得、よって、当該実行全てについて私的余剰コンピューティング能力プールについてより低いコストが課金され得る。このような私的余剰コンピューティング能力プールの利用は、例えば、最大で１つのコンピューティングノードを指定している要求Ｂによってトリガされ得る（これにより、前記コンピューティングノードが利用可能である場合、私的余剰コンピューティング能力プールのみが用いられる）。あるいは、他の実施形態において、ＲｅｑｕｅｓｔｅｒＢ＊は、私的余剰コンピューティング能力プールの補充として用いられる一般的な余剰コンピューティング能力プールも利用するのではなく、要求Ｂ（または１つ以上の他の要求）がユーザの私的余剰コンピューティング能力プールのみを用いて実行されるべき旨を指定し得る。
【００５９】
加えて、いくつかの実施形態において、私的余剰コンピューティング能力プールを他の様態でさらに用いることで、他の恩恵を得ることができる。例えば、図２Ｂと同様の状況を考えるが、この状況において、要求Ｂは、一般的な余剰コンピューティング能力プールの利用について要求Ｃよりも優先される（例えば、要求Ｃの入札価格が＄０．１０ではなく＄０．０７である場合）。この場合、要求Ｂは、連続する５時間ではなく連続する６時間を用いて、そのプログラム（単数または複数）の実行を完了する。要求Ｂは、最大で２つではなく１つのコンピューティングノードを利用することを指定する。このような状況において、図２Ｂについて既述した割り当てスキームを用いて、要求Ｂは、時間間隔２０５ｉにおいて一般的な余剰コンピューティング能力からのコンピューティングノード２１２ｄを用いるために選択される（コンピューティングノードは最大１つであり、私的余剰コンピューティング能力プールを用いるという選好事項があるため）。これと同時に、要求Ｂは、時間間隔２０５ｋにおいて私的余剰コンピューティング能力プールからのコンピューティングノード２１２ａを引き続き用いることを選択される。しかし、この状況において、時間間隔２０５ｉの終了時において、要求Ｂは、さらなる１時間の実行を完了まで持つが、時間間隔２０５ｌにおける私的余剰コンピューティング能力プールにおけるコンピューティングノード２１２ａの利用可能性は、前記時間間隔におけるＲｅｑｕｅｓｔｅｒＢ＊による専用能力の利用の再開に基づいて消失する。よって、この状況における１つの選択肢としては、要求Ｂについてコンピューティングノード２１２ａ上でのプログラム（単数または複数）の実行を時間間隔２０５ｋの終了時において終了し、これらのプログラム（単数または複数）のコンピューティングノード２１２ｃ上での実行を時間間隔２０５ｌにおいてさらに１時間だけ即時再開する選択肢がある。しかし、他の実施形態において、他の可能な行為もとられ得る。例えば、完了までに短時間しか残っていない場合において、要求Ｂについてプログラム（単数または複数）の実行を終了した後に再開した場合のオーバーヘッドを回避するために、要求Ｂのためのこれらのプログラム（単数または複数）のコンピューティングノード２１２ａ上での実行を時間間隔２０５ｌのうち一部または全体において完了させる。ＲｅｑｕｅｓｔｅｒＢ＊によれば、時間間隔２０５ｌにおける専用能力の利用再開をこの状況において延期できることが望まれるが、このような時間間隔２０５ｌにおける専用能力利用の再開に対応するための代替策として、ＲｅｑｕｅｓｔｅｒＢ＊の専用能力利用を少なくとも時間間隔２０５ｌにおいて一時利用するために、別のコンピューティングノード（例えば、コンピューティングノード２１２ｃ）を選択する。このようにして、ＲｅｑｕｅｓｔｅｒＢ＊は、時間間隔２０５ｌにおける所望される専用能力利用を受領し、要求Ｂのためのプログラム（単数または複数）の実行は、より効率的かつ高速に完了される。それにも関わらず、このような例において、要求Ｂのためのプログラム（単数または複数）の実行完了のための時間間隔２０５ｌにおけるコンピューティングノード２１２ａの利用は、少なくともいくつかのこのような実施形態において、私的余剰コンピューティング能力プールの一部としてコスト目的のために取り扱われず、これにより、ＲｅｑｕｅｓｔｅｒＢ＊は、専用能力利用の価格として＄０．０４を時間間隔２０５ｌにおけるコンピューティングノード２１２ｃの利用について受領することができるが、要求Ｂのための時間間隔２０５ｌにおけるコンピューティングノード２１２ａを用いたプログラム（単数または複数）の実行は、要求Ｂの入札価格を反映するために、一般的な余剰コンピューティング能力プール価格である＄０．０８で課金され得る。他の実施形態におよび状況において、他の代替例も利用することが可能であることが理解される。
【００６０】
加えて、上記例は例示目的のために記載したものであり、その他の実施形態は、上記例と多様な様態で異なり得る。例えば、コンピューティングノード２１０を相当するものとして（例えば、相当するコンピューティングリソースを有するものとして）記載しているが、他の実施形態も可能であり、このような他の実施形態において、多様なコンピューティングノード２１０は、異なる種類であり得、多様な特性（例えば、異なる量の処理能力、メモリ、プラットフォーム仕様）を持ち得ることが理解される。いくつかのこのような実施形態において、多様な要求を挙げると、要求と関連付けられたプログラムの実行において用いられる１つ以上の特定の種類のコンピューティングノードの通知があり、これらの要求は、対応する指定された種類のコンピューティングノードのみにおいて実行することができる。加えて、いくつかの実施形態において、未使用状態である専用コンピューティングノードに基づいた余剰コンピューティング能力および図示のような他のコンピューティングノードだけではなく、他の実施形態も可能であり、このような実施形態において、１つのコンピューティングノードグループのみおよび／またはさらなるコンピューティングノードグループが、余剰能力ユーザの要求実行において利用することが可能な余剰能力コンピューティングノードへと貢献し得る。さらに、いくつかの実施形態において、他のコンピューティングノード２１４のうち少なくとも一部は、１つ以上のサードパーティからプログラム実行サービスへと提供されるコンピューティングノードを含み得る。
【００６１】
上述したように、多様な種類の機能が多様な実施形態においてＰＥＳによって提供および利用され得、前記機能は、多様な様態で提供することができる。例えば、いくつかの実施形態において、ＰＥＳから利用可能なプログラム実行能力を挙げると、例えば１つ以上のネットワークを介して相互接続された複数の物理的なコンピューティングマシンまたはコンピューティングマシン間のデータ送信が可能な他のデータ交換媒体を介した、ユーザのためのプログラム実行を行うための複数のコンピューティングノードがある。いくつかの実施形態において、前記コンピューティングマシンのうち少なくとも一部はそれぞれ、複数のプログラムを同時実行するための十分なコンピューティング関連リソースを含み得る（例えば、十分な書き込み可能なメモリ、不揮発性記憶、ＣＰＵサイクルまたは他のＣＰＵ使用方法、ネットワーク帯域、スワップ領域）。いくつかのこのような実施形態において、前記コンピューティングマシンのうち少なくとも一部はそれぞれ、複数の仮想マシンコンピューティングノードをホストし得る。前記複数の仮想マシンコンピューティングノードはそれぞれ、個別ユーザを代表するか、そのために１つ以上のプログラムを実行し得る。さらに、多様な実施形態において、ＰＥＳは、複数のユーザを代表するか、そのために多様な種類のプログラムを実行し得る。例えば、ユーザを代表するか、そのために実行されるこのようなプログラムを挙げると、１つ以上のオペレーティングシステム、アプリケーション（例えば、サーバーおよび／または他のソフトウェアアプリケーション）、ユーティリティ、ライブラリ、等がある。加えて、少なくともいくつかの実施形態において、このようなプログラムを挙げると、実行可能なソフトウェア画像（例えば、ブータブルであるかまたは他の場合において１つ以上の仮想マシンコンピューティングノードへとロード可能である仮想マシン画像）があり、これらはそれぞれ、オペレーティングシステムソフトウェア、１つ以上のアプリケーションプログラムのためのソフトウェアおよび／または構成情報などを含み得る。
【００６２】
少なくともいくつかの実施形態において、ＰＥＳによる１つ以上のコンピューティングノード上における１つ以上のプログラムの実行は、これらのプログラムの即時実行を指示する現在の実行要求に応答して、開始され得る。あるいは、前記開始は、以前に受信されたプログラム実行要求に基づき得る。前記以前に受信されたプログラム実行要求は、現時点のためにこれらのプログラムの現在から将来の実行を予定するかまたは他の場合において予約している。プログラム実行要求の受信は、多様な様態で可能である（例えば、（例えば、プログラム実行サービスによって提供される双方向コンソールまたは他のＧＵＩを介した）ユーザからの直接受信）。あるいは、プログラム実行要求の受信は、１つ以上の他のプログラムまたはその他のインスタンスの実行を（例えば、プログラム実行サービス（例えば、ウェブサービスを利用するＡＰＩ）によって提供されるＡＰＩまたはアプリケーションプログラミングインターフェースを介して）自動開始するユーザの実行プログラムから行われる。プログラム実行要求中には、１つ以上のプログラムの実行開始において用いられる多様な情報が含まれ得る（例えば、実行可能なプログラムまたは要実行プログラムの他のコピー、以前に登録されたかまたは他の場合において実行対象として供給されたプログラムの通知、同時実行すべきプログラムのインスタンスの数（例えば、単一の所望のインスタンス数として表現されたもの、所望の最小数インスタンスおよび最大インスタンス数として表現されたもの）、ならびに１つ以上のプログラムの実行に関する多様な他の種類の選好事項および／または要求（例えば、リソース割り当て、実行における地理的位置および／または論理位置、他のプログラムおよび／またはコンピューティングノードに対する実行の近隣、タイミング関連基準など）。
【００６３】
プログラムの１つ以上のインスタンスの実行を指示時間において行う旨の要求を受信した後、ＰＥＳは、前記プログラムインスタンスの実行において用いられる１つ以上のコンピューティングノードを決定し得る。いくつかの実施形態において、用いられるべきコンピューティングノードの決定は、実行が将来行われる場合であっても、要求時において行われる。他の実施形態において、１つ以上のプログラムインスタンスの将来の実行において用いられるべきコンピューティングノードの決定は、後の時点まで延期することができる（例えば、そのときにおいて利用可能である情報に基づいた将来の実行時間）。いくつかの実施形態において、ユーザのための１つ以上のプログラムの実行において用いられるべきコンピューティングノードの決定は、実行要求に先行して行われ得る（例えば、ユーザがＰＥＳの利用について加入および／または登録したとき、ならびに／あるいはユーザのためのプログラム実行よりも前の別の時点）。例えば、いくつかのこのような実施形態において、１つ以上のコンピューティングノードが一定期間にわたってユーザと関連付けられ得、これにより、前記ユーザを代表するか、そのためにプログラムを前記関連付けられたコンピューティングノード上において実行することが前記期間内の任意の時点において可能となる（例えば、前記ユーザのためのソフトウェア実行要求が受信された、前記期間内の任意の時点）。加えて、いくつかの実施形態において、ユーザのためのプログラム実行の際に用いられるべきコンピューティングノードの決定は、１つ以上のコンピューティングノードおよび／または１つ以上のコンピューティングノードのコンピューティングリソースが前記ユーザのプログラム実行のために利用可能となった場合に行われ得る（例えば、１つ以上のコンピューティングノードが未使用状態でありかつ／または他の場合において１つ以上の係属中の要求のプログラムの実行のために利用可能である場合において、前記１つ以上のコンピューティングノード上における前記１つ以上の係属中の要求のプログラムの実行を行うために利用可能となった場合）。
【００６４】
各プログラムインスタンスの実行の際に用いられるべきコンピューティングノードの決定は、多様な様態で行うことができる（例えば、当該要求中に指定されている任意の選好事項および／または要求あるいは他の場合において（例えば、登録時などにおいて）当該プログラムおよび／または関連付けられたユーザについて指定された任意の選好事項および／または要求に基づいて行うことができる）。例えば、プログラムインスタンス実行のための好適なリソースおよび／または必要なリソースについて基準が決定された場合（例えば、メモリおよび／または記憶、ＣＰＵ種類、サイクルまたは他の動作測定基準、ネットワーク能力、プラットフォーム種類）、プログラムインスタンス実行のための適切なコンピューティングノードの決定は、これらのリソース基準を満足するために利用することが可能な十分なリソースをコンピューティングノードが有するかに少なくとも部分的に基づいて行われ得る。プログラム実行サービス上において実行するプログラムの実行および構成に関するさらなる詳細について、係属中の米国特許出願第１１／３９５，４６３号（出願日：２００６年３月３１日、名称「Ｍａｎａｇｉｎｇ  Ｅｘｅｃｕｔｉｏｎ  ｏｆ  Ｐｒｏｇｒａｍｓ  ｂｙ  Ｍｕｌｔｉｐｌｅ  Ｃｏｍｐｕｔｉｎｇ  Ｓｙｓｔｅｍ」）中に記載がある。同文献全体を参考のため援用する。
【００６５】
加えて、上記したように、少なくともいくつかの実施形態において、自動終了される余剰プログラム実行能力を用いてプログラム実行は、ＰＥＳによって後で自動的に再開することができる。例えば、いくつかのこのような場合において、ＰＥＳは、要求された実行が完了するまで（例えば、ユーザによって取り消されるかまたは他の場合において明示的に終了されるまで、１つ以上のプログラムが１つ以上のタスクを完了したとの通知が受信されるまで）、指定時間になるまで（例えば、期限切れになるまで、蓄積実行時間になるまで）、指定された実行回数になるまで、または無期限で、プログラム実行を継続し得る。
【００６６】
いくつかの実施形態において、料金をＰＥＳの利用と関連付けることができ、これにより、ＰＥＳは、ユーザが支払う１つ以上の料金に対して、ユーザを代表するか、そのためにプログラムを実行することができる。例えば、いくつかの実施形態において、ユーザへの料金の課金は、ユーザのための１つ以上のプログラムの実行のために割り当てられたプログラム実行能力の量および／または種類（例えば、前記ユーザのプログラム実行のために割り当てられた処理ユニット数、メモリ量、記憶量、ネットワークリソース量のうち１つ以上）に基づき得る。いくつかの実施形態において、料金は、他の要素に基づき得る（例えば、プログラム実行に用いられるコンピューティングリソースの多様な特性（例えば、ＣＰＵの能力または動作、プラットフォームの種類（例えば、３２ビット、６４ビット））。いくつかの実施形態において、料金の課金は、多様な利用要素に基づいて行われ得る（例えば、サービス利用あたりの価格、コンピューティングサービスの単位利用時間あたりの価格、利用記憶あたりの価格、内部移転されかつ／または外部移転されたデータあたりの価格）。少なくともいくつかの実施形態において、以下により詳細に説明するように、料金を多様な他の要素に基づいて決定することができる（例えば、プログラム実行能力の利用可能性に関連する要素（例えば、異なるレベルの利用可能性（例えば、保証された利用可能性および／または可変利用可能性））ならびに／あるいはプログラム実行に関連する多様な特性（例えば、実行継続性、耐故障））。少なくともいくつかの実施形態において、ＰＥＳのプロバイダは、複数のユーザのためのプログラム実行を行う際に用いられる１つ以上の多様な層、種類および／またはレベルのサービスまたは機能を提供し得、いくつかのこのような実施形態において、前記多様な層、種類および／またはレベルのサービスを多様な料金と関連付けることができる。例えば、いくつかの実施形態において、ユーザに対し、ＰＥＳから提供される専用プログラム実行能力機能の利用に関連する１つ以上の料金を課金することができる（例えば、ＰＥＳのオンデマンド可変プログラム実行能力サービスの同等の利用と関連付けられた料金よりもそれぞれ低い料金）。このようなより低い料金は、例えば、前記ユーザが、１つ以上の特定の料金を長期契約期間にわたって（例えば、前払いでかつ／または定期的に）支払うために、指定利用期間にわたる長期契約を締結していることを反映している（例えば、複数の週、複数の月、複数の年）。加えて、例えば、ＰＥＳから提供される特定の種類の機能のために、層を用いることができる（例えば、機能の例を挙げると、第１の層における第１の量の専用プログラム実行能力機能についての料金課金（例えば、利用中のコンピューティングノードについての指定された第１の閾値までの課金）、第２の量の専用プログラム実行能力機能についての第２の層（例えばより低価格の層）における課金（例えば、前記指定された第１の閾値よりも上でありかつ利用中のコンピューティングノードについての指定された第２の閾値までの課金）がある）。層は、用いられる機能の数の代わりに基づくかまたはさらに基づくかに関係無く、少なくともいくつかの実施形態において用いられる機能の数以外の多様な要素にさらに基づき得る。プログラム実行サービスと関連付けられた多様な料金のさらなる詳細について、係属中の米国特許出願第１１／９６３，３３１号（出願日：２００７年１２月２１日、名称：「Ｐｒｏｖｉｄｉｎｇ  Ｃｏｎｆｉｇｕｒａｂｌｅ  Ｐｒｉｃｉｎｇ  ｆｏｒ  Ｅｘｅｃｕｔｉｏｎ  ｏｆ  Ｓｏｆｔｗａｒｅ  Ｉｍａｇｅ」）中に記載がある。同文献全体を参考のため援用する。
【００６７】
専用コンピューティング能力の利用期間は、多様な実施形態において多様な様態で指定することができる（例えば、ユーザが専用プログラム実行能力へのアクセスを持つ指定期間を通知する（例えば、複数の週、複数の月、複数の年）、ユーザのための１つ以上のプログラムの連続的実行が可能である期間（例えば、所与の期間において１つ以上のプログラムが実行可能である時間数（例えば、１日あたり１時間、１週間あたり１時間など））、その範囲内において１つ以上のプログラムが実行可能な時間窓（例えば、毎日において１：００ｐ．ｍ．〜３：００ｐ．ｍ．））。上記したように、いくつかの実施形態において、電子市場をＰＥＳのユーザに提供することができ、これにより、前記専用プログラム実行能力ユーザは、自身の指定された利用期間のうち一部または全体を、１つ以上の他のユーザからの支払いの対価としてこれらのユーザに専用プログラム実行能力のために提供することができる。これにより、１つ以上の他のユーザは、前記提供された専用プログラム実行能力部分を用いて、前記１つ以上の他のユーザのためのプログラム実行を行うことができ、前記専用プログラム実行能力ユーザは、このような利用に対する支払いを受け取ることができる。他の実施形態において、専用プログラム実行能力ユーザは、前記専用プログラム実行能力ユーザのプログラム実行能力を早急に必要としている１つ以上の他のユーザ（例えば、専用プログラム実行能力の利用のための割増料金を１人以上のユーザが支払う意志によって示されるようなもの（例えば、専用プログラム実行能力ユーザが支払うよりも割高の料金））に部分的に基づいて、自身の専用プログラム実行能力のうち一定部分の利用を１人以上のユーザによる利用のために一時的に提供することができる。少なくともいくつかのこのような実施形態において、前記１人以上のユーザから収集された一部および／または全体を前記専用能力ユーザへと提供することができる。
【００６８】
さらに、多様な実施形態において、他にさらに詳述するように、多様な他の種類の機能がＰＥＳによって提供および利用され得る。
【００６９】
図３はブロック図であり、複数のユーザによるコンピューティングノードの利用を管理するための技術を行うのに適したシステムの例示的実施形態を示す。詳細には、図３は、プログラム実行サービスシステムマネージャモジュールの実施形態の実行に適したサーバコンピューティングシステム３００と、多様なユーザコンピューティングシステム３５０と、コンピューティングノード３６０と、他のコンピューティングシステム３８０とを示す。図示の実施形態において、サーバコンピューティングシステム３００は、ＣＰＵ３０５を含むコンポーネントと、多様なＩ／Ｏコンポーネント３１０と、記憶部３２０、メモリ３３０とを含む。例示のＩ／Ｏコンポーネントは、ディスプレイ３１１と、ネットワーク接続部３１２と、コンピュータによる読み出しが可能なメディアドライブ３１３と、他のＩ／Ｏデバイス３１５（例えば、キーボード、マウス、スピーカ）とを含む。加えて、この例において簡潔さのために詳細を例示していないものもあるものの、例示のユーザコンピューティングシステム３５０は、サーバコンピューティングシステム３００と同様のコンポーネントを有する（例えば、ＣＰＵ３５１、Ｉ／Ｏコンポーネント３５２、記憶部３５４、およびメモリ３５７）。その他のコンピューティングシステム３８０およびコンピューティングノード３６０もそれぞれ、サーバコンピューティングシステム３００を参照して例示したコンポーネントのうちいくつかまたはその全てと同様のコンポーネントを含み得るが、このようなコンポーネントはこの例において簡潔さのために例示しない。
【００７０】
プログラム実行サービスシステムマネージャモジュール３４０の実施形態は、メモリ３３０内において実行し、コンピューティングシステム３５０および３８０およびコンピューティングノード３６０との相互作用をネットワーク３９０を介して（例えば、インターネットおよび／またはワールドワイドウェブを介して、私的セルラーネットワークを介して）行う。この例示的実施形態において、ＰＥＳＳＭ３４０は、例えばソフトウェア命令を含み得る。これらのソフトウェア命令が実行されると、これらのソフトウェア命令は、上記した技術のうち一部または全体を行うように１つ以上のプロセッサ（例えば、ＣＰＵ３０５）をプログラムする（上記した技術の例を挙げると、例えばＰＥＳＳＭ３４０によって管理されるプログラム実行サービスと関連してユーザコンピューティングシステム３５０と相互作用している多様なユーザ（図示せず）による複数のコンピューティングノード３６０の利用の管理に関連する機能がある）。その他のコンピューティングシステム３５０および３８０およびコンピューティングノード３６０は、ＰＥＳＳＭとの相互作用の一環として、多様なソフトウェアを実行し得る。例えば、ユーザコンピューティングシステム３５０は、メモリ３５７中のソフトウェアを実行して、（例えば、ウェブブラウザまたは特殊なクライアント側アプリケーションプログラムの一部として）ＰＥＳＳＭ３４０と相互作用し得、これにより、１つ以上のコンピューティングノード３６０上における多様な様態（例えば、可変実行能力の利用、専用実行能力の利用および／または余剰実行能力の利用に関連する様態）でのこれらのシステムのユーザのためのプログラム実行を構成および／または要求し得る。加えて、他にさらに詳述するように、ユーザコンピューティングシステム３５０の１人以上のユーザは、ＰＥＳＳＭ３４０と相互作用して、多様な他の種類の行為を行い得る。ＰＥＳＳＭモジュール３４０の機能に関連する多様な情報は、記憶部３２０中に保存され得る（例えば、私的余剰能力プールに関連する情報３２４（例えば、現在の利用可能性の追跡、構成および／または他の構成情報に関連するユーザ命令）ならびに他の情報３２２（例えば、複数ユーザのためのプログラム実行のための構成、実行および／または登録に関連する情報）。
【００７１】
この例において、ＰＥＳＳＭモジュール３４０は、３つの構成モジュールを含む（例えば、専用能力使用量マネージャモジュール３４２、余剰能力使用量マネージャモジュール３４４、およびオンデマンド可変能力使用量マネージャモジュール３４６）。専用能力使用量マネージャモジュール３４２は、ユーザによる専用コンピューティング能力の利用を管理する。図６は、１つの例示的実施形態におけるモジュール３４２の動作に対応するルーチンを示す。余剰能力使用量マネージャモジュール３４４は、ユーザによる一般的な余剰コンピューティング能力プールおよび私的余剰コンピューティング能力プールの利用を管理し、図５Ａおよび図５Ｂは、１つの例示的実施形態におけるモジュール３４４の動作に対応するルーチンを示す。オンデマンド可変能力使用量マネージャモジュール３４６は、ユーザによるオンデマンド可変コンピューティング能力の利用を管理する。図７は、１つの例示的実施形態におけるモジュール３４６の動作に対応するルーチンを示す。他の実施形態において、ＰＥＳＳＭモジュール３４０によって提供される機能は、他の様態で構築することができる（例えば、構成モジュール３４２〜３４６のうち１つ以上を任意選択的に含まないような構成（例えば、オンデマンド可変能力使用量を提供しない実施形態においてオンデマンド可変能力使用量マネージャモジュール３４６を含まない構成））。
【００７２】
ＰＥＳＳＭモジュール３４０が１つ以上のコンピューティングノード３６０上における１つ以上のプログラムの実行についての要求（または他の通知）を受信すると、ＰＥＳＳＭモジュール３４０は、利用対象として指示された種類のプログラム実行能力に対応する構成モジュール３４２〜３４６を決定し、前記要求を前記決定された構成モジュールへと転送する。その後、前記決定された構成モジュールおよびＰＥＳＳＭモジュール３４０は、前記要求に応答するための多様な動作を行う（例えば、前記１つ以上のプログラムを実行する前記１つ以上のコンピューティングノードを選択し、これらのコンピューティングノード３６０上におけるこれらのプログラムの実行を開始する）。加えて、ＰＥＳＳＭモジュール３４０（構成モジュール３４２〜３４６を含む）は、例えば、コンピューティングノード３６０と相互作用して、開始されたプログラムのコンピューティングノード上における実行を終了し、前記プログラムのうち１つ以上を１つ以上の他のコンピューティングノード３６０またはコンピューティングシステム３８０へと移転させ、あるいは他の場合においてコンピューティングノード３６０のうちの１つ以上との相互作用を監視して、これらのコンピューティングノードの利用を追跡する動作をさらに行い得る。コンピューティングノード３６０は、多様な実施形態において多様な形態を含み得る（例えば、複数の物理的なコンピューティングシステムおよび／または１つ以上の物理的なコンピューティングシステム上において実行する複数の仮想マシンを含む形態）。いくつかの実施形態において、サーバコンピューティングシステム３００およびコンピューティングノード３６０は、データセンターまたは他の共同設置されたコンピューティングシステムのグループの一部であり得るか、あるいは、他の場合において、私的ネットワークのコンピューティングノードであり得る。加えて、いくつかの実施形態において、ＰＥＳＳＭモジュール３４０は、１つ以上の他のコンピューティングシステム３８０と相互作用して、これらのコンピューティングシステム上の１つ以上のプログラムの実行を開始または終了させ得る（例えば、他のユーザによって利用される余剰プログラム実行能力を提供している１つ以上のサードパーティ参加者によってコンピューティングシステム３８０が提供される場合）。いくつかの実施形態において、ＰＥＳＳＭモジュール３４０は、プログラム実行サービス以外の１つ以上の種類のコンピューティング関連のリソースまたはサービス（例えば、永続的または一時的なデータ記憶サービス、メッセージングサービス、データベースサービス）へのアクセスをさらにまたは代わりに管理し得る。
【００７３】
コンピューティングシステム３００、３５０および３８０ならびにコンピューティングノード３６０はひとえに例示的なものであり、本発明の範囲を制限することを意図していないことが理解される。上記以外にも、これらのコンピューティングシステムおよび／またはノードはそれぞれ、複数の相互作用するコンピューティングシステムまたはデバイスを含み得、前記コンピューティングシステム／ノードは、例示されていない他のデバイスに（例えば、１つ以上のネットワーク（例えば、インターネット）を介して、ウェブを介して、または私的ネットワーク（例えば、モバイル通信ネットワーク）を介して）接続され得る。より一般的には、コンピューティングノードまたは他のコンピューティングシステムは、上記記載の種類の機能（例を非限定的に挙げると、デスクトップまたは他のコンピュータ、データベースサーバ、ネットワーク記憶デバイスおよび他のネットワークデバイス、ＰＤＡ、携帯電話、無線電話、ポケットベル、電子オーガナイザ、インターネット機器、テレビベースのシステム（例えば、セットトップボックスおよび／またはパーソナル／デジタルビデオレコーダを用いたもの）、ならびに適切な通信能力を含む多様な他の消費者製品）と相互作用して実行し得るハードウェアまたはソフトウェアの任意の組み合わせを含み得る。加えて、例示のＰＥＳＳＭモジュール３４０およびその構成モジュールによって提供される機能は、いくつかの実施形態において、さらなるモジュール中に分散させてもよいし、あるいはより少数のモジュール中に組み合わせて分散させてもよい。同様に、いくつかの実施形態において、ＰＥＳＳＭモジュール３４０の機能の一部を提供し、かつ／または、他のさらなる機能が利用可能である。
【００７４】
利用中にメモリ中または記憶部上に保存されるものとして多様なアイテムを例示しているが、これらのアイテムまたはその一部は、メモリ管理およびデータ完全製の目的のためにメモリと他の記憶デバイスとの間で移転させることが可能であることも理解される。あるいは、他の実施形態において、ソフトウェアＰＥＳＳＭモジュール３４０および／または構成モジュールのうち一部または全体は、別のデバイス上のメモリ中において実行し得、例示のコンピューティングシステムとの通信をコンピュータ間通信を介して行い得る。さらに、いくつかの実施形態において、ＰＥＳＳＭモジュール３４０および／または構成モジュールのうち一部または全体は、他の様態で実行または提供することができる（例えば、少なくとも部分的にファームウェアおよび／またはハードウェアとして（例を非限定的に挙げると、１つ以上の特定用途向け集積回路（ＡＳＩＣ）、標準的な集積回路、コントローラ（例えば、適切な命令を実行し、マイクロコントローラおよび／または埋め込みコントローラを含む））、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、複雑なプログラマブル論理デバイス（ＣＰＬＤ）を含めることにより）。前記モジュールおよびデータ構造のうち一部または全体も（例えば、ソフトウェア命令または構成データとして）、コンピュータによる読み出しが可能な媒体（例えば、適切なドライブによってまたは適切な接続を介して読み出される、ハードディスク、メモリ、ネットワーク、またはポータブルメディア物品）上において、保存され得る。前記モジュールおよびデータ構造は、多様なコンピュータによる読み出しが可能な伝送媒体（例えば、無線ベースの媒体および有線／ケーブルベースの媒体）上の生成されたデータ信号として（例えば、搬送波あるいは他のアナログ伝播信号またはデジタル伝播信号の一部として）送信することもでき、多様な形態をとり得る（例えば、単一のアナログ信号または多重化アナログ信号の一部として、あるいは複数の別個のデジタルパケットまたはフレームとしての形態）。このようなコンピュータプログラム製品は、他の実施形態における他の形態もとり得る。よって、本発明は、他のコンピュータシステム構成を用いても実行することができる。
【００７５】
図４は、プログラム実行サービスシステムマネージャルーチン４００の例示的実施形態のフロー図である。前記ルーチンは、例えば、図１Ａおよび図１ＢのＰＥＳＳＭモジュール１１０および１８０それぞれ、図２Ａおよび図２Ｂに対応する動作を行うＰＥＳＳＭモジュール（図示せず）、ならびに／あるいは図３のＰＥＳＳＭモジュール３４０の実行によって得られ得る（例えば、複数のコンピューティングノードおよび／または他の種類のプログラム実行能力の利用の管理の支援や、いくつかの状況における他の種類の管理動作を実行するためのもの）。この図示の実施形態において、ルーチン４００は、複数のユーザのためのプログラム実行を行うためのプログラム実行能力を提供するプログラム実行サービスの利用の多様な局面を管理する。
【００７６】
図示の実施形態において、ルーチンはブロック４０５から開始する。ブロック４０５において、情報または要求が受信される。前記ルーチンはブロック４１０へと進んで、前記受信された要求または情報が専用能力の利用に関連するか否かを決定する。前記受信された要求または情報が専用能力の利用に関連する場合、前記ルーチンはブロック４１５へと進んで、専用コンピューティング能力使用量の管理に関連するルーチンを行う。このようなルーチンの１つの例示的実施形態について、図６を参照してより詳細に説明する。あるいは、ブロック４１０においてブロック４０５の情報または要求が専用能力の利用に関連しないと決定された場合、ルーチンはブロック４３０へと進んで、前記情報または要求が余剰コンピューティング能力の利用に関連するかを決定する。前記情報または要求余剰コンピューティング能力の利用に関連する場合、ルーチンはブロック４３５へと進んで、余剰コンピューティング能力使用量の管理に関連するルーチンを行う。このようなルーチンの１つの例示的実施形態について、図５Ａ〜図５Ｂを参照してより詳細に説明する。あるいは、ブロック４０５の情報または要求が余剰能力の利用に関連しないとブロック４３０において決定された場合、ルーチンはブロック４４０へと進んで、前記情報または要求がオンデマンド可変コンピューティング能力の利用に関連するか否かを決定する。前記情報または要求がオンデマンド可変コンピューティング能力の利用に関連する場合、ルーチンはブロック４４５へと進んで、オンデマンド可変コンピューティング能力使用量の管理に関連するルーチンを実行する。記載のこのようなルーチンの１つの例示的実施形態について、図７を参照してより詳細に説明する。
【００７７】
あるいは、可変能力の利用に関連する情報または要求が受信されていないとブロック４４０において決定された場合、ルーチンはブロック４６０へと進んで、前記情報または要求が第２の専用能力市場に関連するかを決定し、前記情報または要求が第２の専用能力市場に関連する場合、ルーチンはブロック４６２へと進んで、第２の専用能力市場に関連して１つ以上の通知された動作を適切に行う。例えば、多様な実施形態において、このような動作を挙げると、多様な量のユーザの専用プログラム実行能力を販売および／または貸し出したいとの専用能力ユーザからの通知、専用能力ユーザからのプログラム実行能力を販売および／または貸し出したいとの１つ以上の他のユーザからの通知、多様な量のプログラム実行能力についての割増料金を支払う意志のある１人以上の急ぎのユーザからの通知のうちの１つ以上がある。
【００７８】
ブロック４１５、４３５、４４５および４６２の後、あるいは、第２の専用能力市場に関連する情報または要求が受信されていないとブロック４６０において決定された場合、ルーチンはブロック４７０へと進んで、ブロック４０５において情報または要求に基づいて任意のユーザ課金または払戻活動を任意選択的に行うか、あるいは、他の場合のように（例えば、定期的に）開始される（例えば、ユーザによって提供または可能化された提供について、ユーザへと提供されたプログラム実行機能に基づいて１人以上のユーザ（例えば、専用能力ユーザ、可変能力ユーザ、余剰能力ユーザ、および／または他のユーザ）から料金を課金および／または集金し、かつ／あるいは、１人以上のユーザ（例えば、専用能力ユーザおよび／または余剰能力ユーザによって用いられるコンピューティングリソースを提供した他のユーザ）への支払いおよび／または払い戻しを行う）。
【００７９】
ブロック４７０の後、ルーチンはブロック４７５へと進んで、利用されている任意の一般的な余剰コンピューティング能力プールおよび私的余剰コンピューティング能力プールについて、余剰プログラム実行能力を任意選択的に監視する。これにより、プログラム実行能力は、１つ以上の余剰能力ユーザによって利用可能である余剰プログラム実行能力へと追加されかつ／または前記余剰プログラム実行能力から除去され得る。他の実施形態において、ルーチンは、現在のプログラム実行能力の使用量および／または予測されるプログラム実行能力の使用量の他の通知を受信し得る（例えば、プログラム実行サービスの１つ以上のコンピューティングリソース（例えば、現在の使用状態を示し得る常駐モニタを備えるコンピューティングノード）からの通知、１人以上のユーザからの通知）。上記と同時に／または上記に代わって、ルーチンは、他の場合においてコンピューティングリソースが利用される時期および／または利用される可能性のある時期、未使用状態である時期または十分に利用されていない時期を決定し得る。
【００８０】
次に、ルーチンはブロック４９５へと進んで、１つ以上の他の通知された動作を任意選択的に行う。いくつかの実施形態において、このような動作を挙げると、ユーザのためのプログラム実行サービスの多様なリソースおよび／または機能の利用の構成、加入動作または登録動作、スケジューリング動作などがある。ブロック４９５の後、ルーチンはブロック４９８へと進んで、例えばルーチン実行を終了せよとの明示的通知が受信されるまでルーチンを継続するか否かを決定する。例えばルーチン実行を終了せよとの明示的通知が受信されるまでルーチンを継続すると決定された場合、ルーチンはブロック４０５へと進み、例えばルーチン実行を終了せよとの明示的通知が受信されるまでルーチンを継続すると決定されなかった場合、ルーチンはブロック４９９へと進んで終了する。
【００８１】
図６は、専用能力使用量マネージャルーチン６００の例示的実施形態のフロー図である。ルーチンは、例えば図３のＰＥＳＳＭモジュール３４０の専用能力使用量マネージャモジュール３４２の実行によって提供することもできるし、あるいは、図１Ａおよび図１ＢのＰＥＳＳＭモジュール１１０および１８０それぞれおよび／または図２Ａおよび図２Ｂに対応する動作を行うＰＥＳＳＭモジュール（図示せず）によって提供することもでき、図４中のルーチン４００のブロック４１５から開始するかまたは他の場合において呼び出すことができる。
【００８２】
図示の実施形態において、ルーチン６００はブロック６０５から開始する。ブロック６０５において、要求、情報および／または他の専用能力の利用に関連する通知が受信される。その後、ブロック６１２において、ルーチンは、専用プログラム実行能力の利用について加入しようとしているユーザからの要求が受信されたかを決定する。専用プログラム実行能力の利用について加入しようとしているユーザからの要求が受信された場合、ルーチンはブロック６１４へと進み、ブロック６１４において、対応する情報が加入ユーザから得られ、専用プログラム実行能力の利用の加入に関連する多様な動作が行われる。例えば、いくつかの実施形態において、ユーザは、前記ユーザが専用アクセスを得ようとしている１つ以上のコンピューティングノードを選択および／または通知し得る。他に記載するように、いくつかの実施形態において、ユーザは、１つ以上の多様な種類のコンピューティングノードから選択し、かつ／または、他の場合において多様な量および／または種類の所望のコンピューティングリソース（例えば、処理ユニット種類／量、メモリ量、プラットフォーム仕様）を指定し得る。加えて、加入ユーザは、ユーザが専用アクセスを得ることを望む利用期間も通知し得る（例えば、複数の時間、複数の週、複数の月、複数の年）。上記に加えておよび／または上記に代えて、加入ユーザは、他の情報を提供し得る（例えば、課金情報、ユーザを代表するか、そのために実行されるプログラムの通知、１つ以上の将来の時間において１つ以上のプログラムを実行するためのスケジューリング情報）。加入者が所望の専用プログラム実行能力の種類および／または量に関連する情報を提供した後、ルーチンはブロック６１６へと進んで、適切な量の要求されたプログラム実行能力が加入ユーザによる専用使用（可能な場合）のために割り当てられる。他に記載のように、プログラム実行能力（例えば、１つ以上のコンピューティングノード）は、特定の加入専用能力ユーザによって用いられるように、多様な実施形態において多様な様態で割り当てられかつ／またはあてがわれる。
【００８３】
ブロック６１６の後、ルーチンはブロック６１８へと進んで、加入者に割り当てられたコンピューティング能力のうち少なくとも一部を、加入者（および／または他の指定ユーザ）によって用いられる余剰コンピューティング能力の私的プールの一部としてかつ専用使用対象として、用いるかを任意選択的に決定し、加入者に割り当てられたコンピューティング能力のうち少なくとも一部を、加入者（および／または他の指定ユーザ）によって用いられる余剰コンピューティング能力の私的プールの一部としてかつ専用使用対象として、用いる場合、前記私的余剰コンピューティング能力プールの利用を可能化するための対応する情報を保存する。例えば、いくつかの実施形態において、決定された能力加入者ユーザについて、私的余剰コンピューティング能力プールが可能化されて利用可能となり、これにより、このようなユーザへと割り当てられた専用コンピューティング能力が他の場合においてユーザによって利用されていないときに、前記割り当てられた専用コンピューティング能力全てを私的余剰コンピューティング能力プール中において前記ユーザが後で利用することが可能となる。あるいは、いくつかの実施形態において、ＰＥＳＳＭモジュールは、他の場合において命令無き限り、全ての専用能力ユーザのためにこのような私的余剰コンピューティング能力プールをデフォルトで生成し得る。他の実施形態において、このような専用能力ユーザのための私的余剰コンピューティング能力プールは、命令生成せよとの明示的な命令をユーザが発行しない限りかつ／または他の事前決定された基準が満たされない限り、ブロック６１８において生成することができない。さらに他の実施形態において、このようなユーザのための私的余剰能力プールを生成するかについての決定は、他の時期においても行われ得る（例えば、このような専用能力ユーザからの余剰コンピューティング能力リソースの利用についての要求が受信されたとき）。さらに、少なくともいくつかの実施形態において、加入者ユーザは、このようなユーザのための私的余剰コンピューティング能力プールの他の局面を構成し得る（例えば、専用能力利用のうち私的余剰能力プールの一部として利用可能である量（例えば、全てのコンピューティングノード、指定されたパーセンテージまたは指定された数のコンピューティングノード）、私的余剰能力プールを利用することが可能なユーザ、私的余剰能力プールを利用可能とするかまたは利用不可能とすべき特定の期間および／または他の基準）。
【００８４】
あるいは、専用プログラム実行能力の利用についての加入要求がブロック６１２において受信されていないと決定された場合、ルーチンはブロック６３０へと進む。ブロック６３０において、ルーチンは、割り当てられた専用プログラム実行能力上において加入者ユーザを代表するか、そのために１つ以上のプログラムを実行せよとの要求が受信されたかを決定する（例えば、即時実行せよとの現在の要求、以前予定された実行要求）。また、対応する専用プログラム実行能力は、他の専用プログラム実行について既に利用されていないかまたは利用が予定されていないと決定する。十分な専用プログラム実行能力が利用不可能である場合、エラーメッセージまたは他の類似の応答が提供される（例えば、ブロック６３５を参照して図示されるもの）。いくつかの実施形態において、ルーチンは、適切な利用期間内において実行要求が受信されたことを保証しかつ／または他の場合において前記要求を認証し得る（例えば、前記要求の証明、加入者ユーザの認証）。適切な要求が専用能力によって利用されるものとして受信された場合、ルーチンはブロック６４０へと進んで、要求者のための私的余剰コンピューティング能力プールの一部としての要求者からの先行要求を満足するステップの一部として、前記要求のために用いられるべき割り当てられた専用プログラム実行能力が現在利用されているかを決定する。このような現在の私的余剰コンピューティング能力プールの利用がブロック６４５において特定された場合、ルーチンはブロック６５０へと進み、他の場合においてブロック６６０へと進んで、前記要求された実行を実行する（例えば、前記割り当てられたプログラム実行能力上での前記１つ以上のプログラムの実行を開始する）。ルーチンが先ずブロック６５０へと進んだ後にブロック６６０へと進んだ場合、ブロック６５０において、ルーチンは、私的余剰コンピューティング能力プールからの先行要求を一般的な余剰コンピューティング能力プールへと転送するステップを開始する。なぜならば、前記私的余剰コンピューティング能力プールは、前記先行要求を満たすために現在利用できなくなっているからである。しかし、他の実施形態および状況（例えば、前記先行要求について指定された命令に基づいたもの）において、ルーチンは、先行要求を前記私的余剰コンピューティング能力プールについてのキュー中に残留させておき、これにより、前記私的余剰コンピューティング能力プール中において十分な能力が利用可能となるまで、前記先行要求が延期される。いくつかの実施形態において、ブロック６６０の一部として、ルーチンは、プログラム実行を多様な様態で行うためのコンピューティングリソースおよび／またはコンピューティングノードを選択し得、いくつかの状況において、ルーチンは、他のユーザ（例えば、一般的な余剰能力プールユーザ）の１つ以上のプログラムを終了しおよび／または他の場合において前記要求された実行を行うためにコンピューティングリソースを解放し得る。いくつかの実施形態において、専用能力ユーザが（例えば自身に割り当てられた専用プログラム実行能力の別のユーザへの販売または貸し出しのために）前記専用プログラム実行能力を一定量だけ１つ以上の他のユーザによって用いられるものとして以前供給している場合、前記受信された要求を満たすための専用能力は、前記ユーザが前記要求について能力を再請求できない限り、前記要求時において前記専用ユーザによって利用することができない。加えて、いくつかの実施形態において、（例えば、１つ以上の決定された行為を完了するかまたは他の場合において実行するために加入者ユーザのために私的余剰能力プールの一部として実行している加入者ユーザからの先行要求を可能にするために）専用能力の利用についての加入者ユーザからの現在の要求を一時的に遅延させることができる。
【００８５】
あるいは、ブロック６３０において加入ユーザを代表するか、そのために割り当てられたプログラム実行能力上において１つ以上のプログラムを実行せよとの要求が受信されないと決定される場合、ルーチンはブロック６３５へと進んで、専用能力の適切な利用に関連する１つ以上の他の指示された動作を任意選択的に行う。例えば、いくつかの実施形態において、このような動作を挙げると、私的余剰能力プールおよび／または一般的な余剰能力プールに関わらず、余剰プログラム実行能力として利用可能とするための一定量の専用プログラム実行能力を通知するステップならびに／あるいは一定量の以前指定されたプログラム実行能力が専用能力ユーザによって利用されるように再請求するステップがある。加えて、上記したように、ブロック６３５中のルーチンは、ブロック６０５において受信された要求が満足されない場合、エラーメッセージまたは他の関連情報を提供し得る。加えて、いくつかの実施形態において、以前開始された専用能力の利用を終了せよとの要求または命令がブロック６０５において受信され得、そうである場合、ブロック６３５においてルーチンはこのようなプログラム終了を行い得、また、対応する私的余剰コンピューティング能力プール（存在する場合）または得られた利用可能な余剰能力の一般的な余剰コンピューティング能力プールを更新し得る。他の実施形態において、ユーザは、ルーチン６００に通知することなく、前記コンピューティングノード上におけるプログラム実行を終了させ得る。ＰＥＳＳＭモジュールは、得られた余剰コンピューティング能力を後で自動的に特定し得る（例えば、図４のブロック４７５を参照したもの）。
【００８６】
ブロック６１８、６３５または６６０の後、ルーチンはブロック６９９へと進み、その後戻る。
【００８７】
図５Ａ〜図５Ｂは、余剰能力使用量マネージャルーチン５００の例示的実施形態のフロー図である。ルーチンは、例えば図３のＰＥＳＳＭモジュール３４０の余剰能力使用量マネージャモジュール３４４の実行によって提供することもできるし、あるいは、図１Ａおよび図１ＢのＰＥＳＳＭモジュール１１０および１８０それぞれおよび／または図２Ａおよび図２Ｂに対応する動作を行うＰＥＳＳＭモジュール（図示せず）の一部として提供することもでき、図４中のルーチン４００のブロック４３５から開始されるか他の場合において呼び出される。
【００８８】
図示の実施形態において、ルーチン５００が呼び出されると、余剰能力の利用に関連する要求、情報および／または他の通知がブロック５０２においてルーチンに提供される。その後、ブロック５０５において、ルーチンは、プログラム実行能力を利用可能な余剰プログラム実行能力へと付加すべきである旨の通知が受信されたかを決定する（この決定は、例えば、図４のブロック４７５について得られる情報に基づくか、または、図６のブロック６３５を参照した専用コンピューティング能力の利用の終了によってトリガされる）。そうである場合、ルーチンはブロック５１０へと進み、前記通知されたプログラム実行能力を利用可能なプログラム実行能力へと付加する。詳細には、前記余剰プログラム実行能力が私的余剰コンピューティング能力プールに対応する場合、前記私的プールは、前記指示された余剰能力を受信するように選択され、他の場合において、一般的な余剰コンピューティング能力プールが選択される。加えて、いくつかの実施形態において、新規私的余剰能力プールを生成せよとの要求がブロック５１０を参照してあるいは以下に説明するようなブロック５９５を参照して受信され、取り扱われ得る。例えば、いくつかの実施形態において、ルーチンは、このような指示されたプログラム実行能力（例えば、１つ以上の特定のコンピューティングノード）の１つ以上の通知を利用可能なプログラム実行能力の選択されたプールへと付加し得る。いくつかの実施形態において、私的余剰能力プールおよび一般的な余剰能力プールについて上述したような様態でかつ／または他の様態で複数のプールが提供され得る（例えば、多様な異なる種類のプログラム実行能力が利用可能とされ得、プログラム実行能力の種類と関連付けられた対応する私的プールおよび／または一般的なプールへとグループ分けされ得る）。
【００８９】
あるいは、余剰プログラム実行能力への通知が受信されていないとブロック５０５において決定された場合、ルーチンはブロック５１５へと進んで、利用可能な余剰プログラム実行能力からプログラム実行能力を除去せよとの通知が受信されたかについて決定する。利用可能な余剰プログラム実行能力からプログラム実行能力を除去せよとの通知が受信されたと決定された場合、ルーチンはブロック５２０へと進んで、（例えば、例えば余剰能力を用いて現在実行している１つ以上のプログラムについての通知されている特定のプログラム実行能力に基づいて）余剰能力を除去すべき対応する私的余剰能力プールおよび／または一般的な余剰能力プールを選択する。その後、ルーチンは、前記通知されたプログラム実行能力を前記選択された能力プールについて利用可能な余剰プログラム実行能力から除去し、これにより、前記通知されたプログラム実行能力（または相当する量のプログラム実行能力）は、前記選択された能力プールの余剰能力ユーザのためのプログラム実行のための余剰プログラム実行能力として利用することができなくなる。
【００９０】
あるいは、利用可能なプログラム実行能力からプログラム実行能力を除去せよとの通知が受信されていないとブロック５１５において決定された場合、ルーチンはこの場合はブロック５２５へと進んで、一定量の利用可能な余剰プログラム実行能力上において余剰能力ユーザを代表するか、そのために１つ以上のプログラムを実行せよとの要求が受信されたか（またはこのような実行について以前に予定されていた要求がトリガされたか）を決定する。一定量の利用可能な余剰プログラム実行能力上において余剰能力ユーザを代表するか、そのために１つ以上のプログラムを実行せよとの要求が受信された（あるいは、このような実行について以前に予定されていた要求がトリガされた）と決定された場合、ルーチンはブロック５３０へと進んで、前記要求に基づいて１つ以上のプログラムの実行を行う際に用いられるべき余剰能力の供給源となる、対応する私的余剰能力プールおよび／または一般的な余剰能力プールを選択する（このような決定は、例えば、余剰能力ユーザに基づいてあるいは利用されるべき特定のプログラム実行能力についての別の通知に基づいて、行われる）。そして、要求された実行に関連する要求側の余剰能力ユーザからさらなる情報を任意選択的に入手または受信する。いくつかの実施形態において、このようなさらなる情報を挙げると、構成情報がある（例えば、要求されるプログラム実行能力の量および／または種類についての通知（例えば、最小量および最大量）、入札額（例えば、最小入札額および最大入札額）、期限、利用すべき特定の余剰能力プール（例えば、ユーザと関連付けられた特定の私的余剰能力プールのみ、あるいは、利用可能な場合は特定の私的余剰能力プールを利用し、他の場合においては一般的な余剰能力プールを利用するなどの指示））。いくつかの実施形態において、このようなさらなる情報の一部または全体をブロック５０２において受信された要求の一部としてあるいは余剰能力ユーザによって行われた別個の構成および／または登録の一部として設けることができる。加えて、いくつかの実施形態において、ルーチンは、１つ以上の種類の余剰能力ユーザに対し、フィードバックを提供することができる（例えば、要求された実行の起こり得る特性の通知（例えば、要求実行が起こり得る時期、起こり得る実行期間、利用されるべき余剰能力プールとして可能性の高いもの）および／または任意選択的な他の情報（例えば、提案される構成））。ブロック５３０後において、ルーチンはブロック５３５へと進んで、利用対象として選択された余剰能力プールからの余剰プログラム実行能力上での実行についての要求を現在の要求グループへと付加する。他の実施形態において、他の要求のグループへと前記要求を付加する代わりに、ルーチンは、前記要求を即時的に満足しようとし得る（例えば、前記要求を前記即時的時間において実行するために利用することが可能な余剰プログラム実行能力が（例えば、特定の私的余剰能力プール中に）あるかを決定し、このような余剰プログラム実行能力がある場合、プログラム実行を開始するか、あるいは、このような余剰プログラム実行能力が無い場合、他の行動をとる（例えば、前記要求を利用不可能な私的余剰能力プールから一般的な余剰能力プールへと移動させる、失敗する、等）。
【００９１】
あるいは、利用可能な余剰プログラム実行能力上においてプログラムを実行せよとの要求が受信されていないとブロック５２５において決定された場合、ルーチンはブロック５４０へと進んで、以前通知された実行要求を除去せよとの要求が受信されたかを決定する（例えば、ブロック５３５において要求グループに以前付加された、通知された実行要求）（例えば、現在の実行要求および／または他の場合において要求が期限切れとなった旨受信された通知を取り消す旨の余剰能力ユーザからの要求）。以前通知された実行要求を除去せよとの要求が受信されたと決定された場合、ルーチンはブロック５４５へと進んで、一定量の余剰プログラム実行能力上において現在実行している通知された要求と関連付けられたプログラム全てを終了させ、その後ブロック５５０へと進んで、前記通知された要求を含む１つ以上の要求グループから前記通知された要求を除去する。これにより、前記通知された要求はその後余剰プログラム実行能力上での実行対象として検討されなくなる。
【００９２】
ブロック５１０、５２０、５３５および５５０の後、あるいは、通知された実行要求が受信されていないとブロック５４０において決定された場合、ルーチンはブロック５５５へと進んで、余剰プログラム実行能力上での実行に関する現在の要求を管理するかを決定する。例えば、いくつかの実施形態において、ブロック５０２において受信された通知が要求を管理するためにルーチン５００へと送られ、かつ／または、利用可能なプログラム実行能力の変化に基づいて提供されている場合がある（例えば、ブロック５１０および５２０それぞれにおける利用可能なプログラム実行能力への追加または利用可能なプログラム実行能力からの除去）、かつ／または現在の実行要求の変更（例えば、ブロック５３５および５５０それぞれにおける要求の付加または除去）。そうである場合、ルーチンはブロック５６０へと進んで、利用されている１つ以上の私的余剰コンピューティング能力プールおよび／または一般的な余剰コンピューティング能力プールに対する現在利用可能な余剰プログラム実行能力の量を決定する（例えば、ブロック５１０および５２０それぞれにおいて利用可能なプログラム実行能力に付加および／または利用可能なプログラム実行能力から除去されるプログラム実行能力の量）。ブロック５６０の後、ルーチンはブロック５６２へと進んで、任意の利用可能な私的余剰コンピューティング能力プールを用いて実行することが可能な係属中の要求を選択する（例えば、これから入来する期間において即時に実行または実行される要求）（例えば、私的余剰能力プールを用いて既に実行されている要求、私的余剰能力プールのために待ち行列に入れられている要求、一般的な余剰能力プールを用いて現在実行されておりかつ好適な対応する私的余剰能力プールを有している（ただし、利用可能な場合）要求、現在一般的な余剰能力プールのために待ち行列に入れられておりかつ好適な対応する私的余剰能力プールを有している（ただし、利用可能な場合）要求、等）。このような選択された要求が存在する場合、ブロック５６０において、ルーチンは、対応する量の余剰コンピューティング能力を対応する私的余剰コンピューティング能力プールから割り当てる（または入来する期間におけるこのような割り当てを予定する）。その後、ルーチンはブロック５６５へと進んで、ブロック５６２において選択されなかった残留している全ての要求について、１つ以上の一般的な余剰コンピューティング能力プールを用いて実行されるべき他の要求を選択する（例えば、入来する期間において即時実行または実行されるもの）。その後、ルーチンは、現在利用可能な余剰プログラム実行能力のグループを、これらの選択された他の要求によって用いられる対応する一般的な余剰コンピューティング能力プール（単数または複数）から割り当てる。
【００９３】
以下により詳細に説明するように、ブロック５６２および５６５における要求選択は、多様な実施形態において多様な様態で行うことができる（例えば、要求およびそのユーザと関連付けられた優先レベルに少なくとも部分的に基づいた様態）。例えば、いくつかの実施形態において、ルーチンは、一定量の余剰プログラム実行能力を対応する余剰コンピューティング能力プールから各要求へと割り当るステップをその要求に基づいて行おうととする（例えば、指定されたコンピューティングノード数）。いくつかのこのような実施形態において、特定の余剰コンピューティング能力プールについての現在の実行要求を全て満たすだけの十分な現在利用可能な余剰プログラム実行能力がある場合、前記要求それぞれに対し、前記要求と関連付けられたプログラムの実行を行うための要求された量の余剰プログラム実行能力が割り当てられる。特定の余剰コンピューティング能力プールについての現在の要求全てを満足できるだけの十分な現在利用可能な余剰プログラム実行能力が無い場合、ルーチンは、前記要求に優先順位を付け、より優先度の高い要求を満足した後により優先度の低い優先要求を満足しようとする。多様な実施形態において、優先度は、私的余剰コンピューティング能力プールと関連付けられた特定のユーザ、入札額、要求の受信時刻などのうち１つ以上に基づき得る。多様な実施形態において、ルーチンは、現在利用可能な余剰プログラム実行能力のうち前記要求によって多様な様態（例えば、上述したような様態）で用いられるために割り当てられるべきものを決定し得る。
【００９４】
ブロック５６５の後、ルーチンはブロック５７０へと進んで、余剰プログラム実行能力上において既に実行しておりかつブロック５６２および５６５において現在の実行対象として選択されていない要求と関連付けられた実行プログラム全てを終了させる（例えば、前記要求が期限切れとなっているかまたは現在進行中のものを満足させるほど十分に高い優先度を持っていないことを反映させる）。その後、ブロック５７５において、ルーチンは、各要求と関連付けられた１つ以上のプログラムを実行し（かつ／またはブロック５６５における進行中の実行のために選択された余剰プログラム実行能力上において以前実行されたプログラムを残留させる）。ブロック５７５の後、ルーチンはブロック５８０へと進んで、ハウスキーピング動作を任意選択的に行う。例えば、いくつかの実施形態において、ルーチンは、要求グループ中に期限切れとなっている実行要求があるかまたは他の場合において除去すべきである実行要求または余剰コンピューティング能力プール間において移動させるべき実行要求があるかを検出および通知することができる。
【００９５】
余剰プログラム実行能力上での現在の実行要求を管理すべきではないとブロック５５５において決定された場合、ルーチンはブロック５９５へと進んで、任意選択的に１つ以上の他の通知された動作を適切に行う。例えば、ブロック５０２において受信された要求は、（例えば、ユーザに割り当てられた専用能力のうち一部または全ての利用に基づいて）前記ユーザのために新規の私的余剰能力プールを作成せよとの前記ユーザからの要求であり得る（例えば、図６のブロック６１８を参照して説明した様態と同様の様態のもの）。あるいは、ブロック５０２において受信された要求は、既存の私的余剰能力プールの構成を変更せよとの要求であり得る。そうである場合、ルーチンは、対応する行為をブロック５９５において行い得る。ブロック５８０または５９５の後、ルーチンは、ブロック５９９へと進み、その後戻る。
【００９６】
図７は、オンデマンド可変能力使用量マネージャルーチン７００の例示的実施形態のフロー図である。前記ルーチンは、例えば図３のＰＥＳＳＭモジュール３４０のオンデマンド可変能力使用量マネージャモジュール３４６の実行によって得ることもできるし、あるいは、図１Ａおよび図１ＢのＰＥＳＳＭモジュール１１０および１８０および／または図２Ａおよび図２Ｂに対応する動作を行うＰＥＳＳＭモジュール（図示せず）の一部として得ることもでき、図４中のルーチン４００のブロック４５５から開始することができ、あるいは他の場合において呼び出すことができる。
【００９７】
図示の実施形態において、ルーチン７００は、ブロック７０５から開始する。ブロック７０５において、オンデマンド可変能力の利用に関連して要求、情報および／または他の通知が受信される。その後、ブロック７１０において、ルーチンは、現在利用可能なオンデマンド可変コンピューティング能力上において１つ以上のプログラムを実行せよとの要求（例えば、即時実行についての現在の要求、以前予定された要求）があるかを決定する。他において記載した通り、このような要求は、可変能力ユーザのための１つ以上のプログラムを行うための多様な種類および／または量のプログラム実行能力を指定し得る。１つ以上のプログラムを実行せよとの要求が受信されたとブロック７１０において決定された場合、ルーチンはブロック７４４へと進む。その後、ブロック７４４および７４６において、ルーチンは、前記要求されたプログラム実行能力が現在利用可能であるかを決定する。前記要求されたプログラム実行能力が現在利用可能である場合、ルーチンはブロック７４８へと進んで、前記利用可能な可変プログラム実行能力上における前記１つ以上の通知されたプログラムの実行を開始する。前記要求されたプログラム実行能力が現在利用可能ではない場合、ルーチンはブロック７５０へと進んで、可変プログラム実行能力についての要求が失敗に終わる（例えば、前記要求された１つ以上のプログラムは実行されない）。他の実施形態において、このような状況において、他の行為が任意選択的にとられ得る（例えば、余剰コンピューティング能力との利用に関する待ち行列へと前記要求を移動させるかまたはこのような移動を少なくともいくつかの実施形態および状況において自動的に行うかについてユーザへ問い合わせる）。加えて、いくつかの実施形態において、可変プログラム実行能力上においてプログラムを実行せよとの要求に応答して、ルーチンは、余剰能力ユーザの１つ以上のプログラムを自動終了させることで、可変プログラム実行能力を解放させることができる（例えば、対応する要求を余剰能力使用量マネージャモジュールへと送る）。
【００９８】
あるいは、１つ以上のプログラムを実行せよとの要求が受信されていないとブロック７１０において決定された場合、ルーチンはブロック７９０へと進んで、他の１つ以上の動作を適切に行う。ブロック７４８、７５０または７９０の後、ルーチンはブロック７９９へと進んだ後、戻る。
【００９９】
いくつかの実施形態において、上記したルーチンによって提供される機能は、別の方法で得ることが可能である（例えば、ルーチン間での機能分割またはより少数のルーチンへの機能統合）ことが理解される。同様に、いくつかの実施形態において、例示のルーチンによって提供される機能は記載された量よりも多いかまたは少ない場合がある（例えば、他の例示のルーチンがこのような機能をそれぞれ含まないかまたは含む場合、または提供される機能の量が変更される場合）。加えて、多様な動作が特定の様態で（例えば、直列または並列の様態で）および／または特定の順序で行われる様子が例示され得るが、当業者であれば、他の実施形態において、これらの動作を他の順序および他の様態で行うことが可能であることを理解する。また、当業者であれば、上記したデータ構造を異なる様態で構築することが可能である（例えば、単一のデータ構造を複数のデータ構造へ分割するかまたは複数のデータ構造を単一のデータ構造に統合することが可能である）ことを理解する。同様に、いくつかの実施形態において、例示のデータ構造が保存し得る情報量は記載の量よりもより多いかまたは少ない場合があり得る（例えば、他の例示のデータ構造がこのような情報をそれぞれ含まないかまたは含む場合、または保存される情報の量または種類が変更される場合）。
【０１００】
上記から、本明細書中、特定の実施形態について例示目的のために記載してきたが、本発明の意図および範囲から逸脱することなく多様な変更が可能であることが理解される。よって、本発明は、添付の特許請求の範囲およびその要素以外の何物によっても制限されない。加えて、本発明の特定の局面を以下の特定の請求項形態中に示すが、本発明者らは、任意の利用可能な請求項形態の本発明の多様な局面を企図する。例えば、本発明のいくつかの局面のみをコンピュータによる読み出しが可能な媒体中に埋め込まれたものとして現在記載しているが、他の局面も同様に具現化され得る。
【図１Ａ】
2013517544.tif 000003
【図１Ｂ】
2013517544.tif 000004
【図２Ａ】
2013517544.tif 000005
【図２Ｂ】
2013517544.tif 000006
【図３】
2013517544.tif 000007
【図４】
2013517544.tif 000008
【図５Ａ】
2013517544.tif 000009
【図５Ｂ】
2013517544.tif 000010
【図６】
2013517544.tif 000011
【図７】
2013517544.tif 000012
【手続補正書】
【提出日】平成24年9月6日(2012.9.6)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ユーザのためのプログラム実行を管理するための、コンピュータによって実行される方法であって、
第１のユーザのための１つ以上のコンピューティングノードのプログラム実行能力を指定期間において備蓄しておくことで、前記備蓄されたプログラム実行能力を用いて前記指定期間においてプログラムを実行するための専用アクセスを前記第１のユーザが得ることが可能となるステップであって、前記備蓄されたプログラム実行能力は、プログラム実行サービスのユーザのためにプログラムを実行する当該プログラム実行サービスの複数のコンピューティングノードによって提供される利用可能なプログラム実行能力のサブセットであり、前記複数のコンピューティングノードはそれぞれ、前記ユーザのうち１つ以上のために１つ以上のプログラムを実行するように構成することができる、ステップと、
前記指定期間のうち第１の期間サブセットにおいて前記備蓄されたプログラム実行能力を用いて前記第１のユーザのために１つ以上の第１のプログラムを実行するステップであって、前記１つ以上の第１のプログラムを実行するステップは、前記第１のユーザによる前記備蓄されたプログラム実行能力への専用アクセスを用いるための第１の要求に応答する、ステップと、
前記第１のユーザから第２の要求を受信して前記指定期間のうち第２の期間サブセットにおいて前記第１のユーザのために１つ以上の第２のプログラムを実行するステップであって、前記第２の期間サブセットは前記第１の期間サブセットと異なり、前記第２の要求は、前記第１のユーザが専用アクセスを持っていない前記プログラム実行サービスの前記利用可能なプログラム実行能力の未使用状態である余剰能力を用いて前記１つ以上の第２のプログラムを実行することであり、前記プログラム実行サービスの前記余剰能力の利用は、前記プログラム実行サービスによって制御される第１のプログラム実行特性を有し、前記第１のプログラム実行特性は、前記プログラム実行サービスによって制御される第２のプログラム実行特性と異なり、前記プログラム実行サービスは、前記備蓄されたプログラム実行能力の利用から発生する、ステップと、
前記第１のユーザのための前記備蓄されたプログラム実行能力を用いて、前記１つ以上の第２のプログラムを前記第２の要求のために前記第２の期間サブセットにおいて実行することを自動決定するステップであって、前記備蓄されたプログラム実行能力を用いることを自動決定するステップは、前記プログラム実行サービスの１つ以上のプログラムされたコンピューティングシステムによって行なわれ、そうしなければ前記第２の期間サブセットにおいて前記備蓄されたプログラム実行能力への前記専用アクセスを用いることのない前記第１のユーザに少なくとも部分的に基づく、ステップと
前記第１のユーザのために前記第２の期間サブセットにおいて前記１つ以上の第２のプログラムの実行を開始するステップであって、前記開始するステップは、前記備蓄されたプログラム実行能力を用いて行われ、前記１つ以上の第２のプログラムの実行は、前記備蓄されたプログラム実行能力の利用に基づいて、前記第２のプログラム実行特性のうち少なくとも一部を有する、ステップと、
を含む、方法。
【請求項２】
前記第１のユーザのために前記指定期間の第３の期間サブセットにわたって１つ以上の第３のプログラムを実行せよとの第３の要求を前記第１のユーザから受信するステップであって、前記第３の要求は、前記プログラム実行サービスの前記未使用状態である余剰能力を用いて前記１つ以上の第３のプログラムを実行することである、ステップと、
前記得第３の要求のために前記第３の期間サブセットにわたって前記１つ以上の第３のプログラムを実行する際に、前記備蓄されたプログラム実行能力を前記第１のユーザのために用いないことを自動的に決定するステップであって、前記備蓄されたプログラム実行能力を用いないことを自動的に決定するステップは、そうしなければ前記第３の期間サブセットにおいて前記第１のユーザによって用いられる前記備蓄されたプログラム実行能力に少なくとも部分的に基づく、ステップと、
前記１つ以上の第３のプログラムの実行を前記第１のユーザのために前記第３の期間サブセットにおいて開始しようとするステップであって、前記開始しようとするステップは、前記プログラム実行サービスの前記未使用状態である余剰能力を用いることによって行われる、ステップと、
をさらに含む、請求項１に記載の方法。
【請求項３】
前記未使用状態である余剰能力を用いた前記１つ以上の第３のプログラムの実行は、前記第１のプログラム実行特性を有し、前記第１のプログラム実行特性は、第１の指定量のプログラム実行能力について前記第１のユーザに課金される第１の料金を含み、前記方法は、前記プログラム実行サービスの前記未使用状態である余剰能力を用いて前記１つ以上の第３のプログラムの実行が開始された後でありかつ前記１つ以上の第３のプログラムの実行が完了する前において、
前記第１のユーザのための前記備蓄されたプログラム実行能力のうち少なくとも一部が利用可能であると自動的に決定するステップと、
前記１つ以上の第３のプログラムを実行して、前記少なくともいくつかの利用可能な備蓄されたプログラム実行能力を利用することを継続するように変更することを自動的に決定するステップと、
前記プログラム実行サービスの余剰能力の代わりに前記少なくともいくつかの利用可能な備蓄されたプログラム実行能力を用いて前記１つ以上の第３のプログラムの前記継続的実行を開始するステップであって、前記１つ以上の第３のプログラムの前記継続的実行は、前記少なくともいくつかの第２のプログラム実行特性を有し、前記少なくともいくつかの第２のプログラム実行特性は、第２の指定量のプログラム実行能力について前記第１のユーザに課金される第２の料金を含み、前記第２の料金は前記第１の料金と異なる、ステップと、
を含む、請求項２に記載の方法。
【請求項４】
１つ以上の第３のプログラムを前記第２のユーザのために前記指定期間の第３の期間サブセットにおいて実行せよとの第３の要求を第２のユーザから受信するステップであって、前記第３の要求は、前記１つ以上の第３のプログラムの実行を前記プログラム実行サービスの前記未使用状態である余剰能力を用いて行うことであり、前記第２のユーザは前記第１のユーザと異なる、ステップと、
前記備蓄されたプログラム実行能力を前記第１のユーザのために用いないことを自動的に決定し、前記第３の要求のために前記第３の期間サブセットにおいて前記１つ以上の第３のプログラムを実行するステップであって、前記備蓄されたプログラム実行能力を用いないことを自動的に決定するステップは、前記第１のユーザと異なる前記第２のユーザに少なくとも部分的に基づき、かつ、そうでなければ前記第３の期間サブセットにおいて前記第１のユーザによって用いられない前記備蓄されたプログラム実行能力と無関係である、ステップと、
前記１つ以上の第３のプログラムの前記第２のユーザのための前記第３の期間サブセットにおける実行の開始を試行するステップであって、前記試行するステップは、前記プログラム実行サービスの前記未使用状態である余剰能力を用いることにより、行われる、ステップと
をさらに有する請求項１〜３のうちいずれかに記載の方法。
【請求項５】
前記１つ以上の第２のプログラムを前記第１のユーザのために実行せよとの前記第１のユーザからの前記第２の要求は、用いられるべき複数のコンピューティングノードの数量の通知を含み、前記第１のユーザのための前記備蓄されたプログラム実行能力は、そうでなければ前記第２の期間サブセットにおいて前記第１のユーザによって用いられず、前記通知された数量よりも少量である前記１つ以上のコンピューティングノードの利用可能な数量に対応し、前記備蓄されたプログラム実行能力を用いることにより前記１つ以上の第２のプログラムの実行を前記第１のユーザのために開始するステップは、前記利用可能な数量の前記１つ以上のコンピューティングノードを用いることを含み、前記方法は、前記１つ以上の第２のプログラムの前記第１のユーザのための前記第２の期間サブセットにおける他の実行を開始するステップをさらに含み、前記他の実行を開始するステップは、前記プログラム実行サービスの前記未使用状態である余剰能力を用いることによって行われ、前記他の実行を開始するステップは、前記通知された数量と前記利用可能な数量との間の数値差である数量の１つ以上の未使用状態である余剰コンピューティングノードを用いるステップを含む、
請求項１〜４のうちいずれかに記載の方法。
【請求項６】
前記方法は、前記備蓄されたプログラム実行能力を私的余剰コンピューティング能力プールの一部として前記第１のユーザのために前記指定期間において用いることを自動的に決定するステップをさらに含み、前記指定期間において、前記備蓄されたプログラム実行能力は用いられておらず、これにより、前記第１のユーザに専用アクセスが提供され、前記方法はまた、前記備蓄されたプログラム実行能力の前記第１のユーザのための利用を自動的に監視して、前記備蓄されたプログラム実行能力の前記私的余剰コンピューティング能力プールについての利用可能性を決定するステップをさらに含む、
請求項１〜５のうちいずれかに記載の方法。
【請求項７】
前記備蓄されたプログラム実行能力を前記私的余剰コンピューティング能力プールの一部として前記第１のユーザのために用いることを自動的に決定するステップは、前記第１のユーザの知識無しに行われる、
請求項６に記載の方法。
【請求項８】
前記備蓄されたプログラム実行能力を前記第１のユーザのために用いて、前記第２の期間サブセットにおいて前記１つ以上の第２のプログラムを前記第２の要求のために実行することを自動的に決定するステップは、前記プログラム実行サービスの前記未使用状態である余剰能力の代わりに前記備蓄されたプログラム実行能力を用いることを決定するステップを含み、前記備蓄されたプログラム実行能力を前記私的余剰コンピューティング能力プールの一部として前記第１のユーザのために用いて、前記１つ以上の第２のプログラムを前記第２の要求を実行することを自動的に決定するステップは、前記第１のユーザの知識無しに行われる、
請求項１〜７のうちいずれかに記載の方法。
【請求項９】
前記備蓄されたプログラム実行能力の利用からの前記第２のプログラム実行特性は、前記備蓄されたプログラム実行能力の前記第１のユーザのための保証された利用可能性を含み、前記プログラム実行サービスの前記余剰能力を用いるための前記第１のプログラム実行特性は、前記余剰能力の継続的利用可能性の保証が無いことを含む、請求項１〜８のうちいずれかに記載の方法。
【請求項１０】
前記備蓄されたプログラム実行能力の利用からの前記第２のプログラム実行特性は、指定量の前記備蓄されたプログラム実行能力が指定された時間間隔にわたって利用された場合に前記第１のユーザに課金される第１の進行中の料金を含み、前記プログラム実行サービスの前記余剰能力を用いるための前記第１のプログラム実行特性は、前記指定量の前記余剰能力が前記指定された時間間隔にわたって利用された場合に前記第１のユーザに課金される第２の料金を含み、前記第１の料金は前記第２の料金よりも少額であり、前記備蓄されたプログラム実行能力を前記第１のユーザのために用いて前記１つ以上の第２のプログラムを実行することを自動的に決定するステップは、前記１つ以上の第２のプログラムの実行について前記備蓄されたプログラム実行能力を用いたために前記より低い第１の料金が課金されている前記第１のユーザに少なくとも部分的に基づき、前記１つ以上の第２のプログラムの実行のための前記少なくともいくつかの第２のプログラム実行特性は、前記より低い第１の料金の利用を含む、
請求項１〜９のうちいずれかに記載の方法。
【請求項１１】
前記備蓄されたプログラム実行能力は、複数の備蓄されたコンピューティングノードの前記第１のユーザのための利用に基づき、前記複数の備蓄されたコンピューティングノードは全て、前記第１の期間サブセット以外の前記指定された期間の一部において前記プログラム実行サービスの前記未使用状態である余剰能力の代わりに用いられるべきものとして前記第１のユーザによって指定され、前記備蓄されたプログラム実行能力を用いることにより、前記１つ以上の第２のプログラムの前記第１のユーザのための実行を開始するステップは、前記複数の備蓄されたコンピューティングノードのサブセットを用いるステップを含み、前記方法は、前記指定された期間のうち１つ以上の部位における１つ以上の他の第３のプログラムの実行を前記第１のユーザのために開始するステップをさらに含み、前記開始するステップは、前記複数の備蓄されたコンピューティングノードのうち少なくともいくつかを用いることにより、行われる、
請求項１〜１０のうちいずれかに記載の方法。
【請求項１２】
前記備蓄されたプログラム実行能力を用いた前記１つ以上の第２のプログラムの実行時において、
前記第１のユーザの前記備蓄されたプログラム実行能力への専用アクセスを用いて１つ以上の第３のプログラムを前記第１のユーザのために実行せよとの第３の要求を前記第１のユーザから受信するステップと、
前記受信された第３の要求に基づいて、前記備蓄されたプログラム実行能力を用いた前記１つ以上の第２のプログラムの実行を終了することを決定するステップと、
前記１つ以上の第２のプログラムの実行の代わりに前記備蓄されたプログラム実行能力を用いることにより、前記１つ以上の第３のプログラムの前記第１のユーザのための実行を開始するステップと、
をさらに含む、請求項１〜１１のうちいずれかに記載の方法。
【請求項１３】
前記備蓄されたプログラム実行能力を用いた前記１つ以上の第２のプログラムの実行時において、
前記第１のユーザの前記備蓄されたプログラム実行能力への専用アクセスを用いて１つ以上の第３のプログラムを前記第１のユーザのために実行せよとの第３の要求を前記第１のユーザから受信するステップと、
前記受信された第３の要求に応答して、前記プログラム実行サービスの余剰能力を用いるための前記１つ以上の第２のプログラムの継続的実行を変更することを自動的に決定し、前記１つ以上の第２のプログラムの前記継続的実行を前記備蓄されたプログラム実行能力の代わりに前記余剰能力を用いて開始し、前記１つ以上の第２のプログラムの前記継続的実行は、前記第１のプログラム実行特性を有する、ステップと、
をさらに含む、請求項１〜１２のうちいずれかに記載の方法。
【請求項１４】
前記備蓄されたプログラム実行能力を用いた前記１つ以上の第２のプログラムの実行についての前記少なくともいくつかの第２のプログラム実行特性は第１の料金を含み、前記第１の料金は、第１の指定量のプログラム実行能力について前記第１のユーザに課金され、前記余剰能力を用いた前記１つ以上の第２のプログラムの継続的実行に関する前記第１のプログラム実行特性は第２の料金を含み、前記第２の料金は、第２の指定量のプログラム実行能力について前記第１のユーザに課金され、前記第２の料金は前記第１の料金と異なる、請求項１３に記載の方法。
【請求項１５】
前記複数のコンピューティングノードは、複数の物理的なコンピューティングシステムそれぞれについて、前記物理的なコンピューティングシステムによってホストされた複数の仮想マシンを含み、前記複数の仮想マシンはそれぞれ、少なくとも１つのプログラムを実行するように構成可能であり、前記備蓄されたプログラム実行能力のために用いられる前記１つ以上のコンピューティングノードは、それぞれホストされた仮想マシンである、請求項１〜１４のうちいずれかに記載の方法。
【請求項１６】
コンピュータによる読み出しが可能な記憶媒体であって、前記記憶媒体のコンテンツにより、コンピューティングシステムは、
指定期間にわたるプログラム実行時において用いられる専用アクセスを第１のユーザが有する１つ以上の備蓄されたコンピューティング関連リソースを提供するステップであって、前記備蓄されたコンピューティング関連リソースは、ネットワークアクセシブルサービスによって管理され、前記ネットワークアクセシブルサービスは、前記第１のユーザから遠隔であり、かつ、前記指定期間のうち通知された部位における前記第１のユーザによる専用アクセスのために用いられない、ステップと、
前記第１のユーザのための前記通知された部位における１つ以上の第１のプログラムの実行時において、少なくとも１つの通知されたコンピューティング関連リソースを用いよとの前記第１のユーザからの通知に自動的に応答するステップであって、前記少なくとも１つのコンピューティング関連リソースは、前記遠隔サービスのうち未使用状態である余剰コンピューティング関連リソースでありかつ前記第１のユーザが専用アクセスを持っていないものとして通知され、前記自動応答ステップは、
前記第１のユーザのための前記備蓄されたコンピューティング関連リソースが前記少なくとも１つの通知されたコンピューティング関連リソースを含むことを決定し、前記１つ以上の第１のプログラムの実行時において前記第１のユーザのために前記通知された部位において前記遠隔サービスの前記未使用状態である余剰コンピューティング関連リソースの代わりに前記備蓄されたコンピューティング関連リソースを用いることを決定するステップと、
前記１つ以上の第１のプログラムの実行時において前記第１のユーザのために前記通知された部位において、前記備蓄されたコンピューティング関連リソースの利用を開始するステップと、
を含む、ステップと、
を含む方法を行うことができる、コンピュータによる読み出しが可能な記憶媒体。
【請求項１７】
前記サービスはプログラム実行サービスであり、前記プログラム実行サービスのユーザのプログラムを実行するように構成することが可能な複数のコンピューティングノードを提供し、前記１つ以上の備蓄されたコンピューティング関連リソースは、１つ以上のプログラムの実行において前記第１のユーザによって用いられるために割り当てられた前記複数のコンピューティングノードのうち１つ以上を含み、前記少なくとも１つの通知されたコンピューティング関連リソースは、前記複数のコンピューティングノードの１つ以上のうち指定された数量であり、前記備蓄されたコンピューティング関連リソースの利用を前記１つ以上の第１のプログラムの実行時において開始するステップは、前記第１のユーザによって用いられるように割り当てられた前記１つ以上のコンピューティングノードからの少なくとも前記指定された数量のコンピューティングノードによって前記１つ以上の第１のプログラムの実行を開始するステップを含む、
請求項１６に記載の、コンピュータによる読み出しが可能な記憶媒体。
【請求項１８】
前記第１のユーザが専用アクセスを有する前記１つ以上の備蓄されたコンピューティング関連リソースを提供するステップは、１つ以上の第２のプログラムを前記第１のユーザのために前記指定期間の第２の部位にわたって前記第１のユーザの前記専用アクセスを用いて実行するステップを含み、前記第２の部位は前記通知された部位と異なり、前記第１のユーザのための前記少なくとも指定された数量のコンピューティングノードによる前記１つ以上の第１のプログラムの実行は第１のプログラム実行特性を有し、前記第１のプログラム実行特性は、第２のプログラム実行特性と異なり、前記第２のプログラム実行特性は、前記遠隔サービスの前記未使用状態である余剰コンピューティング関連リソースの利用に起因して発生する、
請求項１７に記載の、コンピュータによる読み出しが可能な記憶媒体。
【請求項１９】
少なくとも１つの通知されたコンピューティング関連リソースを利用せよとの前記第１のユーザからの前記要求は、コンピューティング関連リソースの種類の通知を含み、前記少なくとも１つの通知されたコンピューティング関連リソースは、前記通知された種類の決定された量である、請求項１６に記載の、コンピュータによる読み出しが可能な記憶媒体。
【請求項２０】
前記少なくとも１つの通知されたコンピューティング関連リソースは、永続的記憶、メモリおよびプロセッササイクルのうち少なくとも１つである、請求項１６に記載の、コンピュータによる読み出しが可能な記憶媒体。
【請求項２１】
前記コンピュータによる読み出しが可能な媒体は、前記コンテンツを保存する前記コンピューティングシステムのメモリであり、前記コンテンツは命令であり、前記命令が実行されると、前記命令は、前記方法を行うように前記コンピューティングシステムをプログラムする、請求項１６に記載の、コンピュータによる読み出しが可能な記憶媒体。
【請求項２２】
ユーザのためのプログラム実行を管理するように構成されたコンピューティングシステムであって、
１つ以上のプロセッサと、
システムマネージャモジュールと
を含み、
前記システムマネージャモジュールは、前記１つ以上のプロセッサのうち少なくとも１つによって実行された場合、ユーザのためのプログラム実行サービスのプログラム実行を管理するように構成され、前記管理するステップは、複数の前記ユーザそれぞれについて、
前記ユーザがプログラム実行のために専用アクセスを有する指定された第１の量の備蓄されたプログラム実行能力を提供するステップであって、前記備蓄されたプログラム実行能力は、前記プログラム実行サービスによって提供されたプログラム実行能力のサブセットであるステップと、
前記指定された第１の量の備蓄されたプログラム実行能力の提供後、１つ以上の第１のプログラムを前記ユーザのために前記プログラム実行サービスの第２の量の余剰プログラム実行能力を用いて実行せよとの前記ユーザからの要求に自動的に応答するステップであって、前記第２の量の余剰プログラム実行能力に対し、前記ユーザは専用アクセスを持っておらず、
前記ユーザのための前記備蓄されたプログラム実行能力が、前記ユーザによって用いられていない少なくとも前記第２の量の利用可能なプログラム実行能力を含むかを自動的に決定するステップと、
前記ユーザのための前記備蓄されたプログラム実行能力が、少なくとも前記第２の量の前記利用可能なプログラム実行能力を含むものとして自動的に決定された場合、前記ユーザのための前記備蓄されたプログラム実行能力を用いた前記１つ以上の第１のプログラムの前記ユーザのための実行を開始するステップと、
前記ユーザのための前記備蓄されたプログラム実行能力が、少なくとも前記第２の量の前記利用可能なプログラム実行能力を含まないものとして自動的に決定された場合、現在未使用状態であるプログラム実行サービスの他の余剰プログラム実行能力を得ることにより、前記１つ以上の第１のプログラムの前記ユーザのための実行を開始しようとするステップであって、前記プログラム実行サービスの前記他の余剰プログラム実行能力は、前記ユーザのための前記備蓄されたプログラム実行能力と異なる、ステップと
を含むステップと
によって行われる、
コンピューティングシステム。
【請求項２３】
前記プログラム実行サービスは、複数のコンピューティングノードを用いて前記プログラム実行サービスのための前記プログラム実行能力を提供し、前記複数のコンピューティングノードはそれぞれ、前記プログラム実行サービスのユーザのうち１つ以上のために１つ以上のプログラムを実行するように構成可能であり、前記指定された第１の量の備蓄されたプログラム実行能力を前記複数のユーザのうちの１つのために提供するステップは、前記複数のコンピューティングノードのうち１つ以上を前記１つのユーザによる指定期間にわたる専用使用のために割り当てるステップを含み、１つ以上の第２のプログラムを前記１つのユーザのために前記指定期間の一部にわたって実行するステップを含み、前記実行するステップは、前記割り当てられた１つ以上のコンピューティングノードの前記備蓄されたプログラム実行能力への前記１つのユーザによる専用アクセスを用いて行われ、前記１つのユーザによる前記割り当てられた１つ以上のコンピューティングノードの前記備蓄されたプログラム実行能力への専用アクセスが前記１つ以上の第２のプログラムの実行のために用いられた場合において前記自動的に決定するステップが前記指定期間の前記部位において発生した場合に、前記１つのユーザのための前記備蓄されたプログラム実行能力は、少なくとも前記第２の量の前記利用可能なプログラム実行能力を含まないように自動的に決定される、請求項２２に記載のコンピューティングシステム。
【請求項２４】
前記１つのユーザのための前記備蓄されたプログラム実行能力が少なくとも前記第２の量の利用可能なプログラム実行能力を含むかを自動的に決定するステップは、前記１つのユーザのための前記備蓄されたプログラム実行能力が少なくとも前記第２の量の前記利用可能なプログラム実行能力を含まないと決定するステップを含み、前記１つ以上の第１のプログラムの実行を前記１つのユーザのために前記１つのユーザのための前記備蓄されたプログラム実行能力を用いて行うステップは、第１のプログラム実行特性を有し、前記第１のプログラム実行特性は、第２のプログラム実行特性と異なり、前記第２のプログラム実行特性は、前記プログラム実行サービスのその他の余剰プログラム実行能力の利用に起因して発生する、請求項２３に記載のコンピューティングシステム。
【請求項２５】
前記システムマネージャモジュールは、前記コンピューティングシステムの前記１つ以上のプロセッサによって実行されるソフトウェア命令を含む、請求項２２に記載のコンピューティングシステム。
【請求項２６】
前記システムマネージャモジュールは、プログラム実行サービスのユーザのためのプログラム実行を管理する手段からなり、前記管理は、前記複数のユーザそれぞれについて、
前記ユーザがプログラム実行のために専用アクセスを有する指定された第１の量の備蓄されたプログラム実行能力を提供するステップであって、前記備蓄されたプログラム実行能力は、前記プログラム実行サービスによって提供されるプログラム実行能力のサブセットである、ステップと、
前記指定された第１の量の備蓄されたプログラム実行能力を提供するステップの後、１つ以上の第１のプログラムの実行を前記ユーザのために前記プログラム実行サービスの第２の量の余剰プログラム実行能力を用いて実行せよとの前記ユーザからの要求に自動的に応答するステップであって、前記第２の量の余剰プログラム実行能力に対して前記ユーザは専用アクセスを持っておらず、
前記ユーザのための前記備蓄されたプログラム実行能力が、前記ユーザによって用いられない少なくとも前記第２の量の利用可能なプログラム実行能力を含むかを自動的に決定するステップと、
前記ユーザのための前記備蓄されたプログラム実行能力が少なくとも前記第２の量の前記利用可能なプログラム実行能力を含むと自動的に決定された場合、前記１つ以上の第１のプログラムの前記ユーザのための実行を前記ユーザのための前記備蓄されたプログラム実行能力を用いて開始するステップと、
前記ユーザのための前記備蓄されたプログラム実行能力が少なくとも前記第２の量の前記利用可能なプログラム実行能力を含まないと自動的に決定された場合、現在未使用状態である前記プログラム実行サービスの他の余剰プログラム実行能力の利用を入手することにより、前記１つ以上の第１のプログラムの前記ユーザのための実行を開始しようとするステップであって、前記プログラム実行サービスの前記他の余剰プログラム実行能力は、前記ユーザのための前記備蓄されたプログラム実行能力と異なる、ステップと、
を含むステップとを行うことによって行われる、請求項２２に記載のコンピューティングシステム。
【国際調査報告】
2013517544.tif 000013
2013517544.tif 000014