(57)【要約】【課題】情報処理装置においてプログラムの実行中に障害が発生した場合に、被疑箇所の特定精度を向上させる。【解決手段】プログラム処理部５１２は、記憶部５１１が記憶する監視対象プログラム５２１を実行する。制御部５１４は、検知部５１３が障害発生を検知した場合、監視対象プログラム５２１の実行中に出力されるログの情報量を、第１設定値よりも増加させた第２設定値に設定して、監視対象プログラム５２１の再実行をプログラム処理部５１２に指示する。監視対象プログラム５２１の再実行中に障害発生が検知されない場合、制御部５１４は、ログの情報量を第２設定値よりも減少させた第３設定値に設定して、監視対象プログラム５２１の再実行をプログラム処理部５１２に指示する。解析部５１５は、監視対象プログラム５２１の再実行中に検知部５１３が障害発生を検知した場合、監視対象プログラム５２１から出力されるログを解析する。【選択図】図５
2020086606.tif 000002
【特許請求の範囲】
【請求項１】
監視対象プログラムを記憶する記憶部と、
前記監視対象プログラムを実行するプログラム処理部と、
前記監視対象プログラムの実行中における障害発生を検知する検知部と、
前記検知部が前記障害発生を検知した場合、前記監視対象プログラムの実行中に出力されるログの情報量を、前記障害発生を検知する前に設定されていた第１設定値よりも増加させた第２設定値に設定して、前記監視対象プログラムの再実行を前記プログラム処理部に指示し、前記ログの情報量が前記第２設定値に設定された監視対象プログラムを前記プログラム処理部が再度実行している間に障害発生が検知されない場合、前記ログの情報量を前記第２設定値よりも減少させた第３設定値に設定して、前記監視対象プログラムの再実行を前記プログラム処理部に指示する制御部と、
前記ログの情報量が前記第２設定値又は前記第３設定値に設定された監視対象プログラムを前記プログラム処理部が再度実行している間に、前記検知部が障害発生を検知した場合、前記監視対象プログラムから出力されるログを解析する解析部と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記制御部は、前記ログの情報量が前記第２設定値に設定された監視対象プログラムの再実行を指示する前に、前記検知部が前記障害発生を検知した場合、前記監視対象プログラムの障害発生箇所を示す情報を生成し、
前記プログラム処理部は、前記ログの情報量が前記第２設定値に設定された監視対象プログラムを再度実行する際、前記障害発生箇所において出力されるログの情報量を前記第２設定値になるように調整し、前記ログの情報量が前記第３設定値に設定された監視対象プログラムを再度実行する際、前記障害発生箇所において出力されるログの情報量を前記第３設定値になるように調整することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記情報処理装置は、前記ログの情報量が前記第３設定値に設定された監視対象プログラムを前記プログラム処理部が再度実行している間に障害発生が検知されない場合、前記監視対象プログラムから出力されるログを間引く処理を行うログ制御部をさらに備え、
前記解析部は、前記ログの情報量が前記第３設定値に設定された監視対象プログラムを前記プログラム処理部が再度実行し、かつ、前記ログ制御部が前記ログを間引いた際に、前記検知部が障害発生を検知した場合、間引かれたログを解析することを特徴とする請求項１又は２記載の情報処理装置。
【請求項４】
情報処理装置の動作を監視するコンピュータのための制御プログラムであって、
前記情報処理装置のプログラム処理部による監視対象プログラムの実行中に障害発生を検知し、
前記障害発生を検知した場合、前記監視対象プログラムの実行中に出力されるログの情報量を、前記障害発生を検知する前に設定されていた第１設定値よりも増加させた第２設定値に設定して、前記監視対象プログラムの再実行を前記プログラム処理部に指示し、
前記ログの情報量が増加した監視対象プログラムを前記プログラム処理部が再度実行している間に、障害発生を検知した場合、前記監視対象プログラムから出力されるログを解析し、
前記ログの情報量が前記第２設定値に設定された監視対象プログラムを前記プログラム処理部が再度実行している間に障害発生が検知されない場合、前記ログの情報量を前記第２設定値よりも減少させた第３設定値に設定して、前記監視対象プログラムの再実行を前記プログラム処理部に指示し、
前記ログの情報量が前記第２設定値又は前記第３設定値に設定された監視対象プログラムを前記プログラム処理部が再度実行している間に、障害発生を検知した場合、前記監視対象プログラムから出力されるログを解析する、
処理を前記コンピュータに実行させるための制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及び制御プログラムに関する。
【背景技術】
【０００２】
情報処理装置（コンピュータ）の運用前には、通常、基本入出力システム（Basic Input/Output System，ＢＩＯＳ）によってＰＯＳＴ（Power-On Self-Test）が実施される。ＰＯＳＴは、ＢＩＯＳの起動時に、試験プログラムであるＰＯＳＴプログラムを実行することで実施され、情報処理装置内の各部品を検出して初期化する処理を含む。
【０００３】
情報処理装置において障害が発生した場合、情報処理装置を自動的に再び立上げる再開始制御システムが知られている（例えば、特許文献１を参照）。クロックに同期して動作する論理装置における動的シングルクロックトレース方式も知られている（例えば、特許文献２を参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平７―１６８７２９号公報
【特許文献２】特開平１−１３１９３４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ＢＩＯＳの起動時にＰＯＳＴプログラムがハングアップした場合、ＰＯＳＴプログラムの実行中に出力されたＢＩＯＳログを解析することで、障害発生の被疑箇所が特定される。しかしながら、ＢＩＯＳログが不足している場合、被疑箇所の特定精度が低下する。ＰＯＳＴプログラムの実行中に出力されるＢＩＯＳログを解析する場合に限らず、他のプログラムの実行中に出力されるログを解析する場合においても、ログが不足している場合、被疑箇所の特定精度が低下する。
【０００６】
１つの側面において、本発明は、情報処理装置においてプログラムの実行中に障害が発生した場合に、被疑箇所の特定精度を向上させることを目的とする。
【課題を解決するための手段】
【０００７】
１つの案では、情報処理装置は、記憶部、プログラム処理部、検知部、制御部、及び解析部を含む。記憶部は、監視対象プログラムを記憶し、プログラム処理部は、監視対象プログラムを実行する。検知部は、監視対象プログラムの実行中における障害発生を検知する。
【０００８】
制御部は、検知部が障害発生を検知した場合、監視対象プログラムの実行中に出力されるログの情報量を、障害発生を検知する前に設定されていた第１設定値よりも増加させた第２設定値に設定して、監視対象プログラムの再実行をプログラム処理部に指示する。ログの情報量が第２設定値に設定された監視対象プログラムをプログラム処理部が再度実行している間に障害発生が検知されない場合、制御部は、ログの情報量を第２設定値よりも減少させた第３設定値に設定する。そして、制御部は、監視対象プログラムの再実行をプログラム処理部に指示する。
【０００９】
解析部は、ログの情報量が第２設定値又は第３設定値に設定された監視対象プログラムをプログラム処理部が再度実行している間に、検知部が障害発生を検知した場合、監視対象プログラムから出力されるログを解析する。
【発明の効果】
【００１０】
実施形態によれば、情報処理装置においてプログラムの実行中に障害が発生した場合に、被疑箇所の特定精度を向上させることができる。
【図面の簡単な説明】
【００１１】
【図１】ＣＰＵ及びＢＭＣを示す図である。
【図２】被疑箇所特定作業のフローチャートである。
【図３】調査作業のフローチャートである。
【図４】ＢＩＯＳログを示す図である。
【図５】情報処理装置の機能的構成図である。
【図６】制御処理のフローチャートである。
【図７】情報処理装置のハードウェア構成図である。
【図８】ＢＭＣのハードウェア構成図である。
【図９】ＣＰＵの機能的構成図である。
【図１０】ＢＭＣの機能的構成図である。
【図１１】診断レベルが１のＢＩＯＳログを示す図である。
【図１２】診断レベルがＭＡＸのＢＩＯＳログを示す図である。
【図１３】切替制御処理のフローチャートである。
【図１４】間引かれたＢＩＯＳログを示す図である。
【図１５】ハングアップ箇所解析処理のフローチャートである。
【図１６】切替処理のフローチャートである。
【図１７】ログ解析処理のフローチャートである。
【図１８】ログ調整処理のフローチャートである。
【図１９】診断開始レベル設定処理のフローチャートである。
【図２０】解析作業のフローチャートである。
【発明を実施するための形態】
【００１２】
以下、図面を参照しながら、実施形態を詳細に説明する。
図１は、情報処理装置内のＣＰＵ（Central Processing Unit）及びＢＭＣ（Baseboard Management Controller）の例を示している。図１の情報処理装置は、ＣＰＵ１０１及びＢＭＣ１０２を含む。
【００１３】
ＣＰＵ１０１は、情報処理装置の電源投入時にＢＩＯＳプログラムを実行することで、ログ通知部１１１及びＰＯＳＴコード送信部１１２として動作する。ＢＩＯＳの起動時に、ＣＰＵ１０１は、モジュール１１４−１〜モジュール１１４−Ｎ（Ｎは２以上の整数）を含むＰＯＳＴプログラム１１３を実行することで、ＰＯＳＴを実施する。モジュール１１４−１〜モジュール１１４−Ｎとしては、例えば、以下のようなものが用いられる。
（ａ）メモリ初期化／テストモジュール
（ｂ）ＣＰＵ初期化／テストモジュール
（ｃ）チップセット初期化／テストモジュール
（ｄ）レガシーデバイス初期化／テストモジュール
（ｅ）他デバイス初期化／テストモジュール
（ｆ）データ構築モジュール
（ｇ）ＲＡＳ（Reliability Availability Serviceability）機能初期化モジュール
【００１４】
メモリ初期化／テストモジュールは、メモリを初期化してテストするモジュールであり、ＣＰＵ初期化／テストモジュールは、ＣＰＵ１０１を初期化してテストするモジュールである。チップセット初期化／テストモジュールは、チップセットを初期化してテストするモジュールである。レガシーデバイス初期化／テストモジュールは、レガシーデバイスを初期化してテストするモジュールであり、他デバイス初期化／テストモジュールは、その他のデバイスを初期化してテストするモジュールである。
【００１５】
データ構築モジュールは、ＯＳ（Operating System）が利用する、ＡＣＰＩ（Advanced Configuration and Power Interface）、ＳＭＢＩＯＳ（System Management BIOS）等のデータを構築するモジュールである。ＲＡＳ機能初期化モジュールは、ＲＡＳ機能を初期化するモジュールである。
【００１６】
ＢＭＣ１０２は、ＢＩＯＳログ保存領域１２１、イベントログ保存領域１２２、ハングアップ検知部１２３、及びＰＯＳＴコード保存領域１２４を含み、情報処理装置に含まれるハードウェアを管理し、情報処理装置の動作を監視する。
【００１７】
ログ通知部１１１は、ＰＯＳＴプログラム１１３の実行中に出力されるＢＩＯＳログを、シリアルポート経由でＢＭＣ１０２へ転送し、ＢＭＣ１０２は、受信したＢＩＯＳログをＢＩＯＳログ保存領域１２１に格納する。ログ通知部１１１は、シリアルポートの設定パラメータ１１５を変更することで、シリアルポートの設定を変更することができる。
【００１８】
ＰＯＳＴプログラム１１３の実行中に何らかの障害が発生したことにより、ＰＯＳＴプログラム１１３がハングアップした場合、ハングアップ検知部１２３は、ＢＩＯＳのハングアップを検知する。そして、ハングアップ検知部１２３は、ＢＩＯＳがハングアップしたことを示すイベントログを、イベントログ保存領域１２２に格納する。保守員又は開発者は、ＢＭＣ１０２が提供するユーザインタフェース（User Interface，ＵＩ）等によって、イベントログ保存領域１２２に格納されたイベントログを確認することができる。
【００１９】
ＰＯＳＴコード送信部１１２は、ＰＯＳＴプログラム１１３の実行中に、開発者があらかじめ設定した箇所で、ＢＩＯＳの立ち上がり状況を示すＰＯＳＴコードをＢＭＣ１０２へ転送する。ＰＯＳＴコードは、ＰＯＳＴがどこまで実施されたかを示すコードである。図１では、モジュール１１４−ｉ及びモジュール１１４−（Ｎ−１）の先頭位置で、ＰＯＳＴコードが出力されている。
【００２０】
ＢＭＣ１０２は、受信したＰＯＳＴコードをＰＯＳＴコード保存領域１２４に格納する。ＰＯＳＴコード保存領域１２４内のＰＯＳＴコードは、ＰＯＳＴの進行に伴って最新のＰＯＳＴコードに更新され、障害発生によりＢＩＯＳが正常に立ち上がらなかった場合に、保守員又は開発者がおおまかな被疑範囲を特定するために用いられる。
【００２１】
例えば、ＰＯＳＴコード保存領域１２４内にモジュール１１４−ｉのＰＯＳＴコードが残ったままで、ＢＩＯＳがハングアップした場合を想定する。この場合、モジュール１１４−ｉのＰＯＳＴコードは正常に送信されたが、モジュール１１４−（Ｎ−１）のＰＯＳＴコードは正常に送信されなかったことが分かる。したがって、モジュール１１４−ｉの実行開始からモジュール１１４−（Ｎ−１）の実行開始までの間に、ＢＩＯＳがハングアップしていることが分かる。
【００２２】
図２は、図１の情報処理装置においてＢＩＯＳのハングアップが検知された場合に、保守員が行う被疑箇所特定作業の例を示すフローチャートである。まず、保守員は、障害が発生した情報処理装置の各種ログを採取する（ステップ２０１）。採取される各種ログには、ＢＩＯＳログ及びイベントログが含まれる。
【００２３】
次に、保守員は、ログ解析ツールを用いて各種ログを解析し（ステップ２０２）、ログ解析ツールによって被疑箇所を特定できるか否かを判断する（ステップ２０３）。被疑箇所を特定できる場合（ステップ２０３，ＹＥＳ）、保守員は、ログ解析ツールを用いて被疑箇所を表示する（ステップ２０５）。一方、被疑箇所を特定できない場合（ステップ２０３，ＮＯ）、保守員は、開発部の開発者に調査を依頼する（ステップ２０４）。
【００２４】
図３は、開発者が行う調査作業の例を示すフローチャートである。まず、開発者は、保守員によって採取された各種ログを手作業で解析し（ステップ３０１）、被疑箇所を特定できるか否かを判断する（ステップ３０２）。開発者は、ログの情報量が十分である場合、被疑箇所を特定できると判断し、ログが不足している場合、被疑箇所を特定できないと判断する。被疑箇所を特定できる場合（ステップ３０２，ＹＥＳ）、開発者は、被疑箇所を特定する（ステップ３０６）。
【００２５】
一方、被疑箇所を特定できない場合（ステップ３０２，ＮＯ）、開発者は、被疑箇所特定用にＢＩＯＳログを強化したＢＩＯＳプログラムを作成する（ステップ３０３）。この場合、開発者は、ＢＩＯＳログの詳細度を高くして情報量を増加させることで、ＢＩＯＳログを強化することができる。
【００２６】
次に、開発者は、ＢＩＯＳログを強化したＢＩＯＳプログラムを情報処理装置に実行させることで再現試験を行い、強化されたＢＩＯＳログを採取する（ステップ３０４）。そして、開発者は、強化されたＢＩＯＳログを手作業で解析し（ステップ３０５）、ステップ３０２以降の作業を繰り返す。ステップ３０２〜ステップ３０５の作業は、被疑箇所が特定されるまで繰り返される。
【００２７】
ところで、ＢＩＯＳの起動時には、ＵＳＢ（Universal Serial Bus）ポート等の高速デバイスの初期化が完了しないため、ＢＩＯＳログがシリアルポート経由で出力されることが多い。シリアルポートの転送速度は１００ｋｂｐｓ程度であり、数ＧＨｚ程度のクロック周波数によって表されるＣＰＵの命令実行速度は、シリアルポートの転送速度の数万倍にもなる。
【００２８】
このため、ＢＩＯＳの起動時間は、ＢＩＯＳログがシリアルポート経由でＢＭＣへ転送される転送時間に依存し、出力されるＢＩＯＳログの情報量に比例して長くなる。そこで、ＢＩＯＳは、最低限のＢＩＯＳログのみを出力するように設計されている。
【００２９】
しかし、ＢＩＯＳがハングアップした場合、最低限のＢＩＯＳログのみでは、ＢＩＯＳログの不足により、被疑箇所を特定できないことがある。また、最低限のＢＩＯＳログから、例えば、被疑箇所をモジュールまで特定できた場合であっても、ＢＩＯＳログの情報量が十分でないため、特定したモジュールに関連するどの部品が原因であるかを特定できない等、被疑箇所の特定精度が低くなることがある。この場合、根本的な原因を解明するために、開発者が被疑箇所特定用のＢＩＯＳログを強化したＢＩＯＳを作成して、再現試験を行うことが多い。
【００３０】
ＢＩＯＳの起動時に実行されるＰＯＳＴプログラム１１３には、他デバイス初期化／テストモジュールが含まれている。他デバイス初期化／テストモジュールとしては、例えば、ＰＣＩ（Peripheral Component Interconnect）カードを初期化してテストする、PCI Bus Scanモジュールが用いられる。PCI Bus Scanモジュールでは、多量のＢＩＯＳログが出力されないように、あらかじめＢＩＯＳログの情報量が所定量の初期値に調整されている。
【００３１】
図４は、ＰＣＩカードの故障、又はＰＣＩカードが搭載されるＰＣＩスロットの故障によって、PCI Bus Scanモジュールの実行中にＢＩＯＳがハングアップした場合に出力される、ＢＩＯＳログの例を示している。ログ解析ツールは、図４のＢＩＯＳログを以下のような手順で解析することで、障害発生の原因となっているＰＣＩカードの搭載箇所まで、被疑箇所を絞り込むことができる。
（Ｐ１）ログ解析ツールは、採取されたＢＩＯＳログから、PCI Bus Scanモジュールの実行中にハングアップした箇所を特定する。
【００３２】
図４の例では、スキャン対象のＰＣＩデバイスの識別情報が、“XXXX:XX:XX:XX scanning...”という形式で出力されている。そのＰＣＩデバイスのスキャン中にハングアップが発生した場合、それ以降のＢＩＯＳログが出力されないため、最後に出力されたＢＩＯＳログがハングアップした箇所を示している。
（Ｐ２）ログ解析ツールは、最後に出力されたＢＩＯＳログから、ＰＣＩデバイスの識別情報を取得する。
【００３３】
図４の最終行のＢＩＯＳログからは、“Segment:0000, Bus:03, Device:0a, Function:00”という情報が、ＰＣＩデバイスの識別情報として取得される。
（Ｐ３）ログ解析ツールは、取得したＰＣＩデバイスの識別情報と情報処理装置の構成情報とを照合して、被疑箇所を絞り込む。
【００３４】
“Segment:0000, Bus:03, Device:0a, Function:00”と情報処理装置の構成情報とを照合することで、障害発生の原因となっているＰＣＩカードの搭載箇所が特定される。
【００３５】
しかし、この方法では、ＰＣＩカードの搭載箇所が特定されたとしても、ＰＣＩカード自体の故障なのか、そのＰＣＩカードが搭載されているＰＣＩスロットの故障なのかを判別することは難しく、被疑箇所の特定精度は低い。被疑箇所がＰＣＩカード又はＰＣＩスロットのいずれであるかを特定するためには、ＰＣＩカード及びＰＣＩスロットそれぞれのレジスタに格納されている情報（レジスタ情報）を参照することが望ましい。
【００３６】
ＢＩＯＳログにレジスタ情報を追加して情報量を増加させれば、被疑箇所がＰＣＩカード又はＰＣＩスロットのいずれであるかを特定することが可能になり、被疑箇所の特定精度は向上する。しかし、ＢＩＯＳログの情報量が増加すると、ＢＩＯＳの起動時間が長くなってしまう。
【００３７】
図５は、実施形態の情報処理装置の機能的構成例を示している。図５の情報処理装置５０１は、記憶部５１１、プログラム処理部５１２、検知部５１３、制御部５１４、及び解析部５１５を含む。記憶部５１１は、監視対象プログラム５２１を記憶し、プログラム処理部５１２は、監視対象プログラム５２１を実行する。
【００３８】
図６は、図５の情報処理装置５０１が行う制御処理の例を示すフローチャートである。まず、検知部５１３は、監視対象プログラム５２１の実行中における障害発生を検知する（ステップ６０１）。制御部５１４は、検知部５１３が障害発生を検知した場合、監視対象プログラム５２１の実行中に出力されるログの情報量を、障害発生を検知する前に設定されていた第１設定値よりも増加させた第２設定値に設定して、監視対象プログラム５２１の再実行をプログラム処理部５１２に指示する（ステップ６０２）。
【００３９】
ログの情報量が第２設定値に設定された監視対象プログラム５２１をプログラム処理部５１２が再度実行している間に、検知部５１３が障害発生を検知した場合、解析部５１５は、監視対象プログラム５２１から出力されるログを解析する（ステップ６０４）。
【００４０】
ログの情報量が第２設定値に設定された監視対象プログラム５２１をプログラム処理部５１２が再度実行している間に、監視対象プログラム５２１の実行タイミングによって、障害発生が検知されない場合、制御部５１４は、ログの情報量を第２設定値よりも減少させた第３設定値に設定する（ステップ６０３）。そして、制御部５１４は、監視対象プログラム５２１の再実行をプログラム処理部５１２に指示する。
【００４１】
ログの情報量が第３設定値に設定された監視対象プログラム５２１をプログラム処理部５１２が再度実行している間に、検知部５１３が障害発生を検知した場合、解析部５１５は、監視対象プログラム５２１から出力されるログを解析する（ステップ６０４）。
【００４２】
図５の情報処理装置５０１によれば、情報処理装置においてプログラムの実行中に障害が発生した場合に、被疑箇所の特定精度を向上させることができる。
【００４３】
図７は、図４の情報処理装置５０１のハードウェア構成例を示している。図７の情報処理装置７０１は、ＣＰＵ７１１（プロセッサ）、メモリ７１２、不揮発性メモリ７１３、拡張スロット７１４−１〜拡張スロット７１４−Ｍ（Ｍは２以上の整数）、インタフェース７１７、及びシリアルポート７１８を含む。これらの構成要素はバス７２０により互いに接続されている。さらに、情報処理装置７０１は、拡張装置７１５−１〜拡張装置７１５−Ｍ、外部記憶装置７１６、及びＢＭＣ７１９を含む。
【００４４】
拡張装置７１５−１〜拡張装置７１５−Ｍは、例えば、拡張カードであり、拡張スロット７１４−１〜拡張スロット７１４−Ｍにそれぞれ搭載されている。外部記憶装置７１６は、拡張装置７１５−２に接続されている。ＢＭＣ７１９は、インタフェース７１７及びシリアルポート７１８に接続されている。
【００４５】
メモリ７１２は、例えば、ＲＡＭ（Random Access Memory）等の半導体メモリである。不揮発性メモリ７１３は、図５の記憶部５１１に対応し、ＲＯＭ（Read Only Memory）、フラッシュメモリ等の半導体メモリである。不揮発性メモリ７１３は、ＢＩＯＳプログラムを含むＢＩＯＳイメージ７２１を記憶する。ＣＰＵ７１１は、プログラム処理部５１２として動作し、ＢＩＯＳプログラムを実行する。
【００４６】
拡張装置７１５−ｊ（ｊ＝１，３〜Ｍ）は、ビデオカード、サウンドカード、ネットワークインタフェース、ストレージインタフェース等である。外部記憶装置７１６は、例えば、磁気ディスク装置、光ディスク装置、光磁気ディスク装置、テープ装置等である。外部記憶装置７１６は、ハードディスクドライブであってもよい。メモリ７１２、不揮発性メモリ７１３、及び外部記憶装置７１６は、コンピュータ読み取り可能な記録媒体であり、かつ、物理的な（非一時的な）記録媒体である。
【００４７】
ＢＭＣ７１９は、情報処理装置７０１に含まれるハードウェアを管理し、情報処理装置７０１の動作を監視する制御装置である。情報処理装置７０１に含まれるハードウェアは、例えば、サーバのシステムボード等に対応する。インタフェース７１７及びシリアルポート７１８は通信インタフェースであり、ＣＰＵ７１１は、インタフェース７１７及びシリアルポート７１８を介して、ＢＭＣ７１９と通信する。
【００４８】
図８は、図７のＢＭＣ７１９のハードウェア構成例を示している。図８のＢＭＣ７１９は、情報処理装置７０１の動作を監視するコンピュータであり、ＣＰＵ８１１、メモリ８１２、不揮発性メモリ８１３、インタフェース８１４、及びシリアルポート８１５を含む。これらの構成要素はバス８１６により互いに接続されている。
【００４９】
メモリ８１２は、例えば、ＲＡＭ等の半導体メモリである。不揮発性メモリ８１３は、ＲＯＭ、フラッシュメモリ等の半導体メモリであり、ＢＭＣプログラムを含むＢＭＣイメージ８２１を記憶する。ＣＰＵ８１１は、ＢＭＣプログラムを実行することにより、図５の検知部５１３、制御部５１４、及び解析部５１５として動作する。メモリ８１２及び不揮発性メモリ８１３は、コンピュータ読み取り可能な記録媒体であり、かつ、物理的な（非一時的な）記録媒体である。
【００５０】
インタフェース８１４及びシリアルポート８１５は通信インタフェースであり、ＣＰＵ８１１は、インタフェース８１４及びシリアルポート８１５を介して、ＣＰＵ７１１と通信する。
【００５１】
図９は、図７のＣＰＵ７１１の機能的構成例を示している。図９のＣＰＵ７１１は、情報処理装置の電源投入時にＢＩＯＳプログラムを実行することで、終了通知部９１２、監視部９１３、ログ制御部９１４、ログ通知部９１５、及びＰＯＳＴコード送信部９１６として動作する。ＢＩＯＳの起動時に、ＣＰＵ７１１は、モジュール１１４−１〜モジュール１１４−Ｎを含むＰＯＳＴプログラム１１３を実行することで、ＰＯＳＴを実施する。ＰＯＳＴプログラム１１３は、図５の監視対象プログラム５２１に対応し、図７のＢＩＯＳイメージ７２１に含まれている。
【００５２】
ＰＯＳＴプログラム１１３の実行中にＢＩＯＳのハングアップが検知された場合、ＢＭＣ７１９によってＢＩＯＳが再起動され、ＢＩＯＳ及びＢＭＣ７１９は、障害発生の被疑箇所を特定するために診断処理を行う。診断処理では、各モジュール１１４−ｉ（ｉ＝１〜Ｎ）から出力されるＢＩＯＳログの情報量を変更して、ＰＯＳＴプログラム１１３が再度実行される。
【００５３】
診断開始レベル９１１は、診断処理において各モジュール１１４−ｉから出力されるＢＩＯＳログの情報量を示す指標である。診断開始レベル９１１は、例えば、図７の不揮発性メモリ７１３に格納される。ＣＰＵ７１１は、各モジュール１１４−ｉの実行時に診断開始レベル９１１を参照することで、各モジュール１１４−ｉから出力されるＢＩＯＳログの情報量を調整する。
【００５４】
終了通知部９１２は、診断処理が正常に終了したとき、インタフェース７１７を介して正常終了をＢＭＣ７１９へ通知する。監視部９１３は、ＰＯＳＴプログラム１１３の実行中に各モジュール１１４−ｉの実行状況を監視し、診断開始レベル９１１を設定する。
【００５５】
ログ制御部９１４は、ＢＭＣ７１９から取得した情報に従って、ＰＯＳＴプログラム１１３の実行中に出力されるＢＩＯＳログを間引く処理を行う。ログ通知部９１５は、ＰＯＳＴプログラム１１３の実行中に出力されるＢＩＯＳログを、シリアルポート７１８を介してＢＭＣ７１９へ転送する。ログ通知部９１５は、設定パラメータ９１７を変更することで、シリアルポート７１８の設定を変更することができる。ＰＯＳＴコード送信部９１６は、ＰＯＳＴプログラム１１３の実行中に、あらかじめ設定された箇所で、インタフェース７１７を介してＰＯＳＴコードをＢＭＣ７１９へ転送する。
【００５６】
図１０は、図８のＢＭＣ７１９の機能的構成例を示している。図１０のＢＭＣ７１９は、設定済みフラグ１０１１、ハングアップ箇所情報１０１２、診断レベル１０１３、及び終了フラグ１０１４を記憶する。これらの情報は、例えば、図８の不揮発性メモリ８１３に格納される。
【００５７】
設定済みフラグ１０１１は、図９の設定パラメータ９１７が変更済みであるか否かを示す。設定パラメータ９１７が変更済みである場合、設定済みフラグ１０１１は論理“１”に設定され、設定パラメータ９１７が変更されていない場合、設定済みフラグ１０１１は論理“０”に設定される。
【００５８】
ハングアップ箇所情報１０１２は、ＢＩＯＳのハングアップが検知された場合におけるＰＯＳＴプログラム１１３の障害発生箇所を示す。ハングアップ箇所情報１０１２としては、ＢＩＯＳのハングアップが検知されたときのモジュール１１４−ｉの識別情報、ＰＯＳＴコード等が用いられる。
【００５９】
診断レベル１０１３は、診断処理において各モジュール１１４−ｉから出力されるＢＩＯＳログの情報量の設定値を示す指標である。診断レベル１０１３としては、例えば、０〜ＭＡＸの範囲の整数が用いられる。ＭＡＸは１以上の整数であり、診断レベル１０１３の最大値を表す。ＢＩＯＳの通常起動時には、診断レベル１０１３が初期値である０に設定されている。
【００６０】
診断レベル１０１３の値が大きくなるほど、ＢＩＯＳログの詳細度が高くなり、その情報量が多くなる。例えば、診断レベル１０１３が０である場合、初期値の情報量のＢＩＯＳログが出力され、診断レベル１０１３が１以上である場合、初期値よりも詳細なＢＩＯＳログが出力される。ＢＩＯＳログに、例えば、情報処理装置７０１内の各部品のレジスタから取得されたレジスタ情報を含めたり、レジスタ情報の個数を増やしたりすることで、ＢＩＯＳログの詳細度を高めることができる。
【００６１】
例えば、診断レベル１０１３が０のＢＩＯＳログの情報量は、第１設定値に対応し、診断レベル１０１３がＭＡＸのＢＩＯＳログの情報量は、第２設定値に対応し、診断レベル１０１３が１〜ＭＡＸ−１のＢＩＯＳログの情報量は、第３設定値に対応する。
【００６２】
図９のモジュール１１４−ｉは、拡張スロット７１４−ｊに搭載された拡張装置７１５−ｊの試験を実行するモジュールであってもよい。この場合、診断レベル１０１３がＭＡＸのＢＩＯＳログは、拡張装置７１５−ｊのレジスタから取得されたレジスタ情報と、拡張スロット７１４−ｊのレジスタから取得されたレジスタ情報とを含む。拡張装置７１５−ｊがＰＣＩカードである場合、拡張スロット７１４−ｊはＰＣＩスロットである。
【００６３】
例えば、ＢＩＯＳの通常起動時において、ＰＯＳＴプログラム１１３に含まれるPCI Bus Scanモジュールの実行中には、図４に示したようなＢＩＯＳログが、診断レベル１０１３が０のＢＩＯＳログとして出力される。
【００６４】
図１１は、診断処理においてＢＩＯＳが正常に起動した場合に、PCI Bus Scanモジュールの実行中に出力される、診断レベル１０１３が１のＢＩＯＳログの例を示している。行番号“１０００”の情報は、図４のＢＩＯＳログに含まれているＰＣＩデバイスの識別情報を表す。行番号“１００１”〜行番号“１００４”の情報は、そのＰＣＩデバイスに関するスキャン対象のレジスタの識別情報を表し、図４のＢＩＯＳログには含まれていない。
【００６５】
図１２は、診断処理においてＢＩＯＳが正常に起動した場合に、PCI Bus Scanモジュールの実行中に出力される、診断レベル１０１３がＭＡＸのＢＩＯＳログの例を示している。行番号“３０００”の情報は、図４及び図１１のＢＩＯＳログに含まれているＰＣＩデバイスの識別情報を表す。行番号“３００１”及び行番号“３０１８”の情報は、それぞれ、図１１の行番号“１００１”及び行番号“１００２”の情報と同様である。行番号“３００２”〜行番号“３０１７”の情報は、スキャン対象の各レジスタに格納されているレジスタ情報を表し、図１１のＢＩＯＳログには含まれていない。
【００６６】
このように、診断レベル１０１３の値が大きくなるにつれて、レジスタの識別情報を追加したり、そのレジスタに格納されているレジスタ情報を追加したりして、ＢＩＯＳログに含まれる情報の種類を増やすことで、その情報量を増加させることができる。
【００６７】
なお、開発者は、診断レベル１０１３が０〜ＭＡＸのそれぞれのＢＩＯＳログにどのような情報を含めるかを決定することができる。例えば、診断レベル１０１３の値が大きくなるにつれて、各部品に含まれるレジスタのうち、レジスタ情報を取得する取得対象のレジスタの個数を増加させてもよい。また、特定の部品のみについて、診断レベル１０１３の値が大きくなるにつれて、取得対象のレジスタの個数を増加させてもよい。
【００６８】
ＢＩＯＳのハングアップが検知されたときに、図１２の行番号“３００２”〜行番号“３０１７”のうち、いずれかの行番号までのレジスタ情報が出力されていることがある。この場合、出力されている各レジスタ情報を解析することで、被疑箇所がＰＣＩカード又はＰＣＩスロットのいずれであるかを特定することが可能になる。
【００６９】
また、ＢＩＯＳが予期しない値がレジスタに格納されたことによって、ＢＩＯＳがハングアップした場合、ＰＣＩカード又はＰＣＩスロットの交換により原因が除去されることもあるが、ＢＩＯＳ自体に問題がある可能性もある。この場合、レジスタ情報を含むＢＩＯＳログを解析することで、障害発生箇所及び障害発生の原因をより正確に特定できるため、ＢＩＯＳ修正の必要性を判定することが可能になる。
【００７０】
診断レベル１０１３は、診断処理の開始時に、図９の診断開始レベル９１１として設定される。終了フラグ１０１４は、ＢＩＯＳが正常に起動したか否かを示す。ＢＩＯＳが正常に起動した場合、終了フラグ１０１４は論理“１”に設定され、ＢＩＯＳが正常に起動していない場合、終了フラグ１０１４は論理“０”に設定される。
【００７１】
ＢＭＣ７１９は、診断ログ保存領域１０１５、ＢＩＯＳログ保存領域１０１６、イベントログ保存領域１０１７、及びＰＯＳＴコード保存領域１０２１を含む。これらの保存領域は、例えば、図８のメモリ８１２内に設けられる。
【００７２】
診断ログ保存領域１０１５及びＢＩＯＳログ保存領域１０１６には、図９のログ通知部９１５から受信したＢＩＯＳログが格納される。診断ログ保存領域１０１５には、診断レベル１０１３が１以上である場合のＢＩＯＳログが、診断ログとして格納され、ＢＩＯＳログ保存領域１０１６には、診断レベル１０１３が０である場合のＢＩＯＳログが格納される。イベントログ保存領域１０１７には、イベントログが格納され、ＰＯＳＴコード保存領域１０２１には、ＰＯＳＴコード送信部９１６から受信したＰＯＳＴコードが格納される。
【００７３】
ＣＰＵ８１１は、ＢＭＣプログラムを実行することにより、切替部１０１８、ログ解析部１０１９、ハングアップ検知部１０２０、ハングアップ箇所解析部１０２２、及び判定部１０２３として動作する。ハングアップ検知部１０２０及びログ解析部１０１９は、図５の検知部５１３及び解析部５１５にそれぞれ対応し、切替部１０１８、ハングアップ箇所解析部１０２２、及び判定部１０２３は、制御部５１４に対応する。
【００７４】
ハングアップ検知部１０２０は、ＰＯＳＴプログラム１１３がハングアップした場合、ＢＩＯＳのハングアップを検知し、ＢＩＯＳがハングアップしたことを示すイベントログを、イベントログ保存領域１０１７に格納する。
【００７５】
例えば、ハングアップ検知部１０２０は、ウォッチドッグタイマの機能を有し、ＢＩＯＳは、ＰＯＳＴ開始時に、ウォッチドッグタイマに所定時間を設定して、カウントを開始させる。そして、ＢＩＯＳは、ＰＯＳＴの実施中において、定期的にウォッチドッグタイマをリセットする。最後にウォッチドッグタイマがリセットされてから所定時間が経過しても、ウォッチドッグタイマがリセットされない場合、ウォッチドッグタイマがタイムアウトする。このため、ハングアップ検知部１０２０は、ウォッチドッグタイマのタイムアウトを検出することで、ＢＩＯＳのハングアップを検知することができる。
【００７６】
ハングアップ箇所解析部１０２２は、ＢＩＯＳログ保存領域１０１６に格納されたＢＩＯＳログを解析することで、障害発生箇所を特定し、特定した障害発生箇所を示すハングアップ箇所情報１０１２を生成する。
【００７７】
判定部１０２３は、ＢＩＯＳのハングアップが検知された場合、ＢＩＯＳの通常起動中に発生したハングアップ又は診断処理中に再発したハングアップのいずれであるかを判定する。また、判定部１０２３は、ＢＩＯＳのハングアップが検知されない場合、終了フラグ１０１４に基づいて、ＢＩＯＳが正常に起動したか否かを判定する。
【００７８】
切替部１０１８は、ＢＩＯＳの通常起動中にハングアップが検知された場合、診断レベル１０１３を０からＭＡＸに変更することで、ＢＩＯＳログの情報量の設定値を変更し、ＣＰＵ７１１に対してＢＩＯＳの再起動を指示する。
【００７９】
診断レベル１０１３がＭＡＸの状態におけるＢＩＯＳの再起動中にハングアップが検知されない場合、切替部１０１８は、診断レベル１０１３をＭＡＸから１まで１ずつデクリメントすることで、ＢＩＯＳログの情報量を段階的に減少させる。そして、切替部１０１８は、診断レベル１０１３がＭＡＸ−１〜１の範囲の値に設定された各段階において、ＣＰＵ７１１に対してＢＩＯＳの再起動を指示する。
【００８０】
ログ解析部１０１９は、診断レベル１０１３がＭＡＸ〜１のいずれかの値に設定された状態におけるＢＩＯＳの再起動中に、ハングアップが検知された場合、診断ログ保存領域１０１５に格納された診断ログを解析することで、被疑箇所を特定する。
【００８１】
図７の情報処理装置７０１によれば、ＢＩＯＳの起動時にハングアップが検知された場合、ＢＭＣ７１９によってＢＩＯＳが再起動され、ＢＩＯＳ及びＢＭＣ７１９が連携して診断処理を行うことで、障害の再現が試行される。
【００８２】
診断処理において、まず、ＢＩＯＳログの情報量が最大に設定され、最も詳細なＢＩＯＳログが採取される。このとき、タイミング障害により、最初に発生した障害が再現されない場合であっても、ＢＩＯＳログの情報量を段階的に減少させながら再起動を繰り返すことで、情報処理装置７０１の動作が障害発生時の動作に近づいていく。したがって、いずれかの段階で障害が再現され、最初の起動時よりも詳細なＢＩＯＳログが採取されるため、被疑箇所を高い精度で特定することが可能になる。
【００８３】
また、詳細なＢＩＯＳログをＢＭＣ７１９によって解析することで、保守員又は開発者の手を介さずに、被疑箇所を自動的に特定することができる。
【００８４】
図９の終了通知部９１２、監視部９１３、及びログ制御部９１４の一部又は全部を、ＢＭＣ７１９に実装してもよい。この場合、ＣＰＵ８１１は、ＢＭＣプログラムを実行することにより、終了通知部９１２、監視部９１３、及びログ制御部９１４として動作する。
【００８５】
また、図１０の切替部１０１８、ログ解析部１０１９、ハングアップ箇所解析部１０２２、及び判定部１０２３の一部又は全部を、ＣＰＵ７１１に実装してもよい。この場合、ＣＰＵ７１１は、ＢＩＯＳプログラムを実行することにより、切替部１０１８、ログ解析部１０１９、ハングアップ箇所解析部１０２２、及び判定部１０２３として動作する。
【００８６】
図１３は、図１０のＢＭＣ７１９が行う切替制御処理の例を示すフローチャートである。まず、ハングアップ検知部１０２０は、ＢＩＯＳのハングアップを検知したか否かをチェックする（ステップ１３０１）。ＢＩＯＳのハングアップが検知された場合（ステップ１３０１，ＹＥＳ）、ハングアップ検知部１０２０は、ＢＩＯＳがハングアップしたことを示すイベントログを、イベントログ保存領域１０１７に格納する。そして、判定部１０２３は、診断レベル１０１３の値をチェックする（ステップ１３０２）。
【００８７】
診断レベル１０１３が０である場合、ＢＩＯＳの通常起動中に発生したハングアップと判定され、診断レベル１０１３が１以上である場合、診断処理中に再発したハングアップであると判定される。
【００８８】
診断レベル１０１３が０である場合（ステップ１３０２，ＹＥＳ）、ハングアップ箇所解析部１０２２が起動してハングアップ箇所解析処理を行い（ステップ１３０４）、切替部１０１８は、切替処理を行う（ステップ１３０５）。一方、診断レベル１０１３が１以上である場合（ステップ１３０２，ＮＯ）、ログ解析部１０１９が起動してログ解析処理を行う（ステップ１３０３）。
【００８９】
ＢＩＯＳのハングアップが検知されない場合（ステップ１３０１，ＮＯ）、判定部１０２３は、診断レベル１０１３の値をチェックする（ステップ１３０６）。診断レベル１０１３が０である場合（ステップ１３０６，ＹＥＳ）、ハングアップ検知部１０２０は、ステップ１３０１の処理を繰り返す。
【００９０】
一方、診断レベル１０１３が１以上である場合（ステップ１３０６，ＮＯ）、判定部１０２３は、終了フラグ１０１４の値をチェックする（ステップ１３０７）。終了フラグ１０１４が論理“０”である場合（ステップ１３０７，ＮＯ）、ハングアップ検知部１０２０は、ステップ１３０１の処理を繰り返す。
【００９１】
一方、終了フラグ１０１４が論理“１”である場合（ステップ１３０７，ＹＥＳ）、判定部１０２３は、診断処理においてＢＩＯＳのハングアップが再発しなかったと判定する。そこで、判定部１０２３は、診断レベル１０１３の値をチェックする（ステップ１３０８）。診断レベル１０１３が２以上である場合（ステップ１３０８，ＮＯ）、切替部１０１８は、切替処理を行う（ステップ１３０５）。
【００９２】
一方、診断レベル１０１３が１である場合（ステップ１３０８，ＹＥＳ）、判定部１０２３は、ＢＩＯＳログの情報量が段階的に減少することで所定量に到達したと判定する。そこで、判定部１０２３は、設定済みフラグ１０１１の値をチェックする（ステップ１３０９）。設定済みフラグ１０１１が論理“０”である場合（ステップ１３０９，ＮＯ）、判定部１０２３は、図９のログ制御部９１４に対して、ＢＩＯＳログの削減を指示する（ステップ１３１０）。そして、切替部１０１８は、切替処理を行う（ステップ１３０５）。
【００９３】
ログ制御部９１４は、判定部１０２３からＢＩＯＳログの削減を指示された場合、次回のＰＯＳＴプログラム１１３の実行中に出力されるＢＩＯＳログを間引くことで、シリアルポート７１８へ出力されるＢＩＯＳログの情報量を削減する。例えば、ログ制御部９１４は、ＢＩＯＳログのテキストがＫ文字（Ｋは１以上の整数）おきに出力されるように、テキストを間引くことで、ログの情報量を削減することができる。
【００９４】
これにより、ＢＩＯＳログがシリアルポート７１８経由でＢＭＣ７１９へ転送される転送時間が削減されるため、情報処理装置７０１の動作が障害発生時の動作に近づき、障害が再現される可能性が高くなる。障害が再現された場合は、間引かれたＢＩＯＳログが採取される。
【００９５】
図１４は、PCI Bus Scanモジュールの実行中に障害が再現された場合の間引かれたＢＩＯＳログの例を示している。設定パラメータ９１７が変更される直前には、図１１に示した診断レベル１０１３が１のＢＩＯＳログが正常に採取されている。
【００９６】
図１４の行番号“１”の“DanssLgSat”は、図１１の行番号“１”の“Diagnosis Log Start”が１文字おきに出力されたテキストである。同様に、図１４の行番号“２”、行番号“３”、行番号“１０００”、及び行番号“１００１”のテキストは、図１１の行番号“２”、行番号“３”、行番号“１０００”、及び行番号“１００１”のテキストがそれぞれ１文字おきに出力されたテキストである。
【００９７】
図１４のＢＩＯＳログは、ＢＩＯＳのハングアップによって、行番号“１００１”で途切れている。したがって、図１１のＢＩＯＳログと図１４のＢＩＯＳログとを対応付けて解析することで、図４のＢＩＯＳログよりも詳細な障害情報を取得することができ、被疑箇所を高い精度で特定することが可能になる。
【００９８】
設定済みフラグ１０１１が論理“１”である場合（ステップ１３０９，ＹＥＳ）、判定部１０２３は、ＢＩＯＳログを間引いても障害が再現されなかったと判定する。そこで、判定部１０２３は、障害が再現されなかったことを示すイベントログを、イベントログ保存領域１０１７に格納して、処理を終了する。
【００９９】
なお、ログ制御部９１４は、ＢＩＯＳログを間引く処理を１回のみ行う代わりに、複数回繰り返しても構わない。この場合、出力されるＢＩＯＳログのテキストは、Ｋ文字おき、Ｋ＋１文字おき、Ｋ＋２文字おきのように、段階的に減少していく。また、ログ制御部９１４は、シリアルポート７１８のボーレートを併せて設定することで、シリアルポート７１８の転送時間をより細かく調整しても構わない。
【０１００】
図１５は、図１３のステップ１３０４におけるハングアップ箇所解析処理の例を示すフローチャートである。まず、ハングアップ箇所解析部１０２２は、ＢＩＯＳログ保存領域１０１６に格納されたＢＩＯＳログを解析し（ステップ１５０１）、ハングアップしたモジュール１１４−ｉの識別情報が特定されたか否かをチェックする（ステップ１５０２）。
【０１０１】
ハングアップしたモジュール１１４−ｉの識別情報が特定された場合（ステップ１５０２，ＹＥＳ）、ハングアップ箇所解析部１０２２は、そのモジュール１１４−ｉの識別情報を示すハングアップ箇所情報１０１２を生成する（ステップ１５０３）。
【０１０２】
一方、ハングアップしたモジュール１１４−ｉの識別情報が特定されない場合（ステップ１５０２，ＮＯ）、ハングアップ箇所解析部１０２２は、ＰＯＳＴコード保存領域１０２１から、ハングアップの直前に格納されたＰＯＳＴコードを取得する。そして、ハングアップ箇所解析部１０２２は、取得したＰＯＳＴコードを示すハングアップ箇所情報１０１２を生成する（ステップ１５０４）。
【０１０３】
図１６は、図１３のステップ１３０５における切替処理の例を示すフローチャートである。切替部１０１８は、診断レベル１０１３をＭＡＸ〜１のいずれかの値に設定し（ステップ１６０１）、ＣＰＵ７１１に対してＢＩＯＳの再起動を指示する（ステップ１６０２）。
【０１０４】
ステップ１３０４の処理に続いて切替処理が行われる場合、ステップ１６０１において、診断レベル１０１３が０からＭＡＸに変更される。ＭＡＸの値は、モジュール１１４−１〜モジュール１１４−Ｎに共通の値であってもよく、ハングアップしたモジュール１１４−ｉ毎に異なる値であってもよい。
【０１０５】
ステップ１３０８の処理に続いて切替処理が行われる場合、ステップ１６０１において、診断レベル１０１３が１だけデクリメントされる。ステップ１３１０の処理に続いて切替処理が行われる場合、ステップ１６０１において、診断レベル１０１３が１に設定される。
【０１０６】
図１７は、図１３のステップ１３０３におけるログ解析処理の例を示すフローチャートである。まず、ログ解析部１０１９は、各モジュール１１４−ｉに対応する解析アルゴリズムを用いて、診断ログ保存領域１０１５に格納された診断ログを解析し（ステップ１７０１）、被疑箇所を特定する（ステップ１７０２）。
【０１０７】
次に、ログ解析部１０１９は、イベントログをイベントログ保存領域１０１７に格納する（ステップ１７０３）。被疑箇所が特定された場合、特定された被疑箇所を示すイベントログが、イベントログ保存領域１０１７に格納される。被疑箇所が特定されなかった場合、被疑箇所が特定されなかったことを示すイベントログが、イベントログ保存領域１０１７に格納される。
【０１０８】
次に、ログ解析部１０１９は、ハングアップ箇所情報１０１２を消去し（ステップ１７０４）、診断レベル１０１３を０に変更することで、診断レベル１０１３を初期化する（ステップ１７０５）。
【０１０９】
図１８は、図９のＣＰＵ７１１が行うログ調整処理の例を示すフローチャートである。まず、監視部９１３は、診断開始レベル９１１を０に設定することで、診断開始レベル９１１を初期化する（ステップ１８０１）。次に、監視部９１３は、ＢＭＣ７１９に対して、終了フラグ１０１４の初期化を指示し（ステップ１８０２）、図１０の判定部１０２３は、終了フラグ１０１４を論理“０”に設定する。
【０１１０】
次に、監視部９１３は、診断開始レベル設定処理を行い（ステップ１８０３）、ＣＰＵ７１１は、ＰＯＳＴプログラム１１３のモジュール１１４−ｉを実行する（ステップ１８０４）。モジュール１１４−１〜モジュール１１４−Ｎは、モジュール１１４−１から順に実行され、ステップ１８０４の処理が繰り返される度に、次のモジュール１１４−ｉが実行される。
【０１１１】
次に、ＣＰＵ７１１は、診断開始レベル９１１の値をチェックする（ステップ１８０５）。診断開始レベル９１１が０である場合（ステップ１８０５，ＹＥＳ）、ＣＰＵ７１１は、実行されたモジュール１１４−ｉに、初期値の情報量のＢＩＯＳログを出力させる（ステップ１８０７）。この場合、ログ通知部９１５は、ＢＩＯＳ診断レベル１０１３が０のＢＩＯＳログを、シリアルポート７１８を介してＢＭＣ７１９へ転送する。
【０１１２】
一方、診断開始レベル９１１が０でない場合（ステップ１８０５，ＮＯ）、ＣＰＵ７１１は、実行されたモジュール１１４−ｉに、診断開始レベル９１１に応じた情報量のＢＩＯＳログを出力させる（ステップ１８０６）。この場合、ログ通知部９１５は、ＢＩＯＳ診断レベル１０１３がＭＡＸ〜１のいずれかのＢＩＯＳログを、シリアルポート７１８を介してＢＭＣ７１９へ転送する。
【０１１３】
次に、ＰＯＳＴコード送信部９１６は、インタフェース７１７を介してＰＯＳＴコードをＢＭＣ７１９へ転送する（ステップ１８０８）。そして、監視部９１３は、ＢＩＯＳが正常に起動したか否かをチェックする（ステップ１８０９）。ＢＩＯＳが正常に起動されていない場合（ステップ１８０９，ＮＯ）、ＣＰＵ７１１は、ステップ１８０３以降の処理を繰り返す。
【０１１４】
ＢＩＯＳが正常に起動された場合（ステップ１８０９，ＹＥＳ）、監視部９１３は、ＢＭＣ７１９に対して、終了フラグ１０１４の変更を指示し（ステップ１８１０）、図１０の判定部１０２３は、終了フラグ１０１４を論理“１”に設定する。
【０１１５】
図１９は、図１８のステップ１８０３における診断開始レベル設定処理の例を示すフローチャートである。まず、監視部９１３は、インタフェース７１７を介してＢＭＣ７１９からハングアップ箇所情報１０１２を取得し（ステップ１９０１）、取得したハングアップ箇所情報１０１２をチェックする（ステップ１９０２）。
【０１１６】
ハングアップ箇所情報１０１２がいずれかのモジュール１１４−ｐ（ｐ＝１〜Ｎ）の識別情報を示している場合（ステップ１９０２，ＮＯ）、監視部９１３は、次に実行されるモジュール１１４−ｉの識別情報を取得する（ステップ１９０５）。そして、監視部９１３は、モジュール１１４−ｉの識別情報と、モジュール１１４−ｐの識別情報とを比較する（ステップ１９０６）。
【０１１７】
モジュール１１４−ｉの識別情報がモジュール１１４−ｐの識別情報と等しい場合（ステップ１９０６，ＹＥＳ）、監視部９１３は、インタフェース７１７を介してＢＭＣ７１９から診断レベル１０１３を取得する（ステップ１９０７）。そして、監視部９１３は、取得した診断レベル１０１３の値を、診断開始レベル９１１に設定する（ステップ１９０８）。一方、モジュール１１４−ｉの識別情報がモジュール１１４−ｐの識別情報と異なる場合（ステップ１９０６，ＮＯ）、監視部９１３は、処理を終了する。
【０１１８】
ハングアップ箇所情報１０１２がＰＯＳＴコードを示している場合（ステップ１９０２，ＹＥＳ）、監視部９１３は、ＰＯＳＴコード送信部９１６が最後に転送したＰＯＳＴコードを取得する（ステップ１９０３）。そして、監視部９１３は、最後に転送したＰＯＳＴコードと、ハングアップ箇所情報１０１２が示すＰＯＳＴコードとを比較する（ステップ１９０４）。
【０１１９】
転送したＰＯＳＴコードがハングアップ箇所情報１０１２が示すＰＯＳＴコードと等しい場合（ステップ１９０４，ＹＥＳ）、監視部９１３は、ステップ１９０７以降の処理を行う。一方、転送したＰＯＳＴコードがハングアップ箇所情報１０１２が示すＰＯＳＴコードと異なる場合（ステップ１９０４，ＮＯ）、監視部９１３は、処理を終了する。
【０１２０】
図１９の診断開始レベル設定処理によれば、ハングアップ箇所情報１０１２が示す障害発生箇所において、診断レベル１０１３が示す情報量のＢＩＯＳログが出力されるように、診断開始レベル９１１が変更される。
【０１２１】
例えば、診断レベル１０１３がＭＡＸである場合、ＣＰＵ７１１は、障害発生箇所において出力されるＢＩＯＳログの情報量を、診断レベル１０１３がＭＡＸの情報量になるように調整する。また、診断レベル１０１３がＭＡＸから１まで１ずつデクリメントされる場合、ＣＰＵ７１１は、障害発生箇所において出力されるＢＩＯＳログの情報量を、診断レベル１０１３がＭＡＸ−１〜１の各段階における情報量になるように調整する。これにより、障害発生箇所におけるＢＩＯＳログの情報量が、診断レベル１０１３に合わせて調整される。
【０１２２】
図１３の切替制御処理及び図１８のログ調整処理によれば、ＢＩＯＳの起動時にハングアップが検知された場合、診断レベル１０１３及び診断開始レベル９１１がＭＡＸに設定されてＢＩＯＳが再起動され、障害の再現が試行される。そして、障害が再現されなかった場合、診断レベル１０１３及び診断開始レベル９１１を、ＭＡＸから１まで１ずつデクリメントしながら、ＢＩＯＳの再起動が繰り返される。診断レベル１０１３及び診断開始レベル９１１を１に設定しても、障害が再現されなかった場合、ＢＩＯＳが再起動された後にＢＩＯＳログを間引く処理が開始される。
【０１２３】
これにより、ＢＩＯＳログの情報量が段階的に減少し、情報処理装置７０１の動作が障害発生時の動作に近づいていくため、障害が再現される可能性が高くなる。障害が再現された場合、最初の起動時よりも詳細なＢＩＯＳログが採取されるため、被疑箇所を高い精度で特定することが可能になる。
【０１２４】
図１３のステップ１３１０の制御が行われることで、間引かれたＢＩＯＳログが採取された場合、開発者は、診断ログ保存領域１０１５に格納された診断ログを解析する。
【０１２５】
図２０は、間引かれたＢＩＯＳログを解析する解析作業の例を示すフローチャートである。まず、開発者は、診断ログ保存領域１０１５に格納された診断ログを手作業で解析し（ステップ２００１）、被疑箇所を特定できるか否かを判断する（ステップ２００２）。
【０１２６】
このとき、開発者は、ＢＩＯＳが正常に起動した場合に採取された、診断レベル１０１３が１のＢＩＯＳログと、ＢＩＯＳがハングアップした場合に採取された、間引かれたＢＩＯＳログとを比較する。そして、開発者は、これらのＢＩＯＳログを対応付けることで、間引かれた部分を補完する。
【０１２７】
図１１及び図１４に示したように、これらの２つのＢＩＯＳログは同じハードウェア構成において採取されているため、ＢＩＯＳがハングアップした場合の間引かれる前のＢＩＯＳログは、診断レベル１０１３が１のＢＩＯＳログとほぼ同じである。このため、両者を対応付けることで、間引かれたテキストを補完して、障害発生の原因となっている被疑箇所を特定することができる。
【０１２８】
被疑箇所を特定できる場合（ステップ２００２，ＹＥＳ）、開発者は、解析作業を終了する。一方、被疑箇所を特定できない場合（ステップ２００２，ＮＯ）、開発者は、ＢＩＯＳログを強化したＢＩＯＳプログラムを作成する（ステップ２００３）。
【０１２９】
次に、開発者は、ＢＩＯＳログを強化したＢＩＯＳプログラムをＣＰＵ７１１に実行させることで再現試験を行い、強化されたＢＩＯＳログを採取する（ステップ２００４）。そして、開発者は、強化されたＢＩＯＳログを手作業で解析し（ステップ２００５）、被疑箇所を特定する（ステップ２００６）。
【０１３０】
ステップ２００２において被疑箇所を特定できる場合は、ステップ２００３〜ステップ２００６の作業が不要になり、解析作業は直ちに終了する。ステップ２００２において被疑箇所を特定できない場合であっても、診断レベル１０１３が０のＢＩＯＳログよりも詳細な情報が取得されているため、被疑箇所を大まかに推定することができる。
【０１３１】
したがって、ＢＩＯＳログを強化した再現試験を１回行うだけで、被疑箇所を特定できる可能性が高く、図３の調査作業のように、再現試験を複数回繰り返す必要がなくなる。これにより、開発者が被疑箇所を推定する際に役立つ情報を取得し、解析作業の期間を短縮することができる。
【０１３２】
図１のＣＰＵ１０１及びＢＭＣ１０２は一例に過ぎず、ＣＰＵ１０１及びＢＭＣ１０２の用途又は条件に応じて、一部の構成要素を省略又は変更してもよい。
【０１３３】
図５及び図７の情報処理装置の構成は一例に過ぎず、情報処理装置の用途又は条件に応じて、一部の構成要素を省略又は変更してもよい。図８のＢＭＣ７１９の構成は一例に過ぎず、情報処理装置７０１の用途又は条件に応じて、一部の構成要素を省略又は変更してもよい。
【０１３４】
図９のＣＰＵ７１１及び図１０のＢＭＣ７１９の構成は一例に過ぎず、情報処理装置７０１の用途又は条件に応じて、一部の構成要素を省略又は変更してもよい。例えば、ＢＩＯＳログを間引く処理を行わない場合は、図９のログ制御部９１４を省略することができる。ＣＰＵ７１１は、ＰＯＳＴプログラム１１３の代わりに、複数のモジュールを含む他のプログラムを実行し、実行中に出力されるログをＢＭＣ７１９へ転送してもよい。
【０１３５】
図２、図３、図６、図１３、及び図１５〜図２０のフローチャートは一例に過ぎず、情報処理装置の構成又は条件に応じて一部の処理を省略又は変更してもよい。例えば、図１３の切替制御処理において、ＢＩＯＳログを間引く処理を行わない場合は、ステップ１３０９及びステップ１３１０の処理を省略することができる。
【０１３６】
図４、図１１、図１２、及び図１４に示したＢＩＯＳログは一例に過ぎず、ＢＩＯＳログは、情報処理装置の構成又は条件に応じて変化する。
【０１３７】
開示の実施形態とその利点について詳しく説明したが、当業者は、特許請求の範囲に明確に記載した本発明の範囲から逸脱することなく、様々な変更、追加、省略をすることができるであろう。
【０１３８】
図１乃至図２０を参照しながら説明した実施形態に関し、さらに以下の付記を開示する。
（付記１）
監視対象プログラムを記憶する記憶部と、
前記監視対象プログラムを実行するプログラム処理部と、
前記監視対象プログラムの実行中における障害発生を検知する検知部と、
前記検知部が前記障害発生を検知した場合、前記監視対象プログラムの実行中に出力されるログの情報量を、前記障害発生を検知する前に設定されていた第１設定値よりも増加させた第２設定値に設定して、前記監視対象プログラムの再実行を前記プログラム処理部に指示し、前記ログの情報量が前記第２設定値に設定された監視対象プログラムを前記プログラム処理部が再度実行している間に障害発生が検知されない場合、前記ログの情報量を前記第２設定値よりも減少させた第３設定値に設定して、前記監視対象プログラムの再実行を前記プログラム処理部に指示する制御部と、
前記ログの情報量が前記第２設定値又は前記第３設定値に設定された監視対象プログラムを前記プログラム処理部が再度実行している間に、前記検知部が障害発生を検知した場合、前記監視対象プログラムから出力されるログを解析する解析部と、
を備えることを特徴とする情報処理装置。
（付記２）
前記制御部は、前記ログの情報量が前記第２設定値に設定された監視対象プログラムの再実行を指示する前に、前記検知部が前記障害発生を検知した場合、前記監視対象プログラムの障害発生箇所を示す情報を生成し、
前記プログラム処理部は、前記ログの情報量が前記第２設定値に設定された監視対象プログラムを再度実行する際、前記障害発生箇所において出力されるログの情報量を前記第２設定値になるように調整し、前記ログの情報量が前記第３設定値に設定された監視対象プログラムを再度実行する際、前記障害発生箇所において出力されるログの情報量を前記第３設定値になるように調整することを特徴とする付記１記載の情報処理装置。
（付記３）
前記情報処理装置は、前記ログの情報量が前記第３設定値に設定された監視対象プログラムを前記プログラム処理部が再度実行している間に障害発生が検知されない場合、前記監視対象プログラムから出力されるログを間引く処理を行うログ制御部をさらに備え、
前記解析部は、前記ログの情報量が前記第３設定値に設定された監視対象プログラムを前記プログラム処理部が再度実行し、かつ、前記ログ制御部が前記ログを間引いた際に、前記検知部が障害発生を検知した場合、間引かれたログを解析することを特徴とする付記１又は２記載の情報処理装置。
（付記４）
前記監視対象プログラムは、基本入出力システムの起動時に実行される試験プログラムであり、前記検知部は、前記試験プログラムのハングアップを前記障害発生として検知することを特徴とする付記１乃至３のいずれか１項に記載の情報処理装置。
（付記５）
前記情報処理装置は、拡張装置が搭載される拡張スロットをさらに備え、前記試験プログラムは、前記拡張スロットに搭載された前記拡張装置の試験を実行するモジュールを含み、前記ログの情報量が前記第２設定値に設定された監視対象プログラムを前記処理部が再度実行している間に出力されるログは、前記拡張装置のレジスタから取得された情報と前記拡張スロットのレジスタから取得された情報とを含むことを特徴とする付記４記載の情報処理装置。
（付記６）
情報処理装置の動作を監視するコンピュータのための制御プログラムであって、
前記情報処理装置のプログラム処理部による監視対象プログラムの実行中に障害発生を検知し、
前記障害発生を検知した場合、前記監視対象プログラムの実行中に出力されるログの情報量を、前記障害発生を検知する前に設定されていた第１設定値よりも増加させた第２設定値に設定して、前記監視対象プログラムの再実行を前記プログラム処理部に指示し、
前記ログの情報量が増加した監視対象プログラムを前記プログラム処理部が再度実行している間に、障害発生を検知した場合、前記監視対象プログラムから出力されるログを解析し、
前記ログの情報量が前記第２設定値に設定された監視対象プログラムを前記プログラム処理部が再度実行している間に障害発生が検知されない場合、前記ログの情報量を前記第２設定値よりも減少させた第３設定値に設定して、前記監視対象プログラムの再実行を前記プログラム処理部に指示し、
前記ログの情報量が前記第２設定値又は前記第３設定値に設定された監視対象プログラムを前記プログラム処理部が再度実行している間に、障害発生を検知した場合、前記監視対象プログラムから出力されるログを解析する、
処理を前記コンピュータに実行させるための制御プログラム。
（付記７）
前記コンピュータは、
前記ログの情報量が前記第２設定値に設定された監視対象プログラムの再実行を指示する前に、前記障害発生を検知した場合、前記監視対象プログラムの障害発生箇所を示す情報を生成し、
前記ログの情報量が前記第２設定値に設定された監視対象プログラムを前記プログラム処理部が再度実行する際、前記プログラム処理部により、前記障害発生箇所において出力されるログの情報量を前記第２設定値になるように調整させ、
前記ログの情報量が前記第３設定値に設定された監視対象プログラムを前記プログラム処理部が再度実行する際、前記プログラム処理部により、前記障害発生箇所において出力されるログの情報量を前記第３設定値になるように調整させることを特徴とする付記６記載の制御プログラム。
（付記８）
前記コンピュータは、
前記ログの情報量が前記第３設定値に設定された監視対象プログラムを前記プログラム処理部が再度実行している間に障害発生が検知されない場合、前記情報処理装置により、前記監視対象プログラムから出力されるログを間引く処理を実行させ、
前記ログの情報量が前記第３設定値に設定された監視対象プログラムを前記プログラム処理部が再度実行し、かつ、前記ログが間引かれた際に、障害発生を検知した場合、前記監視対象プログラムから出力されるログを解析することを特徴とする付記６又は７記載の制御プログラム。
（付記９）
前記監視対象プログラムは、基本入出力システムの起動時に実行される試験プログラムであり、前記コンピュータは、前記試験プログラムのハングアップを前記障害発生として検知することを特徴とする付記６乃至８のいずれか１項に記載の制御プログラム。
（付記１０）
前記情報処理装置は、拡張装置が搭載される拡張スロットをさらに備え、前記試験プログラムは、前記拡張スロットに搭載された前記拡張装置の試験を実行するモジュールを含み、前記ログの情報量が前記第２設定値に設定された監視対象プログラムを前記処理部が再度実行している間に出力されるログは、前記拡張装置のレジスタから取得された情報と前記拡張スロットのレジスタから取得された情報とを含むことを特徴とする付記９記載の制御プログラム。
【符号の説明】
【０１３９】
１０１、７１１、８１１  ＣＰＵ
１０２、７１９  ＢＭＣ
１１１、９１５  ログ通知部
１１２、９１６  ＰＯＳＴコード送信部
１１３  ＰＯＳＴプログラム
１１４−１〜１１４−Ｎ  モジュール
１１５、９１７  設定パラメータ
１２１、１０１６  ＢＩＯＳログ保存領域
１２２、１０１７  イベントログ保存領域
１２３、１０２０  ハングアップ検知部
１２４、１０２１  ＰＯＳＴコード保存領域
５０１、７０１  情報処理装置
５１１  記憶部
５１２  プログラム処理部
５１３  検知部
５１４  制御部
５１５  解析部
５２１  監視対象プログラム
７１２、８１２  メモリ
７１３、８１３  不揮発性メモリ
７１４−１〜７１４−Ｍ  拡張スロット
７１５−１〜７１５−Ｍ  拡張装置
７１６  外部記憶装置
７１７、８１４  インタフェース
７１８、８１５  シリアルポート
７２０、８１６  バス
７２１、８２１  ＢＩＯＳイメージ
９１１  診断開始レベル
９１２  終了通知部
９１３  監視部
９１４  ログ制御部
１０１１  設定済みフラグ
１０１２  ハングアップ箇所情報
１０１３  診断レベル
１０１４  終了フラグ
１０１５  診断ログ保存領域
１０１８  切替部
１０１９  ログ解析部
１０２２  ハングアップ箇所解析部
１０２３  判定部
【図１】
2020086606.tif 000003
【図２】
2020086606.tif 000004
【図３】
2020086606.tif 000005
【図４】
2020086606.tif 000006
【図５】
2020086606.tif 000007
【図６】
2020086606.tif 000008
【図７】
2020086606.tif 000009
【図８】
2020086606.tif 000010
【図９】
2020086606.tif 000011
【図１０】
2020086606.tif 000012
【図１１】
2020086606.tif 000013
【図１２】
2020086606.tif 000014
【図１３】
2020086606.tif 000015
【図１４】
2020086606.tif 000016
【図１５】
2020086606.tif 000017
【図１６】
2020086606.tif 000018
【図１７】
2020086606.tif 000019
【図１８】
2020086606.tif 000020
【図１９】
2020086606.tif 000021
【図２０】
2020086606.tif 000022