(57)【要約】【課題】速やかな復旧処理を行うことのできる分散シミュレーションシステムを得る。【解決手段】模擬処理部１は、フェデレート１０２としての模擬処理を実行する。復旧処理部３１は、チェックポイント時刻におけるフェデレート１０２とＲＴＩ１０３の保存データと、チェックポイント時刻毎に所定間隔で設けられた時刻毎のフェデレート１０２における模擬処理の情報を示すログデータとを用い、フェデレート１０２とＲＴＩ１０３を再起動またはリセットした後、設定された復旧先時刻の直前のチェックポイント時刻までは保存データを用いてフェデレート１０２とＲＴＩ１０３を復旧させる。また、直前のチェックポイント時刻から復旧先時刻まではログデータを用いて模擬処理部１が模擬処理を再実行することによってフェデレート１０２を復旧させる。【選択図】図５
2015121847.tif 000002
【特許請求の範囲】
【請求項１】
複数の分散シミュレータと分散シミュレーション実行基盤によって構成される分散シミュレーションシステムにおいて、
模擬処理を実行する模擬処理部と、
いずれかの分散シミュレータで障害が発生した場合、当該障害が発生する前の状態にシステム全体を復旧させる復旧処理部とを備え、
前記復旧処理部は、
復旧ポイントの時刻としてのチェックポイント時刻における前記分散シミュレータと前記分散シミュレーション実行基盤の保存データと、前記チェックポイント時刻毎に所定間隔で設けられた時刻毎の前記分散シミュレータにおける模擬処理の情報を示すログデータとを用い、前記分散シミュレータと前記分散シミュレーション実行基盤を再起動またはリセットした後に、設定された復旧先時刻の直前のチェックポイント時刻までは前記保存データを用いて前記分散シミュレータと前記分散シミュレーション実行基盤を復旧させ、前記直前のチェックポイント時刻から前記復旧先時刻までは前記ログデータを用いて前記模擬処理部が模擬処理を再実行するよう指示することによって前記分散シミュレータを復旧させることを特徴とする分散シミュレーションシステム。
【請求項２】
複数の分散シミュレータと分散シミュレーション実行基盤によって構成される分散シミュレーションシステムにおいて、
シミュレーションを実行する模擬処理部と、
いずれかの分散シミュレータで障害が発生した場合、当該障害が発生する前の状態にシステム全体を復旧させる復旧処理部とを備え、
前記復旧処理部は、
復旧ポイントの時刻としてのチェックポイント時刻における前記分散シミュレータと前記分散シミュレーション実行基盤の保存データと、前記チェックポイント時刻毎に所定間隔で設けられた時刻毎の前記分散シミュレータにおける模擬処理の情報を示すログデータとを用いると共に、楽観的時刻管理手法に基づく前記分散シミュレータの模擬処理の取り消しによる時刻の巻き戻しを用い、障害が発生した分散シミュレータのみを再起動またはリセットした後、当該障害が発生した分散シミュレータを、設定された復旧先時刻の直前のチェックポイント時刻までは前記保存データを用いて復旧させると共に、前記直前のチェックポイント時刻から前記復旧先時刻までは前記ログデータを用いて前記模擬処理部が模擬処理を再実行するよう指示することによって復旧させ、前記障害が発生した分散シミュレータ以外の分散シミュレータは、前記模擬処理の取り消しによって前記復旧先時刻へ状態を戻すことを特徴とする分散シミュレーションシステム。
【請求項３】
前記分散シミュレータが前記分散シミュレーション実行基盤によって進行を許可される時刻を、前記分散シミュレータが模擬処理を行う時刻よりも遅らせることにより、前記楽観的時刻管理手法に基づく分散シミュレータの模擬処理の取り消しを実現する時刻進行調整部を備えたことを特徴とする請求項２記載の分散シミュレーションシステム。
【請求項４】
前記時刻進行調整部は、チェックポイント時刻毎に時刻進行を行うことを特徴とする請求項３記載の分散シミュレーションシステム。
【請求項５】
複数の分散シミュレータと分散シミュレーション実行基盤によって構成される分散シミュレーションシステムにおいて、
模擬処理を実行する模擬処理部と、
いずれかの分散シミュレータで障害が発生した場合、当該障害が発生する前の状態にシステム全体を復旧させる復旧処理部とを備え、
前記復旧処理部は、
復旧ポイントの時刻としてのチェックポイント時刻毎に所定間隔で設けられた時刻毎の前記分散シミュレータにおける模擬処理の情報を示すログデータを含む前記チェックポイント時刻の前記分散シミュレータと前記分散シミュレーション実行基盤の保存データを用いると共に、楽観的時刻管理手法に基づく前記分散シミュレータの模擬処理の取り消しによる時刻の巻き戻しを用い、前記分散シミュレータを、設定された復旧先時刻の直前のチェックポイント時刻までは前記保存データを用いて復旧させ、当該直前のチェックポイント時刻から前記復旧先時刻までは前記模擬処理の取り消しによって前記復旧先時刻へ状態を戻すことを特徴とする分散シミュレーションシステム。
【請求項６】
前記復旧処理部は、
前記分散シミュレーション実行基盤に対して、前記分散シミュレータとは別に、復旧先時刻に最も近い過去のチェックポイント時刻の保存データを用いてチェックポイント時刻に復旧させることを特徴とする請求項５記載の分散シミュレーションシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の分散シミュレータと分散シミュレーション実行基盤によって構成される分散シミュレーションシステムに関し、特に、そのシステム復旧を行う構成に関するものである。
【背景技術】
【０００２】
多数のシミュレータをネットワークで連携させた分散シミュレーションシステムでは、システム中のあるシミュレータで障害が発生したためにシステム全体が停止してしまうケースがある。このようなケースにおいてシミュレーションを継続するために、チェックポイント／リスタート（Ｃｈｅｃｋｐｏｉｎｔ／Ｒｅｓｔａｒｔ）により、障害が発生する前の時点にシステムを復旧させるような分散シミュレーションシステムは非常に多い。
【０００３】
このような、分散シミュレーションシステムのソフトウェアアーキテクチャについて、ＩＥＥＥによって標準化されたＨＬＡ（Ｈｉｇｈ  Ｌｅｖｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ）におけるチェックポイント／リスタート処理について説明する。図１は、ＨＬＡによって規定される分散シミュレーションシステムの例を示している。図において、１０１はＨＬＡに準拠したシステム全体を示し、フェデレーションと呼ぶ。１０２は、システムを構成する個々の分散シミュレータを示し、フェデレートと呼ぶ。１０３は、フェデレーションと複数のフェデレートに対する共通機能となる実行制御や通信機能等を提供する分散シミュレーション実行基盤であり、ＲＴＩ（Ｒｕｎ−Ｔｉｍｅ  Ｉｎｆｒａｓｔｒｕｃｔｕｒｅ）と呼ぶ。１０４は、フェデレート１０２における、ＲＴＩとのインタフェース機能であり、フェデレートが共通的に保有するフェデレートＲＴＩインタフェース部である。
１０５は、フェデレート１０２において、フェデレートＲＴＩインタフェース部１０４以外のフェデレート固有の機能（フェデレートの制御や、フェデレートにおけるシミュレーション処理など）を担当するフェデレート処理部である。ＲＴＩ１０３が保持しなければならない機能仕様とフェデレートＲＴＩインタフェース部の機能仕様は、例えば非特許文献１に規定されている。
【０００４】
非特許文献１では、分散シミュレーションシステムにおけるチェックポイント／リスタート処理のインタフェースとして、分散シミュレーションシステム全体に対する同期を伴うセーブ／レストア（Ｓａｖｅ／Ｒｅｓｔｏｒｅ）処理が規定されている。図２は、ＨＬＡにおけるセーブ／レストア機能のうち、チェックポイント処理に対応するセーブ処理の流れを、ＵＭＬシーケンス図として示した説明図である。図において、フェデレーションはフェデレート（１）とフェデレート（２）の２つのフェデレートによって構成されており、フェデレート（１）が起点となってセーブ処理が開始される。例えばフェデレート（１）に対する初期設定として特定時刻にセーブ開始が設定されていた等により、フェデレート（１）のフェデレート処理部１０５においてセーブの開始が判断されると、フェデレート（１）のフェデレートＲＴＩインタフェース部１０４は、ＲＴＩ１０３に対してＲｅｑｕｅｓｔ  Ｆｅｄｅｒａｔｉｏｎ  Ｓａｖｅを呼び出し、フェデレーション１０１全体の保存開始を通知する。
【０００５】
ＲＴＩ１０３は、フェデレーション保存開始を示すＲｅｑｕｅｓｔ  Ｆｅｄｅｒａｔｉｏｎ  Ｓａｖｅの呼び出しを受信すると、そのフェデレーションに参加中の全フェデレートのフェデレートＲＴＩインタフェース部１０４に対して、フェデレーションの保存が始まったことをＩｎｉｔｉａｔｅ  Ｆｅｄｅｒａｔｅ  Ｓａｖｅの呼び出しにより通知する。
Ｉｎｉｔｉａｔｅ  Ｆｅｄｅｒａｔｅ  Ｓａｖｅの呼び出しを受信したフェデレートのフェデレートＲＴＩインタフェース部１０４は、フェデレート処理部１０５に保存処理が始まったことを伝え、フェデレート処理部１０５は直ちに模擬処理等を停止し、自フェデレートの状態を固定することでファイル等へのフェデレート状態の保存処理が開始できる状態へ移行する。フェデレート処理部１０５において、自フェデレートの状態のファイル等への保存が開始できる段階になると、フェデレート処理部１０５は、フェデレートＲＴＩインタフェース部１０４を介してＲＴＩ１０３に対してＦｅｄｅｒａｔｅ  Ｓａｖｅ  Ｂｅｇｕｎを呼び出し、自フェデレートの状態の保存を開始したことを通知すると共に、フェデレートの状態のファイル等への保存を行う。
【０００６】
ＲＴＩ１０３は、全てのフェデレートからＦｅｄｅｒａｔｅ  Ｓａｖｅ  Ｂｅｇｕｎの通知を受信すると、フェデレートから、セーブ処理が完了するまで、ＲＴＩ１０３を介したデータ通信などの新たな処理要求が行われないと判断し、その時点のＲＴＩ１０３の状態をファイル等へ保存する。自フェデレートの状態保存を行っているフェデレート処理部１０５は、保存処理が完了すると、フェデレートＲＴＩインタフェース部１０４を介してＲＴＩ１０３に対してＦｅｄｅｒａｔｅ  Ｓａｖｅ  Ｃｏｍｐｌｅｔｅを呼び出し、自フェデレートの状態の保存を完了したことを通知し、そのままＲＴＩ１０３からのＦｅｄｅｒａｔｉｏｎ  Ｓａｖｅｄの通知待ち状態となる。ＲＴＩ１０３は、ＲＴＩ１０３の状態保存処理と、全フェデレートからのＦｅｄｅｒａｔｅ  Ｓａｖｅ  Ｃｏｍｐｌｅｔｅ通知の受信が完了すると、フェデレーション１０１全体のセーブ処理が完了したことを、全フェデレートのフェデレートＲＴＩインタフェース部１０４に対してＦｅｄｅｒａｔｉｏｎ  Ｓａｖｅｄの呼び出しにより通知する。
【０００７】
次に、図３は、ＨＬＡにおけるセーブ／レストア機能のうち、リスタート処理に対応するレストア処理の流れを、ＵＭＬシーケンス図として示した図である。レストア処理は、対応するセーブ処理が実行された時と同じフェデレーションの初期状態（同じ数、種類のフェデレートが参加している等）である必要がある。図３は、図２で示したセーブ処理に対応する形で示しており、フェデレーションはフェデレート（１）とフェデレート（２）の２つのフェデレートによって構成されている。フェデレート（１）が起点となってレストア処理が開始されると、フェデレート（１）のフェデレートＲＴＩインタフェース部１０４は、ＲＴＩ１０３に対してＲｅｑｕｅｓｔ  Ｆｅｄｅｒａｔｉｏｎ  Ｒｅｓｔｏｒｅを呼び出し、フェデレーション全体の復旧開始を通知する。
【０００８】
ＲＴＩ１０３は、Ｒｅｑｕｅｓｔ  Ｆｅｄｅｒａｔｉｏｎ  Ｒｅｓｔｏｒｅの呼び出しを受信すると、その時点のフェデレーションが、保存されたフェデレーションと同じ初期状態であることを確認し、その結果を、フェデレート（１）のフェデレートＲＴＩインタフェース部１０４に対して、Ｃｏｎｆｉｒｍ  Ｆｅｄｅｒａｔｉｏｎ  Ｒｅｓｔｏｒａｔｉｏｎ  Ｒｅｑｕｅｓｔの呼び出しによって通知する。復旧可能な場合、ＲＴＩ１０３は全フェデレートのフェデレートＲＴＩインタフェース部１０４に対して、Ｆｅｄｅｒａｔｉｏｎ  Ｒｅｓｔｏｒｅ  Ｂｅｇｕｎを呼び出し、フェデレーションの復旧処理が開始されたことを通知すると共にファイル等に保存されたセーブ処理時のＲＴＩ１０３の状態に自身を復旧させ、次に全フェデレートのフェデレートＲＴＩインタフェース部１０４に対して、Ｉｎｉｔｉａｔｅ  Ｆｅｄｅｒａｔｅ  Ｒｅｓｔｏｒｅを呼び出し、フェデレートの復旧処理開始を通知する。
【０００９】
各フェデレートのフェデレート処理部１０５は、フェデレートＲＴＩインタフェース部１０４に対してＦｅｄｅｒａｔｉｏｎ  Ｒｅｓｔｏｒｅ  Ｂｅｇｕｎが呼び出された時点で直ちに模擬処理等を停止し、自フェデレートの状態を固定し、次いでフェデレートＲＴＩインタフェース部１０４に対してＩｎｉｔｉａｔｅ  Ｆｅｄｅｒａｔｅ  Ｒｅｓｔｏｒｅが呼び出された時点でファイル等に保存されたセーブ処理時のフェデレートの状態に自身を復旧させる。フェデレート処理部１０５は、自フェデレートの復旧処理が完了すると、フェデレートＲＴＩインタフェース部１０４を介してＲＴＩ１０３に対してＦｅｄｅｒａｔｅ  Ｒｅｓｔｏｒｅ  Ｃｏｍｐｌｅｔｅを呼び出し、自フェデレートの復旧処理完了を通知し、そのままＲＴＩ１０３からのＦｅｄｅｒａｔｉｏｎ  Ｒｅｓｔｏｒｅｄの通知待ち状態となる。
【００１０】
ＲＴＩ１０３は、ＲＴＩ１０３の状態復旧処理と、全フェデレートからのＦｅｄｅｒａｔｅ  Ｒｅｓｔｏｒｅ  Ｃｏｍｐｌｅｔｅ通知の受信が完了すると、フェデレーション全体のＲｅｓｔｏｒｅ処理が完了したことを、全フェデレートのフェデレートＲＴＩインタフェース部１０４に対してＦｅｄｅｒａｔｉｏｎ  Ｒｅｓｔｏｒｅｄの呼び出しにより通知する。
【先行技術文献】
【非特許文献】
【００１１】
【非特許文献１】IEEE 1516.1-2010-Standard for Modeling and Simulation High Level Architecture(HLA)-Federate Interface Specification.
【発明の概要】
【発明が解決しようとする課題】
【００１２】
第一の課題は、セーブ処理における分散シミュレーションシステム全体に対する同期等のオーバヘッドのため、一般的には頻繁にチェックポイントを設けることができず、そのために例えば障害から復旧するためにリスタートするような場合に、障害が発生したシミュレーション時刻から遠く遡ったチェックポイント時刻に復旧することしかできない可能性が高くなるという問題である。特に、人間が介在する演習や訓練用のシミュレーションでは、チェックポイントでシミュレーションの進行ペースが乱れることを避けるため、場面の切り替えや人間の休憩のタイミング等でチェックポイントが設定される場合が多く、頻繁には設定されない。そのため、障害が発生した場合、そのシミュレーション時刻はチェックポイント時刻からかなり離れてしまう可能性が高く、そのようなケースでは同じシミュレーションをやり直す時間が長くなってしまう。
【００１３】
第二の課題は、レストア処理の対象がフェデレーション（分散シミュレーションシステム全体）のため、一部のフェデレートに障害が発生した場合であっても、障害が発生したフェデレートだけでなくシステム全体の復旧が必要になり、復旧までに時間がかかるという点である。図３に示した通り、ＨＬＡのリスタート処理は全フェデレートを対象にレストア処理を行う形態となっているが、そのような形態にしなければならない理由として、論理的なシミュレーション時刻（論理時刻）によってシミュレータ間の時刻同期を行う保守的時刻管理（Ｃｏｎｓｅｒｖａｔｉｖｅ  Ｔｉｍｅ  Ｍａｎａｇｅｍｅｎｔ）手法に基づく分散シミュレーションの特性が挙げられる。
【００１４】
図４に、保守的時刻管理手法の概要を示す。図４は、フェデレート（１）とフェデレート（２）が、互いに論理時刻によって同期を行いながら時刻進行を行っている例を示したものである。まず、双方とも時刻Ｔ１の模擬を完了し、フェデレート（１）が次時刻Ｔ３へ、フェデレート（２）が次時刻Ｔ２へ時刻進行を行おうとする（ステップ１）。なお、図４において、各フェデレートの時刻を塗り潰した丸で表す。フェデレート（１）の立場では、他のフェデレートの模擬は時刻Ｔ３までの模擬が完了していないため、フェデレート（１）に対して時刻Ｔ３以前の時刻の他フェデレートからの通信が発生する可能性があることから、次時刻Ｔ３への時刻進行は保留される。一方、フェデレート（２）の立場では、他のフェデレートの模擬は時刻Ｔ２までの模擬が完了しているため、フェデレート（２）が進もうとしている次時刻Ｔ２以前の時刻の他フェデレートからの通信が発生する可能性がないことから、次時刻Ｔ２への時刻進行は許可される。なお、この際に、他フェデレートからの通信は許可された時刻Ｔ２より前の通信のみがフェデレート（２）に配送され、時刻Ｔ２より先の時刻の通信はフェデレート（２）に配送されない（ステップ２）。
ここで、時刻進行の保留や許可、および通信の配送等は、全てＲＴＩ１０３が管理する。
【００１５】
その後、フェデレート（２）が時刻Ｔ２の模擬を完了し次時刻Ｔ３へ進もうとすると、フェデレート（１）の立場において他フェデレートの模擬は時刻Ｔ３までの模擬が完了したことになるため、フェデレート（１）が進もうとしている次時刻Ｔ３以前の時刻の他フェデレートからの通信が発生する可能性がないことから、次時刻Ｔ３への時刻進行が許可される。なお、この際に、他フェデレートからの通信は許可された時刻Ｔ３より前の通信のみがフェデレート（１）に配送され、時刻Ｔ３より先の時刻の通信はフェデレート（１）に配送されない（ステップ３）。このように、保守的時刻管理手法による分散シミュレーションでは、各フェデレートの時刻進行に応じて時刻進行の保留や通信の配送制御による同期処理が行われるため、論理時刻は未来方向に進むことしかできず、逆方向に戻ることは許されない。
【００１６】
レストア処理に話を戻すと、保守的時刻管理手法に基づく分散シミュレーションでは、フェデレートは一旦進めた時刻を巻き戻すことが許されないため、障害発生時刻から見ると過去に行われたセーブ処理時刻に復旧する際は、障害が起きていないフェデレートもセーブ処理時刻に状態をリセットする必要がある。
【００１７】
この発明は上記のような課題を解決するためになされたもので、速やかな復旧処理を行うことのできる分散シミュレーションシステムを得ることを目的とする。
【課題を解決するための手段】
【００１８】
この発明に係る分散シミュレーションシステムは、複数の分散シミュレータと分散シミュレーション実行基盤によって構成される分散シミュレーションシステムにおいて、模擬処理を実行する模擬処理部と、いずれかの分散シミュレータで障害が発生した場合、障害が発生する前の状態にシステム全体を復旧させる復旧処理部とを備え、復旧処理部は、復旧ポイントの時刻としてのチェックポイント時刻における分散シミュレータと分散シミュレーション実行基盤の保存データと、チェックポイント時刻毎に所定間隔で設けられた時刻毎の分散シミュレータにおける模擬処理の情報を示すログデータとを用い、分散シミュレータと分散シミュレーション実行基盤を再起動またはリセットした後に、設定された復旧先時刻の直前のチェックポイント時刻までは保存データを用いて分散シミュレータと分散シミュレーション実行基盤を復旧させ、直前のチェックポイント時刻から復旧先時刻まではログデータを用いて模擬処理部が模擬処理を再実行するよう指示することによって分散シミュレータを復旧させるようにしたものである。
【発明の効果】
【００１９】
この発明の分散シミュレーションシステムは、復旧先時刻の直前のチェックポイント時刻までは保存データを用いて復旧させ、直前のチェックポイント時刻から復旧先時刻まではログデータを用いて模擬処理部が模擬処理を再実行することによって復旧させるようにしたので、分散シミュレーションシステムとして、障害が発生した場合の速やかな復旧処理を行うことができる。
【図面の簡単な説明】
【００２０】
【図１】ＨＬＡによって規定される分散シミュレーションシステムの例を示す構成図である。
【図２】ＨＬＡにおけるチェックポイント処理に対応するセーブ処理の流れを示すＵＭＬシーケンス図である。
【図３】ＨＬＡにおけるリスタート処理に対応するレストア処理の流れを示すＵＭＬシーケンス図である。
【図４】保守的時刻管理手法を示す説明図である。
【図５】この発明の実施の形態１による分散シミュレーションシステムを示す構成図である。
【図６】この発明の実施の形態１による分散シミュレーションシステムの保守的時刻管理手法に基づく論理時刻の進行を示す説明図である。
【図７】この発明の実施の形態１による分散シミュレーションシステムの障害発生を示す説明図である。
【図８】この発明の実施の形態１による分散シミュレーションシステムの復旧処理を示す説明図である。
【図９】この発明の実施の形態２による分散シミュレーションシステムの楽観的時刻管理手法の説明図である。
【図１０】この発明の実施の形態２による分散シミュレーションシステムの障害発生後の復旧処理を行う時刻進行の例を示す説明図である。
【図１１】この発明の実施の形態２による分散シミュレーションシステムの障害発生を示す説明図である。
【図１２】この発明の実施の形態２による分散シミュレーションシステムの復旧処理を示す説明図である。
【図１３】この発明の実施の形態３による分散シミュレーションシステムの障害発生を示す説明図である。
【図１４】この発明の実施の形態３による分散シミュレーションシステムの復旧処理を示す説明図である。
【発明を実施するための形態】
【００２１】
実施の形態１．
まず、第一の課題を解決する実施の形態１について説明する。
図５は、この発明の実施の形態１による分散シミュレーションシステムを示す構成図である。
図５に示す分散シミュレーションシステムは、複数の分散シミュレータであるフェデレート１０２からなるフェデレーション１０１と、分散シミュレーション実行基盤であるＲＴＩ１０３とからなり、基本的な構成は図１と同様である。各フェデレート１０２は、フェデレートＲＴＩインタフェース部１０４とフェデレート処理部１０５とを備え、それぞれの機能は図１で説明した通りである。
【００２２】
フェデレート処理部１０５は、模擬処理部１、ログファイル入出力部２、フェデレート実行制御部３を備えている。模擬処理部１は、フェデレート処理部１０５において航空機などの模擬対象物や通信などの模擬イベントの模擬処理（シミュレーション）を行う処理部である。ログファイル入出力部２は、模擬処理部１において実行された模擬処理の時刻毎のログデータをログファイルに出力し、また復旧時にログファイルからログデータを入力する入出力部である。なお、ログファイルはフェデレート１０２が備えているが、その図示は省略している。フェデレート実行制御部３は、フェデレートＲＴＩインタフェース部１０４との連携によって、模擬処理部１の実行制御を行い、障害発生時のフェデレートの復旧処理を制御する制御部であり、復旧処理部３１を備えている。復旧処理部３１は、復旧ポイントの時刻としてのチェックポイント時刻におけるフェデレート１０２とＲＴＩ１０３の保存データと、チェックポイント時刻毎に所定間隔で設けられた時刻毎のフェデレート１０２における模擬処理の情報を示すログデータとを用い、フェデレート１０２とＲＴＩ１０３を再起動またはリセットした後に、設定された復旧先時刻の直前のチェックポイント時刻までは保存データを用いてフェデレート１０２とＲＴＩ１０３を復旧させ、直前のチェックポイント時刻から復旧先時刻まではログデータを用いて模擬処理部１が模擬処理を再実行するよう指示することによってフェデレート１０２を復旧させる機能を有している。
【００２３】
なお、フェデレート（２）１０２〜フェデレート（ｎ）１０２の構成はフェデレート（１）１０２と同様であるため、図５中ではフェデレート（１）１０２の内部構成のみを示している。
【００２４】
次に、実施の形態１の分散シミュレーションシステムの動作について説明する。
図６は、フェデレート（１）、フェデレート（２）およびＲＴＩ１０３によって構成される分散シミュレーションシステムの実行中における、保守的時刻管理手法に基づく論理時刻の進行の例を示した説明図である。図において、フェデレート（１）およびフェデレート（２）の模擬処理部１は、シミュレーション開始時刻ＴＳ０からシミュレーションを始め、１時刻ずつ時刻を進めながらシミュレーションのログ情報（各時刻におけるフェデレートの模擬処理に対する入力情報）を各フェデレートのログファイルに出力し、最初のセーブ処理を行う時刻ＴＳ１まで進む。なお、ここで、ＴＳ０＋１，ＴＳ０＋２，…は、ログデータを出力するタイミングに相当し、任意に設定される時刻である。
ＴＳ１時刻においてセーブ処理を実行し、各フェデレートのＴＳ１保存データとＲＴＩ１０３のＴＳ１保存データを保存した後、次のセーブ時刻ＴＳ２以降シミュレーションを終了するまで同様の処理を繰り返す。なお、各フェデレートが出力する各時刻のシミュレーションのログ情報は、一般的な分散シミュレーションシステムが備えるようなシミュレーション結果の解析等を目的としたログ情報を利用することも可能である。
【００２５】
次に、図７は、図６の状況が更に進んでｉ番目のセーブ処理が行われた時刻ＴＳｉから、さらに時刻ＴＳｉ＋８まで進んだところでフェデレート（２）において障害が発生した状況を表している。この場合、通常のレストア処理では、障害発生前の時刻ＴＳｉ＋７に復旧することはできず、時刻ＴＳｉの保存データを使って時刻ＴＳｉに復旧する。図８は、図７の状態で障害発生直前の時刻ＴＳｉ＋７に復旧するために、時刻ＴＳｉの保存データの他に、各フェデレートのＴＳｉログファイルに格納されたログ情報を用いる状況を示している。図８に示す通り、図７の障害発生状況から復旧するために、まず各フェデレートとＲＴＩ１０３の再起動またはリセットを行い（図８における二重丸で示した時点）、次に復旧処理部３１によるレストア処理を開始し、各フェデレートとＲＴＩ１０３のＴＳｉ保存データを使って時刻ＴＳｉに復旧する。時刻ＴＳｉから復旧したい障害発生前の時刻ＴＳｉ＋７までは、各フェデレートのログファイルに格納された各時刻のフェデレートの入力情報を用い、各フェデレートの模擬処理部１において時刻ＴＳｉ＋７に到達するまで各時刻の模擬処理を行う。
【００２６】
このように、セーブ処理によって保存された各フェデレート１０２とＲＴＩ１０３の保存データの他に、フェデレート１０２の各時刻における模擬処理に対する入力情報を記録したログファイルを用いることにより、障害発生後に復旧する際にセーブ処理を行った時刻より先の任意の時刻に対して復旧することができる。
【００２７】
なお、図８では、障害発生直前の時刻に復旧する例について説明したが、それ以前の時刻に復旧する場合には、復旧先時刻に最も近い過去のセーブ処理による保存データとログファイルを用いるか、復旧先時刻に最も近い過去のセーブ処理が無い場合（初回のセーブ処理が行われる前の時刻に復旧したい場合）はログファイルのみを用いることにより、任意の障害発生前の時刻に復旧することが可能である。
【００２８】
以上説明したように、実施の形態１の分散シミュレーションシステムによれば、複数の分散シミュレータと分散シミュレーション実行基盤によって構成される分散シミュレーションシステムにおいて、模擬処理を実行する模擬処理部と、いずれかの分散シミュレータで障害が発生した場合、障害が発生する前の状態にシステム全体を復旧させる復旧処理部とを備え、復旧処理部は、復旧ポイントの時刻としてのチェックポイント時刻における分散シミュレータと分散シミュレーション実行基盤の保存データと、チェックポイント時刻毎に所定間隔で設けられた時刻毎の分散シミュレータにおける模擬処理の情報を示すログデータとを用い、分散シミュレータと分散シミュレーション実行基盤を再起動またはリセットした後に、設定された復旧先時刻の直前のチェックポイント時刻までは保存データを用いて分散シミュレータと分散シミュレーション実行基盤を復旧させ、直前のチェックポイント時刻から復旧先時刻まではログデータを用いて模擬処理部が模擬処理を再実行するよう指示することによって分散シミュレータを復旧させるようにしたので、障害が発生した場合に分散シミュレーションシステムとして速やかな復旧処理を行うことができる。
【００２９】
実施の形態２．
次に、第二の課題を解決する実施の形態２について説明する。実施の形態２の分散シミュレーションシステムにおける図面上の構成は図５に示した構成と同様であるため、図５の構成を用いて説明する。
実施の形態２の復旧処理部３１は、復旧ポイントの時刻としてのチェックポイント時刻におけるフェデレート１０２とＲＴＩ１０３の保存データと、チェックポイント時刻毎に所定間隔で設けられた時刻毎のフェデレート１０２における模擬処理の情報を示すログデータとを用いると共に、楽観的時刻管理手法に基づくフェデレート１０２の模擬処理の取り消しによる時刻の巻き戻しを用い、障害が発生したフェデレート１０２のみを再起動またはリセットした後、障害が発生したフェデレート１０２を、設定された復旧先時刻の直前のチェックポイント時刻までは保存データを用いて復旧させると共に、直前のチェックポイント時刻から復旧先時刻まではログデータを用いて模擬処理部１が模擬処理を再実行するよう指示することによって復旧させ、障害が発生したフェデレート１０２以外の分散シミュレータは、模擬処理の取り消しによって復旧先時刻へ状態を戻す機能を有している。
その他の構成は実施の形態１と同様であるため、ここでの説明は省略する。
【００３０】
図９は、実施の形態２で利用する、楽観的時刻管理（Ｏｐｔｉｍｉｓｔｉｃ  Ｔｉｍｅ  Ｍａｎａｇｅｍｅｎｔ）手法を説明するためのフェデレートの動作例を示した図である。
楽観的時刻管理手法は、保守的時刻管理手法と異なり、シミュレータ間の時刻進行の保留を伴う同期処理を排除した手法である。図９において、まず、フェデレート（１）とフェデレート（２）は共に時刻Ｔ１の処理を完了し、フェデレート（１）は時刻Ｔ３へ、フェデレート（２）は時刻Ｔ２へ進もうとする（ステップ１）。この場合、フェデレート（１）の立場では、他のフェデレートの模擬は時刻Ｔ２まで完了しているため、時刻Ｔ２への進行が許可され、かつ時刻Ｔ２より先の時刻の他フェデレートからの通信を含め、その時点においてフェデレート（１）に対して送信された全ての通信がフェデレート（１）へ配送される。これにより、フェデレート（１）は、許可された時刻Ｔ２より前の時刻の模擬は行う必要がないことを知ると共に、時刻Ｔ２より先の他フェデレートからの通信を受信しているため、それらの通信によるデータを基に自身が進みたい時刻Ｔ３の模擬を実行することができる。なお、図９において、フェデレートが進行を許可された時刻を塗り潰した丸で示し、フェデレートが進行を許可されていないが模擬を実行することができる時刻を白抜きの丸で示す。
【００３１】
一方、フェデレート（２）も同様であり、次時刻Ｔ２への時刻進行が許可され、また、その時点においてフェデレート（２）に対して送信された全ての通信がフェデレート（２）へ配送される。ただし、フェデレート（２）は元々次時刻Ｔ２への進行を要求していたため、許可された時刻Ｔ２の模擬を行う（ステップ２）。さらに先の時刻への進行として、フェデレート（１）は時刻Ｔ３の模擬を完了して次時刻Ｔ５へ、またフェデレート（２）は時刻Ｔ２の模擬を完了して次時刻Ｔ３への進行を行う。ここで、フェデレート（２）が時刻Ｔ２の模擬において時刻Ｔ３の通信をフェデレート（１）に対して送信すると、フェデレート（１）では、フェデレート（１）が既に処理を完了している時刻Ｔ３に対し、フェデレート（２）からの通信が配送される（ステップ３）。
【００３２】
フェデレート（１）では、既に処理を完了した時刻Ｔ３に対する通信が後から配送されたため、既に実行済みの模擬と後から配送された通信の内容が矛盾している可能性がある。
ここで矛盾が起きていた場合、フェデレート（１）はステップ２で実行した時刻Ｔ３の模擬を取り消さなければならない。フェデレート（１）は、ステップ３において、ステップ２で実行した時刻Ｔ３の処理に基づき時刻Ｔ５へ進もうとしていたため、この模擬を取り消して時刻Ｔ３の模擬をやり直すこととなる（ステップ４）。
【００３３】
このように、楽観的時刻管理による分散シミュレーションの時刻進行では、許可時刻よりも将来の時刻の通信を基に、各フェデレート１０２は許可された時刻よりも将来の時刻の模擬を行うことが可能であるが、このような許可時刻よりも将来の時刻の模擬は取り消される場合があり、この模擬の取り消しは、許可時刻を下限とした時刻の巻き戻しのような形態となる。なお、模擬の取り消しによって前の時刻の状態に戻す処理を高速化するために、一般的な楽観的時刻管理手法を用いるフェデレート１０２は、各時刻の状態をメモリやファイル等の状態保存領域へ保存しておく。状態保存領域へ保存される情報は、許可時刻からフェデレート１０２が処理を行った時刻までの間の模擬の状態である。このようなフェデレート１０２は、模擬の取り消しが行われた際に前時刻の状態を状態保存領域から呼び出して現在の状態にコピーすると共に、取り消される時刻の状態を状態保存領域から削除することで、模擬処理をやり直すことなく高速に前時刻の状態に戻すことが可能である。
【００３４】
図１０は、楽観的時刻管理による時刻進行を行うフェデレート（１）およびフェデレート（２）と、セーブ処理を行う時刻毎に時刻進行を行う時刻進行調整部であるペーサーフェデレートによって、障害発生後の復旧処理を行う時刻進行の例を示した図である。図１０において、ペーサーフェデレートはセーブ処理を行う時刻毎に時刻進行を行うため、例えばペーサーフェデレートの時刻が時刻ＴＳ１の場合、フェデレート（１）およびフェデレート（２）がいくら先の時刻へ進もうとしても、フェデレート（１）およびフェデレート（２）に対して許可される時刻は時刻ＴＳ１から変化しない。しかし、フェデレート（１）およびフェデレート（２）が時刻を進めようとした場合、各フェデレート１０２に対して送信された時刻ＴＳ１より先の時刻の通信が配送されるため、フェデレート（１）およびフェデレート（２）は時刻ＴＳ１より先の時刻の模擬を行うことができ、実施の形態１で説明したような保守的時刻管理手法に基づく形態と同様にシミュレーションを進めることが可能である。
【００３５】
次に、図１１は、図１０の状況が更に進んでｉ番目のセーブ処理が行われた時刻ＴＳｉから、さらに時刻ＴＳｉ＋８まで進んだところでフェデレート（２）において障害が発生した状況を表している。この状態では、ＲＴＩ１０３および各フェデレート１０２は時刻ＴＳｉにおける状態を保存したＴＳｉ保存データを持っており、また、各フェデレート１０２は、時刻ＴＳｉから障害が発生したＴＳｉ＋８までのＴＳｉログデータを持っている。
【００３６】
次に、図１２は、図１１の状態で障害発生前の時刻ＴＳｉ＋７に復旧する様子を示した図である。図１２において、障害が発生していないフェデレート（１）は、その復旧処理部３１により、再起動やリスタートを行わず、楽観的時刻管理における模擬の取り消しによって時刻ＴＳｉ＋８の模擬を取り消し、時刻ＴＳｉ＋７の状態に戻る。また、障害が発生したフェデレート（２）は、その復旧処理部３１により、再起動またはリセットを行った後、フェデレート（２）のＴＳｉ保存データを用いてレストア処理を行い時刻ＴＳｉの状態に復旧し、さらにフェデレート（２）のＴＳｉログファイルに格納された情報を用いて模擬処理部１による模擬処理をやり直し、時刻ＴＳｉ＋７まで復旧する。この際、ペーサーフェデレートは時刻ＴＳｉのままであるため何も行う必要はない。なお、ＲＴＩ１０３については、フェデレート（２）の再起動／リセットによるフェデレート（２）とＲＴＩ１０３の再接続や、フェデレート（１）における時刻ＴＳｉ＋８の処理取り消しによる通信取り消しなど、ＨＬＡ規約に基づき各フェデレートが実行する動作に応じた処理を実行する。
【００３７】
以上のように、実施の形態２では、楽観的時刻管理を用いて各フェデレート１０２の時刻進行を行う分散シミュレーションにおいて、セーブ処理によって保存された各フェデレート１０２とＲＴＩ１０３の保存データの他に、フェデレート１０２の各時刻における模擬処理に対する入力情報を記録したログファイルを用いることにより、障害が発生したフェデレート１０２以外のフェデレート１０２やＲＴＩ１０３の再起動やリセットを行う必要がなくなり、障害からの復旧処理を高速化することが可能となる。
【００３８】
なお、このような分散シミュレーションシステムでは、システム全体の処理を多くのフェデレート１０２に分割して個々のフェデレート１０２の機能を小さくすることにより、フェデレート１０２がセーブ処理で保存する保存データをより小さくすることができる。
保存データが小さければ、障害が発生した後で再起動が必要なフェデレート１０２のレストア処理をより高速に実行することが可能となるため、全体として、障害発生後の復旧処理全体を高速化することが可能となる。
【００３９】
また、フェデレート（１）とフェデレート（２）は、楽観的時刻管理手法に基づき他のフェデレート１０２の時刻に無関係に時刻を進めることができるが、大きく進みすぎるとフェデレート１０２間の処理の矛盾が発生する可能性が高くなり、処理の取り消しが頻発してシミュレーションの進行ペースが乱れる等の悪影響が出てくる。そのような悪影響を回避するためには、楽観的時刻管理手法を用いるフェデレート１０２間の処理の矛盾が発生する可能性を小さくするために、各フェデレート１０２の時刻進行の刻み幅とタイミングを統一するためのフェデレート間通信を行う方法等が考えられる。
【００４０】
以上説明したように、実施の形態２の分散シミュレーションシステムによれば、複数の分散シミュレータと分散シミュレーション実行基盤によって構成される分散シミュレーションシステムにおいて、シミュレーションを実行する模擬処理部と、いずれかの分散シミュレータで障害が発生した場合、障害が発生する前の状態にシステム全体を復旧させる復旧処理部とを備え、復旧処理部は、復旧ポイントの時刻としてのチェックポイント時刻における分散シミュレータと分散シミュレーション実行基盤の保存データと、チェックポイント時刻毎に所定間隔で設けられた時刻毎の分散シミュレータにおける模擬処理の情報を示すログデータとを用いると共に、楽観的時刻管理手法に基づく分散シミュレータの模擬処理の取り消しによる時刻の巻き戻しを用い、障害が発生した分散シミュレータのみを再起動またはリセットした後、障害が発生した分散シミュレータを、設定された復旧先時刻の直前のチェックポイント時刻までは保存データを用いて復旧させると共に、直前のチェックポイント時刻から復旧先時刻まではログデータを用いて模擬処理部が模擬処理を再実行するよう指示することによって復旧させ、障害が発生した分散シミュレータ以外の分散シミュレータは、模擬処理の取り消しによって復旧先時刻へ状態を戻すようにしたので、いずれかの分散シミュレータに障害が発生した場合でも、障害が発生していない分散シミュレータまでセーブ処理時刻に状態をリセットする必要が無く、速やかな復旧処理を行うことができる。
【００４１】
また、実施の形態２の分散シミュレーションシステムによれば、分散シミュレータが分散シミュレーション実行基盤によって進行を許可される時刻を、分散シミュレータが模擬処理を行う時刻よりも遅らせることにより、楽観的時刻管理手法に基づく分散シミュレータの模擬処理の取り消しを実現する時刻進行調整部を備えたので、保守的時刻管理手法に基づく形態と同様にシミュレーションを進めることができる。
【００４２】
また、実施の形態２の分散シミュレーションシステムによれば、時刻進行調整部は、チェックポイント時刻毎に時刻進行を行うようにしたので、分散シミュレータは、模擬処理を開始した時点から全ての時刻の状態を保存する必要がなく、直前のチェックポイント時刻からの各時刻の状態だけを保存すれば良いため、メモリやファイル等の状態保存領域を効率的に利用することができる。
【００４３】
実施の形態３．
次に、実施の形態２で説明した、楽観的時刻管理手法に基づいてフェデレートの時刻進行と障害発生後の復旧処理を行う分散シミュレーションにおいて、障害が発生した後で復旧したい復旧先時刻が、障害が発生した時刻に最も近いセーブ処理が行われた時刻よりも過去の場合の復旧処理について説明する。なお、実施の形態３の分散シミュレーションシステムにおける図面上の構成は図５に示した構成と同様であるため、図５の構成を用いて説明する。
【００４４】
実施の形態３の復旧処理部３１は、復旧ポイントの時刻としてのチェックポイント時刻毎に所定間隔で設けられた時刻毎のフェデレート１０２における模擬処理の情報を示すログデータを含むチェックポイント時刻のフェデレート１０２とＲＴＩ１０３の保存データを用いると共に、楽観的時刻管理手法に基づくフェデレート１０２の模擬処理の取り消しによる時刻の巻き戻しを用い、フェデレート１０２を、設定された復旧先時刻の直前のチェックポイント時刻までは保存データを用いて復旧させ、直前のチェックポイント時刻から復旧先時刻までは模擬処理の取り消しによって復旧先時刻へ状態を戻す機能を有している。その他の構成は実施の形態２と同様であるため、ここでの説明は省略する。
【００４５】
実施の形態２で説明した通り、取り消された時刻より前の時刻に戻す処理を高速化するために、一般的な楽観的時刻管理手法を用いるフェデレート１０２は、模擬処理部１における各時刻の状態を状態保存領域に保存し、模擬の取り消しが行われた際に前時刻の状態を状態保存領域から呼び出して現在の状態にコピーすると共に、取り消される時刻の状態を状態保存領域から削除することで、模擬処理をやり直すことなく高速に前時刻の状態に戻すことができる。そのため、障害が発生した後で任意の時刻へ復旧する際に、実施の形態１で説明したようなログファイルを用いて各時刻の模擬処理をやり直すよりも、復旧先時刻より先の時刻の模擬を取り消した方が、早く復旧することが可能である。
【００４６】
図１３は、図１０の状況が更に進んで１０番目のセーブ処理が行われた時刻ＴＳ１０から、さらに時刻ＴＳ１０＋３まで進んだところでフェデレート（２）において障害が発生した状況を表している。図１３において、ＴＳ９およびＴＳ１０は、ペーサーフェデレートの時刻進行により、各フェデレートに対して時刻進行の許可が出された許可時刻であり、この時刻においてセーブ処理が実行され、ＲＴＩおよび各フェデレートの保存データが出力される。ここで、保存データには、前時刻までの状態保存領域の情報が格納されるものとする。
【００４７】
次に、図１４は、図１３の状態から、時刻ＴＳ９＋２に復旧する処理について表している。まず、各フェデレート１０２の復旧処理部３１は、再起動／リセットを行った後、復旧先時刻に最も近い将来のセーブ処理による保存データを用いてレストア処理を行い、図１４の例では、一旦、時刻ＴＳ１０に復旧させる。次に、ＲＴＩ１０３では、再起動／リセットを行った後、復旧先時刻に最も近い過去のセーブ処理による保存データを用いてレストア処理を行い、図１４の例では、時刻ＴＳ９に復旧させる。ここで、ＲＴＩ１０３のみ過去の時刻に復旧させる理由について説明する。フェデレート１０２がセーブ処理を行うのは時刻進行許可が行われた後のため、フェデレート１０２とＲＴＩ１０３を同じ時刻に復旧させてしまうと、システム全体が復旧先時刻より将来の時刻となってしまい、楽観的時刻管理手法を用いても復旧先時刻まで戻すことができない。そこで、システム全体の状態を管理しているＲＴＩ１０３を復旧先時刻より過去の時刻に復旧させることで、この問題を解決する。各フェデレート１０２が時刻ＴＳ１０に復旧し、ＲＴＩ１０３が時刻ＴＳ９に復旧した後、各フェデレート１０２は楽観的時刻管理手法による模擬の取り消し処理により、復旧先時刻である時刻ＴＳ９＋３に復旧する。
【００４８】
このように、実施の形態３では、楽観的時刻管理を用いて各フェデレート１０２の時刻進行を行う分散シミュレーションにおいて、セーブ処理によって保存された各フェデレート１０２とＲＴＩ１０３の保存データを用いることにより、障害発生後に任意の復旧先時刻に復旧する場合に、ログファイルを用いた模擬処理のやり直しよりも高速な模擬の取り消し処理によってシステム全体を高速に復旧させることができる。
【００４９】
以上説明したように、実施の形態３の分散シミュレーションシステムによれば、複数の分散シミュレータと分散シミュレーション実行基盤によって構成される分散シミュレーションシステムにおいて、模擬処理を実行する模擬処理部と、いずれかの分散シミュレータで障害が発生した場合、障害が発生する前の状態にシステム全体を復旧させる復旧処理部とを備え、復旧処理部は、復旧ポイントの時刻としてのチェックポイント時刻毎に所定間隔で設けられた時刻毎の分散シミュレータにおける模擬処理の情報を示すログデータを含むチェックポイント時刻の分散シミュレータと分散シミュレーション実行基盤の保存データを用いると共に、楽観的時刻管理手法に基づく分散シミュレータの模擬処理の取り消しによる時刻の巻き戻しを用い、分散シミュレータを、設定された復旧先時刻の直前のチェックポイント時刻までは保存データを用いて復旧させ、直前のチェックポイント時刻から復旧先時刻までは模擬処理の取り消しによって復旧先時刻へ状態を戻すようにしたので、復旧したい復旧先時刻が、障害が発生した時刻に最も近いセーブ処理が行われた時刻よりも過去の場合であっても速やかな復旧処理を行うことができる。
【００５０】
また、実施の形態３の分散シミュレーションシステムによれば、復旧処理部は、分散シミュレーション実行基盤に対して、分散シミュレータとは別に、復旧先時刻に最も近い過去のチェックポイント時刻の保存データを用いてチェックポイント時刻に復旧させるようにしたので、分散シミュレーションシステムとしての時刻を復旧先時刻へ復旧させることができる。
【００５１】
なお、上記実施の形態１〜３では、復旧処理部３１を、フェデレート１０２のフェデレート実行制御部３に設けたが、これに限定されるものではなく、フェデレート１０２内の別の機能部として設けたり、フェデレート１０２とは別のシステム管理用のフェデレートに設けたりといったように、分散シミュレーションシステムとしていずれかに有するものであればよい。
【００５２】
また、本願発明はその発明の範囲内において、各実施の形態の自由な組み合わせ、あるいは各実施の形態の任意の構成要素の変形、もしくは各実施の形態において任意の構成要素の省略が可能である。
【符号の説明】
【００５３】
１  模擬処理部、２  ログファイル入出力部、３  フェデレート実行制御部、１０１  フェデレーション、１０２  フェデレート、１０３  ＲＴＩ、１０４  フェデレートＲＴＩインタフェース部、１０５  フェデレート処理部。
【図１】
2015121847.tif 000003
【図２】
2015121847.tif 000004
【図３】
2015121847.tif 000005
【図４】
2015121847.tif 000006
【図５】
2015121847.tif 000007
【図６】
2015121847.tif 000008
【図７】
2015121847.tif 000009
【図８】
2015121847.tif 000010
【図９】
2015121847.tif 000011
【図１０】
2015121847.tif 000012
【図１１】
2015121847.tif 000013
【図１２】
2015121847.tif 000014
【図１３】
2015121847.tif 000015
【図１４】
2015121847.tif 000016