(57)【要約】【課題】分散配備におけるネットワークコストを低減できる情報処理装置等を提供する。【解決手段】情報処理装置は、配備部と、更新部と、収集部と、指示部とを有する。配備部は、各ノードから収集された入出力ログから、データを処理する単位である各インスタンスの処理コストを示すインスタンスごとの評価値を生成し、評価値に基づいて各インスタンスを各ノードに分散配備する。更新部は、各ノードから収集された入出力ログを用いて、収集済みの入出力ログを更新する。収集部は、インスタンスの生成または消滅を示す配備情報を収集する。指示部は、配備情報が収集された場合、または、収集済みの入出力ログが更新された場合に、配備部に対して評価値の再生成を指示する。【選択図】図１
2015106286.tif 000002
【特許請求の範囲】
【請求項１】
各ノードから収集された入出力ログから、データを処理する単位である各インスタンスの処理コストを示す前記インスタンスごとの評価値を生成し、前記評価値に基づいて前記各インスタンスを各ノードに分散配備する配備部と、
前記各ノードから収集された前記入出力ログを用いて、収集済みの入出力ログを更新する更新部と、
前記インスタンスの生成または消滅を示す配備情報を収集する収集部と、
前記配備情報が収集された場合、または、前記収集済みの入出力ログが更新された場合に、前記配備部に対して前記評価値の再生成を指示する指示部と
を有することを特徴とする情報処理装置。
【請求項２】
さらに、前記各インスタンスの処理量の閾値を算出する算出部と、
算出された前記閾値に対応する前記インスタンスが配備される前記ノードに前記閾値を設定する設定部とを有し、
前記収集部は、さらに、前記処理量の変動量が前記閾値を超えた前記インスタンスから送信された前記インスタンスの入出力ログを収集し、
前記更新部は、前記収集部が前記入出力ログを収集したタイミングで前記収集済みの入出力ログを更新する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記算出部は、前記閾値として、あるインスタンスが配備された前記ノードに対応する前記評価値と、当該インスタンスが配備された前記ノードの周辺ノードに当該インスタンスが配備された場合の前記評価値との差分を、前記各インスタンスの通信量に基づく通信コストの単価で除した値を前記閾値とすることを特徴とする請求項２に記載の情報処理装置。
【請求項４】
コンピュータが、
各ノードから収集された入出力ログから、データを処理する単位である各インスタンスの処理コストを示す前記インスタンスごとの評価値を生成し、前記評価値に基づいて前記各インスタンスを各ノードに分散配備し、
前記各ノードから収集された前記入出力ログを用いて、収集済みの入出力ログを更新し、
前記インスタンスの生成または消滅を示す配備情報を収集し、
前記配備情報が収集された場合、または、前記収集済みの入出力ログが更新された場合に、前記分散配備する処理に対して前記評価値の再生成を指示する
処理を実行することを特徴とする情報処理方法。
【請求項５】
コンピュータに、
各ノードから収集された入出力ログから、データを処理する単位である各インスタンスの処理コストを示す前記インスタンスごとの評価値を生成し、前記評価値に基づいて前記各インスタンスを各ノードに分散配備し、
前記各ノードから収集された前記入出力ログを用いて、収集済みの入出力ログを更新し、
前記インスタンスの生成または消滅を示す配備情報を収集し、
前記配備情報が収集された場合、または、前記収集済みの入出力ログが更新された場合に、前記分散配備する処理に対して前記評価値の再生成を指示する
処理を実行させることを特徴とする情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法および情報処理プログラムに関する。
【背景技術】
【０００２】
従来、多数のデータを処理するための処理方法として、多数のデータを複数のクライアント等に分散して処理を行う分散処理が知られている。分散処理は、例えば、管理装置であるサーバでネットワーク全体を管理し、サーバが各クライアントに処理を分散配備する。各クライアントは、例えば、サーバおよび他のクライアント等から入力データを取得して配備された処理を実行し、処理結果である出力データをサーバや他のクライアント等に出力する。また、サーバは、各クライアントから当該クライアントでの分散処理に係る入出力ログを取得する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１１−１７７５５１号公報
【特許文献２】特開２００９−１２３０３０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、分散処理を構成するクライアント数および配備される処理数が多くなり分散処理の規模が大規模化すると、各クライアントに分散配備された処理の入出力ログをサーバに送信するための通信量も増大する。このため、大規模な分散処理では、ネットワークでの通信負荷が増加して通信コスト、つまりネットワークコストが増加することになる。
【０００５】
一つの側面では、本発明は、分散配備におけるネットワークコストを低減できる情報処理装置、情報処理方法および情報処理プログラムを提供することにある。
【課題を解決するための手段】
【０００６】
一つの態様では、情報処理装置は、配備部と、更新部と、収集部と、指示部とを有する。当該情報処理装置の配備部は、各ノードから収集された入出力ログから、データを処理する単位である各インスタンスの処理コストを示す前記インスタンスごとの評価値を生成し、前記評価値に基づいて前記各インスタンスを各ノードに分散配備する。当該情報処理装置の更新部は、前記各ノードから収集された前記入出力ログを用いて、収集済みの入出力ログを更新する。当該情報処理装置の収集部は、前記インスタンスの生成または消滅を示す配備情報を収集する。当該情報処理装置の指示部は、前記配備情報が収集された場合、または、前記収集済みの入出力ログが更新された場合に、前記配備部に対して前記評価値の再生成を指示する。
【発明の効果】
【０００７】
分散配備におけるネットワークコストを低減できる。
【図面の簡単な説明】
【０００８】
【図１】図１は、実施例の分散配備システムの一例を示す説明図である。
【図２】図２は、インスタンスフローと各インスタンスが配備されるノードの組み合わせの一例を示す説明図である。
【図３】図３は、実施例の情報処理装置の構成の一例を示すブロック図である。
【図４】図４は、フロー記憶部の一例を示す説明図である。
【図５】図５は、最適評価値記憶部の一例を示す説明図である。
【図６】図６は、次点評価値記憶部の一例を示す説明図である。
【図７】図７は、閾値記憶部の一例を示す説明図である。
【図８】図８は、配備ログ記憶部の一例を示す説明図である。
【図９】図９は、ログ記憶部の一例を示す説明図である。
【図１０】図１０は、処理の分割の一例を示す説明図である。
【図１１】図１１は、インスタンスの配備の一例を示す説明図である。
【図１２】図１２は、各ノードが情報処理装置にログを送信する場合の一例を示す説明図である。
【図１３】図１３は、インスタンス生成時のログの送信の一例を示す説明図である。
【図１４】図１４は、評価値の差分に基づくログの送信の一例を示す説明図である。
【図１５】図１５は、評価値の差分の一例を示す説明図である。
【図１６】図１６は、実施例のノードの構成の一例を示すブロック図である。
【図１７】図１７は、実施例の分散配備システムの処理の一例を示すフローチャートである。
【図１８】図１８は、配備処理の一例を示すフローチャートである。
【図１９】図１９は、探索処理の一例を示すフローチャートである。
【図２０】図２０は、閾値算出処理の一例を示すフローチャートである。
【図２１】図２１は、情報処理プログラムを実行するコンピュータの一例を示す説明図である。
【発明を実施するための形態】
【０００９】
以下、図面に基づいて、本願の開示する情報処理装置、情報処理方法および情報処理プログラムの実施例を詳細に説明する。なお、本実施例により、開示技術が限定されるものではない。また、以下の実施例は、矛盾しない範囲で適宜組みあわせてもよい。
【実施例】
【００１０】
［システム構成］
まず、本実施例に係る分散配備システムの構成について説明する。図１は、実施例の分散配備システムの一例を示す説明図である。図１に示す分散配備システム１は、例えば、物理的なネットワーク構成３０２として、各センサ３０７等のデータを何段階かのノード３０６を経由して情報処理装置１００に収集できる構成である。各センサ３０７は、例えば、消費電力量を計測するセンサである。各ノード３０６は、例えば、センサ３０７や他のノード３０６からデータを受信すると、分散配備された処理（インスタンス）を実行し、実行結果のデータを他のノード３０６や情報処理装置１００に送信する。また、各ノード３０６は、実行結果のデータやログを他のノード３０６や情報処理装置１００に転送する。
【００１１】
分散配備システム１は、データを処理する単位であるインスタンスが、ネットワーク上の各ノード３０６に分散配備される。各ノード３０６に配備されたインスタンスは、各種のセンサや機器から収集されたデータを受信する。インスタンスは、処理結果を次の処理を行うインスタンスに送信する。分散配備システム１では、このようにして、各ノード３０６でデータに対して分散配備された処理を実行し、分散配備システム１を管理する情報処理装置１００で最終的な処理結果を得る。また、情報処理装置１００は、各ノード３０６にインスタンスを配備する配備計画を生成し、生成した配備計画に基づいて各ノード３０６にインスタンスを分散配備する。
【００１２】
分散配備システム１は、分散配備を行う場合に、データの論理的な処理フロー３０１（以下、インスタンスフローともいう）を物理的なネットワーク構成３０２と対応付ける必要がある。論理的な処理フロー３０１では、データＡ３０３ａが生成されると、データＡ３０３ａは、データＡの平均の処理を実行するインスタンス３０５ａに送信される。また、論理的な処理フロー３０１では、データＢ３０３ｂが生成されると、データＢ３０３ｂはデータＢの平均の処理を実行するインスタンス３０５ｂに送信される。また、論理的な処理フロー３０１では、データＣ３０３ｃが生成されると、データＣ３０３ｃはデータＣの平均の処理を実行するインスタンス３０５ｃに送信される。さらに、論理的な処理フロー３０１では、インスタンス３０５ａの出力とインスタンス３０５ｂの出力とがデータＡ，Ｂの合計を算出するインスタンス３０５ｄに入力される。また、論理的な処理フロー３０１では、インスタンス３０５ｃの出力と、図示しない他のインスタンスの出力とがデータＣと他のインスタンスのデータとの合計を算出するインスタンス３０５ｅに入力される。さらに、論理的な処理フロー３０１では、インスタンス３０５ｄの出力と、インスタンス３０５ｅの出力とが、処理αを実行するインスタンス３０５ｆに入力される。
【００１３】
ここで、分散配備システム１は、例えば、論理的な処理フロー３０１上のデータの集約キーとして、データＡ３０３ａとデータＡ３０３ａとを取得してデータＡの平均を求めるインスタンス３０５ａを設定する。情報処理装置１００は、例えば、物理的なネットワーク構成３０２上のデータＡ３０３ａの集約ポイント、つまりインスタンス３０５ａの配備候補として、ノード３０６ａ、ノード３０６ｂおよび情報処理装置１００を挙げる。なお、ノード３０６ａ，３０６ｂは、ノード３０６の個々を区別するものであり、その機能および構成は、他のノード３０６と同一である。情報処理装置１００は、例えば、インスタンス３０５ａの通信コストに基づく評価値を算出し、最も評価値が低い、つまりコストが安い、例えばノード３０６ａに、インスタンス３０５ａを配備する。
【００１４】
図２は、インスタンスフローと各インスタンスが配備されるノードの組み合わせの一例を示す説明図である。図２の例では、分散配備システム１は、情報処理装置１００、ノードＣ１、１０、１０−１、１０−２、１１、１１−１および１１−２を有する。図２では、処理１ａ〜１ｅ、２ａ、２ｄ、３ａ、３ｄ、３Ａａ、３Ｂａ、３Ａｄ、３Ｂｄ、４ａおよび４ｄの各インスタンスを、ノードＣ１、１０、１０−１、１０−２、１１、１１−１および１１−２を有するネットワークに配備する例を示す。なお、以下の説明では、ノードＣ１、１０、１０−１、１０−２、１１、１１−１および１１−２は、それぞれを区別しない場合には単にノードと表現する。
【００１５】
各ノードは、例えば、センサや他のノードからデータを受信すると、分散配備されたインスタンスを実行し、実行結果のデータを他のノードや情報処理装置１００に送信する。また、各ノードは、データを他のノードや情報処理装置１００に転送する。また、各ノードは、情報処理装置１００によって生成された、後述する各インスタンスの処理量の閾値を受信して設定する。さらに、各ノードは、配備されたインスタンスの処理量が閾値を超える場合には、後述する入出力ログをただちに送信する。
【００１６】
情報処理装置１００は、各インスタンスが配備されるノードの組み合わせを見つけ、その組み合わせを解とする。ノードの組み合わせの中で、最も望ましい組み合わせが最適解である。情報処理装置１００は、例えば、通信コストが最小である、通信レイテンシが最小である等の評価値に基づいて最適解を決定する。すなわち、情報処理装置１００は、処理全体を部分処理、つまりインスタンスのフローとして解析し、多数のノードに分散して実行する。
【００１７】
図２では、情報処理装置１００は、例えば、処理１ａをノード１０−１に配備し、処理１ｂおよび１ｃをノード１０−２に配備する。また情報処理装置１００は、処理１ａ〜１ｃのデータを利用する処理２ａを、例えば、ノード１０−１および１０−２の上位に接続されているノード１０に配備する。同様に、情報処理装置１００は、例えば、処理１ｄおよび１ｅをノード１１−２に配備し、処理１ｄおよび１ｅのデータを利用する処理２ｄを、処理１ｄおよび１ｅと同じノードであるノード１１−２に配備する。このようにして、情報処理装置１００は、同様に他のインスタンスである処理３ａ、３ｄ、３Ａａ、３Ｂａ、３Ａｄ、３Ｂｄ、４ａおよび４ｄの各インスタンスを、図２に示すようにいずれかのノードに配備する。
【００１８】
［情報処理装置の構成］
次に、本実施例に係る情報処理装置１００の機能的構成について説明する。図３は、実施例の情報処理装置の構成の一例を示すブロック図である。図３に示す情報処理装置１００は、通信部１１０と、記憶部１２０と、制御部１３０とを有する。なお、以下の説明では、分散処理システム１は、図２に示すネットワーク構成を有するものとして説明する。
【００１９】
通信部１１０は、例えば、ＮＩＣ（Network  Interface  Card）等によって実現される。通信部１１０は、ネットワークを介して各ノードと有線または無線で接続され、各ノードとの間で情報の通信を司る通信インタフェースである。通信部１１０は、各ノードからインスタンスの生成または消滅を示す配備情報、および、各ノードの入出力ログを受信する。通信部１１０は、配備情報および各ノードの入出力ログを制御部１３０に出力する。
【００２０】
また、通信部１１０は、制御部１３０から分散配備の配備計画に基づいたインスタンスが入力されると、該当するノードにインスタンスを送信する。なお、各インスタンスは、予め各ノードに記憶され、情報処理装置１００から実行するインスタンスを有効にする指示を受信するようにしてもよい。また、通信部１１０は、制御部１３０からインスタンスごとに算出された処理量の閾値が入力されると、閾値を当該インスタンスに対応するノードに対して送信する。
【００２１】
記憶部１２０は、例えば、ＲＡＭ（Random  Access  Memory）、フラッシュメモリ（Flash  Memory）等の半導体メモリ素子、ハードディスクや光ディスク等の記憶装置によって実現される。記憶部１２０は、初期値記憶部１２１と、フロー記憶部１２２と、最適評価値記憶部１２３と、次点評価値記憶部１２４と、閾値記憶部１２５と、配備ログ記憶部１２６と、ログ記憶部１２７とを有する。また、記憶部１２０は、制御部１３０での処理に用いる情報を記憶する。
【００２２】
初期値記憶部１２１は、例えば、情報を収集する対象機器（センサ）のリスト、機器およびノードのネットワーク設定、分散配備する処理である配備アプリケーションの設定、および、分散配備の分散ポリシー設定等の各種初期値を記憶する。
【００２３】
フロー記憶部１２２は、インスタンスを識別するインスタンスＩＤと、当該インスタンスの次の処理であるインスタンスを示す次処理とを対応付けて記憶する。図４は、フロー記憶部の一例を示す説明図である。図４に示すように、フロー記憶部１２２は、インスタンスＩＤ１２２ａ、次処理１２２ｂといった項目を有する。
【００２４】
インスタンスＩＤ１２２ａは、インスタンスを識別する。次処理１２２ｂは、インスタンスＩＤ１２２ａで示されたインスタンスでの処理が終了すると、処理が終了したインスタンスが次にデータを渡すインスタンスのインスタンスＩＤを示す。次処理１２２ｂは、１つのインスタンスに限られず、複数のインスタンスにデータを渡す場合には、複数のインスタンスを記憶する。
【００２５】
最適評価値記憶部１２３は、分散配備を実行した結果であるインスタンスのインスタンスＩＤと、対応する配備先ノードと、分散配備の解の最適評価値とを記憶する。図５は、最適評価値記憶部の一例を示す説明図である。図５に示すように、最適評価値記憶部１２３は、インスタンスＩＤ１２３ａ、配備先ノード１２３ｂ、最適評価値１２３ｃといった項目を有する。
【００２６】
インスタンスＩＤ１２３ａは、インスタンスを識別する。配備先ノード１２３ｂは、分散配備を実行した結果、当該インスタンスが配備されるノードを示す。最適評価値１２３ｃは、各インスタンスと各配備先ノードの組み合わせにおいて分散配備を実行した結果の各インスタンスの評価値の合計である最適評価値を示す。ここで、評価値とは、例えば、通信量に基づく通信コストや通信レイテンシ等に基づいて生成する。
【００２７】
次点評価値記憶部１２４は、次点評価値と、最適評価値との差分とをインスタンスのインスタンスＩＤに対応づけて記憶する。図６は、次点評価値記憶部の一例を示す説明図である。図６に示すように、次点評価値記憶部１２４は、インスタンスＩＤ１２４ａ、次点評価値１２４ｂ、最適評価値との差分１２４ｃといった項目を有する。
【００２８】
インスタンスＩＤ１２４ａは、評価値が次点の値であるノードに配備したインスタンスを識別する。次点評価値１２４ｂは、分散配備を実行した結果の最適解の組み合わせに対して、インスタンスを１つ選択したときの当該インスタンスの評価値の次点の値と他のインスタンスの評価値との合計を示す。最適評価値との差分１２４ｃは、次点評価値と最適評価値との差分を示す。
【００２９】
閾値記憶部１２５は、各ノードに配備されたインスタンスの処理量が所定量を超えた場合に、情報処理装置１００に対して入出力ログを送信するための閾値を記憶する。図７は、閾値記憶部の一例を示す説明図である。図７に示すように、閾値記憶部１２５は、インスタンスＩＤ１２５ａ、閾値１２５ｂといった項目を有する。
【００３０】
インスタンスＩＤ１２５ａは、インスタンスを識別する。閾値１２５ｂは、各インスタンスの処理量が所定量を超えたか否かを判定する閾値を示す。
【００３１】
配備ログ記憶部１２６は、インスタンスの生成または消滅を示す配備情報を、配備ログとして対応するノードとともに記憶する。図８は、配備ログ記憶部の一例を示す説明図である。図８に示すように、配備ログ記憶部１２６は、インスタンスＩＤ１２６ａ、生成／消滅１２６ｂ、ノード１２６ｃといった項目を有する。なお、配備ログ記憶部１２６は、配備アプリケーションが変更された場合の配備情報も記憶する。
【００３２】
インスタンスＩＤ１２６ａは、生成または消滅が発生したインスタンスを識別する。生成／消滅１２６ｂは、対応するインスタンスが生成した場合は「生成」とし、対応するインスタンスが消滅した場合は「消滅」とする。ノード１２６ｃは、生成または消滅が発生したインスタンスが配備されているノードを示す。
【００３３】
ログ記憶部１２７は、各インスタンスから収集された全ての入出力ログを記憶する。つまり、ログ記憶部１２７は、収集済みの入出力ログを記憶する。図９は、ログ記憶部の一例を示す説明図である。図９に示すように、ログ記憶部１２７は、生成インスタンス１２７ａ、使用インスタンス１２７ｂ、データ量１２７ｃ、発生回数１２７ｄといった項目を有する。
【００３４】
生成インスタンス１２７ａは、あるデータが生成されたインスタンスを示し、例えば、従業員ＩＤ３１のインスタンスが、当該従業員ＩＤ３１に係る電力データをセンサから取得して生成したことを示す。ここで、例えば、図９の「センサ」および「employeeID=31」は、図２に示すインスタンスである処理１ａ等に相当するものであって従業員ＩＤ３１を示し、分割された処理である場合にＩＤが振られる。当該ＩＤは分割単位が１つの処理、つまり分割しない処理は空欄とする。使用インスタンス１２７ｂは、生成インスタンス１２７ａのデータをどのインスタンスで使用するかを示す。例えば、図９の「部署集計」および「SectionID=A」は、図２に示すインスタンスである処理２ａ等に相当し、部署Ａについて集計するインスタンスを示す。データ量１２７ｃは、インスタンス間のデータ転送に係る入出力で発生したデータ量を示す。例えば、従業員ＩＤ３１のインスタンスから部署Ａの集計インスタンスに対して、電力データの平均値データを１００ｋＢ送信すると、データ量１２７ｃは、「１００ｋＢ」となる。発生回数１２７ｄは、インスタンス間のデータ転送、つまり入出力が発生した回数を示す。例えば、従業員ＩＤ３１のインスタンスから部署Ａの集計インスタンスに対して、電力データの平均値データを１００回送信すると、発生回数１２７ｄは、「１００」となる。
【００３５】
図３の説明に戻って、制御部１３０は、例えば、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）等によって、内部の記憶装置に記憶されているプログラムがＲＡＭを作業領域として実行されることにより実現される。また、制御部１３０は、例えば、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）等の集積回路により実現されるようにしてもよい。制御部１３０は、配備部１３１と、収集部１３２と、更新部１３３と、算出部１３４と、設定部１３５と、指示部１３６とを有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部１３０の内部構成は、図３に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。
【００３６】
配備部１３１は、分散配備の配備計画を生成し、生成した配備計画に基づいて分散配備を実行する。配備部１３１は、例えば分散配備システム１の管理者から分散配備処理を実行する指示を受けると、初期値記憶部１２１から各種初期値を読み込んで設定する。配備部１３１は、初期値の設定が完了すると初期配備処理を実行する。また、配備部１３１は、指示部１３６から評価値の再生成を指示されると、各インスタンスの評価値を再生成し、各インスタンスの配備を見直す再配備処理を実行する。配備部１３１は、初期配備処理または再配備処理が完了し、管理者によって配備が許可されると、分散配備の配備計画に基づいて、各インスタンスを通信部１１０を介して各ノードに配備する。なお、配備部１３１は、各インスタンスが予め各ノードに記憶されている場合には、インスタンスを有効にする指示を、通信部１１０を介して送信する。また、配備部１３１は、初期配備処理または再配備処理が完了した場合には、閾値算出指示を算出部１３４に出力する。
【００３７】
ここで、配備部１３１が行う初期配備処理について説明する。なお、配備部１３１が行う再配備処理も配備情報や更新された入出力ログを用いて同様の処理を行う。また、ここでは、分割後の各ノードに配備される処理をインスタンスと表現する。配備部１３１は、実行するノードが固定されていないインスタンスを、情報処理装置１００とは異なるノードに割り当てることによるネットワーク内の通信にかかるコストの軽減効果が高いインスタンスから順にソートする。配備部１３１は、例えば、実行するノードが固定されていないインスタンスについて、入力データのデータ量に対する出力データのデータ量の割合を算出し、算出した割合が小さい順にソートする。そして、配備部１３１は、ソートしたインスタンスを、さらに、実行順序に従ってソートし、実行順序が早く、かつコストの軽減効果が高い順に、インスタンスを割当対象に決定する。
【００３８】
配備部１３１は、ネットワーク内のノード間の通信にかかるコストに基づいて、インスタンスの入力データを生成する各ノードから、インスタンスの出力データを収集する特定のノードまでの通信経路をそれぞれ特定する。ここで、特定のノードとは、例えば、情報処理装置１００である。配備部１３１は、例えば、入力データを生成する各ノードから情報処理装置１００までの各ノード間の通信にかかるコストの合計値が最小になる通信経路をそれぞれ特定する。
【００３９】
配備部１３１は、具体的には、ダイクストラ法を用いて、各ノードから情報処理装置１００までの各ノード間の通信にかかるコストの合計値が最小になる通信経路をそれぞれ特定する。次に、配備部１３１は、フロー記憶部１２２に基づいて、入力データを生成するノードを特定する。そして、配備部１３１は、特定した通信経路の中から、特定した入力データを生成するノードから情報処理装置１００までの各ノード間の通信にかかるコストの合計値が最小になる通信経路を取得する。
【００４０】
これにより、配備部１３１は、特定した通信経路に基づいて、ネットワークに含まれるノードの中から、特定の演算処理に含まれるインスタンスを割り当てる候補になるノードのグループを取得することができる。特定結果は、例えば、記憶部１２０に記憶される。
【００４１】
配備部１３１は、特定した通信経路上のノードの中から、送信または受信される入力データのデータ数またはデータ量が多い順に、探索順序を決定する。これにより、配備部１３１は、探索順序を取得することができる。ここで、送信または受信される入力データのデータ数とは、例えば、ノードにおける通信経路の収束数である。
【００４２】
配備部１３１は、データ数またはデータ量が同一の複数のノードがある場合、複数のノードをグループ化して、探索順序を決定してもよい。決定結果は、例えば、記憶部１２０に記憶される。
【００４３】
配備部１３１は、ノードに割当対象のインスタンスを割り当てた際にネットワーク内の通信にかかるコストを算出する。これにより、配備部１３１は、算出されたコストに基づいて、ノードを探索することができる。算出結果は、例えば、記憶部１２０に記憶される。
【００４４】
配備部１３１は、ノードが、インスタンスの割当条件を満たすか否かを判定する。ここで、割当条件とは、ノードにインスタンスを割当可能であるか否かを判定する基準となる条件である。割当条件とは、例えば、処理性能がインスタンスの処理負荷より大きいという条件である。また、割当条件とは、例えば、ノードに割当可能なインスタンスの数が決まっている場合は、割当可能な数以下であるという条件であってもよい。判定結果は、例えば、記憶部１２０に記憶される。
【００４５】
配備部１３１は、情報処理装置１００を起点にして、特定した通信経路上のノードの中から、送信または受信される入力データのデータ数が減少し、かつ、インスタンスを割り当てた際にネットワーク内の通信にかかるコストが減少するノードを順次探索する。配備部１３１は、例えば、特定した通信経路上のノードの中から、データ数が多い順に、ネットワーク内の通信にかかるコストが減少しなくなるまで、データ数が減少し、かつネットワーク内の通信にかかるコストが減少するノードを順次探索する。
【００４６】
配備部１３１は、具体的には、情報処理装置１００に割当対象のインスタンスを割り当てた際にネットワーク内の通信にかかるコストを算出する。次に、配備部１３１は、決定されたデータ数が多い順の探索順序に従って、ノードを順次選択し、選択したノードに割当対象のインスタンスを割り当てた際にネットワーク内の通信にかかるコストを算出する。そして、配備部１３１は、選択したノードについて算出されたコストが、他のノードについて算出済みのコストよりも減少する場合、選択したノードを、探索したノードに決定する。なお、選択したノードについて算出されたコストは、当該インスタンスを当該ノードに割り当てた場合の評価値である。このとき、配備部１３１は、過去に算出済みのコストを次点評価値、減少したコスト差を最適評価値との差分として、次点評価値記憶部１２４に記録する。
【００４７】
また、配備部１３１は、情報処理装置１００を起点にして、通信経路上のノードの中から、送信または受信される入力データのデータ量が減少し、かつ、インスタンスを割り当てた際にネットワーク内の通信コストが減少するノードを順次探索してもよい。配備部１３１は、例えば、通信経路上のノードの中から、データ量が多い順に、ネットワーク内の通信にかかるコストが減少しなくなるまで、データ量が減少し、かつ、ネットワーク内の通信にかかるコストが減少するノードを順次探索する。
【００４８】
また、データ数またはデータ量については、情報処理装置１００からのリンク数で重み付けした値を用いてもよい。これにより、データの削減効果の高いインスタンスの配備先について、情報処理装置１００から遠い、すなわち、入力データを生成するノード付近を探索することが可能となり、評価値の改善が見込める様になる。重み付けの方法としては、例えば、リンク数とデータ数またはデータ量の乗算などがある。
【００４９】
また、データ数またはデータ量が同一である複数のノードが存在するときがある。このとき、配備部１３１は、複数のノードの中から、情報処理装置１００からのリンク数が最大になり、かつ、ネットワーク内の通信にかかるコストが減少するノードを探索してもよい。配備部１３１は、具体的には、グループ化された複数のノードのうちで、情報処理装置１００からのリンク数が最大になるノードを選択し、選択したノードに割当対象のインスタンスを割り当てた際にネットワーク内の通信にかかるコストを算出する。そして、配備部１３１は、選択したノードについて算出されたコストが、他のノードについて算出済みのコストよりも減少する場合、選択したノードを、探索したノードに決定する。
【００５０】
さらに、配備部１３１は、コストが減少しない場合、情報処理装置１００からのリンク数が次に大きくなるノードを選択し、選択したノードに割当対象のインスタンスを割り当てた際にネットワーク内の通信にかかるコストを算出してもよい。そして、配備部１３１は、選択したノードについて算出されたコストが、他のノードについて算出済みのコストよりも減少する場合、選択したノードを、探索したノードに決定する。
【００５１】
また、このとき、配備部１３１は、複数のノードのうちでインスタンスの割当条件を満たすノードの中から、情報処理装置１００からのリンク数が最大になり、かつ、ネットワーク内の通信にかかるコストが減少するノードを探索してもよい。配備部１３１は、具体的には、複数のノードの各々のノードが割当条件を満たすか否かを判定する。次に、配備部１３１は、判定結果に基づいて、複数のノードのうちでインスタンスの割当条件を満たすノードを特定する。そして、配備部１３１は、特定したノードのうちで、情報処理装置１００からのリンク数が最大になるノードを選択し、選択したノードに割当対象のインスタンスを割り当てた際にネットワーク内の通信にかかるコストを算出する。次に、配備部１３１は、選択したノードについて算出されたコストが、他のノードについて算出済みのコストよりも減少する場合、選択したノードを、探索したノードに決定する。
【００５２】
さらに、配備部１３１は、コストが減少しない場合、情報処理装置１００からのリンク数が次に大きくなるノードを選択し、選択したノードに割当対象のインスタンスを割り当てた際にネットワーク内の通信にかかるコストを算出してもよい。そして、配備部１３１は、選択したノードについて算出されたコストが、他のノードについて算出済みのコストよりも減少する場合、選択したノードを、探索したノードに決定する。
【００５３】
また、データ数またはデータ量が同一である複数のノードのすべてが割当条件を満たさないときがある。このとき、配備部１３１は、ネットワークに含まれる割当条件を満たすノードの中から、複数のノードのうちで情報処理装置１００からのリンク数が最大になるノードから所定のリンク数以内に存在し、かつコストが減少するノードを探索してもよい。配備部１３１は、具体的には、複数のノードのすべてが割当条件を満たさない場合、複数のノードのうちで情報処理装置１００からのリンク数が最大になるノードから所定のリンク数以内に存在するノードが割当条件を満たすか否かを判定する。次に、配備部１３１は、判定結果に基づいて、所定のリンク数以内に存在するノードのうちでインスタンスの割当条件を満たすノードを特定する。そして、配備部１３１は、特定したノードのうちで、情報処理装置１００からのリンク数が最大になるノードを選択し、選択したノードに割当対象のインスタンスを割り当てた際にネットワーク内の通信にかかるコストを算出する。次に、配備部１３１は、選択したノードについて算出されたコストが、他のノードについて算出済みのコストよりも減少する場合、選択したノードを、探索したノードに決定する。
【００５４】
さらに、配備部１３１は、コストが減少しない場合、情報処理装置１００からのリンク数が次に大きくなるノードを選択し、選択したノードに割当対象のインスタンスを割り当てた際にネットワーク内の通信にかかるコストを算出する。そして、配備部１３１は、選択したノードについて算出されたコストが、他のノードについて算出済みのコストよりも減少する場合、選択したノードを、探索したノードに決定する。
【００５５】
また、データ数またはデータ量が同一である複数のノード、および複数のノードのうちで情報処理装置１００からのリンク数が最大になるノードから所定のリンク数以内に存在するノードの中から、ノードを探索できないときがある。このとき、配備部１３１は、データ数またはデータ量が同一である複数のノードよりデータ量が減少し、かつ、ネットワーク内の通信にかかるコストが減少するノードを探索してもよい。
【００５６】
配備部１３１は、具体的には、複数のノードの中からコストが減少するノードを検索できなかった場合、探索順序に従って、複数のノードよりデータ数またはデータ量が減少するノードを選択する。そして、配備部１３１は、選択したノードに割当対象のインスタンスを割り当てた際にネットワーク内の通信にかかるコストを算出する。次に、配備部１３１は、選択したノードについて算出されたコストが、他のノードについて算出済みのコストよりも減少する場合、選択したノードを、探索したノードに決定する。
【００５７】
これにより、配備部１３１は、分散処理を割り当てた際にネットワーク内の通信にかかるコストが減少するノードを順次探索することができる。探索結果は、例えば、記憶部１２０に記憶される。
【００５８】
配備部１３１は、探索したノードの中からインスタンスを割り当てるノードを決定する。配備部１３１は、例えば、最後に探索したノードを、インスタンスを割り当てるノードに決定する。これにより、配備部１３１は、探索したノードにインスタンスを割り当てて、ネットワーク内の通信にかかるコストを低減することができる。決定結果は、例えば、最適評価値記憶部１２３に記憶される。
【００５９】
配備部１３１は、処理グループ内全てのインスタンスについて割り当てるノードが決定すると、インスタンスＩＤと配備先ノードとを対応付け、さらに、処理グループ内のコスト、つまり評価値の合計を最適評価値として、最適評価値記憶部１２３に記憶する。つまり、最適評価値は、各インスタンスと各配備先ノードの組み合わせにおいて生成された配備計画の各インスタンスの評価値の合計であり、当該組み合わせの最適評価値である。すなわち、生成された配備計画は、各インスタンスをそれぞれのノードに配備した場合の全体の通信コストを算出し、全体の通信コストが最も安くなるノードに配備したときのインスタンスとノードとの組み合わせである。
【００６０】
また、配備部１３１は、配備計画の最適解の組み合わせに対して、インスタンスを１つ選択する。配備部１３１は、選択したインスタンスの評価値の次点の値と、他のインスタンスの評価値との合計を次点評価値として算出する。さらに、配備部１３１は、最適評価値と次点評価値との差分を、最適評価値との差分として算出する。配備部１３１は、選択したインスタンスのインスタンスＩＤと、算出した次点評価値と、算出した差分とを対応付けて、次点評価値記憶部１２４に記憶する。なお、次点評価値および最適評価値との差分は、上述した最適な配備ノードの選択の際に合わせて算出する。
【００６１】
ここで、図１０を用いて、処理の分割について説明する。図１０は、処理の分割の一例を示す説明図である。なお、ここでは、分割前の処理全体を単に処理と表現し、分割後の各ノードに配備される処理をインスタンスと表現する。図１０に示すように、例えば、機器ごとにデータを収集し、収集したデータを地域ごとに集計し、比率を算出するような処理を行う場合、機器収集処理、地域集計処理および比率算出処理の３つの処理を有する。また、機器収集処理は、機器ＩＤごとに各インスタンスに分割される。例えば、座標Ｘ１，Ｙ１の機器２１のインスタンスは、機器２１のデータを収集し、地域Ａという情報とともに地域集計処理を行う地域Ａ集計に送信する。同様に、機器２２，２３は、収集したデータを地域Ａ集計に送信する。また、同様に、機器２４〜２６は、収集したデータを地域Ｂ集計に送信する。
【００６２】
ここで、例えば、機器２３が地域Ａから地域Ｂに移動した場合、地域集計処理も地域Ａ集計から地域Ｂ集計へと変更する必要がある。すると、機器２３は、収集したデータの送信先を地域Ａ集計から地域Ｂ集計へと変更する。このように、情報処理装置１００は、例えば、データの集約関係や前後の処理分割単位同士の利用関係が変化するたびに、インスタンス間の関係、つまり分散配備の配備計画を見直して再配備処理を行う。つまり、情報処理装置１００は、インスタンスとインスタンスのデータ入出力関係を自動解析して分散配備システム１の管理コストを削減する。
【００６３】
再配備処理は、各インスタンスでのイベントの入出力ログを収集して解析する。ここで、イベントの入出力ログからの解析を、図９および図１１を用いて説明する。図１１は、インスタンスの配備の一例を示す説明図である。配備部１３１は、処理全体の定義から、処理の分割単位となる属性情報を取得する。属性情報は、例えば、図１１に示す従業員ＩＤ３１が対応する従業員に係るセンサ情報の平均処理、図１１に示す部署Ａ等の部署ＩＤごとの集計処理等がある。
【００６４】
配備部１３１は、インスタンスへの入力データログから実行中のインスタンスを把握する。例えば、図９の１行目の例では、部署Ａの集計インスタンスに、従業員ＩＤ３１のインスタンスからデータが入力されていることを示す。配備部１３１は、このログに基づいて、例えば、電力平均を求めるインスタンスである従業員ＩＤ３１の存在を把握する。また、配備部１３１は、インスタンスからの出力データログからインスタンス間の入出力関係を把握する。配備部１３１は、例えば、従業員ＩＤ３１の電力平均の出力データに部署Ａの部署ＩＤが記載されていると、電力平均を求めるインスタンスである従業員ＩＤ３１は、部署Ａの集計のインスタンスにデータを送信していることを把握する。
【００６５】
図１１に示す例では、従業員ＩＤ３１，３２，３３は、それぞれ取得した電力の平均を求めるインスタンスであり、従業員ＩＤ３１，３２，３３からの出力データには、生成インスタンスである従業員ＩＤ３１，３２，３３の情報がそれぞれ付加される。また、当該出力データには、次の処理である部署集計の分割単位として部署Ａの情報（SectionID=A）が付加される。同様に、従業員ＩＤ３４，３５，３６は、それぞれ取得した電力の平均を求めるインスタンスであり、従業員ＩＤ３４，３５，３６からの出力データには、生成インスタンスである従業員ＩＤ３４，３５，３６の情報がそれぞれ付加される。また、当該出力データには、次の処理である部署集計の分割単位として部署Ｂの情報（SectionID=B）が付加される。このときのノードｘの入出力ログは、図９に示すようなログとなる。
【００６６】
図３の説明に戻って、収集部１３２は、通信部１１０を介して、各ノードから送信された各ノードでのインスタンスの生成または消滅を示す配備情報を収集する。また、収集部１３２は、通信部１１０を介して、各ノードから送信されたインスタンスの入出力ログを収集する。ここで、入出力ログは、各ノードから必要性の高いイベントの入出力ログが送信される。入出力ログには、例えば、当該インスタンスの入出力に関する通信コスト情報が含まれる。収集部１３２は、収集した配備情報を指示部１３６に出力するとともに、配備ログ記憶部１２６に記憶する。また、収集部１３２は、収集した入出力ログを更新部１３３に出力する。なお、各ノードの入出力ログは、通常時であっても低い頻度、例えば、１日に１回から１週間に１回などの頻度で、情報処理装置１００に送信される。
【００６７】
ここで、図１２〜１４を用いて各ノードからのログの送信について説明する。図１２は、各ノードが情報処理装置にログを送信する場合の一例を示す説明図である。図１２に示すように、例えば、ノードＣ１は、新規なインスタンスである処理１ｆと処理２ｆとが生成されると、情報処理装置１００に対して配備情報を送信する。各ノードは、新規に生成したインスタンスのログを優先して送信する。また、各ノードは、インスタンスが生成された場合には、詳細なログを送信する。
【００６８】
また、例えば、ノード１１−２は、配備済みのインスタンスである処理２ｅについて通信量が変化して、所定の閾値を超える変化量が発生すると、情報処理装置１００に対して入出力ログを送信する。このように、配備済みのインスタンスのログは、通信量が大きく変動した場合にのみ情報処理装置１００に対して送信する。なお、ノード１０−２に配備されたインスタンスである処理１ｃ，２ｃは、通信量に大きな変化はないものとする。
【００６９】
図１３は、インスタンス生成時のログの送信の一例を示す説明図である。図１３に示す例では、ノード１０−１に接続されているセンサｆの情報について処理を行うインスタンスである処理１ｆおよび処理２ｆが、ノード１０−１よりもネットワークの構成上、情報処理装置１００に近いノードＣ１で生成された場合を示す。このとき、ノードＣ１は、情報処理装置１００に対して、処理１ｆおよび処理２ｆが生成されたという配備情報、つまりインスタンスの生成ログを送信する。また、各ノードは、図示はしないが、インスタンスが消滅した場合には、あるインスタンスが消滅したという配備情報、つまりインスタンスの消滅ログを処理装置１００に対して送信する。なお、インスタンスの生成ログと消滅ログを合わせて配備ログと称する。なお、ノード１０−２に配備されたインスタンスである処理２ｃ、ノード１１−２に配備されたインスタンスである処理２ｅ、および、ノードＣ１に配備されたインスタンスである処理２ｆは、データを処理３ｘに出力するものとする。また、処理１ｃは処理２ｃに、処理１ｅは処理２ｅにデータを出力する。
【００７０】
インスタンスの生成または消滅を示す配備情報は、情報処理装置１００のフロー記憶部１２２に記憶されるインスタンスフローの形状を最新の状態に保つために必要である。情報処理装置１００は、生成ログが届かないと、新たに発生したインスタンスである処理１ｆおよび処理２ｆの存在に気付かないため、処理１ｆおよび処理２ｆを生成場所から移動することができない。なお、一般にインスタンスの生成場所は、情報処理装置１００の近くであり、実際に情報を取得するセンサからは遠く、そのままでは、経路３１１のような経路を通るので通信コストが大きくなってしまう。情報処理装置１００の収集部１３２は、配備情報を収集すると、インスタンスフローに新たなフロー３１２を追加する。また、インスタンスが消滅した場合は、消滅したインスタンスが配備されていたノードの処理能力が空くため、他のノードで処理していたインスタンスを移動できる。このとき、収集部１３２は、配備情報を収集すると、消滅したインスタンスのフローを削除する。このように、収集部１３２が配備情報を収集した場合には、分散配備を再度行う再配備処理が必要となる。
【００７１】
図１４は、評価値の差分に基づくログの送信の一例を示す説明図である。各ノードに配備された各インスタンスは、最適評価値、つまり通信コストが最も安いノードに配置されている。ところが、あるインスタンスの処理量が増加して通信量が増加した場合には、通信コストが増加し、他のノードに当該インスタンスを配置した方が、通信コストが安くなる場合がある。図１４に示すように、例えば、ノード１１−２に配備されたインスタンスである処理２ｅは、当初、経路３１３により次のインスタンスである処理３ｘにデータを送信している。その後、処理２ｅは、通信量の増加に伴って通信コストが増加すると、次点評価値のノードであるノード１１またはノード１１−１に移動した方が、通信コストが安くなる場合がある。つまり、処理２ｅは、ノード１１またはノード１１−１に移動して、経路３１４により処理１ｅからデータを受信し、経路３１５により処理３ｘにデータを送信する場合である。
【００７２】
このように、処理２ｅは、ノード１１−２に配備された場合の最適評価値と、ノード１１またはノード１１−１に配備された場合の次点評価値の差分を超える処理量の変動があった場合に、情報処理装置１００に対して、入出力ログを送信する。言い換えると、インスタンスは、最適評価値と次点評価値との差分を超えない量の処理量の変動では、配備ノードを変更する必要がない可能性が高いといえる。なお、ノード１０−２に配備されたインスタンスである処理１ｃ，２ｃは、通信量に大きな変化はないものとする。
【００７３】
図３の説明に戻って、更新部１３３は、収集部１３２から入出力ログが入力されると、当該入出力ログが入力されたタイミング、つまり収集部１３２が入出力ログを収集したタイミングで、収集済みの入出力ログが記憶されているログ記憶部１２７を更新する。更新部１３３は、ログ記憶部１２７を更新すると、更新情報を指示部１３６に出力する。
【００７４】
算出部１３４は、配備部１３１から閾値算出指示が入力されると、各インスタンスの閾値を算出する。算出部１３４は、閾値が未算出のインスタンスを１つ選択する。算出部１３４は、選択されたインスタンスの配備先ノードから次段のインスタンスの配備先ノードまでの通信コストを算出する。算出部１３４は、次点評価値記憶部１２４を参照して、最適評価値との差分を読み出し、読み出した最適評価値との差分を算出された通信コストで除算した値を、選択されたインスタンスの閾値として算出する。算出部１３４は、全てのインスタンスについて閾値を算出すると、算出した閾値をインスタンスのインスタンスＩＤと対応付けて閾値記憶部１２５に記憶する。算出部１３４は、閾値記憶部１２５への閾値の記憶が完了すると、設定部１３５に設定指示を出力する。
【００７５】
ここで、図１５を用いて、評価値の差分と閾値について説明する。図１５は、評価値の差分の一例を示す説明図である。図１５の例では、ノード１１−２に配備されたインスタンスである処理２ｅは、例えば、最適評価値が「１００」であったとする。また、処理２ｅの次点評価値は、ノード１１の「１２０」であったとする。このとき、処理２ｅの閾値は、ノード１１−２とノード１１との間の通信コストが、例えば、１０円／ＧＢであったとすると、（１２０−１００）／１０＝２となる。つまり、通信コストは、処理２ｅの処理量である通信量が２ＧＢ変動すると、ノード１１−２よりノード１１に処理２ｅを配備した方が、通信コストが安くなる。例えば、通信コストは、ノード１１−２に処理２ｅを配備した初期配備時の通信量が２０ＧＢであったとすると、通信量が１８ＧＢ未満または２２ＧＢを超える場合には、ノード１１に処理２ｅを配備した方が、通信コストが安くなる。
【００７６】
また、ノード１０−２に配備されたインスタンスである処理２ｃは、例えば、最適評価値が「１００」であったとする。また、処理２ｃの次点評価値は、ノード１０の「２００」であったとする。このとき、処理２ｃの閾値は、ノード１０−２とノード１０との間の通信コストが、例えば、１０円／ＧＢであったとすると、（２００−１００）／１０＝１０となる。つまり、通信コストは、処理２ｃの処理量である通信量が１０ＧＢ変動すると、ノード１０−２よりノード１０に処理２ｃを配備した方が、通信コストが安くなる。例えば、通信コストは、ノード１０−２に処理２ｃを配備した初期配備時の通信量が５０ＧＢであったとすると、通信量が４０ＧＢ未満または６０ＧＢを超える場合には、ノード１０に処理２ｃを配備した方が、通信コストが安くなる。なお、情報処理装置１００では、インスタンスの処理量が閾値を超えた場合に、分散配備の配備計画を再生成しても、必ずしも次点評価値であったノードに、閾値を超えたインスタンスが配備されるとは限らない。例えば、再生成された配備計画では、他のインスタンス等の条件によっては、閾値を超えたインスタンスについて、配備されるノードが変化しない場合や、また別のノードに配備される場合もある。
【００７７】
図３の説明に戻って、設定部１３５は、算出部１３４から設定指示が入力されると、閾値記憶部１２５を参照して、各閾値について、閾値に対応するインスタンスが配備されるノードに、通信部１１０を介して閾値を設定する。
【００７８】
指示部１３６は、収集部１３２から配備情報が入力された場合、または、更新部１３３から更新情報が入力された場合に、配備部１３１に対して評価値の再生成を指示する。つまり、指示部１３６は、配備部１３１に対して評価値を再生成し、評価値に基づいて各インスタンスを各ノードに再度、分散配備するように指示する。
【００７９】
［ノードの構成］
次に、本実施例に係るノードの一例として、ノード１０の機能的構成について説明する。なお、他のノードも同様の構成であるので他のノードについての詳細な説明は省略する。図１６は、実施例のノードの構成の一例を示すブロック図である。図１６に示すノード１０は、通信部５１と、記憶部５２と、制御部５３とを有する。
【００８０】
通信部５１は、例えば、ＮＩＣ等によって実現される。通信部５１は、ネットワークを介して他のノードおよび情報処理装置１００と有線または無線で接続され、他のノードおよび情報処理装置１００との間で情報の通信を司る通信インタフェースである。通信部５１は、センサや他のノードからデータを受信する。通信部５１は、受信したデータを制御部５３に出力する。また、通信部５１は、制御部５３から入力されたインスタンスの実行結果のデータおよび入出力ログを他のノードや情報処理装置１００に送信する。
【００８１】
また、通信部５１は、情報処理装置１００から各インスタンスの処理量の閾値を受信すると、制御部５３に出力する。通信部５１は、制御部５３から配備情報が入力されると、配備情報を情報処理装置１００に送信する。
【００８２】
記憶部５２は、例えば、ＲＡＭ、フラッシュメモリ等の半導体メモリ素子、ハードディスクや光ディスク等の記憶装置によって実現される。記憶部５２は、インスタンスおよび閾値を記憶する。また、記憶部５２は、制御部５３での処理に用いる情報を記憶する。
【００８３】
制御部５３は、例えば、ＣＰＵやＭＰＵ等によって、内部の記憶装置に記憶されているプログラムがＲＡＭを作業領域として実行されることにより実現される。また、制御部５３は、例えば、ＡＳＩＣやＦＰＧＡ等の集積回路により実現されるようにしてもよい。制御部５３は、実行部５４と、生成部５５と、閾値設定部５６とを有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部５３の内部構成は、図１６に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。
【００８４】
実行部５４は、ノード１０に配備されたインスタンスを実行する。実行部５４は、通信部５１を介してデータが入力されると、配備されたインスタンスの処理内容に従って処理を実行する。実行部５４は、実行結果のデータを通信部５１および生成部５５に出力する。
【００８５】
生成部５５は、実行部５４から実行結果のデータが入力されると、当該インスタンスに係る入出力ログを生成する。生成部５５は、インスタンスの処理量が、閾値設定部５６によって設定された閾値を超えた場合および所定の間隔で、生成した入出力ログを通信部５１に出力する。ここで、所定の間隔は、例えば、１日に１回、１週間に１回等の間隔である。また、生成部５５は、実行部５４を監視してインスタンスが生成または消滅した場合には、インスタンスが生成または消滅を示す配備情報を通信部５１に出力する。
【００８６】
閾値設定部５６は、通信部５１から各インスタンスの処理量の閾値が入力されると、各インスタンスに対応した処理量の閾値を生成部５５に設定する。
【００８７】
次に、実施例の分散配備システムの動作について説明する。
【００８８】
図１７は、実施例の分散配備システムの処理の一例を示すフローチャートである。情報処理装置１００の配備部１３１は、例えば分散配備システム１の管理者から分散配備処理の実行する指示を受けると、初期値記憶部１２１から各種初期値を読み込んで設定する（ステップＳ１）。配備部１３１は、初期値の設定が完了すると初期配備処理を実行する（ステップＳ２）。
【００８９】
ここで、図１８を用いて初期配備処理について説明する。図１８は、配備処理の一例を示すフローチャートである。配備部１３１は、ネットワーク内の通信にかかるコストの軽減効果が高いインスタンスから順にソートし、さらに、実行順序に従ってソートする（ステップＳ２１）。
【００９０】
次に、配備部１３１は、ソートした順序に従ってインスタンスを選択する（ステップＳ２２）。そして、配備部１３１は、選択するインスタンスがあるか否かを判定する（ステップＳ２３）。
【００９１】
配備部１３１は、選択するインスタンスがある場合（ステップＳ２３：肯定）、最短経路を特定し、最短経路上のノードにおける最短経路の収束数、および情報処理装置１００からのリンク数を算出する（ステップＳ２４）。
【００９２】
次に、配備部１３１は、探索処理を実行する（ステップＳ２５）。図１９は、探索処理の一例を示すフローチャートである。配備部１３１は、最短経路の収束数によってノードをグループ化したグループの中から、最短経路の収束数が多い順にノードのグループを取得する（ステップＳ２５１）。次に、配備部１３１は、取得したノードのグループの中から、制約条件を満たすノードを取得するまで、リンク数が多い順にノードを取得する（ステップＳ２５２）。
【００９３】
配備部１３１は、制約条件を満たすノードがあるか否かを判定する（ステップＳ２５３）。配備部１３１は、制約条件を満たすノードがある場合（ステップＳ２５３：肯定）、選択したインスタンスを取得したノードに割り当てた場合の評価値を算出する。配備部１３１は、算出した評価値が前回取得したノードに割り当てた場合より評価値が小さくなるか否かを判定する（ステップＳ２５４）。
【００９４】
配備部１３１は、評価値が小さくならない場合（ステップＳ２５４：否定）、探索処理を終了する。配備部１３１は、評価値が小さくなる場合（ステップＳ２５４：肯定）、ステップＳ２５７の処理に移行する。
【００９５】
配備部１３１は、ステップＳ２５３において、制約条件を満たすノードがない場合（ステップＳ２５３：否定）、ステップＳ２５５の処理に移行する。配備部１３１は、取得したノードのグループの中のリンク数が最大になるノードから所定のリンク数以内にあるノードの中から、制約条件を満たすノードを取得するまで、ノードを取得する（ステップＳ２５５）。
【００９６】
配備部１３１は、制約条件を満たすノードがあるか否かを判定する（ステップＳ２５６）。配備部１３１は、制約条件を満たすノードがある場合（ステップＳ２５６：肯定）、ステップＳ２５４の処理に移行する。配備部１３１は、制約条件を満たすノードがない場合（ステップＳ２５６：否定）、ステップＳ２５７の処理に移行する。
【００９７】
配備部１３１は、未取得のグループがあるか否かを判定する（ステップＳ２５７）。配備部１３１は、未取得のグループがある場合（ステップＳ２５７：肯定）、ステップＳ２５１の処理に戻る。配備部１３１は、未取得のグループがない場合（ステップＳ２５７：否定）、探索処理を終了する。これにより、配備部１３１は、選択したインスタンスを割り当てるノードを探索することができる。
【００９８】
図１８に戻って、配備部１３１は、探索処理が終了すると、探索したノードに選択したインスタンスを対応付けて最適評価値記憶部１２３に記憶する（ステップＳ２６）。また、配備部１３１は、評価値が次点の値のノードに、選択したインスタンスを対応付けて記憶部１２０に記憶し（ステップＳ２７）、ステップＳ２２の処理に戻る。
【００９９】
配備部１３１は、ステップＳ２２の処理を実行した結果、選択するインスタンスがなかった場合（ステップＳ２３：否定）、各インスタンスの評価値の合計を最適評価値とし、最適評価値記憶部１２３に記憶する（ステップＳ２８）。すなわち、配備部１３１は、分散配備の配備計画の生成を完了する。
【０１００】
配備部１３１は、次点評価値が未算出のインスタンスを１つ選択し、当該インスタンスの評価値の次点の値と、他のインスタンスの評価値との合計を次点評価値として算出する（ステップＳ２９）。また、配備部１３１は、最適評価値と次点評価値との差分を算出する（ステップＳ３０）。配備部１３１は、選択したインスタンスのインスタンスＩＤと、算出した次点評価値と、算出した差分とを対応付けて、次点評価値記憶部１２４に記憶する（ステップＳ３１）。
【０１０１】
配備部１３１は、全てのインスタンスについて次点評価値を算出したか否かを判定する（ステップＳ３２）。配備部１３１は、全てのインスタンスについて次点評価値を算出していない場合は（ステップＳ３２：否定）、ステップＳ２９に戻って、次のインスタンスについて次点評価値を算出する。配備部１３１は、全てのインスタンスについて次点評価値を算出した場合は（ステップＳ３２：肯定）、配備処理を終了する。これにより、配備部１３１は、情報処理装置１００に割り当てられた特定の演算処理に含まれる分散処理であるインスタンスを、各ノードに割り当て直して配備計画を生成し、ネットワーク内の通信にかかるコストを低減することができる。また、配備部１３１は、各インスタンスについて、当該インスタンスを評価値が次点の値のノードに配備した場合の評価値の合計を次点評価値として算出でき、最適評価値と次点評価値との差分を算出できる。
【０１０２】
図１７に戻って、配備部１３１は、初期配備処理が完了すると、管理者に対して生成した配備計画の配備の許可を求める（ステップＳ３）。配備部１３１は、管理者によって配備が許可された場合は（ステップＳ３：肯定）、分散配備の配備計画に基づいて、通信部１１０を介して各ノードにインスタンスを配備する（ステップＳ４）。配備部１３１は、初期配備処理が完了すると、閾値算出指示を算出部１３４に出力する。配備部１３１は、管理者によって配備が許可されない場合は（ステップＳ３：否定）、ステップＳ２に戻り初期配備処理を繰り返す。
【０１０３】
算出部１３４は、配備部１３１から閾値算出指示が入力されると、各インスタンスの閾値を算出する閾値算出処理を実行する（ステップＳ５）。図２０は、閾値算出処理の一例を示すフローチャートである。算出部１３４は、全てのインスタンスの閾値を算出したか否かを判定する（ステップＳ５１）。算出部１３４は、全てのインスタンスの閾値を算出していない場合は（ステップＳ５１：否定）、閾値が未算出のインスタンスを１つ選択する（ステップＳ５２）。インスタンスの選択は、例えば名前順にソートして順に選択する。
【０１０４】
算出部１３４は、選択されたインスタンスの配備先ノードから次段のインスタンスの配備先ノードまでの通信コストを算出する（ステップＳ５３）。算出部１３４は、次点評価値記憶部１２４を参照して、最適評価値との差分を読み出し、読み出した最適評価値との差分を算出された通信コストで除算した値を、選択されたインスタンスの閾値として算出し（ステップＳ５４）、ステップＳ５１の処理に戻る。算出部１３４は、全てのインスタンスの閾値を算出した場合は（ステップＳ５１：肯定）、算出した閾値をインスタンスのインスタンスＩＤと対応付けて閾値記憶部１２５に記憶し（ステップＳ５５）、閾値算出処理を終了して元の処理に戻る。
【０１０５】
図１７に戻って、算出部１３４は、閾値記憶部１２５への閾値の記憶が完了すると、設定部１３５に設定指示を出力する。設定部１３５は、算出部１３４から設定指示が入力されると、閾値記憶部１２５を参照して、各閾値について、閾値に対応するインスタンスが配備されるノードに、通信部１１０を介して閾値を設定する（ステップＳ６）。
【０１０６】
各ノードでは、インスタンスが配備されて閾値が設定されると、それぞれのインスタンスで処理が開始される。各ノードは、インスタンスの生成または消滅が発生した場合には、配備情報を情報処理装置１００に対して送信する。また、各インスタンスは、設定された閾値を超える処理量の変動があった場合には、入出力ログを情報処理装置１００に対して送信する。
【０１０７】
情報処理装置１００の収集部１３２は、通信部１１０を介して、各ノードから配備情報および入出力ログ、つまり、分散環境情報を収集する（ステップＳ７）。収集部１３２は、収集した配備情報を指示部１３６に出力するとともに、配備ログ記憶部１２６に記憶する。また、収集部１３２は、収集した入出力ログを更新部１３３に出力する。更新部１３３は、収集部１３２から入出力ログが入力されると、当該入出力ログが入力されたタイミングで、収集済みの入出力ログが記憶されているログ記憶部１２７を更新する。更新部１３３は、ログ記憶部１２７を更新すると、更新情報を指示部１３６に出力する。指示部１３６は、収集部１３２から配備情報が入力された場合、または、更新部１３３から更新情報が入力された場合に、配備部１３１に対して評価値の再生成を指示する。
【０１０８】
配備部１３１は、指示部１３６から評価値の再生成を指示されると、各インスタンスの評価値を再生成し、各インスタンスの配備を見直す再配備処理を実行する（ステップＳ８）。なお、再配備処理は、ステップＳ２の初期配備処理と、各インスタンスの評価値を生成するための条件が異なるのみで同一の処理であるので、その説明を省略する。各インスタンスの評価値を生成するための条件は、例えば、インスタンスの生成または消滅した場合等が挙げられる。また、条件としては、例えば、あるインスタンスの処理量が増加し、現在配備されているノードから他のノードに当該インスタンスを移動した方が、通信コストが安くなる場合等が挙げられる。
【０１０９】
配備部１３１は、再配備処理の結果、インスタンスの配備計画に変更があるか否かを判定する（ステップＳ９）。配備部１３１は、配備計画に変更がある場合には（ステップＳ９：肯定）、管理者に対して生成した配備計画の配備の許可を求める（ステップＳ１０）。配備部１３１は、管理者によって配備が許可された場合は（ステップＳ１０：肯定）、ステップＳ４の処理に戻り、当該配備計画に基づいて分散配備を行う。配備部１３１は、配備計画に変更がない場合（ステップＳ９：否定）、および、管理者によって配備が許可されない場合には（ステップＳ１０：否定）、ステップＳ７の処理に戻る。このように、分散配備システムの処理では、初期値に基づいた初期配備処理と、分散環境の状況に応じて配備計画を見直す再配備処理とを行うことで、分散配備におけるネットワークコストを低減できる。
【０１１０】
このように、情報処理装置１００は、各ノードから収集された入出力ログから、データを処理する単位である各インスタンスの処理コストを示すインスタンスごとの評価値を生成し、評価値に基づいて各インスタンスを各ノードに分散配備する。また、情報処理装置１００は、各ノードから収集された入出力ログを用いて、収集済みの入出力ログを更新し、インスタンスの生成または消滅を示す配備情報を収集する。また、情報処理装置１００は、配備情報が収集された場合、または、収集済みの入出力ログが更新された場合に、分散配備する処理に対して評価値の再生成を指示する。その結果、分散配備におけるネットワークコストを低減できる。つまり、情報処理装置１００は、イベントに応じて分散配備を行うので、分散配備のリアルタイム性を保持しつつ、ネットワークコストを低減できる。また、情報処理装置１００を有する分散配備システム１は、イベント発生時にのみ入出力ログまたは配備情報を情報処理装置１００に送信するので、ネットワークの通信量を削減できる。また、情報処理装置１００は、インスタンスの生成または消滅などのフロー解析に大きな影響を与える情報を優先して収集するので、通信量を抑えながら分散配備の配備計画を最適な状態に近づけることができる。
【０１１１】
また、情報処理装置１００は、さらに、各インスタンスの処理量の閾値を算出し、算出された閾値に対応するインスタンスが配備されるノードに閾値を設定する。また、情報処理装置１００は、さらに、処理量の変動量が閾値を超えたインスタンスから送信されたインスタンスの入出力ログを収集し、入出力ログを収集したタイミングで収集済みの入出力ログを更新する。その結果、処理量が閾値を超えたインスタンスからの入出力ログが収集された場合に、インスタンスごとの評価値を再生成し、インスタンスの処理量の変動を迅速に分散配備に反映することができる。
【０１１２】
また、情報処理装置１００は、閾値として、あるインスタンスが配備されたノードに対応する評価値と、当該インスタンスが配備されたノードの周辺ノードに当該インスタンスが配備された場合の評価値との差分を算出する。また、情報処理装置１００は、算出された差分を各インスタンスの通信量に基づく通信コストの単価で除した値を閾値とする。その結果、各インスタンスの通信量が変動した場合に、インスタンスの配備を見直すか否かを容易に判定できる。
【０１１３】
なお、上記実施例では、収集するデータの一例として電力量を挙げたが、これに限定されない。分散配備システム１は、例えば、プリンタのトナー等の使用状況のデータを取得し、プリンタが接続されたノードは、トナーの交換が必要となった場合に、入出力ログを情報処理装置１００に送信するようにしてもよい。これにより、例えば、サービスマンが対応する必要がある事象が発生した場合に、該当するプリンタの情報を迅速に取得できる。
【０１１４】
また、上記実施例では、インスタンスの生成または消滅を示す配備情報、または、処理量が閾値を超えたインスタンスからの入出力ログを収集した場合に、各インスタンスの評価値を再生成して配備計画を再度生成したが、これに限定されない。情報処理装置１００は、例えば、インスタンスの処理内容によって、各インスタンスが定期的に送信する入出力ログの頻度を変更してもよい。例えば、従業員のパーソナルコンピュータの消費電力に係る入出力ログは、１日に１回、情報処理装置１００に送信し、プリンタ等の共用機器の消費電力は１週間に１回、情報処理装置１００に送信するようにしてもよい。これにより、取得するデータの変動量に応じて、ネットワークの通信量を減らすことができる。
【０１１５】
また、従来の分散処理では、インスタンス数が多くなり分散処理の規模が大規模化すると、例えば、センサ付近のノードでデータを集約したとしても、集約に係る入出力ログが、データを１つのノードに集約して処理する場合のデータ転送量を上回る場合がある。これに対して、上記実施例によれば、各インスタンスが必要性の高いイベント入出力ログのみを情報処理装置１００に送信するので、ネットワークの通信量を削減でき、ネットワークコストを低減することができる。
【０１１６】
また、図示した各部の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各部の分散・統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。例えば、算出部１３４と、設定部１３５とを統合して、各インスタンスの閾値を算出しつつ、算出が完了した閾値から順次、対応するインスタンスが配備されるノードに設定するようにしてもよい。
【０１１７】
さらに、各部で行われる各種処理機能は、ＣＰＵ（又はＭＰＵ、ＭＣＵ（Micro  Controller  Unit）等のマイクロ・コンピュータ）上で、その全部又は任意の一部を実行するようにしても良い。また、各種処理機能は、ＣＰＵ（又はＭＰＵ、ＭＣＵ等のマイクロ・コンピュータ）で解析実行されるプログラム上、又はワイヤードロジックによるハードウェア上で、その全部又は任意の一部を実行するようにしても良いことは言うまでもない。
【０１１８】
ところで、上記の実施例で説明した各種の処理は、予め用意されたプログラムをコンピュータで実行することで実現できる。そこで、以下では、上記の実施例と同様の機能を有するプログラムを実行するコンピュータの一例を説明する。図２１は、情報処理プログラムを実行するコンピュータの一例を示す説明図である。
【０１１９】
図２１に示す情報処理プログラムを実行するコンピュータ２００は、インタフェース部２１１と、ＲＡＭ２１２と、ＲＯＭ（Read  Only  Memory）２１３と、プロセッサ２１４とを有する。インタフェース部２１１は、ネットワークに接続され、各ノードと各種情報の通信を司る通信インタフェースである。プロセッサ２１４は、コンピュータ２００全体を制御する。
【０１２０】
そして、ＲＯＭ２１３には、上記実施例と同様の機能を発揮する情報処理プログラムが予め記憶されている。なお、ＲＯＭ２１３ではなく、図示せぬドライブで読取可能な記録媒体に情報処理プログラムが記録されていてもよい。また、記録媒体としては、例えば、ＣＤ−ＲＯＭ、ＤＶＤディスク、ＵＳＢメモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリ等でもよい。情報処理プログラムとしては、図２１に示すように、配備プログラム２１３Ａ、更新プログラム２１３Ｂ、収集プログラム２１３Ｃおよび指示プログラム２１３Ｄである。なお、プログラム２１３Ａ〜２１３Ｄについては、適宜統合または分散してもよい。また、ＲＡＭ２１２には、初期値記憶部、フロー記憶部、最適評価値記憶部、次点評価値記憶部、閾値記憶部、配備ログ記憶部およびログ記憶部等が記憶してある。
【０１２１】
そして、プロセッサ２１４が、これらのプログラム２１３Ａ〜２１３ＤをＲＯＭ２１３から読み出し、これらの読み出された各プログラムを実行する。そして、プロセッサ２１４は、図２１に示すように、各プログラム２１３Ａ〜２１３Ｄを、配備プロセス２１４Ａ、更新プロセス２１４Ｂ、収集プロセス２１４Ｃおよび指示プロセス２１４Ｄとして機能することになる。
【０１２２】
プロセッサ２１４は、各ノードから収集された入出力ログから、データを処理する単位である各インスタンスの処理コストを示すインスタンスごとの評価値を生成し、評価値に基づいて各インスタンスを各ノードに分散配備する。プロセッサ２１４は、各ノードから収集された入出力ログを用いて、収集済みの入出力ログを更新し、インスタンスの生成または消滅を示す配備情報を収集する。プロセッサ２１４は、配備情報が収集された場合、または、収集済みの入出力ログが更新された場合に、分散配備する処理に対して評価値の再生成を指示する。その結果、分散配備におけるネットワークコストを低減できる。
【符号の説明】
【０１２３】
１  分散配備システム
１０  ノード
５１  通信部
５２  記憶部
５３  制御部
５４  実行部
５５  生成部
５６  閾値設定部
１００  情報処理装置
１１０  通信部
１２０  記憶部
１２１  初期値記憶部
１２２  フロー記憶部
１２３  最適評価値記憶部
１２４  次点評価値記憶部
１２５  閾値記憶部
１２６  配備ログ記憶部
１２７  ログ記憶部
１３０  制御部
１３１  配備部
１３２  収集部
１３３  更新部
１３４  算出部
１３５  設定部
１３６  指示部
【図１】
2015106286.tif 000003
【図２】
2015106286.tif 000004
【図３】
2015106286.tif 000005
【図４】
2015106286.tif 000006
【図５】
2015106286.tif 000007
【図６】
2015106286.tif 000008
【図７】
2015106286.tif 000009
【図８】
2015106286.tif 000010
【図９】
2015106286.tif 000011
【図１０】
2015106286.tif 000012
【図１１】
2015106286.tif 000013
【図１２】
2015106286.tif 000014
【図１３】
2015106286.tif 000015
【図１４】
2015106286.tif 000016
【図１５】
2015106286.tif 000017
【図１６】
2015106286.tif 000018
【図１７】
2015106286.tif 000019
【図１８】
2015106286.tif 000020
【図１９】
2015106286.tif 000021
【図２０】
2015106286.tif 000022
【図２１】
2015106286.tif 000023