JP2013257903A - プログラム実行状態の保存 - Google Patents

プログラム実行状態の保存 Download PDF

Info

Publication number
JP2013257903A
JP2013257903A JP2013178559A JP2013178559A JP2013257903A JP 2013257903 A JP2013257903 A JP 2013257903A JP 2013178559 A JP2013178559 A JP 2013178559A JP 2013178559 A JP2013178559 A JP 2013178559A JP 2013257903 A JP2013257903 A JP 2013257903A
Authority
JP
Japan
Prior art keywords
execution
program
job
distributed
computing
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
JP2013178559A
Other languages
English (en)
Other versions
JP5843823B2 (ja
Inventor
Sirota Peter
シロタ ピーター
P Nowland Ian
ピー.ナウランド イアン
j cole Richard
ジェイ.コール リチャード
Khanna Richendra
カンナ リッチェンドラ
Luis F Cabrera
フェリペ カブレラ ルイス
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.)
Amazon Technologies Inc
Original Assignee
Amazon Technologies Inc
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 Amazon Technologies Inc filed Critical Amazon Technologies Inc
Publication of JP2013257903A publication Critical patent/JP2013257903A/ja
Application granted granted Critical
Publication of JP5843823B2 publication Critical patent/JP5843823B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • G06F11/1451Management of the data involved in backup or backup restore by selection of backup contents
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)
  • Retry When Errors Occur (AREA)

Abstract

【課題】プログラムの分散型実行を管理するための技術を記載する。
【解決手段】少なくとも幾つかの状況では、この技術は、プログラム用入力データの相違するサブセットを使用する実行ジョブのそれぞれと並列な方式の如き相違したコンピューティングノードにてそれぞれ実行できる多数の相違した実行ジョブにプログラム実行を分解若しくは分割することを含む。その上、実行ジョブの部分的な実行の中間状態を持続的に格納するが如く、少なくとも幾つかの実行ジョブを一時的に終了し、後に再開し、その後に、中間状態からその実行ジョブの実行を再開するために格納された中間状態を検索して使用することを本技術が含み得る。さらにまた、多数の顧客又は他のサービス利用者の為に多数のプログラムを実行する分散型プログラム実行サービスに関連して、本技術を利用できる。
【選択図】 図1A

Description

本発明は、プログラム実行状態の保存に関する。
多数の会社及び他の組織は、多数のコンピューティングシステムを相互接続するコンピュータネットワークを作動し、例えば同じ位置に(例えば、ローカルネットワークの一部として)配置されているか又はその代わりに多数の明確な地理的な場所(例えば1つ以上の個人的若しくは公共の中間ネットワークを経た接続)に位置しているコンピューティングシステムでそれらの動作を支えている。例えば、多数の相互接続コンピューティングシステムを収容するデータセンターが一般的なものとなり、そのデータセンターには単一組織が運用するか又はその単一組織に代わって運用されるプライベートデータセンター、及びコンピューティングリソースを顧客に提供するビジネスとして事業体により運用されるパブリックデータセンター等がある。
畿つかのパブリックデータセンターの運用者は様々な顧客が所有するハードウェアに対してネットワークアクセス、電力及び安全な設置ファシリティを提供し、一方で他のパブリックデータセンターの運用者は、自身の顧客が使用する実際のハードウェアリソースを含む「完全サービス型」ファシリティを提供する。しかしながら、一般的なデータセンターの規模と範囲が増大したので、物理的なコンピューティングリソースの準備、運営及び管理作業は益々複雑になった。
商用ハードウェアに対する仮想化技術の出現により、多様なニーズを有する多数の顧客に対して大規模なコンピューティングリソースを管理する問題に部分的な解決方法が与えられ、様々なコンピューティングリソースを効率的、かつ安全に複数の顧客間で共有されることが可能になった。例えばVMWare、XENまたはUser−Mode Linux(登録商標)が提供するもののような仮想化技術により、単一の物理的なコンピューティングマシンによりホストされる1つ以上の仮想マシンをそれぞれのユーザに提供することで、その単一の物理的なコンピューティングマシンを多数のユーザ間で共有することができる。それぞれの上記仮想マシンは、相違する論理的コンピューティングシステムとして動作するソフトウェアシミュレーションであり、そのソフトウェアシミュレーションによりユーザには、自身が所与のハードウェアコンピューティングリソースの唯一の運用者及び管理者であるという錯覚が与えられ、一方で様々な仮想マシン間でアプリケーションの隔離及びセキュリティが提供される。さらに、幾つかの仮想化技術により、実際に複数の相違する物理的コンピューティングシステムに及ぶ多数の仮想プロセッサを伴う単一の仮想マシンのような、1つ以上の物理リソースに及ぶ仮想リソースを提供することができる。
リモートユーザによる分散型プログラム実行サービスの使用の例示的な実施形態を例示するネットワーク図である。 リモートユーザによる分散型プログラム実行サービスの使用の例示的な実施形態を例示するネットワーク図である。 複数のコンピューティングノード上の分散型プログラム実行を管理するための技術の例示的な実施形態の例示図である。 本発明の複数のコンピューティングノード上の分散型プログラム実行を管理するための技術の例示的な実施形態の例示図である。 分散型プログラム実行を管理するためのコンピューティングシステムの例示的な実施形態を例示するブロック図である。 分散型プログラム実行サービスシステムマネージャルーチンの例示的な実施形態のフロー図である。 分散型プログラム実行サービスシステムマネージャルーチンの例示的な実施形態のフロー図である。 コンピューティングノードマネージャルーチンの例示的な実施形態のフロー図である。
プログラムの分散型実行を管理するための技術を記載する。少なくとも幾つかの実施形態では、プログラムの分散型実行を管理するための技術は、プログラム用入力データの相違するサブセットを使用する各々の実行ジョブと並列または他の分散型式の如き相違したコンピューティングノードに各々実行ができる複数の相違した実行ジョブにプログラム実行を分解若しくは分割することを含む。
その上、実行終了前に実行ジョブの部分的な実行の中間状態を永続的に格納する如き少なくとも幾つかの実行ジョブを一時的に終了し、後に再開し、その後に、その実行ジョブの実行を再開する間の中間状態情報を検索して使用することを本技術が含み得る。更に、少なくとも幾つかの状況において、多数のコンピューティングノード(例えば1つ以上の物理的コンピューティングシステムにてホストされる多数の物理的コンピューティングシステム及び/又は仮想マシン)を提供するサービスの如き多数の顧客又は他のサービス利用者の為の多数のプログラムを実行するサービスを、分散方式でのプログラム実行で使用する為に分散型プログラム実行(「DPE」)サービスの実施形態と共に本技術を利用できる。少なくとも幾つかの実施形態では、分散型プログラム実行サービスシステムマネージャモジュールの実施形態によって、以下により詳細に説明する通り、本技術の幾つかまたは全てが自動的に実行され得る。
プログラムの分散型実行は、プログラムの実行を要求するためにDPEサービスと対話するDPEサービスの実施形態のユーザによって等のように、様々な実施形態の様々な方式にて始められる。例えば、DPEサービスはリモートユーザが要求を行うために使用し得るグラフィカルユーザーインタフェース(「GUI」)(例えばユーザがユーザのクライアントデバイスで実行するウェブブラウザの如きクライアントアプリケーションを経て対話するウェブベースGUI)を提供しても良く、及び/又は、DPEサービスは、要求を行うためにユーザのコンピューティングデバイスがプログラム的にDPEサービスと対話する1つ以上のAPI(「アプリケーションプログラミングインタフェース」(例えば、提供されるGUIによって利用できる1つ以上のAPI)を提供しても良い。
ユーザは、実行すべきプログラムの指示(例えば、プログラムの実行可能なコピーの供給による、ユーザによってDPEサービスにて以前に登録したプログラムを示すことによる、ユーザによる使用のためのDPEサービスで利用できるようにしたプログラムを示すことによる)や、実行プログラム(例えば、入力データを供給することによる、または入力データが得られるアクセス可能な位置を示すことによる)による使用のための入力データの指示の如きこの種の要求の一部として、さまざまな情報を特定することができる。さらに、ユーザは更に以下の1つ以上の如き少なくとも幾つかの実施形態における分散型プログラム実行のための他の構成情報を特定できる:要求された実行用でプログラムの特定例を構成するために用いられる構成情報、要求された実行用で大量のコンピューティングノードの指示、要求された実行用で1種のコンピューティングノードの指示(例えば、DPEサービスが、異なる量のメモリ、保管及び/又は処理パワーの如き異なる能力を持つ異なる種類のコンピューティングノードを提供する場合)、及び/又は要求された実行を実施する際に使う1つ以上の他の実行基準(例えば、要求された実行と関連してユーザが特定するQoS(「サービスの品質」)レベル、要求された実行が完了されるべき時間の指示、等)、示されたプログラムの実行が並列または他の分散型実行のために分離されるべき多数の実行ジョブの指示、又は、その代わりの、DPEサービスが自動的にそれら多数の実行ジョブをどのように判定するかの指示(例えば、示されたプログラムを定義した方式で分離可能に設計して相違した実行ジョブとする場合)、等。
プログラムの実行が要請されるかまたは別段に開始された後、ユーザによってまたは他の様式によって、そのプログラムの実行は様々な様式で様々な実施形態で並列若しくは他の分散型実行用の多数の実行ジョブに分割しても良い。例えば、上述の通り、プログラムは定義された様式で相違した実行ジョブ(例えば、タスクレベル並列性を支持する様に)に分割可能に設計されていても良く、そして、もしそうであれば、ユーザは多数の実行ジョブを生成する方法を指示できる、及び/又は、DPEサービスは多数の実行ジョブを自動的に生成することができる。なおその上、数種類のプログラムは、多量の入力データのそれぞれに様々な動作を実施でき、そしてかかる状況では、データ並列技術をプログラムの実行に用いて入力データのグループを、相違した実行ジョブにそれぞれ供給される多数のサブセットに分割して使用しても良い(例えば、その実行ジョブのために使用される入力データサブセットの同一動作の全て又は幾つかを実施している実行ジョブのそれぞれで)。一単純例として、特定のプログラムの実行は、二つの特定の項目用の多数のウェブページを検索することを含んでも良く(又は代替的に、後の検索での使用のために、ウェブページにインデックスを付けて)、プログラムの実行は、各々が事項の一方又は両方のためのウェブページ(例えば、単一のウェブページまたは少数のウェブページ)の相違したサブセットを検索(またはインデックス付け)するために、平行して同時に実行する多数の実行ジョブに分割されてもよい。(例えば、タスク並列性及び/又はデータ並列性を支持するために)多数の実行ジョブに分割できるプログラムのタイプの非排他的な実例には、大きなデータセットを処理し、生成するためのマップリデュースプログラム、マップリデュース技術のハドゥーププログラム実装、様々なタイプの映像、画像及び音声処理、様々なタイプの解析及び入力データの原文のデータセット又は他のタイプによる探索等が含まれる。マップリデュースプログラムに関する付加的詳細は、Jeffrey DeanとSanjay Ghemawatによる“MapReduce: Simplified Data Processing on Large Clusters”、2004年12月、OSDI’04の会報:Operating System Design and Implementationの第6回シンポジウム、に含まれ、これは出願時にIabs<dot>google<dot>com<slash>papers<siash>mapreduce−osdi04.pdf(「<dot>」および「<slash>」は、対応する文字「.」及び「/」と置換できる)で利用でき、これは、完全に本願明細書に引用される。
さらに、少なくとも幾つかの実施形態において、プログラムの分散型実行の管理には、特定の実行ジョブが実行を開始し、実行を完了する時間を決定する如きプログラムのための実行ジョブの幾つか又は全ての進行中の実行を監視若しくは別段に追尾することが含まれる。実行ジョブの実行のこの種の追尾は、様々な便益を提供でき、例えば、後でいつ他の実行ジョブの実行を開始するべきかについて決定できる(例えば、第1実行ジョブによって生成される出力データが少なくとも第2実行ジョブのための幾つかの入力データである場合、いつ第2実行ジョブを実行するべきかについて決定する際の補助として)及び/又は、プログラムの実行ジョブの全てがいつ完了したかについて判定できる。さらにまた、少なくとも幾つかの実施形態において、幾つか又は全ての実行ジョブは、実行されるべき多数の相違した動作(それはまた、畿つかの状況の「タスク」と称してもよい)を例えば順次及び/又は並行で有しても良く、この種の実行ジョブの進行中の実行の監視又は他の追尾が更にこの種の動作の幾つか又は全ての部分的な実施の状態についての情報を決定すること、いくつかのそういった動作の完了された実施によって生成される中間データを反映することをそれぞれ含んでも良い。実行ジョブのための特定の動作の実施のこの種の追尾は、下記により詳細に説明するように、実行ジョブの部分的な実行から、進行中の中間の実行及びデータ状態を追尾し、使用することを可能にしたり等、更に様々な便益を提供できる。監視又は他の追尾は、特定のコンピューティングノード上の実行ジョブの実行を開始するためにシステムマネージャコンポーネントを使用することによって、及びその後コンピューティングノードからの状態情報を得る等、様々な方式において実行できる(例えば、状態情報をコンピューティングノードから引き出しているシステムマネージャコンポーネントによって、コンピューティングノードからの状態情報を周期的に要請することによって及び/又は周期的に又は特定の出来事が起こる時にシステムマネージャコンポーネントに状態情報を押しつけているコンピューティングノードによって)。
コンピューティングノードのプログラムのための実行ジョブを実行するときに、実行に関連した様々な情報は様々な風に格納しても良い。例えば、実行を開始するときに、実行ジョブによって使われる入力データは実行の間、その入力データにアクセスを容易にするためにコンピューティングノード(例えば、局所的なハードディスクまたは他の局所的な格納デバイス上)に局所的に格納され得て、実行ジョブのために実行されるどのソフトウェア命令も、同様にコンピューティングノードに局所的に格納できる。局所的に格納されるべきこの種の情報は、DPEサービスのシステムマネージャコンポーネントの制御の下で、プログラムを実行するために用いる多数のコンピューティングノードから離隔したDPEサービスのための高度に利用可能な長期格納場所(例えばネットワークアクセス可能なリモート格納サービスから入手可能な長期格納場所)からコンピューティングノードに供給できる。さらに、実行ジョブの実行が完了され、実行から出力データが生成された後、同様にコンピューティングノードに他の実行ジョブ用に又は別にプログラム実行用に最終的出力結果を生成するためにDPEサービス用の長期格納場所へその出力データを一時的にコピーし戻すまで、その出力データは同じく局所的に格納される。プログラムの実行ジョブの実行が完了された後、コンピューティングノードでの局部的格納装置は、幾つかの実施形態において、実行からのどの出力データもがDPEサービスの長期格納場所にコピーし戻された後、例えばコンピューティングノード上の他の実行ジョブの実行開始の準備又は一部(例えば、異なるユーザのための異なるプログラムの他の実行ジョブ)として消去されるかまたは別に取り除かれても良い。他の実施形態において、実行ジョブの実行が完了された後でも、コンピューティングノード上の局部格納装置は代わりに維持されても良い(例えば、プログラム実行の完了まで)。
さらにまた、少なくとも幾つかの実施形態において、コンピューティングノードの実行ジョブの部分的実行からの様々な中間出力データおよび他の中間結果は、実行の間、局所的にコンピューティングノードに一時的に格納されていてもよく、例えば、実施が完了される実行ジョブの動作のサブセットによって生成される出力データと一致する、及び/又は、実施が始められるが、完了されなかった1つ以上の動作によって生成された、部分的または不完全な出力データと一致する。DPEサービスの長期格納場所が使われる少なくとも幾つかの実施形態において、この種の中間結果はDPEサービスの長期格納場所に(例えば、実行遅延及びこの種の中間結果をDPEサービスの長期格納場所へコピーする際に関係するネットワークトラフィックを最小化する為に)格納されず、他の実施形態では、この種の中間結果の幾つかまたは全てはDPEサービスの長期格納場所に格納されても良い。
中間結果の一例として、二つの項目のための多数のウェブページによる探索を含む実行ジョブの従来の簡略化例を参照すると、実行ジョブのそれぞれの動作は単一の項目のための単一のウェブページで検索することと一致し、この種の動作の実施からの中間の出力データについては、そのウェブページ中のその項目のどの発生項目についての情報であっても良い(例えば、その項目が所在する累積的な時間や、そのウェブページにおける所在等の如き、そのウェブページにおけるその項目発生それぞれについての情報)。代替的に、他の例として、特定の実行ジョブは、特定の項目のための多数のエントリ(例えば、エントリを表示しているウェブログのそれぞれの行)を有するウェブログまたは他のトランザクション記録による探索を含んでも良く、実行ジョブの動作のそれぞれは、その期間の特定の入力データエントリを検索することを含んでも良く、この種の動作の実施からの中間出力データは同様に入力データエントリがその項目を含むかどうかについての情報を含んでも良い。
DPEサービスの長期格納場所の実行ジョブの完了した実行からの出力データを格納することによって、その出力データの可用性は特定のコンピューティングノードがその後失敗するか、または別に利用できなくなる場合であっても、維持され得る。しかしながら、実行ジョブの部分的実行からの中間結果がDPEサービスの長期格納場所に格納されない場合、実行ジョブが後で再び最初から実行されることを必要とするように、完了前のその実行ジョブの実行の終了は消失しているそれらの中間結果に帰結し得る(例えば、実行ジョブの幾つかの動作が以前に完了された場合であっても、全ての動作の繰返し実施)。
従って、記載技術は完了前に終了される実行ジョブの部分的実行からのこの種の中間結果を格納し、使用するこの種の様式でのプログラムの管理分散型実行を含み、その結果、実行ジョブの実行の後の再開は終了前の部分的実行の中間点又はその近くでの再開であっても良い。例えば、それらの実行ジョブの実行完了前に、1つ以上のコンピューティングノードでのプログラムの1つ以上の実行ジョブの実行を終了する決定がなされる場合、システムマネージャコンポーネントは、それらの実行ジョブの部分的実行から、コンピューティングノードから離隔した場所等での中間結果の永続的な格納を開始しても良い。それらの実行ジョブの実行が後に再開される場合、同一コンピューティングノードであろうと別のコンピューティングノードであろうと、先行の部分的実行からの永続的に格納された中間結果は検索され、再開された実行で様々な風に使用し得る。例えば、特定の終了された実行ジョブの多数の動作が終了前に完了された場合、それらの動作の実施からの中間結果は再開実行のために検索されるので、それらの完了動作は再開実行のために再び最初から実行される必要はない。
部分的に完了した実行ジョブの終了は、様々な実施形態の様々な理由で実施され得る。例えば、幾つかの実施形態でプログラムの実行を要求したユーザは、指示した期間又はユーザが後にプログラム保留の再開を要求する迄、プログラムのための実行ジョブの幾つか又全てを保留することを要求しても良い。他の実施形態において、DPEサービスはプログラムの1つ以上の実行ジョブの実行の終了を開始できる。例えば、第1コンピューティングノードでの実行ジョブの実行は、第1コンピューティングノードがメンテナンスのために運転停止となる、他の実行ジョブ又は他のプログラム(例えば、他の実行ジョブ又は優先順位の高い他のプログラム)用に使用される、過大利用となる、起こり得る失敗の微候を示している等で終了されて他の第2コンピューティングノードへ移動することができる。また、指示されたユーザ要求に対すると同様に、DPEサービスは、一定期間プログラムの全ての実行を保留することを決定できる。
上述の通り、様々な情報は実行ジョブの実行中にコンピューティングノードに局所的に格納されても良く、局所的に格納された情報は様々な風に格納される。例えば、幾つかの実施形態において、分散ファイルシステム又は他の分散データ格納装置は、プログラムの分散型実行のために使用される多数のコンピューティングノードで創成できて、特定のコンピューティングノードの局所的に格納されたデータは分散したデータ格納装置の局所的な部分に格納されている。さらにまた、特定の実施形態の分散データ格納は、失敗する又は別に利用できなくなる特定のコンピューティングノードに局所的に格納されるデータの回復を考慮に入れる重複データを含む場合、実行ジョブの実行からの出力データの利用可能性は、DPEサービス用の分割した長期格納を用いずとも、その実施形態のための多くの状況で維持できる。他の実施形態において、DPEサービスの長期格納場所を使用しないような、幾つかまたは全ての情報は他様に(例えば、プログラムのための全ての実行が完了される迄コンピューティングノードでの局所的格納データを維持することによって)及び/又は、選択されるコンピューティングノードでの局所的格納装置を使用せずにプログラムの分散型実行を補助することによって格納できる(例えば、DPEサービスの長期格納場所の如き遠隔地で、コンピューティングノードでの揮発性メモリにおいてロードされないどの情報も格納することによって)。
さらに、コンピューティングノードでの部分的実行の中間結果がコンピューティングノードから離隔して永続的に格納されるときに、中間結果は様々な風に格納される。DPEサービスが長期格納場所を使用する幾つかの実施形態において、中間結果は完了された実行ジョブの他の完了された結果とともに、DPEサービスの長期格納場所に格納できる。代替的に、幾つかの実施形態において、特定のコンピューティングノードのための中間結果も一緒に格納できるが、他のコンピューティングノードの中間の及び/又は完了された結果とは別の様式で格納される。例えば、幾つかの実施形態において、離隔した論理的格納容積は、分散ファイルシステム又は他の分散データ格納装置の局所的な部分を含めて中間結果を格納するために用いたコンピューティングノード用の局所的なハードディスク又は他のブロックデータ格納装置の幾つか又は全てを映すために創成されても良い。コンピューティングノードのための実行ジョブの部分的実行が後で再開されるときに、この種の離隔した論理的格納容積は再開された実行が発生すべきコンピューティングノードに取り付けても良く、取り付けた論理的格納容積の情報は、再開された実行の間に使用するコンピューティングノードの物理的ブロック格納装置へコピーできて、または、取り付けた論理的格納容積は、その代わりに、再開された実行の間にコンピューティングノードのいずれかの物理的ブロック格納装置の代わりに使用しても良い。論理的格納容積が使用可能なかかる実施形態において、論理的格納容積は、コンピューティングノードでの実行ジョブの終了の時点で創成されても良く、一方他の実施形態では、実行ジョブのための論理的格納容積はコンピューティングノードでの実行ジョブの初期の実行の当初に創成されても良く、たとえ実行ジョブの実行が終了し、1回以上再開しても全ての実行の全体にわたって使用できる(例えば、そのコンピューティングノードのどの物理的ブロック格納装置の代わりにも)。
永続的にプログラム状態情報及び/又は論理的格納容積を含む他の情報を格納するために用いてもよい離隔した格納サービスの実例の動作に関連した付加的詳細は、米国特許出願番号第12/188,943号、2008年8月8日出願、表題:“Providing Executing Programs With Reliable Access To Non−Local Block Data Storage”、米国特許出願番号第11/371 ,304号、2006年3月8日出願、表題:“Distributed Storage System With Web Services Client Interface”及び米国仮特許出願番号第60/754,726号、2005年12月29日出願の優先権請求、により利用可能で、いずれもが完全に本願明細書に引用されるものとする。さらに、異なる時間での異なる優先順位の異なるプログラムを実行する実施形態に関した付加的詳細は、米国特許出願番号(弁理士整理番号120137.598)、並行出願、表題:“Managing Use Of Program Execution Capacity”、に含まれ、それらは完全に本願明細書に引用されるものとする。
説明目的で、幾つかの実例及び実施形態が以下に記載され、分散型プログラム実行の管理の特定のタイプが特定様式で提供される。これらの実例は説明目的で提供され、簡潔さのために簡略化されており、発明の技術が多種多様な他の状況において利用できることはいうまでもなく、その幾つかは更に詳細に以下に記載されている。例えば、分散型式でのプログラム実行方法や部分的実行から中間結果を格納して使用する方法の特定の実例が記載されると共に、分散型実行の他のタイプや、中間結果の格納と使用の他のタイプが、他の実施形態において使用できる。さらに、幾つかの実施形態でユーザが指示されたプログラムを分散型式で実行する要求を提出する一方で、他の実施形態では、DPEサービスの実施形態はこの種の指示されたプログラムの実行を開始しても良く、及び/又はユーザによって指示されたプログラムを分散型式で実行することを(例えば、ユーザについての知識なしに)決定しても良い。さらにまた、少なくとも幾つかの実施形態において、分散型式で実行されない少なくとも幾つかのプログラムと共に、少なくとも幾つかの記載されている技術を使用しても良く、中間結果を格納し、格納された中間結果をプログラムの部分的実行の再開に使用することによってこの種の非分散プログラム実行の部分的実行を終了しても良い。
図1Aは、多数のユーザによる管理分散型プログラム実行の例を示すネットワーク図である。図1Aの実例において、多くのユーザ140は、ネットワーク100を通じて分散型プログラム実行サービスシステムマネージャ(「DPE サービス SM」又は「DPESSM」)モジュール110とDPEサービス(図示せず)の特定の実施形態の機能の幾つか又は全てを提供するDPESSMモジュール110の如きユーザのプログラム実行に利用可能な1つ以上のコンピューティングノード120にプログラムの分散型実行を開始すべく相互に作用する。ネットワーク100は、例えば、リンクしたネットワークの公的なアクセス可能なネットワークであってもよく、インターネットの如き様々な相違した関係者によって、おそらく作動される。他の実施形態において、ネットワーク100は例えば、非特権ユーザには完全にまたは部分的にアクセス不能な会社や大学ネットワークの如き私的なネットワークであってもよい。更に他の実施形態において、ネットワーク100はインターネットに及び/又はインターネットからアクセスできる1つ以上の私的なネットワークを含んでも良い。図示した実施形態では、DPESSMモジュール110及びコンピューティングノード120はDPEサービスの一部として、DPEサービス提供者105によって1つ以上のオプションの他の保管ノード130と同様に提供され、DPESSMモジュール110は1つ以上の他のコンピューティングシステム(図示せず)に実行し得る。
幾つかの実施形態において、図示したコンピューティングノード120は、ユーザの為のプログラムの分散型実行のためのDPEサービスプロバイダ105によって提供され、1つ以上の物理的コンピューティングシステム(例えば、1実施形態の図1Bについてより詳細に記載されているような)にホストされる多数の物理的コンピューティングシステム及び/又は多数の仮想マシンを含み得る。各々のコンピューティングノード120は1つ以上のプログラムを実行するために利用可能な畿つかの量のコンピューティングリソースを有し、例えば、1つ以上の処理容量(例えば演算処理装置の数及び/又は大きさ)、記憶容量、格納容量、ネットワーク帯域幅容量、その他の組合せで測定できる。幾つかの実施形態において、DPEサービスプロバイダ105は、ユーザの為にプログラムを実行する為に利用可能な同様及び/又は同量のリソースを有する各予め設定されたコンピューティングノードで予め設定されたコンピューティングノードを提供しても良く、他の実施形態においては、DPEサービスプロバイダ105は例えば変動する量及び/又はタイプのコンピューティングリソース(例えば寸法、速度及び/又は演算処理装置のタイプ、演算処理装置の数、メモリ及び/又は格納の量、32ビット又は64ビットの如きプラットホーム構成)を有する選択の如き様々な異なるコンピューティングノードの選択を提供する。
図示した実施形態では、様々なユーザ140は、DPESSMモジュール110と相互に作用して要求を作り、様々な情報を特定しても良い。様々な実施形態において、この種の要求及び仕様は、ユーザがDPEサービスのサービスを登録する時点及び/又は後の時間での利用の如く、様々な時間に作られる。幾つかの実施形態において、DPESSMモジュール110は、ユーザの為に実行する1つ以上のプログラム(例えばプログラム、ソースコード、1つ以上のプログラムのアドレス可能位置、その他)、アカウント情報(例えばユーザー名、課金情報、その他)、使用条件、に関係した情報をユーザが特定できるように、1以上のユーザに対して予約及び/又は登録サービスを提供しても良い。幾つかの実施形態において、ユーザがサービスを予約及び/又は登録するDPESSMモジュール110と相互に対話した後、ユーザはユーザと関連して、及びユーザの為のプログラム実行と共同で使われるべき1つ以上の識別子(例えばキー、トークン、ユーザ名、その他)を発行される。他の実施形態において、DPESSMモジュール110以外のモジュールは、DPEサービスの予約及び/又は登録サービスに関連した様々な動作を実行するために提供される。
更に、ユーザはプログラム実行のためのコンピューティングノードの数及び/又はタイプ、最小数及び/又は最大数の使用するコンピューティングノード、要求の失効時間、好適な実行時間及び/又は実行の期間、実行のための多数の優先順位の選択(例えば優先順位の増加と共に増加する関連した手数料)等を特定するなどして、例えば様々な実施形態で様々な方式でプログラムの実行のための要求を構成するためにDPESSMモジュール110と相互に作用しても良い。さらに又、幾つかの実施形態において、ユーザはDPESSMモジュール110と対話して特定の数のコンピューティングノードでの1つ以上のプログラムの即時の実行を要求し、及び/又は1つ以上の未来時間でこの種の実行を予定ができ、DPESSMモジュール110は、特定の時間で又は1つ以上の特定の基準が満たされる(例えば、指定の数のコンピューティングノードが利用できると決定される)時の特定の数のコンピューティングノードでの要求された実行を開始する。
図示した実施形態において、DPEサービスは、コンピューティングノード120での多数のユーザのためのプログラムの分散型実行を管理するために様々な機能性を提供する。例えば、先述の通り、特定のユーザは、モジュール110が提供するGUI又はAPIを利用しても良く、示された入力データを使用して示されたプログラムの実行のための要求を提出し、オプションによって様々な構成情報を併用しても良い。プログラムの実行のための要求が受信された後、DPESSMモジュール110は様々な方式の要請された実行のために用いる利用可能なコンピューティングノード120のどれかを選択することができる。例えば、幾つかの実施形態において、モジュール110は例えば利用可能なコンピューティングノードのプールから無作為に選択して充分なリソースを伴う利用可能なコンピューティングノードのいずれからでも、適当な数のコンピューティングノードを単純に選べる。他の実施形態において、例えば1つ以上のコンピューティングノードの永続的利用可能性の予測長及び/又は尤度、1つ以上の特定のコンピューティングノードと1つ以上の他のコンピューティングノードとの物理的な近接度、1つ以上の特定のコンピューティングノード及び/又は1つ以上の他のコンピューティングノードの地理的な所在の如き、1つ以上の他の因子を基礎として1つ以上の特定のコンピューティングノードが選択されても良い。更に、要求が受信された後、ユーザより供給される情報を使用して及び/又は示されたプログラムの設計について前もって得られた情報に基づく自動方式によって、モジュール110は更に示されたプログラムをどのように分割して複数の選択されたコンピューティングノードで実行すべき複数の実行ジョブとするかを決定できる。同様に、少なくとも幾つかの実施形態及び状況において、モジュール110は示された入力データをどのように分割して多数の実行ジョブ用の多数のサブセットとするかを決定できる。例えば、幾つかの状況において、各実行ジョブは示されたプログラムの完全なコピーの実行を含むが、入力データの特定のサブセットでは、一方で、他の実行ジョブは同様に他の入力データサブセットで全プログラムコピー機能を実行する。
実行ジョブが様々なコンピューティングノードで実行するように、実行ジョブは少なくとも幾つかの実施形態中のコンピューティングノードに、様々な情報を局所的に格納する。更に、DPEサービスは、プログラムの実行及び/又は他の目的と関連した情報を格納するためにDPEサービスにより利用される1つ以上の格納ノード130をオプションとして提供しても良い。更に詳細に他の場所で議論されるように、格納ノード130に格納されるこの種の情報は、様々なプログラムのための様々な実行ジョブの部分的実行の中間状態に関する状態情報を含んでも良く、幾つかの実施形態では、完了した実行ジョブによって生成される出力データをオプションとして含んでも良い。更に又、より詳細に他の場所で議論されるように、幾つかの実施形態において、モジュール110は1つ以上の実行ジョブの部分的実行の中間状態を、実行ジョブの部分的な実行が終了する前に永続的に格納するべく指示作用を提供しても良い。部分的な実行用のこの種の中間状態情報は、部分的な実行が発生したコンピューティングノードから離隔して、この種の中間状態情報を任意の格納ノード130の1つ以上へコピーすることによって及び/又はネットワーク100を経てアクセス可能な1つ以上の任意のリモート格納サービス150を使用することによって様々な方式で格納できる。幾つかの実施形態において、モジュール110はコンピューティングノードから、離隔した永続的格納場所への中間状態情報の格納を、モジュール110が部分的な実行の中間状態について追尾する情報を使用することによってコーディネートし、他の実施形態において、中間状態情報の永続的な格納を実施する際のアクティビティは局所的に実行ジョブの実行を管理するためのコンピューティングノードで実行しているマネジメントソフトウェアによって、代わりに実行できる。代替的に、実行ジョブの実行がそれ自身の中間実行状態を格納できる場合、モジュール110は代わりに実行ジョブを通知して、それ自身の実行を遮断する前にそれ自身の中間実行状態格納活動を実施できる。
実行ジョブの部分的実行の中間状態が永続的に格納され、部分的実行が終了すると、時間をおいて、実質的には直後にでも(例えば、実行ジョブの実行が第1コンピューティングノードから第2コンピューティングノードまでの移動である場合、中間状態情報を格納し、検索するのと同程度に急速に)部分的実行はその中間状態から再開されても良く、または、その代わりにより長い期間を経た後、再開しても良い(例えば、予定時間後、1つ以上の指定された基準が満たされた後の時点、等)。実行再開の時点で、格納された中間状態情報は永続的な格納場所から検索され、実行ジョブ実行が再開できるコンピューティングノードに局所的に格納されても良く、別に利用可能としても良い。また、実行ジョブの部分的実行は様々な形で再開しても良く、前以って完了した動作のサブセットを不実施と指示しても良く(例えば、実行ジョブがこの種の機能を支持する場合)、以前には完了しなかった動作のサブセットを実施するのみのために実行ジョブを改良しても良い。実行ジョブ実行の保留と再開に関連した付加的な詳細は、他の場所に記載する。
図1Bは、DPEサービスが多数の物理的コンピューティングシステムを含む1つ以上のデータセンターを使用して提供し得る1実施形態を例示している。特に、図1Bは、DPEサービスのDPESSMモジュール180が実例データセンター170のユーザの為にプログラムの分散型実行を管理する実施形態を例示するネットワーク図である。実例データセンター170は、データセンター170の外部のインターネット196に接続され、この例では例えば私的ネットワーク194を経たコンピューティングシステム190及びコンピューティングシステム192の如き様々な外部のコンピューティングシステムへのアクセスを提供する。私的ネットワーク194は、例えば、私的ネットワーク194外部の非特権的なコンピューティングシステムからは完全に又は部分的にアクセスできない共同ネットワークであってもよい。コンピューティングシステム192は、例えば、直接インターネットに(例えば、電話又は電線モデム、デジタル加入者線(「DSL」)、その他を経て)接続するホームコンピューティングシステムを含んでも良い。また、1つ以上の他のデータセンター198がインターネット196を経てデータセンター170に接続していることが例示され、少なくとも幾つかの実施形態ではDPEサービスによって使われても良い。例えば、特定のプログラムの分散型実行は、多数のデータセンター又は他の相違した地理的な場所でのコンピューティングノードを使用した同時実行及び/又は順次実行を含み得るが、実行ジョブの実行を、或る地理的な場所でのコンピューティングノードから他の地理的な場所でのコンピューティングノードへ移動することも含む。
実例データセンター170は、多数の物理的ホストコンピューティングシステム175、物理的コンピューティングシステム182、オプションの格納システム160及びDPEサービスの1実施形態のDPESSMモジュール180を含む。この例では、ホストコンピューティングシステム175は、それぞれ複数の仮想マシン177を提供し、それらの仮想マシン(例えばハイパバイザー又は他の仮想マシンモニタ)を管理するために仮想マシン(「VM」)マネージャコンポーネント179を有し、コンピューティングシステム182の幾つか又は全部は、同様に1つ以上のこの種の仮想マシン及び/又はVMマネージャコンポーネント(図示せず)を持ち得る。代替的に、他の実施形態において、データセンターでの物理的ホストコンピューティングシステムの幾つか又は全てはいかなる仮想マシンも提供せず、代わりにDPEサービスの末端ユーザ顧客の為に、直接1つ以上のプログラムを実行しても良い。また、幾つかの実施形態において、物理的ホストコンピューティングシステム175及び/又は物理的コンピューティングシステム182は、コンピューティングシステムでの実行ジョブの実行を管理するためにそれぞれ他のマネジメントソフトウェア(例えばDPEサービスの管理モジュール)を含んでも良い。更にまた、幾つかの実施形態において、多様なコンピューティングシステム175及び182は、異なる能力を持ち、使用のための異なる関連した手数料を有し、異なるタイプのユーザープログラム(例えば、異なるサイズの仮想マシンソフトウェアイメージインスタンス、異なるパターンのI/O、メモリアクセス及びネットワーク利用の如き異なるタイプのリソース規格及び/又はコンピューティングリソース使用プログラム)をサポートしても良い。そうであれば、1つ以上のこの種のファクタは、特定のプログラムを実行するためにどのコンピューティングシステムを選択するかについて、制約及び/又は優先として更に利用し得る。オプションの格納システム160は、また、付加的格納(例えば、時々コンピューティングノードとして使える)付きのコンピューティングシステム、コンピューティングノードとして使わないネットワーク格納装置、その他の如き様々な形態を有しても良い。実例データセンター170は、内部ネットワーク172を更に含むが、内部ネットワーク172はスイッチ、エッジルーター、コアルータ、及び内部ネットワーク172に接続しているコンピューティングシステム175及び182、格納システム160及びDPESSMモジュール180の如き多数のネットワーキングデバイス(図示せず)を含んでも良い。
図示したDPESSMモジュール180は、コンピューティングシステム175及び182を使用してプログラムの分散型実行を管理するために少なくとも幾つかの記載した技術を実行し、オプションとして格納システム160に少なくとも幾つかのプログラム実行結果を永続的に格納する。特定のコンピューティングノード又はシステムがプログラムの1つ以上の実行ジョブを実行する為に選択される場合、DPESSMモジュール180は幾つかの実施形態において、選択されたコンピューティングノード/システム用プログラムの実行を制御するVMマネージャコンポーネント又は他のマネージャコンポーネントと対話して実行ジョブの実行を開始しても良く、代替的には直接選択されたコンピューティングノード/システムで実行ジョブを実行しても良い。DPEサービスのユーザは、コンピューティングシステム190又は192、若しくは他のデータセンター198中のコンピューティングシステムの如き様々なコンピューティングシステムを使用してDPESSMモジュール180と対話しても良い。また、コンピューティングシステム190又は192の幾つか若しくは他のデータセンター198の一つは、DPEサービスによってアクセス可能で、少なくとも永続的に幾つかの中間結果または他の情報を格納する為に使われる1つ以上のネットワークでアクセス可能なリモート格納サービス(図示せず)の提供のために用いてもよい。
当然のことながら、図1Bのデータセンターは図示の目的だけで提供され、DPEサービス及び他のソフトウェア実行サービスの実施形態は他の実施形態の他の様式において提供され得る。例えば、DPESSMモジュール180は、代わりにコンピューティングシステム190、192又はデータセンター198の如きデータセンター170外部の1つ以上の他のコンピューティングシステムを使用して提供され得る。さらに、少なくとも幾つかの実施形態において、分散型実行が提供されるプログラムは、1つ以上の仮想マシンコンピューティングノードで起動可能又はロード可能な仮想マシンイメージの如き実行可能なソフトウェアイメージを含んでも良く、それぞれオペレーティングシステムソフトウェア、1つ以上のアプリケーションプログラムのためのソフトウェア及び/又は構成情報、その他を含んでも良い。少なくとも幾つかのそのようなプログラムは、DPEサービス及び/又は格納システム160のユーザによって格納されても良く、及び/又はリモート格納サービスを使用して格納されても良く、もしそうならば、それらがユーザの為に実行され又は別に始められる場合は、DPEサービスによって検索されるかまたはDPEサービスに供給される。
図2A及び2Bは、DPESSMモジュールの実施形態によって自動的に実行できるような多数のコンピューティングノードでの分散型プログラム実行を管理する特定の例を図示している。例えば、図2Aに関して、幾つかのコンピューティングノード205及び230を例示しているが、これらはプログラムXとして言及しているプログラム例の分散型実行に現時点で関連している。この例では、DPEサービス(図示せず)はマスターノード205を創成し、プログラムX(例えば、マスターノード205又は他の場所で、対応する図示せぬソフトウェアモジュールの管理下で実行)の進行中の実行に関して、様々なステータス情報を格納するためにプログラムXの分散型実行を管理する際の補助を図った。コンピューティングノード230は、この例では、プログラムXの分散型実行に使われるべく選択される複数のコンピューティングノードであり、4種のコンピューティングノード230a〜230dがこの例で図示されている。
この例では、マスターノード205は、プログラムXの分散型実行に関して様々な実行状態情報210を維持し、各コンピューティングノード230での実行ジョブの実行状態等を追尾する。特に、この例では、それぞれの線又は情報210の記載は、特定のコンピューティングノードでの特定の実行ジョブのための特定の動作の実施に対応し、この例で追尾中の情報はコンピューティングノードの識別210a、実行ジョブ210b、動作210c、動作の実施状態210f、動作によって使われるべき入力データ210d、動作の実施によって生成されるべき出力データ210e、及びオプションとして様々な他の情報210gを含む。このような他のステータス情報は、例えば、動作(例えば、動作Bは動作Aの完了後まで実行不可で、動作C及びDは同時に実行されるべきである等)間の依存度または他の相互関連性についての情報、実施中の動作の実施完了予測情報(例えば、予測完了時刻、完了までの予測時間、動作の完了パーセンテージ、実施されるべく残存している動作のパーセンテージ等)、未だ実施されていない動作の実施開始予測についての情報を含んでも良い。
この例では、複数のコンピューティングノード230はノードA 230aを含み、実例実行ジョブJ−Aの実行はコンピューティングノード230aで開始している。この例では、実行ジョブJ−Aは、少なくとも実例動作A01、A02、A03及びA04を含む実行すべき動作を含み、状態情報210の最初の4記載はこの実行ジョブ及びコンピューティングノード用の動作と一致する。この例では、動作A01は既に完了し、その実施のための入力データD−A01を使用して、出力データD−A11を生成した。動作A03は入力データとしてその出力データD−A11を使用し、出力データD−A21を生成するために実施されることで進行中であるが、その出力データは未完成である。同様に、動作A02は進行中で、入力データD−A02を使用し、ゆくゆくは出力データD−A12を生成する。動作A04は入力データとしてその出力データD−A12を使用するので、その入力データ及びコンピューティングノード230aがその実施のために利用可能時には動作A04は待ち行列中で、実施準備状態であるが、動作A04の実施はまだ開始していない。
コンピューティングノード230aに表示される実例情報は、状態情報210と対応する。特に、この例では、コンピューティングノード230はノードに局所的に格納される様々な情報を図示するが、他の情報はこの例では図示されず(例えば、実行中の実行ジョブや実施中の動作についての局所的に格納された情報)、局部格納がどの様に実行されるかに関する詳細は示されない。特に、ノード230aで局所的に格納された情報例は、データ235a及び235bを含む実行ジョブJ−Aの実行のために供給される入力データを含む。さらに、実施された動作からの出力であった中間データ結果は、完了した動作A01によって生成されるD−A11出力データ240aを含む。さらに、幾つかの実施形態において、部分的出力データ245a及び245bは、ノード230aで生成され、同様に進行中の動作(例えば、この例では動作A02及びA03)の実施を反映するために格納されても良いが、他の実施形態では、この種の部分的な出力データは対応する動作の実施が完了する迄、この様にはノード230aに格納されない。
状態情報210の他の記載は、他のコンピューティングノード230b、230c及び230dの状態と対応する。特に、ノードB 230bに関して、ここには入力データ235c及び235d、完了した動作B01からの出力データ240c及び進行中の動作B02の実施に対応するオプションの部分的出力データ結果245cを格納する。同様に、ノードC 230cは、入力データ235e及び235f、実施が完了する動作C01からの出力データ240e及びオプションとして部分的な中間出力結果245eを格納する。ノードD 230dは、同様に入力情報235g及び235hを格納し、オプションとして部分的な中間の出力結果245g及び245hを格納するが、この例では、完了されていない実行ジョブJ−Dの動作に基づいたいかなる完成出力データも含まない。
さらに、この例では、マスターノード205も、完成した出力データ240a、240c及び240eのコピー220a、220b及び220cをオプションとしてそれぞれ含み、例えば完成した出力データの永続的な格納を提供する。他の実施形態において、この種の中間出力データは、コンピューティングノード230の外部には格納されず、若しくは代わりにマスターノード205以外の場所のコンピューティングノード230の外部に格納しても良い。
図2Bは、図2Aの実例に続くもので、特に実例コンピューティングノード230に関して起こり得る時間上の変更を図示する。特に、図2Bの実例において、コンピューティングノード230a、230b、230c及び230dは、図2Aにおいて図示した時間の直後と対応する最初の時間1で左側に示され、コンピューティングノードの後のバージョンは右側の遅い時間3で図示されている。
この例では、コンピューティングノードNode A 230aは時間1と時間3との間の実行を継続し、実行ジョブJ−Aの動作A02は時間3で完了してノード230aに格納すべき出力データ240bを惹起する。例えば、部分的なデータ245aが時間1でノード230aにオプションとして格納される場合、出力データ240bは時間1と時間3との間で発生する動作A02の付加的実施を反映するためにその部分的なデータ245aの改質によって生成し得る。さらに、時間3でのコンピューティングノード230aは、オプションの部分的出力データ245jを含み、一旦出力データ240bが利用できるならば、実施され始めていた動作A04に対応する。さらに、時間1でのノード230aのバージョンに関して、入力データ235aはオプションとして示され、特定の入力データは動作A01の実施で使われたことを反映し、それが実行ジョブJ−Aの他の動作によってもはや必要でない場合、オプションとしてノード230aから削除され得る。同様に、時間3でのノード230aのバージョンに関して、その時の動作A02の更なる完了に基づいて、入力データ235aと235bの両方はノード230aからオプションとして除去されるとして示されている。
ノードA 230aが時間1と時間3との間の期間に実行ジョブJ−Aの実行を継続する場合、他のコンピューティングノード230b、230c及び230dは他のアクティビティに従事しているものとして図示している。例えば、ノードD 230dに関して、DPEサービスは、時間1でのノード230dから実行ジョブJ−Dの実行を、時間3での相違したコンピューティングノードZ 230zに移動することを決定する(この例では時間1に関して実質的に即時、数秒後又は数分後でもよく、若しくは代わりに数時間又は数日後でも良い)。特に、この例では、ノード230dは実行ジョブJ−Dを他のコンピューティングノード230より遅い速度で実行しており(例えば、過利用による)、これは急いで実行ジョブのより敏速な実行を実施できる他のコンピューティングノード230zへ移動した。例えば、図2Aで図示した時点では、ノード230dは実行ジョブJ−Dの動作のいずれもの実施を未だ完了してなかった。この例では、しかしながら、実行ジョブJ−Dの実行を終了するために決定される時間(例えば、時間1も直前の時点で)、状態情報210g(図示せず)は利用可能で動作D02の実施が完了に近いことを示し、(例えば、動作の実施の完了割合若しくは完了迄の予測時間に基づく)、一方動作D01の実施は完了に近くはない。従って、DPEサービスは動作D02の実施の完了を避けるために実行ジョブJ−Dの終了遅延を決定するので、時間1でのノード230dは、動作D02の実施の完了と対応するノード230dからの中間出力データ240hを含む。
時間1でノード230dの実行ジョブJ−Dの実行を終了するために、時間1でノード230dに局所的に格納され、少なくとも幾つかのデータは、ノード230d及びノード230zから隔れた場所に永続的に格納され、その結果データは時間3でノード230zへ移動する。特に、この例では、移動すべき情報は格納容積250bに一時的に格納し、格納容積250bに格納されるデータはノード230dからの中間出力データ240hのコピー250hを含む。同様に、ノード230dが動作D01の進行中の実施と対応するオプションの部分的出力情報245gを含む場合、その部分的出力情報のコピー250gは、幾つかの実施形態の格納容積250bにオプションとして格納され、コンピューティングノード230zで動作D01の再開が可能な場合、部分的出力データを使用して、動作の実施が停止した時点からその実施を続行する。さらに、格納容積250bはこの例では図示しないノード230hからオプションとして他の情報を格納することができ、再開された実行用に使われるノード230d上の入力データ(例えば入力データ235g)及び/又は実行ジョブJ−Dについてのソフトウェア命令または他の情報(例えば、残存する動作の如き、ジョブの動作の幾つか又は全てを実施するために用いるべき実行ジョブの部分)も利用できる。
ノード230dからの中間出力データが論理的格納容積250bに格納された後、時間3でコンピューティングノード230zにデータの局所的バージョンを創成する為にそれを利用し、実行ジョブJ−Dの再開実行を容易にし得る。論理的格納容積250bが実行ジョブJ−Dについて及び/又は入力データ235gについての情報を格納しない場合、この種の情報は検索され、実行ジョブJ−Dの実行が開始された時にかかる情報をノード230dに供給する為の元のソースの如き他のソースからのノード230zに局所的に格納され得る。代替的に、他の実施形態において、ノード230zがノード230dと並行して利用可能な場合、先述の情報の幾つか又は全ては中間論理的格納容積250bを使用せずにノード230dから直接ノード230zにコピーできる。
ノード230dと同様に、DPEサービスは、時間1でノード230cからの実行ジョブJ−Cの実行を保留することを決定し、後の時間でノード230c又は他のノードでの実行を再開させ得る。この例では、実行ジョブJ−Cの実行の再開は、時間3では起こらなかった。実行を保留するために、類似のアクションをノード230dに関して先述したようにノード230cに施し、ノード230c用に創成した論理的格納容積250aのノード230cからの中間出力データ240eのコピー250eを格納することも含めて行われた。論理的格納容積250と同様に、論理的格納容積250aは、部分的出力データ245fのコピー250f、実行ジョブJ−Cについての情報及びノード230cによって使用した入力データの幾つか又は全てを更にオプションとして格納できる。実行ジョブJ−Cの実行が後で再開されるときに、実行を再開するために用いるコンピューティングノードは格納容積250aに格納した様々な情報及び他のソースからのオプションの情報の局所的コピーを同様に受信する。
この例では図示されていないが、時間1でのノード230cの実行ジョブJ−Cの保留は、その時のプログラムXの全ての実行ジョブを保留することの一部として実施できる。もしそうであれば、プログラムXの実行ジョブを現在実行している他のコンピューティングノード230のそれぞれのための部分的な実行状態情報を永続的に格納することに同様のアクションを施す。さらにまた、マスターノード205からの状態情報210は、プログラムXの実行の再開の為に後の使用に備えて同様に永続的に格納しても良い。さらに、プログラムXの実行のこの種の後の再開が起こるときに、様々な様式で実施しても良い。例えば、プログラムXの実行の再開は、以前の使用と同一のノード230の幾つか又は全てに実施し、或いは代わりに完全に異なるコンピューティングノードに実施しても良い。さらに、再開した実行の為に使用するコンピューティングノードの数及び/又は能力は、実行の終了前に使用するノード230とは異なり、より多くのノード又はより少ないノードを含んでも良い(例えば、再開した実行の為に使用するコンピューティングノードの規模を変更することの一部として、従来の実行速度より高速か低速で再開した実行を継続する)。さらにまた、この例では図示されていないが、幾つかの実施形態及び状況において、第1ユーザにプログラムの分散型実行を開始させ、第2ユーザにそのプログラムの実行の第1保留を開始させ、第3ユーザにそのプログラムの第1再開実行を開始させる等、異なるユーザ又は他の加入者はプログラムの分散型実行の異なる部分に関係しても良い。この種の2以上の異なるユーザは、例えば、単一の加入者を代表し、同一の加入者を代表せず、1つ以上の他の様式において合併し(例えば、共同作業に基づく)、他のユーザ等のための特定のアクションを実施することを認可しても良い。
ノードB 230bは、対応する格納容積にノード230bの少なくとも幾つかの情報を永続的に格納する機会が無く、ノードBが実行の期間に失敗する如く、早期に終了した実行ジョブJ−Bの実行の例を例示する。この例では、時間1で動作B01は完了し、出力データD−B11 240cを生成し、図2Aの実例ではノード230bからマスターノード205にコピー220bをオプションとして遠くに格納させる。従って、ノード205の表現はそのコピー220bを格納する図2Bにて示され、その格納した情報は時間3で他のコンピューティングノードY 230yの実行ジョブJ−Bの実行を再開するために用いてもよい。しかしながら、時間1で部分的出力データ245cがノード230bに存在して、動作B02の部分的な実施に該当する場合、この種の情報はこの例では保存されず、そしてこのように、部分的な出力データを再生させる実行再開の間に対応する動作B02を最初から再実施する必要があり、ノード230yでのオプションの出力データ245lと共に図示する。同様に、実行ジョブJ−Cの命令又は他の部分についての入力データ235d及び情報の如き、対応する格納容積250a及び250bに格納できるノード230bに格納された他の情報は保存できず、そしてこのように、時間3でのノード230y上の入力データ235d及び実行ジョブ情報(図示せず)は、実行ジョブJ−Bの実行が元来開始した時のノード230bと同様に外部ソースから得られる。
図2Bの例では図示されていないが、その実行の管理された終了(例えば、或る期間プログラムXの実行の保留を反映する如き、プログラムXによってまたはDPEサービスによる自動的決定に関連するユーザからの要求に応答)に基づくか、又はマスターノードの失敗に起因して、マスターノード205も時々利用できなくなることがあると更に認められる。マスターノード205が利用できなくなると、それが他の場所で永続的に格納されない場合、現在の実行状態情報210もまた利用できなくなることがある。従って、少なくとも幾つかの実施形態において、状態情報210も、マスターノード205のこの種の実行の終了又は他の利用不能の前に、ノード230cと230d及び格納容積250aと250b用に先述したと同様に、リモート論理容積又は他の永続的格納場所に格納できる。さらにまた、置換マスターノードがプログラムXの再開した分散型実行を管理するために開始される時、この種の格納された状態情報210は後に(従来のマスターノード205と同一のコンピューティングシステムで若しくは代わりに異なるコンピューティングノードで)検索され、使用されても良く、状態情報210が格納された時の中間の部分的な実行状態からプログラムXの実行の再開を容易にする。
図2A及び図2Bの実例の情報が図示の目的だけに提供され、様々な詳細は、要約様式で示されるか又は理解のために図示されなかったことは言うまでも無い。さらにまた、4種のコンピューティングノード230及び4種の実行ジョブだけを例示したが、実際の実施形態では実際の数量が非常に大きく、何百、何千又は何百万ものコンピューティングノード及び/又は実行ジョブを含むことも言うまでも無い。
さらに、前述のように、プログラムの分散型実行の管理は、様々な実施形態の様々な様式で実施しても良い。例えば、プログラムの実行にどのコンピューティングノードを使用するかは、要求で特定されるいかなる優先及び/又は要求若しくは別段に特定されるプログラム及び/又は関連したユーザ(例えば、登録等の時間)を含み様々な方式で決定される。例えば、プログラムの実行のための好適な及び/又は必要なリソース(例えば、メモリ及び/又は格納、CPUのタイプ、周期又は他の計量的特性、ネットワーク容量、プラットホームのタイプ等)のために規準を定める際、使用する適当なコンピューティングノードの選択は、少なくとも部分的にはコンピューティングノードがそれらのリソース規準を満たすために利用できる充分なリソースを有するかどうかに基いて行われる。プログラム実行サービスを実行する計画を実行し、構成することに関連した付加的詳細は係属中の米特許出願番号第11/395,463号、2006年3月31日出願、表題:”Managing Execution of Programs by Multiple Computing Systems”、に全部含まれており、これは本願明細書に引用される。
さらに、先述の通り、少なくとも幾つかの実施形態において、自動的に終了される実行ジョブの実行はDPEサービスによって後の時間に自動的に再開されても良い。例えば、そういったケースにおいて、DPEサービスは、実行が取り消されるか又はユーザによって明示的に終了されるまで、要請された実行の完了まで、特定時間の発生まで(例えば、失効時間の発生まで、蓄積実行時間の発生まで等)、特定数の実行の発生まで、際限なく等、この種の実行ジョブを実行し続けることができる。さらに、少なくとも幾つかのこれらの実施形態において、自動的に終了される少なくとも幾つかの実行ジョブはユーザの為にプログラムの実行容量の充分な量が実行の継続のために再び利用可能となる将来時間に自動的に再開され得る。
幾つかの実施形態において、料金はDPEサービスの利用と関連し、DPEサービスはそのユーザによる1つ以上の料金の支払いと引きかえにユーザの為にプログラムの分散型実行を実施しても良い。たとえば、幾つかの実施形態において、料金は1つ以上のプログラムを実行する為に割り当てられる分散型プログラムの実行容量の量及び/又はタイプに基づいて、例えば1つ以上の演算処理装置、メモリの量、格納の量、ユーザのプログラム実行に割り当てられる、ネットワークリソースの量等に基づいて、ユーザに課金されても良い。幾つかの実施形態において、料金は、プログラム実行のために用いるコンピューティングリソースの様々な特性の如き他の要因、CPU能力或いは性能、プラットホームのタイプ(例えば32ビット、64ビット等)等に基づいてもよい。幾つかの実施形態において、料金はサービスの使用当たりの価格、コンピューティングサービスが利用される1時間当たりの価格、使用する格納当たりの価格、内及び/又は外へ転送されるデータ当たりの価格等様々な使用要因を基礎として課金されてもよい。少なくとも幾つかの実施形態において、DPEサービスのプロバイダは、複数ユーザの為に1つ以上の様々なプログラムの分散型実行のためのサービスの階層、タイプ及び/又はレベル若しくは機能性を提案しても良く、幾つかのそういった実施形態において、様々な料金は、さまざまな階層、タイプ及び/又はサービスのレベルと関連し得る。分散型プログラム実行サービスに関する様々な料金に関連した付加的詳細は係属中の米特許出願番号第11/963,331号、2007年12月21日出願、表題:”Providing Configurable Pricing for Execution of Software Images”、に全部含まれており、これは本願明細書に引用される。
さらにまた、更に詳細に他の場所で議論されるように、機能性の様々な他のタイプは、様々な実施形態のDPEサービスによって提供され、利用されても良い。
図3は、分散型プログラム実行を管理するための技術実施に適切なシステムの実施例を例示するブロック図である。特に、図3は分散型プログラム実行サービスシステムマネージャモジュールの実施形態の実行に適しているサーバコンピューティングシステム300を、様々なユーザコンピューティングシステム350、コンピューティングノード360及び他のコンピューティングシステム380と同様に例示している。図示した実施形態において、サーバコンピューティングシステム300は、CPU 305、様々なI/Oコンポーネント310、格納装置320及びメモリ330を含むコンポーネントを有する。図示したI/Oコンポーネントは、ディスプレイ311、ネットワーク接続312、コンピュータ可読のメディアドライブ313及び他の入出力デバイス315(例えばキーボード、マウス、スピーカ等)を含む。さらに、図示したユーザコンピューティングシステム350はサーバコンピューティングシステム300のそれらと同様にCPU 351、I/Oコンポーネント352、格納装置354及びメモリ357を含むコンポーネントを有する。他のコンピューティングシステム380及びコンピューティングノード360もまた、それぞれサーバコンピューティングシステム300に関して例示したコンポーネントに類似のコンポーネントの幾つか又は全部を含んでも良いが、この種のコンポーネントは簡潔さを考慮してこの例では図示しない。
分散型プログラム実行サービスシステムマネージャモジュール340の実施形態はメモリ330において実行しており、ネットワーク390を経て(例えば、インターネット及び/又はワールドワイドウェブ、私的な携帯電話ネットワーク等を経て)コンピューティングシステム350と380及びコンピューティングノード360と対話する。この実施形態において、DPESSMモジュール340は、DPESSMモジュール340によって管理されるDPEサービスと共同するユーザコンピューティングシステム350と対話している様々なユーザ(図示せず)によるコンピューティングノード360でのプログラムの分散型実行を管理することに関連した機能性を含む。他のコンピューティングシステム350と380及びコンピューティングノード360は、DPESSMモジュールを有する対話の一部として様々なソフトウェアを実行できる。例えば、ユーザコンピューティングシステム350は、ウェブブラウザ358又はメモリ357中の他のソフトウェアを実行してDPESSMモジュール340と対話し、様々な方式で1つ以上のコンピューティングノード360でのそれらのシステムのユーザの為にプログラムの実行を構成及び/又は要求しても良い。さらに、より詳細に他の場所で議論されるように、1つ以上のユーザコンピューティングシステム350のユーザは、DPESSMモジュール340と対話して様々な他のタイプのアクションを実行しても良い。
DPESSMモジュール340の動作に関連した様々な情報は、プログラムを実行するコンピューティングノードの構成に関連した情報322、分散型プログラム実行サービスのユーザについての情報328、完了されたプログラムの実行から、最終的な実行結果を含む情報324、及び、様々なプログラムの部分的実行の中間状態について、ステータス情報を格納する情報326を含めて格納装置320に格納される。さらに、様々な中間状態情報及び他の情報は様々な様式で永続的に格納され、更に詳細に他の場所で議論されるように、格納先はサーバコンピューティングシステム300の格納装置320、他のコンピューティングシステム380、若しくは他のコンピューティングノード/システム又は格納ノード/システム(図示せず)を含む。
DPESSMモジュール340が1つ以上のコンピューティングノード360上の1つ以上のプログラムを実行するために要求(又は他の指示)を受信した後、DPESSMモジュール340は1つ以上のプログラムの分散型実行を実施して、それらのコンピューティングノード360上のそれらのプログラムの実行ジョブの実行を開始するコンピューティングノードを選択する。さらに、DPESSMモジュール340は更にコンピューティングノード360と対話してコンピューティングノード上の実行ジョブの実行を終了し、以前に終了した実行を再開しても良い。DPESSMモジュール340はまた、コンピューティングノード360の1つ以上を監視し若しくは別に対話して、それらのコンピューティングノードの使用を追尾しても良い。これらの動作に関連した付加的な詳細は、本願明細書の他の場所に含まれる。
コンピューティングノード360は様々な実施形態において様々な形態を有し、1つ以上の物理的コンピューティングシステムで実行する多くの物理的コンピューティングシステム及び/又は多くの仮想マシンを含んでも良い。幾つかの実施形態において、サーバコンピューティングシステム300及びコンピューティングノード360は、共同配置されたコンピューティングシステムのデータセンター又は他のグループの一部であっても良く、または別段に私的ネットワークのコンピューティングノードであっても良い。さらに、幾つかの実施形態において、DPESSMモジュール340は、1つ以上の他のコンピューティングシステム380と対話し、コンピューティングシステム380が1つ以上のサードパーティ参加者によって提供される場合は、それらのコンピューティングシステム上の1つ以上のプログラムの実行を開始若しくは終了しても良い。
当然のことながら、コンピューティングシステム300、350及び380、およびコンピューティングノード360は単に説明用に示され、本発明の権利範囲を限定することを意図するものではない。コンピューティングシステム及び/又はノードは代わりにそれぞれ複数の対話コンピューティングシステム又はデバイスを含むことができ、コンピューティングシステム/ノードはインターネットのような1つ以上のネットワークを通して、又はウェブや私的ネットワーク(例えばモバイルコミュニケーションネットワーク等)を経由したものも含めて、図示していない他のデバイスに接続されてもよい。より一般的に、コンピューティングノード又は他のコンピューティングシステムは対話して記載したタイプの機能性を実施し得るハードウェア又はソフトウェアのいかなる組合せをも備えることができる。これらは、限定されるものではないが、デスクトップまたは他のコンピュータ、データベースサーバ、ネットワーク格納装置、および他のネットワークデバイス、PDA、携帯電話、ワイヤレスフォン、ページャ、電子手帳、インターネット機器、テレビベースのシステム(例えば、セットトップボックス及び/又は個人用/ディジタルビデオレコーダを使用したもの)及び適切な相互通信能力を含む様々な他の消費者製品が含まれる。さらに、図示したDPESSMモジュール340によって提供される機能は、幾つかの実施形態において付加的モジュールに分散される。同様に、幾つかの実施形態において、DPESSMモジュール340の幾つかの機能は提供されない及び/又は、他の付加的機能は利用可能であってもよい。
また当然のことながら、様々な項目は使用中のメモリ内又は記憶装置上に格納されるとして示してあるが、これらの項目またはその一部を、メモリ管理およびデータ完全性の目的でメモリと他の記憶装置の間で転送することができる。あるいは、他の実施形態ではソフトウェアモジュール及び/又はシステムの一部または全ては別のデバイス上のメモリ内で実行することができ、コンピュータ間通信経由で図示したコンピューティングシステムと通信することができる。さらにまた、幾つかの実施形態において、システム及び/又はモジュールの幾つかまたは全てを他の様式で少なくともファームウェア及び/又はハードウェアに組み込み、又は提供できる。ファームウェア及び/又はハードウェアには、1つ以上の特定用途向け集積回路(ASIC)、規格集積回路、コントローラ(例えば、適当な命令を実行すること、及びマイクロコントローラ及び/又は埋め込まれたコントローラを含む)、フィールドプログラマブルゲートアレイ(FPGAs)、複合プログラマブルロジックデバイス(CPLDs)等が含まれる。モジュール、システム及びデータ構造の幾つか又は全てをハードディスク、メモリ、ネットワーク或いは適切なドライブに、又は適切な接続経由で読取り可能な可搬型媒体品の如きコンピュータ可読の媒体上に(例えば、ソフトウェア命令または構造化データとして)格納できる。システム、モジュール及びデータ構造を、無線ベース及び有線/ケーブルベースの媒体を含む様々なコンピュータ可読送信媒体上の生成されたデータ信号として(例えば、搬送波または他のアナログ若しくはデジタル伝播信号の一部として)送信することもでき、そのシステム、モジュール及びデータ構造は様々な形態(例えば、単一でまたは多重のアナログ信号の一部として、または複数の離散ディジタルパケット若しくはフレームとして)をとることができる。上記のコンピュータプログラム製品は、他の実施形態では他の形態をとってもよい。従って、本発明を他のコンピュータシステム構成で実践することができる。
図4A及び4Bは、分散型プログラム実行サービスシステムマネージャルーチン400の実施形態のフロー図である。ルーチンは、たとえば、図1A及び1BのDPESSMモジュール110及び180及び/又は図3のDPESSMモジュール340の実行によってそれぞれ提供され、プログラムの分散型実行を管理し、或る状況における他のタイプのアクションを実施しても良い。この例示の実施形態において、ルーチン400は多数のユーザの為にプログラムの分散型実行を実施するDPEサービスの利用の様々な態様を管理する。
例示の実施形態において、ルーチンはブロック405から始まり、ここで、分散型プログラム実行に関連した情報が受信される。ルーチンはブロック410へ続き、受信した情報のタイプを決定する。ブロック410では、例えばユーザからプログラムの実行を開始する要求が受信されたと決定される場合、ルーチンはブロック415へ続き、プログラムの実行のために使用されるコンピューティングノードの数を決定する。ブロック420では、ルーチンは、プログラムの実行と受信した入力データを実施すべき1つ以上の動作を含む多数の実行ジョブに分割する。更に詳細に他の場所で議論されるように、ブロック415及び420のアクションは、さまざまな実施形態のさまざまな様式において実施できる。例えば、プログラム実行に使用するコンピューティングノードの数は、ブロック405で受信するリクエストの一部として特定されても良く、代わりに他の要因に基づいて決定しても良い(例えば、DPEサービスから現在入手可能であるコンピューティングノードの数、プログラムの実行が切り離される多くの実行ジョブと一致するコンピューティングノードの数、リクエストが行われるためにユーザによって払われる料金の総計等)。同様に、プログラムの実行分離はさまざまな様式、要求を受信するユーザから特定する様式、及び/又はプログラム設計上の一部に少なくとも基づいて自動化した様式で実施される。ブロック420の後、ルーチンはブロック425へ続き、プログラムの分散型実行に使用するコンピューティングノードの決定量を選択し、ブロック430では選択されたノードの少なくとも幾つかの実行ジョブの実行を開始する。更に詳細に他の場所で議論されるように、幾つかの実施形態において、ユーザは様々な他のタイプ情報を特定しても良く、それが要求405の一部として受信されても良く、ブロック415〜430のアクションの一部として使っても良い。
ブロック430の後、ルーチンはブロック435において実行ジョブが完了し、オプションとして対応する出力データを提供するのを待ち、出力データは、それが他の実行ジョブに対する入力データとして使われ、及び/又はプログラムの実行のための最終結果の一部または全てとして使われる。幾つかの実施形態において、コンピューティングノードはルーチン400へ、DPEサービスの長期格納場所への格納用のこの種の出力情報を戻し供給でき、一方他の実施形態の出力結果はコンピューティングノードへ代わりに格納され、及び/又は、コンピューティングノードから隔れた1つ以上の長期格納場所のコンピューティングノードによって格納される。例示の実施形態において、ブロック430〜445が同期様式で実施されることを図示し、ルーチン400が他のアクションを実施する前に実行ジョブを完了するのを待つ。当然のことながら、他の実施形態においてルーチン400は他の様式で作動し、現在のプログラムの実行及び/又は他のユーザのための他のプログラムの実行に対して他のアクションを実行する非同期様式で作動する。
図示した実例ルーチン400において、1つ以上の実行ジョブがブロック435で完了されたと決定された後、ルーチンはブロック440へ続き実行すべき及び/又は完了すべき多くの実行ジョブの有無を判定する。もしそうであれば、ルーチンはブロック445へ続き、利用可能なコンピューティングノードでの1つ以上の残存している実行ジョブの実行をオプションとして開始し、それらの残存している実行ジョブが完了した実行ジョブの1つ以上からの出力データを待機している場合、または、代わりに、コンピューティングノードより多くの実行ジョブが存在する場合、他の実行ジョブ実施の完了からの新しい利用可能なコンピューティングノードは今用いられ、残存している実行ジョブを実行する。ブロック445の後、ルーチンはブロック435へ戻って他の実行ジョブの完了を待機する。
代わりにブロック440において、実行ジョブの全てが完了したことが決定される場合、ルーチンはブロック485に対してプログラムのための最終的な実行結果を生成して、それらの最終結果をオプションとして格納及び/又はユーザへ最終結果を提供し続ける。最終的な実行結果は、様々な実施形態の様々な様式において発生され若しくは別段に生成され、多数の実行ジョブから様々な様式で出力結果を混ぜ合わせて、使用する単一の実行ジョブ等から出力結果を選択する。
代わりにブロック410において、ブロック405で受信した情報が後の使用のためのプログラムを登録するユーザからの如き要求であったことが決定される場合、ルーチンは代わりに、ブロック450へ続き関連した管理情報と一緒に、プログラムについて情報(例えば、プログラムを提出したユーザについての及び/又はプログラムの実行についての、プログラムを多数の実行ジョブに分ける方法の如き情報)を格納する。幾つかの実施形態において、この種のプログラムはユーザによってそれらが使われる前に登録され、この種のプログラム実行要求が後に受信される時、プログラムの実行速度を増加する。さらにまた、幾つかの実施形態において、プログラムを登録するこの種の要求には、指示した時間若しくは1つ以上の指示した規準が満たされる時(例えば、DPEサービスの充分で過剰なコンピューティング容量が低優先順位でプログラム実行に利用できる時)の如きプログラムの後の実行を計画する要求を含んでも良い。
ブロック405にて受信した情報がプログラムの為のコンピューティングノードでの実行ジョブの実行に関連したステータス情報であるとブロック410において代わりに決定され、そのコンピューティングノード又は実行ジョブによって供給される(例えば、ブロック490に対してルーチン400によって前以て要請された後)場合、ルーチンは、ブロック455へ続き、その実行ジョブ及びプログラム実行の中間状態に関して、ルーチン400によって維持されるステータス情報を更新する。更に詳細に他の場所で議論されるように、状態情報は、開始され、完了され、又は進行中である特定の動作についての情報、実行によって使われた入力データについての情報、幾つか又は全ての動作の完了によって発生した出力データについての情報、進行中の実行ジョブの実行を反映する部分的な中間データについての情報等を含んでも良い。
ブロック405において受信する情報が1つ以上のプログラム用の1つ以上の実行ジョブの実行を変更することに関する指示であることがブロック410において代わりに決定される場合、即ち、その実行を始めたユーザから及び/又はブロック490に対するルーチン400による指定として以前に特定された場合、ルーチンはブロック460へ続き、実行変更に関連した情報を受信する。ブロック462において、ルーチンは次に、要求が1つ以上の現在実行中の実行ジョブの終了に関するか、または、それが代わりに前以て終了した実行ジョブの実行再開に関するかどうかを判定する。後者である場合、ルーチンはブロック475へ続き、コンピューティングノード上の以前に終了した実行ジョブの実行を、実行ジョブの先行する部分的な実行から、中間結果について前以って格納された状態情報を使用することによる再開を開始し、又は、代わりに、ブロック460において受信した情報にそのように指示があれば実行ジョブのこの種の遅れた再開を計画する。
別段に、終了する1つ以上の現行実行ジョブがある場合、ルーチンはブロック462からブロック464へ続き、最初から始まる次のこの種の実行ジョブを選択する。ブロック466において、ルーチンは次に実行ジョブのために実施されている動作の部分的な実行の現行の中間状態についての情報、及び実行ジョブのための現行データ状態についての情報を得る。そして、ブロック468においてルーチンは、永続的に後の使用のための情報を格納するであろうコンピューティングノードから離隔した1つ以上の格納容積への中間状態情報の格納を開始する。他の実施形態において、コンピューティングノードがこの種の中間状態格納アクションを実行するための管理ソフトウェアを含む場合、または、実行ジョブ自身が命令を受けてその中間状態を保存するべく構成される場合、ルーチン400は、代わりにブロック466と468においてコンピューティングノード及び/又は実行ジョブにメッセージを送り、この種の格納を開始し、続いて運転停止する。さらにまた、前以って保存された実行ジョブについての状態情報は幾つかの状況においてブロック466及び468にて、どの中間状態情報を格納すべきか決定するため等に使用しても良く、ブロック466において得られるあらゆる新情報(例えば、コンピューティングノード及び/又は実行ジョブと交信することによる)は、その実行ジョブのための状態情報を更新するために使用してもよい。ルーチンは、次いでブロック470へ続き、終了すべき多くの実行ジョブがあるかをどうか判定し、あればブロック464へ戻る。先述の通り、幾つかの実施形態において、終了には、プログラム用に現行で実行されている全ての実行ジョブを終了することやプログラムの実行を一時的に保留することも含まれる。
ブロック470において終了する実行ジョブが更には無いことが代わりに決定される場合、ブロック472のルーチンは終了した実行ジョブの中間状態に関しての状態情報を更新し、格納された中間状態からの実行ジョブの幾つか又は全ての実行の後の時間での再開をオプションとして計画する。例えば、1つ以上の実行ジョブが第1グループ又は1つ以上のコンピューティングノードから第2グループ又は1つ以上の他のコンピューティングノードへ移動している状況では、それらの実行ジョブの実行の後の時間に計画された再開は、実質的に即時的に起っても良く、また、ユーザは実行の終了及び再開を知らなくても良く、コンピューティングノード間の実行ジョブの動きも知らなくて良い。さらに、後の再開のスケジューリングには、それらの実行ジョブ用ブロック475に対する前以って議論された再開活動を促進する後の再開の時点でブロック405において受信するべき新規な要求の開始を含んでも良い。
ブロック405において受信する情報のタイプが他のタイプの要求であるとブロック410において代わりに決定される場合、ルーチンは代わりにブロック480へ続き、他の指示された要求を適切であるとして実施する。この種の他の要求は、例えば、DPEサービスに名前を登録しているユーザ、DPEサービスの会計情報又は他の情報を点検しているユーザ、それらのプログラム(例えば、プログラム用の実行ジョブの1つ以上の中間状態又は他の状態についての幾つか又は全ての情報を受信することによる)の進行中の実行を監視しているユーザ、現行または前以って要請されたプログラムの実行または他の提供される機能に関して支払を提供しているユーザ、等の如きユーザに対する管理業務を含むことができる。
ブロック450、455、460、472、475、480または485の後、ルーチンはブロック490へ続き、1つ以上の他のタスクをオプションとして実施する。この種の他のタスクは、例えば、以下のうちの1つ以上を含んでも良い:コンピューティングノードに対するステータス情報の要求を送ることによる如き様々なプログラムの実行を監視すること(例えば、周期的に、指示した規準が充たされる時、その他)、例えば計画した時間で、様々な環境で自動的に決定して、実行ジョブの実行を終了すること及び/又は前以って終了した実行ジョブの実行を再開すること、コンピューティングノード間の移動実行ジョブを適応させること、プログラムの実行のための要求されたQoSレベルを維持すること(例えば、実行ジョブの実行を相互に対する最大接近の範囲内で及び/又は実行ジョブによって使われている入力データに維持することによって相互の実行を最小接近を維持することによって単一の地理的な場所の複数コンピューティングノードの失敗の場合の可用性および信頼性、その他を強化する)、コンピューティングノード、その他の稀利用及び過利用を管理すること等。ブロック490の後、ルーチンはブロック495へ続き、終了の明確な指示を(例えば、DPEサービスのオペレータから)受信するまで続行すべきかどうかを判断する。続行が決定される場合、ルーチンはブロック405へ戻り、もしブロック499への続行でなければ終了する。
図5は、コンピューティングノードマネージャルーチン500の実例のフロー図である。ルーチンは、例えば、図1Bのモジュール179の実行、図1Aのコンピューティングノード120で実行している他の管理ソフトウェアの実行、図1Bのコンピューティングシステム182の実行、図3のコンピューティングノード360の実行等によって提供され得る。図示した実施形態において、コンピューティングノードでの管理ソフトウェアはコンピューティングノードにおける実行ジョブ実行の幾つかの態様を管理し、他方、他の実施形態において、図5に関して記載した機能の幾つか又は全ては代わりに図4A及び4Bのシステムマネージャルーチン400によって実施され、若しくは代わりにコンピューティングノードで実行されている実行ジョブによって実施されても良い。
図示した実施形態において、ルーチンはブロック505から始まり、指示はコンピューティングノード上の1つ以上の実行ジョブの実行と関連して受信される。ルーチンは、ブロック510へ続き、前記の指示が指示された実行ジョブの実行の開始であるかどうかを判断する。もしそうであれば、ルーチンは実行ジョブ(例えば、ブロック505での実行ジョブについて受信される情報に基づく、若しくは外部の発信源から別段に検索される情報に基づく)のために実施されるべき多数の動作を決定してブロック515へ続き、最初から始まり実施すべき次の動作を選択する。ブロック515〜540は、連続的に実施されるとしてこの実施形態に図示され、各動作は次の動作の開始前に同期的に個々に実行されるものの、当然のことながら、他の実施形態においては、動作は他の様式で実施され、動作の幾つか又は全ては並列に及び/又は非同期的に実施しても良い。
ブロック515の後、ルーチンはブロック520へ続き、選択された動作の実行の開始を示しているルーチン400に状態メッセージを送り、ブロック525では動作の実施が開始する。ブロック530において、ルーチンは動作の実施の完了を待って、動作実施によって生成されるどの中間結果をもオプションとして局所的に格納する。ブロック535において、ルーチンは次いで動作実施の完了を示している他の状態メッセージをルーチン400へ送り、ブロック540ではルーチンは次に実施すべき多くの動作があるかどうか判定し、有るならばブロック515に戻る。
代わりにブロック510において、ブロック505の受信した指示が実行ジョブを実行せずと判定すると、ルーチンは代わりにブロック585へ続き、1つ以上の他の指示された動作を適宜実施する。例えば、ブロック505において受信される情報はルーチン400からの状態情報のための要求であっても良く、もしそうであれば、ブロック585はその状態情報を取得してルーチン400に提供し得る。代替として、ブロック505の情報は、実行ジョブの実行を終了する指示であっても良く、ブロック585において実施される動作は対応するアクションを含んでも良い(例えば、情報が永続的に他の場所に格納された後等に、コンピューティングノードに一時的に格納した中間の状態情報を消去する)。さらに、ブロック585に関して実施されるアクションは、現行実行中のジョブのための動作の部分的実行からの中間状態のこの種の永続的な格納を始めるためのルーチン400からの要求を含んでも良く、そうであるならば、ブロック585のアクションはこの種のアクションの実施を含んでも良い(直ちに又は代わりに短時間後に、1つ以上の動作の実施を完了させる)。さらにまた、幾つかの実施形態及び状況において、異なる実行ジョブは関心情報の交換の如き様々な様式で共同しても良く、ブロック505の情報はプログラムの他の実行ジョブからのこの種の情報であっても良く、または現行の実行ジョブからの情報のための他の実行ジョブからの要求であっても良い。
ブロック585の後、又はブロック540において、更に実施されるべき動作が無いと判断されると、ルーチンはブロック590へ続き1つ以上の他のタスクをオプションとして実施し、適切であるならばプログラムの他の実行ジョブと共同して、実行ジョブを実行することの一部として運用活動等を行う。ブロック590の後、ルーチンはブロック595へ続き、終了の明確な指示を(例えば、ルーチン400から、又はDPEサービスのオペレータから)受信するまで継続すべきかどうかを判断する。続くことが決定される場合、ルーチンはブロック505へ戻り、もしブロック599への続行でなければ終了する。
幾つかの実施形態において、上述のルーチンによって提供される機能は、より多くのルーチンに分割されるか、又はより少ないルーチンに統合されるかといった二者択一的に提供されることは当然のことである。同様に、幾つかの実施形態及び状況においては、図示されたルーチンは、説明されたより多数の又は少数の機能を提供しても良く、その機能は他の図示されたルーチンが代わりにかかる機能を欠いているか又は含むときに、または提供される機能の数が変更されるときに提供しても良い。さらに、様々な動作が特定の方法において(例えば、直列または並列に)実施され、または特定の順序で実施されるように図示されても良いが、当業者であれば、他の実施形態において動作が他の順序で実行され得ることを理解するであろう。当業者であれば、上述のデータ構造は、例えば、多数のデータ構造に分割された単一のデータ構造を有することによって又は単一のデータ構造に統合された多数のデータ構造を有することによって異なる手法で構造化されても良いことを理解するであろう。同様に、幾つかの実施形態においては、図示されたデータ構造は、説明されたより多くの情報又はより少ない情報を格納しても良く、例えば、他の図示されたデータ構造は代わりにこの種の情報を欠いているか又は含むときに又は格納される情報の量またはタイプが変更されるときにより多くの情報又はより少ない情報が格納されるであろう。
実施態様項1 プログラムの分散実行を管理する分散型プログラム実行サービスのコンピューティングシステムのための方法で、以下を含む:
分散型プログラム実行サービスのコンピューティングシステムの制御の下で、複数のユーザのプログラムを実行するために形成可能な複数のコンピューティングノードを提供している分散型プログラム実行サービスであって、指示された入力データを使用して指示されたプログラムを実行する多数の要求を受信し、要求のそれぞれは複数のユーザの1人からのものであって、プログラムの指示と要求用に使われるべき入力データとを含み、そして、以下により自動的に各要求に応答する:
分散並列的な要求用に指示されたプログラムの多数の実行ジョブ実行に用いられる複数のコンピューティングノードの多数を自動的に選択することであって、多数の実行ジョブのそれぞれは、実行ジョブ用に選択される指示された入力データのサブセットを使用して実施されるべき多数の動作を有すること、
多数のコンピューティングノードのそれぞれに対して、1つの実行ジョブ用の入力データの選択されたサブセットを使用している多数の実行ジョブの1つのコンピューティングノードで実行を開始することであって、1つの実行ジョブのための多数の動作のうちの1つ以上の完了した実施によって生成される中間出力データを局所的に格納するために用いるコンピューティングノード上の一部の分散ファイルシステムを形成することを含むこと、
多数のコンピューティングノードの少なくとも幾つかでの多数の実行ジョブの実行の少なくとも幾つかが完了する前に、
少なくとも幾つかの実行ジョブのそれぞれの部分的実行状態を自動的に監視し、実行ジョブが実行しているコンピューティングノード用の分散ファイルシステム部分に局所的に格納される中間出力データを識別することを含む少なくとも幾つかの実行ジョブのそれぞれを監視し、中間出力データは実施が完了される実行ジョブの1つ以上の動作によって生成されていること、及び、
少なくとも幾つかの実行ジョブの1つ以上の最初の実行の終了を決定し、その決定に応答して、及び、1つ以上の実行ジョブのそれぞれに対して、実行ジョブが実行するコンピューティングノード用の分散ファイルシステム部分に格納される中間出力データの離隔した永続的な格納を自動的に開始すること,
第1時間後の第2時間に、1つ以上の実行ジョブのそれぞれに対して、第1時間に完了されなかった実行ジョブの動作の実施を開始することによって選択されたコンピューティングノードでの実行ジョブの再開実行を開始し、実行ジョブのために第1時間に格納された永続的に格納された中間出力データを検索することを含む再開された実行及び、選択されたコンピューティングノードでの分散ファイルシステムの一部分で検索された出力データの第2時間で格納を始めること、及び、
指示されたプログラムの多数の実行ジョブの実行が完了された後、1ユーザに対する実行からの最終結果を提供すること。
実施態様項2 少なくとも1つの要求のそれぞれに対して、要求用の指示されたプログラムは、並列実行用の相違した実行ジョブに定義された態様で分割可能に設計されている分散型プログラム実行サービスによって提供されるプログラムであり、指示されたプログラムの多数の実行ジョブは、実行ジョブの選択された数に定義された態様で指示されたプログラムを分割することにより自動的に決定し、要求への応答は、要求用の指示された入力データを選択された量のサブセットに自動的に分割し、決定された実行ジョブのそれぞれに対して分割入力データサブセットの1つを選択することを含む、実施態様項1に記載の方法。
実施態様項3 分散型プログラム実行サービスは料金ベースのサービスであり、多数の受信された要求を出力するユーザはそれぞれが指示された入力データを使用している指示されたプログラム要求実行に対して料金を払い、ユーザの一人によって支払われた料金は、1ユーザ用の指示されたプログラム実行の低優先順位に対応し、その指示されたプログラムの実行は、高い優先順位の他のプログラムを実行するために一時的に保留され、そして、1ユーザのための1つ以上の実行ジョブの最初の実行を終了する決定は、実行が決定される1つ以上の実行ジョブとして、1ユーザのための多数の実行ジョブの全ての終了を選択することによって1ユーザのための指示されたプログラムの実行を一時的に保留することに基づく、実施態様項2に記載の方法。
実施態様項4 プログラムの分散型実行を管理する為のコンピュータ実装方法で、以下を含む:
ユーザのためのプログラムの分散型実行を管理する分散型プログラム実行サービスを提供する1つ以上のコンピューティングシステムの制御の下で、分散型プログラム実行サービスはユーザのためのプログラムを実行するために形成可能な複数のコンピューティングノードを提供しており、
複数のコンピューティングノードの多数での指示されたプログラムの多数の実行ジョブの開始の後、指示されたプログラムの実行は第1ユーザのために実施されていて、多数の実行ジョブが、指示された入力データの少なくとも幾つかを使用して実施されるべき1つ以上の動作をそれぞれ有する様に指示された入力データを使用し、多数のコンピューティングノードでの多数の実行ジョブの実行状態についての情報を自動的に追尾し、追尾は、実施が完全である多数の実行ジョブの動作のサブセットから生成される中間結果及び多数のコンピューティングノードに格納される中間結果を識別することを含むこと、
少なくとも1つの多数の実行ジョブの実行を終了すると最初に決定した後、少なくとも1つの実行ジョブは、実施が完全である動作のサブセット中に在る少なくとも1つの動作を有し、サブセット中には無くて実施が完全でない少なくとも1つの他の動作を有し、追尾された情報を用いた少なくとも1つの動作を自動的に識別して、少なくとも1つの動作から生成される識別された中間結果の永続的な格納を開始すること、
第1時間以後の第2時間に、実施が完全であるサブセット中には無い少なくとも1つの他の動作の実施を完了するために、またサブセット中の少なくとも1つの動作の完了した実施を繰り返さないために少なくとも1つのコンピューティングノードでの少なくとも1つの実行ジョブの再開された実行を開始し、再開された実行は、永続的に格納された中間結果に少なくとも一部に基いた様式で実施されていること、及び、
指示されたプログラムの多数の実行ジョブの実行が完了された後、最初のユーザに対する実行からの最終結果を提供すること。
実施態様項5 少なくとも1つの実行ジョブの第1時間での実行の終了を決定することは少なくとも1つの実行ジョブの実行を、第1時間での少なくとも1つの実行ジョブの実行が行われている1つ以上のコンピューティングノードから1つ以上の他のコンピューティングノードへ移動することの決定に少なくとも部分的に基づいており、1つ以上の他のコンピューティングノードは、少なくとも1つの実行ジョブの再開された実行が第2時間に発生する少なくとも1つのコンピューティングノードであり、第2時間は、実質的に第1時間の直後に発生する、実施態様項4に記載の方法。
実施態様項6 少なくとも1つの実行ジョブの第1時間での実行の終了を決定することは指示されたプログラムの実行を一時的に保留する要求に少なくとも部分的に基づき、少なくとも1つの実行ジョブは、第1時間に実行している多数の実行ジョブの全てを含む、実施態様項4に記載の方法。
実施態様項7 少なくとも1つの実行ジョブの再開された実行が開始される少なくとも1つのコンピューティングノードは、第1時間に先立って少なくとも1つの実行ジョブを実行した多数のコンピューティングノードのうちの1つ以上とは相違している、実施態様項6に記載の方法。
実施態様項8 少なくとも1つの実行ジョブの再開された実行が開始される少なくとも1つのコンピューティングノードは、多数のコンピューティングノードの数と相違している1つ以上のコンピューティングノードの選択された数を含む、実施態様項6に記載の方法。
実施態様項9 要求は第1ユーザから受信される、実施態様項6に記載の方法。
実施態様項10 要求は第1ユーザとは相違した第2ユーザから受信される、実施態様項6に記載の方法。
実施態様項11 少なくとも1つの実行ジョブの第1時間に実行の終了を決定することは、少なくとも部分的に、少なくとも1つの実行ジョブを第1時間に実行している1つ以上のコンピューティングノードで第1時間に運用上の活動を実施することの決定に基づいている、実施態様項4に記載の方法。
実施態様項12 少なくとも1つの実行ジョブの第1時間に実行の終了を決定することは、少なくとも部分的に、少なくとも1つの実行ジョブを第1時間に実行している1つ以上のコンピューティングノードで1つ以上の他のプログラムを実行することの決定に基づき、1つ以上の他のプログラムは指示されたプログラムより高い優先順位を有する、実施態様項4に記載の方法。
実施態様項13 多数の実行ジョブの1つが実行している多数のコンピューティングノードの1つが1実行ジョブの実行中に失敗したと決定し、相違したコンピューティングノードの1実行ジョブの後の時間での実行を自動的に再開し、再開された実行は、1コンピューティングノードが失敗する前に実施が前以て完了された1つの実行ジョブの少なくとも1つの動作の実施を繰り返すことを更に含む、実施態様項4に記載の方法。
実施態様項14 多数のコンピューティングノードの多数の実行ジョブの実行は、マスターノードで実行しているソフトウェアによって管理され、多数の実行ジョブの実行状態の自動追尾は、多数の実行ジョブの実行状態についてのマスターノードでの情報を維持することを含み、少なくとも1つの実行ジョブの第1時間での実行の終了を決定することは、マスターノードの失敗に少なくとも部分的に基づく、実施態様項4に記載の方法
実施態様項15 実行が終了している少なくとも1つの実行ジョブは、第1時間に実行している多数の実行ジョブの全てを含み、少なくとも1つの実行ジョブの再開された実行の開始は、新規な第2マスターノードの実行を開始すること、および多数の実行ジョブの実行状態についてのマスターノードからの維持された情報の第2マスターノードへ再格納することを含み、少なくとも1つのコンピューティングノードの少なくとも1つの実行ジョブの再開された実行は、第2マスターノードによって管理される、実施態様項14に記載の方法。
実施態様項16 識別された中間結果の永続的な格納の開始は、識別された中間結果を永続的に格納するネットワークアクセス可能なリモート格納サービスとの対話を含む、実施態様項4に記載の方法。
実施態様項17 識別された中間結果の永続的な格納の開始は、識別された中間結果を多数のコンピューティングノードから離隔した場所へ格納することを含む、実施態様項4に記載の方法。
実施態様項18 多数のコンピューティングノードに格納された識別された中間結果は、多数のコンピューティングノードに実装される分散ファイルシステムを使用して格納され、識別された中間結果の永続的な格納の開始は、少なくとも一部の分散ファイルシステムを表すための、および、多数のコンピューティングノードから離隔した1つ以上の格納ノードへ識別された中間結果を永続的に格納するための1つ以上の論理的格納容積の創成を含む、実施態様項4に記載の方法。
実施態様項19 1つ以上のコンピューティングシステムの制御の下で更に下記を含む、実施態様項4に記載の方法:
多数の実行ジョブの1つ以上の実行が完了された後、多数のコンピューティングノードのうちの1つ以上への1つ以上の付加的実行ジョブの実行を開始することであって、付加的実行ジョブの少なくとも1つは1つ以上の実行ジョブのうちの少なくとも1つの完了された実行によって生成される出力データを含む入力データを使用すること、及び、
多数の実行ジョブの実行と、指示されたプログラムの付加的実行ジョブの実行とが完了された後、第1ユーザに提供されるべき最終結果を生成することであって、生成された最終結果は、少なくとも幾つかの多数の実行ジョブ及び付加的実行ジョブの実行完了によって生成される出力データの一部に少なくとも基づく。
実施態様項20 指示されたプログラムの多数の実行ジョブの実行は、指示された入力データを使用して指示されたプログラムを実行する第1ユーザから受信される要求に基づき、第1ユーザからの受信された要求は、指示されたプログラム実行の実施することの一部として1つ以上のコンピューティングシステムによって使われる指示されたプログラムを実行するための、付加的形成情報の1つ以上の指示を含み、付加的形成情報は多数のコンピューティングノードの数についての少なくとも1つの情報、多数のコンピューティングノードとして使用するために選択されるコンピューティングノードが充たすことになっている1つ以上の規準についての情報、指示されたプログラムの多数の実行ジョブを決定する方法についての情報、及び、多数の実行ジョブによって使用されるべき指示された入力データのサブセットを選択する方法についての情報を含み、1つ以上の他の要求は、指示された他の入力データを使用している1つ以上の指示されたプログラムを実行する1つ以上の他のユーザから受信され、そして、1つ以上のコンピューティングシステムは、更に自動的に他の要求に応答してコンピューティングノードの多数を使用している1つ以上の指示されたプログラムの分散型実行を実施する、実施態様項4に記載の方法。
実施態様項21 付加的形成情報は、多数のコンピューティングノードの数について及び/又は多数のコンピューティングノードが充たすように使用のために選択した1つ以上の規準についての情報を含み、1つ以上のコンピューティングシステムによって指示されたプログラム実行の実施が、付加的形成情報の一部に少なくとも基づいて指示されたプログラムの分散型実行を実施するために使用する多数のコンピューティングノードの自動的な選択を含む、実施態様項20に記載の方法。
実施態様項22 指示されたプログラムは、多数の入力データサブセットの各々の1つ以上のマップ関数を実施して、1つ以上のマップ関数の結果に対する1つ以上のリデュース関数を実施する様に設計されていて、前記の方法が、少なくとも1つのマップ関数及び/又は少なくとも1つのリデュース関数をそれぞれ実装する多数の実行ジョブを生成することを更に含む、実施態様項4に記載の方法。
実施態様項23 分散型プログラム実行サービスは仮想化技術を使用して、多数のコンピューティングノードは、多数の物理的コンピューティングシステムのそれぞれの為に、少なくとも1つの実行ジョブをそれぞれ実行できる物理的コンピューティングシステムによってホストされる多数の仮想マシンを含み、第1ユーザのために選択される多数のコンピューティングノードはそれぞれホストされた仮想マシンであり、多数の実行ジョブは、それぞれ仮想マシンイメージの一部として実行される、実施態様項4に記載の方法。
実施態様項24 その内容は、コンピューティングシステムが以下を含む方法を実施して、プログラムの分散型実行を管理できる様にするコンピュータ可読の媒体:
多数のコンピューティングノードの指示されたプログラムの分散型実行状態についての情報を追尾することであって、指示されたプログラムは多数のコンピューティングノードで実行している多数の実行ジョブを有し、実行ジョブは実施されるべき1つ以上の動作をそれぞれ有し、追尾された状態情報は、実施が完全である多数の実行ジョブの動作から生成される中間結果についての情報を含むこと、
少なくとも1つの実行ジョブの実行が終了した後であって、少なくとも1つの実行ジョブの動作の全ての実施が完了される前に、少なくとも1つの実行ジョブは実施が完全である少なくとも1つの動作を有し、少なくとも1つの動作以外の少なくとも1つの実行ジョブの動作の再開された実施を自動的に開始して指示されたプログラムの分散型実行を続けること、及び
指示されたプログラムの分散型実行が完了された後、分散型実行からの最終結果の指示を提供すること。
実施態様項25 コンピューティングシステムは、分散型プログラム実行サービスのユーザのためのプログラムの分散型実行を実施するために形成可能な複数のコンピューティングノードを提供する分散型プログラム実行サービスの部分であり、指示されたプログラムの分散型実行は、分散型プログラム実行サービスの第1ユーザのために開始され、第1ユーザによって指示される指示されたプログラム用の入力データを使用し、多数のコンピューティングノードは、第1ユーザによって特定されるコンピューティングノードの数を含み、多数のコンピューティングノードの少なくとも幾つかは多数のコンピューティングノードから選択され、前記の方法は、少なくとも1つの実行ジョブの実行を第1時間で終了することを決定すること、および、少なくとも1つの動作から生成される中間結果の永続的な格納を自動的に開始することを更に含み、指示されたプログラムの分散型実行の続行は、第1時間より遅れた第2時間に実施され、永続的に格納された中間結果の少なくとも幾つかを検索して使用することを含む、実施態様項24に記載のコンピュータ可読の媒体。
実施態様項26 少なくとも1つの実行ジョブの実行は、少なくとも1つの実行ジョブが実行されている多数のコンピューティングノードの1つ以上の最初の失敗に基づいて終了され、少なくとも1つの実行ジョブの少なくとも1つの動作の実施は、第1時間より早期の時間での実施の完了から生成される中間結果を永続的に格納することを含み、指示されたプログラムの分散型実行の続行は、第1時間より遅れた第2時間に実施され、永続的に格納された中間結果の少なくとも幾つかを検索して使用することを含む、実施態様項24に記載のコンピュータ可読の媒体。
実施態様項27 コンピュータ可読の媒体は、内容を格納するコンピューティングシステムのメモリの少なくとも1つであり、内容を含む生成された格納データ信号を含むデータ伝送媒体であり、前記の内容は、実行されるときにコンピューティングシステムに前記の方法を実施させる命令である、実施態様項24に記載のコンピュータ可読の媒体。
実施態様項28 プログラムの分散型実行を管理するために形成されるコンピューティングシステムで、以下を含む:
1つ以上のメモリ、及び
多数のユーザのそれぞれのため、以下による分散型実行サービスのユーザのために分散型実行を管理するために形成されるシステムマネージャコンポーネント:
ユーザから指示を受信し、多数の関連した実行ジョブの分散型実行を実施すること、
多数のコンピューティングノードで多数の実行ジョブの実行を開始すること、
多数の実行ジョブのうち少なくとも1つの実行ジョブの部分的実行が実施された後であって、しかし多数の実行ジョブの少なくとも1つの実行が完了する前に、少なくとも1つの実行ジョブの実行を終了すると決定し、少なくとも1つの実行ジョブの部分的な実行の中間状態の永続的な格納を自動的に開始すること、
後の時間で、少なくとも1つの実行ジョブの部分的な実行の中間状態の永続的な格納を検索し、検索された永続的に格納された中間状態の少なくとも一部に基づいて少なくとも1つの実行ジョブの実行を再開すること、及び、
多数の実行ジョブの実行が完了された後、実行からの最終結果をユーザへ提供すること。
実施態様項29 ユーザの一人のための少なくとも1つの実行ジョブの実行は、入力データの第1グループを使用し、完了した時に出力データの第2グループを生成し、1ユーザのための少なくとも1つの実行ジョブの部分的実行は、入力データの第1グループの少なくとも幾つかを使用し、出力データの第2グループのサブセットを生成し、1ユーザのための少なくとも1つの実行ジョブの部分的な実行の中間状態の永続的な格納は、後の使用のための出力データの第2グループの生成されたサブセットを格納することを含む、実施態様項28に記載のコンピューティングシステム。
実施態様項30 多数の関連した実行ジョブの分散型実行を実施する1ユーザからの指示は分散型実行サービスによって自動的に分割されて多数の関連した実行ジョブとなる実施されるべきプログラムの指示を含み、入力データの第1グループを含むプログラムのために使用されるべき入力データの指示を含み、1ユーザのための少なくとも1つの実行ジョブは、入力データの第1グループの一部分にそれぞれ動作する多数の動作を含み、完了時に出力データの第2グループを生成し、1ユーザの少なくとも1つの実行ジョブの部分的な実行は、完了している多数の動作のサブセットを含み、出力データの第2グループの生成されたサブセットは、完了した多数の動作のサブセットによって生成した出力データの第2グループの一部を含み、1ユーザのための少なくとも1つの実行ジョブの部分的な実行の中間状態の永続的な格納は、出力データの第2のグループのサブセットを生成するために完了する多数の動作のサブセットによって、使用されなかった入力データの第1グループの1つ以上の部分を格納することを更に含む、実施態様項29に記載のコンピューティングシステム。
実施態様項31 システムマネージャコンポーネントは、コンピューティングシステムによる実行のためのソフトウェア命令を含む、実施態様項28に記載のコンピューティングシステム。
実施態様項32 システムマネージャコンポーネントは以下による分散型実行サービスのユーザのための分散型実行を管理する手段から成る、実施態様項28に記載のコンピューティングシステム:
ユーザから指示を受信し、多数の関連した実行ジョブの分散型実行を実施すること、
多数のコンピューティングノードで多数の実行ジョブの実行を開始すること、
多数の実行ジョブのうち少なくとも1つの部分的実行が実施された後であって、しかし多数の実行ジョブの少なくとも1つの実行が完了する前に、少なくとも1つの実行ジョブの実行を終了すると決定し、少なくとも1つの実行ジョブの部分的な実行の中間状態の永続的な格納を自動的に開始すること、
後の時間で、少なくとも1つの実行ジョブの部分的な実行の中間状態の永続的な格納を検索し、検索された永続的に格納された中間状態の少なくとも一部に基づいて少なくとも1つの実行ジョブの実行を再開すること、及び、
多数の実行ジョブの実行が完了された後、実行からの最終結果をユーザへ提供すること。
本明細書では例示の目的で特定の実施形態を説明したが、前述したことから当然のことながら、本発明の精神及び範囲からも逸脱せずに様々な修正を加え得る。従って、本発明は添付請求項とその中で列挙した要素によって以外は制限されない。さらに、本発明の或る特定の態様を或る特定の請求項の形で提示するが、本発明者は任意の可能な請求項の形で本発明の様々な態様を意図している。例えば、コンピュータ可読媒体で具現化されているとして本発明の幾つかの態様のみを現時点では列挙しているが、他の態様も同様にそのように具現することができる。

Claims (16)

  1. 複数のコンピューティングノード上のプログラムの分散型実行を開始するステップであって、前記プログラムは前記複数のコンピューティングノード上で実行する複数の実行ジョブを有し、前記複数の実行ジョブの各々は、実行される1または複数の操作を有する、開始するステップと、
    前記複数の実行ジョブの1つまたは複数について完了した操作から生成された中間結果をトラッキングするステップであって、前記複数の実行ジョブは、実行が第1の時刻に終了する第1の実行ジョブを含み、前記第1の実行ジョブは、前記第1の時刻に完了する1または複数の第1の操作を有し、かつ前記第1の時刻に完了しない1または複数の他の第2の操作を有する、トラッキングするステップと、
    前記第1の時刻の後で、前記1または複数の第1の操作のいずれをもさらに実行せずに、前記第1の実行ジョブの前記1または複数の第2の操作の再開された実行を開始することにより、前記プログラムの分散型実行を継続するステップであって、前記再開された実行の開始は、前記中間結果の少なくとも一部を用いることを含む、継続するステップと、
    前記プログラムの分散型実行が完了した後で、前記分散型実行の最終結果の表示を提供するステップと
    を含むことを特徴とするコンピュータにより実装される方法。
  2. 前記複数のコンピューティングノードは分散型プログラム実行サービスにより提供され、かつ前記分散型プログラム実行サービスのユーザに対してプログラムの分散型実行を実行するように構成され、前記プログラムの分散型実行は、前記分散型プログラム実行サービスの第1のユーザのために開始され、かつ前記第1のユーザにより指定されたプログラムに対する入力データを用いることを特徴とする請求項1に記載の方法。
  3. 前記中間結果のトラッキングは、前記少なくとも一部の中間結果を永続的に格納するステップを含み、前記第1の実行ジョブの実行は、前記実行が終了する前に前記第1の実行ジョブについて用いられる前記複数のコンピューティングノードの1または複数の、前記第1の時刻における失敗に基づいて終了し、前記プログラムの分散型実行の継続は、前記1または複数の第2の動作の再開された実行の間に用いるための前記格納された少なくとも一部の中間結果を取り出す手段を含むことを特徴とする請求項1に記載の方法。
  4. 前記第1の実行ジョブの実行を終了することを前記第1の時刻に決定するステップと、前記1または複数の第1の操作の完了から生成された中間結果の永続的な格納を開始するステップとをさらに含み、前記少なくとも一部の中間結果は、前記1または複数の第1の操作の完了から生成された中間結果を含むことを特徴とする請求項1に記載の方法。
  5. 前記第1の実行ジョブの実行を終了して、前記第1の時刻より前に前記第1の実行ジョブを実行する1または複数のコンピューティングノードから、前記再開された実行が発生する1または複数の他のコンピューティングノードへの前記第1の実行ジョブ実効の移動を可能にするステップをさらに含むことを特徴とする請求項1に記載の方法。
  6. 前記プログラムの実行を一時停止する要求に少なくとも部分的に基づいて前記第1の実行ジョブの実行を終了することを決定するステップと、前記要求に応答して、実行が完了していない前記複数の実行ジョブの全ての実行を終了するステップとをさらに含むことを特徴とする請求項1に記載の方法。
  7. 前記再開された実行が発生する1または複数の第1のコンピューティングノードは、前記第1の時刻より前に前記第1の実行ジョブの実行が発生した1または複数の第2のコンピューティングノードとは別個であることを特徴とする請求項6に記載の方法。
  8. 前記継続した分散型実行が発生するコンピューティングノードの数は、前記複数のコンピューティングノードの数とは別個であることを特徴とする請求項6に記載の方法。
  9. 前記複数のコンピューティングノードは、分散型実行サービスにより提供され、前記プログラムの分散型実行は、前記分散型実行サービスの第1のユーザのために実行され、前記要求は、前記第1のユーザとは別個の第2のユーザから受信されることを特徴とする請求項6に記載の方法。
  10. 前記第1の実行ジョブを前記第1の時刻より前に実行する1または複数のコンピューティングノード上の管理動作を実行することの決定に少なくとも部分的に基づいて前記第1の実行ジョブの実行を終了するよう決定するステップをさらに含むことを特徴とする請求項1に記載の方法。
  11. 前記第1の実行ジョブを前記第1の時刻より前に実行している1または複数のコンピューティングノード上の1または複数の他のプログラムを実行することの決定に少なくとも部分的に基づいて、前記第1の実行ジョブの実行を終了するステップをさらに含み、前記終了することの決定は、前記プログラムより優先順位が高い前記1または複数の他のプログラムに基づくことを特徴とする請求項1に記載の方法。
  12. 前記複数のコンピューティングノード上のプログラムの分散型実行は、マスタノード上で実行するソフトウェアにより管理され、前記中間結果のトラッキングは、前記分散型実行の状態について前記マスタノードに情報を保持することを含み、前記第1の実行ジョブの実行の終了は、前記マスタノードの失敗に少なくとも部分的に基づき、前記第1の実行ジョブの再開された実行の開始は、第2のマスタノードの実行を開始し、前記第2のマスタノード上で、前記マスタノードの前記保持された情報を復元することを含むことを特徴とする請求項1に記載の方法。
  13. 前記プログラムは、複数の入力データサブセットの各々で1または複数のマップ関数を実行し、前記1または複数のマップ関数の結果に関する1または複数のリデュース関数を実行するように設計され、前記方法は、各々が前記マップ関数および前記リデュース関数を含むグループからの少なくとも1つの関数を実装する前記複数の実行ジョブを生成するステップをさらに含むことを特徴とする請求項1に記載の方法。
  14. 1または複数のプロセッサと、
    複数のコンピュータノード上のプログラムの分散型実行を開始する手段であって、前記プログラムは前記複数のコンピューティングノード上で実行する複数の実行ジョブを有し、前記複数の実行ジョブの各々は、実行される1または複数の操作を有する、開始する手段と、
    前記複数の実行ジョブの1つまたは複数について完了した操作から生成された中間結果をトラッキングする手段であって、前記複数の実行ジョブは、実行が第1の時刻に終了する第1の実行ジョブを含み、前記第1の実行ジョブは、前記第1の時刻に完了する1または複数の第1の操作を有し、かつ前記第1の時刻に完了しない1または複数の他の第2の操作を有する、トラッキングする手段と、
    前記第1の時刻の後で、前記1または複数の第1の操作のいずれをもさらに実行せずに、前記第1の実行ジョブの前記1または複数の第2の操作の再開された実行を開始することにより、前記プログラムの分散型実行を継続する手段であって、前記再開された実行の開始は、前記中間結果の少なくとも一部を用いることを含む、継続する手段と、
    前記プログラムの分散型実行が完了した後で、前記分散型実行の最終結果の表示を提供するステップと
    を含むことを特徴とするコンピューティングシステム。
  15. 前記複数のコンピューティングノードは分散型プログラム実行サービスにより提供され、かつ前記分散型プログラム実行サービスのユーザに対してプログラムの分散型実行を実行するように構成され、前記プログラムの分散型実行は、前記分散型プログラム実行サービスの第1のユーザのために開始され、かつ前記第1のユーザにより指定されたプログラムに対する入力データを用いることを特徴とする請求項14に記載のコンピューティングシステム。
  16. 前記中間結果のトラッキングは、前記少なくとも一部の中間結果を永続的に格納することを含み、前記第1の実行ジョブの実行は、前記実行が終了する前に前記第1の実行ジョブについて用いられる前記複数のコンピューティングノードの1または複数の、前記第1の時刻における失敗に基づいて終了し、前記プログラムの分散型実行の継続は、前記1または複数の第2の動作の再開された実行の間に用いるための前記格納された少なくとも一部の中間結果を取り出すことを含むことを特徴とする請求項14に記載のコンピューティングシステム。
JP2013178559A 2008-12-12 2013-08-29 プログラム実行状態の保存 Active JP5843823B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/334,004 2008-12-12
US12/334,004 US8370493B2 (en) 2008-12-12 2008-12-12 Saving program execution state

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2011540808A Division JP5357266B2 (ja) 2008-12-12 2009-12-07 プログラム実行状態の保存

Publications (2)

Publication Number Publication Date
JP2013257903A true JP2013257903A (ja) 2013-12-26
JP5843823B2 JP5843823B2 (ja) 2016-01-13

Family

ID=42242144

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2011540808A Active JP5357266B2 (ja) 2008-12-12 2009-12-07 プログラム実行状態の保存
JP2013178559A Active JP5843823B2 (ja) 2008-12-12 2013-08-29 プログラム実行状態の保存

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2011540808A Active JP5357266B2 (ja) 2008-12-12 2009-12-07 プログラム実行状態の保存

Country Status (5)

Country Link
US (4) US8370493B2 (ja)
EP (1) EP2359256A4 (ja)
JP (2) JP5357266B2 (ja)
CN (1) CN102246152B (ja)
WO (1) WO2010068592A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018049395A (ja) * 2016-09-20 2018-03-29 株式会社東芝 ジョブ実行制御装置およびプログラム

Families Citing this family (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2008355092A1 (en) 2008-04-21 2009-10-29 Adaptive Computing Enterprises, Inc. System and method for managing energy consumption in a compute environment
US9405348B2 (en) * 2008-04-21 2016-08-02 Adaptive Computing Enterprises, Inc System and method for managing energy consumption in a compute environment
US20140298349A1 (en) * 2008-04-21 2014-10-02 Adaptive Computing Enterprises, Inc. System and Method for Managing Energy Consumption in a Compute Environment
US8296419B1 (en) 2009-03-31 2012-10-23 Amazon Technologies, Inc. Dynamically modifying a cluster of computing nodes used for distributed execution of a program
WO2011013120A1 (en) * 2009-07-30 2011-02-03 Rascalim Software Security Ltd. System and method for limiting execution of software to authorized users
US8769543B2 (en) * 2010-09-27 2014-07-01 Throughputer, Inc. System and method for maximizing data processing throughput via application load adaptive scheduling and context switching
US20110320233A1 (en) 2010-05-30 2011-12-29 Sonian, Inc. Method and system for arbitraging computing resources in a cloud computing environment
US8260840B1 (en) * 2010-06-28 2012-09-04 Amazon Technologies, Inc. Dynamic scaling of a cluster of computing nodes used for distributed execution of a program
US8719415B1 (en) 2010-06-28 2014-05-06 Amazon Technologies, Inc. Use of temporarily available computing nodes for dynamic scaling of a cluster
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
US8443367B1 (en) * 2010-07-16 2013-05-14 Vmware, Inc. Federated management in a distributed environment
US8812677B2 (en) * 2010-12-21 2014-08-19 Hitachi, Ltd. Data processing method and apparatus for remote storage system
US9223611B2 (en) 2010-12-28 2015-12-29 Microsoft Technology Licensing, Llc Storing and resuming application runtime state
US20130117168A1 (en) 2011-11-04 2013-05-09 Mark Henrik Sandstrom Maximizing Throughput of Multi-user Parallel Data Processing Systems
US8789065B2 (en) 2012-06-08 2014-07-22 Throughputer, Inc. System and method for input data load adaptive parallel processing
US8843932B2 (en) * 2011-01-12 2014-09-23 Wisconsin Alumni Research Foundation System and method for controlling excessive parallelism in multiprocessor systems
US9244737B2 (en) * 2011-02-04 2016-01-26 Hitachi, Ltd. Data transfer control method of parallel distributed processing system, parallel distributed processing system, and recording medium
US9778915B2 (en) 2011-02-28 2017-10-03 Microsoft Technology Licensing, Llc Distributed application definition
US9990184B2 (en) 2011-03-25 2018-06-05 Microsoft Technology Licensing, Llc Distributed component model
WO2012134453A2 (en) * 2011-03-29 2012-10-04 Empire Technology Development Llc "go home" feature for roaming applications
US9465589B2 (en) 2011-04-05 2016-10-11 Microsoft Technology Licensing, Llc Stateful component authoring and execution
US20120284360A1 (en) * 2011-04-11 2012-11-08 Ebay Inc. Job planner and execution engine for automated, self-service data movement
US8612580B2 (en) * 2011-05-31 2013-12-17 Microsoft Corporation Distributed computing framework
US8726081B2 (en) * 2011-06-14 2014-05-13 International Business Machines Corporation Event based model for managing application health and failure recovery for asynchronous processing systems
US9148846B2 (en) * 2011-06-30 2015-09-29 Motorola Solutions, Inc. Methods for intelligent network selection
US9448847B2 (en) 2011-07-15 2016-09-20 Throughputer, Inc. Concurrent program execution optimization
RU2494453C2 (ru) * 2011-11-24 2013-09-27 Закрытое акционерное общество "Лаборатория Касперского" Способ распределенного выполнения задач компьютерной безопасности
CN102609451B (zh) * 2012-01-11 2014-12-17 华中科技大学 面向流式数据处理的sql查询计划生成方法
US8954972B2 (en) * 2012-06-26 2015-02-10 Wal-Mart Stores, Inc. Systems and methods for event stream processing
US9122873B2 (en) 2012-09-14 2015-09-01 The Research Foundation For The State University Of New York Continuous run-time validation of program execution: a practical approach
US9069782B2 (en) 2012-10-01 2015-06-30 The Research Foundation For The State University Of New York System and method for security and privacy aware virtual machine checkpointing
US9373074B2 (en) * 2012-10-09 2016-06-21 Qualcomm Incorporated Method and apparatus for time management and scheduling for sychronous processing on a cluster of processing nodes
US9002982B2 (en) 2013-03-11 2015-04-07 Amazon Technologies, Inc. Automated desktop placement
US10142406B2 (en) 2013-03-11 2018-11-27 Amazon Technologies, Inc. Automated data center selection
US9148350B1 (en) * 2013-03-11 2015-09-29 Amazon Technologies, Inc. Automated data synchronization
US10313345B2 (en) * 2013-03-11 2019-06-04 Amazon Technologies, Inc. Application marketplace for virtual desktops
US9477523B1 (en) * 2013-06-25 2016-10-25 Amazon Technologies, Inc. Scheduling data access jobs based on job priority and predicted execution time using historical execution data
US10623243B2 (en) 2013-06-26 2020-04-14 Amazon Technologies, Inc. Management of computing sessions
US10686646B1 (en) 2013-06-26 2020-06-16 Amazon Technologies, Inc. Management of computing sessions
CN103414577B (zh) * 2013-08-19 2017-04-26 北京高森明晨信息科技有限公司 用于Hadoop平台的计费系统及方法
US11132173B1 (en) * 2014-02-20 2021-09-28 Amazon Technologies, Inc. Network scheduling of stimulus-based actions
JP2015158773A (ja) * 2014-02-24 2015-09-03 富士通株式会社 仮想装置の動作検証装置,仮想装置の動作検証システム及びプログラム
KR20150106233A (ko) * 2014-03-11 2015-09-21 삼성전자주식회사 복수의 전자 장치에서 기능을 수행하는 방법 및 전자 장치
CN103995745B (zh) * 2014-05-22 2017-09-05 华为技术有限公司 一种ip硬盘任务执行方法以及ip硬盘
US9641580B2 (en) * 2014-07-01 2017-05-02 Microsoft Technology Licensing, Llc Distributed stream processing in the cloud
US9678773B1 (en) * 2014-09-30 2017-06-13 Amazon Technologies, Inc. Low latency computational capacity provisioning
US10489203B2 (en) * 2015-04-03 2019-11-26 Oracle International Corporation System and method for using an in-memory data grid to improve performance of a process defined by a process execution language in a SOA middleware environment
CN106202092B (zh) 2015-05-04 2020-03-06 阿里巴巴集团控股有限公司 数据处理的方法及系统
US20160344671A1 (en) * 2015-05-19 2016-11-24 Amazon Technologies, Inc. Executing commands on virtual machine instances in a distributed computing environment
US10397232B2 (en) * 2015-06-25 2019-08-27 Amazon Technologies, Inc. Controlling user access to command execution
WO2018004367A1 (en) * 2016-06-27 2018-01-04 Emc Corporation Techniques for accurately apprising a user of progress in booting a virtual appliance
CN113535382A (zh) * 2016-12-23 2021-10-22 创新先进技术有限公司 资源处理方法及装置
US10521312B1 (en) * 2017-03-17 2019-12-31 Amazon Technologies, Inc. Downtime management during database instance patching
US10498817B1 (en) * 2017-03-21 2019-12-03 Amazon Technologies, Inc. Performance tuning in distributed computing systems
JP6874706B2 (ja) * 2018-02-07 2021-05-19 オムロン株式会社 アプリケーションプログラムを生成する方法、装置、プログラム
US11099917B2 (en) * 2018-09-27 2021-08-24 Amazon Technologies, Inc. Efficient state maintenance for execution environments in an on-demand code execution system
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
TWI674780B (zh) * 2018-11-23 2019-10-11 財團法人工業技術研究院 網路服務系統及網路服務方法
US11099891B2 (en) 2019-04-22 2021-08-24 International Business Machines Corporation Scheduling requests based on resource information
US11347564B2 (en) * 2019-04-24 2022-05-31 Red Hat, Inc. Synchronizing batch job status across nodes on a clustered system
US20220382655A1 (en) * 2021-05-28 2022-12-01 Paypal, Inc. Dynamic node insertion of secondary services for high-availability during main decision failure at runtime

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008293358A (ja) * 2007-05-25 2008-12-04 Fujitsu Ltd 分散処理プログラム、分散処理方法、分散処理装置、および分散処理システム

Family Cites Families (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0616279B2 (ja) * 1986-09-30 1994-03-02 工業技術院長 仮想情報処理システム
JPH08123768A (ja) * 1994-10-21 1996-05-17 Mitsubishi Electric Corp 分散システム管理方式及び分散システム管理方法
US6832380B1 (en) * 1996-06-28 2004-12-14 Tarantella, Inc. Client-server application partitioning with metering technique for distributed computing
US6128642A (en) * 1997-07-22 2000-10-03 At&T Corporation Load balancing based on queue length, in a network of processor stations
US6802053B1 (en) * 1997-08-18 2004-10-05 National Instruments Corporation Graphical programming system with distributed block diagram execution and front panel display
US6490693B1 (en) * 1999-08-31 2002-12-03 International Business Machines Corporation Dynamic reconfiguration of a quorum group of processors in a distributed computing system
JP2001306341A (ja) * 2000-04-26 2001-11-02 Mitsubishi Electric Corp コンピュータシステムおよびコンピュータ読み取り可能な記録媒体
US6799208B1 (en) * 2000-05-02 2004-09-28 Microsoft Corporation Resource manager architecture
US6934755B1 (en) * 2000-06-02 2005-08-23 Sun Microsystems, Inc. System and method for migrating processes on a network
CN1368809A (zh) * 2001-02-02 2002-09-11 中国航天科技集团公司第七○七研究所 一种网络工作流管理方法
US20030149735A1 (en) * 2001-06-22 2003-08-07 Sun Microsystems, Inc. Network and method for coordinating high availability system services
US7305492B2 (en) 2001-07-06 2007-12-04 Juniper Networks, Inc. Content service aggregation system
US7627860B2 (en) * 2001-08-14 2009-12-01 National Instruments Corporation Graphically deployment of a program with automatic conversion of program type
US7043393B2 (en) 2001-08-15 2006-05-09 National Instruments Corporation System and method for online specification of measurement hardware
GB0213073D0 (en) * 2002-06-07 2002-07-17 Hewlett Packard Co Method of maintaining availability of requested network resources
US7559060B2 (en) * 2003-06-10 2009-07-07 National Instruments Corporation Time-bounded program execution
JP2008502953A (ja) * 2003-11-17 2008-01-31 ヴァージニア テック インテレクチュアル プロパティーズ,インコーポレイテッド 分散システムにおけるトランスペアレントなチェックポインティング及びプロセス移行
US7415704B2 (en) * 2004-05-20 2008-08-19 Sap Ag Sharing objects in runtime systems
US7953843B2 (en) * 2004-06-14 2011-05-31 Hewlett-Packard Development Company, L.P. System and method for evaluating a heterogeneous cluster for supporting expected workload in compliance with at least one service parameter
US7756919B1 (en) * 2004-06-18 2010-07-13 Google Inc. Large-scale data processing in a distributed and parallel processing enviornment
US7155558B1 (en) * 2004-07-21 2006-12-26 Vmware, Inc. Providing access to a raw data storage unit in a computer system
EP1913482A4 (en) * 2005-07-14 2010-08-25 Emc Corp MIANTIEN OF A FIDELITY TO WRITING ORDER IN A MULTI-PRINTER SYSTEM
US7681075B2 (en) * 2006-05-02 2010-03-16 Open Invention Network Llc Method and system for providing high availability to distributed computer applications
US7873422B2 (en) * 2005-09-02 2011-01-18 Sap Ag Event-based coordination of process-oriented composite applications
US8122427B2 (en) 2006-01-04 2012-02-21 Microsoft Corporation Decentralized system services
US8555288B2 (en) * 2006-05-17 2013-10-08 Teradata Us, Inc. Managing database utilities to improve throughput and concurrency
US20070277154A1 (en) * 2006-05-23 2007-11-29 Microsoft Corporation Testing distributed components
US8365182B2 (en) * 2006-10-02 2013-01-29 International Business Machines Corporation Method and system for provisioning of resources
US8086710B2 (en) * 2006-10-30 2011-12-27 Quest Software, Inc. Identity migration apparatus and method
JP4308241B2 (ja) * 2006-11-10 2009-08-05 インターナショナル・ビジネス・マシーンズ・コーポレーション ジョブ実行方法、ジョブ実行システム及びジョブ実行プログラム
JP2008123357A (ja) * 2006-11-14 2008-05-29 Honda Motor Co Ltd 並列計算機システム、並列計算方法および並列計算機用プログラム
US7523123B2 (en) 2006-11-16 2009-04-21 Yahoo! Inc. Map-reduce with merge to process multiple relational datasets
CN100435106C (zh) * 2006-11-21 2008-11-19 西安交通大学 应用服务器的分级再生方法
US7694188B2 (en) * 2007-02-05 2010-04-06 Microsoft Corporation Disk failure prevention and error correction
US7823023B2 (en) * 2007-02-26 2010-10-26 Red Hat, Inc. Test framework for testing an application
US20080250227A1 (en) 2007-04-04 2008-10-09 Linderman Michael D General Purpose Multiprocessor Programming Apparatus And Method
US7769864B2 (en) * 2007-08-02 2010-08-03 Sap Ag Adaptation of clusters to virtualization technologies
US8041773B2 (en) * 2007-09-24 2011-10-18 The Research Foundation Of State University Of New York Automatic clustering for self-organizing grids
US8086726B2 (en) * 2007-12-21 2011-12-27 Sap Ag XI monitoring in high load scenarios (monitoring cockpit)
US7994790B2 (en) * 2008-03-19 2011-08-09 Baker Hughes Incorporated Electromagnetic and magnetostatic shield to perform measurements ahead of the drill bit
US20090254621A1 (en) * 2008-04-08 2009-10-08 Venali, Inc. Peer-to-peer messaging of facsimile messages
US8392312B2 (en) * 2008-09-24 2013-03-05 Netapp, Inc. Adaptive scheduling of storage operations based on utilization of a multiple client and server resources in a distributed network storage system
US8627123B2 (en) * 2010-03-25 2014-01-07 Microsoft Corporation Managing power provisioning in distributed computing

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008293358A (ja) * 2007-05-25 2008-12-04 Fujitsu Ltd 分散処理プログラム、分散処理方法、分散処理装置、および分散処理システム

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
CSNG200600930019; 中島佳宏ほか: '大規模P2Pグリッドでの大容量コンピューティングのためのスケーラブルなプログラミング環境の検討' 情報処理学会研究報告 Vol.2006 No.87, 20060801, 115-120頁, 社団法人情報処理学会 *
JPN6013005622; 中島佳宏ほか: '大規模P2Pグリッドでの大容量コンピューティングのためのスケーラブルなプログラミング環境の検討' 情報処理学会研究報告 Vol.2006 No.87, 20060801, 115-120頁, 社団法人情報処理学会 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018049395A (ja) * 2016-09-20 2018-03-29 株式会社東芝 ジョブ実行制御装置およびプログラム

Also Published As

Publication number Publication date
CN102246152A (zh) 2011-11-16
US20150169412A1 (en) 2015-06-18
JP2012511784A (ja) 2012-05-24
EP2359256A4 (en) 2012-11-07
JP5357266B2 (ja) 2013-12-04
US20180129570A1 (en) 2018-05-10
EP2359256A1 (en) 2011-08-24
US11263084B2 (en) 2022-03-01
US20100153955A1 (en) 2010-06-17
US20130191847A1 (en) 2013-07-25
US8935404B2 (en) 2015-01-13
JP5843823B2 (ja) 2016-01-13
WO2010068592A1 (en) 2010-06-17
CN102246152B (zh) 2015-05-27
US8370493B2 (en) 2013-02-05

Similar Documents

Publication Publication Date Title
JP5843823B2 (ja) プログラム実行状態の保存
US11425194B1 (en) Dynamically modifying a cluster of computing nodes used for distributed execution of a program
US9276987B1 (en) Identifying nodes already storing indicated input data to perform distributed execution of an indicated program in a node cluster
US8321558B1 (en) Dynamically monitoring and modifying distributed execution of programs
US9826031B2 (en) Managing distributed execution of programs
US9280390B2 (en) Dynamic scaling of a cluster of computing nodes
US8260840B1 (en) Dynamic scaling of a cluster of computing nodes used for distributed execution of a program
US20200387431A1 (en) Providing executing programs with access to stored block data of others
US10824343B2 (en) Managing access of multiple executing programs to non-local block data storage
US8015343B2 (en) Providing executing programs with reliable access to non-local block data storage
US7831682B2 (en) Providing a reliable backing store for block data storage
US10616034B1 (en) Time-based computing instances

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130930

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150113

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20150413

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20150513

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20150615

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150713

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20151117

R150 Certificate of patent or registration of utility model

Ref document number: 5843823

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250