(57)【要約】  スポット価格設定プロセスを介してクラウドコンピューティング環境においてリソースを割り当てるためのシステムおよび方法が提供される。スポット価格設定プロセスは、仮想マシンが、プールに、そのプールに関連付けられた指値に基づいて、プリエンプション可能に割り当てられることを可能にする。それらの指値が、プリエンプション可能な仮想マシンの割り当ての価格を決定するのに使用されることが可能である。次に、プリエンプション可能な仮想マシンが、その決定された価格に対するサブミットされた指値に少なくとも部分的に基づいて、プールに割り当てられることが可能である。
2015511341.tif 000002
【特許請求の範囲】
【請求項１】
クラウドコンピューティング環境においてリソースを提供するための方法であって、
プリエンプション可能な仮想マシンの割り当てのための第１の価格を受信するステップと、
１つまたは複数の仮想マシンクラスターからの複数のプリエンプション可能な仮想マシンを仮想マシンプールに、前記受信された第１の価格、および前記仮想マシンプールに関連付けられた第１の指値に基づいて割り当てるステップと、
前記割り当てられた複数のプリエンプション可能な仮想マシン上で１つまたは複数のタスクを実行するステップと、
プリエンプション可能な仮想マシンの割り当てのための第２の価格を受信するステップと、
前記１つまたは複数の仮想マシンクラスターからの少なくとも１つのプリエンプション可能な仮想マシン、およびさらなる仮想マシンクラスターからの少なくとも１つのプリエンプション可能な仮想マシンを前記仮想マシンプールに、前記受信された第２の価格、および前記仮想マシンプールに関連付けられた第２の指値に基づいて割り当てるステップと、
前記さらなるマシンクラスターから割り当てられた前記少なくとも１つのプリエンプション可能な仮想マシン上で１つまたは複数のタスクを実行するステップとを備える方法。
【請求項２】
前記さらなる仮想マシンクラスターからの仮想マシンは、前記１つまたは複数の仮想マシンクラスターに対応する物理的マシンに対して別個の地理的ロケーションにある物理的マシンに対応する請求項１に記載の方法。
【請求項３】
前記１つまたは複数の仮想マシンクラスターからの少なくとも１つの仮想マシンを第２の仮想マシンプールに、前記第２の仮想マシンプールからの要求に基づいて割り当て、前記要求は、前記１つまたは複数の仮想マシンクラスターにおける仮想マシンクラスターに対する親和性を含むステップをさらに備え、さらなる仮想マシンクラスターからの前記少なくとも１つのプリエンプション可能な仮想マシンを前記仮想マシンプールに前記割り当てるステップは、前記１つまたは複数の仮想マシンクラスターからの少なくとも１つの仮想マシンを第２の仮想マシンプールに前記割り当てるステップに応答する請求項１または２に記載の方法。
【請求項４】
複数の仮想マシンプールに対応する指値を集計し、各指値は、要求されるプリエンプション可能な仮想マシンの数を含むステップと、
プリエンプション可能な仮想マシンとして割り当てるのに利用可能な仮想マシンの数を決定するステップと、
前記集計された指値に基づいてグローバルスポット価格を計算し、前記グローバルスポット価格は、前記グローバルスポット価格より高い指値に含められる要求されるプリエンプション可能な仮想マシンの数が、仮想マシンの前記決定された数以下となるように計算されるステップと、
前記計算されたグローバルスポット価格を、プリエンプション可能な仮想マシンの割り当てのための前記価格として前記複数の仮想マシンプールに配信するステップとをさらに備える請求項１から３のいずれかに記載の方法。
【請求項５】
コンピューティングデバイスによって実行されると、
プリエンプション可能な仮想マシンの割り当てのための価格を受信するステップと、
第１の仮想マシンクラスターからの１つまたは複数のプリエンプション可能な仮想マシンを第１の仮想マシンプールに、前記受信された価格、および前記第１の仮想マシンプールに関連付けられた、前記第１の仮想マシンクラスターに対する親和性を含む、複数のプリエンプション可能な仮想マシンを求める要求に対応する第１の指値に基づいて割り当て、プリエンプション可能な複数の仮想マシンを求める前記要求における少なくとも１つの仮想マシンは、前記第１の仮想マシンクラスターの中の仮想マシンの前記割り当ての後に満足させられないステップと、
第２の仮想マシンクラスターからの１つまたは複数のプリエンプション可能な仮想マシンを第２の仮想マシンプールに、前記受信された価格、および前記第２の仮想マシンプールに関連付けられた第２の指値に基づいて割り当て、前記第２の仮想マシンクラスターからの割り当てられる少なくとも１つの仮想マシンは前記第２の仮想マシンプールに、前記受信された価格より高く、前記第１の仮想マシンプールに関連付けられた前記第１の指値より低い指値に基づいて割り当てられるステップと、
前記第２の仮想マシンプールの中の前記第２の仮想マシンクラスターからの前記割り当てられたプリエンプション可能な仮想マシン上で１つまたは複数のタスクを実行するステップとを備えるクラウドコンピューティング環境においてリソースを提供するための方法を実行するコンピューターによる使用が可能な命令を格納する１つまたは複数のコンピューター記憶媒体。
【請求項６】
前記少なくとも１つの満足させられない仮想マシン要求は、割り当て期間にわたって満足させられないままであり、さらに前記第２の仮想マシンクラスターからの少なくとも１つの仮想マシンは、前記割り当て期間中、割り当てられない請求項５に記載のコンピューター記憶媒体。
【請求項７】
複数の仮想マシンプールに対応する指値を集計し、各指値は、要求されるプリエンプション可能な仮想マシンの数を含むステップと、
プリエンプション可能な仮想マシンとして割り当てるのに利用可能な仮想マシンの数を決定するステップと、
前記集計された指値に基づいてグローバルスポット価格を計算し、前記グローバルスポット価格は、前記グローバルスポット価格より高い指値に含められる要求されるプリエンプション可能な仮想マシンの数が、仮想マシンの前記決定された数以下となるように計算されるステップと、
前記計算されたグローバルスポット価格を、プリエンプション可能な仮想マシンの割り当てのための前記価格として前記複数の仮想マシンプールに配信するステップとをさらに備える請求項５または６に記載のコンピューター記憶媒体。
【請求項８】
クラウドコンピューティング環境においてリソースを提供するための方法であって、
プリエンプション可能な仮想マシンの割り当てのための価格を受信するステップと、
１つまたは複数の仮想マシンクラスターからの第１の複数のプリエンプション可能な仮想マシンを第１の仮想マシンプールに、前記受信された価格、および前記仮想マシンプールに関連付けられた第１の指値に基づいて割り当てるステップと、
前記１つまたは複数の仮想マシンクラスターからの第２の複数のプリエンプション可能な仮想マシンを第２の仮想マシンプールに、前記受信された価格、および前記第２の仮想マシンプールに関連付けられた第２の指値に基づいて割り当てるステップと、
前記第１の複数のプリエンプション可能な仮想マシン上、および前記第２の複数のプリエンプション可能な仮想マシン上で１つまたは複数のタスクを実行するステップと、
プリエンプション可能な仮想マシンの数を増やす要求を前記第１の仮想マシンプールから受信し、前記増加要求は、前記第１の仮想マシンプールに関連付けられた第３の指値に対応し、前記第３の指値は、前記第２の仮想マシンプールに関連付けられた前記第２の指値より高いステップと、
割り当て期間の終わりまで前記第２の複数の仮想マシンの割り当てを保持するステップと、
前記第２の仮想マシンプールから、前記第２の複数の仮想マシンからの少なくとも１つの仮想マシンの前記割り当てを除去するステップと、
前記除去された少なくとも１つの仮想マシンを、後続の割り当て期間に関して前記第１の仮想マシンプールに割り当てるステップとを備える方法。
【請求項９】
プリエンプション可能な仮想マシンの割り当ては、割り当て期間の始めに実行され、プリエンプション可能な仮想マシンの割り当てのための前記価格は、割り当て期間の始めより前に受信される請求項８に記載の方法。
【請求項１０】
プリエンプション可能な仮想マシンの数の前記増加は、プリエンプション可能な仮想マシンの割り当てのための前記価格が受信された後、ただし、前記後続の割り当て期間の始めより前に前記第１の仮想マシンプールによって要求される請求項９に記載の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
[0001]大規模な計算ジョブを実行するための従来の方法には、コンピューティングプラットフォームの役割をするコンピューターハードウェアをユーザーが購入することを、しばしば必要とした。このことは、通常の多くのユーザーは、コンピューティングリソースの定常的なニーズとは異なるピークレベルのコンピューティングニーズを有するので、様々な非効率につながる可能性がある。ピークリソースニーズを満たすのに十分なハードウェアを購入することは、コンピューターリソースの低い利用率につながり得る。代替として、定常的な利用レベルにハードウェアを合わせることは、所望される一部の計算が現実的でなくなることをもたらし得る。最近になって、処理速度およびネットワーク伝送速度の向上が、クラウドコンピューティング環境を、ローカルコンピューティングプラットフォームに対する存続可能な代替にしている。
【発明の概要】
【課題を解決するための手段】
【０００２】
[0002]様々な実施形態において、スポット価格設定プロセスを介してクラウドコンピューティング環境においてリソースを割り当てるためのシステムおよび方法が提供される。スポット価格設定プロセスは、仮想マシンが、プールに、そのプールに関連付けられた指値（bid）に基づいて、プリエンプション可能(preemptible)に割り当てられることを可能にする。それらの指値が、プリエンプション可能な仮想マシンの割り当ての価格を決定するのに使用されることが可能である。次に、プリエンプション可能な仮想マシンが、その決定された価格に対するサブミットされた指値に少なくとも部分的に基づいて、プールに割り当てられることが可能である。
【０００３】
[0003]この概要は、詳細な説明において後段でさらに説明される選定された概念を簡略化した形態で概説するように与えられる。この概要は、主張される主題の重要な特徴、または不可欠な特徴を特定することは意図しておらず、それ自体で、主張される主題の範囲を確定する助けとして使用されることも意図していない。
【０００４】
[0004]本発明は、添付の図面を参照して後段で詳細に説明される。
【図面の簡単な説明】
【０００５】
【図１】[0005]クラウドコンピューティング環境を実施する際に使用するのに適したシステムまたは構成要素の例を概略で示す図である。
【図２】[0006]クラウドコンピューティング環境を実施する際に使用するのに適したシステムまたは構成要素の例を概略で示す図である。
【図３】[0007]クラウドコンピューティング環境を実施する際に使用するのに適したシステムまたは構成要素の例を概略で示す図である。
【図４】[0008]クラウドコンピューティング環境を実施する際に使用するのに適したシステムまたは構成要素の例を概略で示す図である。
【図５】[0009]クラウドコンピューティング環境を実施する際に使用するのに適したシステムまたは構成要素の例を概略で示す図である。
【図６】[0010]クラウドコンピューティング環境を実施する際に使用するのに適したシステムまたは構成要素の例を概略で示す図である。
【図７】[0011]本発明の実施形態によるクラウドコンピューティング環境において仮想マシンを管理することの例を概略で示す図である。
【図８】本発明の実施形態によるクラウドコンピューティング環境において仮想マシンを管理することの例を概略で示す図である。
【図９】本発明の実施形態によるクラウドコンピューティング環境において仮想マシンを管理することの例を概略で示す図である。
【図１０】本発明の実施形態によるクラウドコンピューティング環境において仮想マシンを管理することの例を概略で示す図である。
【図１１】本発明の実施形態によるクラウドコンピューティング環境において仮想マシンを管理することの例を概略で示す図である。
【図１２】[0012]本発明の実施形態を実行するのに適したコンピューティングデバイスを概略で示す図である。
【図１３】[0013]本発明によるプロセスフローの例を示す図である。
【図１４】本発明によるプロセスフローの例を示す図である。
【図１５】本発明によるプロセスフローの例を示す図である。
【発明を実施するための形態】
【０００６】
[0014]（概要）ネットワーク上のデータ伝送の速度の増加、および他のネットワークフィーチャの向上により、大きなネットワークにわたってコンピューティングリソースが分散されている環境において大規模なコンピューティングタスクを実行することが、ますます可能になる。第１のロケーションにおけるユーザーが、コンピューティングサービスにジョブまたはコンピューティングタスクをサブミットして、そのタスクを、ユーザーが直接の知識を有さないグループのコンピューター上で実行させることが可能である。そのユーザーのタスクを実行するためのコンピューティングリソースは、複数のロケーションにわたって分散していることが可能である。１つまたは複数のロケーションに位置する第１のグループのコンピューティングリソースが、そのユーザーのコンピューティングタスクを実行するためのデータおよび他の情報を格納することが可能である一方で、同一のロケーションにおける、または、場合により、異なるセットの１つまたは複数のロケーションにおける第２のグループのコンピューティングリソースが、そのコンピューティングタスクを実行するのに使用されることが可能である。
【０００７】
[0015]様々な分散したコンピューティングリソースへのアクセスが、ユーザーが、それらのコンピューティングリソースがどこに位置しているかを気にすることなしに、ジョブタスクを実行することを可能にする。また、それらの分散したリソースは、ユーザーが、指定された時間までにコンピューティングタスクを完了することなどの、コンピューティングタスクに関する目標を満たすために使用されるリソースの量をスケールアウトする（またはスケールインする）機会ももたらす。しかし、ユーザーにこの柔軟性を提供することは、それらの分散したコンピューティングリソースの運用者（または所有者）にいくつかの課題をもたらす。需要を満たすために、分散したネットワークリソースの運用者は、好ましくは、ピーク需要時にリソース要求を満たすのに十分な利用可能なリソースを有する。
【０００８】
[0016]ピーク需要時に十分なリソースを有するクラウドコンピューティング環境は、少なくとも、非ピーク需要期間中、および、場合により、常時、余分な仮想マシンを利用可能にしている可能性が高い。それらの余分な仮想マシンは、ユーザー要求に基づいてジョブのスケールアウトを可能にする予備の仮想マシン、リソース障害を補償する予備の仮想マシン、または単に、ピーク需要中に使用されるが、非ピーク時には専用リソースとしては必要とされない仮想マシンであり得る。これらのリソースがアイドルであることを許すのではなく、ユーザーが、余分な仮想マシンへの一時的アクセスに入札することを可能にする競売機構が使用されることが可能である。このことは、クラウドコンピューティング運用者が、ピーク需要要件および／またはシステム冗長性要件を満たすのに必要とされるリソースの価値を最大化することを可能にしながら、マシンへのアクセスを顧客により低い費用で提供する。
【０００９】
[0017]（定義）「アカウント」は、クラウドコンピューティング環境内でグローバル一意識別されたエンティティーである。或る実施形態において、後段で説明されるリソースおよびタスクのすべてが、アカウントの範囲内に含まれる。通常、ユーザーは、クラウドコンピューティングシステムのリソースを使用する前にまず、アカウントを作成する。アカウントを作成した後、ユーザーは、そのアカウントを使用して、作業アイテムをシステムにサブミットし、それらの作業アイテムに基づいて、ジョブを実行するためのリソースを管理することができる。
【００１０】
[0018]「作業アイテム」は、クラウドコンピューティング環境において実行されるべきジョブの静的表現である。作業アイテムは、ジョブバイナリー、処理されるべきデータに対するポインター、および、オプションとして、ジョブを実行するためにタスクを起動するコマンドラインを含む、ジョブの様々な態様を指定することができる。さらに、作業アイテムは、再出現スケジュール、優先度、および制約を指定することが可能である。例えば、作業アイテムは、毎日、午後５時に起動されるように指定することができる。
【００１１】
[0019]「ジョブ」は、作業アイテムの実行されているインスタンスである。ジョブは、分散型の計算を実行するように協働するタスクのコレクションを含む。それらのタスクは、クラウドコンピューティング環境において１つまたは複数の仮想マシン上で実行され得る。
【００１２】
[0020]「タスク」は、ジョブの基本的な実行単位である。各タスクは、仮想マシン上で実行される。ユーザーは、各タスクに関して、コマンドラインに対するさらなる入力、および入力データに対するポインターを指定することができる。タスクは、そのタスクが実行されている最中に、そのタスクを実行している仮想マシン上で、そのタスクの作業ディレクトリの下にファイルの階層を作成することが可能である。
【００１３】
[0021]「ジョブマネージャータスク」（ＪＭタスク）は、ジョブにおける特殊なタスクである。ジョブマネージャータスクは、オプションであり、したがって、一部のジョブは、ＪＭタスクを使用することなしに実行され得る。ジョブマネージャータスクは、ジョブ内のタスクのすべてに関する単一の制御ポイントをもたらし、そのジョブに関する「マスター」タスクとして使用され得る。ジョブがＪＭタスクを有する場合、システムは、そのＪＭタスクを、そのジョブにおける最初のタスクとして起動する。次に、そのＪＭタスクが、さらなるタスクをそのジョブにサブミットすることができ、さらにこれらのタスクの進行を監視するとともに、タスクの次のバッチをいつサブミットすべきかを制御することができる。このようにして、ＪＭタスクは、ジョブにおけるすべてのタスクのスケジューリングを調整すること、およびタスクの間の依存関係を管理することができる。好ましくは、ジョブマネージャータスクに関してノードまたは仮想マシンに障害が生じた場合、そのＪＭタスクは、そのＪＭタスクが、対応するジョブに関して常に実行されているように、別の仮想マシン上で自動的に再スタートされる。さらに、ユーザーは、ＪＭタスクが完了すると、システムが、対応するジョブにおけるすべてのタスクを終了させることができることをシステムに指定することができる。
【００１４】
[0022]（仮想マシンプールおよびタスクテナント）仮想マシンとは、処理能力の論理単位を指す。仮想マシンは、物理的プロセッサーと１対１対応を有することが可能であり、または仮想マシンは、複数のプロセッサーに対応することが可能であり、または仮想マシンは、１つまたは複数のプロセッサー上の処理時間のパーセンテージを表すことが可能である。プールに割り当てられた仮想マシンは、任意の所与の時点でそのプールに関する１つまたは複数のタスクを実行することができる。
【００１５】
[0023]様々な実施形態において、作業アイテムに基づいてジョブを潜在的に実行することが可能な仮想マシンは、使用に先立って作業アイテムに関するアカウントに関連付けられる。「プール」は、仮想マシンの論理グループ化である。作業アイテムは、その作業アイテムに対応するジョブを実行すべき関連する少なくとも１つのプールを常に有する。各アカウントが、そのアカウントに関連する作業アイテムを実行する際に使用するために、そのアカウントがアクセスを得る１つまたは複数のプールを作成することが可能である。通常、アカウントは、そのアカウントに関連するプールに対する排他的アクセスを有する。プールは、作業アイテムがユーザーによってサブミットされた際に作成されることが可能であり、または作業アイテムが、既存のプールに関連付けられることが可能である。プールは、ジョブを実行すべきシステムによって自動的に作成されてもよい。例えば、毎日、特定の時刻に実行される再出現する作業アイテムが、開始時刻にそのジョブを実行するようにプールを自動的に作成させることによって扱われ得る。このプールは、その再出現する作業アイテムを完了した後、毎日、削除され得る。オプションとして、プールは、単一の作業アイテム、単一のジョブ、またはアカウントに対応する作業アイテムの別のサブセットで使用されるように関連付けられることが可能である。
【００１６】
[0024]作業アイテムがユーザーによってサブミットされると、その作業アイテムは、仮想マシンの１つまたは複数のプールに関連付けられることが可能である。仮想マシンは、任意の好都合な様態でプール内で編成され得る。例えば、すべての仮想マシンが、仮想マシンに関する基礎をなすプロセッサーの地理的ロケーションにかかわらず、単一のプールの中に編成され得る。別のオプションは、プールに関するすべての仮想マシンが所与の地理的ロケーションにあるように、地理的ロケーションに基づいて仮想マシンを編成することである。さらに別のオプションは、他の変数（例えば、ストレージリソース、ネットワーク待ち時間、ユーザーロケーション／選好、セキュリティ要件）に対する近さなどの、地理的ロケーション以外に基づいて仮想マシンを編成することである。さらに別のオプションは、作業アイテムまたはジョブが作成される際に、プールを自動的に作成し、その後、その作業アイテム、またはそのジョブが終えられると、そのプールを自動的に解体することである。
【００１７】
[0025]仮想マシンプールは、仮想マシンを編成するための一方法である。仮想マシンに関する別の編成単位が、仮想マシンクラスターである。仮想マシンクラスターは、タスクテナントプロセスなどの、クラウド環境におけるプロセスによって一緒に管理される仮想マシンのグループである。仮想マシンクラスターの中の仮想マシンは、好都合な様態で一緒にグループ化された物理的マシンに対応することが可能である。例えば、仮想マシンクラスターは、米国内もしくは米国の北東部分内などの同一の地理的区域内に、シアトル郡もしくはサンディエゴ郡のような都市内もしくは大都市圏内などの同一の一般的なロケーション内に、またはコンピューティングセンターもしくはデータセンターを形成する接続された、もしくは近くの１つまたは複数の建造物内などの同一の特定のロケーション内に位置する物理的マシンのグループに対応することが可能である。別のオプションは、クラウド環境におけるストレージの指定された部分に対して有利なデータ転送速度を有する物理的マシンのグループに基づく仮想マシンを形成することである。さらに別のオプションは、所与のロケーションにおける物理的マシンに基づいて、複数の仮想マシンクラスターを形成することである。仮想マシンプールは、複数の仮想マシンクラスターにわたることが可能である。タスクテナントなどの、仮想マシンクラスターを管理するためのプロセスは、仮想マシンプールからの仮想マシンを割り当てること、および割り当て解除することができる。また、タスクテナント（または仮想マシンクラスターを管理するための他のプロセス）は、クラスター内の仮想マシン上にタスクをスケジュールすることを、その仮想マシンが割り当てられたプールに対応するジョブのキューに基づいて行うこともできる。タスクテナントが、仮想マシンプールに十分な数を割り当てるためにさらなるマシンを必要とする場合、タスクテナントは、一般的なクラウドコンピューティング環境からさらなる仮想マシンを獲得することができる。同様に、タスクテナントが、余分な仮想マシンを有する場合、タスクテナントは、それらの余分なマシンを一般的なクラウドコンピューティング環境に戻すことができる。
【００１８】
[0026]（専用マシン、スタンバイマシン、およびプリエンプション可能なマシン）仮想マシンがプールに割り当てられる際、その仮想マシンは、２つのタイプのうちのいずれかとして割り当てられることが可能である。その仮想マシンは、専用の仮想マシンとして、またはプリエンプション可能な仮想マシンとしてプールに割り当てられることが可能である。専用の仮想マシンまたはプリエンプション可能な仮想マシンとしての仮想マシンのステータスは、その仮想マシンがプールの中に入っている間に変わり得る。
【００１９】
[0027]「専用の」仮想マシンは、プールに、そのプールに割り当てられた作業アイテムまたはジョブによって専用で使用されるように割り当てられるマシンである。オプションとして、専用の仮想マシンは、そのプールにサブミットされた任意のジョブに全般的に利用可能であるのではなく、関連する１つまたは複数の作業アイテムのために専用で使用されるように割り当てられてもよい。仮想マシンは、専用のステータスを有するが、このマシンは、そのプールに関連付けられたアカウントによって使用されるように確保される。専用のマシンには、他のアカウントからのリソースは与えられず、他のアカウントのためにジョブを実行することはない。
【００２０】
[0028]「プリエンプション可能な」仮想マシンは、或るアカウントのために或るプールの中でタスクを現在、実行しているが、その仮想マシンがそのプールに利用可能でありつづけるという保証はない仮想マシンである。プリエンプション可能な仮想マシンが或るプールに利用可能にされると、そのプリエンプション可能なマシンは、そのプールに追加される。次に、そのプリエンプション可能なマシンにプロビジョニングが行われて、そのプリエンプション可能なマシンが、そのプールのためにジョブを実行するのに使用される。そのプリエンプション可能なマシンは、そのプールに（対応するアカウントのために）、リソース競売においてそのプリエンプション可能な仮想マシン上の処理時間を勝ち取らせることによってなど、任意の好都合な方法で提供されることが可能である。
【００２１】
[0029]専用の仮想マシン、およびプリエンプション可能な仮想マシンを割り当てる際のさらなる因子は、仮想マシンを求める要求が、特定の仮想マシンクラスターに対する親和性を含むかどうかである。仮想マシンクラスターに対する親和性は、様々な理由に基づくことが可能である。仮想マシンクラスターに対する親和性を求める要求の一例が、仮想マシン上で実行されるジョブのためにデータストレージに対する、より良好なアクセス（高いデータ転送速度などの）を有する仮想マシンを得ることが所望されること、または必要とされることによる。このタイプのストレージ親和性に関して、親和性要求は、データに対する所望されるアクセスを有する１つまたは複数の仮想マシンクラスターからの仮想マシンの割り当てを指定することができる。このことは、例えば、データストレージセンターに対して所望される物理的データ接続を有する物理的マシンに対応する仮想マシンのグループを表すことが可能である。別のタイプの親和性が、ジョブ親和性である。仮想マシンによって実行される一部のタイプのジョブには、同一のジョブ、または類似したジョブで作業している仮想マシンの間の相当な量の通信が関与する可能性がある。ジョブ親和性状況において、或るジョブで作業しているすべての仮想マシンが、それらの仮想マシンの間でメッセージが受け渡しされるのを円滑にするために、単一の仮想マシンクラスター（または他の仮想マシン編成単位）内に位置しているようにすることが有益であり得る。単一の仮想マシンクラスターから仮想マシンを選択することは、同一の地理的ロケーションにおける物理的マシンに対応する仮想マシンを選択することに対応し得る。
【００２２】
[0030]プリエンプション可能な仮想マシンとしてアカウントに使用されるように提供される仮想マシンは、通常、クラウドコンピューティング環境において別の目的を有する仮想マシンである。例えば、プリエンプション可能な仮想マシンの１つの源が、障害回復目的でクラウドコンピューティング環境所有者／運用者によって提供される仮想マシンである。安定した動作を提供するため、クラウドコンピューティング環境は、予備で保持される１つまたは複数のグループ仮想マシンを含み得る。これらの仮想マシンは、プロセッサー障害、ネットワーク障害、またはジョブを実行するのにもはや適していないクラウド環境の一部分をもたらす他の任意の種類の事象によって失われたリソースに取って代わるように利用可能である。或るプールに割り当てられた１つまたは複数の専用の仮想マシンが、或る事象のために失われると、それらの失われたマシンが、予備の仮想マシンを使用して置き換えられることが可能である。このことは、クラウドコンピューティング環境におけるリソースの利用可能性を向上させる。しかし、障害事象は稀であることが望ましいので、予備の障害回復マシンを有することは、多数の仮想マシンが、使用されるのを待ってアイドルに置かれていることを、しばしば、意味する。障害事象を扱うために指定されたこれらの仮想マシンのＣＰＵサイクルを無駄にするのではなく、これらの仮想マシンのＣＰＵサイクルが、作業アイテムまたはジョブを実行するプリエンプション可能な仮想マシンとしてプールに割り当てられることが可能である。障害が生じ、システムが、専用のリソースの要件を満たすようにプリエンプション可能なリソースを取り上げる必要がある場合、そのような仮想マシン上で実行されるプリエンプション可能なジョブは、そのプリエンプション可能な仮想マシンが、失われたリソース、または障害が生じたリソースに取って代わる本来の目的のために使用され得るように、実行可能な限り早く（場合により、即時に）停止される。
【００２３】
[0031]プリエンプション可能なマシンの別の源が、余分な容量の仮想マシンである。通常、いずれのネットワークのピーク負荷も、平均負荷とは異なる。その結果、ピーク負荷状況を扱うのに十分なリソースを有するコンピューティング環境には、しばしば、他の時間中に余分なリソースが利用可能である。これらの余分なリソースは、リソースクッションをもたらす。ユーザーが、さらなる専用の仮想マシンを求める要求を行った際、これらの余分な仮想マシンが、ユーザーの要求を満たすように使用され得る。クラウドコンピューティング環境が、専用のマシンのためのピーク負荷未満の負荷を有する場合、１つまたは複数の仮想マシンは、空いている。予備の容量をもたらすために指定されたこれらの仮想マシンのＣＰＵサイクルを無駄にするのではなく、これらの仮想マシンのＣＰＵサイクルが、プリエンプション可能にユーザーおよびプールに割り当てられることが可能である。専用の仮想マシンを求める要求の負荷が増加するにつれ、これらの余分な仮想マシン上で実行されているプリエンプション可能なジョブが、実行可能な限り早く（場合により、即時に）停止される。このことは、これらのプリエンプション可能な仮想マシンが、必要とされる場合にさらなる専用のリソースをもたらすという、これらの仮想マシンの本来の目的で使用されることを可能にする。さらに、または代替として、専用のマシンに関する負荷の一部の増加は、専用のマシンを求めるスケジュールされた要求に起因する。或る仮想マシンが、スケジュールされた時刻における専用のマシンとしての使用のために利用できなくなる場合、その仮想マシンに割り当てられたプリエンプション可能なジョブが、そのスケジュールされた時刻より前に停止されて、そのプリエンプション可能なジョブから専用のリソースへの秩序正しい遷移をもたらすことが可能である。
【００２４】
[0032]一部の状況において、ユーザーが、何らかの将来の時点で多数の専用のマシンにアクセスを有することを所望する可能性がある。一部の状況において、ユーザーは、１つまたは複数の仮想マシンをスタンバイ仮想マシンとして確保することができる。仮想マシンのスタンバイ確保は、将来の何らかの時点で使用されるようにプールまたはアカウントに割り当てられるべき仮想マシンに関するプールまたはアカウントに関連する確保である。使用のために仮想マシンをプロビジョニングすることは、単に、クラウドコンピューティング環境内で十分な仮想マシンリソースが特定され、さらに／または確保されて、要求された際に専用の仮想マシンに変換されるように仮想マシンリソースが利用可能であるようにすることを意味し得る。オプションとして、スタンバイマシンをプロビジョニングすることは、データ、実行ファイル、またはデータと実行ファイルの組み合わせを仮想マシンにプロビジョニングすることを含むことも可能である。
【００２５】
[0033]スタンバイ仮想マシン確保は、仮想マシンの割り振りでも、割り当てでもない。そうではなく、スタンバイ仮想マシン確保は、アイドルな仮想マシン、またはプリエンプション可能な仮想マシンが、スタンバイ確保に関連付けられたユーザーまたはプールに割り当てられた専用の仮想マシンに変換される将来における権利を確保する。プリエンプション可能なジョブは、スタンバイ確保に関連付けられたプールもしくはアカウント、異なる別のプール、または異なる別のアカウントに関連付けられたジョブであり得る。スタンバイ確保がプールまたはアカウントによって行われる際、仮想マシンクラスターからの仮想マシンが、そのプール、またはそのアカウントに割り当てられることはない。そうではなく、その仮想マシンクラスターに対応するスタンバイ確保の数のカウントが記録されて、十分な数のアイドルな仮想マシンまたはプリエンプション可能な仮想マシンが、その仮想マシンクラスターに対応するスタンバイ確保を満たすように利用可能であるようにされる。
【００２６】
[0034]仮想マシンスタンバイ確保は、様々な理由でプールに関連付けられることが可能である。スタンバイマシン確保の１つの用途は、特定の時間枠中にだけ生じる高い優先度の計算ジョブを有するユーザーのためである。例えば、金融会社が、証券取引所または商品取引所などの１つまたは複数の金融市場の日々の活動の分析を実行することを所望することが可能である。金融市場は、午前９時３０分に開き、午後４時００分に閉じるなどの、規定されたスケジュールで開閉する。金融企業は、金融市場が開いている時間帯からのデータを、分析またはシミュレーションを実行する際に使用するために集約することを所望する。分析の目標は、翌日に市場が開く前に従業員に情報を提供することである。そのような分析は、多数の仮想マシンを要求する可能性があるが、それらの仮想マシンは、例えば、午後６時００分から翌朝の午前３時３０分までの時間帯の間にしか必要とされない。この時間中、その金融会社は、仮想マシンの利用可能性の保証を所望する。１日のうちの残りの時間中は、その金融会社は、それらのマシンを必要としない。仮想マシン確保をその金融会社のアカウントに関連付けることにより、この目標が実現され得る。確保価格を支払うことと引き換えに、その金融会社は、所望される時間中にそれらのマシンの利用可能性を保証される。所望される時間枠外では、それらの仮想マシンは、その金融企業および／または他のユーザーのためのプリエンプション可能なマシンとして使用され得る。
【００２７】
[0035]スタンバイ確保は、アイドルな仮想マシン、またはプリエンプション可能な仮想マシンを、時間ベースの基準、または負荷ベースの基準に基づいて、ユーザーに対応するプールに割り当てられた専用のマシンに変換するのに使用され得る。一部の状況において、スタンバイ確保は、少なくとも部分的に、所定の時刻、および／または所定の日付に基づく、アイドルな仮想マシン、またはプリエンプション可能な仮想マシンの専用の仮想マシンへの変換を生じさせることが可能である。そのような状況において、スタンバイ確保に基づいて専用の仮想マシンに変換されているプリエンプション可能な仮想マシンは、スケジュールされた利用可能性事象より前に、秩序正しい様態で停止されることが可能である。このことは、時間ベースの基準を有するスタンバイ確保として定義される。時間ベースの基準は、負荷ベースの閾値を定義するのに使用される負荷ベースの基準と対比される。負荷ベースの閾値は、１つまたは複数のクラウドリソースの使用および／または実行に基づく閾値に当たる。好ましくは、負荷ベースの閾値は、時間ベースの基準の使用を除外する。時間ベースの基準、および負荷ベースの基準に加えて、スタンバイ確保に対応する１つまたは複数の仮想マシンを専用の仮想マシンに変換するためのさらに別のオプションは、ユーザーまたはシステム管理者からの要求に基づく。
【００２８】
[0036]スタンバイ確保の別の用途が、ジョブをスケールアウトする際に向上したパフォーマンスを可能にすることである。例えば、小売店が、小売業者のウェブサイトを調べるため、および発注するためのオンライントラフィックなどの、休日を控えたショッピングシーズン中のさらなるオンライントラフィックを扱うのにクラウドコンピューティングリソースを使用することが可能である。過去の経験に基づいて、その小売業者が、或るレベルのオンライン活動を予期し、対応する数の専用の仮想マシンを確保する。しかし、オンライン活動が予期されるより多い場合、その小売業者は、スタンバイ確保を介してさらなるマシンを確保することもする。次に、その小売業者は、予期されるよりも高いレベルの活動を示す１つまたは複数の閾値を設定することができる。これらの閾値が生じると、スタンバイ確保が、アイドルな仮想マシン、またはプリエンプション可能な仮想マシンを専用のマシンに変換して、その小売業者の顧客に遅い応答時間を経験させることなしに、その小売業者がその追加のオンライントラフィックを扱うことを可能にするのに使用され得る。この状況において、スタンバイ確保は、活動閾値がいつ満たされる分らない可能性があるので、予測不能な時刻に専用のマシンに変換される可能性がある。活動閾値が満たされると、アイドルな仮想マシン、またはプリエンプション可能な仮想マシンが、スタンバイ確保に関連付けられたプールに割り当てられた専用の仮想マシンに変換される。変換に先立ってその仮想マシン上でプリエンプション可能なタスクが実行されている場合、そのプリエンプション可能なタスクが、その仮想マシンを専用のマシンに変換するのに先立って停止される。オプションとして、活動閾値は、時間ベースの基準を含まない。
【００２９】
[0037]（スポット価格設定に基づいてプリエンプション可能なマシンを割り当てること）専用のマシンとしてプールに関連付けられていないクラウドコンピューティング環境内のいずれの仮想マシンも、潜在的に、スポット価格設定を介して割り当てに利用可能である。このため、スポット価格設定を介して割り当てに利用可能な仮想マシンには、プリエンプション可能なジョブを現在、実行している仮想マシン、障害復旧の際に使用するための仮想マシン、および他の任意の余分な、もしくはアイドルな仮想マシンが含まれ得る。プリエンプション可能な仮想マシンとして割り当てに利用可能な余分な、もしくはアイドルな仮想マシンには、仮想マシンクラスターに関するスタンバイ確保カウントを満たすのに必要とされるアイドルな仮想マシンが含まれ得る。
【００３０】
[0038]スポット価格設定を介して仮想マシンを獲得するために、アカウントに関連付けられたプールに関する指定は、所望されるプリエンプション可能な仮想マシンの数の指定を含み得る。この指定は、通常、そのアカウントのユーザーが、１つまたは複数のプリエンプション可能な仮想マシンを獲得するために支払う用意のある指値または価格をさらに含む。プールに関する、この指定は、指値の数に関して制限されない。例えば、プール指定は、２つのプリエンプション可能な仮想マシンを獲得するのに第１の（高い方の）指値が与えられ、さらなる３つのプリエンプション可能な仮想マシンを獲得するのに第２の（中程度の）指値が与えられ、さらに最後の２つのプリエンプション可能な仮想マシンを獲得するのに第３の（低い方の）指値が与えられる、スライド制の指値を含むことも可能である。スポット価格に依存して、そのような指値パターンは、ユーザーに０の、２つの、５つの、または７つのプリエンプション可能な仮想マシンが割り当てられることにつながり得る。
【００３１】
[0039]スポット価格設定を介したプリエンプション可能なマシンの割り当ては、各割り当てが、或る割り当て期間に関するプリエンプション可能なマシンの割り当てをもたらして、周期的に行われ得る。好ましくは、割り当て期間は、１つの割り当て期間の終わりが、次の割り当て期間の始まりに当たるように、連続的であることが可能である。通常、スポット価格は、各割り当て期間の始めに、または始め近くで再計算される。スポット価格は、割り当て期間中、変わらないままである。
【００３２】
[0040]プールは、任意の時点でプリエンプション可能な仮想マシンに対する指値をサブミットすることができる。しかし、スポット価格を超えた指値が、その指値に基づいて、プリエンプション可能なマシンの割り当てを即時にもたらすという保証は、存在しない。プールが、スポット価格を超える指値をサブミットしており、十分な仮想マシンが利用可能である場合、要求されたプリエンプション可能な仮想マシンは、次の割り当て期間の始めまでには割り当てられる。プリエンプション可能な仮想マシンに対する指値が、割り当て期間中にサブミットされた場合、マシンが即時に割り当てられることが可能であるが、そうであるのは、余分な仮想マシンが利用可能である場合に限られる。詳細には、より低い指値を有するプールが、プリエンプション可能な仮想マシンを既に割り当てられている可能性がある。別のプールからのより高い指値は、割り当て期間の始めに、より低い指値に取って代わることが可能であるが、このことは、中間の時刻には可能でない。プリエンプション可能な仮想マシンを割り当てられているアカウントは、専用のマシンへの変換、または障害回復マシンとしての使用など、仮想マシンがプリエンプション可能でない目的で要求されることによってしか、割り当て期間の中間部分中に仮想マシンを失うことがない。
【００３３】
[0041]割り当て期間の長さは、任意の好都合な値に設定され得る。例えば、割り当て期間は、少なくとも約１５分、または少なくとも約３０分、または別の好都合な間隔であることが可能である。オプションとして、割り当て期間は、所望される場合、１日の間に変化することが可能であり、またはその期間は、平日と週末で変わることが可能であり、またはその期間の他の任意の変化が導入されることが可能である。好ましくは、割り当て期間は、３０分ごとなどの、所定の時間で開始することが可能である。
【００３４】
[0042]プリエンプション可能な仮想マシンのスポット価格を決定するための１つのオプションが、グローバルスポット価格を決定することである。グローバルスポット価格を決定するのに、クラウドコンピューティング環境内のすべてのマシンプールからの指値が集計される。次に、スポット価格が、割り当て期間の始めに利用可能な仮想マシンの総数と比較される。次に、スポット価格が、少なくとも、そのスポット価格より高いすべての指値にプリエンプション可能なマシンを割り当てるのに必要なグローバル価格として設定されることが可能である。多数の指値が、マシンを割り当てることに関してブレークポイントにあり、したがって、スポット価格における指値が、部分的にしか満足させられない場合、市場清算価格における指値が、任意の好都合な様態で扱われることが可能である。例えば、スポット価格が、２番目に高い指値に設定されて、そのスポット価格における、またはそのスポット価格より高いすべての指値が、要求される数のプリエンプション可能なマシンに対する権利を得るようにすることが可能である。代替として、スポット価格は、市場清算価格と等しく設定されて、市場清算価格における指値が、要求されるマシンの一部だけを受け取ることも可能である。
【００３５】
[0043]スポット価格は、グローバルに設定されるものの、プリエンプション可能な仮想マシンの割り当ては、タスクテナントレベルおよび／またはグループの仮想マシンプールレベルなど、ローカルで扱われる。例えば、グローバルに決定されたスポット価格が、タスクテナントに配信され得る。次に、タスクテナントが、各タスクテナント内の利用可能な仮想マシンを、そのタスクテナントによるサービスを受けるマシンプールに割り当てることが可能である。これらの割り当ては、タスクテナント内のプールからの最高の指値を満足させることから始まり、次に、２番目に高い指値を満足させるといった具合であることが可能である。このプロセスが、スポット価格を超える指値がなくなるまで、またはプリエンプション可能な仮想マシンとして割り当てるためにタスクテナント内で利用可能な仮想マシンがなくなるまで、続けられることが可能である。
【００３６】
[0044]一部の状況において、利用可能な、プリエンプション可能な仮想マシンリソースの数が、グローバル価格が計算された時点と、プリエンプション可能な仮想マシンの割り当てが行われる時点の間で変化する可能性がある。このことが生じた場合、仮想マシンクラスター（タスクテナントによって管理されるマシンなどの）が、スポット価格を超えるすべての指値にプリエンプション可能な仮想マシンを割り当てるのに十分な仮想マシンを有さない可能性がある。この状況において、タスクテナントは、オプションとして、さらなる仮想マシンを追加しようと試みることができる。クラウドコンピューティング環境内で、別のタスクテナントに関連付けられていない余分な仮想マシンが利用可能である場合、それらの余分な仮想マシンが、追加されて、スポット価格を超える指値を有する、プリエンプション可能な仮想マシンを求めるさらなる要求を満たすのに使用されることが可能である。しかし、所与の仮想マシンクラスターに組み込むのに適したさらなる仮想マシンは、ストレージ領域に対する同様のアクセスを有し、さらに／または同一の地理的ロケーションにあるさらなる仮想マシンがないことなどにより、利用できない可能性がある。
【００３７】
[0045]タスクテナントが、スポット価格より高いすべての指値を満足させるのに必要なよりも多くのプリエンプション可能な仮想マシンを有することも可能である。この場合も、プリエンプション可能な仮想マシンは、指値の順序で仮想マシンプールに割り当てられる。スポット価格より高いすべての指値を満足させた後、タスクテナントには、依然として、さらなるプリエンプション可能な仮想マシンが残っていることが可能である。このことは、そのタスクテナントが、他のタスクテナントに再割り当てされるように、いくつかの仮想マシンを一般的なクラウドコンピューティング環境に戻すべきことの表れであり得る。さらなるプリエンプション可能な仮想マシンが利用可能であっても、スポット価格を下回る指値はプリエンプション可能な仮想マシンを受け入れない。
【００３８】
[0046]プリエンプション可能な仮想マシンが仮想マシンプールに割り当てられた後、そのプリエンプション可能な仮想マシンは、次の競売まで、またはその仮想マシンが、現在の使用にプリエンプションを行う別の目的で必要とされるまで、割り当てられたままである。一時的使用にプリエンプションを行う使用の例には、その仮想マシンを専用のマシンに変換する必要性、または障害回復のためにその仮想マシンを使用する必要性が含まれる。プリエンプション可能な仮想マシンにプリエンプションが行われると、タスクテナントが、指値の低い方から指値の高い方への順序で適切な仮想マシンにプリエンプションを行うことが可能である。プリエンプションのためにプリエンプション可能な仮想マシンを特定する際に考慮され得る別の因子が、そのプリエンプション可能な仮想マシン上でジョブが実行されてきた時間の長さである。開始したばかりのジョブの方が、複数の割り当て期間にわたって実行されてきたジョブと比べて、プリエンプションのためのより良好な選択である。このタイプの因子は、例えば、同一の指値の値に基づいて割り当てられているプリエンプション可能なジョブに関するさらなる考慮事項として使用され得る。様々な実施形態において、或るアカウントに割り当てられた仮想マシンに、割り当て期間中にプリエンプションが行われた場合、そのアカウントには、その割り当て期間の代金を請求されない。しかし、そのプリエンプション可能な仮想マシンが、割り当て期間中に自発的に解放された場合、そのアカウントには、使用された期間の部分の代金が請求される。
【００３９】
[0047]（分散ネットワーク環境におけるコンピューティングリソースの編成の例）クラウドコンピューティング環境のユーザーは、通常、クラウドコンピューティングリソースを使用してジョブを実行することを所望する。それらのジョブには、通常、クラウドコンピューティング環境を介してアクセス可能なロケーションに格納されたデータに対してジョブを実行することがかかわる。運用者がクラウドコンピューティング環境を提供する一方法が、その環境をいくつかの層として提供することである。図１は、クラウドコンピューティング環境内でタスクを実行することに適したシステムの例を概略で示す。図１のシステムは、タスクランタイム層１１０と、第三者タスクランタイム層１２０と、リソース管理層１３０と、スケジューリング−実行層１４０とを含む。
【００４０】
[0048]図１に示される実施形態において、タスクランタイム層１１０は、ユーザー１０５からのタスクのための実行環境およびセキュリティコンテキストをセットアップすることを担う。また、タスクランタイム層１１０は、タスクを起動すること、およびタスクのステータスを監視することも可能である。タスクランタイム層１１０は、各仮想マシン上で実行されているシステムエージェントの形態をとることが可能である。また、タスクランタイム層は、ユーザーのタスク実行ファイルの中にリンクされ得るランタイムライブラリーを含むことも可能である。タスクランタイム層１１０の一部としてランタイムライブラリーを有することにより、システムエージェントによって実行されるタスクに、潜在的に、より豊かな能力がもたらされ得る。ランタイムライブラリーの例には、タスクの間の迅速な通信を可能にする１つまたは複数の効率的な通信ライブラリー、他の仮想マシンおよび／または他のタスクからファイルを読み取る効率的な遠隔ファイルアクセスライブラリーサポート、タスクがチェックポイント設定すること（例えば、バイナリーラージオブジェクトの中に）、および再開することを可能にするチェックポイントライブラリー、ログ記録ライブラリー、および仮想マシンのプール内で所与のタスクを実行する複数の仮想マシンにわたって使用されるべき分散ファイルシステムを提供するためのライブラリーが含まれる。
【００４１】
[0049]第三者タスクランタイム層１２０は、タスクランタイム層１１０の上にさらなるランタイムが構築されて、実行されることを可能にする。また、第三者タスクランタイム層１２０は、ジョブに関するタスクの実行を調整するためのさらなる能力をもたらすことも可能である。例には、仮想マシンのプール内で所与のタスクを実行する複数の仮想マシンにわたって使用されるべき分散ファイルシステムを提供するためのライブラリーに対するＭａｐＲｅｄｕｃｅランタイムが含まれ得る。このことは、ユーザーが、ユーザーのジョブまたはタスクに合わせて仕立てられた様態でクラウドコンピューティング環境を編成することを可能にする。一部の実施形態において、ジョブマネージャータスクが、ユーザーが第三者ランタイム層を使用して、クラウドコンピューティングリソースを実行すること、および／または制御することを可能にすることを円滑にすることができる。
【００４２】
[0050]リソース管理層１３０は、クラウドコンピューティング環境において利用可能なコンピューティングリソースを管理することを扱う。１つのオプションは、リソース管理層１３０に異なる３つのレベルでリソースを管理させることである。第１のレベルで、リソース管理層１３０が、ジョブ（すなわち、作業アイテムの実行）に関連付けられた仮想マシンの割り当ておよび割り当て解除、ならびにタスクに関連付けられた各仮想マシン上に格納されたファイルを管理する。第２のレベルで、ジョブに関連付けられた仮想マシンが、マシンのプールにグループ化され得る。プールは、１つまたは複数のジョブおよび／または作業アイテムに関連付けられた仮想マシンを包含することが可能である。実施形態に依存して、単一のプールは、データセンター内のすべての仮想マシンクラスター、地理的区域内の複数のデータセンターにわたる複数の仮想マシンクラスター、または複数の地理的区域におけるデータセンターにわたる複数の仮想マシンクラスターなどの、複数の仮想マシンクラスターにわたることが可能である。単一のプールが、数百万などの、多数の仮想マシンを包含することが可能である。仮想マシンは、最大で数十億までなど、多数のプールの中に包含されることが可能である。第３のレベルで、リソース管理層は、所与のグループのプールの中でジョブまたは作業アイテムに関連付けるのに利用可能な仮想マシンの量を管理する。このことは、システムの現在の負荷に基づいた、使用されるコンピューターリソースの量の動的な調整を可能にする。さらに、現在のグループのプールによって使用されていない仮想マシンが、他のグループのプールに組み込まれるように、解放されてクラウドコンピューティング環境に戻されることが可能である。
【００４３】
[0051]図１に示される実施形態において、スケジューリング−実行層１４０は、ユーザーによって実行されている作業アイテム、ジョブ、およびタスクを管理する。スケジューリング−実行層１４０は、スケジューリング決定を行い、ジョブおよびタスクを起動することを担うとともに、障害が生じると、再試行する。そのようなスケジューリング−実行層１４０は、様々なレベルでジョブおよび／またはタスクを管理するための構成要素を含み得る。
【００４４】
[0052]前述した層は、複数の地理的ロケーションにおけるプロセッサーを含むクラウドコンピューティング環境において実施され得る。図２は、異なるロケーションにおけるプロセッサーがどのように単一のクラウドコンピューティングアーキテクチャ内部で統合され得るかの例を概略で示す。
【００４５】
[0053]図２で、１つまたは複数のタスクテナント２１５が、仮想マシンのプールを管理するのに使用されることが可能である。タスクテナント２１５は、セットの仮想マシンを保持することが可能である。１名または複数名のユーザーのジョブが、仮想マシンの１つまたは複数のプールの一部としてのタスクテナント２１５内の仮想マシン上で実行されることが可能である。１つまたは複数のタスクテナント２１５が、所与の地理的区域内で使用され得る。タスクテナント２１５の責務には、セットの仮想マシンを保持すること、タスクテナント内のリソース利用に基づいて、タスクテナントを動的に成長させること、または縮小することが含まれ得る。このことは、タスクテナント２１５が、増大した顧客需要に対応するようにタスクテナント内の仮想マシンの数を増やすことを可能にする。また、このことは、タスクテナント２１５が、使用されていない仮想マシンを解放することを可能にして、それらの仮想マシンが、他の顧客のためのサービスを扱うデータセンター内のホストされる他のサービスに割り当てられ得るようにもする。タスクテナント２１５の別の責務は、プール割り当て／割り当て解除／管理ロジックの一部を実施することであり得る。このことは、タスクテナント２１５が、顧客のためのタスクに関連付けられたプールに仮想マシンがどのように割り当てられるかを決定することに参加することを可能にする。また、タスクテナント２１５は、タスクテナント内の仮想マシン上のタスクのスケジューリングおよび実行を担うことも可能である。
【００４６】
[0054]図２に示される実施形態において、複数のタスクテナント２１５を制御する１つまたは複数のタスクロケーションサービス２２５が提供される。その複数のタスクテナントは、所与の地理的区域内のすべてのタスクテナント、世界中からの様々なタスクテナント、またはタスクテナントの他の任意の好都合なグループ化に対応することが可能である。図２で、「米国北部」および「米国南部」というラベルが付けられた地域にサービスを提供するタスクロケーションサービス２２５が示される。タスクロケーションサービス２２５の責務は、その所与の地理的区域に関するタスクアカウントの管理を含み得る。また、タスクロケーションサービス２２５は、ユーザーがクラウドコンピューティング環境と対話することを可能にするためのアプリケーションプログラミングインターフェース（ＡＰＩ）も含み得る。そのようなＡＰＩは、仮想マシンのプール、プール管理ロジック、および所与の地理的区域内のタスクテナントにわたるプール管理ロジックの調整に関連するＡＰＩを扱うことを含み得る。また、それらのＡＰＩには、ユーザーによってサブミットされたタスクを扱うため、ならびにユーザータスクに関連する作業アイテムまたはジョブを保持するため、スケジュールするため、および終了させるためのＡＰＩがさらに含まれ得る。それらのＡＰＩには、地理的区域内のすべての作業アイテム、ジョブ、タスク、およびプールに関する統計収集、集計、および報告のためのＡＰＩがさらに含まれ得る。さらに、それらのＡＰＩには、利用可能な仮想マシンを、仮想マシンのスポット市場に基づいて短期でユーザーにプリエンプション可能な仮想マシンとして競売することを可能にするためのＡＰＩが含まれ得る。また、それらのＡＰＩには、使用量を測定するため、および料金請求サポートをもたらすためのＡＰＩがさらに含まれ得る。
【００４７】
[0055]タスクロケーションサービス２２５は、グローバルロケーションサービス２３５によって一緒に結び付けられることが可能である。グローバルロケーションサービス２３５は、タスクロケーションサービス２２５と連携してタスクアカウントを管理することを含め、アカウント作成、およびアカウントの管理を担うことが可能である。このことには、障害回復を担うこと、ならびに大規模なデータセンター障害が生じた場合に、作業アイテムおよびジョブの利用可能性を担うことが含まれる。このことには、何らかの理由でデータセンターが利用できないことにより、異なるロケーションにおいて作業アイテムまたはジョブを実行することが含まれ得る。また、このことには、顧客が、顧客の作業アイテム、ジョブ、およびプールを１つのデータセンターから別のデータセンターに移すことを可能にすることがさらに含まれ得る。通常、１つだけの活性のグローバルロケーションサービス２３５が存在する。この活性のグローバルロケーションサービス２３５は、様々なタスクロケーションサービス２２５、ならびにデータストレージ（図示せず）を管理するためのサービス構成要素と通信状態にある。グローバルロケーションサービスは、グローバルアカウントネームスペース２３７を保持することが可能である。
【００４８】
[0056]図２におけるシステムの動作の例として、架空の顧客またはユーザー２１７が、グローバルロケーションサービス２３５によって提供されるインターフェースを介してタスクアカウントを作成することが可能である。この例において、架空の顧客は、サリーと呼ばれる。タスクアカウントを作成するユーザー要求が、オプションとして、そのアカウントが作成される必要がある地理的区域を指定してもよい。この例において、サリーが、米国北部地域に関連するアカウントを要求する。これに応答して、グローバルロケーションサービス２３５が、そのアカウントを作成するよう、要求された地理的区域（米国北部）に対応するタスクロケーションサービス２２５と連絡をとる。地域が要求されていない場合、タスクアカウントは、要求側のユーザーに関連するロケーションに基づくなどの、任意の好都合な方法で選択された地域内で作成されることが可能である。また、グローバルロケーションサービス２３５は、米国南部などの少なくとも別の地域と連絡をとって、そのアカウントの障害回復コピーが作成されるようにもする。オプションとして、サリーが、ＵＳ南部が障害回復のためのフェイルオーバ地域の役割をすることを要求することも可能であり、または米国南部が、任意の好都合な方法でシステムによって自動的に割り当てられることも可能である。タスクロケーションサービス２２５は、タスクロケーションサービス２２５の地理的区域内のすべてのアカウントに関するすべての情報を保持する。米国北部および米国南部に関してタスクロケーションサービス２２５においてアカウントを作成することに成功した後、グローバルロケーションサービス２３５は、米国北部に関するタスクロケーションサービス２２５の仮想ＩＰアドレスをポイントするようにサリーのアカウントに関するタスクサービスエンドポイントを登録する。例えば、「ｓａｌｌｙ．ｔａｓｋ．ｃｏｒｅ．ｗｉｎｄｏｗｓ．ｎｅｔ」のようなホスト名を、米国北部におけるタスクロケーションサービス２２５の仮想ＩＰアドレスにマップするドメインネームサービス（ＤＮＳ）レコードが、作成されることが可能である。このことにより、サリーに関するタスクアカウントの作成が完了する。データセンター障害が将来の時点で生じた場合、グローバルロケーションサービス２３５は、米国南部をポイントするようにＤＮＳレコードを更新することができる。
【００４９】
[0057]アカウントが作成された後、顧客、サリーは、そのアカウントにアクセスし、ホスト名「ｓａｌｌｙ．ｔａｓｋ．ｃｏｒｅ．ｗｉｎｄｏｗｓ．ｎｅｔ」に照らしてクラウドコンピューティング環境と対話するためのＡＰＩにアクセスする要求を送信することが可能である。例えば、サリーは、新たな作業アイテム、または新たなタスクを作成する要求を発行するようＡＰＩにアクセスすることが可能である。次に、ＤＮＳサーバーが、そのホスト名を解決することが可能であり、その要求が、正しいタスクロケーションサービステナント２２５にルーティングされる。この例において、要求は、米国北部に関するタスクロケーションサービステナント２２５にルーティングされ、タスクロケーションサービステナント２２５が、その要求を処理し、要求された作業アイテム、ジョブ、またはタスクを作成する。
【００５０】
[0058]図３は、タスクロケーションサービスに関する潜在的な構成である。図３に示される構成において、タスクロケーションサービスは、１つまたは複数のアカウントサーバー３２１を含み得る。これらのアカウントサーバーは、作成、削除、またはプロパティー更新を含む、所与の地理的区域におけるアカウントに関するアカウント管理を扱う。アカウントフロントエンド３２２が、アカウントサービスのためのフロントエンドノードの役割をする。アカウントフロントエンド３２２は、図に示されるとおり、アカウント仮想ＩＰアドレス３２４の背後にある。アカウントフロントエンド３２２は、アカウントを作成するＡＰＩ要求、またはアカウントを削除するＡＰＩ要求などの、グローバルロケーションサービスから来るアカウントＡＰＩ要求を処理する。
【００５１】
[0059]図３の構成は、１つまたは複数のプールサーバー３３１をさらに含む。プールサーバー３３１は、所与の地理的区域内の仮想マシンのプールに関するプール管理およびプールトランザクションを扱う。プールサーバー３３１は、プール作成、プール削除、およびプールプロパティー更新を扱う。プールサーバー３３１は、複数のタスクテナントにわたる高レベルの仮想マシン割り当てアルゴリズムをさらに管理する。仮想マシン割り当ては、所与のユーザーのためのストレージに対する仮想マシンの接続を考慮に入れることが可能である。プールサーバーは、仮想マシンの割り当てと関係する他のタスクをさらに実行することが可能である。
【００５２】
[0060]図３の構成は、１つまたは複数の作業アイテムスケジューラーまたはジョブスケジューラー（ＷＩＪ）３３６をさらに含む。ＷＩＪスケジューラー３３６は、作業アイテムまたはジョブの作成、削除、および更新を扱う。さらに、作業アイテムまたはジョブが開始する、または終了する際に、ユーザーがプールの自動的な作成および／または破壊を要求した場合、ＷＩＪスケジューラー３３６は、それらの作業アイテムまたはジョブに関連付けられたプールの作成および削除を開始することが可能である。ＷＩＪスケジューラー３３６は、スケーリングのために汎用のパーティション機構をさらに使用する。或る実施形態において、各タスクロケーションサービスにおいて複数のＷＩＪスケジューラー３３６が存在し、それらのＷＩＪスケジューラーのそれぞれが、或る範囲の作業アイテムを扱う。
【００５３】
[0061]プールサーバー３３１およびＷＩＪスケジューラー３３６は、タスクロケーションサービスフロントエンド３３８を介してユーザーから要求を受信する。タスクロケーションフロントエンド３３８は、ユーザーからの要求を処理するように対応する構成要素を呼び出すことも担う。タスクロケーションサービスフロントエンド３３８は、図に示されるとおり、アカウント仮想ＩＰアドレス３３４の背後にある。
【００５４】
[0062]図３の構成は、タスクロケーションサービスマスター３４２をさらに含む。或る実施形態において、タスクロケーションサービスマスター３４２は、２つの主要な責務を有する。第１に、タスクロケーションサービスマスター３２５は、タスクロケーションサービス２２５において対応するサーバーに関するパーティションロジックを実施するためのマスターシステムの役割をする。さらに、タスクロケーションサービスマスター３４２は、タスクロケーションサービスの地理的区域全体に関して、各スポット周期の始めにプリエンプション可能な仮想マシンに関する新たな市場価格を計算することを担うことが可能である。タスクロケーションサービスマスター３４２は、プールサーバーおよびタスクテナントから現在の指値、およびリソース利用可能性情報を収集することができ、それに相応して新たな市場価格を計算する。代替として、タスクロケーションサービスマスターは、指値およびリソース利用可能性情報をスポット価格市場サービスに送信することができる。また、タスクロケーションサービスマスター３４２は、地理的区域内のすべてのタスクテナントにわたるプリエンプション可能な仮想マシンについての高レベルの割り当て誘導をプールサーバーに対してさらに行う。
【００５５】
[0063]コンピューティング環境の活動および振る舞いを追跡するために、タスクロケーションサービスマスター３４２が、１つまたは複数の統計集計サーバー３５５と通信することが可能である。統計集計サーバーは、タスク、ジョブ、作業アイテム、およびプールに関する詳細な統計を収集すること、および集計することを担う。システムにおけるその他の構成要素は、タスクおよび仮想マシンに関する細かい統計を発する。統計集計サーバーは、タスクレベルの統計、または仮想マシンレベルの統計からのこれらの細かい統計を集計して、作業アイテム統計、アカウントレベルの統計および／またはプールレベルの統計にする。その統計が、ＡＰＩを介して使用されるように公開されることが可能である。さらに、統計集計サーバーは、料金請求の際に使用するために各アカウントに関する時間ごとの測定レコードを生成することを担うことが可能である。
【００５６】
[0064]図４は、タスクロケーションサービスおよび／またはタスクロケーションサービスマスターの一部として含められることが可能なさらなるモジュールを概略で示す。図４において、スポット価格設定モジュール４６０は、タスクロケーションサービスマスターの一部であり得るモジュールである。スポット価格設定モジュールは、各スポット周期の始めに市場価格を決定することを担うグローバルモジュールである。グローバルモジュールとして、スポット価格設定モジュール４６０は、通常、複数のプールサーバー４３１に情報を供給する。スポット価格設定モジュール４６０は、タスクロケーションサービスの一環である、プールサーバーに対するハートビートを維持して、スポット価格設定されたプリエンプション可能な仮想マシンに関する現在の市場価格に関して同期する。
【００５７】
[0065]メトリック収集モジュール４７２は、プールサーバーの一部であり得るモジュールである。メトリック収集モジュール４７２は、プールサーバーが所有する対応するプールに関する自動スケーリングのために使用されるメトリックを収集することを担う。これらのメトリックには、ＣＰＵのプールごとの統計、ネットワーク統計、キュー統計、およびその他すべてのメトリックが含まれる。このモジュールの出力は、自動スケーリングモジュール４７４に供給される。自動スケーリングモジュール４７４は、プールサーバーの一部であることも可能である。自動スケーリングモジュールは、各プールに関連付けられた自動スケーリング式に基づいて自動スケーリング決定を行うことを担う。自動スケーリングモジュールは、それらのメトリックを、ユーザーによって供給される式／規則と一緒に取り込み、各プールに関する自動スケーリングアクションを計算する。自動スケーリングアクションには、特定の量だけプールに関する専用の仮想マシンを増加させること、または減少させること、特定の量だけプールに関するスタンバイ仮想マシンを増加させること、または減少させること、および特定の量だけプールに関するスポット価格設定された、もしくはプリエンプション可能な仮想マシンの目標数を増加させること、または減少させること、ならびに入札価格を更新することが含まれ得る。自動スケーリングモジュール４７４の出力は、プール管理モジュール４８０に供給され、プール管理モジュール４８０が、これらの命令を実行し、さらにそれ以外で、所与のプールのサイズを変更するための機構を実装する。これらの命令は、プールサイズを更新することを求めるユーザー要求と同様に処理され得る。所与のスポット価格に関して、プール管理モジュール４８０は、現在の市場価格および未処理の指値に応じて、プールの中のプリエンプション可能な仮想マシンのプリエンプションおよび割り当てを制御する。
【００５８】
[0066]図５は、タスクテナントに関する構成要素、および対応する責務の例を含む、タスクテナントの実施形態の例示的な高レベルのアーキテクチャを示す。前述したとおり、タスクテナントは、仮想マシンのプールを管理することを支援することが可能である。図５に示される実施形態において、タスクテナントは、１つまたは複数のタスクテナントフロントエンド５２２を含む。タスクテナントフロントエンド５２２は、タスクロケーションサービスとタスクテナントの間で要求を受け渡しすることを含む、タスクテナントと、そのタスクテナントに対応するタスクロケーションサービスの間の通信のために内部で使用されるタスクテナント仮想ＩＰアドレス５２４の背後にある。
【００５９】
[0067]図５に示される実施形態において、タスクテナントは、タスクスケジューラー５３６をさらに含む。タスクスケジューラー５３６は、タスクテナント内でローカルタスクスケジューリング決定を行うことを担い得る。タスクスケジューラー５３６は、タスクスケジューラー５３６が制御する各仮想マシン上でいずれのタスクが実行されるべきかを決定する。例えば、ユーザーによってサブミットされた作業アイテムまたはジョブが、スケジュールされるべきタスクのリストを包含するキューのセットを有することが可能である。タスクスケジューラー５３６は、キューのそのセットからタスクを受け取り、そのジョブに関連付けられたプールの中の利用可能な１つまたは複数の仮想マシンを選択し、その仮想マシンと連絡をとって、これらのタスクをスケジュールする。タスクスケジューラー５３６は、ジョブに関連付けられた優先度値に基づいてスケジューリング決定を行うことも可能である。さらに、タスクスケジューラー５３６は、タスクテナント内部の仮想マシンを常に把握している。タスクスケジューラー５３６は、プールサーバーと協働して、プールに／から仮想マシンを割り当てる／割り当て解除する。さらに、タスクスケジューラー５３６は、それらの仮想マシンに対してハートビートを維持し、ハートビートを介してプールメンバシップについて仮想マシンと同期し、さらにそれらの仮想マシンの再スタート／イメージ再作成を制御する。タスクスケジューラー５３６のさらに別の機能は、タスクテナントのサイズを常に把握していることであり得る。タスクテナント内の仮想マシンの現在の利用に基づいて、タスクスケジューラーは、タスクテナントを成長させ、または縮小して、タスクテナントが、そのタスクテナントに関連付けられたタスクを実行するのに十分な数の仮想マシンを有するようにすることができる。同様に、タスクテナント内に余りにも多くの仮想マシンが置かれている場合、それらのマシンが、データセンター内のホストされる他のサービスによって使用されるように解放され得る。
【００６０】
[0068]また、図５は、タスクテナントに関連付けられた複数の仮想マシンも示す。図５に示される実施形態において、それらの仮想マシンのそれぞれは、タスク仮想マシンエージェント５５０（ＴＶＭ）を含む。或る実施形態において、タスク仮想マシンエージェント５５０は、仮想マシン上でタスクを起動すること、ならびにそれらのタスクに関するディレクトリ構造および許可をセットアップすることを担う。タスク仮想マシンエージェント５５０は、同一のプール内の仮想マシン間のトラフィックだけを許すように（そのプールが内部通信を必要とする場合）、仮想マシン上でオペレーティングシステムファイアウォールをさらに構成する。前述したとおり、タスクスケジューラー５３６が、タスク仮想マシンエージェント５５０を介して仮想マシンに対してハートビートを維持する。このことは、タスクスケジューラー５３６が、それらの仮想マシンの健康状態を監視すること、およびタスク仮想マシンエージェントに関するプールメンバシップ情報を同期することを可能にする。
【００６１】
[0069]（スポット価格設定フローの例）以下に、システム内でどのようにスポット価格設定がグローバルに実施され得るかの例を与える。この例において、以下の３つの構成要素またはモジュールが、グローバルスポット価格設定に寄与する。すなわち、タスクロケーションサービスマスター内のモジュール、もしくはタスクシステムの外部のスポット価格設定サービスなどのスポット価格設定モジュール、タスクロケーションサービスにおける各プールサーバーの一部であるプール管理モジュールなどのプール管理モジュール、および潜在的に各タスクテナントの一部分であるタスクスケジューラーなどのタスクスケジューラーである。これらの異なる構成要素は、様々な責務を有する。図６は、プリエンプション可能な仮想マシンリソースのグローバルスポット価格設定を実行するのに適したシステムの例を概略で示す。図６に示される例において、クラウドコンピューティング環境内のグローバルスポット価格を更新することは、少なくとも３つのプロセスを含む。
【００６２】
[0070]図６において、スポット価格設定モジュール６６０は、割り当て期間などの、各スポット周期の始めにグローバル市場価格を計算することを担うことが可能である。スポット価格設定モジュール６６０は、すべてのプールサーバー６３１にわたるスポットプリエンプション可能な仮想マシン割り当ての高レベルの内訳を与えることが可能であるが、スポット価格設定モジュールは、それぞれの個別の指値に関する詳細な割り当て決定には関与していない。市場価格が決定された後、スポット価格設定モジュール６６０は、価格履歴テーブル６７０およびプールサーバー６３１を更新することを担うことが可能である。図６に示される例において、価格履歴テーブル６７０は、グローバル価格履歴テーブルに対応する。価格履歴テーブル６７０は、各スポット周期に関する市場価格を常に把握していることが可能である。スポット価格設定モジュール６６０は、価格が決定されると、このテーブルを更新することが可能である。また、スポット価格設定モジュール６６０は、タスクロケーションサービスマスターとプールサーバーの間の規則的なハートビートを介してプールサーバー６３１に市場価格更新を送信することも可能である。スポット価格設定モジュール６６０は、各タスクテナントに関する異なるプールサーバーの間のスポットプリエンプション可能な仮想マシン割り当ての初期の高レベルの内訳をさらに含み得る。
【００６３】
[0071]好ましくは、スポット価格設定モジュール６６０は、価格履歴テーブル６７０を最初に更新することが可能である。次に、スポット価格設定モジュール６６０は、第２のステップでハートビートメッセージを介してプールサーバー６３１を更新することが可能である。次に、プールサーバーが、第３のプロセスで様々なタスクテナントを更新する。好ましくは、価格更新メッセージには、そのスポット周期に関する対応するタイムスタンプがタグ付けされ得る。スポット価格設定モジュール６６０は、グローバルモジュールであるので、スポット価格設定モジュールは、タイムスタンプが常に増加することを保証することができる。価格履歴テーブル６７０は、現在のスポット価格の真理を常に保持することが可能である。現在のスポット価格について確信のないプールサーバー６３１は、価格履歴テーブル６７０を介して現在のスポット価格にアクセスすることができる。
【００６４】
[0072]価格履歴テーブル６７０は、現在の価格の真理を保持する。新たなスポット価格が設定された際、スポット価格設定モジュール６６０は、価格履歴テーブル６７０が更新されるまで、その新たな価格について誰にも告げない。タスクロケーションサービスマスターは、各プールサーバーに対して規則的なハートビートを有する。様々なタイプの情報が、各ハートビートメッセージの中に含められることが可能である。ハートビートメッセージは、現在のスポット周期のタイムスタンプを含み得る。このタイムスタンプは、増加しており、いずれのスポット周期がより新しいかを判定するシーケンス番号として使用され得る。また、このハートビートメッセージは、現在のスポット周期に関する市場価格を含むことも可能である。さらに、このハートビートメッセージは、価格が再び更新される時点に対応する、次のスポット周期が開始するまでの時間を含み得る。プールサーバーは、プールサーバーがタスクロケーションサービスマスターから時間内に連絡を受けなかった場合、この情報を使用して、次の価格変更をいつ予期すべきかを判定することができる。
【００６５】
[0073]スポット価格設定モジュール（またはタスクロケーションサービスマスター）が何らかの理由で動かなくなった場合、システムの残りの部分は、それでも、基本的に現在のスポット価格設定を別の周期に拡張して、正しく機能することができる。価格テーブルは、更新されず、プールサーバーは、依然として、現在の市場価格を使用して、事実上、現在のスポット価格が拡張される。スポット価格周期は、好ましくは、固定のＮ分の境界を有する。例えば、３０分周期が使用される場合、周期は、１時００分〜１時３０分、１時３０分〜２時００分、２時００分〜２時３０分といった具合である。タスクロケーションサービスマスターが回復すると、タスクロケーションサービスマスターは、現在の周期に関する新たなスポット周期を、周期開始時刻からＸ分内である場合、開始することができる。Ｘ分を過ぎている場合、タスクロケーションサービスマスターは、価格を固定するのに、単に次の間隔まで待つ。しかし、この状況において、タスクロケーションサービスマスターは、それでも、スポット価格履歴テーブルに、スポット価格がそのままの新たなスポット周期を追加することができる。例えば、スポット価格は、新たなスポット価格が、現在のスポット周期の予期される開始から最初の５分などの決まった時間枠内に利用可能である場合、更新され得る。スポット価格設定モジュールおよび／またはタスクロケーションサービスマスターが遅れて、その時間枠を逃した場合、価格は、次のスポット周期までそのままに保たれることが可能である。
【００６６】
[0074]各プールサーバー６３１は、プール管理モジュール６８０を含み得る。プール管理モジュール６３２。この例において、プール管理モジュール６８０は、所与のプール内の確保要求および変換（スタンバイ仮想マシンと専用の仮想マシンの間の）要求、ならびにプリエンプション可能な仮想マシンを除去する明示的な要求を扱う。さらに、スポット価格設定を扱うのに、プール管理モジュールは、現在の市場価格を超えた未処理の指値を満足させること、およびもはや適格でない指値に基づくプリエンプション可能な仮想マシンを取り去ることを担うことも可能である。プール管理モジュール６８０は、現在の市場価格より高い（または現在の市場価格と等しい）未処理の、つまり、満足させられていない指値を有するプールのセットを追跡することを担うことが可能である。「未処理」とは、要求したすべてのプリエンプション可能な仮想マシンをまだ受け取っているわけではないプールを意味する。その場合、プール管理モジュールが、未処理の指値を、高い方から低い方の順に満足させる（すなわち、より高い指値を先に満足させる）ようにプリエンプション可能な仮想マシンを割り当てることが可能である。さらに、プール管理モジュールは、現在の市場価格を下回る指値を、現在、有するプールからのすべてのプリエンプション可能な仮想マシンにプリエンプションを行うことが可能である。プールサーバー６３１は、所与のタスクテナント６１５に関するスポット価格設定を介して、割り当てのためにプール内で利用可能な、プリエンプション可能な仮想マシンの目標数を設定することを担うことに留意されたい。プールサーバー６３１は、所与のプールに関してタスクテナント６１５内で割り当てられているプリエンプション可能な仮想マシンの正確な数を追跡することができない。プールサーバー６３１によって設定された目標を達するようにプリエンプション可能な仮想マシンを追加する／除去することは、タスクテナント６１５に任されている。
【００６７】
[0075]タスクスケジューラー６３６は、タスクテナント６１５内のモジュールである。この例において、タスクスケジューラー６３６は、スポット価格を能動的に追跡することはしない。タスクスケジューラー６３６は、所与のテナントにおける各プールに関する目標のプリエンプション可能な仮想マシンカウントを追跡する「ＴｅｎａｎｔＰｏｏｌＴａｂｌｅ」、または別の類似したデータ構造を保持することが可能である。タスクスケジューラー６３６が、スポット価格を超えている（または下回っている）指値に基づいて、プリエンプション可能な仮想マシンに関するプールトランザクションを受け取ると、タスクスケジューラーは、その所与のプールに関するターゲット仮想マシンカウントを記録するようにこのテーブルを更新し、そのトランザクションは、プールサーバー６３１の見地から完了する。タスクスケジューラーは、プールに関するプリエンプション可能な仮想マシンカウントを目標カウントに到達させることを担う。専用の仮想マシンへの変換の場合、タスクテナント６１５に関連付けられた十分な数のアイドルな仮想マシンが存在しない場合、タスクスケジューラー６３６は、より低い指値を有するプリエンプション可能な仮想マシンのうちのいくつかにプリエンプションを行うことが可能である。このことは、そのプリエンプションについてプールサーバー６３１に通知することなしに行われ得る。
【００６８】
[0076]割り当ておよびプリエンプションは、新たなスポット周期の始め、およびスポット周期中に行われることが可能である。スポット周期の始めに、タスクロケーションサービスマスターが、各プールサーバーに、各タスクテナントにわたるプールサーバーの間のプリエンプション可能な仮想マシン割り当ての高レベルの内訳を送信する。プールサーバーは、この情報を使用して、割り当て決定およびプリエンプション決定を誘導することができる。プールサーバーは、すべての未処理の指値、およびそれらの指値のサブミット時刻を追跡する。スポット周期の開始より前に、または、場合により、スポット周期の開始とは異なるカットオフ時刻より前にサブミットされたすべての指値に関して、プールサーバーは、より高い指値が、より低い指値より前に満足させられることを確実にすることができる。その結果、前の周期からのより低い指値に基づいて割り当てられたいくつかのプリエンプション可能な仮想マシンにプリエンプションが行われ得る。また、プールサーバーは、タスクロケーションサービスによって供給されたグローバル情報を使用して、不必要なプリエンプションを調整し、最小限に抑えることもできる。
【００６９】
[0077]タスクロケーションサービスマスターが市場価格を計算する際、タスクロケーションサービスマスターは、異なるプールおよび異なるタスクテナントにわたるプリエンプション可能な仮想マシン割り当ての高レベルの内訳も計算する。この情報は、すべてのプールサーバーに、それらのプールサーバーの割り当て決定を支援するように送られる。この情報は、タスクテナント内の各プールパーティション範囲に関する各入札価格および各制約に関する詳細な、プリエンプション可能な仮想マシン割り当てを含み得る。例えば、同一の入札価格、および同一の制約（例えば、インター通信制約もしくはストレージ親和性制約により、それらの指値がいずれのテナントを使用する必要があるか）を有するすべての指値が、タスクロケーションサーバーマスターの見地から一緒にグループ化される。タスクロケーションサービスマスターは、各プールパーティション範囲に関してそのグループに詳細な割り当てをもたらす。
【００７０】
[0078]プールサーバーは、タスクロケーションサービスマスターによって供給された割り当て情報に基づいて、フレッシュな割り当てを計算することができる（潜在的なプリエンプション可能な仮想マシンのすべてがアイドルであるかのように）。また、プールサーバーは、各プールに関する各タスクテナントにおける新たな目標のプリエンプション可能な仮想マシンカウントを決定することもできる。次に、その新たな割り当てが、現在の割り当てと比較されて、更新される必要があるプールのセットが計算されることが可能である。次に、プールサーバーは、更新を要求するプールに関する関連するタスクテナントと連絡をとって、プリエンプション可能なマシンの数に関する新たな目標値を設定する。
【００７１】
[0079]プールサーバーが、プリエンプション可能な仮想マシンを割り当てる際、プールサーバーは、より低い指値に割り当てを行うことを試みる前に、より高い指値に関する割り当てトランザクションを開始することが可能である。プールサーバーは、指値がいつサブミットされたかを追跡することもできる。同一の価格の２つの指値の間では、より早期の指値が優先される。プールサーバーは、次のトランザクションを開始するのに前のトランザクションが終わるのを待つ必要はないことに留意されたい。代わりに、プールサーバーは、対応するタスクテナントに対して割り当てトランザクションを開始してから、次のセットの指値にとりかかることを確実にするだけでよい。これらのトランザクションは、好ましくは、並行に実行される。
【００７２】
[0080]割り当て期間中、仮想マシンが専用のマシンとしての割り当てのために必要とされる際、またはクラウドコンピューティング環境が、障害回復などの別の理由でそのマシンを必要とする際、プリエンプションが行われ得る。専用の仮想マシン。システムにおいて利用可能であるアイドルな仮想マシンが存在する場合、アイドルなマシンは、専用の仮想マシンとしての割り当てのために使用され得る。さらなるアイドルな仮想マシンが利用可能でない場合、タスクテナントは、より低い指値に対応するプリエンプション可能な仮想マシンにプリエンプションを行うことができる。プリエンプションに関してマシンに優先順位を付けるための別のオプションは、より短い期間にわたってジョブを実行してきたマシンにプリエンプションを行うことを選好することである。割り当ては、より多くのプリエンプション可能な仮想マシンが利用可能になり、満足させられていない未処理の指値が存在する場合に、行われる。その場合、利用可能な、プリエンプション可能な仮想マシンは、高い方の指値から始めて、割り当てられることが可能である。
【００７３】
[0081]好ましくは、小さいセットのアイドルな仮想マシンが、イメージ再作成をされたままで、使用される準備ができていることが可能であり、したがって、仮想マシンが、専用の使用のために必要とされる場合、専用の仮想マシンがこのセットから即時にとられることが可能である。タスクテナントは、これらのアイドルな仮想マシンを背景に保持する。タスクテナントにおけるアイドルな仮想マシンの数が、タスクテナントにおける専用の仮想マシンの１％などの、閾値量を下回って低下すると、タスクテナントは、アイドルな仮想マシンカウントが、第１の閾値と同一であることも、異なることも可能な第２の閾値に達するまで、より低い指値を有する仮想マシンにプリエンプションを開始することが可能である。タスクテナントは、プールサーバーを関与させることなしに、これらのプリエンプション可能な仮想マシンにプリエンプションを行って、このプリエンプションが迅速に行われることを可能にすることができる。
【００７４】
[0082]他方、タスクスケジューラーが、プールサーバーによって割り当てられたすべてのプールに関してすべての目標のプリエンプション可能な仮想マシンを既に満足させており、それでも、第２の閾値を超える余分な、アイドルな仮想マシンが存在する場合、タスクスケジューラーは、そのような余分な、アイドルな仮想マシンのカウントを、規則的なハートビートを介してプールサーバーに報告することが可能である。このカウントが第３の閾値を超えている場合、プールサーバーは、これらの余分な仮想マシンを未解決の指値に割り当てることを開始する。
【００７５】
[0083]以下に、スポット価格設定に基づくプリエンプション可能な仮想マシンの割り当てに関するプロセスフローの高レベルの例を与える。スポット周期の始めに、タスクロケーションサービスマスター（タスクロケーションサービスマスター内のグローバルスポット価格設定モジュールなどの）が、指値およびリソース利用可能性に基づいて、そのスポット周期に関する新たな市場価格を計算する。価格が決定された後、タスクロケーションサービスマスターは、前述したとおり、その新たな価格、および来たるべきスポット周期に関するタイムスタンプで価格履歴テーブルを更新する。次に、タスクロケーションサービスマスターは、規則的なハートビートメッセージを介して各プールサーバーにそのスポット価格を送信する。さらに、タスクロケーションサービスマスターは、各プールサーバーに関するプリエンプション可能な仮想マシン割り当ての初期の内訳を送信することも可能である。このことは、プールサーバーが割り当て決定を行うのに役立ち得る。プールサーバーが、タスクロケーションサービスマスターからメッセージを受信すると、プロセスサーバーは、プールサーバーのすべてのプールに関する未解決の指値にプリエンプション可能な仮想マシンを割り当てることを始めるとともに、その新たな市場価格を下回るプリエンプション可能なマシンのすべてにプリエンプションを行う。詳細には、プールサーバーは、所与のプール上に新たな、プリエンプション可能な仮想マシン目標カウントを設定するコマンドをタスクテナントに送信する。このことは、このトランザクションが、タスクテナントが目標のプリエンプション可能な仮想マシンカウントを記録するとすぐに完了されること以外は、専用の仮想マシンカウントを設定するプールトランザクションと同様に行われる。次に、タスクスケジューラーが、そのプールから仮想マシンを割り当てること、または除去することによって、仮想カウントを目標に到達させようと試みる。タスクテナント側で、プリエンプション可能な仮想マシン割り当ては、プリエンプション可能な仮想マシンが、テナントにおけるアイドルな仮想マシンのグローバルセットからとられ、タスクスケジューラーが、常に、高い方の指値に先にプリエンプション可能な仮想マシンを割り当てること以外は、専用の仮想マシンの場合と同様に行われる。さらに、スポット周期中、リソース不足（例えば、スタンバイ仮想マシンの専用への変換）のため、タスクスケジューラーが、プリエンプション可能な仮想マシンにプリエンプションを行う必要がある可能性がある。そのシナリオでは、より低い指値を有するプールに対応する仮想マシンに先にプリエンプションが行われる。
【００７６】
[0084]割り当て期間中、プールサーバーが、スポット価格設定に基づいて、割り当てに利用可能になっているいくつかのプリエンプション可能な仮想マシンを発見することが可能である。例えば、いくつかの専用の仮想マシンが、スタンバイ仮想マシンに変換されることが可能であり、またはいくつかのプリエンプション可能な仮想マシンが、ユーザーによって解放されることが可能である。プールサーバーは、所与のプールに関するプリエンプション可能な仮想マシンに関する新たな（より高い）目標カウントを設定することによって、高い方の指値が優先されて、未処理の指値に、それらの利用可能な仮想マシンを割り当てることが可能である。一部の実施形態において、プリエンプション可能な仮想マシンは、次のスポット周期が始まるとすぐにプリエンプションを受ける可能性があるので、スポット周期の最後の５分内などの、スポット周期の終わりにかけては割り当てられない。
【００７７】
[0085]（クラウドコンピューティング環境における仮想マシンの割り当ての例）後段の架空の例は、クラウドコンピューティング環境における専用の仮想マシン、スタンバイ仮想マシン、およびプリエンプション可能な仮想マシンの動作および対話を例示するように与えられる。これらの例において、説明および添付の図を簡単にするために少数の仮想マシンが説明される。しかし、本明細書で説明される概念は、所望される任意の数の仮想マシンに拡大され得ることが当業者には認識されよう。
【００７８】
[0086]後段の架空の例において、様々な専用の仮想マシン、スタンバイ仮想マシン、およびプリエンプション可能な仮想マシンの割り当てが説明される。対応する図において、マシンには、ユーザー、アベルを表すＡ、ユーザー、チャーリーを表すＣ、ユーザー、デイビッドを表すＤ、およびユーザー、フランクを表すＦというラベルが付けられる。いくつかのマシンには、さらなる大型ユーザーを表すＬというラベルが付けられる。仮想マシンが割り当てられるユーザーを指定することに加えて、仮想マシンは、専用のマシンを表す指定（Ｄ）、またはプリエンプション可能なマシンを表す指定（Ｐ）を有することが可能である。これらの例において様々なユーザーによって実行されるジョブは、ビジネスに関するデータマイニングおよびデータ管理を実行すること、科学的計算を実行すること、または最終消費者トラフィックを扱うことなどの、任意のタイプのコンピューティングを実行するためのジョブであり得る。
【００７９】
[0087]図７は、２つのタスクテナント７１０および７１１における仮想マシンの初期状態の例を示す。これらのタスクテナントは、代表的であり、したがって、任意の好都合な数のタスクテナントが、スポット価格設定モジュール７６０から情報を受け取ることが可能である。同様に、各タスクテナント内に示される仮想マシンの数も代表的であり、したがって、より多くの仮想マシンが、タスクテナント内に含められることも、より少ない仮想マシンが、タスクテナント内に含められることも可能である。タスクテナント７１０内、またはタスクテナント７１１内で、符号の先頭の文字が同一である各仮想マシンは、同一のプール内のマシンに対応する。例えば、「Ａ（？）」フォーマットを有する仮想マシンのすべてが、ユーザー、アベルのアカウントに関連付けられたプールの中に入っている。
【００８０】
[0088]図７で、タスクテナント７１０および７１１の初期状態が、スポット価格設定を介して仮想マシンをプリエンプション可能なマシンとして割り当てることに先立って示される。図７で、ユーザー、アベル、チャールズ、デイビッド、およびフランクにそれぞれ、２つの専用の仮想マシンが割り当てられており、ジョブを実行している。これらのマシンは、それぞれ、マシン７２３、７３３、７４３、および７５３として示される。仮想マシン７６８および７６９は、いずれのプールにも割り当てられていないマシンに対応する。さらに、スタンバイカウント７９３が、タスクテナント７１０の下に含められ、スタンバイカウント７９４が、タスクテナント７１１の下に含められる。スタンバイカウント７９３および７９４は、それぞれのタスクテナント７１０および７１１に現在、関連付けられているスタンバイ仮想マシン確保を表す。図７で、スタンバイ確保は、タスクテナント７１０および７１１のそれぞれにおける大型ユーザーに関連付けられた２つの確保に対応する。この例において、スタンバイ確保は、システムによる選択に基づいてタスクテナントに関連付けられている。これらのスタンバイ確保が、親和性要求の一部であったとすると、大型ユーザーは、適切な親和性を有するクラスターを指定することも可能であり、スタンバイ確保は、それに応じて関連付けられることが可能である。
【００８１】
[0089]次に、スポット価格設定決定が、ユーザーに、それらのユーザーからの要求に基づいて、プリエンプション可能なマシンを割り当てるのに使用される。スポット価格設定モジュールが、利用可能なすべてのプールからもたらされる指値を収集し、１時間（または他の価格設定周期）当たり０．６セントというスポット価格を決定する。料金請求は、分数の価格設定周期に関して実行されることも可能である。このスポット価格は、ユーザー、アベル、チャールズ、デイビッド、およびフランクからの指値を含む、プリエンプション可能なマシンに関する様々な指値に基づいている。ユーザー、アベルが、１．５セントの入札価格で３つのプリエンプション可能なマシンを要求する。ユーザー、チャールズが、１．３セントの入札価格で１つのプリエンプション可能な仮想マシンを要求し、０．６セントの入札価格で第２のプリエンプション可能な仮想マシンを要求する。ユーザー、デイビッドが、０．５セントの入札価格で３つのプリエンプション可能なマシンを要求する。ユーザー、フランクが、１．０セントの入札価格で１つのマシンを要求し、０．８セントの入札価格でさらに３つのマシンを要求する。
【００８２】
[0090]指値に基づいて、プリエンプション可能なマシンがユーザーに割り当てられる。ユーザーに対するこれらのマシンの割り当てが、図８に示される。タスクテナント７１１において、利用可能な３つのマシン８２６が、アベルに、プリエンプション可能なマシンに関して最高の指値を有することに基づいて、割り当てられる。これらのマシンは、図７からのアイドルなマシン７６９のうちの３つに対応する。次に、タスクテナント７１０および７１１が、１．３セントの指値で１つのプリエンプション可能な仮想マシンに関するチャールズの要求を満たそうと試みる。タスクテナント７１１における利用可能な唯一の利用可能な仮想マシン８３６が、プリエンプション可能な仮想マシンとしてチャールズに割り当てられる。
【００８３】
[0091]次に、仮想マシンに関するフランクの指値に、入札価格に基づいて順次に対応が行われる。これらの仮想マシンは、利用可能性の残っているタスクテナントがタスクテナント７１０であるので、タスクテナント７１０から割り当てられる。１期間当たり１．０セントの１つのプリエンプション可能なマシンに関する指値が、仮想マシン８５６によって満足させられる。０．８セントのさらなる３つのマシンに関する指値が、仮想マシン８５７によって満足させられる。フランクの指値に基づいて仮想マシンを割り当てた後、次の割り当て期間の価格以上のチャールズからの１つの仮想マシン要求は依然として満足させられない。この要求は、チャールズのためのプールをタスクテナント７１０に入れるように拡大し、プリエンプション可能な仮想マシン８３７をチャールズに割り当てることによって満足させられる。デイビッドの要求に関連付けられた指値は、プリエンプション可能な仮想マシンの割り当てのスポット価格を下回っているため、０．５セントで３つのマシンを求めるデイビッドの要求は、満足させられない。以上の割り当てに基づいて、対応する最低の入札価格を有するプリエンプション可能なマシンが、タスクテナント７１０内に位置する。大型ユーザーが、スタンバイ確保を専用の仮想マシンに変換する場合、１つのオプションは、タスクテナント７１０および７１１のそれぞれからの２つのプリエンプション可能な仮想マシンを、大型ユーザーのための専用の仮想マシンに変換することである。このことは、タスクテナント７１１における、より高い指値に関連付けられたプリエンプション可能なジョブが移動させられることをもたらす。より低い指値を犠牲にしてより高い指値を優先して満足させるために、このことは、より高い指値のジョブ（アベルのためのジョブなどの）が、より低い指値を有するジョブ（チャールズまたはフランクのためのジョブなどの）を犠牲にしてタスクテナント７１０において再スタートされるように、第２の移動につながる可能性がある。別のオプションは、スタンバイ確保が、最低の指値に基づいてマシンが割り当てられているタスクテナントに関連付けられるように、タスクテナント７１０および７１１にわたってスタンバイ確保を再割り当てすることである。このことが、スタンバイカウント７９３が０に調整される一方で、スタンバイカウント７９４が今や４である、図８に示される。スタンバイアカウントの変化に基づいて再割り当てされるマシンは存在しないことに留意されたい。
【００８４】
[0092]図８において、プリエンプション可能な指値のいずれも親和性要求に基づいていない例が使用されていた。図９は、ユーザー、チャールズからのプリエンプション可能な指値が、チャールズに既に割り当てられている他の専用の仮想マシン、またはプリエンプション可能な仮想マシンを求める親和性要求を含む代替の例を示す。この親和性要求に基づいて、チャールズからのプリエンプション可能なジョブは、チャールズが２つの専用の仮想マシンを有するタスクテナント７１１に対する親和性を有する。図９において、ユーザー、アベル、チャールズ、およびフランクのそれぞれに同一の数の仮想マシンが割り当てられる。しかし、仮想マシンに関する割り当てを決定する際、タスクテナントは、チャールズからの親和性要求を考慮に入れる。これらのマシンが、図８で説明される方法の下で割り当てられたとした場合、タスクテナント７１１における１つだけの仮想マシンがチャールズに利用可能であることになる。親和性要求のため、チャールズは、タスクテナント７１０からの仮想マシンを使用しないことになり、チャールズからの要求は、対応する入札価格がスポット価格以上であるものの、満足させられないままとなる。この状況を回避するのに、タスクテナント７１０における１つのプリエンプション可能な仮想マシン９２６がアベルに割り当てられる。すると、プリエンプション可能な仮想マシン９３６が、チャールズに割り当てるように利用可能である。アベルの入札価格は、チャールズより高いものの、チャールズからの親和性要求が、アベルの要求を満足させる際に考慮される。このことは、プリエンプション可能なマシンからの利用および利益を増大させることを可能にする。タスクテナント７１１は今や、最低の入札価格で割り当てられたプリエンプション可能なマシンを含むため、タスクテナント７１１に関するスタンバイカウント７９３は、１である一方で、タスクテナント７１０に関するスタンバイカウントは、３である。
【００８５】
[0093]図９に示される例を続けると、後の時点で、大型ユーザーのための４つのスタンバイ確保を専用の仮想マシンに変換するトリガー事象が生じる。このトリガー事象は、時間ベースであること、大型ユーザーによって使用されている仮想マシンの活動もしくは使用による負荷ベースであること、または時間ベースと、そのような負荷ベースの組み合わせであることが可能である。この例において、トリガー事象は、活動ベース、または負荷ベースであり、割り当て期間の中間部分の間に生じる。この同一の割り当て期間中、アベルは、要求されるプリエンプション可能なマシンの数を３つから４つに増やすこともする。アベルからの増加要求は、同一の入札価格を含む。
【００８６】
[0094]図１０は、前述の変更の初期の結果を示す。大型ユーザーのためのスタンバイ確保の変換が、仮想マシン１０９４が大型ユーザーのための専用のマシンに変換されることをもたらす。これらのスタンバイ確保は、最低の優先度のプリエンプション可能なジョブにプリエンプションを行うことによって専用の仮想マシンに変換される。図１０に示される例において、このことは、関連付けられている最低の指値を有するジョブにプリエンプションを行うことに対応する。図１０に示される例において、スタンバイカウント７９３および７９４は、最低のプリエンプション可能な指値に基づいて関連付けられている仮想マシンを包含するタスクテナントを反映するが、このことは、必要ではない。前述したとおり、スタンバイ確保が、様々な理由で所望されるタスクテナントに関連付けられることが可能であり、プリエンプション可能なジョブが、専用のマシンの変換の後、タスクテナントの間で移動されることが可能である。図１０で、最低のプリエンプション可能な指値に対応する仮想マシンは、０．６セントの指値に基づいてチャールズに割り当てられた仮想マシンであった。この仮想マシンが、タスクテナント７１１において大型ユーザーのために専用の仮想マシン１０９３に変換される。次に低い方から３つの指値は、タスクテナント７１０においてフランクに割り当てられたプリエンプション可能な仮想マシンに対応する。これらの仮想マシンが、大型ユーザーに割り当てられた専用の仮想マシン１０９４に変換される。このことにより、１つのプリエンプション可能な仮想マシン８５６がフランクに割り当てられて残される。アベルは、より高い指値を有するものの、スポット価格設定機構は、期間の始めにプリエンプション可能な仮想マシンを再割り当てするのにしか使用されないことに留意されたい。アベルの要求は、期間の中間部分の間に行われているので、アベルの要求は、より高い指値を含むものの、フランクに割り当てられた仮想のプリエンプション可能なマシンを移動させない。さらに、大型ユーザーのためのスタンバイ確保の変換により、タスクテナント７１０とタスクテナント７１１の両方に関するスタンバイカウントが、０に減少する。
【００８７】
[0095]図１１は、次の割り当て期間の開始時に生じるさらなる変化を示す。大型ユーザーによって要求された余分なリソースのため、より少ない仮想マシンしか、プリエンプション可能なマシンとしての割り当てに利用可能でない。このことは、グローバルスポット価格の１期間当たり１１セントへの増加をもたらす。図１１に示されるとおり、さらなるマシンを要求するアベルの前の要求が今や、仮想マシン１１２６によって満足させられる。タスクテナント７１０において、グローバルスポット価格の増加により、フランクの指値がスポット価格を下回ることになり、したがって、フランクには、この割り当て期間中、プリエンプション可能な仮想マシンが割り当てられない。
【００８８】
[0096]（さらなる実施形態）本発明の様々な実施形態の概略を簡単に説明してきたので、次に、仮想マシンを実装するのに適した例示的な動作環境を説明する。図面を全体的に参照し、特に図１２を最初に参照すると、本発明の実施形態を実装するための例示的な動作環境が示され、コンピューティングデバイス１２００として全体的に示されている。コンピューティングデバイス１２００は、適切なコンピューティング環境の一例に過ぎず、本発明の用法または機能の範囲について全く限定を示唆することを意図するものではない。また、コンピューティングデバイス１２００が、例示される構成要素のうちのいずれの構成要素に関しても、いずれの組み合わせに関しても全く依存関係も要件も有するものと解釈してはならない。
【００８９】
[0097]本発明の実施形態は、コンピューター、または携帯情報端末もしくは他のハンドヘルドデバイスなどの他のマシンによって実行されている、プログラムモジュールなどのコンピューター実行可能命令を含むコンピューターコードまたはマシンによる使用が可能な命令の一般的な脈絡で説明され得る。一般に、ルーチン、プログラム、オブジェクト、構成要素、データ構造などを含むプログラムモジュールとは、特定のタスクを実行する、または特定の抽象データ型を実装するコードを指す。本発明は、ハンドヘルドデバイス、家庭用電子機器、汎用コンピューター、さらなる専用コンピューティングデバイスなどを含む、様々なシステム構成で実施され得る。また、本発明は、通信ネットワークを介して結び付けられた遠隔処理デバイスによってタスクが実行される分散コンピューティング環境において実施されることも可能である。
【００９０】
[0098]図１２を引き続き参照すると、コンピューティングデバイス１２００が、以下のデバイス、すなわち、メモリー１２１２、１つまたは複数のプロセッサー１２１４、オプションの１つまたは複数のプレゼンテーション構成要素１２１６、入出力（Ｉ／Ｏ）ポート１２１８、オプションの入出力構成要素１２２０、および例示的な電源１２２２を直接に、または間接的に結合するバス１２１０を含む。バス１２１０は、１つまたは複数のバス（アドレスバス、データバス、またはアドレスバスとデータバスの組み合わせ）であり得るものを表す。図１２の様々なブロックは、明瞭にするために線で示されるものの、現実には、様々な構成要素を線引きすることは、そのように明確ではなく、喩えとして、線は、より正確にはグレーであり、あいまいであることになる。例えば、ディスプレイデバイスなどのプレゼンテーション構成要素を入出力構成要素と見なすこともできる。さらに、多くのプロセッサーは、メモリーを有する。本発明の発明者らは、当技術分野の性質がそのようなものであることを認識しており、図１２の図面は、本発明の１つまたは複数の実施形態に関連して使用され得る例示的なコンピューティングデバイスを例示するに過ぎないことを繰り返しておく。「ワークステーション」、「サーバー」、「ラップトップ」、「ハンドヘルドデバイス」などのカテゴリーの間の区別は、これらすべてのカテゴリーが、図１２の範囲内で企図され、「コンピューティングデバイス」を参照するので、行われない。
【００９１】
[0099]コンピューティングデバイス１２００は、通常、様々なコンピューター可読媒体を含む。コンピューター可読媒体は、コンピューティングデバイス１２００によってアクセスされ得る任意の利用可能な媒体であることが可能であり、揮発性媒体と不揮発性媒体、リムーバブルメディアと非リムーバブルメディアをともに含む。例として、限定としてではなく、コンピューター可読媒体は、コンピューター記憶媒体と、通信媒体とを備えることが可能である。コンピューター記憶媒体には、コンピューター可読命令、データ構造、プログラムモジュール、または他のデータなどの情報を格納するために任意の方法または技術で実装された揮発性媒体および不揮発性媒体、リムーバブルメディアおよび非リムーバブルメディアが含まれる。コンピューター記憶媒体には、ランダムアクセスメモリー（ＲＡＭ）、読み取り専用メモリー（ＲＯＭ）、電子的に消去可能なプログラマブル読み取り専用メモリー（ＥＥＰＲＯＭ）、フラッシュメモリーもしくは他のメモリー技術、ＣＤ−ＲＯＭ、デジタルバーサタイルディスク（ＤＶＤ）もしくは他のホログラフィックメモリー、磁気カセット、磁気テープ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、または所望される情報を符号化するのに使用され得るとともに、コンピューティングデバイス１２００によってアクセスされ得る他の任意の媒体が含まれるが、以上には限定されない。或る実施形態において、コンピューター記憶媒体は、実体のあるコンピューター記憶媒体から選択され得る。別の実施形態において、コンピューター記憶媒体は、一時的でないコンピューター記憶媒体から選択され得る。
【００９２】
[00100]通信媒体は、コンピューター可読命令、データ構造、プログラムモジュール、または他のデータを通常、搬送波または他のトランスポート機構などの変調されたデータ信号として実現し、任意の情報配信媒体を含む。「変調されたデータ信号」という用語は、信号内に情報を符号化するように特性のうちの１つまたは複数が設定された、または変更された信号を意味する。例として、限定としてではなく、通信媒体には、有線ネットワークもしくは直接配線接続などの有線媒体、ならびに音響媒体、ＲＦ媒体、赤外線媒体、および他のワイヤレス媒体などのワイヤレス媒体が含まれる。また、前述の媒体のうちの任意の媒体の組み合わせも、コンピューター可読媒体の範囲内に含められなければならない。
【００９３】
[00101]メモリー１２１２は、揮発性メモリーおよび／または不揮発性メモリーの形態のコンピューター記憶媒体を含み得る。このメモリーは、リムーバブルであっても、非リムーバブルであっても、リムーバブルと非リムーバブルの組み合わせであってもよい。例示的なハードウェアデバイスは、ソリッドステートメモリー、ハードドライブ、光ディスクドライブなどを含む。コンピューティングデバイス１２００は、メモリー１２１２または入出力構成要素１２２０などの様々なエンティティーからデータを読み取る１つまたは複数のプロセッサーを含む。プレゼンテーション構成要素１２１６は、ユーザーまたは他のデバイスにデータ指示を提示する。例示的なプレゼンテーション構成要素には、ディスプレイデバイス、スピーカ、印刷構成要素、振動構成要素などが含まれる。
【００９４】
[00102]入出力ポート１２１８は、コンピューティングデバイス１２００が、いくつかは組み込まれていることが可能な、入出力構成要素１２２０を含む他のデバイスに論理上、結合されることを可能にすることができる。例示的な構成要素には、マイクロフォン、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナ、プリンター、ワイヤレスデバイスなどが含まれ得る。
【００９５】
[00103]本発明の実施形態は、すべての点で、限定するのではなく、例示することを意図している特定の実施形態に関連して説明されてきた。本発明の範囲を逸脱することなく、代替の実施形態が、本発明が属する技術分野の業者には明白となろう。
【００９６】
[00104]図１３は、本発明による方法の実施例を示す。図１３において、プリエンプション可能な仮想マシンの割り当てのための第１の価格が受信される（１３１０）。その受信された価格が、例えば、１つまたは複数の仮想マシンクラスターによって、その受信された価格、および様々な仮想マシンプールに関連付けられた指値に基づいて、プリエンプション可能な仮想マシンを割り当てるのに使用されることが可能である。次に、１つまたは複数の仮想マシンクラスターからの複数のプリエンプション可能な仮想マシンが、仮想マシンプールに割り当てられることが可能である（１３２０）。１つまたは複数のタスクが、それらの割り当てられた仮想マシンを使用して実行される（１３３０）。次に、プリエンプション可能な仮想マシンの割り当てのための第２の価格が受信される（１３４０）。通常、このことは、後続の割り当て期間において使用するための新たな価格を受信することに対応する。１つまたは複数の仮想マシンクラスターからの少なくとも１つの仮想マシン、およびさらなる仮想マシンクラスターからの少なくとも１つの仮想マシンが、仮想マシンプールに割り当てられる（１３５０）。次に、１つまたは複数のタスクが、さらなる仮想マシンクラスターからの割り当てられた仮想マシンを使用して実行される（１３６０）。
【００９７】
[00105]図１４は、本発明による方法の別の実施例を示す。図１４において、プリエンプション可能な仮想マシンの割り当てのための価格が受信される（１４１０）。第１の仮想マシンクラスターからの仮想マシンが、第１の仮想マシンプールに、第１の仮想マシンプールに関連付けられた第１の指値に基づいて割り当てられる（１４２０）。第１の指値は、第１の仮想マシンクラスターに対する親和性を有する仮想マシンを求める要求に対応する。その要求における少なくとも１つの仮想マシンは、満足させられない。第２の仮想マシンクラスターからの仮想マシンが、第２の仮想マシンプールに、第２の仮想マシンプールに関連付けられた第２の指値に基づいて割り当てられる（１４３０）。少なくとも、第２の仮想マシンプールに割り当てられる仮想マシンは、受信された価格より高いが、第１の仮想マシンプールに対応する指値より低い入札値に基づいて割り当てられる。次に、１つまたは複数のタスクが、第２の仮想マシンプールに割り当てられたプリエンプション可能な仮想マシンなどの、割り当てられたプリエンプション可能な仮想マシンを使用して実行され得る（１４４０）。
【００９８】
[00106]図１５は、本発明による方法のさらに別の実施例を示す。図１５において、仮想マシンの割り当てのための価格が受信される（１５１０）。第１の複数のプリエンプション可能な仮想マシンが、関連付けられた第１の指値に基づいて、第１の仮想マシンプールに割り当てられる（１５２０）。第２の複数のプリエンプション可能な仮想マシンが、関連付けられた第２の指値に基づいて、第２の仮想マシンプールに割り当てられる（１５３０）。１つまたは複数のタスクが、それらの割り当てられた仮想マシンを使用して実行される（１５４０）。次に、プリエンプション可能な仮想マシンの数を増やす要求が、第１の仮想マシンプールから受信される（１５５０）。この要求に対応する指値は、第２の仮想マシンプールに関連付けられた指値より高い。第２の複数の仮想マシンの割り当ては、割り当て期間の終わりまで保持される（１５６０）。その後、第２の仮想マシンプールから、第２の複数の仮想マシンからの少なくとも１つの仮想マシンの割り当てが、除去される（１５６０）。その除去された少なくとも１つの仮想マシンが、後続の割り当て期間に関して第１の仮想マシンプールに割り当てられる（１５７０）。
【００９９】
[00107]或る実施形態において、クラウドコンピューティング環境においてリソースを提供するための方法が、提供される。この方法は、プリエンプション可能な仮想マシンの割り当てのための第１の価格を受信すること、１つまたは複数の仮想マシンクラスターからの複数のプリエンプション可能な仮想マシンを仮想マシンプールに、受信された第１の価格、およびその仮想マシンプールに関連付けられた第１の指値に基づいて割り当てること、それらの割り当てられた複数の仮想マシン上で１つまたは複数のタスクを実行すること、プリエンプション可能な仮想マシンの割り当てのための第２の価格を受信すること、その１つまたは複数の仮想マシンクラスターからの少なくとも１つのプリエンプション可能な仮想マシン、およびさらなる仮想マシンクラスターからの少なくとも１つのプリエンプション可能な仮想マシンをその仮想マシンプールに、受信された第２の価格、およびその仮想マシンプールに関連付けられた第２の指値に基づいて割り当てること、およびそのさらなるマシンクラスターから割り当てられたその少なくとも１つのプリエンプション可能な仮想マシン上で１つまたは複数のタスクを実行することを含む。
【０１００】
[00108]別の実施形態において、クラウドコンピューティング環境においてリソースを提供するための方法が、提供される。この方法は、プリエンプション可能な仮想マシンの割り当てのための価格を受信すること、第１の仮想マシンクラスターからの１つまたは複数のプリエンプション可能な仮想マシンを第１の仮想マシンプールに、その受信された価格、および第１の仮想マシンプールに関連付けられた、第１の仮想マシンクラスターに対する親和性を含む、複数の仮想マシンを求める要求に対応する第１の指値に基づいて割り当て、複数の仮想マシンを求める要求における少なくとも１つの仮想マシンは、第１の仮想マシンクラスターの中の仮想マシンの割り当ての後に満足させられないこと、第２の仮想マシンクラスターからの１つまたは複数のプリエンプション可能な仮想マシンを第２の仮想マシンプールに、その受信された価格、および第２の仮想マシンプールに関連付けられた第２の指値に基づいて割り当て、第２の仮想マシンクラスターからの割り当てられる少なくとも１つの仮想マシンは第２の仮想マシンプールに、その受信された価格より高く、第１の仮想マシンプールに関連付けられた第１の指値より低い指値に基づいて割り当てられること、および第２の仮想マシンプールの中の第２の仮想マシンクラスターからの割り当てられたプリエンプション可能な仮想マシン上で１つまたは複数のタスクを実行することを含む。
【０１０１】
[00109]さらに別の実施形態において、クラウドコンピューティング環境においてリソースを提供するための方法が、提供される。この方法は、プリエンプション可能な仮想マシンの割り当てのための価格を受信すること、１つまたは複数の仮想マシンクラスターからの第１の複数のプリエンプション可能な仮想マシンを第１の仮想マシンプールに、その受信された価格、および仮想マシンプールに関連付けられた第１の指値に基づいて割り当てること、その１つまたは複数の仮想マシンクラスターからの第２の複数のプリエンプション可能な仮想マシンを第２の仮想マシンプールに、その受信された価格、および第２の仮想マシンプールに関連付けられた第２の指値に基づいて割り当てること、第１の複数のプリエンプション可能な仮想マシン上、および第２の複数のプリエンプション可能な仮想マシン上で１つまたは複数のタスクを実行すること、プリエンプション可能な仮想マシンの数を増やす要求を第１の仮想マシンプールから受信し、その増加要求は、第１の仮想マシンプールに関連付けられた第３の指値に対応し、第３の指値は、第２の仮想マシンプールに関連付けられた第２の指値より高いこと、割り当て期間の終わりまで第２の複数の仮想マシンの割り当てを保持すること、第２の仮想マシンプールから、第２の複数の仮想マシンからの少なくとも１つの仮想マシンの割り当てを除去すること、およびその除去された少なくとも１つの仮想マシンを、後続の割り当て期間に関して第１の仮想マシンプールに割り当てることを含む。
【０１０２】
[00110]以上のことから、本発明は、前段に記載されるすべての目標および目的、ならびに明白であり、その構造に本来備わった他の利点を実現するのによく適した発明であることが理解されよう。
【０１０３】
[00111]いくつかの特徴、および部分的組み合わせが、役に立ち、他の特徴、および他の部分的組み合わせを参照することなしに使用され得ることが理解されよう。このことは、特許請求の範囲によって企図され、特許請求の範囲に含まれる。
【図１】
2015511341.tif 000003
【図２】
2015511341.tif 000004
【図３】
2015511341.tif 000005
【図４】
2015511341.tif 000006
【図５】
2015511341.tif 000007
【図６】
2015511341.tif 000008
【図７】
2015511341.tif 000009
【図８】
2015511341.tif 000010
【図９】
2015511341.tif 000011
【図１０】
2015511341.tif 000012
【図１１】
2015511341.tif 000013
【図１２】
2015511341.tif 000014
【図１３】
2015511341.tif 000015
【図１４】
2015511341.tif 000016
【図１５】
2015511341.tif 000017
【国際調査報告】
2015511341.tif 000018
2015511341.tif 000019