IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

<>
  • 特表-タスクフェイルオーバー 図1
  • 特表-タスクフェイルオーバー 図2
  • 特表-タスクフェイルオーバー 図3
  • 特表-タスクフェイルオーバー 図4
  • 特表-タスクフェイルオーバー 図5
  • 特表-タスクフェイルオーバー 図6
  • 特表-タスクフェイルオーバー 図7
  • 特表-タスクフェイルオーバー 図8
  • 特表-タスクフェイルオーバー 図9
  • 特表-タスクフェイルオーバー 図10
  • 特表-タスクフェイルオーバー 図11
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-10-31
(54)【発明の名称】タスクフェイルオーバー
(51)【国際特許分類】
   G06F 9/50 20060101AFI20241024BHJP
【FI】
G06F9/50 120Z
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024522054
(86)(22)【出願日】2022-10-28
(85)【翻訳文提出日】2024-04-11
(86)【国際出願番号】 CN2022128265
(87)【国際公開番号】W WO2023072252
(87)【国際公開日】2023-05-04
(31)【優先権主張番号】17/452,787
(32)【優先日】2021-10-29
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【弁理士】
【氏名又は名称】片岡 忠彦
(74)【復代理人】
【識別番号】100104880
【弁理士】
【氏名又は名称】古部 次郎
(74)【復代理人】
【識別番号】100118108
【弁理士】
【氏名又は名称】久保 洋之
(72)【発明者】
【氏名】スイ、ガンハン
(72)【発明者】
【氏名】ゲ、ウェイ
(72)【発明者】
【氏名】リウ、ランチェ
(72)【発明者】
【氏名】チャン、リーピン
(72)【発明者】
【氏名】チャオ、エルタオ
(57)【要約】
本発明は、複数の回収可能ノードを含む不安定な環境におけるタスクフェイルオーバーのための方法、システム、およびコンピュータプログラム製品に関する。この方法によれば、複数の回収可能ノードのうちのいずれかのノードが回収されるかどうかが監視される。複数の回収可能ノードのうちのいずれかのノード上のタスクが回復可能であるかどうかが判定される。タスクが回復可能であることに応じて、回復可能タスクのデータが記憶される。ノードが回収され、かつ回収されたノード上のタスクが回復可能であることに応じて、回収されたノードの少なくとも1つの関連ノードの少なくとも1つの関連タスクが待機するように通知される。
【特許請求の範囲】
【請求項1】
複数の回収可能ノードを含む不安定な環境におけるタスクフェイルオーバーのためのコンピュータ実装方法であって、
1つ以上の処理ユニットによって、前記複数の回収可能ノードのうちのいずれかのノードが回収されるかどうかを監視することと、
1つ以上の処理ユニットによって、前記複数の回収可能ノードのうちのいずれかのノード上のタスクが回復可能であるかどうかを判定することと、
前記タスクが回復可能であることに応じて、1つ以上の処理ユニットによって、当該回復可能タスクのデータを記憶することと、
ノードが回収され、かつ当該回収されたノード上の前記タスクが回復可能であることに応じて、1つ以上の処理ユニットによって、当該回収されたノードの少なくとも1つの関連ノードの少なくとも1つの関連タスクに対して待機するように通知することと、
を含む、方法。
【請求項2】
タスクが回復可能であるかどうかを判定することは、前記回収されるノード上の当該タスクに関連する、タスク実行時間、タスク実行割合、タスク実行結果サイズ、子ノード数、および再実行回数のうちの少なくとも1つの要因に基づく、請求項1に記載の方法。
【請求項3】
前記回収されたノードの前記関連ノードは、当該回収されたノードの親ノード、および当該回収されたノードの子ノードのうちの少なくとも一方のノードから選択される、請求項1に記載の方法。
【請求項4】
前記回復可能タスクのデータを記憶することは、当該回復可能タスクの当該データを安定ノードに記憶することをさらに含み、前記方法は、
1つ以上の処理ユニットによって、前記回収されたノードの前記少なくとも1つの関連ノードを前記安定ノードに接続することをさらに含む、請求項1に記載の方法。
【請求項5】
前記回復可能タスクのデータを記憶することは、当該回復可能タスクの当該データを回収可能ノードに記憶することをさらに含み、前記方法は、
1つ以上の処理ユニットによって、前記回収されたノードの前記少なくとも1つの関連ノードを前記回収可能ノードに接続することをさらに含む、請求項1に記載の方法。
【請求項6】
前記回収されたノードが戻されたことに応じて、
1つ以上の処理ユニットによって、前記回復可能タスクの前記記憶されたデータを前記回収されたノードに再ロードすることと、
1つ以上の処理ユニットによって、前記回収されたノードを前記少なくとも1つの関連ノードに再接続することと、
1つ以上の処理ユニットによって、前記回収されたノードおよび前記少なくとも1つの関連ノード上でのタスク実行を継続することと、
をさらに含む、請求項1に記載の方法。
【請求項7】
前記回収されたノードの少なくとも1つの関連ノードの少なくとも1つの関連タスクに対して待機するように通知することは、当該回収されたノードの親ノードおよび長期実行子ノードのうちの少なくとも一方の少なくとも1つの関連タスクに対して待機するように通知することをさらに含み、前記方法は、
1つ以上の処理ユニットによって、前記回収されたノードの短期実行子ノード上での、前記回復可能タスクに関連する対応タスク実行を終了することと、
1つ以上の処理ユニットによって、前記短期実行子ノードのバックアップノードを決定することと、をさらに含み、
前記回収されたノードを前記少なくとも1つの関連ノードに再接続することは、当該回収されたノードを、前記親ノード、前記長期実行子ノード、および前記短期実行子ノードの前記バックアップノードのうちの少なくとも1つのノードに再接続することをさらに含む、請求項6に記載の方法。
【請求項8】
前記少なくとも1つのノードが回収され、かつ前記タスクが回復不能であることに応じて、1つ以上の処理ユニットによって、当該回収されたノード上での当該回復不能タスクのタスク実行と、当該回収されたノードの子ノード上での当該回復不能タスクに関連するタスク実行とを終了することをさらに含む、請求項1に記載の方法。
【請求項9】
複数の回収可能ノードを含む不安定な環境におけるタスクフェイルオーバーのためのコンピュータプログラム製品であって、
プログラム命令を実装したコンピュータ可読記憶媒体を含み、当該プログラム命令はコンピュータによって実行可能であり、当該コンピュータに、
前記複数の回収可能ノードのうちのいずれかのノードが回収されるかどうかを監視することと、
前記複数の回収可能ノードのうちのいずれかのノード上のタスクが回復可能であるかどうかを判定することと、
前記タスクが回復可能であることに応じて、当該回復可能タスクのデータを記憶することと、
ノードが回収され、かつ当該回収されたノード上の前記タスクが回復可能であることに応じて、当該回収されたノードの少なくとも1つの関連ノードの少なくとも1つの関連タスクに対して待機するように通知することと、
を含む方法を実行させる、コンピュータプログラム製品。
【請求項10】
タスクが回復可能であるかどうかを判定することは、前記回収されたノード上の当該タスクに関連する、タスク実行時間、タスク実行割合、タスク実行結果サイズ、子ノード数、および再実行回数のうちの少なくとも1つの要因に基づく、請求項9に記載のコンピュータプログラム製品。
【請求項11】
前記回収されたノードの前記関連ノードは、当該回収されたノードの親ノード、および当該回収されたノードの子ノードのうちの少なくとも一方のノードから選択される、請求項9に記載のコンピュータプログラム製品。
【請求項12】
前記回復可能タスクのデータを記憶することは、当該回復可能タスクの当該データを安定ノードに記憶することをさらに含み、前記方法は、
前記回収されたノードの前記少なくとも1つの関連ノードを前記安定ノードに接続することをさらに含む、請求項9に記載のコンピュータプログラム製品。
【請求項13】
前記回復可能タスクのデータを記憶することは、当該回復可能タスクの当該データを回収可能ノードに記憶することをさらに含み、前記方法は、
前記回収されたノードの前記少なくとも1つの関連ノードを前記回収可能ノードに接続することをさらに含む、請求項9に記載のコンピュータプログラム製品。
【請求項14】
前記方法は、
前記回収されたノードが戻されたことに応じて、
前記回復可能タスクの前記記憶されたデータを前記回収されたノードに再ロードすることと、
前記回収されたノードを前記少なくとも1つの関連ノードに再接続することと、
前記回収されたノードおよび前記少なくとも1つの関連ノード上でのタスク実行を継続することと、
をさらに含む、請求項9に記載のコンピュータプログラム製品。
【請求項15】
複数の回収可能ノードを含む不安定な環境におけるタスクフェイルオーバーのためのコンピュータシステムであって、
1つ以上のプロセッサと、
前記プロセッサのうちの少なくとも1つに結合されたメモリと、
前記メモリに記憶されたコンピュータプログラム命令セットと、を備え、当該コンピュータプログラム命令セットは、前記プロセッサのうちの少なくとも1つによって、
前記複数の回収可能ノードのうちのいずれかのノードが回収されるかどうかを監視することと、
前記複数の回収可能ノードのうちのいずれかのノード上のタスクが回復可能であるかどうかを判定することと、
前記回収されたノード上の前記タスクが回復可能であることに応じて、当該回復可能タスクのデータを記憶することと、
ノードが回収され、かつ当該回収されたノード上の前記タスクが回復可能であることに応じて、当該回収されたノードの少なくとも1つの関連ノードの少なくとも1つの関連タスクに対して待機するように通知することと、
を含む方法を実行するために実行される、コンピュータシステム。
【請求項16】
タスクが回復可能であるかどうかを判定することは、前記回収されたノード上の当該タスクに関連する、タスク実行時間、タスク実行割合、タスク実行結果サイズ、子ノード数、および再実行回数のうちの少なくとも1つの要因に基づく、請求項15に記載のコンピュータシステム。
【請求項17】
前記回収されたノードの前記関連ノードは、当該回収されたノードの親ノード、および当該回収されたノードの子ノードのうちの少なくとも一方のノードから選択される、請求項15に記載のコンピュータシステム。
【請求項18】
前記回復可能タスクのデータを記憶することは、当該回復可能タスクの当該データを安定ノードに記憶することをさらに含み、前記方法は、
前記回収されたノードの前記少なくとも1つの関連ノードを前記安定ノードに接続することをさらに含む、請求項15に記載のコンピュータシステム。
【請求項19】
前記回復可能タスクのデータを記憶することは、当該回復可能タスクの当該データを回収可能ノードに記憶することをさらに含み、前記方法は、
前記回収されたノードの前記少なくとも1つの関連ノードを前記回収可能ノードに接続することをさらに含む、請求項15に記載のコンピュータシステム。
【請求項20】
前記方法は、
前記回収されたノードが戻されたことに応じて、
前記回復可能タスクの前記記憶されたデータを前記回収されたノードに再ロードすることと、
前記回収されたノードを前記少なくとも1つの関連ノードに再接続することと、
前記回収されたノードおよび前記少なくとも1つの関連ノード上でのタスク実行を継続することと、
をさらに含む、請求項15に記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般にタスク処理に関し、より具体的には、タスクフェイルオーバー(task failover)のための方法、システム、またはコンピュータプログラム製品に関する。
【背景技術】
【0002】
クラウドサービスプロバイダは、ハードウェアリソースに投資し、これらのリソースを(多くの場合、時間単位で)契約者(subscribers)に解放する。しかし、このモデルの問題の1つは、所与の時間において、利用されていないコンピューティングリソースが存在する可能性が高いことである。これらのリソースは、クラウドサービスプロバイダが対価を支払ったにもかかわらず、遊休状態になっているハードウェア容量に相当する。クラウドサービスプロバイダは、これらのコンピューティングリソースを無駄にするのではなく、大幅なディスカウント料金で提供するが、これは、通常のインスタンスを実行するためにこれらのリソースを必要とする人がいる場合、ディスカウント料金でこれらのハードウェアリソースを使用しているスポットインスタンスよりも、当該インスタンスが優先されるという了解の下に行われる。スポットインスタンスは現在広く利用されている。計算リソースは空いているときに提供され、他の契約者からの要求があった際に回収(reclaim)される。価格は、通常のインスタンス料金よりもはるかに安いものとなる。契約者は、中断可能なアプリケーションをこのようなリソース上で実行することにより、コストを節約することができる。したがって、スポットインスタンスは通常、ミッションクリティカルなワークロードの実行には使用されない。
【発明の概要】
【0003】
本発明の一態様によれば、複数の回収可能ノードを含む不安定な環境におけるタスクフェイルオーバーのために以下の動作(必ずしも以下の順序ではない)を実行する方法、コンピュータプログラム製品、もしくはシステムまたはその組み合わせが提供される。この方法は、複数の回収可能ノードのうちのいずれかのノードが回収されるかどうかを監視することと、複数の回収可能ノードのうちのいずれかのノード上のタスクが回復可能であるかどうかを判定することと、タスクが回復可能であることに応じて、回復可能タスクのデータを記憶することと、ノードが回収され、かつ回収されたノード上のタスクが回復可能であることに応じて、回収されたノードの少なくとも1つの関連ノードの少なくとも1つの関連タスクに対して待機するように通知することと、を含む。
【0004】
有利な点として、本主題は、回復可能タスクを特定することによって、不安定な環境における最適なフェイルオーバー策を提供することができ、それによって、計算リソースの節約、計算効率の向上、応答時間の短縮、またはユーザ体験の向上を実現し得る。
【0005】
本概要は、本発明の実施形態の重要なまたは必須の特徴を特定することを意図したものではなく、本発明の範囲を限定することを意図したものでもない。本発明の他の特徴は、以下の説明を通じて容易に理解可能であると考えられる。
【図面の簡単な説明】
【0006】
添付図面における本発明のいくつかの実施形態のより詳細な説明を通じて、本発明の上記および他の目的、特徴および利点がより明らかになると考えられる。ここで、同一の参照符号は一般的に、本発明の実施形態における同一の構成要素を指す。
【0007】
図1】本発明の一実施形態に係るクラウドコンピューティングノードを示す図である。
図2】本発明の一実施形態に係るクラウドコンピューティング環境を示す図である。
図3】本発明の一実施形態に係る抽象化モデルレイヤを示す図である。
図4】本発明の一実施形態に従った、タスクフェイルオーバーのフローチャートである。
図5】本発明のより詳細な実施形態に従った、回復可能タスクに関するタスクフェイルオーバーのフローチャートである。
図6】本発明の別のより詳細な実施形態に従った、回復可能タスクに関するタスクフェイルオーバーのフローチャートである。
図7】本発明のより詳細な実施形態に従った、回復不能タスクに関するタスクフェイルオーバーのフローチャートである。
図8】中間ノードが回収される不安定な環境の一例を示す図である。
図9】本発明のより詳細な実施形態に従った、不安定な環境におけるタスクフェイルオーバーの一例を示す図である。
図10】本発明の別のより詳細な実施形態に従った、不安定な環境におけるタスクフェイルオーバーの一例を示す図である。
図11】本発明のさらなる詳細な実施形態に従った、不安定な環境におけるタスクフェイルオーバーの一例を示す図である。
【発明を実施するための形態】
【0008】
本発明の実施形態を図示した添付図面を参照して、いくつかの実施形態をより詳細に説明する。ただし、本発明は様々な態様において実施することができ、本明細書に開示された実施形態に限定されると解釈されるべきではない。加えて、様々な実施形態に関連して与えられた各例は、例示であることを意図しており、本発明を限定するものではない。さらに、図面は必ずしも縮尺通りではなく、一部の特徴は、特定の構成要素の詳細を示すために誇張されている場合がある。したがって、本明細書に開示された特定の構造的および機能的詳細は、限定的なものとして解釈されるべきではなく、単に、本発明の方法および構造を様々に採用することを当業者に教示するための代表的な基礎として解釈されるべきものである。
【0009】
本開示は、クラウドコンピューティングに関する詳細な説明を含むが、本明細書に記載された教示の実装形態は、クラウドコンピューティング環境に限定されないことを理解されたい。むしろ、本発明の実施形態は、現在公知のまたは後に開発される任意の他のタイプのコンピューティング環境と組み合わせて実施することが可能である。
【0010】
クラウドコンピューティングは、設定可能なコンピューティングリソース(例えばネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、記憶装置、アプリケーション、仮想マシンおよびサービス)の共有プールへの簡便かつオンデマンドのネットワークアクセスを可能にするためのサービス提供のモデルであり、リソースは、最小限の管理労力または最小限のサービスプロバイダとのやり取りによって速やかに準備(provision)およびリリースできるものである。このクラウドモデルは、少なくとも5つの特性、少なくとも3つのサービスモデル、および少なくとも4つの展開モデルを含むことができる。
【0011】
特性は以下の通りである。
【0012】
オンデマンド・セルフサービス:クラウドの消費者は、サービスプロバイダとの人的な対話を必要することなく、必要に応じて自動的に、サーバ時間やネットワークストレージなどのコンピューティング能力を一方的に準備することができる。
【0013】
ブロード・ネットワークアクセス:コンピューティング能力はネットワーク経由で利用可能であり、また、標準的なメカニズムを介してアクセスできる。それにより、異種のシンまたはシッククライアントプラットフォーム(例えば、携帯電話、ラップトップ、PDA)による利用が促進される。
【0014】
リソースプーリング:プロバイダのコンピューティングリソースはプールされ、マルチテナントモデルを利用して複数の消費者に提供される。様々な物理リソースおよび仮想リソースが、需要に応じて動的に割り当ておよび再割り当てされる。一般に消費者は、提供されたリソースの正確な位置を管理または把握していないため、位置非依存(location independence)の感覚がある。ただし消費者は、より高い抽象レベル(例えば、国、州、データセンタ)では場所を特定可能な場合がある。
【0015】
迅速な柔軟性(elasticity):コンピューティング能力は、迅速かつ柔軟に準備することができるため、場合によっては自動的に、直ちにスケールアウトし、また、速やかにリリースされて直ちにスケールインすることができる。消費者にとって、準備に利用可能なコンピューティング能力は無制限に見える場合が多く、任意の時間に任意の数量で購入することができる。
【0016】
サービスの測定:クラウドシステムは、サービスの種類(例えば、ストレージ、処理、帯域幅、アクティブユーザアカウント)に適したある程度の抽象化レベルでの計量機能(metering capability)を活用して、リソースの使用を自動的に制御し最適化する。リソース使用量を監視、制御、および報告して、利用されるサービスのプロバイダおよび消費者の両方に透明性を提供することができる。
【0017】
サービスモデルは以下の通りである。
【0018】
サービスとしてのソフトウェア(SaaS):消費者に提供される機能は、クラウドインフラストラクチャ上で動作するプロバイダのアプリケーションを利用できることである。当該そのアプリケーションは、ウェブブラウザ(例えばウェブメール)などのシンクライアントインタフェースを介して、各種のクライアント装置からアクセスできる。消費者は、ネットワーク、サーバ、オペレーティングシステム、ストレージや、個別のアプリケーション機能さえも含めて、基礎となるクラウドインフラストラクチャの管理や制御は行わない。ただし、ユーザ固有の限られたアプリケーション構成の設定はその限りではない。
【0019】
サービスとしてのプラットフォーム(PaaS):消費者に提供される機能は、プロバイダによってサポートされるプログラム言語およびツールを用いて、消費者が作成または取得したアプリケーションを、クラウドインフラストラクチャに展開(deploy)することである。消費者は、ネットワーク、サーバ、オペレーティングシステム、ストレージを含む、基礎となるクラウドインフラストラクチャの管理や制御は行わないが、展開されたアプリケーションを制御でき、かつ場合によってはそのホスティング環境の構成も制御できる。
【0020】
サービスとしてのインフラストラクチャ(IaaS):消費者に提供される機能は、オペレーティングシステムやアプリケーションを含む任意のソフトウェアを消費者が展開および実行可能な、プロセッサ、ストレージ、ネットワーク、および他の基本的なコンピューティングリソースを準備することである。消費者は、基礎となるクラウドインフラストラクチャの管理や制御は行わないが、オペレーティングシステム、ストレージ、および展開されたアプリケーションを制御でき、かつ場合によっては一部のネットワークコンポーネント(例えばホストファイアウォール)を部分的に制御できる。
【0021】
展開モデルは以下の通りである。
【0022】
プライベートクラウド:このクラウドインフラストラクチャは、特定の組織専用で運用される。このクラウドインフラストラクチャは、当該組織または第三者によって管理することができ、オンプレミスまたはオフプレミスで存在することができる。
【0023】
コミュニティクラウド:このクラウドインフラストラクチャは、複数の組織によって共有され、共通の関心事(例えば、ミッション、セキュリティ要件、ポリシー、およびコンプライアンス)を持つ特定のコミュニティをサポートする。このクラウドインフラストラクチャは、当該組織または第三者によって管理することができ、オンプレミスまたはオフプレミスで存在することができる。
【0024】
パブリッククラウド:このクラウドインフラストラクチャは、不特定多数の人々や大規模な業界団体に提供され、クラウドサービスを販売する組織によって所有される。
【0025】
ハイブリッドクラウド:このクラウドインフラストラクチャは、2つ以上のクラウドモデル(プライベート、コミュニティまたはパブリック)を組み合わせたものとなる。それぞれのモデル固有の実体は保持するが、標準または個別の技術によってバインドされ、データとアプリケーションの可搬性(例えば、クラウド間の負荷分散のためのクラウドバースティング)を実現する。
【0026】
クラウドコンピューティング環境は、ステートレス性(statelessness)、低結合性(low coupling)、モジュール性(modularity)および意味論的相互運用性(semantic interoperability)に重点を置いたサービス指向型環境である。クラウドコンピューティングの中核にあるのは、相互接続されたノードのネットワークを含むインフラストラクチャである。
【0027】
ここで図1に、クラウドコンピューティングノードの一例の概略図を示す。なお、クラウドコンピューティングノード10は、好適なクラウドコンピューティングノードの一例に過ぎず、本明細書に記載する本発明の実施形態の使用範囲または機能に関するいかなる限定も示唆することを意図したものではない。いずれにせよ、クラウドコンピューティングノード10は、本明細書に記載の機能のいずれかを実装すること、もしくは実行すること、またはその両方を行うことが可能である。
【0028】
クラウドコンピューティングノード10内には、コンピュータシステム/サーバ12、または通信デバイスなどの携帯型電子デバイスが存在する。これらは、他の多くの汎用または専用コンピューティングシステム環境または構成とともに動作可能である。コンピュータシステム/サーバ12とともに使用するのに適した周知のコンピューティングシステム、環境、もしくは構成またはその組み合わせの例としては、特に限定されないが、パーソナルコンピュータシステム、サーバコンピュータシステム、シンクライアント、シッククライアント、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラマブル家電、ネットワークPC、ミニコンピュータシステム、メインフレームコンピュータシステム、および、これらのシステムまたはデバイスのいずれかを含む分散型クラウドコンピューティング環境などが挙げられる。
【0029】
コンピュータシステム/サーバ12は、コンピュータシステムによって実行されるプログラムモジュールなどの、コンピュータシステム実行可能命令との一般的な関連において説明することができる。一般に、プログラムモジュールは、特定のタスクを実行するかまたは特定のデータ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造などを含むことができる。コンピュータシステム/サーバ12は、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される分散型クラウドコンピューティング環境で実施することができる。分散型クラウドコンピューティング環境において、プログラムモジュールは、メモリストレージデバイスを含む、ローカルおよびリモート両方のコンピュータシステム記憶媒体に記憶することができる。
【0030】
図1に示すように、クラウドコンピューティングノード10内のコンピュータシステム/サーバ12は、汎用コンピューティングデバイスとして示されている。コンピュータシステム/サーバ12のコンポーネントは、特に限定されないが、1つ以上のプロセッサまたは処理ユニット16、システムメモリ28、および、システムメモリ28を含む様々なシステムコンポーネントをプロセッサ16に接続するバス18を含んでもよい。
【0031】
バス18は、様々なバスアーキテクチャのいずれかを使用するメモリバスまたはメモリコントローラ、周辺バス、アクセラレーテッドグラフィックスポート(AGP)、およびプロセッサまたはローカルバスを含む複数種類のバス構造のうち1つ以上の任意のものを表す。非限定的な一例として、このようなアーキテクチャは、インダストリスタンダードアーキテクチャ(ISA)バス、マイクロチャネルアーキテクチャ(MCA)バス、拡張ISA(EISA)バス、ビデオエレクトロニクススタンダーズアソシエーション(VESA)ローカルバス、およびペリフェラルコンポーネントインターコネクト(PCI)バスを含む。
【0032】
コンピュータシステム/サーバ12は一般的に、様々なコンピュータシステム可読媒体を含む。このような媒体は、コンピュータシステム/サーバ12がアクセス可能な任意の利用可能な媒体とすることができ、揮発性媒体および不揮発性媒体の両方と、取り外し可能媒体および取り外し不可能媒体の両方とを含む。
【0033】
システムメモリ28は、揮発性メモリとしてのコンピュータシステム可読媒体(RAM30もしくはキャッシュメモリ32またはその両方など)を含むことができる。コンピュータシステム/サーバ12はさらに、他の取り外し可能/取り外し不可能な揮発性/不揮発性コンピュータシステム可読媒体を含んでもよい。あくまでも一例として、ストレージシステム34は、取り外し不可能な不揮発性磁気媒体(不図示。一般的に「ハードドライブ」と呼ばれる)への読み書きのために設けることができる。また、図示は省略するが、取り外し可能な不揮発性磁気ディスク(例えば、「フロッピーディスク」)への読み書きのための磁気ディスクドライブ、および取り外し可能な不揮発性光学ディスク(CD-ROM、DVD-ROMや他の光学媒体など)への読み書きのための光学ディスクドライブを設けることができる。これらの例において、それぞれを、1つ以上のデータ媒体インタフェースによってバス18に接続することができる。以下でさらに図示および説明するように、メモリ28は、本発明の実施形態の機能を実行するように構成されたプログラムモジュールのセット(例えば、少なくとも1つ)を有する少なくとも1つのプログラム製品を含んでもよい。
【0034】
非限定的な一例として、プログラムモジュール42のセット(少なくとも1つ)を有するプログラム/ユーティリティ40は、オペレーティングシステム、1つ以上のアプリケーションプログラム、他のプログラムモジュール、およびプログラムデータと同様に、メモリ28に記憶することができる。オペレーティングシステム、1つ以上のアプリケーションプログラム、他のプログラムモジュール、およびプログラムデータ、またはそれらのいくつかの組み合わせの各々は、ネットワーク環境の実装形態を含むことができる。プログラムモジュール42は一般に、本明細書に記載する本発明の実施形態の機能もしくは方法またはその両方を実施する。
【0035】
また、コンピュータシステム/サーバ12は、キーボード、ポインティングデバイス、ディスプレイ24などの1つ以上の外部デバイス14、ユーザとコンピュータシステム/サーバ12とのインタラクションを可能にする1つ以上のデバイス、もしくはコンピュータシステム/サーバ12と1つ以上の他のコンピューティングデバイスとの通信を可能にする任意のデバイス(例えば、ネットワークカードやモデムなど)またはこれらの組み合わせと通信することができる。このような通信は、入力/出力(I/O)インタフェース22を介して行うことができる。さらに、コンピュータシステム/サーバ12は、ネットワークアダプタ20を介して1つ以上のネットワーク(ローカルエリアネットワーク(LAN)、汎用ワイドエリアネットワーク(WAN)、もしくはパブリックネットワーク(例えばインターネット)またはこれらの組み合わせなど)と通信することができる。図示するように、ネットワークアダプタ20は、バス18を介してコンピュータシステム/サーバ12の他のコンポーネントと通信する。なお、図示は省略するが、他のハードウェアコンポーネントもしくはソフトウェアコンポーネントまたはその両方を、コンピュータシステム/サーバ12と併用することができる。それらの一例としては、特に限定されないが、マイクロコード、デバイスドライバ、冗長化処理ユニット、外付けディスクドライブアレイ、RAIDシステム、テープドライブ、データアーカイブストレージシステムなどが挙げられる。
【0036】
ここで、図2に例示的なクラウドコンピューティング環境50を示す。図示するように、クラウドコンピューティング環境50は1つ以上のクラウドコンピューティングノード10を含む。これらに対して、クラウド消費者が使用するローカルコンピュータ装置(例えば、PDAもしくは携帯電話54A、デスクトップコンピュータ54B、ラップトップコンピュータ54C、もしくは自動車コンピュータシステム54Nまたはこれらの組み合わせなど)は通信を行うことができる。ノード10は互いに通信することができる。ノード10は、例えば、上述のプライベート、コミュニティ、パブリックもしくはハイブリッドクラウドまたはこれらの組み合わせなど、1つ以上のネットワークにおいて、物理的または仮想的にグループ化(不図示)することができる。これにより、クラウドコンピューティング環境50は、サービスとしてのインフラストラクチャ、プラットフォームもしくはソフトウェアまたはこれらの組み合わせを提供することができ、クラウド消費者はこれらについて、ローカルコンピュータ装置上にリソースを維持する必要がない。なお、図2に示すコンピュータ装置54A~Nの種類は例示に過ぎず、コンピューティングノード10およびクラウドコンピューティング環境50は、任意の種類のネットワークもしくはネットワークアドレス指定可能接続(例えば、ウェブブラウザの使用)またはその両方を介して、任意の種類の電子装置と通信可能であることを理解されたい。
【0037】
ここで、クラウドコンピューティング環境50(図2)によって提供される機能的抽象化レイヤのセットを図3に示す。なお、図3に示すコンポーネント、レイヤおよび機能は例示に過ぎず、本発明の実施形態はこれらに限定されないことをあらかじめ理解されたい。図示するように、以下のレイヤおよび対応する機能が提供される。
【0038】
ハードウェアおよびソフトウェアレイヤ60は、ハードウェアコンポーネントおよびソフトウェアコンポーネントを含む。ハードウェアコンポーネントの例には、メインフレーム61、縮小命令セットコンピュータ(RISC)アーキテクチャベースのサーバ62、サーバ63、ブレードサーバ64、記憶装置65、ならびにネットワークおよびネットワークコンポーネント66が含まれる。いくつかの実施形態において、ソフトウェアコンポーネントは、ネットワークアプリケーションサーバソフトウェア67およびデータベースソフトウェア68を含む。
【0039】
仮想化レイヤ70は、抽象化レイヤを提供する。当該レイヤから、例えば、仮想サーバ71、仮想ストレージ72、仮想プライベートネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティングシステム74、ならびに仮想クライアント75などの仮想エンティティを提供することができる。
【0040】
一例として、管理レイヤ80は以下の機能を提供することができる。リソース準備81は、クラウドコンピューティング環境内でタスクを実行するために利用されるコンピューティングリソースおよび他のリソースの動的な調達を可能にする。計量および価格設定82は、クラウドコンピューティング環境内でリソースが利用される際のコスト追跡、およびこれらのリソースの消費に対する請求またはインボイス送付を可能にする。一例として、これらのリソースはアプリケーションソフトウェアのライセンスを含んでもよい。セキュリティは、データおよび他のリソースに対する保護のみならず、クラウド消費者およびタスクの識別確認を可能にする。ユーザポータル83は、消費者およびシステム管理者にクラウドコンピューティング環境へのアクセスを提供する。サービスレベル管理84は、要求されたサービスレベルが満たされるように、クラウドコンピューティングリソースの割り当ておよび管理を可能にする。サービス品質保証(SLA)の計画および履行85は、SLAに従って将来必要になると予想されるクラウドコンピューティングリソースの事前手配および調達を可能にする。
【0041】
ワークロードレイヤ90は、クラウドコンピューティング環境の利用が可能な機能の例を提供する。このレイヤから提供可能なワークロードおよび機能の例には、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想教室教育の配信93、データ分析処理94、取引処理95、タスクフェイルオーバー96が含まれる。
【0042】
スポットインスタンスは、最近広く使用されている。スポットインスタンスは、計算ノード(以下、ノードと称する)が提供する計算リソースが空いているときにはその提供を受けることができるが、低価格サービスの見返りとして、他の契約者から優先度の高い要求があった場合にはリソースが回収される。欠点としては、スポットインスタンスのノードはいつでも回収できることである。これはつまり、各ノードで実行されたデータ(計算結果)はいつでも放棄される可能性があるため、スポットインスタンスのノードは不安定であり、計算資源の無駄が発生することを意味する。
【0043】
親子ワークロード(parent-child workloads)は、一般的にデータ分析および予測に使用される。この方式では、1つの計算を複数の並列タスクに分割して結果を得る。親ノード上で実行される親タスクは、複数の中間タスクに分割されて中間ノード上で実行される場合があり、各中間タスクはさらに、複数の子タスクに分割されて複数の子ノード上で実行される場合がある。上位のタスクは、下位のタスクの計算結果に依存する場合がある。つまり、中間ノードは、すべての子ノードがそれぞれのタスクを完了した後にのみ自身のタスクを完了することができ、親ノードは、すべての中間ノードがそれぞれのタスクを完了した後にのみ自身のタスクを完了する。これは、親子ワークロードパターンとして知られている。例えば、ある銀行がこのワークロードパターンを用いてデータを分析し、国全体のローン総額を計算する(親タスク)場合、各州のローン総額を計算する中間タスクが作成され、各市のローンを計算する子タスクが作成される。タスクツリーはこのようにして成長する。
【0044】
スポットインスタンスにおいても、親子ワークロード分散を採用することができる。親タスクを実行しているノードが回収されると、そのすべての子ノード上でのタスク実行が停止され、回収されたノードおよびそのすべての子ノードのタスクに費やされた計算リソースが無駄となる。ワークロードスケジューラは、当該タスクおよび関連する子タスクを他のノードに再割り当てし、以前の計算を繰り返す。もちろん、これらの他のノードのいずれかが回収された場合、タスクの再割り当てを再度行う必要がある。そのため、契約者は、必要な結果を得るためにより長時間待つ必要がある場合があり、予測可能性が低下する可能性がある。
【0045】
上述の少なくとも1つの問題に対処するために、本発明の少なくとも1つの態様は、最適なタスクフェイルオーバーの方法を提供するものである。
【0046】
図4は、本発明の一実施形態に従った、タスクフェイルオーバーのフローチャートである。図4に示すように、プロセス400は、不安定な環境におけるタスクフェイルオーバーのプロセスの一例を含む。ここで、不安定な環境は、複数の回収可能(reclaimable)ノードを含む。プロセス400はまずステップ401にて、処理ユニットが、複数の回収可能ノードのうちのいずれかのノードが回収されるかどうかを監視する。スポットインスタンスなどの不安定な環境においては、あるノードが他のタスクを実行するために回収される可能性があり、そのため、回収されたノード上で実行されている既存のタスク(計算結果を含む)、およびそのすべての子ノード上で実行されている関連タスクがすべて放棄されることになり、計算リソースの多大な浪費および応答の遅延を招く可能性がある。
【0047】
図8は、中間ノード(中間1)が回収される不安定な環境800の一例を示す図である。具体的には、タスクスケジューラ801は、タスクを親ノード(親1もしくは親2またはその両方)に割り当てることができる。親ノード(親1もしくは親2またはその両方)はさらに、それぞれ対応する子ノード(中間1、中間2、中間3、および中間4)にタスクを分配することができる。さらに、中間1、中間2、中間3、および中間4はさらに、それぞれのタスクをそれぞれの子ノード(子1、子2、子3、子4、子5、および子6)に分配することができる。なお、図示を簡潔にするため、3層のノードのみを示しており、各階層内では少数のノードのみを示している。当業者であれば理解できるように、種々の実施形態において、実際のビジネスニーズに従って、これより多いまたは少ない数の層においてこれより多いまたは少ない数のノードを実装可能である。「×」印は、他のタスクを実行するために中間1が回収されることを示している。したがって、その子ノード、すなわち子1および子2上で実行されている関連タスクも終了し、子1および子2に記憶されているすべての対応するデータも放棄される場合がある。
【0048】
図4に戻り、ステップ403にて、処理ユニットは、複数の回収可能ノードのうちのいずれかのノード上のタスクが回復可能(recoverable)であるかどうかを判定することができる。タスクが回復可能であると判定された場合、関連するノードは、すべての関連するデータ(すなわち計算結果)をそのまま放棄して単純に回収されなくてもよい。
【0049】
したがって、タスクがかなり重要である場合、または対応する計算結果が直接放棄されると大きな無駄が生じる場合、または対応する計算結果が直接放棄されるとユーザ体験が著しく損なわれる場合、タスクを回復可能タスクとして定義してもよい。本発明の実施形態において、判定は、回収されたノード上のタスクに関連する、タスク実行時間、タスク実行割合、タスク実行結果のサイズ、子ノード数、およびタスク再実行回数のうちの少なくとも1つの要因に基づいて行われる。具体的には、タスクの実行時間が閾値A(1時間など)よりも長い場合、そのタスクを回復可能タスクとして定義してもよいし、タスクの実行割合が閾値B(90%など)よりも高い場合、そのタスクを回復可能タスクとして定義してもよいし、タスク実行結果のサイズが閾値Cより大きいなど、十分に大きい場合、そのタスクを回復可能タスクとして定義してもよい。あるいは、子ノード数が閾値Dより大きいなど、子ノード数が多い場合、すべての子ノードにおける関連タスクの実行が同時に停止されると大きな影響が生じるため、そのタスクを回復可能タスクとして定義してもよい。あるいは、ノードの回収によってタスクが何度も再実行されている(タスクの再実行回数が閾値Eより大きいなど)場合、それ以上遅延すると不快なユーザ体験を招く可能性があるため、そのタスクを回復可能タスクとして定義してもよい。なお、当業者であれば理解すべきこととして、回復可能タスクを決定するための上記の基準は、本発明の範囲を限定するものではなく、参考として提供されているに過ぎない。
【0050】
タスクが回復可能である場合、処理ユニットはステップ405にて、回復可能タスクのデータを、例えばリモートストレージに記憶することができる。なお、「リモートストレージ」という用語は、ネットワークを介してアクセスされるストレージを指し、永続的なリモートストレージデバイスにデータを記憶するオプションを提供することができる。回復可能タスクのデータ、すなわち計算結果(中間結果を含む)を保存しておくことで、計算の繰り返しを避け、計算リソースの不要な消費を省くことができる。
【0051】
本発明の実施形態において、ステップ403およびステップ405は、ステップ401と並行して実行することができる。言い換えれば、ステップ403およびステップ405は、ステップ401から独立して実行することができるので、回復可能タスクのデータは定期的にまたは随時保存することができる。したがって、ノードが回収される場合、回復可能タスクのデータを記憶するために追加の時間を費やす必要はない。言い換えれば、データの記憶に伴う追加の遅延を発生させることなく、回収可能ノードをいつでも回収することができる。
【0052】
ノードが回収され、かつ回収されたノード上のタスクが回復可能である場合、処理ユニットはステップ407にて、回収されたノードの少なくとも1つの関連ノードの少なくとも1つの関連タスクに対して待機するように通知することができる。本発明の実施形態において、回収されたノードの関連ノードは、回収されたノードの親ノード、および回収されたノードの子ノードのうちの少なくとも一方から選択される。例えば、回収されたノードが親ノードと子ノードの両方を有する場合、親ノードと子ノードの両方で実行されている関連タスクに対して待機するように通知してもよい。あるいは、回収されたノードが親ノードを有さない場合(例えば、回収されたノード自体がルートノードである場合)、子ノード上で実行されている関連タスクに対してのみ通知してもよい。一方、回収されたノードが子ノードを有さない場合、親ノード上で実行されている関連タスクに対してのみ通知してもよい。
【0053】
図5は、本発明のより詳細な実施形態に従った、回復可能タスクに関するタスクフェイルオーバープロセス500のフローチャートである。この実施形態において、回収されたノードは、安定(stable)ノードと置き換えることができる。安定ノードは、再び回収されてタスクの実行を再び中断することがないノードである。ステップ501にて、処理ユニットは、複数の回収可能ノードのうちのいずれかのノードが回収されるかどうかを監視することができる。ステップ503にて、処理ユニットは、複数の回収可能ノードのうちのいずれかのノード上のタスクが回復可能であるかどうかを判定することができる。タスクが回復可能である場合、処理ユニットはステップ505にて、回復可能タスクのデータを記憶することができる。さらに、ステップ505は、回復可能タスクのデータを安定ノードに記憶することをさらに含むことができる。本発明の実施形態において、ステップ503およびステップ505は、ステップ501と並行して実行することができる。ノードが回収され、かつ回収されたノード上のタスクが回復可能である場合、処理ユニットはステップ507にて、回収されたノードの少なくとも1つの関連ノードの少なくとも1つの関連タスクに対して待機するように通知することができる。プロセス500のステップ501、ステップ503、ステップ505、およびステップ507は、それぞれ図4のステップ401、ステップ403、ステップ405、およびステップ407と同じまたは類似のステップであるので、説明を簡潔にするために、これらのステップの詳細は以下では繰り返さない。
【0054】
ステップ509にて、処理ユニットは、回収されたノードの少なくとも1つの関連ノードを安定ノードに接続することができる。これにより、安定ノードは、回収されたノード上で以前に実行されていた回復可能タスクを引き継ぎ、回収されたノードの以前の親ノードおよび以前の子ノードとの通信を継続することができる。
【0055】
図9は、本発明のより詳細な実施形態に従った、不安定な環境900におけるタスクフェイルオーバーの一例を示す図である。不安定な環境には、安定ノードが含まれている場合もある。図8と同様に、中間ノード(中間1)は回収されるノードであり、中間1において実行されている少なくとも1つのタスクは回復可能タスクである。したがって、安定ノードは、中間1で以前に実行されていた回復可能タスクのタスク実行を引き継ぎ、親ノード(親1)は安定ノードの新たな親ノードとなり、子ノード(子1および子2)は安定ノードの新たな子ノードとなる。中間1の回復可能タスクに関連するデータはすべて安定ノードに移行されるため、回復可能タスクに関連する過去の計算結果はすべて無駄にすることなく保存することができ、安定ノードでのさらなるタスク実行を確実なものにすることができる。さらに、安定ノードは、タスクの移行が完了したことに応じて回復可能タスクのタスク実行を継続することができ、安定ノードがさらに回収されることはないため、タスク実行の遅延が低減される。なお、データ移行はタスクレベルで実行されるため、回復不能(unrecoverable)タスクに関連するデータは安定ノードに移行する必要がない。
【0056】
別の実施形態において、回収されたノードは、不安定(unstable)ノード、すなわち回収可能(reclaimable)ノードと置き換えることができる。回復可能タスクのデータを記憶する図4のステップ405は、回復可能タスクのデータを不安定ノードに記憶することをさらに含むことができ、プロセス400は、回収されたノードの少なくとも1つの関連ノードを不安定ノードに接続することをさらに含むことができる。この実施形態において、図5の実施形態における安定ノードが不安定ノードに置き換えられることを除いて、他のすべてのステップは図5を参照して説明したものと同じであるかまたは非常に類似しているため、説明を簡潔にするために他のすべての詳細は繰り返さない。
【0057】
図10は、本発明の別のより詳細な実施形態に従った、不安定な環境1000におけるタスクフェイルオーバーの一例を示す図である。図8と同様に、中間ノード(中間1)は回収されるノードであり、中間1で実行されていた少なくとも1つのタスクは回復可能タスクである。したがって、不安定ノードは、中間1で以前に実行されていた回復可能タスクのタスク実行を引き継ぎ、親ノード(親1)は不安定ノードの新たな親ノードとなり、子ノード(子1および子2)は不安定ノードの新たな子ノードとなる。中間1の回復可能タスクに関連するデータはすべて不安定ノードに移行されるため、回復可能タスクに関連する過去の計算結果はすべて無駄にすることなく保存することができる。そして、データの移行が完了したことに応じて、不安定ノード上の回復可能タスク、および親1、子1、子2の対応するタスク実行を継続することができる。
【0058】
図6は、本発明の別のより詳細な実施形態に従った、回復可能タスクに関するタスクフェイルオーバープロセス600のフローチャートである。この実施形態において、回収されたノードは他のノードに置き換えられなくてもよく、回収されたノードの関連ノード上で実行されている関連タスクは、この回収されたノードが戻される(return)まで待機する。ステップ601にて、処理ユニットは、複数の回収可能ノードのうちのいずれかのノードが回収されるかどうかを監視することができる。ステップ603にて、処理ユニットは、複数の回収可能ノードのうちのいずれかのノード上のタスクが回復可能であるかどうかを判定することができる。タスクが回復可能である場合、処理ユニットはステップ605にて、回復可能タスクのデータを遠隔に記憶することができる。本発明の実施形態において、ステップ603およびステップ605は、ステップ601と並行して実行することができる。ノードが回収され、かつ回収されたノード上のタスクが回復可能である場合、処理ユニットはステップ607にて、回収されたノードの少なくとも1つの関連ノードの少なくとも1つの関連タスクに対して待機するように通知することができる。プロセス600のステップ601、ステップ603、ステップ605、およびステップ607は、それぞれ図4のステップ401、ステップ403、ステップ405、およびステップ407と同じまたは類似のステップであるので、これらのステップの詳細は以下では繰り返さない。
【0059】
回収されたノードが戻されたことに応じて、処理ユニットはステップ609にて、回復可能タスクの記憶したデータを、この回収されたノードに再ロードすることができる。これにより、回収されたノード上での回復可能タスクの実行を、元の場所から継続することができる。ステップ611にて、処理ユニットはさらに、回収されたノードを、回収されたノードから以前に切断された少なくとも1つの関連ノードに再接続することができる。ステップ613にて、処理ユニットは、回収されたノード上での回復可能タスクの実行と、上記の少なくとも1つの関連ノード上で実行されていた関連タスクの実行とを継続することができる。この実施形態において、回復可能タスクに関連するデータは放棄されないので、計算リソースが節約される。
【0060】
図11は、本発明のさらなる詳細な実施形態に従った、不安定な環境1100におけるタスクフェイルオーバーの一例を示す図である。図8と同様に、中間ノード(中間1)は回収されるノードであり、中間1において実行されている少なくとも1つのタスクは回復可能タスクである。中間1が他のタスクのために回収されると、回復可能タスクに関連する親ノード(親1)および子ノード(子1、子2)のタスク実行は、中間1が戻されるまですべて中断される。もちろん、回収されたノード内の回復可能タスクに関連するデータは(リモートストレージなどに)一時的に保存され、回収されたノードが戻された際に当該ノードに再ロードされる。
【0061】
図6に戻り、本発明のさらなる実施形態において、回収されたノードの短期実行(short running)子ノード上で実行されている対応タスクの実行を終了することができる。これにより、短期実行子ノードの計算リソースを、他のタスクの実行用に解放することができる。具体的には、ステップ607は、回収されたノードの親ノードおよび長期実行(long running)子ノードの関連タスクに対して待機するように通知することをさらに含むことができる。そして、プロセス600は、回収されたノードの短期実行子ノード上での対応タスクの実行を終了するステップと、当該短期実行子ノードのバックアップノードを決定するステップとをさらに含むことができる。これらの追加ステップは、ステップ607とステップ611との間に実行することができる。そして、ステップ611は、回収されたノードを、親ノード、長期実行子ノード、および短期実行子ノードのバックアップノードのうちの少なくとも1つと再接続することをさらに含むことができる。なお、短期実行子ノードおよび長期実行子ノードを決定する基準は、実際の技術的ニーズ/ビジネスニーズに基づいて決定することができる。
【0062】
図7は、本発明のより詳細な実施形態に従った、回復不能タスクに関するタスクフェイルオーバープロセス700のフローチャートである。ステップ701にて、処理ユニットは、複数の回収可能ノードのうちのいずれかのノードが回収されるかどうかを監視することができる。ステップ703にて、処理ユニットは、複数の回収可能ノードのうちのいずれかのノード上のタスクが回復可能であるかどうかを判定することができる。本発明の実施形態において、ステップ703は、ステップ701と並行して実行することができる。プロセス700におけるステップ701およびステップ703は、それぞれ図4のステップ401およびステップ403と同一または類似のステップであるので、これらのステップの詳細は以下では繰り返さない。ノードが回収され、かつタスクが回復不能である場合、処理ユニットはステップ705にて、回収されたノード上での回復不能タスクの対応する実行と、回収されたノードの子ノード上での回復不能タスクに関連するタスクの実行とを、対応するタスクのデータを記憶することなく終了する。このデータには、回収されたノード上の回復不能タスクのデータと、その子ノード上で実行されている回復不能タスクの関連タスクに関するデータとが含まれてもよい。
【0063】
なお、本発明の実施形態に係るタスクフェイルオーバーのための方法/システム/コンピュータプログラム製品は、図1のコンピュータシステム/サーバ12によって実装可能である。有利な点として、本発明の実施形態は、回復可能タスクを特定することによって、不安定な環境における最適なフェイルオーバー策を提供することができ、それによって、計算リソースの節約、計算効率の向上、応答時間の短縮、またはユーザ体験の向上を実現し得る。
【0064】
本発明は、任意の可能な技術詳細レベルで統合されたシステム、方法もしくはコンピュータプログラム製品またはそれらの組み合わせとすることができる。コンピュータプログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を記憶したコンピュータ可読記憶媒体を含んでもよい。
【0065】
コンピュータ可読記憶媒体は、命令実行デバイスによって使用される命令を保持し、記憶することができる有形のデバイスとすることができる。コンピュータ可読記憶媒体は、一例として、電子ストレージデバイス、磁気ストレージデバイス、光ストレージデバイス、電磁ストレージデバイス、半導体ストレージデバイスまたはこれらの適切な組み合わせであってもよい。コンピュータ可読記憶媒体のより具体的な一例としては、ポータブルコンピュータディスケット、ハードディスク、RAM、ROM、消去可能プログラマブルROM(EPROMまたはフラッシュメモリ)、スタティックランダムアクセスメモリ(SRAM)、CD-ROM、DVD、メモリスティック、フロッピーディスク、パンチカードまたは溝内の隆起構造などに命令を記録した機械的に符号化されたデバイス、およびこれらの適切な組み合せが挙げられる。本明細書で使用されるコンピュータ可読記憶媒体は、電波もしくは他の自由に伝播する電磁波、導波管もしくは他の伝送媒体を介して伝播する電磁波(例えば、光ファイバケーブルを通過する光パルス)、またはワイヤを介して送信される電気信号のような、一過性の信号それ自体として解釈されるべきではない。
【0066】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティングデバイス/処理デバイスへダウンロードすることができる。あるいは、ネットワーク(例えばインターネット、LAN、WANもしくは無線ネットワークまたはこれらの組み合わせ)を介して、外部コンピュータまたは外部ストレージデバイスへダウンロード可能である。ネットワークは、銅製伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータもしくはエッジサーバまたはこれらの組み合わせを備えることができる。各コンピューティングデバイス/処理デバイス内のネットワークアダプタカードまたはネットワークインタフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、当該コンピュータ可読プログラム命令を、各々のコンピューティングデバイス/処理デバイスにおけるコンピュータ可読記憶媒体に記憶するために転送する。
【0067】
本発明の動作を実施するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路用構成データ、または、スモールトークやC++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語や類似のプログラミング言語などの手続き型プログラミング言語を含む、1つ以上のプログラミング言語の任意の組み合わせで記述されたソースコードもしくはオブジェクトコードのいずれかとすることができる。コンピュータ可読プログラム命令は、スタンドアロン型ソフトウェアパッケージとして完全にユーザのコンピュータ上で、または部分的にユーザのコンピュータ上で実行可能である。あるいは、部分的にユーザのコンピュータ上でかつ部分的にリモートコンピュータ上で、または、完全にリモートコンピュータもしくはサーバ上で実行可能である。後者の場合、リモートコンピュータは、LANやWANを含む任意の種類のネットワークを介してユーザのコンピュータに接続してもよいし、外部コンピュータに(例えば、インターネットサービスプロバイダを使用してインターネットを介して)接続してもよい。いくつかの実施形態において、例えばプログラマブル論理回路、フィールドプログラマブルゲートアレイ(FPGA)、プログラマブル論理アレイ(PLA)を含む電子回路は、本発明の態様を実行する目的で当該電子回路をカスタマイズするために、コンピュータ可読プログラム命令の状態情報を利用することによって、コンピュータ可読プログラム命令を実行することができる。
【0068】
本発明の態様は、本明細書において、本発明の実施形態に係る方法、装置(システム)、およびコンピュータプログラム製品のフローチャートもしくはブロック図またはその両方を参照して説明されている。フローチャートもしくはブロック図またはその両方における各ブロック、および、フローチャートもしくはブロック図またはその両方における複数のブロックの組み合わせは、コンピュータ可読プログラム命令によって実行可能である。
【0069】
これらのコンピュータ可読プログラム命令は、機械を生産するために、コンピュータまたは他のプログラマブルデータ処理装置のプロセッサに提供することができる。これにより、このようなコンピュータまたは他のプログラマブルデータ処理装置のプロセッサを介して実行されるこれらの命令が、フローチャートもしくはブロック図またはその両方における1つ以上のブロックにて特定される機能/動作を実行するための手段を創出する。これらのコンピュータ可読プログラム命令はさらに、コンピュータ、プログラマブルデータ処理装置もしくは他のデバイスまたはこれらの組み合わせに対して特定の態様で機能するよう命令可能なコンピュータ可読記憶媒体に記憶することができる。これにより、命令が記憶された当該コンピュータ可読記憶媒体は、フローチャートもしくはブロック図またはその両方における1つ以上のブロックにて特定される機能/動作の態様を実行するための命令を含む製品を構成する。
【0070】
また、コンピュータ可読プログラム命令を、コンピュータ、他のプログラマブル装置、または他のデバイスにロードし、一連の動作ステップを当該コンピュータ、他のプログラマブル装置、または他のデバイス上で実行させることにより、コンピュータ実行プロセスを生成してもよい。これにより、当該コンピュータ、他のプログラマブル装置、または他のデバイス上で実行される命令が、フローチャートもしくはブロック図またはその両方における1つ以上のブロックにて特定される機能/動作を実行する。
【0071】
図面におけるフローチャートおよびブロック図は、本発明の種々の実施形態に係るシステム、方法およびコンピュータプログラム製品の可能な実装形態のアーキテクチャ、機能性、および動作を示している。この点に関して、フローチャートまたはブロック図における各ブロックは、特定の論理機能を実行するための1つ以上の実行可能な命令を含む、命令のモジュール、セグメント、または部分を表すことができる。他の一部の実装形態において、ブロック内に示した機能は、各図に示す順序とは異なる順序で実行されてもよい。例えば、関係する機能に応じて、連続して示される2つのブロックが、実際には、1つの工程として達成されてもよいし、同時もしくは略同時に実行されてもよいし、部分的もしくは全体的に時間的に重複した態様で実行されてもよいし、ブロックが場合により逆順で実行されてもよい。なお、ブロック図もしくはフローチャートまたはその両方における各ブロック、および、ブロック図もしくはフローチャートまたはその両方における複数のブロックの組み合わせは、特定の機能もしくは動作を行う、または専用ハードウェアとコンピュータ命令との組み合わせを実行する、専用ハードウェアベースのシステムによって実行可能である。
【0072】
本発明の種々の実施形態を例示として説明してきたが、網羅的であることや、開示した実施形態に限定することを意図したものではない。当業者には明らかなように、記載した各実施形態の範囲から逸脱することなく、多くの変更および変形が可能である。本明細書で用いられる用語は、各実施形態の原理、実際の用途、もしくは市場で確認される技術に対する技術的な改善を最もよく説明するために、または、他の当業者が本明細書に開示する各実施形態を理解できるように選択されたものである。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
【国際調査報告】