以下に添付図面を参照して、本発明にかかる分散配備装置、分散配備方法、および分散配備プログラムの実施の形態を詳細に説明する。
(配備システム100の一例)
図1は、配備システム100の一例を示す説明図である。図1において、配備システム100は、複数のノードNを含むネットワーク110により実現される。ネットワーク110は、例えば、LAN(Local Area Network)、WAN(Wide Area Network)、インターネット、携帯電話網などの通信網である。
ここで、複数のノードNは、他のノードNから特定の演算処理の入力データを収集して、特定の演算処理を実行するノードNを含む。以下の説明では、特定の演算処理を実行するノードNを「収集ノードSN」と表記する場合がある。また、複数のノードNは、特定の演算処理の入力データを生成するノードNを含む。また、複数のノードNは、特定の演算処理の入力データを転送するノードNを含む。
ノードNは、図2に後述するコンピュータ200によって実現される。ノードNは、例えば、ノート型パソコン、デスクトップ型パソコン、携帯電話機、スマートフォン、PHS(Personal Handyphone System)、タブレット型端末などである。収集ノードSNは、例えば、ノート型パソコン、デスクトップ型パソコン、サーバなどである。
配備システム100は、特定の演算処理に含まれる複数の処理のうちのいずれかの処理を分散対象の演算処理として、収集ノードSNとは異なるノードNに割り当てることにより、ネットワーク110内の通信にかかるコストを低減する。ここで、コストとは、通信に用いられるリソースを表すものである。コストとは、例えば、通信距離、通信速度、通信帯域、および使用料金などである。以下の説明では、分散対象の演算処理を「分散処理」と表記する場合がある。
図1の例では、収集ノードSNは、分散配備プログラムを実行することにより、分散配備装置として動作する。まず、収集ノードSNは、ネットワークトポロジーの情報を取得する。ここで、ネットワークトポロジーの情報は、ネットワーク110内のノードN間の接続関係を示す情報、およびノードN間を接続するリンクのコストを示す情報を含む。
(1)収集ノードSNは、ノードN間を接続するリンクのコストに基づいて、分散処理の入力データd1〜d10の各々の入力データを生成するノードNから、収集ノードSNまでの通信経路を特定する。
(2)収集ノードSNは、特定した各々の通信経路上の各ノードNにおける通信経路の収束数を算出する。通信経路の収束数とは、特定した通信経路のうちの当該ノードNが所属する通信経路の数である。次に、収集ノードSNは、分散処理を割り当てるまで、収束数が多いノードNから順にノードNを選択して、選択したノードNに分散処理を割り当てた場合のネットワーク110内の通信にかかるコストを示す評価値を算出する。
そして、収集ノードSNは、選択したノードNより収束数が少なく、かつ、選択したノードNより評価値が小さくなるノードNを探索する。ここで、収集ノードSNは、収束数が同一のノードNがある場合は、収集ノードSNからのリンク数が最大のノードNを選択する。
(3)収集ノードSNは、選択したノードNより収束数が少なく、かつ、選択したノードNより評価値が小さくなるノードNがない場合に、探索を終了する。(4)収集ノードSNは、探索を終了すると、選択したノードNに分散処理を割り当てる。
これにより、収集ノードSNは、ネットワーク110内の通信にかかるコストを低減することができるノードを探索する際にかかる処理負荷や処理時間の増加を抑制することができる。収集ノードSNは、例えば、全解探索により特定の演算処理に含まれる分散処理を割り当てる場合に比べて、分散処理を割り当てる際にかかる処理負荷や処理時間を低減することができる。また、収集ノードSNは、ネットワーク110にノードNが追加されたり、ノード間の接続状況が変化した場合に、接続状況の変化に対応して分散処理を割り当て直す際にかかる処理負荷や処理時間の増加を抑制することができる。
ここでは、収集ノードSNが、分散配備プログラムを実行することにより、分散配備装置として動作したが、これに限らない。例えば、収集ノードSNとは異なるノードNが、分散配備装置として動作してもよい。また、例えば、ノードNとは異なる、ネットワーク110に接続された情報処理装置(不図示)が、分散配備装置として動作してもよい。
(コンピュータ200のハードウェア構成例)
次に、図2を用いて、図1に示したノードNを実現するコンピュータ200のハードウェア構成例について説明する。
図2は、コンピュータ200のハードウェア構成例を示すブロック図である。図2において、コンピュータ200は、CPU201、主記憶装置202、補助記憶装置203、入力装置204、出力装置205、およびI/F206が、バス210に接続されて構成されている。
CPU201は、コンピュータ200の全体の制御を司る。また、CPU201は、主記憶装置202に記憶されているOS(Operating System)や本実施の形態の分散配備プログラムなどの各種プログラムを実行することにより、主記憶装置202または補助記憶装置203内のデータを読み出す。また、CPU201は、主記憶装置202に記憶されているOSや本実施の形態の分散配備プログラムなどの各種プログラムを実行することにより、実行結果となるデータを主記憶装置202または補助記憶装置203に書き込む。
主記憶装置202は、ROM(Read Only Memory)、RAM(Random Access Memory)などで構成され、CPU201のワークエリアになったり、補助記憶装置203から読み出されたブートプログラム、分散配備プログラム、特定の演算処理の実行プログラムなどの各種プログラムを記憶したりする。
また、主記憶装置202は、補助記憶装置203から読み出された、図3に後述するフローテーブル300、図4に後述するトポロジーテーブル400、図5に後述する処理テーブル500などの各種テーブルを記憶したりする。また、主記憶装置202は、各種プログラムの実行により得られたデータを含む各種データを記憶したりする。
補助記憶装置203は、フラッシュメモリ、磁気ディスクドライブなどで構成され、ブートプログラム、分散配備プログラム、特定の演算処理の実行プログラムなどの各種プログラムを記憶したりする。また、補助記憶装置203は、図3に後述するフローテーブル300、図4に後述するトポロジーテーブル400、図5に後述する処理テーブル500などの各種テーブルを記憶したりする。また、補助記憶装置203は、各種プログラムの実行により得られたデータを含む各種データを記憶したりする。
入力装置204は、キーボード、マウス、タッチパネルなどユーザの操作により、各種データの入力を行うインターフェースである。出力装置205は、CPU201の指示により、データを出力するインターフェースである。出力装置205には、ディスプレイやプリンタが挙げられる。I/F206は、ネットワーク110を介して外部からデータを受信したり、外部にデータを送信したりするインターフェースである。
また、コンピュータ200は、センサ(不図示)を有してもよい。センサは、設置箇所における所定の変位量を検出する。センサは、例えば、設置箇所の圧力を検出する圧電素子や、光を検出する光電素子などである。
(フローテーブル300の記憶内容)
次に、図3を用いて、フローテーブル300の記憶内容の一例について説明する。フローテーブル300は、例えば、図2に示した主記憶装置202、および補助記憶装置203などの記憶領域によって実現される。
図3は、フローテーブル300の記憶内容の一例を示す説明図である。図3に示すように、フローテーブル300は、処理項目に対応付けて、次処理項目と、データ量項目と、処理負荷項目と、を有し、処理ごとに各項目に情報が設定されることにより、レコードを記憶する。
処理項目には、特定の演算処理に含まれる処理の名称が記憶される。次処理項目には、処理項目の処理の次に実行される処理の名称が記憶される。データ量項目には、処理項目の処理を実行することにより生成されるデータのデータ量が記憶される。データ量の単位は、例えば、kBである。処理負荷項目には、処理項目の処理を実行する際に、処理を実行するコンピュータ200にかかる負荷が記憶される。
ここで、コンピュータ200にかかる負荷とは、処理項目の処理を実行する際に、単位時間あたりにコンピュータ200にかかる負荷である。コンピュータ200にかかる負荷とは、具体的には、処理項目の処理を実行する際に、単位時間あたりにコンピュータ200が使用するメモリ量である。
例えば、レコード301は、処理の名称「proc1−1」と、次に実行される処理の名称「proc2−1」と、データ量「100」と、処理負荷「10」と、を含むフロー情報を示す。
これにより、分散配備装置は、フローテーブル300に基づいて、特定の演算処理に含まれる複数の処理の実行順序を特定することができる。また、分散配備装置は、フローテーブル300に基づいて、特定の演算処理に含まれる複数の処理の各々の処理のデータ量および処理負荷を特定することができる。
(トポロジーテーブル400の記憶内容)
次に、図4を用いて、トポロジーテーブル400の記憶内容の一例について説明する。トポロジーテーブル400は、例えば、図2に示した主記憶装置202、および補助記憶装置203などの記憶領域によって実現される。
図4は、トポロジーテーブル400の記憶内容の一例を示す説明図である。図4に示すように、トポロジーテーブル400は、ノード項目に対応付けて、接続ノード項目と、コスト項目と、性能項目と、を有し、ノードNごとに各項目に情報が設定されることにより、レコードを記憶する。
ノード項目にはノードNの名称が記憶される。接続ノード項目には、ノード項目のノードNに接続されたノードNの名称が記憶される。コスト項目には、ノード項目のノードNと接続ノード項目のノードNとの間の通信にかかるコストが記憶される。性能項目には、ノード項目のノードNの処理性能を示す値が記憶される。
例えば、レコード401は、ノードNの名称「N1」と、接続されたノードNの名称「N3」と、接続されたノードNとの間の通信にかかるコスト「5」と、処理性能を示す値「100」と、を含むトポロジー情報を示す。また、レコード401は、接続されたノードNの名称「N4」と、接続されたノードNとの間の通信にかかるコスト「20」と、を示す。ここで、処理性能とは、単位時間あたりにコンピュータ200にかかる負荷の上限である。
これにより、分散配備装置は、トポロジーテーブル400に基づいて、ネットワーク110内の各々のノードの処理性能を特定し、分散処理を割り当てるための制約条件を満たすか否かを判定することができる。制約条件とは、例えば、処理性能が分散処理の処理負荷より大きいという条件である。
また、分散配備装置は、トポロジーテーブル400に基づいて、ノード間の接続関係と、ノード間のリンクのコストとを特定し、通信にかかるコストが最小になる経路を特定したり、ネットワーク110内の通信にかかるコストを算出することができる。
(処理テーブル500の記憶内容)
次に、図5を用いて、処理テーブル500の記憶内容の一例について説明する。処理テーブル500は、例えば、図2に示した主記憶装置202、および補助記憶装置203などの記憶領域によって実現される。
図5は、処理テーブル500の記憶内容の一例を示す説明図である。図5に示すように、処理テーブル500は、処理項目に対応付けて、ノード項目を有し、処理ごとに各項目に情報が設定されることにより、レコードを記憶する。
処理項目には、処理の名称が記憶される。ノード項目には、処理項目の処理を実行するノードNの名称が記憶される。例えば、レコード501は、データを生成する処理の名称「data1」と、データを生成する処理を実行するノードNの名称「N1」と、を含む処理情報を示す。
これにより、分散配備装置は、処理テーブル500に基づいて、実行するノードが固定されているために、分散処理にならない処理を特定することができる。また、分散配備装置は、処理テーブル500に基づいて、分散処理にならない処理を実行するノードNを特定することができる。
(分散配備装置600の機能的構成例)
次に、図6を用いて、分散配備装置600の機能的構成例について説明する。
図6は、分散配備装置600の機能的構成例を示すブロック図である。分散配備装置600は、制御部になる機能として、第1の決定部601と、特定部602と、第2の決定部603と、算出部604と、判定部605と、探索部606と、を含む。第1の決定部と、特定部602と、第2の決定部603と、算出部604と、判定部605と、探索部606とは、例えば、図2に示した主記憶装置202、および補助記憶装置203などの記憶装置に記憶されたプログラムをCPU201に実行させることにより、または、I/F206により、その機能を実現する。
第1の決定部601は、実行するノードNが固定されていない分散処理を、収集ノードSNとは異なるノードNに割り当てることによるネットワーク110内の通信にかかるコストの軽減効果が高い処理から順にソートする。第1の決定部601は、例えば、実行するノードNが固定されていない分散処理について、入力データのデータ量に対する出力データのデータ量の割合を算出し、算出した割合が小さい順にソートする。そして、第1の決定部601は、ソートした処理を、さらに、実行順序に従ってソートし、実行順序が早く、かつコストの軽減効果が高い順に、分散処理を割当対象に決定する。分散配備装置600が分散処理を割当対象に決定する一例については、後述する。
特定部602は、ネットワーク110内のノードN間の通信にかかるコストに基づいて、分散処理の入力データを生成する各ノードNから、分散処理の入力データを収集する特定のノードNまでの通信経路をそれぞれ特定する。ここで、特定のノードNとは、例えば、収集ノードSNである。特定部602は、例えば、入力データを生成する各ノードNから収集ノードSNまでの各ノードN間の通信にかかるコストの合計値が最小になる通信経路をそれぞれ特定する。
特定部602は、具体的には、ダイクストラ法を用いて、各ノードNから収集ノードSNまでの各ノードN間の通信にかかるコストの合計値が最小になる通信経路をそれぞれ特定する。次に、特定部602は、フローテーブル300に基づいて、入力データを生成するノードNを特定する。そして、特定部602は、特定した通信経路の中から、特定した入力データを生成するノードNから収集ノードSNまでの各ノードN間の通信にかかるコストの合計値が最小になる通信経路を取得する。分散配備装置600がコストの合計値が最小になる通信経路を特定する一例については、図12を用いて後述する。
これにより、探索部606は、特定した通信経路に基づいて、ネットワーク110に含まれるノードNの中から、特定の演算処理に含まれる分散処理を割り当てる候補になるノードNのグループを取得することができる。特定結果は、例えば、主記憶装置202、および補助記憶装置203などの記憶領域に記憶される。
第2の決定部603は、特定した通信経路上のノードNの中から、送信または受信される入力データのデータ数またはデータ量が多い順に、探索順序を決定する。これにより、探索部606は、探索順序を取得することができる。ここで、送信または受信される入力データのデータ数とは、例えば、ノードNにおける通信経路の収束数である。
第2の決定部603は、データ数またはデータ量が同一の複数のノードNがある場合、複数のノードNをグループ化して、探索順序を決定してもよい。分散配備装置600が探索順序を決定する一例については、図13および図14を用いて後述する。決定結果は、例えば、主記憶装置202、および補助記憶装置203などの記憶領域に記憶される。
算出部604は、ノードNに割当対象の分散処理を割り当てた際にネットワーク110内の通信にかかるコストを算出する。分散配備装置600がコストを算出する一例については、図13および図14を用いて後述する。これにより、探索部606は、算出部604によって算出されたコストに基づいて、ノードNを探索することができる。算出結果は、例えば、主記憶装置202、および補助記憶装置203などの記憶領域に記憶される。
判定部605は、ノードNが、分散処理の割当条件を満たすか否かを判定する。ここで、割当条件とは、ノードNに分散処理を割当可能であるか否かを判定する基準となる条件である。割当条件とは、例えば、上述した制約条件である。また、割当条件とは、例えば、ノードNに割当可能な処理の数が決まっている場合は、割当可能な数以下であるという条件であってもよい。分散配備装置600が割当条件を満たすか否かを判定する一例については、図13および図14を用いて後述する。判定結果は、例えば、主記憶装置202、および補助記憶装置203などの記憶領域に記憶される。
探索部606は、収集ノードSNを起点にして、特定した通信経路上のノードNの中から、送信または受信される入力データのデータ数が減少し、かつ、分散処理を割り当てた際にネットワーク110内の通信にかかるコストが減少するノードNを順次探索する。探索部606は、例えば、特定した通信経路上のノードNの中から、データ数が多い順に、ネットワーク110内の通信にかかるコストが減少しなくなるまで、データ数が減少し、かつネットワーク110内の通信にかかるコストが減少するノードNを順次探索する。
探索部606は、具体的には、収集ノードSNに割当対象の分散処理を割り当てた際にネットワーク110内の通信にかかるコストを算出する要求を算出部604に入力し、算出されたコストを算出部604から取得する。次に、探索部606は、第2の決定部603によって決定されたデータ数が多い順の探索順序に従って、ノードNを順次選択し、選択したノードNに割当対象の分散処理を割り当てた際にネットワーク110内の通信にかかるコストを算出する要求を算出部604に入力し、算出されたコストを算出部604から取得する。そして、探索部606は、選択したノードNについて算出部604によって算出されたコストが、他のノードNについて算出部604によって算出済みのコストよりも減少する場合、選択したノードNを、探索したノードNに決定する。
また、探索部606は、収集ノードSNを起点にして、通信経路上のノードNの中から、送信または受信される入力データのデータ量が減少し、かつ、分散処理を割り当てた際にネットワーク110内の通信にかかるコストが減少するノードNを順次探索してもよい。探索部606は、例えば、通信経路上のノードNの中から、データ量が多い順に、ネットワーク110内の通信にかかるコストが減少しなくなるまで、データ量が減少し、かつ、ネットワーク110内の通信にかかるコストが減少するノードNを順次探索する。
探索部606は、具体的には、収集ノードSNに割当対象の分散処理を割り当てた際にネットワーク110内の通信にかかるコストを算出する要求を算出部604に入力し、算出されたコストを算出部604から取得する。次に、探索部606は、第2の決定部603によって決定されたデータ量が多い順の探索順序に従って、ノードNを順次選択し、選択したノードNに割当対象の分散処理を割り当てた際にネットワーク110内の通信にかかるコストを算出する要求を算出部604に入力し、算出されたコストを算出部604から取得する。そして、探索部606は、選択したノードNについて算出部604によって算出されたコストが、他のノードNについて算出部604によって算出済みのコストよりも減少する場合、選択したノードNを、探索したノードNに決定する。
また、データ数またはデータ量については、収集ノードSNからのリンク数で重み付けした値を用いてもよい。これにより、データの削減効果の高い処理の配備先について、収集ノードSNから遠い、すなわち、入力データを生成するノード付近を探索することが可能となり、評価値の改善が見込める様になる。重み付けの方法としては、例えば、リンク数とデータ数またはデータ量の乗算などがある。
また、データ数またはデータ量が同一である複数のノードNが存在するときがある。このとき、探索部606は、複数のノードNの中から、収集ノードSNからのリンク数が最大になり、かつ、ネットワーク110内の通信にかかるコストが減少するノードNを探索してもよい。探索部606は、具体的には、第2の決定部603によってグループ化された複数のノードNのうちで、収集ノードSNからのリンク数が最大になるノードNを選択し、選択したノードNに割当対象の分散処理を割り当てた際にネットワーク110内の通信にかかるコストを算出する要求を算出部604に入力し、算出されたコストを算出部604から取得する。そして、探索部606は、選択したノードNについて算出部604によって算出されたコストが、他のノードNについて算出部604によって算出済みのコストよりも減少する場合、選択したノードNを、探索したノードNに決定する。
さらに、探索部606は、コストが減少しない場合、収集ノードSNからのリンク数が次に大きくなるノードNを選択し、選択したノードNに割当対象の分散処理を割り当てた際にネットワーク110内の通信にかかるコストを算出する要求を算出部604に入力し、算出されたコストを算出部604から取得してもよい。そして、探索部606は、選択したノードNについて算出部604によって算出されたコストが、他のノードNについて算出部604によって算出済みのコストよりも減少する場合、選択したノードNを、探索したノードNに決定する。
また、このとき、探索部606は、複数のノードNのうちで分散処理の割当条件を満たすノードNの中から、収集ノードSNからのリンク数が最大になり、かつ、ネットワーク110内の通信にかかるコストが減少するノードNを探索してもよい。探索部606は、具体的には、複数のノードNの各々のノードNが割当条件を満たすか否かを判定する要求を判定部605に入力し、判定結果を判定部605から取得する。次に、探索部606は、判定結果に基づいて、複数のノードNのうちで分散処理の割当条件を満たすノードNを特定する。そして、探索部606は、特定したノードNのうちで、収集ノードSNからのリンク数が最大になるノードNを選択し、選択したノードNに割当対象の分散処理を割り当てた際にネットワーク110内の通信にかかるコストを算出する要求を算出部604に入力し、算出されたコストを算出部604から取得する。次に、探索部606は、選択したノードNについて算出部604によって算出されたコストが、他のノードNについて算出部604によって算出済みのコストよりも減少する場合、選択したノードNを、探索したノードNに決定する。
さらに、探索部606は、コストが減少しない場合、収集ノードSNからのリンク数が次に大きくなるノードNを選択し、選択したノードNに割当対象の分散処理を割り当てた際にネットワーク110内の通信にかかるコストを算出する要求を算出部604に入力し、算出されたコストを算出部604から取得してもよい。そして、探索部606は、選択したノードNについて算出部604によって算出されたコストが、他のノードNについて算出部604によって算出済みのコストよりも減少する場合、選択したノードNを、探索したノードNに決定する。
また、データ数またはデータ量が同一である複数のノードNのすべてが割当条件を満たさないときがある。このとき、探索部606は、ネットワーク110に含まれる割当条件を満たすノードNの中から、複数のノードNのうちで収集ノードSNからのリンク数が最大になるノードNから所定のリンク数以内に存在し、かつコストが減少するノードNを探索してもよい。探索部606は、具体的には、複数のノードNのすべてが割当条件を満たさない場合、複数のノードNのうちで収集ノードSNからのリンク数が最大になるノードNから所定のリンク数以内に存在するノードNが割当条件を満たすか否かを判定する要求を判定部605に入力し、判定結果を判定部605から取得する。次に、探索部606は、判定結果に基づいて、所定のリンク数以内に存在するノードNのうちで分散処理の割当条件を満たすノードNを特定する。そして、探索部606は、特定したノードNのうちで、収集ノードSNからのリンク数が最大になるノードNを選択し、選択したノードNに割当対象の分散処理を割り当てた際にネットワーク110内の通信にかかるコストを算出する要求を算出部604に入力し、算出されたコストを算出部604から取得する。次に、探索部606は、選択したノードNについて算出部604によって算出されたコストが、他のノードNについて算出部604によって算出済みのコストよりも減少する場合、選択したノードNを、探索したノードNに決定する。
さらに、探索部606は、コストが減少しない場合、収集ノードSNからのリンク数が次に大きくなるノードNを選択し、選択したノードNに割当対象の分散処理を割り当てた際にネットワーク110内の通信にかかるコストを算出する要求を算出部604に入力し、算出されたコストを算出部604から取得してもよい。そして、探索部606は、選択したノードNについて算出部604によって算出されたコストが、他のノードNについて算出部604によって算出済みのコストよりも減少する場合、選択したノードNを、探索したノードNに決定する。
また、データ数またはデータ量が同一である複数のノードN、および複数のノードNのうちで収集ノードSNからのリンク数が最大になるノードNから所定のリンク数以内に存在するノードNの中から、ノードNを探索できないときがある。このとき、探索部606は、データ数またはデータ量が同一である複数のノードNよりデータ量が減少し、かつ、ネットワーク110内の通信にかかるコストが減少するノードNを探索してもよい。
探索部606は、具体的には、複数のノードNの中からコストが減少するノードNを検索できなかった場合、探索順序に従って、複数のノードNよりデータ数またはデータ量が減少するノードNを選択する。そして、探索部606は、選択したノードNに割当対象の分散処理を割り当てた際にネットワーク110内の通信にかかるコストを算出する要求を算出部604に入力し、算出されたコストを算出部604から取得する。次に、探索部606は、選択したノードNについて算出部604によって算出されたコストが、他のノードNについて算出部604によって算出済みのコストよりも減少する場合、選択したノードNを、探索したノードNに決定する。分散配備装置600がノードNを探索する一例については、図13および図14を用いて後述する。
これにより、探索部606は、分散処理を割り当てた際にネットワーク110内の通信にかかるコストが減少するノードNを順次探索することができる。探索結果は、例えば、主記憶装置202、および補助記憶装置203などの記憶領域に記憶される。
探索部606は、探索したノードNの中から分散処理を割り当てるノードNを決定する。探索部606は、例えば、最後に探索したノードNを、分散処理を割り当てるノードNに決定する。これにより、探索部606は、探索したノードNに分散処理を割り当てて、ネットワーク110内の通信にかかるコストを低減することができる。決定結果は、例えば、主記憶装置202、および補助記憶装置203などの記憶領域に記憶される。
(実施例1)
ここで、実施例1について説明する。実施例1は、入力データの数に基づいてノードNを探索する場合の一例である。
〈特定の演算処理700の一例〉
まず、図7を用いて、実施例1における特定の演算処理700の一例について説明する。
図7は、特定の演算処理700の一例を示す説明図である。特定の演算処理700は、複数の処理を含む。図7の例では、特定の演算処理700は、処理701〜707を含む。
処理701は、処理の名称が「入力データ1」になる処理であって、データを生成して出力する処理である。処理701の出力データは、処理702の入力データになる。処理702は、処理の名称が「フィルタリング1」になる処理であって、処理701によって生成されたデータを加工して出力する処理である。処理702の出力データは、処理705の入力データになる。
処理703は、処理の名称が「入力データ2」になる処理であって、データを生成して出力する処理である。処理703の出力データは、処理704の入力データになる。処理704は、処理の名称が「フィルタリング2」になる処理であって、処理703によって生成されたデータを加工して出力する処理である。処理704の出力データは、処理705の入力データになる。
処理705は、処理の名称が「平均」になる処理であって、処理702によって加工されたデータと、処理704によって加工されたデータとの平均データを算出して出力する処理である。処理705の出力データは、処理706の入力データになる。
処理706は、処理の名称が「アラート判定」になる処理であって、処理705によって算出された平均データに基づいてアラートを出力するか否かを判定して判定結果を出力する処理である。処理706の出力データは、処理707の入力データになる。処理707は、処理の名称が「蓄積」になる処理であって、処理706によって判定された判定結果を蓄積する処理である。
以下の説明では、分散配備装置600が、図7に示した特定の演算処理700に含まれる分散処理をノードNに割り当てる場合について説明する。
〈ネットワークトポロジーの一例〉
次に、図8を用いて、実施例1におけるネットワークトポロジーの一例について説明する。
図8は、ネットワークトポロジーの一例を示す説明図である。図8において、ネットワーク110は、複数のノードNを含む。以下の説明では、各々のノードNを、ノード番号nを付与して区別して、「ノードNn」と表記する場合がある。
図8の例では、ネットワーク110は、ノードN1〜N11を含む。ここで、ノードN1は、リンクによりノードN3と接続されている。ノードN1とノードN3の間のリンクのコストは、5である。また、ノードN1は、リンクによりノードN4と接続されている。ノードN1とノードN4との間のリンクのコストは、20である。
ノードN2は、リンクによりノードN5と接続されている。ノードN2とノードN5との間のリンクのコストは、30である。ノードN3は、リンクによりノードN8と接続されている。ノードN3とノードN8との間のリンクのコストは、50である。ノードN4は、リンクによりノードN6と接続されている。ノードN4とノードN6との間のリンクのコストは、10である。ノードN4は、リンクによりノードN7と接続されている。ノードN4とノードN7との間のリンクのコストは、10である。
ノードN5は、リンクによりノードN7と接続されている。ノードN5とノードN7との間のリンクのコストは、15である。ノードN5は、リンクによりノードN10と接続されている。ノードN5とノードN10との間のリンクのコストは、30である。ノードN6は、リンクによりノードN8と接続されている。ノードN6とノードN8との間のリンクのコストは、20である。ノードN7は、リンクによりノードN9と接続されている。ノードN7とノードN9との間のリンクのコストは、20である。
ノードN8は、リンクによりノードN11と接続されている。ノードN8とノードN11との間のリンクのコストは、15である。ノードN9は、リンクによりノードN11と接続されている。ノードN9とノードN11との間のリンクのコストは、10である。ノードN10は、リンクによりノードN9と接続されている。ノードN10とノードN9との間のリンクのコストは、10である。ノードN11は、収集ノードSNである。図8の例では、リンクのコストは、リンクの距離を表す値である。
〈フローテーブル300の一例〉
次に、図9を用いて、実施例1におけるフローテーブル300の一例について説明する。
図9は、フローテーブル300の一例を示す説明図である。図9の例では、フローテーブル300は、図7に示した特定の演算処理700に含まれる複数の処理の各々の処理についてのレコードを有する。例えば、レコード901は、処理の名称「フィルタリング1」と、次に実行される処理の名称「平均」と、データ量「100」と、処理負荷「20」と、を含むフロー情報を示す。
〈トポロジーテーブル400の一例〉
次に、図10を用いて、実施例1におけるトポロジーテーブル400の一例について説明する。
図10は、トポロジーテーブル400の一例を示す説明図である。図10の例では、トポロジーテーブル400は、図8に示したネットワーク110に含まれる各々のノードNについてのレコードを有する。例えば、レコード1001は、ノードNの名称「N1」と、接続されたノードNの名称「N3」およびリンクのコスト「5」と、接続されたノードNの名称「N4」およびリンクのコスト「20」と、処理性能「100」と、を含むトポロジー情報を示す。
〈処理テーブル500の一例〉
次に、図11を用いて、実施例1における処理テーブル500の一例について説明する。
図11は、処理テーブル500の一例を示す説明図である。図11の例では、図7に示した特定の演算処理700に含まれる複数の処理のうち、実行するノードNが固定されている処理についてのレコードを有する。レコード1101は、処理の名称「入力データ1」と、ノードNの名称「N1」と、を含む処理情報を示す。
以下の説明では、実施例1において、分散配備装置600が、図9〜図11に示した各種テーブルを用いて、特定の演算処理700に含まれる分散処理をノードNに割り当てる場合の具体的な内容について説明する。
〈割当順序を特定する一例〉
まず、実施例1における分散配備装置600が特定の演算処理700に含まれる複数の処理のうちの分散処理を特定し、分散処理の割当順序を特定する一例について説明する。
分散配備装置600は、フローテーブル300と処理テーブル500とに基づいて、特定の演算処理700に含まれる複数の処理のうち、実行するノードNが固定されていない分散処理を特定して、特定した分散処理の割当順序を特定する。
分散配備装置600は、例えば、「フィルタリング1」の処理702、「フィルタリング2」の処理704、「平均」の処理705、および「アラート判定」の処理706を分散処理として特定し、割当順序を特定する。
分散配備装置600は、具体的には、フローテーブル300に基づいて、「フィルタリング1」の処理702について、入力データのデータ量に対する出力データのデータ量の割合を算出する。ここで、分散配備装置600は、直前に実行される「入力データ1」の処理701のデータ量「200」に対する「フィルタリング1」の処理702のデータ量「100」の割合「0.5」を算出する。
分散配備装置600は、同様に、「フィルタリング2」の処理704について、入力データのデータ量「160」に対する出力データのデータ量「80」の割合「0.5」を算出する。また、分散配備装置600は、同様に、「平均」の処理705について、入力データのデータ量「100+80」に対する出力データのデータ量「54」の割合「0.3」を算出する。また、分散配備装置600は、同様に、「アラート判定」の処理706について、入力データのデータ量「54」に対する出力データのデータ量「21.6」の割合「0.4」を算出する。
次に、分散配備装置600は、実行するノードNが固定されていない分散処理を、収集ノードSNとは異なるノードNに割り当てることによるネットワーク110内の通信にかかるコストの軽減効果が高い処理から順にソートする。分散配備装置600は、例えば、実行するノードNが固定されていない分散処理を、算出した割合が小さい順にソートする。分散配備装置600は、具体的には、「平均」→「アラート判定」→「フィルタリング1」→「フィルタリング2」の順番にソートする。
そして、分散配備装置600は、ソートした処理を、さらに、特定の演算処理700に含まれる複数の処理の実行順序に従ってソートする。分散配備装置600は、例えば、「平均」の処理の前に実行される「フィルタリング1」の処理が「平均」の処理の前になるようにソートする。分散配備装置600は、具体的には、「フィルタリング1」→「フィルタリング2」→「平均」→「アラート判定」の順番にソートする。
〈最短経路を特定する一例〉
次に、図12を用いて、実施例1における最短経路を特定する一例について説明する。
図12は、最短経路を特定する一例を示す説明図である。図12において、分散配備装置600は、例えば、ダイクストラ法を用いて、収集ノードSNから各々のノードNまでの最短経路を特定する。
図12の例では、説明の簡略化のため、分散配備装置600が、ネットワーク110のうちの一部のノードNについて最短経路を特定する場合について説明する。
具体的には、図12(A)において、分散配備装置600は、収集ノードSNになるノードN11に対応付けてコスト「0」を記憶し、他のノードNに対応付けてコスト「∞」と経路「なし」とを記憶する。
図12(B)において、分散配備装置600は、ノードN11から、ノードN11に接続されたノードN9までの経路「ノードN11→ノードN9」を特定し、特定した経路を介した通信にかかるコスト「10」を特定する。次に、分散配備装置600は、特定したコスト「10」とノードN9に対応付けて記憶されたコスト「∞」とを比較する。
ここで、分散配備装置600は、記憶したコストより特定したコストの方が小さいため、記憶した経路「なし」より特定した経路「ノードN11→ノードN9」の方が短い経路であると判定する。このため、分散配備装置600は、ノードN9に対応付けて記憶したコスト「∞」と経路「なし」とを、特定したコスト「10」と経路「ノードN11→ノードN9」とに更新する。
図12(C)において、分散配備装置600は、ノードN11から、コストと経路とを更新したノードN9に接続されたノードN7までの経路「ノードN11→ノードN9→ノードN7」を特定し、特定した経路を介した通信にかかるコスト「30」を特定する。次に、分散配備装置600は、特定したコスト「30」とノードN7に対応付けて記憶されたコスト「∞」とを比較する。
ここで、分散配備装置600は、記憶したコストより特定したコストの方が小さいため、記憶した経路「なし」より特定した経路「ノードN11→ノードN9→ノードN7」の方が短い経路であると判定する。このため、分散配備装置600は、ノードN7に対応付けて記憶したコスト「∞」と経路「なし」とを、特定したコスト「30」と経路「ノードN11→ノードN9→ノードN7」とに更新する。
また、分散配備装置600は、ノードN11から、コストと経路とを更新したノードN9に接続されたノードN10までの経路「ノードN11→ノードN9→ノードN10」を特定し、特定した経路を介した通信にかかるコスト「20」を特定する。次に、分散配備装置600は、特定したコスト「20」とノードN10に対応付けて記憶されたコスト「∞」とを比較する。
ここで、分散配備装置600は、記憶したコストより特定したコストの方が小さいため、記憶した経路「なし」より特定した経路「ノードN11→ノードN9→ノードN10」の方が短い経路であると判定する。このため、分散配備装置600は、ノードN10に対応付けて記憶したコスト「∞」と経路「なし」とを、特定したコスト「20」と経路「ノードN11→ノードN9→ノードN10」とに更新する。
図12(D)において、分散配備装置600は、ノードN11から、コストと経路とを更新したノードN10に接続されたノードN5までの経路「ノードN11→ノードN9→ノードN10→ノードN5」を特定する。次に、分散配備装置600は、特定した経路を介した通信にかかるコスト「50」を特定する。そして、分散配備装置600は、特定したコスト「50」とノードN5に対応付けて記憶されたコスト「∞」とを比較する。
ここで、分散配備装置600は、記憶したコストより特定したコストの方が小さいため、記憶した経路「なし」より特定した経路「ノードN11→ノードN9→ノードN10→ノードN5」の方が短い経路であると判定する。このため、分散配備装置600は、ノードN5に対応付けて記憶したコスト「∞」と経路「なし」とを、特定したコスト「50」と経路「ノードN11→ノードN9→ノードN10→ノードN5」とに更新する。
図12(E)において、分散配備装置600は、ノードN11から、コストと経路とを更新したノードN7に接続されたノードN5までの経路「ノードN11→ノードN9→ノードN7→ノードN5」を特定する。次に、分散配備装置600は、特定した経路を介した通信にかかるコスト「45」を特定する。そして、分散配備装置600は、特定したコスト「45」とノードN5に対応付けて記憶されたコスト「50」とを比較する。
図12(F)において、分散配備装置600は、記憶したコストより特定したコストの方が小さいため、記憶した経路より特定した経路「ノードN11→ノードN9→ノードN7→ノードN5」の方が短い経路であると判定する。このため、分散配備装置600は、ノードN5に対応付けて記憶したコスト「50」と経路「ノードN11→ノードN9→ノードN10→ノードN5」とを、特定したコスト「45」と経路「ノードN11→ノードN9→ノードN7→ノードN5」とに更新する。
また、分散配備装置600は、同様にして、図示を省略した他のノードNについても、経路を特定し、ノードNと対応付けて、コストと経路とを記憶する。
〈実施例1における分散処理を割り当てる一例〉
次に、図13および図14を用いて、実施例1における分散処理を割り当てる一例について説明する。
図13および図14は、実施例1における分散処理を割り当てる一例を示す説明図である。図13において、分散配備装置600は、「フィルタリング1」の処理702をいずれかのノードNに割り当てる。ここで、初期状態では、実行するノードNが固定されていない処理702〜706は、収集ノードSNになるノードN11に割り当てられているとする。
分散配備装置600は、例えば、フローテーブル300に基づいて、「フィルタリング1」の処理702の入力データを生成する「入力データ1」の処理701を実行するノードN1を特定する。次に、分散配備装置600は、図12においてノードN1に対応付けて記憶した経路「ノードN11→ノードN9→ノードN7→ノードN4→ノードN1」を、ノードN11からノードN1までの最短経路として取得する。
そして、分散配備装置600は、最短経路上のノードNを、取得した最短経路の収束数によってグループ化して、収束数が多い順にソートする。分散配備装置600は、例えば、最短経路上のノードN11、ノードN9、ノードN7、ノードN4、およびノードN1における最短経路の収束数が「1」であるため、「グループG1[ノードN11、ノードN9、ノードN7、ノードN4、ノードN1]」として記憶する。
次に、分散配備装置600は、グループG1の中で、収集ノードSNになるノードN11からのリンク数が多い順にソートする。分散配備装置600は、例えば、「グループG1[ノードN11、ノードN9、ノードN7、ノードN4、ノードN1]」を、「グループG1[ノードN1、ノードN4、ノードN7、ノードN9、ノードN11]」に更新する。ここで、グループをソートした結果が、ノードNの探索順序になる。
分散配備装置600は、処理を割り当てるノードNを決定するまで、取得した最短経路の収束数が多いグループから、順次、グループを取得する。分散配備装置600は、グループを取得する都度、取得したノードNが制約条件を満たすと判定するまで、グループの中でノードN11からのリンク数が多いノードNから、順次、ノードNを取得する。
分散配備装置600は、例えば、グループG1[ノードN1、ノードN4、ノードN7、ノードN9、ノードN11]を取得し、グループG1の中からノードN1を取得する。次に、分散配備装置600は、フローテーブル300とトポロジーテーブル400とに基づいて、取得したノードN1が、「フィルタリング1」の処理702を割り当てられた場合に、制約条件を満たすか否かを判定する。ここで、制約条件とは、例えば、ノードNに割り当てられた処理の処理負荷がノードNの処理性能以下であるという条件である。
分散配備装置600は、「フィルタリング1」の処理702の処理負荷「20」が、取得したノードN1の処理性能「100」以下であるため、ノードN1が制約条件を満たすと判定する。ここで、分散配備装置600は、ノードN1が制約条件を満たさないと判定した場合、グループG1の中で、ノードN1の次にリンク数が多いノードNから、順次、取得し、制約条件を満たすか否かを判定する。
また、分散配備装置600は、初期状態で処理702,704〜707が割り当てられたノードN11が、制約条件を満たすか否かを判定する。分散配備装置600は、処理702,704〜707の処理負荷「20+20+30+50+10」が、ノードN11の処理性能「∞」以下であるため、ノードN11が制約条件を満たすと判定する。
次に、分散配備装置600は、フローテーブル300とトポロジーテーブル400とに基づいて、「フィルタリング1」の処理702をノードN1に割り当てた場合のネットワーク110内の通信にかかるコストを表す評価値を算出する。ネットワーク110内の通信にかかるコストは、例えば、各々のリンクを通過するデータ量に、当該リンクのコストを乗じた値の合計値である。
分散配備装置600は、具体的には、「入力データ1」の処理701の出力データのデータ量「200」に、「入力データ1」の処理701を実行するノードN1から「フィルタリング1」の処理702が割り当てられたノードN1までのコスト「0」を乗算する。
また、分散配備装置600は、「フィルタリング1」の処理702の出力データのデータ量「100」に、「フィルタリング1」の処理702を実行するノードN1から「平均」の処理705が割り当てられたノードN11までのコスト「60」を乗算する。
また、分散配備装置600は、入力データd2のデータ量「160」に、「入力データ2」の処理703を実行するノードN2から「フィルタリング2」の処理704が割り当てられたノードN11までのコスト「75」を乗算する。次に、分散配備装置600は、乗算した値の合計値「18000」を算出し、ノードN1に対応付けて記憶する。
また、分散配備装置600は、フローテーブル300とトポロジーテーブル400とに基づいて、「フィルタリング1」の処理702をノードN11に割り当てた場合のネットワーク110内の通信にかかるコストを表す評価値を算出する。
分散配備装置600は、具体的には、入力データd1のデータ量「200」に、「入力データ1」の処理701を実行するノードN1から「フィルタリング1」の処理702が割り当てられたノードN11までのコスト「60」を乗算する。
また、分散配備装置600は、入力データd2のデータ量「160」に、「入力データ2」の処理702を実行するノードN2から「フィルタリング2」の処理704が割り当てられたノードN11までのコスト「75」を乗算する。次に、分散配備装置600は、乗算した値の合計値「24000」を算出し、ノードN11に対応付けて記憶する。
そして、分散配備装置600は、「フィルタリング1」の処理702をノードN11に割り当てた場合と、ノードN1に割り当てた場合との評価値を比較する。ここで、分散配備装置600は、ノードN1に割り当てた場合の方が評価値が小さくなるため、「フィルタリング1」の処理702をノードN1に割り当てる。そして、分散配備装置600は、ノードN1より最短経路の収束数が少ないノードNのグループがないため、「フィルタリング1」の処理702をいずれかのノードNに割り当てる処理を終了する。
次に、分散配備装置600は、「フィルタリング2」の処理704をいずれかのノードNに割り当てる。分散配備装置600は、例えば、「フィルタリング1」の処理702を割り当てる場合と同様にして、「フィルタリング2」の処理704を、ノードN2に割り当てる。そして、分散配備装置600は、ノードN2より最短経路の収束数が少ないノードNのグループがないため、「フィルタリング2」の処理704をいずれかのノードNに割り当てる処理を終了する。
図14において、分散配備装置600は、「平均」の処理705をいずれかのノードNに割り当てる。分散配備装置600は、「平均」の処理705の入力データを生成する「フィルタリング1」の処理702を割り当てたノードN1を特定する。次に、分散配備装置600は、図12においてノードN1に対応付けて記憶した経路「ノードN11→ノードN9→ノードN7→ノードN4→ノードN1」を、ノードN11からノードN1までの最短経路として取得する。
また、分散配備装置600は、「平均」の処理705の入力データを生成する「フィルタリング2」の処理704を割り当てたノードN2を特定する。次に、分散配備装置600は、図12においてノードN2に対応付けて記憶した経路「ノードN11→ノードN9→ノードN7→ノードN5→ノードN2」を、ノードN11からノードN2までの最短経路として取得する。
そして、分散配備装置600は、最短経路上のノードNを、取得した最短経路の収束数によってグループ化して、収束数が多い順にソートする。分散配備装置600は、例えば、最短経路上のノードN11、ノードN9、およびノードN7における最短経路の収束数が「2」であるため、グループ化する。また、分散配備装置600は、最短経路上のノードN4、ノードN1、ノードN5、およびノードN2における最短経路の収束数が「1」であるため、グループ化する。そして、分散配備装置600は、「グループG2[ノードN11、ノードN9、ノードN7]、グループG3[ノードN4、ノードN1、ノードN5、ノードN2]」として記憶する。
次に、分散配備装置600は、グループの中で、収集ノードSNになるノードN11からのリンク数が多い順にソートする。分散配備装置600は、例えば、「グループG2[ノードN11、ノードN9、ノードN7]、グループG3[ノードN4、ノードN1、ノードN5、ノードN2]」を、「グループG2[ノードN7、ノードN9、ノードN11]、グループG3[ノードN1、ノードN2、ノードN4、ノードN5]」に更新する。ここで、グループをソートした結果が、ノードNの探索順序になる。
分散配備装置600は、処理を割り当てるノードNを決定するまで、取得した最短経路の収束数が多いグループから、順次、グループを取得する。分散配備装置600は、グループを取得する都度、取得したノードNが制約条件を満たすと判定するまで、グループの中でノードN11からのリンク数が多いノードNから、順次、ノードNを取得する。
分散配備装置600は、例えば、グループG2[ノードN7、ノードN9、ノードN11]を取得し、グループG2の中からノードN7を取得する。次に、分散配備装置600は、フローテーブル300とトポロジーテーブル400とに基づいて、取得したノードN7が、「平均」の処理705を割り当てられた場合に、制約条件を満たすか否かを判定する。
分散配備装置600は、「平均」の処理705の処理負荷「30」が、取得したノードN7の処理性能「50」以下であるため、ノードN7が制約条件を満たすと判定する。また、分散配備装置600は、処理705〜707が割り当てられたノードN11が、制約条件を満たすか否かを判定する。分散配備装置600は、処理705〜707の処理負荷「30+50+10」が、ノードN11の処理性能「∞」以下であるため、ノードN11が制約条件を満たすと判定する。
次に、分散配備装置600は、フローテーブル300とトポロジーテーブル400とに基づいて、「平均」の処理705をノードN7に割り当てた場合のネットワーク110内の通信にかかるコストを表す評価値を算出する。分散配備装置600は、具体的には、入力データd1のデータ量「200」に、「入力データ1」の処理701を実行するノードN1から「フィルタリング1」の処理702が割り当てられたノードN1までのコスト「0」を乗算する。
また、分散配備装置600は、「フィルタリング1」の処理702の出力データのデータ量「100」に、「フィルタリング1」の処理702を実行するノードN1から「平均」の処理705が割り当てられたノードN7までのコスト「30」を乗算する。
また、分散配備装置600は、入力データd2のデータ量「160」に、「入力データ2」の処理703を実行するノードN2から「フィルタリング2」の処理704が割り当てられたノードN2までのコスト「0」を乗算する。
また、分散配備装置600は、「フィルタリング2」の処理704の出力データのデータ量「80」に、「フィルタリング2」の処理704を実行するノードN2から「平均」の処理705が割り当てられたノードN7までのコスト「45」を乗算する。
また、分散配備装置600は、「平均」の処理705の出力データのデータ量「54」に、「平均」の処理705を実行するノードN7から「アラート判定」の処理706が割り当てられたノードN11までのコスト「30」を乗算する。次に、分散配備装置600は、乗算した値の合計値「8220」を算出し、ノードN7に対応付けて記憶する。
また、分散配備装置600は、フローテーブル300とトポロジーテーブル400とに基づいて、「平均」の処理705をノードN11に割り当てた場合のネットワーク110内の通信にかかるコストを表す評価値を算出する。
分散配備装置600は、具体的には、「フィルタリング1」の処理702の出力データのデータ量「100」に、「フィルタリング1」の処理702を実行するノードN1から「平均」の処理705が割り当てられたノードN11までのコスト「60」を乗算する。
また、分散配備装置600は、「フィルタリング2」の処理704の出力データのデータ量「80」に、「フィルタリング2」の処理704を実行するノードN2から「平均」の処理705が割り当てられたノードN11までのコスト「75」を乗算する。次に、分散配備装置600は、乗算した値の合計値「12000」を算出し、ノードN11に対応付けて記憶する。
そして、分散配備装置600は、「平均」の処理705をノードN11に割り当てた場合と、ノードN7に割り当てた場合との評価値を比較する。ここで、分散配備装置600は、ノードN7に割り当てた場合の方が評価値が小さくなるため、「平均」の処理705をノードN7に割り当てる。
次に、分散配備装置600は、ノードN7より最短経路の収束数が少ないノードNのグループG3[ノードN1、ノードN2、ノードN4、ノードN5]があると判定する。そして、分散配備装置600は、グループG3[ノードN1、ノードN2、ノードN4、ノードN5]を取得し、グループG3の中からノードN1を取得する。
次に、分散配備装置600は、フローテーブル300とトポロジーテーブル400とに基づいて、取得したノードN1が、「平均」の処理705を割り当てられた場合に、制約条件を満たすか否かを判定する。
分散配備装置600は、「フィルタリング1」の処理702の処理負荷「20」と、「平均」の処理705の処理負荷「30」との合計負荷「20+30」が、取得したノードN1の処理性能「100」以下であるため、ノードN1が制約条件を満たすと判定する。
次に、分散配備装置600は、フローテーブル300とトポロジーテーブル400とに基づいて、「平均」の処理705をノードN1に割り当てた場合のネットワーク110内の通信にかかるコストを表す評価値を算出する。分散配備装置600は、具体的には、入力データd1のデータ量「200」に、「入力データ1」の処理701を実行するノードN1から「フィルタリング1」の処理702が割り当てられたノードN1までのコスト「0」を乗算する。
また、分散配備装置600は、「フィルタリング1」の処理702の出力データのデータ量「100」に、「フィルタリング1」の処理702を実行するノードN1から「平均」の処理705が割り当てられたノードN1までのコスト「0」を乗算する。
また、分散配備装置600は、入力データd2のデータ量「160」に、「入力データ2」の処理702を実行するノードN2から「フィルタリング2」の処理704が割り当てられたノードN2までのコスト「0」を乗算する。
また、分散配備装置600は、「フィルタリング2」の処理704の出力データのデータ量「80」に、「フィルタリング2」の処理704を実行するノードN2から「平均」の処理705が割り当てられたノードN1までのコスト「75」を乗算する。
また、分散配備装置600は、「平均」の処理705の出力データのデータ量「54」に、「平均」の処理705を実行するノードN1から「アラート判定」の処理706が割り当てられたノードN11までのコスト「60」を乗算する。次に、分散配備装置600は、乗算した値の合計値「9240」を算出し、ノードN1に対応付けて記憶する。
そして、分散配備装置600は、「平均」の処理705をノードN7に割り当てた場合と、ノードN1に割り当てた場合との評価値を比較する。ここで、分散配備装置600は、ノードN7に割り当てた場合の方が評価値が小さくなるため、「平均」の処理705をノードN7に割り当てたままにする。そして、分散配備装置600は、ノードN1に割り当てた場合の方が評価値が大きくなるため、「平均」の処理705をいずれかのノードNに割り当てる処理を終了する。
次に、分散配備装置600は、「平均」の処理705を割り当てる場合と同様にして、「アラート判定」の処理706を、いずれかのノードNに割り当てる。これにより、分散配備装置600は、特定の演算処理700に含まれる分散処理を、ノードNに割り当てて、ネットワーク110内の通信にかかるコストを低減することができる。また、分散配備装置600は、全解探索により特定の演算処理700に含まれる分散処理を割り当てる場合に比べて、分散処理を割り当てる際にかかる処理負荷や処理時間の増加を抑制することができる。
(実施例1における割当処理手順の一例)
次に、図15を用いて、実施例1における分散配備装置600の割当処理手順の一例について説明する。
図15は、実施例1における割当処理手順の一例を示すフローチャートである。図15において、分散配備装置600は、ネットワーク110内の通信にかかるコストの軽減効果が高い処理から順にソートし、さらに、実行順序に従ってソートする(ステップS1501)。
次に、分散配備装置600は、ソートした順序に従って処理を選択する(ステップS1502)。そして、分散配備装置600は、選択する処理があるか否かを判定する(ステップS1503)。
ここで、選択する処理がある場合(ステップS1503:Yes)、分散配備装置600は、最短経路を特定し、最短経路上のノードNにおける最短経路の収束数、および収集ノードSNからのリンク数を算出する(ステップS1504)。
次に、分散配備装置600は、図16に示す探索処理を実行する(ステップS1505)。そして、分散配備装置600は、探索したノードNに対応付けて、選択した処理を記憶し(ステップS1506)、ステップS1502の処理に戻る。
また、ステップS1502の処理を実行した結果、選択する処理がなかった場合(ステップS1503:No)、分散配備装置600は、割当処理を終了する。これにより、分散配備装置600は、収集ノードSNに割り当てられた特定の演算処理700に含まれる分散処理を、収集ノードSNとは異なるノードNに割り当て直して、ネットワーク110内の通信にかかるコストを低減することができる。
(実施例1における探索処理手順の一例)
次に、図16を用いて、ステップS1505に示した、実施例1における分散配備装置600の探索処理手順の一例について説明する。
図16は、実施例1における探索処理手順の一例を示すフローチャートである。図16において、分散配備装置600は、最短経路の収束数によってノードNをグループ化したグループの中から、最短経路の収束数が多い順にノードNのグループを取得する(ステップS1601)。次に、分散配備装置600は、取得したノードNのグループの中から、制約条件を満たすノードNを取得するまで、リンク数が多い順にノードNを取得する(ステップS1602)。
そして、分散配備装置600は、制約条件を満たすノードNがあるか否かを判定する(ステップS1603)。ここで、制約条件を満たすノードNがある場合(ステップS1603:Yes)、分散配備装置600は、選択した処理を取得したノードNに割り当てた場合の評価値を算出し、前回取得したノードNに割り当てた場合より評価値が小さくなるか否かを判定する(ステップS1604)。
ここで、評価値が小さくならない場合(ステップS1604:No)、分散配備装置600は、探索処理を終了する。一方で、評価値が小さくなる場合(ステップS1604:Yes)、分散配備装置600は、ステップS1607の処理に移行する。
ステップS1603において、制約条件を満たすノードNがない場合(ステップS1603:No)、分散配備装置600は、ステップS1605の処理に移行する。ステップS1605において、分散配備装置600は、取得したノードNのグループの中のリンク数が最大になるノードNから所定のリンク数以内にあるノードNの中から、制約条件を満たすノードNを取得するまで、ノードNを取得する(ステップS1605)。
ここで、分散配備装置600は、制約条件を満たすノードNがあるか否かを判定する(ステップS1606)。ここで、制約条件を満たすノードNがある場合(ステップS1606:Yes)、分散配備装置600は、ステップS1604の処理に移行する。一方で、制約条件を満たすノードNがない場合(ステップS1606:No)、分散配備装置600は、ステップS1607の処理に移行する。
ステップS1607において、分散配備装置600は、未取得のグループがあるか否かを判定する(ステップS1607)。ここで、未取得のグループがある場合(ステップS1607:Yes)、分散配備装置600は、ステップS1601の処理に戻る。
一方で、未取得のグループがない場合(ステップS1607:No)、分散配備装置600は、探索処理を終了する。これにより、分散配備装置600は、選択した処理を割り当てるノードNを探索することができる。
(実施例2)
次に、実施例2について説明する。実施例1は、入力データの数に基づいてノードNを探索する場合の一例であったが、実施例2は、入力データの量に基づいてノードNを探索する場合の一例である。
〈実施例2における分散処理を割り当てる一例〉
まず、図17および図18を用いて、実施例2における分散処理を割り当てる一例について説明する。
図17および図18は、実施例2における分散処理を割り当てる一例を示す説明図である。図17において、分散配備装置600は、「フィルタリング1」の処理702をいずれかのノードNに割り当てる。ここで、初期状態では、実行するノードNが固定されていない処理702〜706は、収集ノードSNになるノードN11に割り当てられているとする。
分散配備装置600は、実施例1と同様に、図12においてノードN1に対応付けて記憶した経路「ノードN11→ノードN9→ノードN7→ノードN4→ノードN1」を、ノードN11からノードN1までの最短経路として取得する。
ここで、分散配備装置600は、実施例1とは異なり、最短経路上のノードNを、送信または受信されるデータのデータ量によってグループ化して、データ量が多い順にソートする。分散配備装置600は、例えば、最短経路上のノードN11、ノードN9、ノードN7、ノードN4、およびノードN1における送信または受信されるデータのデータ量が「100」であるため、「グループG4[ノードN11、ノードN9、ノードN7、ノードN4、ノードN1]」として記憶する。
次に、分散配備装置600は、グループG4の中で、収集ノードSNになるノードN11からのリンク数が多い順にソートする。分散配備装置600は、例えば、「グループG4[ノードN11、ノードN9、ノードN7、ノードN4、ノードN1]」を、「グループG4[ノードN1、ノードN4、ノードN7、ノードN9、ノードN11]」に更新する。ここで、グループをソートした結果が、ノードNの探索順序になる。
そして、分散配備装置600は、処理を割り当てるノードNを決定するまで、送信または受信されるデータのデータ量が多いグループから、順次、グループを取得する。分散配備装置600は、グループを取得する都度、取得したノードNが制約条件を満たすと判定するまで、グループの中でノードN11からのリンク数が多いノードNから、順次、ノードNを取得する。
分散配備装置600は、例えば、実施例1と同様に、グループG4[ノードN1、ノードN4、ノードN7、ノードN9、ノードN11]を取得し、グループG4の中からノードN1を取得する。次に、分散配備装置600は、フローテーブル300とトポロジーテーブル400とに基づいて、取得したノードN1が、「フィルタリング1」の処理702を割り当てられた場合に、制約条件を満たすか否かを判定する。また、分散配備装置600は、初期状態で処理702,704〜707が割り当てられたノードN11が、制約条件を満たすか否かを判定する。
次に、分散配備装置600は、フローテーブル300とトポロジーテーブル400とに基づいて、「フィルタリング1」の処理702をノードN1に割り当てた場合のネットワーク110内の通信にかかるコストを表す評価値を算出する。また、分散配備装置600は、フローテーブル300とトポロジーテーブル400とに基づいて、「フィルタリング1」の処理702をノードN11に割り当てた場合のネットワーク110内の通信にかかるコストを表す評価値を算出する。
そして、分散配備装置600は、「フィルタリング1」の処理702をノードN11に割り当てた場合と、ノードN1に割り当てた場合との評価値を比較する。ここで、分散配備装置600は、ノードN1に割り当てた場合の方が評価値が小さくなるため、「フィルタリング1」の処理702をノードN1に割り当てる。
そして、分散配備装置600は、ノードN1より送信または受信されるデータのデータ量が少ないノードNのグループがないため、「フィルタリング1」の処理702をいずれかのノードNに割り当てる処理を終了する。
次に、分散配備装置600は、「フィルタリング1」の処理702を割り当てる場合と同様にして、「フィルタリング2」の処理704をいずれかのノードNに割り当てる。
図18において、分散配備装置600は、「平均」の処理705をいずれかのノードNに割り当てる。分散配備装置600は、実施例1と同様に、図12においてノードN1に対応付けて記憶した経路「ノードN11→ノードN9→ノードN7→ノードN4→ノードN1」を、ノードN11からノードN1までの最短経路として取得する。
また、分散配備装置600は、実施例1と同様に、図12においてノードN2に対応付けて記憶した経路「ノードN11→ノードN9→ノードN7→ノードN5→ノードN2」を、ノードN11からノードN2までの最短経路として取得する。
そして、分散配備装置600は、最短経路上のノードNを、送信または受信されるデータのデータ量によってグループ化して、データ量が多い順にソートする。分散配備装置600は、例えば、最短経路上のノードN11、ノードN9、およびノードN7における送信または受信されるデータのデータ量が「100+80」であるため、グループ化する。
また、分散配備装置600は、最短経路上のノードN4、およびノードN1における送信または受信されるデータのデータ量が「100」であるため、グループ化する。また、分散配備装置600は、最短経路上のノードN5、およびノードN2における送信または受信されるデータのデータ量が「80」であるため、グループ化する。そして、分散配備装置600は、「グループG5[ノードN11、ノードN9、ノードN7]、グループG6[ノードN4、ノードN1]、グループG7[ノードN5、ノードN2]」として記憶する。
次に、分散配備装置600は、グループの中で、収集ノードSNになるノードN11からのリンク数が多い順にソートする。分散配備装置600は、例えば、「グループG5[ノードN11、ノードN9、ノードN7]、グループG6[ノードN4、ノードN1]、グループG7[ノードN5、ノードN2]」を、「グループG5[ノードN7、ノードN9、ノードN11]、グループG6[ノードN1、ノードN4]、グループG7[ノードN2、ノードN5]」に更新する。ここで、グループをソートした結果が、ノードNの探索順序になる。
分散配備装置600は、処理を割り当てるノードNを決定するまで、送信または受信されるデータのデータ量が多いグループから、順次、グループを取得する。分散配備装置600は、グループを取得する都度、取得したノードNが制約条件を満たすと判定するまで、グループの中でノードN11からのリンク数が多いノードNから、順次、ノードNを取得する。
分散配備装置600は、例えば、実施例1と同様に、グループG5[ノードN7、ノードN9、ノードN11]を取得し、グループの中からノードN7を取得する。次に、分散配備装置600は、フローテーブル300とトポロジーテーブル400とに基づいて、取得したノードN7が、「平均」の処理705を割り当てられた場合に、制約条件を満たすか否かを判定する。また、分散配備装置600は、処理705〜706が割り当てられたノードN11が、制約条件を満たすか否かを判定する。
次に、分散配備装置600は、フローテーブル300とトポロジーテーブル400とに基づいて、「平均」の処理705をノードN7に割り当てた場合のネットワーク110内の通信にかかるコストを表す評価値を算出する。また、分散配備装置600は、フローテーブル300とトポロジーテーブル400とに基づいて、「平均」の処理705をノードN11に割り当てた場合のネットワーク110内の通信にかかるコストを表す評価値を算出する。
そして、分散配備装置600は、「平均」の処理705をノードN11に割り当てた場合と、ノードN7に割り当てた場合との評価値を比較する。ここで、分散配備装置600は、ノードN7に割り当てた場合の方が評価値が小さくなるため、「平均」の処理705をノードN7に割り当てる。
次に、分散配備装置600は、ノードN7より送信または受信されるデータのデータ量が少ないノードNのグループG6[ノードN1、ノードN4]があるため、グループG6[ノードN1、ノードN4]を取得し、グループの中からノードN1を取得する。
次に、分散配備装置600は、フローテーブル300とトポロジーテーブル400とに基づいて、取得したノードN1が、「平均」の処理705を割り当てられた場合に、制約条件を満たすか否かを判定する。次に、分散配備装置600は、フローテーブル300とトポロジーテーブル400とに基づいて、「平均」の処理705をノードN1に割り当てた場合のネットワーク110内の通信にかかるコストを表す評価値を算出する。
そして、分散配備装置600は、「平均」の処理705をノードN7に割り当てた場合と、ノードN1に割り当てた場合との評価値を比較する。ここで、分散配備装置600は、ノードN7に割り当てた場合の方が評価値が小さくなるため、「平均」の処理705をノードN7に割り当てたままにする。そして、分散配備装置600は、ノードN1に割り当てた場合の方が評価値が大きくなるため、「平均」の処理705をいずれかのノードNに割り当てる処理を終了する。
次に、分散配備装置600は、「平均」の処理705を割り当てる場合と同様にして、「アラート判定」の処理706を、いずれかのノードNに割り当てる。これにより、分散配備装置600は、特定の演算処理700に含まれる分散処理を、ノードNに割り当てて、ネットワーク110内の通信にかかるコストを低減することができる。また、分散配備装置600は、全解探索により特定の演算処理700に含まれる分散処理を割り当てる場合に比べて、分散処理を割り当てる際にかかる処理負荷や処理時間の増加を抑制することができる。また、分散配備装置600は、各々の入力データのデータ量が異なる場合に、各々の入力データのデータ量に対応して通信経路に重み付けをして、探索効率を向上させることができる。
(実施例2における割当処理手順の一例)
次に、実施例2における分散配備装置600の割当処理手順の一例について説明する。実施例2における割当処理手順は、ステップS1504を除き、図15に示した実施例1における割当処理手順と同一である。
このため、実施例2におけるステップS1504の処理について説明する。ステップS1504において、分散配備装置600は、最短経路を特定し、最短経路上のノードNにおける送信または受信されるデータ量、および収集ノードSNからのリンク数を算出する(ステップS1504)。
(実施例2における探索処理手順の一例)
次に、実施例2における分散配備装置600の探索処理手順の一例について説明する。実施例2における探索処理手順は、ステップS1601を除き、図16に示した実施例1における探索処理手順と同一である。
このため、実施例2におけるステップS1601について説明する。ステップS1601において、分散配備装置600は、送信または受信されるデータ量によってノードNをグループ化したグループの中から、送信または受信されるデータ量が多い順にノードNのグループを取得する(ステップS1601)。
以上説明したように、分散配備装置600によれば、分散対象となる処理の入力データを生成する各ノードNから、収集ノードSNまでの通信経路をそれぞれ特定することができる。そして、分散配備装置600によれば、収集ノードSNを起点にして、特定した通信経路上のノードNの中から、データ数またはデータ量が減少し、かつ、ネットワーク110内の通信にかかるコストが減少するノードNを順次探索することができる。これにより、分散配備装置600は、特定の演算処理700に含まれる分散処理を、ノードNに割り当てて、ネットワーク110内の通信にかかるコストを低減することができる。
また、これにより、分散配備装置600は、全解探索により特定の演算処理700に含まれる分散処理を割り当てる場合に比べて、分散処理を割り当てる際にかかる処理負荷や処理時間の増加を抑制することができる。具体的には、従来のコンピュータが、ノードの数が「10000個」のネットワーク110において、「3000個」の分散処理を割り当てる場合には、分散処理を割り当てる際にかかる時間が「97878秒」、評価値が「90245」になる。一方で、分散配備装置600が、ノードの数が「10000個」のネットワーク110において、「3000個」の分散処理を割り当てる場合には、分散処理にかかる時間が「27秒」、評価値が「79773」になり、処理時間を低減することができる。
また、これにより、分散配備装置600は、ネットワーク110にノードNが追加されたり、ネットワーク110内のノード間の接続状況が変化した場合であっても、分散処理を割り当て直す際にかかる処理負荷や処理時間を低減することができる。具体的には、分散配備装置600は、各々のノードNが移動体であるためにネットワーク110内のノード間の接続状況が定期的に変化するような場合であっても、接続状況の変化ごとに分散処理を割り当て直すことができる。結果として、ネットワーク110内の通信にかかるコストを低減しながら、ネットワーク110を運用することができる。
また、分散配備装置600によれば、特定した通信経路上のノードNの中から、データ数またはデータ量が多い順に、ネットワーク110内の通信にかかるコストが減少しなくなるまで、分散処理を割り当てるノードNを順次探索することができる。これにより、分散配備装置600は、通信経路上のノードNを、データ数またはデータ量が多い順に網羅的に探索することができる。
また、特定した通信経路上のノードNの中には、データ数またはデータ量が同一である複数のノードNが存在するときがある。このとき、分散配備装置600によれば、複数のノードNの中から、収集ノードSNからのリンク数が最大になり、かつ、ネットワーク110内の通信にかかるコストが減少するノードNを探索することができる。これにより、分散配備装置600は、複数のノードNの中でネットワーク110内の通信にかかるコストが最小になるノードNを探索し、分散処理を割り当てる際にかかる処理負荷や処理時間の増加を抑制することができる。
また、このとき、分散配備装置600によれば、複数のノードNのうちで処理の割当条件を満たすノードNの中から、収集ノードSNからのリンク数が最大になり、かつ、ネットワーク110内の通信にかかるコストが減少するノードNを探索することができる。これにより、分散配備装置600は、複数のノードNのうちで分散処理を割り当てる割当条件を満たすノードNの中でネットワーク110内の通信にかかるコストが最小になるノードNを探索することができる。そして、分散配備装置600は、分散処理を割り当てる際にかかる処理負荷や処理時間の増加を抑制することができる。
ここで、複数のノードNのすべてが割当条件を満たさないときがある。このとき、分散配備装置600によれば、ネットワーク110に含まれる割当条件を満たすノードNを特定することができる。次に、分散配備装置600によれば、特定したノードNの中から、複数のノードNのうちで収集ノードSNからのリンク数が最大になるノードNから所定のリンク数以内に存在するノードNを特定することができる。そして、分散配備装置600によれば、特定したノードNの中からネットワーク110内の通信にかかるコストが減少するノードNを探索することができる。これにより、分散配備装置600は、分散処理を割り当てる割当条件を満たすノードNを探索することができ、分散処理を割り当てる際にかかる処理負荷や処理時間の増加を抑制することができる。
また、分散配備装置600によれば、入力データを生成する各ノードNから収集ノードSNまでの各ノードN間の通信にかかるコストの合計値が最小になる通信経路をそれぞれ特定することができる。これにより、分散配備装置600は、コストの合計値が最小になる通信経路上のノードNの中から分散処理を割り当てるノードNを探索することができる。そして、分散配備装置600は、ネットワーク110内の通信にかかるコストを低減することができ、分散処理を割り当てる際にかかる処理負荷や処理時間の増加を抑制することができる。また、分散配備装置600は、各々の入力データのデータ量が異なる場合に、各々の入力データのデータ量に対応して通信経路に重み付けをして、探索効率を向上させることができる。
なお、本実施の形態で説明した分散配備方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本分散配備プログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本分散配備プログラムは、インターネット等のネットワークを介して配布してもよい。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)ネットワーク内のノード間の通信にかかるコストに基づいて、分散対象となる処理の入力データを生成する各ノードから、前記処理の入力データを収集する特定のノードまでの通信経路をそれぞれ特定し、前記特定のノードを起点にして、特定した前記通信経路上のノードの中から、送信または受信される前記入力データのデータ数またはデータ量が減少し、かつ、前記処理を割り当てた際に前記ネットワーク内の通信にかかるコストが減少するノードを順次探索し、探索したノードの中から前記処理を割り当てるノードを決定する制御部、
を有することを特徴とする分散配備装置。
(付記2)前記制御部は、特定した前記通信経路上のノードの中から、前記データ数または前記データ量が多い順に、前記ネットワーク内の通信にかかるコストが減少しなくなるまで、前記データ数または前記データ量が減少し、かつ、前記ネットワーク内の通信にかかるコストが減少するノードを順次探索することを特徴とする付記1に記載の分散配備装置。
(付記3)前記制御部は、前記データ数または前記データ量が同一である複数のノードが存在するときは、前記複数のノードの中から、前記特定のノードからのリンク数が最大になり、かつ、前記ネットワーク内の通信にかかるコストが減少するノードを探索することを特徴とする付記2に記載の分散配備装置。
(付記4)前記制御部は、前記データ数または前記データ量が同一である複数のノードが存在するときは、前記複数のノードのうちで前記処理の割当条件を満たすノードの中から、前記特定のノードからのリンク数が最大になり、かつ、前記ネットワーク内の通信にかかるコストが減少するノードを探索することを特徴とする付記2に記載の分散配備装置。
(付記5)前記制御部は、前記複数のノードのすべてが前記割当条件を満たさないときは、前記ネットワークに含まれる前記割当条件を満たすノードの中から、前記複数のノードのうちで前記特定のノードからのリンク数が最大になるノードから所定のリンク数以内に存在し、かつ、前記ネットワーク内の通信にかかるコストが減少するノードを探索することを特徴とする付記4に記載の分散配備装置。
(付記6)前記制御部は、前記入力データを生成する各ノードから前記特定のノードまでの各ノード間の通信にかかるコストの合計値が最小になる通信経路をそれぞれ特定することを特徴とする付記1〜5のいずれか一つに記載の分散配備装置。
(付記7)コンピュータが、
ネットワーク内のノード間の通信にかかるコストに基づいて、分散対象となる処理の入力データを生成する各ノードから、前記処理の入力データを収集する特定のノードまでの通信経路をそれぞれ特定し、
前記特定のノードを起点にして、特定した前記通信経路上のノードの中から、送信または受信される前記入力データのデータ数またはデータ量が減少し、かつ、前記処理を割り当てた際に前記ネットワーク内の通信にかかるコストが減少するノードを順次探索し、
探索したノードの中から前記処理を割り当てるノードを決定する、
処理を実行することを特徴とする分散配備方法。
(付記8)コンピュータに、
ネットワーク内のノード間の通信にかかるコストに基づいて、分散対象となる処理の入力データを生成する各ノードから、前記処理の入力データを収集する特定のノードまでの通信経路をそれぞれ特定し、
前記特定のノードを起点にして、特定した前記通信経路上のノードの中から、送信または受信される前記入力データのデータ数またはデータ量が減少し、かつ、前記処理を割り当てた際に前記ネットワーク内の通信にかかるコストが減少するノードを順次探索し、
探索したノードの中から前記処理を割り当てるノードを決定する、
処理を実行させることを特徴とする分散配備プログラム。