【文献】
玉井 森彦,外3名,「PCグリッド環境での市場原理に基づいた資源共有方式」,情報処理学会論文誌,社団法人情報処理学会,2006年 2月15日,第47巻,第2号 ,pp.455-464
(58)【調査した分野】(Int.Cl.,DB名)
前記複数の空きタイムスロット中に前記サブタスクを実行するための前記エッジデバイス(104)における充電残量を決定するステップをさらに含み、前記通知プロファイルが前記充電残量を含む、請求項1に記載の方法。
【発明を実施するための形態】
【0006】
本明細書のいずれのブロック図も、本主題の原理を実施する例示的なシステムを示す概念図であることを、当業者なら理解されたい。同様に、いずれのフローチャート、流れ図、状態遷移図および擬似コードなども、コンピュータ可読媒体に実質的に表現して、コンピュータまたはプロセッサが明示されているか否かに関わらず、コンピュータまたはプロセッサによって実行することができる、様々なプロセスを表していることも理解されたい。
【0007】
本主題は、グリッドコンピューティングシステムにおいて遊休リソースによってタスクを実行する方法およびデバイスに関する。遊休リソースは、遊休状態にあって、その処理能力が利用されておらず、タスクの実行に利用することができるコンピューティングデバイスであるものとして理解してよい。
【0008】
グリッドコンピューティングシステムは、一般に、メインタスクが実行のために割り当てられる、専用リソースと呼ばれる、1つまたは複数のグリッドサーバを含む。メインタスクは、データ解析タスク、シミュレーション、モデリングタスク、および検査タスクなどを含むことができる。グリッドサーバは、非専用リソースと呼ばれる遊休コンピューティングデバイスと通信し、メインタスクに関連するサブタスクを遊休コンピューティングデバイスに割り当てることができる。遊休コンピューティングデバイスは、割り当てられたサブタスクを実行し、サブタスク結果をグリッドサーバに返送する。グリッドサーバは、遊休コンピューティングデバイスからサブタスク結果を取り出し、それらを集約してメインタスク結果を生成する。
【0009】
グリッドコンピューティングシステムでは、グリッドサーバは、計算負荷の高いメインタスクのサブタスクを割り当てるために、どのコンピューティングデバイスが遊休状態または空き状態であるかを見つける役割を担うことができる。遊休状態にあるコンピューティングデバイスがグリッドサーバとの通信を開始し、実行するタスクを要求するようなグリッドコンピューティングシステムが知られている。グリッドサーバは、遊休コンピューティングデバイスからの要求を受信し、実行するサブタスクを割り当てる。
【0010】
さらに、各グリッドサーバは、計算負荷の高いメインタスクを複数のデータ並列なサブタスクに分割する、または計算負荷の高いメインタスクを区分化していくつかのサブタスクを生成する。これらのすでに生成または区分化されているサブタスクは、実行のために遊休コンピューティングデバイスに割り当てられる。従来は、サブタスクが実行のために割り当てられる遊休コンピューティングデバイスが割り当てられたサブタスクを実行することができるかどうかを判定しない。これにより、割り当てられたサブタスクがその遊休コンピューティングデバイスによって実行され、完了されるかどうかを保証することができない。さらに、サブタスクは、タイムラインを用いて割り当てることができる。遊休コンピューティングデバイスの機能に関する知識を持たずにサブタスクを遊休コンピューティングデバイスに割り当てることにより、サブタスクがその遊休コンピューティングデバイスによってタイムライン内で実行されるかどうかを保証することができない。これは、遊休コンピューティングデバイスによるサブタスクの実行および完了に影響を及ぼし、ひいてはグリッドサーバに割り当てられたメインタスクの完了にも影響を及ぼす。
【0011】
さらに、グリッドサーバは、サブタスクを区分化し、サブタスクを遊休コンピューティングデバイスに割り当てる前に、遊休コンピューティングデバイスの機能を判定することができる。遊休状態で、サブタスクの実行のためにグリッドサーバと通信している可能性があるコンピューティングデバイスが多数ある状況では、各グリッドサーバは、グリッドコンピューティングシステムに結合されたこれらの多数のコンピューティングデバイスについてその機能を判定しなければならないことがある。これにより、グリッドサーバに大きな作業負荷が生じることになる。さらに、多数のグリッドサーバが多数のコンピューティングデバイスをリソースとして管理することにより、グリッドコンピューティングシステムの管理オーバヘッドも大幅に高くなることになる。
【0012】
本主題は、グリッドコンピューティングシステムにおいて遊休リソースによってタスクを実行するための方法およびデバイスに関する。グリッドコンピューティングシステムは、少なくとも1つのメインタスクが実行のために割り当てられる専用リソースとして機能する1つまたは複数のグリッドサーバを含み、また、遊休状態である間にメインタスクに関連するサブタスクの実行のために自分の処理能力を提供することができる非専用リソースとして機能する1つまたは複数のその他のコンピューティングデバイスを含む。1つの実施態様では、遊休リソースと呼ばれるその他のコンピューティングデバイスは、携帯電話や常駐ゲートウェイなどのエッジデバイスを含むことがある。エッジデバイスは、そのエッジデバイスが関連づけられたサービスプロバイダのネットワークの端部に位置するデバイスである。本主題のグリッドサーバおよびエッジデバイスは、遊休状態にある間にサブタスクを実行するエッジデバイスの計算能力に応じて、効率的にメインタスクからサブタスクに区分化することができるように構成される。これにより、エッジデバイスによるサブタスクの割当て、実行および完了は、従来のグリッドコンピューティングシステムの場合と比較して、大幅に効率的になる。
【0013】
本主題によるエッジデバイスは、その遊休状態を把握している。本主題によるエッジデバイスの遊休状態とは、そのエッジデバイスが、グリッドサーバなどの外部デバイスから受け取るタスクを実行するための処理能力およびデバイス容量を有している状態である。エッジデバイスは、大きな処理能力およびデバイスキャパシティを利用しないアプリケーションをいくつかバックグラウンドで実行している、またはそのようなタスクをいくつかバックグラウンドで実行しているときに、遊休状態または比較的遊休的な状態であると理解される。1つの実施態様では、エッジデバイスが遊休状態であるタイムスロットは、エッジデバイスが識別する。このようなタイムスロットは、空きタイムスロットと呼ばれる。各空きタイムスロットごとに、エッジデバイスは、その空きタイムスロットの持続時間を推定する。空きタイムスロットの持続時間を推定することに加えて、エッジデバイスは、識別した空きタイムスロット中にサブタスクを実行するためのエッジデバイスの少なくとも1つの計算能力パラメータを決定する。1つの例では、計算能力パラメータは、空きタイムスロット中の、エッジデバイスの計算速度、エッジデバイスの利用可能な処理メモリ、およびエッジデバイスのネットワーク帯域幅を含む。
【0014】
この識別および決定に基づいて、少なくとも1つの空きタイムスロット、その持続時間、およびその少なくとも1つの空きタイムスロットに関連するエッジデバイスの少なくとも1つの計算能力パラメータの情報が、エッジデバイスからグリッドコンピューティングシステム内のグリッドサーバに通知され、メインタスクの区分化が行われてエッジデバイスが実行できるサブタスクが生成される。
【0015】
本主題によるグリッドサーバは、エッジデバイスからの通知をリッスンして、空きタイムスロットおよびエッジデバイスの計算能力パラメータについての情報を取得する。1つの実施態様では、エッジデバイスから通知される、少なくとも1つの空きタイムスロット、その持続時間および1つまたは複数のエッジデバイスの少なくとも1つの計算能力パラメータの情報は、グリッドサーバが受信する。グリッドサーバは、各エッジデバイスからのこの情報を受信すると、空きタイムスロットの持続時間が、エッジデバイスが最小のサブタスクを完了するのに十分であるかどうか、およびその空きタイムスロットに関連する少なくとも1つの計算能力パラメータで、そのエッジデバイスかその最小のサブタスクを実行し、そのサブタスクのタイムラインを満たすことができるかどうかを判定するためのチェックを実行する。
【0016】
各エッジデバイスごとの上述のチェックに基づいて、グリッドサーバは、それに割り付けられたメインタスクを区分化して、各エッジデバイスが実行するサブタスクを作成する。各エッジデバイス用のサブタスクは、エッジデバイスによって通知された空きタイムスロットの持続時間および計算能力パラメータに基づいて作成される。エッジデバイス用に作成されたサブタスクは、次いで、グリッドサーバによってそれぞれ対応するエッジデバイスに割り当てられる。各エッジデバイスは、割り当てられたサブタスクを受信し、それを実行し、サブタスク結果をグリッドサーバに送る。グリッドサーバは、全てのエッジデバイスからのサブタスク結果を収集し、収集した結果を結合して、メインタスク結果を形成する。
【0017】
本主題のデバイスおよび方法によれば、エッジデバイスは、計算タスクを引き受ける前に、リソースとして機能するための自らの可用性を推定し、通知する。これにより、利用可能な遊休リソースを見つけるグリッドサーバの負担が軽減される。さらに、エッジデバイスは、タスクを実行するために利用可能な期間およびタスクを実行するための能力を、それら自体で推定する。これにより、遊休リソースのタスク実行能力を判定する負担をグリッドサーバに掛けることがなくなる。
【0018】
さらに、エッジデバイスの能力および遊休状態持続時間に見合ったサブタスクをグリッドサーバが区分化によって生成するので、エッジデバイスが空きタイムスロット中に実行することができるサブタスクが、実行のために割り当てられる。これにより、割り当てられたサブタスクの実行および完了が失敗する割合を低下させる助けとなり、メインタスクの完了が大幅に効率化される。
【0019】
本主題の上記その他の利点について、以下の図面と関連してさらに詳細に述べる。なお、この記述および図面は、本主題の原理を単に例示するものに過ぎないことに留意されたい。
【0020】
図1は、本主題の1実施態様によるグリッドコンピューティングシステム100を示す図である。グリッドコンピューティングシステム100は、メインタスクと呼ばれるタスクがそれぞれ実行のために割り当てられる、複数のグリッドサーバ102-1、102-2、…、102-Nを有する。以下、これら複数のグリッドサーバ102-1、102-2、…、102-Nは、全体としてグリッドサーバ102と呼び、また個々のグリッドサーバもグリッドサーバ102と呼ぶ。メインタスクは、外部のタスク割り付け器(
図1には図示せず)によってグリッドサーバ102に割り付けることができる。グリッドコンピューティングシステム100では、複数のエッジデバイス104-1、104-2、…、104-Mが、メインタスクのサブタスクを実行するために、グリッドサーバ102のうちの1つまたは複数と通信可能に結合することができる。以下、エッジデバイス104-1、104-2、…、104-Mは、全体としてエッジサーバ104と呼び、また個々のエッジデバイスもエッジデバイス104と呼ぶ。エッジデバイス104としては、例えば携帯電話やタブレットなどのモバイルデバイスが含まれ、また例えばルータ、スイッチ、モデムなどの常駐ゲートウェイも含まれる。
【0021】
グリッドサーバ102およびエッジデバイス104は、通信ネットワーク106を介して互いに通信可能に結合される。1つの実施態様では、エッジデバイス104は、インターネットに接続可能なエッジデバイスである。通信ネットワーク106は、ワイヤレスネットワークでもよいし、有線ネットワークでもよいし、またはそれらの組合せであってもよい。通信ネットワーク106は、個別ネットワークであってもよいし、あるいは例えばインターネットなど、互いに相互接続されて1つの大きなネットワークとして機能する多数の個別ネットワークの集合体であってもよい。通信ネットワーク106は、イントラネット、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、インターネットなど、様々なタイプのネットワークのうちの1つとして実施することができる。通信ネットワーク106は、例えばハイパーテキスト転送プロトコル(HTTP)や伝送制御プロトコル/インターネットプロトコル(TCP/IP)など、様々なプロトコルを使用して互いに通信する様々なタイプのネットワークの結合したものを表す、専用ネットワークであっても共用ネットワークであってもよい。
【0022】
通信ネットワーク106としては、広域自動車通信システム(GSM(登録商標))ネットワーク、汎用移動通信システム(UMTS)ネットワーク、ロングタームエボリューション(LTE)ネットワーク、パーソナル通信サービス(PCS)ネットワーク、時分割多重アクセス(TDMA)ネットワーク、符号分割多重アクセス(CDMA)ネットワーク、次世代ネットワーク(NGN)、公衆交換電話網(PSTN)、およびサービス総合デジタル網(ISDN)などの個別ネットワークも挙げられるが、これらに限定されるわけではない。さらに、エッジデバイス104とグリッドサーバ102およびその他のエンティティとの間の通信は、通信ネットワーク106に適合した通信プロトコルに基づいて行うことができることも理解されるであろう。
【0023】
さらに、
図1に示すように、各エッジデバイス104は、タイムスロットおよび能力モニタ108、および通知モジュール110を含む。エッジデバイス104のタイムスロットおよび能力モニタ108は、エッジデバイス104の遊休状態を示す空きタイムスロットを識別するように構成される。タイムスロットおよび能力モニタ108は、また、各空きタイムスロットの持続時間も推定する。さらに、タイムスロットおよび能力モニタ108は、識別された空きタイムスロット中にサブタスクを実行するためのエッジデバイス104の1つまたは複数の計算能力パラメータを決定する。エッジデバイス104の通知モジュール110は、空きタイムスロット、それらの空きタイムスロットの持続時間、およびそれらの空きタイムスロットに関連するエッジデバイス104の能力パラメータをグリッドサーバ102に通知するように構成される。
【0024】
図1に示すように、各グリッドサーバ102は、リソースモニタ112と、タスクスケジューラ114とを含む。グリッドサーバ102のリソースモニタ112は、空きタイムスロットおよび計算能力パラメータについての情報を有する、エッジデバイス104からの通知をリッスンするように構成される。リソースモニタ112は、1つまたは複数のエッジデバイス104から通知情報を受信することができる。各エッジデバイス104からの受信情報について、リソースモニタ112は、空きタイムスロットに関連する計算能力パラメータに基づいて、エッジデバイス104が最小のサブタスクを完了するための空きタイムスロットの持続時間の十分性と、エッジデバイス104の、その最小のサブタスクを実行して、そのサブタスクのタイムラインを満たす能力とに関するチェックを実行する。さらに、グリッドサーバ102のタスクスケジューラ114は、リソースモニタ112が実行したチェックに基づいて、それに割り付けられたメインタスクを区分化して、サブタスクを作成する。その後、タスクスケジューラ114は、作成したサブタスクを、実行するために対応するエッジデバイス104に割り当てる。
【0025】
図2は、本主題の1実施態様によるグリッドコンピューティングシステム100のエッジデバイス104およびグリッドサーバ102を示す図である。エッジデバイス104およびグリッドサーバ102は、1つまたは複数のプロセッサ202-1、202-2と、インタフェース204-1、204-2と、プロセッサ202-1、202-2に結合されたメモリ206-1、206-2とを含む。プロセッサ202-1は、エッジデバイスに設置されたプロセッサを含み、プロセッサ202-2は、サーバに設置されたプロセッサを含む。プロセッサ202-1および202-2を総称して、プロセッサ202と呼ぶ。同様に、インタフェース204-1は、エッジデバイスに設置されたインタフェースを含み、インタフェース204-2は、サーバに設置されたインタフェースを含む。インタフェース204-1および204-2を総称して、インタフェース204と呼ぶ。同様に、メモリ206-1は、エッジデバイスに設置されたメモリを含み、メモリ206-2は、サーバに設置されたメモリを含む。メモリ206-1および206-2を総称して、メモリ206と呼ぶ。
【0026】
各プロセッサ202は、単一のプロセッサユニットであってもよいし、それぞれが複数のコンピューティングユニットを含むこともあるいくつかのユニットであってもよい。各プロセッサ202は、1つまたは複数のマイクロプロセッサ、マイクロコンピュータ、マイクロコントローラ、デジタル信号プロセッサ、中央処理装置、状態機械、論理回路および/または動作命令に基づいて信号を操作する任意のデバイスとして実装することができる。様々な機能の中でも特に、プロセッサ202は、メモリ206に格納されたコンピュータ可読命令およびデータを取り出して実行するように構成される。
【0027】
インタフェース204としては、例えばキーボードや外部メモリなどの周辺デバイスとのインタフェースなど、様々なソフトウェアおよびハードウェアのインタフェースが挙げられる。インタフェース204は、エッジデバイス104とグリッドサーバ102との間の通信を可能にする1つまたは複数のポートを含むことができる。インタフェース204は、さらに、エッジデバイス104およびグリッドサーバ102が、外部コンピューティングデバイスや外部データベースなど他のデバイスと通信することも可能にすることができる。
【0028】
メモリ206としては、例えばスタティックランダムアクセスメモリ(SRAM)やダイナミックランダムアクセスメモリ(DRAM)などの揮発性メモリ、および/または読取り専用メモリ(ROM)や消去可能プログラム可能ROM、フラッシュメモリ、ハードディスク、光ディスク、磁気テープなどの不揮発性メモリなど、当技術分野で既知の任意のコンピュータ可読媒体を挙げることができる。
【0029】
さらに、エッジデバイス104およびグリッドサーバ102は、総称してモジュール208と呼ぶモジュール208-1および208-2と、総称してデータ210と呼ぶデータ210-1および210-2とをそれぞれ含む。モジュール208は、プロセッサ202に結合することができる。モジュール208は、特に、特定のタスクを実行する、または特定の抽象データ型を実施するルーチン、プログラム、オブジェクト、構成要素およびデータ構造などを含む。モジュール208は、さらに、例えばオペレーティングシステムのモジュールなど、エッジデバイス104およびグリッドサーバ102上のアプリケーションを補足するモジュールも含む。データ210は、特に、モジュール208が取り出す、処理する、受信する、または生成することができるデータを格納するためのリポジトリとして機能する。データ210は、エッジデバイス104およびグリッドサーバ102の内部にあるものとして示してあるが、データ210は、エッジデバイス104およびグリッドサーバ102に結合することができる外部リポジトリ(この図には図示せず)に存在していてもよいことは理解されるであろう。エッジデバイス104およびグリッドサーバ102は、インタフェース204を介して外部リポジトリと通信して、データ210の情報を取得することができる。
【0030】
1つの実施態様では、エッジデバイス104のモジュール208-1は、タイムスロットおよび能力モニタ108と、ユーザアクティビティモニタ212と、通知モジュール110と、タスクマネージャ214と、その他のモジュール216とを含む。1つの実施態様では、エッジデバイス104のデータ210-1は、ユーザアクティビティデータ220と、通知プロファイルデータ222と、タスクデータ224と、その他のデータ226とを含む。その他のモジュール216は、例えばエッジデバイス104のオペレーティングシステムのプログラムを補足し、それらとして機能するプログラムまたはコード化命令を含み、その他のデータ226は、これらの1つまたは複数のその他のモジュール216のうちの1つまたは複数に対応するデータを含む。
【0031】
同様に、1つの実施態様では、グリッドサーバ102のモジュール208-2は、タスク実行モジュール228と、リソースモニタ112と、タスクスケジューラ114と、結果生成器230と、その他のモジュール232とを含む。1つの実施態様では、グリッドサーバ102のデータ210-2は、メインタスクデータ234と、サブタスクデータ236と、リソースデータ238と、結果データ240と、その他のデータ242とを含む。その他のモジュール232は、例えばグリッドサーバ102のオペレーティングシステムのプログラムを補足し、それらとして機能するプログラムまたはコード化命令が挙げられ、その他のデータ242は、これらのその他のモジュール232のうちの1つまたは複数に対応するデータを含む。
【0032】
以下の記述では、グリッドコンピューティングシステム100におけるタスク実行について述べる。簡単にするために、本主題による、グリッドサーバ102に割り付けられた計算負荷の高いメインタスクを実行するための、1つのグリッドサーバ102と1つのエッジデバイス104との間の通信について述べる。この概念は、複数の計算負荷の高いメインタスクを実行するための、複数のエッジデバイス104と1つのグリッドサーバ102との間の通信、または複数のエッジデバイス104と複数のグリッドサーバ102との間の通信にも拡張することができることは理解されるであろう。
【0033】
1つの実施態様では、エッジデバイス104は、グリッドコンピューティングシステム100に加入して、遊休状態にある自身の処理能力を提供するために、エッジデバイス104のユーザの同意を得ることがある。エッジデバイス104は、ユーザ同意に関してユーザから入力を受信することができる。このユーザ同意に基づいて、エッジデバイス104は、グリッドコンピューティングシステム100に加入するためのエッジデバイス104の遊休期間を決定するステップに進むことができる。
【0034】
1つの実施態様では、ユーザアクティビティモニタ212は、エッジデバイス104上でユーザによって実行されているアクティビティをモニタリングし、リーン(lean)アクティビティ期間およびハイ(high)アクティビティ期間を決定する。アクティビティとしては、ウェブ閲覧、ソーシャルネットワーキング、通信に基づくアクティビティ、写真撮影、ビデオ作成などが挙げられる。リーンアクティビティ期間とは、エッジデバイス104上で実行されているユーザアクティビティが処理能力および処理容量を残している期間、すなわち処理速度、空き処理メモリ、空きネットワーク帯域幅、またはそれらの組合せなど、エッジデバイス104の計算能力パラメータのうちの1つまたは複数がそれぞれの既定のしきい値レベルを超えている期間である。同様に、ハイアクティビティ期間とは、エッジデバイス104上で実行されているユーザアクティビティが、処理能力および処理容量を残している期間、すなわち処理速度、空き処理メモリ、空きネットワーク帯域幅、またはそれらの組合せなど、エッジデバイス104の計算能力パラメータのうちの1つまたは複数がそれぞれの既定のしきい値レベル未満である期間である。このモニタリングに基づいて、ユーザアクティビティモニタ212は、エッジデバイス104上でのユーザアクティビティの履歴と、リーンアクティビティ期間およびハイアクティビティ期間の履歴とを保持する。1つの実施態様では、ユーザアクティビティモニタ212は、ユーザアクティビティの履歴をタイムスロットに基づいて保持することができる。ユーザアクティビティモニタ212が保持する履歴を使用して、エッジデバイス104の遊休期間を決定することができる。ユーザアクティビティに関する情報は、ユーザアクティビティデータ220に格納される。ユーザアクティビティは、エッジデバイス104のシステム状態を読み取ることによってモニタリングすることができる。1つの実施態様では、ユーザアクティビティモニタ212が、システム状態を読み取るためのユーザの許可を求めることもある。
【0035】
エッジデバイス104が携帯電話またはタブレットである実施態様では、ユーザアクティビティモニタ212は、ユーザによるエッジデバイス104の使用パターンに基づいてユーザアクティビティを推定することができる。そのために、ユーザアクティビティモニタ212は、エッジデバイス104のユーザにアンケートを送る。このアンケートは、使用パターンについての情報をユーザに求める質問を含む。使用パターンに関する質問は、エッジデバイス104上に表示することができ、質問が表示されたら、ユーザが質問に応答することが必須であることもある。ユーザは、エッジデバイス104上で、自身のアクティビティの詳細、アクティビティのスケジュール、集中的に使用する時間帯、メディアアプリケーションの実行スケジュール、ソーシャルネットワーキング、ウェブ閲覧などを送って応答することができる。ユーザアクティビティモニタ212は、ユーザの応答を取り出し、ユーザの応答を評価して、エッジデバイス104のユーザの使用パターンを決定する。この使用パターンに基づいて、エッジデバイス104上のユーザアクティビティを推定することができる。使用パターンに関する情報は、ユーザアクティビティデータ220に格納される。
【0036】
グリッドコンピューティングシステム100に加入するために、タイムスロットおよび能力モニタ108は、エッジデバイス104の処理能力がユーザアクティビティに利用されておらず、実質的にグリッドコンピューティングに利用可能である空きタイムスロットを識別する。空きタイムスロットは、ユーザアクティビティモニタ212が保持するユーザアクティビティおよび/または使用パターンの情報に基づいて識別される。1つの実施態様では、空きタイムスロットは、ユーザアクティビティモニタ212が保持するユーザアクティビティを有するタイムスロットから識別することができる。
【0037】
タイムスロットおよび能力モニタ108は、1つまたは複数の空きタイムスロットを識別することができる。識別した空きタイムスロットに基づいて、タイムスロットおよび能力モニタ108は、各空きタイムスロットの持続時間を推定する。空きタイムスロットの持続時間は、本来空きであるはずのタイムスロット中ではユーザがエッジデバイス104上でアクティビティを開始する可能性があるので、予定持続時間または予定可能続時間であると理解される。
【0038】
さらに、タイムスロットおよび能力モニタ108は、識別した空きタイムスロット中に、エッジデバイス104の1つまたは複数の計算能力パラメータを決定する。計算能力パラメータとしては、エッジデバイスの計算速度、エッジデバイスの空き処理メモリ、およびエッジデバイスのネットワーク帯域幅などが挙げられる。これらのパラメータは、ユーザアクティビティの履歴、アクティビティ期間、および/または空きタイムスロット中の使用パターンに基づいて決定することができる。
【0039】
エッジデバイス104が携帯電話またはタブレットである実施態様では、ユーザアクティビティモニタ212は、空きタイムスロットを識別する前に、エッジデバイス104のバッテリ充電残量を決定することができる。充電残量を決定して、そのエッジデバイス104が空きタイムスロット中にタスクを実行するのに実質的に十分な充電量を有しているかどうかを知る。充電残量が不十分である、または既定値未満である場合には、タイムスロットおよび能力モニタ108は、エッジデバイス104が十分に充電される、または既定値を超えるまで充電されるまで待機した後で、空きタイムスロットを識別することができる。
【0040】
さらに、1つの実施態様では、空きタイムスロットを識別する前に、ユーザアクティビティモニタ212は、任意のアプリケーションが現在エッジデバイス104上で実行中であるかどうかを判定することができる。これを判定して、エッジデバイス104が現在実行中のアプリケーションに関連するアクティビティの実行に占有されているかどうかを知る。こうしたアプリケーションとしては、ウェブブラウザ、ソーシャルネットワーキングウィジェット、ワードプロセッサ、通信に基づくアプリケーションアドが挙げられる。処理能力および処理容量を残す、すなわち処理速度、空き処理メモリ、空きネットワーク帯域幅またはそれらの組合せなどエッジデバイス104の計算能力パラメータのうちの1つまたは複数が既定のしきい値レベル未満となる1つまたは複数のアプリケーションが実行中である場合には、タイムスロットおよび能力モニタ108は、エッジデバイス104が空く、またはそのアプリケーションを停止するまで待機した後で、空きタイムスロットを識別することができる。
【0041】
さらに、空きタイムスロットおよびエッジデバイス104の計算能力パラメータに基づいて、通知モジュール110は、空きタイムスロットおよびその空きタイムスロットについての計算能力パラメータの情報を通知するためのプロファイルを作成する。プロファイルは、通知プロファイルと称されることがある。通知プロファイルは、少なくとも1つの空きタイムスロット、その空きタイムスロットの持続時間、およびその空きタイムスロットについて決定された計算能力パラメータの情報を含む。1つの実施態様では、エッジデバイス104が携帯電話またはタブレットである場合には、通知プロファイルは、エッジデバイス104の充電残量の情報をさらに含む。通知プロファイルに関連するデータは、通知プロファイルデータ222に格納される。
【0042】
通知プロファイルを作成した後で、通知モジュール110は、空きタイムスロットおよび能力パラメータを通知する。そのために、通知モジュール110は、通知プロファイルを、グリッドコンピューティングシステム100内のグリッドサーバ102に送る。1つの実施態様では、エッジデバイス104は、通知プロファイルを送るためのグリッドサーバ102を検索することができる。1つの実施態様では、エッジデバイス104は、エッジデバイス104が以前に通信した可能性がある複数のグリッドサーバ102の詳細を備えたキャッシュリストを有していることもある。通知モジュール110は、キャッシュリストに基づいて、通知プロファイルをこれらのグリッドサーバ102にマルチキャストすることもできる。
【0043】
グリッドサーバ102では、タスク実行モジュール228が、そのグリッドサーバ102に実行のために割り付けられたメインタスクを受信することができる。メインタスクは、外部エンティティによって割り付けられることもある。メインタスクに関連するデータは、メインタスクデータ234に格納される。メインタスクが計算負荷の高いタスクである場合には、グリッドサーバ102は、そのメインタスクの一部分すなわちサブタスクを実行するための空きタイムスロットおよび能力を有するエッジデバイス104を探す。そのために、リソースモニタ112は、エッジデバイス104が通知する通知プロファイルをリッスンする。リソースモニタ112は、1つまたは複数のエッジデバイス104の通知プロファイルを受信することができ、これらの通知プロファイルを処理して、メインタスクを区分化して、エッジデバイス104向けのサブタスクを作成することができる。
【0044】
エッジデバイス104から受信した通知プロファイルに基づいて、リソースモニタ112は、通知プロファイル中の空きタイムスロットの持続時間、およびその空きタイムスロットに関連する計算能力パラメータをチェックする。持続時間が、メインタスクの最小のサブタスクを完了するための既定のしきい値持続時間を超えているかどうかをチェックする。さらに、計算能力パラメータが、メインタスクの最小のサブタスクのタイムラインを満たす対応する既定のしきい値を超えているかどうかをチェックする。1つの例では、空きタイムスロットの持続時間が最小のサブタスクを完了するための既定のしきい値持続時間未満である場合、および/または計算能力パラメータが最小のサブタスクのタイムラインを満たす対応する既定のしきい値未満である場合には、グリッドサーバ102は、エッジデバイス104からの通知プロファイルを無視して、サブタスクを分配する。実行したチェックに基づいて、リソースモニタ112は、タスクを割り当てるためのエッジデバイス104を選択することができる。選択したエッジデバイス104に関連するデータは、リソースデータ238に格納される。
【0045】
さらに、リソースモニタ112によって実行されたチェックに基づいて、タスクスケジューラ114は、メインタスクを区分化してエッジデバイス104向けのサブタスクを作成し、作成したサブタスクを、実行のための選択したエッジデバイス104に割り当てる。サブタスクは、そのサイズおよび計算要件がエッジデバイス104の計算能力に適合し、そのサブタスクに関連する既定のタイムライン内に実行することができるように作成される。1つの例では、リソースモニタ112は、複数のエッジデバイス104から通知プロファイルを受信することができる。通知プロファイルについてのチェックに基づいて、複数のエッジデバイス104がサブタスクを実行することができると判定された場合には、リソースモニタ112は、複数のエッジデバイス104を選択して、選択した各エッジデバイス104にサブタスクを割り当てることができ、タスクスケジューラ114は、メインタスクを区分化して、それらのエッジデバイス104のそれぞれに適した別個のサブタスクを作成することができる。サブタスクは、メインタスクの全体のタイムラインが満たされるように作成することができる。メインタスクの残りのタスクは、グリッドサーバ102が実行することができることは、理解されるであろう。サブタスクに関連するデータは、サブタスクデータ236に格納される。
【0046】
通知プロファイルがエッジデバイス104の充電残量の情報を含む実施態様では、リソースモニタ112は、充電残量をチェックすることができる。充電残量が、メインタスクの最小のサブタスクを完了するための既定のしきい値充電値を超えているかどうかをチェックすることができる。充電残量が既定のしきい値充電値未満である場合には、エッジデバイス104からの通知プロファイルを無視して、サブタスクを共有して実行することができる。
【0047】
さらに、割り当てられたサブタスクは、エッジデバイス104によって実行される。そのために、1つの実施態様では、エッジデバイス104が、実行するサブタスクを引き受ける前に、グリッドサーバ102で自身を認証しなければならないことがある。例えばパスワードに基づく認証チェックなどの認証機構を、エッジデバイス104とグリッドサーバ102との間に実装することができる。グリッドサーバ102は、エッジデバイス104が割り当てられたサブタスクを実行するステップに進むことを許可する前に、エッジデバイス104の身分証明および割り付けられたパスワードをチェックすることができる。
【0048】
この認証に基づいて、エッジデバイス104のタスクマネージャ214は、エッジデバイス104の通知プロファイルに基づいて作成されたサブタスクをグリッドサーバ102から受信し、空きタイムスロット中に実行する。1つの例では、タスクマネージャ214は、割り当てられたサブタスクをダウンロードすることができる。タスクマネージャ214は、サブタスクを実行し、サブタスク結果をグリッドサーバ102に送る。サブタスクおよびサブタスク結果に関連するデータは、タスクデータ224に格納される。
【0049】
さらに、1つの実施態様では、グリッドサーバ102は、複数のエッジデバイス104用のサブタスクを選択して、割り当てることができる。グリッドサーバ102のタスクスケジューラ114は、これらのエッジデバイス104をモニタリングして、完了状態のサブタスクを集めることができる。このモニタリングは、ポーリングに基づく機構によって行うことができる。さらに、1つの実施態様では、タスクスケジューラ114は、個別のエッジデバイス104に割り当てられたサブタスクのそれぞれのタイムラインを保持することができる。割り当てられた各サブタスクごとに、タスクスケジューラ114は、サブタスク完了期限を識別することができる。あるエッジデバイス104がサブタスク完了期限に間に合わない場合には、リソースモニタ112は、そのエッジデバイス104を解除することができ、タスクスケジューラ114は、対応するサブタスクをメインタスクとマージして、グリッドサーバ102が実行するようにすることができる。
【0050】
1つの実施態様では、グリッドサーバ102によるエッジデバイス104のモニタリングに基づいて、いずれかのエッジデバイス104がユーザアクティビティまたはユーザが実行するアプリケーションでビジー状態である、または接続不能である場合には、リソースモニタ112は、そのエッジデバイス104を解除することができ、タスクスケジューラ114は、対応するサブタスクをメインタスクとマージして、グリッドサーバ112が実行するようにすることができる。
【0051】
さらに、グリッドサーバ102の結果生成器230は、サブタスクが割り当てられたエッジデバイス104からサブタスク結果を収集する。結果生成器230は、グリッドサーバ102で実行された残りのメインタスクの結果とともにサブタスク結果を収集して、メインタスク結果を生成する。サブタスク結果およびメインタスク結果に関連するデータは、結果データ240に格納される。次いで、結果生成器230は、メインタスク結果を、そのメインタスクをグリッドサーバ102に割り付けたエンティティに送ることができる。
【0052】
1つの実施態様では、サブタスクの実行に関わったエッジデバイス104は、実行したサブタスクに応じて、クレジットを稼ぐ、または支払いを受けることができる。そのために、グリッドサーバ102は、メインタスク全体を実行する際の各エッジデバイス104の寄与に関する情報を記憶することができる。1つの例では、これらの寄与は、メインタスクの百分率、あるいはサブタスクのタイプまたはレベルに換算することができる。グリッドサーバ102は、課金システム(図示せず)と通信し、各エッジデバイス104の寄与を送ることができる。課金システムは、エッジデバイス104に報酬を与えるように構成された外部エンティティとすることができる。課金システムは、エッジデバイス104のクレジットまたは報酬量を決定することができる。
【0053】
エッジデバイス104向けのサブタスクが、それらのエッジデバイス104の個々の能力に基づいて、かつ空きタイムスロットの持続時間に基づいて作成されるグリッドコンピューティングシステム100では、各エッジデバイス104向けのサブタスクのサイズまたはレベルは、コスト節約または発生するコストを最適化するように作成することができる。
【0054】
1つの実施態様では、エッジデバイス104のユーザは、遊休処理能力の共有または提供を停止または一時停止する入力を、グリッドコンピューティングシステム100中のグリッドサーバ102に与えて、サブタスクの実行に加わることができる。この場合、ユーザの入力に基づいて、エッジデバイス104の通知モジュール110は、グリッドサーバ102に通知プロファイルを送るのを停止する。また、ユーザは、どの通知モジュール110がグリッドサーバ102への通知プロファイルの供給を再開することができるかに基づいて、遊休処理能力の享有を再開する入力を、グリッドサーバ102に与えることもできる。この一時停止または停止は、グリッドサーバ102のサブタスク割当ての計画に影響を及ぼす可能性があり、またエッジデバイス104によるクレジットまたは報酬の取得に影響を及ぼす可能性もある。遊休処理能力の共有の停止は、一時的であっても永続的であってもよい。そのために、ユーザに対して、通知プロファイルの供給を一時的に停止するか永続的に停止するかの選択肢を与えることができる。1つの実施態様では、永続停止の場合には、グリッドサーバ102および課金システム内にあるエッジデバイス104の詳細を削除することができる。
【0055】
図3および
図4は、本主題の1実施態様による、グリッドコンピューティングシステムにおいて遊休リソースによってタスクを実行する方法300および400を示す図である。方法300および400を述べる順序は、制限的なものとして解釈するためのものではなく、記載する方法のブロックのうちの任意数のブロックを任意の順序で組み合わせて、方法300または400あるいは代替の方法を実施することができる。さらに、個々のブロックは、本明細書に記載する本主題の趣旨および範囲を逸脱することなく削除することもできる。
【0056】
さらに、方法300および400は、任意の適当なハードウェアの1つもしくは複数のプロセッサまたはコンピューティングデバイス、非一時的な機械可読命令、あるいはそれらの組合せによって実施することができる。方法300および400のステップは、容易に理解されるであろうが、非一時的なコンピュータ可読媒体に格納された命令に基づいて実行することができることは理解されるであろう。非一時的なコンピュータ可読媒体としては、例えば、デジタルデータ記憶媒体、デジタルメモリ、磁気ディスクや磁気テープなどの磁気記憶媒体、ハードドライブ、または光可読デジタルデータ記憶媒体などが挙げられる。
【0057】
さらに、方法300および400は、任意のコンピューティングデバイスで実施することができるが、
図3および
図4に示す例では、説明を容易にするために、前述のグリッドコンピューティングシステム100の状況において方法300および400を説明する。
【0058】
図3を参照すると、ブロック302で、グリッドコンピューティングシステム100中のサブタスクを実行するためのエッジデバイス104が、空きタイムスロットを識別し、その空きタイムスロットの持続時間を推定する。空きタイムスロットは、そのエッジデバイス104が遊休状態であることを示す。ブロック304で、空きタイムスロット中にサブタスクを実行するためのエッジデバイス104が、エッジデバイス104の少なくとも1つの計算能力パラメータを決定する。計算能力パラメータとしては、計算速度、空きメモリ、および空きタイムスロット中のネットワーク帯域幅などが挙げられる。
【0059】
1つの実施態様では、エッジデバイス104のユーザアクティビティの履歴ならびにエッジデバイス104のリーンアクティビティ期間およびハイアクティビティ期間に基づいて、空きタイムスロットを識別し、計算能力パラメータを決定する。そのために、エッジデバイス104は、エッジデバイス104上のユーザアクティビティの履歴と、ハイアクティビティ期間およびリーンアクティビティ期間の詳細とを保持する。1つの実施態様では、エッジデバイス104の使用パターンに基づいて、空きタイムスロットを識別し、計算能力パラメータを決定する。そのために、エッジデバイス104は、アンケートに対するユーザ応答を受信することができ、そのユーザ応答から使用パターンを決定することができる。
【0060】
さらに、ブロック306で、空きタイムスロットの少なくとも1つ、持続時間、およびその少なくとも1つの空きタイムスロットに関連する少なくとも1つの計算能力パラメータを有する通知プロファイルを、エッジデバイス104が作成する。1つの実施態様では、通知プロファイルは、エッジデバイス104の充電残量を含むこともできる。
【0061】
ブロック308で、エッジデバイス104が、通知プロファイルを、グリッドコンピューティングシステム100内のグリッドサーバ102に供給または通知する。通知プロファイルは、グリッドサーバ102が、通知プロファイル内の空きタイムスロットの持続時間および計算能力パラメータに基づいてメインタスクを区分化して、エッジデバイス104によって実行可能なサブタスクを作成することができるように供給される。1つの実施態様では、エッジデバイス104は、エッジデバイス104内のキャッシュリストに基づいて、複数のグリッドサーバ102に通知プロファイルをマルチキャストすることができる。
【0062】
ブロック310で、エッジデバイス104の通知プロファイルに基づいて作成されたサブタスクを、エッジデバイス104が受信する。サブタスクを受信するために、エッジデバイス104は、グリッドサーバ102で自身を認証しなければならないことがある。ブロック312で、エッジデバイス104がサブタスクを実行し、サブタスク結果をグリッドサーバ102に送る。
【0063】
図4を参照すると、ブロック402で、グリッドサーバ102は、グリッドコンピューティングシステム100内のサブタスクを実行するためのエッジデバイス104の空きタイムスロットおよび計算能力パラメータをリッスンする。ブロック404で、グリッドサーバ102が、エッジデバイス104から通知プロファイルを受信する。通知プロファイルは、エッジデバイス104が遊休状態であることを示す少なくとも1つの空きタイムスロット、その少なくとも1つの空きタイムスロットの持続時間、およびその少なくとも1つの空きタイムスロットに関連するエッジデバイス104の少なくとも1つの計算能力パラメータを有する。
【0064】
受信した通知プロファイルに基づいて、ブロック406で、少なくとも1つの空きタイムスロットの持続時間およびその少なくとも1つの空きタイムスロットに関連する少なくとも1つの計算能力パラメータを、グリッドサーバ102がチェックする。少なくとも1つの空きタイムスロットの持続時間が、エッジデバイス104が最小のサブタスクを完了するための既定のしきい値持続時間を超えているかどうか、およびその少なくとも1つの空きタイムスロットに関連する少なくとも1つの計算能力パラメータが、エッジデバイス104が最小のサブタスクのタイムラインを満たすための対応する既定のしきい値を超えているかどうかをチェックする。
【0065】
ブロック408で、グリッドサーバ102が、空きタイムスロットの持続時間および計算能力パラメータのチェックに基づいて、グリッドサーバ102に割り付けられたメインタスクを区分化して、サブタスクを作成する。エッジデバイス104向けのサブタスクは、そのサブタスクのレベルがエッジデバイス104の計算能力パラメータの範囲内となり、かつそのサブタスクが空きタイムスロットの持続時間内にエッジデバイス104によって完了するように作成される。
【0066】
ブロック410で、エッジデバイス104向けに作成されたサブタスクは、グリッドサーバ102によって、実行のためにエッジデバイス104に割り当てられる。グリッドサーバ102は、割り当てたサブタスクを転送する前に、エッジデバイス104を認証することができる。さらに、グリッドサーバ102は、エッジデバイス104をモニタリングして、完了状態のサブタスクを集めることができる。エッジデバイス104がサブタスクを完了すると、グリッドサーバ102は、エッジデバイス104からサブタスク結果を取り出し、割り付けられたメインタスクのメインタスク結果を生成する。
【0067】
構造的特徴に特有の表現で方法およびデバイスの実施態様を説明したが、本発明は、必ずしも記載した特定の特徴に限定されるわけではないことを理解されたい。あくまでも、これらの特定の特徴は、これらの方法およびデバイスのいくつかの実施態様という文脈で開示および説明したものである。
【0068】
本主題の方法およびデバイスのその他の利点は、方法およびデバイスの例示的な実施態様の説明および特許請求の範囲からより理解できるであろう。本主題の方法およびデバイスは、本明細書において上述した実施態様に限定されない。
【0069】
特定の実施態様を参照して本主題について述べたが、この記述は、限定的な意味で解釈すべきものではない。開示した実施態様の様々な修正形態、および本主題の代替の実施態様は、本主題の説明を参照すれば、当業者には明らかであろう。したがって、これらの修正は、定義する本主題の趣旨および範囲を逸脱することなく加えることができるものと企図されている。