以下、図面に基づいて、本願の開示する情報処理装置、情報処理方法および情報処理プログラムの実施例を詳細に説明する。なお、本実施例により、開示技術が限定されるものではない。また、以下の実施例は、矛盾しない範囲で適宜組みあわせてもよい。
[システム構成]
まず、本実施例に係る分散配備システムの構成について説明する。図1は、実施例の分散配備システムの一例を示す説明図である。図1に示す分散配備システム1は、例えば、物理的なネットワーク構成302として、各センサ307等のデータを何段階かのノード306を経由して情報処理装置100に収集できる構成である。各センサ307は、例えば、消費電力量を計測するセンサである。各ノード306は、例えば、センサ307や他のノード306からデータを受信すると、分散配備された処理(インスタンス)を実行し、実行結果のデータを他のノード306や情報処理装置100に送信する。また、各ノード306は、実行結果のデータやログを他のノード306や情報処理装置100に転送する。
分散配備システム1は、データを処理する単位であるインスタンスが、ネットワーク上の各ノード306に分散配備される。各ノード306に配備されたインスタンスは、各種のセンサや機器から収集されたデータを受信する。インスタンスは、処理結果を次の処理を行うインスタンスに送信する。分散配備システム1では、このようにして、各ノード306でデータに対して分散配備された処理を実行し、分散配備システム1を管理する情報処理装置100で最終的な処理結果を得る。また、情報処理装置100は、各ノード306にインスタンスを配備する配備計画を生成し、生成した配備計画に基づいて各ノード306にインスタンスを分散配備する。
分散配備システム1は、分散配備を行う場合に、データの論理的な処理フロー301(以下、インスタンスフローともいう)を物理的なネットワーク構成302と対応付ける必要がある。論理的な処理フロー301では、データA303aが生成されると、データA303aは、データAの平均の処理を実行するインスタンス305aに送信される。また、論理的な処理フロー301では、データB303bが生成されると、データB303bはデータBの平均の処理を実行するインスタンス305bに送信される。また、論理的な処理フロー301では、データC303cが生成されると、データC303cはデータCの平均の処理を実行するインスタンス305cに送信される。さらに、論理的な処理フロー301では、インスタンス305aの出力とインスタンス305bの出力とがデータA,Bの合計を算出するインスタンス305dに入力される。また、論理的な処理フロー301では、インスタンス305cの出力と、図示しない他のインスタンスの出力とがデータCと他のインスタンスのデータとの合計を算出するインスタンス305eに入力される。さらに、論理的な処理フロー301では、インスタンス305dの出力と、インスタンス305eの出力とが、処理αを実行するインスタンス305fに入力される。
ここで、分散配備システム1は、例えば、論理的な処理フロー301上のデータの集約キーとして、データA303aとデータA303aとを取得してデータAの平均を求めるインスタンス305aを設定する。情報処理装置100は、例えば、物理的なネットワーク構成302上のデータA303aの集約ポイント、つまりインスタンス305aの配備候補として、ノード306a、ノード306bおよび情報処理装置100を挙げる。なお、ノード306a,306bは、ノード306の個々を区別するものであり、その機能および構成は、他のノード306と同一である。情報処理装置100は、例えば、インスタンス305aの通信コストに基づく評価値を算出し、最も評価値が低い、つまりコストが安い、例えばノード306aに、インスタンス305aを配備する。
図2は、インスタンスフローと各インスタンスが配備されるノードの組み合わせの一例を示す説明図である。図2の例では、分散配備システム1は、情報処理装置100、ノードC1、10、10−1、10−2、11、11−1および11−2を有する。図2では、処理1a〜1e、2a、2d、3a、3d、3Aa、3Ba、3Ad、3Bd、4aおよび4dの各インスタンスを、ノードC1、10、10−1、10−2、11、11−1および11−2を有するネットワークに配備する例を示す。なお、以下の説明では、ノードC1、10、10−1、10−2、11、11−1および11−2は、それぞれを区別しない場合には単にノードと表現する。
各ノードは、例えば、センサや他のノードからデータを受信すると、分散配備されたインスタンスを実行し、実行結果のデータを他のノードや情報処理装置100に送信する。また、各ノードは、データを他のノードや情報処理装置100に転送する。また、各ノードは、情報処理装置100によって生成された、後述する各インスタンスの処理量の閾値を受信して設定する。さらに、各ノードは、配備されたインスタンスの処理量が閾値を超える場合には、後述する入出力ログをただちに送信する。
情報処理装置100は、各インスタンスが配備されるノードの組み合わせを見つけ、その組み合わせを解とする。ノードの組み合わせの中で、最も望ましい組み合わせが最適解である。情報処理装置100は、例えば、通信コストが最小である、通信レイテンシが最小である等の評価値に基づいて最適解を決定する。すなわち、情報処理装置100は、処理全体を部分処理、つまりインスタンスのフローとして解析し、多数のノードに分散して実行する。
図2では、情報処理装置100は、例えば、処理1aをノード10−1に配備し、処理1bおよび1cをノード10−2に配備する。また情報処理装置100は、処理1a〜1cのデータを利用する処理2aを、例えば、ノード10−1および10−2の上位に接続されているノード10に配備する。同様に、情報処理装置100は、例えば、処理1dおよび1eをノード11−2に配備し、処理1dおよび1eのデータを利用する処理2dを、処理1dおよび1eと同じノードであるノード11−2に配備する。このようにして、情報処理装置100は、同様に他のインスタンスである処理3a、3d、3Aa、3Ba、3Ad、3Bd、4aおよび4dの各インスタンスを、図2に示すようにいずれかのノードに配備する。
[情報処理装置の構成]
次に、本実施例に係る情報処理装置100の機能的構成について説明する。図3は、実施例の情報処理装置の構成の一例を示すブロック図である。図3に示す情報処理装置100は、通信部110と、記憶部120と、制御部130とを有する。なお、以下の説明では、分散処理システム1は、図2に示すネットワーク構成を有するものとして説明する。
通信部110は、例えば、NIC(Network Interface Card)等によって実現される。通信部110は、ネットワークを介して各ノードと有線または無線で接続され、各ノードとの間で情報の通信を司る通信インタフェースである。通信部110は、各ノードからインスタンスの生成または消滅を示す配備情報、および、各ノードの入出力ログを受信する。通信部110は、配備情報および各ノードの入出力ログを制御部130に出力する。
また、通信部110は、制御部130から分散配備の配備計画に基づいたインスタンスが入力されると、該当するノードにインスタンスを送信する。なお、各インスタンスは、予め各ノードに記憶され、情報処理装置100から実行するインスタンスを有効にする指示を受信するようにしてもよい。また、通信部110は、制御部130からインスタンスごとに算出された処理量の閾値が入力されると、閾値を当該インスタンスに対応するノードに対して送信する。
記憶部120は、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、ハードディスクや光ディスク等の記憶装置によって実現される。記憶部120は、初期値記憶部121と、フロー記憶部122と、最適評価値記憶部123と、次点評価値記憶部124と、閾値記憶部125と、配備ログ記憶部126と、ログ記憶部127とを有する。また、記憶部120は、制御部130での処理に用いる情報を記憶する。
初期値記憶部121は、例えば、情報を収集する対象機器(センサ)のリスト、機器およびノードのネットワーク設定、分散配備する処理である配備アプリケーションの設定、および、分散配備の分散ポリシー設定等の各種初期値を記憶する。
フロー記憶部122は、インスタンスを識別するインスタンスIDと、当該インスタンスの次の処理であるインスタンスを示す次処理とを対応付けて記憶する。図4は、フロー記憶部の一例を示す説明図である。図4に示すように、フロー記憶部122は、インスタンスID122a、次処理122bといった項目を有する。
インスタンスID122aは、インスタンスを識別する。次処理122bは、インスタンスID122aで示されたインスタンスでの処理が終了すると、処理が終了したインスタンスが次にデータを渡すインスタンスのインスタンスIDを示す。次処理122bは、1つのインスタンスに限られず、複数のインスタンスにデータを渡す場合には、複数のインスタンスを記憶する。
最適評価値記憶部123は、分散配備を実行した結果であるインスタンスのインスタンスIDと、対応する配備先ノードと、分散配備の解の最適評価値とを記憶する。図5は、最適評価値記憶部の一例を示す説明図である。図5に示すように、最適評価値記憶部123は、インスタンスID123a、配備先ノード123b、最適評価値123cといった項目を有する。
インスタンスID123aは、インスタンスを識別する。配備先ノード123bは、分散配備を実行した結果、当該インスタンスが配備されるノードを示す。最適評価値123cは、各インスタンスと各配備先ノードの組み合わせにおいて分散配備を実行した結果の各インスタンスの評価値の合計である最適評価値を示す。ここで、評価値とは、例えば、通信量に基づく通信コストや通信レイテンシ等に基づいて生成する。
次点評価値記憶部124は、次点評価値と、最適評価値との差分とをインスタンスのインスタンスIDに対応づけて記憶する。図6は、次点評価値記憶部の一例を示す説明図である。図6に示すように、次点評価値記憶部124は、インスタンスID124a、次点評価値124b、最適評価値との差分124cといった項目を有する。
インスタンスID124aは、評価値が次点の値であるノードに配備したインスタンスを識別する。次点評価値124bは、分散配備を実行した結果の最適解の組み合わせに対して、インスタンスを1つ選択したときの当該インスタンスの評価値の次点の値と他のインスタンスの評価値との合計を示す。最適評価値との差分124cは、次点評価値と最適評価値との差分を示す。
閾値記憶部125は、各ノードに配備されたインスタンスの処理量が所定量を超えた場合に、情報処理装置100に対して入出力ログを送信するための閾値を記憶する。図7は、閾値記憶部の一例を示す説明図である。図7に示すように、閾値記憶部125は、インスタンスID125a、閾値125bといった項目を有する。
インスタンスID125aは、インスタンスを識別する。閾値125bは、各インスタンスの処理量が所定量を超えたか否かを判定する閾値を示す。
配備ログ記憶部126は、インスタンスの生成または消滅を示す配備情報を、配備ログとして対応するノードとともに記憶する。図8は、配備ログ記憶部の一例を示す説明図である。図8に示すように、配備ログ記憶部126は、インスタンスID126a、生成/消滅126b、ノード126cといった項目を有する。なお、配備ログ記憶部126は、配備アプリケーションが変更された場合の配備情報も記憶する。
インスタンスID126aは、生成または消滅が発生したインスタンスを識別する。生成/消滅126bは、対応するインスタンスが生成した場合は「生成」とし、対応するインスタンスが消滅した場合は「消滅」とする。ノード126cは、生成または消滅が発生したインスタンスが配備されているノードを示す。
ログ記憶部127は、各インスタンスから収集された全ての入出力ログを記憶する。つまり、ログ記憶部127は、収集済みの入出力ログを記憶する。図9は、ログ記憶部の一例を示す説明図である。図9に示すように、ログ記憶部127は、生成インスタンス127a、使用インスタンス127b、データ量127c、発生回数127dといった項目を有する。
生成インスタンス127aは、あるデータが生成されたインスタンスを示し、例えば、従業員ID31のインスタンスが、当該従業員ID31に係る電力データをセンサから取得して生成したことを示す。ここで、例えば、図9の「センサ」および「employeeID=31」は、図2に示すインスタンスである処理1a等に相当するものであって従業員ID31を示し、分割された処理である場合にIDが振られる。当該IDは分割単位が1つの処理、つまり分割しない処理は空欄とする。使用インスタンス127bは、生成インスタンス127aのデータをどのインスタンスで使用するかを示す。例えば、図9の「部署集計」および「SectionID=A」は、図2に示すインスタンスである処理2a等に相当し、部署Aについて集計するインスタンスを示す。データ量127cは、インスタンス間のデータ転送に係る入出力で発生したデータ量を示す。例えば、従業員ID31のインスタンスから部署Aの集計インスタンスに対して、電力データの平均値データを100kB送信すると、データ量127cは、「100kB」となる。発生回数127dは、インスタンス間のデータ転送、つまり入出力が発生した回数を示す。例えば、従業員ID31のインスタンスから部署Aの集計インスタンスに対して、電力データの平均値データを100回送信すると、発生回数127dは、「100」となる。
図3の説明に戻って、制御部130は、例えば、CPU(Central Processing Unit)やMPU(Micro Processing Unit)等によって、内部の記憶装置に記憶されているプログラムがRAMを作業領域として実行されることにより実現される。また、制御部130は、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等の集積回路により実現されるようにしてもよい。制御部130は、配備部131と、収集部132と、更新部133と、算出部134と、設定部135と、指示部136とを有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部130の内部構成は、図3に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。
配備部131は、分散配備の配備計画を生成し、生成した配備計画に基づいて分散配備を実行する。配備部131は、例えば分散配備システム1の管理者から分散配備処理を実行する指示を受けると、初期値記憶部121から各種初期値を読み込んで設定する。配備部131は、初期値の設定が完了すると初期配備処理を実行する。また、配備部131は、指示部136から評価値の再生成を指示されると、各インスタンスの評価値を再生成し、各インスタンスの配備を見直す再配備処理を実行する。配備部131は、初期配備処理または再配備処理が完了し、管理者によって配備が許可されると、分散配備の配備計画に基づいて、各インスタンスを通信部110を介して各ノードに配備する。なお、配備部131は、各インスタンスが予め各ノードに記憶されている場合には、インスタンスを有効にする指示を、通信部110を介して送信する。また、配備部131は、初期配備処理または再配備処理が完了した場合には、閾値算出指示を算出部134に出力する。
ここで、配備部131が行う初期配備処理について説明する。なお、配備部131が行う再配備処理も配備情報や更新された入出力ログを用いて同様の処理を行う。また、ここでは、分割後の各ノードに配備される処理をインスタンスと表現する。配備部131は、実行するノードが固定されていないインスタンスを、情報処理装置100とは異なるノードに割り当てることによるネットワーク内の通信にかかるコストの軽減効果が高いインスタンスから順にソートする。配備部131は、例えば、実行するノードが固定されていないインスタンスについて、入力データのデータ量に対する出力データのデータ量の割合を算出し、算出した割合が小さい順にソートする。そして、配備部131は、ソートしたインスタンスを、さらに、実行順序に従ってソートし、実行順序が早く、かつコストの軽減効果が高い順に、インスタンスを割当対象に決定する。
配備部131は、ネットワーク内のノード間の通信にかかるコストに基づいて、インスタンスの入力データを生成する各ノードから、インスタンスの出力データを収集する特定のノードまでの通信経路をそれぞれ特定する。ここで、特定のノードとは、例えば、情報処理装置100である。配備部131は、例えば、入力データを生成する各ノードから情報処理装置100までの各ノード間の通信にかかるコストの合計値が最小になる通信経路をそれぞれ特定する。
配備部131は、具体的には、ダイクストラ法を用いて、各ノードから情報処理装置100までの各ノード間の通信にかかるコストの合計値が最小になる通信経路をそれぞれ特定する。次に、配備部131は、フロー記憶部122に基づいて、入力データを生成するノードを特定する。そして、配備部131は、特定した通信経路の中から、特定した入力データを生成するノードから情報処理装置100までの各ノード間の通信にかかるコストの合計値が最小になる通信経路を取得する。
これにより、配備部131は、特定した通信経路に基づいて、ネットワークに含まれるノードの中から、特定の演算処理に含まれるインスタンスを割り当てる候補になるノードのグループを取得することができる。特定結果は、例えば、記憶部120に記憶される。
配備部131は、特定した通信経路上のノードの中から、送信または受信される入力データのデータ数またはデータ量が多い順に、探索順序を決定する。これにより、配備部131は、探索順序を取得することができる。ここで、送信または受信される入力データのデータ数とは、例えば、ノードにおける通信経路の収束数である。
配備部131は、データ数またはデータ量が同一の複数のノードがある場合、複数のノードをグループ化して、探索順序を決定してもよい。決定結果は、例えば、記憶部120に記憶される。
配備部131は、ノードに割当対象のインスタンスを割り当てた際にネットワーク内の通信にかかるコストを算出する。これにより、配備部131は、算出されたコストに基づいて、ノードを探索することができる。算出結果は、例えば、記憶部120に記憶される。
配備部131は、ノードが、インスタンスの割当条件を満たすか否かを判定する。ここで、割当条件とは、ノードにインスタンスを割当可能であるか否かを判定する基準となる条件である。割当条件とは、例えば、処理性能がインスタンスの処理負荷より大きいという条件である。また、割当条件とは、例えば、ノードに割当可能なインスタンスの数が決まっている場合は、割当可能な数以下であるという条件であってもよい。判定結果は、例えば、記憶部120に記憶される。
配備部131は、情報処理装置100を起点にして、特定した通信経路上のノードの中から、送信または受信される入力データのデータ数が減少し、かつ、インスタンスを割り当てた際にネットワーク内の通信にかかるコストが減少するノードを順次探索する。配備部131は、例えば、特定した通信経路上のノードの中から、データ数が多い順に、ネットワーク内の通信にかかるコストが減少しなくなるまで、データ数が減少し、かつネットワーク内の通信にかかるコストが減少するノードを順次探索する。
配備部131は、具体的には、情報処理装置100に割当対象のインスタンスを割り当てた際にネットワーク内の通信にかかるコストを算出する。次に、配備部131は、決定されたデータ数が多い順の探索順序に従って、ノードを順次選択し、選択したノードに割当対象のインスタンスを割り当てた際にネットワーク内の通信にかかるコストを算出する。そして、配備部131は、選択したノードについて算出されたコストが、他のノードについて算出済みのコストよりも減少する場合、選択したノードを、探索したノードに決定する。なお、選択したノードについて算出されたコストは、当該インスタンスを当該ノードに割り当てた場合の評価値である。このとき、配備部131は、過去に算出済みのコストを次点評価値、減少したコスト差を最適評価値との差分として、次点評価値記憶部124に記録する。
また、配備部131は、情報処理装置100を起点にして、通信経路上のノードの中から、送信または受信される入力データのデータ量が減少し、かつ、インスタンスを割り当てた際にネットワーク内の通信コストが減少するノードを順次探索してもよい。配備部131は、例えば、通信経路上のノードの中から、データ量が多い順に、ネットワーク内の通信にかかるコストが減少しなくなるまで、データ量が減少し、かつ、ネットワーク内の通信にかかるコストが減少するノードを順次探索する。
また、データ数またはデータ量については、情報処理装置100からのリンク数で重み付けした値を用いてもよい。これにより、データの削減効果の高いインスタンスの配備先について、情報処理装置100から遠い、すなわち、入力データを生成するノード付近を探索することが可能となり、評価値の改善が見込める様になる。重み付けの方法としては、例えば、リンク数とデータ数またはデータ量の乗算などがある。
また、データ数またはデータ量が同一である複数のノードが存在するときがある。このとき、配備部131は、複数のノードの中から、情報処理装置100からのリンク数が最大になり、かつ、ネットワーク内の通信にかかるコストが減少するノードを探索してもよい。配備部131は、具体的には、グループ化された複数のノードのうちで、情報処理装置100からのリンク数が最大になるノードを選択し、選択したノードに割当対象のインスタンスを割り当てた際にネットワーク内の通信にかかるコストを算出する。そして、配備部131は、選択したノードについて算出されたコストが、他のノードについて算出済みのコストよりも減少する場合、選択したノードを、探索したノードに決定する。
さらに、配備部131は、コストが減少しない場合、情報処理装置100からのリンク数が次に大きくなるノードを選択し、選択したノードに割当対象のインスタンスを割り当てた際にネットワーク内の通信にかかるコストを算出してもよい。そして、配備部131は、選択したノードについて算出されたコストが、他のノードについて算出済みのコストよりも減少する場合、選択したノードを、探索したノードに決定する。
また、このとき、配備部131は、複数のノードのうちでインスタンスの割当条件を満たすノードの中から、情報処理装置100からのリンク数が最大になり、かつ、ネットワーク内の通信にかかるコストが減少するノードを探索してもよい。配備部131は、具体的には、複数のノードの各々のノードが割当条件を満たすか否かを判定する。次に、配備部131は、判定結果に基づいて、複数のノードのうちでインスタンスの割当条件を満たすノードを特定する。そして、配備部131は、特定したノードのうちで、情報処理装置100からのリンク数が最大になるノードを選択し、選択したノードに割当対象のインスタンスを割り当てた際にネットワーク内の通信にかかるコストを算出する。次に、配備部131は、選択したノードについて算出されたコストが、他のノードについて算出済みのコストよりも減少する場合、選択したノードを、探索したノードに決定する。
さらに、配備部131は、コストが減少しない場合、情報処理装置100からのリンク数が次に大きくなるノードを選択し、選択したノードに割当対象のインスタンスを割り当てた際にネットワーク内の通信にかかるコストを算出してもよい。そして、配備部131は、選択したノードについて算出されたコストが、他のノードについて算出済みのコストよりも減少する場合、選択したノードを、探索したノードに決定する。
また、データ数またはデータ量が同一である複数のノードのすべてが割当条件を満たさないときがある。このとき、配備部131は、ネットワークに含まれる割当条件を満たすノードの中から、複数のノードのうちで情報処理装置100からのリンク数が最大になるノードから所定のリンク数以内に存在し、かつコストが減少するノードを探索してもよい。配備部131は、具体的には、複数のノードのすべてが割当条件を満たさない場合、複数のノードのうちで情報処理装置100からのリンク数が最大になるノードから所定のリンク数以内に存在するノードが割当条件を満たすか否かを判定する。次に、配備部131は、判定結果に基づいて、所定のリンク数以内に存在するノードのうちでインスタンスの割当条件を満たすノードを特定する。そして、配備部131は、特定したノードのうちで、情報処理装置100からのリンク数が最大になるノードを選択し、選択したノードに割当対象のインスタンスを割り当てた際にネットワーク内の通信にかかるコストを算出する。次に、配備部131は、選択したノードについて算出されたコストが、他のノードについて算出済みのコストよりも減少する場合、選択したノードを、探索したノードに決定する。
さらに、配備部131は、コストが減少しない場合、情報処理装置100からのリンク数が次に大きくなるノードを選択し、選択したノードに割当対象のインスタンスを割り当てた際にネットワーク内の通信にかかるコストを算出する。そして、配備部131は、選択したノードについて算出されたコストが、他のノードについて算出済みのコストよりも減少する場合、選択したノードを、探索したノードに決定する。
また、データ数またはデータ量が同一である複数のノード、および複数のノードのうちで情報処理装置100からのリンク数が最大になるノードから所定のリンク数以内に存在するノードの中から、ノードを探索できないときがある。このとき、配備部131は、データ数またはデータ量が同一である複数のノードよりデータ量が減少し、かつ、ネットワーク内の通信にかかるコストが減少するノードを探索してもよい。
配備部131は、具体的には、複数のノードの中からコストが減少するノードを検索できなかった場合、探索順序に従って、複数のノードよりデータ数またはデータ量が減少するノードを選択する。そして、配備部131は、選択したノードに割当対象のインスタンスを割り当てた際にネットワーク内の通信にかかるコストを算出する。次に、配備部131は、選択したノードについて算出されたコストが、他のノードについて算出済みのコストよりも減少する場合、選択したノードを、探索したノードに決定する。
これにより、配備部131は、分散処理を割り当てた際にネットワーク内の通信にかかるコストが減少するノードを順次探索することができる。探索結果は、例えば、記憶部120に記憶される。
配備部131は、探索したノードの中からインスタンスを割り当てるノードを決定する。配備部131は、例えば、最後に探索したノードを、インスタンスを割り当てるノードに決定する。これにより、配備部131は、探索したノードにインスタンスを割り当てて、ネットワーク内の通信にかかるコストを低減することができる。決定結果は、例えば、最適評価値記憶部123に記憶される。
配備部131は、処理グループ内全てのインスタンスについて割り当てるノードが決定すると、インスタンスIDと配備先ノードとを対応付け、さらに、処理グループ内のコスト、つまり評価値の合計を最適評価値として、最適評価値記憶部123に記憶する。つまり、最適評価値は、各インスタンスと各配備先ノードの組み合わせにおいて生成された配備計画の各インスタンスの評価値の合計であり、当該組み合わせの最適評価値である。すなわち、生成された配備計画は、各インスタンスをそれぞれのノードに配備した場合の全体の通信コストを算出し、全体の通信コストが最も安くなるノードに配備したときのインスタンスとノードとの組み合わせである。
また、配備部131は、配備計画の最適解の組み合わせに対して、インスタンスを1つ選択する。配備部131は、選択したインスタンスの評価値の次点の値と、他のインスタンスの評価値との合計を次点評価値として算出する。さらに、配備部131は、最適評価値と次点評価値との差分を、最適評価値との差分として算出する。配備部131は、選択したインスタンスのインスタンスIDと、算出した次点評価値と、算出した差分とを対応付けて、次点評価値記憶部124に記憶する。なお、次点評価値および最適評価値との差分は、上述した最適な配備ノードの選択の際に合わせて算出する。
ここで、図10を用いて、処理の分割について説明する。図10は、処理の分割の一例を示す説明図である。なお、ここでは、分割前の処理全体を単に処理と表現し、分割後の各ノードに配備される処理をインスタンスと表現する。図10に示すように、例えば、機器ごとにデータを収集し、収集したデータを地域ごとに集計し、比率を算出するような処理を行う場合、機器収集処理、地域集計処理および比率算出処理の3つの処理を有する。また、機器収集処理は、機器IDごとに各インスタンスに分割される。例えば、座標X1,Y1の機器21のインスタンスは、機器21のデータを収集し、地域Aという情報とともに地域集計処理を行う地域A集計に送信する。同様に、機器22,23は、収集したデータを地域A集計に送信する。また、同様に、機器24〜26は、収集したデータを地域B集計に送信する。
ここで、例えば、機器23が地域Aから地域Bに移動した場合、地域集計処理も地域A集計から地域B集計へと変更する必要がある。すると、機器23は、収集したデータの送信先を地域A集計から地域B集計へと変更する。このように、情報処理装置100は、例えば、データの集約関係や前後の処理分割単位同士の利用関係が変化するたびに、インスタンス間の関係、つまり分散配備の配備計画を見直して再配備処理を行う。つまり、情報処理装置100は、インスタンスとインスタンスのデータ入出力関係を自動解析して分散配備システム1の管理コストを削減する。
再配備処理は、各インスタンスでのイベントの入出力ログを収集して解析する。ここで、イベントの入出力ログからの解析を、図9および図11を用いて説明する。図11は、インスタンスの配備の一例を示す説明図である。配備部131は、処理全体の定義から、処理の分割単位となる属性情報を取得する。属性情報は、例えば、図11に示す従業員ID31が対応する従業員に係るセンサ情報の平均処理、図11に示す部署A等の部署IDごとの集計処理等がある。
配備部131は、インスタンスへの入力データログから実行中のインスタンスを把握する。例えば、図9の1行目の例では、部署Aの集計インスタンスに、従業員ID31のインスタンスからデータが入力されていることを示す。配備部131は、このログに基づいて、例えば、電力平均を求めるインスタンスである従業員ID31の存在を把握する。また、配備部131は、インスタンスからの出力データログからインスタンス間の入出力関係を把握する。配備部131は、例えば、従業員ID31の電力平均の出力データに部署Aの部署IDが記載されていると、電力平均を求めるインスタンスである従業員ID31は、部署Aの集計のインスタンスにデータを送信していることを把握する。
図11に示す例では、従業員ID31,32,33は、それぞれ取得した電力の平均を求めるインスタンスであり、従業員ID31,32,33からの出力データには、生成インスタンスである従業員ID31,32,33の情報がそれぞれ付加される。また、当該出力データには、次の処理である部署集計の分割単位として部署Aの情報(SectionID=A)が付加される。同様に、従業員ID34,35,36は、それぞれ取得した電力の平均を求めるインスタンスであり、従業員ID34,35,36からの出力データには、生成インスタンスである従業員ID34,35,36の情報がそれぞれ付加される。また、当該出力データには、次の処理である部署集計の分割単位として部署Bの情報(SectionID=B)が付加される。このときのノードxの入出力ログは、図9に示すようなログとなる。
図3の説明に戻って、収集部132は、通信部110を介して、各ノードから送信された各ノードでのインスタンスの生成または消滅を示す配備情報を収集する。また、収集部132は、通信部110を介して、各ノードから送信されたインスタンスの入出力ログを収集する。ここで、入出力ログは、各ノードから必要性の高いイベントの入出力ログが送信される。入出力ログには、例えば、当該インスタンスの入出力に関する通信コスト情報が含まれる。収集部132は、収集した配備情報を指示部136に出力するとともに、配備ログ記憶部126に記憶する。また、収集部132は、収集した入出力ログを更新部133に出力する。なお、各ノードの入出力ログは、通常時であっても低い頻度、例えば、1日に1回から1週間に1回などの頻度で、情報処理装置100に送信される。
ここで、図12〜14を用いて各ノードからのログの送信について説明する。図12は、各ノードが情報処理装置にログを送信する場合の一例を示す説明図である。図12に示すように、例えば、ノードC1は、新規なインスタンスである処理1fと処理2fとが生成されると、情報処理装置100に対して配備情報を送信する。各ノードは、新規に生成したインスタンスのログを優先して送信する。また、各ノードは、インスタンスが生成された場合には、詳細なログを送信する。
また、例えば、ノード11−2は、配備済みのインスタンスである処理2eについて通信量が変化して、所定の閾値を超える変化量が発生すると、情報処理装置100に対して入出力ログを送信する。このように、配備済みのインスタンスのログは、通信量が大きく変動した場合にのみ情報処理装置100に対して送信する。なお、ノード10−2に配備されたインスタンスである処理1c,2cは、通信量に大きな変化はないものとする。
図13は、インスタンス生成時のログの送信の一例を示す説明図である。図13に示す例では、ノード10−1に接続されているセンサfの情報について処理を行うインスタンスである処理1fおよび処理2fが、ノード10−1よりもネットワークの構成上、情報処理装置100に近いノードC1で生成された場合を示す。このとき、ノードC1は、情報処理装置100に対して、処理1fおよび処理2fが生成されたという配備情報、つまりインスタンスの生成ログを送信する。また、各ノードは、図示はしないが、インスタンスが消滅した場合には、あるインスタンスが消滅したという配備情報、つまりインスタンスの消滅ログを処理装置100に対して送信する。なお、インスタンスの生成ログと消滅ログを合わせて配備ログと称する。なお、ノード10−2に配備されたインスタンスである処理2c、ノード11−2に配備されたインスタンスである処理2e、および、ノードC1に配備されたインスタンスである処理2fは、データを処理3xに出力するものとする。また、処理1cは処理2cに、処理1eは処理2eにデータを出力する。
インスタンスの生成または消滅を示す配備情報は、情報処理装置100のフロー記憶部122に記憶されるインスタンスフローの形状を最新の状態に保つために必要である。情報処理装置100は、生成ログが届かないと、新たに発生したインスタンスである処理1fおよび処理2fの存在に気付かないため、処理1fおよび処理2fを生成場所から移動することができない。なお、一般にインスタンスの生成場所は、情報処理装置100の近くであり、実際に情報を取得するセンサからは遠く、そのままでは、経路311のような経路を通るので通信コストが大きくなってしまう。情報処理装置100の収集部132は、配備情報を収集すると、インスタンスフローに新たなフロー312を追加する。また、インスタンスが消滅した場合は、消滅したインスタンスが配備されていたノードの処理能力が空くため、他のノードで処理していたインスタンスを移動できる。このとき、収集部132は、配備情報を収集すると、消滅したインスタンスのフローを削除する。このように、収集部132が配備情報を収集した場合には、分散配備を再度行う再配備処理が必要となる。
図14は、評価値の差分に基づくログの送信の一例を示す説明図である。各ノードに配備された各インスタンスは、最適評価値、つまり通信コストが最も安いノードに配置されている。ところが、あるインスタンスの処理量が増加して通信量が増加した場合には、通信コストが増加し、他のノードに当該インスタンスを配置した方が、通信コストが安くなる場合がある。図14に示すように、例えば、ノード11−2に配備されたインスタンスである処理2eは、当初、経路313により次のインスタンスである処理3xにデータを送信している。その後、処理2eは、通信量の増加に伴って通信コストが増加すると、次点評価値のノードであるノード11またはノード11−1に移動した方が、通信コストが安くなる場合がある。つまり、処理2eは、ノード11またはノード11−1に移動して、経路314により処理1eからデータを受信し、経路315により処理3xにデータを送信する場合である。
このように、処理2eは、ノード11−2に配備された場合の最適評価値と、ノード11またはノード11−1に配備された場合の次点評価値の差分を超える処理量の変動があった場合に、情報処理装置100に対して、入出力ログを送信する。言い換えると、インスタンスは、最適評価値と次点評価値との差分を超えない量の処理量の変動では、配備ノードを変更する必要がない可能性が高いといえる。なお、ノード10−2に配備されたインスタンスである処理1c,2cは、通信量に大きな変化はないものとする。
図3の説明に戻って、更新部133は、収集部132から入出力ログが入力されると、当該入出力ログが入力されたタイミング、つまり収集部132が入出力ログを収集したタイミングで、収集済みの入出力ログが記憶されているログ記憶部127を更新する。更新部133は、ログ記憶部127を更新すると、更新情報を指示部136に出力する。
算出部134は、配備部131から閾値算出指示が入力されると、各インスタンスの閾値を算出する。算出部134は、閾値が未算出のインスタンスを1つ選択する。算出部134は、選択されたインスタンスの配備先ノードから次段のインスタンスの配備先ノードまでの通信コストを算出する。算出部134は、次点評価値記憶部124を参照して、最適評価値との差分を読み出し、読み出した最適評価値との差分を算出された通信コストで除算した値を、選択されたインスタンスの閾値として算出する。算出部134は、全てのインスタンスについて閾値を算出すると、算出した閾値をインスタンスのインスタンスIDと対応付けて閾値記憶部125に記憶する。算出部134は、閾値記憶部125への閾値の記憶が完了すると、設定部135に設定指示を出力する。
ここで、図15を用いて、評価値の差分と閾値について説明する。図15は、評価値の差分の一例を示す説明図である。図15の例では、ノード11−2に配備されたインスタンスである処理2eは、例えば、最適評価値が「100」であったとする。また、処理2eの次点評価値は、ノード11の「120」であったとする。このとき、処理2eの閾値は、ノード11−2とノード11との間の通信コストが、例えば、10円/GBであったとすると、(120−100)/10=2となる。つまり、通信コストは、処理2eの処理量である通信量が2GB変動すると、ノード11−2よりノード11に処理2eを配備した方が、通信コストが安くなる。例えば、通信コストは、ノード11−2に処理2eを配備した初期配備時の通信量が20GBであったとすると、通信量が18GB未満または22GBを超える場合には、ノード11に処理2eを配備した方が、通信コストが安くなる。
また、ノード10−2に配備されたインスタンスである処理2cは、例えば、最適評価値が「100」であったとする。また、処理2cの次点評価値は、ノード10の「200」であったとする。このとき、処理2cの閾値は、ノード10−2とノード10との間の通信コストが、例えば、10円/GBであったとすると、(200−100)/10=10となる。つまり、通信コストは、処理2cの処理量である通信量が10GB変動すると、ノード10−2よりノード10に処理2cを配備した方が、通信コストが安くなる。例えば、通信コストは、ノード10−2に処理2cを配備した初期配備時の通信量が50GBであったとすると、通信量が40GB未満または60GBを超える場合には、ノード10に処理2cを配備した方が、通信コストが安くなる。なお、情報処理装置100では、インスタンスの処理量が閾値を超えた場合に、分散配備の配備計画を再生成しても、必ずしも次点評価値であったノードに、閾値を超えたインスタンスが配備されるとは限らない。例えば、再生成された配備計画では、他のインスタンス等の条件によっては、閾値を超えたインスタンスについて、配備されるノードが変化しない場合や、また別のノードに配備される場合もある。
図3の説明に戻って、設定部135は、算出部134から設定指示が入力されると、閾値記憶部125を参照して、各閾値について、閾値に対応するインスタンスが配備されるノードに、通信部110を介して閾値を設定する。
指示部136は、収集部132から配備情報が入力された場合、または、更新部133から更新情報が入力された場合に、配備部131に対して評価値の再生成を指示する。つまり、指示部136は、配備部131に対して評価値を再生成し、評価値に基づいて各インスタンスを各ノードに再度、分散配備するように指示する。
[ノードの構成]
次に、本実施例に係るノードの一例として、ノード10の機能的構成について説明する。なお、他のノードも同様の構成であるので他のノードについての詳細な説明は省略する。図16は、実施例のノードの構成の一例を示すブロック図である。図16に示すノード10は、通信部51と、記憶部52と、制御部53とを有する。
通信部51は、例えば、NIC等によって実現される。通信部51は、ネットワークを介して他のノードおよび情報処理装置100と有線または無線で接続され、他のノードおよび情報処理装置100との間で情報の通信を司る通信インタフェースである。通信部51は、センサや他のノードからデータを受信する。通信部51は、受信したデータを制御部53に出力する。また、通信部51は、制御部53から入力されたインスタンスの実行結果のデータおよび入出力ログを他のノードや情報処理装置100に送信する。
また、通信部51は、情報処理装置100から各インスタンスの処理量の閾値を受信すると、制御部53に出力する。通信部51は、制御部53から配備情報が入力されると、配備情報を情報処理装置100に送信する。
記憶部52は、例えば、RAM、フラッシュメモリ等の半導体メモリ素子、ハードディスクや光ディスク等の記憶装置によって実現される。記憶部52は、インスタンスおよび閾値を記憶する。また、記憶部52は、制御部53での処理に用いる情報を記憶する。
制御部53は、例えば、CPUやMPU等によって、内部の記憶装置に記憶されているプログラムがRAMを作業領域として実行されることにより実現される。また、制御部53は、例えば、ASICやFPGA等の集積回路により実現されるようにしてもよい。制御部53は、実行部54と、生成部55と、閾値設定部56とを有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部53の内部構成は、図16に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。
実行部54は、ノード10に配備されたインスタンスを実行する。実行部54は、通信部51を介してデータが入力されると、配備されたインスタンスの処理内容に従って処理を実行する。実行部54は、実行結果のデータを通信部51および生成部55に出力する。
生成部55は、実行部54から実行結果のデータが入力されると、当該インスタンスに係る入出力ログを生成する。生成部55は、インスタンスの処理量が、閾値設定部56によって設定された閾値を超えた場合および所定の間隔で、生成した入出力ログを通信部51に出力する。ここで、所定の間隔は、例えば、1日に1回、1週間に1回等の間隔である。また、生成部55は、実行部54を監視してインスタンスが生成または消滅した場合には、インスタンスが生成または消滅を示す配備情報を通信部51に出力する。
閾値設定部56は、通信部51から各インスタンスの処理量の閾値が入力されると、各インスタンスに対応した処理量の閾値を生成部55に設定する。
次に、実施例の分散配備システムの動作について説明する。
図17は、実施例の分散配備システムの処理の一例を示すフローチャートである。情報処理装置100の配備部131は、例えば分散配備システム1の管理者から分散配備処理の実行する指示を受けると、初期値記憶部121から各種初期値を読み込んで設定する(ステップS1)。配備部131は、初期値の設定が完了すると初期配備処理を実行する(ステップS2)。
ここで、図18を用いて初期配備処理について説明する。図18は、配備処理の一例を示すフローチャートである。配備部131は、ネットワーク内の通信にかかるコストの軽減効果が高いインスタンスから順にソートし、さらに、実行順序に従ってソートする(ステップS21)。
次に、配備部131は、ソートした順序に従ってインスタンスを選択する(ステップS22)。そして、配備部131は、選択するインスタンスがあるか否かを判定する(ステップS23)。
配備部131は、選択するインスタンスがある場合(ステップS23:肯定)、最短経路を特定し、最短経路上のノードにおける最短経路の収束数、および情報処理装置100からのリンク数を算出する(ステップS24)。
次に、配備部131は、探索処理を実行する(ステップS25)。図19は、探索処理の一例を示すフローチャートである。配備部131は、最短経路の収束数によってノードをグループ化したグループの中から、最短経路の収束数が多い順にノードのグループを取得する(ステップS251)。次に、配備部131は、取得したノードのグループの中から、制約条件を満たすノードを取得するまで、リンク数が多い順にノードを取得する(ステップS252)。
配備部131は、制約条件を満たすノードがあるか否かを判定する(ステップS253)。配備部131は、制約条件を満たすノードがある場合(ステップS253:肯定)、選択したインスタンスを取得したノードに割り当てた場合の評価値を算出する。配備部131は、算出した評価値が前回取得したノードに割り当てた場合より評価値が小さくなるか否かを判定する(ステップS254)。
配備部131は、評価値が小さくならない場合(ステップS254:否定)、探索処理を終了する。配備部131は、評価値が小さくなる場合(ステップS254:肯定)、ステップS257の処理に移行する。
配備部131は、ステップS253において、制約条件を満たすノードがない場合(ステップS253:否定)、ステップS255の処理に移行する。配備部131は、取得したノードのグループの中のリンク数が最大になるノードから所定のリンク数以内にあるノードの中から、制約条件を満たすノードを取得するまで、ノードを取得する(ステップS255)。
配備部131は、制約条件を満たすノードがあるか否かを判定する(ステップS256)。配備部131は、制約条件を満たすノードがある場合(ステップS256:肯定)、ステップS254の処理に移行する。配備部131は、制約条件を満たすノードがない場合(ステップS256:否定)、ステップS257の処理に移行する。
配備部131は、未取得のグループがあるか否かを判定する(ステップS257)。配備部131は、未取得のグループがある場合(ステップS257:肯定)、ステップS251の処理に戻る。配備部131は、未取得のグループがない場合(ステップS257:否定)、探索処理を終了する。これにより、配備部131は、選択したインスタンスを割り当てるノードを探索することができる。
図18に戻って、配備部131は、探索処理が終了すると、探索したノードに選択したインスタンスを対応付けて最適評価値記憶部123に記憶する(ステップS26)。また、配備部131は、評価値が次点の値のノードに、選択したインスタンスを対応付けて記憶部120に記憶し(ステップS27)、ステップS22の処理に戻る。
配備部131は、ステップS22の処理を実行した結果、選択するインスタンスがなかった場合(ステップS23:否定)、各インスタンスの評価値の合計を最適評価値とし、最適評価値記憶部123に記憶する(ステップS28)。すなわち、配備部131は、分散配備の配備計画の生成を完了する。
配備部131は、次点評価値が未算出のインスタンスを1つ選択し、当該インスタンスの評価値の次点の値と、他のインスタンスの評価値との合計を次点評価値として算出する(ステップS29)。また、配備部131は、最適評価値と次点評価値との差分を算出する(ステップS30)。配備部131は、選択したインスタンスのインスタンスIDと、算出した次点評価値と、算出した差分とを対応付けて、次点評価値記憶部124に記憶する(ステップS31)。
配備部131は、全てのインスタンスについて次点評価値を算出したか否かを判定する(ステップS32)。配備部131は、全てのインスタンスについて次点評価値を算出していない場合は(ステップS32:否定)、ステップS29に戻って、次のインスタンスについて次点評価値を算出する。配備部131は、全てのインスタンスについて次点評価値を算出した場合は(ステップS32:肯定)、配備処理を終了する。これにより、配備部131は、情報処理装置100に割り当てられた特定の演算処理に含まれる分散処理であるインスタンスを、各ノードに割り当て直して配備計画を生成し、ネットワーク内の通信にかかるコストを低減することができる。また、配備部131は、各インスタンスについて、当該インスタンスを評価値が次点の値のノードに配備した場合の評価値の合計を次点評価値として算出でき、最適評価値と次点評価値との差分を算出できる。
図17に戻って、配備部131は、初期配備処理が完了すると、管理者に対して生成した配備計画の配備の許可を求める(ステップS3)。配備部131は、管理者によって配備が許可された場合は(ステップS3:肯定)、分散配備の配備計画に基づいて、通信部110を介して各ノードにインスタンスを配備する(ステップS4)。配備部131は、初期配備処理が完了すると、閾値算出指示を算出部134に出力する。配備部131は、管理者によって配備が許可されない場合は(ステップS3:否定)、ステップS2に戻り初期配備処理を繰り返す。
算出部134は、配備部131から閾値算出指示が入力されると、各インスタンスの閾値を算出する閾値算出処理を実行する(ステップS5)。図20は、閾値算出処理の一例を示すフローチャートである。算出部134は、全てのインスタンスの閾値を算出したか否かを判定する(ステップS51)。算出部134は、全てのインスタンスの閾値を算出していない場合は(ステップS51:否定)、閾値が未算出のインスタンスを1つ選択する(ステップS52)。インスタンスの選択は、例えば名前順にソートして順に選択する。
算出部134は、選択されたインスタンスの配備先ノードから次段のインスタンスの配備先ノードまでの通信コストを算出する(ステップS53)。算出部134は、次点評価値記憶部124を参照して、最適評価値との差分を読み出し、読み出した最適評価値との差分を算出された通信コストで除算した値を、選択されたインスタンスの閾値として算出し(ステップS54)、ステップS51の処理に戻る。算出部134は、全てのインスタンスの閾値を算出した場合は(ステップS51:肯定)、算出した閾値をインスタンスのインスタンスIDと対応付けて閾値記憶部125に記憶し(ステップS55)、閾値算出処理を終了して元の処理に戻る。
図17に戻って、算出部134は、閾値記憶部125への閾値の記憶が完了すると、設定部135に設定指示を出力する。設定部135は、算出部134から設定指示が入力されると、閾値記憶部125を参照して、各閾値について、閾値に対応するインスタンスが配備されるノードに、通信部110を介して閾値を設定する(ステップS6)。
各ノードでは、インスタンスが配備されて閾値が設定されると、それぞれのインスタンスで処理が開始される。各ノードは、インスタンスの生成または消滅が発生した場合には、配備情報を情報処理装置100に対して送信する。また、各インスタンスは、設定された閾値を超える処理量の変動があった場合には、入出力ログを情報処理装置100に対して送信する。
情報処理装置100の収集部132は、通信部110を介して、各ノードから配備情報および入出力ログ、つまり、分散環境情報を収集する(ステップS7)。収集部132は、収集した配備情報を指示部136に出力するとともに、配備ログ記憶部126に記憶する。また、収集部132は、収集した入出力ログを更新部133に出力する。更新部133は、収集部132から入出力ログが入力されると、当該入出力ログが入力されたタイミングで、収集済みの入出力ログが記憶されているログ記憶部127を更新する。更新部133は、ログ記憶部127を更新すると、更新情報を指示部136に出力する。指示部136は、収集部132から配備情報が入力された場合、または、更新部133から更新情報が入力された場合に、配備部131に対して評価値の再生成を指示する。
配備部131は、指示部136から評価値の再生成を指示されると、各インスタンスの評価値を再生成し、各インスタンスの配備を見直す再配備処理を実行する(ステップS8)。なお、再配備処理は、ステップS2の初期配備処理と、各インスタンスの評価値を生成するための条件が異なるのみで同一の処理であるので、その説明を省略する。各インスタンスの評価値を生成するための条件は、例えば、インスタンスの生成または消滅した場合等が挙げられる。また、条件としては、例えば、あるインスタンスの処理量が増加し、現在配備されているノードから他のノードに当該インスタンスを移動した方が、通信コストが安くなる場合等が挙げられる。
配備部131は、再配備処理の結果、インスタンスの配備計画に変更があるか否かを判定する(ステップS9)。配備部131は、配備計画に変更がある場合には(ステップS9:肯定)、管理者に対して生成した配備計画の配備の許可を求める(ステップS10)。配備部131は、管理者によって配備が許可された場合は(ステップS10:肯定)、ステップS4の処理に戻り、当該配備計画に基づいて分散配備を行う。配備部131は、配備計画に変更がない場合(ステップS9:否定)、および、管理者によって配備が許可されない場合には(ステップS10:否定)、ステップS7の処理に戻る。このように、分散配備システムの処理では、初期値に基づいた初期配備処理と、分散環境の状況に応じて配備計画を見直す再配備処理とを行うことで、分散配備におけるネットワークコストを低減できる。
このように、情報処理装置100は、各ノードから収集された入出力ログから、データを処理する単位である各インスタンスの処理コストを示すインスタンスごとの評価値を生成し、評価値に基づいて各インスタンスを各ノードに分散配備する。また、情報処理装置100は、各ノードから収集された入出力ログを用いて、収集済みの入出力ログを更新し、インスタンスの生成または消滅を示す配備情報を収集する。また、情報処理装置100は、配備情報が収集された場合、または、収集済みの入出力ログが更新された場合に、分散配備する処理に対して評価値の再生成を指示する。その結果、分散配備におけるネットワークコストを低減できる。つまり、情報処理装置100は、イベントに応じて分散配備を行うので、分散配備のリアルタイム性を保持しつつ、ネットワークコストを低減できる。また、情報処理装置100を有する分散配備システム1は、イベント発生時にのみ入出力ログまたは配備情報を情報処理装置100に送信するので、ネットワークの通信量を削減できる。また、情報処理装置100は、インスタンスの生成または消滅などのフロー解析に大きな影響を与える情報を優先して収集するので、通信量を抑えながら分散配備の配備計画を最適な状態に近づけることができる。
また、情報処理装置100は、さらに、各インスタンスの処理量の閾値を算出し、算出された閾値に対応するインスタンスが配備されるノードに閾値を設定する。また、情報処理装置100は、さらに、処理量の変動量が閾値を超えたインスタンスから送信されたインスタンスの入出力ログを収集し、入出力ログを収集したタイミングで収集済みの入出力ログを更新する。その結果、処理量が閾値を超えたインスタンスからの入出力ログが収集された場合に、インスタンスごとの評価値を再生成し、インスタンスの処理量の変動を迅速に分散配備に反映することができる。
また、情報処理装置100は、閾値として、あるインスタンスが配備されたノードに対応する評価値と、当該インスタンスが配備されたノードの周辺ノードに当該インスタンスが配備された場合の評価値との差分を算出する。また、情報処理装置100は、算出された差分を各インスタンスの通信量に基づく通信コストの単価で除した値を閾値とする。その結果、各インスタンスの通信量が変動した場合に、インスタンスの配備を見直すか否かを容易に判定できる。
なお、上記実施例では、収集するデータの一例として電力量を挙げたが、これに限定されない。分散配備システム1は、例えば、プリンタのトナー等の使用状況のデータを取得し、プリンタが接続されたノードは、トナーの交換が必要となった場合に、入出力ログを情報処理装置100に送信するようにしてもよい。これにより、例えば、サービスマンが対応する必要がある事象が発生した場合に、該当するプリンタの情報を迅速に取得できる。
また、上記実施例では、インスタンスの生成または消滅を示す配備情報、または、処理量が閾値を超えたインスタンスからの入出力ログを収集した場合に、各インスタンスの評価値を再生成して配備計画を再度生成したが、これに限定されない。情報処理装置100は、例えば、インスタンスの処理内容によって、各インスタンスが定期的に送信する入出力ログの頻度を変更してもよい。例えば、従業員のパーソナルコンピュータの消費電力に係る入出力ログは、1日に1回、情報処理装置100に送信し、プリンタ等の共用機器の消費電力は1週間に1回、情報処理装置100に送信するようにしてもよい。これにより、取得するデータの変動量に応じて、ネットワークの通信量を減らすことができる。
また、従来の分散処理では、インスタンス数が多くなり分散処理の規模が大規模化すると、例えば、センサ付近のノードでデータを集約したとしても、集約に係る入出力ログが、データを1つのノードに集約して処理する場合のデータ転送量を上回る場合がある。これに対して、上記実施例によれば、各インスタンスが必要性の高いイベント入出力ログのみを情報処理装置100に送信するので、ネットワークの通信量を削減でき、ネットワークコストを低減することができる。
また、図示した各部の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各部の分散・統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。例えば、算出部134と、設定部135とを統合して、各インスタンスの閾値を算出しつつ、算出が完了した閾値から順次、対応するインスタンスが配備されるノードに設定するようにしてもよい。
さらに、各部で行われる各種処理機能は、CPU(又はMPU、MCU(Micro Controller Unit)等のマイクロ・コンピュータ)上で、その全部又は任意の一部を実行するようにしても良い。また、各種処理機能は、CPU(又はMPU、MCU等のマイクロ・コンピュータ)で解析実行されるプログラム上、又はワイヤードロジックによるハードウェア上で、その全部又は任意の一部を実行するようにしても良いことは言うまでもない。
ところで、上記の実施例で説明した各種の処理は、予め用意されたプログラムをコンピュータで実行することで実現できる。そこで、以下では、上記の実施例と同様の機能を有するプログラムを実行するコンピュータの一例を説明する。図21は、情報処理プログラムを実行するコンピュータの一例を示す説明図である。
図21に示す情報処理プログラムを実行するコンピュータ200は、インタフェース部211と、RAM212と、ROM(Read Only Memory)213と、プロセッサ214とを有する。インタフェース部211は、ネットワークに接続され、各ノードと各種情報の通信を司る通信インタフェースである。プロセッサ214は、コンピュータ200全体を制御する。
そして、ROM213には、上記実施例と同様の機能を発揮する情報処理プログラムが予め記憶されている。なお、ROM213ではなく、図示せぬドライブで読取可能な記録媒体に情報処理プログラムが記録されていてもよい。また、記録媒体としては、例えば、CD−ROM、DVDディスク、USBメモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリ等でもよい。情報処理プログラムとしては、図21に示すように、配備プログラム213A、更新プログラム213B、収集プログラム213Cおよび指示プログラム213Dである。なお、プログラム213A〜213Dについては、適宜統合または分散してもよい。また、RAM212には、初期値記憶部、フロー記憶部、最適評価値記憶部、次点評価値記憶部、閾値記憶部、配備ログ記憶部およびログ記憶部等が記憶してある。
そして、プロセッサ214が、これらのプログラム213A〜213DをROM213から読み出し、これらの読み出された各プログラムを実行する。そして、プロセッサ214は、図21に示すように、各プログラム213A〜213Dを、配備プロセス214A、更新プロセス214B、収集プロセス214Cおよび指示プロセス214Dとして機能することになる。
プロセッサ214は、各ノードから収集された入出力ログから、データを処理する単位である各インスタンスの処理コストを示すインスタンスごとの評価値を生成し、評価値に基づいて各インスタンスを各ノードに分散配備する。プロセッサ214は、各ノードから収集された入出力ログを用いて、収集済みの入出力ログを更新し、インスタンスの生成または消滅を示す配備情報を収集する。プロセッサ214は、配備情報が収集された場合、または、収集済みの入出力ログが更新された場合に、分散配備する処理に対して評価値の再生成を指示する。その結果、分散配備におけるネットワークコストを低減できる。