(57)【特許請求の範囲】
【請求項１】
複数の機能モジュールを含むプログラムを解析し、機能モジュール間の参照関係及びプログラム実行時における機能モジュール間の呼び出し回数を取得するプログラム解析手段と、
前記機能モジュール間の参照関係及び前記機能モジュール間の呼び出し回数に基づいて、重み付きグラフを作成するグラフ作成手段と、
配置設定の制約として、前記複数の機能モジュールの各々と、前記各機能モジュールを実行するホスト種別とを対応付けるデータを与えられ、前記配置設定の制約に従って、前記重み付きグラフの最小カットを計算する最小カット計算手段と、
前記最小カットに基づいて、前記複数の機能モジュールを自動的に分散化する分散システム生成手段と
を具備する
自動分散化システム。
【請求項２】
前記各機能モジュールはそれぞれ、１つの機能モジュールにつき少なくとも１つの機能を持ち、
前記機能モジュール間の参照関係は、前記各機能モジュールの機能の呼び出しの関係を表し、
前記グラフ作成手段は、前記重み付きグラフのノードを前記各機能モジュールとし、前記重み付きグラフのエッジを前記機能モジュール間の参照関係として、前記重み付きグラフの作成を行う
請求項１に記載の自動分散化システム。
【請求項３】
前記グラフ作成手段は、前記重み付きグラフの重みを、前記機能モジュール間の呼び出し回数と前記各機能モジュールを呼び出す時の引数のデータ量との少なくとも一方に比例するコストに基づいて計算し、前記重み付きグラフの作成を行う
請求項２に記載の自動分散化システム。
【請求項４】
前記グラフ作成手段は、α及びβを任意に設定可能な定数とし、前記コストを、〔コスト〕＝Σα〔機能モジュール間の呼び出し回数〕×β〔呼び出し時の引数のデータ量〕の数式によって計算する
請求項３に記載の自動分散化システム。
【請求項５】
前記最小カット計算手段は、前記最小カットに基づく部分グラフを作成し、前記部分グラフを作成する際、前記配置設定の制約として同一ホストに配置しないと指定された機能モジュールを、同じ部分グラフに存在させることなく、異なるホストに配置し、
前記分散システム生成手段は、前記部分グラフに基づいて、前記プログラムを分散システムに変換して出力する
請求項１乃至４のいずれかに記載の自動分散化システム。
【請求項６】
複数の機能モジュールを含むプログラムを解析し、機能モジュール間の参照関係及びプログラム実行時における機能モジュール間の呼び出し回数を取得することと、
前記機能モジュール間の参照関係及び前記機能モジュール間の呼び出し回数に基づいて、重み付きグラフを作成することと、
配置設定の制約として、前記複数の機能モジュールの各々と、前記各機能モジュールを実行するホスト種別とを対応付けるデータを与えられ、前記配置設定の制約に従って、前記重み付きグラフの最小カットを計算することと、
前記最小カットに基づいて、前記複数の機能モジュールを自動的に分散化することと
を含む
自動分散化方法。
【請求項７】
前記各機能モジュールはそれぞれ、１つの機能モジュールにつき少なくとも１つの機能を持ち、
前記機能モジュール間の参照関係は、前記各機能モジュールの機能の呼び出しの関係を表し、
前記重み付きグラフの作成を行う際、前記重み付きグラフのノードを前記各機能モジュールとし、前記重み付きグラフのエッジを前記機能モジュール間の参照関係として、前記重み付きグラフの作成を行うこと
を更に含む
請求項６に記載の自動分散化方法。
【請求項８】
前記重み付きグラフの作成を行う際、前記機能モジュール間の呼び出し回数と前記各機能モジュールを呼び出す時の引数のデータ量との少なくとも一方とに比例するコストに基づいて、前記重み付きグラフの重みを計算し、前記重み付きグラフの作成を行うこと
を更に含む
請求項７に記載の自動分散化方法。
【請求項９】
前記重み付きグラフの作成を行う際、α及びβを任意に設定可能な定数とし、前記コストを、〔コスト〕＝Σα〔機能モジュール間の呼び出し回数〕×β〔呼び出し時の引数のデータ量〕の数式によって計算すること
を更に含む
請求項８に記載の自動分散化方法。
【請求項１０】
前記最小カットを計算する際、前記最小カットに基づく部分グラフを作成することと、
前記部分グラフを作成する際、前記配置設定の制約として同一ホストに配置しないと指定された機能モジュールを、同じ部分グラフに存在させることなく、異なるホストに配置することと、
前記複数の機能モジュールを自動的に分散化する際、前記部分グラフに基づいて、前記プログラムを分散システムに変換して出力することと
を更に含む
請求項６乃至９のいずれかに記載の自動分散化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は分散システムの分野に関し、特に分散システム上で機能モジュールの最適な配置をプログラムの解析による情報を元に自動的に行う自動分散化システム及び自動分散化方法に関する。
【背景技術】
【０００２】
分散システムは、多くのソフトウェアアプリケーションに共通して用いられている。典型的な分散システムは、ネットワークを経由して通信を行う複数のホストから成り立つ。複数のホスト上では、各機能モジュールが稼動している。この機能モジュールはプログラムであり、開発者は複数のホストに、分散システムの機能を分離し、設計、開発を行う。分散システム稼動時には、複数のホスト上で稼動する各機能モジュールが、各々のホスト上でその機能を実現し、また、ネットワークを経由して、他のホストで稼動する機能モジュールを呼び出し、１つの分散システムとして稼動する。
【０００３】
図１は、分散システムの説明図である。図１において、二つのホスト１０，１２は、ネットワーク１４によって接続されている。ホスト１０では二つの機能モジュールＡ１，Ｂ１が稼動し、ホスト１２では三つの機能モジュールＣ１，Ｄ１，Ｅ１が稼動している。ホスト１０の機能モジュールＡ１は、ホスト１２の機能モジュールＤ１を呼び出すことができ、ホスト１２の機能モジュールＤ１は、ホスト１０の機能モジュールＡ１を呼び出すことができる。また、ホスト１０の機能モジュールＢ１は、ホスト１２の機能モジュールＣ１を呼び出すことができ、ホスト１２の機能モジュールＣ１は、ホスト１０の機能モジュールＢ１を呼び出すことができる。
【０００４】
しかし、一般に分散システムの開発には困難が伴う。特にネットワーク越しに機能モジュールを呼び出す部分の開発はツールによる支援等を用いて行ったりすることもあり、ツールの中には、そもそも開発者にネットワーク越しの呼び出しを考慮にいれさせない自動分散化システムが存在する（Ａｄｄｉｓｔａｎｔ、Ｊ−Ｏｒｃｈｅｓｔｒａ；特開平１１−０８５５１９号公報（特許文献１参照））。
【０００５】
特に開発者にネットワーク越しの呼び出しを考慮に入れさせない自動分散化システムについて、図２を参照して詳しく説明する。まず、開発者は単一ホスト２０上で分散システムを稼動させることを想定して非分散システムを開発する。次に開発者は各機能モジュールＡ２〜Ｅ２をどのホストに配置させるかを決定する。この配置設定は機能モジュール名とホスト名との組み合わせを記憶するテーブル２８を作成することにより行う。
【０００６】
五つの機能モジュールＡ２〜Ｅ２からなる非分散システムと、テーブル２８との入力を元に、自動分散化システム２６は単一ホスト２０上で稼動する非分散システムを分散システムへと変換する。図２の例では、テーブル２８に基づいて、二つの機能モジュールＡ２，Ｂ２は、ホスト〔Ｈｏｓｔ１〕  ２２上に配置し、三つの機能モジュールＣ２，Ｄ２，Ｅ２は、ホスト〔Ｈｏｓｔ２〕  ２４上に配置している。本願においては、このような変換システムを自動分散化システムと呼ぶ。
【０００７】
図２に示す自動分散化システムの問題点は、全ての機能モジュールＡ２〜Ｅ２の配置を開発者が決定する必要があったという点である。その理由は、図２の自動分散システムは、機能モジュールの最適な配置を自動的に決定することを全く考慮に入れていないためである。
【０００８】
その他、分散システムの関連技術が、特開平０３−１８２９６０号公報（特許文献２参照）に記載されている。この公知文献に記載された「並列計算機システム」の発明においては、グラフを用いて並列計算機システムを表現する。このグラフのノードは、プロセッサを表している。また、このグラフのエッジは、プロセッサ間の通信路を表している。
【０００９】
特開平０６−０７５７８６号公報（特許文献３参照）には、「タスクスケジュリング方法」の発明が記載されている。この公知文献では、タスクスケジュールの優先順位を決定するために、通信コストを求めている（特許文献３図５，図６）。この通信コストは、〔通信の立ち上がりのオーバヘッド時間〕+〔データ転送量〕×〔単位データ量あたりのデータ転送時間〕によって計算される。
【００１０】
【特許文献１】特開平１１−０８５５１９号公報
【特許文献２】特開平０３−１８２９６０号公報
【特許文献３】特開平０６−０７５７８６号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
本発明の課題は、全ての機能モジュールの配置を決定しなくても、プログラムの解析情報を元に自動的に機能モジュールの最適な配置を決定する自動分散化システム及び自動分散化方法を提供することにある。
【課題を解決するための手段】
【００１２】
本発明の一つの自動分散化システムは、プログラム解析部と、グラフ作成部と、最小カット計算部と、分散システム生成部とを具備する。プログラム解析部は、複数の機能モジュールを含むプログラムを解析し、機能モジュール間の参照関係及びプログラム実行時における機能モジュール間の呼び出し回数を取得する。グラフ作成部は、参照関係及び呼び出し回数に基づいて、重み付きグラフを作成する。最小カット計算部は、重み付きグラフの最小カットを計算する。分散システム生成部は、最小カットに基づいて、複数のモジュールを自動的に分散化する。
【００１３】
本発明の別の一つの自動分散化方法は、取得することと、作成することと、計算することと、分散化することとを具備する。取得することにおいては、複数の機能モジュールを含むプログラムを解析し、機能モジュール間の参照関係及びプログラム実行時における機能モジュール間の呼び出し回数を取得する。作成することにおいては、参照関係及び呼び出し回数に基づいて、重み付きグラフを作成する。計算することにおいては、重み付きグラフの最小カットを計算する。分散化することにおいては、最小カットに基づいて、複数のモジュールを自動的に分散化する。
【発明の効果】
【００１４】
本発明によれば、開発者が全ての機能モジュールについて最適な配置を決定する必要がなくなる。その理由は、本発明が機能モジュールの最適な配置を自動的に決定するためである。
【発明を実施するための最良の形態】
【００１５】
本発明を実施するための最良の形態の一つについて、図面を参照して詳細に説明する。図３を参照して、本発明による一つの実施の形態における自動分散化システムの構成及び動作について説明する。本実施の形態における自動分散化システムは、プログラム解析部と、グラフ作成部と、最小カット計算部と、分散プログラム生成部とを備えている。
【００１６】
図３に示すように、本実施の形態における自動分散化システムは、まず、プログラム解析部によって、プログラムの解析を行う（Ｓ３０）。プログラム解析部は、単一ホスト上で分散システムを稼動させることを想定した非分散のプログラムの解析を行う機能を有している。プログラム解析部は、機能モジュール間の参照関係およびプログラム実行時における各機能モジュールの呼び出し回数を取得する。解析対象は、ソースコードとすることもでき、また、バイナリコードとすることも、或いは、中間コードとすることもできる。
【００１７】
本実施の形態における自動分散化システムは、次に、グラフ作成部によって、重み付きグラフの作成を行う（Ｓ３２）。グラフ作成部は、プログラム解析部で得られた情報を元に、重み付きグラフを生成する機能を有している。この重み付きグラフの各ノードは、入力したプログラムに含まれる複数の機能モジュールのいずれかを表し、各エッジは機能モジュール間の参照関係を表す。さらに、重み付きグラフの各コストは、以下の式によって定義される。
【００１８】
〔コスト〕＝α〔各機能モジュールへの呼び出し回数〕×β〔呼び出し時の引数のデータ量〕
【００１９】
ここで、各機能モジュールへの呼び出し回数はプログラム解析部で得られる情報の一つであり、プログラムを実行した結果として取得することができる。また、呼び出し時の引数のデータ量は、その機能モジュールを呼び出す際に、呼び出し先の機能モジュールに渡すデータの総量である。それから、αおよびβは、自動分散化システムの利用者が設定可能な定数である。
【００２０】
本実施の形態における自動分散化システムは、続いて、最小カット計算部によって、最小カットの計算を行う（Ｓ３４）。最小カット計算部は、グラフ作成部で作成されるグラフの最小カットを計算する機能を有する。但し、最小カット計算部は、配置設定の制約を与えられた場合には、その制約に従って、最小カットを計算できる。例えば、ユーザから、同一ホストに配置しないと指定された機能モジュールを、異なるホストに配置するようにする。このとき、それらの指定された機能モジュールは、同じ部分グラフに存在することはない。
【００２１】
本実施の形態における自動分散化システムは、最後に、分散システム生成部によって、分散プログラムへの変換を行う（Ｓ３６）。分散システム生成部は、最小カット計算部で計算された部分グラフを元に、プログラムを分散システムに変換し、出力する。
【実施例１】
【００２２】
開発者が単一ホスト上で稼動させる非分散のプログラムを作成した場合を仮定する。理解を容易にするために、このプログラムは、図２の場合と同じく、複数の機能モジュールＡ２〜Ｅ２から成り立っているとする。実施例１における自動分散化システムは、複数の機能モジュールＡ２〜Ｅ２から成るプログラムを入力として、分散システム向けプログラムを自動生成する。
【００２３】
自動分散化システムが、入力としてプログラムを受け取ると、まず、プログラム解析部がプログラムの解析を行う。この解析により、プログラム解析部は、機能モジュールＡ２〜Ｅ２間の参照関係及び実行時の各機能モジュールの呼び出し回数を得る。次に、グラフ作成部が、その解析情報を元に、図４のような重み付きグラフを生成する。図４において、グラフのノードはプログラム上の機能モジュールＡ２〜Ｅ２を表し、グラフのエッジは各機能モジュールＡ２〜Ｅ２の呼び出し関係を表す。重み付きグラフの重みは、以下の式により定義されるコストであり、ｃ１〜ｃ４と計算されている。
【００２４】
〔コスト〕＝Σα〔各機能モジュールへの呼び出し回数〕×β〔呼び出し時の引数のデータ量〕
【００２５】
ここで、各機能モジュールＡ２〜Ｅ２への呼び出し回数は、プログラム解析部で得られた実行時情報であり、呼び出し時の引数のデータ量は、その機能モジュールを呼び出す際に呼び出し先の機能モジュールに渡すデータの総量である。また、αおよびβはユーザが設定可能な定数である。
【００２６】
例えば、図５のように、二つの機能モジュールＡ２、Ｂ２が互いに相手の機能モジュールＢ２、Ａ２を呼び出しており、機能モジュールＡ２は、三つの機能ｆ０、ｆ１、ｆ２を持ち、機能モジュールＢ２は、四つの機能ｆ３、ｆ４、ｆ５、ｆ６を持っていたとする。この場合、機能モジュールＡ２と、機能モジュールＢ２との間のコストは、数１のように計算される。
【００２７】
【数１】
0005170408.tif 000002
【００２８】
数１において、ｃｏｕｎｔとは、機能ｆｉを呼び出す回数を計数する関数である。例えば、ｃｏｕｎｔ（ｆ０）は機能モジュールＢ２が機能モジュールＡ２の機能ｆ０を呼び出す回数を意味する。また、ｓｉｚｅとは機能ｆｉを呼び出す際に渡すデータの総量である。例えば、ｓｉｚｅ（ｆ０）は、機能モジュールＢ２が機能モジュールＡ２の機能ｆ０を呼び出す際に渡すデータの総量を意味する。
【００２９】
続いて、最小カット計算部が、図４の重み付きグラフの最小カットを計算する。最後に、分散プログラム生成部が、計算された最小カットに基づいて、入力されたプログラムを分散プログラムに変換し、出力する。例えば、図２に示したものと同じような配置の分散化プログラムが出力される。
【実施例２】
【００３０】
自動分散化システムには、配置設定の制約を与えることができる。図６は、配置設定の制約を記憶するテーブルを示す図である。図６において、テーブル６０は、機能モジュール名とホスト名との組み合わせを記憶している。テーブル６０の内容を参照すると、配置設定の制約は、機能モジュールＡ２は、ホスト〔ＨＯＳＴ１〕に配置しなければいけないこと、機能モジュールＥ２は、ホスト〔ＨＯＳＴ２〕に配置しなければいけないことを表している。
【００３１】
自動分散化システムが、配置設定の制約を入力すると、最小カット計算部は、最小カットを計算するときに、配置設定の制約に従った計算を行う。配置設定の制約に矛盾するような部分グラフは認められないので、例えば、配置設定の制約として、図６のテーブルを入力した場合には、自動分散化システムは、機能モジュールＡ２と機能モジュールＥ２とを、同一の部分グラフに配置するようなカットを選択してはならないという制約に従う。
【図面の簡単な説明】
【００３２】
【図１】図１は、基本的な分散システムの説明図である。
【図２】図２は、関連技術における自動分散化システムの説明図である。
【図３】図３は、本実施の形態における自動分散化システムの動作を説明するフローチャートである。
【図４】図４は、重み付きグラフでモデル化したプログラムの説明図である。
【図５】図５は、コストの計算方法の説明図である。
【図６】図６は、配置設定の制約を記憶するテーブルを示す図である。
【符号の説明】
【００３３】
１０，１２，２０，２２，２４  ホスト
１４  ネットワーク
２６  自動分散化システム
２８，６０  テーブル
【図１】
0005170408.tif 000003
【図２】
0005170408.tif 000004
【図３】
0005170408.tif 000005
【図４】
0005170408.tif 000006
【図５】
0005170408.tif 000007
【図６】
0005170408.tif 000008