(58)【調査した分野】(Int.Cl.,DB名)
何れかの前記中央処理装置から障害発生の報告を受信して障害を検知した後、前記中央処理装置内のレジスタの値と、前記記憶手段に格納された前記トレース情報を抽出して、抽出した情報を基に障害解析を行うサービスプロセッサをさらに備える
請求項1または2の障害トレース装置。
前記サービスプロセッサは、周期的に前記中央処理装置から発行された通信を受信し、何れかの前記中央処理装置に関して、最後に前記通信を受信してから、所定の時間内に前記通信を受信できない場合、当該中央処理装置の障害発生を検知する
請求項3の障害トレース装置。
【背景技術】
【0002】
近年の情報処理装置は、高い情報処理能力へのユーザニーズを満たすため、マルチプロセッサの構成をとるものが増加してきている。また、高い情報処理能力に加えて、高可用性、高信頼性に対するユーザニーズも年々増加している。したがって、高可用性、高信頼性を実現したマルチプロセッサシステムを提供するための技術が、今後益々重要となる。
【0003】
しかしながら、マルチプロセッサシステムにおいては、例えばプロセッサ間の通信経路において障害が発生した場合、あるいは、あるプロセッサの障害で発生したエラーデータが、別のプロセッサに伝播するような場合は、見かけ上、複数のプロセッサで障害が発生していることになり、実際にどのプロセッサで障害が発生したのかを特定することは容易ではない。障害プロセッサの特定に時間がかかると、システムを障害から復旧させる時間が増加することとなり、高可用性、高信頼性へのユーザニーズを満たすことが困難となる。したがって、マルチプロセッサシステムにおける障害トレースを、正確に行うことができるような技術が求められている。
【0004】
このようなマルチプロセッサにおける障害トレースに関する関連技術として、特許文献1には、あるプロセッサAで検出された他のプロセッサBとのインタフェース回路に関するリンク障害について、ベースボード管理コントローラが、プロセッサA内のステータス情報のみならず、プロセッサB内のステータス情報も用いて障害部位の解析を行うための装置が公開されている。
【0005】
また、特許文献2には、複数のコントローラ(入出力制御装置)を含むマルチプロセッサシステムにおいて、各コントローラが取得したトレースデータの時間的な相互関係を正しく把握できる時刻情報を、簡易な構成で得るためのシステムが公開されている。
【0006】
また、特許文献3には、イベントドリブン型のデータ収集ツールにおいて、トレース事象の発生頻度、及び、トレースデータ量を観測し、このデータに基づいて、必要となるバッファ量を予測して確保するための方式が公開されている。
【発明を実施するための形態】
【0016】
本願発明の第一の実施の形態について図面を参照して詳細に説明する。
【0017】
図1は本実施形態の障害トレースシステムの構成を示すブロック図である。
【0018】
本実施形態の障害トレースシステム1は、障害トレース装置10と、CPU20乃至30とを包含している。CPU20乃至30は、演算処理を行うプロセッサであり、互いに通信を行う。
【0019】
CPU20乃至30においては、それぞれ、動作中にハードウェアやソフトウェアから様々な割り込みが発生する。割り込みの種類としては、CPU20乃至30のハードウェアで発生した障害、システム内における部品のホットプラグ、CPU20乃至30のBIOS(Basic Input/Output System)が設定した割り込み等がある。CPU20乃至30は、割り込みが発生すると、割り込みの種別に対応した処理を実施して、割り込みが発生した時刻と、割り込みの種別の情報を、障害トレース装置10へ送信する。
【0020】
障害トレース装置10は、トレース部120乃至130と、記憶部121乃至131と、IOコントローラ140と、サービスプロセッサ150と、割り込み種別格納テーブル160とを包含している。
【0021】
トレース部120乃至130は、それぞれ、CPU20乃至30から、割り込み発生時刻と、割り込みの種別の情報を受信し、受信した割り込みの種別の情報が、割り込み種別格納テーブル160に登録されているか否かを確認する。割り込み種別格納テーブル160は、CPU20乃至30で割り込みが発生した場合、後々の障害解析等のために、CPU20乃至30における状態情報を採取して、トレース情報として記録する必要がある割り込みの種別の一覧を定義したテーブルである。
【0022】
例えば、CPU20において割り込みが発生し、当該割り込みの種別の情報が、割り込み種別格納テーブル160に登録されている場合、トレース部120は、トレース情報を記録する必要がある割り込みが発生したことを、割り込み発生時刻の情報とともに、トレース部130に送信する。CPU30において、割り込み種別格納テーブル160に登録されている割り込みが発生した場合は、トレース部130が、トレース部120に対して同様の処理を行う。
【0023】
トレース部120乃至130は同期して、それぞれ、CPU20乃至30における状態情報をCPU20乃至30から採取して、割り込み発生時刻の情報とともに、トレース情報として、記憶部121乃至131に送信する。トレース部120乃至130は、記憶部121乃至130から、トレース情報記憶処理完了を受信した後、トレース情報記憶処理完了をCPU20乃至30へ送信する。
【0024】
トレース部120乃至130の形態としては、CPU20乃至30の近傍に配置されたLSI内の論理回路の場合もあれば、CPU20乃至30と同一LSI内に形成された論理回路の場合もあれば、CPU20乃至30の近傍に配置された別のプロセッサのROMに格納されたプログラムの場合もあれば、CPU20乃至30で実行されるプログラムの場合もある。
【0025】
トレース部120の動作のフローチャートを
図2に示す。
【0026】
トレース部120は、CPU20から割り込みの発生を受信した場合(S001でYes)、割り込み種別格納テーブル160を参照して、CPU20から受信した割り込みの種別の情報が、登録されているか否かを確認する。CPU20から割り込みの発生を受信しない場合(S001でNo)、処理はS006へ進む。
【0027】
トレース部120は、割り込み種別格納テーブル160を参照して、CPU20から受信した割り込みの種別の情報が、登録されているか否かを確認する(S002)。割り込みの種別の情報が登録されている場合(S003でYes)、トレース部120は、トレース情報の出力処理が必要な割り込みが発生したことを、割り込み発生時刻の情報とともに、トレース部130に送信する(S004)。割り込みの種別の情報が登録されていない場合(S003でNo)、処理はS001へ戻る。
【0028】
トレース部130からトレース情報の採取了解を受信した場合(S005でYes)、トレース部120は、CPU20における状態情報を採取して、割り込み発生時刻の情報とともに、記憶部121に送信し(S008)、全体の処理は終了する。トレース部130からトレース情報の採取了解を受信していない場合(S005でNo)、処理はS005で待機する。
【0029】
トレース部120は、トレース部130からトレース情報採取の指示を受信した場合(S006でYes)、トレース部120は、トレース情報の採取を了解したことを、トレース部130に送信し(S007)、処理はS008へ進む。トレース部120は、トレース部130からトレース情報採取の指示を受信していない場合(S006でNo)、処理はS001へ戻る。
【0030】
トレース部130の動作フローも、上述と同様である。
【0031】
記憶部121乃至131は、それぞれ、トレース部120乃至130から受信したCPU20乃至30における状態情報を、割り込み発生時刻に対応付けて、トレース情報として記憶する。記憶部121乃至131は、トレース情報の記憶処理が完了すると、トレース情報記憶処理完了を、トレース部120乃至130へ送信する。
【0032】
記憶部121乃至131の形態としては、CPU20乃至30の近傍に配置された専用の不揮発性メモリの場合もあれば、CPU20乃至30と同一LSI内に形成されたメモリの場合もあれば、CPU20乃至30がアクセスする主記憶の一部領域の場合もある。
【0033】
IOコントローラ140は、CPU20乃至30から、サービスプロセッサ150、及び、ディスク装置等の周辺機器(図示せず)へのアクセスの制御を行う。IOコントローラ140は、CPU20乃至30からサービスプロセッサ150へのアクセスリクエストを受信して、サービスプロセッサへアクセスリクエストを送信する。
【0034】
サービスプロセッサ150は、CPU20乃至30において障害が発生した場合に、障害解析を行い、障害対応処理を実施するプロセッサである。サービスプロセッサ150は、CPU20乃至30から、トレース情報が記憶部121乃至131に記憶された割り込みが発生したことを、割り込み発生時刻の情報とともに、IOコントローラ140を介して受信する。
【0035】
サービスプロセッサ150は、障害解析を行うため、I2C(Inter−Integrated Circuit)バス170を介して、CPU20乃至30から内部レジスタの値を採取し、記憶部121乃至131から割り込み発生時刻でのCPU20乃至30における状態情報を採取する。サービスプロセッサ150は、上述で採取した情報を基に障害解析処理を行い、障害箇所が特定できた場合は、障害箇所の切り離し等の障害対応処理を実施する。
【0036】
サービスプロセッサ150は、CPU20乃至30におけるストールの発生を検知するために、IOコントローラ140を介して、CPU20乃至30へ周期的に通信し、通信後、所定の時間内にCPU20乃至30からの返信があるか否かを確認する。CPU20乃至30からの返信が、所定の時間内に確認できない場合、サービスプロセッサ150は、I2Cバス170を介して、CPU20乃至30から内部レジスタの値を採取し、記憶部121乃至131からCPU20乃至30における状態情報を採取する。サービスプロセッサ150は、上述と同様に、障害解析処理、障害対応処理を実施する。
【0037】
上述の場合、返信が確認できないCPUがストール状態となっている可能性が高い。CPUストールが発生した場合の記憶部121乃至131に記憶されたトレース情報の構成例を
図5に示す。記憶部121内のトレース情報122、及び、記憶部131内のトレース情報132において、時刻の項目は、CPU20乃至30のいずれかで、トレース情報の記録が必要な割り込みが発生した時刻、状態情報の項目は、対応する時刻でのCPU20乃至30における状態情報を示している。
【0038】
CPU20乃至30のいずれかでトレース情報の記録が必要な割り込みが発生した場合、トレース部120乃至130は同期してCPU20乃至30における状態情報を採取するため、同一時刻におけるCPU20乃至30での状態情報が、記憶部121乃至122に記憶されている。
【0039】
時刻t4以降にCPU20がストール状態になると、時刻t4以降はトレース部120がCPU20から採取する状態情報は更新されなくなる。したがって、時刻t5乃至t7で、CPU30でトレース情報の記録が必要な割り込みが発生した場合、記憶部131内のトレース情報132における状態情報は更新を継続するが、記憶部121内のトレース情報122における状態情報は、時刻t4での値と同じ値になる。
【0040】
サービスプロサッサ150は、時刻t4以降の記憶部121内のトレース情報122における状態情報が更新されていないことから、CPU20のストール状態を確認する。
【0041】
サービスプロセッサ150における障害解析の例を
図6に示す。サービスプロセッサ150における障害解析例151は、障害発生のケース毎の、サービスプロセッサ150の障害解析結果の一例をまとめたものである。
【0042】
ケース1乃至2は、CPU20乃至30のいずれかにおいて、障害に関わる割り込みが発生し、記憶部121乃至131のいずれにおいてもトレース情報の更新が継続して行われている場合である。この場合、サービスプロセッサ150は、障害に関わる割り込みが発生した方のCPUを被疑部品と判定する。
【0043】
ケース3乃至4は、CPU20乃至30のいずれにおいても、障害に関わる割り込みが発生していなく、記憶部121乃至131のいずれかにおいて、トレース情報の更新が停止している場合である。この場合、トレース情報の更新が停止しているCPUがストール状態となっている可能性が高く、サービスプロセッサ150は、トレース情報の更新が停止している方のCPUを被疑部品と判定する。
【0044】
ケース5乃至6は、CPU20乃至30の両方において、障害に関わる割り込みが発生し、記憶部121乃至131のいずれかにおいて、トレース情報の更新が停止している場合である。この場合、CPU20乃至30のいずれかで発生した障害の影響が、もう片方のCPUに伝播して両方のCPUで割り込みが発生し、障害の伝播の影響を受けたCPUにおいてトレース情報の更新が停止している可能性がある。したがって、サービスプロセッサ150は、トレース情報の更新が停止している方のCPUを被疑部品として特定はしないものの、当該CPUが被疑部品である可能性が高いと判定する。
【0045】
次に
図3、
図4のフローチャートを参照して、本実施形態の動作について詳細に説明する。
【0046】
図3は、CPU20における割り込み発生で、サービスプロセッサ150が障害を検知する場合のフローチャートである。
【0047】
CPU20で割り込みが発生すると、CPU20は、割り込みが発生した時刻と、割り込みの種別の情報をトレース部120へ送信する(S101)。トレース部120は、割り込み種別格納テーブル160を参照して、CPU20から受信した割り込みの種別の情報が、登録されているか否かを確認する(S102)。割り込みの種別の情報が登録されている場合(S103でYes)、トレース部120は、トレース情報の出力処理が必要な割り込みが発生したことを、割り込み発生時刻の情報とともに、トレース部130に送信する(S104)。割り込みの種別の情報が登録されていない場合(S103でNo)、処理はS101へ戻る。
【0048】
トレース部120乃至130は同期して、それぞれ、CPU20乃至30における状態情報を採取して、割り込み発生時刻の情報とともに、記憶部121乃至131に送信する(S105)。記憶部121乃至131は、それぞれ、トレース部120乃至130から受信した状態情報を、割り込み発生時刻に対応付けて記憶し、トレース情報記憶処理完了をトレース部120乃至130へ送信する(S106)。トレース部120乃至130は、それぞれ、トレース情報記憶処理完了をCPU20乃至30へ送信する(S107)。
【0049】
CPU20は、トレース情報が記憶部121に記憶された割り込みが発生したことを、割り込み発生時刻の情報とともに、IOコントローラ140を介して、サービスプロセッサ150へ送信する(S108)。サービスプロセッサ150は、I2Cバス170を介して、CPU20乃至30から内部レジスタの値を、記憶部121乃至131から割り込み発生時刻でのCPU20乃至30における状態情報を採取して、障害解析処理を行い、障害対応処理を実施して(S109)、全体の処理は終了する。
【0050】
尚、CPU30における割り込み発生で、サービスプロセッサ150が障害を検知する場合の本実施形態の動作も同様である。
【0051】
図4は、サービスプロセッサ150が、CPU20乃至30を監視することで、障害を検知する場合のフローチャートである。
【0052】
サービスプロセッサ150は、IOコントローラ140を介して、CPU20乃至30へ周期的に通信する(S201)。所定の時間内にCPU20乃至30から返信がある場合(S202でYes)、処理はS201へ戻る。
【0053】
所定の時間内にCPU20乃至30のいずれかから返信がない場合(S202でNo)、サービスプロセッサ150は、I2Cバス170を介して、CPU20乃至30から内部レジスタの値を、記憶部121乃至131からCPU20乃至30における状態情報を採取して、障害解析処理を行い、障害対応処理を実施して(S203)、全体の処理は終了する。
【0054】
本実施形態には、マルチプロセッサシステムにおける障害トレース取得の確実性を向上させる効果がある。その第一の理由は、CPU20乃至30の内部、もしくはその近傍に設けられたトレース部120乃至130が、CPU20乃至30での割り込み発生を契機に、CPU20乃至30における状態情報を採取するからである。
【0055】
従来のマルチプロセッサシステムにおいては、障害解析のためのトレース部を、各CPUからアクセス可能なように、システム内の共用のハードウェア資産上に実装していたが、この場合、特にCPU数の多いシステムでは、トレース部からの距離が遠くなるCPUも存在する。CPUとトレース部との距離が遠くなれば、通信経路で障害が発生する確率も高くなり、当該CPUに関するトレース情報の採取ができなくなる。
【0056】
また、システム内においてトレース部が1つしかないため、トレース部に障害が発生した場合は、全てのCPUに関するトレース情報の採取ができなくなる。
【0057】
本実施形態では、各CPUの近傍もしくは内部の論理回路、あるいは、各CPUが実行するプログラムとしてトレース部を実装するため、上述の通信経路での障害発生の問題を回避することが可能となる。また、CPU毎にトレース部を備えているため、いずれかのCPUのトレース部に障害が発生し、当該CPUのトレース情報を採取できない状態になったとしても、当該CPUを除くCPUのトレース部が採取したトレース情報を基に、サービスプロセッサが障害解析を行うことが可能となる。
【0058】
さらに、上述の効果の第二の理由は、サービスプロセッサ150が、周期的にCPU20乃至30から通信を受信するようにすることで、CPU20乃至30で発生したストール状態を検知するからである。
【0059】
障害の発生によりCPUがストール状態になった場合、CPUから障害報告が行われないため、サービスプロセッサが迅速に障害の検知を行うことは困難である。本実施形態では、サービスプロセッサが周期的にCPUと通信し、所定の時間内にCPUからの返信がない場合、サービスプロセッサがトレース情報を確認することで、確実かつ迅速に障害をトレースし、障害対応処理を行うことが可能となる。
<第二の実施形態>
次に、本願発明の第二の実施形態について図面を参照して詳細に説明する。
【0060】
図7は本願発明の第二の実施形態の障害トレースシステムの構成を示すブロック図である。本実施形態の障害トレースシステム1は、第一の実施形態と同様に、障害トレース装置10と、CPU20乃至30とを包含している。
【0061】
障害トレース装置10は、第一の実施形態における割り込み種別格納テーブル160を備えていない点を除いては、第一の実施形態の障害トレース装置10と同様の構成である。
【0062】
トレース部120乃至130は同期して、それぞれ、CPU20乃至30における状態情報を周期的に採取して、情報採取時刻の情報とともに、トレース情報として、記憶部121乃至131に送信する。記憶部121乃至131、及び、IOコントローラ140の機能は、第一の実施形態と同様である。
【0063】
サービスプロセッサ150は、周期的に記憶部121乃至131を参照し、所定の期間、トレース情報が更新されていない否かを確認する。サービスプロセッサ150は、トレース情報が所定の期間更新されていない場合、I2Cバス170を介して、CPU20乃至30から内部レジスタの値を採取し、記憶部121乃至131からCPU20乃至30における状態情報を採取する。サービスプロセッサ150は、上述で採取した情報を基に障害解析処理を行い、障害箇所が特定できた場合は、障害箇所の切り離し等の障害対応処理を実施する。
【0064】
本実施形態において、CPUストールが発生した場合の記憶部121乃至131に記憶されたトレース情報の構成例を
図9に示す。
【0065】
図9の例の場合、トレース部120乃至130は、1秒間隔でCPU20乃至30から状態情報を採取し、トレース情報として記憶部121乃至131に格納する。時刻t1+3からt1+4の間で、CPU20がストール状態になった場合、時刻t1+4以降はトレース部120がCPU20から採取する状態情報は更新されなくなる。
【0066】
サービスプロセッサ150は、例えば、3秒以上トレース情報が更新されていない場合にCPUストール発生と判定するのであれば、時刻t1+6になると、CPU20乃至30の内部レジスタの値と、記憶部121乃至131におけるトレース情報の採取を行い、障害解析処理、及び、障害対応処理を実施する。
【0067】
次に
図8のフローチャートを参照して、本実施形態の動作について詳細に説明する。
【0068】
トレース部120乃至130は同期して、それぞれ、CPU20乃至30における状態情報を周期的に採取して、情報採取時刻の情報とともに、記憶部121乃至131に送信する(S301)。記憶部121乃至131は、それぞれ、トレース部120乃至130から受信した状態情報を、情報採取時刻に対応付けて記憶する(S302)。
【0069】
サービスプロセッサ150は、周期的に記憶部121乃至131を参照して、トレース情報が所定の期間更新されていないか否かを確認する(S303)。所定の期間内でトレース情報が更新されている場合(S304でNo)、処理はS303へ戻る。所定の期間トレース情報が更新されていない場合(S304でYes)、サービスプロセッサ150は、I2Cバス170を介して、CPU20乃至30から内部レジスタの値を、記憶部121乃至131からCPU20乃至30における状態情報を採取して、障害解析処理を行い、障害対応処理を実施して(S305)、全体の処理は終了する。
【0070】
本実施形態には、第一の実施形態と同様に、マルチプロセッサシステムにおける障害トレース取得の確実性を向上させる効果がある。その理由は、トレース部120乃至130が、周期的にCPU20乃至30における状態情報を採取して、トレース情報として記憶部121乃至131に格納し、サービスプロセッサ15が周期的にトレース情報の更新状況を確認して、所定の期間トレース情報が更新されていない場合は、障害トレースの処理を開始するからである。
【0071】
第一の実施形態のように、サービスプロセッサがCPUからの返信を確認して障害発生を判定する方式の場合、CPUの負荷状況によっては、返信が遅れるケースがあるため、サービスプロセッサが障害発生と判定するまでの時間をあまり短く設定することはできない。これに対して、本実施形態では、各CPUに対応するトレース部が、一定の時間間隔で採取したトレース情報の更新状況を基に、サービスプロセッサが障害発生を判定するため、サービスプロセッサは、第一の実施形態よりさらに確実かつ迅速に障害トレースを行うことが可能となる。
【0072】
さらに、本実施形態では、トレース部が周期的にトレース情報を採取するため、第一の実施形態と比較して、トレース情報の情報量が多くなるため、サービスプロセッサ15は、さらに確実な障害トレースを行うことが可能となる。
<第三の実施形態>
次に、本願発明の第三の実施形態について図面を参照して詳細に説明する。
【0073】
図10は本願発明の第三の実施形態の障害トレース装置の構成を示すブロック図である。
【0074】
障害トレース装置10は、トレース部120乃至130と、記憶部121乃至131とを包含し、CPU20乃至30と接続されている。
【0075】
トレース部120乃至130は、それぞれ、CPU20乃至30に対応して設けられ、対応するCPUの状態情報、及び、時刻をトレース情報として出力する。記憶部121乃至131は、トレース部120乃至130から出力されたトレース情報を記憶する。
【0076】
本実施形態には、第一、第二の実施形態と同様に、マルチプロセッサシステムにおける障害トレース取得の確実性を向上させる効果がある。その理由は、CPU20乃至30のそれぞれに対応するトレース部120乃至130が、トレース情報を採取するからである。
【0077】
トレース部をCPU毎に装備することで、トレース部をCPU内部、もしくはCPU近傍に配置することができるため、CPUとトレース部との通信経路での障害発生によりトレース情報の採取ができなくなる問題を回避することが可能となる。また何れかのCPUに対応するトレース部に障害が発生した場合は、当該CPUを除くCPUに対応したトレース部が採取したトレース情報を基に、障害トレースを行うことが可能となる。
【0078】
また、本実施形態における障害解析処理や障害対応処理は、第一、第二の実施形態におけるサービスプロセッサ15の機能を持つ外部の装置が、記憶部121乃至131のトレース情報を基に実施する場合もあれば、システム管理者がトレース情報をコンソール画面や紙に出力して、人手で実施する場合もある。
【0079】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されたものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。