(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-01-18
(54)【発明の名称】動的タスク移動を介したクラスタにまたがるエッジ・タイム・シェアリング
(51)【国際特許分類】
G06F 9/50 20060101AFI20240111BHJP
【FI】
G06F9/50 150Z
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023540043
(86)(22)【出願日】2022-01-05
(85)【翻訳文提出日】2023-06-29
(86)【国際出願番号】 CN2022070312
(87)【国際公開番号】W WO2022148376
(87)【国際公開日】2022-07-14
(32)【優先日】2021-01-07
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【氏名又は名称】片岡 忠彦
(72)【発明者】
【氏名】ワン、ユエ
(72)【発明者】
【氏名】リュウ、シン ペン
(72)【発明者】
【氏名】ウー、ウェイ
(72)【発明者】
【氏名】リー、チェン
(57)【要約】
エッジ・デバイス・タスク管理が提供される。第1の複数のサブタスクを含む第1のタスクが、エッジ・デバイスの第1のクラスタ上で実行している間に、第2のタスクに対応する第2の複数のサブタスクのうちのより優先度の高いサブタスクを実行したいというリクエストが受け取られたときに、サブタスク・キャンセルおよび移動計画が存在するかどうかが判定される。サブタスク・キャンセルおよび移動計画が存在すると判定したことに応答して、サブタスク・キャンセルおよび移動計画に基づいて、エッジ・デバイスの第1のクラスタのうちの指定されたエッジ・デバイスから、第1の複数のサブタスクのうちのより優先度の低いサブタスクがキャンセルされる。サブタスク・キャンセルおよび移動計画に基づいて、実行するための別のエッジ・デバイスに、より優先度の低いサブタスクが移動される。実行するためのエッジ・デバイスの第1のクラスタのうちの指定されたエッジ・デバイスに、第2の複数のサブタスクのうちのより優先度の高いサブタスクが送られる。
【特許請求の範囲】
【請求項1】
エッジ・デバイス・タスク管理のためのコンピュータ実装方法であって、
第1の複数のサブタスクを含む第1のタスクが、エッジ・コンピューティング・フレームワークにおけるエッジ・デバイスの第1のクラスタ上で動いている間に、第2のタスクに対応する第2の複数のサブタスクのうちのより優先度の高いサブタスクを実行したいというリクエストが受け取られたときに、前記エッジ・コンピューティング・フレームワークのためのサブタスク・キャンセルおよび移動計画が存在するかどうかを判定することと、
前記エッジ・コンピューティング・フレームワークのための前記サブタスク・キャンセルおよび移動計画が存在すると判定したことに応答して、前記サブタスク・キャンセルおよび移動計画に基づいて、前記第2の複数のサブタスクのうちの前記より優先度の高いサブタスクを実行するために指定された前記エッジ・デバイスの第1のクラスタのうちの指定されたエッジ・デバイスから、前記第1の複数のサブタスクのうちのより優先度の低いサブタスクをキャンセルすることと、
前記サブタスク・キャンセルおよび移動計画に基づいて、実行するための前記エッジ・デバイスの第1のクラスタに含まれない別のエッジ・デバイスに、前記エッジ・デバイスの第1のクラスタのうちの前記指定されたエッジ・デバイスからキャンセルされた前記第1の複数のサブタスクのうちの前記より優先度の低いサブタスクを移動させることと、
実行するために前記エッジ・デバイスの第1のクラスタのうちの前記指定されたエッジ・デバイスに、前記第2の複数のサブタスクのうちの前記より優先度の高いサブタスクを送ることと
を含む、コンピュータ実装方法。
【請求項2】
前記エッジ・コンピューティング・フレームワークのための前記サブタスク・キャンセルおよび移動計画が存在しないと判定したことに応答して、前記エッジ・コンピューティング・フレームワークのためのサブタスク・ペンディング計画に基づいて、前記第2の複数のサブタスクのうちの前記より優先度の高いサブタスクを実行するために指定された前記エッジ・デバイスの第1のクラスタのうちの前記指定されたエッジ・デバイス上の前記第1の複数のサブタスクのうちの前記より優先度の低いサブタスクを一時中断することと、
実行するために前記エッジ・デバイスの第1のクラスタのうちの前記指定されたエッジ・デバイスに、前記第2の複数のサブタスクのうちの前記より優先度の高いサブタスクを送ることと、
前記第2の複数のサブタスクのうちの前記より優先度の高いサブタスクが、前記指定されたエッジ・デバイス上での実行を終えたとき、実行するために前記エッジ・デバイスの第1のクラスタのうちの前記指定されたエッジ・デバイス上の一時中断された前記第1の複数のサブタスクのうちの前記より優先度の低いサブタスクを起動することと
をさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項3】
実行するために前記第1の複数のサブタスクを含む前記第1のタスクを受け取ることと、
前記第1のタスクに対応する前記第1の複数のサブタスクの各それぞれのサブタスクの属性に基づいて、それぞれのサブタスクを実行するために、前記エッジ・コンピューティング・フレームワークに含まれる複数のエッジ・デバイスから、前記エッジ・デバイスの第1のクラスタを選択することと、
実行するために前記エッジ・デバイスの第1のクラスタ内の対応するエッジ・デバイスに、前記第1の複数のサブタスクの各それぞれのサブタスクを送ることと
をさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項4】
前記エッジ・デバイスの第1のクラスタのそれぞれに含まれるプロキシ構成要素を使用して、前記エッジ・デバイスの第1のクラスタに対応するクラスタ・メタデータに基づいて、前記エッジ・デバイスの第1のクラスタに含まれる他のエッジ・デバイスに、サブタスクをその対応するエッジ・デバイス上で実行した結果を送ること
をさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項5】
前記エッジ・デバイスの第1のクラスタの指定されたコーディネータ・プロキシに、前記第1のタスクのステータスを送ること
をさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項6】
前記エッジ・デバイスの第1のクラスタの前記指定されたコーディネータ・プロキシを使用して、前記第1のタスクの前記ステータスをタスク結果受信器と同期すること
をさらに含む、請求項5に記載のコンピュータ実装方法。
【請求項7】
前記第1のタスクが、前記エッジ・デバイスの第1のクラスタ上で実行している間に、実行するために前記第2の複数のサブタスクを含む前記第2のタスクを受け取ることと、
前記第2の複数のサブタスクのうちの前記より優先度の高いサブタスクの属性に基づいて、前記より優先度の高いサブタスクを実行するための前記エッジ・デバイスの第1のクラスタのうちの前記指定されたエッジ・デバイスを含む前記第2のタスクに対応する前記第2の複数のサブタスクのそれぞれのサブタスクを実行するために前記エッジ・コンピューティング・フレームワーク内の複数のエッジ・デバイスから、エッジ・デバイスの第2のクラスタを選択することであって、前記エッジ・デバイスの第1のクラスタのうちの前記指定されたエッジ・デバイスから移動された前記第1の複数のサブタスクのうちの前記より優先度の低いサブタスクを実行するための前記別のエッジ・デバイスが、前記エッジ・デバイスの第2のクラスタにも含まれない、前記選択することと
をさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項8】
エッジ・デバイス・タスク管理のためのコンピュータ・システムであって、
バス・システムと、
前記バス・システムに接続されたストレージ・デバイスのセットであって、プログラム命令を格納する、前記ストレージ・デバイスのセットと、
前記バス・システムに接続されたプロセッサのセットであって、
第1の複数のサブタスクを含む第1のタスクが、エッジ・コンピューティング・フレームワークにおけるエッジ・デバイスの第1のクラスタ上で実行している間に、第2のタスクに対応する第2の複数のサブタスクのうちのより優先度の高いサブタスクを実行したいというリクエストが受け取られたときに、前記エッジ・コンピューティング・フレームワークのためのサブタスク・キャンセルおよび移動計画が存在するかどうかを判定すること、
前記エッジ・コンピューティング・フレームワークのための前記サブタスク・キャンセルおよび移動計画が存在すると判定したことに応答して、前記サブタスク・キャンセルおよび移動計画に基づいて、前記第2の複数のサブタスクのうちの前記より優先度の高いサブタスクを実行するために指定された前記エッジ・デバイスの第1のクラスタのうちの指定されたエッジ・デバイスから、前記第1の複数のサブタスクのうちのより優先度の低いサブタスクをキャンセルすること、
前記サブタスク・キャンセルおよび移動計画に基づいて、実行するための前記エッジ・デバイスの第1のクラスタに含まれない別のエッジ・デバイスに、前記エッジ・デバイスの第1のクラスタのうちの前記指定されたエッジ・デバイスからキャンセルされた前記第1の複数のサブタスクのうちの前記より優先度の低いサブタスクを移動させること、および
実行するために前記エッジ・デバイスの第1のクラスタのうちの前記指定されたエッジ・デバイスに、前記第2の複数のサブタスクのうちの前記より優先度の高いサブタスクを送ること
を行うために前記プログラム命令を実行する、前記プロセッサのセットと
を備える、コンピュータ・システム。
【請求項9】
前記プロセッサのセットが、
前記エッジ・コンピューティング・フレームワークのための前記サブタスク・キャンセルおよび移動計画が存在しないと判定したことに応答して、前記エッジ・コンピューティング・フレームワークのためのサブタスク・ペンディング計画に基づいて、前記第2の複数のサブタスクのうちの前記より優先度の高いサブタスクを実行するために指定された前記エッジ・デバイスの第1のクラスタのうちの前記指定されたエッジ・デバイス上の前記第1の複数のサブタスクのうちの前記より優先度の低いサブタスクを一時中断することと、
実行するために前記エッジ・デバイスの第1のクラスタのうちの前記指定されたエッジ・デバイスに、前記第2の複数のサブタスクのうちの前記より優先度の高いサブタスクを送ることと、
前記第2の複数のサブタスクのうちの前記より優先度の高いサブタスクが、前記指定されたエッジ・デバイス上での実行を終えたとき、実行するために前記エッジ・デバイスの第1のクラスタのうちの前記指定されたエッジ・デバイス上の一時中断された前記第1の複数のサブタスクのうちの前記より優先度の低いサブタスクを起動することと
を行うために前記プログラム命令をさらに実行する、請求項8に記載のコンピュータ・システム。
【請求項10】
前記プロセッサのセットが、
実行するために前記第1の複数のサブタスクを含む前記第1のタスクを受け取ることと、
前記第1のタスクに対応する前記第1の複数のサブタスクの各それぞれのサブタスクの属性に基づいて、それぞれのサブタスクを実行するために、前記エッジ・コンピューティング・フレームワークに含まれる複数のエッジ・デバイスから、前記エッジ・デバイスの第1のクラスタを選択することと、
実行するために前記エッジ・デバイスの第1のクラスタ内の対応するエッジ・デバイスに、前記第1の複数のサブタスクの各それぞれのサブタスクを送ることと
を行うために前記プログラム命令をさらに実行する、請求項8に記載のコンピュータ・システム。
【請求項11】
前記プロセッサのセットが、
前記エッジ・デバイスの第1のクラスタのそれぞれに含まれるプロキシ構成要素を使用して、前記エッジ・デバイスの第1のクラスタに対応するクラスタ・メタデータに基づいて、前記エッジ・デバイスの第1のクラスタに含まれる他のエッジ・デバイスに、サブタスクをその対応するエッジ・デバイス上で実行した結果を送ること
を行うために前記プログラム命令をさらに実行する、請求項8に記載のコンピュータ・システム。
【請求項12】
前記プロセッサのセットが、
前記エッジ・デバイスの第1のクラスタの指定されたコーディネータ・プロキシに、前記第1のタスクのステータスを送ること
を行うために前記プログラム命令をさらに実行する、請求項8に記載のコンピュータ・システム。
【請求項13】
前記プロセッサのセットが、
前記エッジ・デバイスの第1のクラスタの前記指定されたコーディネータ・プロキシを使用して、前記第1のタスクの前記ステータスをタスク結果受信器と同期すること
を行うために前記プログラム命令をさらに実行する、請求項12に記載のコンピュータ・システム。
【請求項14】
エッジ・デバイス・タスク管理のためのコンピュータ・プログラム製品であって、プログラム命令を具体化するコンピュータ可読ストレージ媒体を備え、前記プログラム命令が、
第1の複数のサブタスクを含む第1のタスクが、エッジ・コンピューティング・フレームワークにおけるエッジ・デバイスの第1のクラスタ上で実行している間に、第2のタスクに対応する第2の複数のサブタスクのうちのより優先度の高いサブタスクを実行したいというリクエストが受け取られたときに、前記エッジ・コンピューティング・フレームワークのためのサブタスク・キャンセルおよび移動計画が存在するかどうかを判定することと、
前記エッジ・コンピューティング・フレームワークのための前記サブタスク・キャンセルおよび移動計画が存在すると判定したことに応答して、前記サブタスク・キャンセルおよび移動計画に基づいて、前記第2の複数のサブタスクのうちの前記より優先度の高いサブタスクを実行するために指定された前記エッジ・デバイスの第1のクラスタのうちの指定されたエッジ・デバイスから、前記第1の複数のサブタスクのうちのより優先度の低いサブタスクをキャンセルすることと、
前記サブタスク・キャンセルおよび移動計画に基づいて、実行するための前記エッジ・デバイスの第1のクラスタに含まれない別のエッジ・デバイスに、前記エッジ・デバイスの第1のクラスタのうちの前記指定されたエッジ・デバイスからキャンセルされた前記第1の複数のサブタスクのうちの前記より優先度の低いサブタスクを移動させることと、
実行するために前記エッジ・デバイスの第1のクラスタのうちの前記指定されたエッジ・デバイスに、前記第2の複数のサブタスクのうちの前記より優先度の高いサブタスクを送ることと
を行う方法をコンピュータ・システムに実施させるように前記コンピュータ・システムによって実行可能な、コンピュータ・プログラム製品。
【請求項15】
前記エッジ・コンピューティング・フレームワークのための前記サブタスク・キャンセルおよび移動計画が存在しないと判定したことに応答して、前記エッジ・コンピューティング・フレームワークのためのサブタスク・ペンディング計画に基づいて、前記第2の複数のサブタスクのうちの前記より優先度の高いサブタスクを実行するために指定された前記エッジ・デバイスの第1のクラスタのうちの前記指定されたエッジ・デバイス上の前記第1の複数のサブタスクのうちの前記より優先度の低いサブタスクを一時中断することと、
実行するために前記エッジ・デバイスの第1のクラスタのうちの前記指定されたエッジ・デバイスに、前記第2の複数のサブタスクのうちの前記より優先度の高いサブタスクを送ることと、
前記第2の複数のサブタスクのうちの前記より優先度の高いサブタスクが、前記指定されたエッジ・デバイス上での実行を終えたとき、実行するために前記エッジ・デバイスの第1のクラスタのうちの前記指定されたエッジ・デバイス上の一時中断された前記第1の複数のサブタスクのうちの前記より優先度の低いサブタスクを起動することと
をさらに含む、請求項14に記載のコンピュータ・プログラム製品。
【請求項16】
実行するために前記第1の複数のサブタスクを含む前記第1のタスクを受け取ることと、
前記第1のタスクに対応する前記第1の複数のサブタスクの各それぞれのサブタスクの属性に基づいて、それぞれのサブタスクを実行するために、前記エッジ・コンピューティング・フレームワークに含まれる複数のエッジ・デバイスから、前記エッジ・デバイスの第1のクラスタを選択することと、
実行するために前記エッジ・デバイスの第1のクラスタ内の対応するエッジ・デバイスに、前記第1の複数のサブタスクの各それぞれのサブタスクを送ることと
をさらに含む、請求項14に記載のコンピュータ・プログラム製品。
【請求項17】
前記エッジ・デバイスの第1のクラスタのそれぞれに含まれるプロキシ構成要素を使用して、前記エッジ・デバイスの第1のクラスタに対応するクラスタ・メタデータに基づいて、前記エッジ・デバイスの第1のクラスタに含まれる他のエッジ・デバイスに、サブタスクをその対応するエッジ・デバイス上で実行した結果を送ること
をさらに含む、請求項14に記載のコンピュータ・プログラム製品。
【請求項18】
前記エッジ・デバイスの第1のクラスタの指定されたコーディネータ・プロキシに、前記第1のタスクのステータスを送ること
をさらに含む、請求項14に記載のコンピュータ・プログラム製品。
【請求項19】
前記エッジ・デバイスの第1のクラスタの前記指定されたコーディネータ・プロキシを使用して、前記第1のタスクの前記ステータスをタスク結果受信器と同期すること
をさらに含む、請求項18に記載のコンピュータ・プログラム製品。
【請求項20】
前記第1のタスクが、前記エッジ・デバイスの第1のクラスタ上で実行している間に、実行するために前記第2の複数のサブタスクを含む前記第2のタスクを受け取ることと、
前記第2の複数のサブタスクのうちの前記より優先度の高いサブタスクの属性に基づいて、前記より優先度の高いサブタスクを実行するための前記エッジ・デバイスの第1のクラスタのうちの前記指定されたエッジ・デバイスを含む前記第2のタスクに対応する前記第2の複数のサブタスクのそれぞれのサブタスクを実行するための前記エッジ・コンピューティング・フレームワーク内の複数のエッジ・デバイスから、エッジ・デバイスの第2のクラスタを選択することであって、前記エッジ・デバイスの第1のクラスタのうちの前記指定されたエッジ・デバイスから移動された前記第1の複数のサブタスクのうちの前記より優先度の低いサブタスクを実行するための前記別のエッジ・デバイスが、前記エッジ・デバイスの第2のクラスタにも含まれない、前記選択することと
をさらに含む、請求項14に記載のコンピュータ・プログラム製品。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、一般に、エッジ・コンピューティングに関し、より詳細には、タスク属性に基づく動的タスク移動を使用したエッジ・デバイスのクラスタにまたがるタイム・シェアリングに関する。
【背景技術】
【0002】
エッジ・コンピューティングは、例えば、モノのインターネット・デバイス、ローカル・エッジ・サーバ、および同様のものなどの、アプリケーションをデータ・ソースに近づける分散コンピューティング・フレームワークである。そのソースにおけるデータへのこの近さは、例えば、向上した応答時間および向上した帯域幅可用性などの、恩恵を与えることができる。
【発明の概要】
【0003】
1つの例証的実施形態によれば、エッジ・デバイス・タスク管理のためのコンピュータ実装方法が提供される。第1の複数のサブタスクを含む第1のタスクが、エッジ・コンピューティング・フレームワークにおけるエッジ・デバイスの第1のクラスタ上で動いている間に、第2のタスクに対応する第2の複数のサブタスクのうちのより優先度の高いサブタスクを実行したいというリクエストが受け取られたときに、エッジ・コンピューティング・フレームワークのためのサブタスク・キャンセルおよび移動計画が存在するかどうかが判定される。エッジ・コンピューティング・フレームワークのためのサブタスク・キャンセルおよび移動計画が存在すると判定したことに応答して、サブタスク・キャンセルおよび移動計画に基づいて、第2の複数のサブタスクのうちのより優先度の高いサブタスクを実行するために指定されたエッジ・デバイスの第1のクラスタのうちの指定されたエッジ・デバイスから、第1の複数のサブタスクのうちのより優先度の低いサブタスクがキャンセルされる。エッジ・デバイスの第1のクラスタのうちの指定されたエッジ・デバイスからキャンセルされた第1の複数のサブタスクのうちのより優先度の低いサブタスクは、サブタスク・キャンセルおよび移動計画に基づいて、実行するためにエッジ・デバイスの第1のクラスタに含まれない別のエッジ・デバイスに移動される。第2の複数のサブタスクのうちのより優先度の高いサブタスクは、実行するためにエッジ・デバイスの第1のクラスタのうちの指定されたエッジ・デバイスに送られる。他の例証的実施形態によれば、エッジ・デバイス・タスク管理のためのコンピュータ・システムおよびコンピュータ・プログラム製品が提供される。
【図面の簡単な説明】
【0004】
【
図1】例証的実施形態が実装され得るデータ処理システムのネットワークの図的表現である。
【
図2】例証的実施形態が実装され得るデータ処理システムの図である。
【
図3】例証的実施形態が実装され得るクラウド・コンピューティング環境を示す図である。
【
図4】例証的実施形態によるクラウド・コンピューティング環境の抽象化層の例を示す図である。
【
図5】例証的実施形態によるタスク管理システムの例を示す図である。
【
図6】例証的実施形態によるサブタスクを有する第1のタスクの例を示す図である。
【
図7】例証的実施形態による、第1のタスクのための選択エッジ・デバイス・クラスタ・プロセスの例を示す図である。
【
図8】例証的実施形態による、パッシング・サブタスク結果およびタスク・ステータス・プロセスの例を示す図である。
【
図9】例証的実施形態による、サブタスクを有する第2のタスクの例を示す図である。
【
図10】例証的実施形態による、エッジ・デバイス属性テーブルの例を示す図である。
【
図11】例証的実施形態による、サブタスク割当てプロセスの例を示す図である。
【
図12】例証的実施形態による、エッジ・デバイスにサブタスクを送るプロセスの例を示す図である。
【
図13】例証的実施形態による、ペンディング計画プロセスの例を示す図である。
【
図14】例証的実施形態による、キャンセルおよび移動計画プロセスの例を示す図である。
【
図15A】例証的実施形態による、動的タスク移動を介したクラスタにまたがるエッジ・タイム・シェアリングのためのプロセスを示すフローチャートである。
【
図15B】例証的実施形態による、動的タスク移動を介したクラスタにまたがるエッジ・タイム・シェアリングのためのプロセスを示すフローチャートである。
【発明を実施するための形態】
【0005】
本発明は、統合のいずれかの可能な技術詳細レベルにおけるシステム、方法、またはコンピュータ・プログラム製品、あるいはその組合せであってもよい。コンピュータ・プログラム製品は、本発明の態様をプロセッサに実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読ストレージ媒体(または複数の媒体)を含み得る。
【0006】
コンピュータ可読ストレージ媒体は、命令実行デバイスで使用するための命令を保持し、記憶することができる有形デバイスであることが可能である。コンピュータ可読ストレージ媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁気ストレージ・デバイス、半導体ストレージ・デバイス、または前述の任意の適切な組合せであってもよいがこれらに限定されない。コンピュータ可読ストレージ媒体のより具体的な例の完全に網羅されていないリストは、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ(RAM)、リード・オンリ・メモリ(ROM)、消去可能プログラマブル・リード・オンリ・メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク・リード・オンリ・メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリ・スティック、フロッピー(R)・ディスク、命令が記録されたパンチ・カードまたは溝内隆起構造などの機械的にエンコードされたデバイス、および前述の任意の適切な組合せを含む。コンピュータ可読ストレージ媒体は、本明細書で使用されるように、電波もしくは他の自由に伝搬する電磁波、導波路もしくは他の伝送媒体を通じて伝搬する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、またはワイヤを通じて伝送される電気信号など、本質的に一時的な信号であると解釈されるべきではない。
【0007】
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれの計算/処理デバイスに、あるいは、例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、もしくはワイヤレス・ネットワーク、またはその組合せなどの、ネットワークを介して外部コンピュータまたは外部ストレージ・デバイスに、ダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを備え得る。各計算/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、コンピュータ可読プログラム命令をネットワークから受け取り、それぞれの計算/処理デバイス内のコンピュータ可読ストレージ媒体に記憶するためにコンピュータ可読プログラム命令を転送する。
【0008】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、インストラクション・セット・アーキテクチャ(ISA)命令、機械語命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路機器のための構成データ、または、Smalltalk(R)、C++、もしくは同様のものなどのオブジェクト指向プログラミング言語、および「C」プログラミング言語もしくは類似のプログラミング言語などの手続き型プログラミング言語を含む、1つもしくは複数のプログラミング言語の任意の組合せで書かれたソース・コードもしくはオブジェクト・コードのいずれかでよい。コンピュータ可読プログラム命令は、スタンド・アロンのソフトウェア・パッケージとして、全面的にユーザのコンピュータ上で、または部分的にユーザのコンピュータ上で実行することができるか、部分的にユーザのコンピュータ上および部分的にリモート・コンピュータ上で、または全面的にリモート・コンピュータもしくはサーバ上で実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)もしくはワイド・エリア・ネットワーク(WAN)を含む任意のタイプのネットワークを通じてユーザのコンピュータに接続されてもよく、または、接続は、(例えば、インターネット・サービス・プロバイダを使用したインターネットを通じて)外部コンピュータに対して行われてもよい。いくつかの実施形態では、例えば、プログラム可能論理回路機器、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路機器は、本発明の態様を実施するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路機器を個別化にすることによって、コンピュータ可読プログラム命令を実行することができる。
【0009】
本発明の実施形態による、方法、装置(システム)、およびコンピュータ・プログラム製品の流れ図またはブロック図あるいはその両方を参照しながら、本発明の態様が本明細書で説明される。流れ図またはブロック図あるいはその両方の各ブロック、および流れ図またはブロック図あるいはその両方におけるブロックの組合せは、コンピュータ可読プログラム命令によって実行できることが理解されよう。
【0010】
これらのコンピュータ可読プログラム命令は、コンピュータのプロセッサ、または他のプログラム可能データ処理装置によって実行する命令が、流れ図またはブロック図あるいはその両方の1つまたは複数のブロックで指定された機能/行為を実行するための手段を作り出すべく、機械を生み出すために、コンピュータのプロセッサ、または他のプログラム可能データ処理装置に提供されてもよい。これらのコンピュータ可読プログラム命令はまた、流れ図またはブロック図あるいはその両方の1つまたは複数のブロックで指定された機能/行為の態様を実行する命令を含む製品を、命令を記憶したコンピュータ可読ストレージ媒体が備えるべく、コンピュータ可読ストレージ媒体に格納されてもよく、特定の様式で機能するように、コンピュータ、プログラム可能データ処理装置、または他のデバイス、あるいはその組合せに指示することができる。
【0011】
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラム可能装置、または他のデバイス上で実行する命令が、流れ図またはブロック図あるいはその両方の1つまたは複数のブロックで指定された機能/行為を実行するべく、コンピュータ実行プロセスを生み出すように、コンピュータ、他のプログラム可能装置、または他のデバイス上で一連の動作ステップを実施させるために、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードされてもよい。
【0012】
図中の流れ図およびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能、および動作を示す。この点に関して、流れ図またはブロック図の中の各ブロックは、指定の論理機能を実現するための1つまたは複数の実行可能命令を含む命令のモジュール、セグメント、または一部を表すことができる。いくつかの代替実装形態において、ブロックに記された機能は、図に記された順序とは異なる順序で発生してもよい。例えば、連続して示された2つのブロックは、実際には、同時に、実質的に同時に、部分的もしくは全面的に時間的に重複するように実行される1つのステップとして実現されてもよく、またはブロックは、時には、含まれる機能に応じて、逆の順序で実行されてもよい。ブロック図または流れ図あるいはその両方の各ブロック、および、ブロック図または流れ図あるいはその両方におけるブロックの組合せは、指定の機能もしくは行為を行うか、または、専用ハードウェアとコンピュータ命令との組合せを実行する専用ハードウェア・ベースのシステムによって実現できることにも留意されたい。
【0013】
図をここで参照すると、また特に
図1~
図5を参照すると、例証的実施形態が実装され得るデータ処理環境の図が提供されている。
図1~
図5は単に例であることが意図され、異なる実施形態が実装され得る環境に関して、何らかの限定を主張または示唆することを意図するものではないことを理解されたい。描写された環境に多くの変更が行われてもよい。
【0014】
図1は、例証的実施形態が実装され得るデータ処理システムのネットワークの図的表現を描写する。ネットワーク・データ処理システム100は、例証的実施形態が実装され得るコンピュータ、データ処理システム、および他のデバイスのネットワークである。ネットワーク・データ処理システム100は、ネットワーク102を含み、ネットワーク102は、ネットワーク・データ処理システム100内で一緒に接続されたコンピュータ、データ処理システム、および他のデバイスの間の通信リンクを提供するために使用される媒体である。ネットワーク102は、例えば、ワイヤ通信リンク、ワイヤレス通信リンク、光ファイバ・ケーブル、および同様のものなどの接続を含み得る。
【0015】
描写された例では、サーバ104およびサーバ106は、ストレージ108およびエッジ・デバイス110と共に、ネットワーク102に接続する。サーバ104およびサーバ106は、ネットワーク102への高速接続を伴うサーバ・コンピュータである。さらに、サーバ104およびサーバ106は、エッジ・デバイス110にタスク管理サービスを提供するアプリケーション・プログラミング・インターフェース・サーバである。例えば、サーバ104およびサーバ106は、タスクを含むサブタスクの属性に基づいて、エッジ・デバイスのクラスタにまたがる動的タスク移動を使用して、エッジ・デバイス110によるタスクの実施を管理することができる。タスクは、エッジ・デバイス110によって実施される能力がある任意のタイプのタスクでもよい。エッジ・デバイス110は、エッジ・コンピューティング・フレームワークにおける複数の異なるタイプのエッジ・デバイスを表し、例えば、ネットワーク・コンピュータ、ネットワーク・デバイス、スマート・デバイス、および同様のものを含むことができる。また、サーバ104およびサーバ106は、1つまたは複数のクラウド環境における複数のコンピューティング・ノードをそれぞれ表し得ることに留意されたい。
【0016】
クライアント112、クライアント114、およびクライアント116も、ネットワーク102に接続する。クライアント112、114、および116は、サーバ104およびサーバ106のクライアントである。この例では、クライアント112、114、および116は、ネットワーク102へのワイヤ通信リンクを伴うデスクトップまたはパーソナル・コンピュータとして示されている。それでも、クライアント112、114、および116は例にすぎず、ネットワーク102へのワイヤまたはワイヤレス通信リンクを伴う、例えば、ラップトップ・コンピュータ、ハンドヘルド・コンピュータ、モバイル・フォン、ゲーミング・デバイス、および同様のものなどの、他のタイプのデータ処理システムを表し得ることに留意されたい。クライアント112、114、および116のユーザは、クライアント112、114、および116を利用して、サーバ104およびサーバ106による異なるタイプのタスクの実施をリクエストすることができる。
【0017】
ストレージ108は、構造化フォーマットまたは非構造化フォーマットで任意のタイプのデータを格納する能力があるネットワーク・ストレージ・デバイスである。さらに、ストレージ108は、データ・ストアのセットを備える複数のネットワーク・ストレージ・デバイスを表し得る。さらに、ストレージ108は、複数のサーバの識別子およびネットワーク・アドレス、複数のエッジ・デバイスの識別子およびネットワーク・アドレス、エッジ・デバイス・クラスタ・メタデータ、タスク識別子、タスク属性、および同様のものを格納し得る。さらに、ストレージ108は、例えば、システム・アドミニストレータおよびユーザに関連付けられたユーザ名、パスワード、およびバイオメトリック・データを含み得る認証または資格証明書データなどの、他のタイプのデータを格納し得る。
【0018】
さらに、ネットワーク・データ処理システム100は、図示していない任意の数の追加のサーバ、エッジ・デバイス、クライアント、ストレージ・デバイス、および他のデバイスを含み得ることに留意されたい。ネットワーク・データ処理システム100内にあるプログラム・コードは、コンピュータ可読ストレージ媒体に格納され、使用のために、コンピュータまたは他のデータ処理デバイスにダウンロードされてもよい。例えば、プログラム・コードは、サーバ104のコンピュータ可読ストレージ媒体に格納され、エッジ・デバイス110での使用のために、ネットワーク102を介してエッジ・デバイス110にダウンロードされてもよい。
【0019】
描写された例では、ネットワーク・データ処理システム100は、例えば、インターネット、イントラネット、ワイド・エリア・ネットワーク、メトロポリタン・エリア・ネットワーク、ローカル・エリア・ネットワーク、テレコミュニケーション・ネットワーク、またはその任意の組合せなどの、いくつかの異なるタイプの通信ネットワークとして実装され得る。
図1は、単なる一例であることが意図され、異なる例証的実施形態に対する構造的限定を意図するものではない。
【0020】
本明細書で使用されるように、アイテムを参照しながら使用されるとき、「いくつかの」は、アイテムのうちの1つまたは複数を意味する。例えば、「いくつかの異なるタイプの通信ネットワーク」は、1つまたは複数の異なるタイプの通信ネットワークである。同様に、「のセット」は、アイテムを参照しながら使用されるとき、アイテムのうちの1つまたは複数を意味する。
【0021】
さらに、「のうちの少なくとも1つ」という用語は、アイテムのリストと共に使用されるとき、リスト化されたアイテムの1つまたは複数の異なる組合せが使用され得ること、および、リスト内の各アイテムのうちのただ1つが必要とされ得ることを意味する。言い換えれば、「のうちの少なくとも1つ」は、アイテムの任意の組合せおよび任意の数のアイテムがリストから使用され得るが、リスト内のアイテムのすべてが必要なわけではないことを意味する。アイテムは、特定のオブジェクト、モノ、またはカテゴリでもよい。
【0022】
例えば、限定することなく、「アイテムA、アイテムB、またはアイテムCのうちの少なくとも1つ」は、アイテムA、アイテムAおよびアイテムB、またはアイテムBを含み得る。この例は、アイテムA、アイテムB、およびアイテムC、または、アイテムBおよびアイテムCも含み得る。当然、これらのアイテムの任意の組合せが存在し得る。いくつかの例証的な例では、「のうちの少なくとも1つ」は、例えば、限定することなく、アイテムAのうちの2つ、アイテムBのうちの1つ、およびアイテムCのうちの10個、または、アイテムBのうちの4つ、およびアイテムCのうちの7つ、または、他の適切な組合せでもよい。
【0023】
図2をここで参照すると、例証的実施形態によるデータ処理システムの図が描写されている。データ処理システム200は、
図1のサーバ104などのコンピュータの例であり、この中に、例証的実施形態のタスク管理プロセスを実行するコンピュータ可読プログラム・コードまたは命令が置かれ得る。この例では、データ処理システム200は通信ファブリック202を含み、通信ファブリック202は、プロセッサ・ユニット204、メモリ206、永続ストレージ208、通信ユニット210、入出力(I/O)ユニット212、およびディスプレイ214の間の通信を提供する。
【0024】
プロセッサ・ユニット204は、メモリ206にロードされ得るソフトウェア・アプリケーションおよびプログラムに関する命令を実行するように機能する。プロセッサ・ユニット204は、特定の実装形態に応じて、1つもしくは複数のハードウェア・プロセッサ・デバイスのセットでもよく、またはマルチコア・プロセッサでもよい。
【0025】
メモリ206および永続ストレージ208は、ストレージ・デバイス216の例である。本明細書で使用されるように、コンピュータ可読ストレージ・デバイスまたはコンピュータ可読ストレージ媒体は、例えば、限定することなく、データ、関数形式のコンピュータ可読プログラム・コード、または他の適切な情報、あるいはその組合せなどの情報を、一時的または永続的に格納することができるハードウェアのいずれかである。さらに、コンピュータ可読ストレージ・デバイスまたはコンピュータ可読ストレージ媒体は、一時的な信号などの伝搬媒体を除外する。メモリ206は、これらの例では、例えば、ランダム・アクセス・メモリまたは、フラッシュ・メモリなどの任意の他の適切な揮発性もしくは不揮発性ストレージ・デバイスでよい。永続ストレージ208は、特定の実装形態に応じて、様々な形をとってもよい。例えば、永続ストレージ208は、1つまたは複数のデバイスを収めてもよい。例えば、永続ストレージ208は、ディスク・ドライブ、ソリッド・ステート・ドライブ、書換え可能光ディスク、書換え可能磁気テープ、または上記のいくつかの組合せでよい。永続ストレージ208によって使用される媒体は取外し可能でよい。例えば、永続ストレージ208のために取外し可能ハード・ドライブが使用されてもよい。
【0026】
通信ユニット210は、この例では、
図1のネットワーク102などのネットワークを介した、他のコンピュータ、データ処理システム、およびデバイスとの通信を提供する。通信ユニット210は、物理通信リンクとワイヤレス通信リンク両方の使用を通じた通信を提供してもよい。物理通信リンクは、例えば、ワイヤ、ケーブル、ユニバーサル・シリアル・バス、または任意の他の物理的技術を利用して、データ処理システム200のための物理通信リンクを確立してもよい。ワイヤレス通信リンクは、例えば、短波、高周波、超高周波、マイクロ波、ワイヤレス・フィデリティ(Wi-Fi)、Bluetooth(R)技術、グローバル・システム・フォー・モバイル・コミュニケーションズ(GSM)、符号分割多元接続(CDMA)、第2世代(2G)、第3世代(3G)、第4世代(4G)、4Gロング・ターム・エボリューション(LTE)、LTEアドバンスト、第5世代(5G)、または任意の他のワイヤレス通信技術もしくは標準を利用して、データ処理システム200のためのワイヤレス通信リンクを確立してもよい。
【0027】
入出力ユニット212は、データ処理システム200に接続され得る他のデバイスとのデータの入出力を可能にする。例えば、入出力ユニット212は、キーパッド、キーボード、マウス、マイクロフォン、または他のいくつかの適切な入力デバイス、あるいはその組合せを通じたユーザ入力のための接続を提供してもよい。ディスプレイ214は、ユーザに情報を表示するためのメカニズムを提供し、例えば、ユーザ・インターフェースまたは入力データを通じてユーザがオン・スクリーン選択を行えるようにするためのタッチ・スクリーン機能を含み得る。
【0028】
オペレーティング・システム、アプリケーション、またはプログラム、あるいはその組合せに関する命令は、ストレージ・デバイス216に置かれてもよく、ストレージ・デバイス216は、通信ファブリック202を通じてプロセッサ・ユニット204と通信している。この例証的な例では、命令は、関数形式で永続ストレージ208上にある。これらの命令は、プロセッサ・ユニット204による実行のために、メモリ206にロードされてもよい。異なる実施形態のプロセスは、コンピュータ実装命令を使用して、プロセッサ・ユニット204によって実施されてもよく、コンピュータ実装命令は、メモリ206などのメモリに置かれてもよい。これらのプログラム命令は、プログラム・コード、コンピュータ使用可能プログラム・コード、またはコンピュータ可読プログラム・コードと呼ばれ、プロセッサ・ユニット204のプロセッサによって読み込まれ、実行され得る。プログラム命令は、異なる実施形態では、メモリ206または永続ストレージ208などの、異なる物理コンピュータ可読ストレージ・デバイスに含まれてもよい。
【0029】
プログラム・コード218は、選択的に取外し可能なコンピュータ可読媒体220に関数形式で置かれ、プロセッサ・ユニット204による実行のために、データ処理システム200にロードされるか、転送されてもよい。プログラム・コード218およびコンピュータ可読媒体220は、コンピュータ・プログラム製品222を形成する。1つの例では、コンピュータ可読媒体220は、コンピュータ可読ストレージ媒体224またはコンピュータ可読信号媒体226でよい。
【0030】
これらの例証的な例では、コンピュータ可読ストレージ媒体224は、プログラム・コード218を伝搬または伝送させる媒体ではなく、プログラム・コード218を格納するために使用される物理的なまたは有形のストレージ・デバイスである。コンピュータ可読ストレージ媒体224は、例えば、永続ストレージ208の一部であるハード・ドライブなどのストレージ・デバイスに転送するための、永続ストレージ208の一部であるドライブまたは他のデバイスに挿入または配置された、光または磁気ディスクを含んでもよい。コンピュータ可読ストレージ媒体224はまた、データ処理システム200に接続されたハード・ドライブ、サム・ドライブ、またはフラッシュ・メモリなどの、永続ストレージの形をしていてもよい。
【0031】
代替として、プログラム・コード218は、コンピュータ可読信号媒体226使用して、データ処理システム200に転送されてもよい。コンピュータ可読信号媒体226は、例えば、プログラム・コード218を収める伝搬データ信号でもよい。例えば、コンピュータ可読信号媒体226は、電磁気信号、光信号、または任意の他の適切なタイプの信号でよい。これらの信号は、ワイヤレス通信リンク、光ファイバ・ケーブル、同軸ケーブル、ワイヤ、または任意の他の適切なタイプの通信リンクなどの、通信リンクを介して伝送され得る。
【0032】
さらに、本明細書で使用されるように、「コンピュータ可読媒体220」は、単数形または複数形であることが可能である。例えば、プログラム・コード218は、単一のストレージ・デバイスまたはシステムの形でコンピュータ可読媒体220に置かれることが可能である。別の例では、プログラム・コード218は、複数のデータ処理システム内に分散されたコンピュータ可読媒体220に置かれることが可能である。言い換えれば、プログラム・コード218内のいくつかの命令は、1つのデータ処理システム内に置かれることが可能であるが、プログラム・コード218内の他の命令は、1つまたは複数の他のデータ処理システム内に置かれることが可能である。例えば、プログラム・コード218の一部は、サーバ・コンピュータのコンピュータ可読媒体220に置かれることが可能であるが、プログラム・コード218の別の部分は、クライアント・コンピュータのセット内にあるコンピュータ可読媒体220に置かれることが可能である。
【0033】
データ処理システム200のために示された異なる構成要素は、異なる実施形態が実装され得る様式に構造的限定を提供することを意図していない。いくつかの例証的な例では、構成要素の1つまたは複数は、別の構成要素に組み込まれるか、そうでなければ、別の構成要素の一部を形成してもよい。例えば、いくつかの例証的な例では、メモリ206またはその一部は、プロセッサ・ユニット204内に組み込まれてもよい。異なる例証的実施形態は、データ処理システム200のために示されたものの他のまたはその代わりの構成要素を含むデータ処理システム内に実装されることが可能である。
図2に示された他の構成要素は、示された例証的な例から変化させることができる。異なる実施形態は、プログラム・コード218を実行することができる任意のハードウェア・デバイスまたはシステムを使用して、実装されることが可能である。
【0034】
別の例では、通信ファブリック202を実装するためにバス・システムが使用されてもよく、システム・バスまたは入出力バスなどの、1つまたは複数のバスで構成されてもよい。当然、バス・システムは、バス・システムに取り付けられた異なる構成要素またはデバイスの間のデータ転送を提供する任意の適切なタイプのアーキテクチャを使用して実装され得る。
【0035】
本開示は、クラウド・コンピューティングについての詳細な説明を含むが、本明細書で列挙される教示の実装形態は、クラウド・コンピューティング環境に限定されないことが理解されている。むしろ、例証的実施形態は、現在既知のまたは後に開発される他の任意のタイプのコンピューティング環境と併用して実装される余地がある。クラウド・コンピューティングは、最低限の管理努力またはサービス提供者との対話で迅速に提供および公開されることが可能な、例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービスなどの、構成可能なコンピューティング・リソースの共用プールへの、便利なオンデマンドのネットワーク・アクセスを可能にするためのサービス配信のモデルである。このクラウド・モデルは、少なくとも5つの特性、少なくとも3つのサービス・モデル、および少なくとも4つの導入モデルを含み得る。
【0036】
特性は、例えば、オンデマンド・セルフ・サービス、ブロード・ネットワーク・アクセス、リソース・プーリング、迅速な伸縮性、およびメジャード・サービスを含み得る。オンデマンド・セルフ・サービスは、サーバ時間およびネットワーク・ストレージなどのコンピューティング能力を、クラウド利用者が、サービスの提供者との人間による対話を必要とせず必要に応じて自動的に、一方的に提供することができる。ブロード・ネットワーク・アクセスは、ネットワークを介して利用可能で、例えば、モバイル・フォン、ラップトップ、およびパーソナル・デジタル・アシスタントなどの、ヘテロジニアスなシンまたはシック・クライアント・プラットフォームによる使用を推進する標準メカニズムを通じてアクセスされる能力を提供する。リソース・プーリングは、マルチ・テナント・モデルを使用して複数の利用者をサーブするために、プロバイダのコンピューティング・リソースをプーリングすることを可能にし、異なる物理および仮想リソースが、需要に応じて動的に割り当てられ、再割り当てされる。利用者が一般的に、提供されるリソースの正確なロケーションについて制御権も知識もないが、例えば、国、州、またはデータ・センタなどの、抽象化のより高いレベルでロケーションを特定でき得るという点で、位置独立の意味がある。迅速な伸縮性は、素早くスケール・アウトするために場合によっては自動的に迅速かつ伸縮自在に提供され、素早くスケール・インするために迅速に公開されることが可能な能力を提供する。利用者には、提供するために利用可能な能力は、しばしば無制限のように見え、任意の量でいつでも購入することができる。メジャード・サービスは、例えば、ストレージ、処理、帯域幅、およびアクティブ・ユーザ・アカウントなどの、サービスのタイプに適した抽象化のいくつかのレベルで計量能力を活用することによって、クラウド・システムがリソース使用を自動的に制御および最適化することを可能にする。リソース使用率は、監視、制御、およびレポートされることが可能であり、利用されるサービスの提供者と利用者双方に透明性をもたらす。
【0037】
サービス・モデルは、例えば、サービスとしてのソフトウェア(SaaS)、サービスとしてのプラットフォーム(PaaS)、およびサービスとしてのインフラストラクチャ(IaaS)を含み得る。サービスとしてのソフトウェアは、クラウド・インフラストラクチャ上で動く提供者のアプリケーションを使用するために利用者に提供される能力である。アプリケーションは、ウェブ・ブラウザ(例えば、ウェブベースの電子メール)などの、シン・クライアント・インターフェースを通じて様々なクライアント・デバイスからアクセス可能である。利用者は、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または、ことによると個々のアプリケーション能力を含む、基礎をなすクラウド・インフラストラクチャの管理も制御も行わないが、限定的なユーザ固有のアプリケーション構成設定が考えうる例外である。サービスとしてのプラットフォームは、提供者によってサポートされるプログラミング言語およびツールを使用して作り出された、利用者が作り出したまたは獲得したアプリケーションを、クラウド・インフラストラクチャに導入するために利用者に提供される能力である。利用者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む、基礎をなすクラウド・インフラストラクチャの管理も制御も行わないが、導入したアプリケーション、および場合によっては、アプリケーションをホストする環境構成に対する制御権を有している。サービスとしてのインフラストラクチャは、オペレーティング・システムおよびアプリケーションを含むことができる任意のソフトウェアを利用者が導入し、動かすことができる、処理、ストレージ、ネットワーク、および他の基本的なコンピューティング・リソースを提供するために利用者に提供される能力である。利用者は、基礎をなすクラウド・インフラストラクチャの管理も制御も行わないが、オペレーティング・システム、ストレージ、導入されるアプリケーションに対する制御権、および場合によっては、例えば、ホスト・ファイアウォールなどのネットワーキング構成要素を選択する限定的な制御権を有する。
【0038】
導入モデルは、例えば、プライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、およびハイブリッド・クラウドを含み得る。プライベート・クラウドは、単に組織のために運用されるクラウド・インフラストラクチャである。プライベート・クラウドは、組織またはサード・パーティによって管理され得、敷地内または敷地外に存在し得る。コミュニティ・クラウドは、いくつかの組織によって共有されるクラウド・インフラストラクチャであり、例えば、ミッション、セキュリティ要件、ポリシ、およびコンプライアンス考慮などの、共有される懸念を有する固有のコミュニティをサポートする。コミュニティ・クラウドは、組織またはサード・パーティによって管理され得、敷地内または敷地外に存在し得る。パブリック・クラウドは、一般大衆または大手業界団体に対して利用可能にされたクラウド・インフラストラクチャであり、クラウド・サービスを売る組織によって所有される。ハイブリッド・クラウドは、一意のエンティティのままの、例えば、プライベート、コミュニティ、およびパブリック・クラウドなどの、2つ以上のクラウドから成るクラウド・インフラストラクチャであるが、例えば、クラウド間のロード・バランシングのためのクラウド・バースティングなどの、データおよびアプリケーション・ポータビリティを可能にする標準的なまたは独自の技術でまとめられる。
【0039】
クラウド・コンピューティング環境は、無国籍、疎結合、モジュラリティ、および意味論的相互運用性に焦点を合わせたサービス指向のものである。クラウド・コンピューティングの中心には、相互接続ノードのネットワークを備えるインフラストラクチャがある。
【0040】
図3をここで参照すると、例証的実施形態が実装され得るクラウド・コンピューティング環境を示す図が描写されている。この例証的な例では、クラウド・コンピューティング環境300は、例えば、パーソナル・デジタル・アシスタントもしくはスマート・フォン320A、デスクトップ・コンピュータ320B、ラップトップ・コンピュータ320C、または自動車コンピュータ・システム320N、あるいはその組合せなどの、クラウド利用者によって使用されるローカル・コンピューティング・デバイスが通信し得る、1つまたは複数のクラウド・コンピューティング・ノード310のセットを含む。クラウド・コンピューティング・ノード310は、例えば、
図1のサーバ104およびサーバ106でよい。ローカル・コンピューティング・デバイス320A~320Nは、例えば、
図1のエッジ・デバイス110およびクライアント112~116でよい。
【0041】
クラウド・コンピューティング・ノード310は互いに通信し得、上述のようなプライベート、コミュニティ、パブリック、もしくはハイブリッド・クラウド、またはその組合せなどの、1つまたは複数のネットワークに物理的または仮想的にグループ化され得る。これは、クラウド利用者がローカル・コンピューティング・デバイス320A~320Nなどのローカル・コンピューティング・デバイス上にリソースを維持する必要がない、サービスとしてのインフラストラクチャ、プラットフォーム、またはソフトウェア、あるいはその組合せを、クラウド・コンピューティング環境300が提供することを可能にする。ローカル・コンピューティング・デバイス320A~320Nのタイプは単なる例証であることが意図され、クラウド・コンピューティング・ノード310およびクラウド・コンピューティング環境300は、例えば、ウェブ・ブラウザを使用して、任意のタイプのネットワークまたはネットワーク・アドレス指定可能接続あるいはその両方を介して、任意のタイプのコンピュータ化デバイスと通信できることが理解されている。
【0042】
図4をここで参照すると、例証的実施形態による抽象化モデル層を示す図が描写されている。この例証的な例で示された機能抽象化層のセットは、
図3のクラウド・コンピューティング環境300などの、クラウド・コンピューティング環境によって提供され得る。
図4に示された構成要素、層、および機能は単なる例証であることが意図され、本発明の実施形態は、これらに限定されないことを予め理解されたい。描写されているように、以下の層および対応する機能が提供される。
【0043】
クラウド・コンピューティング環境の抽象化層400は、ハードウェアおよびソフトウェア層402、仮想化層404、管理層406、ならびにワークロード層408を含む。ハードウェアおよびソフトウェア層402は、クラウド・コンピューティング環境のハードウェアおよびソフトウェア構成要素を含む。ハードウェア構成要素は、例えば、メインフレーム410、RISC(縮小命令セット・コンピュータ)アーキテクチャ・ベースのサーバ412、サーバ414、ブレード・サーバ416、ストレージ・デバイス418、ならびにネットワークおよびネットワーキング構成要素420を含み得る。いくつかの例証的実施形態では、ソフトウェア構成要素は、例えば、ネットワーク・アプリケーション・サーバ・ソフトウェア422およびデータベース・ソフトウェア424を含み得る。
【0044】
仮想化層404は、仮想サーバ426、仮想ストレージ428、仮想プライベート・ネットワークを含む仮想ネットワーク430、仮想アプリケーションおよびオペレーティング・システム432、ならびに仮想クライアント434といった、仮想エンティティの例が提供され得る抽象化層を提供する。
【0045】
1つの例では、管理層406は、下記で説明される機能を提供し得る。リソース提供436は、クラウド・コンピューティング環境内でタスクを実施するために利用されるコンピューティング・リソースおよび他のリソースの動的な調達を行う。計量および価格設定438は、リソースがクラウド・コンピューティング環境内で利用されるときのコスト追跡、および、これらのリソースの利用に対する請求書作成またはインボイス作成を行う。1つの例では、これらのリソースは、アプリケーション・ソフトウェア・ライセンスを含み得る。セキュリティは、クラウド利用者およびタスクの検証、ならびに、データおよび他のリソースの保護を行う。ユーザ・ポータル440は、利用者およびシステム・アドミニストレータに、クラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理442は、要求されるサービス・レベルを満たすように、クラウド・コンピューティング・リソースの配分および管理を行う。サービス・レベル契約(SLA)プランニングおよびフルフィルメント444は、SLAに応じて将来の要件が予想されるクラウド・コンピューティング・リソースの事前配置および調達を行う。
【0046】
ワークロード層408は、クラウド・コンピューティング環境が利用され得る機能の例を提供する。実例のワークロードおよび機能は、ワークロード層408によって提供され得、マッピングおよびナビゲーション446、ソフトウェア開発およびライフサイクル管理448、仮想クラスルーム教育配信450、データ分析処理452、トランザクション処理454、ならびにエッジ・デバイス・タスク管理456を含み得る。
【0047】
ネットワークのエッジにおけるモノのインターネット・デバイスの数の増加は、データ・センタで計算されることになる大量のデータを生み出しており、ネットワーク帯域幅要件をその限界に押しやっている。ネットワーク技術の改善にもかかわらず、データ・センタは、多くのアプリケーションにとって重大な要件になり得る、受入れ可能な転送速度および応答時間を保証することができない。さらに、エッジにおけるモノのインターネット・デバイスは、クラウドからやってくるデータを絶えず消費し、例えば、企業、会社、団体、機構、機関、および同様のものなどのエンティティに、エンド・ユーザへの物理的な近さを活用してデータおよびサービス提供を非集中化させるようにコンテンツ配信ネットワークを構築することを強いている。
【0048】
エッジ・コンピューティングは、クラウドの代わりにタスクを実施し、サービスを提供するために、例えば、スマート・デバイス(例えば、スマート・フォン、スマート・テレビ、スマート・ウォッチ、スマート・グラス、スマート車両、スマート・アプライアンス、スマート・センサ、および同様のもの)、モバイル・フォン、ネットワーク・ゲートウェイおよびデバイス、ならびに同様のものなどの、モノのインターネット・デバイスを活用して、データ・センタからネットワークのエッジの方に計算を移す。タスクおよびサービスをエッジに移すことによって、より良い応答時間および帯域幅可用性を提供することができる。
【0049】
クラウド・コンピューティング、モノのインターネット、およびビジネス・モデルの開発および拡散により、エッジ・コンピューティングは、より大きい計算能力を提供するための次に台頭しつつある技術となっている。人工知能エッジ・コントローラに支援されたエッジ・コンピューティングが、現在、エッジ・デバイスの専用プログラミングおよび制御を含む多くの業界で広く採用されてきている。ますます増加する異なるタイプのタスクまたはワークロードが、これらのエッジ・デバイス上で動くことになる。コスト因子を考えると、いくつかのエッジ・デバイスは高価であり、限定的な機能を有し、異なるタスク間で共有され得る。エッジ・デバイスのタイム・シェアリングは、リソース利用率を改善し、コストを減少させる。タイム・シェアリングは、複数のタスク間のコンピューティング・リソースの配分である。
【0050】
複数のエッジ・デバイスを含む単一のエッジ・コンピューティング・フレームワーク上で、様々な異なるタスクが同時に(すなわち、同じ時間に)動き得る。さらに、コラボレーション、インタラクション、またはコンフリクト(例えば、同じエッジ・デバイス上でのタスク・プリエンプション)が、これらの異なるタイプのタスク間に存在し得る。さらに、各タスクの優先度およびリソース消費量は、異なり得る。エッジ・コンピューティング・プラットフォームは、リソースを適度にスケジュールしてエッジ・コンピューティング・プラットフォームの利用状態を改善しながら、重要なタスクが適切に優先順位付けされ、スムーズに実行されることを保証する必要がある。限定的なリソース条件で、重要なタスクを完了させることに、より高い優先度を与えながら、例証的実施形態は、エッジ・デバイスの適度なスケジューリングおよび使用が、より優先度の低いタスクが実行し続けることを保証することを可能にして、タスク実施に対するあり得るインパクトを最小化する。言い換えれば、例証的実施形態は、動的タスク移動を介したエッジ・デバイスのクラスタにまたがるエッジ・デバイス・タイム・シェアリングを可能にする。
【0051】
したがって、例証的実施形態は、それぞれのタスクに対応する優先度およびタグなどの属性に基づいて、動的タスク移動を提供することによって、エッジ層の能力を向上させる。さらに、例証的実施形態は、斬新な動的タスク移動プロセスを介して、エッジ層全体の効率を高める。その上、例証的実施形態は、エッジ・デバイス・タスク実施のためのより速い応答時間を可能にして、ユーザエクスペリエンスを改善する。
【0052】
したがって、例証的実施形態は、エッジ・デバイスのクラスタにまたがってタスクを移動させることに伴う技術的問題を克服する1つまたは複数の技術的解決策を提供する。その結果として、これらの1つまたは複数の技術的解決策は、タスク属性に基づく動的タスク移動を使用して、タスク実施を向上させ、応答時間を減少させることによって、エッジ・コンピューティングの分野における技術的効果および実践的応用を提供する。
【0053】
図5をここで参照すると、例証的実施形態による、タスク管理システムの例を示す図が描写されている。タスク管理システム500は、
図1のネットワーク・データ処理システム100などのデータ処理システムのネットワーク、または、
図3のクラウド・コンピューティング環境300などのクラウド・コンピューティング環境に実装されてもよい。タスク管理システム500は、タスク属性に基づく動的タスク移動を使用したエッジ・デバイスのクラスタにまたがるタイム・シェアリングのためのハードウェアおよびソフトウェア構成要素のシステムである。
【0054】
この例では、タスク管理システム500は、クラウド層502、エッジ層504、およびエッジ・デバイス506を含む。クラウド層502は、例えば、
図3のクラウド・コンピューティング環境300でもよい。クラウド層502は、データ・ストア508、アプリケーション・プログラミング・インターフェース・サーバ510、およびエッジ・コントローラ512を含む。データ・ストア508は、例えば、
図1のストレージ108でもよく、例えば、エッジ・デバイス・タスク管理データを含む。アプリケーション・プログラミング・インターフェース・サーバ510は、例えば、
図1のサーバ104、
図2のデータ処理システム200、または
図3のクラウド・コンピューティング・ノード310のうちの1つのクラウド・コンピューティング・ノードでもよい。アプリケーション・プログラミング・インターフェース・サーバ510は、タスクを実施したいというクライアント・デバイスからのユーザ・リクエストを、ネットワークを介して受け取る。アプリケーション・プログラミング・インターフェース・サーバ510は、リクエストされたタスクを実施するために、エッジ・デバイス506とやりとりし、エッジ・デバイス506を管理する。エッジ・コントローラ512は、エッジ・コンピューティング・フレームワーク内のすべてのネットワーク・ゲートウェイおよびエッジ・デバイス506への接続を担当する。さらに、エッジ・コントローラ512は、エッジ・デバイス506のすべてまたはクラスタにまたがって実行するために、エッジ・デバイス506からデータを収集して照合し、アプリケーション・プログラミング・インターフェース・サーバ510にデータを伝送し、アプリケーション・プログラミング・インターフェース・サーバ510からの命令を受け入れる。
【0055】
エッジ層504は、デバイスをローカルに接続することを担当する。さらに、エッジ層504は、データ収集、およびアプリケーション・プログラミング・インターフェース・サーバ510への接続を管理する。エッジ層504は、機能停止のハンドリング、ならびにデータの格納および転送も担当する。エッジ層504は、同期サービス514、メタデータ・ストア516、およびエッジ・エージェント518を含む。同期サービス514は、アプリケーション・プログラミング・インターフェース・サーバ510へのデータの同期を担当する。メタデータ・ストア516は、エッジ・デバイス506に含まれるエッジ・デバイスの異なるクラスタを定義するメタデータを含む。メタデータ・ストア516は、データ・ストア508からエッジ・デバイス・クラスタ・メタデータを取り出し得る。エッジ・エージェント518は、クラスタ定義器520、タスク送信器522、およびタスク結果受信器524を使用して、エッジ・デバイス506と通信する。クラスタ定義器520は、メタデータ・ストア516内の情報を使用して、エッジ・デバイスの異なるクラスタを定義する。クラスタ定義器520は、また、エッジ・デバイス間のタスクの移動に応答して、エッジ・デバイスのクラスタを精密にする。タスク送信器522は、優先度およびタグなどの対応するタスク属性に基づいて、それぞれのエッジ・デバイスにタスクを割り当てて送る。さらに、タスク送信器522は、タスク・キャンセルおよび移動計画に基づいて、エッジ・デバイス上のタスクをキャンセルして移動させるか、または、タスク・ペンディング計画に基づいて、エッジ・デバイス上のタスクを再起動する。タスク結果受信器524は、エッジ・デバイス506上のタスク・ステータスおよびタスクを実行した結果を受け取る。
【0056】
エッジ・デバイス506は、例えば、
図1のエッジ・デバイス110でもよく、エッジ・デバイスの任意のタイプおよび組合せを含み得る。この例では、エッジ・デバイス506は、エッジ・デバイス「A」526、エッジ・デバイス「B」528、エッジ・デバイス「C」530、エッジ・デバイス「D」532、およびエッジ・デバイス「E」534を含む。それでも、エッジ・デバイス506は、任意の数のエッジ・デバイスを含んでもよいことに留意されたい。また、エッジ・デバイスA526、エッジ・デバイスB528、エッジ・デバイスC530、エッジ・デバイスD532、およびエッジ・デバイスE534は、プロキシ536、プロキシ538、プロキシ540、プロキシ542、およびプロキシ544をそれぞれ含む。プロキシ536~544は、エッジ・デバイス506間の通信を提供する。さらに、エッジ・デバイスA526、エッジ・デバイスB528、エッジ・デバイスC530、エッジ・デバイスD532、およびエッジ・デバイスE534は、コンテナ546、コンテナ548、コンテナ550、コンテナ552、およびコンテナ554をそれぞれ含む。コンテナ546~554は、対応するエッジ・デバイス506に送られたタスクを実行する。
【0057】
図6をここで参照すると、例証的実施形態による、サブタスクを伴う第1のタスクの例を示す図が描写されている。サブタスクを伴う第1のタスク600は、例えば、
図5のタスク管理システム500などの、タスク管理システムに実装されてもよい。
【0058】
この例では、サブタスクを伴う第1のタスク600は、subtask_1_1 604、subtask_1_2 606、およびsubtask_1_3 608を含む、task_1 602である。それでも、task_1 602は単なる一例であり、例証的実施形態に対する限定を意図するものではないことに留意されたい。言い換えれば、task_1 602は、任意の数のサブタスクを含んでもよい。
【0059】
task_1 602のタスク定義610は、対応する次のサブタスク識別子を伴うサブタスク識別子を示す。この例では、subtask_1_1は、subtask_1_2という対応する次のサブタスクを有し、subtask_1_2は、subtask_1_3という対応する次のサブタスクを有する。task_1 602のサブタスク属性612は、対応するタグおよび優先度を伴うサブタスク識別子を示す。この例では、subtask_1_1は、対応するtag_1およびpriority_3を有し、subtask_1_2は、対応するtag_2、tag_4、およびpriority_2を有し、subtask_1_3は、対応するtag_3およびpriority_3を有する。タグは、どの特定のエッジ・デバイス上で、対応するサブタスクが実行する予定であるかを指示する。例えば、tag_1は、対応するサブタスクがエッジ・デバイスA上で実行する予定であることを指示することができ、tag_2は、対応するサブタスクがエッジ・デバイスB上で実行する予定であることを指示することができ、tag_3は、対応するサブタスクがエッジ・デバイスC上で実行する予定であることを指示することができ、tag_4は、対応するサブタスクがエッジ・デバイスD上で実行する予定であることを指示することができ、tag_5は、対応するサブタスクがエッジ・デバイスE上で実行する予定であることを指示することができる。優先度は、特定のサブタスクを実行する相対的な重要性を指示する。例えば、より優先度の高いサブタスクは、より優先度の低いサブタスクより優先して実行される。
【0060】
図7をここで参照すると、例証的実施形態による、第1のタスクのための選択エッジ・デバイス・クラスタ・プロセスの例を示す図が描写されている。第1のタスクのための選択エッジ・デバイス・クラスタ・プロセス700は、例えば、
図5のタスク管理システム500などの、タスク管理システムに実装されてもよい。
【0061】
この例では、
図5のエッジ・エージェント518などのエッジ・エージェント702は、
図5のクラスタ定義器520などのクラスタ定義器を利用して、task_1 706のためのエッジ・デバイス704を含むcluster_1を定義する。エッジ・デバイス704は、例えば、
図5のエッジ・デバイスA526、エッジ・デバイスB528、およびエッジ・デバイスC530などの、エッジ・デバイスA、エッジ・デバイスB、およびエッジ・デバイスCを含む。task_1 706は、例えば、
図6のsubtask_1_1 604、subtask_1_2 606、およびsubtask_1_3 608を含む、task_1 602などの、subtask_1_1、subtask_1_2、およびsubtask_1_3を含む。エッジ・エージェント702は、例えば、
図5のタスク送信器522などの、タスク送信器を利用して、
図6のサブタスク属性612などのサブタスク属性に含まれる対応するタグ、およびクラスタ定義器からのクラスタ・メタデータに基づいて、subtask_1_1、subtask_1_2、およびsubtask_1_3を、エッジ・デバイスA、エッジ・デバイスB、およびエッジ・デバイスCにそれぞれ送る。
【0062】
エッジ・デバイス属性テーブル708は、エッジ・デバイス識別子710、タグ712、CPU使用量714、現在のサブタスク716、現在のサブタスク・ステータス718、および現在のタスク720を含む。エッジ・デバイス属性テーブル708は、task_1 706がエッジ・デバイス704に送られる前のエッジ・デバイス704の属性を示す。エッジ・デバイス・クラスタ・テーブル722は、タスク識別子724、クラスタ識別子726、サブタスク識別子728、エッジ・デバイス識別子730、およびコーディネータ・プロキシ732を含む。エッジ・デバイス・クラスタ・テーブル722は、subtask_1_1、subtask_1_2、およびsubtask_1_3を含むtask_1 706のためのcluster_1としての、エッジ・デバイス704(すなわち、エッジ・デバイスA、B、およびC)の選択を示す。エッジ・デバイス・クラスタ・テーブル722はまた、例えば、エッジ・デバイスA526上のプロキシ536などの、エッジ・デバイスA上のプロキシが、cluster_1のためのコーディネータ・プロキシとして指定されることを示す。コーディネータ・プロキシは、クラスタ・メタデータに基づいて、cluster_1のエッジ・デバイス704の間のネットワーク・トラフィック(例えば、タスク結果およびタスク・ステータス)を制御する。
【0063】
図8をここで参照すると、例証的実施形態による、パッシング・サブタスク結果およびタスク・ステータス・プロセスの例を示す図が描写されている。パッシング・サブタスク結果およびタスク・ステータス・プロセス800は、例えば、
図5のタスク管理システム500などの、タスク管理システムに実装されてもよい。
【0064】
この例では、パッシング・サブタスク結果およびタスク・ステータス・プロセス800は、サブタスク結果パッシング・テーブル802およびタスク・ステータス・テーブル804を利用する。サブタスク結果パッシング・テーブル802は、エッジ・デバイス識別子806、サブタスク識別子808、タスク識別子810、クラスタ識別子812、次のサブタスク識別子814、次のエッジ・デバイス識別子816、およびコーディネータか(is coordinator)818を含む。サブタスク結果パッシング・テーブル802は、エッジ・デバイスA上のコーディネータ・プロキシが、各サブタスクの結果を受け取ること、および、それぞれのサブタスクの結果が、クラスタ・メタデータに基づいて、次のサブタスク(すなわち、次のエッジ・デバイス上の次のプロキシ)に送られることを指示する。タスク・ステータス・テーブル804は、エッジ・デバイス識別子820、サブタスク識別子822、サブタスク・ステータス824、クラスタ識別子826、タスク識別子828、およびタスク・ステータス830を含む。タスク・ステータス・テーブル804は、task_1の現在のステータスが、エッジ・デバイスA、B、およびCを含むcluster_1上で実行されていることを示している。さらに、タスク・ステータス・テーブル804は、対応するエッジ・デバイス上のtask_1の各サブタスクの現在のステータスを示している。例えば、subtask_1_1は、エッジ・デバイスA上での実行を終え、subtask_1_2は、エッジ・デバイスB上で実行されており、subtask_1_3は、エッジ・デバイスC上でペンディング中である。
【0065】
図9をここで参照すると、例証的実施形態による、サブタスクを有する第2のタスクの例を示す図が描写されている。サブタスクを有する第2のタスク900は、例えば、
図5のタスク管理システム500などの、タスク管理システムに実装されてもよい。
【0066】
この例では、サブタスクを有する第2のタスク900は、subtask_2_1 904およびsubtask_2_2 906を含むtask_2 902である。それでも、task_2 902は単なる一例であり、例証的実施形態に対する限定を意図するものではないことに留意されたい。言い換えれば、task_2 902は、任意の数のサブタスクを含んでもよい。
【0067】
task_2 902のタスク定義908は、対応する次のサブタスク識別子を伴うサブタスク識別子を示す。この例では、subtask_2_1は、subtask_2_2という対応する次のサブタスクを有する。task_2 902のサブタスク属性910は、対応するタグおよび優先度を伴うサブタスク識別子を示す。この例では、subtask_2_1は、対応するtag_2およびpriority_1を有し、subtask_2_2は、対応するtag_3およびpriority_3を有する。タグは、どの特定のエッジ・デバイス上で、対応するサブタスクが実行する予定であるかを示す。例えば、tag_2は、subtask_2_1がエッジ・デバイスB上で実行する予定であることを示し、tag_5は、subtask_2_2がエッジ・デバイスE上で実行する予定であることを示す。優先度は、実行する特定のサブタスクの相対的な重要性を示す。例えば、priority_1は、subtask_2_1が、より優先度の低いサブタスクよりも優先して実行される、優先度の高いサブタスクであることを示す。
【0068】
図10をここで参照すると、例証的実施形態による、エッジ・デバイス属性テーブルの例を示す図が描写されている。エッジ・デバイス属性テーブル1000は、例えば、
図5のタスク管理システム500などの、タスク管理システムに実装されてもよい。この例では、エッジ・デバイス属性テーブル1000は、エッジ・デバイス識別子1002、タグ1004、CPU使用量1006、現在のサブタスク1008、現在のサブタスク・ステータス1010、および現在のタスク1012を含む。エッジ・デバイス属性テーブル1000は、
図7のエッジ・デバイス属性テーブル708に似ている。それでも、エッジ・デバイス属性テーブル1000は、task_1のsubtask1_1、subtask1_2、およびsubtask1_3が、エッジ・デバイスA、B、およびCにそれぞれ送られた後の、ならびに、subtask2_1および2_2が、選択されたエッジ・デバイスに送られる前の、エッジ・デバイスA~Eの属性を示す。
【0069】
図11をここで参照すると、例証的実施形態による、サブタスク割当てプロセスの例を示す図が描写されている。サブタスク割当てプロセス1100は、例えば、
図5のタスク管理システム500などの、タスク管理システムに実装されてもよい。
【0070】
この例では、エッジ・エージェント1102は、
図5のクラスタ定義器520などのクラスタ定義器を利用して、task_1 1106のためのエッジ・デバイス1104のエッジ・デバイスA、D、およびCを含むcluster_1、ならびに、task_2 1108のためのエッジ・デバイス1104のエッジ・デバイスBおよびEを含むcluster_2を定義する。さらに、task_2 1108を実行したいというユーザ・リクエストが受け取られたとき、エッジ・デバイスAは、task_1 1106のsubtask_1_1を実行しており、subtask_1_2は、エッジ・デバイスB上でペンディング中であり、subtask_1_3は、エッジ・デバイスC上でペンディング中であることに留意されたい。task_2 1108のsubtask_2_1は、subtask_2_1に対応する、例えば、
図9のサブタスク属性910のtag_2およびpriority_1などの、タグおよび優先度のサブタスク属性に基づいて、エッジ・デバイス1104のエッジ・デバイスB上で実行する必要があるので、エッジ・エージェント1102の、例えば、
図5のタスク送信器522などの、タスク送信器は、subtask_1_2に対応する、例えば、
図6のサブタスク属性612のtag_2、tag_4、およびpriority_2などの、タグおよび優先度のサブタスク属性に基づいて、エッジ・デバイス1104のエッジ・デバイスD上で実行されるようにtask_1 1106のsubtask_1_2を割り当てる。さらに、タスク送信器は、subtask_2_2に対応する、例えば、
図9のサブタスク属性910のtag_5およびpriority_3などの、タグおよび優先度のサブタスク属性に基づいて、エッジ・デバイス1104のエッジ・デバイスE上で実行されるようにsubtask_2_2を割り当てる。
【0071】
エッジ・デバイス・クラスタ・テーブル1110は、タスク識別子1112、クラスタ識別子1114、サブタスク識別子1116、エッジ・デバイス識別子1118、およびコーディネータ・プロキシ1120を含む。エッジ・デバイス・クラスタ・テーブル1110は、エッジ・デバイス・クラスタ・テーブル1110がここでは、task_2 1108に対応するcluster_2に関する情報を含むことを除いて、
図7のエッジ・デバイス・クラスタ・テーブル722に似ている。さらに、エッジ・デバイス・クラスタ・テーブル1110は、エッジ・デバイスBではなく、エッジ・デバイスDがここではcluster_1に含まれることを示している。エッジ・デバイス・クラスタ・テーブル1110はまた、例えば、エッジ・デバイスE534上のプロキシ544などの、エッジ・デバイスE上のプロキシが、cluster_2のためのコーディネータ・プロキシとして指定されていることを示す。
【0072】
図12をここで参照すると、例証的実施形態による、エッジ・デバイスにサブタスクを送るプロセスの例を示す図が描写されている。エッジ・デバイスにサブタスクを送るプロセス1200は、例えば、
図5のタスク管理システム500などの、タスク管理システムに実装されてもよい。
【0073】
この例では、エッジ・エージェント1202は、例えば、
図5のタスク送信器522などの、タスク送信器を利用して、エッジ・デバイス1204にタスクを送る。タスクは、この例では、subtask_1_1、subtask_1_2、およびsubtask_1_3を含むtask_1 1206、ならびに、subtask_2_1およびsubtask_2_2を含むtask_2 1208である。タスク送信器は、サブタスク送信テーブル1210における情報を利用して、エッジ・デバイス1204の適切なエッジ・デバイスにそれぞれのサブタスクを送る。
【0074】
この例では、サブタスク送信テーブル1210は、エッジ・デバイス識別子1212、サブタスク識別子1214、タスク識別子1216、クラスタ識別子1218、次のサブタスク識別子1220、次のエッジ・デバイス識別子1222、およびコーディネータか1224を含む。エッジ・デバイス1204は、subtask_1_2を実行する能力があるエッジ・デバイスDを含むので、タスク送信器は、エッジ・デバイスBではなく、エッジ・デバイスD上で実行することになるsubtask_1_2を送ることになる。その結果として、subtask_1_1は、エッジ・デバイスA上で実行することになり、subtask_2_1は、エッジ・デバイスB上で実行することになり、subtask_1_3は、エッジ・デバイスCで実行することになり、subtask_1_2は、エッジ・デバイスDで実行することになり、subtask_2_2は、エッジ・デバイスEで実行することになる。
【0075】
図13をここで参照すると、例証的実施形態による、ペンディング計画プロセスの例を示す図が描写されている。ペンディング計画プロセス1300は、例えば、
図5のタスク管理システム500などの、タスク管理システムに実装されてもよい。
【0076】
この例では、エッジ・エージェント1302は、
図5のクラスタ定義器520などのクラスタ定義器を利用して、task_1 1306のためのエッジ・デバイス1304のエッジ・デバイスA、B、およびCを含むcluster_1、ならびに、task_2 1308のためのエッジ・デバイス1304のエッジ・デバイスBおよびEを含むcluster_2を定義する。さらに、task_2 1308を実行したいというユーザ・リクエストが受け取られたとき、エッジ・デバイスAは、task_1 1306のsubtask_1_1を実行していることに留意されたい。task_2 1308のsubtask_2_1は、そのtag_2およびpriority_1属性に基づいて、エッジ・デバイス1304のエッジ・デバイスB上で実行する必要があり、エッジ・デバイス1304は、この例のsubtask_1_2を実行する能力があるエッジ・デバイスを含まないので、エッジ・エージェント1302の、例えば、
図5のタスク送信器522などの、タスク送信器は、subtask_1_2が、より低い優先度属性(すなわち、priority_2)を有することに基づいて、subtask_2_1が実行を終えたとき、エッジ・デバイスB上で実行するためにsubtask_1_2のためのペンディング計画(すなわち、ペンディング計画テーブル1322)を作成する。
【0077】
エッジ・デバイス・クラスタ・テーブル1310は、タスク識別子1312、クラスタ識別子1314、サブタスク識別子1316、エッジ・デバイス識別子1318、およびコーディネータ・プロキシ1320を含む。エッジ・デバイス・クラスタ・テーブル1310は、subtask_1_2が、エッジ・デバイスB上でペンディング中であり、エッジ・デバイスBが、cluster_1とcluster_2両方に含まれることをエッジ・デバイス・クラスタ・テーブル1310が示していることを除いて、
図11のエッジ・デバイス・クラスタ・テーブル1110に似ている。ペンディング計画テーブル1322は、タスク識別子1324、クラスタ識別子1326、サブタスク識別子1328、エッジ・デバイス識別子1330、依存サブタスク識別子1332、および依存タスク識別子1334を含む。
【0078】
図14をここで参照すると、例証的実施形態による、キャンセルおよび移動計画プロセスの例を示す図が描写されている。キャンセルおよび移動計画プロセス1400は、例えば、
図5のタスク管理システム500などの、タスク管理システムに実装されてもよい。
【0079】
この例では、エッジ・エージェント1402は、
図5のクラスタ定義器520などのクラスタ定義器を利用して、task_1 1406のためのエッジ・デバイス1404のエッジ・デバイスA、D、およびCを含むcluster_1、ならびに、task_2 1408のためのエッジ・デバイス1404のエッジ・デバイスBおよびEを含むcluster_2を定義する。さらに、task_2 1408を実行したいというユーザ・リクエストが受け取られたとき、エッジ・デバイスAは、task_1 1406のsubtask_1_1を実行していることに留意されたい。task_2 1408のsubtask_2_1は、そのtag_2およびpriority_1属性に基づいて、エッジ・デバイス1404のエッジ・デバイスB上実行する必要があり、エッジ・デバイス1304は、この例のsubtask_1_2を実行する能力があるエッジ・デバイスDを含むので、エッジ・エージェント1302の、例えば、
図5のタスク送信器522などの、タスク送信器は、subtask_1_2が、より低いpriority_2属性を有することに基づいて、エッジ・デバイスB上のsubtask_1_2をキャンセルし、エッジ・デバイスDにsubtask_1_2を移動させるために、subtask_1_2のためのキャンセルおよび移動計画(すなわち、キャンセルおよび移動計画テーブル1422)を作成する。
【0080】
エッジ・デバイス・クラスタ・テーブル1410は、タスク識別子1412、クラスタ識別子1414、サブタスク識別子1416、エッジ・デバイス識別子1418、およびコーディネータ・プロキシ1420を含む。エッジ・デバイス・クラスタ・テーブル1410は、
図11のエッジ・デバイス・クラスタ・テーブル1110に似ている。キャンセルおよび移動計画テーブル1422は、タスク識別子1424、クラスタ識別子1426、サブタスク識別子1428、キャンセル・エッジ・デバイス識別子1430、および移動エッジ・デバイス識別子1432を含む。
【0081】
図15A~
図15Bをここで参照すると、例証的実施形態による、動的タスク移動を介したクラスタにまたがるエッジ・タイム・シェアリングのためのプロセスを示すフローチャートが示されている。
図15A~
図15Bに示されたプロセスは、例えば、
図1のネットワーク・データ処理システム100、
図3のクラウド・コンピューティング環境300、または
図5のタスク管理システム500などの、コンピュータ・システムに実装されてもよい。
【0082】
プロセスは、コンピュータ・システムが、実行するために第1の複数のサブタスクを含む第1のタスクを受け取るときに始まる(ステップ1502)。第1のタスクを受け取ることに応答して、コンピュータ・システムは、第1のタスクに対応する第1の複数のサブタスクの各それぞれのサブタスクの属性に基づいて、それぞれのサブタスクを実行するために、エッジ・コンピューティング・フレームワークに含まれる複数のエッジ・デバイスから、エッジ・デバイスの第1のクラスタを選択する(ステップ1504)。次いで、コンピュータ・システムは、実行のためのエッジ・デバイスの第1のクラスタ内の対応するエッジ・デバイスに、第1の複数のサブタスクの各それぞれのサブタスクを送る(ステップ1506)。
【0083】
その後、コンピュータ・システムは、エッジ・デバイスの第1のクラスタのそれぞれに含まれるプロキシ構成要素を使用して、エッジ・デバイスの第1のクラスタに対応するクラスタ・メタデータに基づいて、エッジ・デバイスの第1のクラスタに含まれる他のエッジ・デバイスに、サブタスクをその対応するエッジ・デバイス上で実行した結果を送る(ステップ1508)。さらに、コンピュータ・システムは、エッジ・デバイスの第1のクラスタの指定されたコーディネータ・プロキシに、第1のタスクのステータスを送る(ステップ1510)。さらに、コンピュータ・システムは、エッジ・デバイスの第1のクラスタの指定されたコーディネータ・プロキシを使用して、第1のタスクのステータスをタスク結果受信器と同期する(ステップ1512)。
【0084】
その後、コンピュータ・システムは、第1のタスクがエッジ・デバイスの第1のクラスタ上でまだ実行している間に、実行するために第2の複数のサブタスクを含む第2のタスクを受け取る(ステップ1514)。第2のタスクを受け取ることに応答して、コンピュータ・システムは、第2の複数のサブタスクのうちのより優先度の高いサブタスクの属性に基づいて、より優先度の高いサブタスクを実行するためのエッジ・デバイスの第1のクラスタのうちの指定されたエッジ・デバイスを含む第2のタスクに対応する第2の複数のサブタスクのそれぞれのサブタスクを実行するために複数のエッジ・デバイスから、エッジ・デバイスの第2のクラスタを選択する(ステップ1516)。
【0085】
コンピュータ・システムは、サブタスク・キャンセルおよび移動計画が存在するかどうかについての判定を行う(ステップ1518)。ステップ1518のはいの出力である、サブタスク・キャンセルおよび移動計画が存在することをコンピュータ・システムが判定すると、コンピュータ・システムは、サブタスク・キャンセルおよび移動計画に基づいて、第2の複数のサブタスクのうちのより優先度の高いサブタスクを実行するために指定されたエッジ・デバイスの第1のクラスタのうちの指定されたエッジ・デバイスから、第1の複数のサブタスクのうちのより優先度の低いサブタスクをキャンセルする(ステップ1520)。その後、コンピュータ・システムは、サブタスク・キャンセルおよび移動計画に基づいて、実行するためのエッジ・デバイスの第1のクラスタまたはエッジ・デバイスの第2のクラスタのどちらにも含まれない複数のエッジ・デバイス内の別のエッジ・デバイスに、エッジ・デバイスの第1のクラスタのうちの指定されたエッジ・デバイスからキャンセルされた第1の複数のサブタスクのより優先度の低いサブタスクを移動させる(ステップ1522)。さらに、コンピュータ・システムは、実行するためのエッジ・デバイスの第1のクラスタのうちの指定されたエッジ・デバイスに、第2の複数のサブタスクのうちのより優先度の高いサブタスクを送る(ステップ1524)。その後、プロセスは終了する。
【0086】
再びステップ1518に戻ると、ステップ1518のいいえの出力である、サブタスク・キャンセルおよび移動計画が存在しないことをコンピュータ・システムが判定すると、コンピュータ・システムは、サブタスク・ペンディング計画に基づいて、第2の複数のサブタスクのうちのより優先度の高いサブタスクを実行するために指定されたエッジ・デバイスの第1のクラスタのうちの指定されたエッジ・デバイス上の第1の複数のサブタスクのうちのより優先度の低いサブタスクを一時中断する(ステップ1526)。さらに、コンピュータ・システムは、実行するためにエッジ・デバイスの第1のクラスタのうちの指定されたエッジ・デバイスに、第2の複数のサブタスクのうちのより優先度の高いサブタスクを送る(ステップ1528)。その後、コンピュータ・システムは、第2の複数のサブタスクのうちのより優先度の高いサブタスクが、指定されたエッジ・デバイス上での実行を終えたとき、実行するためにエッジ・デバイスの第1のクラスタのうちの指定されたエッジ・デバイス上で一時中断された第1の複数のサブタスクのうちのより優先度の低いサブタスクを起動する(ステップ1530)。その後、プロセスは終了する。
【0087】
したがって、本発明の例証的実施形態は、サブタスクの属性に基づく動的タスク移動を使用した、エッジ・デバイスのクラスタにまたがるタイム・シェアリングのためのコンピュータ実装方法、コンピュータ・システム、およびコンピュータ・プログラム製品を提供する。本発明の様々な実施形態の説明を例証のために提示してきたが、網羅的であること、または、開示された実施形態に限定されることを意図するものではない。多くの変更形態および変形形態が、説明される実施形態の範囲から逸脱することなく、当業者には明らかであろう。本明細書で使用される専門用語は、実施形態の原理、実践的応用、もしくは市場で見つかる技術に対する技術的改善を最もよく説明するように、または、本明細書で開示された実施形態を当業者が理解できるように、選ばれた。
【国際調査報告】