(57)【要約】      （修正有）【課題】クラウドコンピューティング環境において仮想マシンにリソースを割り当てる、および関連付けるための方法を提供する。【解決手段】クラウドコンピューティング環境における仮想マシンが、ユーザーに対応するプールに、専用のマシン、スタンバイマシン、またはプリエンプション可能なマシンとして割り当てられる、または関連付けられる。様々な状態が、クラウドコンピューティング環境の運用者がリソース利用を増大させることも可能にしながら、所望されるレベルのリソースをユーザーに提供する。【選択図】図３
2018055707.tif 000002
【特許請求の範囲】
【請求項１】
クラウドコンピューティング環境においてリソースを提供するための、コンピュータにより実行される方法であって、
スタンバイ確保を求める要求を受信するステップであって、各スタンバイ確保は、ユーザに対応する仮想マシンプールに関連付けられ、各スタンバイ確保は、前記仮想マシンプールへの仮想マシンの割り当て個数及び条件を定義する、ステップと、
各スタンバイ確保によって定義された仮想マシンの個数を１つ又は複数のカウントを用いて追跡するステップであって、前記１つ又は複数のカウントは、各スタンバイ確保に対して十分な個数のアイドルの仮想マシン又はプリエンプション可能な仮想マシンが利用可能であることを保証するために使用される、ステップと、
第１のユーザから、第１のスタンバイ確保によって定義された仮想マシンの個数を増加することを求める要求を受信することに基づいて、前記１又は複数のカウントをある量だけ増加させるステップと、
前記第１のスタンバイ確保によって定義された条件が満たされていると判断されたことに基づいて、前記増加させた個数の仮想マシンを、前記第１のユーザに対応する前記仮想マシンプールに割り当てるステップであって、該割り当ては、前記アイドルの仮想マシン又はプリエンプション可能な仮想マシンの中からなされる、ステップと、
前記割り当てられた仮想マシンの少なくとも１つを使用して、前記第１のユーザに対応する仮想マシンプールに対して１つまたは複数のタスクを実行するステップと、
を備え、
前記スタンバイ確保は、仮想マシンの割り当てではなく、前記スタンバイ確保の中の少なくとも１つのスタンバイ確保により確保された１つ又は複数の仮想マシンを将来において１つ又は複数の専用の仮想マシンに変換する権利の確保である、
方法。
【請求項２】
前記第１のスタンバイ確保によって定義された前記条件は負荷ベースの閾値に基づく、請求項１に記載の方法。
【請求項３】
前記第１のスタンバイ確保は、仮想マシンクラスターに対する親和性を含み、前記割り当ては、前記親和性に基づき前記仮想マシンクラスターから専用の仮想マシンへの変換を含む、請求項１に記載の方法。
【請求項４】
前記親和性は、前記割り当てられた仮想マシンの少なくとも１つによって実行されるジョブのためにデータストレージに対する所望のデータ転送速度に基づく、請求項３に記載の方法。
【請求項５】
クラウドコンピューティング環境においてリソースを提供するための、コンピュータにより実行される方法であって、
複数のスタンバイ確保の各スタンバイ確保によって定義された仮想マシンの個数を１つ又は複数のカウントを用いて追跡するステップであって、各スタンバイ確保は、ユーザに対応する仮想マシンプールに関連付けられ、各スタンバイ確保は、前記仮想マシンプールへの仮想マシンの割り当て個数及び条件を定義し、前記１つ又は複数のカウントは、各スタンバイ確保に対して十分な個数のアイドルの仮想マシン又はプリエンプション可能な仮想マシンが利用可能であることを保証するために使用される、ステップと、
第１のスタンバイ確保によって定義された条件が満たされていると判断されたことに基づいて、増加させた個数の仮想マシンを、第１のユーザに対応する前記仮想マシンプールに割り当てるステップであって、該割り当ては、前記アイドルの仮想マシン又はプリエンプション可能な仮想マシンの中からなされる、ステップと、
前記割り当てられた仮想マシンの少なくとも１つを使用して、前記第１のユーザに対応する仮想マシンプールに対して１つまたは複数のタスクを実行するステップと、
を備え、
前記スタンバイ確保は、仮想マシンの割り当てではなく、前記スタンバイ確保の中の少なくとも１つのスタンバイ確保により確保された１つ又は複数の仮想マシンを将来において１つ又は複数の専用の仮想マシンに変換する権利の確保である、
方法。
【請求項６】
前記割り当ては、前記第１のスタンバイ確保及び前記第１のユーザによって特定される所定の時刻、及び／又は、所定の日付に少なくとも部分的に基づいてなされる、請求項５に記載の方法。
【請求項７】
前記割り当ては、仮想マシンを前記第１のユーザに別のユーザから専用の仮想マシンとして再割り当てすることによりなされる、請求項５に記載の方法。
【請求項８】
前記割り当ては、前記第１のユーザに関連付けられた負荷ベースの閾値に部分的に基づいてなされる、請求項５に記載の方法。
【請求項９】
前記仮想マシンプールに割り当てられた専用の仮想マシンを第１の量だけ増加させるという前記第１のユーザからの要求を受信するステップを含む、請求項５に記載の方法。
【請求項１０】
第１のスタンバイ確保によって定義された仮想マシンの個数を第２の量だけ増加させるという前記第１のユーザからの要求を受信するステップと、
前記受信された要求に基づいて、前記１つ又は複数のカウントを第２の量だけ増加させるステップと
を含む、請求項５に記載の方法。
【請求項１１】
少なくとも１つの付加的な仮想マシンを前記仮想マシンプールに専用の仮想マシンとして割り当てるステップを含む、請求項５に記載の方法。
【請求項１２】
前記第１のスタンバイ確保は、仮想マシンクラスターに対する親和性を含み、前記割り当ては、前記親和性に基づき前記仮想マシンクラスターから専用の仮想マシンへの変換を含む、請求項５に記載の方法。
【請求項１３】
前記仮想マシンクラスターに対する親和性は、前記仮想マシンプールに割り当てられた仮想マシンとの接続性、又は、ストレージに対する接続性に基づく少なくとも１つの親和性を含む、請求項５に記載の方法。
【請求項１４】
コンピューティング・デバイスに請求項１〜１３のいずれか１項に記載の方法を実行させるためのプログラムを記録した１つ又は複数のコンピュータ記録媒体。
【請求項１５】
コンピューティング・デバイスに請求項１〜１３のいずれか１項に記載の方法を実行させるためのプログラム。
【発明の詳細な説明】
【背景技術】
【０００１】
[0001]大規模な計算ジョブを実行するための従来の方法には、コンピューティングプラットフォームの役割をするコンピューターハードウェアをユーザーが購入することを、しばしば必要とした。このことは、通常の多くのユーザーは、コンピューティングリソースの定常的なニーズとは異なるピークレベルのコンピューティングニーズを有するので、様々な非効率につながる可能性がある。ピークリソースニーズを満たすのに十分なハードウェアを購入することは、コンピューターリソースの低い利用率につながり得る。代替として、定常的な利用レベルにハードウェアを合わせることは、所望される一部の計算が現実的でなくなることをもたらし得る。最近になって、処理速度およびネットワーク伝送速度の向上が、クラウドコンピューティング環境を、ローカルコンピューティングプラットフォームに対する存続可能な代替にしている。
【発明の概要】
【課題を解決するための手段】
【０００２】
[0002]様々な実施形態において、クラウドコンピューティング環境においてリソースを割り当てるため、および関連付けるためのシステムおよび方法が提供される。クラウドコンピューティング環境における仮想マシンが、ユーザーに対応するプールに、専用のマシン、スタンバイマシン、またはプリエンプション可能なマシンとして割り当てられる、または関連付けられることが可能である。様々な状態が、クラウドコンピューティング環境の運用者がリソース利用を増大させることも可能にしながら、所望されるレベルのリソースをユーザーに提供する。
【０００３】
[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]いくつかの特徴、および部分的組み合わせが、役に立ち、他の特徴、および他の部分的組み合わせを参照することなしに使用され得ることが理解されよう。このことは、特許請求の範囲によって企図され、特許請求の範囲に含まれる。
【図１】
2018055707.tif 000003
【図２】
2018055707.tif 000004
【図３】
2018055707.tif 000005
【図４】
2018055707.tif 000006
【図５】
2018055707.tif 000007
【図６】
2018055707.tif 000008
【図７】
2018055707.tif 000009
【図８】
2018055707.tif 000010
【図９】
2018055707.tif 000011
【図１０】
2018055707.tif 000012
【図１１】
2018055707.tif 000013
【図１２】
2018055707.tif 000014
【図１３】
2018055707.tif 000015