(57)【要約】【課題】メッセージの数を抑えつつ適切に誤差を抑制すること。【解決手段】エッジ装置Ｅｉは、自装置よりも管理装置１０１への状態通知メッセージの送信頻度が高い他のエッジ装置Ｅｊに、自装置の負荷状態に関する差分情報を送信する。他のエッジ装置Ｅｊは、エッジ装置Ｅｉから差分情報を受信した場合、管理装置１０１に状態通知メッセージを送信する際に、当該状態通知メッセージに差分情報を含めて送信する。管理装置１０１は、他のエッジ装置Ｅｊから差分情報を含む状態通知メッセージを受信した場合、当該差分情報に基づいて、エッジ装置Ｅｉの負荷状態を補正する。【選択図】図２
2019175204.tif 000002
【特許請求の範囲】
【請求項１】
第１のネットワークを介して接続される複数の情報処理装置から、第２のネットワークを介して管理装置へ状態通知メッセージを送信する分散処理システムにおいて、
前記複数の情報処理装置のうちの第１の情報処理装置が、
前記第１の情報処理装置よりも前記管理装置への状態通知メッセージの送信頻度が高い第２の情報処理装置に、前記第１の情報処理装置の負荷状態に関する差分情報を送信し、
前記第２の情報処理装置が、
前記第１の情報処理装置から前記差分情報を受信した場合、前記管理装置に状態通知メッセージを送信する際に、当該状態通知メッセージに前記差分情報を含めて送信し、
前記管理装置が、
前記第２の情報処理装置から前記差分情報を含む状態通知メッセージを受信した場合、前記差分情報に基づいて、前記第１の情報処理装置の負荷状態を補正する、
ことを特徴とする誤差補正方法。
【請求項２】
前記差分情報は、前記第１の情報処理装置が認識する自装置の負荷量と、前記管理装置が認識する前記第１の情報処理装置の負荷量との差分をあらわす、ことを特徴とする請求項１に記載の誤差補正方法。
【請求項３】
前記複数の情報処理装置のそれぞれの情報処理装置は、
デバイスから送出されたデータを受信した場合に、前記データの内容に対応するプロセスを起動し、
前記プロセスの処理量が閾値以上の場合に、前記プロセスの処理量と起動時刻とを含む状態通知メッセージを前記管理装置に送信し、
前記管理装置は、
前記情報処理装置から前記状態通知メッセージを受信した場合、受信した前記状態通知メッセージに含まれる前記プロセスの処理量と起動時刻とに基づいて、前記プロセスの終了時刻を予測する、ことを特徴とする請求項１または２に記載の誤差補正方法。
【請求項４】
前記第１の情報処理装置は、
前記プロセスの処理量が前記閾値未満の場合、前記第１の情報処理装置が認識する自装置の負荷量と、前記管理装置が認識する前記第１の情報処理装置の負荷量との差分が所定値以上となったか否かを判断し、
前記差分が前記所定値以上となった場合に、前記差分をあらわす差分情報を前記第２の情報処理装置に送信する、
ことを特徴とする請求項３に記載の誤差補正方法。
【請求項５】
第１のネットワークを介して接続される複数の情報処理装置から、第２のネットワークを介して管理装置へ状態通知メッセージを送信する分散処理システムにおいて、
前記複数の情報処理装置のうち、自装置よりも前記管理装置への状態通知メッセージの送信頻度が高い第２の情報処理装置に、自装置の負荷状態に関する差分情報を送信する第１の情報処理装置と、
前記第１の情報処理装置から前記差分情報を受信した場合、前記管理装置に状態通知メッセージを送信する際に、当該状態通知メッセージに前記差分情報を含めて送信する第２の情報処理装置と、を含み、
前記管理装置は、前記第２の情報処理装置から前記差分情報を含む状態通知メッセージを受信した場合、前記差分情報に基づいて、前記第１の情報処理装置の負荷状態を補正する、ことを特徴とする分散処理システム。
【請求項６】
第１のネットワークを介して接続され、第２のネットワークを介して管理装置へ状態通知メッセージを送信する複数の情報処理装置のうちのいずれかの情報処理装置であって、
前記複数の情報処理装置のうち、自装置よりも前記管理装置への状態通知メッセージの送信頻度が高い他の情報処理装置に、自装置の負荷状態に関する差分情報の前記管理装置への転送要求を送信し、
前記複数の情報処理装置のうちの他の情報処理装置から、当該他の情報処理装置の負荷状態に関する差分情報の前記管理装置への転送要求を受信した場合、前記管理装置に状態通知メッセージを送信する際に、当該状態通知メッセージに前記差分情報を含めて送信する、
制御部を有することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、誤差補正方法、分散処理システムおよび情報処理装置に関する。
【背景技術】
【０００２】
ＩｏＴ（Ｉｎｔｅｒｎｅｔ  ｏｆ  Ｔｈｉｎｇｓ）の進展にともなって、エンドデバイスが生み出すデータ量が増加し、全てのデータの処理やデバイスの制御をクラウドで行うことが難しくなってきている。このため、エッジコンピューティングによる分散処理環境に注目が集まっている。エッジコンピューティングは、コンピュータネットワーク上で、利用者に近い場所に複数のエッジ装置を配置して、負荷の分散と通信の低遅延化を図る技術である。
【０００３】
先行技術としては、センサノードを収容するブローカノードが高負荷状態となった場合に、登録されたフィルタ条件を用いて、他のブローカノードを探索し、高負荷ブローカノードから低負荷ブローカノードへセンサノードの収容関係を切り替えるものがある。また、ネットワーク上の各ノードが、自ノードの処理負荷を収集して上限値を超えたことを検知し、他ノードの処理負荷情報を受け取り、自ノードの処理負荷の上限値および現在値を参照して、処理を受け入れることの可否を応答するものがある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】国際公開第２０１０／１０７１０５号
【特許文献２】特開２００５−４６７６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来技術では、複数のエッジ装置の負荷分散等を行うにあたり、クラウド側でエッジ装置の状態を把握するために、エッジ装置から通知されるメッセージの数が増えて通信量が増大するという問題がある。例えば、エッジ装置からクラウド側にメッセージを通知する回数（頻度）を減らすことも考えられるが、実際のエッジ装置の状態と、クラウド側で認識するエッジ装置の状態との間に大きな誤差が生じてしまう場合がある。
【０００６】
一つの側面では、本発明は、メッセージの数を抑えつつ適切に誤差を抑制することを目的とする。
【課題を解決するための手段】
【０００７】
１つの実施態様では、第１のネットワークを介して接続される複数の情報処理装置から、第２のネットワークを介して管理装置へ状態通知メッセージを送信する分散処理システムにおいて、前記複数の情報処理装置のうちの第１の情報処理装置が、前記第１の情報処理装置よりも前記管理装置への状態通知メッセージの送信頻度が高い第２の情報処理装置に、前記第１の情報処理装置の負荷状態に関する差分情報を送信し、前記第２の情報処理装置が、前記第１の情報処理装置から前記差分情報を受信した場合、前記管理装置に状態通知メッセージを送信する際に、当該状態通知メッセージに前記差分情報を含めて送信し、前記管理装置が、前記第２の情報処理装置から前記差分情報を含む状態通知メッセージを受信した場合、前記差分情報に基づいて、前記第１の情報処理装置の負荷状態を補正する、誤差補正方法が提供される。
【発明の効果】
【０００８】
本発明の一側面によれば、メッセージの数を抑えつつ適切に誤差を抑制することができる。
【図面の簡単な説明】
【０００９】
【図１】図１は、分散処理システム１００のシステム構成例を示す説明図である。
【図２】図２は、分散処理システム１００の処理例を示す説明図である。
【図３】図３は、エッジ装置Ｅｉのハードウェア構成例を示すブロック図である。
【図４】図４は、対象エッジ管理テーブル１１０の記憶内容の一例を示す説明図である。
【図５】図５は、処理量管理テーブル１２０の記憶内容の一例を示す説明図である。
【図６】図６は、第１のプロセス情報管理テーブル１３０の記憶内容の一例を示す説明図である。
【図７】図７は、第２のプロセス情報管理テーブル１４０の記憶内容の一例を示す説明図である。
【図８】図８は、転送依頼差分情報テーブル１５０の記憶内容の一例を示す説明図である。
【図９】図９は、エッジ装置Ｅｉの機能的構成例を示すブロック図である。
【図１０】図１０は、プロセスの終了時刻の予測を説明するための図である。
【図１１】図１１は、負荷差分量ＬＤの算出例を示す説明図である。
【図１２】図１２は、管理装置１０１の機能的構成例を示すブロック図である。
【図１３】図１３は、第２のプロセス情報管理テーブル（管理用）１６０の更新例を示す説明図である。
【図１４】図１４は、対象エッジを変更する際の動作例を示す説明図である。
【図１５】図１５は、エッジ装置Ｅｉの通知処理手順の一例を示すフローチャート（その１）である。
【図１６】図１６は、エッジ装置Ｅｉの通知処理手順の一例を示すフローチャート（その２）である。
【図１７】図１７は、負荷差分量算出処理の具体的処理手順の一例を示すフローチャートである。
【図１８】図１８は、管理装置１０１の誤差処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下に図面を参照して、本発明にかかる誤差補正方法、分散処理システムおよび情報処理装置の実施の形態を詳細に説明する。
【００１１】
（実施の形態）
まず、実施の形態にかかる分散処理システム１００のシステム構成について説明する。
【００１２】
図１は、分散処理システム１００のシステム構成例を示す説明図である。図１において、分散処理システム１００は、エッジ装置Ｅ１〜Ｅｎ（ｎ：２以上の自然数）と、管理装置１０１と、を含む。分散処理システム１００において、エッジ装置Ｅ１〜Ｅｎは、ネットワークＮＷ１を介して相互に通信可能に接続される。ネットワークＮＷ１は、例えば、構内通信網（ＬＡＮ：Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）である。また、エッジ装置Ｅ１〜Ｅｎおよび管理装置１０１は、ネットワークＮＷ２を介して相互に通信可能に接続される。ネットワークＮＷ２は、例えば、広域通信網（ＷＡＮ：Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットである。
【００１３】
以下の説明では、エッジ装置Ｅ１〜Ｅｎのうちの任意のエッジ装置を「エッジ装置Ｅｉ」と表記する場合がある（ｉ＝１，２，…，ｎ）。また、エッジ装置Ｅ１〜Ｅｎのうちのエッジ装置Ｅｉとは異なる他のエッジ装置を「他のエッジ装置Ｅｊ」と表記する場合がある（ｊ≠ｉ、ｊ＝１，２，…，ｎ）。
【００１４】
ここで、エッジ装置Ｅｉは、デバイス１０２から送出されるデータを受信し、受信したデータの内容に対応するプロセスを起動する情報処理装置である。エッジ装置Ｅｉは、例えば、サーバ、ゲートウェイ装置、アクセスポイント、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）などである。
【００１５】
デバイス１０２は、例えば、工場などに設置される生産機器、組立機器、環境センサ、カメラなどの機器である。また、デバイス１０２は、ＰＣ、スマートフォンなどであってもよい。デバイス１０２から送出されるデータは、例えば、生産機器や組立機器のエラーログ、環境センサのセンシングデータ、カメラによって撮像される画像などである。
【００１６】
エッジ装置Ｅｉは、近距離無線通信または有線通信により、デバイス１０２から送出されるデータを受信する。近距離無線通信としては、例えば、無線ＬＡＮ、Ｂｌｕｅｔｏｏｔｈ（登録商標）などを利用した通信が挙げられる。エッジ装置Ｅｉは、管理装置１０１に比べて、デバイス１０２に近い位置に配置される。
【００１７】
デバイス１０２から送出されるデータの内容に対応するプロセスとしては、例えば、カメラによって撮像された画像を解析するプロセスや、環境センサのセンシングデータに対して簡単な演算を行うプロセスなどがある。画像を解析するプロセスは、センシングデータに対して簡単な演算を行うプロセスに比べて負荷が高い。
【００１８】
また、エッジ装置Ｅｉは、対象エッジ管理テーブル１１０、処理量管理テーブル１２０、第１のプロセス情報管理テーブル１３０、第２のプロセス情報管理テーブル１４０および転送依頼差分情報テーブル１５０を有する。各種テーブル１１０，１２０，１３０，１４０，１５０の記憶内容については、図４〜図８を用いて後述する。
【００１９】
管理装置１０１は、エッジ装置Ｅ１〜Ｅｎの状態を管理するコンピュータである。例えば、管理装置１０１は、クラウドコンピューティングのサーバである。管理装置１０１は、第２のプロセス情報管理テーブル（管理用）１６０を有する。第２のプロセス情報管理テーブル（管理用）１６０の記憶内容については、図１３を用いて後述する。なお、第２のプロセス情報管理テーブル（管理用）１６０のデータ構造は、エッジ装置Ｅｉが有する第２のプロセス情報管理テーブル１４０と同様である。
【００２０】
ここで、複数のエッジ装置（例えば、エッジ装置Ｅ１〜Ｅｎ）とクラウド（例えば、管理装置１０１）とが協調動作するシステムを構築するにあたり、クラウド側で各エッジ装置の状態を管理することは、負荷分散等を行うために重要である。クラウド側で管理するエッジ装置の状態は、例えば、実行中のプロセスの数や、実行中のプロセスの残りの処理時間などである。
【００２１】
このため、エッジ装置でプロセスが起動したり、プロセスが終了したりした際にクラウド側にメッセージを通知することで、クラウド側でエッジ装置の状態を管理することが考えられる。ところが、システム内のエッジ装置数やプロセス数が多くなると、エッジ装置／クラウド間で送受信されるメッセージの数が増大するおそれがある。エッジ装置／クラウド間の通信は、エッジ装置間の通信に比べて通信負荷がかかるため、できる限り増やしたくないという要望がある。
【００２２】
このため、エッジ装置でプロセスが終了した際には、クラウド側へメッセージを通知しないことで、メッセージ数を削減することが考えられる。具体的には、エッジ装置は、プロセスを起動した際に、プロセスの起動時刻と処理量とを含むメッセージをクラウド側に通知する一方で、プロセスが終了した際にはメッセージを通知しない。プロセスの処理量とは、プロセスが実際に行う仕事の量であり、プロセスを起動してから終了するまでにかかる負荷量をあらわす。
【００２３】
この場合、クラウド側では、メッセージに含まれるプロセスの起動時刻と処理量や、エッジ装置の処理能力などを利用して、プロセスの終了時刻を予測することができる。しかし、エッジ装置でプロセスが起動されると、その都度、クラウド側へメッセージが通知されるため、依然として、エッジ装置／クラウド間で送受信されるメッセージの数が増大するおそれがある。
【００２４】
このため、処理量が小さいプロセスの起動時にはクラウド側への通知を省略し、処理量が大きいプロセスの起動時に、エッジ装置の負荷状態に関する差分情報をあわせてクラウド側に通知することが考えられる。これによれば、処理量が小さいプロセスに関する通知分のメッセージを削減できるとともに、クラウド側に通知しなかったことにより生じた誤差を補正することができる。
【００２５】
しかしながら、エッジ装置において、処理量が大きいプロセスが発生せず、処理量が小さいプロセスばかり発生するような場合がある。例えば、工場内の作業員の動きなどを解析するために、カメラで撮像された画像を解析するプロセスは、カメラ近傍に人がいるときにのみ発生する。
【００２６】
したがって、カメラ近傍に人がいなければ、カメラで撮像された画像を解析するプロセスは発生しないことになる。一方で、環境センサのセンシングデータに対して演算を行うようなプロセスは、定期的にあるいは頻繁に発生することがある。このような場合、処理量が小さいプロセスに関する通知分のメッセージを削減できるものの、クラウド側に通知しなかったことにより生じる誤差を補正することができない。
【００２７】
そこで、本実施の形態では、エッジ装置Ｅｉと管理装置１０１（クラウド側）との間でやり取りされるメッセージの数を抑えつつ適切に誤差を抑制する誤差補正方法について説明する。ここで、図２を用いて、分散処理システム１００の処理例について説明する。
【００２８】
図２は、分散処理システム１００の処理例を示す説明図である。図２において、各エッジ装置Ｅｉ，Ｅｊは、処理量の大きいプロセスが起動した場合に、ネットワークＮＷ２を介して、管理装置１０１へ状態通知メッセージを送信する。ここで、状態通知メッセージは、各エッジ装置Ｅｉ，Ｅｊの状態を通知するためのメッセージであり、処理量が大きいプロセスの起動を通知するものである。
【００２９】
処理量の大きいプロセスとは、処理量が予め設定された閾値（後述する「閾値α」に相当）以上のプロセスである。例えば、カメラ（デバイス１０２）で撮像された画像を解析するプロセスは、処理量の大きいプロセスである。ここでは、管理装置１０１への状態通知メッセージの送信頻度は、エッジ装置Ｅｉよりも他のエッジ装置Ｅｊのほうが高い場合を想定する。
【００３０】
（１）エッジ装置Ｅｉは、自装置よりも管理装置１０１への状態通知メッセージの送信頻度が高い他のエッジ装置Ｅｊに、自装置の負荷状態に関する差分情報を送信する。ここで、差分情報は、エッジ装置Ｅｉが認識する自装置の負荷量と、管理装置１０１が認識するエッジ装置Ｅｉの負荷量との差分をあらわす情報である。換言すれば、差分情報は、処理量が小さいプロセスに関するメッセージを管理装置１０１に通知しなかったことにより生じた誤差をあらわす。
【００３１】
具体的には、例えば、エッジ装置Ｅｉは、自装置の負荷状態に関する差分情報の管理装置１０１への転送要求を他のエッジ装置Ｅｊに送信する。なお、状態通知メッセージの送信頻度が高い他のエッジ装置Ｅｊを特定する情報は、例えば、管理装置１０１から得られる。
【００３２】
（２）他のエッジ装置Ｅｊは、エッジ装置Ｅｉから差分情報を受信した場合、管理装置１０１に状態通知メッセージを送信する際に、当該状態通知メッセージに差分情報を含めて送信する。具体的には、例えば、他のエッジ装置Ｅｊは、自装置において処理量が大きいプロセスが起動したことに応じて、当該プロセスの起動を通知する状態通知メッセージに、受信した差分情報を含めて管理装置１０１に送信する。
【００３３】
（３）管理装置１０１は、他のエッジ装置Ｅｊから差分情報を含む状態通知メッセージを受信した場合、当該差分情報に基づいて、エッジ装置Ｅｉの負荷状態を補正する。具体的には、例えば、管理装置１０１は、差分情報に基づいて、エッジ装置Ｅｉが認識する自装置の負荷量と、管理装置１０１が認識するエッジ装置Ｅｉの負荷量との差分を解消するように、エッジ装置Ｅｉの負荷状態を補正する。
【００３４】
このように、分散処理システム１００によれば、エッジ装置Ｅｉの負荷状態に関する差分情報を、エッジ装置Ｅｉよりも管理装置１０１への状態通知メッセージの送信頻度が高い他のエッジ装置Ｅｊから管理装置１０１に転送することができる。これにより、エッジ装置Ｅｉにおいて、管理装置１０１へ起動通知する契機となるプロセスが起動しなくても、管理装置１０１で推定するエッジ装置Ｅｉの負荷状態に関する誤差を補正することができる。
【００３５】
なお、図１の例では、ネットワークＮＷ１として１つの構内通信網のみ表示したが、分散処理システム１００には複数の構内通信網が含まれていてもよい。
【００３６】
（エッジ装置Ｅｉのハードウェア構成例）
図３は、エッジ装置Ｅｉのハードウェア構成例を示すブロック図である。図３において、エッジ装置Ｅｉは、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３０１と、メモリ３０２と、Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）３０３と、ディスクドライブ３０４と、ディスク３０５と、を有する。また、各構成部は、バス３００によってそれぞれ接続される。
【００３７】
ここで、ＣＰＵ３０１は、エッジ装置Ｅｉの全体の制御を司る。ＣＰＵ３０１は、複数のコアを有していてもよい。メモリ３０２は、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）およびフラッシュＲＯＭなどを有する。具体的には、例えば、フラッシュＲＯＭやＲＯＭが各種プログラムを記憶し、ＲＡＭがＣＰＵ３０１のワークエリアとして使用される。メモリ３０２に記憶されるプログラムは、ＣＰＵ３０１にロードされることで、コーディングされている処理をＣＰＵ３０１に実行させる。
【００３８】
Ｉ／Ｆ３０３は、通信回線を通じてネットワークＮＷ１，ＮＷ２に接続され、ネットワークＮＷ１，ＮＷ２を介して他の装置（例えば、管理装置１０１、他のエッジ装置Ｅｊ）に接続される。そして、Ｉ／Ｆ３０３は、ネットワークＮＷ１，ＮＷ２と装置内部とのインターフェースを司り、外部のコンピュータからのデータの入出力を制御する。Ｉ／Ｆ３０３には、例えば、モデムやＬＡＮアダプタなどを採用することができる。
【００３９】
ディスクドライブ３０４は、ＣＰＵ３０１の制御に従ってディスク３０５に対するデータのリード／ライトを制御する。ディスク３０５は、ディスクドライブ３０４の制御で書き込まれたデータを記憶する。ディスク３０５としては、例えば、磁気ディスク、光ディスクなどが挙げられる。
【００４０】
なお、エッジ装置Ｅｉは、上述した構成部のほかに、例えば、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、入力装置、ディスプレイ等を有することにしてもよい。また、エッジ装置Ｅｉは、図１に示したデバイス１０２と近距離無線通信を行う場合には、近距離無線Ｉ／Ｆを有する。また、管理装置１０１についても、エッジ装置Ｅｉと同様のハードウェア構成により実現することができる。
【００４１】
（各種テーブル１１０，１２０，１３０，１４０，１５０の記憶内容）
つぎに、図４〜図８を用いて、エッジ装置Ｅｉが有する各種テーブル１１０，１２０，１３０，１４０，１５０の記憶内容について説明する。各種テーブル１１０，１２０，１３０，１４０，１５０は、例えば、図３に示したメモリ３０２、ディスク３０５などの記憶装置により実現される。
【００４２】
ここでは、エッジ装置Ｅｉとして、「エッジ装置Ｅ１」を例に挙げて説明する。
【００４３】
図４は、対象エッジ管理テーブル１１０の記憶内容の一例を示す説明図である。図４において、対象エッジ管理テーブル１１０は、順位、対象エッジＩＤおよびアドレスのフィールドを有し、各フィールドに情報を設定することで、対象エッジ情報４００−１〜４００−３をレコードとして記憶する。
【００４４】
ここで、順位は、管理装置１０１への状態通知メッセージの送信頻度の高さを示す順位である。ここでは、３位までの順位が示されている。対象エッジＩＤは、対象エッジを一意に識別する識別子である。対象エッジは、エッジ装置Ｅｉの負荷状態に関する差分情報の管理装置１０１への転送を依頼する依頼先のエッジ装置である。アドレスは、対象エッジのアドレスである。アドレスとしては、例えば、ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）アドレスが設定される。
【００４５】
例えば、対象エッジ情報４００−１は、対象エッジＥ２の順位「１」およびアドレス「１９２．１６８．１．１５」を示す。なお、対象エッジＩＤには、自装置（図４の例では、エッジ装置Ｅ１）のエッジＩＤが設定されることもある。
【００４６】
図５は、処理量管理テーブル１２０の記憶内容の一例を示す説明図である。図５において、処理量管理テーブル１２０は、プログラムＩＤおよび処理量（Ｗproc）のフィールドを有し、各フィールドに情報を設定することで、処理量情報（例えば、処理量情報５００−１，５００−２）をレコードとして記憶する。
【００４７】
ここで、プログラムＩＤは、エッジ装置Ｅｉで実行されるプログラムを一意に識別する識別子である。例えば、プログラムは、カメラによって撮像された画像を解析するプログラムや、環境センサのセンシングデータに対して演算を行うプログラムなどである。処理量（Ｗproc）は、プログラムの実行中に起動されるプロセスの処理量平均である。
【００４８】
プロセスは、プログラムの実行単位である。プロセスの処理量平均は、例えば、プログラムＩＤにより識別されるプログラムの実行中に起動されるプロセスの処理量の移動平均によってあらわされる。なお、処理量の単位は、例えば［秒］によってあらわすことができる。例えば、処理量情報５００−１は、プログラムＰＧ１の処理量「Ｗproc＝９８」を示す。
【００４９】
図６は、第１のプロセス情報管理テーブル１３０の記憶内容の一例を示す説明図である。図６において、第１のプロセス情報管理テーブル１３０は、プロセスＩＤ、処理量（Ｗproc_k）および更新時刻のフィールドを有し、各フィールドに情報を設定することで、第１のプロセス情報（例えば、第１のプロセス情報６００−１）をレコードとして記憶する。
【００５０】
ここで、プロセスＩＤは、エッジ装置Ｅｉで実行中のプロセスを一意に識別する識別子である。処理量（Ｗproc_k）は、エッジ装置Ｅｉでプロセスを起動してから更新時刻までに処理した負荷量を示す。更新時刻は、処理量（Ｗproc_k）を更新した日時（年月日時分秒）を示す。
【００５１】
例えば、第１のプロセス情報６００−１は、エッジ装置Ｅ１で起動されたプロセスｐ１の処理量「Ｗproc_k＝１２０」および更新時刻「２０１７−０６−２６  １１：２４：００」を示す。
【００５２】
図７は、第２のプロセス情報管理テーブル１４０の記憶内容の一例を示す説明図である。図７において、第２のプロセス情報管理テーブル１４０は、エッジＩＤ、プロセス起動時刻およびプロセス終了予想時刻のフィールドを有し、各フィールドに情報を設定することで、第２のプロセス情報（例えば、第２のプロセス情報７００−１，７００−２）をレコードとして記憶する。
【００５３】
ここで、エッジＩＤは、エッジ装置Ｅｉを一意に識別する識別子である。プロセス起動時刻は、エッジ装置Ｅｉでプロセスが起動した日時（年月日時分秒）を示す。プロセス終了予想時刻は、エッジ装置Ｅｉでプロセスが終了する予想日時（年月日時分秒）を示す。
【００５４】
例えば、第２のプロセス情報７００−１は、エッジ装置Ｅ１で起動されたプロセスのプロセス起動時刻「２０１７−０６−２６  １１：３５：１０」およびプロセス終了予想時刻「２０１７−０６−２６  １１：３６：１３」を示す。
【００５５】
なお、図示は省略するが、第２のプロセス情報には、例えば、エッジ装置Ｅｉで起動されたプロセスの処理量（Ｗproc）やプロセスＩＤが含まれていてもよい。
【００５６】
図８は、転送依頼差分情報テーブル１５０の記憶内容の一例を示す説明図である。図８において、転送依頼差分情報テーブル１５０は、エッジＩＤ、差分情報ＩＤ、差分情報送信日時および負荷差分量のフィールドを有し、各フィールドに情報を設定することで、転送依頼差分情報（例えば、転送依頼差分情報８００−１）をレコードとして記憶する。
【００５７】
ここで、エッジＩＤは、管理装置１０１への差分情報の転送を依頼してきた依頼元のエッジ装置を一意に識別する識別子である。差分情報ＩＤは、依頼元のエッジ装置の負荷状態に関する差分情報を一意に識別する識別子である。差分情報送信日時は、依頼元のエッジ装置がエッジ装置Ｅｉに対して差分情報の転送依頼を送信した日時（年月日時分秒）を示す。負荷差分量は、依頼元のエッジ装置が認識する自装置の負荷量と、管理装置１０１が認識する依頼元のエッジ装置の負荷量との差分をあらわす。
【００５８】
例えば、転送依頼差分情報８００−１は、エッジ装置Ｅ１がエッジ装置Ｅ２から転送依頼された差分情報の差分情報ＩＤ「Ｄ６」、差分情報送信日時「２０１７−０６−２６  １１：３０：１５」および負荷差分量「１１２」を示す。
【００５９】
（エッジ装置Ｅｉの機能的構成例）
図９は、エッジ装置Ｅｉの機能的構成例を示すブロック図である。図９において、エッジ装置Ｅｉは、データ処理部９０１と、情報管理部９０２と、処理量判断部９０３と、プロセス通知部９０４と、差分算出部９０５と、依頼送信部９０６と、依頼受信部９０７と、を含む。データ処理部９０１〜依頼受信部９０７は制御部となる機能であり、具体的には、例えば、図３に示したメモリ３０２、ディスク３０５などの記憶装置に記憶されたプログラムをＣＰＵ３０１に実行させることにより、または、Ｉ／Ｆ３０３により、その機能を実現する。各機能部の処理結果は、例えば、メモリ３０２、ディスク３０５などの記憶装置に記憶される。
【００６０】
データ処理部９０１は、デバイス１０２から送出されたデータを受信すると、受信したデータを処理する。具体的には、例えば、データ処理部９０１は、近距離無線通信等により、デバイス１０２から送出されたデータを受信すると、受信したデータの内容に対応するプロセスを起動する。
【００６１】
例えば、データ処理部９０１は、デバイス１０２である環境センサからのセンシングデータを受信すると、受信したセンシングデータに対して簡単な演算を行うプロセスを起動する。また、データ処理部９０１は、デバイス１０２であるカメラによって撮像された画像を受信すると、受信した画像を解析するプロセスを起動する。
【００６２】
情報管理部９０２は、データ処理部９０１によってプロセスが起動されると、プロセスの状態を更新する。以下の説明では、エッジ装置Ｅｉにおいて、新たに起動されたプロセスを「新規プロセス」と表記し、既に起動されて実行中のプロセスを「既存プロセス」と表記する場合がある。
【００６３】
具体的には、例えば、情報管理部９０２は、新規プロセスが起動されると、第１のプロセス情報管理テーブル１３０に新規プロセスの第１のプロセス情報を登録する。より詳細に説明すると、情報管理部９０２は、新規プロセスのプロセスＩＤと対応付けて、処理量（Ｗproc_k）および更新時刻を登録する。ただし、この時点では、処理量（Ｗproc_k）は「０」である。更新時刻は、新規プロセスが起動された時刻である。これにより、新たな第１のプロセス情報が第１のプロセス情報管理テーブル１３０にレコードとして記憶される。
【００６４】
さらに、情報管理部９０２は、新規プロセスが起動されると、第１のプロセス情報管理テーブル１３０内の既存プロセスの第１のプロセス情報を更新する。より詳細に説明すると、情報管理部９０２は、例えば、下記式（１）を用いて、既存プロセスの処理量（Ｗproc_k）を更新する。また、情報管理部９０２は、既存プロセスの更新時刻を、現在時刻に更新する。
【００６５】
Ｗproc_k＝ΣkＣ・ｔk／Ｎk・・・（１）
【００６６】
ただし、Ｃは、エッジ装置Ｅｉの処理能力をあらわす変数である。単一のエッジ装置Ｅｉ内では変数Ｃが一定であると仮定できるため、変数Ｃを処理能力「１」や処理能力「１０」に設定すれば、処理量をエッジ装置Ｅｉごとに正規化することができる。ｔは、プロセスの処理時間をあらわす変数である。処理時間は、処理に要する時間であり、現在時刻と更新時刻（直前の更新時刻）との差によりあらわすことができる。Ｎは、現在のプロセス数をあらわす変数である。ｋは、プロセスが起動してから終了するまでの間の各区間をあらわす変数である。
【００６７】
例えば、処理能力「１０」のエッジ装置Ｅｉが２つのプロセスを処理する場合、１つのプロセスに対してエッジ装置Ｅｉは、Ｃ／Ｎにより処理能力「５」で処理する。そして、処理能力「５」に処理時間を掛け合わせることで、プロセスの処理量を算出することができる。なお、処理能力「１」の場合には、上記式（１）から変数Ｃを省略することができる。
【００６８】
これにより、エッジ装置Ｅｉにおいて、新規プロセスが起動される度に、既存プロセスの処理量（Ｗproc_k）を更新することができる。
【００６９】
また、情報管理部９０２は、既存プロセスが終了すると、既存プロセスの状態を更新する。具体的には、例えば、情報管理部９０２は、既存プロセスが終了すると、第１のプロセス情報管理テーブル１３０の各既存プロセスの第１のプロセス情報を更新する。より詳細に説明すると、情報管理部９０２は、例えば、上記式（１）を用いて、既存プロセスの処理量（Ｗproc_k）を更新する。また、情報管理部９０２は、既存プロセスの更新時刻を、現在時刻に更新する。
【００７０】
つぎに、情報管理部９０２は、終了した既存プロセスの処理量の移動平均を算出する。また、情報管理部９０２は、終了した既存プロセスのプロセスＩＤに対応するプログラムＩＤを特定する。プロセスＩＤに対応するプログラムＩＤは、例えば、ＯＳの機能より得ることができる。
【００７１】
そして、情報管理部９０２は、特定したプログラムＩＤに対応する処理量管理テーブル１２０内の処理量（Ｗproc）を、算出した移動平均によって更新する。また、情報管理部９０２は、第１のプロセス情報管理テーブル１３０から、終了した既存プロセスのプロセスＩＤに対応するエントリを削除する。
【００７２】
なお、既存プロセスの処理量の移動平均を算出するための情報は、例えば、プログラムＩＤと対応付けて、メモリ３０２、ディスク３０５などの記憶装置に記憶されている。既存プロセスの処理量の移動平均を算出するための情報とは、例えば、過去に算出された既存プロセスの処理量である。
【００７３】
これにより、エッジ装置Ｅｉにおいて、既存プロセスが終了したタイミングで、その既存プロセスに対応する処理量（Ｗproc）を更新することができる。ただし、処理量管理テーブル１２０内の各プログラムＩＤに対応する処理量（Ｗproc）は、予め設定される固定値としてもよい。
【００７４】
処理量判断部９０３は、新規プロセスが起動されると、新規プロセスの処理量（Ｗproc）が閾値α以上であるか否かを判断する。ここで、閾値αは、任意に設定可能である。例えば、閾値αは、エッジ装置Ｅ１〜Ｅｎで負荷分散等を行うにあたり、新規プロセスの処理量（Ｗproc）が閾値α以上であれば、新規プロセスの負荷が無視できない程度に大きいといえる値に設定される。換言すれば、新規プロセスの処理量（Ｗproc）が閾値α未満であれば、新規プロセスは短時間で終了する可能性が高く、管理装置１０１に起動通知を送信してプロセスの終了時刻を予測するほどの理由が乏しいといえる。
【００７５】
具体的には、例えば、処理量判断部９０３は、新規プロセスのプロセスＩＤに対応するプログラムＩＤを特定する。そして、処理量判断部９０３は、処理量管理テーブル１２０を参照して、特定したプログラムＩＤに対応する処理量（Ｗproc）を特定する。そして、処理量判断部９０３は、特定した処理量（Ｗproc）が閾値α以上であるか否かを判断する。
【００７６】
プロセス通知部９０４は、処理量判断部９０３によって新規プロセスの処理量（Ｗproc）が閾値α以上であると判断された場合、状態通知メッセージを管理装置１０１に送信する。ここで、状態通知メッセージは、例えば、処理量（Ｗproc）が閾値α以上である新規プロセスの起動を通知するものである。
【００７７】
状態通知メッセージは、新規プロセスの処理量（Ｗproc）と起動時刻とを含む。起動時刻は、新規プロセスが起動された時刻（例えば、年月日時分秒）である。状態通知メッセージには、新規プロセスのプロセスＩＤが含まれていてもよい。
【００７８】
差分算出部９０５は、エッジ装置Ｅｉが認識する自装置の負荷量と、管理装置１０１が認識するエッジ装置Ｅｉの負荷量との差分を算出する。以下の説明では、エッジ装置Ｅｉが認識する自装置の負荷量と、管理装置１０１が認識するエッジ装置Ｅｉの負荷量との差分を「負荷差分量ＬＤ」と表記する場合がある。
【００７９】
具体的には、例えば、差分算出部９０５は、新規プロセスが起動されると、第１のプロセス情報管理テーブル１３０および第２のプロセス情報管理テーブル１４０を参照して、負荷差分量ＬＤを算出する。なお、負荷差分量ＬＤを算出する具体的な処理内容については、図１１を用いて後述する。
【００８０】
依頼送信部９０６は、自装置よりも管理装置１０１への状態通知メッセージの送信頻度が高い他のエッジ装置Ｅｊに、自装置の負荷状態に関する差分情報を送信する。ここで、自装置の負荷状態に関する差分情報とは、エッジ装置Ｅｉが認識する自装置の負荷量と、管理装置１０１が認識するエッジ装置Ｅｉの負荷量との差分、すなわち、負荷差分量ＬＤを示す情報である。
【００８１】
具体的には、例えば、依頼送信部９０６は、処理量判断部９０３によって新規プロセスの処理量（Ｗproc）が閾値α未満であると判断された場合、差分算出部９０５によって算出された負荷差分量ＬＤが所定値β以上であるか否かを判断する。ここで、所定値βは、任意に設定可能である。例えば、所定値βは、エッジ装置Ｅ１〜Ｅｎで負荷分散等を行うにあたり、負荷差分量ＬＤが所定値β以上であれば、負荷差分量ＬＤが無視できない程度に大きいといえる値に設定される。
【００８２】
そして、依頼送信部９０６は、負荷差分量ＬＤが所定値β以上の場合に、図４に示した対象エッジ管理テーブル１１０を参照して、対象エッジを特定する。この際、依頼送信部９０６は、例えば、順位「１」の対象エッジを特定する。なお、対象エッジ管理テーブル１１０の記憶内容は、例えば、管理装置１０１からの対象エッジ更新要求に応じて更新される。
【００８３】
そして、依頼送信部９０６は、負荷差分量ＬＤを示す差分情報の管理装置１０１への転送依頼を、特定した対象エッジに送信する。すなわち、依頼送信部９０６は、負荷差分量ＬＤを示す差分情報を管理装置１０１に転送するよう他のエッジ装置Ｅｊに依頼する。
【００８４】
以下の説明では、負荷差分量ＬＤを示す差分情報の管理装置１０１への転送依頼を「差分情報パケット」と表記する場合がある。
【００８５】
差分情報パケットは、例えば、エッジＩＤ、差分情報ＩＤ、差分情報送信日時および負荷差分量を含む。エッジＩＤは、依頼元であるエッジ装置ＥｉのエッジＩＤである。差分情報ＩＤは、負荷差分量ＬＤを示す差分情報の差分情報ＩＤである。差分情報送信日時は、差分情報パケットを送信した日時である。負荷差分量は、負荷差分量ＬＤである。
【００８６】
これにより、自装置（エッジ装置Ｅｉ）の負荷状態に関する差分情報を管理装置１０１に転送するよう、状態通知メッセージの送信頻度が高い他のエッジ装置Ｅｊに依頼することができる。また、負荷差分量ＬＤが所定値β未満の場合は差分情報の転送依頼を行わないことで、エッジ装置間の通信が頻繁に発生してしまうのを防ぐことができる。
【００８７】
依頼受信部９０７は、他のエッジ装置Ｅｊから、他のエッジ装置Ｅｊの負荷状態に関する差分情報を受信する。具体的には、例えば、依頼受信部９０７は、他のエッジ装置Ｅｊからの差分情報パケットを受信する。ここで、他のエッジ装置Ｅｊからの差分情報パケットは、他のエッジ装置Ｅｊの負荷差分量ＬＤを示す差分情報の管理装置１０１への転送依頼である。すなわち、依頼受信部９０７は、自装置が対象エッジになっている場合に、他のエッジ装置Ｅｊから差分情報の管理装置１０１への転送依頼を受信する。
【００８８】
また、依頼受信部９０７は、他のエッジ装置Ｅｊから差分情報パケットを受信した場合、受信した差分情報パケットに含まれるエッジＩＤ、差分情報ＩＤ、差分情報送信日時および負荷差分量を対応付けて転送依頼差分情報テーブル１５０に登録する。これにより、他のエッジ装置Ｅｊから転送依頼された差分情報を転送依頼差分情報テーブル１５０に登録することができる。
【００８９】
また、プロセス通知部９０４は、依頼受信部９０７によって他のエッジ装置Ｅｊからの差分情報が受信された場合、管理装置１０１に状態通知メッセージを送信する際に、当該状態通知メッセージに、他のエッジ装置Ｅｊからの差分情報を含めて送信する。具体的には、例えば、プロセス通知部９０４は、転送依頼差分情報テーブル１５０に含まれる転送依頼差分情報を、状態通知メッセージに含めて管理装置１０１に送信する。
【００９０】
これにより、エッジ装置Ｅｉにおいて処理量（Ｗproc）が閾値α以上の新規プロセスが起動したことをエッジ装置Ｅｉから管理装置１０１に通知する際に、他のエッジ装置Ｅｊから転送依頼された差分情報を転送することができる。
【００９１】
対象エッジが自装置の場合は、プロセス通知部９０４は、差分算出部９０５によって算出された自装置の負荷差分量ＬＤを含む状態通知メッセージを管理装置１０１に送信する。なお、対象エッジが自装置の場合は、例えば、依頼送信部９０６が、自装置の負荷差分量ＬＤを図８に示した転送依頼差分情報テーブル１５０に登録することにしてもよい。そして、プロセス通知部９０４が、管理装置１０１に状態通知メッセージを送信する際に、自装置の負荷差分量ＬＤを含む転送依頼差分情報を、状態通知メッセージに含めて送信することにしてもよい。
【００９２】
また、情報管理部９０２は、プロセス通知部９０４によって状態通知メッセージが管理装置１０１に送信された場合に、管理装置１０１が認識する自装置の負荷量を更新する。具体的には、例えば、情報管理部９０２は、第２のプロセス情報管理テーブル１４０に、処理量（Ｗproc）が閾値α以上の新規プロセスについての第２のプロセス情報を登録する。また、情報管理部９０２は、第２のプロセス情報管理テーブル１４０内の既存プロセスについての第２のプロセス情報を更新する。
【００９３】
より詳細に説明すると、情報管理部９０２は、例えば、新規プロセスの処理量（Ｗproc）と起動時刻とに基づいて、新規プロセスの終了時刻を予測する。この際、情報管理部９０２は、自装置の処理能力をさらに考慮して、新規プロセスの終了時刻を予測することにしてもよい。
【００９４】
そして、情報管理部９０２は、エッジ装置ＥｉのエッジＩＤと、新規プロセスの起動時刻と、予測した終了時刻とを対応付けて、第２のプロセス情報管理テーブル１４０に記憶する。この際、情報管理部９０２は、新規プロセスの処理量（Ｗproc）やプロセスＩＤをあわせて記憶することにしてもよい。これにより、新たな第２のプロセス情報が第２のプロセス情報管理テーブル１４０にレコードとして記憶される。
【００９５】
また、情報管理部９０２は、第２のプロセス情報管理テーブル１４０を参照して、既存プロセスの新たな終了時刻を予測する。そして、情報管理部９０２は、新たな終了時刻を予測した既存プロセスについて、第２のプロセス情報管理テーブル１４０内のプロセス終了予想時刻を更新する。
【００９６】
なお、プロセスの処理量（Ｗproc）と起動時刻とに基づいて、プロセスの終了時刻を予測する具体的な処理内容については、図１０を用いて後述する。
【００９７】
また、情報管理部９０２は、予測した既存プロセスの終了時刻に基づいて、既存プロセスの終了を検出する。そして、情報管理部９０２は、既存プロセスの終了を検出した場合、処理量（Ｗproc）が閾値α以上の他の既存プロセスの新たな終了時刻を予測する。
【００９８】
具体的には、例えば、情報管理部９０２は、第２のプロセス情報管理テーブル１４０を参照して、いずれかのエントリのプロセス終了予想時刻を経過したか否かを監視する。そして、情報管理部９０２は、いずれかのエントリのプロセス終了予想時刻が経過した場合、第２のプロセス情報管理テーブル１４０から当該エントリを削除し、第２のプロセス情報管理テーブル１４０内の残りのエントリのプロセス終了予想時刻を更新する。すなわち、情報管理部９０２は、処理量（Ｗproc）が閾値α以上の既存プロセスの新たな終了時刻を予測する。そして、情報管理部９０２は、新たな終了時刻を予測した既存プロセスについて、第２のプロセス情報管理テーブル１４０内のプロセス終了予想時刻を更新する。
【００９９】
また、情報管理部９０２は、依頼送信部９０６によって差分情報パケットが対象エッジに送信された場合、自装置が認識する自装置の負荷量と管理装置１０１が認識する自装置の負荷量との誤差を補正することにしてもよい。あるいは、情報管理部９０２は、対象エッジから転送完了通知を受信した場合に、自装置が認識する自装置の負荷量と管理装置１０１が認識する自装置の負荷量との誤差を補正することにしてもよい。
【０１００】
ここで、転送完了通知は、対象エッジから管理装置１０１へエッジ装置Ｅｉの差分情報を転送したことを示す通知である。具体的には、例えば、情報管理部９０２は、対象エッジに差分情報パケットが送信されたタイミング、または、対象エッジから転送完了通知が受信されたタイミングで、第２のプロセス情報管理テーブル１４０を更新する。
【０１０１】
より詳細に説明すると、例えば、情報管理部９０２は、算出された差分負荷量ＬＤに基づいて、第２のプロセス情報管理テーブル１４０内の既存プロセスについて、新たな終了時刻を予測する。そして、情報管理部９０２は、予測した新たな終了時刻により、第２のプロセス情報管理テーブル１４０内の既存プロセスのプロセス終了予想時刻を更新する。
【０１０２】
これにより、対象エッジに差分情報パケットを送信したタイミング、または、対象エッジから転送完了通知を受信したタイミングで、自装置が認識する自装置の負荷量と管理装置１０１が認識する自装置の負荷量との誤差を補正することができる。
【０１０３】
なお、エッジ装置Ｅｉの差分負荷量ＬＤに基づく第２のプロセス情報管理テーブル１４０内の既存プロセスの新たな終了時刻の予測例については、図１３を用いて後述する、管理装置１０１の補正部１２０３（図１２参照）の予測例と同様のため、図示および説明を省略する。
【０１０４】
また、上述した説明では、依頼送信部９０６は、対象エッジ管理テーブル１１０を参照して、特定した対象エッジに差分情報パケットを送信する場合について説明したが、これに限らない。例えば、依頼送信部９０６は、エッジ装置Ｅ１〜Ｅｎのうち自装置を除く残余のエッジ装置に差分情報パケットをブロードキャストすることにしてもよい。この場合、エッジ装置Ｅｉを除くいずれかのエッジ装置において、管理装置１０１に状態通知メッセージを送信する際に、エッジ装置Ｅｉの差分情報パケットがあわせて送信される。
【０１０５】
ただし、管理装置１０１は、同一の差分情報パケットが複数回送信されてきても補正が重複しないように、差分情報ＩＤを用いて差分情報パケットを管理する。また、他のエッジ装置Ｅｊが、エッジ装置Ｅｉの差分情報パケットを含めた状態通知メッセージを送信したことに応じて、当該差分情報パケットの転送完了通知をブロードキャストすることにしてもよい。これにより、同一の差分情報パケットの管理装置１０１への重複送信を防ぐことができる。
【０１０６】
（プロセスの終了時刻の予測）
つぎに、図１０を用いて、プロセスの処理量（Ｗproc）と起動時刻とに基づいて、プロセスの終了時刻を予測する具体的な処理内容について説明する。以下の説明において、プロセスＡ，Ｂは、処理量（Ｗproc）が閾値α以上のプロセスである。
【０１０７】
図１０は、プロセスの終了時刻の予測を説明するための図である。図１０の（１０−１）に示すように、エッジ装置Ｅｉにおいて、時刻「０」に、処理量（Ｗproc）が「Ｗproc＝１５０」のプロセスＡ（新規プロセス）が起動された場合を想定する。また、エッジ装置Ｅｉの処理能力を「１０」とする。
【０１０８】
この場合、情報管理部９０２は、１つのプロセスＡの処理量「１５０」を処理能力「１０」で処理するため、プロセスＡの終了時刻「１５」（＝処理量／処理能力）を予測する。すなわち、情報管理部９０２は、起動時刻を現在時刻とした場合、プロセスＡが現在時刻から時刻「１５」を経過すると離脱すると予測する。なお、時刻の単位は特に限定されず、例えば、時間、分、秒などいずれでもよい。
【０１０９】
つぎに、図１０の（１０−２）に示すように、プロセスＡが起動された時刻「０」から時刻「５」が経過した現在時刻に、処理量（Ｗproc）が「Ｗproc＝２００」のプロセスＢ（新規プロセス）が起動された場合を想定する。
【０１１０】
この場合、情報管理部９０２は、プロセスＡの残りの処理量を算出する。具体的には、処理能力「１０」の全てを使用して、１つのプロセスＡを処理した期間は、時刻「０」から時刻「５」である。このため、まず、情報管理部９０２は、時刻「０」から時刻「５」までに処理した処理量「５０（＝（処理能力／現在時刻までのプロセス数）×（現在時刻−プロセスＡの起動時刻））」を算出する。そして、情報管理部９０２は、プロセスＡの残りの処理量「１００（＝処理量「１５０」−処理量「５０」）」を算出する。
【０１１１】
一方、エッジ装置Ｅｉにおいて、プロセスＢが起動されると、時刻「５」以後は２つのプロセスＡ，Ｂを処理するために処理能力「１０」の全てが使用される。例えば、エッジ装置Ｅｉは、プロセスＡとプロセスＢのそれぞれを処理能力「５（＝処理能力／プロセス数）」で処理する。
【０１１２】
このため、情報管理部９０２は、プロセスＡの残りの処理量「１００」を処理能力「５」で処理するための処理時間「２０（＝処理量／処理能力）」を算出する。そして、情報管理部９０２は、現在時刻「５」であるため、プロセスＡの新たな終了時刻「２５（＝現在時刻＋処理時間）」を予測する。
【０１１３】
なお、プロセスの新たな終了時刻が予測されると、例えば、第２のプロセス情報管理テーブル１４０内の当該プロセスのプロセス終了予想時刻が更新される。
【０１１４】
また、プロセスＢはまだ処理されていないため、情報管理部９０２は、プロセスＢの残りの処理量「２００」を処理能力「５」で処理するための処理時間「４０（＝処理量／処理能力）」を算出する。そして、情報管理部９０２は、現在時刻「５」であるため、プロセスＢの終了時刻「４５（＝現在時刻＋処理時間）」を予測する。
【０１１５】
つぎに、図１０の（１０−３）に示すように、現在時刻がプロセスＡの終了時刻「２５」を経過すると、プロセスＡが終了して離脱する。エッジ装置Ｅｉは、時刻「２５」以前は２つのプロセスＡ，Ｂを処理するために処理能力「５」を使用している。ここで、プロセスＢの起動時刻から現在時刻までは経過時間「２０（＝時刻「２５」−時刻「５」）」である。
【０１１６】
このため、情報管理部９０２は、時刻「５」から時刻「２５」までに処理した処理量「１００（＝（処理能力／現在時刻までのプロセス数）×（現在時刻−プロセスＢの起動時刻））」を算出する。そして、情報管理部９０２は、プロセスＢの残りの処理量「１００（＝処理量「２００」−処理量「１００」）」を算出する。
【０１１７】
一方、エッジ装置Ｅｉにおいて、プロセスＡが離脱（終了）すると、時刻「２５」以後は１つのプロセスＢを処理するために処理能力「１０」の全てが使用される。すなわち、エッジ装置Ｅｉは、プロセスＢを処理能力「１０（＝処理能力／新たなプロセス数）」で処理する。
【０１１８】
このため、情報管理部９０２は、プロセスＢの残りの処理量「１００」を処理能力「１０」で処理するための処理時間「１０（＝処理量／処理能力）」を算出する。そして、情報管理部９０２は、現在時刻「２５」であるため、プロセスＢの新たな終了時刻「３５（＝現在時刻＋処理時間）」を予測する。
【０１１９】
（負荷差分量ＬＤの算出）
つぎに、図１１を用いて、負荷差分量ＬＤを算出する具体的な処理内容について説明する。ここでは、エッジ装置Ｅｉとして「エッジ装置Ｅ１」を例に挙げて説明する。
【０１２０】
図１１は、負荷差分量ＬＤの算出例を示す説明図である。図１１の例では、第１のプロセス情報管理テーブル１３０に、第１のプロセス情報１１００−１〜１１００−３が記憶されている場合を想定する。また、第２のプロセス情報管理テーブル１４０に、第２のプロセス情報１１００−１が記憶されている場合を想定する。
【０１２１】
また、第１のプロセス情報１１００−１，１１００−３が示すプロセスｐａ，ｐｃを、処理量（Ｗproc）が閾値α以上のプロセスとする。第１のプロセス情報１１００−２が示すプロセスｐｂを、処理量（Ｗproc）が閾値α未満のプロセスとする。また、現在時刻、すなわち、新規プロセス（プロセスｐｃ）が起動された時刻を、「２０１７−０６−２６  １１：２４：００」とする。
【０１２２】
この場合、まず、差分算出部９０５は、第１のプロセス情報管理テーブル１３０を参照して、全エントリのプロセスＩＤおよび処理量（Ｗproc_k）を取得する。つぎに、差分算出部９０５は、取得したプロセスＩＤに対応するプログラムＩＤを特定する。そして、差分算出部９０５は、処理量管理テーブル１２０を参照して、特定したプログラムＩＤに対応する処理量（Ｗproc）を特定する。
【０１２３】
ここでは、プロセスＩＤ「ｐａ，ｐｃ」に対応するプログラムＩＤを「ＰＧ＃」とし、プログラムＩＤ「ＰＧ＃」に対応する処理量（Ｗproc）を「Ｗproc＝２０」とする。また、プロセスＩＤ「ｐｂ」に対応するプログラムＩＤを「ＰＧ＄」とし、プログラムＩＤ「ＰＧ＄」に対応する処理量（Ｗproc）を「Ｗproc＝５」とする。
【０１２４】
つぎに、差分算出部９０５は、第１のプロセス情報管理テーブル１３０を参照して、下記式（２）を用いて、全エントリの（Ｗproc−Ｗproc_k）の和を求めることにより、エッジ装置Ｅ１の残負荷総量Ｌ１を算出する。残負荷総量Ｌ１は、エッジ装置Ｅｉが認識する自装置の負荷量であり、エッジ装置Ｅ１で処理しないといけないと見込まれる残負荷の総量である。また、（Ｗproc−Ｗproc_k）は、エッジ装置Ｅｉで実行中のプロセスが終了するまでの残りの処理量をあらわす。
【０１２５】
Ｌ１＝Σ（Ｗproc−Ｗproc_k）  ・・・（２）
【０１２６】
ただし、負になるエントリの分は「０」とする。また、登録されたばかりの最新エントリは除く。図１１の例では、残負荷総量Ｌ１は、「１３（＝（２０−１０）＋（５−２））」となる。
【０１２７】
つぎに、差分算出部９０５は、第２のプロセス情報管理テーブル１４０を参照して、下記式（３）を用いて、全エントリの（プロセス終了予想時刻−現在時刻）の和を求めることにより、エッジ装置Ｅ１の残負荷総量Ｌ２を算出する。残負荷総量Ｌ２は、管理装置１０１が認識するエッジ装置Ｅ１の負荷量であり、クラウド側から見たエッジ装置Ｅ１の残負荷の総量である。
【０１２８】
Ｌ２＝Σ（プロセス終了予想時刻−現在時刻）  ・・・（３）
【０１２９】
図１１の例では、残負荷総量Ｌ２は、「８（＝（２０１７−０６−２６  １１：２４：０８）−（２０１７−０６−２６  １１：２４：００））」となる。
【０１３０】
そして、差分算出部９０５は、算出した残負荷総量Ｌ１，Ｌ２に基づいて、負荷差分量ＬＤを算出する。具体的には、例えば、差分算出部９０５は、残負荷総量Ｌ１から残負荷総量Ｌ２を減算することにより、負荷差分量ＬＤを算出する。図１１の例では、負荷差分量ＬＤは、「５（＝１３−８）」となる。この負荷差分量ＬＤ「５」は、管理装置１０１に起動が通知されなかったプロセスｐｂの分に相当する。
【０１３１】
これにより、エッジ装置Ｅ１は、処理量（Ｗproc）が閾値α未満であるプロセスの起動を通知しなかったことにより生じた管理装置１０１との差分を計算することができる。
【０１３２】
（管理装置１０１の機能的構成例）
図１２は、管理装置１０１の機能的構成例を示すブロック図である。図１２において、管理装置１０１は、通知受信部１２０１と、状態管理部１２０２と、補正部１２０３と、情報通知部１２０４と、決定部１２０５と、を含む。通知受信部１２０１〜決定部１２０５は制御部となる機能であり、具体的には、例えば、管理装置１０１のメモリ、ディスクなどの記憶装置に記憶されたプログラムをＣＰＵに実行させることにより、または、Ｉ／Ｆにより、その機能を実現する（例えば、図３参照）。各機能部の処理結果は、例えば、メモリ、ディスクなどの記憶装置に記憶される。
【０１３３】
通知受信部１２０１は、エッジ装置Ｅｉからの状態通知メッセージを受信する。ここで、状態通知メッセージは、処理量（Ｗproc）が閾値α以上である新規プロセスの起動を通知するものであり、新規プロセスの処理量（Ｗproc）と起動時刻とを含む。状態通知メッセージには、新規プロセスのプロセスＩＤが含まれていてもよい。
【０１３４】
状態管理部１２０２は、エッジ装置Ｅｉの状態を管理する。具体的には、例えば、状態管理部１２０２は、エッジ装置Ｅｉからの状態通知メッセージが受信されると、第２のプロセス情報管理テーブル（管理用）１６０に、新規プロセスについての第２のプロセス情報を登録する。
【０１３５】
より詳細に説明すると、状態管理部１２０２は、例えば、状態通知メッセージに含まれる新規プロセスの処理量（Ｗproc）と起動時刻とに基づいて、新規プロセスの終了時刻を予測する。この際、状態管理部１２０２は、エッジ装置Ｅｉの処理能力をさらに考慮して、新規プロセスの終了時刻を予測することにしてもよい。
【０１３６】
そして、状態管理部１２０２は、エッジ装置ＥｉのエッジＩＤと、新規プロセスの起動時刻と、予測した終了時刻とを対応付けて、第２のプロセス情報管理テーブル（管理用）１６０に記憶する。この際、状態管理部１２０２は、新規プロセスの処理量（Ｗproc）やプロセスＩＤをあわせて記憶することにしてもよい。これにより、新たな第２のプロセス情報が第２のプロセス情報管理テーブル（管理用）１６０にレコードとして記憶される。
【０１３７】
また、状態管理部１２０２は、エッジ装置Ｅｉの既存プロセスの終了を検出すると、エッジ装置Ｅｉの残りの既存プロセスについて、新たな終了時刻を予測する。そして、状態管理部１２０２は、新たな終了時刻を予測した残りの既存プロセスについて、第２のプロセス情報管理テーブル（管理用）１６０内のプロセス終了予想時刻を更新する。
【０１３８】
なお、エッジ装置Ｅｉの既存プロセスの終了は、例えば、第２のプロセス情報管理テーブル（管理用）１６０内のプロセス終了予想時刻をもとに検出される。具体的には、例えば、状態管理部１２０２は、第２のプロセス情報管理テーブル（管理用）１６０を参照して、エッジ装置Ｅｉのいずれかの既存プロセスのプロセス終了予想時刻が経過したことに応じて、当該既存プロセスの終了を検出する。
【０１３９】
なお、プロセスの終了時刻を予測する具体的な処理内容については、図１０を用いて説明したエッジ装置Ｅｉの情報管理部９０２の処理内容と同様のため、詳細な説明を省略する。
【０１４０】
補正部１２０３は、他のエッジ装置Ｅｊから、エッジ装置Ｅｉの差分情報を含む状態通知メッセージを受信した場合、当該差分情報に基づいて、エッジ装置Ｅｉの負荷状態を補正する。また、補正部１２０３は、エッジ装置Ｅｉから、エッジ装置Ｅｉの差分情報を含む状態通知メッセージを受信した場合、当該差分情報に基づいて、エッジ装置Ｅｉの負荷状態を補正する。ここで、差分情報には、例えば、エッジＩＤ、差分情報ＩＤ、差分情報送信日時および負荷差分量が含まれる。
【０１４１】
エッジＩＤは、エッジ装置ＥｉのエッジＩＤである。差分情報ＩＤは、差分情報を一意に識別する識別子である。差分情報送信日時は、エッジ装置Ｅｉが他のエッジ装置Ｅｊに対して差分情報の転送依頼を送信した日時（年月日時分秒）である。負荷差分量は、エッジ装置Ｅｉの負荷差分量ＬＤを示す。
【０１４２】
具体的には、例えば、補正部１２０３は、差分情報に含まれるエッジ装置Ｅｉの負荷差分量ＬＤに基づいて、エッジ装置Ｅｉで起動された既存プロセスの新たな終了時刻を予測する。そして、補正部１２０３は、予測した新たな終了時刻を用いて、第２のプロセス情報管理テーブル（管理用）１６０内のプロセス終了予想時刻を更新する。
【０１４３】
なお、エッジ装置Ｅｉの負荷差分量ＬＤに基づく既存プロセスの新たな終了時刻の予測例については、図１３を用いて後述する。
【０１４４】
情報通知部１２０４は、エッジ装置Ｅｉの差分情報を含む状態通知メッセージを受信した場合、または、補正部１２０３によってエッジ装置Ｅｉの負荷状態の補正が完了した場合、エッジ装置Ｅｉに更新完了通知を送信することにしてもよい。更新完了通知は、エッジ装置Ｅｉの負荷状態の補正が完了したことを示す通知である。
【０１４５】
なお、更新完了通知の送信先は、エッジ装置Ｅｉの差分情報を含む状態通知メッセージの送信元である他のエッジ装置Ｅｊであってもよい。この場合、他のエッジ装置Ｅｊは、管理装置１０１からエッジ装置Ｅｉの負荷状態の補正が完了したことを示す更新完了通知を受信すると、当該更新完了通知をエッジ装置Ｅｉに転送する。
【０１４６】
決定部１２０５は、通知受信部１２０１によってエッジ装置Ｅ１〜Ｅｎそれぞれの状態通知メッセージが受信された頻度に基づいて、エッジ装置Ｅ１〜Ｅｎの中から対象エッジを決定する。対象エッジは、エッジ装置Ｅｉの負荷状態に関する差分情報の管理装置１０１への転送を依頼する依頼先のエッジ装置である。具体的には、例えば、決定部１２０５は、エッジ装置Ｅ１〜Ｅｎについて、直近の一定期間内に状態通知メッセージを受信した回数を計数する。そして、決定部１２０５は、計数した回数が多い上位Ｎ個（例えば、Ｎ＝３）のエッジ装置を対象エッジに決定する。
【０１４７】
なお、エッジ装置Ｅｉからの状態通知メッセージが受信された日時を特定する情報は、例えば、エッジ装置ＥｉのエッジＩＤと対応付けて、メモリ、ディスクなどの記憶装置に記憶されている。また、一定期間は、任意に設定可能である。
【０１４８】
これにより、直近の一定期間内における状態通知メッセージの送信頻度が高い上位Ｎ個のエッジ装置を対象エッジに決定することができる。また、決定部１２０５は、エッジ装置Ｅ１〜Ｅｎのうち、状態通知メッセージを最後に受信したエッジ装置を対象エッジに決定することにしてもよい。
【０１４９】
対象エッジを決定するタイミングは、例えば、エッジ装置Ｅ１〜Ｅｎのうちのいずれかのエッジ装置Ｅｉから状態通知メッセージを受信したときであってもよく、また、予め決められたタイミング（例えば、１時間ごと、１日ごとなど）であってもよい。
【０１５０】
情報通知部１２０４は、決定部１２０５によって決定された対象エッジを特定する情報を、エッジ装置Ｅ１〜Ｅｎに送信する。例えば、直近の一定期間内に状態通知メッセージを受信した回数が多い上位３個のエッジ装置が対象エッジに決定されたとする。この場合、情報通知部１２０４は、１位〜３位の各順位の対象エッジを特定する情報を含む対象エッジ更新要求を、エッジ装置Ｅ１〜Ｅｎに通知する。各エッジ装置Ｅｉは、管理装置１０１から対象エッジ更新要求を受信すると、受信した対象エッジ更新要求に基づいて、対象エッジ管理テーブル１１０を更新する。
【０１５１】
（既存プロセスの新たな終了時刻の予測例）
つぎに、図１３を用いて、エッジ装置Ｅｉの負荷差分量ＬＤに基づく既存プロセスの新たな終了時刻の予測例について説明する。
【０１５２】
図１３は、第２のプロセス情報管理テーブル（管理用）１６０の更新例を示す説明図である。図１３において、第２のプロセス情報管理テーブル（管理用）１６０は、エッジＩＤ、プロセス起動時刻およびプロセス終了予想時刻のフィールドを有し、各フィールドに情報を設定することで、第２のプロセス情報（例えば、第２のプロセス情報１３００−１〜１３００−３）をレコードとして記憶する。
【０１５３】
ここで、エッジＩＤは、エッジ装置Ｅｉを一意に識別する識別子である。プロセス起動時刻は、エッジ装置Ｅｉでプロセスが起動した日時（年月日時分秒）を示す。プロセス終了予想時刻は、エッジ装置Ｅｉでプロセスが終了する予想日時（年月日時分秒）を示す。
【０１５４】
以下、エッジ装置Ｅｉとして「エッジ装置Ｅ１」を例に挙げて、エッジ装置Ｅ１で起動された既存プロセスの新たな終了時刻の予測例について説明する。ここでは、エッジ装置Ｅ１の差分情報に含まれるエッジ装置Ｅ１の負荷差分量ＬＤを「ＬＤ＝２０」とする。
【０１５５】
この場合、まず、補正部１２０３は、（１３−１）の第２のプロセス情報管理テーブル（管理用）１６０から、差分情報に含まれるエッジＩＤ「Ｅ１」に対応するエントリを抽出する。そして、補正部１２０３は、例えば、下記式（４）を用いて、抽出した各エントリの新プロセス終了予想時刻ＥＴnewを算出する。
【０１５６】
ＥＴnew＝ＥＴ＋（ＬＤ／ｐ）  ・・・（４）
【０１５７】
ただし、ＥＴnewは、既存プロセスの新たな終了時刻である。ＥＴは、既存プロセスの現在の終了時刻（現プロセス終了予想時刻）である。ＬＤは、負荷差分量である。ｐは、エッジ装置Ｅｉで動作しているプロセスの数である。ｐは、抽出されたエントリ数に相当する。
【０１５８】
図１３の例では、エッジＩＤ「Ｅ１」に対応するエントリとして、第２のプロセス情報１３００−１，１３００−２が抽出される。このため、エッジ装置Ｅｉで動作しているプロセスの数ｐは「ｐ＝２」である。この場合、補正部１２０３は、上記式（４）を用いて、第２のプロセス情報１３００−１の新プロセス終了予想時刻ＥＴnewを算出する。また、補正部１２０３は、上記式（４）を用いて、第２のプロセス情報１３００−２の新プロセス終了予想時刻ＥＴnewを算出する。
【０１５９】
第２のプロセス情報１３００−１の新プロセス終了予想時刻ＥＴnewは、『ＥＴnew＝（２０１７−０６−２６  １１：３６：１３）＋（２０／２）＝２０１７−０６−２６  １１：３６：２３』となる。
【０１６０】
また、第２のプロセス情報１３００−２の新プロセス終了予想時刻ＥＴnewは、『ＥＴnew＝（２０１７−０６−２６  １１：３６：３０）＋（２０／２）＝２０１７−０６−２６  １１：３６：４０』となる。
【０１６１】
そして、補正部１２０３は、（１３−２）に示すように、算出した新プロセス終了予想時刻ＥＴnewにより、第２のプロセス情報管理テーブル（管理用）１６０内の第２のプロセス情報１３００−１，１３００−２のプロセス終了予想時刻を更新する。
【０１６２】
（対象エッジの変更）
上述したように、エッジ装置Ｅｉは、自装置の負荷差分量ＬＤを示す差分情報の管理装置１０１への転送依頼（差分情報パケット）を、自装置よりも管理装置１０１への状態通知メッセージの送信頻度が高い対象エッジに送信する。しかし、対象エッジにおいて、処理量（Ｗproc）が閾値α以上のプロセスがすぐには起動されない場合がある。この場合、エッジ装置Ｅｉの差分情報の管理装置１０１への転送が遅れるおそれがある。
【０１６３】
そこで、対象エッジにおいて、エッジ装置Ｅｉから差分情報パケットを受信したから一定時間ｔ経過しても、処理量（Ｗproc）が閾値α以上のプロセスが起動されない場合、エッジ装置Ｅｉに対して差分情報の再転送依頼を送信することにしてもよい。差分情報の再転送依頼とは、管理装置１０１への差分情報の転送依頼を、自エッジとは異なる他の対象エッジに送信するよう依頼するものである。一定時間ｔは、任意に設定可能である。例えば、一定時間ｔは、エッジ装置Ｅ１〜Ｅｎにおける処理量（Ｗproc）が閾値α未満のプロセスの過去の発生間隔をもとに設定される。
【０１６４】
ここで、図１４を用いて、対象エッジを変更する際の動作例について説明する。
【０１６５】
図１４は、対象エッジを変更する際の動作例を示す説明図である。図１４において、エッジ装置Ｅ１を、差分情報パケットの送信元のエッジ装置とする。また、エッジ装置Ｅ２を、エッジ装置Ｅ１よりも管理装置１０１への状態通知メッセージの送信頻度が高い順位「１」の対象エッジとする。また、エッジ装置Ｅ３を、エッジ装置Ｅ１よりも管理装置１０１への状態通知メッセージの送信頻度が高い順位「２」の対象エッジとする。
【０１６６】
（１４−１）エッジ装置Ｅ１は、差分情報パケットを順位「１」の対象エッジであるエッジ装置Ｅ２に送信する。
【０１６７】
（１４−２）エッジ装置Ｅ２は、エッジ装置Ｅ１から差分情報パケットを受信すると、当該差分情報パケットを管理装置１０１へ転送することなく、当該差分情報パケットを受信してから一定時間ｔ経過したか否かを判断する。
【０１６８】
（１４−３）エッジ装置Ｅ２は、管理装置１０１へ差分情報パケットを転送することなく、当該差分情報パケットを受信してから一定時間ｔ経過した場合、エッジ装置Ｅ１に対して差分情報の再転送依頼を送信する。なお、エッジ装置Ｅ２は、変更後の対象エッジを指定することにしてもよい。具体的には、例えば、エッジ装置Ｅ２は、対象エッジ管理テーブル１１０を参照して、自装置を除く順位が最も高いエッジ装置を対象エッジとして指定する。
【０１６９】
（１４−４）エッジ装置Ｅ１は、エッジ装置Ｅ２から差分情報の再転送依頼を受信すると、対象エッジを、順位「２」のエッジ装置Ｅ３に更新する。具体的には、例えば、エッジ装置Ｅ１は、対象エッジ管理テーブル１１０内の順位「１」の対象エッジと順位「２」の対象エッジとを入れ替える。なお、変更後の対象エッジは、例えば、エッジ装置Ｅ２から指定されることにしてもよい。
【０１７０】
（１４−５）エッジ装置Ｅ１は、差分情報パケットを更新後の対象エッジであるエッジ装置Ｅ３に送信する。
【０１７１】
（１４−６）エッジ装置Ｅ３は、エッジ装置Ｅ１から差分情報パケットを受信すると、管理装置１０１に状態通知メッセージを送信する際に、当該状態通知メッセージに、エッジ装置Ｅ１からの差分情報を含めて送信する。
【０１７２】
このように、対象エッジであるエッジ装置Ｅ２において、エッジ装置Ｅ１からの差分情報パケットを受信してから一定時間ｔ経過しても、管理装置１０１への状態通知メッセージが送信されなかった場合には、対象エッジを変更することができる。これにより、エッジ装置Ｅ１の差分情報の管理装置１０１への転送が遅れるのを防いで、エッジ装置Ｅ１の負荷状態に関する誤差を抑制することができる。
【０１７３】
（エッジ装置Ｅｉの通知処理手順）
つぎに、図１５および図１６を用いて、エッジ装置Ｅｉの通知処理手順について説明する。
【０１７４】
図１５および図１６は、エッジ装置Ｅｉの通知処理手順の一例を示すフローチャートである。図１５のフローチャートにおいて、まず、エッジ装置Ｅｉは、新規プロセスが起動したか否かを判断する（ステップＳ１５０１）。ここで、新規プロセスが起動していない場合（ステップＳ１５０１：Ｎｏ）、エッジ装置Ｅｉは、既存プロセスが終了したか否かを判断する（ステップＳ１５０２）。
【０１７５】
ここで、既存プロセスが終了していない場合（ステップＳ１５０２：Ｎｏ）、エッジ装置Ｅｉは、ステップＳ１５０１に戻る。一方、既存プロセスが終了した場合（ステップＳ１５０２：Ｙｅｓ）、エッジ装置Ｅｉは、第１のプロセス情報管理テーブル１３０を更新して（ステップＳ１５０３）、本フローチャートによる一連の処理を終了する。
【０１７６】
なお、ステップＳ１５０３では、エッジ装置Ｅｉは、例えば、第１のプロセス情報管理テーブル１３０の各既存プロセスの第１のプロセス情報を更新したり、終了した既存プロセスの第１のプロセス情報を削除したりする。この際、エッジ装置Ｅｉは、処理量管理テーブル１２０内の終了した既存プロセスの処理量（Ｗproc）を更新することにしてもよい。
【０１７７】
また、ステップＳ１５０１において、新規プロセスが起動した場合（ステップＳ１５０１：Ｙｅｓ）、エッジ装置Ｅｉは、図１６に示すステップＳ１６０１に移行する。
【０１７８】
図１６のフローチャートにおいて、まず、エッジ装置Ｅｉは、第１のプロセス情報管理テーブル１３０を更新する（ステップＳ１６０１）。具体的には、例えば、エッジ装置Ｅｉは、第１のプロセス情報管理テーブル１３０に新規プロセスの第１のプロセス情報を登録したり、第１のプロセス情報管理テーブル１３０内の既存プロセスの第１のプロセス情報を更新したりする。
【０１７９】
つぎに、エッジ装置Ｅｉは、負荷差分量ＬＤを算出する負荷差分量算出処理を実行する（ステップＳ１６０２）。負荷差分量算出処理の具体的な処理手順については、図１７を用いて後述する。つぎに、エッジ装置Ｅｉは、新規プロセスの処理量（Ｗproc）が閾値α以上であるか否かを判断する（ステップＳ１６０３）。
【０１８０】
ここで、新規プロセスの処理量（Ｗproc）が閾値α以上の場合（ステップＳ１６０３：Ｙｅｓ）、エッジ装置Ｅｉは、転送依頼差分情報テーブル１５０から転送依頼された差分情報（転送依頼差分情報）を読み出す（ステップＳ１６０４）。そして、エッジ装置Ｅｉは、状態通知メッセージに、読み出した差分情報を含めて管理装置１０１に送信する（ステップＳ１６０５）。状態通知メッセージには、例えば、ステップＳ１６０２において算出された、エッジ装置Ｅｉの負荷差分量ＬＤを示す差分情報が含まれる。
【０１８１】
つぎに、エッジ装置Ｅｉは、管理装置１０１から更新完了通知を受信すると（ステップＳ１６０６）、第２のプロセス情報管理テーブル１４０を更新する（ステップＳ１６０７）。具体的には、例えば、エッジ装置Ｅｉは、第２のプロセス情報管理テーブル１４０に新規プロセスの第２のプロセス情報を登録したり、第２のプロセス情報管理テーブル１４０内の既存プロセスの第２のプロセス情報を更新したりする。
【０１８２】
そして、エッジ装置Ｅｉは、転送依頼された差分情報の依頼元である他のエッジ装置Ｅｊに転送完了通知を送信して（ステップＳ１６０８）、本フローチャートによる一連の処理を終了する。
【０１８３】
また、ステップＳ１６０３において、新規プロセスの処理量（Ｗproc）が閾値α未満の場合（ステップＳ１６０３：Ｎｏ）、エッジ装置Ｅｉは、算出した負荷差分量ＬＤが所定値β以上であるか否かを判断する（ステップＳ１６０９）。ここで、負荷差分量ＬＤが所定値β未満の場合（ステップＳ１６０９：Ｎｏ）、エッジ装置Ｅｉは、本フローチャートによる一連の処理を終了する。
【０１８４】
一方、負荷差分量ＬＤが所定値β以上の場合（ステップＳ１６０９：Ｙｅｓ）、エッジ装置Ｅｉは、対象エッジ管理テーブル１１０を参照して、対象エッジを特定する（ステップＳ１６１０）。そして、エッジ装置Ｅｉは、特定した対象エッジに、算出した負荷差分量ＬＤを示す差分情報の管理装置１０１への転送依頼を送信して（ステップＳ１６１１）、本フローチャートによる一連の処理を終了する。
【０１８５】
これにより、エッジ装置Ｅｉの負荷状態に関する差分情報を、エッジ装置Ｅｉよりも管理装置１０１への状態通知メッセージの送信頻度が高い対象エッジ（他のエッジ装置Ｅｊ）から管理装置１０１に転送することができる。
【０１８６】
なお、エッジ装置Ｅｉは、例えば、ステップＳ１６１１の直後、または、ステップＳ１６１１の後に対象エッジから転送完了通知を受信すると、第２のプロセス情報管理テーブル１４０を更新する。具体的には、例えば、エッジ装置Ｅｉは、負荷差分量ＬＤに基づいて、第２のプロセス情報管理テーブル１４０内の既存プロセスの終了時刻を更新する。
【０１８７】
また、図示は省略するが、エッジ装置Ｅｉは、第２のプロセス情報管理テーブル１４０を参照して、いずれかのエントリのプロセス終了予想時刻を経過したか否かを監視する。そして、エッジ装置Ｅｉは、いずれかのエントリのプロセス終了予想時刻が経過した場合、第２のプロセス情報管理テーブル１４０から当該エントリを削除し、第２のプロセス情報管理テーブル１４０内の残りのエントリのプロセス終了予想時刻を更新する。
【０１８８】
つぎに、図１７を用いて、図１６に示したステップＳ１６０２の負荷差分量算出処理の具体的な処理手順について説明する。
【０１８９】
図１７は、負荷差分量算出処理の具体的処理手順の一例を示すフローチャートである。図１７のフローチャートにおいて、まず、エッジ装置Ｅｉは、第１のプロセス情報管理テーブル１３０から、全エントリのプロセスＩＤおよび処理量（Ｗproc_k）を取得する（ステップＳ１７０１）。
【０１９０】
つぎに、エッジ装置Ｅｉは、取得したプロセスＩＤに対応するプログラムＩＤを特定する（ステップＳ１７０２）。そして、エッジ装置Ｅｉは、処理量管理テーブル１２０を参照して、特定したプログラムＩＤに対応する処理量（Ｗproc）を特定する（ステップＳ１７０３）。
【０１９１】
つぎに、エッジ装置Ｅｉは、第１のプロセス情報管理テーブル１３０を参照して、上記式（２）を用いて、全エントリの（Ｗproc−Ｗproc_k）の和を求めることにより、エッジ装置Ｅｉの残負荷総量Ｌ１を算出する（ステップＳ１７０４）。
【０１９２】
つぎに、エッジ装置Ｅｉは、第２のプロセス情報管理テーブル１４０から、全エントリのプロセス終了予想時刻を取得する（ステップＳ１７０５）。そして、エッジ装置Ｅｉは、上記式（３）を用いて、全エントリの（プロセス終了予想時刻−現在時刻）の和を求めることにより、エッジ装置Ｅｉの残負荷総量Ｌ２を算出する（ステップＳ１７０６）。
【０１９３】
そして、エッジ装置Ｅｉは、算出した残負荷総量Ｌ１から残負荷総量Ｌ２を減算することにより、負荷差分量ＬＤを算出して（ステップＳ１７０７）、負荷差分量算出処理を呼び出したステップに戻る。
【０１９４】
これにより、エッジ装置Ｅ１は、処理量（Ｗproc）が閾値α未満であるプロセスの起動を通知しなかったことにより生じた管理装置１０１との差分を計算することができる。
【０１９５】
（管理装置１０１の誤差処理手順）
つぎに、図１８を用いて、管理装置１０１の誤差処理手順について説明する。
【０１９６】
図１８は、管理装置１０１の誤差処理手順の一例を示すフローチャートである。図１８のフローチャートにおいて、まず、管理装置１０１は、エッジ装置Ｅｉの差分情報を含む状態通知メッセージを他のエッジ装置Ｅｊから受信したか否かを判断する（ステップＳ１８０１）。
【０１９７】
ここで、管理装置１０１は、差分情報を含む状態通知メッセージを受信するのを待つ（ステップＳ１８０１：Ｎｏ）。そして、差分情報を含む状態通知メッセージを受信した場合（ステップＳ１８０１：Ｙｅｓ）、管理装置１０１は、差分情報に含まれるエッジ装置ＥｉのエッジＩＤを特定する（ステップＳ１８０２）。
【０１９８】
つぎに、管理装置１０１は、第２のプロセス情報管理テーブル（管理用）１６０から、特定したエッジ装置ＥｉのエッジＩＤに対応するエントリを抽出する（ステップＳ１８０３）。つぎに、管理装置１０１は、上記式（４）を用いて、差分情報に含まれるエッジ装置Ｅｉの負荷差分量ＬＤに基づいて、抽出した各エントリの新プロセス終了予想時刻ＥＴnewを算出する（ステップＳ１８０４）。
【０１９９】
そして、管理装置１０１は、算出した新プロセス終了予想時刻ＥＴnewにより、第２のプロセス情報管理テーブル（管理用）１６０内の当該各エントリのプロセス終了予想時刻を更新して（ステップＳ１８０５）、本フローチャートによる一連の処理を終了する。
【０２００】
これにより、管理装置１０１に対してエッジ装置Ｅｉがプロセスの起動を通知しなかったことにより生じた負荷状態に関する誤差を補正することができる。
【０２０１】
また、図示は省略するが、管理装置１０１は、第２のプロセス情報管理テーブル（管理用）１６０を参照して、いずれかのエントリのプロセス終了予想時刻を経過したか否かを監視する。そして、管理装置１０１は、いずれかのエントリのプロセス終了予想時刻が経過した場合、第２のプロセス情報管理テーブル（管理用）１６０から当該エントリを削除し、第２のプロセス情報管理テーブル（管理用）１６０内の残りのエントリのプロセス終了予想時刻を更新する。
【０２０２】
以上説明したように、実施の形態にかかる分散処理システム１００によれば、エッジ装置Ｅｉは、自装置よりも管理装置１０１への状態通知メッセージの送信頻度が高い他のエッジ装置Ｅｊに、自装置の負荷状態に関する差分情報の転送依頼を送信することができる。また、他のエッジ装置Ｅｊは、エッジ装置Ｅｉから差分情報の転送依頼を受信した場合、管理装置１０１に状態通知メッセージを送信する際に、当該状態通知メッセージにエッジ装置Ｅｉの差分情報を含めて送信することができる。また、管理装置１０１は、他のエッジ装置Ｅｊから、エッジ装置Ｅｉの差分情報を含む状態通知メッセージを受信した場合、当該差分情報に基づいて、エッジ装置Ｅｉの負荷状態を補正することができる。
【０２０３】
これにより、エッジ装置Ｅｉの負荷状態に関する差分情報を、エッジ装置Ｅｉよりも管理装置１０１への状態通知メッセージの送信頻度が高い他のエッジ装置Ｅｊから管理装置１０１に転送することができる。このため、エッジ装置Ｅｉにおいて、処理量（Ｗproc）が閾値α以上であるプロセスが発生しなくても、クラウド側（管理装置１０１）で推定するエッジ装置Ｅｉの負荷状態に関する誤差を補正することができる。
【０２０４】
また、エッジ装置Ｅｉは、デバイス１０２から送出されたデータを受信した場合に、受信したデータの内容に対応するプロセスを起動し、起動したプロセスの処理量（Ｗproc）が閾値α以上の場合に、起動したプロセスの処理量（Ｗproc）と起動時刻とを含む状態通知メッセージを管理装置１０１に送信する。すなわち、エッジ装置Ｅｉは、起動したプロセスの処理量（Ｗproc）が閾値α未満の場合には、管理装置１０１に状態通知メッセージを送信しない。
【０２０５】
これにより、エッジ装置Ｅｉで起動された処理量（Ｗproc）が小さいプロセスの起動通知を送らないようにして、エッジ装置／クラウド間で送受信されるメッセージの数を削減することができる。
【０２０６】
また、管理装置１０１は、エッジ装置Ｅｉから状態通知メッセージを受信した場合、受信した状態通知メッセージに含まれるプロセスの処理量（Ｗproc）と起動時刻とに基づいて、プロセスの終了時刻を予測することができる。
【０２０７】
これにより、プロセスの処理量（Ｗproc）と起動時刻からプロセスの終了時刻が予測可能となるため、エッジ装置Ｅｉで起動されたプロセスの終了通知を省略して、エッジ装置／クラウド間で送受信されるメッセージの数を削減することができる。
【０２０８】
また、エッジ装置Ｅｉは、起動したプロセスの処理量（Ｗproc）が閾値α未満の場合、負荷差分量ＬＤが所定値β以上であるか否かを判断することができる。そして、エッジ装置Ｅｉは、負荷差分量ＬＤが所定値β以上の場合に、負荷差分量ＬＤを示す差分情報の管理装置１０１への転送依頼を対象エッジに送信することができる。
【０２０９】
これにより、負荷差分量ＬＤが所定値β未満の場合は差分情報の転送依頼を行わないようにして、エッジ装置間の通信が頻繁に発生してしまうのを防ぐことができる。
【０２１０】
これらのことから、分散処理システム１００によれば、エッジ装置／クラウド間でやり取りされるメッセージの数を抑えつつ、クラウド側（管理装置１０１）で推定するエッジ装置Ｅｉの負荷状態に関する誤差を適切に抑制することができる。
【０２１１】
なお、本実施の形態で説明した誤差補正方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本誤差補正プログラムは、ハードディスク、フレキシブルディスク、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ）−ＲＯＭ、ＭＯ（Ｍａｇｎｅｔｏ−Ｏｐｔｉｃａｌ  ｄｉｓｋ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）メモリ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本誤差補正プログラムは、インターネット等のネットワークを介して配布してもよい。
【０２１２】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０２１３】
（付記１）第１のネットワークを介して接続される複数の情報処理装置から、第２のネットワークを介して管理装置へ状態通知メッセージを送信する分散処理システムにおいて、
前記複数の情報処理装置のうちの第１の情報処理装置が、
前記第１の情報処理装置よりも前記管理装置への状態通知メッセージの送信頻度が高い第２の情報処理装置に、前記第１の情報処理装置の負荷状態に関する差分情報を送信し、
前記第２の情報処理装置が、
前記第１の情報処理装置から前記差分情報を受信した場合、前記管理装置に状態通知メッセージを送信する際に、当該状態通知メッセージに前記差分情報を含めて送信し、
前記管理装置が、
前記第２の情報処理装置から前記差分情報を含む状態通知メッセージを受信した場合、前記差分情報に基づいて、前記第１の情報処理装置の負荷状態を補正する、
ことを特徴とする誤差補正方法。
【０２１４】
（付記２）前記差分情報は、前記第１の情報処理装置が認識する自装置の負荷量と、前記管理装置が認識する前記第１の情報処理装置の負荷量との差分をあらわす、ことを特徴とする付記１に記載の誤差補正方法。
【０２１５】
（付記３）前記複数の情報処理装置のそれぞれの情報処理装置は、
デバイスから送出されたデータを受信した場合に、前記データの内容に対応するプロセスを起動し、
前記プロセスの処理量が閾値以上の場合に、前記プロセスの処理量と起動時刻とを含む状態通知メッセージを前記管理装置に送信し、
前記管理装置は、
前記情報処理装置から前記状態通知メッセージを受信した場合、受信した前記状態通知メッセージに含まれる前記プロセスの処理量と起動時刻とに基づいて、前記プロセスの終了時刻を予測する、ことを特徴とする付記１または２に記載の誤差補正方法。
【０２１６】
（付記４）前記第１の情報処理装置は、
前記プロセスの処理量が前記閾値未満の場合、前記第１の情報処理装置が認識する自装置の負荷量と、前記管理装置が認識する前記第１の情報処理装置の負荷量との差分が所定値以上となったか否かを判断し、
前記差分が前記所定値以上となった場合に、前記差分をあらわす差分情報を前記第２の情報処理装置に送信する、
ことを特徴とする付記３に記載の誤差補正方法。
【０２１７】
（付記５）前記第１の情報処理装置が認識する自装置の負荷量は、前記第１の情報処理装置で実行中のプロセスが終了するまでの残りの処理量に応じて算出され、
前記管理装置が認識する前記第１の情報処理装置の負荷量は、前記第１の情報処理装置で起動された処理量が閾値以上のプロセスの処理量と起動時刻とに基づき予測される前記プロセスの終了時刻に応じて算出される、
ことを特徴とする付記４に記載の誤差補正方法。
【０２１８】
（付記６）前記管理装置は、
前記複数の情報処理装置それぞれの状態通知メッセージを受信した頻度に基づいて、前記複数の情報処理装置の中から、前記第１の情報処理装置の負荷状態に関する差分情報の前記管理装置への転送を依頼する第２の情報処理装置を決定し、
決定した前記第２の情報処理装置を特定する情報を、前記第１の情報処理装置に送信する、ことを特徴とする付記１〜５のいずれか一つに記載の誤差補正方法。
【０２１９】
（付記７）前記第１のネットワークは、構内通信網であり、
前記第２のネットワークは、広域通信網である、ことを特徴とする付記１〜６のいずれか一つに記載の誤差補正方法。
【０２２０】
（付記８）第１のネットワークを介して接続される複数の情報処理装置から、第２のネットワークを介して管理装置へ状態通知メッセージを送信する分散処理システムにおいて、
前記複数の情報処理装置のうち、自装置よりも前記管理装置への状態通知メッセージの送信頻度が高い第２の情報処理装置に、自装置の負荷状態に関する差分情報を送信する第１の情報処理装置と、
前記第１の情報処理装置から前記差分情報を受信した場合、前記管理装置に状態通知メッセージを送信する際に、当該状態通知メッセージに前記差分情報を含めて送信する第２の情報処理装置と、を含み、
前記管理装置は、前記第２の情報処理装置から前記差分情報を含む状態通知メッセージを受信した場合、前記差分情報に基づいて、前記第１の情報処理装置の負荷状態を補正する、ことを特徴とする分散処理システム。
【０２２１】
（付記９）第１のネットワークを介して接続され、第２のネットワークを介して管理装置へ状態通知メッセージを送信する複数の情報処理装置のうちのいずれかの情報処理装置であって、
前記複数の情報処理装置のうち、自装置よりも前記管理装置への状態通知メッセージの送信頻度が高い他の情報処理装置に、自装置の負荷状態に関する差分情報の前記管理装置への転送要求を送信し、
前記複数の情報処理装置のうちの他の情報処理装置から、当該他の情報処理装置の負荷状態に関する差分情報の前記管理装置への転送要求を受信した場合、前記管理装置に状態通知メッセージを送信する際に、当該状態通知メッセージに前記差分情報を含めて送信する、
制御部を有することを特徴とする情報処理装置。
【符号の説明】
【０２２２】
１００  分散処理システム
１０１  管理装置
１０２  デバイス
１１０  対象エッジ管理テーブル
１２０  処理量管理テーブル
１３０  第１のプロセス情報管理テーブル
１４０  第２のプロセス情報管理テーブル
１５０  転送依頼差分情報テーブル
１６０  第２のプロセス情報管理テーブル（管理用）
３００  バス
３０１  ＣＰＵ
３０２  メモリ
３０３  Ｉ／Ｆ
３０４  ディスクドライブ
３０５  ディスク
９０１  データ処理部
９０２  情報管理部
９０３  処理量判断部
９０４  プロセス通知部
９０５  差分算出部
９０６  依頼送信部
９０７  依頼受信部
１２０１  通知受信部
１２０２  状態管理部
１２０３  補正部
１２０４  情報通知部
１２０５  決定部
【図１】
2019175204.tif 000003
【図２】
2019175204.tif 000004
【図３】
2019175204.tif 000005
【図４】
2019175204.tif 000006
【図５】
2019175204.tif 000007
【図６】
2019175204.tif 000008
【図７】
2019175204.tif 000009
【図８】
2019175204.tif 000010
【図９】
2019175204.tif 000011
【図１０】
2019175204.tif 000012
【図１１】
2019175204.tif 000013
【図１２】
2019175204.tif 000014
【図１３】
2019175204.tif 000015
【図１４】
2019175204.tif 000016
【図１５】
2019175204.tif 000017
【図１６】
2019175204.tif 000018
【図１７】
2019175204.tif 000019
【図１８】
2019175204.tif 000020