JP6254948B2 - 分散コンピューティング環境内で仮想マシンのプールにジョブを割り当て仮想マシン上でタスクを実行するための方法、プログラム、プログラムを格納した記憶媒体、及びシステム - Google Patents

分散コンピューティング環境内で仮想マシンのプールにジョブを割り当て仮想マシン上でタスクを実行するための方法、プログラム、プログラムを格納した記憶媒体、及びシステム Download PDF

Info

Publication number
JP6254948B2
JP6254948B2 JP2014552219A JP2014552219A JP6254948B2 JP 6254948 B2 JP6254948 B2 JP 6254948B2 JP 2014552219 A JP2014552219 A JP 2014552219A JP 2014552219 A JP2014552219 A JP 2014552219A JP 6254948 B2 JP6254948 B2 JP 6254948B2
Authority
JP
Japan
Prior art keywords
task
pool
job
virtual machine
scheduler
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2014552219A
Other languages
English (en)
Other versions
JP2015503811A (ja
JP2015503811A5 (ja
Inventor
カルダー,ブラッドリー・ジーン
ワーン,ジュイ
ベデカー,ヴァマン
サンカラン,スリラム
マクネット,ザ・セカンド,マーヴィン
グンダ,プラディープ・クマール
ジャーン,ヤーン
アントニー,シャム
マニヴァンナン,カヴィタ
スキョルスヴォルド,アリルド・イー
カトリ,ヘマル
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2015503811A publication Critical patent/JP2015503811A/ja
Publication of JP2015503811A5 publication Critical patent/JP2015503811A5/ja
Application granted granted Critical
Publication of JP6254948B2 publication Critical patent/JP6254948B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5072Grid computing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • G06F9/5088Techniques for rebalancing the load in a distributed system involving task migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45575Starting, stopping, suspending or resuming virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5011Pool
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5022Workload threshold

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Stored Programmes (AREA)
  • Hardware Redundancy (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Multi Processors (AREA)

Description

[0001]大規模な計算ジョブを実施する従来の方法ではしばしば、ユーザは、分散環境でテナントをアクティブに管理し、ジョブに関するキューを管理することが必要である。ユーザのこのアクティブな介入は、ジョブが大きなリソースクラスタに及ぶことができることを阻害すること、およびそうしたクラスタの使用を効率的な方式でスケーリングできることを阻害することがある。さらに、ジョブは従来、ジョブ、ジョブを完了するために使用されるリソース、およびリソース上のジョブのスケジューリングが密に結合される方式で作成されることがあり、障害またはロードバランシングに応答してジョブの効率的な移行が妨げられる。
[0002]様々な実施形態では、ジョブを実施するためにプラットフォームによって分散コンピューティング環境内のサービスとしてリソースを提供するシステムおよび方法が提示される。システムのリソース、システム上で実施中のジョブ、およびシステム上で実施中のジョブのスケジューラが、リソース間でジョブが容易に移行することを可能にする方式で分離される。リソースの第1のプールからリソースの第2のプールへのジョブの移行が、人間の介入なしにシステムによって実施されることが企図される。ジョブの移行は、種々のリソースについて種々のスケジューラを利用することができる。さらに、リソースのプールが、ジョブの移行に応答して、追加のリソースまたはより少数のリソースを自動的に割り振ることができることが企図される。
[0003]この「概要」は、以下の「発明を実施するための形態」でさらに説明される概念の抜粋を単純化した形で紹介するために与えられるものである。この「概要」は、特許請求される主題の主要な特徴または不可欠な特徴を特定することを意図するものではなく、孤立して、特許請求される主題の範囲を決定する際の助けとして使用されることを意図するものではない。
[0004]添付の図面を参照しながら、以下で本発明が詳細に説明される。
[0005]本発明の態様による、本発明の実施形態を実装するのに適した例示的動作環境を示す図である。 [0006]本発明の態様による、例示的ジョブを示すブロック図である。 [0007]本発明の態様による、例示的プールを示すブロック図である。 [0008]本発明の態様による、分散コンピューティング環境内のタスクを実施するのに適した例示的システムのアーキテクチャ層を示すブロック図である。 [0009]本発明の態様による、単一の分散コンピューティングアーキテクチャ内に統合することのできる、種々の位置のプロセッサの例示的構成を示すブロック図である。 [0010]本発明の態様による、タスク位置サービスに関する潜在的構成を示すブロック図である。 [0011]本発明の態様による、例示的タスク位置サービスフロントエンド(「TLSFE」)を示すブロック図である。 [0012]本発明の態様による、例示的ワークアイテム/ジョブスケジューラ(「WIJ」)を示すブロック図である。 [0013]本発明の態様による、タスクテナントを示すブロック図である。 [0014]本発明の態様による、例示的プールサーバを示すブロック図である。 [0015]本発明の態様による、例示的分散コンピューティングシステム内の様々な構成要素間の例示的ワークフローを与える通信ダイアグラムである。 [0016]本発明の態様による、分散コンピューティング環境内のリソースを提供する例示的方法を示すブロック図である。 [0017]本発明の態様による、分散コンピューティング環境内のリソースを提供する追加の例示的方法を示すブロック図である。 [0018]本発明の態様による、分散コンピューティング環境内のリソースを提供する別の方法を示すブロック図である。 [0019]本発明の態様による、分散コンピューティング環境内の分離されたリソース、スケジューリング、およびジョブを提供する方法を示すブロック図である。
[0020]様々な実施形態では、ジョブを実施するためにプラットフォームによって分散コンピューティング環境内のサービスとしてリソースを提供するシステムおよび方法が提示される。システムのリソース、システム上で実施中のジョブ、およびシステム上で実施中のジョブのスケジューラが、リソース間でジョブが容易に移行することを可能にする方式で分離される。リソースの第1のプールからリソースの第2のプールへのジョブの移行が、人間の介入なしにシステムによって実施されることが企図される。ジョブの移行は、種々のリソースについて種々のスケジューラを利用することができる。さらに、リソースのプールが、ジョブの移行に応答して、追加のリソースまたはより少数のリソースを自動的に割り振ることができることが企図される。
[0021]第1の例示的態様は、分散コンピューティング環境内のリソースを提供するコンピュータ実装方法を含む。この方法は、タスクアカウントに関連するユーザからワークアイテムを受信することからなる。さらに、この方法は、ワークアイテムからジョブを作成することからなる。加えて、この方法は、プロセッサおよびメモリを用いて、少なくとも第1の仮想マシンを第1のプールに自動的に割り振ることからなることが企図される。この方法は、第1のプール上にジョブを割り当て、第1のプール上のジョブに関するタスクをスケジューリングすることからなるものとさらに企図される。さらに、この方法は、少なくとも第2の仮想マシンからなる第2のプールにジョブを再割当てすることからなると企図される。加えて、この方法は、第2のプール上のジョブに関するタスクをスケジューリングすることからなる。
[0022]本明細書で与えられる第2の例示的態様は、プロセッサおよびメモリを有するコンピューティング装置によって実行されるとき、分散コンピューティング環境内のリソースを提供する方法を実施するコンピュータ使用可能命令を格納するコンピュータ記憶媒体を含む。この方法は、第1のスケジューラを用いて、分散コンピューティング環境内のリソースの第1のプール上のジョブをスケジューリングすることからなる。この方法はさらに、第1のプールにジョブを割り当てることからなる。加えて、この方法は、ユーザ介入なしに、ジョブが第1のプールから分散コンピューティング環境内の第2のプールに移行すべきであると決定することからなる。加えて、この方法は、第2のプール上にジョブを割り当てることからなる。この方法はさらに、プロセッサおよびメモリを使用する第2のスケジューラを用いて、第2のプール上のジョブを自動的にスケジューリングすることからなる。
[0023]本明細書で提示される本発明の第3の例示的態様は、分散コンピューティング環境内のリソースを提供するコンピュータ実装方法を含む。この方法は、タスク位置サービスで、分散コンピューティング環境内のタスクアカウントに関連するユーザからワークアイテムを受信することからなる。この方法はさらに、タスク位置サービスに関連するプールサーバで、分散コンピューティング環境の第1の仮想マシンのセットを第1のプールに自動的に割り振ることからなる。加えて、この方法は、第1のプール上の第1のジョブをスケジューリングすることからなり、第1のジョブは、ワークアイテムに関連する1つまたは複数のタスクからなる。さらに、この方法は、第1のプールのロードバランシング評価に基づいて、ジョブが分散コンピューティング環境内の第2のプールに移行すべきであると自動的に決定することからなる。加えて、この方法は、ワークアイテム/ジョブに関連する少なくとも1つのタスクを第2のプールに移行することからなる。この方法はまた、第2のプールの1つまたは複数のリソース上の少なくとも1つのタスクをスケジューリングすることからなる。
概説
[0024]ネットワークを介するデータ伝送の速度の向上および他のネットワーク機能の改善のために、コンピューティングリソースが大きなネットワークにわたって分散する環境で大規模コンピューティングタスクを実施することがますます可能となっている。第1の位置のユーザは、コンピューティングサービスに、ジョブまたはコンピューティングタスクをサブミットし、ユーザがそれに対する直接的な知識を持たないコンピュータのグループ上で、タスクを実施させることができる。ユーザのタスクを実施するコンピューティングリソースは、複数の物理的位置にわたって分散することがあり、複数の物理的位置は、種々の州、国、および/または大陸に及ぶことがある。1つまたは複数の位置に位置するコンピューティングリソースの第1のグループは、ユーザのコンピューティングタスクを実施するデータおよび他の情報を格納することができ、一方、同一の位置、または場合によっては1つまたは複数の位置の異なるセット内のコンピューティングリソースの第2のグループを使用して、コンピューティングタスクを実施することができる。さらに、ユーザによる知識を伴って、または伴わずに、データを格納する1つまたは複数の位置を種々の地理的領域にわたって分散させることができることが企図される。同様に、ユーザの知識を伴って、または伴わずに、コンピューティングリソースを種々の地理的位置にわたって分散させることができることが企図される。
[0025]様々な分散コンピューティングリソースへのアクセスは、コンピューティングリソースがどこに位置するかを気にすることなく、ユーザが(例えばプロセスを実行する)ジョブタスクを実施することを可能にする。分散リソースはまた、指定の時間または所望のコスト価値でコンピューティングタスクを完了することなどのコンピューティングタスクの目標を満たすために使用されるリソース量をユーザがスケールアウト(またはスケールイン)する機会を与える。しかし、ユーザのためにこの柔軟性を提供することは、分散コンピューティングリソースのオペレータ(および/または所有者)に対していくつかの課題を課す。要求を満たすために、リソースの分散ネットワークのオペレータは、ピーク需要時のリソース要求を満たすために十分な利用可能なリソースを有することが好ましい。
例示的コンピューティング環境
[0026]図面を全般的に参照し、具体的には最初に図1を参照すると、本発明の実施形態を実装するのに適した例示的動作環境が示されており、全体的にコンピューティング装置100として示されている。コンピューティング装置100は、適切なコンピューティング環境の一例にすぎず、本発明の使用または機能の範囲に関して何らかの制限を示唆することを意図するものではない。コンピューティング装置100が、図示されるモジュール/構成要素のうちのいずれか1つまたは組合せに関する何らかの依存関係または要件を有すると解釈すべきでもない。
[0027]コンピュータ、または携帯情報端末や他のハンドヘルド装置などの他のマシンによって実行されるプログラムモジュールなどのコンピュータ実行可能命令を含むコンピュータコードまたはマシン使用可能命令の一般的状況で実施形態を説明することができる。概して、ルーチン、プログラム、オブジェクト、モジュール、データ構造などのプログラムモジュールは、特定のタスクを実施し、または特定の抽象データタイプを実装するコードを指す。ハンドヘルド装置、コンシューマエレクトロニクス、汎用コンピュータ、専用コンピューティング装置などを含む様々なシステム構成で実施形態を実施することができる。通信ネットワークを通じてリンクされるリモート処理装置でタスクが実施される分散コンピューティング環境で実施形態を実施することもできる。
[0028]引き続き図1を参照すると、コンピューティング装置100は、以下の装置を直接的または間接的に結合するバス110を含む:メモリ112、1つまたは複数のプロセッサ114、1つまたは複数のプレゼンテーションモジュール116、入出力(I/O)ポート118、I/Oモジュール120、および例示的電源122。バス110は、1つまたは複数のバス(アドレスバス、データバス、それらの組合せなど)とすることができるものを表す。図1の様々なブロックは、見やすいように線で示されているが、実際には、様々なモジュールを描くことはそれほど明確ではなく、比喩的には、線は、より正確にはあいまいでファジーなものとなる。例えば、ディスプレイ装置などのプレゼンテーションモジュールをI/Oモジュールとみなすことができる。さらに、プロセッサはメモリを有する。本明細書の発明者らは、そのようなことは当技術分野の性質であることを認め、図1のダイアグラムは、1つまたは複数の実施形態と共に使用することのできる例示的コンピューティング装置の例にすぎないことを繰り返し述べておく。「ワークステーション」、「サーバ」、「ラップトップ」、「ハンドヘルド装置」などのようなカテゴリ間の区別は、そのすべてが図1の範囲内で企図され、「コンピュータ」または「コンピューティング装置」に対する参照であるので、行われない。
[0029]コンピューティング装置100は、典型的には、様々なコンピュータ可読媒体を含む。限定ではなく例として、コンピュータ可読媒体は、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、電子消去可能プログラマブル読取り専用メモリ(EEPROM)、フラッシュメモリ、または他のメモリ技術、CDROM、デジタルバーサタイルディスク(DVD)、または他の光もしくはホログラフィック媒体、磁気カセット、磁気テープ、磁気ディスクストレージ、または他の磁気記憶装置、あるいは所望の情報を符号化するのに使用することができ、コンピューティング装置100でアクセスすることのできる任意の他の媒体を含むことができる。
[0030]メモリ112は、揮発性および/または不揮発性メモリの形態の非一時的コンピュータ記憶媒体を含む。メモリは、取外し可能、取外し不能、またはそれらの組合せでよい。例示的ハードウェア装置は、固体メモリ、ハードドライブ、光ディスクドライブなどを含む。コンピューティング装置100は、メモリ112またはI/Oモジュール120などの様々なエンティティからデータを読み取る1つまたは複数のプロセッサを含む。プレゼンテーションモジュール(複数可)116は、ユーザまたは他の装置にデータ指示を提示する。例示的プレゼンテーションモジュールは、ディスプレイ装置、スピーカ、印刷モジュール、振動モジュールなどを含む。I/Oポート118は、I/Oモジュール120を含む他の装置にコンピューティング装置100を論理的に結合することを可能にし、他の装置の一部を内蔵することができる。例示的モジュールは、マイクロフォン、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナ、プリンタ、ワイヤレス装置などを含む。
定義
[0031]「アカウント」は、分散コンピューティング環境内のグローバル一意識別のエンティティ(global uniquely identified entity)である。一実施形態では、以下で論じるリソースおよびタスクのすべては、アカウントの範囲内にある。典型的には、ユーザは、分散コンピューティングシステムのリソースを使用する前にアカウントをまず作成する。アカウントを作成した後、ユーザは、アカウントを使用して、システムにワークアイテムをサブミットし、ワークアイテムに基づいてジョブを実施するリソースを管理することができる。
[0032]「ワークアイテム」は、分散コンピューティング環境内で実行されるジョブの静的表現である。ワークアイテムは、ジョブバイナリ(job binary)、処理すべきデータに対するポインタ、および任意選択でジョブを実施するタスクを立ち上げるためのコマンドラインを含む、ジョブの様々な側面を指定することができる。さらに、ワークアイテムは、反復スケジュール(reoccurrence schedule)、優先順位、および制限を指定することができる。例えば、ワークアイテムは、毎日午後5時に立ち上げるように指定することができる。
[0033]「ジョブ」は、ワークアイテムの実行中インスタンスである。ジョブは、分散計算を実施するために共に働くタスクの集合を含む。タスクは、分散コンピューティング環境内の1つまたは複数の仮想マシン上で実行することができる。ジョブは、以下で図2に関連してより詳細に論じられる。
[0034]「タスク」は、ジョブの基本実行単位である。各タスクは仮想マシン上で実行される。ユーザは、コマンドラインに対する追加の入力、および各タスクについての入力データに対するポインタを指定することができる。タスクは、タスクの実行中に、タスクを実施する仮想マシン上のその作業ディレクトリ下にファイルの階層を作成することができる。
[0035]「ジョブ・マネージャ・タスク」(本明細書では「JMタスク」とも呼ばれる)は、ジョブ内の特別なタスクである。ジョブ・マネージャ・タスクは任意選択であり、したがって一部のジョブを、JMタスクを使用せずに実施することができる。ジョブ・マネージャ・タスクは、ジョブ内のタスクのすべてについて単一の制御点を提供することができ、ジョブに関する「マスタ」タスクとしてマネージャタスクを使用することができる。ジョブがJMタスクを有する場合、システムは、JMタスクをジョブ内の第1のタスクとして立ち上げる。次いで、JMタスクは、ジョブにさらにタスクをサブミットすることができ、これらのタスクの進行を監視し、タスクの次のバッチをいつサブミットするかを制御することができる。しかし、JMタスクがジョブに関連するときであっても、システムの外部の1つまたは複数のサービスによってタスクをジョブにサブミットすることもできることも企図される。このようにして、JMタスクは、ジョブ内のタスクのスケジューリングを調整し、タスク間の依存関係を管理することができる。ジョブ・マネージャ・タスクに関するノードまたは仮想マシンに障害が発生した場合、JMタスクが対応するジョブについて常に実行中となるように、別の仮想マシン上でJMタスクを再スタートすることができる。例示的態様では、JMタスクが別の仮想マシン上で自動的に再スタートされる。加えて、ユーザは、JMタスクが完了した後に、対応するジョブ内のすべてのタスクをシステムが終了することができることをシステムに指定することができる。例示的JMタスク(またはジョブ・タスク・マネージャともよばれる)は、図2に関連して以下で論じられる。
ジョブ
[0036]上記で定義したように、ジョブは、ワークアイテムの実行中インスタンスである。図2に、本発明の態様による、例示的ジョブ200のブロック図を示す。ジョブ200は、タスク204などの複数のタスクからなる。上記でやはり定義したように、タスクは、タスクテナント内の仮想マシン(本明細書ではタスクマシンとも呼ばれ、以下で論じられる)によって実行されるジョブの基本実行単位である。複数のタスクに加えて、任意選択で、ジョブ200は、ジョブ・タスク・マネージャ202(本明細書ではJMタスクとも呼ばれる)からなることがある。ジョブ・タスク・マネージャ202は、ジョブ200内の他のタスク(例えば、タスク204)のすべてについて単一の制御点を提供することができる。
[0037]本明細書でより詳細に論じられるように、ワークアイテムはジョブの静的表現である。例示的実施形態では、分散コンピューティングシステムのリソースが計算リソースを開始する(例えば、ジョブをロードし、ジョブをキューに入れ、ジョブ内のタスクをインスタンス化する)と、ワークアイテムはジョブと呼ばれる。別の言い方をすれば、例示的態様では、システムがワークアイテムの処理を開始すると、ワークアイテムはジョブとなる。
仮想マシンプール
[0038]仮想マシンとは、処理能力の論理単位を指す。仮想マシンは、物理プロセッサと1対1対応を有することができ、または仮想マシンは、複数のプロセッサに対応することができ、または仮想マシンは、1つまたは複数のプロセッサ上の処理時間/サイクルの割合を表すことができる。そのことに関わらず、例示的態様では、仮想マシンを少なくとも部分的に、図1のコンピューティング装置100によって説明できることが企図される。
[0039]様々な実施形態では、ワークアイテムに基づくジョブを実施することのできる仮想マシンが、使用前にワークアイテムに関するアカウントに関連付けられる。「プール」は、仮想マシンの論理グルーピングである。図3に、本発明の態様による、仮想マシン302などの複数の仮想マシンからなるプール300のブロック図を示す。プールは、種々のデータセンタ、異なる地理的位置、および種々の物理的構成に及ぶ仮想マシンを割り振っていることがあることが企図される。
[0040]例示的態様では、ワークアイテムは常に、ワークアイテムに対応するジョブ(複数可)を実行するために少なくとも1つの関連するプールを有する。各アカウント(例えば、タスクアカウント)は、アカウントに関連するワークアイテムを実施する際に使用される、それに対する排他的アクセスをアカウントが得る1つまたは複数のプールを作成することができる。ワークアイテムがユーザによってサブミットされるとき、プールを作成することができ、またはワークアイテムを既存のプールに関連付けることができる。任意選択で、アカウントに対応する単一のワークアイテムまたはワークアイテムのサブセットと共に使用するためにプールを関連付けることができる。さらに、ジョブのためにシステムによってプールを自動的に作成できることが企図される。例えば、反復ワークアイテムが毎日特定の時刻に実行され、通常は完了するのに2時間を必要とすることがある。この例では、ジョブが作成されるとき、プールを毎日自動的に作成することができ、ジョブが完了したとき、プールを削除することができる。
[0041]ワークアイテムがユーザによってサブミットされるとき、例示的態様では、ワークアイテムを仮想マシンの1つまたは複数のプールに関連付けることができる。さらに、ワークアイテムを単一のプールに排他的に関連付けることができることが企図される(さらに、複数のワークアイテム/ジョブを共通プールに関連付けることができることが企図される)。任意の好都合な方式で、仮想マシンをプール内に編成することができる。例えば、仮想マシンに関する基礎となるプロセッサの地理的位置の如何に関わらず、すべての仮想マシンを単一のプール内に編成することができる。別のオプションは、プールに関するすべての仮想マシンが所与の地理的位置内にあるように、地理的位置に基づいて仮想マシンを編成することである。さらに別のオプションは、他の変数(例えば、ストレージリソース、ネットワーク待ち時間、ユーザ位置/プリファレンス、およびセキュリティ要件)に対する近接などの地理的位置以外に基づいて仮想マシンを編成することである。
[0042]プールを形成する、別の企図されるプロセスは、システムリソースを利用してプールを自動的に生成する。自動プール作成は、ワークアイテムが作成されるとき、またはジョブ自体が作成されるときに、システムによってプールを自動的に作成することを可能にする。このプロセスは、顧客/ユーザ/クライアントからのプールの作成を抽象化する。このモード動作では、顧客/ユーザ/クライアントは、ワークアイテムまたはジョブを実行するその責任が限定される。例示的態様では、ジョブを実行するときにプールが自動的に作成され、ジョブが終了したときにプールが自動的に解体される。さらに、ワークアイテムが作成されるときにプールが自動的に作成され、ワークアイテムが削除される/終了するときにプールが自動的に解体(tear down)されることが企図される。
[0043]例示的態様では、仮想マシンが1つのタスクおよび/または多数のタスクを実行できることが企図される。さらに、複数のジョブが同一の仮想マシンプール上で実行できることが企図される。例示的態様では、VMプールは、ユーザ介入なしに、かつジョブからの明示的な処理なしに、サイズが自動的に増大および収縮することができる。例えば、ジョブは、プールの拡大または収縮を補償する役目を果たさないことがある。同様に、ジョブが複数のプール及ぶことができることが企図される。VMリソース内で独立して増大および収縮することのできる複数のプールにわたってジョブをロードバランシングすることにより、複数のプールに及ぶことを達成することができる。さらに、プールが所与の時間に0個の仮想マシンからなることがあることが企図される。このことは、ジョブが実行するタスクがないときに生じることがある。その結果、計算リソースを節約するための期間中に、プールが0個のVMまで収縮することがあることが企図される。
専用マシン、スタンドバイマシン、およびプリエンプティブル(Preemptible)マシン
[0044]例示的実施形態では、仮想マシンがプールに割り当てられるとき、仮想マシンは、2つのタイプのうちの(少なくとも)1つにあることができる。仮想マシンを専用仮想マシンまたはプリエンプティブル仮想マシンとしてプールに割り当てることができる。仮想マシンの専用またはプリエンプティブルとしてのステータスは、仮想マシンがプール内にある間に変化することもできる。
[0045]「専用」仮想マシンは、プールに割り当てられたワークアイテム/ジョブが専用に使用するためのプールに割り当てられたマシンである。任意選択で、プールにサブミットされた任意のジョブについて全般に利用可能であるのではなく、1つまたは複数の関連するワークアイテムのために専用に使用するために専用仮想マシンを割り当てることができる。仮想マシンが専用ステータスを有する間、マシンは、プールに関連するワークアイテム/ジョブによる使用のために予約される。
[0046]「プリエンプティブル」仮想マシンは、アカウントの代わりにプール内のジョブを現在実施している仮想マシンであるが、仮想マシンがそのプールのために引き続き利用可能となるという保証はない。プリエンプティブル仮想マシンがプールに対して利用可能にされるとき、プリエンプティブルマシンがそのプールに追加され、次いでそのプールをワークアイテム/ジョブで使用することができる。次いで、プリエンプティブルマシンは、そのプールに関するジョブを実施するためにプロビジョニングされ、使用される。アカウントの代わりに、プールに、リソースオークションでプリエンプティブル仮想マシン上の処理時間を勝ち取らせることなどの任意の好都合な方法により、プールに対してプリエンプティブルマシンを利用可能にすることができる。
[0047]アカウントに対する使用のために利用可能にされる仮想マシンは典型的には、分散コンピューティング環境で別の目的を有する仮想マシンである。例えば、プリエンプティブル仮想マシンの1つのソースは、災害回復目的で分散コンピューティング環境所有者/オペレータによってプロビジョニングされる仮想マシンである。安定した動作を実現するために、分散コンピューティング環境は、予備で保持される1つまたは複数のグループ仮想マシンを含むことができる。これらの予備仮想マシンは、プロセッサ障害、ネットワーク障害、または結果として分散環境の一部がもはやジョブを実施するのに適さなくなる任意の他の種類のイベントのために失われるリソースを置き換えるために利用可能である。プールに割り当てられた1つまたは複数の専用仮想マシンがイベントのために失われたとき、予備仮想マシンを使用して、失われたマシンを置き換えることができる。これは、分散コンピューティング環境内のリソースの可用性を改善する。しかし、障害イベントはまれであることが望ましいので、災害回復マシンの確保は多くの場合、多数の仮想マシンがアイドル状態であり、使用されるのを待機していることを意味する。障害イベントを処理するために指定されるこれらの仮想マシンのCPUサイクルを浪費するのではなく、これらの仮想マシンのCPUサイクルをプリエンプティブルVMとしてプールに割り当て、ワークアイテムを実行することができる。障害が発生し、専用リソースの要件を満たすためにシステムがプリエンプティブルリソースを取り去る必要がある場合、失われたリソースまたは障害が発生したリソースを置き換えるという元の目的のためにプリエンプティブル仮想マシンを使用することができるように、そのような仮想マシン上で実行中のプリエンプティブルジョブが、実現可能な限り早く(恐らくは直ちに)停止することになる。
[0048]プリエンプティブルマシンの別のソースは、過剰能力仮想マシン(excess capacity virtual machine)である。典型的には、どんなネットワークのピーク負荷も平均負荷とは異なる。その結果、ピーク負荷状況に対処するのに十分なリソースを備えるコンピューティング環境はしばしば、他の時間の間、利用可能な過剰なリソースを有する。こうした過剰なリソースがリソースクッションを提供する。ユーザが追加の専用仮想マシンを求める要求を行うとき、過剰な仮想マシンを使用してユーザの要求を履行することができる。分散コンピューティング環境が専用マシンに関するピーク負荷未満の負荷を有するとき、1つまたは複数の仮想マシンが空きとなる。予備能力を提供するために指定されるこれらの仮想マシンのCPUサイクルを浪費するのではなく、これらの仮想マシンのCPUサイクルをプリエンプティブル的にユーザおよびプールに割り当てることができる。専用仮想マシンを求める要求の負荷が増大するとき、これらの過剰な仮想マシン上で実行中のプリエンプティブルジョブが、実現可能な限り早く(恐らくは直ちに)停止することになる。これは、必要なときに追加の専用リソースを提供するという元の目的のためにプリエンプティブル仮想マシンを使用することを可能にする。加えて、または代わりに、専用マシンに関する負荷の一部の増大は、専用マシンを求めるスケジューリングされた要求によるものとなる。仮想マシンがスケジューリングされた時刻に専用マシンとして使用するために利用不能となろうとしている場合、プリエンプティブルジョブから専用リソースへの規則的な遷移を可能にするために、スケジューリングされた時刻の前に、仮想マシンに割り当てられたプリエンプティブルジョブを停止することができる。
[0049]仮想マシンのさらに別のソースは、「スタンドバイ」予約でプールまたはアカウントに関連付けられる仮想マシンである。「スタンドバイ」仮想マシン予約は、第1のアカウントまたはプールに関連付けられ、第1のアカウントまたはプールによる使用のためにプロビジョニングされる仮想マシン予約である。さらに、スタンドバイ仮想マシン予約が特定のプールにタグ付けさず、その代わりにアカウントまたはプールによってスタンドバイのために保たれる定義済みの数のVMをシステムが維持することが企図される。スタンドバイVMが必要であるとき、必要な数のVMを満たすようにスタンドバイVMの予約数を削減することができる。例示的態様では、システム内の全VM数は、専用VM+予約されたスタンドバイVM+他の所に割り当てられない計算のために空いているVM+災害おび他のプロビジョニングのために予約されているVMに等しくてよい。この例では、システムで使用されるプリエンプティブルVMの数が、予約されるスタンドバイVM+コンピューティングのために空いているVMの数以下であることが企図される。
[0050]スタンドバイマシン予約をプロビジョニングすることは、システム内のどこか(例えば、プールレベル、アカウントレベル)にVM能力を確保することを含むことができる。スタンドバイ仮想マシン予約は仮想の割振りではない。そうではなく、スタンドバイ仮想マシン予約は、アイドルまたはプリエンプティブルVMを取り、それをそのプールまたはアカウント使用のために専用VMに変更する将来の権利を予約する。カウントであるスタンドバイVMを2つの異なるプールに関連付けることができる。
[0051]スタンドバイマシンに関する1つの使用は、特定の時間フレーム中にのみ行われる高優先順位計算ジョブを有するユーザに関するものである。例えば、金融会社は、証券取引所や商品取引所などの1つまたは複数の金融市場の日々の活動の分析を実施したいことがある。この例を続けると、金融市場は、午前9:30に開き、午後4:00に閉じるなど、定義済みのスケジュールで開き、閉じることがある。金融会社は、分析またはシミュレーションを実施する際に使用するために、金融市場が開いている時間からデータを集約することを望む。分析の目標は、市場が翌日に開く前に、従業員のための情報を提供することである。そのような分析は多数の仮想マシンを必要とする可能性があるが、仮想マシンが必要なのは、例えば午後6:00から翌朝の午前3:30までの時間だけである。この時間中、金融会社は、仮想マシンの可用性の保証を望む。その日の残りの間は、金融会社はマシンを必要としない。金融会社のアカウントにスタンドバイ仮想マシン予約を割り当てることが、この目標を達成する。予約価格を支払うのと引き換えに、金融会社は、所望の時間中のマシンの可用性が保証される。所望の時間ウィンドウの外部では、仮想マシンを金融会社および/または他のユーザ用のプリエンプティブルマシンとして使用することができる。予約を履行するためにプリエンプティブルVMを取る必要があるスタンドバイ予約を実行するとき、スケジューリングされた可用性イベントの前に、プリエンプティブルジョブを規則的に停止することができる。
[0052]スタンドバイVM予約が専用マシンに変換されるとき、これは、時間ベースの基準に基づく変換と定義される。言い換えれば、スタンドバイVM予約は、所定の時間および/または日付に少なくとも部分的に基づいて専用マシンに変換される。時間ベースの基準は、活動しきい値を定義するのに使用される活動基準とは対照的である。活動しきい値は、1つまたは複数の分散リソースの使用および/または性能に基づくしきい値に対応する。例えば、アカウントでは、顧客は、いくつかのスタンドバイVMを予約するために支払いをすることができ、そのスタンドバイVM予約を時間ベースの基準または動的しきい値自動スケーリング基準のどちらかのために使用することができる。さらに、予約時間または他のスケジューリング予約ポリシーの如何に関わらず、任意の時点でスタンドバイVM予約を変換することができることが企図される。例えば、ユーザ(または管理者)は、予約からの1つまたは複数のスタンドバイVMを変換すべきであるという要求を与えることができる。
[0053]スタンドバイVM予約に関する別の使用は、ジョブをスケールアウトするときに性能の改善を可能にすることである。例えば、小売店は、分散コンピューティングリソースを使用して、小売業者のウェブサイトを検討して注文を行うオンライントラフィックなどの、祝日前のショッピングシーズン中の追加のオンライントラフィックを処理することができる。過去の経験に基づいて、小売業者は、一定のレベルのオンライン活動を予想し、対応する数の専用仮想マシンを予約する。しかし、オンライン活動が予想よりも大きい場合、小売業者は、スタンドバイモードの追加のマシンも予約する。次いで、小売業者は、予想されるレベルの活動よりも高いことを示す1つまたは複数のしきい値をセットアップすることができる。これらのしきい値が生じたとき、小売業者の顧客が低速な応答時間を経験することなく小売業者が追加のオンライントラフィックを処理することを可能にするように、スタンドバイVM予約を使用してアイドルマシンまたはプリエンプティブルマシンを変換することができる。この状況では、活動しきい値がいつ満たされるかは既知ではないことがあるので、スタンドバイVM予約が予測できない時間に専用マシンに変換されることがある。活動しきい値が満たされるとき、アイドルVMが使用され、またはプリエンプティブルタスクが停止し、マシンが専用マシンに変換される。
分散ネットワーク環境内のコンピューティングリソースの編成の例
[0054]分散コンピューティング環境のユーザは典型的には、分散コンピューティングリソース(例えば、クラウドコンピューティングリソース)を使用してジョブを実施することを望む。ジョブは典型的には、ネットワーク(例えば、インターネット)などによって分散コンピューティング環境を介してアクセス可能な位置に格納されるデータに対するジョブを実行することを含む。オペレータが分散コンピューティング環境を提供する一方式は、環境をいくつかの層として提供することである。図4に、本発明の態様による、分散コンピューティング環境内のタスクを実施するのに適した例示的システムの層を形成するブロック図を示す。図4のシステムは、システム・エージェント・ランタイム層408(タスクランタイム層とも呼ばれることがある)、アプリケーション・ランタイム層406(サードパーティ・タスク・ランタイム層とも呼ばれることがある)、リソース管理層402、ならびにスケジューリングおよび実行層404を含む。
[0055]図4に示す実施形態では、システム・エージェント・ランタイム層408は、実行環境、および実行環境でプールおよびワークアイテム/ジョブ/タスクを実行するためのセキュリティコンテキストをセットアップする役目を果たす。システム・エージェント・ランタイム層408はまた、タスクを立ち上げ、タスクのステータスを監視することができる。システム・エージェント・ランタイム層408は、各仮想マシン上で動作するシステムエージェントの形を取ることができる。タスクランタイム層はまた、ユーザのタスク実行ファイル(task executable)にリンクすることができるランタイムライブラリも含むことができる。ランタイムライブラリをシステム・エージェント・ランタイム層408として有することは、システムエージェントによって実行されるタスクにより豊かな能力を潜在的に与えることができる。ランタイムライブラリの例は、タスク間の高速通信を可能にする1つまたは複数の効率的な通信ライブラリと、他の仮想マシンおよび/または他のタスクからファイルを読み取るための効率的なリモート・ファイル・アクセス・ライブラリ・サポートと、タスクが(例えば、バイナリ大型オブジェクトに)チェックポイントし、再開することを可能にするライブラリ、ロギングライブラリと、仮想マシンのプール内の所与のタスクを実施する仮想マシンにわたって使用される分散ファイルシステムを提供するライブラリとを含む。
[0056]アプリケーション・ランタイム層406は、システム・エージェント・ランタイム層408の上部で追加のランタイムを構築および実行することを可能にする。アプリケーション・ランタイム層406は、ジョブに関するタスクの実行を調整する追加の機能を提供することができる。例は、VMのプール内の所与のタスクを実施するVMにわたって使用される分散ファイルシステムを提供するライブラリに対するMap Reduceランタイムを含むことができる。これは、ユーザがユーザのジョブまたはタスクに合わせて調整する方式で分散コンピューティング環境を編成することを可能にする。
[0057]リソース管理層402は、分散コンピューティング環境で利用可能なコンピューティングリソースを管理することを扱う。1つのオプションは、リソース管理層402に3つの異なるレベルでリソースを管理させることである。第1のレベルで、リソース管理層402は、ジョブ(すなわち、ワークアイテムの実行)に関連する仮想マシンの割振りおよび割振り解除、ならびに仮想マシンレベル410で示されるタスクに関連する各仮想マシン上に格納されたファイルを管理する。
[0058]第2のレベルで、ジョブに関連する仮想マシンを、プールレベル412で示されるマシンプールにグループ化することができる。プールは、1つまたは複数のジョブおよび/またはワークアイテムに関連する仮想マシンを含むことができる。実施形態に応じて、単一のプールは、データセンタ内のすべてのクラスタ、複数のデータセンタにわたる複数のクラスタなどの複数のクラスタにわたることができる。単一のプールは、数百万などの多数の仮想マシンを含むことができる。仮想マシンを数十億などの多数のプールに含めることができる。
[0059]リソース管理層402の第3のレベルで、リソース管理層は、タスクテナントのそれぞれのサイズを管理する(以下で論じる)。これは、システムが全体として、システムの現負荷、他の割振りのためのシステムへの未使用仮想マシンを適時の解放などのいくつかのメトリックに基づいて利用される計算リソースの量を動的に調節することを可能にする。このレベルは、テナントレベル414によって示される。
[0060]図4に示す実施形態では、スケジューリングおよび実行層404は、ユーザによって実施されているワークアイテム、ジョブ、およびタスクを管理する。スケジューリングおよび実行層404は、スケジューリング決定を行い、ジョブおよびタスクならびに障害時の再試行を立ち上げる役目を果たす。そのようなスケジューリングおよび実行層404は、ジョブおよび/またはタスクを様々なレベルで管理する構成要素を含むことができる。
[0061]例示的構成要素は、ワークアイテムおよびジョブ管理構成要素416、タスク管理およびスケジューリング構成要素418、ならびにジョブ・マネージャ・タスク構成要素420を含むことができる。ワークアイテムおよびジョブ管理構成要素416は、1人または複数のユーザ(またはすべてのユーザ)が作成した/システムに通信したすべてのワークアイテムを維持する。次いで、アクティブなワークアイテムのそれぞれの仕様に基づいて、システムは、タスクがそれに対してサブミットされるジョブおよびジョブキューを作成することができる。ワークアイテムは、反復スケジュールを指定することができる(例えば、毎日午後5時)。次いで、システムは、ワークアイテムに関する反復スケジュールに従ってジョブを作成することができる。ワークアイテムおよびジョブ管理構成要素416はまた、システム内のワークアイテムおよびジョブの終了およびクリーンアップを管理する役目も果たすことができる。
[0062]タスク管理およびスケジューリング構成要素418は、システムのユーザがシステムのジョブにタスクをサブミットする(例えば、通信する)ことを可能にする。この構成要素は、システム内のジョブ/ワークアイテムのすべてにわたってタスクをスケジューリングすると共に、これらのタスクのステータスを追跡する役目を果たす。タスク管理およびスケジューリング構成要素418は、タスクテナント(すなわち、タスクマシン)の1つ/一部/すべてにわたって分散するタスクスケジューラのセットを含むことができ、各スケジューラがリソース(例えば、仮想マシン)およびタスクの限られたセットのみと関連付けることを可能にする。したがって、例示的態様では、タスク管理およびスケジューリング構成要素418は、システムが、様々なタスクテナントにわたる仮想マシン上で実行中の数十億のアクティブなタスクをサポートすることを可能にする。
[0063]ジョブ・マネージャ・タスク構成要素420は、任意選択で各ジョブに関連付けることのできるJMタスクを、ジョブの初期タスクとして立ち上げることを可能にする。先に論じたように、JMタスク(タスクジョブマネージャとも呼ばれる)は、特定のジョブ内のタスクの単一の制御点を提供する。これは、JMタスクがジョブに追加のタスクをサブミットし、これらのタスクの進行を監視することを可能にし、それは、JMタスクがジョブをいつ終了するかを制御することを可能にする。JMタスクは、アプリケーション・ランタイム層406がそのシステムを制御および実行する援助する制御を機構の一例とすることができる。
[0064]上述の層を、複数の地理的位置のプロセッサを含む分散コンピューティング環境で実装することができる。図5に、本発明の態様による、単一の分散コンピューティングシステム500内に統合することのできる、種々の位置のプロセッサの例示的構成を示すブロック図を示す。
[0065]図5では、1つまたは複数のタスクテナント514を使用して、仮想マシンのプールを管理することができる。タスクテナント514は、(図9に関連して以下でより詳細に論じるように)仮想マシンのセットを維持することができる。1人または複数のユーザのジョブは、タスクテナント514内の仮想マシン上で、仮想マシンの1つまたは複数のプールの部分として実行することができる。所与の地理的領域で1つまたは複数のタスクテナント514を使用することができる。タスクテナント514の責任は、仮想マシンのセットを維持すること、およびタスクテナント内のリソース利用に基づいてタスクテナントを動的に増大または収集することを含むことができる。これは、タスクテナント514が顧客需要の増大に対処するためにタスクテナント内の仮想マシン数を増加させることを可能にする。これはまた、他の顧客に関するデータセンタ処理サービス内の他のホストされるサービスに仮想マシンを割り振ることができるように、タスクテナント514が未使用の仮想マシンを解放することも可能にする。タスクテナント514の別の責任は、プール割振り/割振り解除/管理ロジックの部分を実装することとすることができる。これは、どのように仮想マシンが顧客に関するタスクに関連するプールに割り当てられるかを決定することにタスクテナント514が参加することを可能にする。タスクテナント514はまた、タスクテナント内の仮想マシン上のタスクのスケジューリングおよび実行の役目も果たすことができる。
[0066]図5に示す実施形態では、(図6〜図8に関連して以下でより詳細に論じるように)所与の地理的領域内の、および/または様々な地理的領域にわたるタスクテナント514のすべてを制御する1つまたは複数のタスク位置サービス512(「TLS」)が設けられる。図5では、「地理領域1」および「地理領域2」と名前が付けられた領域をサービスするタスク位置サービス512が示されている。タスク位置サービス512の責任は、その所与の領域に関するタスクアカウントの管理を含むことができる。タスク位置サービス512はまた、ユーザが分散コンピューティング環境と対話することを可能にするアプリケーションプログラミングインターフェース(API)も提供することができる。そのようなAPIは、仮想マシンのプールに関連するAPI、プール管理ロジック、および所与の地理的領域内のタスクテナントにわたるプール管理ロジックの調整を処理することを含むことができる。APIはまた、ユーザによってサブミットされたタスクを処理するAPI、ならびにユーザタスクに関連するワークアイテムまたはジョブを維持し、スケジューリングし、終了するAPIも含むことができる。APIは、地理的領域内のすべてのワークアイテム、ジョブ、タスク、およびプールに関する統計収集、アグリゲーション、およびレポーティングのためのAPIをさらに含むことができる。加えて、APIは、仮想マシンに関するスポットマーケットに基づいて短期的にユーザにとってプリエンプティブルVMとして利用可能な仮想マシンのオークションを可能にするAPIを含むことができる。APIはまた、使用量を計量し、課金サポート(billing support)を提供するAPIも含むことができる。
[0067]グローバル位置サービス502(「XLS」)によってタスク位置サービス512を互いにリンクすることができる。グローバル位置サービス502は、タスク位置サービス512と共にタスクアカウントを管理することを含む、アカウント作成およびアカウントの管理の役目を果たすことができる。例えば、グローバル位置サービスは、データセンタ災害の場合に災害回復およびワークアイテムおよびジョブの可用性の役目を果たすことができる。これは、データセンタが利用可能ではないために、異なる位置でワークアイテムまたはジョブを実行すること、ならびに顧客がそのワークアイテム、ジョブ、およびプールをあるデータセンタから別のデータセンタに移行することを可能にすることを含むことができる。典型的には、所与の時間にシステム500内に存在するアクティブなグローバル位置サービス502は1つだけとなる。このアクティブなグローバル位置サービス502は、様々なタスク位置サービス512ならびにデータ記憶を管理するサービス構成要素(図示せず)と通信する。グローバル位置サービスは、ドメイン名サーバ504などでグローバルアカウント名前空間を維持することができる。
[0068]図5のシステムの動作の一例として、仮定の顧客またはユーザが、クライアントポータル506を使用してシステム500にアクセスし、グローバル位置サービス502によって提供されるインターフェースを介してタスクアカウントを作成することができる。この例では、仮定の顧客はサリーと呼ばれる。任意選択で、タスクアカウントを作成するユーザ要求は、アカウントを作成する必要のある地理的領域を指定することができる。この例では、サリーが、地理領域1に関連するアカウントを要求し、地理領域1は地理領域2のフェイルオーバ領域を有する。それに応答して、グローバル位置サービス502は、要求された地理的領域(例えば、地理領域1)に対応するタスク位置サービス512と連絡を取り、アカウントを作成する。領域が要求されない場合、要求側ユーザまたは利用可能なリソースに関連する位置などに基づく任意の好都合な方法で選択された領域でタスクアカウントを作成することができる。タスク位置サービス512は、その地理的領域内のすべてのアカウントに関するすべての情報を維持する。首尾よく地理領域1に関するタスク位置サービス512でアカウントを作成し、潜在的には地理領域2で災害回復コピーを作成した後、グローバル位置サービス502は、地理領域1に関するタスク位置サービス512の仮想IPアドレスを指すようにサリーのアカウントに関するタスク・サービス・エンドポイントを登録する。例えば、「sally.task.core.servicecompany.net」などのホスト名を地理領域1内のタスク位置サービス512の仮想IPアドレスにマッピングするようにドメインネームサービス(DNS)記録を作成することができる。この例示的態様では、これは、サリーに関するタスクアカウントの作成を完了する。さらに、地理領域1での障害の場合、グローバル位置サービスは、地理領域2を指すようにDNS記録を更新できることが企図される。
[0069]アカウントが作成された後、顧客サリーは、「sally.task.core.servicecompany.net」に対して、タスクアカウントにアクセスし、分散コンピューティング環境と対話するためのAPIにアクセスする要求を送ることができる。例えば、サリーは、APIにアクセスして、新しいワークアイテムまたはタスクを作成する要求を発行することができる。次いで、DNSサーバはホスト名を解決することができ、要求が正しいタスク位置サービス512にルーティングされる。この例では、要求が地理領域1に関するタスク位置サービス512にルーティングされ、地理領域1は要求を処理し、要求されたワークアイテム、ジョブ、またはタスクを作成する。
[0070]本発明の例示的態様では、任意の数のクライアントポータル506、地理領域508、510、タスク位置サービス512、および/またはタスクテナント514を任意の組合せで実装できることが企図される。例えば、例示的態様では、タスク位置サービス512を数十、数百、または数千のタスクテナントに関連付けることができることが企図される。
[0071]図6に、本発明の態様による、タスク位置サービス602に関する潜在的構成を示すブロック図を示す。図6に示す構成では、タスク位置サービスは1つまたは複数のアカウントサーバ612を含むことができる。アカウントサーバは、作成、削除、またはプロパティ更新を含む、所与の地理的領域内のアカウントに関するアカウント管理を処理する。アカウントフロントエンド608は、アカウントサービスに関するフロントエンドノードとして働く。図示されるように、アカウントフロントエンド608はアカウント仮想IPアドレス604の背後にある。アカウントフロントエンド608は、アカウントを作成し、またはアカウントを削除するAPI要求などの、グローバル位置サービスから来るアカウントAPI要求を処理する。
[0072]図6の構成はまた、1つまたは複数のプールサーバ614も含むことができる。プールサーバ614は、所与の地理的領域内の仮想マシンのプールに関するプール管理およびプールトランザクションを処理する。プールサーバ614は、プール作成、削除、およびプロパティ更新を処理する。プールサーバ614はまた、複数のタスクテナントにわたる高レベル仮想マシン割振りアルゴリズムも管理する。仮想マシン割振りは、所与のユーザに関するストレージとの間の仮想マシンの接続性を考慮に入れることができる。プールサーバは、仮想マシンの割振りに関する他のタスクも実施することができる。
[0073]さらに、プールサーバ614がさらに自動スケーリング構成要素616からなることがあることが企図される。自動スケーリング構成要素616は、プールに関する所望の数の専用仮想マシン、スタンドバイ仮想マシン、および/またはプリエンプティブル仮想マシンを自動的に決定するユーザ提供の自動スケーリング規則(例えば、公式)を実行する役目を果たすモジュールとして形成することができる。言い換えれば、自動スケーリング構成要素は、所与のプールに関連する自動スケーリング規則に基づいて自動スケーリング決定を行う役目を果たすことができる。自動スケーリング構成要素616は、プールまたはプールに割り当てられたジョブに関するメトリックを受信し、それらをユーザ提供の(またはシステム提供の)規則と共に適用して、プールに対する自動スケーリングアクションを計算することができる。自動スケーリングアクションは、専用仮想マシン数を増加または減少させること、予約されるスタンドバイ仮想マシンを増加または減少させること、プールに関するプリエンプティブル仮想マシンの目標数を増加または減少させることと共に、それらのリソースに関する入札価格も更新することを含むことができる。
[0074]図6の構成はまた、(図8に関連して以下でより詳細に論じるように)1つまたは複数のワークアイテムまたはジョブスケジューラ(「WIJ」)618も含む。WIJスケジューラ618は、ワークアイテムおよびジョブの作成、削除、および更新を処理する。例示的実施形態では、WIJはまた、関連するワークアイテムで指定されるスケジュールに基づくジョブの作成、ならびにジョブへのJMタスクの追加(追加すべき場合)の役目も果たす。加えて、(従来のユーザによる手動作成ではなく)自動プール構成が望ましいとき、WIJスケジューラ618は、ワークアイテムに関連するプールの作成および削除を開始することができる。WIJスケジューラ618はまた、タスク位置サービス内のスケーリングのための汎用パーティショニング機構を使用することもできる。一実施形態では、各タスク位置サービス内に複数のWIJスケジューラ618があり、WIJスケジューラのそれぞれがワークアイテムの範囲を処理する。
[0075]プールサーバ614およびWIJスケジューラ618は、(図7に関連して以下でより詳細に論じるように)タスク位置サービスフロントエンド610を介してユーザから要求を受信する。タスク位置サービスフロントエンド610はまた、対応する構成要素を呼び出してユーザからの要求を処理する役目も果たす。図示されるように、タスク位置サービスフロントエンド610は、アカウント仮想IPアドレス606の背後にある。
[0076]図6の構成は、タスク位置サービスマスタ620をさらに含む。一実施形態では、タスク位置サービスマスタ620は2つの主な責任を有する。第1に、タスク位置サービスマスタ620は、タスク位置サービス602内の対応するサーバに関するパーティショニングロジックを実装するマスタシステムとして働く。加えて、タスク位置サービスマスタ620は、タスク位置サービスの地理的領域全体に関する各スポット期間の始めにプリエンプティブル仮想マシンに関する新しい市場価格を計算し、またはスポット価格決定の役目を果たす外部サービスとの間でプリエンプティブルマシンを求める入札要求を調整する役目を果たすことができる。タスク位置サービスマスタ620は、プールサーバおよびタスクテナントから現入札およびリソース可用性情報を収集し、それに応じて新しい市場価格を計算し、または情報をスポットマーケットサービスに通信する。タスク位置サービスマスタ620はまた、地理的領域内のすべてのタスクテナントにわたるプリエンプティブル仮想マシンについてのプールサーバに対する高レベル割振りガイダンスも行う。
[0077]コンピューティング環境の活動および挙動を追跡するために、タスク位置サービスマスタ620は、1つまたは複数の統計アグリゲーションサーバ622と通信することができる。統計アグリゲーションサーバは、タスク、ジョブ、ワークアイテム、およびプールに関する詳細な統計を収集および集約する役目を果たす。システム内の他の構成要素は、タスクおよび仮想マシンに関する細分化された統計を放出する。統計アグリゲーションサーバは、タスクレベルまたは仮想マシンレベル統計からのこれらの細分化された統計をワークアイテム、アカウントレベル、および/またはプールレベル統計に集約する。APIを介して使用するために統計を公開することができる。加えて、統計アグリゲーションサーバは、課金の際に使用するために各アカウントについての1時間ごとの計量記録を生成する役目を果たすことができる。
[0078]図7に、本発明の態様による、例示的タスク位置サービスフロントエンド(「TLSFE」)700を示すブロック図を示す。TLSFE700は、上記の例示的態様で論じた図6のタスク位置サービスフロントエンド610と同様であってもよい。
[0079]TLSFE700は、要求プロセッサ702、認証および許可モジュール704、アカウントマネージャ構成要素706、およびビジネスロジックモジュール708からなる。代替実施形態では、追加または代替のモジュールおよび/または構成要素が含まれることがあることが企図される。
[0080]要求プロセッサ702は、HTTP(複数可)上でエンドポイントを受信および識別し、ユーザ要求を受諾する役目を果たす構成要素である。次いで、要求プロセッサ702は、各要求をキューに入れ、認証および許可モジュール704に転送することができる。認証および許可モジュール704は、ユーザ要求認証および許可の役目を果たす。例示的態様では、TLSFEは、共用鍵認証を使用して着信要求を認証する。他の形態の認証が企図される。さらに、認証および許可モジュール704は、アカウントマネージャ構成要素706と対話して、ユーザアカウントについての情報およびキー情報を得る。次いで、認証および許可モジュール704は、どこでユーザが操作の実施を要求することを許可されるかを判定することができる(例えば、要求時にアカウントを一時的に使用不能にすることができる)。
[0081]アカウントマネージャ構成要素706を使用して、記憶/アクセスアカウント情報をカプセル化することができる。アカウントマネージャ構成要素706は、要求時に、例示的態様では、要求が受信されたとき、アカウント情報をロードし、それは、頻繁にアクセスされるアカウントの処理を加速するための(メモリへの)ローカルな情報のキャッシングを可能にする。アカウントプロパティ(例えば、使用不能状態、認証キー)が変化したとき、アカウントテーブルを更新することができる。TLSFEで実行中のアカウントマネージャ構成要素706は、キャッシュされたコピー(それが存在する場合)の有効期限が切れたとき、その変化を認識することができ、有効期限は、構成可能な間隔であってもよい。
[0082]要求が認証および許可モジュール704を通過すると、ビジネスロジックモジュール708は、ユーザによって行われる要求に関するすべてのビジネスロジックを処理することができる。ビジネスロジックモジュール708はまた、分散コンピューティングシステム内の他のタスク構成要素と対話することもできる。加えて、ビジネスロジックモジュール708が、完了したジョブ・マネージャ・タスクについてJMタスク完了キューを監視し、次いでそれは、タスクが完了したとき、図6のWIJスケジューラ618に通知を通信することを可能にすることが企図される。
[0083]図8に、本発明の態様による、例示的ワークアイテム/ジョブスケジューラ(「WIJ」)800を示すブロック図を示す。WIJ800は、図6の例示的WIJスケジューラ618であってもよい。
[0084]WIJ800は、要求プロセッサ802、キャッシングモジュール804、ハートビートモジュール806、およびスケジューリングモジュール808からなる。先に論じたように、WIJ800は、ユーザアカウントによってサブミットされたワークアイテムを受諾し、ワークアイテムスケジュール内の適切な時にジョブをスケジューリングする役割であってもよい。したがって、WIJ800がワークアイテムに関するジョブを作成し、それぞれの生み出された新しいジョブに関するキューを作成し、次いでキューが、ジョブに関するタスクをキューに入れるのに使用されることが企図される。次いで、タスクテナントのタスクスケジューラ(図9に関連して以下で論じる)が、キューからタスクを引き抜き、それらをタスクテナントの仮想マシン上でスケジューリングすることができる。WIJがワークアイテム、および完了したワークアイテム/ジョブをマーキングすること、適切なタスクテナントと連絡を取ってジョブを開始することなどの関連するジョブの寿命管理の役目を果たすことが企図される。
[0085]要求プロセッサ802は、TLSFE(図6のタスク位置サービスフロントエンド610など)から受信される要求に関する様々なワークアイテム/ジョブを処理する役目を果たすモジュールである。加えて、アカウントが削除されるとき、アカウントサーバ(例えば、図6のアカウントサーバ612)がWIJ800に要求を通信することが企図される。
[0086]キャッシングモジュール804は、WIJがサービス中のパーティション、ユーザアカウント、アクティブなワークアイテム、アクティブなジョブ、タスクテナントリストなどのメモリ内キャッシュである。このモジュールは、関連するキャッシングポリシーについてキャッシュを最新に保つ役目を果たすことができる。
[0087]ハートビートモジュール806は、タスク位置サービスマスタ(例えば、図6のTLSM620)と共に協調して、WIJのヘルスおよび負荷ステータスをレポートヘルスする。加えて、ハートビートモジュール806が「ハートビート」協調を介してTLSMから新しいパーティション割当ても受信することが企図される。
[0088]スケジューリングモジュール808は、ワークアイテムの指定のスケジュールに従ってワークアイテムに関する新しいジョブをスケジューリングする役目を果たす。スケジューリングモジュール808はまた、ワークアイテムおよび/またはジョブを完了済みとマークする役目も果たす。さらに、スケジューリングモジュール808は、ワークアイテムまたはジョブの寿命に結びつけられたその寿命を有するプールを作成および削除する役目を果たすことができる。
[0089]図9に、本発明の態様による、タスクテナント900を示すブロック図を示す。例示的態様では、タスクテナントは、図5のシステム500でタスクテナント514として実装されるものとして企図される。上記のように、タスクテナントは、仮想マシンのプールを管理することを援助することができる。図9に示す実施形態では、タスクテナントは、1つまたは複数のタスクテナントフロントエンド904を含む。タスクテナントフロントエンド904は、タスク位置サービスと、タスクテナントとの間で要求を渡すことを含む、タスクテナントと、対応するタスク位置サービスとの間の通信のために内部で使用されるタスクテナント仮想IPアドレスの背後にある。
[0090]図9に示す実施形態では、タスクテナントはまた、タスクスケジューラ902を含む。タスクスケジューラ902は、タスクテナント内のローカルタスクスケジューリング決定を行う役目を果たすことができる。タスクスケジューラ902は、それが制御する各仮想マシン上で何のタスクが実行すべきかを決定する。例えば、ユーザによってサブミットされるワークアイテムまたはジョブは、スケジューリングすべきタスクのリストを含むキューのセットを有することができる。タスクスケジューラ902は、キューのセットからタスクを取り、ジョブに関連するプール内の1つまたは複数の利用可能な仮想マシンを選択し、仮想マシン(複数可)と連絡を取ってこれらのタスクをスケジューリングする。タスクスケジューラ902はまた、ジョブに関連する優先順位値に基づいてスケジューリング決定も行うことができる。加えて、タスクスケジューラ902は、タスクテナント内部の仮想マシンを追跡する。
[0091]タスクスケジューラ902は、プールサーバと共に働き、プールに/から仮想マシンを割り振る/割振り解除する。加えて、タスクスケジューラ902は、すべての仮想マシンとの間でハートビートを維持し、ハートビートを介してプールメンバシップについて仮想マシンと同期し、仮想マシンの再始動/再イメージを制御する。タスクスケジューラ902のさらに別の機能は、タスクテナントのサイズを追跡することとすることができる。タスクテナント内の仮想マシンの現利用に基づいて、タスクスケジューラは、タスクテナントを増大または収縮することができ、その結果、タスクテナントは、タスクテナントに関連するタスクを実行するのに十分な数の仮想マシンを有する。同様に、タスクテナント内でアイドル状態にある仮想マシンが多過ぎる場合、データセンタ内の他のホストされるサービスで使用するためにマシンを解放することができる。
[0092]タスクスケジューラ902は、上記で参照した機能を達成するために以下の構成要素およびモジュールからなる。例えば、タスクスケジューラは、要求プロセッサ910、ハートビートマネージャ912、統計アグリゲーションマネージャ914、スケジューリング・ループ・モジュール916、プール割振りマネージャ918、およびタスク・テナント・マネージャ920からなることがある。
[0093]例示的態様では、タスクスケジューラ902は、タスクテナント900の仮想マシンを「所有し」、それらの仮想マシン上で実施されるものも「所有する」。その結果、VMのプールが複数のタスクテナントにわたるVMからなることが企図される。ジョブがプールに割り当てられるとき、タスクスケジューラ902は、キューからワークアイテムを取り、タスクスケジューラ902が「所有する」仮想マシン(例えば、タスクテナント900のTVM908)上でそれらのワークアイテムを実行することができる。プール内のTVMを有する他のタスクテナントに関連する他のタスクスケジューラもキューからワークアイテムを取り、各タスクテナントの固有のタスクスケジューラのそれぞれに関連する仮想マシン上でそれらのワークアイテムを実行することができる。
[0094]要求プロセッサ910は、WIJ、プールサーバ、および/またはTLSMから受信した様々な要求を処理する役目を果たす。タスクテナントフロントエンドからタスクスケジューラに要求をルーティングすることができる。したがって、要求プロセッサ910は、正しいサブコンポーネントを求める要求をキューに入れ、消費することができる。
[0095]ハートビートマネージャ912は、タスクテナント内の他の仮想マシン(例えば、TVM908)と共にハートビートする役目を果たす。ハートビート通信に応答して、このモジュールは、仮想マシンヘルスおよびタスクヘルスについての情報を収集する。加えて、受信したハートビートメッセージに応答して、このモジュールは、仮想マシンのうちのどれがアイドル状態であり、新しいタスクをスケジューリングするのに使用することができるかを判定することができる。加えて、ハートビートモニタは、仮想マシンについての様々な統計(例えば、CPU、メモリ、ディスク使用)を収集することができる。次いで、これらの統計を統計アグリゲーションマネージャ914に渡すことができる。
[0096]統計アグリゲーションマネージャ914は、タスクテナントの様々な仮想マシンから収集される様々な統計をプールによって集約および編成する役目を果たす。次いで、自動スケーリングオペレーションで使用するために、集約された統計をプールサーバに通信することができる。
[0097]スケジューリング・ループ・モジュール916は、プール仮想マシン上のジョブタスクをスケジューリングする役目を果たす。プール割振りマネージャ918は、本明細書で論じるように、リソースをスケーリングすること、リソースを割り振ること、ジョブ/ワークアイテムを割り当てることなどのプールに関する操作を受け持つ。
[0098]タスク・テナント・マネージャ920は、タスクテナント自体の増大および縮小を受け持つモジュールである。このモジュールは、分散コンピューティングシステムと対話して、システム上の負荷に従ってタスクテナント仮想マシン数を拡大/縮小する。加えて、タスク・テナント・マネージャ920が、所与のプールに関する専用仮想マシンへの迅速な変換のために、フリー再イメージング化仮想マシンのバッファを維持する役目を果たすことができることが企図される。
[0099]図9はまた、タスクテナントに関連する複数の仮想マシンも示す。図9の示す実施形態では、仮想マシンのそれぞれがタスク仮想マシン908(TVM)を含む。一実施形態では、タスク仮想マシン908は、仮想マシン上のタスクを立ち上げ、タスクに関するディレクトリ構造および許可をセットアップする役目を果たす。タスク仮想マシン908はまた、同一のプール内の仮想マシン間のトラフィックのみを許可するように仮想マシン上のオペレーティングシステムファイアウォールを構成する(プールがイントラ通信を必要とする場合)。先に論じたように、タスクスケジューラ902は、タスク仮想マシン908を介して仮想マシンとの間でハートビートを維持する。これは、タスクスケジューラ902が、仮想マシンのヘルスを監視し、タスク仮想マシンエージェントに関するプールメンバシップ情報を同期することを可能にする。
[00100]例示的タスク仮想マシン906が、簡潔のためにTVM908には示されていないいくつかの構成要素からなるように示されている。しかし、任意のモジュール/構成要素を任意の仮想マシンに関連付けることができることが企図される。タスク仮想マシン906の構成要素/モジュールは、要求プロセッサ922、リソースマネージャ924、タスクマネージャ926、およびセキュリティマネージャ928を備える。
[00101]要求プロセッサ922は、仮想マシンがタスクスケジューラまたはタスクテナントフロントエンドから得る様々な要求を処理する役目を果たす。リソースマネージャ924は、ディスククォータを管理し、システムに関するディレクトリ構造を作成し、スタートアップタスクおよびジョブタスクに関するリソースをダウンロードする役目を果たす。タスクマネージャ926はタスク寿命時間を管理し、タスク寿命時間は、仮想マシンがタスクスケジューラから開始タスクコマンドを受信する時から始まり、システムデータ(例えば、関連ディレクトリ構造)が仮想マシンからクリーンアップされるまで有効である。セキュリティマネージャ928は、様々なファイアウォール規則をセットアップし、ユーザタスクを実行するための正しい特権でアカウントを作成する役目を果たす。
[00102]図10に、本発明の態様による、例示的プールサーバ1000を示すブロック図を示す。上記の例示的態様で論じた図6のプールサーバ614としてプールサーバ1000を実装することができる。
[00103]プールサーバ1000は以下の構成要素からなる。着信操作(例えば、プールの作成、プールの削除、およびプールの更新)を受諾する役目を果たす要求プロセッサモジュール1002。プール内に仮想マシンを確保するためにタスクテナントにわたって仮想マシンブレークダウンを実施するタスクテナント仮想マシン割振りマネージャモジュール1004。どのタスクテナントを選び、どれほどの仮想マシンをプールについてタスクテナント内に確保するかを選ぶのは、決定モジュールである。トランザクション・プロセッサ・モジュール1006をプールサーバに関連付けることもできる。トランザクション・プロセッサ・モジュールは、プールトランザクションの寿命を維持するコアモジュールである。このモジュールは、トランザクションが首尾よく終了し、またはタイムアウトとなり、またはキャンセルされるまで、トランザクションに対して引き続き働くことができる。各トランザクションはテーブル内で存続し、したがって障害の場合に、様々なシステム構成要素にわたって完了することができる。例示的トランザクションは、所与のプールについてそのタスクテナントで一定の数のVMを割り振り、予約し、または割振り解除するための、プールサーバからタスクテナントへの要求を含むことができる。さらに、自動スケーリングモジュール1008をプールサーバ1000に関連付けることもできることが企図される。図6の自動スケーリング構成要素616に関連して先に論じたように、自動スケーリングモジュール1008は、プールに関する所望の数の専用仮想マシン、スタンドバイ仮想マシン、および/またはプリエンプティブル仮想マシンを自動的に決定するユーザ提供の自動スケーリング規則(例えば、公式)を実行する役目を果たす。
ワークアイテム/ジョブ/タスクの管理
[00104]図11に、本発明の態様による、例示的分散コンピューティングシステム内の様々な構成要素間の例示的ワークフロー1100を与える通信ダイアグラムを示す。分散コンピューティングシステムは、クライアントポータル1102、タスク位置サービスフロントエンド(TLSFE)1104、プールサーバ1106、ワークアイテム/ジョブスケジューラ(WIJ)1108、ストレージユニット1112、タスクテナント1114からなる。構成要素のすべては先に論じられる。TLSFE1104、プールサーバ1106、およびWIJ1108は、タスク位置サービス1110(図6のTLS600)に関連付けられる。
[00105]ワークフローは、ユーザがクライアントポータル1102を通じてTLSFE1104にワークアイテムをサブミットすること(1116)を含む。TLSFEへのAPI呼出しを使用して、このサブミットを行うことができる。次いでTLSFEは、WIJ1108と連絡を取り、受信したワークアイテムをシステムに登録する(1118)。ワークアイテムの登録の間に、ワークアイテムタスクおよびオプション・ジョブ・マネージャ・タスクのために使用するプールを指定することができる。この例示的態様では、この登録の結果、ワークアイテムの持続1120のためにWIJ1108からストレージ1112に通信することができる。さらに、WIJ1108が、ストレージ1112に格納される関連するジョブを作成する(1122)ことが企図される。
[00106]ジョブを自動プールに関連付けるべきであるので、WIJ1108は、ワークアイテムのタスクがそれに対して処理されるプールを作成するようにプールサーバ1106に命令することができる。このワークフローは、ワークアイテムが割り当てられるプールが既存ではないという仮定の下で動作している。この例では、ユーザによってサブミットされるワークアイテムは、自動プール実施形態であることを示すことができる。自動プール設定が含まれることを示すワークアイテムが受信されるとき、プールサーバ1106は、動的かつ自動的にプールを作成することができる(1124)。WIJは、プールが作成/削除されるときを制御することができ、WIJは、それに応じてプールサーバに命令することができる。次いで、プールサーバは、他のユーザがプール作成/削除要求を開始したのと同じく、WIJ要求を処理することができる。従来、プールの作成は、プールの作成を動的かつ自動的にするのを妨げるユーザ介入を必要とする。
[00107]WIJ1108によって生み出される各ジョブについて、複数のキューを形成することができる。例えば、WIJは、専用キュー、プリエンプティブルキュー、「任意のVM」キュー、および/またはジョブマネージャキューを含むいくつかのジョブキューを作成することができる(1126)。これらの様々なキューは、ジョブに関するタスクを保持するのに使用される。
[00108]ワークアイテムが関連するジョブマスタタスクを有する場合、WIJは、ジョブで開始される第1のタスクとしてジョブ・マネージャ・タスクを有するように、ジョブ・マネージャ・タスクをシステムに登録することができる。加えて、ジョブマネージャキューに情報を追加することができる。次いで、システムは、システム障害の場合にジョブマネージャがジョブと共に常に実行中であることを保証することができる。それらの通信は、WIJがジョブマネージャを追加し(1128)、ジョブ・マネージャ・タスクを追加する(1130)ことによって示される。
[00109]WIJがジョブを生み出すと、APIを介してジョブに関する追加のタスクをサブミットすることができる。システムは、それぞれのサブミットされたタスクについての再試行カウントを指定することをサポートする。タスクに障害が発生した場合、システムは、恐らくは種々の仮想マシン上で、再試行カウント回数までタスクを再び生み出すことができる。ジョブがJMタスクを有する場合、ジョブに関する追加のタスクをジョブ・マネージャ・タスク自体によってサブミットすることができる。システムは、ジョブが作成された後、システムの外部からタスクをサブミットすることを可能にすることができる。
[00110]TLSFEは、すべてのタスク追加要求を処理し、タスク追加要求の受信時に、TLSFEは、タスク情報をタスクテーブル内に存続させ、さらに、タスクについてのメタデータを3つのジョブキューのうちの1つの中に置く。どのジョブキューがどのタスクに依存することがあるかという選択が、実行のためにマークされる(例えば、専用のみ、プリエンプティブルのみ、またはプール内の任意のVM)。
[00111]ジョブが生み出されると、WIJは、所与のプールに関する仮想マシンを有するすべてのタスクスケジューラと連絡を取り、ジョブ開始通信1132からわかるように、ジョブ開始について通知する。ユーザは、ワークアイテム作成中に、ジョブ・マネージャ・タスクが完了したときにシステムがジョブ全体を終了すべきかどうかを指定することができる。次いでシステムは、この情報を維持することができ、JMタスクが完了したときが指定された場合、以下のロジックを実装することができる。WIJは、タスクテナント(複数可)1114がジョブキュー1134内のジョブを処理した後に行うことのできる、JMタスク完了についての通信を待機することができる。ジョブ・マネージャ・タスクが完了したとき、メッセージがJM完了キューにエンキュー(enqueue)される。例示的態様では、JMキューはシステムキューである。TLSFEは、キューの監視を保つことができ、キュー内のメッセージを得たとき、メッセージをデキュー(dequeue)し、ジョブマネージャ完了を処理するように適切なWIJに通知する。ジョブマネージャメッセージがキューから受信された後、WIJは、その永続的ストア(persistent store)で完了済みとジョブをマークし、JM完了キューからメッセージを除去することができる。
[00112]ジョブが関連するジョブ・マネージャ・タスクを有さない場合、またはユーザがジョブ・マネージャ・タスクの完了と共にジョブを終了することを指定しない場合、顧客による別々のジョブ終了要求を発行してジョブを完了済みとマークすることができる。ジョブが完了済みとマークされると、ジョブに関する追加のタスクを処理することはできない。さらに、ジョブを反復または1回実行とマークすることができることが企図される。反復ジョブについて、WIJは、次の反復間隔で新しいジョブを生み出す(例えば、インスタンス化する、作成する)ことができる。ワークアイテムは、「それ以後実行不可(don not run after)」時間を指定することができ、それは、その時の後にWIJがジョブを再び生み出すことを排除する。WIJからのジョブ開始の通信の受信時に、タスクスケジューラは、タスクの存在についてジョブキュー内を調べることを開始する。キューに入れられる追加のタスクとして、例示的態様では、タスクスケジューラはタスクをデキューし、それを指定のプール仮想マシン上で実行する。
タスクスケジューラスケジューリング
[00113]タスクスケジューラ(「TS」)(図9のタスクスケジューラ902など)は、以下の例示的方式でタスクのスケジューリングを実施することができる。TSは、メモリ内にスケジューリング情報の大部分を維持することができる。しかし、ジョブキュー(複数可)からまだピックアップされていないタスクに関する情報が、メモリ内に維持されないことがあることが企図される。
[00114]例示的態様では、TSはプールによるスケジューリングを実施する。したがって、TSは、ジョブタスクをスケジューリングすることのできる各プールについての情報を維持する。この情報を、WIJによってジョブ開始メッセージ(例えば、図11のジョブ開始通信1132)を介してTSに渡すことができる。例示的態様では、TSは、フェイルオーバシナリオの可能性を処理するためにこの情報を存続させることができる。各プールについて、複数のアクティブなジョブが存在することができる。TSは、ジョブ優先順位に基づいて各プール内のスケジューリングを行う。しかし、例示的態様では、優先順位はオーバーアーチング・アカウント・レベル(overarching account level)ではなく、ジョブレベルである。
[00115]例示的態様では、各TSは、割り当てられたジョブのリストを知っている。各スケジューリング量子(scheduling quantum)について、TSは、様々なジョブキューから「N」個の項目を選び(例えば、専用タスクやプリエンプティブルタスクなどの種々のタイプのタスクをスケジューリングするための種々の優先順位を有する、ジョブ当たり複数のジョブキューが存在することがある)、各ジョブキューは優先順位キューであってもよい。この例では、「N」個の項目は、タスクをスケジューリングするためにプールで利用可能なVM数に等しくてよい。言い換えれば、TSがプールで利用可能な仮想マシン数に等しいいくつかの項目をキューから選ぶことが企図される。
[00116]タスクについての他のメタデータに加えて、各キューエントリは、メインタスクテーブルへのポインタを有することができ、それは、TSがタスクテーブルからタスクについての情報を読み取ることを可能にする。タスクテーブルはタスク状態を有することができ、タスク状態は、タスクを実行する必要があるかどうかをTSが判定するのを助けることができる。例えば、タスクが完了した場合、タスクを再び実行する必要はない。これは、タスクが完了した後に障害があるが、VMがジョブキューからエントリを除去することができなかったときに生じることがある。加えて、タスクに関するアフィニティ情報をタスクテーブルから読み取ることができることが企図される。このアフィニティは、キューから選ばれた「N」個の項目のうちのどれが特定の仮想マシンにとって最も適しているかをTSが判定することを可能にすることができる。
[00117]タスクがVMに割り当てられると、TSは、タスクに対応するタスクテーブルに仮想マシン情報をポピュレートし、仮想マシン上でタスクをスケジュールすることができる。仮想マシンにタスクが割り当てられると、仮想マシンは、そのジョブキュー内の実行中タスクの不可視時間を延長することを引き継ぐことができ、それは、実質的にタスクに関するリースを維持する。VMがタスクを受信すると、VMは、タスクの状態を「実行中」(または同等のもの)に更新することができる。リソースがタスクについてダウンロードされると、VMは、タスク状態を「実行中」(または同等のもの)に更新し、タスクプロセスを生み出すことができる。したがって、次いでVMは、ジョブキューから、タスクに関する対応するエントリを削除することができる。タスクがたまたまJMタスク(ジョブマスタタスク)であった場合、VMは、JM完了キュー内にジョブマネージャ完了エントリを含むことができる。
タスク再試行処理およびジョブ・マネージャ・タスク再試行処理
[00118]概して、タスク再試行およびJMタスク再試行処理は同様に実施される。しかし、例示的態様では、プロセス内のいくつかの逸脱が存在する。例示的態様では、サブミットされる各タスクが、タスクと共に指定された再試行カウントに関連付けられる。タスクの実行に関するアプリケーション障害時に、システムは、タスクをエラーと共に完了とマークする前に、再試行カウント値に等しい回数だけタスクを再スケジューリングすることができる。システム障害(例えば、VM障害)の状況では、システムは、再試行カウントに対してカウントすることなく、障害の発生したタスクを自動的に再試行することができる。
[00119]仮想マシンは、生み出したタスクを監視する。タスクに障害が発生した場合、VMは、VM上でタスクを再試行し、タスクテーブル内の再試行カウントも更新する。例示的態様では、VMがタスクを「x」回(これは構成可能である)再試行し、その数を超過した後、VMは、タスクスケジューラが、キュー内でタスクを再び可視にする(例えば、タスクに関するリースを解放する)ことより、代替VMでタスクを再スケジューリングすることを可能にする。次いで、タスクスケジューラは、キューから可視の項目をピックアップし、再試行カウントを更新し、それを別のVMに割り当てることができる。この例では、タスクは、利用可能なVMがある場合にピックアップされるだけでもよい。このプロセスは、タスクが首尾よく完了するまで、またはタスクが指定の回数を再試行するまで続行することができる。
[00120]JMタスクは、上記で略述したのと同様にプロセスをたどることができる。しかし、VMがJMタスクを生み出すのに利用可能ではない場合、タスクスケジューラが非JMタスクのうちの1つ(例えば、実行時に最低の優先順位)をピックアップし、JMタスクが実行するためにリソースを利用可能にするようにタスクを占有できることが企図される。これは、システム障害の場合であっても、ジョブについてJMタスクが常に再スタートされることを保証することができる。
プール管理
[00121]各タスクアカウントについて、1つまたは複数のプールを作成する(または関連付ける)ことができる。例示的態様では、(先に論じたように)プール内に2つのタイプの仮想マシンがあり、プールに関連するスタンドバイVM予約もある。VMは、タスクアカウントまたはプールによる排他的利益のために現在使用されている予約済みVMである専用VMでよい。第2のVMはプリエンプティブルVMでよい。プリエンプティブルVMは、スタンドバイVMとして予約されるVM、またはシステムがプロビジョニングした任意のアイドルVMを含む、プリエンプティブルタスクを実行するのに利用可能であるシステム内の任意の非専用VMでよい。システムが別の目的のためにそのリソースを必要とするまで、プリエンプティブルVMを使用することができる。
[00122]例示的態様では、アカウントは、プール内の専用VMおよびスタンドバイ予約済みVMのそれぞれの数を指定することができる。スタンドバイVM予約を専用VMに変換することができ、逆も企図される。次いで、システムは、特定のプールのために専用およびスタンドバイリソースを保持することができる。
[00123]様々なプロパティをプールに関連付けることができる。それらのプロパティは、スタンドバイVM予約、専用VM数、VMのタイプ(例えば、小または大)、通信要件(ジョブがクロスタスク通信を必要とする)、ストレージ・アカウント・アフィニティ、プールメタデータ(例えば、ユーザによって設定されたメタデータ)、および/または開始タスク情報を含むことができる。開始タスク情報は、プールの初期セットアップ中、さらにはVMがリブートするときにプールVMのそれぞれの上で実行されるタスクである。これらのプロパティは、少なくとも部分的に、プールおよびプールのリソースを定義することができる。
[00124]先に論じたように、ジョブは、プール(および下に仮想マシン)を利用して、ジョブのタスクを実行する。タスクは、プール内の専用VMまたはプリエンプティブルVMのどちらかの上で実行する。例示的実施形態では、スタンドバイVM予約は、タスクを直接的に実行するのに使用されず、その代わりにスタンドバイVMが、専用VMまたはプリエンプティブルVMに変換される。様々なVMに関する価格決定が異なることがあることが企図される。例えば、スタンドバイVM予約は、リソースを予約するためのコストの点で最小であることがあるが、予約することにより、専用またはプリエンプティブルリソースに迅速に変換するのにスタンドバイVM予約が利用可能である。専用VMは従来の計算価格決定を有することができる。一方、スポット価格決定および他の可変価格決定構成を可能にする入札操作によってプリエンプティブルVMを価格決定することができる。
[00125]プールの作成は、以下の例示的ステップと同様のプロセスをたどることができる。しかし、代替方法が企図される。ユーザは、プール名、VMサイズ、ストレージ・アカウント・アフィニティ、クロストーク通信要件、メタデータなどの様々なパラメータを指定することによってプールの作成を開始することができる。ユーザは、TLSFEにAPI要求を送ることができ、次いでTLSFEは、関連する要求(または同一の要求)を正しいプールサーバに転送することができる。プールサーバに要求を送る前に、システムはユーザを認証することができる。次いで、受信側プールサーバは、一意識別子を有するプールトランザクションを開始することができる。次いで、プールサーバは、専用VMの目標数およびスタンドバイとしての予約を保つVM数を満たすように、タスクテナントに関するVM予約ブレークダウンを生成することができる。この予約操作は、プール予約が最終的に存在することができるように、システム障害の場合にトランザクションを存続させることを含むことができる。次いで、プールサーバは、ステータス(すなわち、ハートビート)更新を定期的に通信し、予約に関する更新を保つようにタスクスケジューラを用いてチェックすることができる。トランザクションの完了時に、プールサーバは、各タスクテナントにそのトランザクションをコミットするように通知し、次いで各タスクテナント応答の後に、保留トランザクションを除去することによってトランザクションをコミットすることができる。
[00126]スタンドバイVM予約を専用に変換する(または逆も同様である)ことによってプールを更新することができる。システム(またはユーザ)が所望の数の専用VMおよびスタンドバイVMを与えることにより、これを達成することができる。次いで、プールサーバは、関連するタスクテナントと共に新しいトランザクションを開始し、新しいVMターゲットをそれらのタスクテナントに渡すことによってプールの更新を処理することができる。タスクテナントで、TTFEを通じてタスクスケジューラに着信要求をルーティングすることができる。所望のターゲットが専用VMの数を増加させること、および余分のスタンドバイVMを予約することを含む場合、タスクスケジューラは、割り振られていないVMを専用VMに変換し、スタンドバイカウントを低減する。追加の専用が依然として望まれる場合、タスクスケジューラは、プリエンプティブルプールからVMを割り振る。利用可能なVMが不十分である場合、タスクテナントが、要求を満たすように増大することができる。言い換えれば、フリーVMが当初割り振られ、その後にプリエンプティブルVMを変換することが続くことが企図される。しかし、プリエンプティブルVMが当初変換され、残りのリソースの必要があればそれを満たすようにフリーVMが割り振られることも企図される。
Platform As A Service(PAAS)を用いたジョブスケジューリング
[00127]図12に、本発明の態様による、分散コンピューティング環境内のリソースを提供する例示的方法例示的方法1200を示すブロック図を示す。ブロック1202で、ユーザからタスクアカウントを作成する要求が受信される。例えば、ユーザは、クライアントポータル(サービス管理APIを含む)により、計算を実施するためにユーザによって使用可能なアカウントをサービスが生成することを要求することができる。システムの高レベル位置サービス(例えば、XLS)で要求を受信することができる。図示されていないが、コンピューティングリソースの1つまたは複数の定義済みのクラスタ(例えば、地理領域)内のより低いレベルのタスク位置サービスと通信することによってアカウントが作成されることを高レベルサービスが保証することが企図される。さらに、先に論じたように、高レベル位置サービスがアカウントまたはアカウントによって使用されるリソースに関連する名前空間の登録を調整することが企図される。少なくとも部分的にドメインネームサービスを利用して、名前空間の登録を実施することができる。
[00128]ブロック1204で、タスクアカウントに関連するワークアイテムが受信される。例えば、ユーザは、クライアントポータルによってワークアイテムをサブミットすることができる。ワークアイテムは、ユーザによってシステムのタスク位置サービスに通信されるものとして企図される。例示的態様では、ワークアイテムは、システムによって維持される登録された名前空間に少なくとも部分的に基づいてTLSにルーティングされる。例えば、先に論じたように、アカウント仮想IPアドレスおよび/またはタスク仮想IPアドレスを利用して、様々な通信を通信することができる。
[00129]他の構成要素の間で、ワークアイテムが、1つまたは複数の仮想マシンによって実行すべきバイナリ、仮想マシンによって使用することのできるコマンドラインパラメータ、および/または規則からなることがあることが企図される。規則は、例えばジョブを自動的に作成し、プールを自動的に作成し、プール上のジョブを自動的に実行し、かつ/またはプールを自動的に削除するためにシステムによって使用可能であることがある。規則によって他の機能を達成することができる。ブロック1206で、システムが、ワークアイテムに関連する規則を受信した。先に論じたように、ユーザによって規則を通信することができ、またはユーザ提供の情報(例えば、タスクアカウントに関連するプリファレンス)に基づいて、システムによって少なくとも部分的に生成することができる。規則は、ワークアイテム、得られるジョブ、関連するタスク、および/またはプールの特徴を定義する、より広い仕様の一部でよい。
[00130]ブロック1208で、ジョブが、ワークアイテムに基づいて自動的に作成される。先に論じたように、システムのWIJによってジョブを作成することができる。例示的態様では、ワークアイテムに関連して受信された規則/仕様に基づいてジョブが作成される。この規則/仕様と共に含まれる他の情報の間で、ユーザに対する負担なしに、プール(またはプールのセット)に関する最終的インスタンス化に関するジョブをシステムが自動的に作成することを可能にする優先順位および他の計算変更情報を含めることができることが企図される。
[00131]ブロック1210で、ワークアイテムで自動プールが指定されるとき、ジョブを処理する際に使用するために、仮想マシンがプールに自動的に割り振られる。先に論じたように、プールに割り振られる仮想マシンは、ワークアイテムに関連する仕様および/または規則に基づくことができる。例えば、ワークアイテムに関連する情報は、所望のリソース消費、ワークアイテムを完了することが望ましい時間、タスクを計算するための地理的領域などを指定することができる。この情報を利用して、プールサーバは、0個以上の仮想マシンをプールに割り振ることができる。割振りのために使用される情報は、専用VMおよびスタンドバイVMの数などを指定する仕様の一部でよい。
[00132]ブロック1212で、WIJによってジョブキュー(または、先に論じたように複数のジョブキュー)を自動的に作成することができる。さらに、例示的態様では、JMタスクを作成できることが企図される。加えて、ブロック1214で示されるように、プールにジョブを割り当て、次いでプールのVM上でジョブのタスクをスケジューリングすることによってプール上のジョブとしてワークアイテムをインスタンス化できることが企図される。したがって、ワークアイテムをジョブとしてプール上でスケジューリングできることが企図される。次いで、ジョブをインスタンス化することの部分として、スケジューリングされたジョブのタスクを、実行すべきVMに割り当てることができる。先に論じたように、タスクテナントタのスクスケジューラが、プール内の仮想マシンのうちの1つまたは複数でキュー内の1つまたは複数のタスクをスケジューリングする役目を果たすことができることが企図される。第2のジョブがプール上でインスタンス化されることも企図される。第2のジョブは、完全に異なるワークアイテムに基づくワークアイテムまたはジョブの反復インスタンスでよい。
[00133]ブロック1216で、ユーザの介入または要求なしに、システムがプールを自動的に削除することが企図される。ジョブまたはワークアイテムの完了に応答して、プールを削除することができる。例えば、各ジョブが完了した後にプールを削除することができる。加えて、アカウント(または別のアカウント)またはワークアイテムによる将来の使用のために、ジョブの完了後にプールを維持できることが企図される。例えば、ワークアイテムが反復のためにスケジューリングされる場合、ジョブの再生み出しを予期してプールを維持し、ランニングジョブにわたってVM上の状態(例えば、データファイルおよびアプリケーション)を保つことが効率的であることがある。さらに、自動スケーリング機能を使用して、プールは専用VMをスタンドバイVMに自動的に変換し、またはプール上の保留のタスク数などのスケーリング規則に応答して、VM数を低減できることが企図される。さらに、ユーザからの要求を受信することができることが企図される。要求は、プールの削除を求める命令を含むことができる。
プールおよび階層的構造を自動的にスケーリングする
[00134]図13に、本発明の態様による、分散コンピューティング環境内のリソースを提供する例示的方法1300を示すブロック図を示す。具体的には、規則、要件、および現リソース負荷に基づいてリソースのプールを自動的にスケーリングすることが、分散コンピューティング環境内のリソースの効果的なプロビジョニグを可能にすることが企図される。先に論じたように、システム(例えば、分散コンピューティング環境)により、ジョブがその上でインスタンス化されるリソースのセットとしてプールを作成することができる。しかし、リソース需要の変化、スケジューリング変化、および他の変数に基づいて、サイズを増加させ、サイズを低減し、特定のVMタイプを増加/低減し、プールに関連する他の変数を調節することが望ましいことがある。従来、このプロセスは、手動の性質であることがあり、プール・リソース・レベルを手動で調節するために人間の介入に依拠することがある。
[00135]システムのリソースを効果的に利用するために、プールなどのリソースのスケーリングに自動化を提供できることが企図される。例示的態様では、方法1300は、ユーザの介入なしにプールの自動スケーリングを可能にする。ブロック1302で、システムは、プールに関連する仮想マシン数を自動的に決定した。決定は、プールサーバによって完了することができる。数の決定は、仮想マシンの総数を決定すること、または特定のタイプの仮想マシンの総数を決定することを含むことができる。例えば、決定は、プール内の専用VMの総数を決定することでよい。決定は、システムの1つまたは複数の構成要素/モジュールによって維持されるテーブルまたは他のリスティングから行うことができる。例えば、プールサーバが、プールによって使用される仮想マシンを有するタスクテナントのリスティングを維持することができることが企図される。同様に、タスクテナントがプールによって使用されるVMのリスティングを維持することができる(例えば、タスクスケジューラがそのような情報を維持することができる)ことが企図される。したがって、システム内で既に維持されている情報の1つまたは複数のソースを参照することによって決定を行うことができる。
[00136]ブロック1304で、自動スケーリング規則が適用され、プールに関連する仮想マシン数が調節される。例えば、合計のVM数が低減または増加されることが企図される。さらに、特定のタイプのVM(例えば、専用)数が増加または低減されることが企図される。先に論じたように、自動スケーリング規則は、プールのサイズ/構成を決定うる際の助けとなるように1つまたは複数のプリファレンスを含むことができる。例えば、自動スケーリング規則は、現プール統計およびスケーリングされたジョブに基づいて最適化されたプールを求めるための1つまたは複数の公式を含むことができる。自動スケーリング規則は、ジョブキュー統計(例えば、実行することを待つ保留タスク、エンキューレート、デキューレート、タスク完了レートなど)、スポット価格決定情報、利用可能なリソース、リソースの効率などのシステムに関するメトリックを考慮に入れることができる。さらに、自動スケーリング規則は、ワークアイテム、ジョブ、および/またはタスクに関する所望の完了時間も考慮に入れることができることが企図される。加えて、自動スケーリング規則が、支出することが好ましい所望の金融リソース(例えば、専用VMよりも低いコストのプリエンプティブルVMに依拠する)を考慮に入れることができることが企図される。
[00137]プールに関連する仮想マシン数を調節するために自動スケーリング規則を適用した結果として、ブロック1306で示されるように、システムは、プールの1つまたは複数の仮想マシンを動的に割り振ることができる。VMの動的割振りは、1つまたは複数のVMを追加すること、1つまたは複数のVMを除去すること、1つまたは複数のVMのタイプを変更することを含むことができる。例えば、自動スケーリング規則の適用の結果、専用VMである1つまたは複数の仮想マシンをプールに追加することができる。さらに、割振りは、フリーまたはプリエンプティブルVMを専用VMに変換すること、およびスタンドバイカウントを低減することを含むことができることが企図される。他の割振りも企図される。
[00138]割振りの動的性質が、ユーザ介入なしに割振りを実施するシステムに関係付けられる。例えば、自動スケーリング規則を間隔(例えば、時間間隔、プロセスカウント間隔)で適用できることが企図される。自動スケーリング規則を自動的に実行した結果として、この例示的態様では、リソースの割振りが、割振りの時間にユーザの要求なしに、または割振りを実施することを要求するユーザ入力の直接的結果として行うことができる。
[00139]図14に、本発明の態様による、分散コンピューティング環境内のリソースを提供する方法1400を示すブロック図を示す。図13に関連して先に論じたように、プールに適用されるときの自動スケーリング規則の利用および適用が、分散コンピューティング環境内のリソースの提供を実現することが企図される。
[00140]ブロック1402で、ワークアイテムがユーザから受信される。ユーザは、クライアントポータルを介して来ることがあるAPIを通じて、システムの高レベル位置サービスにワークアイテムを通信することができる。ワークアイテムを特定のタスクアカウントに関連付けることができ、特定のタスクアカウントは、それに関連するアカウントプリファレンスを有することができる。ブロック1404で、自動スケーリング規則がユーザから受信される。自動スケーリング規則は、ワークアイテムの完了のための時間に関するユーザプリファレンス、ワークアイテムの優先順位、好ましい金融リソース支出(例えば、専用VMよりもプリエンプティブルVMを好む)を与えることができる。自動スケーリング規則はまた、プールに関する需要に応答してプールをスケーリングする助けとするためにプールに関連する1つまたは複数のメトリックを利用する1つまたは複数の公式も含むことができる。
[00141]ブロック1406で、第1のデータセンタ内に位置する第1のVMが、プールに割り振られる。仮想マシンの割振りは、プール内で使用可能なリソースとしての仮想マシンの追加を含むことができる。例示的態様では、第1のVMが、第1のプールに自動的に割り振られる。このことは、どのVM、およびどのプールかは言うまでもなく、VMがプールに含まれるべきであることをユーザ介入が示すことなく行われる。例えば、過去には、ユーザは、プールに含まれるべきリソースを識別することによってプールを確立することが必要であったことがある。リソースの識別は、VM数、およびVMがどこから割り当てられるかを識別することを含むことができる。この例では、システム自体は、プールを作成すべきであること、およびプールが所望の性能または動作特性を満たすためにいくつかのVMをプールに割り振るべきであることを識別する。
[00142]ブロック1408で、第2の仮想マシンが第1のプールに割り振られる。第2のVMは、第1のデータセンタとは地理的に別々である第2のデータセンタ内にある。例示的態様では、第2のVMは、異なるタスクテナント内ではなく、同一のデータセンタ内のVMリソースのセットからのものでもよい。第2のVMがユーザによる介入なしに第1のプールに自動的に割り振られることが企図される。この自動化(およびユーザの介入なしにシステムによって実施される他の自動タスク)が、ユーザが介入することを許されるときに普通なら利用されないプロセスおよびステップを組み込む。例えば、第1の(または任意の)プールにVMを割り振るべきことに関する決定が、本発明の例示的実施形態内で企図される。
[00143]第1のタスクテナントおよび第2のタスクテナントは、システムにサービスする物理的に独立したデータセンタ(または共通データセンタ内)でよい。例えば、第1のタスクテナントを第1の地理的位置(例えば、特定の住所、都市、州、領域、国、および/または大陸)内に配置できることが企図される。一例では、第1のタスクテナントが米国の第1の領域(例えば、米国西部)内に配置され、第2のタスクテナントが米国の異なる領域(例えば、米国東部)内に配置されることが企図される。この例では、第1のタスクテナントおよび第2のタスクテナントが、共通の、または異なるタスク位置サービスによってアドレス指定可能である。これは、様々なデータセンタに及ぶプールを増大させる(またはプールを低減する)複雑さへのユーザの介入なしに、プールの自動スケーリングを可能にする。例えば、物理的制限が以前には物理的データセンタのサイズを超えるプールの拡張を妨げていたことがあることが企図される。ジョブおよびプールの概念を、ローカルVMリソースを制御するスケジューラ(タスクテナント)から分離することは、2つ以上のデータセンタ内のリソースを含むようにプールおよびそのジョブを拡張することを、そのような拡張を可能にするようにユーザがプログラムし、あるいはシステムに介入することを必要とすることなく可能にする。したがって、システムがプールのスケーリングを自動的に扱うことに基づいて、数十億のVMにわたって、かつ少数のVMにわたってスケーリングすることのできるワークアイテムをユーザが設計できることが企図される。
[00144]ブロック1410で、ワークアイテムが、第1の仮想マシンおよび第2の仮想マシン上でインスタンス化される。ワークアイテムのインスタンス化は、キューからタスクを取り、それをVMに割り当てる、タスクテナント内のスケジューラを含むことができる。ワークアイテムのインスタンス化は、仮想マシン上のワークアイテムからのタスクのスケジューリングをさらに含むことができる。インスタンス化はまた、仮想マシンがタスクの処理のためにキューからタスクを取ることも含むことができる。インスタンス化はまた、仮想マシンでのタスクの処理も含むことができる。したがって、ワークアイテムのインスタンス化は、結果としてワークアイテムの一部(例えば、タスク)がVMによって処理される任意の態様を含むことができる。
[00145]第1のVMと第2のVMを共に有するプールに対してワークアイテムのジョブをインスタンス化することにより、この結果を実施するためにユーザがワークアイテムを変更することなく、複数のデータセンタにわたってスケーリングするプールによってワークアイテムが処理される。したがって、単一のタスクテナントによってサービスされるプール上で動作することができる同一のワークアイテムは、ユーザ介入なしに、複数の別個のタスクテナントおよびデータセンタにわたるプール上で実行することもできることが企図される。
[00146]ブロック1412で、自動スケーリング規則がプールに適用される。例示的態様では、システムは、ユーザ介入なしに、自動スケーリング機能を自動的に開始する。自動スケーリング規則は、現在使用中のリソース、コミットされるようにスケジューリングされたリソース、およびプールに対して必要なリソース、プール、タスク、ジョブなどに割り当てられたジョブに関するキュー内の保留作業の量を考慮に入れることができる。それらを一緒にして、自動スケーリング規則は、プールがVMタイプを拡張、収縮、および変更することを可能にする。
[00147]例えば、追加のタスクがジョブに追加される場合、またはジョブを処理するための時間が初期予測を越えている場合、自動スケーリング規則を利用して、ジョブを完了するのにどれほどの追加のリソースが必要となるかを判定できることが企図される。同様に、自動スケーリング規則の呼出しの結果、プール内のVM数が過剰である可能性があること、およびそれらのリソースの一部を変換またはドロップすることができることが企図される。例えば、自動スケーリング規則に基づいて、専用VMをプリエンプティブルVM予約、さらにはスタンドバイVM予約に変換することができる。さらに、自動スケーリング規則による決定が適用される結果として、プールからVMを完全に解放することができることが企図される。
[00148]ブロック1414で、プールに関連する1つまたは複数のVMの再割振りが行われる。例えば、自動スケーリング規則がプールから専用VMを解放することができると判定した場合、専用VMをプールから解放することができる。同様に、自動スケーリング規則が、利用可能なVMが所望の結果(例えば、ジョブの適時の完了)を達成するのに十分ではないと判定した場合、キュー内、またはまだキューに入れられていない未解決のタスクを完了する際に使用するために、1つまたは複数の追加のVMをプールに割り振ることができる。さらに、先に論じたように、例示的態様では、1つまたは複数のVMの再割振りが、第1のタイプから第2のタイプにVMを変換することを含むことができることが企図される。例示的態様では、この再割振りは、プールに関連するプールサーバによって少なくとも部分的に実施されるものとして企図される。
分離されたリソース、スケジューリング、およびジョブ
[00149]リソース、スケジューリング、およびジョブの分離は、ジョブがリソースのあるプールからリソースの別のプールに実行を続行することを可能にする。例えば、種々の計算リソースにわたって作業を移行し、作業をロードバランシングするとき、この機能を使用することができる。特定の例では、特定のデータセンタに障害(例えば、自然災害)が発生した場合、ジョブの完了のために作業を新しいデータセンタに移行することができる。さらに、リソース、スケジューリング、およびジョブの分離は、ジョブがリソースおよびスケジュールのいくつかのプールにわたって実行することを可能にし、それは、ジョブが普通なら得られない高いレベルのスケーラビリティを達成することを可能にすることができることが企図される。プールが複数のスケジューラ、タスク、テナント、および/またはデータセンタに及び、それは、プールに割り当てられたジョブもそれらのリソースにも及ぶことを可能にすることが企図される。
[00150]例示的態様では、分離は、システムでこれらの別々の概念を利用することを企図する。第1の概念は、仮想マシンのプールの概念に基づく。第2の概念は、ジョブ管理、ジョブ状態、およびジョブキューの周りに形成される。第3の概念は、スケジューラ(例えば、図9のタスクスケジューラ902)と、これらのプールに対する割り当てられたジョブをスケジューリングする役目を果たすVMとを含む。これらの概念は、マルチテナンシ(multi-tenancy)分散コンピューティングシステムのロードバランシングの必要に基づくジョブ、スケジューラ、およびプールの柔軟な再割当てを可能にする。さらに、これらの概念は災害回復も可能にすることが企図される。
[00151]図15に、本発明の態様による、分散コンピューティング環境内の分離されたリソース、スケジューリング、およびジョブを提供する方法1500を示すブロック図を示す。ブロック1502で、ワークアイテムがシステムで受信される。例えば、ワークアイテムをサブミットするアカウントに関連するタスク仮想IPアドレスを利用して、タスク位置サービスでワークアイテムを受信することができる。ブロック1504で示すように、ワークアイテムからジョブを作成することができる。例示的実施形態では、ジョブ作成は、ワークアイテムをジョブとして処理すべきであるという識別である。
[00152]ブロック1506で、仮想マシンが第1のプールに割り振られる。例えば、プールサーバがVMを第1のプールに割り振り、ジョブをその上でインスタンス化(処理)できるプールを提供することができることが企図される。ブロック1508で、ジョブが第1のプールに割り当てられる。例えば、第1のプールに関連するプールサーバが第1のタスクテナントスケジューラによって所有されるVMを割り振っており、したがってジョブがプールに割り当てられると、次いで第1のスケジューラがジョブキューからタスクを取り、それらをそのスケジューラによって所有されるそのプール内のVMに割り当て、タスクを実行することができることが企図される。
[00153]ブロック1510で、ジョブのタスクが、第1のプールにスケジューリングされる。先に論じたように、プールにタスクをスケジューリングすることは、第1のタスクテナントスケジューラがプールに関連する1つまたは複数のVM上でジョブの1つまたは複数のタスクを処理することを含むことができる。さらに、ジョブキューからタスクをリースするプロセスはタスクをインスタンス化することの部分であることが企図される。スケジューラがVMを「所有」し、VM上で実行されるプロセスも「所有」することが企図される。
[00154]ブロック1512で、ジョブを第2のプールに再割当てすべきであるという決定が行われる。第2のプールは、第1のプールとは動作可能に独立することができ、したがって、障害となる地理的に限定された災害(例えば、竜巻、ハリケーン、地震、電力グリッド障害、ネットワーク障害)は第2のプールに直接的に影響を及ぼさない。決定はまた、2つ以上のプール、タスクテナント、またはデータセンタにわたるリソース負荷の平衡を取るように動作可能な自動バランシングプロセスに応答するものでよい。例えば、共通の位置(例えば、ニューヨーク州ニューヨーク)に基づく一定のアカウントが、共通の時間(例えば、金融取引日の開始)にリソースを利用することができる。この例では、米国東部地理領域内に集中するリソースのプールに、米国西部の地理領域に位置するリソースよりも多くの負担を負わせることができる。したがって、ブロック1514で示されるように、待ちおよび他の要素(例えば、アフィニティ)をさらに考慮して、ロードバランシングプロセスは、ジョブの1つまたは複数の部分を第2のプールに移行することがより効率的であると決定することができる。移行は「所有権」の移転に限定されず、複数のプールへのジョブの割当てである、複数のプールにわたるロードバランシングを単に企図するにすぎない。さらに、移行の概念は、種々のタスクテナントにわたってプールを拡張することを含む。その結果、プールが複数のタスクテナントをカバーするときであっても、ジョブが単一のプールによって実施されているという印象をユーザが持つ可能性がある。
[00155]ジョブ(またはジョブ内のタスク)の移行は、キュー内のタスク上のリースの解放を含むことができ、したがって、異なるプール内のリソースはそのタスクを得ることができる。代替実施形態では、ジョブの移行は、新しいタスクサービス位置のリソースに関連して再作成およびスケジューリングのために新しいタスク位置サービスにワークアイテムを再分配することを伴うことが企図される。ジョブの移行は、第1のプールから第2のプールにジョブを再割当てする形態である。ブロック1516で、第2のプールでのジョブの割り当てが示されている。ブロック1518で、ジョブが第2のプール上で実行されるようにスケジューリングされる。第1のプールのスケジューラは、第1のプールに関連するWIJ、タスクテナント、およびプールサーバでよく、第2のプールのスケジューラは、第2のプールに関連する異なるWIJ、タスクテナント、およびプールサーバでよい。したがって、ワークアイテム/ジョブを単一のプールまたは単一のスケジューラに結びつけないことにより、第1のプールに関連するリソースに障害が発生した場合であっても、ワークアイテムを異なるプールに移行することができる。
[00156]さらに、上記で図9に関連して先に論じたように、タスクテナントのタスクスケジューラが、システムのプールおよびワークアイテム/ジョブから分離されるスケジューラであることが企図される。例えば、タスクスケジューラは、プールに割り当てられたキューからタスクを選択し、タスクスケジューラによってスケジューリングされるタスクテナント内の関連するVMのうちのどれがタスクを実行するかを制御することができる。この概念は、プールが各タスクテナントに関連する各スケジューラについての複数のタスクテナントにわたるとき、タスクスケジューラのそれぞれによって所有されるVMによって実行するためにキューからタスクを取ることを可能にする。したがって、スケジューラ(例えば、タスクスケジューラ)から、リソース(例えば、VM)からのジョブ(例えば、ワークアイテム)を実質的に分離する方式で、プールにわたるリソース上でワークアイテムを実行することができる。
[00157]次いで、システムでのロードバランシングを様々なレベルで実施することができる。例えば、タスクテナント(例えば、共通TLSによってサービスされる共通の地理領域内の複数のタスクテナント)と協調するプールサーバによってスケジューリングされるリソースの共通のグルーピング内でロードバランシングを行うことができる。共通のグルーピングは、タスクテナントのグルーピングでよい。したがって、例示的態様では、2つの異なるレベルでロードバランシングを実施できることが企図される。この第1のレベルのロードバランシングは、共通のプールサーバに関連するタスクテナントの間で行うことができる。この第1のレベルのロードバランシングでは、プールサーバは、種々のタスクテナントにわたってVMを割り振ることができる。第2のより高いレベルのロードバランシングは、異なるTLS(例えば、図5のTLS512)にわたって行うことができる。このレベルのロードバランシングでは、負荷を種々のプールサーバにわたって拡散することもできる。このタイプのロードバランシングを実装して、その結果、システムにわたって負荷を移行することができる。企図されるさらに別のレベルのロードバランシングが、システム内の複数のプールにわたってワークアイテム/ジョブを割り当てるWIJによって実施される。
[00158]先に論じたように、ジョブの移行が、完全なジョブの移行、まだ処理されていないジョブの一部の移行、および/または元のプールでまだ処理されていない部分の一部を維持しながら、まだ処理されていないジョブの一部の移行を含むことができることが企図される。したがって、ジョブの移行は、障害の場合と、ロードバランシング操作に応答することの両方で有用である。
[00159]本明細書で与えられるように、様々なモジュール、構成要素、システム、層、およびプロセスが論じられる。第1の形態から第2の使用可能な形態に情報を変換する固有のマシンとして任意の1つを実施できることが企図される。この変換は、第1の入力を第2の使用可能な出力に変換するように機能するプロセッサおよびメモリによって実施することができる。さらに、仮想マシンが本明細書で論じられる。先に論じたように、仮想マシンが有形のプロセッサおよびメモリでタスクを用いて処理し、その結果、分散コンピューティング環境の利点のためにシステムによって使用可能である第2の形態にタスクが変換されるように機能することが企図される。
[00160]上記より、本発明が、明白であり、構造に固有のである他の利点と共に上記で述べたすべての目的および目標を達成するように良く適合されたものであることがわかるであろう。
[00161]いくつかの特徴および部分的組合せは有用であり、他の特徴および部分的組合せを参照することなく利用できることを理解されよう。これは、特許請求の範囲によって企図され、特許請求の範囲内にある。

Claims (16)

  1. コンピューティング装置が、分散コンピューティング環境内で仮想マシンのプールにジョブを割り当て仮想マシン上でタスクを実行するための方法であって、
    前記コンピューティング装置が、ユーザから、ジョブを表すワークアイテムを受信するステップと、
    前記コンピューティング装置が、前記ワークアイテムから前記ジョブを作成するステップと、
    前記コンピューティング装置が、少なくとも第1の仮想マシンを第1のプールに自動的に割り振るステップと、
    前記コンピューティング装置が、前記第1のプールに前記ジョブを割り当てるステップと、
    前記コンピューティング装置が、前記第1のプールに関連付けられた第1のスケジューラを用いて、ジョブキューから前記ジョブのタスクを取り出し、前記タスクを前記第1のプール内の前記第1の仮想マシンに割当てる、ステップと、
    前記コンピューティング装置が、前記第1のスケジューラを用いて、前記第1のプール上で前記タスクをスケジューリングするステップと、
    前記コンピューティング装置が、前記第1の仮想マシン上で前記タスクを実行するステップと、
    前記コンピューティング装置が、前記第1のプールからの前記ジョブの移行を決定するステップと
    前記コンピューティング装置が、前記移行の決定に基づき、前記第1の仮想マシンへの前記タスクの割当てを解放するとともに、少なくとも第2の仮想マシンからなる第2のプールに関連付けられた第2のスケジューラを用いて、前記ジョブキューから前記ジョブのタスクを取り出し、前記タスクを前記第2のプール内の前記第2の仮想マシンに再割当てするステップと、
    前記コンピューティング装置が、前記第2のスケジューラを用いて、前記第2のプール上で前記タスクをスケジューリングするステップと、
    前記コンピューティング装置が、前記第2の仮想マシン上で前記タスクを開始するステップと
    を含む方法。
  2. 前記第1のプール上で前記タスクを前記スケジューリングするステップが、前記第2のプール上で前記タスクをスケジューリングするのに利用されない第1のスケジューラを少なくとも部分的に利用して行われる請求項1に記載の方法。
  3. 前記移行の決定が、前記第1のプールにおける障害検出に基づいて行われる、請求項1に記載の方法。
  4. 前記タスクの前記再割当てが、前記第1のプール内の検出された障害に応答するものである請求項3に記載の方法。
  5. 前記移行の決定が、前記第1のプールのロードバランシング評価に基づいて行われる請求項1に記載の方法。
  6. 前記ジョブの移行が、完全なジョブの移行、又は、まだ処理されていないジョブの一部の移行を含む請求項1に記載の方法。
  7. 前記再割当てするステップは、前記第1のプールに関連付けられる1つまたは複数のタスク位置サービスと通信する高レベル位置サービスにより管理される、請求項1に記載の方法。
  8. 前記タスクを前記再割当てするステップが、ユーザ介入なしに前記第1のプールから前記第2のプールへの前記ジョブの移行を可能にする請求項1に記載の方法。
  9. 前記第2の仮想マシンは、前記第1の仮想マシンとは異なる地理的位置にある請求項1に記載の方法。
  10. 前記第2の仮想マシンは前記第1の仮想マシンとは異なるタスクテナントにある請求項1に記載の方法。
  11. 前記第1のプールは2つ以上のタスクテナントからなる請求項1に記載の方法。
  12. 前記第2の仮想マシンは前記ワークアイテムに関連づけられた仕様に部分的に基づいて前記第2のプールに割り当てられる請求項1に記載の方法。
  13. 前記第1の仮想マシン及び前記第2の仮想マシンは異なる物理プロセッサを利用する請求項1に記載の方法。
  14. コンピューティング装置に請求項1〜12のいずれか1項記載の方法を実行させるためのプログラムを格納した1つまたは複数のコンピュータ記憶媒体。
  15. コンピューティング装置に請求項1〜12のいずれか1項記載の方法を実行させるためのプログラム
  16. 分散コンピューティング環境内で仮想マシンのプールにジョブを割り当て仮想マシン上でタスクを実行するためのシステムであって、該システムは、
    前記分散コンピューティング環境でタスクアカウントに関連するユーザから、ジョブを表すワークアイテムを受信するステップと、
    前記分散コンピューティング環境の第1の仮想マシンを第1のプールに自動的に割り振るステップと、
    前記第1のプールに関連付けられた第1のスケジューラを用いて、ジョブキューから前記ジョブのタスクを取り出し、前記タスクを前記第1のプール内の前記第1の仮想マシンに割当てる、ステップと、
    前記第1のスケジューラを用いて、前記第1のプール上で前記タスクをスケジューリングするステップと、
    前記第1の仮想マシン上で前記タスクを実行するステップと、
    前記第1のプールからの前記ジョブの移行を決定するステップと
    前記決定に基づき、前記第1の仮想マシンへの前記タスクの割当てを解放するとともに、少なくとも第2の仮想マシンからなる第2のプールに関連付けられた第2のスケジューラを用いて、前記ジョブキューから前記ジョブのタスクを取り出し、前記タスクを前記第2のプール内の前記第2の仮想マシンに再割当てするステップと、
    前記第2のスケジューラを用いて、前記第2のプール上で前記タスクをスケジューリングするステップと、
    前記第2の仮想マシン上で前記タスクを開始するステップと
    を含む方法を実行する1または複数のプロセッサを備えるシステム。
JP2014552219A 2012-01-09 2013-01-07 分散コンピューティング環境内で仮想マシンのプールにジョブを割り当て仮想マシン上でタスクを実行するための方法、プログラム、プログラムを格納した記憶媒体、及びシステム Active JP6254948B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/346,303 US9170849B2 (en) 2012-01-09 2012-01-09 Migration of task to different pool of resources based on task retry count during task lease
US13/346,303 2012-01-09
PCT/US2013/020442 WO2013106256A1 (en) 2012-01-09 2013-01-07 Decoupling paas resources, jobs, and scheduling

Publications (3)

Publication Number Publication Date
JP2015503811A JP2015503811A (ja) 2015-02-02
JP2015503811A5 JP2015503811A5 (ja) 2016-02-25
JP6254948B2 true JP6254948B2 (ja) 2017-12-27

Family

ID=48744879

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014552219A Active JP6254948B2 (ja) 2012-01-09 2013-01-07 分散コンピューティング環境内で仮想マシンのプールにジョブを割り当て仮想マシン上でタスクを実行するための方法、プログラム、プログラムを格納した記憶媒体、及びシステム

Country Status (6)

Country Link
US (1) US9170849B2 (ja)
EP (1) EP2802981B1 (ja)
JP (1) JP6254948B2 (ja)
KR (1) KR101994506B1 (ja)
CN (1) CN104040486B (ja)
WO (1) WO2013106256A1 (ja)

Families Citing this family (175)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8346935B2 (en) * 2010-01-15 2013-01-01 Joyent, Inc. Managing hardware resources by sending messages amongst servers in a data center
US8782434B1 (en) 2010-07-15 2014-07-15 The Research Foundation For The State University Of New York System and method for validating program execution at run-time
US8555276B2 (en) 2011-03-11 2013-10-08 Joyent, Inc. Systems and methods for transparently optimizing workloads
US8782224B2 (en) 2011-12-29 2014-07-15 Joyent, Inc. Systems and methods for time-based dynamic allocation of resource management
US9946563B2 (en) * 2012-02-21 2018-04-17 Disney Enterprises, Inc. Batch scheduler management of virtual machines
US8881149B2 (en) * 2012-04-11 2014-11-04 International Business Machines Corporation Control of java resource runtime usage
US9507612B1 (en) 2012-08-31 2016-11-29 United Services Automobile Association (Usaa) Managing dedicated and floating pool of virtual machines based on demand
US9063721B2 (en) 2012-09-14 2015-06-23 The Research Foundation For The State University Of New York Continuous run-time validation of program execution: a practical approach
US9069782B2 (en) 2012-10-01 2015-06-30 The Research Foundation For The State University Of New York System and method for security and privacy aware virtual machine checkpointing
US9104456B2 (en) * 2013-03-14 2015-08-11 Joyent, Inc. Zone management of compute-centric object stores
US8677359B1 (en) 2013-03-14 2014-03-18 Joyent, Inc. Compute-centric object stores and methods of use
US8881279B2 (en) 2013-03-14 2014-11-04 Joyent, Inc. Systems and methods for zone-based intrusion detection
US8826279B1 (en) 2013-03-14 2014-09-02 Joyent, Inc. Instruction set architecture for compute-based object stores
US8943284B2 (en) 2013-03-14 2015-01-27 Joyent, Inc. Systems and methods for integrating compute resources in a storage area network
US9092238B2 (en) 2013-03-15 2015-07-28 Joyent, Inc. Versioning schemes for compute-centric object stores
US8775485B1 (en) 2013-03-15 2014-07-08 Joyent, Inc. Object store management operations within compute-centric object stores
US8793688B1 (en) 2013-03-15 2014-07-29 Joyent, Inc. Systems and methods for double hulled virtualization operations
JP6157181B2 (ja) * 2013-04-02 2017-07-05 キヤノン株式会社 サーバーシステム、その制御方法、およびそのプログラム
US8706798B1 (en) 2013-06-28 2014-04-22 Pepperdata, Inc. Systems, methods, and devices for dynamic resource monitoring and allocation in a cluster system
US9923837B2 (en) * 2013-08-29 2018-03-20 Ericsson Ab Method and system to allocate bandwidth based on task deadline in cloud computing networks
US10057139B2 (en) * 2013-08-30 2018-08-21 Hewlett Packard Enterprise Development Lp Maintain a service on a cloud network based on a scale rule
US11663025B2 (en) * 2013-09-23 2023-05-30 Bankvault Pty Ltd Maintenance of and caching of suspended virtual computers in a pool of suspended virtual computers
CN103746839B (zh) * 2013-12-27 2017-06-16 新浪网技术(中国)有限公司 PaaS系统和PaaS应用池中的VM节点调度方法
US9612878B2 (en) 2014-03-31 2017-04-04 International Business Machines Corporation Resource allocation in job scheduling environment
RU2568282C2 (ru) * 2014-04-18 2015-11-20 Закрытое акционерное общество "Лаборатория Касперского" Система и способ обеспечения отказоустойчивости антивирусной защиты, реализуемой в виртуальной среде
US10162683B2 (en) * 2014-06-05 2018-12-25 International Business Machines Corporation Weighted stealing of resources
US11474874B2 (en) 2014-08-14 2022-10-18 Qubole, Inc. Systems and methods for auto-scaling a big data system
US10048974B1 (en) 2014-09-30 2018-08-14 Amazon Technologies, Inc. Message-based computation request scheduling
US9146764B1 (en) 2014-09-30 2015-09-29 Amazon Technologies, Inc. Processing event messages for user requests to execute program code
US9830193B1 (en) 2014-09-30 2017-11-28 Amazon Technologies, Inc. Automatic management of low latency computational capacity
US9323556B2 (en) 2014-09-30 2016-04-26 Amazon Technologies, Inc. Programmatic event detection and message generation for requests to execute program code
US9678773B1 (en) 2014-09-30 2017-06-13 Amazon Technologies, Inc. Low latency computational capacity provisioning
US9600312B2 (en) 2014-09-30 2017-03-21 Amazon Technologies, Inc. Threading as a service
US9715402B2 (en) 2014-09-30 2017-07-25 Amazon Technologies, Inc. Dynamic code deployment and versioning
WO2016065198A1 (en) * 2014-10-22 2016-04-28 Qubole, Inc. High performance hadoop with new generation instances
US10411960B1 (en) * 2014-11-12 2019-09-10 Amazon Technologies, Inc. Detaching instances from auto-scaling group
US9647889B1 (en) 2014-11-12 2017-05-09 Amazon Technologies, Inc. Standby instances for auto-scaling groups
US9413626B2 (en) 2014-12-05 2016-08-09 Amazon Technologies, Inc. Automatic management of resource sizing
US10007584B2 (en) 2015-01-28 2018-06-26 Red Hat, Inc. Automated container migration in a platform-as-a-service system
US9588790B1 (en) 2015-02-04 2017-03-07 Amazon Technologies, Inc. Stateful virtual compute system
US9727725B2 (en) 2015-02-04 2017-08-08 Amazon Technologies, Inc. Security protocols for low latency execution of program code
US9733967B2 (en) 2015-02-04 2017-08-15 Amazon Technologies, Inc. Security protocols for low latency execution of program code
JP6540072B2 (ja) * 2015-02-16 2019-07-10 富士通株式会社 管理装置、情報処理システム及び管理プログラム
US11283697B1 (en) 2015-03-24 2022-03-22 Vmware, Inc. Scalable real time metrics management
US9930103B2 (en) 2015-04-08 2018-03-27 Amazon Technologies, Inc. Endpoint management system providing an application programming interface proxy service
US9785476B2 (en) 2015-04-08 2017-10-10 Amazon Technologies, Inc. Endpoint management system and virtual compute system
US11436667B2 (en) 2015-06-08 2022-09-06 Qubole, Inc. Pure-spot and dynamically rebalanced auto-scaling clusters
US10922115B2 (en) 2015-06-30 2021-02-16 Telefonaktiebolaget Lm Ericsson (Publ) Commissioning of virtualized entities
CN106326002B (zh) 2015-07-10 2020-10-20 阿里巴巴集团控股有限公司 资源调度方法、装置及设备
KR102371916B1 (ko) 2015-07-22 2022-03-07 삼성전자주식회사 가상 머신을 지원하는 스토리지 장치, 그것을 포함하는 스토리지 시스템 및 그것의 동작 방법
WO2017018978A1 (en) * 2015-07-24 2017-02-02 Hewlett Packard Enterprise Development Lp Scheduling jobs in a computing cluster
CN105068859B (zh) * 2015-07-29 2017-12-15 上海谐桐信息技术有限公司 一种跨虚拟机的多服务调用方法及系统
US9870266B2 (en) 2015-07-30 2018-01-16 Nasdaq, Inc. Background job processing framework
US10594562B1 (en) * 2015-08-25 2020-03-17 Vmware, Inc. Intelligent autoscale of services
US9778961B2 (en) * 2015-09-14 2017-10-03 Qualcomm Incorporated Efficient scheduling of multi-versioned tasks
US9928108B1 (en) 2015-09-29 2018-03-27 Amazon Technologies, Inc. Metaevent handling for on-demand code execution environments
US10042660B2 (en) 2015-09-30 2018-08-07 Amazon Technologies, Inc. Management of periodic requests for compute capacity
KR101685852B1 (ko) * 2015-11-24 2016-12-12 수원대학교산학협력단 클라우드 컴퓨팅 서비스의 스팟 인스턴스 기반의 가용자원경매를 위한 입찰가 결정방법
US10013267B1 (en) 2015-12-16 2018-07-03 Amazon Technologies, Inc. Pre-triggers for code execution environments
US9811363B1 (en) 2015-12-16 2017-11-07 Amazon Technologies, Inc. Predictive management of on-demand code execution
US9830175B1 (en) 2015-12-16 2017-11-28 Amazon Technologies, Inc. Predictive management of on-demand code execution
US9811434B1 (en) 2015-12-16 2017-11-07 Amazon Technologies, Inc. Predictive management of on-demand code execution
US10754701B1 (en) 2015-12-16 2020-08-25 Amazon Technologies, Inc. Executing user-defined code in response to determining that resources expected to be utilized comply with resource restrictions
US10395219B1 (en) * 2015-12-18 2019-08-27 Amazon Technologies, Inc. Location policies for reserved virtual machine instances
US10002026B1 (en) * 2015-12-21 2018-06-19 Amazon Technologies, Inc. Acquisition and maintenance of dedicated, reserved, and variable compute capacity
US9910713B2 (en) 2015-12-21 2018-03-06 Amazon Technologies, Inc. Code execution request routing
US10067801B1 (en) 2015-12-21 2018-09-04 Amazon Technologies, Inc. Acquisition and maintenance of compute capacity
US10609129B2 (en) * 2016-02-19 2020-03-31 Huawei Technologies Co., Ltd. Method and system for multi-tenant resource distribution
US10212041B1 (en) 2016-03-04 2019-02-19 Avi Networks Traffic pattern detection and presentation in container-based cloud computing architecture
US10931548B1 (en) 2016-03-28 2021-02-23 Vmware, Inc. Collecting health monitoring data pertaining to an application from a selected set of service engines
US10891145B2 (en) 2016-03-30 2021-01-12 Amazon Technologies, Inc. Processing pre-existing data sets at an on demand code execution environment
US11132213B1 (en) 2016-03-30 2021-09-28 Amazon Technologies, Inc. Dependency-based process of pre-existing data sets at an on demand code execution environment
US10162672B2 (en) 2016-03-30 2018-12-25 Amazon Technologies, Inc. Generating data streams from pre-existing data sets
EP3440546A1 (en) * 2016-04-05 2019-02-13 Convida Wireless, LLC Building pool-based m2m service layer through nfv
US10044640B1 (en) 2016-04-26 2018-08-07 EMC IP Holding Company LLC Distributed resource scheduling layer utilizable with resource abstraction frameworks
CN105912406B (zh) * 2016-05-05 2018-01-12 中国人民解放军国防科学技术大学 一种低能耗的独立任务调度与资源配置方法
US11080207B2 (en) 2016-06-07 2021-08-03 Qubole, Inc. Caching framework for big-data engines in the cloud
US10282229B2 (en) 2016-06-28 2019-05-07 Amazon Technologies, Inc. Asynchronous task management in an on-demand network code execution environment
US10877796B1 (en) * 2016-06-28 2020-12-29 Amazon Technologies, Inc. Job execution with scheduled reserved compute instances
US10102040B2 (en) 2016-06-29 2018-10-16 Amazon Technologies, Inc Adjusting variable limit on concurrent code executions
US10203990B2 (en) 2016-06-30 2019-02-12 Amazon Technologies, Inc. On-demand network code execution with cross-account aliases
US10277708B2 (en) 2016-06-30 2019-04-30 Amazon Technologies, Inc. On-demand network code execution with cross-account aliases
US10606664B2 (en) 2016-09-07 2020-03-31 Qubole Inc. Heterogeneous auto-scaling big-data clusters in the cloud
US10884787B1 (en) 2016-09-23 2021-01-05 Amazon Technologies, Inc. Execution guarantees in an on-demand network code execution system
US10061613B1 (en) 2016-09-23 2018-08-28 Amazon Technologies, Inc. Idempotent task execution in on-demand network code execution systems
US11119813B1 (en) 2016-09-30 2021-09-14 Amazon Technologies, Inc. Mapreduce implementation using an on-demand network code execution system
US10616317B2 (en) 2016-11-10 2020-04-07 Trilliant Networks, Inc. Method and system for affinity load balancing
US11025722B2 (en) * 2017-04-15 2021-06-01 Microsoft Technology Licensing, Llc IoT device jobs
US10733024B2 (en) 2017-05-24 2020-08-04 Qubole Inc. Task packing scheduling process for long running applications
WO2019041279A1 (zh) * 2017-08-31 2019-03-07 深圳市云中飞网络科技有限公司 搜索资源推荐方法及相关产品
KR101858715B1 (ko) * 2017-11-10 2018-05-16 베스핀글로벌 주식회사 서비스자원 관리시스템 및 그 방법
KR102491068B1 (ko) * 2017-11-17 2023-01-19 에스케이하이닉스 주식회사 메모리 장치에 대한 태스크들을 스케줄링하는 반도체 장치 및 이를 포함하는 시스템
US10303492B1 (en) 2017-12-13 2019-05-28 Amazon Technologies, Inc. Managing custom runtimes in an on-demand code execution system
US10564946B1 (en) 2017-12-13 2020-02-18 Amazon Technologies, Inc. Dependency handling in an on-demand network code execution system
US10452436B2 (en) * 2018-01-03 2019-10-22 Cisco Technology, Inc. System and method for scheduling workload based on a credit-based mechanism
US11228489B2 (en) 2018-01-23 2022-01-18 Qubole, Inc. System and methods for auto-tuning big data workloads on cloud platforms
US10831898B1 (en) 2018-02-05 2020-11-10 Amazon Technologies, Inc. Detecting privilege escalations in code including cross-service calls
US10733085B1 (en) 2018-02-05 2020-08-04 Amazon Technologies, Inc. Detecting impedance mismatches due to cross-service calls
US10572375B1 (en) 2018-02-05 2020-02-25 Amazon Technologies, Inc. Detecting parameter validity in code including cross-service calls
US10353678B1 (en) 2018-02-05 2019-07-16 Amazon Technologies, Inc. Detecting code characteristic alterations due to cross-service calls
US10990440B2 (en) * 2018-02-06 2021-04-27 Rubrik, Inc. Real-time distributed job scheduler with job self-scheduling
US10725752B1 (en) 2018-02-13 2020-07-28 Amazon Technologies, Inc. Dependency handling in an on-demand network code execution system
US10776091B1 (en) 2018-02-26 2020-09-15 Amazon Technologies, Inc. Logging endpoint in an on-demand code execution system
CN108920260B (zh) * 2018-05-16 2021-11-26 成都淞幸科技有限责任公司 一种异构系统的交互方法及其装置
US10999168B1 (en) 2018-05-30 2021-05-04 Vmware, Inc. User defined custom metrics
US10853115B2 (en) 2018-06-25 2020-12-01 Amazon Technologies, Inc. Execution of auxiliary functions in an on-demand network code execution system
US10649749B1 (en) 2018-06-26 2020-05-12 Amazon Technologies, Inc. Cross-environment application of tracing information for improved code execution
US11146569B1 (en) 2018-06-28 2021-10-12 Amazon Technologies, Inc. Escalation-resistant secure network services using request-scoped authentication information
US10949237B2 (en) 2018-06-29 2021-03-16 Amazon Technologies, Inc. Operating system customization in an on-demand network code execution system
US11099870B1 (en) 2018-07-25 2021-08-24 Amazon Technologies, Inc. Reducing execution times in an on-demand network code execution system using saved machine states
CN109002353A (zh) * 2018-08-16 2018-12-14 北京中科梧桐网络科技有限公司 一种java统一任务中心调度方法
US11243953B2 (en) 2018-09-27 2022-02-08 Amazon Technologies, Inc. Mapreduce implementation in an on-demand network code execution system and stream data processing system
US11099917B2 (en) 2018-09-27 2021-08-24 Amazon Technologies, Inc. Efficient state maintenance for execution environments in an on-demand code execution system
EP4239484A3 (en) 2018-10-26 2024-01-03 VMware, Inc. Collecting samples hierarchically in a datacenter
US11943093B1 (en) 2018-11-20 2024-03-26 Amazon Technologies, Inc. Network connection recovery after virtual machine transition in an on-demand network code execution system
US10884812B2 (en) 2018-12-13 2021-01-05 Amazon Technologies, Inc. Performance-based hardware emulation in an on-demand network code execution system
CN109725998A (zh) * 2018-12-26 2019-05-07 亚信科技(中国)有限公司 一种任务重试方法及装置
US10338964B1 (en) * 2019-01-16 2019-07-02 Capital One Services, Llc Computing node job assignment for distribution of scheduling operations
CN109766192A (zh) * 2019-01-25 2019-05-17 郑州云海信息技术有限公司 一种虚拟化服务器的调度方法及调度系统
CN109815019B (zh) * 2019-02-03 2021-06-15 普信恒业科技发展(北京)有限公司 任务调度方法、装置、电子设备及可读存储介质
US11010188B1 (en) 2019-02-05 2021-05-18 Amazon Technologies, Inc. Simulated data object storage using on-demand computation of data objects
US11861386B1 (en) 2019-03-22 2024-01-02 Amazon Technologies, Inc. Application gateways in an on-demand network code execution system
US11290358B2 (en) 2019-05-30 2022-03-29 Vmware, Inc. Partitioning health monitoring in a global server load balancing system
US11704316B2 (en) 2019-05-31 2023-07-18 Qubole, Inc. Systems and methods for determining peak memory requirements in SQL processing engines with concurrent subtasks
US11144360B2 (en) 2019-05-31 2021-10-12 Qubole, Inc. System and method for scheduling and running interactive database queries with service level agreements in a multi-tenant processing system
US11119809B1 (en) 2019-06-20 2021-09-14 Amazon Technologies, Inc. Virtualization-based transaction handling in an on-demand network code execution system
US10996993B2 (en) 2019-06-20 2021-05-04 Western Digital Technologies, Inc. Adaptive work distribution in distributed systems
US11190609B2 (en) 2019-06-28 2021-11-30 Amazon Technologies, Inc. Connection pooling for scalable network services
US11159528B2 (en) 2019-06-28 2021-10-26 Amazon Technologies, Inc. Authentication to network-services using hosted authentication information
US11115404B2 (en) 2019-06-28 2021-09-07 Amazon Technologies, Inc. Facilitating service connections in serverless code executions
US12001866B2 (en) * 2019-07-01 2024-06-04 Microsoft Technology Licensing, Llc Harvest virtual machine for utilizing cloud-computing resources
JP2021012464A (ja) 2019-07-04 2021-02-04 富士通株式会社 切替プログラム、装置、および方法
US11360948B2 (en) 2019-09-27 2022-06-14 Amazon Technologies, Inc. Inserting owner-specified data processing pipelines into input/output path of object storage service
US11394761B1 (en) 2019-09-27 2022-07-19 Amazon Technologies, Inc. Execution of user-submitted code on a stream of data
US11656892B1 (en) 2019-09-27 2023-05-23 Amazon Technologies, Inc. Sequential execution of user-submitted code and native functions
US11055112B2 (en) 2019-09-27 2021-07-06 Amazon Technologies, Inc. Inserting executions of owner-specified code into input/output path of object storage service
US11550944B2 (en) 2019-09-27 2023-01-10 Amazon Technologies, Inc. Code execution environment customization system for object storage service
US11386230B2 (en) 2019-09-27 2022-07-12 Amazon Technologies, Inc. On-demand code obfuscation of data in input path of object storage service
US10996961B2 (en) 2019-09-27 2021-05-04 Amazon Technologies, Inc. On-demand indexing of data in input path of object storage service
US11416628B2 (en) 2019-09-27 2022-08-16 Amazon Technologies, Inc. User-specific data manipulation system for object storage service based on user-submitted code
US11263220B2 (en) 2019-09-27 2022-03-01 Amazon Technologies, Inc. On-demand execution of object transformation code in output path of object storage service
US11106477B2 (en) 2019-09-27 2021-08-31 Amazon Technologies, Inc. Execution of owner-specified code during input/output path to object storage service
US11023416B2 (en) 2019-09-27 2021-06-01 Amazon Technologies, Inc. Data access control system for object storage service based on owner-defined code
US11023311B2 (en) 2019-09-27 2021-06-01 Amazon Technologies, Inc. On-demand code execution in input path of data uploaded to storage service in multiple data portions
US10908927B1 (en) 2019-09-27 2021-02-02 Amazon Technologies, Inc. On-demand execution of object filter code in output path of object storage service
US11250007B1 (en) 2019-09-27 2022-02-15 Amazon Technologies, Inc. On-demand execution of object combination code in output path of object storage service
CN110865872B (zh) * 2019-11-14 2022-07-08 北京京航计算通讯研究所 基于资源合理化应用的虚拟化集群资源调度系统
US11119826B2 (en) 2019-11-27 2021-09-14 Amazon Technologies, Inc. Serverless call distribution to implement spillover while avoiding cold starts
US10942795B1 (en) 2019-11-27 2021-03-09 Amazon Technologies, Inc. Serverless call distribution to utilize reserved capacity without inhibiting scaling
CN112882827B (zh) 2019-11-29 2024-09-03 伊姆西Ip控股有限责任公司 用于负载均衡的方法、电子设备和计算机程序产品
US11169855B2 (en) * 2019-12-03 2021-11-09 Sap Se Resource allocation using application-generated notifications
US11714682B1 (en) 2020-03-03 2023-08-01 Amazon Technologies, Inc. Reclaiming computing resources in an on-demand code execution system
US11188391B1 (en) 2020-03-11 2021-11-30 Amazon Technologies, Inc. Allocating resources to on-demand code executions under scarcity conditions
US11775640B1 (en) 2020-03-30 2023-10-03 Amazon Technologies, Inc. Resource utilization-based malicious task detection in an on-demand code execution system
US11372572B2 (en) 2020-05-08 2022-06-28 Kyndryl, Inc. Self-relocating data center based on predicted events
US11194660B1 (en) 2020-05-28 2021-12-07 International Business Machines Corporation Listing and protocol for namespace index
US11243695B2 (en) 2020-05-28 2022-02-08 International Business Machines Corporation Leasing unordered items in namespace indices
US11500700B2 (en) 2020-05-28 2022-11-15 International Business Machines Corporation Leasing prioritized items in namespace indices
US11188419B1 (en) 2020-05-28 2021-11-30 International Business Machines Corporation Namespace indices in dispersed storage networks
US11550713B1 (en) 2020-11-25 2023-01-10 Amazon Technologies, Inc. Garbage collection in distributed systems using life cycled storage roots
US11593270B1 (en) 2020-11-25 2023-02-28 Amazon Technologies, Inc. Fast distributed caching using erasure coded object parts
US11811861B2 (en) 2021-05-17 2023-11-07 Vmware, Inc. Dynamically updating load balancing criteria
US11792155B2 (en) 2021-06-14 2023-10-17 Vmware, Inc. Method and apparatus for enhanced client persistence in multi-site GSLB deployments
US11388210B1 (en) 2021-06-30 2022-07-12 Amazon Technologies, Inc. Streaming analytics using a serverless compute system
JP2023009934A (ja) * 2021-07-08 2023-01-20 富士通株式会社 情報処理装置、情報処理方法及び情報処理プログラム
US20230055415A1 (en) * 2021-08-20 2023-02-23 Kyndryl, Inc. Machine learning and optimization techniques for job scheduling
US20230072962A1 (en) * 2021-09-03 2023-03-09 International Business Machines Corporation Distributed system workload management via node autonomy
US11968280B1 (en) 2021-11-24 2024-04-23 Amazon Technologies, Inc. Controlling ingestion of streaming data to serverless function executions
US12015603B2 (en) 2021-12-10 2024-06-18 Amazon Technologies, Inc. Multi-tenant mode for serverless code execution
US20230229515A1 (en) * 2022-01-18 2023-07-20 International Business Machines Corporation Propagating job contexts to a job execution environment
US20230232195A1 (en) 2022-01-19 2023-07-20 Vmware, Inc. Collective scaling of applications
US12107821B2 (en) 2022-07-14 2024-10-01 VMware LLC Two tier DNS
US12093674B2 (en) 2022-11-09 2024-09-17 Bank Of America Corporation Creation of a performance-optimized image of a server
CN115934299B (zh) * 2023-02-22 2023-05-23 智者四海(北京)技术有限公司 Yarn作业的迁移系统及方法
CN117632445B (zh) * 2024-01-25 2024-04-30 杭州阿里云飞天信息技术有限公司 请求处理方法以及装置、任务执行方法以及装置

Family Cites Families (69)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5062037A (en) 1988-10-24 1991-10-29 Ibm Corp. Method to provide concurrent execution of distributed application programs by a host computer and an intelligent work station on an sna network
US5392430A (en) 1992-10-30 1995-02-21 International Business Machines Hierarchical scheduling method for processing tasks having precedence constraints on a parallel processing system
US5832262A (en) 1995-09-14 1998-11-03 Lockheed Martin Corporation Realtime hardware scheduler utilizing processor message passing and queue management cells
US6223202B1 (en) * 1998-06-05 2001-04-24 International Business Machines Corp. Virtual machine pooling
KR100400165B1 (ko) * 1998-11-16 2003-10-01 텔레폰아크티에볼라게트 엘엠 에릭슨 처리 시스템 스케쥴링
US7290009B1 (en) 1999-08-25 2007-10-30 The Trustees Of Columbia University In The City Of New York System and method for allocating resources using spot market and derivative market techniques
US8135796B1 (en) 2000-05-09 2012-03-13 Oracle America, Inc. Mechanism and apparatus for accessing and addressing services in a distributed computing environment
US6865591B1 (en) 2000-06-30 2005-03-08 Intel Corporation Apparatus and method for building distributed fault-tolerant/high-availability computed applications
JP2002041305A (ja) 2000-07-26 2002-02-08 Hitachi Ltd 仮想計算機システムにおける計算機資源の割当て方法および仮想計算機システム
US6985951B2 (en) 2001-03-08 2006-01-10 International Business Machines Corporation Inter-partition message passing method, system and program product for managing workload in a partitioned processing environment
US7213246B1 (en) * 2002-03-28 2007-05-01 Veritas Operating Corporation Failing over a virtual machine
US7337226B2 (en) 2002-05-10 2008-02-26 Oracle International Corporation Method and mechanism for implementing dynamic sizing of session pools
US7395334B2 (en) 2003-04-25 2008-07-01 International Business Machines Corporation System for determining unreturned standby resource usage
JP4028444B2 (ja) * 2003-06-27 2007-12-26 株式会社東芝 スケジューリング方法およびリアルタイム処理システム
US7596790B2 (en) 2003-08-29 2009-09-29 Intel Corporation Allocating computing resources in a distributed environment
US7177878B2 (en) 2004-04-13 2007-02-13 International Business Machines Corporation Simple persistence mechanism for server based web applications
US7739685B2 (en) 2005-01-06 2010-06-15 International Business Machines Corporation Decoupling a central processing unit from its tasks
US8429630B2 (en) 2005-09-15 2013-04-23 Ca, Inc. Globally distributed utility computing cloud
US8151277B2 (en) 2007-05-15 2012-04-03 Dynatrace Software Gmbh Method and system for dynamic remote injection of in-process agents into virtual machine based applications
WO2008084826A1 (ja) 2007-01-11 2008-07-17 Nec Corporation プロビジョニングシステム、方法、及び、プログラム
US8554981B2 (en) 2007-02-02 2013-10-08 Vmware, Inc. High availability virtual machine cluster
KR20090000631A (ko) 2007-03-12 2009-01-08 권혁숙 자전거 보관 대여소
US8065676B1 (en) 2007-04-24 2011-11-22 Hewlett-Packard Development Company, L.P. Automated provisioning of virtual machines for a virtual machine buffer pool and production pool
KR101040117B1 (ko) * 2007-12-13 2011-06-09 한국전자통신연구원 다중 시스템 워크로드 관리 시스템 및 방법
US8930946B1 (en) * 2008-02-14 2015-01-06 Google Inc. Leasing prioritized tasks
US8112526B2 (en) * 2008-06-24 2012-02-07 International Business Machines Corporation Process migration based on service availability in a multi-node environment
US20100042670A1 (en) 2008-08-13 2010-02-18 Electronic Data Systems Corporation Integrated development engine for a cloud computing environment
US8434087B2 (en) 2008-08-29 2013-04-30 International Business Machines Corporation Distributed acceleration devices management for streams processing
US7870044B2 (en) 2008-10-02 2011-01-11 Verizon Patent And Licensing Inc. Methods, systems and computer program products for a cloud computing spot market platform
US8291414B2 (en) 2008-12-11 2012-10-16 International Business Machines Corporation Shared resource service provisioning using a virtual machine manager
US8918488B2 (en) 2009-02-04 2014-12-23 Citrix Systems, Inc. Methods and systems for automated management of virtual resources in a cloud computing environment
KR20100092850A (ko) * 2009-02-13 2010-08-23 경희대학교 산학협력단 클라우드 컴퓨팅 환경에서의 리소스 분배 장치 및 그 방법
US9201485B2 (en) 2009-05-29 2015-12-01 Red Hat, Inc. Power management in managed network having hardware based and virtual resources
US20100318454A1 (en) 2009-06-16 2010-12-16 Microsoft Corporation Function and Constraint Based Service Agreements
US8261275B2 (en) 2009-06-29 2012-09-04 Oracle America, Inc. Method and system for heuristics-based task scheduling
US20110078303A1 (en) 2009-09-30 2011-03-31 Alcatel-Lucent Usa Inc. Dynamic load balancing and scaling of allocated cloud resources in an enterprise network
US20110113426A1 (en) * 2009-11-09 2011-05-12 Hsiang-Tsung Kung Apparatuses for switching the running of a virtual machine between multiple computer devices belonging to the same computer platform and the associated switching methods
US8589921B2 (en) * 2009-11-30 2013-11-19 Red Hat Israel, Ltd. Method and system for target host optimization based on resource sharing in a load balancing host and virtual machine adjustable selection algorithm
US9135018B2 (en) 2009-12-11 2015-09-15 Deutsche Telekom Ag Computer cluster and method for providing a disaster recovery functionality for a computer cluster
US8924569B2 (en) * 2009-12-17 2014-12-30 Intel Corporation Cloud federation as a service
US8924982B2 (en) 2010-01-12 2014-12-30 Amazon Technologies, Inc. Managing private use of program execution capacity
US20110173626A1 (en) 2010-01-12 2011-07-14 Nec Laboratories America, Inc. Efficient maintenance of job prioritization for profit maximization in cloud service delivery infrastructures
US8301746B2 (en) 2010-01-26 2012-10-30 International Business Machines Corporation Method and system for abstracting non-functional requirements based deployment of virtual machines
US9703586B2 (en) 2010-02-17 2017-07-11 Microsoft Technology Licensing, Llc Distribution control and tracking mechanism of virtual machine appliances
US20110214124A1 (en) 2010-02-26 2011-09-01 James Michael Ferris Systems and methods for generating cross-cloud computing appliances
US8464255B2 (en) 2010-03-12 2013-06-11 Microsoft Corporation Managing performance interference effects on cloud computing servers
US8271814B2 (en) 2010-03-22 2012-09-18 Microsoft Corporation Migrating a client computer to a virtual machine server when the client computer is deemed to be idle
US9116731B2 (en) 2010-04-07 2015-08-25 Accenture Global Services Limited Cloud reference model framework
JP5417626B2 (ja) * 2010-04-30 2014-02-19 株式会社日立製作所 管理計算機、ジョブスケジューリング方法及びジョブスケジューリングプログラム
US8606897B2 (en) 2010-05-28 2013-12-10 Red Hat, Inc. Systems and methods for exporting usage history data as input to a management platform of a target cloud-based network
US8667171B2 (en) 2010-05-28 2014-03-04 Microsoft Corporation Virtual data center allocation with bandwidth guarantees
US9329947B2 (en) * 2010-06-22 2016-05-03 Red Hat Israel, Ltd. Resuming a paused virtual machine without restarting the virtual machine
US8887163B2 (en) 2010-06-25 2014-11-11 Ebay Inc. Task scheduling based on dependencies and resources
US8739170B1 (en) * 2010-06-30 2014-05-27 Amazon Technologies, Inc. Managing requests for computing capacity
US20120011077A1 (en) 2010-07-12 2012-01-12 Bhagat Bhavesh C Cloud Computing Governance, Cyber Security, Risk, and Compliance Business Rules System and Method
JP2014038364A (ja) 2010-10-27 2014-02-27 Hitachi Ltd リソース管理サーバ、リソース管理方法及びリソース管理プログラム
US9237194B2 (en) 2010-11-05 2016-01-12 Verizon Patent And Licensing Inc. Load balancer and firewall self-provisioning system
JP5845571B2 (ja) 2010-11-30 2016-01-20 富士通株式会社 計算システムおよび計算システム管理方法
US20120159234A1 (en) 2010-12-15 2012-06-21 Microsoft Corporation Providing resilient services
US10678602B2 (en) 2011-02-09 2020-06-09 Cisco Technology, Inc. Apparatus, systems and methods for dynamic adaptive metrics based application deployment on distributed infrastructures
US8806015B2 (en) * 2011-05-04 2014-08-12 International Business Machines Corporation Workload-aware placement in private heterogeneous clouds
US20120311575A1 (en) 2011-06-02 2012-12-06 Fujitsu Limited System and method for enforcing policies for virtual machines
US9015708B2 (en) * 2011-07-28 2015-04-21 International Business Machines Corporation System for improving the performance of high performance computing applications on cloud using integrated load balancing
US20130061220A1 (en) 2011-09-06 2013-03-07 Xerox Corporation Method for on-demand inter-cloud load provisioning for transient bursts of computing needs
US9038063B2 (en) 2011-09-07 2015-05-19 International Business Machines Corporation Determining virtual machine image pattern distributions in a networked computing environment
US8856797B1 (en) 2011-10-05 2014-10-07 Amazon Technologies, Inc. Reactive auto-scaling of capacity
US20130091376A1 (en) 2011-10-05 2013-04-11 International Business Machines Corporation Self-repairing database system
US9229749B2 (en) * 2011-10-31 2016-01-05 Cisco Technology, Inc. Compute and storage provisioning in a cloud environment
US8966085B2 (en) 2012-01-04 2015-02-24 International Business Machines Corporation Policy-based scaling of computing resources in a networked computing environment

Also Published As

Publication number Publication date
JP2015503811A (ja) 2015-02-02
WO2013106256A1 (en) 2013-07-18
EP2802981A4 (en) 2015-12-02
EP2802981B1 (en) 2021-02-24
US9170849B2 (en) 2015-10-27
CN104040486A (zh) 2014-09-10
KR20140109939A (ko) 2014-09-16
EP2802981A1 (en) 2014-11-19
CN104040486B (zh) 2018-03-13
KR101994506B1 (ko) 2019-06-28
US20130179881A1 (en) 2013-07-11

Similar Documents

Publication Publication Date Title
JP6254948B2 (ja) 分散コンピューティング環境内で仮想マシンのプールにジョブを割り当て仮想マシン上でタスクを実行するための方法、プログラム、プログラムを格納した記憶媒体、及びシステム
JP6165777B2 (ja) 自動スケーリングのためのコンピューティングシステム、コンピュータ記憶メモリ、及び、コンピュータ実装方法
US11922198B2 (en) Assignment of resources in virtual machine pools
US20130179894A1 (en) Platform as a service job scheduling
JP6254949B2 (ja) 仮想マシンプールにおけるリソースの価格設定
US11106508B2 (en) Elastic multi-tenant container architecture
Chard et al. Cost-aware cloud provisioning
US20190377596A1 (en) Flexible batch job scheduling in virtualization environments
Gupta et al. Enhancement of Fault Tolerance in Cloud Computing

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151228

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20151228

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170118

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170127

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170405

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170926

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20171005

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171025

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20171102

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171201

R150 Certificate of patent or registration of utility model

Ref document number: 6254948

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250