JP2015507279A - Paas階層スケジューリングおよび自動スケーリング - Google Patents

Paas階層スケジューリングおよび自動スケーリング Download PDF

Info

Publication number
JP2015507279A
JP2015507279A JP2014552208A JP2014552208A JP2015507279A JP 2015507279 A JP2015507279 A JP 2015507279A JP 2014552208 A JP2014552208 A JP 2014552208A JP 2014552208 A JP2014552208 A JP 2014552208A JP 2015507279 A JP2015507279 A JP 2015507279A
Authority
JP
Japan
Prior art keywords
task
pool
job
machine
virtual machines
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.)
Granted
Application number
JP2014552208A
Other languages
English (en)
Other versions
JP2015507279A5 (ja
JP6165777B2 (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 JP2015507279A publication Critical patent/JP2015507279A/ja
Publication of JP2015507279A5 publication Critical patent/JP2015507279A5/ja
Application granted granted Critical
Publication of JP6165777B2 publication Critical patent/JP6165777B2/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/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • 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
    • 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]

Abstract

様々な実施形態では、ジョブを実施するためにプラットフォームによって分散コンピューティング環境内のサービスとしてリソースを提供するシステムおよび方法が提示される。システムは、組み合わせて本明細書で提供される機能を実施するように使用可能な、タスクマシン、タスク位置サービスマシン、高レベル位置サービスマシンなどのいくつかの構成要素からなることができる。システムが、仮想マシンなどのシステムのリソースを求め、システムに自動スケーリング規則を適用してそれらのリソースをスケーリングすることによってリソースを提供する方法を実施することが企図される。自動スケーリング規則の決定に基づいて、リソースを割り振って所望の結果を達成することができる。

Description

[0001]大規模な計算ジョブを実施する従来の方法ではしばしば、ユーザは、分散環境でテナントをアクティブに管理し、ジョブに関するキューを管理することが必要である。ユーザのこのアクティブな介入は、ジョブが大きなリソースクラスタに及ぶことができることを阻害すること、およびそうしたクラスタの使用を効率的な方式でスケーリングできることを阻害することがある。さらに、ジョブは従来、ジョブ、ジョブを完了するために使用されるリソース、およびリソース上のジョブのスケジューリングが密に結合される方式で作成されることがあり、障害またはロードバランシングに応答してジョブの効率的な移行が妨げられる。加えて、従来型システムの分散コンピューティング環境は、リソースプールの自動スケーリングを可能にする効率的な機構を提供しないことがある。
[0002]様々な実施形態では、ジョブを実施するためにプラットフォームによって分散コンピューティング環境内のサービスとしてリソースを提供するシステムおよび方法が提示される。システムは、組み合わせて本明細書で提供される機能を実施するように使用可能な、タスクマシン(例えば、本明細書で使用されるマシンは、ノードのクラスタからなるテナントを含むことができ、単一の物理マシンに限定されない)、タスク位置サービスマシン、高レベル位置サービスマシンなどのいくつかの構成要素からなることができる。システムが、仮想マシンなどのシステムのリソースを求め、システムに自動スケーリング規則を適用してそれらのリソースをスケーリングすることによってリソースを提供する方法を実施することが企図される。自動スケーリング規則の決定に基づいて、リソースを割り振って所望の結果を達成することができる。
[0003]この「概要」は、以下の「発明を実施するための形態」でさらに説明される概念の抜粋を単純化した形で紹介するために与えられるものである。この「概要」は、特許請求される主題の主要な特徴または不可欠な特徴を特定することを意図するものではなく、孤立して、特許請求される主題の範囲を決定する際の助けとして使用されることを意図するものではない。
[0004]添付の図面を参照しながら、以下で本発明が詳細に説明される。
[0005]本発明の態様による、本発明の実施形態を実装するのに適した例示的動作環境を示す図である。 [0006]本発明の態様による、例示的ジョブを示すブロック図である。 [0007]本発明の態様による、例示的プールを示すブロック図である。 [0008]本発明の態様による、分散コンピューティング環境内のタスクを実施するのに適した例示的システムのアーキテクチャ層を示すブロック図である。 [0009]本発明の態様による、単一の分散コンピューティングアーキテクチャ内に統合することのできる、種々の位置のプロセッサの例示的構成を示すブロック図である。 [0010]本発明の態様による、タスク位置サービスに関する潜在的構成を示すブロック図である。 [0011]本発明の態様による、例示的タスク位置サービスフロントエンド(「TLSFE」)を示すブロック図である。 [0012]本発明の態様による、例示的ワークアイテム/ジョブスケジューラ(「WIJ」)を示すブロック図である。 [0013]本発明の態様による、タスクテナントを示すブロック図である。 [0014]本発明の態様による、例示的プールサーバを示すブロック図である。 [0015]本発明の態様による、例示的分散コンピューティングシステム内の様々な構成要素間の例示的ワークフローを与える通信ダイアグラムである。 [0016]本発明の態様による、分散コンピューティング環境内のリソースを提供する例示的方法を示すブロック図である。 [0017]本発明の態様による、分散コンピューティング環境内のリソースを提供する追加の例示的方法を示すブロック図である。 [0018]本発明の態様による、分散コンピューティング環境内のリソースを提供する別の方法を示すブロック図である。 [0019]本発明の態様による、分散コンピューティング環境内の分離されたリソース、スケジューリング、およびジョブを提供する方法を示すブロック図である。
[0020]様々な実施形態では、ジョブを実施するためにプラットフォームによって分散コンピューティング環境内のサービスとしてリソースを提供するシステムおよび方法が提示される。システムは、組み合わせて本明細書で提供される機能を実施するように使用可能な、タスクマシン(本明細書ではノードおよび/またはマシンのクラスタとして企図される)、タスク位置サービスマシン(プロセッサおよびメモリを利用する1つまたは複数のノード上で動作するサービスとして企図される)、高レベル位置サービスマシン(プロセッサおよびメモリを利用する1つまたは複数のノード上で動作するサービスとして企図される)などのいくつかの構成要素からなることができる。システムが、仮想マシンなどのシステムのリソースを求め、システムに自動スケーリング規則を適用してそれらのリソースをスケーリングすることによってリソースを提供する方法を実施することが企図される。自動スケーリング規則の決定に基づいて、リソースを割り振って所望の結果を達成することができる。
[0021]第1の例示的態様は、階層スケジューリング能力(hierarchical scheduling ability)を有する分散コンピューティングシステムを含む。システムは、プロセッサおよびメモリを有するタスクマシンからなる。タスクマシン(本明細書ではタスクテナントとも呼ぶ)は、タスクをそれぞれ実行する1つまたは複数のタスク仮想マシンを維持する。システムはさらに、タスクマシンを制御し、タスクマシンのグルーピング内のタスクアカウントを維持する、プロセッサおよびメモリを有するタスク位置サービスマシンからなる。さらに、システムは、タスクアカウント作成、およびタスク位置サービスマシンとの間のタスクアカウント管理の調整のための、プロセッサおよびメモリを有する高レベル位置サービスマシンからなる。
[0022]本明細書で与えられる第2の例示的態様は、プロセッサおよびメモリを有するコンピューティング装置によって実行されるとき、分散コンピューティング環境内のリソースを提供する方法を実施するコンピュータ使用可能命令を格納するコンピュータ記憶媒体を含む。この方法は、プールに関連する仮想マシン数を求めることを含む。さらに、この方法は、プールサーバを有するタスク位置サービスマシンのプロセッサおよびメモリを用いて自動スケーリング規則を適用し、プールに関連する仮想マシン数を調節することからなる。加えて、この方法は、自動スケーリング規則がプールに関連する仮想マシン数を調節したことに応答して、プールに関連する1つまたは複数の仮想マシンを動的に割り振ることからなる。
[0023]本明細書で提供される本発明の第3の例示的態様は、分散コンピューティング環境内のリソースを提供するコンピュータ実装方法を対象とする。この方法は、ユーザからワークアイテムを受信することからなる。この方法はさらに、ユーザから自動スケーリング規則を受信することからなる。加えて、この方法は、ユーザによる介入なしに、第1のタスクマシン(すなわち、タスクテナント)内の第1の仮想マシンをプールに割り振ることを含むことが企図される。さらに、方法は、ユーザによる介入なしに、第1のタスクマシンから物理的に分離される第2のタスクマシン内の第2の仮想マシンをプールに割り振ることを含むことが企図される。例示的態様では、第1のタスクマシンおよび第2のタスクマシンは、共通データセンタまたは異なるデータセンタ内でもよい。この方法は、プール内の第1の仮想マシンおよび第2の仮想マシン上でワークアイテムからタスクをインスタンス化することからなるものとさらに企図される。この方法はまた、ユーザによる介入なしに、プールに自動スケーリング規則を適用することをも含むことができる。この方法はさらに、プールに関連する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]「ワークアイテム」は、分散コンピューティング環境内で実行されるジョブの静的表現である。ワークアイテムは、ジョブバイナリ、処理すべきデータに対するポインタ、および任意選択でジョブを実施するタスクを立ち上げるためのコマンドラインを含む、ジョブの様々な側面を指定することができる。さらに、ワークアイテムは、反復スケジュール、優先順位、および制限を指定することができる。例えば、ワークアイテムは、毎日午後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は、各仮想マシン上で動作するシステムエージェントの形を取ることができる。タスクランタイム層はまた、ユーザのタスク実行ファイルにリンクすることができるランタイムライブラリも含むことができる。ランタイムライブラリをシステム・エージェント・ランタイム層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人または複数のユーザ(またはすべてのユーザ)が作成した/システムに通信したすべてのワークアイテムを維持する。次いで、アクティブなワークアイテムのそれぞれの仕様に基づいて、システムは、タスクがそれに対してサブミットされるジョブおよびジョブキューを作成することができる。ワークアイテムは、反復スケジュール(reoccurrence schedule)を指定することができる(例えば、毎日午後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はまた、使用量を計量し、課金サポートを提供する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は、その永続的ストアで完了済みとジョブをマークし、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 (10)

  1. 階層スケジューラを有する分散コンピューティングシステムであって、
    プロセッサおよびメモリを有するタスクマシンであって、タスクをそれぞれ実行する1つまたは複数のタスク仮想マシンを維持するタスクマシンと、
    前記タスクマシンを制御し、タスクマシンのグルーピング内のタスクアカウントを維持するための、プロセッサおよびメモリを有するタスク位置サービスマシンと、
    タスクアカウント作成、および前記タスク位置サービスマシンとのタスクアカウント管理の調整のための、プロセッサおよびメモリを有する高レベル位置サービスマシンと
    を備えるシステム。
  2. 前記タスクマシンが、リソース利用に部分的に基づいて維持される仮想マシン数を増加または低減するように機能する請求項1に記載のシステム。
  3. 前記タスク位置サービスマシンがさらに、タスクマシンのグルーピングにわたってプール管理を処理するプールサーバからなる請求項1に記載のシステム。
  4. 前記プールサーバが、前記タスクマシンのタスクスケジューラと協調して、プールに関する仮想マシンを割り振る請求項3に記載のシステム。
  5. 前記プールサーバが、前記タスクマシンのタスクスケジューラと協調して、プールから仮想マシンを除去する請求項3に記載のシステム。
  6. 前記分散コンピューティングシステムにわたって高レベル位置サービスマシンのアクティブインスタンスが1つだけある請求項1に記載のシステム。
  7. プロセッサおよびメモリを有するコンピューティング装置によって実行されたとき、分散コンピューティング環境内のリソースを提供する方法を行うコンピュータ使用可能命令を格納する1つまたは複数のコンピュータ記憶媒体であって、前記方法が、
    プールに関連する仮想マシン数を求めるステップと、
    プールサーバを有するタスク位置サービスマシンのプロセッサおよびメモリを用いて自動スケーリング規則を適用し、前記プールに関連する仮想マシン数を調節するステップと、
    前記自動スケーリング規則が前記プールに関連する仮想マシン数を調節したことに応答して、前記プールに関連する1つまたは複数の仮想マシンを動的に割り振るステップと
    を含む、コンピュータ記憶媒体。
  8. 1つまたは複数の仮想マシンを動的に割り振る前記ステップが、2つ以上のタスクマシンにわたって仮想マシンを割り振るステップからなる請求項7に記載のコンピュータ記憶媒体。
  9. 前記調節される仮想マシン数が、前記プールに関連する前記自動スケーリング規則およびメトリックを利用して部分的に求められ、前記メトリックが、前記タスク位置サービスマシンのプールサーバに関連するメトリック収集モジュールによって得られる請求項7に記載のコンピュータ記憶媒体。
  10. 分散コンピューティング環境内のリソースを提供するコンピュータ実装方法であって、
    ユーザからワークアイテムを受信するステップと、
    前記ユーザから自動スケーリング規則を受信するステップと、
    前記ユーザによる介入なしに、第1のタスクマシン内の第1の仮想マシンをプールに割り振るステップと、
    前記ユーザによる介入なしに、前記第1のタスクマシンから物理的に分離される第2のタスクマシン内の第2の仮想マシンを前記プールに割り振るステップと、
    前記プール内の前記第1の仮想マシンおよび前記第2の仮想マシン上で前記ワークアイテムをインスタンス化するステップと、
    前記ユーザによる介入なしに、前記プールに前記自動スケーリング規則を適用するステップと、
    前記プールに関連する1つまたは複数の仮想マシンを再割振りするステップと
    を含む方法。
JP2014552208A 2012-01-09 2012-12-28 自動スケーリングのためのコンピューティングシステム、コンピュータ記憶メモリ、及び、コンピュータ実装方法 Active JP6165777B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/346,348 US9372735B2 (en) 2012-01-09 2012-01-09 Auto-scaling of pool of virtual machines based on auto-scaling rules of user associated with the pool
US13/346,348 2012-01-09
PCT/US2012/071890 WO2013106204A1 (en) 2012-01-09 2012-12-28 Paas hierarchial scheduling and auto-scaling

Publications (3)

Publication Number Publication Date
JP2015507279A true JP2015507279A (ja) 2015-03-05
JP2015507279A5 JP2015507279A5 (ja) 2016-02-18
JP6165777B2 JP6165777B2 (ja) 2017-07-19

Family

ID=48744884

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014552208A Active JP6165777B2 (ja) 2012-01-09 2012-12-28 自動スケーリングのためのコンピューティングシステム、コンピュータ記憶メモリ、及び、コンピュータ実装方法

Country Status (6)

Country Link
US (1) US9372735B2 (ja)
EP (1) EP2802980A4 (ja)
JP (1) JP6165777B2 (ja)
KR (1) KR101976234B1 (ja)
CN (1) CN104040485B (ja)
WO (1) WO2013106204A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018518744A (ja) * 2015-05-01 2018-07-12 アマゾン・テクノロジーズ・インコーポレーテッド コンピュートクラスタ内のリソースインスタンスグループの自動スケーリング

Families Citing this family (175)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US8789065B2 (en) 2012-06-08 2014-07-22 Throughputer, Inc. System and method for input data load adaptive parallel processing
US9448847B2 (en) 2011-07-15 2016-09-20 Throughputer, Inc. Concurrent program execution optimization
US9262195B2 (en) 2012-02-28 2016-02-16 Red Hat Israel, Ltd. Manageable external wake of virtual machines
JP2013186745A (ja) * 2012-03-08 2013-09-19 Fuji Xerox Co Ltd 処理システム及びプログラム
US9197489B1 (en) 2012-03-30 2015-11-24 Amazon Technologies, Inc. Live migration of virtual machines in a hybrid network environment
US9928107B1 (en) 2012-03-30 2018-03-27 Amazon Technologies, Inc. Fast IP migration in a hybrid network environment
US9164795B1 (en) * 2012-03-30 2015-10-20 Amazon Technologies, Inc. Secure tunnel infrastructure between hosts in a hybrid network environment
US9641431B1 (en) * 2012-04-18 2017-05-02 Google Inc. System and methods for utilization-based balancing of traffic to an information retrieval system
TWI456944B (zh) * 2012-05-02 2014-10-11 Quanta Comp Inc 管理方法及其系統
US8904402B2 (en) * 2012-05-30 2014-12-02 Red Hat, Inc. Controlling capacity in a multi-tenant platform-as-a-service environment in a cloud computing system
US9405602B1 (en) * 2012-06-25 2016-08-02 Google Inc. Method for application notification and tasking
US9507612B1 (en) * 2012-08-31 2016-11-29 United Services Automobile Association (Usaa) Managing dedicated and floating pool of virtual machines based on demand
JP5920125B2 (ja) * 2012-09-05 2016-05-18 富士通株式会社 プロセス数制御プログラム、プロセス数制御方法、および情報処理装置
US8978035B2 (en) 2012-09-06 2015-03-10 Red Hat, Inc. Scaling of application resources in a multi-tenant platform-as-a-service environment in a cloud computing system
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
WO2014052843A1 (en) * 2012-09-28 2014-04-03 Cycle Computing, Inc. Real time optimization of compute infrastructure in a virtualized environment
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
US9405579B2 (en) * 2012-10-11 2016-08-02 International Business Machines Corporation Seamless extension of local computing power
US20140173618A1 (en) * 2012-10-14 2014-06-19 Xplenty Ltd. System and method for management of big data sets
US9342369B2 (en) * 2013-01-07 2016-05-17 Wal-Mart Stores, Inc. System and method for increasing throughput of a PaaS system
US9804890B1 (en) * 2013-02-15 2017-10-31 Amazon Technologies, Inc. Termination policies for scaling compute resources
US9628399B2 (en) * 2013-03-14 2017-04-18 International Business Machines Corporation Software product instance placement
US9633358B2 (en) * 2013-03-15 2017-04-25 Knowledgevision Systems Incorporated Interactive presentations with integrated tracking systems
US8621062B1 (en) 2013-03-15 2013-12-31 Opscode, Inc. Push signaling to run jobs on available servers
JP6157181B2 (ja) * 2013-04-02 2017-07-05 キヤノン株式会社 サーバーシステム、その制御方法、およびそのプログラム
US20140325219A1 (en) * 2013-04-27 2014-10-30 Wanin International Co., Ltd. Secret key management method for multi-network platform
WO2014193361A1 (en) * 2013-05-29 2014-12-04 Empire Technology Development Llc Tiered eviction of instances of executing processes
US9602426B2 (en) 2013-06-21 2017-03-21 Microsoft Technology Licensing, Llc Dynamic allocation of resources while considering resource reservations
US20150067676A1 (en) * 2013-08-27 2015-03-05 Connectloud, Inc. Method and apparatus for performing resource management for software defined clouds
US20150067677A1 (en) * 2013-08-27 2015-03-05 Connectloud, Inc. Method and apparatus for defining virtual machine placement logic that is configurable and restricts virtual machine provisioning within a software defined cloud
CN105493066B (zh) * 2013-08-30 2019-02-05 慧与发展有限责任合伙企业 基于缩放规则来维护云网络上的服务
US9851988B1 (en) * 2013-09-04 2017-12-26 Amazon Technologies, Inc. Recommending computer sizes for automatically scalable computer groups
US9262190B2 (en) * 2013-11-19 2016-02-16 Xerox Corporation Method and system for managing virtual machines in distributed computing environment
US10033825B2 (en) 2014-02-21 2018-07-24 Knowledgevision Systems Incorporated Slice-and-stitch approach to editing media (video or audio) for multimedia online presentations
WO2015126430A1 (en) * 2014-02-24 2015-08-27 Hewlett-Packard Development Company, L.P. Virtual network function management with deactivated virtual machines
US10621002B2 (en) * 2014-02-28 2020-04-14 Pivotal Software, Inc. Iterative task centric resource scheduling for a user program between different computing frameworks
US9703611B1 (en) 2014-03-21 2017-07-11 Amazon Technologies, Inc. Isolating resources for utilization by tenants executing in multi-tenant software containers
US9754122B1 (en) 2014-03-21 2017-09-05 Amazon Technologies, Inc. Isolating tenants executing in multi-tenant software containers
JP6263424B2 (ja) * 2014-03-31 2018-01-17 株式会社Nttドコモ 管理システム及び管理方法
CN103957237A (zh) * 2014-04-03 2014-07-30 华南理工大学 一种弹性云的体系结构
RU2568282C2 (ru) * 2014-04-18 2015-11-20 Закрытое акционерное общество "Лаборатория Касперского" Система и способ обеспечения отказоустойчивости антивирусной защиты, реализуемой в виртуальной среде
US10162683B2 (en) 2014-06-05 2018-12-25 International Business Machines Corporation Weighted stealing of resources
WO2015189968A1 (ja) * 2014-06-12 2015-12-17 株式会社日立製作所 Vm管理システム及びその方法
CN104168310A (zh) * 2014-07-24 2014-11-26 深圳天珑无线科技有限公司 云端虚拟服务器的调度方法及装置
US9600312B2 (en) 2014-09-30 2017-03-21 Amazon Technologies, Inc. Threading as a service
US10048974B1 (en) 2014-09-30 2018-08-14 Amazon Technologies, Inc. Message-based computation request scheduling
US9678773B1 (en) * 2014-09-30 2017-06-13 Amazon Technologies, Inc. Low latency computational capacity provisioning
US9146764B1 (en) 2014-09-30 2015-09-29 Amazon Technologies, Inc. Processing event messages for user requests to execute program code
US9323556B2 (en) 2014-09-30 2016-04-26 Amazon Technologies, Inc. Programmatic event detection and message generation for requests to execute program code
US9830193B1 (en) 2014-09-30 2017-11-28 Amazon Technologies, Inc. Automatic management of low latency computational capacity
US10120716B2 (en) * 2014-10-02 2018-11-06 International Business Machines Corporation Task pooling and work affinity in data processing
US9672068B2 (en) * 2014-10-09 2017-06-06 Vmware, Inc. Virtual machine scheduling using optimum power-consumption profile
US9513935B2 (en) 2014-10-28 2016-12-06 International Business Machines Corporation Auto-scaling thresholds in elastic computing environments
US10701169B2 (en) 2014-11-03 2020-06-30 Electronics And Telecommunications Research Institute Method for operating relation server and system using the same
US9900399B2 (en) 2014-11-03 2018-02-20 Electronics And Telecommunications Research Institute Method for operating machines and system using the same
US9647889B1 (en) 2014-11-12 2017-05-09 Amazon Technologies, Inc. Standby instances for auto-scaling groups
US10411960B1 (en) * 2014-11-12 2019-09-10 Amazon Technologies, Inc. Detaching instances from auto-scaling group
US9413626B2 (en) 2014-12-05 2016-08-09 Amazon Technologies, Inc. Automatic management of resource sizing
CN105760209B (zh) * 2014-12-16 2019-06-21 华为技术有限公司 移除虚拟机的方法、装置与自动弹性群组
DE102015015196A1 (de) * 2014-12-16 2016-06-16 Canon Kabushiki Kaisha Verwaltungssystem und Steuerungsverfahren für Verwaltungssystem
JP6548540B2 (ja) * 2014-12-16 2019-07-24 キヤノン株式会社 管理システムおよび管理システムの制御方法
CN105786587B (zh) * 2014-12-23 2019-11-26 华为技术有限公司 一种虚拟机vm的伸缩方法和设备
US9971621B1 (en) * 2015-02-02 2018-05-15 Amazon Technologies, Inc. Hotpooling virtual machines
US9588790B1 (en) 2015-02-04 2017-03-07 Amazon Technologies, Inc. Stateful virtual compute system
US9733967B2 (en) 2015-02-04 2017-08-15 Amazon Technologies, Inc. Security protocols for low latency execution of program code
US11283697B1 (en) 2015-03-24 2022-03-22 Vmware, Inc. Scalable real time metrics management
US9851933B2 (en) * 2015-03-25 2017-12-26 International Business Machines Corporation Capability-based abstraction of software-defined infrastructure
US9785476B2 (en) 2015-04-08 2017-10-10 Amazon Technologies, Inc. Endpoint management system and virtual compute system
US9930103B2 (en) 2015-04-08 2018-03-27 Amazon Technologies, Inc. Endpoint management system providing an application programming interface proxy service
US10410155B2 (en) 2015-05-01 2019-09-10 Microsoft Technology Licensing, Llc Automatic demand-driven resource scaling for relational database-as-a-service
CN105068859B (zh) * 2015-07-29 2017-12-15 上海谐桐信息技术有限公司 一种跨虚拟机的多服务调用方法及系统
US9851999B2 (en) * 2015-07-30 2017-12-26 At&T Intellectual Property I, L.P. Methods, systems, and computer readable storage devices for handling virtualization of a physical telephone number mapping service
US9888127B2 (en) 2015-07-30 2018-02-06 At&T Intellectual Property I, L.P. Methods, systems, and computer readable storage devices for adjusting the use of virtual resources providing communication services based on load
US9866521B2 (en) 2015-07-30 2018-01-09 At&T Intellectual Property L.L.P. Methods, systems, and computer readable storage devices for determining whether to forward requests from a physical telephone number mapping service server to a virtual telephone number mapping service server
US10277736B2 (en) 2015-07-30 2019-04-30 At&T Intellectual Property I, L.P. Methods, systems, and computer readable storage devices for determining whether to handle a request for communication services by a physical telephone number mapping service or a virtual telephone number mapping service
EP3332332A4 (en) 2015-08-25 2018-08-08 Huawei Technologies Co., Ltd. System and method for network function virtualization resource management
US10594562B1 (en) 2015-08-25 2020-03-17 Vmware, Inc. Intelligent autoscale of services
CN105162884A (zh) * 2015-09-25 2015-12-16 浪潮(北京)电子信息产业有限公司 一种基于微服务架构的云管理平台
CN106712998A (zh) * 2015-11-18 2017-05-24 中兴通讯股份有限公司 一种云平台资源管理方法、装置及系统
US10395219B1 (en) * 2015-12-18 2019-08-27 Amazon Technologies, Inc. Location policies for reserved virtual machine instances
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
US11137990B2 (en) 2016-02-05 2021-10-05 Sas Institute Inc. Automated message-based job flow resource coordination in container-supported many task computing
US11080031B2 (en) * 2016-02-05 2021-08-03 Sas Institute Inc. Message-based coordination of container-supported many task computing
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
US10069869B2 (en) * 2016-05-17 2018-09-04 Amazon Technologies, Inc. Versatile autoscaling
US10275272B2 (en) 2016-06-20 2019-04-30 Vmware, Inc. Virtual machine recovery in shared memory architecture
US10102040B2 (en) 2016-06-29 2018-10-16 Amazon Technologies, Inc Adjusting variable limit on concurrent code executions
CN106227582B (zh) * 2016-08-10 2019-06-11 华为技术有限公司 弹性伸缩方法及系统
US10565016B2 (en) 2016-09-20 2020-02-18 International Business Machines Corporation Time frame bounded execution of computational algorithms
US10884787B1 (en) 2016-09-23 2021-01-05 Amazon Technologies, Inc. Execution guarantees in an on-demand network code execution system
CN106412075A (zh) * 2016-10-14 2017-02-15 郑州云海信息技术有限公司 一种基于云计算的资源配置方法及装置
US10505791B2 (en) * 2016-12-16 2019-12-10 Futurewei Technologies, Inc. System and method to handle events using historical data in serverless systems
US10331479B2 (en) 2017-01-13 2019-06-25 Microsoft Technology Licensing, Llc Computing on transient resources
US10382565B2 (en) 2017-01-27 2019-08-13 Red Hat, Inc. Capacity scaling of network resources
US11093297B2 (en) * 2017-02-08 2021-08-17 Dell Products L.P. Workload optimization system
JP6915336B2 (ja) * 2017-03-24 2021-08-04 富士フイルムビジネスイノベーション株式会社 情報処理システム及び仮想マシン
US10379898B2 (en) 2017-03-24 2019-08-13 International Business Machines Corporation Virtual machine consolidation
CN107402806B (zh) * 2017-04-20 2020-08-18 阿里巴巴集团控股有限公司 分布式文件架构的任务处理方法和装置
US11003499B1 (en) * 2017-06-14 2021-05-11 Amazon Technologies, Inc. Resource allocation based on agent behavior in a simulation environment
EP3674893B1 (en) * 2017-08-31 2021-07-07 Shenzhen Heytap Technology Corp., Ltd. Search resource recommendation method and related product
US10678574B1 (en) * 2017-11-01 2020-06-09 Amazon Technologies, Inc. Reconfiguration rate-control
US10536332B1 (en) * 2017-11-15 2020-01-14 Amazon Technologies, Inc. Configuration invocation management
US11036532B2 (en) * 2017-11-29 2021-06-15 Microsoft Technology Licensing, Llc Fast join and leave virtual network
US10719344B2 (en) * 2018-01-03 2020-07-21 Acceture Global Solutions Limited Prescriptive analytics based compute sizing correction stack for cloud computing resource scheduling
US10733085B1 (en) 2018-02-05 2020-08-04 Amazon Technologies, Inc. Detecting impedance mismatches due to cross-service calls
US10831898B1 (en) 2018-02-05 2020-11-10 Amazon Technologies, Inc. Detecting privilege escalations in code including cross-service calls
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
US11354164B1 (en) * 2018-04-20 2022-06-07 Automation Anywhere, Inc. Robotic process automation system with quality of service based automation
US10908950B1 (en) 2018-04-20 2021-02-02 Automation Anywhere, Inc. Robotic process automation system with queue orchestration and task prioritization
US10999168B1 (en) 2018-05-30 2021-05-04 Vmware, Inc. User defined custom metrics
US10620989B2 (en) 2018-06-08 2020-04-14 Capital One Services, Llc Managing execution of data processing jobs in a virtual computing environment
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
US11070430B2 (en) * 2018-08-27 2021-07-20 At&T Intellectual Property I, L.P. Persona/individual based actions based on community specific trigger
JP7135648B2 (ja) * 2018-09-20 2022-09-13 富士フイルムビジネスイノベーション株式会社 中継システム
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
US10958730B2 (en) * 2018-09-28 2021-03-23 Hewlett Packard Enterprise Development Lp Mapping virtual network functions
EP4239484A3 (en) 2018-10-26 2024-01-03 VMware, Inc. Collecting samples hierarchically in a datacenter
US11164125B2 (en) * 2018-11-19 2021-11-02 Capital One Services, Llc Systems and methods for proactive infrastructure resource management for multiple application clusters
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
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
US10887380B2 (en) * 2019-04-01 2021-01-05 Google Llc Multi-cluster ingress
US11106496B2 (en) 2019-05-28 2021-08-31 Microsoft Technology Licensing, Llc. Memory-efficient dynamic deferral of scheduled tasks
US11582120B2 (en) 2019-05-30 2023-02-14 Vmware, Inc. Partitioning health monitoring in a global server load balancing system
US11119809B1 (en) 2019-06-20 2021-09-14 Amazon Technologies, Inc. Virtualization-based transaction handling in an on-demand network code execution system
US11115404B2 (en) 2019-06-28 2021-09-07 Amazon Technologies, Inc. Facilitating service connections in serverless code executions
US11159528B2 (en) 2019-06-28 2021-10-26 Amazon Technologies, Inc. Authentication to network-services using hosted authentication information
US11190609B2 (en) 2019-06-28 2021-11-30 Amazon Technologies, Inc. Connection pooling for scalable network services
CN110442431A (zh) * 2019-08-12 2019-11-12 安徽赛福贝特信息技术有限公司 一种云计算系统中虚拟机的创建方法
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
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
US11394761B1 (en) 2019-09-27 2022-07-19 Amazon Technologies, Inc. Execution of user-submitted code on a stream of data
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
US10996961B2 (en) 2019-09-27 2021-05-04 Amazon Technologies, Inc. On-demand indexing of data in input path of 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
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
US11550944B2 (en) 2019-09-27 2023-01-10 Amazon Technologies, Inc. Code execution environment customization system for 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
US11656892B1 (en) 2019-09-27 2023-05-23 Amazon Technologies, Inc. Sequential execution of user-submitted code and native functions
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
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
CN110958297B (zh) * 2019-10-29 2021-10-01 北京邮电大学 一种数据迁移方法及系统
US10942795B1 (en) 2019-11-27 2021-03-09 Amazon Technologies, Inc. Serverless call distribution to utilize reserved capacity without inhibiting scaling
US11119826B2 (en) 2019-11-27 2021-09-14 Amazon Technologies, Inc. Serverless call distribution to implement spillover while avoiding cold starts
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
US11481262B1 (en) 2020-06-25 2022-10-25 Amazon Technologies, Inc. Rapid autoscaling with preinitialized instance quantity based on historical scale up rate
US11520638B1 (en) * 2020-06-25 2022-12-06 Amazon Technologies, Inc. Combined active and preinitialized resource management for rapid autoscaling
US11922216B2 (en) 2020-10-22 2024-03-05 Cisco Technology, Inc. Compute resources management via virtual service contexts (VSC) in compute clusters
US11762709B2 (en) * 2020-11-11 2023-09-19 International Business Machines Corporation Predictive auto-scaler for a hierarchical computing infrastructure
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
US11928521B2 (en) 2021-04-17 2024-03-12 UiPath, Inc. Bring your own machine (BYOM)
US11811861B2 (en) 2021-05-17 2023-11-07 Vmware, Inc. Dynamically updating load balancing criteria
US11799824B2 (en) 2021-06-14 2023-10-24 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
CA3226769A1 (en) * 2021-07-29 2023-02-02 Tushar SOOD Intent based service scaling
US20230232195A1 (en) 2022-01-19 2023-07-20 Vmware, Inc. Collective scaling of applications
CN115934299B (zh) * 2023-02-22 2023-05-23 智者四海(北京)技术有限公司 Yarn作业的迁移系统及方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005346204A (ja) * 2004-05-31 2005-12-15 Fujitsu Ltd 自律制御プログラム及びその記録媒体、自律制御装置並びに自律制御方法
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
JP2011129117A (ja) * 2009-12-17 2011-06-30 Intel Corp サービスとしてのクラウドフェデレーション
US20110238546A1 (en) * 2010-03-29 2011-09-29 Amazon Technologies, Inc. Managing committed processing rates for shared resources
JP2013524343A (ja) * 2010-03-29 2013-06-17 アマゾン テクノロジーズ インコーポレイテッド 共有リソースに対する認定要求レートの管理

Family Cites Families (76)

* 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
KR19990013427A (ko) * 1997-07-15 1999-02-25 포만제프리엘 컴퓨터 환경에서 실행되는 태스크의 관리 방법 및 관리 시스템과 그를 위한 제조물
US6223202B1 (en) 1998-06-05 2001-04-24 International Business Machines Corp. Virtual machine pooling
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
US7251657B2 (en) 2002-05-10 2007-07-31 Oracle International Corporation Method and system for implementing dynamic cache of database cursors
US7395334B2 (en) 2003-04-25 2008-07-01 International Business Machines Corporation System for determining unreturned standby resource usage
US7596790B2 (en) 2003-08-29 2009-09-29 Intel Corporation Allocating computing resources in a distributed environment
US20070124733A1 (en) * 2004-01-08 2007-05-31 Koninklijke Philips Electronics N.V. Resource management in a multi-processor system
JP2005266917A (ja) 2004-03-16 2005-09-29 Nec Corp 分散資源獲得システム、分散資源獲得方法および分散資源獲得用プログラム
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
US10025627B2 (en) * 2008-11-26 2018-07-17 Red Hat, Inc. On-demand cloud computing environments
US8291414B2 (en) 2008-12-11 2012-10-16 International Business Machines Corporation Shared resource service provisioning using a virtual machine manager
US8775544B2 (en) 2009-02-04 2014-07-08 Citrix Systems, Inc. Methods and systems for dynamically switching between communications protocols
KR20100092850A (ko) * 2009-02-13 2010-08-23 경희대학교 산학협력단 클라우드 컴퓨팅 환경에서의 리소스 분배 장치 및 그 방법
US8751627B2 (en) * 2009-05-05 2014-06-10 Accenture Global Services Limited Method and system for application migration in a cloud
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
US8112659B2 (en) * 2009-06-19 2012-02-07 Oracle International Corporation Reducing recovery time for business organizations in case of disasters
US8261275B2 (en) * 2009-06-29 2012-09-04 Oracle America, Inc. Method and system for heuristics-based task scheduling
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
WO2011069664A1 (en) 2009-12-11 2011-06-16 Deutsche Telekom Ag Computer cluster and method for providing a disaster recovery functionality for a computer cluster
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
US8924982B2 (en) 2010-01-12 2014-12-30 Amazon Technologies, Inc. Managing private use of program execution capacity
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
US8738745B1 (en) * 2010-03-31 2014-05-27 Amazon Technologies, Inc. Managing use of intermediate destination hardware devices for provided computer networks
US9116731B2 (en) 2010-04-07 2015-08-25 Accenture Global Services Limited Cloud reference model framework
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
CN102271145A (zh) 2010-06-04 2011-12-07 国云科技股份有限公司 一种虚拟计算机集群及其实施方法
US8656387B2 (en) 2010-06-17 2014-02-18 Gridcentric Inc. Method and system for workload distributing and processing across a network of replicated virtual machines
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
US8719415B1 (en) * 2010-06-28 2014-05-06 Amazon Technologies, Inc. Use of temporarily available computing nodes for dynamic scaling of a cluster
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
CN101938416B (zh) 2010-09-01 2012-08-08 华南理工大学 一种基于动态重配置虚拟资源的云计算资源调度方法
US8533103B1 (en) 2010-09-14 2013-09-10 Amazon Technologies, Inc. Maintaining latency guarantees for shared resources
CN102307208B (zh) 2010-09-25 2014-08-06 广东电子工业研究院有限公司 基于云计算的虚拟机运行控制装置及其运行控制方法
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
US8639595B1 (en) * 2011-03-10 2014-01-28 Amazon Technologies, Inc. Statistically cost-following accounting model for dedicated resources
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
US20130091376A1 (en) * 2011-10-05 2013-04-11 International Business Machines Corporation Self-repairing database system
US8856797B1 (en) * 2011-10-05 2014-10-07 Amazon Technologies, Inc. Reactive auto-scaling of capacity
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

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005346204A (ja) * 2004-05-31 2005-12-15 Fujitsu Ltd 自律制御プログラム及びその記録媒体、自律制御装置並びに自律制御方法
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
JP2013506908A (ja) * 2009-09-30 2013-02-28 アルカテル−ルーセント 企業ネットワーク内の割り当てられたクラウドリソースの動的な負荷分散およびスケーリング
JP2011129117A (ja) * 2009-12-17 2011-06-30 Intel Corp サービスとしてのクラウドフェデレーション
US20110238546A1 (en) * 2010-03-29 2011-09-29 Amazon Technologies, Inc. Managing committed processing rates for shared resources
JP2013524343A (ja) * 2010-03-29 2013-06-17 アマゾン テクノロジーズ インコーポレイテッド 共有リソースに対する認定要求レートの管理

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018518744A (ja) * 2015-05-01 2018-07-12 アマゾン・テクノロジーズ・インコーポレーテッド コンピュートクラスタ内のリソースインスタンスグループの自動スケーリング
US10581964B2 (en) 2015-05-01 2020-03-03 Amazon Technologies, Inc. Automatic scaling of resource instance groups within compute clusters
US11044310B2 (en) 2015-05-01 2021-06-22 Amazon Technologies, Inc. Automatic scaling of resource instance groups within compute clusters

Also Published As

Publication number Publication date
US20130179895A1 (en) 2013-07-11
US9372735B2 (en) 2016-06-21
KR20140109940A (ko) 2014-09-16
CN104040485A (zh) 2014-09-10
EP2802980A1 (en) 2014-11-19
JP6165777B2 (ja) 2017-07-19
KR101976234B1 (ko) 2019-05-07
EP2802980A4 (en) 2016-04-13
WO2013106204A1 (en) 2013-07-18
CN104040485B (zh) 2018-10-23

Similar Documents

Publication Publication Date Title
JP6165777B2 (ja) 自動スケーリングのためのコンピューティングシステム、コンピュータ記憶メモリ、及び、コンピュータ実装方法
JP6254948B2 (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
JP6190389B2 (ja) 分散型計算環境において計算を実行する方法およびシステム
Chard et al. Cost-aware cloud provisioning
KR20040075307A (ko) 정책 쿼럼 기반의 그리드 자원 관리 시스템 및 그 방법
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: 20151222

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20151222

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

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170508

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170512

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170621

R150 Certificate of patent or registration of utility model

Ref document number: 6165777

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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