(57)【要約】【課題】ネットワーク接続された複数の計算機によって構成される分散計算機環境を用いた分散システム処理開始時点において、負荷分散を行うことを目的とする。また、本発明は、例えば、システム全体の計算能力に対する悪影響を与えることなく負荷分散を行うことを目的とする。【解決手段】実行開始前に予め実行を分担するプログラムの処理負荷を見積もってモデル処理量見積値として設定した情報を基に、実行開始時に負荷の配分を行う。また、予め定義した計算機負荷の閾値を超えるタイミングに負荷配分を実行する。【選択図】図３
2008198145.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク接続された複数の計算機を備える分散システムの負荷分散装置において、
複数の処理を有する全体処理の実行開始前に予め見積もられた、上記複数の処理の各処理の処理負荷の見積値を記憶装置に記憶する処理量見積値記憶部と、
上記処理量見積値記憶部が記憶した上記各処理の処理負荷の見積値に基づき、所定のスケジューリングアルゴリズムにより、上記全体処理の実行開始前に上記各処理を実行する計算機を上記複数の計算機の中から処理装置により決定する負荷配分部と
を備えることを特徴とする負荷分散装置。
【請求項２】
上記負荷分散装置は、さらに、
上記各計算機の負荷に対する許容量を記憶装置に記憶する許容量記憶部と、
上記全体処理の実行中における上記各計算機の負荷を処理装置により監視して上記負荷配分部へ通知する負荷監視部とを備え、
上記負荷配分部は、上記負荷監視部が通知した上記各計算機の負荷の中の少なくとも１つの計算機の負荷が、上記許容量記憶部が記憶した上記計算機の負荷に対する許容量を超えた場合、改めて上記各処理を実行する計算機を上記複数の計算機の中から決定する
ことを特徴とする請求項１記載の負荷分散装置。
【請求項３】
上記負荷分散装置は、さらに、
上記各計算機の負荷に対する許容量を記憶装置に記憶する許容量記憶部を備え、
上記負荷配分部は、上記各処理を実行する計算機を決定した場合に、上記複数の計算機の少なくとも１つの計算機の負荷が、上記許容量記憶部が記憶した上記計算機の負荷に対する許容量を超えた場合、上記各処理を実行する計算機を上記複数の計算機と上記複数の計算機以外の予備の計算機との中から決定する
ことを特徴とする請求項１記載の負荷分散装置。
【請求項４】
上記負荷配分部は、改めて上記各処理を実行する計算機を決定した場合に、上記複数の計算機の少なくとも１つの計算機の負荷が、上記許容量記憶部が記憶した上記計算機の負荷に対する許容量を超えた場合、上記各処理を実行する計算機を上記複数の計算機と上記複数の計算機以外の予備の計算機との中から決定する
ことを特徴とする請求項２記載の負荷分散装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば、ネットワーク接続された複数の計算機によって構成される分散計算機環境を用いた分散システムに関するものである。特に、本発明は、例えば、処理の実行開始前および実行中に各計算機の処理負荷を見積もり、各計算機の処理負荷を均等化することを目的に実行処理の配分を行うことで、分散システムの全体的な処理性能の向上と、メモリ、ハードディスク等の計算機資源の過剰な消費の回避を実現するものである。
【背景技術】
【０００２】
ネットワーク接続された複数の計算機によって構成される分散計算機環境を用いた分散システムは、比較的安価な市販計算機を多数用いて並列計算を行うことで高価なスーパーコンピュータと同等以上の計算能力を得ることが可能である。また分散システムは、計算機台数を増やすことによる性能拡張も可能である。そのため、分散システムは近年では非常に多く利用されている。しかし、分散システムにおいて多数の計算機で並列計算を行う際に、少数の計算機に局所的に計算負荷が集中してしまうと、負荷が集中した計算機での処理が完了するまで他計算機の処理も待たされてしまう。この場合、システム全体の計算能力が著しく低下するという課題がある。したがって、分散システムにおいて、各計算機に対する処理負荷の均等配分が大きな技術課題である。
【０００３】
特許文献１は、上述したような処理負荷の均等配分に関するものである。特許文献１は、各計算機上で実行されるプログラムの負荷を監視し、動的に計算機間の負荷を調整する分散システムについての発明である。特許文献１に記載された分散システムは、次のようなものである。
（１）模擬対象となる多数の物体（オブジェクト）の模擬処理を実行するオブジェクトプログラムを各計算機で１個以上分担実行する。
（２）模擬実行処理の処理区分であるフレーム単位で各オブジェクトプログラムの処理時間を集計して比較評価する。
（３）計算機間のオブジェクトプログラム処理時間集計値の差が大きくならないように次フレームの処理開始時にオブジェクトプログラムの実行を各計算機間で配分し直す。
この（１）〜（３）の処理を、各フレームにおいて繰り返し実行することにより、各計算機間の処理負荷を均等化する。
【特許文献１】特開２００３−３１６７５４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上述したように、従来の分散システムでは、フレーム毎にオブジェクトプログラムの実行を各計算機間で配分し直すことを繰り返すことにより処理負荷を均等化する。特許文献１に記載された分散システムには、以下のような課題がある。
（１）処理開始時点、すなわち第１フレームにおいて各計算機に対するオブジェクトプログラムの実行配分は任意であり、そのため処理開始時点は処理負荷が均等化されていないという課題がある。
（２）フレーム毎にオブジェクトプログラムの実行を各計算機間で配分し直すことを繰り返すため、フレームの合間にオブジェクトプログラムの実行を計算機間で切り替えるための通信処理やデータ読込み処理等のオブジェクトプログラム切り替え処理が必要となる。特に各計算機間でオブジェクトプログラムの実行配分が大きく切り替わる場合等に多大なオブジェクトプログラム切り替え処理時間を必要とする。そのため、全体的に見た場合にはこれらのオブジェクトプログラム切り替え処理がオブジェクトプログラムの模擬実行処理を圧迫し、システム全体の計算能力を向上させることが難しいという課題がある。
【０００５】
本発明は、例えば、処理開始時点において負荷分散を行うことを目的とする。また、本発明は、例えば、システム全体の計算能力に対する悪影響を与えることなく負荷分散を行うことを目的とする。
【課題を解決するための手段】
【０００６】
本発明に係る負荷分散装置は、例えば、ネットワーク接続された複数の計算機を備える分散システムの負荷分散装置において、
複数の処理を有する全体処理の実行開始前に予め見積もられた、上記複数の処理の各処理の処理負荷の見積値を記憶装置に記憶する処理量見積値記憶部と、
上記処理量見積値記憶部が記憶した上記各処理の処理負荷の見積値に基づき、所定のスケジューリングアルゴリズムにより、上記全体処理の実行開始前に上記各処理を実行する計算機を上記複数の計算機の中から処理装置により決定する負荷配分部と
を備えることを特徴とする。
【発明の効果】
【０００７】
本発明に係る負荷分散装置は、実行開始前に利用者が予め実行を分担するプログラムの処理負荷を見積もってモデル処理量見積値として設定した情報を基に、実行開始時に負荷の配分を行うことにより、処理開始時点において処理負荷を均等化することが可能である。
さらに、本発明に係る負荷分散装置は、負荷配分のタイミングを周期的に行うのではなく、予め利用者が定義した計算機負荷の閾値を超えるタイミングによって負荷配分を実行することで、必要な場合にのみ負荷配分処理の処理コストが発生するため、システム全体の計算能力に対する悪影響を少なくすることが可能である。
【発明を実施するための最良の形態】
【０００８】
図１は、実施の形態における負荷分散システム１００の外観の一例を示す図である。
図１において、負荷分散システム１００は、ＰＣ９０９（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）、１台以上のサーバ９１７を備える。また、ＰＣ９０９は、ＬＣＤ（液晶）９０１、キーボード９０２（Ｋｅｙ・Ｂｏａｒｄ：Ｋ／Ｂ）、マウス９０３、ＦＤＤ９０４（Ｆｌｅｘｉｂｌｅ・Ｄｉｓｃ・Ｄｒｉｖｅ）、ＣＤＤ９０５（コンパクトディスク装置）、などのハードウェア資源を備え、これらのハードウェア資源はケーブルや信号線で接続されている。
ＰＣ９０９、サーバ９１７は、コンピュータであり、ローカルエリアネットワーク９４２（ＬＡＮ）やインターネット９４０により接続されている。
ここで、サーバ９１７は、後述する計算機１０１及び負荷分散装置１１０のハードウェア構成の一例である。
【０００９】
図２は、実施の形態における計算機１０１及び負荷分散装置１１０の一例を示す図である。
図２において、計算機１０１及び負荷分散装置１１０は、プログラムを実行するＣＰＵ９１１（Ｃｅｎｔｒａｌ・Ｐｒｏｃｅｓｓｉｎｇ・Ｕｎｉｔ、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう）を備えている。ＣＰＵ９１１は、バス９１２を介してＲＯＭ９１３、ＲＡＭ９１４、通信ボード９１５、ＬＣＤ９０１、キーボード９０２、マウス９０３、ＦＤＤ９０４、ＣＤＤ９０５、磁気ディスク装置９２０と接続され、これらのハードウェアデバイスを制御する。磁気ディスク装置９２０の代わりに、光ディスク装置、メモリカード読み書き装置などの記憶装置でもよい。
【００１０】
ＲＡＭ９１４は、揮発性メモリの一例である。ＲＯＭ９１３、ＦＤＤ９０４、磁気ディスク装置９２０の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置の一例である。
通信ボード９１５、キーボード９０２、ＦＤＤ９０４、ＣＤＤ９０５などは、入力装置の一例である。
【００１１】
通信ボード９１５は、ＬＡＮ９４２等に接続されている。
磁気ディスク装置９２０又はＲＯＭ９１３などには、オペレーティングシステム９２１（ＯＳ）、ウィンドウシステム９２２、プログラム群９２３、ファイル群９２４が記憶されている。プログラム群９２３のプログラムは、ＣＰＵ９１１、オペレーティングシステム９２１、ウィンドウシステム９２２により実行される。
【００１２】
上記プログラム群９２３には、以下に述べる実施の形態の説明において「モデル処理部１０２」、「負荷配分部１０５」、「シナリオファイル記憶部１０６」、「モデル処理量見積値設定ファイル記憶部１０７」、「初期設定ファイル記憶部１０８」、「負荷監視部１０９」として説明する機能を実行するプログラムがそれぞれ記憶されている。プログラムは、ＣＰＵ９１１により読み出され実行される。
ファイル群９２４には、以下に述べる実施の形態の説明において、「シナリオファイル」、「モデル処理量見積値設定ファイル」、「初期設定ファイル」として説明する情報やデータや信号値や変数値やパラメータが、「ファイル」や「データベース」の各項目として記憶されている。「ファイル」や「データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリになどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ９１１によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示などのＣＰＵ９１１の動作に用いられる。抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示のＣＰＵ９１１の動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
また、以下に述べる実施の形態の説明において説明するフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、ＲＡＭ９１４のメモリ、ＦＤＤ９０４のフレキシブルディスク、コンパクトディスク、磁気ディスク装置９２０の磁気ディスク、その他光ディスク、ミニディスク、ＤＶＤ（Ｄｉｇｉｔａｌ・Ｖｅｒｓａｔｉｌｅ・Ｄｉｓｃ）等の記録媒体に記録される。また、データや信号は、バス９１２や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【００１３】
また、以下に述べる実施の形態の説明において「〜部」として説明するものは、「〜回路」、「〜装置」、「〜機器」、「〜手段」、「〜機能」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。また、「〜処理」として説明するものは「〜ステップ」であっても構わない。すなわち、「〜部」として説明するものは、ＲＯＭ９１３に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、ＤＶＤ等の記録媒体に記憶される。プログラムはＣＰＵ９１１により読み出され、ＣＰＵ９１１により実行される。すなわち、プログラムは、以下に述べる「〜部」としてコンピュータを機能させるものである。あるいは、以下に述べる「〜部」の手順や方法をコンピュータに実行させるものである。
【００１４】
実施の形態１．
実施の形態１では、処理実行開始時点における処理負荷の均等化について説明する。実施の形態１では、分散システム（負荷分散システム１００）の一例として分散シミュレーションシステムを用いて説明する。
【００１５】
図３は、実施の形態１に係る分散シミュレーション方式に基づき実行される、分散シミュレーションシステムの機能を示す機能ブロック図である。
図３において、分散シミュレーションシステムは、１台以上の計算機１０１（計算機１〜計算機ｎ）を備える。計算機１０１には、シミュレーションの実行のために利用することが予め決められている計算機と、必要な場合にシミュレーションに参加させる予備計算機の２種類がある。いずれの計算機１０１も内部の構成は原則として同じである。
【００１６】
各計算機１０１は、モデル処理部１０２を備える。また、負荷分散機能を備えた計算機１０１（負荷分散装置１１０）は、さらに、負荷配分部１０５、シナリオファイル記憶部１０６、モデル処理量見積値設定ファイル記憶部１０７（処理量見積値記憶部）、初期設定ファイル記憶部１０８（許容量記憶部）を備える。
モデル処理部１０２は、計算機１０１内においてシミュレーション処理を実行する。モデル処理部１０２は、分散シミュレーションシステムの標準アーキテクチャであるＨＬＡ（Ｈｉｇｈ  Ｌｅｖｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ：ＩＥＥＥ  Ｓｔｄ  １５１６−２０００）に基づき、機能が構成されている。モデル処理部１０２は、１つ以上のフェデレート機能１０３、ＲＴＩ（Ｒｕｎ−Ｔｉｍｅ  Ｉｎｆｒａｓｔｒｕｃｔｕｒｅ）機能１０４を備える。フェデレート機能１０３は、ＨＬＡで定義された機能であり、分散シミュレーションにおける模擬処理等の応用に依存する機能を分散実装した機能である。フェデレート機能１０３は、１計算機に対して１つ以上実行される。ＲＴＩ機能１０４は、ＨＬＡで定義された機能であり、分散シミュレーションにおけるデータ交換や時刻管理等の応用に依存しない基盤機能を実装した機能である。図３ではＲＴＩ機能１０４を計算機１０１毎に実行機能を持つ形態で例示したが、ＲＴＩ機能１０４の実行形態はＨＬＡ規約には定められていない。したがって、ＲＴＩ機能１０４は、フェデレート機能１０３毎に実行機能を持つ形態（分散型実行形態）や、またはシステム全体で１つの実行機能を持つ形態（サーバ型実行形態）等としても構わない。ここでは、ＲＴＩ機能１０４がどのような形態であっても、全て、あるいはどれか１つのモデル処理部１０２に含まれるものとする。
負荷配分部１０５は、計算機１０１毎に、モデル処理部１０２における実行状態を管理することにより、処理負荷が均等になるように配分する機能である。
シナリオファイル記憶部１０６は、シミュレーションの模擬処理を実行するフェデレート機能１０３や、負荷配分部１０５が読み込むシナリオデータが設定されたシナリオファイルを記憶装置に記憶する。
モデル処理量見積値設定ファイル記憶部１０７は、個々のフェデレート機能１０３が実行する個別の模擬処理の処理負荷の見積値が設定されたモデル処理量見積値設定ファイルを記憶装置に記憶する。
初期設定ファイル記憶部１０８は、個々の計算機１０１のＣＰＵ性能、メモリ性能、ハードディスク性能等のリソースに対する消費量を計算機負荷とした場合の計算機１０１毎の最大許容負荷量を記憶装置に記憶する。また、初期設定ファイル記憶部１０８は、個々の計算機１０１において必ず実行される機能（例えばオペレーティングシステムや、システム全体で１つのサーバ型実行形態により実行される場合のＲＴＩ機能１０４）によって消費される計算機１０１毎の初期負荷量とを設定した初期設定ファイルを記憶装置に記憶する。
【００１７】
図４は、シナリオファイル記憶部１０６が記憶するシナリオファイルの設定例である。シナリオファイルにはシミュレーションを実行するための様々な情報が定義されているがここでは負荷配分部１０５が読込む情報について説明する。シナリオファイルは、登場オブジェクト名２０１、オブジェクト実行フェデレート名２０２、オブジェクト模擬開始時刻２０３、オブジェクト模擬終了時刻２０４を有する。これらの４種の情報は、どのようなシミュレーションであっても必ずシナリオに定義されているか、または暗黙のうちに決められている情報である。また、シナリオファイルは、全体模擬終了時刻２０５を有する。
登場オブジェクト名２０１は、シミュレーションにおいて模擬実行される対象物であるオブジェクト名称である。
オブジェクト実行フェデレート名２０２は、オブジェクトが実行されるフェデレートの名称である。
オブジェクト模擬開始時刻２０３は、オブジェクトがシミュレーションにおいて生成（模擬開始）されるシミュレーションにおけるの時刻である。
オブジェクト模擬終了時刻２０４は、オブジェクトがシミュレーションにおいて破棄（模擬終了）されるシミュレーションにおけるの時刻である。
全体模擬終了時刻２０５は、シナリオファイルに設定された情報のうち負荷配分部１０５が読み込む情報には、シミュレーション全体が終了するシミュレーション時刻である。シミュレーションの種類により、オブジェクト模擬終了時刻２０４が決められていない場合も考えられるが、その場合はオブジェクト模擬終了時刻２０４の設定値のうち、最大の設定値を全体模擬終了時刻２０５と仮定する。
【００１８】
図５は、モデル処理量見積値設定ファイル記憶部１０７が記憶するモデル処理量見積値設定ファイルの設定例である。モデル処理量見積値設定ファイルは、登場オブジェクト名３０１、ＣＰＵ処理量見積値３０２、メモリ使用量見積値３０３、ディスク使用量見積値３０４を有する。
登場オブジェクト名３０１は、シナリオファイルの登場オブジェクト名２０１と同様、シミュレーションにおいて模擬実行される対象物であるオブジェクト名称である。
ＣＰＵ処理量見積値３０２とメモリ使用量見積値３０３とディスク使用量見積値３０４とは、それぞれ個々のフェデレート機能１０３が実行する個別の模擬処理の処理負荷の見積値である。ＣＰＵ処理量見積値３０２は、ＣＰＵの使用率の見積値である。メモリ使用量見積値３０３は、メモリ使用量の見積値である。ディスク使用量見積値３０４は、ディスク使用量の見積値である。
【００１９】
図６は、初期設定ファイル記憶部１０８が記憶する初期設定ファイルの設定例である。初期設定ファイルは、各計算機１０１における最大許容負荷量（図６の（ａ））、個々の計算機１０１において必ず実行される機能によって消費される計算機１０１毎の初期負荷量（図６の（ｂ））、全計算機１０１では実行されないが特定の計算機１０１で実行される可能性がある機能に関する負荷量（図６の（ｃ））とを有する。
各計算機１０１における最大許容負荷量について、初期設定ファイルは、計算機名４０１、ＣＰＵ処理量リミット値４０２、メモリ使用量リミット値４０３、ディスク使用量リミット値４０４を有する。計算機名４０１は、分散シミュレーションシステムに使用される個々の計算機１０１の名称である。ＣＰＵ処理量リミット値４０２は、ＣＰＵの使用率の最大許容値である。メモリ使用量リミット値４０３は、メモリ使用量の最大許容値である。ディスク使用量リミット値４０４は、ディスク使用量の最大許容値である。
個々の計算機１０１において必ず実行される機能によって消費される計算機１０１毎の初期負荷量について、初期設定ファイルは、計算機名４０１、ＣＰＵ処理量初期値４０５、メモリ使用量初期値４０６、ディスク使用量初期値４０７を有する。計算機名４０１は上記と同様である。ＣＰＵ処理量初期値４０５とメモリ使用量初期値４０６とディスク使用量初期値４０７とは、それぞれＣＰＵ、メモリ、ディスクの必ず消費される初期負荷量である。
全計算機１０１では実行されないが特定の計算機１０１で実行される可能性がある機能に関する負荷量について、計算機名４０１、ＣＰＵ処理量初期値（ＲＴＩ）４０８、メモリ使用量初期値（ＲＴＩ）４０９、ディスク使用量初期値（ＲＴＩ）４１０を有する。ここで、全計算機１０１では実行されないが特定の計算機１０１で実行される可能性がある機能とは、システム全体で１つのサーバ型実行形態により実行される場合のＲＴＩ機能等である。計算機名４０１は上記と同様である。ＣＰＵ処理量初期値（ＲＴＩ）４０８とメモリ使用量初期値（ＲＴＩ）４０９とディスク使用量初期値（ＲＴＩ）４１０とは、それぞれシステム全体で１つのサーバ型実行形態により実行される場合のＲＴＩ機能である。
【００２０】
次に図７に基づき、分散シミュレーションシステムがシミュレーション実行開始時点における処理負荷の均等化を行う処理実行前負荷分散処理について説明する。図７は、処理実行前負荷分散処理の動作を示すフローチャートである。
まず、読込処理（Ｓ１０１）では、負荷配分部１０５は、シミュレーション実行開始時点において、シナリオファイル、モデル処理量見積値設定ファイル及び初期設定ファイルを読み込む。
ここで、シナリオファイルには、オブジェクトが実行されるフェデレートと、実行開始または終了されるタイミングが設定されている。また、モデル処理量見積値設定ファイルには、各オブジェクトが実行されることによって生じる負荷の量が設定されている。また、初期設定ファイルには、各計算機１０１の負荷の最大許容量と、初期値としての負荷の量が設定されている。
次に、負荷配分処理（Ｓ１０２）では、負荷配分部１０５は、（Ｓ１０１）で読込んだ情報を基に、どの計算機１０１で、どの時間において、どのフェデレートを実行するのかのスケジューリング情報を作成する。
ここで、スケジューリング情報を作成するアルゴリズムはどのようなアルゴリズムであっても構わない。例えば、所定の期間における処理負荷の平均値が高い順にフェデレートの情報をソートしておき、最も処理負荷が高いフェデレートから順に各計算機１０１に割り当てていくような、単純で短時間に結果を得られる方式でも構わない。また、遺伝的アルゴリズムにより最適解に近いスケジューリングを求めるような、結果が得られるまでに時間がかかる方式でも構わない。つまり、負荷配分部１０５は、どの計算機１０１で、どの時間において、どのフェデレートを実行するのかといった情報が作成されれば良く、スケジューリング情報の作成手段としてはどのようなアルゴリズムを用いても良い。
そして、実行処理（Ｓ１０３）では、負荷配分部１０５は、作成したスケジューリング情報に基づき、各計算機１０１のモデル処理部１０２に対して、フェデレート機能１０３やＲＴＩ機能１０４の起動を行う。
【００２１】
図８、図９は、図４に示すシナリオファイルと、図５に示すモデル処理量見積値設定ファイルとの設定情報を基に、スケジューリングを行い、計算機１０１に対して負荷配分を行う例を示す。ここでは、説明の簡単のためＣＰＵ処理負荷のみに基づき負荷配分を行った例を示す。しかし、実際には、その他のメモリやディスクの処理負荷なども考慮して負荷配分を行うとしても構わない。
ここでは、まず、オブジェクト毎のＣＰＵ処理量見積値３０２と実行時間（オブジェクト模擬終了時刻２０４からオブジェクト模擬開始時刻２０３を引いた時間）とから時間的な平均値を求めて、フェデレート毎に集計したフェデレートＣＰＵ処理負荷量平均値を算出する。図８の例ではパーセンテージ値を用いているため、集計値が１００％以上の場合には１００％を用いることとする。つまり、以下の２つの式で算出する。
（１）フェデレートＣＰＵ処理負荷量平均値  ＝  ｍｉｎ（オブジェクトＣＰＵ処理負荷量平均値集計値，１００）
（２）オブジェクトＣＰＵ処理負荷量平均値集計値  ＝  ｓｕｍ（オブジェクトＣＰＵ処理量見積値３０２  ／  オブジェクト模擬終了時刻２０４  −  オブジェクト模擬開始時刻２０３）
次に、ここでは、フェデレートＣＰＵ処理負荷量平均値が高いフェデレートから順に各計算機１０１に割り当てたスケジューリング情報を作成する。
そして、作成したスケジューリング情報を用いて３台の計算機１０１に対して負荷配分を行った。
ここで、図８は、フェデレートＣＰＵ処理負荷量平均値の高い順にフェデレートをソートした状態を示す図である。また、図９は、最終的にフェデレートを各計算機１０１に割当した状態を示す図である。
図８、図９に示す例では、各計算機１０１に割り当てられたフェデレートのフェデレートＣＰＵ処理負荷量平均値の計算機１０１単位の合計値は、図６の（ｂ）、（ｃ）に示す初期設定ファイルに設定された当該計算機１０１のＣＰＵ処理量初期値４０５とＣＰＵ処理量初期値（ＲＴＩ）４０８とを加算しても、図６の（ａ）に設定された当該計算機１０１のＣＰＵ処理量リミット値４０２を超えない。したがって、予備計算機を追加することなく、そのまま実行開始される。図８、図９に示す例と異なり、各計算機１０１に割り当てられたフェデレートのフェデレートＣＰＵ処理負荷量平均値の計算機１０１単位の合計値に、当該計算機１０１のＣＰＵ処理量初期値４０５やＣＰＵ処理量初期値（ＲＴＩ）４０８を加算した値が、当該計算機１０１のＣＰＵ処理量リミット値４０２を超える場合には、分散シミュレーションシステムに追加可能な予備計算機を追加し、その予備計算機に対して割り当てを行う。
【００２２】
以上のように、実施の形態１に係る分散シミュレーションシステムでは、実行開始前に利用者等が予め実行を分担するプログラムの処理負荷を見積もってモデル処理量見積値として設定した情報を基に、実行開始時に負荷の配分を行うことにより、処理開始時点において処理負荷を均等化することができる。
また、負荷の配分を行った結果、許容量を超えた場合、予備計算機に対して処理を割り当てることができる。予備計算機を複数の分散シミュレーションシステムで共有することや、予備計算機を通常は他の用途に使用することで、コストを抑えることができる。
【００２３】
図１０は、図３に示す分散シミュレーションシステムとは異なる構成の分散シミュレーションシステムの機能を示す機能ブロック図である。図１０に示す分散シミュレーションシステムは、図３に示す分散シミュレーションシステムとは異なり、処理を実施する計算機１０１とは別に負荷分散装置１１０を備える。つまり、図３に示す分散シミュレーションシステムでは、ある計算機１０１が負荷分散機能（負荷配分部１０５、シナリオファイル記憶部１０６、モデル処理量見積値設定ファイル記憶部１０７、初期設定ファイル記憶部１０８）を備えていたが、図１０に示す分散シミュレーションシステムでは、負荷分散機能のみを備えた負荷分散装置１１０を有し、各計算機１０１は処理の実行を行う機能のみを備える。
具体的には、負荷分散装置１１０は、負荷配分部１０５、シナリオファイル記憶部１０６、モデル処理量見積値設定ファイル記憶部１０７、初期設定ファイル記憶部１０８を備える。そして、計算機１０１は、モデル処理部１０２を備える。
【００２４】
実施の形態２．
実施の形態２では、処理実行中における、計算機１０１の負荷状況監視に基づいた処理負荷の均等化について説明する。実施の形態２では、実施の形態１と同様に分散システム（負荷分散システム１００）の一例として分散シミュレーションシステムを用いて説明する。
【００２５】
シミュレーションの実行中において、シミュレーションの実行内容に応じて当初の見積値を超えた負荷が発生する場合や、シミュレーション以外の割り込み処理等が実行される場合等、不測の事態により特定の計算機１０１の負荷が高くなることがある。その結果、全体のシミュレーション実行速度性能等に影響を及ぼすような場合がある。実施の形態２では、このような場合に、シミュレーションの実行中に動的に負荷の均等化を行う処理について説明する。
【００２６】
図１１は、実施の形態２に係る分散シミュレーション方式に基づき実行される、分散シミュレーションシステム（負荷分散システム１００）の機能を示す機能ブロック図である。
実施の形態２に係る分散シミュレーションシステムでは、実施の形態１に係る分散シミュレーションシステムの機能に加え、計算機１０１は負荷監視部１０９を備える。
【００２７】
負荷監視部１０９は、各計算機１０１の負荷状況を監視する機能である。負荷監視部１０９は、自己が動作している計算機１０１の負荷状況を監視し、計算機全体として監視した結果である計算機負荷情報と、フェデレートプログラム個別に監視した結果であるフェデレート負荷情報とを、例えば定期的に負荷配分部１０５に通知する。負荷監視部１０９が計算機１０１の負荷状況を監視する手段としては、例えば、ＯＳの機能として利用可能な手段を用いることができる。例えば、Ｌｉｎｕｘ（登録商標）  ＯＳ等では、ｖｍｓｔａｔコマンド、ｆｒｅｅコマンド、ｄｆコマンド等を実行することにより、システム全体のＣＰＵ負荷状況、メモリ使用量、ディスク使用量等に関する情報を取得することができる。また、Ｌｉｎｕｘ  ＯＳ等では、ｐｓｔａｔコマンド等により、個々のプログラムが実行する際のプロセス、スレッド単位でのＣＰＵ負荷状況、メモリ使用量、ディスク使用量等を取得することができる。なお、その他のＯＳでも同様のコマンドやシステムコール等を利用することが可能である。
【００２８】
次に図１２に基づき、分散シミュレーションシステムがシミュレーション実行中における処理負荷の均等化を行う処理実行中負荷分散処理について説明する。図１２は、処理実行中負荷分散処理の動作を示すフローチャートである。
まず、負荷監視処理（Ｓ２０１）では、負荷監視部１０９は、各計算機１０１の負荷状況を監視し、計算機負荷情報とフェデレート負荷情報とを負荷配分部１０５へ送信する。
次に、負荷判定処理（Ｓ２０２）では、負荷配分部１０５は、各計算機１０１の負荷監視部１０９から計算機負荷情報の通知を受けると、その計算機負荷情報に含まれる計算機全体の負荷量の値（ＣＰＵ処理量、メモリ使用量、ディスク使用量等）と、初期設定ファイルに設定された各計算機１０１における最大許容負荷量の値を比較する。ここで、計算機負荷情報に含まれる計算機全体の負荷量の値ではなく、計算機負荷情報を用いた演算により得られた負荷量の値と最大許容負荷量の値を比較するとしても構わない。比較の結果、計算機全体の負荷量の値が最大許容負荷量の値を超えていると負荷配分部１０５が判定した場合（Ｓ２０２でＹｅｓ）、（Ｓ２０３）へ進む。一方、比較の結果、計算機全体の負荷量の値が最大許容負荷量の値を超えていないと負荷配分部１０５が判定した場合（Ｓ２０２でＮｏ）、負荷配分部１０５は次の負荷情報が送信されるのを待つ。
次に、負荷配分処理（Ｓ２０３）では、負荷配分部１０５は、フェデレートの再割り当てを実行するために、どの計算機１０１で、どの時間において、どのフェデレートを実行するのかのスケジューリング情報を再作成する。負荷配分部１０５は、実施の形態１で用いたモデル処理量見積値設定ファイルに設定された見積値の代わりに、負荷監視部１０９から通知されたフェデレート負荷情報を用いて、実施の形態１で説明したような方式によりスケジューリング情報を再作成する。
そして、実行処理（Ｓ２０４）では、負荷配分部１０５は、再作成されたスケジューリング情報に基づき、各計算機１０１のモデル処理部１０２に対して、必要に応じてフェデレート機能１０３やＲＴＩ機能１０４の起動、終了等の制御を行う。
【００２９】
なお、スケジューリングの再作成を行っても、初期設定ファイルに設定された各計算機１０１における最大許容負荷量を超えてしまうような場合は、実施の形態１で説明したように、分散シミュレーションシステムに追加可能な予備計算機を追加し、その予備計算機に対しても割り当てを行う。シミュレーションを実行中の分散シミュレーションシステムに予備計算機を追加する処理は、ＨＬＡで定義されたＲＴＩ機能の、Ｆｅｄｅｒａｔｉｏｎ  Ｍａｎａｇｅｍｅｎｔ、Ｄｅｃｌａｒａｔｉｏｎ  Ｍａｎａｇｅｍｅｎｔ、Ｏｂｊｅｃｔ  Ｍａｎａｇｅｍｅｎｔ等の機能を用いることにより実行する。
【００３０】
以上のように、実施の形態２に係る分散シミュレーションシステムでは、予め利用者等が定義した計算機負荷の閾値を超えるタイミングに負荷配分を実行する。そのため、必要な場合にのみ負荷配分処理の処理コストが発生するので、システム全体の計算能力に対する悪影響を少なくすることができる。
【００３１】
図１３は、図１１に示す分散シミュレーションシステムとは異なる構成の分散シミュレーションシステムの機能を示す機能ブロック図である。図１３に示す分散シミュレーションシステムは、図１１に示す分散シミュレーションシステムとは異なり、処理を実施する計算機１０１とは別に負荷分散装置１１０を備える。つまり、図１１に示す分散シミュレーションシステムでは、ある計算機１０１が負荷分散機能を備えていたが、図１３に示す分散シミュレーションシステムでは、負荷分散機能のみを備えた負荷分散装置１１０を有し、各計算機１０１は処理の実行を行う機能と負荷を監視する機能のみを備える。
具体的には、負荷分散装置１１０は、負荷配分部１０５、シナリオファイル記憶部１０６、モデル処理量見積値設定ファイル記憶部１０７、初期設定ファイル記憶部１０８を備える。そして、計算機１０１は、モデル処理部１０２、負荷監視部１０９を備える。
また、負荷分散装置１１０は、上記に加え、さらに各計算機１０１の負荷を監視する負荷監視部１０９を備えるとしても構わない。この場合、各計算機１０１は、モデル処理部１０２のみを備えれば足りる。この場合には、負荷分散装置１１０が備える負荷監視部１０９は、監視する計算機１０１毎に存在するとしても、１つの負荷監視部１０９が全ての計算機１０１を監視するとしても構わない。
【００３２】
ここで、上記実施の形態に係る分散シミュレーションシステムは、ネットワーク接続された複数の計算機１０１を備える分散システム（負荷分散システム１００）の一例である。つまり、上記実施の形態に係る分散シミュレーションシステムは必ずしもシミュレーションシステムである必要はなく、その他のシステムであっても構わない。すなわち、上記実施の形態に係る分散シミュレーションシステムが備える計算機１０１により実行される処理は、シミュレーションプログラムに限られず、いかなるプログラムでも構わない。つまり、上記実施の形態に係る分散シミュレーションシステムは、モジュール、関数、サブルーチン、サブプログラム、プログラム、機能等とよばれる処理を複数有するプログラム（全体処理）を実行する際、所定のスケジューリングアルゴリズムにより、各処理を実行する計算機１０１を決定する。
【００３３】
つまり、上記実施の形態に係る分散シミュレーションシステムは、
複数の処理を有する全体処理の実行開始前に予め見積もられた、上記複数の処理の各処理の処理負荷の見積値を記憶装置に記憶するモデル処理量見積値設定ファイル記憶部１０７（処理量見積値記憶部）と、
モデル処理量見積値設定ファイル記憶部１０７（処理量見積値記憶部）が記憶した上記各処理の処理負荷の見積値に基づき、所定のスケジューリングアルゴリズムにより、上記全体処理の実行開始前に上記各処理を実行する計算機１０１を上記複数の計算機１０１の中から処理装置により決定する負荷配分部１０５と
を備える負荷分散装置１１０（負荷分散機能）を有することを特徴とする。
【００３４】
また、上記実施の形態に係る分散シミュレーションシステムが備える負荷分散装置１１０は、さらに、
上記各計算機１０１の負荷に対する許容量を記憶装置に記憶する初期設定ファイル記憶部１０８（許容量記憶部）と、
上記全体処理の実行中における上記各計算機１０１の負荷を処理装置により監視して上記負荷配分部１０５へ通知する負荷監視部１０９とを備え、
上記負荷配分部１０５は、上記負荷監視部１０９が通知した上記各計算機１０１の負荷の中の少なくとも１つの計算機１０１の負荷が、初期設定ファイル記憶部１０８（許容量記憶部）が記憶した上記計算機１０１の負荷に対する許容量を超えた場合、改めて上記各処理を実行する計算機１０１を上記複数の計算機１０１の中から決定する
ことを特徴とする。
【００３５】
さらに、上記負荷配分部１０５は、上記各処理を実行する計算機１０１を決定した場合に、上記複数の計算機１０１の少なくとも１つの計算機１０１の負荷が、初期設定ファイル記憶部１０８（許容量記憶部）が記憶した上記計算機１０１の負荷に対する許容量を超えた場合、上記各処理を実行する計算機１０１を上記複数の計算機１０１と上記複数の計算機１０１以外の予備の計算機との中から決定する
ことを特徴とする。
【図面の簡単な説明】
【００３６】
【図１】実施の形態における負荷分散システム１００の外観の一例を示す図。
【図２】実施の形態における計算機１０１及び負荷分散装置１１０の一例を示す図。
【図３】実施の形態１に係る分散シミュレーション方式に基づき実行される、分散シミュレーションシステム（負荷分散システム１００）の機能を示す機能ブロック図。
【図４】シナリオファイル記憶部１０６が記憶するシナリオファイルの設定例。
【図５】モデル処理量見積値設定ファイル記憶部１０７が記憶するモデル処理量見積値設定ファイルの設定例。
【図６】初期設定ファイル記憶部１０８が記憶する初期設定ファイルの設定例。
【図７】処理実行前負荷分散処理の動作を示すフローチャート。
【図８】図４に示すシナリオファイルと、図５に示すモデル処理量見積値設定ファイルとの設定情報を基に、スケジューリングを行い、３台の計算機１０１に対して負荷配分を行う例。
【図９】図４に示すシナリオファイルと、図５に示すモデル処理量見積値設定ファイルとの設定情報を基に、スケジューリングを行い、３台の計算機１０１に対して負荷配分を行う例。
【図１０】図３に示す分散シミュレーションシステムとは異なる構成の分散シミュレーションシステムの機能ブロック図。
【図１１】実施の形態２に係る分散シミュレーション方式に基づき実行される、分散シミュレーションシステム（負荷分散システム１００）の機能を示す機能ブロック図。
【図１２】処理実行中負荷分散処理の動作を示すフローチャート。
【図１３】図１１に示す分散シミュレーションシステムとは異なる構成の分散シミュレーションシステムの機能を示す機能ブロック図。
【符号の説明】
【００３７】
１００  負荷分散システム、１０１  計算機、１０２  モデル処理部、１０３  フェデレート機能、１０４  ＲＴＩ機能、１０５  負荷配分部、１０６  シナリオファイル記憶部、１０７  モデル処理量見積値設定ファイル記憶部、１０８  初期設定ファイル記憶部、１０９  負荷監視部、２０１  登場オブジェクト名、２０２  オブジェクト実行フェデレート名、２０３  オブジェクト模擬開始時刻、２０４  オブジェクト模擬終了時刻、２０５  全体模擬終了時刻、３０１  登場オブジェクト名、３０２  ＣＰＵ処理量見積値、３０３  メモリ使用量見積値、３０４  ディスク使用量見積値、４０１  計算機名、４０２  ＣＰＵ処理量リミット値、４０３  メモリ使用量リミット値、４０４  ディスク使用量リミット値、４０５  ＣＰＵ処理量初期値、４０６  メモリ使用量初期値、４０７  ディスク使用量初期値、４０８  ＣＰＵ処理量初期値（ＲＴＩ）、４０９  メモリ使用量初期値（ＲＴＩ）、４１０  ディスク使用量初期値（ＲＴＩ）、９０１  ＬＣＤ、９０２  Ｋ／Ｂ、９０３  マウス、９０４  ＦＤＤ、９０５  ＣＤＤ、９０９  ＰＣ、９１１  ＣＰＵ、９１２  バス、９１３  ＲＯＭ、９１４  ＲＡＭ、９１５  通信ボード、９２０  磁気ディスク装置、９２１  ＯＳ、９２２  ウィンドウシステム、９２３  プログラム群、９２４  ファイル群。
【図１】
2008198145.tif 000003
【図２】
2008198145.tif 000004
【図３】
2008198145.tif 000005
【図４】
2008198145.tif 000006
【図５】
2008198145.tif 000007
【図６】
2008198145.tif 000008
【図７】
2008198145.tif 000009
【図８】
2008198145.tif 000010
【図９】
2008198145.tif 000011
【図１０】
2008198145.tif 000012
【図１１】
2008198145.tif 000013
【図１２】
2008198145.tif 000014
【図１３】
2008198145.tif 000015