(57)【特許請求の範囲】
【請求項１】
複数の処理を分散して実行する複数のノードに関し、前記ノードのスループットおよび前記ノードのストレージ量に基づいて、前記ノードが処理を配備される前にデータを蓄積する場合に要する時間を示す第１時間を算出し、前記ノードの入力データ処理時間および基準に対する前記ノードの計算処理能力の比率に基づいて、前記ノードが配備された処理を実行可能な状態に構築するまでの時間を示す第２時間を算出し、前記ノードの状態構築に要する入力データ量および前記スループットに基づいて、前記ノードが処理に用いるデータを受信するまでの時間を示す第３時間を算出し、前記ノードの状態構築に要する入力データ量および前記ノードに割り当てられるネットワーク帯域に基づいて、前記ノードが処理を配備するために要する時間を示す第４時間を算出し、前記第３時間と前記第２時間とを加算した時間から前記第１時間を減算した時間、または、前記第２時間と前記第４時間とを加算した時間を、前記ノード毎の集計処理の準備時間として算出する準備時間算出部と、
前記準備時間算出部によって算出された各ノードの準備時間を基にして、準備時間の大きいノードから準備時間の小さいノードの順に、処理を配備する順序を決定し、決定した順序に従って各ノードに処理を配備する配備順序決定部と
を有することを特徴とする処理分散制御装置。
【請求項２】
前記準備時間算出部は、前記第１時間と前記第２時間を加算した時間よりも、前記第３時間が大きい場合には、前記第３時間と前記第４時間とを加算した時間から前記第１時間を減算した時間を、前記ノードの準備時間として算出することを特徴とする請求項１に記載の処理分散制御装置。
【請求項３】
前記準備時間算出部は、前記第１時間と前記第２時間を加算した時間よりも、前記第３時間が大きくない場合には、前記第２時間と前記第４時間とを加算した時間を、前記ノードの準備時間として算出することを特徴とする請求項１または２に記載の処理分散制御装置。
【請求項４】
前記配備順序決定部は、前記複数のノードに処理を配備する前に、配備される予定の処理で用いる入力情報の蓄積指示を、前記複数のノードに送信することを特徴とする請求項１に記載の処理分散制御装置。
【請求項５】
コンピュータが実行する処理分散制御方法であって、
複数の処理を分散して実行する複数のノードに関し、前記ノードのスループットおよび前記ノードのストレージ量に基づいて、前記ノードが処理を配備される前にデータを蓄積する場合に要する時間を示す第１時間を算出し、前記ノードの入力データ処理時間および基準に対する前記ノードの計算処理能力の比率に基づいて、前記ノードが配備された処理を実行可能な状態に構築するまでの時間を示す第２時間を算出し、前記ノードの状態構築に要する入力データ量および前記スループットに基づいて、前記ノードが処理に用いるデータを受信するまでの時間を示す第３時間を算出し、前記ノードの状態構築に要する入力データ量および前記ノードに割り当てられるネットワーク帯域に基づいて、前記ノードが処理を配備するために要する時間を示す第４時間を算出し、前記第３時間と前記第２時間とを加算した時間から前記第１時間を減算した時間、または、前記第２時間と前記第４時間とを加算した時間を、前記ノード毎の集計処理の準備時間として算出し、
前記ノード毎の準備時間を基にして、準備時間の大きいノードから準備時間の小さいノードの順に、処理を配備する順序を決定し、
決定した順序に従って各ノードに処理を配備する
処理を実行することを特徴とする処理分散制御方法。
【請求項６】
コンピュータに、
複数の処理を分散して実行する複数のノードに関し、前記ノードのスループットおよび前記ノードのストレージ量に基づいて、前記ノードが処理を配備される前にデータを蓄積する場合に要する時間を示す第１時間を算出し、前記ノードの入力データ処理時間および基準に対する前記ノードの計算処理能力の比率に基づいて、前記ノードが配備された処理を実行可能な状態に構築するまでの時間を示す第２時間を算出し、前記ノードの状態構築に要する入力データ量および前記スループットに基づいて、前記ノードが処理に用いるデータを受信するまでの時間を示す第３時間を算出し、前記ノードの状態構築に要する入力データ量および前記ノードに割り当てられるネットワーク帯域に基づいて、前記ノードが処理を配備するために要する時間を示す第４時間を算出し、前記第３時間と前記第２時間とを加算した時間から前記第１時間を減算した時間、または、前記第２時間と前記第４時間とを加算した時間を、前記ノード毎の集計処理の準備時間として算出し、
前記ノード毎の準備時間を基にして、準備時間の大きいノードから準備時間の小さいノードの順に、処理を配備する順序を決定し、
決定した順序に従って各ノードに処理を配備する
処理を実行させることを特徴とする処理分散制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、処理分散制御装置等に関する。
【背景技術】
【０００２】
近年、複数の処理を複数の実行ノードに分散配備し、各実行ノードが配備された処理をそれぞれ実行することで、ユーザの所望する処理結果を算出する処理分散制御システムがある。
【０００３】
図１７は、従来の処理分散制御システムの一例を示す図である。図１７に示すように、この処理分散制御システムは、所定のデータを収集する機器１ａ，１ｂ，１ｃと、実行ノード１０ａ，１０ｂ，１０ｃ，１０ｄを有する。以下の説明では、実行ノード１０ａ〜１０ｄをまとめて、適宜、実行ノード１０と表記する。
【０００４】
機器１ａは、実行ノード１０ａに接続され、収集したデータを、実行ノード１０ａに送信する。機器１ｂは、実行ノード１０ｂに接続され、収集したデータを、実行ノード１０ｂに送信する。機器１ｃは、実行ノード１０ｃに接続され、収集したデータを、実行ノード１０ｃに送信する。
【０００５】
実行ノード１０は、ＡＧＷ（Application Gate  Way）等の中継ノードに対応する装置である。各実行ノード１０には、プログラムパッケージ５に含まれる複数の処理が分散配備される。ここで、従来の処理分散制御システムは、状況に合わせて、各実行ノード１０に処理を動的に配備することで通信の最適化をはかる。例えば、処理分散制御システムは、機器１ａ〜１ｃのデータ量・内容、実行ノード１０ａ〜１０ｃの状態、ネットワーク状態に合わせて、通信量や遅延量が減る実行ノード１０と処理との組み合わせとなる配備計画を計算し、処理を実行ノードに配備する。
【０００６】
例えば、図１７に示すように、実行ノード１０ａには、タグ付け処理Ｘ１、集計処理Ｙ１が配備される。実行ノード１０ｂには、タグ付け処理Ｘ２、集計処理Ｙ２が配備される。実行ノード１０ｃには、タグ付け処理Ｘ３、集計処理Ｙ３が配備される。実行ノード１０ｄには、統計処理Ｚ１が配備される。
【０００７】
ここで、処理タイプによる、結果を出せるまでの準備時間の差について説明する。例えば、タグ付け処理Ｘ１〜Ｘ３は、状態を待たない処理に分類される。タグ付け処理Ｘ１〜Ｘ３は、入力データに対して、履歴や統計処理等を用いないため、処理実行の準備ができ次第、処理結果を出力することが可能となる。
【０００８】
集計処理Ｙ１〜Ｙ３、統計処理Ｚ１は、状態を待つ処理に分類される。集計処理Ｙ１〜Ｙ３、統計処理Ｚ１は、一定期間、数の入力を記録した後に、集計、統計を行うため、適切な出力をするまでに、状態構築時間が必要となる。
【０００９】
実行ノード１０ａは、機器１ａから受信したデータに対して、タグ付け処理Ｘ１および集計処理Ｙ１を実行し、実行した結果を、実行ノード１０ｄに送信する。実行ノード１０ｂは、機器１ｂから受信したデータに対して、タグ付け処理Ｘ２および集計処理Ｙ２を実行し、実行した結果を、実行ノード１０ｄに送信する。実行ノード１０ｃは、機器１ｃから受信したデータに対して、タグ付け処理Ｘ３および集計処理Ｙ３を実行し、実行した結果を、実行ノード１０ｄに送信する。
【００１０】
実行ノード１０ｄは、ノード１０ａ〜１０ｃが処理を実行した結果を受信した後に、受信した結果を用いて統計処理Ｚ１を実行する。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開平９−１７９８２０号公報
【特許文献２】特開２００３−０８５０７０号公報
【特許文献３】特開２００３−２４１７６９号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
しかしながら、上述した従来技術では、処理を各ノードに分散配備してから、結果を得るまでに時間を要するという問題がある。
【００１３】
例えば、図１７に示すように、各処理が各実行ノード１０に分散配備された場合に、集計処理Ｙ１〜Ｙ３の準備が完了してからでないと、実行ノード１０ｄにおいて統計処理Ｚ１を開始することができない。このため、集計処理Ｙ１〜Ｙ３の最も遅い処理の出力にひきずられて、最終結果を得るまでの時間が遅れてしまう。
【００１４】
図１８は、従来技術の課題を説明するための図である。実行ノード１０ａでは、集計処理Ｙ１が配備され、状態構築が完了した時刻ｔ１後において、処理を開始し、処理結果を実行ノード１０ｄに出力する。実行ノード１０ｂでは、集計処理Ｙ２が配備され、状態構築が完了した時刻ｔ２後において、処理を開始し、処理結果を実行ノード１０ｄに出力する。実行ノード１０ｃでは、集計処理Ｙ３が配備され、状態構築が完了時刻ｔ３後において、処理を開始し、処理結果を実行ノード１０ｄに出力する。なお、集計処理Ｙ１〜Ｙ３の配備については、Ｙｎの配備が完了後、Ｙｎ＋１の配備が行なわれ、並行して集計処理の配備は行なわれない。
【００１５】
実行ノード１０ｄでは、統計処理Ｚ１が配備された後、例えば、時刻ｔ４から各実行ノード１０ａ〜１０ｃから処理結果の受信を開始し、時刻ｔ５において、状態構築が完了する。ここで、例えば、実行ノード１０ａ、１０ｂの状態構築が早めに完了しても、実行ノード１０ｃの状態構築の完了が遅れると、この遅れの影響により、実行ノード１０ｄは、状態構築を早めに開始することができず、結果を得るまでに時間を要してしまう。
【００１６】
１つの側面では、本発明は、処理を各ノードに分散配備してから結果を得るまでの時間を短くできる処理分散制御装置、処理分散制御方法および処理分散制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１７】
第１の案では、処理分散制御装置は、準備時間算出部と、配備順序決定部とを有する。準備時間計算部は、処理を分散して実行する複数のノードに配備する予定の処理の情報およびノードの情報を基にして、ノードに処理を配備した場合に、処理の実行を開始するまでに要する準備時間をノード毎に算出する。配備順序決定部は、準備時間算出部によって算出された各ノードの準備時間を基にして、準備時間の大きいノードから準備時間の小さいノードの順に、処理を配備する順序を決定し、決定した順序に従って各ノードに処理を配備する。
【発明の効果】
【００１８】
処理を各ノードに分散配備してから結果を得るまでの時間を短くできる。
【図面の簡単な説明】
【００１９】
【図１】図１は、本実施例に係る処理分散制御システムの構成を示す図である。
【図２】図２は、実行ノードの処理を説明するための図である。
【図３】図３は、本実施例に係るサーバの構成を示す機能ブロック図である。
【図４】図４は、配備処理データテーブルのデータ構造の一例を示す図である。
【図５】図５は、処理パラメータテーブルのデータ構造の一例を示す図である。
【図６】図６は、実行ノードパラメータテーブルのデータ構造の一例を示す図である。
【図７】図７は、配備計画データのデータ構造の一例を示す図である。
【図８】図８は、条件１を満たす場合の実行ノードの各種所要時間を示す図である。
【図９】図９は、条件２を満たす場合の実行ノードの各種所要時間を示す図である。
【図１０】図１０は、配備順序決定部のその他の処理を補足説明するための図である。
【図１１】図１１は、本実施例に係るサーバの処理手順を示すフローチャートである。
【図１２】図１２は、入力データに対する実行ノードの処理手順を示すフローチャート（１）である。
【図１３】図１３は、入力データに対する実行ノードの処理手順を示すフローチャート（２）である。
【図１４】図１４は、実行ノードが実行する蓄積処理の処理手順を示すフローチャートである。
【図１５】図１５は、本実施例の効果を説明するための図である。
【図１６】図１６は、処理分散制御プログラムを実行するコンピュータの一例を示す図である。
【図１７】図１７は、従来の処理分散制御システムの一例を示す図である。
【図１８】図１８は、従来技術の課題を説明するための図である。
【発明を実施するための形態】
【００２０】
以下に、本願の開示する処理分散制御装置、処理分散制御方法および処理分散制御プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例】
【００２１】
図１は、本実施例に係る処理分散制御システムの構成を示す図である。図１に示すように、この処理分散制御システムは、機器２ａ〜２ｉと、実行ノード５０ａ〜５０ｄと、サーバ１００とを有する。機器２ａ，２ｂ，２ｃは、実行ノード５０ａに接続される。機器２ｄ，２ｅ，２ｆは、実行ノード５０ｂに接続される。機器２ｇ，２ｈ，２ｉは、実行ノード５０ｃに接続される。サーバ１００は、処理分散制御装置の一例である。
【００２２】
実行ノード５０ａ〜５０ｄは、無線または有線によって相互に接続される。図１に示す例では、実行ノード５０ａと実行ノード５０ｄとが接続される。実行ノード５０ｂと実行ノード５０ｄとが接続される。実行ノード５０ｃと実行ノード５０ｄとが接続される。
【００２３】
サーバ１００は、機器２ａ〜２ｉ、実行ノード５０ａ〜５０ｄに、無線または有線によって接続される。サーバ１００は、アドホック通信等によって、実行ノード５０ａ〜５０ｄとデータ通信を実行しても良い。なお、図示していないが、サーバ１００に上記機器及び実行ノードが複数組接続されていてもよい。
【００２４】
以下の説明では、適宜、機器２ａ〜２ｉをまとめて機器２と表記し、実行ノード５０ａ〜５０ｄをまとめて実行ノード５０と表記する。
【００２５】
機器２は、各種のデータを収集する機器である。例えば、機器２は、センサを用いて、湿度や温度等のデータを収集しても良いし、カメラを用いて、画像データを収集しても良い。機器２ａ〜２ｃは、収集したデータを、実行ノード５０ａに出力する。機器２ｄ〜２ｆは、収集したデータを、実行ノード５０ｂに出力する。機器２ｇ〜２ｉは、収集したデータを、実行ノード５０ｃに出力する。
【００２６】
実行ノード５０は、ＡＧＷ（Application Gate  Way）等の中継ノードに対応する装置である。各実行ノード５０には、サーバ１００によって複数の処理が分散配備され、配備された処理を実行する。以下において、実行ノード５０が実行ノードパラメータの要求を受け付けた場合の処理、入力蓄積指示を受け付けた場合の処理、配備対象の処理を受け付けた場合の処理について説明する。
【００２７】
実行ノード５０が、サーバ１００から、実行ノードパラメータの要求を受け付けた場合の処理について説明する。実行ノード５０は、実行ノードパラメータを受け付けると、実行ノードパラメータを、サーバ１００に送信する。例えば、実行ノードパラメータには、処理配備に利用できるネットワーク帯域Ｗｐ（Byte／秒）と、入力データのスループットＷｄ（Byte／秒）と、基準に対する計算処理能力の比率Ｒｐと、入力蓄積に利用できるストレージ量Ｓ（Byte）が含まれる。
【００２８】
実行ノード５０が、サーバ１００から、入力蓄積指示を受け付けた場合の処理について説明する。実行ノード５０は、入力蓄積指示を受け付けると、入力データの蓄積を開始する。例えば、実行ノード５０ａの入力データは、機器２ａ〜２ｃから取得するデータとなる。実行ノード５０ｂの入力データは、機器２ｄ〜２ｆから取得するデータとなる。実行ノード５０ｃの入力データは、機器２ｇ〜２ｉから取得するデータとなる。実行ノード５０ｄの入力データは、実行ノード５０ａ〜５０ｃから取得するデータとなる。
【００２９】
実行ノード５０は、自ノードの記憶装置に入力データを蓄積する余裕がある間は、入力データを蓄積する。実行ノード５０は、記憶装置に入力データを蓄積する余裕がない場合には、古い入力データを削除しつつ、新たな入力データを蓄積する。
【００３０】
実行ノード５０が、サーバ１００から、配備対象の処理を受け付けた場合の処理内容について説明する。図２は、実行ノードの処理を説明するための図である。なお、前提として、実行ノード５０は、配備対象の処理を受け付ける前に、入力蓄積指示を受け付けているものとする。また、配備対象の処理は、状態構築時間が必要な処理とする。
【００３１】
図２に示すように、例えば、実行ノード５０は、時刻Ｔａ１において、入力蓄積指示を受け付けると、配備待機を行う。実行ノード５０は、時刻Ｔａ２において、配備対象の処理を受け付けると、受け付けた処理を配備する。例えば、実行ノード５０は、時刻Ｔａ３において、処理配備が完了すると、状態構築を開始する。実行ノード５０は、状態構築が完了すると、配備した処理を実行し、処理結果を順次、出力する。
【００３２】
図１の説明に戻る。サーバ１００は、プログラムパッケージに含まれる複数の処理を、各実行ノード５０の分散配備する装置である。サーバ１００は、各実行ノード５０に処理を分散配備する場合に、各実行ノード５０に処理を配備する場合の準備時間を算出する。サーバ１００は、各実行ノード５０に処理を配備する場合に、準備時間の大きい実行ノード５０から準備時間の小さい実行ノード５０の順に、処理を配備する。
【００３３】
図３は、本実施例に係るサーバの構成を示す機能ブロック図である。図３に示すように、サーバ１００は、通信部１１０と、入力部１２０と、表示部１３０と、記憶部１４０と、制御部１５０とを有する。
【００３４】
通信部１１０は、各機器２、各実行ノード５０との間でデータ通信を実行する処理部である。通信部１１０は、通信装置に対応する。後述する制御部１５０は、通信部１１０を介して、各実行ノード５０とデータをやり取りする。
【００３５】
入力部１２０は、各種の情報をサーバ１００に入力するための入力装置である。例えば、入力部１２０は、キーボードやマウス、タッチパネル、入力ボタン等に対応する。
【００３６】
表示部１３０は、制御部１５０から出力される情報を表示する表示装置である。例えば、表示部１３０は、液晶ディスプレイ、タッチパネル等に対応する。
【００３７】
記憶部１４０は、配備処理データテーブル１４１と、処理パラメータテーブル１４２と、実行ノードパラメータテーブル１４３と、配備計画データ１４４とを有する。記憶部１４０は、例えば、ＲＡＭ（Random  Access  Memory）、ＲＯＭ（Read  Only  Memory）、フラッシュメモリ（Flash  Memory）などの半導体メモリ素子などの記憶装置に対応する。
【００３８】
配備処理データテーブル１４１は、各実行ノード５０に配備する処理のデータを保持するテーブルである。図４は、配備処理データテーブルのデータ構造の一例を示す図である。図４に示すように、この配備処理データテーブル１４１は、処理識別情報と、処理データとを対応付ける。処理識別情報は、処理を一意に識別する情報である。処理データは、実行ノード５０に配備された場合に、配備先の実行ノード５０で動作する処理のデータ（プログラム）である。なお、Ｘ１〜Ｘ３は異なるプログラムであってもよく、同じプログラムに異なるパラメータを与えられて処理するものであってもよい。
【００３９】
処理パラメータテーブル１４２は、各処理の処理パラメータを保持するテーブルである。ここで、処理パラメータは、処理自身の配備データ量Ｄｐ（Byte）、状態構築に必要な入力データ量Ｄｄ（Byte）、基準計算能力による入力データ処理時間Ｔｐ（秒）を含む。図５は、処理パラメータテーブルのデータ構造の一例を示す図である。図５に示すように、この処理パラメータテーブル１４２は、処理識別情報と、処理パラメータとを対応付ける。処理識別情報は、処理を一意に識別する情報である。処理パラメータは、処理のパラメータである。
【００４０】
実行ノードパラメータテーブル１４３は、各実行ノード５０の実行ノードパラメータを保持するテーブルである。実行ノードパラメータは、上記のように、ネットワーク帯域Ｗｐと、スループットＷｄと、比率Ｒｐと、ストレージ量Ｓとを含む。図６は、実行ノードパラメータテーブルのデータ構造の一例を示す図である。図６に示すように、この実行ノードパラメータテーブル１４３は、実行ノード識別情報と、実行ノードパラメータとを対応付ける。実行ノード識別情報は、実行ノードを一意に識別する情報である。実行ノードパラメータは、上記の実行ノードパラメータである。
【００４１】
配備計画データ１４４は、各実行ノード５０に配備する処理を示す情報である。図７は、配備計画データのデータ構造の一例を示す図である。図７に示すように、この配備計画データ１４４は、実行ノード識別情報と、配備処理とを対応付ける。実行ノード識別情報は、実行ノード５０を一意に識別する情報である。配備処理は、実行ノード５０に配備する処理を示すものである。例えば、図７の１行目に示すレコードでは、「実行ノード５０ａ」に、処理「タグ付けＸ１、集計Ｙ１」を配備する旨が示される。
【００４２】
図３の説明に戻る。制御部１５０は、取得部１５１、配備計画計算部１５２、準備時間算出部１５３、配備順序決定部１５４を有する。制御部１５０は、例えば、ＡＳＩＣ（Application  Specific  Integrated  Circuit）や、ＦＰＧＡ（Field  Programmable  Gate  Array）などの集積装置に対応する。また、制御部１５０は、例えば、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）等の電子回路に対応する。
【００４３】
取得部１５１は、各実行ノード５０に実行ノードパラメータを要求し、各実行ノード５０から実行ノードパラメータを取得する処理部である。取得部１５１は、取得した実行ノードパラメータを、実行ノードパラメータテーブル１４３に格納する。
【００４４】
配備計画計算部１５２は、予め指定される優先度の情報、処理パラメータテーブル１４２、実行ノードパラメータテーブル１４３を基にして、配備計画データ１４４を計算する処理部である。優先度の情報は、例えば、処理時間を短くすることを優先するのか、コストを抑えることを優先するのかを示す情報である。配備計画計算部１５２は、各処理の配備先を決定する場合に、如何なる従来技術を用いても良い。例えば、配備計画計算部１５２は、初期位置に各処理を各実行ノード５０に配備し、部分的に処理の配備先を変更しつつ、処理の終了時間が最短となる処理と実行ノード５０との組み合わせを計算することで、配備計画データ１４４を生成しても良い。
【００４５】
準備時間計算部１５３は、処理パラメータテーブル１４２と、実行ノードパラメータテーブル１４３と、配備計画データ１４４とを基にして、配備された処理を実行するまでに要する総準備時間を、実行ノード５０毎に算出する処理部である。準備時間計算部１５３は、実行ノード５０毎の総準備時間の情報を、配備順序決定部１５４に出力する。以下において、準備時間計算部１５３が、総準備時間を計算する処理の一例について説明する。
【００４６】
準備時間計算部１５３は、式（１）〜式（４）に基づいて、事前蓄積可能時間Ｔ１、状態構築処理時間Ｔ２、入力データ受信時間Ｔ３、配備所要時間Ｔ４を算出する。式（１）〜式（４）に含まれる記号は、上記の処理パラメータ、実行ノードパラメータで説明した各記号に対応する。
【００４７】
事前蓄積可能時間Ｔ１＝Ｓ／Ｗｄ・・・（１）
状態構築処理時間Ｔ２＝Ｔｐ×Ｒｐ・・・（２）
入力データ受信時間Ｔ３＝Ｄｄ／Ｗｄ・・・（３）
配備所要時間Ｔ４＝Ｄｄ／Ｗｐ・・・（４）
【００４８】
ここで、準備時間計算部１５３は、時間Ｔ１、Ｔ２、Ｔ３の関係が、条件１を満たす場合には、式（５）に基づいて、総準備時間ＴＡを計算する。一方、準備時間計算部１５３は、Ｔ１、Ｔ２、Ｔ３の関係が、条件２を満たす場合には、式（６）に基づいて、総準備時間ＴＡを計算する。
【００４９】
Ｔ３＞Ｔ１＋Ｔ２・・・（条件１）
Ｔ３≦Ｔ１＋Ｔ２・・・（条件２）
【００５０】
総準備時間ＴＡ＝Ｔ３＋Ｔ４−Ｔ１・・・（５）
総準備時間ＴＡ＝Ｔ２＋Ｔ４・・・（６）
【００５１】
ここで、条件１を満たす場合には、実行ノード５０の蓄積余地に対して、実行ノード５０の処理能力が十分に速いことを意味する。図８は、条件１を満たす場合の実行ノードの各種所要時間を示す図である。図８に示すように、条件１を満たす場合には、時間Ｔ１〜Ｔ４の関係は、図８に示すものとなる。ノード５０は、配備待機、処理配備、状態構築を行った後に、処理を開始するものとする。
【００５２】
配備待機は、例えば、実行ノード５０がサーバ１００から処理が配備されることを待機する処理である。図８に示す例では、配備待機の時間がＴＢ１となり、時間ＴＢ１が経過した時点で、処理の配備を受け付けたことを示す。例えば、時間ＴＢ１は、配備順序の入れ替えによって増減する時間である。処理配備は、処理を配備する処理を示す。状態構築は、集計、統計を行うため、十分な入力データを蓄積する処理である。
【００５３】
なお、蓄積（破棄）の時間ＴＢ２は、ストレージの余地の問題で、状態構築までに入力保持できない時間を示す。条件１を満たす場合には、状態構築完了までに蓄積データ分の処理が終わり、リアルタイムに届く入力データを待機して状態構築が完了するパターンとなる。
【００５４】
一方、条件２を満たす場合には、実行ノード５０の処理能力に対して、蓄積余地が十分に大きいことを意味する。図９は、条件２を満たす場合の実行ノードの各種所要時間を示す図である。図９に示すように、条件２を満たす場合には、Ｔ１〜Ｔ４の関係は、図９に示すものとなる。ノード５０は、配備待機、処理配備、状態構築を行った後に、処理を開始するものとする。配備待機、処理配備、状態構築に関する説明は、図８の説明と同様である。時間ＴＣ１は、入力データを溜めても、処理が追いつかず状態構築完了が早まらない時間を示す。
【００５５】
条件２を満たす場合には、状態構築開始までに十分な入力データが蓄積され、状態構築処理が終わり次第、状態構築が完了するパターンとなる。
【００５６】
配備順序決定部１５４は、各実行ノード５０の総準備時間の情報を基にして、処理を実行ノード５０に配備する順序を決定する処理部である。配備順序決定部１５４は、総準備時間の大きい実行ノード５０から総準備時間の小さい実行ノード５０の順に、処理を配備する順序を決定する。
【００５７】
配備順序決定部１５４は、処理を配備する順序を決定した後に、全実行ノード５０に対して、入力蓄積指示を送信する。そして、配備順序決定部１５４は、入力蓄積指示を送信した後に、決定した順序に従って、各実行ノード５０に処理を配備していく。なお、配備順序決定部１５４は、全実行ノード５０に対して、入力指示を送信した後に、処理を配備する順序を決定し、決定した順序に従って、各実行ノード５０に処理を配備するように動作しても良い。
【００５８】
ところで、配備順序決定部１５４は、状態構築処理時間Ｔ２の短い実行ノード５０に関しては、入力蓄積指示を送信するタイミングを遅らせても良い。図１０は、配備順序決定部のその他の処理を補足説明するための図である。例えば、時刻ＴＤ１のタイミングで、実行ノード５０ａに入力蓄積指示を送信すると、状態構築が時刻ＴＥ１で終了し、時刻ＴＤ２のタイミングで入力蓄積指示を送信すると、状態構築が時刻ＴＥ２で終了するものとする。
【００５９】
ここで、実行ノード５０ｄの状態構築は、実行ノード５０ｃの状態構築が終了するまで、開始できないので、実行ノード５０ａの状態構築がＴＥ１に終了しても、ＴＥ２に終了しても、実行ノード５０ｄの状態構築の開始時間は変わらないことになる。このため、配備順序決定部１５４は、入力蓄積指示を送信するタイミングを遅らせても、実行ノード５０全体の処理の終了時間は変わらない。しかし、入力蓄積指示を送信するタイミングを遅らせることで、実行ノード５０ａの蓄積リソースを削減できる。
【００６０】
次に、本実施例に係るサーバ１００の処理手順の一例について説明する。図１１は、本実施例に係るサーバの処理手順を示すフローチャートである。図１１に示すように、サーバ１００の取得部１５１は、優先度情報、処理パラメータ、実行ノードパラメータを取得する（ステップＳ１０１）。
【００６１】
サーバ１００の配備計画計算部１５２は、配備計画データ１４４を計算する（ステップＳ１０２）。サーバ１００の配備順序決定部１５４は、全実行ノード５０に、入力蓄積指示を送信する（ステップＳ１０３）。サーバ１００の準備時間算出部１５３は、各実行ノード５０の総準備時間を計算する（ステップＳ１０４）。配備順序決定部１５４は、処理の配備順序を計算する（ステップＳ１０５）。
【００６２】
配備順序決定部１５４は、全実行ノード５０への配備が完了した場合には（ステップＳ１０６，Ｙｅｓ）、処理を終了する。一方、配備順序決定部１５４は、全実行ノード５０への配備が完了していない場合には（ステップＳ１０６，Ｎｏ）、次の実行ノード５０を選択する（ステップＳ１０７）。
【００６３】
配備順序決定部１５４は、選択した実行ノード５０に分散対象の処理を配備する（ステップＳ１０８）。配備順序決定部１５４は、選択した実行ノード５０への全処理の配備が完了していない場合には（ステップＳ１０９，Ｎｏ）、ステップＳ１０８に移行する。一方、配備順序決定部１５４は、選択した実行ノード５０への全処理の配備が完了した場合には（ステップＳ１０９，Ｙｅｓ）、ステップＳ１０６に移行する。
【００６４】
次に、実行ノード５０の処理手順の一例について説明する。図１２は、入力データに対する実行ノードの処理手順を示すフローチャート（１）である。図１２に示すように、実行ノード５０は、停止指示ありか否かを判定する（ステップＳ２０１）。実行ノード５０は、停止指示がある場合には（ステップＳ２０１，Ｙｅｓ）、処理を終了する。
【００６５】
一方、実行ノード５０は、停止指示がない場合には（ステップＳ２０１，Ｎｏ）、入力データがあるか否かを判定する（ステップＳ２０２）。実行ノード５０は、入力データがない場合には（ステップＳ２０２，Ｎｏ）、ステップＳ２０１に移行する。
【００６６】
実行ノード５０は、入力データがある場合には（ステップＳ２０２，Ｙｅｓ）、入力データに対して処理を実行する（ステップＳ２０３）。
【００６７】
図１３は、入力データに対する実行ノードの処理手順を示すフローチャート（２）である。図１３に示すように、実行ノード５０は、蓄積済みの入力データがあるか否かを判定する（ステップＳ３０１）。実行ノード５０は、蓄積済みの入力データがある場合には（ステップＳ３０１，Ｙｅｓ）、蓄積済みの入力データに対して処理を実行し（ステップＳ３０２）、ステップＳ３０１に移行する。
【００６８】
一方、実行ノード５０は、蓄積済みの入力データがない場合には（ステップＳ３０１，Ｎｏ）、蓄積機能に蓄積完了を指示する（ステップＳ３０３）。実行ノード５０は、停止指示がある場合には（ステップＳ３０４，Ｙｅｓ）、処理を終了する。
【００６９】
実行ノード５０は、停止指示がない場合には（ステップＳ３０４，Ｎｏ）、入力データがあるか否かを判定する（ステップＳ３０５）。実行ノード５０は、入力データがない場合には（ステップＳ３０５，Ｎｏ）、ステップＳ３０４に移行する。
【００７０】
実行ノード５０は、入力データがある場合には（ステップＳ３０５，Ｙｅｓ）、入力データに対して処理を実行し（ステップＳ３０６）、ステップＳ３０４に移行する。
【００７１】
図１４は、実行ノードが実行する蓄積処理の処理手順を示すフローチャートである。図１４に示すように、実行ノード５０は、完了指示がある場合には（ステップＳ４０１，Ｙｅｓ）、蓄積処理を終了する。一方、実行ノード５０は、完了指示がない場合には（ステップＳ４０１，Ｎｏ）、入力データがあるか否かを判定する（ステップＳ４０２）。
【００７２】
実行ノード５０は、入力データがない場合には（ステップＳ４０２，Ｎｏ）、ステップＳ４０１に移行する。一方、実行ノード５０は、入力データがある場合には（ステップＳ４０２，Ｙｅｓ）、ストレージに入力データを蓄積する余地があるか否かを判定する（ステップＳ４０３）。実行ノード５０は、ストレージに入力データを蓄積する余地がある場合には（ステップＳ４０３，Ｙｅｓ）、ステップＳ４０５に移行する。
【００７３】
実行ノード５０は、ストレージに入力データを蓄積する余地がない場合には（ステップＳ４０３，Ｎｏ）、新しい入力データ分の余地ができるまで、ストレージから古い入力データを削除する（ステップＳ４０４）。実行ノード５０は、入力データをストレージに蓄積し（ステップＳ４０５）、ステップＳ４０１に移行する。
【００７４】
次に、本実施例に係るサーバ１００の効果について説明する。サーバ１００は、処理パラメータと、実行ノードパラメータとを基にして、実行ノード５０に処理を配備した場合に、処理の実行を開始するまでに要する総準備時間を実行ノード５０毎に算出する。サーバ１００は、各実行ノード５０の総準備時間を基にして、総準備時間の大きい実行ノード５０から総準備時間の小さい実行ノード５０の順に、処理を配備する順序を決定する。このため、総準備時間の大きい実行ノード５０は、準備時間の小さい実行ノード５０よりも早めに総準備を開始することができ、処理を各ノードに分散配備してから、結果を得るまでに時間を短縮することができる。
【００７５】
図１５は、本実施例の効果を説明するための図である。例えば、実行ノード５０ａ，５０ｂ，５０ｃ，５０ｄにそれぞれ、処理Ｙ１，Ｙ２，Ｙ３，Ｚ１を配備する場合を想定する。ここで、総準備時間の大小関係を、実行ノード５０ｃ＞実行ノード５０ａ＞実行ノードｂ＞実行ノード１０ｄとする。ここで、総準備時間を考慮しないで、例えば、実行ノード５０ａ，５０ｂ，５０ｃ，５０ｄの順に、処理Ｙ１〜Ｙ３，Ｚ１を配備すると、実行ノード５０ｄの状態構築が完了する時刻は、時刻ｔ４となる。
【００７６】
これに対して、総準備時間の大きい、実行ノード５０ｃ，５０ａ，５０ｂ，５０ｄの順に、処理Ｙ３，Ｙ１，Ｙ２，Ｚ１を配備すると、例えば、実行ノード５０ｄの状態構築が完了する時刻はｔ６となる。このため、処理を各実行ノード５０に分散配備してから、結果を得るまでに時間を短縮することができる。
【００７７】
また、サーバ１００は、事前蓄積可能時間Ｔ１、状態構築処理時間Ｔ２、入力データ受信時間Ｔ３、配備所要時間Ｔ４を算出し、算出した各時間Ｔ１〜Ｔ４を用いて、総準備時間を算出する。このため、各実行ノード５０のストレージの蓄積余地、処理能力に応じて、正確な総準備時間を算出することができる。
【００７８】
サーバ１００は、条件１を満たす場合に、式（５）に基づいて、総準備時間を算出する。このため、蓄積余地に対して処理能力が十分速い実行ノード５０の総準備時間を適切に算出することができる。
【００７９】
サーバ１００は、条件２を満たす場合に、式（６）に基づいて、総準備時間を算出する。このため、処理能力に対して蓄積余地が十分大きい実行ノード５０の総準備時間を適切に算出することができる。
【００８０】
サーバ１００は、各実行ノードに処理を配備する前に、配備される予定の処理で用いる入力データの蓄積指示を、複数のノードに送信する。このため、処理が配備される前に、処理で用いる入力データを事前に蓄積しておけるため、総準備時間を短縮することができる。
【００８１】
次に、上記実施例に示したサーバ１００と同様の機能を実現する処理分散制御プログラムを実行するコンピュータの一例について説明する。図１６は、処理分散制御プログラムを実行するコンピュータの一例を示す図である。
【００８２】
図１６に示すように、コンピュータ２００は、各種演算処理を実行するＣＰＵ２０１と、ユーザからのデータの入力を受け付ける入力装置２０２と、ディスプレイ２０３とを有する。また、コンピュータ２００は、記憶媒体からプログラム等を読み取る読み取り装置２０４と、ネットワークを介して他のコンピュータとの間でデータの授受を行うインターフェース装置２０５とを有する。また、コンピュータ２００は、各種情報を一時記憶するＲＡＭ２０６と、ハードディスク装置２０７とを有する。そして、各装置２０１〜２０７は、バス２０８に接続される。
【００８３】
ハードディスク装置２０７は、準備時間算出プログラム２０７ａ、配備順序決定プログラム２０７ｂを有する。ＣＰＵ２０１は、準備時間算出プログラム２０７ａ、配備順序決定プログラム２０７ｂを読み出してＲＡＭ２０６に展開する。準備時間算出プログラム２０７ａは、準備時間プロセス２０６ａとして機能する。配備順序決定プログラム２０７ｂは、配備順序決定プロセス２０６ｂとして機能する。準備時間算出プロセス２０６ａの処理は、準備時間算出部１５３の処理に対応する。配備順序決定プロセス２０６ｂの処理は、配備順序決定部１５４の処理に対応する。
【００８４】
なお、準備時間算出プログラム２０７ａ、配備順序プログラム２０７ｂについては、必ずしも最初からハードディスク装置２０７に記憶させておかなくても良い。例えば、コンピュータ２００に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」に各プログラムを記憶させておく。そして、コンピュータ２００が準備時間算出プログラム２０７ａ、配備順序プログラム２０７ｂを読み出して実行するようにしてもよい。
【００８５】
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
【００８６】
（付記１）処理を分散して実行する複数のノードに配備する予定の処理の情報および前記ノードの情報を基にして、前記ノードに処理を配備した場合に、前記処理の実行を開始するまでに要する準備時間をノード毎に算出する準備時間算出部と、
前記準備時間算出部によって算出された各ノードの準備時間を基にして、準備時間の大きいノードから準備時間の小さいノードの順に、処理を配備する順序を決定し、決定した順序に従って各ノードに処理を配備する配備順序決定部と
を有することを特徴とする処理分散制御装置。
【００８７】
（付記２）前記準備時間算出部は、前記ノードが事前にデータを蓄積する場合に要する時間を示す第１時間と、前記ノードが配備された処理を実行可能な状態に構築するまでの時間を示す第２時間と、前記ノードが前記処理に用いるデータを受信するまでの時間を示す第３時間と、前記ノードが前記処理を配備するために要する時間を示す第４時間とを算出し、前記第１時間、前記第２時間、前記第３時間、前記第４時間を基にして、前記ノード毎の準備時間を算出することを特徴とする付記１に記載の処理分散制御装置。
【００８８】
（付記３）前記準備時間算出部は、前記第１時間と前記第２時間を加算した時間よりも、前記第３時間が大きい場合には、前記第３時間と前記第４時間とを加算した時間から前記第１時間を減算した時間を、前記ノードの準備時間として算出することを特徴とする付記２に記載の処理分散制御装置。
【００８９】
（付記４）前記準備時間算出部は、前記第１時間と前記第２時間を加算した時間よりも、前記第３時間が大きくない場合には、前記第２時間と前記第４時間とを加算した時間を、前記ノードの準備時間として算出することを特徴とする付記２または３に記載の処理分散制御装置。
【００９０】
（付記５）前記配備順序決定部は、前記複数のノードに処理を配備する前に、配備される予定の処理で用いる入力情報の蓄積指示を、前記複数のノードに送信することを特徴とする付記１に記載の処理分散制御装置。
【００９１】
（付記６）コンピュータが実行する処理分散制御方法であって、
処理を分散して実行する複数のノードに配備する予定の処理の情報および前記ノードの情報を基にして、前記ノードに処理を配備した場合に、前記処理の実行を開始するまでに要する準備時間をノード毎に算出し、
前記準備時間算出部によって算出された各ノードの準備時間を基にして、準備時間の大きいノードから準備時間の小さいノードの順に、処理を配備する順序を決定し、
決定した順序に従って各ノードに処理を配備する
処理を実行することを特徴とする処理分散制御方法。
【００９２】
（付記７）前記準備時間を算出する処理は、前記ノードが事前にデータを蓄積する場合に要する時間を示す第１時間と、前記ノードが配備された処理を実行可能な状態に構築するまでの時間を示す第２時間と、前記ノードが前記処理に用いるデータを受信するまでの時間を示す第３時間と、前記ノードが前記処理を配備するために要する時間を示す第４時間とを算出し、前記第１時間、前記第２時間、前記第３時間、前記第４時間を基にして、前記ノード毎の準備時間を算出することを特徴とする付記６に記載の処理分散制御方法。
【００９３】
（付記８）前記準備時間を算出する処理は、前記第１時間と前記第２時間を加算した時間よりも、前記第３時間が大きい場合には、前記第３時間と前記第４時間とを加算した時間から前記第１時間を減算した時間を、前記ノードの準備時間として算出することを特徴とする付記７に記載の処理分散制御方法。
【００９４】
（付記９）前記準備時間を算出する処理は、前記第１時間と前記第２時間を加算した時間よりも、前記第３時間が大きくない場合には、前記第２時間と前記第４時間とを加算した時間を、前記ノードの準備時間として算出することを特徴とする付記７または８に記載の処理分散制御方法。
【００９５】
（付記１０）前記準備時間を算出する処理は、前記複数のノードに処理を配備する前に、配備される予定の処理で用いる入力情報の蓄積指示を、前記複数のノードに送信することを特徴とする付記６に記載の処理分散制御方法。
【００９６】
（付記１１）コンピュータに、
処理を分散して実行する複数のノードに配備する予定の処理の情報および前記ノードの情報を基にして、前記ノードに処理を配備した場合に、前記処理の実行を開始するまでに要する準備時間をノード毎に算出し、
前記準備時間算出部によって算出された各ノードの準備時間を基にして、準備時間の大きいノードから準備時間の小さいノードの順に、処理を配備する順序を決定し、
決定した順序に従って各ノードに処理を配備する
処理を実行させることを特徴とする処理分散制御プログラム。
【００９７】
（付記１２）前記準備時間を算出する処理は、前記ノードが事前にデータを蓄積する場合に要する時間を示す第１時間と、前記ノードが配備された処理を実行可能な状態に構築するまでの時間を示す第２時間と、前記ノードが前記処理に用いるデータを受信するまでの時間を示す第３時間と、前記ノードが前記処理を配備するために要する時間を示す第４時間とを算出し、前記第１時間、前記第２時間、前記第３時間、前記第４時間を基にして、前記ノード毎の準備時間を算出することを特徴とする付記１１に記載の処理分散制御プログラム。
【００９８】
（付記１３）前記準備時間を算出する処理は、前記第１時間と前記第２時間を加算した時間よりも、前記第３時間が大きい場合には、前記第３時間と前記第４時間とを加算した時間から前記第１時間を減算した時間を、前記ノードの準備時間として算出することを特徴とする付記１２に記載の処理分散制御プログラム。
【００９９】
（付記１４）前記準備時間を算出する処理は、前記第１時間と前記第２時間を加算した時間よりも、前記第３時間が大きくない場合には、前記第２時間と前記第４時間とを加算した時間を、前記ノードの準備時間として算出することを特徴とする付記１１または１２に記載の処理分散制御プログラム。
【０１００】
（付記１５）前記準備時間を算出する処理は、前記複数のノードに処理を配備する前に、配備される予定の処理で用いる入力情報の蓄積指示を、前記複数のノードに送信することを特徴とする付記１１に記載の処理分散制御プログラム。
【符号の説明】
【０１０１】
２ａ，２ｂ，２ｃ，２ｄ，２ｅ，２ｆ，２ｇ，２ｈ，２ｉ  機器
５０ａ，５０ｂ，５０ｃ，５０ｄ  実行ノード
１００  サーバ
【図１】
0006620524.tif 000002
【図２】
0006620524.tif 000003
【図３】
0006620524.tif 000004
【図４】
0006620524.tif 000005
【図５】
0006620524.tif 000006
【図６】
0006620524.tif 000007
【図７】
0006620524.tif 000008
【図８】
0006620524.tif 000009
【図９】
0006620524.tif 000010
【図１０】
0006620524.tif 000011
【図１１】
0006620524.tif 000012
【図１２】
0006620524.tif 000013
【図１３】
0006620524.tif 000014
【図１４】
0006620524.tif 000015
【図１５】
0006620524.tif 000016
【図１６】
0006620524.tif 000017
【図１７】
0006620524.tif 000018
【図１８】
0006620524.tif 000019