(57)【特許請求の範囲】
【請求項１】
セマフォを利用したジョブの実行プログラムを実行したときのログ情報を記憶部に記憶する際に、前記ログ情報に割り当てられた期間識別子を対応させて記憶する実行部と、
前記セマフォに対応して前記期間識別子が示す期間の有効又は無効を管理する管理部と、
ログローテーション時に、前記記憶部に記憶した期間識別子が示す期間の有効又は無効を前記管理部に問い合わせ、無効と判定された場合に前記期間識別子に対応する前記ログ情報を削除するログローテーション部と、
を有し、
前記管理部は、前記セマフォが初期状態に戻ったとき、前記セマフォに対応して管理する前記期間識別子の期間を無効とする、
情報処理装置。
【請求項２】
前記管理部は、前記セマフォに対応する新たな期間識別子の期間を発行し、前記新たな期間識別子の期間を有効とする、
請求項１に記載の情報処理装置。
【請求項３】
前記実行部は、前記ログ情報を記憶部に記憶する際に、前記管理部に問い合わせ、取得した期間識別子を前記ログ情報に対応付けて記憶する、
請求項１又は２に記載の情報処理装置。
【請求項４】
関連する複数のジョブの実行プログラムを実行する複数の前記実行部を有し、
前記ログローテーション部は、ログローテーション時に、前記記憶部に記憶した期間識別子が示す期間の有効又は無効を前記管理部に問い合わせ、前記関連する複数のジョブの前記ログ情報に対応する期間識別子のすべてが無効と判定された場合に前記期間識別子に対応する前記ログ情報を削除する、
請求項１〜３のいずれか一項に記載の情報処理装置。
【請求項５】
セマフォを利用したジョブの実行プログラムを実行したときのログ情報を記憶部に記憶する際に、前記ログ情報に割り当てられた期間識別子を対応させて記憶する処理と、
前記セマフォに対応して前記期間識別子が示す期間の有効又は無効を管理する処理と、
ログローテーション時に、前記記憶部に記憶した期間識別子が示す期間の有効又は無効を問い合わせ、無効と判定された場合に前記期間識別子に対応する前記ログ情報を削除する処理と、を有し、
前記セマフォが初期状態に戻ったとき、前記セマフォに対応して管理する前記期間識別子の期間を無効とする、
処理をコンピュータに実行させるためのログ管理プログラム。
【請求項６】
セマフォを利用したジョブの実行プログラムを実行したときのログ情報を記憶部に記憶する際に、前記ログ情報に割り当てられた期間識別子を対応させて記憶し、
前記セマフォに対応して前記期間識別子が示す期間の有効又は無効を管理し、
ログローテーション時に、前記記憶部に記憶した期間識別子が示す期間の有効又は無効を問い合わせ、無効と判定された場合に前記期間識別子に対応する前記ログ情報を削除し、
前記セマフォが初期状態に戻ったとき、前記セマフォに対応して管理する前記期間識別子の期間を無効とする、
ことをコンピュータが実行するログ管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、ログ管理プログラム及びログ管理方法に関する。
【背景技術】
【０００２】
運用管理者は、セマフォを利用したプログラムによる資源の解放漏れ等の異常が発生した場合、利用者へのサービスに影響が及ぶことを防ぐために、迅速に原因の究明を行う必要がある。しかしながら、取得したトレース情報（ログ情報）の中には、プログラムが正常に動作しているときに取得されたトレース情報が多く存在する。そのため、運用管理者は、異常の原因を調べる際に、異常に関する情報を含むトレース情報を特定するまでに多大な時間を要する場合がある。また、トレース情報を記憶する記憶領域の容量は有限であるため、取得したトレース情報を十分な時間記憶しておくことができない場合がある。
【０００３】
そこで、古いトレース情報から順に記憶部から削除することが行われている。また、調査に用いるトレース情報を効率的に取得するために、全ての監視対象が特定の資源の使用をしていないと判定した場合、記憶部からトレース情報を削除する方法が提案されている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１６−１８４７０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、例えば科学技術計算の実行プログラムを実行する場合、実行時間が膨大な場合があり、例えば演算が完了するまでに１週間以上かかることがある。その場合、上記の方法で古いトレース情報から順に削除すると、削除したトレース情報の中に不具合が生じたときの原因を究明する際に必要な情報が含まれる場合がある。
【０００６】
また、特許文献１では、すべての資源が一元管理され、資源が獲得されたことと解放されたことが常時監視されている環境が適用の前提になる。これに対して、多数の並列ジョブを実行可能な分散システムでは、各ジョブに対する資源の獲得と解放が、明示的に位置付けされているとは限らない。例えば、単に、ある共通のファイルを更新するという関係の場合、前のジョブで行った更新の誤りが後のジョブに影響することがあり、すべての資源を一元管理することは困難である。
【０００７】
そこで、一つの側面では、本発明は、不具合が生じたときの解析に必要なログ情報の削除を防止することを目的とする。
【課題を解決するための手段】
【０００８】
一つの実施態様では、セマフォを利用したジョブの実行プログラムを実行したときのログ情報を記憶部に記憶する際に、前記ログ情報に割り当てられた期間識別子を対応させて記憶する実行部と、前記セマフォに対応して前記期間識別子が示す期間の有効又は無効を管理する管理部と、ログローテーション時に、前記記憶部に記憶した期間識別子が示す期間の有効又は無効を前記管理部に問い合わせ、無効と判定された場合に前記期間識別子に対応する前記ログ情報を削除するログローテーション部と、を有し、前記管理部は、前記セマフォが初期状態に戻ったとき、前記セマフォに対応して管理する前記期間識別子の期間を無効とする、情報処理装置が提供される。
【発明の効果】
【０００９】
一つの側面では、本発明は、不具合が生じたときの解析に必要なログ情報の削除を防止することができる。
【図面の簡単な説明】
【００１０】
【図１】第１及び第２実施形態に係る情報処理装置の機能構成の一例を示す図。
【図２】第１及び第２実施形態に係る情報処理装置のハードウェア構成の一例を示す図。
【図３】第１実施形態に係るセマフォ生成時の処理の一例を説明するための図。
【図４】第１実施形態に係るログ出力時(セマフォ獲得時)の処理の一例を示すフローチャート。
【図５】第１実施形態に係るログ出力時の処理の一例を説明するための図。
【図６】第１実施形態に係るログファイルに記憶されるログ情報の一例を示す図。
【図７】第１実施形態に係るログ出力時(期間ＩＤ問合せ時)の処理の一例を示すフローチャート。
【図８】第１実施形態に係るログ出力時(セマフォ返却時)の処理の一例を示すフローチャート。
【図９】第１実施形態に係るログローテーション時の処理の一例を示すフローチャート。
【図１０】第１実施形態に係るログローテーション時の処理の一例を説明するための図。
【図１１】第２実施形態に係るセマフォ生成時の処理の一例を説明するための図。
【図１２】第２実施形態に係るログ出力時の処理の一例を説明するための図。
【図１３】第２実施形態に係るログローテーション時の処理の一例を説明するための図。
【発明を実施するための形態】
【００１１】
以下、本発明の実施形態について添付の図面を参照しながら説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複した説明を省く。
【００１２】
［情報処理装置の機能構成］
まず、本発明の第１及び第２実施形態に係る情報処理装置１０の機能構成の一例について、図１を参照しながら説明する。図１は、本実施形態に係る情報処理装置１０の機能構成の一例を示す。本実施形態に係る情報処理装置１０は、サーバ、パーソナルコンピュータ、タブレット型端末、スマートフォン、ＰＤＡ（Personal Digital Assistants）、ＨＭＤ（Head Mount Display）等のコンピュータ（以下、「ノード」ともいう。）にて実現される。また、本実施形態に係る情報処理装置１０は、複数のコンピュータを高速ネットワークなどで接続してクラスタを構築したシステムであってもよい。
【００１３】
本実施形態に係る情報処理装置１０は、記憶部１１、実行部１２、管理部１３、ログローテーション部１４及び通信部１５を有する。
【００１４】
記憶部１１は、実行プログラム１６、ログファイル１７及び管理テーブル１８を記憶する。実行プログラム１６は、例えばジョブスケジューラによりスケジュールされるジョブを実行するためのプログラムである。実行プログラムには、例えば科学技術計算の実行プログラムや、あらゆる分野の実行プログラムが含まれ、実行部１２により実行される。
【００１５】
実行部１２は、ログ情報をログファイル１７に記憶する際に、ログ情報に割り当てられた期間ＩＤをログ情報に対応付けて記憶する。ログ情報は、セマフォを利用した実行プログラム１６を実行したときの履歴情報である。例えば、ログファイル１７には、少なくとも、実行プログラム名、セマフォ名、期間ＩＤ、ログの各データが記憶される。実行部１２は、ログ情報を記憶部１１のログファイル１７に記憶する際に、管理部１３に問い合わせ、管理部１３から取得した期間ＩＤをログ情報に対応付けて記憶する。
【００１６】
セマフォは、実行プログラム１６を実行するための共有資源に対するアクセス可能な数を初期値として持ち、実行部１２の実行プログラム１６がセマフォを獲得したときに一つ減算され、セマフォを返却したときに一つ加算される。すべてのセマフォが返却されると、セマフォ変数は初期値に戻る。セマフォの管理は、実行部１２が行ってもよいし、管理部１３が行ってもよい。
【００１７】
例えば、実行プログラム１６（実行プロセス）がセマフォを獲得したまま返却せずに終了した場合、セマフォが足りなくなり処理が進まなくなる。一方、セマフォがすべて返却され、初期値に戻ったとき、それ以前に獲得した分のセマフォはすべて正常に返却されたことがわかる。
【００１８】
よって、セマフォが初期値に戻ったとき、それ以前のジョブの実行プロセスはセマフォ管理に問題がないと判断できる。つまり、セマフォが初期値に戻ったとき、それ以前のジョブの実行プログラムに関するログ情報は、不具合が生じたときの原因の解析に不要なログ情報であると判断できる。
【００１９】
そこで、管理部１３は、セマフォが初期値に戻ったとき、それ以前のジョブの実行プログラムを実行したときのログ情報に割り当てられた期間ＩＤの期間を無効とする。そして、管理部１３は、セマフォに対応して管理する期間ＩＤの新たな期間を発行し、発行した期間ＩＤの新たな期間を有効とする。
【００２０】
ログローテーション部１４は、所定時間の経過毎にログローテーションを実行し、所定期間（保存期間）を経過したログ情報を削除候補に選択する。ログローテーション部１４は、削除候補に選択したログ情報に対応する期間ＩＤの有効又は無効を管理部１３に問い合わせ、無効と判定された期間ＩＤに対応するログ情報のみを削除する。
【００２１】
ログローテーション部１４が、ログローテーション時に、ログファイル１７に記憶されてから保存期間が経過したログ情報を削除する場合、不具合が生じたときの原因の解析に必要なログ情報を削除してしまう場合がある。これに対して、本実施形態では、管理部１３は、セマフォが初期値に戻ったとき、それ以前のジョブの実行プログラムを実行したときのログ情報に割り当てられた期間ＩＤを無効とする。これにより、期間ＩＤが無効なときには、この期間ＩＤを割り当てられたログ情報は、不具合が生じたときの原因の解析に不要なログ情報であると判断できる。
【００２２】
よって、本実施形態では、ログローテーション部１４が削除候補に選択したログ情報に対応する期間ＩＤのうち、無効と判定された期間ＩＤに対応するログ情報のみを削除する。これにより、不具合が生じたときの解析に必要なログ情報の削除を防止することができる。
【００２３】
期間ＩＤは、ログ情報に割り当てられた期間識別子の一例である。管理部１３は、セマフォ毎の期間ＩＤが示す期間毎の有効又は無効を管理テーブル１８に記憶する。
【００２４】
なお、管理部１３が実行するプログラムは、管理プロセスともいう。ログローテーション部１４が実行するプログラムは、ログローテーションプロセスともいう。実行プログラム１６は、セマフォを利用するジョブの実行プログラムである。第１実施形態では、実行プログラム１６を実行する実行部１２、管理プロセスを実行する管理部１３及びログローテーションプロセスを実行するログローテーション部１４が、同一ノードで協調して動作する。
【００２５】
通信部１５は、かかる構成の情報処理装置１０と、他の機器とのデータ通信を行う。
【００２６】
［ハードウェア構成］
次に、本発明の第１及び第２実施形態に係る情報処理装置１０のハードウェア構成の一例について、図２を参照しながら説明する。図２は、本実施形態に係る情報処理装置１０のハードウェア構成の一例を示す。
情報処理装置１０は、入力装置１０１、表示装置１０２、外部Ｉ／Ｆ１０３、ＲＡＭ（Random Access Memory）１０４、ＲＯＭ（Read Only Memory）１０５、ＣＰＵ（Central Processing Unit）１０６、通信Ｉ／Ｆ１０７、及びＨＤＤ（Hard Disk Drive）１０８などを備え、それぞれがバスＢで相互に接続されている。
【００２７】
入力装置１０１は、キーボードやマウスなどを含み、情報処理装置１０に各操作信号を入力するために用いられる。表示装置１０２は、ＬＣＤ（Liquid crystal Display）モニタ等のディスプレイ、プリンタ、ＣＲＴ（Cathode Ray Tube）などを含み、各種の処理結果を出力する。通信Ｉ／Ｆ１０７は、情報処理装置１０をネットワークに接続するインターフェースである。これにより、情報処理装置１０は、通信Ｉ／Ｆ１０７を介して、他の機器（他のノード等）とデータ通信を行うことができる。
【００２８】
ＨＤＤ１０８は、プログラムやデータを格納している不揮発性の記憶装置である。格納されるプログラムやデータには、情報処理装置１０の全体を制御する基本ソフトウェア及びアプリケーションソフトウェアがある。例えば、ＨＤＤ１０８には、各種のデータベースやプログラム等が格納されてもよい。
【００２９】
外部Ｉ／Ｆ１０３は、外部装置とのインターフェースである。外部装置には、記録媒体１０３ａなどがある。これにより、情報処理装置１０は、外部Ｉ／Ｆ１０３を介して記録媒体１０３ａの読み取り及び／又は書き込みを行うことができる。記録媒体１０３ａには、ＣＤ（Compact Disk）、及びＤＶＤ（Digital Versatile Disk）、ならびに、ＳＤメモリカード（SD Memory card）やＵＳＢメモリ（Universal Serial Bus memory）等がある。
【００３０】
ＲＯＭ１０５は、電源を切っても内部データを保持することができる不揮発性の半導体メモリである。ＲＯＭ１０５には、ネットワーク設定等のプログラム及びデータが格納されている。ＲＡＭ１０４は、プログラムやデータを一時保持する揮発性の半導体メモリである。ＣＰＵ１０６は、ＨＤＤ１０８やＲＯＭ１０５などの記憶装置から、プログラムやデータをＲＡＭ１０４上に読み出し、処理を実行することで、装置全体の制御や搭載機能を実現する演算装置である。
【００３１】
かかる構成により、本実施形態に係る情報処理装置１０では、ＣＰＵ１０６は、ジョブスケジューラがスケジュールした実行順に、例えばＲＡＭ１０４、ＲＯＭ１０５、ＨＤＤ１０８内に格納されたジョブの実行プログラム及びその他のプログラムを用いてセマフォ生成時の処理、ログ出力時の処理及びログローテーション時の処理を実行する。なお、ログファイル１７及び管理テーブル１８に記憶された情報は、ＲＡＭ１０４、ＨＤＤ１０８、又はネットワークを介して情報処理装置１０に接続されるクラウド上のサーバ等に格納され得る。
【００３２】
記憶部１１の機能は、例えば、ＲＡＭ１０４、ＲＯＭ１０５及びＨＤＤ１０８により実現可能である。通信部１５の機能は、例えば、通信Ｉ／Ｆ１０７により実現可能である。
＜第１実施形態＞
第１実施形態では、実行部１２が実行する実行プログラム１６と、管理部１３が実行する管理プロセスと、ログローテーション部１４が実行するログローテーションプロセスとは、同一ノードで協調して動作する。
【００３３】
［セマフォ生成時の処理］
次に、第１実施形態に係るセマフォ生成時の処理の一例について図３を参照して説明する。図３は、第１実施形態に係るセマフォ生成時の処理の一例を説明するための図である。図３に示すように、実行部１２が、セマフォを利用する実行プログラム１６を実行すると、セマフォが生成された時点で、実行部１２は、実行プログラム名、セマフォ変数名(以下、「セマフォ名」ともいう。)、セマフォの数、操作フラグを管理部１３に通知する。このとき、通知された操作フラグには、「セマフォ生成」が設定されている。
【００３４】
管理部１３は、通知された実行プログラム名、セマフォ名、セマフォの数を管理テーブル１８に記憶し、新規に期間ＩＤを発行する。図３の管理テーブル１８の例では、管理部１３は、セマフォ名が「セマフォＡ」、対応する期間ＩＤが「０」である。セマフォの数は、セマフォの初期値として記憶される。
【００３５】
［ログ出力時(セマフォ獲得時)の処理］
次に、第１実施形態に係るログ出力時(セマフォ獲得時)の処理の一例について図４及び図５を参照して説明する。図４は、第１実施形態に係るログ出力時(セマフォ獲得時)の処理の一例を示すフローチャートである。図５は、第１実施形態に係るログ出力時の処理の一例を説明するための図である。
【００３６】
図４のログ出力時(セマフォ獲得時)の処理は、実行プログラム１６を実行するためにセマフォを獲得すると（ステップＳ１）、開始される。実行部１２は、操作フラグに「セマフォ獲得」を設定し、実行プログラム名、セマフォ名、操作フラグ（セマフォ獲得）を管理部１３に通知する(ステップＳ１０)。
【００３７】
管理部１３は、実行部１２から通知された、実行プログラム名、セマフォ名、操作フラグ（セマフォ獲得）を取得する(ステップＳ１００)。以上の処理は、図５の実行部１２から管理部１３に向かう矢印に示される。
【００３８】
図４に戻り、次に、管理部１３は、取得した実行プログラム名及びセマフォ名を確認し、取得したセマフォ名に対応する期間ＩＤが有効期間内かを判定する(ステップＳ１０１)。管理部１３は、管理テーブル１８を参照して、取得したセマフォ名に対応する期間ＩＤを確認し、有効期間内かを判定する。
【００３９】
本実施形態において、管理部１３が取得したセマフォ名を「セマフォＡ」とする。管理部１３は、セマフォに対応して期間ＩＤを発行したとき、まず期間ＩＤに「０」を設定し、セマフォが初期値に戻る度に、期間ＩＤの値を一つ加算していく。よって、期間ＩＤの値が「０」よりも大きい場合、期間ＩＤの値が「０」のログ情報は無効となる。
【００４０】
この時点で、図５に示す管理テーブル１８の場合、管理部１３は、取得したセマフォＡの期間ＩＤは「０」に設定されている、つまり、この時点では、管理部１３は、セマフォＡの期間ＩＤが「０」であり、有効期間内であると判定する。この場合、管理部１３は、ステップＳ１０３に進み、有効期間内と判定した期間ＩＤを実行部１２に通知する。一方、管理部１３は、セマフォに対応する期間ＩＤが有効期間外であると判定すると、管理部１３は、ステップＳ１０２に進み、新規に期間ＩＤを発行し、新規に発行した期間ＩＤを実行部１２に通知する(ステップＳ１０３)。本実施形態では、期間ＩＤを新規に発行するとは、期間ＩＤの値を「１」カウントアップすることでよい。ただし、期間ＩＤを新規に発行する際、期間ＩＤの値を変える方法に限らず、期間ＩＤそのものを変えてもよい。管理部１３は、対応するセマフォ変数のカウンタを一つ減算し（ステップＳ１０４）、本処理を終了する。セマフォ変数のカウンタは、セマフォの獲得時に１減算され、セマフォの返却時に１加算され、セマフォの数が初期値に戻ったかを判定するために使用される。
【００４１】
実行部１２は、管理部１３から通知された期間ＩＤをセマフォ名に対応付けてログファイル１７に記憶し（ステップＳ１２）、本処理を終了する。図５には、管理部１３から実行部１２に期間ＩＤが通知され、これに応じて、実行部１２は、ログファイル１７にログ情報を記憶する際に、通知された期間ＩＤをログ情報、実行プログラム名及びセマフォ名に対応付けて記憶する例が示されている。図４のログ出力時(セマフォ獲得時)の処理の結果、ログファイル１７には、図６（ａ）に一例を示すフォーマット「実行プログラム名  セマフォＡ  期間ＩＤ：０  セマフォ獲得ログ」のログ行が出力される。これにより、実行プログラム名及びセマフォ名を含むログ情報に対応付けて期間ＩＤが記憶される。
【００４２】
［ログ出力時(期間ＩＤ問合せ時)の処理］
次に、第１実施形態に係るログ出力時(期間ＩＤ問合せ時)の処理の一例について図７を参照して説明する。図７は、第１実施形態に係るログ出力時(期間ＩＤ問合せ時)の処理の一例を示すフローチャートである。
【００４３】
図７のログ出力時(期間ＩＤ問合せ時)の処理では、実行部１２が、実行プログラム１６を実行して期間ＩＤの問い合わせを実行すると（ステップＳ２）、操作フラグに「期間ＩＤの問い合わせ」が設定される。実行部１２は、実行プログラム名、セマフォ名、操作フラグ（期間ＩＤの問い合わせ）を管理部１３に通知する(ステップＳ１３)。
【００４４】
管理部１３は、実行部１２から通知された、実行プログラム名、セマフォ名、操作フラグ（期間ＩＤの問い合わせ）を取得する(ステップＳ１０５)。次に、管理部１３は、取得したセマフォ名を確認し、管理テーブル１８を参照して、取得したセマフォ名に対応する期間ＩＤを通知し(ステップＳ１０６)、本処理を終了する。
【００４５】
実行部１２は、期間ＩＤを取得し（ステップＳ１４）、ログファイルに出力し（ステップＳ１５）、本処理を終了する。これにより、本実施形態では、ログファイル１７に、図６（ｂ）に一例を示すフォーマット「実行プログラム名  セマフォＡ  期間ＩＤ：０  ログ本文」のログ行が出力される。
【００４６】
［ログ出力時(セマフォ返却時)の処理］
次に、第１実施形態に係るログ出力時(セマフォ返却時)の処理の一例について図８を参照して説明する。図８は、第１実施形態に係るログ出力時(セマフォ返却時)の処理の一例を示すフローチャートである。
【００４７】
図８のログ出力時(セマフォ返却時)の処理では、実行プログラム１６の実行完了に伴いセマフォを返却すると（ステップＳ３）、実行部１２は、操作フラグに「セマフォ返却」を設定し、実行プログラム名、セマフォ名、操作フラグ（セマフォ返却）を管理部１３に通知する(ステップＳ１６)。
【００４８】
管理部１３は、実行部１２から通知された、実行プログラム名、セマフォ名、操作フラグ（セマフォ返却）を取得する(ステップＳ１０７)。次に、管理部１３は、対応するセマフォ変数のカウンタを一つ加算する（ステップＳ１０８）。次に、管理部１３は、セマフォ変数のカウンタが初期値に等しいかを判定する(ステップＳ１０９)。管理部１３は、セマフォ変数のカウンタがセマフォの初期値に等しい場合、セマフォが初期状態に戻ったと判定する。なお、実行部１２が、セマフォ変数のカウンタがセマフォの初期値に等しいか否かを判定し、等しい場合には、実行部１２から管理部１３に、セマフォが初期値であることを通知してもよい。
【００４９】
管理部１３は、セマフォが初期値に戻ったと判定すると、管理テーブル１８に記憶された対応するセマフォの期間ＩＤを無効（有効期間外）にし、新たな期間ＩＤを発行する(ステップＳ１１０)。この時点では、期間ＩＤの値を１カウントアップすることで、新たな期間ＩＤに「１」が設定される。この時点で、「１」が設定されている期間ＩＤは有効であり、「０」が設定されている期間ＩＤは無効である。
【００５０】
次に、管理部１３は、新たに発行した期間ＩＤを実行部１２に通知し（ステップＳ１１１）、本処理を終了する。本実施形態では、期間ＩＤの値を１カウントアップすることで、期間ＩＤの有効又は無効が判断可能になる。本実施形態では、期間ＩＤをカウントアップするタイミングは、セマフォの返却時とセマフォの生成時である。
【００５１】
一方、ステップＳ１０９において、管理部１３は、セマフォ変数のカウンタが初期値でないと判定すると、現在の期間ＩＤをそのまま実行部１２に通知し（ステップＳ１１１）、本処理を終了する。
【００５２】
実行部１２は、管理部１３から通知された期間ＩＤを取得し（ステップＳ１７）、ログファイルに出力し（ステップＳ１８）、本処理を終了する。これにより、本実施形態では、ログファイル１７に、図６（ｃ）に一例を示すフォーマット「管理プロセス名  セマフォＡ  期間ＩＤ：０  セマフォ返却ログ」のログ行が出力される。
【００５３】
以上のように、セマフォの返却時には、管理部１３は、セマフォが初期値に戻っていなかったら期間ＩＤをそのまま実行部１２に通知し、セマフォが初期値に戻っていたら期間ＩＤを１カウントアップして通知する。これにより、期間ＩＤの値によってその期間ＩＤの有効又は無効を判定できる。これにより、無効とされたの期間ＩＤに対応するログ情報は削除し、有効とされたの期間ＩＤに対応するログ情報はログファイル１７に残すことができる。
【００５４】
［ログローテーション時の処理］
次に、第１実施形態に係るログローテーション時の処理の一例について図９及び図１０を参照して説明する。図９は、第１実施形態に係るログローテーション時の処理の一例を示すフローチャートである。図１０は、第１実施形態に係るログローテーション時の処理の一例を説明するための図である。
【００５５】
ログローテーション部１４は、実行部１２や管理部１３とは独立して動作する。ログローテーション部１４は、所定時間が経過する毎に実行され、ログファイル１７に記憶されたログ情報のうち、保存期間を超えたログ情報を削除対象に選択する。削除対象のログ情報であっても、期間ＩＤが有効な場合、その期間ＩＤに対応するログ情報を削除せず、期間ＩＤが無効な場合に、その期間ＩＤに対応するログ情報を削除する。これにより、不具合が生じたときの解析に不要なログ情報のみを削除し、不具合が生じたときの解析に必要なログ情報の削除を防止する。
【００５６】
具体的には、所定時間が経過する毎に図９の処理が開始されると、ログローテーション部１４は、ログファイル１７を確認し、保存期間を超えたログ情報を削除候補に選択する（ステップＳ１２０）。次に、ログローテーション部１４は、操作フラグに「期間ＩＤの有効性確認」を設定し、選択したログ情報の実行プログラム名に対応するセマフォ名、期間ＩＤ、操作フラグ（期間ＩＤの有効性確認）を管理部１３に通知する(ステップＳ１２１)。
【００５７】
管理部１３は、実行部１２から通知された、セマフォ名、期間ＩＤ、操作フラグ（期間ＩＤの有効性確認）を取得する(ステップＳ１１２)。次に、管理部１３は、管理テーブル１８を参照して、通知されたセマフォ名に対応するセマフォ名の期間ＩＤの有効又は無効を通知する（ステップＳ１１３）。
【００５８】
管理部１３は、対応するセマフォ名の期間ＩＤの有効又は無効を、管理テーブル１８に記憶した期間ＩＤの値から判定することができる。つまり、管理部１３は、管理テーブル１８に記憶したセマフォ名の期間ＩＤのうち、今管理している最新の期間ＩＤに設定された値よりも小さい値の期間ＩＤは無効であり、最新の期間ＩＤの値以上の値の期間ＩＤは有効であると判定する。
【００５９】
ログローテーション部１４は、通知された期間ＩＤが無効か否かを判定し（ステップＳ１２２）、通知された期間ＩＤが無効であると判定した場合、期間ＩＤに対応するログ情報を削除し（ステップＳ１２３）、ステップＳ１２５に進む。
【００６０】
一方、ログローテーション部１４は、通知された期間ＩＤが有効であると判定した場合、期間ＩＤに対応するログ情報をログファイル１７から削除せず、ステップＳ１２５に進む。ステップＳ１２５において、所定時間が経過した場合には、ステップＳ１２０に戻り、ステップＳ１２０以降の処理を繰り返す。
【００６１】
図１０の例では、ログローテーション部１４が、セマフォ名、期間ＩＤ、操作フラグ（期間ＩＤの有効性確認）を通知すると、管理部１３は、管理テーブル１８を参照する。その結果、管理部１３は、セマフォ名がセマフォＡの場合、期間ＩＤが「０」を示すときには無効、期間ＩＤが「１」を示すときには有効、セマフォ名がセマフォＢの場合、期間ＩＤが「０」を示すときには有効であることを通知する。
【００６２】
ログローテーション部１４は、図１０に示す保存期間を超えたログ情報のうち、無効と通知された期間ＩＤを持つログ情報を削除し、有効と通知された期間ＩＤを持つログ情報を削除しない。この結果、セマフォＡの期間ＩＤが「０」に対応するログ情報が削除され、セマフォＡの期間ＩＤが「１」に対応するログ情報及びセマフォＢの期間ＩＤが「０」に対応するログ情報は削除されない。
【００６３】
以上に説明したように、セマフォが初期値に戻ったとき、獲得した分のセマフォはすべて正常に返却されたことを示す。つまり、セマフォが初期値に戻ったとき、それ以前に実行された実行プログラム１６のログ情報は、正常に実行された処理にかかる履歴情報であり、不具合が生じたときの解析に使用されないと判断できる。
【００６４】
そこで、本実施形態に係る情報処理装置１０では、セマフォが初期値に戻ったとき、期間ＩＤを１カウントアップすることで、実行プログラム１６が実行する処理のログ情報を期間ＩＤで識別される複数の期間に区切る。そして、セマフォが初期値に戻ったとき、それ以前のジョブの実行プログラムに関するログ情報に対応する期間ＩＤを無効とする。つまり、セマフォが初期値に戻ったとき、期間ＩＤを１カウントアップすることで、期間ＩＤがカウントアップされた値よりも小さい値を持つときには、その期間ＩＤを無効と判定し、無効な期間ＩＤに対応するログ情報をログファイル１７から削除する。
【００６５】
この結果、本実施形態に係る情報処理装置１０は、ログファイル１７に記憶された保存期間を超えたログ情報のうち、不具合が生じたときの原因の解析に不要なログ情報を削除し、不具合が生じたときの解析に必要なログ情報の削除を防止することができる。
【００６６】
特にＨＰＣ（High Performance Computing）では、一日に記録するログ情報がギガ単位と膨大になる。また、一つの実行プログラムの実行時間が非常に長い。よって、ログローテーション部１４が、保存期間を超え、削除対象としたログ情報の中には、障害が起きたときに残しておきたいログ情報が含まれる可能性が高くなる。これに対して、ログ情報を無限に保存しておくことやログ情報の保存期間をより長くすることは、ログ情報を記憶するメモリ容量が有限であるために現実的ではない。
【００６７】
そこで、本実施形態では、ログファイル１７に記憶された、保存期間が過ぎたログ情報を削除する際に、上記手法により不具合が生じたときの原因の解析に必要となり得るログ情報を削除しないことで、障害発生時の原因究明をより円滑に行うことができる。
＜第２実施形態＞
以上に説明したように、第１実施形態では、実行部１２、管理部１３及びログローテーション部１４が、同一ノード内で動作した。これに対して、第２実施形態では、実行部１２、管理部１３及びログローテーション部１４が、異なるノードで協調して動作する。
【００６８】
実行プログラム１６は、並列で動作することができる。例えば、図１１に示すように、実行プログラム１６が、複数の実行部１２ａ、１２ｂに跨って並列に実行される場合が一例として挙げられる。この場合、実行部１２ａを有する計算用ノード１０ａ、実行部１２ｂを有する計算用ノード１０ｂ、管理部１３を有する管理用ノード１０ｃは、別ノードで構成され、互いに協調して動作する。また、本実施形態では、各計算用ノード１０ａ、１０ｂに、ログローテーション部１４ａ、１４ｂがそれぞれ設けられている。第１実施形態に係る情報処理装置１０の態様に替えて、本実施形態では、計算用ノード１０ａ、計算用ノード１０ｂ及び管理用ノード１０ｃを有するシステム１００が構成される。
【００６９】
図１１に示す、第２実施形態に係るセマフォ生成時の処理の一例では、複数の計算用ノード１０ａ、１０ｂの実行部１２ａ、１２ｂから、それぞれ、実行プログラム名、セマフォ名、セマフォの数、操作フラグが管理用ノード１０ｃの管理部１３に通知される。管理部１３は、管理テーブル１８を用いてセマフォ毎の期間ＩＤを一元管理する。
【００７０】
図１２に示す、第２実施形態に係るログ出力時の処理の一例では、複数の計算用ノード１０ａ、１０ｂの実行部１２ａ、１２ｂから実行プログラム名、セマフォ名、操作フラグがそれぞれ通知される。これに応じて、管理部１３から対応する期間ＩＤが通知される。実行部１２ａ、１２ｂは、それぞれに通知された期間ＩＤをセマフォ名に対応付けてログファイル１７ａ、１７ｂに記憶する。ログファイル１７ａ、１７ｂは、計算用ノード１０ａ、１０ｂ毎に別々に設けられてもよいし、計算用ノード１０ａ、１０ｂに共通のファイルであってもよい。
【００７１】
図１３に示す、第２実施形態に係るログローテーション時の処理の一例では、ログローテーション部１４ａ、１４ｂは、それぞれの所定時間が経過する毎に実行される。ログローテーション部１４ａ、１４ｂは、ログファイル１７ａ、１７ｂに出力されたログ情報のうち、保存期間を超えたログ情報を削除候補に選択する。図１３に、削除候補に選択された、保存期間を超えたログ情報の一例を示す。
【００７２】
削除対象に選択されたログ情報に対応して記憶された期間ＩＤが有効な場合、対応するログ情報は削除しない。一方、削除対象のログ情報に対応して記憶された期間ＩＤが無効な場合、対応するログ情報は削除される。これにより、不具合が生じたときの原因の解析に必要なログ情報の削除を防止することができる。
【００７３】
実行プログラム１６が複数の計算用ノードに跨って並列して実行される場合、関連するジョブの実行プログラム１６が、複数の計算用ノードに跨って実行される場合がある。この場合、ログ情報を削除する際に、他の計算用ノードの状況を考慮する必要がある。
【００７４】
つまり、本実施形態では、計算用ノード１０ａで行われるセマフォＡを利用したジョブの実行プログラム１６と、計算用ノード１０ｂで行われるセマフォＢを利用したジョブの実行プログラム１６とが関連する場合に、関連する複数のジョブに関するログ情報に対応する期間ＩＤのすべてが無効と判定された場合に期間ＩＤに対応するログ情報を削除する。
【００７５】
つまり、図１３の例では、管理テーブル１８に記憶したセマフォＢに対応する値が「０」の期間ＩＤが無効になったとき、すべての関連する複数のジョブに関するログ情報に対応する期間ＩＤが「０」のすべてが無効と判定され、期間ＩＤに対応するログ情報が削除される。
【００７６】
本実施形態に係るシステム１００によれば、関連する複数のジョブの実行プログラム１６が異なる計算用ノードにおいて並列で実行されるときのログ情報が互いに関連している場合にも、障害時の解析に必要となり得るログ情報は削除されない。これにより、障害が起きたときの原因究明を円滑に行うことができる。
【００７７】
なお、計算用ノード１０ａで行われる、セマフォＡを利用したジョブの実行プログラム１６と、計算用ノード１０ｂで行われる、セマフォＢを利用したジョブの実行プログラム１６とが関連するか否かは、予め、実行部１２、管理部１３又はログローテーション部１４がジョブスケジューラ等から通知されているものとする。
【００７８】
以上、情報処理装置、ログ管理プログラム及びログ管理方法を上記実施形態により説明したが、本発明に係る情報処理装置、ログ管理プログラム及びログ管理方法は上記実施形態に限定されるものではなく、本発明の範囲内で種々の変形及び改良が可能である。また、上記実施形態及び変形例が複数存在する場合、矛盾しない範囲で組み合わせることができる。
【００７９】
例えば、上記実施形態に係る情報処理装置１０及びシステム１００の構成は一例であり、本発明の範囲を限定するものではなく、用途や目的に応じて様々なシステム構成例があることは言うまでもない。例えば、システム１００では、計算用ノードは３つ以上有してもよい。また、システム１００では、複数の計算用ノードの内部に管理用ノードが設けられてもよい。
【００８０】
以上の説明に関し、更に以下の項を開示する。
（付記１）
セマフォを利用したジョブの実行プログラムを実行したときのログ情報を記憶部に記憶する際に、前記ログ情報に割り当てられた期間識別子を対応させて記憶する実行部と、
前記セマフォに対応して前記期間識別子が示す期間の有効又は無効を管理する管理部と、
ログローテーション時に、前記記憶部に記憶した期間識別子が示す期間の有効又は無効を前記管理部に問い合わせ、無効と判定された場合に前記期間識別子に対応する前記ログ情報を削除するログローテーション部と、
を有する情報処理装置。
（付記２）
前記管理部は、前記セマフォが初期状態に戻ったとき、前記セマフォに対応して管理する前記期間識別子の期間を無効とし、前記セマフォに対応する新たな期間識別子の期間を発行し、前記新たな識別子の期間を有効とする、
付記１に記載の情報処理装置。
（付記３）
前記実行部は、前記ログ情報を記憶部に記憶する際に、前記管理部に問い合わせ、取得した期間識別子を前記ログ情報に対応付けて記憶する、
付記１又は２に記載の情報処理装置。
（付記４）
関連する複数のジョブの実行プログラムを実行する複数の前記実行部を有し、
前記ログローテーション部は、ログローテーション時に、前記記憶部に記憶した期間識別子が示す期間の有効又は無効を前記管理部に問い合わせ、前記関連する複数のジョブの前記ログ情報に対応する期間識別子のすべてが無効と判定された場合に前記期間識別子に対応する前記ログ情報を削除する、
付記１〜３のいずれか一項に記載の情報処理装置。
（付記５）
セマフォを利用して行うジョブの実行状態を示すログ情報をログファイルに記憶する際に、前記ログ情報に対応する期間の識別子を記憶する処理と、
前記セマフォの状態に応じて、前記識別子の期間の有効又は無効を管理する処理と、
ログローテーション時に、前記ログファイルに記憶した識別子の期間の有効又は無効を問い合わせ、無効と判定された期間の前記識別子に対応する前記ログ情報を削除する処理と、
をコンピュータに実行させるためのログ管理プログラム。
（付記６）
前記セマフォが初期状態に戻ったとき、前記セマフォに対応して管理する前記期間識別子の期間を無効とし、前記セマフォに対応する新たな期間識別子の期間を発行し、前記新たな識別子の期間を有効とする、
付記５に記載のログ管理プログラム。
（付記７）
前記ログ情報を記憶部に記憶する際に、前記問い合わせ、取得した期間識別子を前記ログ情報に対応付けて記憶する、
付記５又は６に記載のログ管理プログラム。
（付記８）
関連する複数のジョブの実行プログラムを実行し、
前記ログローテーション部は、ログローテーション時に、前記記憶部に記憶した期間識別子が示す期間の有効又は無効を前記問い合わせ、前記関連する複数のジョブの前記ログ情報に対応する期間識別子のすべてが無効と判定された場合に前記期間識別子に対応する前記ログ情報を削除する、
付記５〜７のいずれか一項に記載のログ管理プログラム。
（付記９）
セマフォを利用して行うジョブの実行状態を示すログ情報をログファイルに記憶する際に、前記ログ情報に対応する期間の識別子を記憶し、
前記セマフォの状態に応じて、前記識別子の期間の有効又は無効を管理し、
ログローテーション時に、前記ログファイルに記憶した識別子の期間の有効又は無効を問い合わせ、無効と判定された期間の前記識別子に対応する前記ログ情報を削除する、
ことをコンピュータが実行するログ管理方法。
（付記１０）
前記セマフォが初期状態に戻ったとき、前記セマフォに対応して管理する前記期間識別子の期間を無効とし、前記セマフォに対応する新たな期間識別子の期間を発行し、前記新たな識別子の期間を有効とする、
付記９に記載のログ管理方法。
（付記１１）
前記ログ情報を記憶部に記憶する際に、前記問い合わせ、取得した期間識別子を前記ログ情報に対応付けて記憶する、
付記９又は１０に記載のログ管理方法。
（付記１２）
関連する複数のジョブの実行プログラムを実行し、
前記ログローテーション部は、ログローテーション時に、前記記憶部に記憶した期間識別子が示す期間の有効又は無効を前記問い合わせ、前記関連する複数のジョブの前記ログ情報に対応する期間識別子のすべてが無効と判定された場合に前記期間識別子に対応する前記ログ情報を削除する、
付記９〜１２のいずれか一項に記載のログ管理方法。
【符号の説明】
【００８１】
１０  情報処理装置
１１  記憶部
１２  実行部
１３  管理部
１４  ログローテーション部
１６  実行プログラム
１７  ログファイル
１８  管理テーブル
【図１】
0006988178.tif 000002
【図２】
0006988178.tif 000003
【図３】
0006988178.tif 000004
【図４】
0006988178.tif 000005
【図５】
0006988178.tif 000006
【図６】
0006988178.tif 000007
【図７】
0006988178.tif 000008
【図８】
0006988178.tif 000009
【図９】
0006988178.tif 000010
【図１０】
0006988178.tif 000011
【図１１】
0006988178.tif 000012
【図１２】
0006988178.tif 000013
【図１３】
0006988178.tif 000014