並列分散処理方法及び並列分散処理システム
【課題】マスター・スレーブ型システムにおいて、外部の監視コンピュータや監視プログラムを導入することなく、各スレーブの処理効率をマスターが把握する。
【解決手段】並列分散処理システム4により実行される並列分散処理方法であって、まず、スレーブ1が、タスクを実行すると共に、並列分散処理システム4内で予め定められた計測単位を用いて当該タスクの実行を計測し、計測結果を格納部11に格納し、格納された計測結果をマスター2に送信する。次に、マスター2が、受信した計測結果と送信元のスレーブ1を識別する情報とを関連付け、集計結果として集計部21に格納し、格納された集計結果に基づいて、スレーブ1に対する指示情報を生成し、送信する。次に、スレーブ1が、受信した指示情報に基づいて、当該スレーブ1の動作を制御する。
【解決手段】並列分散処理システム4により実行される並列分散処理方法であって、まず、スレーブ1が、タスクを実行すると共に、並列分散処理システム4内で予め定められた計測単位を用いて当該タスクの実行を計測し、計測結果を格納部11に格納し、格納された計測結果をマスター2に送信する。次に、マスター2が、受信した計測結果と送信元のスレーブ1を識別する情報とを関連付け、集計結果として集計部21に格納し、格納された集計結果に基づいて、スレーブ1に対する指示情報を生成し、送信する。次に、スレーブ1が、受信した指示情報に基づいて、当該スレーブ1の動作を制御する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、タスクを並列分散処理する並列分散処理方法及び並列分散処理システムに関する。
【背景技術】
【0002】
今日、非常に多数の、個々としては小さい一様なタスクを、複数の計算機で分散して処理する方法が用いられている。このような方法では、個々のタスクを処理する複数の計算機を「スレーブ」、各スレーブにタスクを割り当て、各スレーブの処理結果を集約する役割を果たす計算機を「マスター」と呼ぶことが多い。
【0003】
このようなマスター・スレーブ型システムとしては、Google(登録商標)社が提唱しているMapReduce技術や、そのオープンソース実装であるHadoop、Microsoft(登録商標)社が提唱しているDryad(登録商標)、更にはOpenMPI等が挙げられる。
【0004】
マスター・スレーブ型システムにおいては、各計算機の動作状況を監視することは必須である。監視を行う目的の一つは、故障や過負荷等の何らかの原因で予定通りの処理効率を発揮できていない計算機を発見することである。処理効率低下の原因が、特定の計算機がボトルネックになっている為であればそれを解決し、故障であれば修理や交換などの処置を施すことになる。
【0005】
計算機の動作状況を監視する技術としては、例えば下記特許文献1や下記非特許文献1に記載の技術が知られている。特許文献1では、監視対象の計算機を監視する専用の監視コンピュータを用意し、監視対象計算機の外部から当該監視対象計算機を監視する点が開示されている。非特許文献1では、監視対象の計算機に、専用の監視ソフトウェアをインストールして動作させ、監視対象の計算機上で実行されている監視対象のプロセス(監視対象のソフトウェアが動作している状態)の外部から当該監視対象プロセスを監視する点が開示されている。
【0006】
一方、サーバ・クライアント型システムにおいて、外部の監視コンピュータや監視ソフトウェアの助けを借りずに監視を行う技術としては、例えば下記特許文献2や下記特許文献3に記載の技術が知られている。特許文献2では、サーバがクライアントとの間の通信速度を監視して、通信速度に応じて、例えばクライアントに提供する画像データの解像度を下げる等、サーバの振る舞いを変化させる点が開示されている。特許文献3では、サーバが各クライアントへポーリングを行い、各クライアントの活動(死活)状況を監視し、不活動であると判断したクライアントをシステムから自動的に除外する点が開示されている。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2001−325161号公報
【特許文献2】特開2002−32295号公報
【特許文献3】特開平7−271701号公報
【非特許文献】
【0008】
【非特許文献1】The Ganglia Distributed Monitoring System: Design Implementation, and Experience、Parallel Computing Volume30, Issue 7
【発明の概要】
【発明が解決しようとする課題】
【0009】
マスター・スレーブ型システムにおいて、全タスクの処理をより早く終えられるよう、タスクのスレーブへの割り当て(スケジューリング)を工夫することが、マスターには求められる。そのようなスケジューリングを実現するためには、マスターは、各スレーブのタスクの処理効率を監視して、より処理効率の高いスレーブへタスクを優先的に割り当てたり、システム内の計算機プールに未使用の計算機がある場合は、処理効率の低いスレーブを停止して計算機プール内の他の計算機を新たにスレーブにしたりする等の工夫が必要となる。
【0010】
ここで、特許文献1や非特許文献1に記載の技術では、監視対象の計算機やプロセスの外側から、CPU使用率やメモリ使用率等の汎用的かつ客観的に監視可能な指標を監視することになる。特許文献1や非特許文献1に記載の技術では、CPU使用率やメモリ使用率が高い計算機またはプロセスには、高い負荷がかかっていることは検出できるが、それゆえに、タスクの処理効率が低いと判断することはできない。なぜならば、タスクを高い効率で処理しているからこそ、CPU使用率やメモリ使用率が高くなっていることもあり得るためである。言い換えると、特許文献1や非特許文献1に記載の技術では、外部から監視できる指標のみから、タスクの処理効率を間接的に推測することしかできない。
【0011】
また、特許文献1に記載の技術では、監視コンピュータを用意及び運用するコストや手間が発生し、非特許文献1に記載の技術では、監視ソフトウェアを動作させることによる余計な負荷が発生することも問題である。
【0012】
一方、特許文献2や特許文献3に記載の技術では、外部の監視コンピュータや監視ソフトウェアを必要としない。しかしながら、特許文献2に記載の技術は、サーバとクライアントとの間の通信速度を監視するのみであり、通信速度だけではタスクの処理効率を測ることはできない。また、特許文献3に記載の技術は、クライアントの活動状況を監視するのみであり、クライアントの活動状況だけではタスクの処理効率を測ることはできない。
【0013】
本発明は、上記のような課題を解決するために成されたものであり、マスター・スレーブ型システムにおいて、外部の監視コンピュータや監視プログラムを導入することなく、スレーブの処理効率をマスターが把握することができる並列分散処理方法及び並列分散処理システムを提供することを目的とする。
【課題を解決するための手段】
【0014】
本発明の一側面に係る並列分散処理方法は、一台以上のスレーブと、スレーブとネットワークを介して接続されているマスターとから構成され、タスクをスレーブにて並列分散処理する並列分散処理システム、により実行される並列分散処理方法であって、スレーブが、当該スレーブに割り当てられたタスクを実行すると共に、並列分散処理システム内で予め定められた計測単位を用いて当該タスクの実行を計測し、計測結果を当該スレーブの格納手段に格納する処理ステップと、スレーブが、当該スレーブの格納手段に格納された計測結果をマスターに送信する第1の報告ステップと、マスターが、スレーブから計測結果を受信し、当該計測結果と送信元の当該スレーブを識別する情報とを関連付け、集計結果として当該マスターの集計手段に格納する通信ステップと、マスターが、集計手段に格納された集計結果に基づいて、スレーブに対する指示情報を生成し、当該スレーブに送信する判断ステップと、スレーブが、マスターから指示情報を受信する第2の報告ステップと、スレーブが、第2の報告ステップにおいて受信された指示情報に基づいて、当該スレーブの動作を制御する制御ステップと、を備える。
【0015】
このように、スレーブにて、並列分散処理システム内で予め定められた計測単位を用いてタスクの実行が計測され、計測結果がマスターに送信されることで、マスターは、外部の監視コンピュータや監視プログラムを導入することなく、スレーブの処理効率を把握することができる。そして、マスターは、スレーブの処理効率に基づいてスレーブに指示を出し、スレーブは指示に基づいて動作を制御することで、マスターは、スレーブの処理効率に基づき、システム全体の動作を動的に制御することができる。
【0016】
また、判断ステップは、マスターが、集計手段に格納された集計結果のうち、通信ステップにおける送信元のスレーブからの一受信当たりの集計結果と、通信ステップにおける送信元のスレーブ以外のスレーブからの一受信当たりの集計結果とを比較し、比較結果に基づいて送信元のスレーブに対する指示情報を生成し、送信元のスレーブに送信してもよい。かかる場合、マスターは、対象スレーブの一受信当たりの集計結果と、他のスレーブの一受信当たりの集計結果との比較結果に基づいて、対象スレーブに指示を出すことができるため、より正確に対象スレーブの処理効率を把握することができると共に、より効率的にシステム全体の動作を動的に制御することができる。
【0017】
また、通信ステップは、マスターが、送信元のスレーブからの前回の計測結果の受信からの経過時間を更に関連付け、集計結果として当該マスターの集計手段に格納し、判断ステップは、マスターが、集計手段に格納された集計結果のうち、通信ステップにおける送信元のスレーブからの一受信の集計結果の単位時間当たりの値と、通信ステップにおける送信元のスレーブ以外のスレーブからの一受信の集計結果の単位時間当たりの値とを比較し、比較結果に基づいて送信元のスレーブに対する指示情報を生成し、送信元のスレーブに送信してもよい。かかる場合、マスターは、対象スレーブの一受信の集計結果の単位時間当たりの値と、他のスレーブの一受信の集計結果の単位時間当たりの値との比較結果に基づいて、対象スレーブに指示を出すことができるため、より正確に対象スレーブの処理効率を把握することができると共に、より効率的にシステム全体の動作を動的に制御することができる。
【0018】
また、判断ステップは、マスターが、集計手段に格納された集計結果のうち、送信元のスレーブの全ての集計結果の平均値と、送信元のスレーブ以外のスレーブの全ての集計結果の平均値とを比較し、比較結果に基づいて送信元のスレーブに対する指示情報を生成し、送信元のスレーブに送信してもよい。かかる場合、マスターは、対象スレーブの全ての集計結果の平均値と、他のスレーブの全ての集計結果の平均値との比較結果に基づいて、対象スレーブに指示を出すことができるため、より正確に対象スレーブの処理効率を把握することができると共に、より効率的にシステム全体の動作を動的に制御することができる。
【0019】
また、通信ステップは、マスターが、送信元のスレーブからの前回の計測結果の受信からの経過時間を更に関連付け、集計結果として当該マスターの集計手段に格納し、判断ステップは、マスターが、集計手段に格納された集計結果のうち、送信元のスレーブの全ての集計結果の単位時間当たりの値の平均値と、送信元のスレーブ以外のスレーブの全ての集計結果の単位時間当たりの値の平均値とを比較し、比較結果に基づいて送信元のスレーブに対する指示情報を生成し、送信元のスレーブに送信してもよい。かかる場合、マスターは、対象スレーブの全ての集計結果の単位時間当たりの値の平均値と、他のスレーブの全ての集計結果の単位時間当たりの値の平均値との比較結果に基づいて、対象スレーブに指示を出すことができるため、より正確に対象スレーブの処理効率を把握することができると共に、より効率的にシステム全体の動作を動的に制御することができる。
【0020】
また、判断ステップは、マスターが、集計手段に格納された集計結果のうち、通信ステップにおけるスレーブからの一受信当たりの集計結果の、全てのスレーブに関する集計結果に対して統計処理を行い、統計処理結果に基づいて送信元のスレーブに対する指示情報を生成し、送信元のスレーブに送信してもよい。かかる場合、マスターは、スレーブからの一受信当たりの集計結果の、全てのスレーブに関する集計結果に対しての統計処理結果に基づいて、スレーブに指示を出すことができるため、より正確にスレーブの処理効率を把握することができると共に、より効率的にシステム全体の動作を動的に制御することができる。
【0021】
また、通信ステップは、マスターが、送信元のスレーブからの前回の計測結果の受信からの経過時間を更に関連付け、集計結果として当該マスターの集計手段に格納し、判断ステップは、マスターが、集計手段に格納された集計結果のうち、通信ステップにおけるスレーブからの一受信の集計結果の単位時間当たりの値の、全てのスレーブに関する値に対して統計処理を行い、統計処理結果に基づいて送信元のスレーブに対する指示情報を生成し、送信元のスレーブに送信してもよい。かかる場合、マスターは、スレーブからの一受信の集計結果の単位時間当たりの値の、全てのスレーブに関する値に対しての統計処理結果に基づいて、スレーブに指示を出すことができるため、より正確にスレーブの処理効率を把握することができると共に、より効率的にシステム全体の動作を動的に制御することができる。
【0022】
また、判断ステップは、集計手段に格納された集計結果のうち、通信ステップにおけるスレーブからの一受信当たりの集計結果の、全てのスレーブに関する平均値が、予め定められた閾値を超えた場合に、マスターが、当該マスターの負荷を下げる旨のスレーブに対する指示情報を生成し、当該スレーブに送信してもよい。かかる場合、マスターは、例えば、マスターの能力を超えた台数のスレーブが接続されていることを検出できるようになり、マスターの能力、または能力に応じて設定された条件に応じてスレーブの接続台数を動的に制御することが可能となる。
【0023】
ところで、並列分散処理方法に係る発明は、システムの発明として捉えることができ、同様の作用・効果を奏する。システムの発明は、以下のように記述することができる。
【0024】
本発明の一側面に係る並列分散処理システムは、一台以上のスレーブと、スレーブとネットワークを介して接続されているマスターとから構成され、タスクをスレーブにて並列分散処理する並列分散処理システムであって、スレーブは、当該スレーブに割り当てられたタスクを実行すると共に、並列分散処理システム内で予め定められた計測単位を用いて当該タスクの実行を計測し、計測結果を当該スレーブの格納手段に格納する処理手段と、当該スレーブの格納手段に格納された計測結果をマスターに送信し、当該送信の応答としてマスターから指示情報を受信する報告手段と、報告手段によって受信された指示情報に基づいて、当該スレーブの動作を制御する制御手段と、を備え、マスターは、スレーブから計測結果を受信し、当該計測結果と送信元の当該スレーブを識別する情報とを関連付け、集計結果として当該マスターの集計手段に格納する通信手段と、集計手段に格納された集計結果に基づいて、スレーブに対する指示情報を生成し、当該スレーブに送信する判断手段と、を備える。
【発明の効果】
【0025】
本発明によれば、マスター・スレーブ型システムにおいて、外部の監視コンピュータや監視プログラムを導入することなく、スレーブの処理効率をマスターが把握することができる。
【図面の簡単な説明】
【0026】
【図1】本発明の一実施形態に係る並列分散処理システムの概念図である。
【図2】本発明の一実施形態に係るスレーブの構成を示すブロック図である。
【図3】本発明の一実施形態に係るマスターの構成を示すブロック図である。
【図4】本発明の一実施形態に係るスレーブ及びマスターのハードウェア構成の一例を示す図である。
【図5】本発明の一実施形態に係るスレーブにおける並列分散処理方法の処理動作を示すフローチャートである。
【図6】本発明の一実施形態に係るマスターにおける並列分散処理方法の処理動作(その1)を示すフローチャートである。
【図7】本発明の一実施形態に係るマスターにおける並列分散処理方法の処理動作(その2)を示すフローチャートである。
【図8】本発明の一実施形態に係るマスターにおける並列分散処理方法の処理動作(その3)を示すフローチャートである。
【図9】本発明の一実施形態に係る集計部のテーブルデータの一例(その1)を示す図である。
【図10】本発明の一実施形態に係る集計部のテーブルデータの一例(その2)を示す図である。
【図11】本発明の一実施形態に係る集計部のテーブルデータの一例(その3)を示す図である。
【図12】本発明の一実施形態に係る集計部のテーブルデータの一例(その4)を示す図である。
【図13】本発明の一実施形態に係る集計部のテーブルデータの一例(その5)を示す図である。
【発明を実施するための形態】
【0027】
以下、添付図面を参照しながら本発明の実施形態を詳細に説明する。なお、図面の説明において同一又は同等の要素には同一の符号を付し、重複する説明を省略する。
【0028】
(並列分散処理システムの概要)
まず、図1を用いて、本発明の一実施形態に係る並列分散処理システムの全体像を説明する。図1は、並列分散処理システム4の概要を示す図である。並列分散処理システム4は、1台以上のスレーブ1と、マスター2とを含んで構成される。並列分散処理システム4において、各スレーブ1とマスター2とは、ネットワーク3を介して互いに通信可能である。
【0029】
スレーブ1及びマスター2は、それぞれサーバ装置であるが、これに限定されず、それぞれ、PC(Personal Computer)、ノートPC、及び携帯電話等の移動通信端末等であってもよい。ネットワーク3は、例えばインターネット網や移動通信ネットワーク等により構成されているが、これらに限定されない。
【0030】
並列分散処理システム4は、いわゆるマスター・スレーブ型のクラスタ(計算機の集合)であり、並列分散処理システム4において、多数のタスク(処理内容)であって、ただし個々は小さい一様なタスクを、1台以上のスレーブ1間で分散処理することで、並列分散処理が実行される。また、並列分散処理システム4では、マスター2が、全スレーブ1を管理している。
【0031】
(スレーブ1の構成)
図2は、本発明の一実施形態に係るスレーブ1の構成を示す図である。図2に示すスレーブ1は、処理部10(処理手段)、格納部11(格納手段)、報告部12(報告手段)、及び制御部13(制御手段)を含んで構成される。
【0032】
図4は、スレーブ1のハードウェア構成の一例を示す。スレーブ1は、ハードウェア構成として、CPU50と、RAM51と、ROM52と、キーボードやテンキーなどから成る入力部53と、外部との通信を行う通信部54と、補助記憶装置55と、ディスプレイなどから成る56と、を備える。前述したスレーブ1の各機能ブロックの機能は、RAM51などにプログラムやデータなどを読み込ませ、CPU50の制御の下でプログラムを実行することで実現される。なお、後述するマスター2も、上記図4のハードウェア構成と同様である。
【0033】
以下、図2に示すスレーブ1の各機能ブロックについて説明する。処理部10は、スレーブ1に割り当てられたタスクを実行すると共に、並列分散処理システム4内で予め定められた計測単位を用いて当該タスクの実行を計測し、計測結果を格納部11に格納する。処理部10は、スレーブ1に割り当てられたタスクが無くなるまで、この動作を繰り返す。
【0034】
計測単位については、並列分散処理システム4内の全スレーブ1とマスター2との間で予め決定しておく必要がある。計測単位は全スレーブ1において等しく計測(またはカウント)できるものなら何でもよく、例えば「処理したタスク数」や「秒数」等が挙げられる。本実施形態では、計測単位を「処理したタスク数」として説明する。なお、タスクの総数が非常に多く、個々のタスクは小さくて一様であるような状況を対象としている。
【0035】
処理部10は、計測結果を格納部11に格納する際に、一定間隔ごとに計測結果を格納する。ここで、一定間隔とは、一定の時間でもよいし、タスクを一定数処理する度でもよいが、並列分散処理システム4内の全スレーブ1とマスター2との間で予め決定しておく必要がある。また、処理部10は、処理結果を格納部11に格納すると、処理部10が保持する計測結果をゼロにリセットする。
【0036】
また、処理部10は、計測結果を格納部11に格納する際に、計測結果を格納するかどうかを判断してもよい。判断基準としては、例えば「前回格納時から1秒以上経過していたら格納する」や「タスクを1個処理する毎に格納する」等が挙げられる。判断基準は、並列分散処理システム4内の全スレーブ1で統一されている必要があるが、プログラム的に固定されていても良いし、設定ファイル等を用いて設定するようにしてもよい。本実施形態では、処理部10は、「タスクを1個処理する毎に格納する」という判断基準を用いて、計測結果を格納部11に格納するかどうかを判断するものとする。
【0037】
格納部11には、処理部10により計測結果が格納される。格納部11では、計測結果が格納される度に、格納される計測結果を上書きすることなく、それまでに格納済みの計測結果に加算する。
【0038】
報告部12は、格納部11に格納された計測結果を取り出し、取り出した計測結果をマスター2に送信する。そして、報告部12は、当該送信の応答としてマスター2から指示情報を受信し、受信した指示情報を報告部12に出力する。
【0039】
報告部12は、格納部11に格納された計測結果を取り出すと、格納部11の計測結果をゼロにリセットする。また、報告部12は、取り出した計測結果をマスター2に送信する際に、取り出した計測結果をマスター2に報告すべきかどうか、つまり、計測結果が「1」以上であるかどうかを判断してもよい。この場合、報告部12は、計測結果がゼロである際は、報告すべき計測結果が無いため待機し、報告すべき計測結果がある際は、取り出した計測結果を実際にマスター2に送信する。また、報告部12は、取り出した計測結果をマスター2に送信する際に、従来の並列分散処理技術における、スレーブからマスターへの処理結果の逐次報告と一緒に送信してもよい。
【0040】
制御部13は、報告部12から出力された指示情報を取得し、当該指示情報に基づいてスレーブ1の動作を制御する。指示情報の具体例としては、「特に何もしない」、「処理部10による処理が実行されている主スレッド、及び報告部12による処理が実行されている別スレッドの動作を即刻停止する」「処理部10が計測結果を格納部11に格納する際に用いる判断基準を変更する」等が挙げられる。
【0041】
(マスター2の構成)
図3は、本発明の一実施形態に係るマスター2の構成を示す図である。図3に示すマスター2は、通信部20(通信手段)、集計部21(集計手段)、判断部22(判断手段)、及び表示部23を含んで構成される。
【0042】
以下、図3に示すマスター2の各機能ブロックについて説明する。通信部20は、スレーブ1から計測結果を受信し、当該計測結果と送信元の当該スレーブ1を識別する情報とを関連付け、集計結果として集計部21に格納する。スレーブ1を識別する情報の具体例としては、スレーブ1のIPアドレス等が挙げられる。通信部20は、送信元のスレーブ1からの前回の計測結果の受信からの経過時間、又は送信元のスレーブ1からの計測結果の受信時刻を更に関連付け、集計結果として集計部21に格納してもよい。
【0043】
集計部21には、通信部20により、集計結果が格納される。集計部21では、例えば、集計結果に含まれるスレーブ1を識別する情報ごとに集計結果を格納及び集計するようにしてもよい。
【0044】
判断部22は、集計部21に格納された集計結果に基づいて、スレーブ1、マスター2及び並列分散処理システム4の状況や当該状況に伴う予測や指示等を判断し、判断結果に基づいてスレーブ1に対する指示情報を生成し、当該スレーブ1に送信する。判断内容としては、処理効率の低いスレーブ1の検出、マスター2自身の負荷の程度、又は並列分散処理システム4全体の処理効率から何らかの予測を行うこと等が挙げられる。以下では、判断部22の様々な処理パターンについて列挙する。これらの処理パターンの具体例については、後述のマスター2の各種実施形態の処理にて説明する。
【0045】
判断部22は、マスター2が、集計部21に格納された集計結果のうち、通信部20における送信元のスレーブ1からの一受信当たりの集計結果と、通信部20における送信元のスレーブ1以外のスレーブ1からの一受信当たりの集計結果とを比較し、比較結果に基づいて送信元のスレーブ1に対する指示情報を生成し、送信元のスレーブ1に送信してもよい。また、判断部22は、マスター2が、集計部21に格納された集計結果のうち、通信部20における送信元のスレーブ1からの一受信の集計結果の単位時間当たりの値と、通信部20における送信元のスレーブ1以外のスレーブ1からの一受信の集計結果の単位時間当たりの値とを比較し、比較結果に基づいて送信元のスレーブ1に対する指示情報を生成し、送信元のスレーブ1に送信してもよい。
【0046】
また、判断部22は、マスター2が、集計部21に格納された集計結果のうち、送信元のスレーブ1の全ての集計結果の平均値と、送信元のスレーブ1以外のスレーブ1の全ての集計結果の平均値とを比較し、比較結果に基づいて送信元のスレーブ1に対する指示情報を生成し、送信元のスレーブ1に送信してもよい。また、判断部22は、マスター2が、集計部21に格納された集計結果のうち、送信元のスレーブ1の全ての集計結果の単位時間当たりの値の平均値と、送信元のスレーブ1以外のスレーブ1の全ての集計結果の単位時間当たりの値の平均値とを比較し、比較結果に基づいて送信元のスレーブ1に対する指示情報を生成し、送信元のスレーブ1に送信してもよい。
【0047】
また、判断部22は、マスター2が、集計部21に格納された集計結果のうち、通信部20におけるスレーブ1からの一受信当たりの集計結果の、全てのスレーブ1に関する集計結果に対して統計処理を行い、統計処理結果に基づいて送信元のスレーブ1に対する指示情報を生成し、送信元のスレーブ1に送信してもよい。また、判断部22は、マスター2が、集計部21に格納された集計結果のうち、通信部20におけるスレーブ1からの一受信の集計結果の単位時間当たりの値の、全てのスレーブ1に関する値に対して統計処理を行い、統計処理結果に基づいて送信元のスレーブ1に対する指示情報を生成し、送信元のスレーブ1に送信してもよい。
【0048】
また、判断部22は、集計部21に格納された集計結果のうち、通信部20におけるスレーブ1からの一受信当たりの集計結果の、全てのスレーブ1に関する平均値が、予め定められた閾値を超えた場合に、マスター2が、当該マスターの負荷を下げる旨のスレーブ1に対する指示情報を生成し、当該スレーブ1に送信してよい。
【0049】
表示部23は、並列分散処理システム4のユーザに対して、並列分散処理システム4に関する情報を表示する。
【0050】
(スレーブ1の処理の説明)
続いて、スレーブ1における並列分散処理方法の処理の手順を、図5を参照して説明する。まず、スレーブ1は、タスクが割り当てられると、主スレッドともう一つの別スレッドを開始する。主スレッド上では処理部10による処理、具体的にはステップ101〜104が実行される。一方、別スレッド上では報告部12による処理、具体的にはステップ201〜205が実行される。
【0051】
はじめに、スレーブ1の主スレッド上での処理について説明する。まず、処理部10は、スレーブ1に割り当てられたタスクがまだ残っているかどうかの判断を行う(ステップ101)。ステップ101にて、タスクが残っていない場合、スレーブ1の動作は終了となり、主スレッドと別スレッドの両方が停止する。一方、ステップ101にて、タスクが残っている場合、処理部10は、タスクを一つ実行し、その傍らで予め定められた計測単位を用いてタスクの実行を計測する(ステップ102)。次に、処理部10は、計測結果を格納部11へ格納するかどうかを判断する(ステップ103)。ステップ103にて、格納部11へ格納すると判断した場合、処理部10は、計測した計測結果を格納部11へ格納し、処理部10の計測結果をゼロにリセットする(ステップ104)。なお、格納部11に以前の計測結果が残っていた場合、上書きすることなく、今回の計測結果を加算する。ステップ103にて、格納部11へ格納しないと判断した場合、ステップ101に進む。スレーブ1の主スレッドは、以上のステップ101〜104を、スレーブ1に割り当てられたタスクがなくなるまで繰り返す。
【0052】
続いて、スレーブ1の別スレッド上での処理について説明する。まず、報告部12は、格納部11から計測結果を取り出し、格納部11の計測結果をゼロにリセットする(ステップ201)。次に、報告部12は、取り出した計測結果をマスター2に報告すべきかどうか、つまり、計測結果が「1」以上であるかどうかを判断する(ステップ202)。ステップ202にて、計測結果がゼロであった場合は、報告すべき計測結果が無いため、判断結果は「NO」となり、ステップ201に進む。ステップ202にて、報告すべき計測結果がある場合は、報告部12は、計測結果をマスター2へ送信する(ステップ203)。次に、報告部12は、マスター2へ送信した計測結果に対する応答として、マスター2からの指示を受信する(ステップ204)。次に、報告部12は、マスター2から受信した指示を制御部13へ引き渡す(ステップ205)。指示を受け取った制御部13は、指示の内容に従って当該スレーブ1の動作を制御する。スレーブ1の別スレッドは、主スレッドが終了するまで、以上のステップ201〜205を繰り返す。
【0053】
ここで、スレーブ1における主スレッドと別スレッドは互いに非同期に動作する。主スレッドは、別スレッドの動作とは無関係に、ベストエフォートでタスクの処理、計測、及び計測結果の格納を繰り返す。別スレッドも、主スレッドの動作とは無関係に、計測結果の取り出し、マスターへの計測結果の送信、マスターからの指示の受信、制御部13への指示の受け渡し、という一連の動作を、ベストエフォートで主スレッドが終了するまで繰り返す。ところで、並列分散処理システム4全体には1台以上のスレーブ1が存在するが、スレーブ1の台数と、ある一つのスレーブ1の主スレッドの処理効率との間には何ら因果関係は無く、無関係である。一方、スレーブ1の台数と、ある一つのスレーブ1の別スレッドの効率には因果関係がある。なぜならば、スレーブ1の台数が増えると、マスター2が受信及び応答すべき報告の送信元スレーブ1が増えるため、マスター2の負荷が高くなり、ある一つのスレーブ1から見ると、マスター2からの応答が返ってくるまでの時間(以下、応答時間と呼ぶ)が長くなるためである。本実施形態のポイントは、スレーブ1における主スレッドと別スレッドの効率の比率を利用する、というところにある。
【0054】
(マスター2の処理の第1の例の説明)
続いて、マスター2による並列分散処理方法の処理の第1の例を、図6を参照して説明する。まず、通信部20は、各スレーブ1からの計測結果を受信する(ステップ301)。次に、通信部20は、時間情報を利用するか否かを判断する(ステップ302)。なお、以下の説明では、計測結果の送信元スレーブ1毎の最新の計測結果だけを用いるのではなく、送信元スレーブ1毎の計測結果の履歴を集計部21に記憶し、その平均値を用いることとする。
【0055】
ステップ302にて、時間情報を利用しないと判断した場合、通信部20は、受信した計測結果と、当該計測結果の送信元のスレーブ1を識別する送信元IDとを関連付け、集計結果として集計部21に格納する(ステップ303)。なお、時間情報を利用しないケースは、全スレーブ1の処理能力が均一、例えば、全スレーブ1のハードウェア構成が均一で、かつ、各スレーブ1とマスター2との間の接続経路も均一、すなわち通信遅延の差異を無視できる状況において有効なケースである。
【0056】
図9は、ステップ303の直後に、集計部21に格納された集計結果のテーブル例を示す図である。なお、図9(及び後述の図10〜図13)において、計測単位は「処理したタスク数」である。図9に示すテーブル例から、送信元スレーブ1毎に計測結果の平均値を算出すると、送信元IDがAAAAAのスレーブ1(以降、AAAAAと呼ぶ。他の送信IDのスレーブ1についても同様)、CCCCC、及びEEEEEの計測結果の平均値は「10」であり、BBBBBの平均値は「5」、DDDDDの平均値は「15」である。
【0057】
ステップ303に続いて、判断部22は、集計結果の平均値に関して、集計結果が異常であるか否かを判断する(ステップ304)。判断部22は、例えばBBBBBに関しては、次のような判断を行ってもよい。つまり、全スレーブ1とマスター2との間の接続経路が均一ならば、各スレーブ1から見た応答時間もほぼ均一なはずなのに、その間に処理できるタスク数が、BBBBBでは他の半分程度ということである。本実施形態では、各タスクは一様であることを前提とするため、BBBBBは何らかの原因により処理効率が低下していると判断できる。なぜなら、ハードウェア構成が均一である前提から、飛び抜けて低い値となるのはおかしいためである。一方、判断部22は、例えばDDDDDに関しては、次のような判断を行ってもよい。つまり、タスクは一様であり、かつ、ハードウェア構成が均一である前提から、DDDDDだけが飛び抜けて処理効率が高くなることも考え難い。つまり、何らかの原因、例えばネットワーク3接続の不調等により、DDDDDから見た応答時間が長くなっていると判断できる。なお「計数結果がいくつ以上(あるいは以下)ならば異常と見なすか」という判断のポリシーは、プログラム的に固定されていてもよいし、ポリシーファイル等で設定できるようになっていてもよい。
【0058】
判断部22による以上のような判断を踏まえ、判断部22が今回受信した計測結果がBBBBBやDDDDDからのものであった場合、ステップ304にて異常であると判断し(ステップ304の判断「YES」)、例えば当該スレーブ1の動作を即刻停止する等の相応の指示情報を生成して、当該スレーブ1に返信する(ステップ308)。判断部22が今回受信した計測結果がBBBBBやDDDDDからのものでなかった場合(ステップ304の判断「NO」)は、例えば「何もしない」という指示情報等の正常応答を生成して、当該スレーブ1に返信する(ステップ307)。
【0059】
なお、判断部22は、特定のスレーブ1において何らかの異常が発生したと判断した場合、マスター2はその情報を記憶しておき、例えば、タスクのスレーブ1への割り当て(スケジューリング)を工夫する等、その後の並列分散処理システム4全体の制御に役立てたり、例えば、表示部23により異常が発生したスレーブ1をユーザに報告する等、並列分散処理システム4のユーザに対して情報を提示したりすることができる。
【0060】
続いて、ステップ302にて時間情報を利用すると判断したケースについて説明する。時間情報を利用すると判断したケースは、全スレーブ1の処理能力が均一で、かつ、各スレーブ1とマスター2との間の接続経路も均一であるという前提を置くことができない状況において有効なケースである。
【0061】
ステップ302にて、時間情報を利用すると判断した場合、通信部20は、受信した計測結果と、当該計測結果の送信元のスレーブ1を識別する送信元IDと、当該計測結果を受信した時刻とを関連付け、集計結果として集計部21に格納する(ステップ305)。
【0062】
図10は、ステップ305の直後に、集計部21に格納された集計結果のテーブル例を示す図である。図10に示すテーブル例では、一見すると通信部20による一受信当りの計測結果の平均値は全て「10」となり、問題なさそうに見える。しかしながら、時間当り(以降の実施形態では「秒」を用いる)の計測結果の平均値を見ると、AAAAA、BBBBB、DDDDD、EEEEEでは「2」なのに対し、CCCCCでは「1」となっていることがわかる。
【0063】
ステップ205に続いて、判断部22は、集計結果の平均値に関して、集計結果が異常であるか否かを判断する(ステップ306)。判断部22は、CCCCCから計測結果を受信する周期は他のスレーブ1の倍であるが、これはCCCCCのネットワーク接続が元来他よりも性能が劣るものであるためか、それとも、CCCCCのネットワーク接続に何か不調が発生したためか、判断することはできない。しかしながら、判断部22は、CCCCCについて、単位時間あたりのタスクの処理効率が他よりも劣っていることを判断する。なお、判断部22は、CCCCCの処理効率が元来他よりも劣っているためか、それとも、CCCCCに何か故障が発生したためかの判断はつかないが、とにかくCCCCCの処理効率が他よりも劣っていることは判断する。
【0064】
判断部22による以上のような判断を踏まえ、判断部22が今回受信した計測結果がCCCCCからのものであった場合、判断部22は、ステップ306にて異常であると判断し(ステップ306の判断「YES」)、ステップ308に進み、CCCCCからのものでなかった場合、判断部22は、ステップ306にて異常でないと判断し(ステップ306の判断「NO」)、ステップ307に進む。
【0065】
(マスター2の処理の第2の例の説明)
続いて、マスター2による並列分散処理方法の処理の第2の例を、図7を参照して説明する。まず、通信部20は、各スレーブ1から計測結果を受信する(ステップ401)。次に、通信部20は、受信した計測結果と、当該計測結果の送信元のスレーブ1を識別する送信元IDとを関連付け、集計結果として集計部21に格納する(ステップ402)。図11及び図12はそれぞれ、ステップ402の直後に、集計部21に格納された集計結果のテーブル例を示す図である。図11に示すテーブル例では、スレーブ1の台数が5台、図12に示すテーブル例では、スレーブ1の台数が10台の場合の例である。
【0066】
次に、判断部22は、報告当りの集計結果を算出する(ステップ403)。ここで算出する報告当りの集計結果は、スレーブ1別のものではなく、全スレーブ1に関する平均値である。ここでの算出には、各スレーブ1の最新の計測結果のみを用いてもよいし、各スレーブ1の全計測結果を用いてもよい。図11に示すテーブル例では、算出結果は「10」となり、図12に示すテーブル例では、「20」となる。これは、図12に示すテーブル例では図11に示すテーブル例と比較して、マスター2が応答すべきスレーブ1の数が2倍になっており、各スレーブ1から見た応答時間が倍になる一方、各スレーブ1の主スレッドがタスクを処理する効率は並列分散処理システム4全体のスレーブ1の数に依存しないためである。
【0067】
次に、判断部22は、算出した報告当りの集計結果が閾値を超えているかどうかを判断する(ステップ404)。この閾値は、プログラム的に固定されていてもよいし、設定ファイル等で設定できるようになっていてもよい。なお、ここでの閾値は「15」に設定されているものとする。これは、「報告当りの集計結果が15を超える場合、応答時間が長過ぎる、つまりスレーブ1の数が多すぎる」ということを意味する。
【0068】
ステップ404にて、集計部21に格納された集計結果が、図11に示すテーブル例の場合、判断部22による判断結果は「NO」となり、判断部22は、計測結果の送信元スレーブ1に対して、正常応答、例えば「何もしない」という指示を含む応答を返信する(ステップ405)。一方、ステップ404にて、集計部21に格納された集計結果が、図12に示すテーブル例の場合、判断部22による判断結果は「YES」となり、判断部22は、マスター2の負荷を下げるための方法を判断する。例えば、判断部22は、処理効率の一番低いスレーブ1を選択し(ステップ406)、当該スレーブ1に対して停止指示を返信してもよい。図12に示すテーブル例の場合では、処理効率の一番低いJJJJJが選択される。
【0069】
ステップ406に続いて、判断部22は、計測結果を送信元スレーブ1が、ステップ406で選択されたスレーブ1からのものであるかどうかを判断する(ステップ407)。ステップ407にて、スレーブ1からのものであると判断した場合(ステップ407の判断「YES」)、判断部22は、送信元スレーブ1への返信として相応の指示情報、例えばスレーブ1を強制終了する等の指示情報を返信する(ステップ408)。ステップ407にて、スレーブ1からのものでないと判断した場合(ステップ407の判断「NO」)、計測結果の送信元スレーブ1に対して正常応答、例えば「何もしない」という指示を含む応答を返信する(ステップ405)。なお、ステップ406で選択したスレーブ(ここではJJJJJ)をマスター2内で記憶しておき、次にJJJJJから報告を受信した際に、ステップ408へ進み、判断部22は、相応の指示を返信するようにしてもよい。
【0070】
(マスター2の処理の第3の例の説明)
続いて、マスター2による並列分散処理方法の処理の第3の例を、図8を参照して説明する。まず、通信部20は、各スレーブ1からの計測結果を受信する(ステップ501)。次に、通信部20は、時間情報を利用するか否かを判断する(ステップ502)。ステップ502にて、時間情報を利用しないと判断した場合、通信部20は、受信した計測結果と、当該計測結果の送信元のスレーブ1を識別する送信元IDとを関連付け、集計結果として集計部21に格納する(ステップ503)。次に、判断部22は、通信部20の一受信当たりの集計結果の統計処理、例えば平均値の算出を行う(ステップ504)。
【0071】
ステップ502にて、時間情報を利用すると判断した場合、通信部20は、受信した計測結果と、当該計測結果の送信元のスレーブ1を識別する送信元IDと、当該計測結果を受信した時刻とを関連付け、集計結果として集計部21に格納する(ステップ505)。図13は、ステップ505の直後に、集計部21に格納された集計結果のテーブル例を示す図である。次に、判断部22は、時間当りの集計結果の統計処理、例えば平均値の算出を行う(ステップ506)。例えば図13に示すテーブル例から、判断部22は、並列分散処理システム4全体で1秒間に平均で10個のタスクを処理できていることを判断する。
【0072】
次に、判断部22は、ステップ504または506の統計処理に基づいて、予測的な判断や処理を行う(ステップ508)。例えば、並列分散処理システム4全体で処理すべきタスクの総数が1000個とする。図13に示すテーブル例から、判断部22は、15秒間で150のタスクが処理済みであり、1秒あたり平均で10個のタスクが処理されているため、全タスクを全て処理し終えるには、残り85秒程度を要することが予測でき、例えば、判断部22は、この予測結果を表示部23に出力し、表示部23が並列分散処理システム4のユーザへ当該予測結果を出力することが可能となる。次に、判断部22は、送信元スレーブ1へ指示を返信する(ステップ505)。判断部22は、予測に基づく判断に従って何かの具体的な処理を指示してもよいし、「特に何もしない」という指示でもよい。
【0073】
以下、本実施形態の作用効果について説明する。
【0074】
本実施形態の並列分散処理方法によれば、スレーブ1にて、並列分散処理システム4内で予め定められた計測単位を用いてタスクの実行が計測され、計測結果がマスター2に送信されることで、マスター2は、外部の監視コンピュータや監視プログラムを導入することなく、各スレーブ1の処理効率を把握することができる。そして、マスター2は、各スレーブ1の処理効率に基づいて各スレーブ1に指示を出し、各スレーブ1は指示に基づいて動作を制御することで、マスター2は、各スレーブ1の処理効率に基づき、並列分散処理システム4全体の動作を動的に制御することができる。
【0075】
また、判断部22は、マスター2が、集計部21に格納された集計結果のうち、通信部20による送信元のスレーブ1からの一受信当たりの集計結果と、通信部20による送信元のスレーブ1以外のスレーブ1からの一受信当たりの集計結果とを比較し、比較結果に基づいて送信元のスレーブ1に対する指示情報を生成し、送信元のスレーブ1に送信してもよい。かかる場合、マスター2は、対象スレーブ1の一受信当たりの集計結果と、他のスレーブ1の一受信当たりの集計結果との比較結果に基づいて、対象スレーブ1に指示を出すことができるため、より正確に対象スレーブ1の処理効率を把握することができると共に、より効率的に並列分散処理システム4全体の動作を動的に制御することができる。
【0076】
また、通信部20は、マスター2が、送信元のスレーブ1からの前回の計測結果の受信からの経過時間を更に関連付け、集計結果として当該マスター2の集計部21に格納し、判断部22は、マスター2が、集計部21に格納された集計結果のうち、通信部20による送信元のスレーブ1からの一受信の集計結果の単位時間当たりの値と、通信部20による送信元のスレーブ1以外のスレーブ1からの一受信の集計結果の単位時間当たりの値とを比較し、比較結果に基づいて送信元のスレーブ1に対する指示情報を生成し、送信元のスレーブ1に送信してもよい。かかる場合、マスター2は、対象スレーブ1の一受信の集計結果の単位時間当たりの値と、他のスレーブ1の一受信の集計結果の単位時間当たりの値との比較結果に基づいて、対象スレーブ1に指示を出すことができるため、より正確に対象スレーブ1の処理効率を把握することができると共に、より効率的に並列分散処理システム4全体の動作を動的に制御することができる。
【0077】
また、判断部22は、マスター2が、集計部21に格納された集計結果のうち、送信元のスレーブ1の全ての集計結果の平均値と、送信元のスレーブ1以外のスレーブ1の全ての集計結果の平均値とを比較し、比較結果に基づいて送信元のスレーブ1に対する指示情報を生成し、送信元のスレーブ1に送信してもよい。かかる場合、マスター2は、対象スレーブ1の全ての集計結果の平均値と、他のスレーブ1の全ての集計結果の平均値との比較結果に基づいて、対象スレーブ1に指示を出すことができるため、より正確に対象スレーブ1の処理効率を把握することができると共に、より効率的に並列分散処理システム4全体の動作を動的に制御することができる。
【0078】
また、通信部20は、マスター2が、送信元のスレーブ1からの前回の計測結果の受信からの経過時間を更に関連付け、集計結果として当該マスター2の集計部21に格納し、判断部22は、マスター2が、集計部21に格納された集計結果のうち、送信元のスレーブ1の全ての集計結果の単位時間当たりの値の平均値と、送信元のスレーブ1以外のスレーブ1の全ての集計結果の単位時間当たりの値の平均値とを比較し、比較結果に基づいて送信元のスレーブ1に対する指示情報を生成し、送信元のスレーブ1に送信してもよい。かかる場合、マスター2は、対象スレーブ1の全ての集計結果の単位時間当たりの値の平均値と、他のスレーブ1の全ての集計結果の単位時間当たりの値の平均値との比較結果に基づいて、対象スレーブ1に指示を出すことができるため、より正確に対象スレーブ1の処理効率を把握することができると共に、より効率的に並列分散処理システム4全体の動作を動的に制御することができる。
【0079】
また、判断部22は、マスター2が、集計部21に格納された集計結果のうち、通信部20によるスレーブ1からの一受信当たりの集計結果の、全てのスレーブ1に関する集計結果に対して統計処理を行い、統計処理結果に基づいて送信元のスレーブ1に対する指示情報を生成し、送信元のスレーブ1に送信してもよい。かかる場合、マスター2は、スレーブ1からの一受信当たりの集計結果の、全てのスレーブ1に関する集計結果に対しての統計処理結果に基づいて、各スレーブ1に指示を出すことができるため、より正確に各スレーブ1の処理効率を把握することができると共に、より効率的に並列分散処理システム4全体の動作を動的に制御することができる。
【0080】
また、通信部20は、マスター2が、送信元のスレーブ1からの前回の計測結果の受信からの経過時間を更に関連付け、集計結果として当該マスター2の集計部21に格納し、判断部22は、マスター2が、集計部21に格納された集計結果のうち、通信部20によるスレーブ1からの一受信の集計結果の単位時間当たりの値の、全てのスレーブ1に関する値に対して統計処理を行い、統計処理結果に基づいて送信元のスレーブ1に対する指示情報を生成し、送信元のスレーブ1に送信してもよい。かかる場合、マスター2は、スレーブ1からの一受信の集計結果の単位時間当たりの値の、全てのスレーブ1に関する値に対しての統計処理結果に基づいて、各スレーブ1に指示を出すことができるため、より正確に各スレーブ1の処理効率を把握することができると共に、より効率的に並列分散処理システム4全体の動作を動的に制御することができる。
【0081】
また、判断部22は、集計部21に格納された集計結果のうち、通信部20におけるスレーブ1からの一受信当たりの集計結果の、全てのスレーブ1に関する平均値が、予め定められた閾値を超えた場合に、マスター2が、当該マスター2の負荷を下げる旨のスレーブ1に対する指示情報を生成し、当該スレーブ1に送信してもよい。かかる場合、マスター2は、例えば、マスター2の能力を超えた台数のスレーブ1が接続されていることを検出できるようになり、マスター2の能力、または能力に応じて設定された条件に応じてスレーブ1の接続台数を動的に制御することが可能となる。
【0082】
マスター2は並列分散処理システム4内の全スレーブ1を管理する必要があるが、マスター2の処理能力も有限であるため、際限なく多数のスレーブ1を管理できるわけでない。従って、マスター2の能力を超過した数のスレーブ1の管理を要求された場合、マスター2がマスター2自身の負荷を監視することでそのことを検出し、適切な振る舞いを選択することができる。例えば、マスター2は、処理効率の低いスレーブ1を停止させ、マスター2が適切に管理できる範囲でベストな並列分散処理システム4を維持すること等が挙げられる。
【0083】
また、本実施形態の並列分散処理システム4によれば、マスター2は、並列分散処理システム4全体の処理効率を把握した上で、予測的な動作、例えば、全タスクの完了予測時刻をユーザへ提示すること等を行うことができる。
【0084】
本実施形態の並列分散処理システム4の応用事例としては、従来の並列分散処理システムにおいて、外部の監視コンピュータや監視ソフトウェアの助けを借りず、マスター2が各スレーブ1の処理効率を監視したり、マスター2がマスター2自身の負荷の程度を監視したり、マスター2が並列分散処理システム4全体の処理効率を把握して並列分散処理システム4全体の動作を予測的に判断したりして、スレーブ1に対する指示を生成し、並列分散処理システム4全体の振る舞いを制御するために用いることができる。
【0085】
以上の通り、本実施形態の並列分散処理システム4によれば、外部の監視コンピュータや監視プログラムを導入することなく、マスター・スレーブ型システムにおいて、各スレーブ1の処理効率をマスター2が把握することができ、その情報を、例えばタスクの各スレーブ1への割り当て(スケジューリング)に役立てることができる。また、マスター2の能力を超えた台数のスレーブ1が接続されていることを、マスター2自身が検出できるようになり、例えば、マスター2の能力(もしくは能力に応じて設定された条件)に応じてスレーブ1の接続台数を動的に制御することが可能となる。更に、各スレーブ1の処理効率をマスター2が把握できることを応用して、並列分散処理システム4全体の動作に関する予測を立てることができ、例えば、全タスクが完了するまでの予測時間を利用者へ提示する、などのサービスを提供して、スレーブ1に対して予測に基づく指示を与えることができるようになる。
【符号の説明】
【0086】
1…スレーブ、2…マスター、3…ネットワーク、4…並列分散処理システム、10…処理部、11…格納部、12…報告部、13…制御部、20…通信部、21…集計部、22…判断部、23…表示部。
【技術分野】
【0001】
本発明は、タスクを並列分散処理する並列分散処理方法及び並列分散処理システムに関する。
【背景技術】
【0002】
今日、非常に多数の、個々としては小さい一様なタスクを、複数の計算機で分散して処理する方法が用いられている。このような方法では、個々のタスクを処理する複数の計算機を「スレーブ」、各スレーブにタスクを割り当て、各スレーブの処理結果を集約する役割を果たす計算機を「マスター」と呼ぶことが多い。
【0003】
このようなマスター・スレーブ型システムとしては、Google(登録商標)社が提唱しているMapReduce技術や、そのオープンソース実装であるHadoop、Microsoft(登録商標)社が提唱しているDryad(登録商標)、更にはOpenMPI等が挙げられる。
【0004】
マスター・スレーブ型システムにおいては、各計算機の動作状況を監視することは必須である。監視を行う目的の一つは、故障や過負荷等の何らかの原因で予定通りの処理効率を発揮できていない計算機を発見することである。処理効率低下の原因が、特定の計算機がボトルネックになっている為であればそれを解決し、故障であれば修理や交換などの処置を施すことになる。
【0005】
計算機の動作状況を監視する技術としては、例えば下記特許文献1や下記非特許文献1に記載の技術が知られている。特許文献1では、監視対象の計算機を監視する専用の監視コンピュータを用意し、監視対象計算機の外部から当該監視対象計算機を監視する点が開示されている。非特許文献1では、監視対象の計算機に、専用の監視ソフトウェアをインストールして動作させ、監視対象の計算機上で実行されている監視対象のプロセス(監視対象のソフトウェアが動作している状態)の外部から当該監視対象プロセスを監視する点が開示されている。
【0006】
一方、サーバ・クライアント型システムにおいて、外部の監視コンピュータや監視ソフトウェアの助けを借りずに監視を行う技術としては、例えば下記特許文献2や下記特許文献3に記載の技術が知られている。特許文献2では、サーバがクライアントとの間の通信速度を監視して、通信速度に応じて、例えばクライアントに提供する画像データの解像度を下げる等、サーバの振る舞いを変化させる点が開示されている。特許文献3では、サーバが各クライアントへポーリングを行い、各クライアントの活動(死活)状況を監視し、不活動であると判断したクライアントをシステムから自動的に除外する点が開示されている。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2001−325161号公報
【特許文献2】特開2002−32295号公報
【特許文献3】特開平7−271701号公報
【非特許文献】
【0008】
【非特許文献1】The Ganglia Distributed Monitoring System: Design Implementation, and Experience、Parallel Computing Volume30, Issue 7
【発明の概要】
【発明が解決しようとする課題】
【0009】
マスター・スレーブ型システムにおいて、全タスクの処理をより早く終えられるよう、タスクのスレーブへの割り当て(スケジューリング)を工夫することが、マスターには求められる。そのようなスケジューリングを実現するためには、マスターは、各スレーブのタスクの処理効率を監視して、より処理効率の高いスレーブへタスクを優先的に割り当てたり、システム内の計算機プールに未使用の計算機がある場合は、処理効率の低いスレーブを停止して計算機プール内の他の計算機を新たにスレーブにしたりする等の工夫が必要となる。
【0010】
ここで、特許文献1や非特許文献1に記載の技術では、監視対象の計算機やプロセスの外側から、CPU使用率やメモリ使用率等の汎用的かつ客観的に監視可能な指標を監視することになる。特許文献1や非特許文献1に記載の技術では、CPU使用率やメモリ使用率が高い計算機またはプロセスには、高い負荷がかかっていることは検出できるが、それゆえに、タスクの処理効率が低いと判断することはできない。なぜならば、タスクを高い効率で処理しているからこそ、CPU使用率やメモリ使用率が高くなっていることもあり得るためである。言い換えると、特許文献1や非特許文献1に記載の技術では、外部から監視できる指標のみから、タスクの処理効率を間接的に推測することしかできない。
【0011】
また、特許文献1に記載の技術では、監視コンピュータを用意及び運用するコストや手間が発生し、非特許文献1に記載の技術では、監視ソフトウェアを動作させることによる余計な負荷が発生することも問題である。
【0012】
一方、特許文献2や特許文献3に記載の技術では、外部の監視コンピュータや監視ソフトウェアを必要としない。しかしながら、特許文献2に記載の技術は、サーバとクライアントとの間の通信速度を監視するのみであり、通信速度だけではタスクの処理効率を測ることはできない。また、特許文献3に記載の技術は、クライアントの活動状況を監視するのみであり、クライアントの活動状況だけではタスクの処理効率を測ることはできない。
【0013】
本発明は、上記のような課題を解決するために成されたものであり、マスター・スレーブ型システムにおいて、外部の監視コンピュータや監視プログラムを導入することなく、スレーブの処理効率をマスターが把握することができる並列分散処理方法及び並列分散処理システムを提供することを目的とする。
【課題を解決するための手段】
【0014】
本発明の一側面に係る並列分散処理方法は、一台以上のスレーブと、スレーブとネットワークを介して接続されているマスターとから構成され、タスクをスレーブにて並列分散処理する並列分散処理システム、により実行される並列分散処理方法であって、スレーブが、当該スレーブに割り当てられたタスクを実行すると共に、並列分散処理システム内で予め定められた計測単位を用いて当該タスクの実行を計測し、計測結果を当該スレーブの格納手段に格納する処理ステップと、スレーブが、当該スレーブの格納手段に格納された計測結果をマスターに送信する第1の報告ステップと、マスターが、スレーブから計測結果を受信し、当該計測結果と送信元の当該スレーブを識別する情報とを関連付け、集計結果として当該マスターの集計手段に格納する通信ステップと、マスターが、集計手段に格納された集計結果に基づいて、スレーブに対する指示情報を生成し、当該スレーブに送信する判断ステップと、スレーブが、マスターから指示情報を受信する第2の報告ステップと、スレーブが、第2の報告ステップにおいて受信された指示情報に基づいて、当該スレーブの動作を制御する制御ステップと、を備える。
【0015】
このように、スレーブにて、並列分散処理システム内で予め定められた計測単位を用いてタスクの実行が計測され、計測結果がマスターに送信されることで、マスターは、外部の監視コンピュータや監視プログラムを導入することなく、スレーブの処理効率を把握することができる。そして、マスターは、スレーブの処理効率に基づいてスレーブに指示を出し、スレーブは指示に基づいて動作を制御することで、マスターは、スレーブの処理効率に基づき、システム全体の動作を動的に制御することができる。
【0016】
また、判断ステップは、マスターが、集計手段に格納された集計結果のうち、通信ステップにおける送信元のスレーブからの一受信当たりの集計結果と、通信ステップにおける送信元のスレーブ以外のスレーブからの一受信当たりの集計結果とを比較し、比較結果に基づいて送信元のスレーブに対する指示情報を生成し、送信元のスレーブに送信してもよい。かかる場合、マスターは、対象スレーブの一受信当たりの集計結果と、他のスレーブの一受信当たりの集計結果との比較結果に基づいて、対象スレーブに指示を出すことができるため、より正確に対象スレーブの処理効率を把握することができると共に、より効率的にシステム全体の動作を動的に制御することができる。
【0017】
また、通信ステップは、マスターが、送信元のスレーブからの前回の計測結果の受信からの経過時間を更に関連付け、集計結果として当該マスターの集計手段に格納し、判断ステップは、マスターが、集計手段に格納された集計結果のうち、通信ステップにおける送信元のスレーブからの一受信の集計結果の単位時間当たりの値と、通信ステップにおける送信元のスレーブ以外のスレーブからの一受信の集計結果の単位時間当たりの値とを比較し、比較結果に基づいて送信元のスレーブに対する指示情報を生成し、送信元のスレーブに送信してもよい。かかる場合、マスターは、対象スレーブの一受信の集計結果の単位時間当たりの値と、他のスレーブの一受信の集計結果の単位時間当たりの値との比較結果に基づいて、対象スレーブに指示を出すことができるため、より正確に対象スレーブの処理効率を把握することができると共に、より効率的にシステム全体の動作を動的に制御することができる。
【0018】
また、判断ステップは、マスターが、集計手段に格納された集計結果のうち、送信元のスレーブの全ての集計結果の平均値と、送信元のスレーブ以外のスレーブの全ての集計結果の平均値とを比較し、比較結果に基づいて送信元のスレーブに対する指示情報を生成し、送信元のスレーブに送信してもよい。かかる場合、マスターは、対象スレーブの全ての集計結果の平均値と、他のスレーブの全ての集計結果の平均値との比較結果に基づいて、対象スレーブに指示を出すことができるため、より正確に対象スレーブの処理効率を把握することができると共に、より効率的にシステム全体の動作を動的に制御することができる。
【0019】
また、通信ステップは、マスターが、送信元のスレーブからの前回の計測結果の受信からの経過時間を更に関連付け、集計結果として当該マスターの集計手段に格納し、判断ステップは、マスターが、集計手段に格納された集計結果のうち、送信元のスレーブの全ての集計結果の単位時間当たりの値の平均値と、送信元のスレーブ以外のスレーブの全ての集計結果の単位時間当たりの値の平均値とを比較し、比較結果に基づいて送信元のスレーブに対する指示情報を生成し、送信元のスレーブに送信してもよい。かかる場合、マスターは、対象スレーブの全ての集計結果の単位時間当たりの値の平均値と、他のスレーブの全ての集計結果の単位時間当たりの値の平均値との比較結果に基づいて、対象スレーブに指示を出すことができるため、より正確に対象スレーブの処理効率を把握することができると共に、より効率的にシステム全体の動作を動的に制御することができる。
【0020】
また、判断ステップは、マスターが、集計手段に格納された集計結果のうち、通信ステップにおけるスレーブからの一受信当たりの集計結果の、全てのスレーブに関する集計結果に対して統計処理を行い、統計処理結果に基づいて送信元のスレーブに対する指示情報を生成し、送信元のスレーブに送信してもよい。かかる場合、マスターは、スレーブからの一受信当たりの集計結果の、全てのスレーブに関する集計結果に対しての統計処理結果に基づいて、スレーブに指示を出すことができるため、より正確にスレーブの処理効率を把握することができると共に、より効率的にシステム全体の動作を動的に制御することができる。
【0021】
また、通信ステップは、マスターが、送信元のスレーブからの前回の計測結果の受信からの経過時間を更に関連付け、集計結果として当該マスターの集計手段に格納し、判断ステップは、マスターが、集計手段に格納された集計結果のうち、通信ステップにおけるスレーブからの一受信の集計結果の単位時間当たりの値の、全てのスレーブに関する値に対して統計処理を行い、統計処理結果に基づいて送信元のスレーブに対する指示情報を生成し、送信元のスレーブに送信してもよい。かかる場合、マスターは、スレーブからの一受信の集計結果の単位時間当たりの値の、全てのスレーブに関する値に対しての統計処理結果に基づいて、スレーブに指示を出すことができるため、より正確にスレーブの処理効率を把握することができると共に、より効率的にシステム全体の動作を動的に制御することができる。
【0022】
また、判断ステップは、集計手段に格納された集計結果のうち、通信ステップにおけるスレーブからの一受信当たりの集計結果の、全てのスレーブに関する平均値が、予め定められた閾値を超えた場合に、マスターが、当該マスターの負荷を下げる旨のスレーブに対する指示情報を生成し、当該スレーブに送信してもよい。かかる場合、マスターは、例えば、マスターの能力を超えた台数のスレーブが接続されていることを検出できるようになり、マスターの能力、または能力に応じて設定された条件に応じてスレーブの接続台数を動的に制御することが可能となる。
【0023】
ところで、並列分散処理方法に係る発明は、システムの発明として捉えることができ、同様の作用・効果を奏する。システムの発明は、以下のように記述することができる。
【0024】
本発明の一側面に係る並列分散処理システムは、一台以上のスレーブと、スレーブとネットワークを介して接続されているマスターとから構成され、タスクをスレーブにて並列分散処理する並列分散処理システムであって、スレーブは、当該スレーブに割り当てられたタスクを実行すると共に、並列分散処理システム内で予め定められた計測単位を用いて当該タスクの実行を計測し、計測結果を当該スレーブの格納手段に格納する処理手段と、当該スレーブの格納手段に格納された計測結果をマスターに送信し、当該送信の応答としてマスターから指示情報を受信する報告手段と、報告手段によって受信された指示情報に基づいて、当該スレーブの動作を制御する制御手段と、を備え、マスターは、スレーブから計測結果を受信し、当該計測結果と送信元の当該スレーブを識別する情報とを関連付け、集計結果として当該マスターの集計手段に格納する通信手段と、集計手段に格納された集計結果に基づいて、スレーブに対する指示情報を生成し、当該スレーブに送信する判断手段と、を備える。
【発明の効果】
【0025】
本発明によれば、マスター・スレーブ型システムにおいて、外部の監視コンピュータや監視プログラムを導入することなく、スレーブの処理効率をマスターが把握することができる。
【図面の簡単な説明】
【0026】
【図1】本発明の一実施形態に係る並列分散処理システムの概念図である。
【図2】本発明の一実施形態に係るスレーブの構成を示すブロック図である。
【図3】本発明の一実施形態に係るマスターの構成を示すブロック図である。
【図4】本発明の一実施形態に係るスレーブ及びマスターのハードウェア構成の一例を示す図である。
【図5】本発明の一実施形態に係るスレーブにおける並列分散処理方法の処理動作を示すフローチャートである。
【図6】本発明の一実施形態に係るマスターにおける並列分散処理方法の処理動作(その1)を示すフローチャートである。
【図7】本発明の一実施形態に係るマスターにおける並列分散処理方法の処理動作(その2)を示すフローチャートである。
【図8】本発明の一実施形態に係るマスターにおける並列分散処理方法の処理動作(その3)を示すフローチャートである。
【図9】本発明の一実施形態に係る集計部のテーブルデータの一例(その1)を示す図である。
【図10】本発明の一実施形態に係る集計部のテーブルデータの一例(その2)を示す図である。
【図11】本発明の一実施形態に係る集計部のテーブルデータの一例(その3)を示す図である。
【図12】本発明の一実施形態に係る集計部のテーブルデータの一例(その4)を示す図である。
【図13】本発明の一実施形態に係る集計部のテーブルデータの一例(その5)を示す図である。
【発明を実施するための形態】
【0027】
以下、添付図面を参照しながら本発明の実施形態を詳細に説明する。なお、図面の説明において同一又は同等の要素には同一の符号を付し、重複する説明を省略する。
【0028】
(並列分散処理システムの概要)
まず、図1を用いて、本発明の一実施形態に係る並列分散処理システムの全体像を説明する。図1は、並列分散処理システム4の概要を示す図である。並列分散処理システム4は、1台以上のスレーブ1と、マスター2とを含んで構成される。並列分散処理システム4において、各スレーブ1とマスター2とは、ネットワーク3を介して互いに通信可能である。
【0029】
スレーブ1及びマスター2は、それぞれサーバ装置であるが、これに限定されず、それぞれ、PC(Personal Computer)、ノートPC、及び携帯電話等の移動通信端末等であってもよい。ネットワーク3は、例えばインターネット網や移動通信ネットワーク等により構成されているが、これらに限定されない。
【0030】
並列分散処理システム4は、いわゆるマスター・スレーブ型のクラスタ(計算機の集合)であり、並列分散処理システム4において、多数のタスク(処理内容)であって、ただし個々は小さい一様なタスクを、1台以上のスレーブ1間で分散処理することで、並列分散処理が実行される。また、並列分散処理システム4では、マスター2が、全スレーブ1を管理している。
【0031】
(スレーブ1の構成)
図2は、本発明の一実施形態に係るスレーブ1の構成を示す図である。図2に示すスレーブ1は、処理部10(処理手段)、格納部11(格納手段)、報告部12(報告手段)、及び制御部13(制御手段)を含んで構成される。
【0032】
図4は、スレーブ1のハードウェア構成の一例を示す。スレーブ1は、ハードウェア構成として、CPU50と、RAM51と、ROM52と、キーボードやテンキーなどから成る入力部53と、外部との通信を行う通信部54と、補助記憶装置55と、ディスプレイなどから成る56と、を備える。前述したスレーブ1の各機能ブロックの機能は、RAM51などにプログラムやデータなどを読み込ませ、CPU50の制御の下でプログラムを実行することで実現される。なお、後述するマスター2も、上記図4のハードウェア構成と同様である。
【0033】
以下、図2に示すスレーブ1の各機能ブロックについて説明する。処理部10は、スレーブ1に割り当てられたタスクを実行すると共に、並列分散処理システム4内で予め定められた計測単位を用いて当該タスクの実行を計測し、計測結果を格納部11に格納する。処理部10は、スレーブ1に割り当てられたタスクが無くなるまで、この動作を繰り返す。
【0034】
計測単位については、並列分散処理システム4内の全スレーブ1とマスター2との間で予め決定しておく必要がある。計測単位は全スレーブ1において等しく計測(またはカウント)できるものなら何でもよく、例えば「処理したタスク数」や「秒数」等が挙げられる。本実施形態では、計測単位を「処理したタスク数」として説明する。なお、タスクの総数が非常に多く、個々のタスクは小さくて一様であるような状況を対象としている。
【0035】
処理部10は、計測結果を格納部11に格納する際に、一定間隔ごとに計測結果を格納する。ここで、一定間隔とは、一定の時間でもよいし、タスクを一定数処理する度でもよいが、並列分散処理システム4内の全スレーブ1とマスター2との間で予め決定しておく必要がある。また、処理部10は、処理結果を格納部11に格納すると、処理部10が保持する計測結果をゼロにリセットする。
【0036】
また、処理部10は、計測結果を格納部11に格納する際に、計測結果を格納するかどうかを判断してもよい。判断基準としては、例えば「前回格納時から1秒以上経過していたら格納する」や「タスクを1個処理する毎に格納する」等が挙げられる。判断基準は、並列分散処理システム4内の全スレーブ1で統一されている必要があるが、プログラム的に固定されていても良いし、設定ファイル等を用いて設定するようにしてもよい。本実施形態では、処理部10は、「タスクを1個処理する毎に格納する」という判断基準を用いて、計測結果を格納部11に格納するかどうかを判断するものとする。
【0037】
格納部11には、処理部10により計測結果が格納される。格納部11では、計測結果が格納される度に、格納される計測結果を上書きすることなく、それまでに格納済みの計測結果に加算する。
【0038】
報告部12は、格納部11に格納された計測結果を取り出し、取り出した計測結果をマスター2に送信する。そして、報告部12は、当該送信の応答としてマスター2から指示情報を受信し、受信した指示情報を報告部12に出力する。
【0039】
報告部12は、格納部11に格納された計測結果を取り出すと、格納部11の計測結果をゼロにリセットする。また、報告部12は、取り出した計測結果をマスター2に送信する際に、取り出した計測結果をマスター2に報告すべきかどうか、つまり、計測結果が「1」以上であるかどうかを判断してもよい。この場合、報告部12は、計測結果がゼロである際は、報告すべき計測結果が無いため待機し、報告すべき計測結果がある際は、取り出した計測結果を実際にマスター2に送信する。また、報告部12は、取り出した計測結果をマスター2に送信する際に、従来の並列分散処理技術における、スレーブからマスターへの処理結果の逐次報告と一緒に送信してもよい。
【0040】
制御部13は、報告部12から出力された指示情報を取得し、当該指示情報に基づいてスレーブ1の動作を制御する。指示情報の具体例としては、「特に何もしない」、「処理部10による処理が実行されている主スレッド、及び報告部12による処理が実行されている別スレッドの動作を即刻停止する」「処理部10が計測結果を格納部11に格納する際に用いる判断基準を変更する」等が挙げられる。
【0041】
(マスター2の構成)
図3は、本発明の一実施形態に係るマスター2の構成を示す図である。図3に示すマスター2は、通信部20(通信手段)、集計部21(集計手段)、判断部22(判断手段)、及び表示部23を含んで構成される。
【0042】
以下、図3に示すマスター2の各機能ブロックについて説明する。通信部20は、スレーブ1から計測結果を受信し、当該計測結果と送信元の当該スレーブ1を識別する情報とを関連付け、集計結果として集計部21に格納する。スレーブ1を識別する情報の具体例としては、スレーブ1のIPアドレス等が挙げられる。通信部20は、送信元のスレーブ1からの前回の計測結果の受信からの経過時間、又は送信元のスレーブ1からの計測結果の受信時刻を更に関連付け、集計結果として集計部21に格納してもよい。
【0043】
集計部21には、通信部20により、集計結果が格納される。集計部21では、例えば、集計結果に含まれるスレーブ1を識別する情報ごとに集計結果を格納及び集計するようにしてもよい。
【0044】
判断部22は、集計部21に格納された集計結果に基づいて、スレーブ1、マスター2及び並列分散処理システム4の状況や当該状況に伴う予測や指示等を判断し、判断結果に基づいてスレーブ1に対する指示情報を生成し、当該スレーブ1に送信する。判断内容としては、処理効率の低いスレーブ1の検出、マスター2自身の負荷の程度、又は並列分散処理システム4全体の処理効率から何らかの予測を行うこと等が挙げられる。以下では、判断部22の様々な処理パターンについて列挙する。これらの処理パターンの具体例については、後述のマスター2の各種実施形態の処理にて説明する。
【0045】
判断部22は、マスター2が、集計部21に格納された集計結果のうち、通信部20における送信元のスレーブ1からの一受信当たりの集計結果と、通信部20における送信元のスレーブ1以外のスレーブ1からの一受信当たりの集計結果とを比較し、比較結果に基づいて送信元のスレーブ1に対する指示情報を生成し、送信元のスレーブ1に送信してもよい。また、判断部22は、マスター2が、集計部21に格納された集計結果のうち、通信部20における送信元のスレーブ1からの一受信の集計結果の単位時間当たりの値と、通信部20における送信元のスレーブ1以外のスレーブ1からの一受信の集計結果の単位時間当たりの値とを比較し、比較結果に基づいて送信元のスレーブ1に対する指示情報を生成し、送信元のスレーブ1に送信してもよい。
【0046】
また、判断部22は、マスター2が、集計部21に格納された集計結果のうち、送信元のスレーブ1の全ての集計結果の平均値と、送信元のスレーブ1以外のスレーブ1の全ての集計結果の平均値とを比較し、比較結果に基づいて送信元のスレーブ1に対する指示情報を生成し、送信元のスレーブ1に送信してもよい。また、判断部22は、マスター2が、集計部21に格納された集計結果のうち、送信元のスレーブ1の全ての集計結果の単位時間当たりの値の平均値と、送信元のスレーブ1以外のスレーブ1の全ての集計結果の単位時間当たりの値の平均値とを比較し、比較結果に基づいて送信元のスレーブ1に対する指示情報を生成し、送信元のスレーブ1に送信してもよい。
【0047】
また、判断部22は、マスター2が、集計部21に格納された集計結果のうち、通信部20におけるスレーブ1からの一受信当たりの集計結果の、全てのスレーブ1に関する集計結果に対して統計処理を行い、統計処理結果に基づいて送信元のスレーブ1に対する指示情報を生成し、送信元のスレーブ1に送信してもよい。また、判断部22は、マスター2が、集計部21に格納された集計結果のうち、通信部20におけるスレーブ1からの一受信の集計結果の単位時間当たりの値の、全てのスレーブ1に関する値に対して統計処理を行い、統計処理結果に基づいて送信元のスレーブ1に対する指示情報を生成し、送信元のスレーブ1に送信してもよい。
【0048】
また、判断部22は、集計部21に格納された集計結果のうち、通信部20におけるスレーブ1からの一受信当たりの集計結果の、全てのスレーブ1に関する平均値が、予め定められた閾値を超えた場合に、マスター2が、当該マスターの負荷を下げる旨のスレーブ1に対する指示情報を生成し、当該スレーブ1に送信してよい。
【0049】
表示部23は、並列分散処理システム4のユーザに対して、並列分散処理システム4に関する情報を表示する。
【0050】
(スレーブ1の処理の説明)
続いて、スレーブ1における並列分散処理方法の処理の手順を、図5を参照して説明する。まず、スレーブ1は、タスクが割り当てられると、主スレッドともう一つの別スレッドを開始する。主スレッド上では処理部10による処理、具体的にはステップ101〜104が実行される。一方、別スレッド上では報告部12による処理、具体的にはステップ201〜205が実行される。
【0051】
はじめに、スレーブ1の主スレッド上での処理について説明する。まず、処理部10は、スレーブ1に割り当てられたタスクがまだ残っているかどうかの判断を行う(ステップ101)。ステップ101にて、タスクが残っていない場合、スレーブ1の動作は終了となり、主スレッドと別スレッドの両方が停止する。一方、ステップ101にて、タスクが残っている場合、処理部10は、タスクを一つ実行し、その傍らで予め定められた計測単位を用いてタスクの実行を計測する(ステップ102)。次に、処理部10は、計測結果を格納部11へ格納するかどうかを判断する(ステップ103)。ステップ103にて、格納部11へ格納すると判断した場合、処理部10は、計測した計測結果を格納部11へ格納し、処理部10の計測結果をゼロにリセットする(ステップ104)。なお、格納部11に以前の計測結果が残っていた場合、上書きすることなく、今回の計測結果を加算する。ステップ103にて、格納部11へ格納しないと判断した場合、ステップ101に進む。スレーブ1の主スレッドは、以上のステップ101〜104を、スレーブ1に割り当てられたタスクがなくなるまで繰り返す。
【0052】
続いて、スレーブ1の別スレッド上での処理について説明する。まず、報告部12は、格納部11から計測結果を取り出し、格納部11の計測結果をゼロにリセットする(ステップ201)。次に、報告部12は、取り出した計測結果をマスター2に報告すべきかどうか、つまり、計測結果が「1」以上であるかどうかを判断する(ステップ202)。ステップ202にて、計測結果がゼロであった場合は、報告すべき計測結果が無いため、判断結果は「NO」となり、ステップ201に進む。ステップ202にて、報告すべき計測結果がある場合は、報告部12は、計測結果をマスター2へ送信する(ステップ203)。次に、報告部12は、マスター2へ送信した計測結果に対する応答として、マスター2からの指示を受信する(ステップ204)。次に、報告部12は、マスター2から受信した指示を制御部13へ引き渡す(ステップ205)。指示を受け取った制御部13は、指示の内容に従って当該スレーブ1の動作を制御する。スレーブ1の別スレッドは、主スレッドが終了するまで、以上のステップ201〜205を繰り返す。
【0053】
ここで、スレーブ1における主スレッドと別スレッドは互いに非同期に動作する。主スレッドは、別スレッドの動作とは無関係に、ベストエフォートでタスクの処理、計測、及び計測結果の格納を繰り返す。別スレッドも、主スレッドの動作とは無関係に、計測結果の取り出し、マスターへの計測結果の送信、マスターからの指示の受信、制御部13への指示の受け渡し、という一連の動作を、ベストエフォートで主スレッドが終了するまで繰り返す。ところで、並列分散処理システム4全体には1台以上のスレーブ1が存在するが、スレーブ1の台数と、ある一つのスレーブ1の主スレッドの処理効率との間には何ら因果関係は無く、無関係である。一方、スレーブ1の台数と、ある一つのスレーブ1の別スレッドの効率には因果関係がある。なぜならば、スレーブ1の台数が増えると、マスター2が受信及び応答すべき報告の送信元スレーブ1が増えるため、マスター2の負荷が高くなり、ある一つのスレーブ1から見ると、マスター2からの応答が返ってくるまでの時間(以下、応答時間と呼ぶ)が長くなるためである。本実施形態のポイントは、スレーブ1における主スレッドと別スレッドの効率の比率を利用する、というところにある。
【0054】
(マスター2の処理の第1の例の説明)
続いて、マスター2による並列分散処理方法の処理の第1の例を、図6を参照して説明する。まず、通信部20は、各スレーブ1からの計測結果を受信する(ステップ301)。次に、通信部20は、時間情報を利用するか否かを判断する(ステップ302)。なお、以下の説明では、計測結果の送信元スレーブ1毎の最新の計測結果だけを用いるのではなく、送信元スレーブ1毎の計測結果の履歴を集計部21に記憶し、その平均値を用いることとする。
【0055】
ステップ302にて、時間情報を利用しないと判断した場合、通信部20は、受信した計測結果と、当該計測結果の送信元のスレーブ1を識別する送信元IDとを関連付け、集計結果として集計部21に格納する(ステップ303)。なお、時間情報を利用しないケースは、全スレーブ1の処理能力が均一、例えば、全スレーブ1のハードウェア構成が均一で、かつ、各スレーブ1とマスター2との間の接続経路も均一、すなわち通信遅延の差異を無視できる状況において有効なケースである。
【0056】
図9は、ステップ303の直後に、集計部21に格納された集計結果のテーブル例を示す図である。なお、図9(及び後述の図10〜図13)において、計測単位は「処理したタスク数」である。図9に示すテーブル例から、送信元スレーブ1毎に計測結果の平均値を算出すると、送信元IDがAAAAAのスレーブ1(以降、AAAAAと呼ぶ。他の送信IDのスレーブ1についても同様)、CCCCC、及びEEEEEの計測結果の平均値は「10」であり、BBBBBの平均値は「5」、DDDDDの平均値は「15」である。
【0057】
ステップ303に続いて、判断部22は、集計結果の平均値に関して、集計結果が異常であるか否かを判断する(ステップ304)。判断部22は、例えばBBBBBに関しては、次のような判断を行ってもよい。つまり、全スレーブ1とマスター2との間の接続経路が均一ならば、各スレーブ1から見た応答時間もほぼ均一なはずなのに、その間に処理できるタスク数が、BBBBBでは他の半分程度ということである。本実施形態では、各タスクは一様であることを前提とするため、BBBBBは何らかの原因により処理効率が低下していると判断できる。なぜなら、ハードウェア構成が均一である前提から、飛び抜けて低い値となるのはおかしいためである。一方、判断部22は、例えばDDDDDに関しては、次のような判断を行ってもよい。つまり、タスクは一様であり、かつ、ハードウェア構成が均一である前提から、DDDDDだけが飛び抜けて処理効率が高くなることも考え難い。つまり、何らかの原因、例えばネットワーク3接続の不調等により、DDDDDから見た応答時間が長くなっていると判断できる。なお「計数結果がいくつ以上(あるいは以下)ならば異常と見なすか」という判断のポリシーは、プログラム的に固定されていてもよいし、ポリシーファイル等で設定できるようになっていてもよい。
【0058】
判断部22による以上のような判断を踏まえ、判断部22が今回受信した計測結果がBBBBBやDDDDDからのものであった場合、ステップ304にて異常であると判断し(ステップ304の判断「YES」)、例えば当該スレーブ1の動作を即刻停止する等の相応の指示情報を生成して、当該スレーブ1に返信する(ステップ308)。判断部22が今回受信した計測結果がBBBBBやDDDDDからのものでなかった場合(ステップ304の判断「NO」)は、例えば「何もしない」という指示情報等の正常応答を生成して、当該スレーブ1に返信する(ステップ307)。
【0059】
なお、判断部22は、特定のスレーブ1において何らかの異常が発生したと判断した場合、マスター2はその情報を記憶しておき、例えば、タスクのスレーブ1への割り当て(スケジューリング)を工夫する等、その後の並列分散処理システム4全体の制御に役立てたり、例えば、表示部23により異常が発生したスレーブ1をユーザに報告する等、並列分散処理システム4のユーザに対して情報を提示したりすることができる。
【0060】
続いて、ステップ302にて時間情報を利用すると判断したケースについて説明する。時間情報を利用すると判断したケースは、全スレーブ1の処理能力が均一で、かつ、各スレーブ1とマスター2との間の接続経路も均一であるという前提を置くことができない状況において有効なケースである。
【0061】
ステップ302にて、時間情報を利用すると判断した場合、通信部20は、受信した計測結果と、当該計測結果の送信元のスレーブ1を識別する送信元IDと、当該計測結果を受信した時刻とを関連付け、集計結果として集計部21に格納する(ステップ305)。
【0062】
図10は、ステップ305の直後に、集計部21に格納された集計結果のテーブル例を示す図である。図10に示すテーブル例では、一見すると通信部20による一受信当りの計測結果の平均値は全て「10」となり、問題なさそうに見える。しかしながら、時間当り(以降の実施形態では「秒」を用いる)の計測結果の平均値を見ると、AAAAA、BBBBB、DDDDD、EEEEEでは「2」なのに対し、CCCCCでは「1」となっていることがわかる。
【0063】
ステップ205に続いて、判断部22は、集計結果の平均値に関して、集計結果が異常であるか否かを判断する(ステップ306)。判断部22は、CCCCCから計測結果を受信する周期は他のスレーブ1の倍であるが、これはCCCCCのネットワーク接続が元来他よりも性能が劣るものであるためか、それとも、CCCCCのネットワーク接続に何か不調が発生したためか、判断することはできない。しかしながら、判断部22は、CCCCCについて、単位時間あたりのタスクの処理効率が他よりも劣っていることを判断する。なお、判断部22は、CCCCCの処理効率が元来他よりも劣っているためか、それとも、CCCCCに何か故障が発生したためかの判断はつかないが、とにかくCCCCCの処理効率が他よりも劣っていることは判断する。
【0064】
判断部22による以上のような判断を踏まえ、判断部22が今回受信した計測結果がCCCCCからのものであった場合、判断部22は、ステップ306にて異常であると判断し(ステップ306の判断「YES」)、ステップ308に進み、CCCCCからのものでなかった場合、判断部22は、ステップ306にて異常でないと判断し(ステップ306の判断「NO」)、ステップ307に進む。
【0065】
(マスター2の処理の第2の例の説明)
続いて、マスター2による並列分散処理方法の処理の第2の例を、図7を参照して説明する。まず、通信部20は、各スレーブ1から計測結果を受信する(ステップ401)。次に、通信部20は、受信した計測結果と、当該計測結果の送信元のスレーブ1を識別する送信元IDとを関連付け、集計結果として集計部21に格納する(ステップ402)。図11及び図12はそれぞれ、ステップ402の直後に、集計部21に格納された集計結果のテーブル例を示す図である。図11に示すテーブル例では、スレーブ1の台数が5台、図12に示すテーブル例では、スレーブ1の台数が10台の場合の例である。
【0066】
次に、判断部22は、報告当りの集計結果を算出する(ステップ403)。ここで算出する報告当りの集計結果は、スレーブ1別のものではなく、全スレーブ1に関する平均値である。ここでの算出には、各スレーブ1の最新の計測結果のみを用いてもよいし、各スレーブ1の全計測結果を用いてもよい。図11に示すテーブル例では、算出結果は「10」となり、図12に示すテーブル例では、「20」となる。これは、図12に示すテーブル例では図11に示すテーブル例と比較して、マスター2が応答すべきスレーブ1の数が2倍になっており、各スレーブ1から見た応答時間が倍になる一方、各スレーブ1の主スレッドがタスクを処理する効率は並列分散処理システム4全体のスレーブ1の数に依存しないためである。
【0067】
次に、判断部22は、算出した報告当りの集計結果が閾値を超えているかどうかを判断する(ステップ404)。この閾値は、プログラム的に固定されていてもよいし、設定ファイル等で設定できるようになっていてもよい。なお、ここでの閾値は「15」に設定されているものとする。これは、「報告当りの集計結果が15を超える場合、応答時間が長過ぎる、つまりスレーブ1の数が多すぎる」ということを意味する。
【0068】
ステップ404にて、集計部21に格納された集計結果が、図11に示すテーブル例の場合、判断部22による判断結果は「NO」となり、判断部22は、計測結果の送信元スレーブ1に対して、正常応答、例えば「何もしない」という指示を含む応答を返信する(ステップ405)。一方、ステップ404にて、集計部21に格納された集計結果が、図12に示すテーブル例の場合、判断部22による判断結果は「YES」となり、判断部22は、マスター2の負荷を下げるための方法を判断する。例えば、判断部22は、処理効率の一番低いスレーブ1を選択し(ステップ406)、当該スレーブ1に対して停止指示を返信してもよい。図12に示すテーブル例の場合では、処理効率の一番低いJJJJJが選択される。
【0069】
ステップ406に続いて、判断部22は、計測結果を送信元スレーブ1が、ステップ406で選択されたスレーブ1からのものであるかどうかを判断する(ステップ407)。ステップ407にて、スレーブ1からのものであると判断した場合(ステップ407の判断「YES」)、判断部22は、送信元スレーブ1への返信として相応の指示情報、例えばスレーブ1を強制終了する等の指示情報を返信する(ステップ408)。ステップ407にて、スレーブ1からのものでないと判断した場合(ステップ407の判断「NO」)、計測結果の送信元スレーブ1に対して正常応答、例えば「何もしない」という指示を含む応答を返信する(ステップ405)。なお、ステップ406で選択したスレーブ(ここではJJJJJ)をマスター2内で記憶しておき、次にJJJJJから報告を受信した際に、ステップ408へ進み、判断部22は、相応の指示を返信するようにしてもよい。
【0070】
(マスター2の処理の第3の例の説明)
続いて、マスター2による並列分散処理方法の処理の第3の例を、図8を参照して説明する。まず、通信部20は、各スレーブ1からの計測結果を受信する(ステップ501)。次に、通信部20は、時間情報を利用するか否かを判断する(ステップ502)。ステップ502にて、時間情報を利用しないと判断した場合、通信部20は、受信した計測結果と、当該計測結果の送信元のスレーブ1を識別する送信元IDとを関連付け、集計結果として集計部21に格納する(ステップ503)。次に、判断部22は、通信部20の一受信当たりの集計結果の統計処理、例えば平均値の算出を行う(ステップ504)。
【0071】
ステップ502にて、時間情報を利用すると判断した場合、通信部20は、受信した計測結果と、当該計測結果の送信元のスレーブ1を識別する送信元IDと、当該計測結果を受信した時刻とを関連付け、集計結果として集計部21に格納する(ステップ505)。図13は、ステップ505の直後に、集計部21に格納された集計結果のテーブル例を示す図である。次に、判断部22は、時間当りの集計結果の統計処理、例えば平均値の算出を行う(ステップ506)。例えば図13に示すテーブル例から、判断部22は、並列分散処理システム4全体で1秒間に平均で10個のタスクを処理できていることを判断する。
【0072】
次に、判断部22は、ステップ504または506の統計処理に基づいて、予測的な判断や処理を行う(ステップ508)。例えば、並列分散処理システム4全体で処理すべきタスクの総数が1000個とする。図13に示すテーブル例から、判断部22は、15秒間で150のタスクが処理済みであり、1秒あたり平均で10個のタスクが処理されているため、全タスクを全て処理し終えるには、残り85秒程度を要することが予測でき、例えば、判断部22は、この予測結果を表示部23に出力し、表示部23が並列分散処理システム4のユーザへ当該予測結果を出力することが可能となる。次に、判断部22は、送信元スレーブ1へ指示を返信する(ステップ505)。判断部22は、予測に基づく判断に従って何かの具体的な処理を指示してもよいし、「特に何もしない」という指示でもよい。
【0073】
以下、本実施形態の作用効果について説明する。
【0074】
本実施形態の並列分散処理方法によれば、スレーブ1にて、並列分散処理システム4内で予め定められた計測単位を用いてタスクの実行が計測され、計測結果がマスター2に送信されることで、マスター2は、外部の監視コンピュータや監視プログラムを導入することなく、各スレーブ1の処理効率を把握することができる。そして、マスター2は、各スレーブ1の処理効率に基づいて各スレーブ1に指示を出し、各スレーブ1は指示に基づいて動作を制御することで、マスター2は、各スレーブ1の処理効率に基づき、並列分散処理システム4全体の動作を動的に制御することができる。
【0075】
また、判断部22は、マスター2が、集計部21に格納された集計結果のうち、通信部20による送信元のスレーブ1からの一受信当たりの集計結果と、通信部20による送信元のスレーブ1以外のスレーブ1からの一受信当たりの集計結果とを比較し、比較結果に基づいて送信元のスレーブ1に対する指示情報を生成し、送信元のスレーブ1に送信してもよい。かかる場合、マスター2は、対象スレーブ1の一受信当たりの集計結果と、他のスレーブ1の一受信当たりの集計結果との比較結果に基づいて、対象スレーブ1に指示を出すことができるため、より正確に対象スレーブ1の処理効率を把握することができると共に、より効率的に並列分散処理システム4全体の動作を動的に制御することができる。
【0076】
また、通信部20は、マスター2が、送信元のスレーブ1からの前回の計測結果の受信からの経過時間を更に関連付け、集計結果として当該マスター2の集計部21に格納し、判断部22は、マスター2が、集計部21に格納された集計結果のうち、通信部20による送信元のスレーブ1からの一受信の集計結果の単位時間当たりの値と、通信部20による送信元のスレーブ1以外のスレーブ1からの一受信の集計結果の単位時間当たりの値とを比較し、比較結果に基づいて送信元のスレーブ1に対する指示情報を生成し、送信元のスレーブ1に送信してもよい。かかる場合、マスター2は、対象スレーブ1の一受信の集計結果の単位時間当たりの値と、他のスレーブ1の一受信の集計結果の単位時間当たりの値との比較結果に基づいて、対象スレーブ1に指示を出すことができるため、より正確に対象スレーブ1の処理効率を把握することができると共に、より効率的に並列分散処理システム4全体の動作を動的に制御することができる。
【0077】
また、判断部22は、マスター2が、集計部21に格納された集計結果のうち、送信元のスレーブ1の全ての集計結果の平均値と、送信元のスレーブ1以外のスレーブ1の全ての集計結果の平均値とを比較し、比較結果に基づいて送信元のスレーブ1に対する指示情報を生成し、送信元のスレーブ1に送信してもよい。かかる場合、マスター2は、対象スレーブ1の全ての集計結果の平均値と、他のスレーブ1の全ての集計結果の平均値との比較結果に基づいて、対象スレーブ1に指示を出すことができるため、より正確に対象スレーブ1の処理効率を把握することができると共に、より効率的に並列分散処理システム4全体の動作を動的に制御することができる。
【0078】
また、通信部20は、マスター2が、送信元のスレーブ1からの前回の計測結果の受信からの経過時間を更に関連付け、集計結果として当該マスター2の集計部21に格納し、判断部22は、マスター2が、集計部21に格納された集計結果のうち、送信元のスレーブ1の全ての集計結果の単位時間当たりの値の平均値と、送信元のスレーブ1以外のスレーブ1の全ての集計結果の単位時間当たりの値の平均値とを比較し、比較結果に基づいて送信元のスレーブ1に対する指示情報を生成し、送信元のスレーブ1に送信してもよい。かかる場合、マスター2は、対象スレーブ1の全ての集計結果の単位時間当たりの値の平均値と、他のスレーブ1の全ての集計結果の単位時間当たりの値の平均値との比較結果に基づいて、対象スレーブ1に指示を出すことができるため、より正確に対象スレーブ1の処理効率を把握することができると共に、より効率的に並列分散処理システム4全体の動作を動的に制御することができる。
【0079】
また、判断部22は、マスター2が、集計部21に格納された集計結果のうち、通信部20によるスレーブ1からの一受信当たりの集計結果の、全てのスレーブ1に関する集計結果に対して統計処理を行い、統計処理結果に基づいて送信元のスレーブ1に対する指示情報を生成し、送信元のスレーブ1に送信してもよい。かかる場合、マスター2は、スレーブ1からの一受信当たりの集計結果の、全てのスレーブ1に関する集計結果に対しての統計処理結果に基づいて、各スレーブ1に指示を出すことができるため、より正確に各スレーブ1の処理効率を把握することができると共に、より効率的に並列分散処理システム4全体の動作を動的に制御することができる。
【0080】
また、通信部20は、マスター2が、送信元のスレーブ1からの前回の計測結果の受信からの経過時間を更に関連付け、集計結果として当該マスター2の集計部21に格納し、判断部22は、マスター2が、集計部21に格納された集計結果のうち、通信部20によるスレーブ1からの一受信の集計結果の単位時間当たりの値の、全てのスレーブ1に関する値に対して統計処理を行い、統計処理結果に基づいて送信元のスレーブ1に対する指示情報を生成し、送信元のスレーブ1に送信してもよい。かかる場合、マスター2は、スレーブ1からの一受信の集計結果の単位時間当たりの値の、全てのスレーブ1に関する値に対しての統計処理結果に基づいて、各スレーブ1に指示を出すことができるため、より正確に各スレーブ1の処理効率を把握することができると共に、より効率的に並列分散処理システム4全体の動作を動的に制御することができる。
【0081】
また、判断部22は、集計部21に格納された集計結果のうち、通信部20におけるスレーブ1からの一受信当たりの集計結果の、全てのスレーブ1に関する平均値が、予め定められた閾値を超えた場合に、マスター2が、当該マスター2の負荷を下げる旨のスレーブ1に対する指示情報を生成し、当該スレーブ1に送信してもよい。かかる場合、マスター2は、例えば、マスター2の能力を超えた台数のスレーブ1が接続されていることを検出できるようになり、マスター2の能力、または能力に応じて設定された条件に応じてスレーブ1の接続台数を動的に制御することが可能となる。
【0082】
マスター2は並列分散処理システム4内の全スレーブ1を管理する必要があるが、マスター2の処理能力も有限であるため、際限なく多数のスレーブ1を管理できるわけでない。従って、マスター2の能力を超過した数のスレーブ1の管理を要求された場合、マスター2がマスター2自身の負荷を監視することでそのことを検出し、適切な振る舞いを選択することができる。例えば、マスター2は、処理効率の低いスレーブ1を停止させ、マスター2が適切に管理できる範囲でベストな並列分散処理システム4を維持すること等が挙げられる。
【0083】
また、本実施形態の並列分散処理システム4によれば、マスター2は、並列分散処理システム4全体の処理効率を把握した上で、予測的な動作、例えば、全タスクの完了予測時刻をユーザへ提示すること等を行うことができる。
【0084】
本実施形態の並列分散処理システム4の応用事例としては、従来の並列分散処理システムにおいて、外部の監視コンピュータや監視ソフトウェアの助けを借りず、マスター2が各スレーブ1の処理効率を監視したり、マスター2がマスター2自身の負荷の程度を監視したり、マスター2が並列分散処理システム4全体の処理効率を把握して並列分散処理システム4全体の動作を予測的に判断したりして、スレーブ1に対する指示を生成し、並列分散処理システム4全体の振る舞いを制御するために用いることができる。
【0085】
以上の通り、本実施形態の並列分散処理システム4によれば、外部の監視コンピュータや監視プログラムを導入することなく、マスター・スレーブ型システムにおいて、各スレーブ1の処理効率をマスター2が把握することができ、その情報を、例えばタスクの各スレーブ1への割り当て(スケジューリング)に役立てることができる。また、マスター2の能力を超えた台数のスレーブ1が接続されていることを、マスター2自身が検出できるようになり、例えば、マスター2の能力(もしくは能力に応じて設定された条件)に応じてスレーブ1の接続台数を動的に制御することが可能となる。更に、各スレーブ1の処理効率をマスター2が把握できることを応用して、並列分散処理システム4全体の動作に関する予測を立てることができ、例えば、全タスクが完了するまでの予測時間を利用者へ提示する、などのサービスを提供して、スレーブ1に対して予測に基づく指示を与えることができるようになる。
【符号の説明】
【0086】
1…スレーブ、2…マスター、3…ネットワーク、4…並列分散処理システム、10…処理部、11…格納部、12…報告部、13…制御部、20…通信部、21…集計部、22…判断部、23…表示部。
【特許請求の範囲】
【請求項1】
一台以上のスレーブと、前記スレーブとネットワークを介して接続されているマスターとから構成され、タスクを前記スレーブにて並列分散処理する並列分散処理システム、により実行される並列分散処理方法であって、
前記スレーブが、当該スレーブに割り当てられたタスクを実行すると共に、並列分散処理システム内で予め定められた計測単位を用いて当該タスクの実行を計測し、計測結果を当該スレーブの格納手段に格納する処理ステップと、
前記スレーブが、当該スレーブの前記格納手段に格納された計測結果を前記マスターに送信する第1の報告ステップと、
前記マスターが、前記スレーブから計測結果を受信し、当該計測結果と送信元の当該スレーブを識別する情報とを関連付け、集計結果として当該マスターの集計手段に格納する通信ステップと、
前記マスターが、前記集計手段に格納された集計結果に基づいて、前記スレーブに対する指示情報を生成し、当該スレーブに送信する判断ステップと、
前記スレーブが、前記マスターから指示情報を受信する第2の報告ステップと、
前記スレーブが、前記第2の報告ステップにおいて受信された指示情報に基づいて、当該スレーブの動作を制御する制御ステップと、
を備える並列分散処理方法。
【請求項2】
前記判断ステップは、前記マスターが、前記集計手段に格納された集計結果のうち、前記通信ステップにおける前記送信元のスレーブからの一受信当たりの集計結果と、前記通信ステップにおける前記送信元のスレーブ以外の前記スレーブからの一受信当たりの集計結果とを比較し、比較結果に基づいて前記送信元のスレーブに対する指示情報を生成し、前記送信元のスレーブに送信する、
ことを特徴とする請求項1に記載の並列分散処理方法。
【請求項3】
前記通信ステップは、前記マスターが、前記送信元のスレーブからの前回の計測結果の受信からの経過時間を更に関連付け、集計結果として当該マスターの集計手段に格納し、
前記判断ステップは、前記マスターが、前記集計手段に格納された集計結果のうち、前記通信ステップにおける前記送信元のスレーブからの一受信の集計結果の単位時間当たりの値と、前記通信ステップにおける前記送信元のスレーブ以外の前記スレーブからの一受信の集計結果の単位時間当たりの値とを比較し、比較結果に基づいて前記送信元のスレーブに対する指示情報を生成し、前記送信元のスレーブに送信する、
ことを特徴とする請求項1に記載の並列分散処理方法。
【請求項4】
前記判断ステップは、前記マスターが、前記集計手段に格納された集計結果のうち、前記送信元のスレーブの全ての集計結果の平均値と、前記送信元のスレーブ以外の前記スレーブの全ての集計結果の平均値とを比較し、比較結果に基づいて前記送信元のスレーブに対する指示情報を生成し、前記送信元のスレーブに送信する、
ことを特徴とする請求項1に記載の並列分散処理方法。
【請求項5】
前記通信ステップは、前記マスターが、前記送信元のスレーブからの前回の計測結果の受信からの経過時間を更に関連付け、集計結果として当該マスターの集計手段に格納し、
前記判断ステップは、前記マスターが、前記集計手段に格納された集計結果のうち、前記送信元のスレーブの全ての集計結果の単位時間当たりの値の平均値と、前記送信元のスレーブ以外の前記スレーブの全ての集計結果の単位時間当たりの値の平均値とを比較し、比較結果に基づいて前記送信元のスレーブに対する指示情報を生成し、前記送信元のスレーブに送信する、
ことを特徴とする請求項1に記載の並列分散処理方法。
【請求項6】
前記判断ステップは、前記マスターが、前記集計手段に格納された集計結果のうち、前記通信ステップにおける前記スレーブからの一受信当たりの集計結果の、全ての前記スレーブに関する集計結果に対して統計処理を行い、統計処理結果に基づいて前記送信元のスレーブに対する指示情報を生成し、前記送信元のスレーブに送信する、
ことを特徴とする請求項1に記載の並列分散処理方法。
【請求項7】
前記通信ステップは、前記マスターが、前記送信元のスレーブからの前回の計測結果の受信からの経過時間を更に関連付け、集計結果として当該マスターの集計手段に格納し、
前記判断ステップは、前記マスターが、前記集計手段に格納された集計結果のうち、前記通信ステップにおける前記スレーブからの一受信の集計結果の単位時間当たりの値の、全ての前記スレーブに関する値に対して統計処理を行い、統計処理結果に基づいて前記送信元のスレーブに対する指示情報を生成し、前記送信元のスレーブに送信する、
ことを特徴とする請求項1に記載の並列分散処理方法。
【請求項8】
前記判断ステップは、前記集計手段に格納された集計結果のうち、前記通信ステップにおける前記スレーブからの一受信当たりの集計結果の、全ての前記スレーブに関する平均値が、予め定められた閾値を超えた場合に、前記マスターが、当該マスターの負荷を下げる旨の前記スレーブに対する指示情報を生成し、当該スレーブに送信する、
ことを特徴とする請求項1〜7の何れか一項に記載の並列分散処理方法。
【請求項9】
一台以上のスレーブと、前記スレーブとネットワークを介して接続されているマスターとから構成され、タスクを前記スレーブにて並列分散処理する並列分散処理システムであって、
前記スレーブは、
当該スレーブに割り当てられたタスクを実行すると共に、並列分散処理システム内で予め定められた計測単位を用いて当該タスクの実行を計測し、計測結果を当該スレーブの格納手段に格納する処理手段と、
当該スレーブの前記格納手段に格納された計測結果を前記マスターに送信し、当該送信の応答として前記マスターから指示情報を受信する報告手段と、
前記報告手段によって受信された指示情報に基づいて、当該スレーブの動作を制御する制御手段と、
を備え、
前記マスターは、
前記スレーブから計測結果を受信し、当該計測結果と送信元の当該スレーブを識別する情報とを関連付け、集計結果として当該マスターの集計手段に格納する通信手段と、
前記集計手段に格納された集計結果に基づいて、前記スレーブに対する指示情報を生成し、当該スレーブに送信する判断手段と、
を備える並列分散処理システム。
【請求項1】
一台以上のスレーブと、前記スレーブとネットワークを介して接続されているマスターとから構成され、タスクを前記スレーブにて並列分散処理する並列分散処理システム、により実行される並列分散処理方法であって、
前記スレーブが、当該スレーブに割り当てられたタスクを実行すると共に、並列分散処理システム内で予め定められた計測単位を用いて当該タスクの実行を計測し、計測結果を当該スレーブの格納手段に格納する処理ステップと、
前記スレーブが、当該スレーブの前記格納手段に格納された計測結果を前記マスターに送信する第1の報告ステップと、
前記マスターが、前記スレーブから計測結果を受信し、当該計測結果と送信元の当該スレーブを識別する情報とを関連付け、集計結果として当該マスターの集計手段に格納する通信ステップと、
前記マスターが、前記集計手段に格納された集計結果に基づいて、前記スレーブに対する指示情報を生成し、当該スレーブに送信する判断ステップと、
前記スレーブが、前記マスターから指示情報を受信する第2の報告ステップと、
前記スレーブが、前記第2の報告ステップにおいて受信された指示情報に基づいて、当該スレーブの動作を制御する制御ステップと、
を備える並列分散処理方法。
【請求項2】
前記判断ステップは、前記マスターが、前記集計手段に格納された集計結果のうち、前記通信ステップにおける前記送信元のスレーブからの一受信当たりの集計結果と、前記通信ステップにおける前記送信元のスレーブ以外の前記スレーブからの一受信当たりの集計結果とを比較し、比較結果に基づいて前記送信元のスレーブに対する指示情報を生成し、前記送信元のスレーブに送信する、
ことを特徴とする請求項1に記載の並列分散処理方法。
【請求項3】
前記通信ステップは、前記マスターが、前記送信元のスレーブからの前回の計測結果の受信からの経過時間を更に関連付け、集計結果として当該マスターの集計手段に格納し、
前記判断ステップは、前記マスターが、前記集計手段に格納された集計結果のうち、前記通信ステップにおける前記送信元のスレーブからの一受信の集計結果の単位時間当たりの値と、前記通信ステップにおける前記送信元のスレーブ以外の前記スレーブからの一受信の集計結果の単位時間当たりの値とを比較し、比較結果に基づいて前記送信元のスレーブに対する指示情報を生成し、前記送信元のスレーブに送信する、
ことを特徴とする請求項1に記載の並列分散処理方法。
【請求項4】
前記判断ステップは、前記マスターが、前記集計手段に格納された集計結果のうち、前記送信元のスレーブの全ての集計結果の平均値と、前記送信元のスレーブ以外の前記スレーブの全ての集計結果の平均値とを比較し、比較結果に基づいて前記送信元のスレーブに対する指示情報を生成し、前記送信元のスレーブに送信する、
ことを特徴とする請求項1に記載の並列分散処理方法。
【請求項5】
前記通信ステップは、前記マスターが、前記送信元のスレーブからの前回の計測結果の受信からの経過時間を更に関連付け、集計結果として当該マスターの集計手段に格納し、
前記判断ステップは、前記マスターが、前記集計手段に格納された集計結果のうち、前記送信元のスレーブの全ての集計結果の単位時間当たりの値の平均値と、前記送信元のスレーブ以外の前記スレーブの全ての集計結果の単位時間当たりの値の平均値とを比較し、比較結果に基づいて前記送信元のスレーブに対する指示情報を生成し、前記送信元のスレーブに送信する、
ことを特徴とする請求項1に記載の並列分散処理方法。
【請求項6】
前記判断ステップは、前記マスターが、前記集計手段に格納された集計結果のうち、前記通信ステップにおける前記スレーブからの一受信当たりの集計結果の、全ての前記スレーブに関する集計結果に対して統計処理を行い、統計処理結果に基づいて前記送信元のスレーブに対する指示情報を生成し、前記送信元のスレーブに送信する、
ことを特徴とする請求項1に記載の並列分散処理方法。
【請求項7】
前記通信ステップは、前記マスターが、前記送信元のスレーブからの前回の計測結果の受信からの経過時間を更に関連付け、集計結果として当該マスターの集計手段に格納し、
前記判断ステップは、前記マスターが、前記集計手段に格納された集計結果のうち、前記通信ステップにおける前記スレーブからの一受信の集計結果の単位時間当たりの値の、全ての前記スレーブに関する値に対して統計処理を行い、統計処理結果に基づいて前記送信元のスレーブに対する指示情報を生成し、前記送信元のスレーブに送信する、
ことを特徴とする請求項1に記載の並列分散処理方法。
【請求項8】
前記判断ステップは、前記集計手段に格納された集計結果のうち、前記通信ステップにおける前記スレーブからの一受信当たりの集計結果の、全ての前記スレーブに関する平均値が、予め定められた閾値を超えた場合に、前記マスターが、当該マスターの負荷を下げる旨の前記スレーブに対する指示情報を生成し、当該スレーブに送信する、
ことを特徴とする請求項1〜7の何れか一項に記載の並列分散処理方法。
【請求項9】
一台以上のスレーブと、前記スレーブとネットワークを介して接続されているマスターとから構成され、タスクを前記スレーブにて並列分散処理する並列分散処理システムであって、
前記スレーブは、
当該スレーブに割り当てられたタスクを実行すると共に、並列分散処理システム内で予め定められた計測単位を用いて当該タスクの実行を計測し、計測結果を当該スレーブの格納手段に格納する処理手段と、
当該スレーブの前記格納手段に格納された計測結果を前記マスターに送信し、当該送信の応答として前記マスターから指示情報を受信する報告手段と、
前記報告手段によって受信された指示情報に基づいて、当該スレーブの動作を制御する制御手段と、
を備え、
前記マスターは、
前記スレーブから計測結果を受信し、当該計測結果と送信元の当該スレーブを識別する情報とを関連付け、集計結果として当該マスターの集計手段に格納する通信手段と、
前記集計手段に格納された集計結果に基づいて、前記スレーブに対する指示情報を生成し、当該スレーブに送信する判断手段と、
を備える並列分散処理システム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【公開番号】特開2013−88863(P2013−88863A)
【公開日】平成25年5月13日(2013.5.13)
【国際特許分類】
【出願番号】特願2011−225967(P2011−225967)
【出願日】平成23年10月13日(2011.10.13)
【出願人】(392026693)株式会社エヌ・ティ・ティ・ドコモ (5,876)
【公開日】平成25年5月13日(2013.5.13)
【国際特許分類】
【出願日】平成23年10月13日(2011.10.13)
【出願人】(392026693)株式会社エヌ・ティ・ティ・ドコモ (5,876)
[ Back to top ]