(57)【要約】【課題】分散対象となる処理を割り当てる適切なノードを効率的に探索すること。【解決手段】収集ノードＳＮは、ネットワークトポロジーの情報を取得する。次に、収集ノードＳＮは、ノードＮ間を接続するリンクのコストに基づいて、特定の演算処理に含まれる複数の処理のうち分散処理の入力データｄ１〜ｄ１０の各々の入力データを生成するノードＮから、収集ノードＳＮまでの通信経路を特定する。そして、収集ノードＳＮは、特定した各々の通信経路上の各ノードＮにおける通信経路の収束数を算出し、収束数が減少し、かつ、評価値が減少するノードＮを順次探索し、探索したノードのうちのいずれかのノードに分散処理を割り当てる。【選択図】図１
2015090693.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク内のノード間の通信にかかるコストに基づいて、分散対象となる処理の入力データを生成する各ノードから、前記処理の出力データを収集する特定のノードまでの通信経路をそれぞれ特定し、前記特定のノードを起点にして、特定した前記通信経路上のノードの中から、送信または受信される前記入力データのデータ数またはデータ量が減少し、かつ、前記処理を割り当てた際に前記ネットワーク内の通信にかかるコストが減少するノードを順次探索し、探索したノードの中から前記処理を割り当てるノードを決定する制御部、
を有することを特徴とする分散配備装置。
【請求項２】
前記制御部は、特定した前記通信経路上のノードの中から、前記データ数または前記データ量が多い順に、前記ネットワーク内の通信にかかるコストが減少しなくなるまで、前記データ数または前記データ量が減少し、かつ、前記ネットワーク内の通信にかかるコストが減少するノードを順次探索することを特徴とする請求項１に記載の分散配備装置。
【請求項３】
前記制御部は、前記データ数または前記データ量が同一である複数のノードが存在するときは、前記複数のノードの中から、前記特定のノードからのリンク数が最大になり、かつ、前記ネットワーク内の通信にかかるコストが減少するノードを探索することを特徴とする請求項２に記載の分散配備装置。
【請求項４】
前記制御部は、前記データ数または前記データ量が同一である複数のノードが存在するときは、前記複数のノードのうちで前記処理の割当条件を満たすノードの中から、前記特定のノードからのリンク数が最大になり、かつ、前記ネットワーク内の通信にかかるコストが減少するノードを探索することを特徴とする請求項２に記載の分散配備装置。
【請求項５】
前記制御部は、前記入力データを生成する各ノードから前記特定のノードまでの各ノード間の通信にかかるコストの合計値が最小になる通信経路をそれぞれ特定することを特徴とする請求項１〜４のいずれか一つに記載の分散配備装置。
【請求項６】
コンピュータが、
ネットワーク内のノード間の通信にかかるコストに基づいて、分散対象となる処理の入力データを生成する各ノードから、前記処理の出力データを収集する特定のノードまでの通信経路をそれぞれ特定し、
前記特定のノードを起点にして、特定した前記通信経路上のノードの中から、送信または受信される前記入力データのデータ数またはデータ量が減少し、かつ、前記処理を割り当てた際に前記ネットワーク内の通信にかかるコストが減少するノードを順次探索し、
探索したノードの中から前記処理を割り当てるノードを決定する、
処理を実行することを特徴とする分散配備方法。
【請求項７】
コンピュータに、
ネットワーク内のノード間の通信にかかるコストに基づいて、分散対象となる処理の入力データを生成する各ノードから、前記処理の出力データを収集する特定のノードまでの通信経路をそれぞれ特定し、
前記特定のノードを起点にして、特定した前記通信経路上のノードの中から、送信または受信される前記入力データのデータ数またはデータ量が減少し、かつ、前記処理を割り当てた際に前記ネットワーク内の通信にかかるコストが減少するノードを順次探索し、
探索したノードの中から前記処理を割り当てるノードを決定する、
処理を実行させることを特徴とする分散配備プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散配備装置、分散配備方法、および分散配備プログラムに関する。
【背景技術】
【０００２】
従来、ノードのセンシングデータや稼動ログなどを、センターサーバが収集して、環境状況や稼動状況などを分析することが行われている。また、動画配信サービスなどにおいて、エンドユーザが作成したコンテンツをセンターサーバが蓄積し、センターサーバが蓄積したコンテンツを他のエンドユーザに配信することが行われている。
【０００３】
このように、センターサーバが、データを収集して処理を行うと、センターサーバの処理負荷が増大するとともに、センターサーバのアクセス負荷が増大してセンターサーバ周辺のネットワークが逼迫してしまう。このため、センターサーバの処理を、ネットワークに含まれるノードに分散して割り当てることがある。
【０００４】
関連する技術としては、例えば、ネットワークトラフィックを抑制するためのものがある。具体的には、サーバノードが、処理を実行するモジュールが入力とする複数のイベントの種別のうち一部のイベントを出力するノードであり、かつ各ノード間でモジュールに定義された集約属性の属性名と同一の集約属性に属する属性値が同一であるノードを抽出する。そして、サーバノードが、複数のノードが抽出された場合に、センサネットワークのトポロジを参照して、各ノードが収容される上位ノードに当該モジュールを配備する。
【０００５】
また、経路間の共通リンク部分を避け安全性の高い複数の配信経路を少ない計算資源で計算するための技術がある。具体的には、配信経路決定装置が、経路探索の起点となる根ノードを順次に選択し、根ノードの隣接ノードごとに、いずれかの配信元ノードへ到達する最短経路として上流側経路を探索する。そして、配信経路決定装置が、当該隣接ノードと配信先ノードとを結ぶ下流側経路と上流側経路とを接続してコンテンツ配信経路を確立し、確立された経路を構成するリンクの距離が長くなるよう補正する。
【０００６】
また、ユーザと対話しつつ問題の緒条件に適応して、効率的に解を求めるための技術がある。また、大規模な問題に対して、より最適な組合せを高速に設計するためのＷＤＭ網設計技術がある。また、計算機ネットワーク上において、ユーザの意図、目的、アクセス時期等に応じて、最適なデータ経路を自動的に選択するための技術がある。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１３−０４７９２２号公報
【特許文献２】特開２０１２−０７０１６９号公報
【特許文献３】特開２０００−０１０９５３号公報
【特許文献４】特開２００３−３０４２８０号公報
【特許文献５】特開平１０−２５４８０５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、上述した従来技術では、分散対象となる処理をネットワーク内のどのノードに割り当てればよいか判断することが難しい場合がある。例えば、すべてのノードについて、当該ノードに処理を割り当てた場合のネットワーク内の通信にかかるコストを算出して、コストが最小になるノードを探索する場合、ネットワークに含まれるノード数の増大に伴って探索にかかる処理負荷や処理時間が膨大になってしまう。
【０００９】
１つの側面では、本発明は、分散対象となる処理を割り当てる適切なノードを効率的に探索することができる分散配備装置、分散配備方法、および分散配備プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明の一側面によれば、ネットワーク内のノード間の通信にかかるコストに基づいて、分散対象となる処理の入力データを生成する各ノードから、前記処理の出力データを収集する特定のノードまでの通信経路をそれぞれ特定し、前記特定のノードを起点にして、特定した前記通信経路上のノードの中から、送信または受信される前記入力データのデータ数またはデータ量が減少し、かつ、前記処理を割り当てた際に前記ネットワーク内の通信にかかるコストが減少するノードを順次探索し、探索したノードの中から前記処理を割り当てるノードを決定する分散配備装置、分散配備方法、および分散配備プログラムが提案される。
【発明の効果】
【００１１】
本発明の一態様によれば、分散対象となる処理を割り当てる適切なノードを効率的に探索することができるという効果を奏する。
【図面の簡単な説明】
【００１２】
【図１】図１は、配備システム１００の一例を示す説明図である。
【図２】図２は、コンピュータ２００のハードウェア構成例を示すブロック図である。
【図３】図３は、フローテーブル３００の記憶内容の一例を示す説明図である。
【図４】図４は、トポロジーテーブル４００の記憶内容の一例を示す説明図である。
【図５】図５は、処理テーブル５００の記憶内容の一例を示す説明図である。
【図６】図６は、分散配備装置６００の機能的構成例を示すブロック図である。
【図７】図７は、特定の演算処理７００の一例を示す説明図である。
【図８】図８は、ネットワークトポロジーの一例を示す説明図である。
【図９】図９は、フローテーブル３００の一例を示す説明図である。
【図１０】図１０は、トポロジーテーブル４００の一例を示す説明図である。
【図１１】図１１は、処理テーブル５００の一例を示す説明図である。
【図１２】図１２は、最短経路を特定する一例を示す説明図である。
【図１３】図１３は、実施例１における分散処理を割り当てる一例を示す説明図（その１）である。
【図１４】図１４は、実施例１における分散処理を割り当てる一例を示す説明図（その２）である。
【図１５】図１５は、実施例１における割当処理手順の一例を示すフローチャートである。
【図１６】図１６は、実施例１における探索処理手順の一例を示すフローチャートである。
【図１７】図１７は、実施例２における分散処理を割り当てる一例を示す説明図（その１）である。
【図１８】図１８は、実施例２における分散処理を割り当てる一例を示す説明図（その２）である。
【発明を実施するための形態】
【００１３】
以下に添付図面を参照して、本発明にかかる分散配備装置、分散配備方法、および分散配備プログラムの実施の形態を詳細に説明する。
【００１４】
（配備システム１００の一例）
図１は、配備システム１００の一例を示す説明図である。図１において、配備システム１００は、複数のノードＮを含むネットワーク１１０により実現される。ネットワーク１１０は、例えば、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネット、携帯電話網などの通信網である。
【００１５】
ここで、複数のノードＮは、他のノードＮから特定の演算処理の入力データを収集して、特定の演算処理を実行するノードＮを含む。以下の説明では、特定の演算処理を実行するノードＮを「収集ノードＳＮ」と表記する場合がある。また、複数のノードＮは、特定の演算処理の入力データを生成するノードＮを含む。また、複数のノードＮは、特定の演算処理の入力データを転送するノードＮを含む。
【００１６】
ノードＮは、図２に後述するコンピュータ２００によって実現される。ノードＮは、例えば、ノート型パソコン、デスクトップ型パソコン、携帯電話機、スマートフォン、ＰＨＳ（Ｐｅｒｓｏｎａｌ  Ｈａｎｄｙｐｈｏｎｅ  Ｓｙｓｔｅｍ）、タブレット型端末などである。収集ノードＳＮは、例えば、ノート型パソコン、デスクトップ型パソコン、サーバなどである。
【００１７】
配備システム１００は、特定の演算処理に含まれる複数の処理のうちのいずれかの処理を分散対象の演算処理として、収集ノードＳＮとは異なるノードＮに割り当てることにより、ネットワーク１１０内の通信にかかるコストを低減する。ここで、コストとは、通信に用いられるリソースを表すものである。コストとは、例えば、通信距離、通信速度、通信帯域、および使用料金などである。以下の説明では、分散対象の演算処理を「分散処理」と表記する場合がある。
【００１８】
図１の例では、収集ノードＳＮは、分散配備プログラムを実行することにより、分散配備装置として動作する。まず、収集ノードＳＮは、ネットワークトポロジーの情報を取得する。ここで、ネットワークトポロジーの情報は、ネットワーク１１０内のノードＮ間の接続関係を示す情報、およびノードＮ間を接続するリンクのコストを示す情報を含む。
【００１９】
（１）収集ノードＳＮは、ノードＮ間を接続するリンクのコストに基づいて、分散処理の入力データｄ１〜ｄ１０の各々の入力データを生成するノードＮから、収集ノードＳＮまでの通信経路を特定する。
【００２０】
（２）収集ノードＳＮは、特定した各々の通信経路上の各ノードＮにおける通信経路の収束数を算出する。通信経路の収束数とは、特定した通信経路のうちの当該ノードＮが所属する通信経路の数である。次に、収集ノードＳＮは、分散処理を割り当てるまで、収束数が多いノードＮから順にノードＮを選択して、選択したノードＮに分散処理を割り当てた場合のネットワーク１１０内の通信にかかるコストを示す評価値を算出する。
【００２１】
そして、収集ノードＳＮは、選択したノードＮより収束数が少なく、かつ、選択したノードＮより評価値が小さくなるノードＮを探索する。ここで、収集ノードＳＮは、収束数が同一のノードＮがある場合は、収集ノードＳＮからのリンク数が最大のノードＮを選択する。
【００２２】
（３）収集ノードＳＮは、選択したノードＮより収束数が少なく、かつ、選択したノードＮより評価値が小さくなるノードＮがない場合に、探索を終了する。（４）収集ノードＳＮは、探索を終了すると、選択したノードＮに分散処理を割り当てる。
【００２３】
これにより、収集ノードＳＮは、ネットワーク１１０内の通信にかかるコストを低減することができるノードを探索する際にかかる処理負荷や処理時間の増加を抑制することができる。収集ノードＳＮは、例えば、全解探索により特定の演算処理に含まれる分散処理を割り当てる場合に比べて、分散処理を割り当てる際にかかる処理負荷や処理時間を低減することができる。また、収集ノードＳＮは、ネットワーク１１０にノードＮが追加されたり、ノード間の接続状況が変化した場合に、接続状況の変化に対応して分散処理を割り当て直す際にかかる処理負荷や処理時間の増加を抑制することができる。
【００２４】
ここでは、収集ノードＳＮが、分散配備プログラムを実行することにより、分散配備装置として動作したが、これに限らない。例えば、収集ノードＳＮとは異なるノードＮが、分散配備装置として動作してもよい。また、例えば、ノードＮとは異なる、ネットワーク１１０に接続された情報処理装置（不図示）が、分散配備装置として動作してもよい。
【００２５】
（コンピュータ２００のハードウェア構成例）
次に、図２を用いて、図１に示したノードＮを実現するコンピュータ２００のハードウェア構成例について説明する。
【００２６】
図２は、コンピュータ２００のハードウェア構成例を示すブロック図である。図２において、コンピュータ２００は、ＣＰＵ２０１、主記憶装置２０２、補助記憶装置２０３、入力装置２０４、出力装置２０５、およびＩ／Ｆ２０６が、バス２１０に接続されて構成されている。
【００２７】
ＣＰＵ２０１は、コンピュータ２００の全体の制御を司る。また、ＣＰＵ２０１は、主記憶装置２０２に記憶されているＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）や本実施の形態の分散配備プログラムなどの各種プログラムを実行することにより、主記憶装置２０２または補助記憶装置２０３内のデータを読み出す。また、ＣＰＵ２０１は、主記憶装置２０２に記憶されているＯＳや本実施の形態の分散配備プログラムなどの各種プログラムを実行することにより、実行結果となるデータを主記憶装置２０２または補助記憶装置２０３に書き込む。
【００２８】
主記憶装置２０２は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などで構成され、ＣＰＵ２０１のワークエリアになったり、補助記憶装置２０３から読み出されたブートプログラム、分散配備プログラム、特定の演算処理の実行プログラムなどの各種プログラムを記憶したりする。
【００２９】
また、主記憶装置２０２は、補助記憶装置２０３から読み出された、図３に後述するフローテーブル３００、図４に後述するトポロジーテーブル４００、図５に後述する処理テーブル５００などの各種テーブルを記憶したりする。また、主記憶装置２０２は、各種プログラムの実行により得られたデータを含む各種データを記憶したりする。
【００３０】
補助記憶装置２０３は、フラッシュメモリ、磁気ディスクドライブなどで構成され、ブートプログラム、分散配備プログラム、特定の演算処理の実行プログラムなどの各種プログラムを記憶したりする。また、補助記憶装置２０３は、図３に後述するフローテーブル３００、図４に後述するトポロジーテーブル４００、図５に後述する処理テーブル５００などの各種テーブルを記憶したりする。また、補助記憶装置２０３は、各種プログラムの実行により得られたデータを含む各種データを記憶したりする。
【００３１】
入力装置２０４は、キーボード、マウス、タッチパネルなどユーザの操作により、各種データの入力を行うインターフェースである。出力装置２０５は、ＣＰＵ２０１の指示により、データを出力するインターフェースである。出力装置２０５には、ディスプレイやプリンタが挙げられる。Ｉ／Ｆ２０６は、ネットワーク１１０を介して外部からデータを受信したり、外部にデータを送信したりするインターフェースである。
【００３２】
また、コンピュータ２００は、センサ（不図示）を有してもよい。センサは、設置箇所における所定の変位量を検出する。センサは、例えば、設置箇所の圧力を検出する圧電素子や、光を検出する光電素子などである。
【００３３】
（フローテーブル３００の記憶内容）
次に、図３を用いて、フローテーブル３００の記憶内容の一例について説明する。フローテーブル３００は、例えば、図２に示した主記憶装置２０２、および補助記憶装置２０３などの記憶領域によって実現される。
【００３４】
図３は、フローテーブル３００の記憶内容の一例を示す説明図である。図３に示すように、フローテーブル３００は、処理項目に対応付けて、次処理項目と、データ量項目と、処理負荷項目と、を有し、処理ごとに各項目に情報が設定されることにより、レコードを記憶する。
【００３５】
処理項目には、特定の演算処理に含まれる処理の名称が記憶される。次処理項目には、処理項目の処理の次に実行される処理の名称が記憶される。データ量項目には、処理項目の処理を実行することにより生成されるデータのデータ量が記憶される。データ量の単位は、例えば、ｋＢである。処理負荷項目には、処理項目の処理を実行する際に、処理を実行するコンピュータ２００にかかる負荷が記憶される。
【００３６】
ここで、コンピュータ２００にかかる負荷とは、処理項目の処理を実行する際に、単位時間あたりにコンピュータ２００にかかる負荷である。コンピュータ２００にかかる負荷とは、具体的には、処理項目の処理を実行する際に、単位時間あたりにコンピュータ２００が使用するメモリ量である。
【００３７】
例えば、レコード３０１は、処理の名称「ｐｒｏｃ１−１」と、次に実行される処理の名称「ｐｒｏｃ２−１」と、データ量「１００」と、処理負荷「１０」と、を含むフロー情報を示す。
【００３８】
これにより、分散配備装置は、フローテーブル３００に基づいて、特定の演算処理に含まれる複数の処理の実行順序を特定することができる。また、分散配備装置は、フローテーブル３００に基づいて、特定の演算処理に含まれる複数の処理の各々の処理のデータ量および処理負荷を特定することができる。
【００３９】
（トポロジーテーブル４００の記憶内容）
次に、図４を用いて、トポロジーテーブル４００の記憶内容の一例について説明する。トポロジーテーブル４００は、例えば、図２に示した主記憶装置２０２、および補助記憶装置２０３などの記憶領域によって実現される。
【００４０】
図４は、トポロジーテーブル４００の記憶内容の一例を示す説明図である。図４に示すように、トポロジーテーブル４００は、ノード項目に対応付けて、接続ノード項目と、コスト項目と、性能項目と、を有し、ノードＮごとに各項目に情報が設定されることにより、レコードを記憶する。
【００４１】
ノード項目にはノードＮの名称が記憶される。接続ノード項目には、ノード項目のノードＮに接続されたノードＮの名称が記憶される。コスト項目には、ノード項目のノードＮと接続ノード項目のノードＮとの間の通信にかかるコストが記憶される。性能項目には、ノード項目のノードＮの処理性能を示す値が記憶される。
【００４２】
例えば、レコード４０１は、ノードＮの名称「Ｎ１」と、接続されたノードＮの名称「Ｎ３」と、接続されたノードＮとの間の通信にかかるコスト「５」と、処理性能を示す値「１００」と、を含むトポロジー情報を示す。また、レコード４０１は、接続されたノードＮの名称「Ｎ４」と、接続されたノードＮとの間の通信にかかるコスト「２０」と、を示す。ここで、処理性能とは、単位時間あたりにコンピュータ２００にかかる負荷の上限である。
【００４３】
これにより、分散配備装置は、トポロジーテーブル４００に基づいて、ネットワーク１１０内の各々のノードの処理性能を特定し、分散処理を割り当てるための制約条件を満たすか否かを判定することができる。制約条件とは、例えば、処理性能が分散処理の処理負荷より大きいという条件である。
【００４４】
また、分散配備装置は、トポロジーテーブル４００に基づいて、ノード間の接続関係と、ノード間のリンクのコストとを特定し、通信にかかるコストが最小になる経路を特定したり、ネットワーク１１０内の通信にかかるコストを算出することができる。
【００４５】
（処理テーブル５００の記憶内容）
次に、図５を用いて、処理テーブル５００の記憶内容の一例について説明する。処理テーブル５００は、例えば、図２に示した主記憶装置２０２、および補助記憶装置２０３などの記憶領域によって実現される。
【００４６】
図５は、処理テーブル５００の記憶内容の一例を示す説明図である。図５に示すように、処理テーブル５００は、処理項目に対応付けて、ノード項目を有し、処理ごとに各項目に情報が設定されることにより、レコードを記憶する。
【００４７】
処理項目には、処理の名称が記憶される。ノード項目には、処理項目の処理を実行するノードＮの名称が記憶される。例えば、レコード５０１は、データを生成する処理の名称「ｄａｔａ１」と、データを生成する処理を実行するノードＮの名称「Ｎ１」と、を含む処理情報を示す。
【００４８】
これにより、分散配備装置は、処理テーブル５００に基づいて、実行するノードが固定されているために、分散処理にならない処理を特定することができる。また、分散配備装置は、処理テーブル５００に基づいて、分散処理にならない処理を実行するノードＮを特定することができる。
【００４９】
（分散配備装置６００の機能的構成例）
次に、図６を用いて、分散配備装置６００の機能的構成例について説明する。
【００５０】
図６は、分散配備装置６００の機能的構成例を示すブロック図である。分散配備装置６００は、制御部になる機能として、第１の決定部６０１と、特定部６０２と、第２の決定部６０３と、算出部６０４と、判定部６０５と、探索部６０６と、を含む。第１の決定部と、特定部６０２と、第２の決定部６０３と、算出部６０４と、判定部６０５と、探索部６０６とは、例えば、図２に示した主記憶装置２０２、および補助記憶装置２０３などの記憶装置に記憶されたプログラムをＣＰＵ２０１に実行させることにより、または、Ｉ／Ｆ２０６により、その機能を実現する。
【００５１】
第１の決定部６０１は、実行するノードＮが固定されていない分散処理を、収集ノードＳＮとは異なるノードＮに割り当てることによるネットワーク１１０内の通信にかかるコストの軽減効果が高い処理から順にソートする。第１の決定部６０１は、例えば、実行するノードＮが固定されていない分散処理について、入力データのデータ量に対する出力データのデータ量の割合を算出し、算出した割合が小さい順にソートする。そして、第１の決定部６０１は、ソートした処理を、さらに、実行順序に従ってソートし、実行順序が早く、かつコストの軽減効果が高い順に、分散処理を割当対象に決定する。分散配備装置６００が分散処理を割当対象に決定する一例については、後述する。
【００５２】
特定部６０２は、ネットワーク１１０内のノードＮ間の通信にかかるコストに基づいて、分散処理の入力データを生成する各ノードＮから、分散処理の出力データを収集する特定のノードＮまでの通信経路をそれぞれ特定する。ここで、特定のノードＮとは、例えば、収集ノードＳＮである。特定部６０２は、例えば、入力データを生成する各ノードＮから収集ノードＳＮまでの各ノードＮ間の通信にかかるコストの合計値が最小になる通信経路をそれぞれ特定する。
【００５３】
特定部６０２は、具体的には、ダイクストラ法を用いて、各ノードＮから収集ノードＳＮまでの各ノードＮ間の通信にかかるコストの合計値が最小になる通信経路をそれぞれ特定する。次に、特定部６０２は、フローテーブル３００に基づいて、入力データを生成するノードＮを特定する。そして、特定部６０２は、特定した通信経路の中から、特定した入力データを生成するノードＮから収集ノードＳＮまでの各ノードＮ間の通信にかかるコストの合計値が最小になる通信経路を取得する。分散配備装置６００がコストの合計値が最小になる通信経路を特定する一例については、図１２を用いて後述する。
【００５４】
これにより、探索部６０６は、特定した通信経路に基づいて、ネットワーク１１０に含まれるノードＮの中から、特定の演算処理に含まれる分散処理を割り当てる候補になるノードＮのグループを取得することができる。特定結果は、例えば、主記憶装置２０２、および補助記憶装置２０３などの記憶領域に記憶される。
【００５５】
第２の決定部６０３は、特定した通信経路上のノードＮの中から、送信または受信される入力データのデータ数またはデータ量が多い順に、探索順序を決定する。これにより、探索部６０６は、探索順序を取得することができる。ここで、送信または受信される入力データのデータ数とは、例えば、ノードＮにおける通信経路の収束数である。
【００５６】
第２の決定部６０３は、データ数またはデータ量が同一の複数のノードＮがある場合、複数のノードＮをグループ化して、探索順序を決定してもよい。分散配備装置６００が探索順序を決定する一例については、図１３および図１４を用いて後述する。決定結果は、例えば、主記憶装置２０２、および補助記憶装置２０３などの記憶領域に記憶される。
【００５７】
算出部６０４は、ノードＮに割当対象の分散処理を割り当てた際にネットワーク１１０内の通信にかかるコストを算出する。分散配備装置６００がコストを算出する一例については、図１３および図１４を用いて後述する。これにより、探索部６０６は、算出部６０４によって算出されたコストに基づいて、ノードＮを探索することができる。算出結果は、例えば、主記憶装置２０２、および補助記憶装置２０３などの記憶領域に記憶される。
【００５８】
判定部６０５は、ノードＮが、分散処理の割当条件を満たすか否かを判定する。ここで、割当条件とは、ノードＮに分散処理を割当可能であるか否かを判定する基準となる条件である。割当条件とは、例えば、上述した制約条件である。また、割当条件とは、例えば、ノードＮに割当可能な処理の数が決まっている場合は、割当可能な数以下であるという条件であってもよい。分散配備装置６００が割当条件を満たすか否かを判定する一例については、図１３および図１４を用いて後述する。判定結果は、例えば、主記憶装置２０２、および補助記憶装置２０３などの記憶領域に記憶される。
【００５９】
探索部６０６は、収集ノードＳＮを起点にして、特定した通信経路上のノードＮの中から、送信または受信される入力データのデータ数が減少し、かつ、分散処理を割り当てた際にネットワーク１１０内の通信にかかるコストが減少するノードＮを順次探索する。探索部６０６は、例えば、特定した通信経路上のノードＮの中から、データ数が多い順に、ネットワーク１１０内の通信にかかるコストが減少しなくなるまで、データ数が減少し、かつネットワーク１１０内の通信にかかるコストが減少するノードＮを順次探索する。
【００６０】
探索部６０６は、具体的には、収集ノードＳＮに割当対象の分散処理を割り当てた際にネットワーク１１０内の通信にかかるコストを算出する要求を算出部６０４に入力し、算出されたコストを算出部６０４から取得する。次に、探索部６０６は、第２の決定部６０３によって決定されたデータ数が多い順の探索順序に従って、ノードＮを順次選択し、選択したノードＮに割当対象の分散処理を割り当てた際にネットワーク１１０内の通信にかかるコストを算出する要求を算出部６０４に入力し、算出されたコストを算出部６０４から取得する。そして、探索部６０６は、選択したノードＮについて算出部６０４によって算出されたコストが、他のノードＮについて算出部６０４によって算出済みのコストよりも減少する場合、選択したノードＮを、探索したノードＮに決定する。
【００６１】
また、探索部６０６は、収集ノードＳＮを起点にして、通信経路上のノードＮの中から、送信または受信される入力データのデータ量が減少し、かつ、分散処理を割り当てた際にネットワーク１１０内の通信にかかるコストが減少するノードＮを順次探索してもよい。探索部６０６は、例えば、通信経路上のノードＮの中から、データ量が多い順に、ネットワーク１１０内の通信にかかるコストが減少しなくなるまで、データ量が減少し、かつ、ネットワーク１１０内の通信にかかるコストが減少するノードＮを順次探索する。
【００６２】
探索部６０６は、具体的には、収集ノードＳＮに割当対象の分散処理を割り当てた際にネットワーク１１０内の通信にかかるコストを算出する要求を算出部６０４に入力し、算出されたコストを算出部６０４から取得する。次に、探索部６０６は、第２の決定部６０３によって決定されたデータ量が多い順の探索順序に従って、ノードＮを順次選択し、選択したノードＮに割当対象の分散処理を割り当てた際にネットワーク１１０内の通信にかかるコストを算出する要求を算出部６０４に入力し、算出されたコストを算出部６０４から取得する。そして、探索部６０６は、選択したノードＮについて算出部６０４によって算出されたコストが、他のノードＮについて算出部６０４によって算出済みのコストよりも減少する場合、選択したノードＮを、探索したノードＮに決定する。
【００６３】
また、データ数またはデータ量については、収集ノードＳＮからのリンク数で重み付けした値を用いてもよい。これにより、データの削減効果の高い処理の配備先について、収集ノードＳＮから遠い、すなわち、入力データを生成するノード付近を探索することが可能となり、評価値の改善が見込める様になる。重み付けの方法としては、例えば、リンク数とデータ数またはデータ量の乗算などがある。
【００６４】
また、データ数またはデータ量が同一である複数のノードＮが存在するときがある。このとき、探索部６０６は、複数のノードＮの中から、収集ノードＳＮからのリンク数が最大になり、かつ、ネットワーク１１０内の通信にかかるコストが減少するノードＮを探索してもよい。探索部６０６は、具体的には、第２の決定部６０３によってグループ化された複数のノードＮのうちで、収集ノードＳＮからのリンク数が最大になるノードＮを選択し、選択したノードＮに割当対象の分散処理を割り当てた際にネットワーク１１０内の通信にかかるコストを算出する要求を算出部６０４に入力し、算出されたコストを算出部６０４から取得する。そして、探索部６０６は、選択したノードＮについて算出部６０４によって算出されたコストが、他のノードＮについて算出部６０４によって算出済みのコストよりも減少する場合、選択したノードＮを、探索したノードＮに決定する。
【００６５】
さらに、探索部６０６は、コストが減少しない場合、収集ノードＳＮからのリンク数が次に大きくなるノードＮを選択し、選択したノードＮに割当対象の分散処理を割り当てた際にネットワーク１１０内の通信にかかるコストを算出する要求を算出部６０４に入力し、算出されたコストを算出部６０４から取得してもよい。そして、探索部６０６は、選択したノードＮについて算出部６０４によって算出されたコストが、他のノードＮについて算出部６０４によって算出済みのコストよりも減少する場合、選択したノードＮを、探索したノードＮに決定する。
【００６６】
また、このとき、探索部６０６は、複数のノードＮのうちで分散処理の割当条件を満たすノードＮの中から、収集ノードＳＮからのリンク数が最大になり、かつ、ネットワーク１１０内の通信にかかるコストが減少するノードＮを探索してもよい。探索部６０６は、具体的には、複数のノードＮの各々のノードＮが割当条件を満たすか否かを判定する要求を判定部６０５に入力し、判定結果を判定部６０５から取得する。次に、探索部６０６は、判定結果に基づいて、複数のノードＮのうちで分散処理の割当条件を満たすノードＮを特定する。そして、探索部６０６は、特定したノードＮのうちで、収集ノードＳＮからのリンク数が最大になるノードＮを選択し、選択したノードＮに割当対象の分散処理を割り当てた際にネットワーク１１０内の通信にかかるコストを算出する要求を算出部６０４に入力し、算出されたコストを算出部６０４から取得する。次に、探索部６０６は、選択したノードＮについて算出部６０４によって算出されたコストが、他のノードＮについて算出部６０４によって算出済みのコストよりも減少する場合、選択したノードＮを、探索したノードＮに決定する。
【００６７】
さらに、探索部６０６は、コストが減少しない場合、収集ノードＳＮからのリンク数が次に大きくなるノードＮを選択し、選択したノードＮに割当対象の分散処理を割り当てた際にネットワーク１１０内の通信にかかるコストを算出する要求を算出部６０４に入力し、算出されたコストを算出部６０４から取得してもよい。そして、探索部６０６は、選択したノードＮについて算出部６０４によって算出されたコストが、他のノードＮについて算出部６０４によって算出済みのコストよりも減少する場合、選択したノードＮを、探索したノードＮに決定する。
【００６８】
また、データ数またはデータ量が同一である複数のノードＮのすべてが割当条件を満たさないときがある。このとき、探索部６０６は、ネットワーク１１０に含まれる割当条件を満たすノードＮの中から、複数のノードＮのうちで収集ノードＳＮからのリンク数が最大になるノードＮから所定のリンク数以内に存在し、かつコストが減少するノードＮを探索してもよい。探索部６０６は、具体的には、複数のノードＮのすべてが割当条件を満たさない場合、複数のノードＮのうちで収集ノードＳＮからのリンク数が最大になるノードＮから所定のリンク数以内に存在するノードＮが割当条件を満たすか否かを判定する要求を判定部６０５に入力し、判定結果を判定部６０５から取得する。次に、探索部６０６は、判定結果に基づいて、所定のリンク数以内に存在するノードＮのうちで分散処理の割当条件を満たすノードＮを特定する。そして、探索部６０６は、特定したノードＮのうちで、収集ノードＳＮからのリンク数が最大になるノードＮを選択し、選択したノードＮに割当対象の分散処理を割り当てた際にネットワーク１１０内の通信にかかるコストを算出する要求を算出部６０４に入力し、算出されたコストを算出部６０４から取得する。次に、探索部６０６は、選択したノードＮについて算出部６０４によって算出されたコストが、他のノードＮについて算出部６０４によって算出済みのコストよりも減少する場合、選択したノードＮを、探索したノードＮに決定する。
【００６９】
さらに、探索部６０６は、コストが減少しない場合、収集ノードＳＮからのリンク数が次に大きくなるノードＮを選択し、選択したノードＮに割当対象の分散処理を割り当てた際にネットワーク１１０内の通信にかかるコストを算出する要求を算出部６０４に入力し、算出されたコストを算出部６０４から取得してもよい。そして、探索部６０６は、選択したノードＮについて算出部６０４によって算出されたコストが、他のノードＮについて算出部６０４によって算出済みのコストよりも減少する場合、選択したノードＮを、探索したノードＮに決定する。
【００７０】
また、データ数またはデータ量が同一である複数のノードＮ、および複数のノードＮのうちで収集ノードＳＮからのリンク数が最大になるノードＮから所定のリンク数以内に存在するノードＮの中から、ノードＮを探索できないときがある。このとき、探索部６０６は、データ数またはデータ量が同一である複数のノードＮよりデータ量が減少し、かつ、ネットワーク１１０内の通信にかかるコストが減少するノードＮを探索してもよい。
【００７１】
探索部６０６は、具体的には、複数のノードＮの中からコストが減少するノードＮを検索できなかった場合、探索順序に従って、複数のノードＮよりデータ数またはデータ量が減少するノードＮを選択する。そして、探索部６０６は、選択したノードＮに割当対象の分散処理を割り当てた際にネットワーク１１０内の通信にかかるコストを算出する要求を算出部６０４に入力し、算出されたコストを算出部６０４から取得する。次に、探索部６０６は、選択したノードＮについて算出部６０４によって算出されたコストが、他のノードＮについて算出部６０４によって算出済みのコストよりも減少する場合、選択したノードＮを、探索したノードＮに決定する。分散配備装置６００がノードＮを探索する一例については、図１３および図１４を用いて後述する。
【００７２】
これにより、探索部６０６は、分散処理を割り当てた際にネットワーク１１０内の通信にかかるコストが減少するノードＮを順次探索することができる。探索結果は、例えば、主記憶装置２０２、および補助記憶装置２０３などの記憶領域に記憶される。
【００７３】
探索部６０６は、探索したノードＮの中から分散処理を割り当てるノードＮを決定する。探索部６０６は、例えば、最後に探索したノードＮを、分散処理を割り当てるノードＮに決定する。これにより、探索部６０６は、探索したノードＮに分散処理を割り当てて、ネットワーク１１０内の通信にかかるコストを低減することができる。決定結果は、例えば、主記憶装置２０２、および補助記憶装置２０３などの記憶領域に記憶される。
【００７４】
（実施例１）
ここで、実施例１について説明する。実施例１は、入力データの数に基づいてノードＮを探索する場合の一例である。
【００７５】
〈特定の演算処理７００の一例〉
まず、図７を用いて、実施例１における特定の演算処理７００の一例について説明する。
【００７６】
図７は、特定の演算処理７００の一例を示す説明図である。特定の演算処理７００は、複数の処理を含む。図７の例では、特定の演算処理７００は、処理７０１〜７０７を含む。
【００７７】
処理７０１は、処理の名称が「入力データ１」になる処理であって、データを生成して出力する処理である。処理７０１の出力データは、処理７０２の入力データになる。処理７０２は、処理の名称が「フィルタリング１」になる処理であって、処理７０１によって生成されたデータを加工して出力する処理である。処理７０２の出力データは、処理７０５の入力データになる。
【００７８】
処理７０３は、処理の名称が「入力データ２」になる処理であって、データを生成して出力する処理である。処理７０３の出力データは、処理７０４の入力データになる。処理７０４は、処理の名称が「フィルタリング２」になる処理であって、処理７０３によって生成されたデータを加工して出力する処理である。処理７０４の出力データは、処理７０５の入力データになる。
【００７９】
処理７０５は、処理の名称が「平均」になる処理であって、処理７０２によって加工されたデータと、処理７０４によって加工されたデータとの平均データを算出して出力する処理である。処理７０５の出力データは、処理７０６の入力データになる。
【００８０】
処理７０６は、処理の名称が「アラート判定」になる処理であって、処理７０５によって算出された平均データに基づいてアラートを出力するか否かを判定して判定結果を出力する処理である。処理７０６の出力データは、処理７０７の入力データになる。処理７０７は、処理の名称が「蓄積」になる処理であって、処理７０６によって判定された判定結果を蓄積する処理である。
【００８１】
以下の説明では、分散配備装置６００が、図７に示した特定の演算処理７００に含まれる分散処理をノードＮに割り当てる場合について説明する。
【００８２】
〈ネットワークトポロジーの一例〉
次に、図８を用いて、実施例１におけるネットワークトポロジーの一例について説明する。
【００８３】
図８は、ネットワークトポロジーの一例を示す説明図である。図８において、ネットワーク１１０は、複数のノードＮを含む。以下の説明では、各々のノードＮを、ノード番号ｎを付与して区別して、「ノードＮｎ」と表記する場合がある。
【００８４】
図８の例では、ネットワーク１１０は、ノードＮ１〜Ｎ１１を含む。ここで、ノードＮ１は、リンクによりノードＮ３と接続されている。ノードＮ１とノードＮ３の間のリンクのコストは、５である。また、ノードＮ１は、リンクによりノードＮ４と接続されている。ノードＮ１とノードＮ４との間のリンクのコストは、２０である。
【００８５】
ノードＮ２は、リンクによりノードＮ５と接続されている。ノードＮ２とノードＮ５との間のリンクのコストは、３０である。ノードＮ３は、リンクによりノードＮ８と接続されている。ノードＮ３とノードＮ８との間のリンクのコストは、５０である。ノードＮ４は、リンクによりノードＮ６と接続されている。ノードＮ４とノードＮ６との間のリンクのコストは、１０である。ノードＮ４は、リンクによりノードＮ７と接続されている。ノードＮ４とノードＮ７との間のリンクのコストは、１０である。
【００８６】
ノードＮ５は、リンクによりノードＮ７と接続されている。ノードＮ５とノードＮ７との間のリンクのコストは、１５である。ノードＮ５は、リンクによりノードＮ１０と接続されている。ノードＮ５とノードＮ１０との間のリンクのコストは、３０である。ノードＮ６は、リンクによりノードＮ８と接続されている。ノードＮ６とノードＮ８との間のリンクのコストは、２０である。ノードＮ７は、リンクによりノードＮ９と接続されている。ノードＮ７とノードＮ９との間のリンクのコストは、２０である。
【００８７】
ノードＮ８は、リンクによりノードＮ１１と接続されている。ノードＮ８とノードＮ１１との間のリンクのコストは、１５である。ノードＮ９は、リンクによりノードＮ１１と接続されている。ノードＮ９とノードＮ１１との間のリンクのコストは、１０である。ノードＮ１０は、リンクによりノードＮ９と接続されている。ノードＮ１０とノードＮ９との間のリンクのコストは、１０である。ノードＮ１１は、収集ノードＳＮである。図８の例では、リンクのコストは、リンクの距離を表す値である。
【００８８】
〈フローテーブル３００の一例〉
次に、図９を用いて、実施例１におけるフローテーブル３００の一例について説明する。
【００８９】
図９は、フローテーブル３００の一例を示す説明図である。図９の例では、フローテーブル３００は、図７に示した特定の演算処理７００に含まれる複数の処理の各々の処理についてのレコードを有する。例えば、レコード９０１は、処理の名称「フィルタリング１」と、次に実行される処理の名称「平均」と、データ量「１００」と、処理負荷「２０」と、を含むフロー情報を示す。
【００９０】
〈トポロジーテーブル４００の一例〉
次に、図１０を用いて、実施例１におけるトポロジーテーブル４００の一例について説明する。
【００９１】
図１０は、トポロジーテーブル４００の一例を示す説明図である。図１０の例では、トポロジーテーブル４００は、図８に示したネットワーク１１０に含まれる各々のノードＮについてのレコードを有する。例えば、レコード１００１は、ノードＮの名称「Ｎ１」と、接続されたノードＮの名称「Ｎ３」およびリンクのコスト「５」と、接続されたノードＮの名称「Ｎ４」およびリンクのコスト「２０」と、処理性能「１００」と、を含むトポロジー情報を示す。
【００９２】
〈処理テーブル５００の一例〉
次に、図１１を用いて、実施例１における処理テーブル５００の一例について説明する。
【００９３】
図１１は、処理テーブル５００の一例を示す説明図である。図１１の例では、図７に示した特定の演算処理７００に含まれる複数の処理のうち、実行するノードＮが固定されている処理についてのレコードを有する。レコード１１０１は、処理の名称「入力データ１」と、ノードＮの名称「Ｎ１」と、を含む処理情報を示す。
【００９４】
以下の説明では、実施例１において、分散配備装置６００が、図９〜図１１に示した各種テーブルを用いて、特定の演算処理７００に含まれる分散処理をノードＮに割り当てる場合の具体的な内容について説明する。
【００９５】
〈割当順序を特定する一例〉
まず、実施例１における分散配備装置６００が特定の演算処理７００に含まれる複数の処理のうちの分散処理を特定し、分散処理の割当順序を特定する一例について説明する。
【００９６】
分散配備装置６００は、フローテーブル３００と処理テーブル５００とに基づいて、特定の演算処理７００に含まれる複数の処理のうち、実行するノードＮが固定されていない分散処理を特定して、特定した分散処理の割当順序を特定する。
【００９７】
分散配備装置６００は、例えば、「フィルタリング１」の処理７０２、「フィルタリング２」の処理７０４、「平均」の処理７０５、および「アラート判定」の処理７０６を分散処理として特定し、割当順序を特定する。
【００９８】
分散配備装置６００は、具体的には、フローテーブル３００に基づいて、「フィルタリング１」の処理７０２について、入力データのデータ量に対する出力データのデータ量の割合を算出する。ここで、分散配備装置６００は、直前に実行される「入力データ１」の処理７０１のデータ量「２００」に対する「フィルタリング１」の処理７０２のデータ量「１００」の割合「０．５」を算出する。
【００９９】
分散配備装置６００は、同様に、「フィルタリング２」の処理７０４について、入力データのデータ量「１６０」に対する出力データのデータ量「８０」の割合「０．５」を算出する。また、分散配備装置６００は、同様に、「平均」の処理７０５について、入力データのデータ量「１００＋８０」に対する出力データのデータ量「５４」の割合「０．３」を算出する。また、分散配備装置６００は、同様に、「アラート判定」の処理７０６について、入力データのデータ量「５４」に対する出力データのデータ量「２１．６」の割合「０．４」を算出する。
【０１００】
次に、分散配備装置６００は、実行するノードＮが固定されていない分散処理を、収集ノードＳＮとは異なるノードＮに割り当てることによるネットワーク１１０内の通信にかかるコストの軽減効果が高い処理から順にソートする。分散配備装置６００は、例えば、実行するノードＮが固定されていない分散処理を、算出した割合が小さい順にソートする。分散配備装置６００は、具体的には、「平均」→「アラート判定」→「フィルタリング１」→「フィルタリング２」の順番にソートする。
【０１０１】
そして、分散配備装置６００は、ソートした処理を、さらに、特定の演算処理７００に含まれる複数の処理の実行順序に従ってソートする。分散配備装置６００は、例えば、「平均」の処理の前に実行される「フィルタリング１」の処理が「平均」の処理の前になるようにソートする。分散配備装置６００は、具体的には、「フィルタリング１」→「フィルタリング２」→「平均」→「アラート判定」の順番にソートする。
【０１０２】
〈最短経路を特定する一例〉
次に、図１２を用いて、実施例１における最短経路を特定する一例について説明する。
【０１０３】
図１２は、最短経路を特定する一例を示す説明図である。図１２において、分散配備装置６００は、例えば、ダイクストラ法を用いて、収集ノードＳＮから各々のノードＮまでの最短経路を特定する。
【０１０４】
図１２の例では、説明の簡略化のため、分散配備装置６００が、ネットワーク１１０のうちの一部のノードＮについて最短経路を特定する場合について説明する。
【０１０５】
具体的には、図１２（Ａ）において、分散配備装置６００は、収集ノードＳＮになるノードＮ１１に対応付けてコスト「０」を記憶し、他のノードＮに対応付けてコスト「∞」と経路「なし」とを記憶する。
【０１０６】
図１２（Ｂ）において、分散配備装置６００は、ノードＮ１１から、ノードＮ１１に接続されたノードＮ９までの経路「ノードＮ１１→ノードＮ９」を特定し、特定した経路を介した通信にかかるコスト「１０」を特定する。次に、分散配備装置６００は、特定したコスト「１０」とノードＮ９に対応付けて記憶されたコスト「∞」とを比較する。
【０１０７】
ここで、分散配備装置６００は、記憶したコストより特定したコストの方が小さいため、記憶した経路「なし」より特定した経路「ノードＮ１１→ノードＮ９」の方が短い経路であると判定する。このため、分散配備装置６００は、ノードＮ９に対応付けて記憶したコスト「∞」と経路「なし」とを、特定したコスト「１０」と経路「ノードＮ１１→ノードＮ９」とに更新する。
【０１０８】
図１２（Ｃ）において、分散配備装置６００は、ノードＮ１１から、コストと経路とを更新したノードＮ９に接続されたノードＮ７までの経路「ノードＮ１１→ノードＮ９→ノードＮ７」を特定し、特定した経路を介した通信にかかるコスト「３０」を特定する。次に、分散配備装置６００は、特定したコスト「３０」とノードＮ７に対応付けて記憶されたコスト「∞」とを比較する。
【０１０９】
ここで、分散配備装置６００は、記憶したコストより特定したコストの方が小さいため、記憶した経路「なし」より特定した経路「ノードＮ１１→ノードＮ９→ノードＮ７」の方が短い経路であると判定する。このため、分散配備装置６００は、ノードＮ７に対応付けて記憶したコスト「∞」と経路「なし」とを、特定したコスト「３０」と経路「ノードＮ１１→ノードＮ９→ノードＮ７」とに更新する。
【０１１０】
また、分散配備装置６００は、ノードＮ１１から、コストと経路とを更新したノードＮ９に接続されたノードＮ１０までの経路「ノードＮ１１→ノードＮ９→ノードＮ１０」を特定し、特定した経路を介した通信にかかるコスト「２０」を特定する。次に、分散配備装置６００は、特定したコスト「２０」とノードＮ１０に対応付けて記憶されたコスト「∞」とを比較する。
【０１１１】
ここで、分散配備装置６００は、記憶したコストより特定したコストの方が小さいため、記憶した経路「なし」より特定した経路「ノードＮ１１→ノードＮ９→ノードＮ１０」の方が短い経路であると判定する。このため、分散配備装置６００は、ノードＮ１０に対応付けて記憶したコスト「∞」と経路「なし」とを、特定したコスト「２０」と経路「ノードＮ１１→ノードＮ９→ノードＮ１０」とに更新する。
【０１１２】
図１２（Ｄ）において、分散配備装置６００は、ノードＮ１１から、コストと経路とを更新したノードＮ１０に接続されたノードＮ５までの経路「ノードＮ１１→ノードＮ９→ノードＮ１０→ノードＮ５」を特定する。次に、分散配備装置６００は、特定した経路を介した通信にかかるコスト「５０」を特定する。そして、分散配備装置６００は、特定したコスト「５０」とノードＮ５に対応付けて記憶されたコスト「∞」とを比較する。
【０１１３】
ここで、分散配備装置６００は、記憶したコストより特定したコストの方が小さいため、記憶した経路「なし」より特定した経路「ノードＮ１１→ノードＮ９→ノードＮ１０→ノードＮ５」の方が短い経路であると判定する。このため、分散配備装置６００は、ノードＮ５に対応付けて記憶したコスト「∞」と経路「なし」とを、特定したコスト「５０」と経路「ノードＮ１１→ノードＮ９→ノードＮ１０→ノードＮ５」とに更新する。
【０１１４】
図１２（Ｅ）において、分散配備装置６００は、ノードＮ１１から、コストと経路とを更新したノードＮ７に接続されたノードＮ５までの経路「ノードＮ１１→ノードＮ９→ノードＮ７→ノードＮ５」を特定する。次に、分散配備装置６００は、特定した経路を介した通信にかかるコスト「４５」を特定する。そして、分散配備装置６００は、特定したコスト「４５」とノードＮ５に対応付けて記憶されたコスト「５０」とを比較する。
【０１１５】
図１２（Ｆ）において、分散配備装置６００は、記憶したコストより特定したコストの方が小さいため、記憶した経路より特定した経路「ノードＮ１１→ノードＮ９→ノードＮ７→ノードＮ５」の方が短い経路であると判定する。このため、分散配備装置６００は、ノードＮ５に対応付けて記憶したコスト「５０」と経路「ノードＮ１１→ノードＮ９→ノードＮ１０→ノードＮ５」とを、特定したコスト「４５」と経路「ノードＮ１１→ノードＮ９→ノードＮ７→ノードＮ５」とに更新する。
【０１１６】
また、分散配備装置６００は、同様にして、図示を省略した他のノードＮについても、経路を特定し、ノードＮと対応付けて、コストと経路とを記憶する。
【０１１７】
〈実施例１における分散処理を割り当てる一例〉
次に、図１３および図１４を用いて、実施例１における分散処理を割り当てる一例について説明する。
【０１１８】
図１３および図１４は、実施例１における分散処理を割り当てる一例を示す説明図である。図１３において、分散配備装置６００は、「フィルタリング１」の処理７０２をいずれかのノードＮに割り当てる。ここで、初期状態では、実行するノードＮが固定されていない処理７０２〜７０６は、収集ノードＳＮになるノードＮ１１に割り当てられているとする。
【０１１９】
分散配備装置６００は、例えば、フローテーブル３００に基づいて、「フィルタリング１」の処理７０２の入力データを生成する「入力データ１」の処理７０１を実行するノードＮ１を特定する。次に、分散配備装置６００は、図１２においてノードＮ１に対応付けて記憶した経路「ノードＮ１１→ノードＮ９→ノードＮ７→ノードＮ４→ノードＮ１」を、ノードＮ１１からノードＮ１までの最短経路として取得する。
【０１２０】
そして、分散配備装置６００は、最短経路上のノードＮを、取得した最短経路の収束数によってグループ化して、収束数が多い順にソートする。分散配備装置６００は、例えば、最短経路上のノードＮ１１、ノードＮ９、ノードＮ７、ノードＮ４、およびノードＮ１における最短経路の収束数が「１」であるため、「グループＧ１［ノードＮ１１、ノードＮ９、ノードＮ７、ノードＮ４、ノードＮ１］」として記憶する。
【０１２１】
次に、分散配備装置６００は、グループＧ１の中で、収集ノードＳＮになるノードＮ１１からのリンク数が多い順にソートする。分散配備装置６００は、例えば、「グループＧ１［ノードＮ１１、ノードＮ９、ノードＮ７、ノードＮ４、ノードＮ１］」を、「グループＧ１［ノードＮ１、ノードＮ４、ノードＮ７、ノードＮ９、ノードＮ１１］」に更新する。ここで、グループをソートした結果が、ノードＮの探索順序になる。
【０１２２】
分散配備装置６００は、処理を割り当てるノードＮを決定するまで、取得した最短経路の収束数が多いグループから、順次、グループを取得する。分散配備装置６００は、グループを取得する都度、取得したノードＮが制約条件を満たすと判定するまで、グループの中でノードＮ１１からのリンク数が多いノードＮから、順次、ノードＮを取得する。
【０１２３】
分散配備装置６００は、例えば、グループＧ１［ノードＮ１、ノードＮ４、ノードＮ７、ノードＮ９、ノードＮ１１］を取得し、グループＧ１の中からノードＮ１を取得する。次に、分散配備装置６００は、フローテーブル３００とトポロジーテーブル４００とに基づいて、取得したノードＮ１が、「フィルタリング１」の処理７０２を割り当てられた場合に、制約条件を満たすか否かを判定する。ここで、制約条件とは、例えば、ノードＮに割り当てられた処理の処理負荷がノードＮの処理性能以下であるという条件である。
【０１２４】
分散配備装置６００は、「フィルタリング１」の処理７０２の処理負荷「２０」が、取得したノードＮ１の処理性能「１００」以下であるため、ノードＮ１が制約条件を満たすと判定する。ここで、分散配備装置６００は、ノードＮ１が制約条件を満たさないと判定した場合、グループＧ１の中で、ノードＮ１の次にリンク数が多いノードＮから、順次、取得し、制約条件を満たすか否かを判定する。
【０１２５】
また、分散配備装置６００は、初期状態で処理７０２，７０４〜７０７が割り当てられたノードＮ１１が、制約条件を満たすか否かを判定する。分散配備装置６００は、処理７０２，７０４〜７０７の処理負荷「２０＋２０＋３０＋５０＋１０」が、ノードＮ１１の処理性能「∞」以下であるため、ノードＮ１１が制約条件を満たすと判定する。
【０１２６】
次に、分散配備装置６００は、フローテーブル３００とトポロジーテーブル４００とに基づいて、「フィルタリング１」の処理７０２をノードＮ１に割り当てた場合のネットワーク１１０内の通信にかかるコストを表す評価値を算出する。ネットワーク１１０内の通信にかかるコストは、例えば、各々のリンクを通過するデータ量に、当該リンクのコストを乗じた値の合計値である。
【０１２７】
分散配備装置６００は、具体的には、「入力データ１」の処理７０１の出力データのデータ量「２００」に、「入力データ１」の処理７０１を実行するノードＮ１から「フィルタリング１」の処理７０２が割り当てられたノードＮ１までのコスト「０」を乗算する。
【０１２８】
また、分散配備装置６００は、「フィルタリング１」の処理７０２の出力データのデータ量「１００」に、「フィルタリング１」の処理７０２を実行するノードＮ１から「平均」の処理７０５が割り当てられたノードＮ１１までのコスト「６０」を乗算する。
【０１２９】
また、分散配備装置６００は、入力データｄ２のデータ量「１６０」に、「入力データ２」の処理７０３を実行するノードＮ２から「フィルタリング２」の処理７０４が割り当てられたノードＮ１１までのコスト「７５」を乗算する。次に、分散配備装置６００は、乗算した値の合計値「１８０００」を算出し、ノードＮ１に対応付けて記憶する。
【０１３０】
また、分散配備装置６００は、フローテーブル３００とトポロジーテーブル４００とに基づいて、「フィルタリング１」の処理７０２をノードＮ１１に割り当てた場合のネットワーク１１０内の通信にかかるコストを表す評価値を算出する。
【０１３１】
分散配備装置６００は、具体的には、入力データｄ１のデータ量「２００」に、「入力データ１」の処理７０１を実行するノードＮ１から「フィルタリング１」の処理７０２が割り当てられたノードＮ１１までのコスト「６０」を乗算する。
【０１３２】
また、分散配備装置６００は、入力データｄ２のデータ量「１６０」に、「入力データ２」の処理７０２を実行するノードＮ２から「フィルタリング２」の処理７０４が割り当てられたノードＮ１１までのコスト「７５」を乗算する。次に、分散配備装置６００は、乗算した値の合計値「２４０００」を算出し、ノードＮ１１に対応付けて記憶する。
【０１３３】
そして、分散配備装置６００は、「フィルタリング１」の処理７０２をノードＮ１１に割り当てた場合と、ノードＮ１に割り当てた場合との評価値を比較する。ここで、分散配備装置６００は、ノードＮ１に割り当てた場合の方が評価値が小さくなるため、「フィルタリング１」の処理７０２をノードＮ１に割り当てる。そして、分散配備装置６００は、ノードＮ１より最短経路の収束数が少ないノードＮのグループがないため、「フィルタリング１」の処理７０２をいずれかのノードＮに割り当てる処理を終了する。
【０１３４】
次に、分散配備装置６００は、「フィルタリング２」の処理７０４をいずれかのノードＮに割り当てる。分散配備装置６００は、例えば、「フィルタリング１」の処理７０２を割り当てる場合と同様にして、「フィルタリング２」の処理７０４を、ノードＮ２に割り当てる。そして、分散配備装置６００は、ノードＮ２より最短経路の収束数が少ないノードＮのグループがないため、「フィルタリング２」の処理７０４をいずれかのノードＮに割り当てる処理を終了する。
【０１３５】
図１４において、分散配備装置６００は、「平均」の処理７０５をいずれかのノードＮに割り当てる。分散配備装置６００は、「平均」の処理７０５の入力データを生成する「フィルタリング１」の処理７０２を割り当てたノードＮ１を特定する。次に、分散配備装置６００は、図１２においてノードＮ１に対応付けて記憶した経路「ノードＮ１１→ノードＮ９→ノードＮ７→ノードＮ４→ノードＮ１」を、ノードＮ１１からノードＮ１までの最短経路として取得する。
【０１３６】
また、分散配備装置６００は、「平均」の処理７０５の入力データを生成する「フィルタリング２」の処理７０４を割り当てたノードＮ２を特定する。次に、分散配備装置６００は、図１２においてノードＮ２に対応付けて記憶した経路「ノードＮ１１→ノードＮ９→ノードＮ７→ノードＮ５→ノードＮ２」を、ノードＮ１１からノードＮ２までの最短経路として取得する。
【０１３７】
そして、分散配備装置６００は、最短経路上のノードＮを、取得した最短経路の収束数によってグループ化して、収束数が多い順にソートする。分散配備装置６００は、例えば、最短経路上のノードＮ１１、ノードＮ９、およびノードＮ７における最短経路の収束数が「２」であるため、グループ化する。また、分散配備装置６００は、最短経路上のノードＮ４、ノードＮ１、ノードＮ５、およびノードＮ２における最短経路の収束数が「１」であるため、グループ化する。そして、分散配備装置６００は、「グループＧ２［ノードＮ１１、ノードＮ９、ノードＮ７］、グループＧ３［ノードＮ４、ノードＮ１、ノードＮ５、ノードＮ２］」として記憶する。
【０１３８】
次に、分散配備装置６００は、グループの中で、収集ノードＳＮになるノードＮ１１からのリンク数が多い順にソートする。分散配備装置６００は、例えば、「グループＧ２［ノードＮ１１、ノードＮ９、ノードＮ７］、グループＧ３［ノードＮ４、ノードＮ１、ノードＮ５、ノードＮ２］」を、「グループＧ２［ノードＮ７、ノードＮ９、ノードＮ１１］、グループＧ３［ノードＮ１、ノードＮ２、ノードＮ４、ノードＮ５］」に更新する。ここで、グループをソートした結果が、ノードＮの探索順序になる。
【０１３９】
分散配備装置６００は、処理を割り当てるノードＮを決定するまで、取得した最短経路の収束数が多いグループから、順次、グループを取得する。分散配備装置６００は、グループを取得する都度、取得したノードＮが制約条件を満たすと判定するまで、グループの中でノードＮ１１からのリンク数が多いノードＮから、順次、ノードＮを取得する。
【０１４０】
分散配備装置６００は、例えば、グループＧ２［ノードＮ７、ノードＮ９、ノードＮ１１］を取得し、グループＧ２の中からノードＮ７を取得する。次に、分散配備装置６００は、フローテーブル３００とトポロジーテーブル４００とに基づいて、取得したノードＮ７が、「平均」の処理７０５を割り当てられた場合に、制約条件を満たすか否かを判定する。
【０１４１】
分散配備装置６００は、「平均」の処理７０５の処理負荷「３０」が、取得したノードＮ７の処理性能「５０」以下であるため、ノードＮ７が制約条件を満たすと判定する。また、分散配備装置６００は、処理７０５〜７０７が割り当てられたノードＮ１１が、制約条件を満たすか否かを判定する。分散配備装置６００は、処理７０５〜７０７の処理負荷「３０＋５０＋１０」が、ノードＮ１１の処理性能「∞」以下であるため、ノードＮ１１が制約条件を満たすと判定する。
【０１４２】
次に、分散配備装置６００は、フローテーブル３００とトポロジーテーブル４００とに基づいて、「平均」の処理７０５をノードＮ７に割り当てた場合のネットワーク１１０内の通信にかかるコストを表す評価値を算出する。分散配備装置６００は、具体的には、入力データｄ１のデータ量「２００」に、「入力データ１」の処理７０１を実行するノードＮ１から「フィルタリング１」の処理７０２が割り当てられたノードＮ１までのコスト「０」を乗算する。
【０１４３】
また、分散配備装置６００は、「フィルタリング１」の処理７０２の出力データのデータ量「１００」に、「フィルタリング１」の処理７０２を実行するノードＮ１から「平均」の処理７０５が割り当てられたノードＮ７までのコスト「３０」を乗算する。
【０１４４】
また、分散配備装置６００は、入力データｄ２のデータ量「１６０」に、「入力データ２」の処理７０３を実行するノードＮ２から「フィルタリング２」の処理７０４が割り当てられたノードＮ２までのコスト「０」を乗算する。
【０１４５】
また、分散配備装置６００は、「フィルタリング２」の処理７０４の出力データのデータ量「８０」に、「フィルタリング２」の処理７０４を実行するノードＮ２から「平均」の処理７０５が割り当てられたノードＮ７までのコスト「４５」を乗算する。
【０１４６】
また、分散配備装置６００は、「平均」の処理７０５の出力データのデータ量「５４」に、「平均」の処理７０５を実行するノードＮ７から「アラート判定」の処理７０６が割り当てられたノードＮ１１までのコスト「３０」を乗算する。次に、分散配備装置６００は、乗算した値の合計値「８２２０」を算出し、ノードＮ７に対応付けて記憶する。
【０１４７】
また、分散配備装置６００は、フローテーブル３００とトポロジーテーブル４００とに基づいて、「平均」の処理７０５をノードＮ１１に割り当てた場合のネットワーク１１０内の通信にかかるコストを表す評価値を算出する。
【０１４８】
分散配備装置６００は、具体的には、「フィルタリング１」の処理７０２の出力データのデータ量「１００」に、「フィルタリング１」の処理７０２を実行するノードＮ１から「平均」の処理７０５が割り当てられたノードＮ１１までのコスト「６０」を乗算する。
【０１４９】
また、分散配備装置６００は、「フィルタリング２」の処理７０４の出力データのデータ量「８０」に、「フィルタリング２」の処理７０４を実行するノードＮ２から「平均」の処理７０５が割り当てられたノードＮ１１までのコスト「７５」を乗算する。次に、分散配備装置６００は、乗算した値の合計値「１２０００」を算出し、ノードＮ１１に対応付けて記憶する。
【０１５０】
そして、分散配備装置６００は、「平均」の処理７０５をノードＮ１１に割り当てた場合と、ノードＮ７に割り当てた場合との評価値を比較する。ここで、分散配備装置６００は、ノードＮ７に割り当てた場合の方が評価値が小さくなるため、「平均」の処理７０５をノードＮ７に割り当てる。
【０１５１】
次に、分散配備装置６００は、ノードＮ７より最短経路の収束数が少ないノードＮのグループＧ３［ノードＮ１、ノードＮ２、ノードＮ４、ノードＮ５］があると判定する。そして、分散配備装置６００は、グループＧ３［ノードＮ１、ノードＮ２、ノードＮ４、ノードＮ５］を取得し、グループＧ３の中からノードＮ１を取得する。
【０１５２】
次に、分散配備装置６００は、フローテーブル３００とトポロジーテーブル４００とに基づいて、取得したノードＮ１が、「平均」の処理７０５を割り当てられた場合に、制約条件を満たすか否かを判定する。
【０１５３】
分散配備装置６００は、「フィルタリング１」の処理７０２の処理負荷「２０」と、「平均」の処理７０５の処理負荷「３０」との合計負荷「２０＋３０」が、取得したノードＮ１の処理性能「１００」以下であるため、ノードＮ１が制約条件を満たすと判定する。
【０１５４】
次に、分散配備装置６００は、フローテーブル３００とトポロジーテーブル４００とに基づいて、「平均」の処理７０５をノードＮ１に割り当てた場合のネットワーク１１０内の通信にかかるコストを表す評価値を算出する。分散配備装置６００は、具体的には、入力データｄ１のデータ量「２００」に、「入力データ１」の処理７０１を実行するノードＮ１から「フィルタリング１」の処理７０２が割り当てられたノードＮ１までのコスト「０」を乗算する。
【０１５５】
また、分散配備装置６００は、「フィルタリング１」の処理７０２の出力データのデータ量「１００」に、「フィルタリング１」の処理７０２を実行するノードＮ１から「平均」の処理７０５が割り当てられたノードＮ１までのコスト「０」を乗算する。
【０１５６】
また、分散配備装置６００は、入力データｄ２のデータ量「１６０」に、「入力データ２」の処理７０２を実行するノードＮ２から「フィルタリング２」の処理７０４が割り当てられたノードＮ２までのコスト「０」を乗算する。
【０１５７】
また、分散配備装置６００は、「フィルタリング２」の処理７０４の出力データのデータ量「８０」に、「フィルタリング２」の処理７０４を実行するノードＮ２から「平均」の処理７０５が割り当てられたノードＮ１までのコスト「７５」を乗算する。
【０１５８】
また、分散配備装置６００は、「平均」の処理７０５の出力データのデータ量「５４」に、「平均」の処理７０５を実行するノードＮ１から「アラート判定」の処理７０６が割り当てられたノードＮ１１までのコスト「６０」を乗算する。次に、分散配備装置６００は、乗算した値の合計値「９２４０」を算出し、ノードＮ１に対応付けて記憶する。
【０１５９】
そして、分散配備装置６００は、「平均」の処理７０５をノードＮ７に割り当てた場合と、ノードＮ１に割り当てた場合との評価値を比較する。ここで、分散配備装置６００は、ノードＮ７に割り当てた場合の方が評価値が小さくなるため、「平均」の処理７０５をノードＮ７に割り当てたままにする。そして、分散配備装置６００は、ノードＮ１に割り当てた場合の方が評価値が大きくなるため、「平均」の処理７０５をいずれかのノードＮに割り当てる処理を終了する。
【０１６０】
次に、分散配備装置６００は、「平均」の処理７０５を割り当てる場合と同様にして、「アラート判定」の処理７０６を、いずれかのノードＮに割り当てる。これにより、分散配備装置６００は、特定の演算処理７００に含まれる分散処理を、ノードＮに割り当てて、ネットワーク１１０内の通信にかかるコストを低減することができる。また、分散配備装置６００は、全解探索により特定の演算処理７００に含まれる分散処理を割り当てる場合に比べて、分散処理を割り当てる際にかかる処理負荷や処理時間の増加を抑制することができる。
【０１６１】
（実施例１における割当処理手順の一例）
次に、図１５を用いて、実施例１における分散配備装置６００の割当処理手順の一例について説明する。
【０１６２】
図１５は、実施例１における割当処理手順の一例を示すフローチャートである。図１５において、分散配備装置６００は、ネットワーク１１０内の通信にかかるコストの軽減効果が高い処理から順にソートし、さらに、実行順序に従ってソートする（ステップＳ１５０１）。
【０１６３】
次に、分散配備装置６００は、ソートした順序に従って処理を選択する（ステップＳ１５０２）。そして、分散配備装置６００は、選択する処理があるか否かを判定する（ステップＳ１５０３）。
【０１６４】
ここで、選択する処理がある場合（ステップＳ１５０３：Ｙｅｓ）、分散配備装置６００は、最短経路を特定し、最短経路上のノードＮにおける最短経路の収束数、および収集ノードＳＮからのリンク数を算出する（ステップＳ１５０４）。
【０１６５】
次に、分散配備装置６００は、図１６に示す探索処理を実行する（ステップＳ１５０５）。そして、分散配備装置６００は、探索したノードＮに対応付けて、選択した処理を記憶し（ステップＳ１５０６）、ステップＳ１５０２の処理に戻る。
【０１６６】
また、ステップＳ１５０２の処理を実行した結果、選択する処理がなかった場合（ステップＳ１５０３：Ｎｏ）、分散配備装置６００は、割当処理を終了する。これにより、分散配備装置６００は、収集ノードＳＮに割り当てられた特定の演算処理７００に含まれる分散処理を、収集ノードＳＮとは異なるノードＮに割り当て直して、ネットワーク１１０内の通信にかかるコストを低減することができる。
【０１６７】
（実施例１における探索処理手順の一例）
次に、図１６を用いて、ステップＳ１５０５に示した、実施例１における分散配備装置６００の探索処理手順の一例について説明する。
【０１６８】
図１６は、実施例１における探索処理手順の一例を示すフローチャートである。図１６において、分散配備装置６００は、最短経路の収束数によってノードＮをグループ化したグループの中から、最短経路の収束数が多い順にノードＮのグループを取得する（ステップＳ１６０１）。次に、分散配備装置６００は、取得したノードＮのグループの中から、制約条件を満たすノードＮを取得するまで、リンク数が多い順にノードＮを取得する（ステップＳ１６０２）。
【０１６９】
そして、分散配備装置６００は、制約条件を満たすノードＮがあるか否かを判定する（ステップＳ１６０３）。ここで、制約条件を満たすノードＮがある場合（ステップＳ１６０３：Ｙｅｓ）、分散配備装置６００は、選択した処理を取得したノードＮに割り当てた場合の評価値を算出し、前回取得したノードＮに割り当てた場合より評価値が小さくなるか否かを判定する（ステップＳ１６０４）。
【０１７０】
ここで、評価値が小さくならない場合（ステップＳ１６０４：Ｎｏ）、分散配備装置６００は、探索処理を終了する。一方で、評価値が小さくなる場合（ステップＳ１６０４：Ｙｅｓ）、分散配備装置６００は、ステップＳ１６０７の処理に移行する。
【０１７１】
ステップＳ１６０３において、制約条件を満たすノードＮがない場合（ステップＳ１６０３：Ｎｏ）、分散配備装置６００は、ステップＳ１６０５の処理に移行する。ステップＳ１６０５において、分散配備装置６００は、取得したノードＮのグループの中のリンク数が最大になるノードＮから所定のリンク数以内にあるノードＮの中から、制約条件を満たすノードＮを取得するまで、ノードＮを取得する（ステップＳ１６０５）。
【０１７２】
ここで、分散配備装置６００は、制約条件を満たすノードＮがあるか否かを判定する（ステップＳ１６０６）。ここで、制約条件を満たすノードＮがある場合（ステップＳ１６０６：Ｙｅｓ）、分散配備装置６００は、ステップＳ１６０４の処理に移行する。一方で、制約条件を満たすノードＮがない場合（ステップＳ１６０６：Ｎｏ）、分散配備装置６００は、ステップＳ１６０７の処理に移行する。
【０１７３】
ステップＳ１６０７において、分散配備装置６００は、未取得のグループがあるか否かを判定する（ステップＳ１６０７）。ここで、未取得のグループがある場合（ステップＳ１６０７：Ｙｅｓ）、分散配備装置６００は、ステップＳ１６０１の処理に戻る。
【０１７４】
一方で、未取得のグループがない場合（ステップＳ１６０７：Ｎｏ）、分散配備装置６００は、探索処理を終了する。これにより、分散配備装置６００は、選択した処理を割り当てるノードＮを探索することができる。
【０１７５】
（実施例２）
次に、実施例２について説明する。実施例１は、入力データの数に基づいてノードＮを探索する場合の一例であったが、実施例２は、入力データの量に基づいてノードＮを探索する場合の一例である。
【０１７６】
〈実施例２における分散処理を割り当てる一例〉
まず、図１７および図１８を用いて、実施例２における分散処理を割り当てる一例について説明する。
【０１７７】
図１７および図１８は、実施例２における分散処理を割り当てる一例を示す説明図である。図１７において、分散配備装置６００は、「フィルタリング１」の処理７０２をいずれかのノードＮに割り当てる。ここで、初期状態では、実行するノードＮが固定されていない処理７０２〜７０６は、収集ノードＳＮになるノードＮ１１に割り当てられているとする。
【０１７８】
分散配備装置６００は、実施例１と同様に、図１２においてノードＮ１に対応付けて記憶した経路「ノードＮ１１→ノードＮ９→ノードＮ７→ノードＮ４→ノードＮ１」を、ノードＮ１１からノードＮ１までの最短経路として取得する。
【０１７９】
ここで、分散配備装置６００は、実施例１とは異なり、最短経路上のノードＮを、送信または受信されるデータのデータ量によってグループ化して、データ量が多い順にソートする。分散配備装置６００は、例えば、最短経路上のノードＮ１１、ノードＮ９、ノードＮ７、ノードＮ４、およびノードＮ１における送信または受信されるデータのデータ量が「１００」であるため、「グループＧ４［ノードＮ１１、ノードＮ９、ノードＮ７、ノードＮ４、ノードＮ１］」として記憶する。
【０１８０】
次に、分散配備装置６００は、グループＧ４の中で、収集ノードＳＮになるノードＮ１１からのリンク数が多い順にソートする。分散配備装置６００は、例えば、「グループＧ４［ノードＮ１１、ノードＮ９、ノードＮ７、ノードＮ４、ノードＮ１］」を、「グループＧ４［ノードＮ１、ノードＮ４、ノードＮ７、ノードＮ９、ノードＮ１１］」に更新する。ここで、グループをソートした結果が、ノードＮの探索順序になる。
【０１８１】
そして、分散配備装置６００は、処理を割り当てるノードＮを決定するまで、送信または受信されるデータのデータ量が多いグループから、順次、グループを取得する。分散配備装置６００は、グループを取得する都度、取得したノードＮが制約条件を満たすと判定するまで、グループの中でノードＮ１１からのリンク数が多いノードＮから、順次、ノードＮを取得する。
【０１８２】
分散配備装置６００は、例えば、実施例１と同様に、グループＧ４［ノードＮ１、ノードＮ４、ノードＮ７、ノードＮ９、ノードＮ１１］を取得し、グループＧ４の中からノードＮ１を取得する。次に、分散配備装置６００は、フローテーブル３００とトポロジーテーブル４００とに基づいて、取得したノードＮ１が、「フィルタリング１」の処理７０２を割り当てられた場合に、制約条件を満たすか否かを判定する。また、分散配備装置６００は、初期状態で処理７０２，７０４〜７０７が割り当てられたノードＮ１１が、制約条件を満たすか否かを判定する。
【０１８３】
次に、分散配備装置６００は、フローテーブル３００とトポロジーテーブル４００とに基づいて、「フィルタリング１」の処理７０２をノードＮ１に割り当てた場合のネットワーク１１０内の通信にかかるコストを表す評価値を算出する。また、分散配備装置６００は、フローテーブル３００とトポロジーテーブル４００とに基づいて、「フィルタリング１」の処理７０２をノードＮ１１に割り当てた場合のネットワーク１１０内の通信にかかるコストを表す評価値を算出する。
【０１８４】
そして、分散配備装置６００は、「フィルタリング１」の処理７０２をノードＮ１１に割り当てた場合と、ノードＮ１に割り当てた場合との評価値を比較する。ここで、分散配備装置６００は、ノードＮ１に割り当てた場合の方が評価値が小さくなるため、「フィルタリング１」の処理７０２をノードＮ１に割り当てる。
【０１８５】
そして、分散配備装置６００は、ノードＮ１より送信または受信されるデータのデータ量が少ないノードＮのグループがないため、「フィルタリング１」の処理７０２をいずれかのノードＮに割り当てる処理を終了する。
【０１８６】
次に、分散配備装置６００は、「フィルタリング１」の処理７０２を割り当てる場合と同様にして、「フィルタリング２」の処理７０４をいずれかのノードＮに割り当てる。
【０１８７】
図１８において、分散配備装置６００は、「平均」の処理７０５をいずれかのノードＮに割り当てる。分散配備装置６００は、実施例１と同様に、図１２においてノードＮ１に対応付けて記憶した経路「ノードＮ１１→ノードＮ９→ノードＮ７→ノードＮ４→ノードＮ１」を、ノードＮ１１からノードＮ１までの最短経路として取得する。
【０１８８】
また、分散配備装置６００は、実施例１と同様に、図１２においてノードＮ２に対応付けて記憶した経路「ノードＮ１１→ノードＮ９→ノードＮ７→ノードＮ５→ノードＮ２」を、ノードＮ１１からノードＮ２までの最短経路として取得する。
【０１８９】
そして、分散配備装置６００は、最短経路上のノードＮを、送信または受信されるデータのデータ量によってグループ化して、データ量が多い順にソートする。分散配備装置６００は、例えば、最短経路上のノードＮ１１、ノードＮ９、およびノードＮ７における送信または受信されるデータのデータ量が「１００＋８０」であるため、グループ化する。
【０１９０】
また、分散配備装置６００は、最短経路上のノードＮ４、およびノードＮ１における送信または受信されるデータのデータ量が「１００」であるため、グループ化する。また、分散配備装置６００は、最短経路上のノードＮ５、およびノードＮ２における送信または受信されるデータのデータ量が「８０」であるため、グループ化する。そして、分散配備装置６００は、「グループＧ５［ノードＮ１１、ノードＮ９、ノードＮ７］、グループＧ６［ノードＮ４、ノードＮ１］、グループＧ７［ノードＮ５、ノードＮ２］」として記憶する。
【０１９１】
次に、分散配備装置６００は、グループの中で、収集ノードＳＮになるノードＮ１１からのリンク数が多い順にソートする。分散配備装置６００は、例えば、「グループＧ５［ノードＮ１１、ノードＮ９、ノードＮ７］、グループＧ６［ノードＮ４、ノードＮ１］、グループＧ７［ノードＮ５、ノードＮ２］」を、「グループＧ５［ノードＮ７、ノードＮ９、ノードＮ１１］、グループＧ６［ノードＮ１、ノードＮ４］、グループＧ７［ノードＮ２、ノードＮ５］」に更新する。ここで、グループをソートした結果が、ノードＮの探索順序になる。
【０１９２】
分散配備装置６００は、処理を割り当てるノードＮを決定するまで、送信または受信されるデータのデータ量が多いグループから、順次、グループを取得する。分散配備装置６００は、グループを取得する都度、取得したノードＮが制約条件を満たすと判定するまで、グループの中でノードＮ１１からのリンク数が多いノードＮから、順次、ノードＮを取得する。
【０１９３】
分散配備装置６００は、例えば、実施例１と同様に、グループＧ５［ノードＮ７、ノードＮ９、ノードＮ１１］を取得し、グループの中からノードＮ７を取得する。次に、分散配備装置６００は、フローテーブル３００とトポロジーテーブル４００とに基づいて、取得したノードＮ７が、「平均」の処理７０５を割り当てられた場合に、制約条件を満たすか否かを判定する。また、分散配備装置６００は、処理７０５〜７０６が割り当てられたノードＮ１１が、制約条件を満たすか否かを判定する。
【０１９４】
次に、分散配備装置６００は、フローテーブル３００とトポロジーテーブル４００とに基づいて、「平均」の処理７０５をノードＮ７に割り当てた場合のネットワーク１１０内の通信にかかるコストを表す評価値を算出する。また、分散配備装置６００は、フローテーブル３００とトポロジーテーブル４００とに基づいて、「平均」の処理７０５をノードＮ１１に割り当てた場合のネットワーク１１０内の通信にかかるコストを表す評価値を算出する。
【０１９５】
そして、分散配備装置６００は、「平均」の処理７０５をノードＮ１１に割り当てた場合と、ノードＮ７に割り当てた場合との評価値を比較する。ここで、分散配備装置６００は、ノードＮ７に割り当てた場合の方が評価値が小さくなるため、「平均」の処理７０５をノードＮ７に割り当てる。
【０１９６】
次に、分散配備装置６００は、ノードＮ７より送信または受信されるデータのデータ量が少ないノードＮのグループＧ６［ノードＮ１、ノードＮ４］があるため、グループＧ６［ノードＮ１、ノードＮ４］を取得し、グループの中からノードＮ１を取得する。
【０１９７】
次に、分散配備装置６００は、フローテーブル３００とトポロジーテーブル４００とに基づいて、取得したノードＮ１が、「平均」の処理７０５を割り当てられた場合に、制約条件を満たすか否かを判定する。次に、分散配備装置６００は、フローテーブル３００とトポロジーテーブル４００とに基づいて、「平均」の処理７０５をノードＮ１に割り当てた場合のネットワーク１１０内の通信にかかるコストを表す評価値を算出する。
【０１９８】
そして、分散配備装置６００は、「平均」の処理７０５をノードＮ７に割り当てた場合と、ノードＮ１に割り当てた場合との評価値を比較する。ここで、分散配備装置６００は、ノードＮ７に割り当てた場合の方が評価値が小さくなるため、「平均」の処理７０５をノードＮ７に割り当てたままにする。そして、分散配備装置６００は、ノードＮ１に割り当てた場合の方が評価値が大きくなるため、「平均」の処理７０５をいずれかのノードＮに割り当てる処理を終了する。
【０１９９】
次に、分散配備装置６００は、「平均」の処理７０５を割り当てる場合と同様にして、「アラート判定」の処理７０６を、いずれかのノードＮに割り当てる。これにより、分散配備装置６００は、特定の演算処理７００に含まれる分散処理を、ノードＮに割り当てて、ネットワーク１１０内の通信にかかるコストを低減することができる。また、分散配備装置６００は、全解探索により特定の演算処理７００に含まれる分散処理を割り当てる場合に比べて、分散処理を割り当てる際にかかる処理負荷や処理時間の増加を抑制することができる。また、分散配備装置６００は、各々の入力データのデータ量が異なる場合に、各々の入力データのデータ量に対応して通信経路に重み付けをして、探索効率を向上させることができる。
【０２００】
（実施例２における割当処理手順の一例）
次に、実施例２における分散配備装置６００の割当処理手順の一例について説明する。実施例２における割当処理手順は、ステップＳ１５０４を除き、図１５に示した実施例１における割当処理手順と同一である。
【０２０１】
このため、実施例２におけるステップＳ１５０４の処理について説明する。ステップＳ１５０４において、分散配備装置６００は、最短経路を特定し、最短経路上のノードＮにおける送信または受信されるデータ量、および収集ノードＳＮからのリンク数を算出する（ステップＳ１５０４）。
【０２０２】
（実施例２における探索処理手順の一例）
次に、実施例２における分散配備装置６００の探索処理手順の一例について説明する。実施例２における探索処理手順は、ステップＳ１６０１を除き、図１６に示した実施例１における探索処理手順と同一である。
【０２０３】
このため、実施例２におけるステップＳ１６０１について説明する。ステップＳ１６０１において、分散配備装置６００は、送信または受信されるデータ量によってノードＮをグループ化したグループの中から、送信または受信されるデータ量が多い順にノードＮのグループを取得する（ステップＳ１６０１）。
【０２０４】
以上説明したように、分散配備装置６００によれば、分散対象となる処理の入力データを生成する各ノードＮから、収集ノードＳＮまでの通信経路をそれぞれ特定することができる。そして、分散配備装置６００によれば、収集ノードＳＮを起点にして、特定した通信経路上のノードＮの中から、データ数またはデータ量が減少し、かつ、ネットワーク１１０内の通信にかかるコストが減少するノードＮを順次探索することができる。これにより、分散配備装置６００は、特定の演算処理７００に含まれる分散処理を、ノードＮに割り当てて、ネットワーク１１０内の通信にかかるコストを低減することができる。
【０２０５】
また、これにより、分散配備装置６００は、全解探索により特定の演算処理７００に含まれる分散処理を割り当てる場合に比べて、分散処理を割り当てる際にかかる処理負荷や処理時間の増加を抑制することができる。具体的には、従来のコンピュータが、ノードの数が「１００００個」のネットワーク１１０において、「３０００個」の分散処理を割り当てる場合には、分散処理を割り当てる際にかかる時間が「９７８７８秒」、評価値が「９０２４５」になる。一方で、分散配備装置６００が、ノードの数が「１００００個」のネットワーク１１０において、「３０００個」の分散処理を割り当てる場合には、分散処理にかかる時間が「２７秒」、評価値が「７９７７３」になり、処理時間を低減することができる。
【０２０６】
また、これにより、分散配備装置６００は、ネットワーク１１０にノードＮが追加されたり、ネットワーク１１０内のノード間の接続状況が変化した場合であっても、分散処理を割り当て直す際にかかる処理負荷や処理時間を低減することができる。具体的には、分散配備装置６００は、各々のノードＮが移動体であるためにネットワーク１１０内のノード間の接続状況が定期的に変化するような場合であっても、接続状況の変化ごとに分散処理を割り当て直すことができる。結果として、ネットワーク１１０内の通信にかかるコストを低減しながら、ネットワーク１１０を運用することができる。
【０２０７】
また、分散配備装置６００によれば、特定した通信経路上のノードＮの中から、データ数またはデータ量が多い順に、ネットワーク１１０内の通信にかかるコストが減少しなくなるまで、分散処理を割り当てるノードＮを順次探索することができる。これにより、分散配備装置６００は、通信経路上のノードＮを、データ数またはデータ量が多い順に網羅的に探索することができる。
【０２０８】
また、特定した通信経路上のノードＮの中には、データ数またはデータ量が同一である複数のノードＮが存在するときがある。このとき、分散配備装置６００によれば、複数のノードＮの中から、収集ノードＳＮからのリンク数が最大になり、かつ、ネットワーク１１０内の通信にかかるコストが減少するノードＮを探索することができる。これにより、分散配備装置６００は、複数のノードＮの中でネットワーク１１０内の通信にかかるコストが最小になるノードＮを探索し、分散処理を割り当てる際にかかる処理負荷や処理時間の増加を抑制することができる。
【０２０９】
また、このとき、分散配備装置６００によれば、複数のノードＮのうちで処理の割当条件を満たすノードＮの中から、収集ノードＳＮからのリンク数が最大になり、かつ、ネットワーク１１０内の通信にかかるコストが減少するノードＮを探索することができる。これにより、分散配備装置６００は、複数のノードＮのうちで分散処理を割り当てる割当条件を満たすノードＮの中でネットワーク１１０内の通信にかかるコストが最小になるノードＮを探索することができる。そして、分散配備装置６００は、分散処理を割り当てる際にかかる処理負荷や処理時間の増加を抑制することができる。
【０２１０】
ここで、複数のノードＮのすべてが割当条件を満たさないときがある。このとき、分散配備装置６００によれば、ネットワーク１１０に含まれる割当条件を満たすノードＮを特定することができる。次に、分散配備装置６００によれば、特定したノードＮの中から、複数のノードＮのうちで収集ノードＳＮからのリンク数が最大になるノードＮから所定のリンク数以内に存在するノードＮを特定することができる。そして、分散配備装置６００によれば、特定したノードＮの中からネットワーク１１０内の通信にかかるコストが減少するノードＮを探索することができる。これにより、分散配備装置６００は、分散処理を割り当てる割当条件を満たすノードＮを探索することができ、分散処理を割り当てる際にかかる処理負荷や処理時間の増加を抑制することができる。
【０２１１】
また、分散配備装置６００によれば、入力データを生成する各ノードＮから収集ノードＳＮまでの各ノードＮ間の通信にかかるコストの合計値が最小になる通信経路をそれぞれ特定することができる。これにより、分散配備装置６００は、コストの合計値が最小になる通信経路上のノードＮの中から分散処理を割り当てるノードＮを探索することができる。そして、分散配備装置６００は、ネットワーク１１０内の通信にかかるコストを低減することができ、分散処理を割り当てる際にかかる処理負荷や処理時間の増加を抑制することができる。また、分散配備装置６００は、各々の入力データのデータ量が異なる場合に、各々の入力データのデータ量に対応して通信経路に重み付けをして、探索効率を向上させることができる。
【０２１２】
なお、本実施の形態で説明した分散配備方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本分散配備プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本分散配備プログラムは、インターネット等のネットワークを介して配布してもよい。
【０２１３】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０２１４】
（付記１）ネットワーク内のノード間の通信にかかるコストに基づいて、分散対象となる処理の入力データを生成する各ノードから、前記処理の出力データを収集する特定のノードまでの通信経路をそれぞれ特定し、前記特定のノードを起点にして、特定した前記通信経路上のノードの中から、送信または受信される前記入力データのデータ数またはデータ量が減少し、かつ、前記処理を割り当てた際に前記ネットワーク内の通信にかかるコストが減少するノードを順次探索し、探索したノードの中から前記処理を割り当てるノードを決定する制御部、
を有することを特徴とする分散配備装置。
【０２１５】
（付記２）前記制御部は、特定した前記通信経路上のノードの中から、前記データ数または前記データ量が多い順に、前記ネットワーク内の通信にかかるコストが減少しなくなるまで、前記データ数または前記データ量が減少し、かつ、前記ネットワーク内の通信にかかるコストが減少するノードを順次探索することを特徴とする付記１に記載の分散配備装置。
【０２１６】
（付記３）前記制御部は、前記データ数または前記データ量が同一である複数のノードが存在するときは、前記複数のノードの中から、前記特定のノードからのリンク数が最大になり、かつ、前記ネットワーク内の通信にかかるコストが減少するノードを探索することを特徴とする付記２に記載の分散配備装置。
【０２１７】
（付記４）前記制御部は、前記データ数または前記データ量が同一である複数のノードが存在するときは、前記複数のノードのうちで前記処理の割当条件を満たすノードの中から、前記特定のノードからのリンク数が最大になり、かつ、前記ネットワーク内の通信にかかるコストが減少するノードを探索することを特徴とする付記２に記載の分散配備装置。
【０２１８】
（付記５）前記制御部は、前記複数のノードのすべてが前記割当条件を満たさないときは、前記ネットワークに含まれる前記割当条件を満たすノードの中から、前記複数のノードのうちで前記特定のノードからのリンク数が最大になるノードから所定のリンク数以内に存在し、かつ、前記ネットワーク内の通信にかかるコストが減少するノードを探索することを特徴とする付記４に記載の分散配備装置。
【０２１９】
（付記６）前記制御部は、前記入力データを生成する各ノードから前記特定のノードまでの各ノード間の通信にかかるコストの合計値が最小になる通信経路をそれぞれ特定することを特徴とする付記１〜５のいずれか一つに記載の分散配備装置。
【０２２０】
（付記７）コンピュータが、
ネットワーク内のノード間の通信にかかるコストに基づいて、分散対象となる処理の入力データを生成する各ノードから、前記処理の出力データを収集する特定のノードまでの通信経路をそれぞれ特定し、
前記特定のノードを起点にして、特定した前記通信経路上のノードの中から、送信または受信される前記入力データのデータ数またはデータ量が減少し、かつ、前記処理を割り当てた際に前記ネットワーク内の通信にかかるコストが減少するノードを順次探索し、
探索したノードの中から前記処理を割り当てるノードを決定する、
処理を実行することを特徴とする分散配備方法。
【０２２１】
（付記８）コンピュータに、
ネットワーク内のノード間の通信にかかるコストに基づいて、分散対象となる処理の入力データを生成する各ノードから、前記処理の出力データを収集する特定のノードまでの通信経路をそれぞれ特定し、
前記特定のノードを起点にして、特定した前記通信経路上のノードの中から、送信または受信される前記入力データのデータ数またはデータ量が減少し、かつ、前記処理を割り当てた際に前記ネットワーク内の通信にかかるコストが減少するノードを順次探索し、
探索したノードの中から前記処理を割り当てるノードを決定する、
処理を実行させることを特徴とする分散配備プログラム。
【符号の説明】
【０２２２】
Ｎ  ノード
６００  分散配備装置
６０１  第１の決定部
６０２  特定部
６０３  第２の決定部
６０４  算出部
６０５  判定部
６０６  探索部
【図１】
2015090693.tif 000003
【図２】
2015090693.tif 000004
【図３】
2015090693.tif 000005
【図４】
2015090693.tif 000006
【図５】
2015090693.tif 000007
【図６】
2015090693.tif 000008
【図７】
2015090693.tif 000009
【図８】
2015090693.tif 000010
【図９】
2015090693.tif 000011
【図１０】
2015090693.tif 000012
【図１１】
2015090693.tif 000013
【図１２】
2015090693.tif 000014
【図１３】
2015090693.tif 000015
【図１４】
2015090693.tif 000016
【図１５】
2015090693.tif 000017
【図１６】
2015090693.tif 000018
【図１７】
2015090693.tif 000019
【図１８】
2015090693.tif 000020