以下に図面を参照して、本発明にかかる情報処理システムおよび情報処理装置の実施の形態を詳細に説明する。
(実施の形態1)
まず、実施の形態1にかかる情報処理システム100のシステム構成例について説明する。情報処理システム100は、例えば、エッジコンピューティングによる分散処理環境に適用される。
図1は、情報処理システム100のシステム構成例を示す説明図である。図1において、情報処理システム100は、エッジ装置E1~En(n:2以上の自然数)と、管理装置101と、クライアント装置102と、を含む。情報処理システム100において、エッジ装置E1~En、管理装置101およびクライアント装置102は、有線または無線のネットワーク110を介して接続される。ネットワーク110は、例えば、LAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどである。
以下の説明では、エッジ装置E1~Enのうちの任意のエッジ装置を「エッジ装置Ei」と表記する場合がある(i=1,2,…,n)。
ここで、エッジ装置Eiは、処理を実行する情報処理装置(コンピュータ)である。例えば、エッジ装置Eiは、サーバ、ゲートウェイ装置、アクセスポイント、PC(Personal Computer)などである。処理は、例えば、デバイス103から送出されるデータに対する処理である。
デバイス103は、例えば、自動車用センサ、機器センサ、環境センサ、カメラなどである。デバイス103から送出されるデータは、例えば、各種センサのセンシングデータやカメラによって撮像される画像などである。データに対する処理としては、例えば、センシングデータを分析したり演算したりする処理や、画像を解析する処理などがある。
以下の説明では、エッジ装置Eiで実行される処理を「処理Pi」と表記する場合がある。
エッジ装置Eiは、処理対象データDB(DataBase)120、処理進捗ログDB130および送信ログDB140を有する。処理対象データDB120は、処理対象となるデータを記憶する。処理対象となるデータは、例えば、デバイス103から送出されるデータである。
処理進捗ログDB130は、処理Piの進捗を示すログを記憶する。処理進捗ログDB130の記憶内容については、図5を用いて後述する。送信ログDB140は、エッジ装置Eiから管理装置101に送信された情報(例えば、後述の図4に示す補正情報400)に関するログを記憶する。
管理装置101は、各エッジ装置Eiの状態を管理する情報処理装置(コンピュータ)である。エッジ装置Eiの状態は、例えば、処理Piの完了率や、処理Piの完了率の単位時間当たりの変化量などである。また、管理装置101は、各エッジ装置Eiから通知される情報に基づいて、各処理Piの完了時刻を予測する。例えば、管理装置101は、クラウドコンピューティングのサーバである。
管理装置101は、データ格納情報DB150、エッジ状態DB160および受信ログDB170を有する。データ格納情報DB150は、処理対象となるデータの格納場所を示す情報を記憶する。データ格納情報DB150の記憶内容については、図6を用いて後述する。
エッジ状態DB160は、エッジ装置E1~Enの状態に関する情報を記憶する。エッジ状態DB160の記憶内容については、図7を用いて後述する。受信ログDB170は、エッジ装置Eiから受信した情報(例えば、補正情報)に関するログを記憶する。
クライアント装置102は、情報処理システム100の利用者が使用するコンピュータである。利用者は、例えば、デバイス103から得られるデータを解析したり、分析したりする場合に情報処理システム100を利用する。例えば、クライアント装置102は、PC、タブレットPC、スマートフォンなどである。
ここで、データ自体はクラウド側(例えば、管理装置101)に送らず、データに対する処理をエッジ装置(例えば、エッジ装置Ei)で実行して処理結果のみをクラウド側に送る、いわゆる、データ近傍処理により、広域ネットワークを流れる通信トラフィックを削減することができる。
このようなエッジ装置とクラウドとが協調動作するシステムを構築するにあたり、クラウド側で各エッジ装置の状態を管理することは、各エッジ装置の処理の進捗状況を把握するために重要である。例えば、クラウド側でエッジ装置の状態を管理すべく、エッジ装置で処理(1つのプロセス)が完了した際に、その都度クラウド側に通知することが考えられる。
ところが、エッジ装置で実行される処理には、1つ1つのプロセスは一瞬で終わるものの、大量にプロセスがあるために時間がかかるという特徴があるものが多い。したがって、プロセス完了ごとにエッジ装置の状態に関する情報をクラウド側に送るようにすると、通信トラフィックの増大を招いてしまう。
このため、クラウド側に送るエッジ装置の状態に関する情報を制限することにより、通信トラフィックを削減することが考えられる。例えば、クラウドでは、エッジ装置から通知される限られた情報を用いて、エッジ装置の状態を計算する。エッジ装置では、クラウドが計算しているエッジ装置の状態を同じ計算で求め、エッジ装置で把握している実際の状態と計算で得られた状態との差が大きくなったときだけ、エッジ装置の状態に関する補正情報をクラウドに通知する。
しかし、利用者の観点からすると、図2に示すように、エッジ装置における処理の完了時刻の予測結果として、中間時点では大まかに安定した予測結果が欲しく、完了直前は精度の高い予測結果が欲しい傾向がある。
図2は、処理完了率の時間的変化の一例を示す説明図である。図2において、グラフ201は、エッジ装置における処理完了率の時間的変化を示す。中間時点の時刻taでは、利用者は、例えば、5~6時間後といった粒度で予測結果が得られると嬉しく、3~24時間後のように予測結果が乱高下すると戸惑う。
一方、完了直前の時刻tbでは、利用者は、予測が細かく変化しても、エッジ装置の現状態が反映された予測結果が得られると嬉しく、例えば、処理完了と表示されているのに、実際はまだ実行中で残り1時間かかるというのは困る。換言すれば、処理開始から処理完了までのどの段階かによって、利用者によって要求される予測精度は異なるといえる。
そこで、本実施の形態では、エッジ装置Eiは、自装置の状態に関する補正情報を管理装置101に通知するか否かの判定に用いる閾値Thを、処理Piの完了率に応じて調整する。閾値Thは、エッジ装置Eiが認識している自装置の状態と、管理装置101が認識しているエッジ装置Eiの状態との差、すなわち、管理装置101が認識しているエッジ装置Eiの状態に関する誤差についての閾値である。
これにより、エッジ装置Eiの状態に関する補正情報の通知頻度を制御して、状況に対して効果的な通知頻度を実現することができる。例えば、閾値Thを大きくするほど、管理装置101への補正情報の通知の頻度を下げることができる。この場合、予測精度は低下する傾向があるものの、管理装置101への状態通知にかかる通信トラフィックを削減することができる。また、閾値Thを小さくするほど、管理装置101への補正情報の通知の頻度を上げることができる。この場合、管理装置101への状態通知にかかる通信トラフィックは増えるものの、予測精度を向上させることができる。
図2の例では、エッジ装置Eiは、処理Piの完了率が高くなるほど、閾値Thが小さくなるように調整する。これにより、処理開始から中間時点あたりまでは、管理装置101への補正情報の通知頻度を抑えて、通信トラフィックの増大を防ぐことができる。これに対して、処理完了が近づくと、管理装置101への補正情報の通知頻度を上げて予測精度を向上させることができる。
(エッジ装置Eiのハードウェア構成例)
図3は、エッジ装置Eiのハードウェア構成例を示すブロック図である。図3において、エッジ装置Eiは、CPU(Central Processing Unit)301と、メモリ302と、ディスクドライブ303と、ディスク304と、通信I/F(Interface)305と、可搬型記録媒体I/F306と、可搬型記録媒体307と、を有する。また、各構成部は、バス300によってそれぞれ接続される。
ここで、CPU301は、エッジ装置Eiの全体の制御を司る。CPU301は、複数のコアを有していてもよい。メモリ302は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)およびフラッシュROMなどを有する。具体的には、例えば、フラッシュROMがOS(Operating System)のプログラムを記憶し、ROMがアプリケーションプログラムを記憶し、RAMがCPU301のワークエリアとして使用される。メモリ302に記憶されるプログラムは、CPU301にロードされることで、コーディングされている処理をCPU301に実行させる。
ディスクドライブ303は、CPU301の制御に従ってディスク304に対するデータのリード/ライトを制御する。ディスク304は、ディスクドライブ303の制御で書き込まれたデータを記憶する。ディスク304としては、例えば、磁気ディスク、光ディスクなどが挙げられる。
通信I/F305は、通信回線を通じてネットワーク110に接続され、ネットワーク110を介して外部のコンピュータ(例えば、図1に示した管理装置101、他のエッジ装置)に接続される。そして、通信I/F305は、ネットワーク110と装置内部とのインターフェースを司り、外部のコンピュータからのデータの入出力を制御する。通信I/F305には、例えば、モデムやLANアダプタなどを採用することができる。
可搬型記録媒体I/F306は、CPU301の制御に従って可搬型記録媒体307に対するデータのリード/ライトを制御する。可搬型記録媒体307は、可搬型記録媒体I/F306の制御で書き込まれたデータを記憶する。可搬型記録媒体307としては、例えば、CD(Compact Disc)-ROM、DVD(Digital Versatile Disk)、USB(Universal Serial Bus)メモリなどが挙げられる。
なお、エッジ装置Eiは、上述した構成部のほかに、例えば、SSD(Solid State Drive)、入力装置、ディスプレイ等を有することにしてもよい。また、エッジ装置Eiは、上述した構成部のうち、例えば、ディスクドライブ303、ディスク304、可搬型記録媒体I/F306、可搬型記録媒体307を有していなくてもよい。また、図1に示した管理装置101、クライアント装置102についても、エッジ装置Eiと同様のハードウェア構成により実現することができる。ただし、クライアント装置102は、上述した構成部のほかに、入力装置、ディスプレイなどを有する。
(補正情報の具体例)
つぎに、図4を用いて、エッジ装置Eiから管理装置101に通知される、エッジ装置Eiの状態に関する補正情報の具体例について説明する。
図4は、補正情報の具体例を示す説明図である。図4において、補正情報400は、時刻tと、処理完了率と、傾きとを含む。ここで、時刻tは、エッジ装置Eiにおいて処理完了率が測定された時刻である。なお、時刻tは、エッジ装置Eiにおける処理Piの処理開始からの経過時間によって表されることにしてもよい。
処理完了率は、時刻tにおける処理Piの完了率を示す(単位:[%])。処理完了率は、例えば、処理Pi全体(例えば、複数のプロセス)に対する現在完了している処理(例えば、プロセス)の割合によって表される。傾きは、時刻t以降の処理完了率の時間的変化を示す(単位:[%/s])。傾きは、例えば、時刻t以降の処理完了率を予測する際に用いられる。ここでは、予測値は一次式でモデル化するものとする。
(処理進捗ログDB130の記憶内容)
つぎに、図5を用いて、エッジ装置Eiが有する処理進捗ログDB130の記憶内容について説明する。なお、エッジ装置Eiが有する各種DBは、例えば、図3に示したメモリ302、ディスク304などの記憶装置により実現される。
図5は、処理進捗ログDB130の記憶内容の一例を示す説明図である。図5において、処理進捗ログDB130は、時刻tおよび処理完了率のフィールドを有し、各フィールドに情報を設定することで、処理進捗ログ(例えば、処理進捗ログ500-1~500-3)をレコードとして記憶する。
ここで、時刻tは、エッジ装置Eiにおいて処理完了率が測定された時刻である。時刻t0は、処理開始時刻を示す。なお、時刻tは、エッジ装置Eiにおける処理Piの処理開始からの経過時間によって表されることにしてもよい。処理完了率は、時刻tにおける処理Piの完了率を示す(単位:[%])。
(データ格納情報DB150の記憶内容)
つぎに、図6を用いて、管理装置101が有するデータ格納情報DB150の記憶内容について説明する。なお、管理装置101が有する各種DBは、例えば、管理装置101のメモリ、ディスクなどの記憶装置により実現される。
図6は、データ格納情報DB150の記憶内容の一例を示す説明図である。図6において、データ格納情報DB150は、ファイルID、データ取得時刻、データ受信時刻、取得場所、格納エッジID、ファイルパス/ファイル名、ファイル種別、ファイルサイズおよびメタデータのフィールドを有する。各フィールドに情報を設定することで、データ格納情報(例えば、データ格納情報600-1~600-3)がデータ格納情報DB150にレコードとして記憶される。
ここで、ファイルIDは、処理対象となるデータを一意に識別する識別子である。ここでは、処理対象となるデータとして、ファイルを例に挙げて説明する。データ取得時刻は、データが取得された時刻を示す。データは、例えば、図1に示したデバイス103により取得される。データ受信時刻は、データが受信された時刻を示す。例えば、データ受信時刻は、デバイス103から送出されたデータをエッジ装置Eiが受信した時刻である。
取得場所は、データが取得された場所の座標(例えば、緯度、経度)を示す。格納エッジIDは、データを格納しているエッジ装置Eiを一意に識別する識別子である。格納エッジIDとしては、例えば、エッジ装置Eiの名前、FQDN(Fully Qualified Domain Name)、IP(Internet Protocol)アドレスなどが用いられる。
ファイルパス/ファイル名は、データの格納場所/名前を示す。ファイル種別は、データの種別を示す。ファイルサイズは、データのサイズを示す。メタデータは、データの特徴を示す。メタデータは、例えば、どのような処理が実行可能なデータであるかを判別するために用いられる。
(エッジ状態DB160の記憶内容)
つぎに、図7を用いて、管理装置101が有するエッジ状態DB160の記憶内容について説明する。
図7は、エッジ状態DB160の記憶内容の一例を示す説明図である。図7において、エッジ状態DB160は、エッジID、時刻t、処理完了率、傾きおよび予測処理完了時刻のフィールドを有し、各フィールドに情報を設定することで、エッジ状態情報(例えば、エッジ状態情報700-1)をレコードとして記憶する。
ここで、エッジIDは、エッジ装置Eiを一意に識別する識別子である。時刻tは、エッジ装置Eiにおいて処理完了率が測定された時刻である。なお、時刻tは、エッジ装置Eiにおける処理Piの処理開始からの経過時間によって表されることにしてもよい。処理完了率は、時刻tにおける処理Piの完了率を示す(単位:[%])。
傾きは、時刻t以降の処理完了率の時間的変化を示す(単位:[%/s])。予測処理完了時刻は、エッジ装置Eiにおける処理Piの実行が完了すると予測された時刻である。なお、エッジ状態情報には、例えば、エッジ装置Eiにおいて処理Piの実行が開始された処理開始時刻が含まれていてもよい。
(管理装置101の機能的構成例)
つぎに、管理装置101の機能的構成例について説明する。
図8は、管理装置101の機能的構成例を示すブロック図である。図8において、管理装置101は、要求受付部801と、処理指示部802と、情報受付部803と、状態予測部804と、出力部805と、を含む。具体的には、例えば、要求受付部801~出力部805は、管理装置101のメモリ、ディスクなどの記憶装置に記憶されたプログラムをCPUに実行させることにより、または、通信I/Fにより、その機能を実現する。各機能部の処理結果は、例えば、メモリ、ディスクなどの記憶装置に記憶される。
要求受付部801は、処理実行要求を受け付ける。ここで、処理実行要求は、データに対する処理の実行を要求するものである。処理実行要求には、例えば、どのようなデータに対してどのような処理(分析、解析、演算処理など)を行うのかを特定する情報が含まれる。
具体的には、例えば、要求受付部801は、図1に示したクライアント装置102から処理実行要求を受信することにより、受信した処理実行要求を受け付ける。また、要求受付部801は、不図示の入力装置を用いたユーザの操作入力により、処理実行要求を受け付けることにしてもよい。
処理指示部802は、エッジ装置Eiに対して処理Piの実行を指示する。具体的には、例えば、処理指示部802は、図6に示したデータ格納情報DB150を参照して、処理実行要求から特定される処理を実行可能なデータを格納しているエッジ装置Eiを特定する。そして、処理指示部802は、特定したエッジ装置Eiに対して、処理実行要求から特定される処理Piの実行指示を送信する。
処理Piの実行指示には、例えば、処理対象となるデータと、処理Piの処理内容とを特定する情報が含まれる。処理Piの処理内容としては、例えば、処理対象となるデータに対する分析、解析、演算処理などが挙げられる。なお、処理実行要求から特定される処理を実行可能なデータを格納しているエッジ装置が複数特定された場合は、処理指示部802は、特定した複数のエッジ装置それぞれに対して、処理の実行指示を送信する。
情報受付部803は、エッジ装置Eiの状態に関する情報を受け付ける。ここで、エッジ装置Eiの状態に関する情報は、処理Piの処理状況を特定するための情報であり、例えば、処理Piの処理開始からの経過時間や処理Piの完了率を特定する情報、処理Piの完了率の時間的変化を予測するための情報などが含まれる。
エッジ装置Eiの状態に関する情報としては、例えば、補正情報および処理完了通知がある。補正情報は、管理装置101が認識しているエッジ装置Eiの状態に関する誤差を補正するために通知される情報であり、例えば、図4に示した補正情報400である。なお、補正情報には、例えば、処理Piの実行が開始された後、エッジ装置Eiから最初に通知される状態に関する情報(初回通知)も含まれる。
処理完了通知は、処理Piの実行が完了したことに応じて、エッジ装置Eiから通知される情報である。なお、図示は省略するが、処理完了通知は、図4に示したような補正情報400と同様のデータ構造により実現することができる。この場合、処理完了通知に含まれる処理完了率は「100[%]」となる。
具体的には、例えば、情報受付部803は、クライアント装置102からエッジ装置Eiの状態に関する情報(補正情報または処理完了通知)を受信することにより、受信した情報を受け付ける。なお、エッジ装置Eiから情報(補正情報または処理完了通知)を受信すると、受信した情報に関するログが、例えば、図1に示した受信ログDB170に記録される。
状態予測部804は、情報受付部803が受け付けた情報に基づいて、エッジ装置Eiの状態を予測する。具体的には、例えば、状態予測部804は、受信ログDB170を参照して、エッジ装置Eiから通知された補正情報(最新の補正情報)に含まれる時刻tにおける処理完了率および傾きを特定する。そして、状態予測部804は、特定した時刻tにおける処理完了率および傾きに基づいて、時刻t以降の処理完了率の時間変化を予測する。
より具体的には、例えば、状態予測部804は、補正情報に含まれる時刻tにおける処理完了率および傾きに基づいて、予測処理完了時刻を算出する。予測処理完了時刻は、エッジ装置Eiにおける処理Piの実行が完了する時刻である。ここで、図4に示した補正情報400を例に挙げて、予測処理完了時刻の算出例について説明する。
まず、状態予測部804は、補正情報400に含まれる処理完了率「55.4[%]」および傾き「0.01240[%/s]」に基づいて、処理完了率が55.4[%]から100[%]となるまでの経過時間を算出する。ここでは、経過時間は、「3597[s]」となる。そして、状態予測部804は、補正情報400に含まれる時刻tに経過時間「3597[s]」を足すことにより、予測処理完了時刻を算出する。ここでは、予測処理完了時刻は、「2018/10/17 12:43:27」となる。
予測された予測処理完了時刻は、例えば、補正情報に含まれる時刻t、処理完了率および傾きと対応付けて、図7に示したエッジ状態DB160に記憶される。例えば、補正情報400の通知元をエッジ装置E1とする。この場合、予測処理完了時刻「2018/10/17 12:43:27」が、補正情報400に含まれる時刻t、処理完了率および傾きと対応付けて、エッジ装置E1のエッジ状態情報の各フィールドに設定される。
これにより、管理装置101が認識しているエッジ装置E1の状態に関する誤差を補正することができる。ここで、図9を用いて、エッジ装置Eiの状態に関する誤差の補正例について説明する。
図9は、エッジ装置Eiの状態に関する誤差の補正例を示す説明図である。図9において、グラフ901は、エッジ装置Eiの実際の状態をあらわす。グラフ902は、管理装置101が認識(予測)しているエッジ装置Eiの状態をあらわす。ここでは、管理装置101が認識している時刻tにおけるエッジ装置Eiの状態に関する誤差が大きくなり、エッジ装置Eiから管理装置101に補正情報が通知されたとする。
この場合、管理装置101が認識(予測)するエッジ装置Eiの状態は、時刻tにおける処理完了率および傾きが補正されて、グラフ903のようになる。
出力部805は、状態予測部804によって予測された予測結果を出力する。出力部805の出力形式としては、例えば、通信I/Fによる他のコンピュータへの送信、ディスプレイへの表示、プリンタへの印刷出力、メモリ、ディスクなどの記憶装置への記憶などがある。
具体的には、例えば、出力部805は、クライアント装置102に対して、予測されたエッジ装置Eiの予測処理完了時刻を表示することにしてもよい。この際、出力部805は、現時点のエッジ装置Eiの処理完了率や、予測処理完了時刻までの残り時間をあわせて表示することにしてもよい。
また、クライアント装置102からの処理実行要求に応じて、複数のエッジ装置で処理を実行中の場合がある。この場合、出力部805は、クライアント装置102に対して、複数のエッジ装置それぞれの予測処理完了時刻のうち、最も遅い予測処理完了時刻を、処理全体の予測処理完了時刻として表示することにしてもよい。また、出力部805は、複数のエッジ装置それぞれの予測処理完了時刻を表示することにしてもよい。
(エッジ装置Eiの機能的構成例)
つぎに、エッジ装置Eiの機能的構成例について説明する。
図10は、エッジ装置Eiの機能的構成例を示すブロック図である。図10において、エッジ装置Eiは、処理受付部1001と、実行部1002と、判定部1003と、調整部1004と、生成部1005と、通知部1006と、を含む。具体的には、例えば、処理受付部1001~通知部1006は、図3に示したメモリ302、ディスク304などの記憶装置に記憶されたプログラムをCPU301に実行させることにより、または、通信I/F305により、その機能を実現する。各機能部の処理結果は、例えば、メモリ302、ディスク304などの記憶装置に記憶される。
処理受付部1001は、処理Piの実行指示を受け付ける。ここで、処理Piの実行指示には、例えば、処理対象となるデータと、処理Piの処理内容とを特定する情報が含まれる。具体的には、例えば、処理受付部1001は、管理装置101から処理Piの実行指示を受信することにより、受信した処理Piの実行指示を受け付ける。
実行部1002は、処理Piの実行指示に応じて、処理Piを実行する。具体的には、例えば、実行部1002は、処理対象データDB120(図1参照)から、処理Piの実行指示から特定される処理対象となるデータを取得する。そして、実行部1002は、取得した処理対象となるデータに対して、処理Piの実行を開始する。処理Piの処理内容は、処理Piの実行指示から特定される。
また、実行部1002は、処理Piの進捗を示す情報を記録する。具体的には、例えば、実行部1002は、処理Piの実行を開始してから、処理Piの実行が完了するまで、所定のタイミングで、処理Piの進捗を示す処理進捗ログを、図5に示した処理進捗ログDB130に記録する。
処理進捗ログには、例えば、時刻tおよび処理完了率が含まれる。処理完了率は、時刻tにおける処理Piの完了率を示す(単位:[%])。処理完了率は、例えば、処理Pi全体(例えば、複数のプロセス)に対する現在完了している処理(例えば、プロセス)の割合を求めることにより測定される。
また、処理進捗ログを記録するタイミングは、任意に設定可能である。例えば、実行部1002は、一定量(例えば、1MB、10ファイル分など)のデータに対する処理または一定時間(例えば、数分)処理を実行する度に、処理Piの進捗を示す処理進捗ログを記録することにしてもよい。
判定部1003は、管理装置101が認識している自装置の状態に関する誤差が閾値Thを超えるか否かに基づき、自装置の状態に関する補正情報を管理装置101に通知するか否かを判定する。具体的には、例えば、判定部1003は、実際の自装置の状態(エッジ装置Eiが認識している自装置の状態)と、管理装置101が認識しているエッジ装置Eiの状態との差が閾値Thを超えたか否かを判断する。
ここで、差が閾値Thを超えた場合、判定部1003は、自装置の状態に関する補正情報を管理装置101に通知すると判定する。一方、差が閾値Th以下の場合には、判定部1003は、自装置の状態に関する補正情報を管理装置101に通知しないと判定する。
エッジ装置Eiの状態は、例えば、現在の処理Piの完了率(処理完了率)となるまでの経過時間、すなわち、処理開始からの経過時間によって表すことができる。ただし、エッジ装置Eiの状態は、処理Piの完了率によって表すことにしてもよい。なお、判定部1003の具体的な処理内容については、図12を用いて後述する。
調整部1004は、処理Piの完了率に応じて、閾値Thを調整する。ここで、閾値Thは、管理装置101が認識しているエッジ装置Eiの状態に関する誤差についての閾値であり、エッジ装置Eiの状態に関する補正情報を管理装置101に通知するか否かを判定する際に用いられる値である。例えば、エッジ装置Eiの状態を、現在の処理完了率となるまでの経過時間によって表す場合には、閾値Thは、エッジ装置Eiが認識している経過時間と管理装置101が認識している経過時間との誤差に関する閾値となる。
具体的には、例えば、調整部1004は、処理Piの完了率が高くなるほど、閾値Thが小さくなるように調整することにしてもよい。また、調整部1004は、処理Piの完了率が所定値以上となったら、処理Piの完了率が高くなるほど、閾値Thが小さくなるように調整することにしてもよい。
より具体的には、例えば、調整部1004は、予め設定された閾値関数に基づいて、処理Piの完了率に応じて、閾値Thを調整することにしてもよい。閾値関数とは、処理Piの完了率と閾値Thとの対応関係を規定する関数である。閾値関数を特定する情報は、例えば、メモリ302、ディスク304などの記憶装置に記憶されている。
ここで、図11を用いて、閾値関数の一例について説明する。
図11は、閾値関数の一例を示す説明図である。図11において、閾値関数1100は、処理完了率(処理Piの完了率)と閾値Thとの対応関係を規定する関数である。ここでは、閾値Thの単位は[s]である。閾値関数1100では、処理完了率が所定値(60[%])以上となるまでは、閾値Thは一定値(50[s])をとる。また、処理完了率が所定値以上となったら、処理完了率が高くなるほど、閾値Thが徐々に小さくなる。
閾値関数1100によれば、調整部1004は、処理完了率が60[%]となるまでは、閾値Thを一定値(50[s])とすることができる。また、調整部1004は、処理完了率が60[%]以上となったら、処理完了率が高くなるほど、閾値Thが徐々に小さくなるように調整することができる。
図10の説明に戻り、生成部1005は、エッジ装置Eiの状態に関する補正情報を生成する。補正情報は、例えば、所定の時点における処理Piの完了率と、所定の時点以降の処理Piの完了率の単位時間当たりの変化量を特定する情報を含む。処理Piの完了率の予測値を一次式でモデル化すると、所定の時点以降の処理Piの完了率の単位時間当たりの変化量は、傾きによって表すことができる。また、補正情報は、例えば、判定部1003によって管理装置101に補正情報を通知すると判定された場合に生成される。
具体的には、例えば、生成部1005は、図5に示した処理進捗ログDB130を参照して、時刻t以降の処理完了率(処理Piの完了率)の傾きを算出する。時刻tは、例えば、処理進捗ログDB130内の最新の時刻である。より詳細に説明すると、例えば、生成部1005は、時刻tの処理完了率と、時刻t以前のいずれかの時刻の処理完了率とに基づいて、時刻t以降の処理完了率の傾きを算出する。
この際、生成部1005は、時刻tにおける処理Piの完了率に応じて、時刻t以降の処理完了率の傾きを算出する方法を決定することにしてもよい。具体的には、例えば、生成部1005は、時刻tにおける処理Piの完了率が所定値K以下の場合は、第1の算出方法に決定する。また、生成部1005は、時刻tにおける処理Piの完了率が所定値Kを超えた場合は、第2の算出方法に決定する。
所定値Kは、任意に設定可能であり、例えば、70~80[%]程度の値に設定される。すなわち、生成部1005は、時刻tにおける処理完了率が所定値Kを超えたことに応じて、時刻t以降の処理完了率の傾きを算出する方法を、第1の算出方法から第2の算出方法に切り替える。
ここで、第1の算出方法は、時刻t(所定の時点)における、処理完了率と処理開始からの経過時間とに基づき、時刻t以降の処理完了率の傾きを算出する方法である。また、第2の算出方法は、時刻tにおける処理完了率と、時刻tよりも所定時間前の時刻t’における処理完了率とに基づき、時刻t以降の処理完了率の傾きを算出する方法である。
所定時間は、任意に設定可能である。例えば、時刻t’は、時刻tの数分程度前の時刻であってもよく、また、処理進捗ログDB130内の時刻t(最新の時刻)の直前の時刻であってもよい。なお、第1の算出方法および第2の算出方法については、図13を用いて後述する。
通知部1006は、生成部1005によって生成された補正情報を通知する。具体的には、例えば、通知部1006は、判定部1003によって自装置の状態に関する補正情報を管理装置101に通知すると判定された場合に、生成部1005によって生成された補正情報を管理装置101に通知する。
また、通知部1006は、処理Piの実行が完了すると、管理装置101に処理完了通知を送信する。処理完了通知は、処理Piの実行が完了したことを示す情報である。処理Piの処理結果は、例えば、処理Piの実行が完了したことに応じて、エッジ装置Eiから管理装置101にまとめて送信される。
なお、エッジ装置Eiから管理装置101に情報(補正情報または処理完了通知)が送信されると、送信された情報に関するログが、例えば、図1に示した送信ログDB140に記録される。
(判定部1003の具体的な処理内容)
つぎに、図12を用いて、判定部1003の具体的な処理内容について説明する。
図12は、エッジ装置Eiの状態に関する誤差の一例を示す説明図である。図12において、グラフ1201は、エッジ装置Eiの実際の状態をあらわす。グラフ1202は、管理装置101が認識(予測)しているエッジ装置Eiの状態をあらわす。
まず、判定部1003は、処理進捗ログDB130を参照して、現在の処理完了率rmと、実際の経過時間Tmとを取得する。現在の処理完了率rmは、処理進捗ログDB130内の最新の時刻における処理完了率である。実際の経過時間Tmは、処理Piの処理開始時刻から現在時刻までの時間である。現在時刻は、処理進捗ログDB130内の最新の時刻である。
つぎに、判定部1003は、送信ログDB140を参照して、管理装置101に最後に送信した補正情報を取得する。そして、判定部1003は、取得した最後の補正情報に含まれる時刻tj、時刻tjにおける処理完了率rjおよび時刻tj以降の傾きajを特定する。傾きajは、グラフ1202の傾きに相当する。
つぎに、判定部1003は、管理装置101が認識している見込み経過時間Texを算出する。ここで、見込み経過時間Texは、現在の処理完了率rmとなるまでの経過時間として管理装置101で認識される時間である。具体的には、例えば、判定部1003は、下記式(1)を用いて、見込み経過時間Texを算出することができる。ただし、t0は、処理Piの処理開始時刻である。
Tex=(rm-rj)/aj+(tj-t0) ・・・(1)
そして、判定部1003は、算出した見込み経過時間Texと実際の経過時間Tmとの差(|Tex-Tm|)が閾値Thを超えるか否かを判定する。閾値Thは、調整部1004によって現在の処理完了率rmに応じて調整されたものである。ここで、差が閾値Thを超えた場合、判定部1003は、管理装置101に補正情報を通知すると判定する。一方、差が閾値Th以下の場合には、判定部1003は、管理装置101に補正情報を通知しないと判定する。
一例として、処理Piの処理開始時刻t0を「2018/10/17 10:29:03」とし、現在の処理完了率rmを「56.0[%]」とし、現在の処理完了率rmに応じた閾値Thを「50[s]」とする。この場合、現在時刻を「2018/10/17 11:45:10」とすると、実際の経過時間Tmは「4567[s]」となる。
また、管理装置101に最後に送信した補正情報を、図4に示した補正情報400とする。この場合、見込み経過時間Texは、「Tex=(56.0-55.4)/0.01240+4467=4515[s]」となる。なお、「4467」は、(tj-t0)に相当する。また、見込み経過時間Texと実際の経過時間Tmとの差(|Tex-Tm|)は、「52[s]」となる。この場合、差が閾値Thを超えるため、判定部1003は、管理装置101に補正情報を通知すると判定する。
(第1の算出方法および第2の算出方法)
つぎに、図13を用いて、時刻t以降の処理完了率の傾きを算出する第1の算出方法および第2の算出方法について説明する。
図13は、傾きを算出する方法の一例を示す説明図である。図13において、グラフ1301は、エッジ装置Eiの実際の状態をあらわす。ここでは、時刻tにおける処理完了率が所定値Kを超えるか否かに応じて、時刻t以降の処理完了率の傾きを算出する方法が、第1の算出方法から第2の算出方法に切り替わる。
第1の算出方法では、生成部1005は、例えば、時刻tにおける処理完了率を、時刻tにおける処理開始からの経過時間で割ることにより、時刻t以降の処理完了率の傾きを算出する。第1の算出方法によれば、高速に処理されるとき、低速に処理されるときが平均化されるため、補正時の状況に左右されない安定した予測が可能となる。したがって、第1の算出方法は、長期的な予測、すなわち、処理完了までの時間が長い状況に向いているといえる。このため、第1の算出方法は、処理完了率が所定値K以下の場合に適用する。
第2の算出方法では、生成部1005は、時刻tにおける処理完了率と、時刻tよりも所定時間前の時刻t’における処理完了率とに基づき、時刻t以降の処理完了率の傾きを算出する。すなわち、補正時の実際の状態の傾きで補正する。第2の算出方法によれば、エッジ装置Eiの状態が局所的に変動した場合に追随した予測が可能となる。したがって、第2の算出方法は、短期的な予測に向いているといえる。このため、第2の算出方法は、処理完了率が所定値Kを超えた場合に適用する。
一例として、所定値Kを「80[%]」とし、時刻tにおける処理完了率を「56.0[%]」とする。この場合、処理完了率が所定値K以下のため、第1の算出方法を用いて、時刻t以降の処理完了率の傾きが算出される。ここで、処理開始からの経過時間を「4567[s]」とすると、現在時刻t以降の処理完了率の傾きは、「0.01226[%/s]」となる。
(閾値Thの調整例)
つぎに、図14を用いて、エッジ装置Eiにおける処理完了率(処理Piの完了率)に応じた閾値Thの調整例について説明する。
図14は、閾値Thの調整例を示す説明図である。図14において、処理完了率が「20[%]」の場合のエッジ装置Eiと、処理完了率が「80[%]」の場合のエッジ装置Eiとが示されている。ここでは、エッジ装置Eiが、閾値関数1400に基づいて、エッジ装置Eiの状態に関する補正情報を管理装置101に通知するか否かを判定する際に用いる閾値Thを調整する場合を想定する。
処理完了率が「20[%]」の場合、エッジ装置Eiは、閾値関数1400に基づいて、閾値Thを、処理完了率「20[%]」に対応する「Th=50」とする。一方、処理完了率が「80[%]」の場合、エッジ装置Eiは、閾値関数1400に基づいて、閾値Thを、処理完了率「80[%]」に対応する「Th=30」とする。
このように、エッジ装置Eiは、処理完了率に応じて閾値Thを調整することで、エッジ装置Riの状態に関する補正情報の通知頻度を制御する。ここでは、閾値Thが「50」の場合は、閾値Thが「30」の場合に比べて、補正情報の通知頻度が下がり、通信トラフィックの増大を防ぐことができる。一方、閾値Thが「30」の場合は、閾値Thが「50」の場合に比べて、補正情報の通知頻度が上がり、予測精度を向上させることができる。
(管理装置101の状態管理処理手順)
つぎに、図15を用いて、管理装置101の状態管理処理手順について説明する。
図15は、管理装置101の状態管理処理手順の一例を示すフローチャートである。図15のフローチャートにおいて、まず、管理装置101は、処理実行要求を受け付けたか否かを判断する(ステップS1501)。ここで、管理装置101は、処理実行要求を受け付けるのを待つ(ステップS1501:No)。
そして、管理装置101は、処理実行要求を受け付けた場合(ステップS1501:Yes)、データ格納情報DB150を参照して、処理実行要求から特定される処理を実行可能なデータを格納しているエッジ装置Eiを特定する(ステップS1502)。
つぎに、管理装置101は、特定した各エッジ装置Eiに対して、処理実行要求から特定される処理Piの実行指示を送信する(ステップS1503)。そして、管理装置101は、エッジ装置Eiの状態に関する補正情報または処理完了通知を、エッジ装置Eiから受信したか否かを判断する(ステップS1504)。
ここで、管理装置101は、補正情報または処理完了通知を受信するのを待つ(ステップS1504:No)。そして、管理装置101は、補正情報または処理完了通知を受信した場合(ステップS1504:Yes)、全処理が完了したか否かを判断する(ステップS1505)。
なお、全処理の完了とは、実行指示を送信した各エッジ装置Eiの処理Piが全て完了したことを示す。例えば、複数のエッジ装置に実行指示が送信された場合、複数のエッジ装置それぞれにおける処理が全て完了した場合に、全処理が完了したと判断される。
ここで、全処理が完了していない場合(ステップS1505:No)、管理装置101は、受信した補正情報または処理完了通知に基づいて、エッジ装置Eiの予測処理完了時刻を算出する(ステップS1506)。なお、処理完了通知が受信された場合は、エッジ装置Eiの予測処理完了時刻は、処理完了通知に含まれる時刻tとなる。
そして、管理装置101は、算出した予測処理完了時刻を用いて、エッジ状態DB160内のエッジ装置Eiのエッジ状態情報を更新して(ステップS1507)、ステップS1504に戻る。なお、エッジ状態DB160内に該当レコードが存在しない場合は、エッジ装置Eiに対応する新規レコードが作成される。
また、ステップS1505において、全処理が完了した場合(ステップS1505:Yes)、管理装置101は、本フローチャートによる一連の処理を終了する。
これにより、エッジ装置Eiから通知される、エッジ装置Eiの状態に関する補正情報に基づいて、管理装置101が認識するエッジ装置Eiの状態を更新することができる。このため、クライアント装置102に対して、各エッジ装置Eiの状態(例えば、各エッジ装置Eiの予測処理完了時刻)や、全処理の予測処理完了時刻などを表示することが可能となる。
(エッジ装置Eiの実行処理手順)
つぎに、図16を用いて、エッジ装置Eiの実行処理手順について説明する。
図16は、エッジ装置Eiの実行処理手順の一例を示すフローチャートである。図16のフローチャートにおいて、まず、エッジ装置Eiは、管理装置101からの処理Piの実行指示を受け付けたか否かを判断する(ステップS1601)。
ここで、エッジ装置Eiは、処理Piの実行指示を受け付けるのを待つ(ステップS1601:No)。そして、エッジ装置Eiは、処理Piの実行指示を受け付けた場合(ステップS1601:Yes)、処理Piについて、一定量/時間の処理を実行する(ステップS1602)。
なお、一定量/時間の処理とは、一定量(例えば、1MB、10ファイル分など)のデータに対する処理、または、一定時間分(例えば、数分)の処理である。
つぎに、エッジ装置Eiは、処理Piの進捗を示す処理進捗ログを処理進捗ログDB130に記録する(ステップS1603)。つぎに、エッジ装置Eiは、現在時刻tの処理完了率を処理Piの処理開始時刻からの経過時間で割ることにより、初回の傾きを算出する(ステップS1604)。
そして、エッジ装置Eiは、現在時刻tにおける処理完了率と初回の傾きとを含む補正情報(初回通知)を管理装置101に通知する(ステップS1605)。補正情報(初回通知)には、例えば、処理Piの処理開始時刻が含まれていてもよい。つぎに、エッジ装置Eiは、処理Piについて、一定量/時間の処理を実行する(ステップS1606)。そして、エッジ装置Eiは、処理進捗ログDB130に処理進捗ログを記録する(ステップS1607)。
つぎに、エッジ装置Eiは、処理Piが完了したか否かを判断する(ステップS1608)。ここで、処理Piが完了していない場合(ステップS1608:No)、エッジ装置Eiは、補正情報通知処理を実行して(ステップS1609)、ステップS1606に戻る。
なお、補正情報通知処理の具体的な処理手順については、図17を用いて後述する。
また、ステップS1608において、処理Piが完了した場合(ステップS1608:Yes)、エッジ装置Eiは、管理装置101に処理完了通知を送信して(ステップS1610)、本フローチャートによる一連の処理を終了する。これにより、管理装置101から実行指示された処理Piを実行することができる。
つぎに、図17を用いて、ステップS1609の補正情報通知処理の具体的な処理手順について説明する。
図17は、補正情報通知処理の具体的処理手順の一例を示すフローチャートである。図17のフローチャートにおいて、まず、エッジ装置Eiは、処理進捗ログDB130を参照して、現在の処理完了率rmと、実際の経過時間Tmとを取得する(ステップS1701)。
つぎに、エッジ装置Eiは、送信ログDB140を参照して、管理装置101に最後に送信した補正情報を取得する(ステップS1702)。そして、エッジ装置Eiは、取得した最後の補正情報に含まれる時刻tj、時刻tjにおける処理完了率rjおよび時刻tj以降の傾きajに基づいて、管理装置101が認識している見込み経過時間Texを算出する(ステップS1703)。
つぎに、エッジ装置Eiは、閾値関数(例えば、図11に示した閾値関数1100)に基づいて、現在の処理完了率rmに応じた閾値Thを特定する(ステップS1704)。つぎに、エッジ装置Eiは、算出した見込み経過時間Texと実際の経過時間Tmとの差を算出する(ステップS1705)。
そして、エッジ装置Eiは、算出した差が、特定した閾値Thを超えるか否かを判断する(ステップS1706)。ここで、算出した差が閾値Th以下の場合(ステップS1706:No)、エッジ装置Eiは、補正情報通知処理を呼び出したステップに戻る。この場合、管理装置101への補正情報の通知は行われない。
一方、算出した差が閾値Thを超えた場合(ステップS1706:Yes)、エッジ装置Eiは、現在の処理完了率rmが所定値Kを超えるか否かを判断する(ステップS1707)。ここで、現在の処理完了率rmが所定値K以下の場合(ステップS1707:No)、エッジ装置Eiは、第1の算出方法で、現在時刻t以降の処理完了率の傾きを算出して(ステップS1708)、ステップS1710に移行する。現在時刻tは、現在の処理完了率rmに対応する時刻tである。
一方、現在の処理完了率rmが所定値Kを超えた場合(ステップS1707:Yes)、エッジ装置Eiは、第2の算出方法で、現在時刻t以降の処理完了率の傾きを算出する(ステップS1709)。そして、エッジ装置Eiは、現在時刻tにおける処理完了率rmと、算出した現在時刻t以降の処理完了率の傾きとを含む補正情報を管理装置101に通知して(ステップS1710)、補正情報通知処理を呼び出したステップに戻る。
これにより、管理装置101が認識しているエッジ装置Eiの状態に関する誤差が閾値Thを超えた場合に、エッジ装置Eiの状態に関する補正情報を管理装置101に通知することができる。また、現在の処理完了率rmに応じて、閾値Thを調整することができる。また、現在の処理完了率rmに応じて、現在時刻t以降の処理完了率の傾きを算出する方法を切り替えることができる。
なお、上述した説明では、閾値Thを処理完了率に応じて調整することにしたが、これに限らない。例えば、閾値Thは、予め決められた固定値としてもよい。
以上説明したように、実施の形態1にかかるエッジ装置Eiによれば、管理装置101が認識している自装置の状態に関する誤差についての閾値Thを、処理Piの完了率に応じて調整し、誤差が閾値Thを超える場合に、自装置の状態に関する補正情報を管理装置101に通知すると判定することができる。
これにより、エッジ装置Eiの状態に関する補正情報の通知頻度を制御して、状況に対して効果的な通知頻度を実現することができる。
また、エッジ装置Eiによれば、処理Piの完了率が高くなるほど、閾値Thが小さくなるような値に調整することができる。
これにより、処理開始から中間時点あたりまでは、管理装置101への補正情報の通知頻度を抑えて、通信トラフィックの増大を防ぎつつ、処理完了が近づくと、管理装置101への補正情報の通知頻度を上げて予測精度を向上させることができる。
また、エッジ装置Eiによれば、時刻t以降の処理Piの完了率の傾きを算出するにあたり、時刻tにおける処理Piの完了率に応じて、傾きを算出する方法を切り替えることができる。これにより、処理Piの完了時刻を予測するにあたり、状況に応じて性質の異なる予測を行うことが可能となる。
例えば、エッジ装置Eiによれば、時刻tにおける処理Piの完了率が所定値K以下の場合、時刻tにおける、処理Piの完了率と処理開始からの経過時間とに基づき、時刻t以降の処理Piの完了率の傾きを算出することができる。これにより、高速に処理されるとき、低速に処理されるときが平均化され、補正時の状況に左右されない安定した予測が可能となる。
また、エッジ装置Eiによれば、時刻tにおける処理Piの完了率が所定値Kを超えた場合には、時刻tにおける処理Piの完了率と、時刻tよりも所定時間前の時刻t’における処理Piの完了率とに基づき、時刻t以降の処理Piの完了率の傾きを算出することができる。これにより、エッジ装置Eiの状態が局所的に変動した場合であっても、それに追随した予測が可能となる。
これらのことから、実施の形態1にかかる情報処理システム100によれば、状況に対して効果的な通知頻度を実現することで、利用者が要求する予測精度を確保しつつ、状態通知にかかる通信トラフィックの増大を適切に防ぐことができる。
(実施の形態2)
つぎに、実施の形態2にかかる情報処理システム100について説明する。なお、実施の形態1で説明した箇所と同一の箇所については、同一符号を付して図示および説明を省略する。
情報処理システム100において、クライアント装置102等からの処理実行要求に応じて管理装置101から実行指示された処理を実行するエッジ装置が多数存在すると、その分多くの補正情報が情報処理システム100内で送受信される。例えば、エッジ装置が数百台存在すると、1台のときに比べて、数百倍の通信トラフィックが生じる。
一方で、利用者が欲しい情報は、個々のエッジ装置の処理がいつ完了するかという情報よりも、全てのエッジ装置での処理がいつ完了するかという情報であることが多い。エッジ装置ごとに処理量や処理性能が異なると、処理が完了する時刻もそれぞれ異なるものとなるが、複数のエッジ装置の中で、処理がすぐに完了するエッジ装置は、全体の処理の完了時刻に影響しない。
そこで、実施の形態2では、複数のエッジ装置の中で、処理がすぐに完了することが見込まれるエッジ装置については、処理完了が近づいても、閾値Thを小さくしないようにすることで、補正情報の通知頻度を抑えて通信トラフィックの増大を防ぐ。
(管理装置101の機能的構成例)
ここで、実施の形態2にかかる管理装置101の機能的構成例について説明する。以下の説明では、処理実行要求に応じて管理装置101から実行指示された処理を実行する複数のエッジ装置を「複数のエッジ装置E」と表記し、管理装置101から実行指示された処理を「処理P」と表記する場合がある。
図18は、実施の形態2にかかる管理装置101の機能的構成例を示すブロック図である。図18において、管理装置101は、要求受付部801と、処理指示部802と、情報受付部803と、状態予測部804と、出力部805と、閾値制御部1801と、を含む。具体的には、例えば、要求受付部801~出力部805および閾値制御部1801は、管理装置101のメモリ、ディスクなどの記憶装置に記憶されたプログラムをCPUに実行させることにより、または、通信I/Fにより、その機能を実現する。各機能部の処理結果は、例えば、メモリ、ディスクなどの記憶装置に記憶される。
閾値制御部1801は、複数のエッジ装置Eの各エッジ装置Eの予測処理完了時刻に基づいて、各エッジ装置Eについて、閾値関数を決定する。ここで、予測処理完了時刻は、状態予測部804によって算出(予測)された各エッジ装置Eにおける処理Pの完了時刻である。閾値関数は、エッジ装置Eにおける処理Pの完了率と閾値Thとの対応関係を規定する関数である。
具体的には、例えば、閾値制御部1801は、複数のエッジ装置Eのうち、予測処理完了時刻が相対的に遅い1以上のエッジ装置Eを特定する。そして、閾値制御部1801は、特定したエッジ装置Eについて、処理Pの完了率(処理完了率)が高くなるほど、閾値Thが小さくなる対応関係を規定する閾値関数に決定することにしてもよい。また、閾値制御部1801は、複数のエッジ装置Eのうち、特定したエッジ装置Eを除く他のエッジ装置Eについては、処理Pの完了率に対する閾値Thが一定である閾値関数に決定することにしてもよい。
より詳細に説明すると、例えば、複数のエッジ装置Eのうち、予測処理完了時刻が最も遅いエッジ装置Eとの予測処理完了時刻の差が所定時間以内(例えば、10分以内)のエッジ装置Eを特定する。そして、閾値制御部1801は、特定したエッジ装置Eについて、閾値関数Aに決定する。また、閾値制御部1801は、複数のエッジ装置Eのうち、特定したエッジ装置Eを除く他のエッジ装置Eについては、閾値関数Bに決定する。
ここで、閾値関数A,Bは、処理Pの完了率と閾値Thとの対応関係を規定する関数であり、互いに関数形状が異なる。閾値関数Aは、例えば、処理Pの完了率が所定値となるまでは、閾値Thを一定とし、処理Pの完了率が所定値以上となったら、処理Pの完了率が高くなるほど、閾値Thが小さくなる対応関係を規定した関数である。また、閾値関数Bは、処理Pの完了率にかかわらず、閾値Thが一定となる対応関係を規定する関数である。閾値関数A,Bの具体例については、図20を用いて後述する。
決定された決定結果は、例えば、図19に示すような閾値関数情報DB1900に記憶される。ここで、閾値関数情報DB1900の記憶内容について説明する。
図19は、閾値関数情報DB1900の記憶内容の一例を示す説明図である。図19において、閾値関数情報DB1900は、エッジIDおよび関数形状のフィールドを有し、各フィールドに情報を設定することで、閾値関数情報(例えば、閾値関数情報1900-1~1900-3)をレコードとして記憶する。
ここで、エッジIDは、エッジ装置Eiを一意に識別する識別子である。関数形状は、閾値関数を特定する情報である。ここでは、関数形状として、閾値関数の関数名が設定されている。例えば、閾値関数情報1900-1は、エッジ装置E1の関数形状「関数B」を示す。
なお、関数形状フィールドには、piece wise linearな関数の形状パラメータを設定することにしてもよい。形状パラメータとしては、例えば、処理完了率が0%と100%のときの閾値Th、および、閾値Thが減り始めるときの処理完了率が設定される。
閾値制御部1801は、各エッジ装置Eについて、決定した閾値関数を特定する情報を各エッジ装置Eに通知する。この場合、各情報処理装置は、通知された情報から特定される閾値関数に従って、閾値Thを調整する、ここで、閾値関数を特定する情報は、関数名であってもよく、また、piece wise linearな関数の形状パラメータであってもよい。
例えば、各エッジ装置Eが複数種類の閾値関数(例えば、閾値関数A,B)を予め保持しているとする。この場合、閾値関数を特定する情報は、関数名でよい。各情報処理装置は、予め保持している複数種類の閾値関数のうち、通知された関数名から特定される閾値関数を選択し、選択した閾値関数に従って、閾値Thを調整する。
一方、各エッジ装置Eが複数種類の閾値関数を保持していない場合、閾値関数を特定する情報は、piece wise linearな関数の形状パラメータとする。この場合、各情報処理装置は、通知された形状パラメータから特定される閾値関数に従って、閾値Thを調整する。
(閾値関数の決定例)
ここで、図20を用いて、閾値関数の決定例について説明する。
図20は、閾値関数の決定例を示す説明図である。図20において、時間軸上のマーク2001~2013は、複数のエッジ装置Eの各エッジ装置Eの予測処理完了時刻を示す。ここでは、複数のエッジ装置Eのうち、予測処理完了時刻が遅い上位3つのエッジ装置E(マーク2011~2013に対応)について、閾値関数Aに決定されている。また、複数のエッジ装置Eのうち、他のエッジ装置E(マーク2001~2010に対応)について、閾値関数Bに決定されている。
閾値関数Aによれば、処理完了率が60[%]となるまでは、閾値Thを一定値(50[s])とすることができ、処理完了率が60[%]以上となったら、処理完了率が高くなるほど、閾値Thが徐々に小さくなるように調整することができる。閾値関数Bによれば、処理完了率にかかわらず、閾値Thを一定値(50[s])とすることができる。
なお、閾値関数Aを形状パラメータで表すと、「(0,50)(60,50)(100,10)」となる。閾値関数Bを形状パラメータで表すと、「(0,50)(100,50)」となる。
(管理装置101の状態管理処理手順)
つぎに、図21を用いて、実施の形態2にかかる管理装置101の状態管理処理手順について説明する。
図21は、管理装置101の状態管理処理手順の一例を示すフローチャートである。図21のフローチャートにおいて、まず、管理装置101は、処理実行要求を受け付けたか否かを判断する(ステップS2101)。ここで、管理装置101は、処理実行要求を受け付けるのを待つ(ステップS2101:No)。
そして、管理装置101は、処理実行要求を受け付けた場合(ステップS2101:Yes)、データ格納情報DB150を参照して、処理実行要求から特定される処理を実行可能なデータを格納しているエッジ装置Eを特定する(ステップS2102)。
つぎに、管理装置101は、特定した各エッジ装置Eに対して、処理実行要求から特定される処理Pの実行指示を送信する(ステップS2103)。そして、管理装置101は、エッジ装置Eの状態に関する補正情報または処理完了通知を、エッジ装置Eから受信したか否かを判断する(ステップS2104)。
ここで、管理装置101は、補正情報または処理完了通知を受信するのを待つ(ステップS2104:No)。そして、管理装置101は、補正情報または処理完了通知を受信した場合(ステップS2104:Yes)、全処理が完了したか否かを判断する(ステップS2105)。なお、全処理の完了とは、実行指示を送信した各エッジ装置Eの処理Pが全て完了したことを示す。
ここで、全処理が完了していない場合(ステップS2105:No)、管理装置101は、受信した補正情報または処理完了通知に基づいて、エッジ装置Eの予測処理完了時刻を算出する(ステップS2106)。なお、処理完了通知が受信された場合は、エッジ装置Eの予測処理完了時刻は、処理完了通知に含まれる時刻tとなる。
そして、管理装置101は、算出した予測処理完了時刻を用いて、エッジ状態DB160内のエッジ装置Eiのエッジ状態情報を更新する(ステップS2107)。なお、エッジ状態DB160内に該当レコードが存在しない場合は、エッジ装置Eiに対応する新規レコードが作成される。
つぎに、管理装置101は、閾値制御処理を実行して(ステップS2108)、ステップS2104に戻る。閾値制御処理の具体的な処理手順については、図22を用いて後述する。また、ステップS2105において、全処理が完了した場合(ステップS2105:Yes)、管理装置101は、本フローチャートによる一連の処理を終了する。
これにより、各エッジ装置Eから通知される、各エッジ装置Eの状態に関する補正情報に基づいて、管理装置101が認識する各エッジ装置Eの状態を更新することができる。
つぎに、図22を用いて、図21に示したステップS2108の閾値制御処理の具体的な処理手順について説明する。
図22は、閾値制御処理の具体的処理手順の一例を示すフローチャートである。図22のフローチャートにおいて、まず、管理装置101は、エッジ状態DB160を参照して、全エッジ装置Eの予測処理完了時刻を取得する(ステップS2201)。そして、管理装置101は、取得した各エッジ装置Eの予測処理完了時刻に基づいて、各エッジ装置Eの閾値関数(次状態)を決定する(ステップS2202)。
つぎに、管理装置101は、実行指示を送信した1以上のエッジ装置Eの中から選択されていない未選択のエッジ装置Eを選択する(ステップS2203)。そして、管理装置101は、閾値関数情報DB1900を参照して、選択したエッジ装置Eの閾値関数(現状態)を特定する(ステップS2204)。
つぎに、管理装置101は、特定した閾値関数(現状態)と、決定した閾値関数(次状態)とが異なるか否かを判断する(ステップS2205)。ここで、閾値関数(現状態)と閾値関数(次状態)とが同じ場合(ステップS2205:No)、管理装置101は、ステップS2208に移行する。
一方、閾値関数(現状態)と閾値関数(次状態)とが異なる場合(ステップS2205:Yes)、管理装置101は、選択したエッジ装置Eについて、決定した閾値関数(次状態)により、閾値関数情報DB1900内の閾値関数情報を更新する(ステップS2206)。
そして、管理装置101は、選択したエッジ装置Eに、決定した閾値関数(次状態)を特定する情報を通知する(ステップS2207)。つぎに、管理装置101は、実行指示を送信した1以上のエッジ装置Eの中から選択されていない未選択のエッジ装置Eがあるか否かを判断する(ステップS2208)。
ここで、未選択のエッジ装置Eがある場合(ステップS2208:Yes)、管理装置101は、ステップS2203に戻る。一方、未選択のエッジ装置Eがない場合(ステップS2208:No)、管理装置101は、本フローチャートによる一連の処理を終了する。
これにより、実行指示した各エッジ装置Eの予測処理完了時刻に応じて、各エッジ装置Eにおいて閾値Thを調整する際の閾値関数を制御することができる。
以上説明したように、実施の形態2にかかる管理装置101によれば、複数のエッジ装置Eの各エッジ装置Eから通知される補正情報に基づいて、各エッジ装置Eにおける処理の完了時刻(予測処理完了時刻)を算出(予測)することができる。また、管理装置101は、算出(予測)した各エッジ装置Eの予測処理完了時刻に基づいて、各エッジ装置Eについて、処理Pの完了率と閾値Thとの対応関係を規定する閾値関数を決定し、決定した閾値関数を特定する情報を各エッジ装置Eに通知することができる。また、各エッジ装置Eによれば、管理装置から通知された情報から特定される閾値関数に従って、閾値Thを調整することができる。
これにより、各エッジ装置Eで処理Pが完了すると見込まれる時刻に応じて、各エッジ装置Eにおいて閾値Thを調整する際の閾値関数を制御することができる。このため、全処理が完了する時刻についての予測精度を維持しつつ、各エッジ装置Eからの補正情報の通知頻度を抑えて通信トラフィックの増大を防ぐことができる。
例えば、管理装置101は、複数のエッジ装置Eのうち、予測処理完了時刻が相対的に遅い1以上のエッジ装置Eについて、処理Pの完了率(処理完了率)が高くなるほど、閾値Thが小さくなる対応関係を規定する閾値関数に決定することができる。これにより、最も処理時間がかかっているエッジ装置Eや、最も処理時間がかかるエッジ装置Eとなる可能性があるエッジ装置Eについて、詳しく処理完了時刻を把握することが可能となる。
また、管理装置101は、複数のエッジ装置Eのうち、予測処理完了時刻が相対的に遅い1以上のエッジ装置Eを除く他のエッジ装置Eについて、処理Pの完了率に対する閾値Thが一定である閾値関数に決定することができる。これにより、処理がすぐに完了することが見込まれるエッジ装置Eについては、大雑把に処理完了時刻を把握するようにして通信トラフィックを削減することが可能となる。
なお、本実施の形態で説明した情報処理方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本情報処理プログラムは、ハードディスク、フレキシブルディスク、CD-ROM、DVD、USBメモリ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本情報処理プログラムは、インターネット等のネットワークを介して配布してもよい。
また、本実施の形態で説明した管理装置101やエッジ装置Eiは、スタンダードセルやストラクチャードASIC(Application Specific Integrated Circuit)などの特定用途向けICやFPGAなどのPLD(Programmable Logic Device)によっても実現することができる。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)処理を実行する情報処理装置と、前記情報処理装置における前記処理の完了時刻を、前記情報処理装置から通知される情報に基づき予測する管理装置と、を含み、
前記情報処理装置は、
前記管理装置が認識している前記情報処理装置の状態に関する誤差についての閾値を、前記処理の完了率に応じて調整し、
前記誤差が前記閾値を超える場合に、前記情報処理装置の状態に関する補正情報を前記管理装置に通知すると判定する、
ことを特徴とする情報処理システム。
(付記2)前記閾値は、前記処理の完了率が高くなるほど、前記閾値が小さくなるような値に調整される、ことを特徴とする付記1に記載の情報処理システム。
(付記3)前記補正情報は、所定の時点における前記処理の完了率と、前記所定の時点以降の前記処理の完了率の単位時間当たりの変化量を特定する情報を含み、
前記情報処理装置は、
前記変化量を算出する際に、前記所定の時点における前記処理の完了率に応じて、前記変化量を算出する方法を切り替える、ことを特徴とする付記1または2に記載の情報処理システム。
(付記4)前記情報処理装置は、
前記所定の時点における前記処理の完了率が所定値以下の場合、前記所定の時点における、前記処理の完了率と処理開始からの経過時間とに基づき、前記変化量を算出し、
前記所定の時点における前記処理の完了率が前記所定値を超えた場合には、前記所定の時点における前記処理の完了率と、前記所定の時点よりも所定時間前の時点における前記処理の完了率とに基づき、前記変化量を算出する、
ことを特徴とする付記3に記載の情報処理システム。
(付記5)処理をそれぞれ実行する複数の情報処理装置を含み、
前記管理装置は、
前記複数の情報処理装置の各情報処理装置における前記処理の完了時刻を、前記各情報処理装置から通知される情報に基づき予測し、
予測した前記各情報処理装置の前記処理の完了時刻に基づいて、前記各情報処理装置について、前記処理の完了率と前記閾値との対応関係を規定する閾値関数を決定し、
決定した前記閾値関数を特定する情報を前記各情報処理装置に通知し、
前記各情報処理装置は、
通知された前記情報から特定される閾値関数に従って、前記閾値を調整する、ことを特徴とする付記1~4のいずれか一つに記載の情報処理システム。
(付記6)前記管理装置は、
前記複数の情報処理装置のうち、予測した前記処理の完了時刻が相対的に遅い1以上の情報処理装置について、前記処理の完了率が高くなるほど、前記閾値が小さくなる対応関係を規定する閾値関数に決定し、
前記複数の情報処理装置のうち、前記1以上の情報処理装置を除く他の情報処理装置について、前記処理の完了率に対する前記閾値が一定である閾値関数に決定する、
ことを特徴とする付記5に記載の情報処理システム。
(付記7)処理を実行する実行部と、
自装置から通知される情報に基づき前記処理の完了時刻を予測する管理装置が認識している自装置の状態に関する誤差についての閾値を、前記実行部による前記処理の完了率に応じて調整する調整部と、
前記誤差が前記閾値を超える場合に、自装置の状態に関する補正情報を前記管理装置に通知すると判定する判定部と、
を有することを特徴とする情報処理装置。
(付記8)前記閾値は、前記処理の完了率が高くなるほど、前記閾値が小さくなるような値に調整される、ことを特徴とする付記7に記載の情報処理装置。
(付記9)所定の時点における前記処理の完了率と、前記所定の時点以降の前記処理の完了率の単位時間当たりの変化量を特定する情報を含む補正情報を生成する生成部をさらに有し、
前記生成部は、
前記所定の時点における前記処理の完了率に応じて、前記変化量を算出する方法を切り替える、ことを特徴とする付記7または8に記載の情報処理装置。
(付記10)前記生成部は、
前記所定の時点における前記処理の完了率が所定値以下の場合、前記所定の時点における、前記処理の完了率と処理開始からの経過時間とに基づき、前記変化量を算出し、
前記所定の時点における前記処理の完了率が前記所定値を超えた場合には、前記所定の時点における前記処理の完了率と、前記所定の時点よりも所定時間前の時点における前記処理の完了率とに基づき、前記変化量を算出する、
ことを特徴とする付記9に記載の情報処理装置。