(57)【要約】【課題】マシンチェック処理実行中に、多重にマシンチェックが発生した場合にもハングアップせずに、有効な障害ログを採取し、障害原因を特定する。【解決手段】多重マシンチェックが可能な情報処理装置に実装されるマシンチェックハンドラにおいて、障害情報採取処理（ステップ００９）を、各々が異なるシステム要素の障害情報を採取する機能を持ち、かつ選択的に実行可能な複数のセクションＡ〜Ｄに分けて構成し、各セクションの実行開始と終了を障害ログに記録しながら実行する。マシンチェックの発生時、マシンチェックハンドラは、この障害ログを参照して、多重マシンチェックの有無を判定し、多重マシンチェックが発生している場合には、前回に実行開始のみが記録され終了が記録されていないセクションを多重マシンチェックの原因と見なしてスキップし、同一原因のマシンチェックの反復を回避し、当該セクション対応部位を障害部位と推定する。【選択図】　図１
2004021936.tif 000002
【特許請求の範囲】
【請求項１】
障害発生時に起動される障害処理プログラムの実行中に発生する障害に対してさらに前記障害処理プログラムの起動を許す情報処理装置の障害処理方法であって、
前記障害処理プログラムを、前記情報処理装置の複数の機能部位の各々に対応して個別に前記障害の検査を行う機能を有するとともに、各々を選択的に実行することが可能な複数の実行単位で構成し、
第１の前記障害に対応した前記障害処理プログラムの第１の起動中に、前記実行単位の各々について実行開始および実行終了を記録し、
前記第１の起動中に発生した第２の前記障害に対応した第２の起動中には、前記実行開始のみが記録され前記実行終了が記録されていない前記実行単位の実行を選択的に回避することを特徴とする情報処理装置の障害処理方法。
【請求項２】
請求項１記載の情報処理装置の障害処理方法において、
前記障害処理プログラムの終了時に、前記実行開始のみが記録され前記実行終了が記録されていない前記実行単位に対応した前記機能部位を障害部位として指摘するとともに、全ての前記実行単位についての前記実行開始および実行終了の記録を初期化することを特徴とする情報処理装置の障害処理方法。
【請求項３】
請求項１または２記載の情報処理装置の障害処理方法において、
前記機能部位の一部として、前記障害処理プログラムの実行中にさらに障害を発生させて前記障害処理プログラムを起動させる多重障害を意図的に発生させるダミーデバイスを接続したとき、当該ダミーデバイスが前記障害の要因として指摘されることを特徴とする情報処理装置の障害処理方法。
【請求項４】
複数の機能部位と、前記機能部位の障害発生時に起動される障害処理プログラムとを含み、前記障害処理プログラムの実行中に発生する障害に対してさらに前記障害処理プログラムの起動を許す情報処理装置であって、
前記障害処理プログラムの処理経過が記録される記憶手段を備え、
前記障害処理プログラムは、
複数の前記機能部位の各々に対応して個別に前記障害の検査を行う機能を有するとともに、各々が選択的に実行されることが可能な複数の実行単位と、
前記実行単位の各々について実行開始および実行終了を前記記憶手段に記録する機能と、
複数の前記実行単位の各々を逐次起動するとともに、前記実行開始のみが記録され前記実行終了が記録されていない前記実行単位の実行を選択的に回避する機能と、を含むことを特徴とする情報処理装置。
【請求項５】
請求項４記載の情報処理装置において、
前記障害処理プログラムは、さらに当該障害処理プログラムの終了時に、前記実行開始のみが記録され前記実行終了が記録されていない前記実行単位に対応した前記機能部位を障害部位として指摘するとともに、全ての前記実行単位についての前記実行開始および実行終了の記録を初期化する機能を備えたことを特徴とする情報処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、情報処理装置の障害処理技術に関し、特に、計算機システム等の情報処理装置のマシンチェック処理技術、さらにはマシンチェック処理を行うソフトウェア等に適用して有効な技術に関するものである。
【０００２】
【従来の技術】
高い可用性が求められる計算機システムにおいては、障害発生時の迅速な復旧が重要である。この要求を満たすため、障害発生時に、マシンチェックと呼ばれる高優先順位の割り込みを発生し、それによって起動されるプログラム、マシンチェックハンドラが、障害の解析や復旧処理を行なう方式が広く用いられている。
【０００３】
図７はマシンチェックを用いた従来の参考技術の障害処理方式のフローチャートである。図７の例では、障害検出（ステップ９１１）を契機にマシンチェックが発生してマシンチェックハンドラが起動され（ステップ９０１）、障害ログの採取（ステップ９０４）や障害原因の解析（ステップ９０５）などの処理を行うことにより、障害原因の解析を容易にする。このような、マシンチェック割り込みを用いた障害処理方式を採用した例としては、市販の６４ビットのマイクロプロセッサアーキテクチャなどが挙げられる。
【０００４】
マシンチェックを採用した計算機システムの中には、マシンチェックハンドラ実行中に障害が発生した場合、再びマシンチェックが発生することを許すものがある。このように、マシンチェックハンドラ実行中に再びマシンチェックが発生することを多重マシンチェックと呼ぶ。多重マシンチェックを許すシステムでは、マシンチェックハンドラの実行自体がマシンチェックを引き起こす場合が問題となる。例として、マシンチェックハンドラが障害情報を採取しようと、主記憶装置にアクセスした際に、その主記憶装置に障害があるために、当該アクセス自体がマシンチェックを起こす場合などがある。このような場合、従来の参考技術では、マシンチェックハンドラの同一個所で、同一原因の多重マシンチェックが繰り返し発生し、マシンチェック処理が進まず、必要な障害ログを採取できなかったり、システムのハングアップを招く可能性があった。
【０００５】
このため、従来のシステムでは、図７のようにカウンタ（ステップ９０３）やフラグなどを用いて多重マシンチェックの発生を検出し、既定回数の多重マシンチェックが発生した場合（ステップ９０２）はシステムをリセットして（ステップ９０６）、マシンチェック処理を終了することで（ステップ９０７）、多重マシンチェックによるシステムのハングアップを防いでいたが、この方法では、多重マシンチェックにより障害情報を採取できないという技術的課題は解決できなかった。
【０００６】
【発明が解決しようとする課題】
上述のように、従来のシステムでは、多重マシンチェックに対する処理でも、通常のマシンチェックと同様の手順で処理するため、マシンチェック処理中に同一原因のマシンチェックが繰り返し発生してしまい、マシンチェック処理が進まず、障害復旧に必要な情報が採取できないことがあった。
【０００７】
本発明の目的は、上記の技術的課題を解消し、多重マシンチェックが発生しても、障害復旧に必要なログを確実に採取し、障害原因の解析を可能とし、迅速なシステム復旧を実現することにある。
【０００８】
【課題を解決するための手段】
本発明では、障害発生時に起動される障害処理プログラムの実行中に発生する障害に対してさらに前記障害処理プログラムの起動を許す情報処理装置において、前記障害処理プログラムを、前記情報処理装置の複数の機能部位の各々に対応して個別に前記障害の検査を行う機能を有するとともに、各々を選択的に実行することが可能な複数の実行単位で構成し、第１の前記障害に対応した前記障害処理プログラムの第１の起動中に、前記実行単位の各々について実行開始および実行終了を記録し、前記第１の起動中に発生した第２の前記障害に対応した第２の起動中には、前記実行開始のみが記録され前記実行終了が記録されていない前記実行単位の実行を選択的に回避する。
【０００９】
より具体的には、一例として、マシンチェックハンドラ（障害処理プログラム）を、それぞれ独立してスキップ可能な複数のセクションからなる障害情報採取部と、障害部位特定処理部で構成する。各セクションは、それぞれ異なるハードウェアの障害情報を採取する。マシンチェックハンドラは、マシンチェック処理の実行の開始を、実行プロセッサの識別番号と共に前記のログ領域に記録する。同様に、各セクションの実行開始と終了を、実行するプロセッサの識別番号と共に該ログ領域に記録する。この記録を障害処理ログと呼ぶ。障害処理ログは、システムのリセット時と、マシンチェック処理の終了時にクリアする。マシンチェック処理中に第２のマシンチェック割り込みが発生した場合、マシンチェックハンドラは、障害処理ログを参照し、障害処理ログに、対応する終了記録を持たないセクションの開始が記録されていれば、そのセクションを実行していたときに、第２のマシンチェックが発生したと判断し、第２のマシンチェック処理では、当該ステージ（セクション）をスキップすることにより、同一原因の多重マシンチェックを回避する。また、前記の障害部位特定処理部では、障害処理ログを参照し、正常に終了していないセクションがあれば、そのセクションで障害情報を採取しようとしていたハードウェアに障害があると推定することにより、障害部位の特定能力を高める。
【００１０】
【発明の実施の形態】
以下、本発明の実施の形態を図面を参照しながら詳細に説明する。
【００１１】
図１は、本発明の一実施の形態である情報処理装置の障害処理方法を実施するソフトウェアの構成および作用の一例を示すフローチャートであり、図２は、本実施の形態の情報処理装置の障害処理方法を実施する情報処理装置の構成の一例を示すブロック図である。
【００１２】
この図１の例では、対象となる計算機システム（情報処理装置）は、図２に示すように、２個のプロセッサ３００、プロセッサ３０１、その各々に設けられた２個のキャッシュメモリ３０２、キャッシュメモリ３０３、チップセット３０６、主記憶装置３０８、障害処理用メモリ３０４、外部記憶装置３０７、入出力装置３１２から構成されている。障害処理用メモリ３０４には、障害情報記録領域３０５、障害処理ログ領域３１０、後述のマシンチェックハンドラ等のソフトウェアが格納される障害処理プログラム領域３１４、が設けられている。
【００１３】
障害が発生すると、全プロセッサに同時にマシンチェック割り込みが入り、障害処理用メモリ３０４の障害処理プログラム領域３１４に格納されているマシンチェックハンドラが起動（実行開始）されるものとする。
【００１４】
マシンチェックハンドラの処理は、障害情報採取処理（ステップ００９）と、採取した障害情報を解析し、障害部位を特定する障害解析処理（ステップ０１０）から構成される。障害情報採取処理はさらに、セクションＡからＤの４つのセクション（ステップ００５、ステップ００６、ステップ００７、ステップ００８）で構成され、それぞれ、キャッシュメモリ３０２および３０３、主記憶装置３０８、外部記憶装置３０７、入出力装置３１２の障害情報を採取する。これらのセクションのうち、セクションＡは全プロセッサで実行され、各プロセッサが、自プロセッサに搭載されたキャッシュメモリの障害情報を採取する。残りのセクションＢ、セクションＣ、セクションＤは、代表プロセッサ１台のみが実行する。
【００１５】
マシンチェックハンドラは、その処理中、マシンチェック処理の開始、および各ステージ（セクションＡ〜Ｄの各々）の開始・終了を、実行したプロセッサの識別番号と共に、障害処理ログ領域３１０に記録する。障害処理ログ領域３１０には、図３に示すようにマシンチェックの実行経過が時系列にそって記録される。障害処理ログは、システムリセット時（ステップ０１２）と、マシンチェックハンドラの正常終了時の障害処理ログクリア処理（ステップ０１１）でクリアされる。
【００１６】
マシンチェックが発生すると（ステップ００１）、マシンチェックハンドラは、マシンチェック処理の開始を記録した後（ステップ００２）、最初に障害処理ログを参照し、当該マシンチェックが多重マシンチェックであるかを判定する（ステップ００３）。すなわち、当該マシンチェックで出力した、「マシンチェック処理開始」以外の障害処理ログが残っていた場合、当該マシンチェックは多重マシンチェックであると判断する。
【００１７】
多重マシンチェックの場合、マシンチェックハンドラは、障害情報採取処理のセクションの実行の可否を次のように決定し（ステップ００４）、実行して良いセクションだけを選択的に実行する。セクションＡのように全プロセッサが実行するセクションでは、障害処理ログを参照し、当該プロセッサが当該ステージの実行を完了していない場合、すなわち、対応する終了記録のない開始記録が存在する場合、当該セクションをスキップし、それ以外の場合、当該セクションを実行する。セクションＢからＤのように代表プロセッサのみが実行するセクションでは、障害処理ログを参照し、開始記録のみで未終了のセクションが記録されている場合、当該セクションは実行しない。
【００１８】
このようにして、障害情報採取のためのハードウェアへのアクセスにより、繰り返し、同一原因の多重マシンチェックを起こすことを回避できる。
【００１９】
障害情報採取が終わると、マシンチェックハンドラは、障害部位を特定するための解析処理を行なう。解析処理の一例を図４のフローチャートに示す。マシンチェックハンドラは、最初に、採取した障害情報を元に障害部位の特定を試みる（ステップ４０２、ステップ４０３）。障害部位が特定できた場合は、その部位を障害情報記録領域３０５に記録し（ステップ４０４）、終了する（ステップ４０７）。採取した障害情報からは、障害部位を特定できなかった場合、マシンチェックハンドラは、障害処理ログを参照し、正常終了しなかったこと（開始のみが記録され対応する終了の記録がないもの）のあるセクションがあれば（ステップ４０５）、そのセクションが情報を採取しようとしたハードウェアに障害があるために、障害情報採取のためのアクセスが多重マシンチェックを引き起こしたと判断し、そのハードウェアを障害部位として指摘する。例えば、図３の障害処理ログの例では、セクションＣの開始が記録されているにもかかわらず、セクションＣの終了が記録されていないので、セクションＣに対応する外部記憶装置３０７で障害が発生したと推定する。障害部位を特定する情報は、障害情報記録領域３０５に記録する（ステップ４０６）。
【００２０】
このように、本実施の形態の情報処理装置では、障害が発生してマシンチェックハンドラが起動された際に、当該マシンチェックハンドラの動作（特定のシステム構成要素（ハードウェア）へのアクセス等）が原因となってさらに障害が発生してマシンチェックハンドラが起動される多重マシンチェックが発生した場合には、当該多重マシンチェックの原因となったハードウェアにアクセスするセクションの実行を選択的にスキップして処理が続行されるので、同一原因による多重マシンチェック割込みが繰り返し発生することが回避され、多重マシンチェックが無限ループに陥ること等に起因するシステムのハングアップを確実に防止して障害ログの採取等の確実な障害処理を実行できるとともに、当該多重マシンチェックの原因となったハードウェア等の障害要因を的確に指摘して、障害からの復旧に有効な障害ログを採取できる。
【００２１】
この結果、障害ログ等を用いた障害原因の解析が可能となり、迅速なシステム復旧を実現することができる、という効果が得られる。
【００２２】
次に、本実施の形態の変形例について図５を参照して説明する。
【００２３】
この変形例では、多重マシンチェックを許す任意の計算機システムにおいて本実施の形態の障害処理方法を実施するマシンチェックハンドラが実装されているか否かを判別する方法の一例について説明する。
【００２４】
すなわち、この変形では、ダミーデバイス３２０を図１の構成の計算機システムの一部に接続する。このダミーデバイス３２０は、たとえば外部記憶装置３０７の増設部分としてシステムに認識される接続インタフェースを備えており、マシンチェックハンドラによる障害処理の対象となっているものとする。
【００２５】
そして、図６のフローチャートに例示されるように、当該ダミーデバイス３２０をシステムに認識させた後、当該ダミーデバイス３２０において障害を意図的に発生させ、マシンチェックを発生させ（ステップ８０１）、さらに当該ダミーデバイス３２０へのマシンチェックハンドラからの最初の障害ログ採取等のアクセスに対して意図的にマシンチェック（多重マシンチェック）を誘発する障害を発生させる（ステップ８０２）。
【００２６】
その後、ステップ８０２の障害で起動されたマシンチェックハンドラからの２回目の障害ログ採取要求の有無を判別し（ステップ８０３）、この時、２回目の障害ログ採取要求があった場合には、カウンタ等により発生回数を制限する従来技術の障害処理機能（マシンチェックハンドラ）が実装されていると推定できる（ステップ８０４）。
【００２７】
すなわち、本発明の実施の形態の場合には、最初のマシンチェック発生時にさらにマシンチェックが発生した場合には、発生原因となったハードウェア（この場合はダミーデバイス３２０）の障害ログを採取するセクションの実行がスキップされ、ダミーデバイス３２０へのアクセスが回避されるので、２回目の障害ログ採取要求は発生しないからである。
【００２８】
また、ステップ８０３で２回目の障害ログ採取要求がなかった場合には、さらに最終的に当該ダミーデバイス３２０が障害原因として指摘されたか否かを調べ（ステップ８０５）、指摘無しの場合には従来技術の障害処理機能（マシンチェックハンドラ）が実装されていると推定でき（ステップ８０４）、指摘有りの場合には本願発明の障害処理方法を実施するマシンチェックハンドラが実装されているものと推定できる（ステップ８０６）。
【００２９】
すなわち、従来技術の場合には、単にカウンタ等により発生回数を制限するだけであるため、システムのハングアップは抑止できても多重マシンチェックの発生原因となっているデバイスの特定まではできないからであり、これに対して、本発明の実施の形態の場合には、二回目以降のマシンチェックハンドラの起動時に前回に実行開始が記録されているが終了の記録がないセクションに対応するハードウェアが多重マシンチェックの発生原因と特定できるからである。
【００３０】
本願の特許請求の範囲に記載された発明を見方を変えて表現すれば以下の通りである。
【００３１】
（１）．多重マシンチェック割り込みを許す計算機システムにおいて、
該計算機システムは、マシンチェックハンドラの処理経過を記録する記憶領域を備え、該マシンチェックハンドラは、独立にスキップ可能な複数のセクションからなる障害情報採取処理部と、障害部位特定処理部から構成され、該マシンチェックハンドラは、第１のマシンチェック処理の際、該セクションごとの実行経過を該記憶領域に記録し、第２のマシンチェック処理は、該処理経過を参照し、第１のマシンチェック処理で多重マシンチェック割り込みを発生したセクションをスキップすることにより、同一原因の多重マシンチェック割り込みが繰り返し発生することを回避することを特徴とする障害処理方式。
【００３２】
（２）．項目（１）記載の障害部位特定処理において、該記録を参照し、多重マシンチェックを起こしたセクションの種類から、障害部位を推測することを特徴とする障害処理方式。
【００３３】
以上本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【００３４】
【発明の効果】
多重マシンチェックが発生しても、障害復旧に必要なログを確実に採取し、障害原因の解析を可能とし、迅速なシステム復旧を実現することができる、という効果が得られる。
【００３５】
マシンチェックの動作が原因となり、多重マシンチェックが発生した場合でも、障害からの復旧に有効な障害ログを採取できる。
【図面の簡単な説明】
【図１】本発明の一実施の形態である情報処理装置の障害処理方法を実施するソフトウェアの構成および作用の一例を示すフローチャートである。
【図２】本発明の一実施の形態である情報処理装置の障害処理方法を実施する情報処理装置の構成の一例を示すブロック図である。
【図３】本発明の一実施の形態である情報処理装置の障害処理方法を実施する情報処理装置における障害処理ログの一例を示す概念図である。
【図４】本発明の一実施の形態である情報処理装置の障害処理方法を実施するソフトウェアの作用の一例を示すフローチャートである。
【図５】本発明の一実施の形態である情報処理装置の障害処理方法を実施する情報処理装置の変形例を示すブロック図である。
【図６】本発明の一実施の形態である情報処理装置の障害処理方法を実施する情報処理装置の変形例の作用の一例を示すフローチャートである。
【図７】マシンチェックを用いた従来の参考技術の障害処理方式のフローチャートである。
【符号の説明】
００１　マシンチェック発生
００２　障害処理ログ参照
００３　多重マシンチェック判定
００４　各セクションの実行可否決定
００５　セクションＡ（キャッシュ障害情報採取）（実行単位）
００６　セクションＢ（主記憶装置障害情報採取）（実行単位）
００７　セクションＣ（外部記憶装置障害情報採取）（実行単位）
００８　セクションＤ（入出力装置障害情報採取）（実行単位）
００９　障害情報採取処理
０１０　障害原因解析処理
０１１　障害処理ログクリア
０１２　システムリセット
３００　プロセッサ０
３０１　プロセッサ１
３０２　キャッシュ０（機能部位）
３０３　キャッシュ１（機能部位）
３０４　障害処理用メモリ（記憶手段）
３０５　障害情報記録領域
３０６　チップセット
３０７　外部記憶装置（機能部位）
３０８　主記憶装置（機能部位）
３１０　障害処理ログ領域
３１２　入出力装置（機能部位）
４０２　障害情報を用いた障害部位特定処理
４０３　障害部位判明したかを判定
４０４　障害部位の記録
４０５　異常終了セクションの有無判定
４０６　異常終了したセクションから障害部位を推定
４０７　障害解析処理終了
９０１　マシンチェック発生
９０２　多重マシンチェックカウンタのチェック
９０３　多重マシンチェックカウンタ増加処理
９０４　障害情報採取処理
９０５　障害原因の解析処理
９０６　システムリセット
９０７　マシンチェック処理終了
９１１　障害検出
【図１】
2004021936.tif 000003
【図２】
2004021936.tif 000004
【図３】
2004021936.tif 000005
【図４】
2004021936.tif 000006
【図５】
2004021936.tif 000007
【図６】
2004021936.tif 000008
【図７】
2004021936.tif 000009