JP2005190038A - プロセッサの診断処理方法および診断処理プログラム - Google Patents

プロセッサの診断処理方法および診断処理プログラム Download PDF

Info

Publication number
JP2005190038A
JP2005190038A JP2003428629A JP2003428629A JP2005190038A JP 2005190038 A JP2005190038 A JP 2005190038A JP 2003428629 A JP2003428629 A JP 2003428629A JP 2003428629 A JP2003428629 A JP 2003428629A JP 2005190038 A JP2005190038 A JP 2005190038A
Authority
JP
Japan
Prior art keywords
processor
diagnosis
diagnostic
program
failure
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2003428629A
Other languages
English (en)
Inventor
Masanao Ito
昌尚 伊藤
Tadayuki Sakakibara
忠幸 榊原
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2003428629A priority Critical patent/JP2005190038A/ja
Priority to US11/017,942 priority patent/US7421618B2/en
Publication of JP2005190038A publication Critical patent/JP2005190038A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0721Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
    • G06F11/0724Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU] in a multiprocessor or a multi-core unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Multi Processors (AREA)

Abstract

【課題】
プロセッサ障害を検出するための診断用のプログラムを実行する際、システムの性能低下を招かない診断処理方法を提供する。
【解決手段】
一個または複数個のプロセッサからなるシステムにおいて、診断プログラムが各プロセッサの診断を行うための一個または複数個のプロセス又はスレッドを所定の間隔で生成し、生成されたプロセス又はスレッドが各プロセッサ上で所定の診断を実行し、自プロセッサでの障害の発生を検出したプロセス又はスレッドは障害情報を記憶手段に格納して終了し、前記障害発生プロセッサとは別のプロセッサのプロセス又はスレッドが障害発生プロセッサの障害情報を参照して所定の障害処理を行う。
【選択図】 図1

Description

本発明は、情報処理システムを構成する要素であるプロセッサの障害をシステム稼動の状態でも検出可能な診断方法に関し、特に、診断を行うことにより発生するシステムへの負荷を低減可能な診断方法に関するものである。
情報処理システムの信頼性向上は、システム規模の大小やシステムの種別に依らず、古くからの重要な課題である。信頼性向上の対象となる部位は多岐に渡るが、特にプロセッサはシステムの中核であるため、信頼性向上のために様々な方式が用いられている。信頼性向上のためにハードウエアを設ける方法、あるいは、ソフトウエアによる方法、あるいはその両方を用いる方法である。
ハードウエアを設ける方法としては、例えば、特許文献1にあるように、プロセッサ内部に信頼性向上専用の資源を設け専用のマイクロコードを用いる方法や、あるいは、特許文献2にあるようにプロセッサとは別に信頼性向上専用のハードウエアを設ける方法、あるいは、このほかに、信頼性を高めたい資源を多重化して実装する方法など様々な方式がある。
信頼性向上のためにハードウエアを設ける方法は、診断をバックグラウンドで行うことができる点や、診断に要する時間の短縮という点では有効であるがコストの増加という問題がある。したがって、システム全体の性能、または、価格性能比に重点を置く場合には採用が困難な場合がある。このような場合、診断をソフトウエア単独で行う方式、または、最小限のハードウエアの追加を行ったうえで、診断をソフトウエアで行う方式が用いられることが多い。
信頼性向上のために診断用のプログラムを実行する方法としては、例えば、特許文献3にあるように、診断対象となる資源を占有ないし占有に近いかたちで確保し、主として診断プログラムのみを単独で実行して検査する方法がある。あるいは、特許文献4にあるように、アプリケーションを実行中に診断プログラムを並行して実行させる方法が存在する。
特開平6−28328号公報
特開平10−247185号公報 特開平6−149612号公報 特開平6−83667号公報
信頼性向上のために診断用のプログラムを実行する場合、システムの性能低下や、診断を行う頻度について問題が発生する。例えば特許文献3のように、診断プログラムのみを単独で実行して検査する場合、アプリケーションを実行中の状態では診断を行うことができない。アプリケーションの種類によっては、1週間あるいは1ヶ月の単位で連続運転するプログラムも存在するため、このような場合には十分な診断を行うことができない。
特許文献4においては、アプリケーションを実行中に診断プログラムを並行して実行可能ではあるが、診断プログラムの実行頻度に関する制御方法が開示されていないため、アプリケーションの性能低下を招きうるという問題点がある。また、特許文献4においては、診断の結果、プロセッサに障害が存在していた場合の制御方法も開示されていないため、障害発生後に十分な回復処置を行うことができない可能性があるという問題点も存在する。
本発明の目的は、前述した従来技術の問題を解決し、アプリケーションの実行の有無に関わらずプロセッサに障害が発生していないか、診断を行うことが可能で、かつ、診断実行時にアプリケーションの性能低下を最小限に留め、プロセッサ障害が発生した場合にも適切な回復処置を行うことのできる診断方法を、特別なハードウエアを用いることなく提供することにある
本発明においては、プロセッサ障害を診断するためのプログラムは、通常のアプリケーションと同様、OSの管理化で実行される。診断プログラムは実行時に、前記実行頻度を調整する手段の内容を参照し、自らの実行時間の制限を行う。具体的には、診断を行わない期間を設け、その期間は休止処理を行って、システムに対する負荷をゼロとなるように制御する。前記実行頻度を調整する手段には、1回の診断を行う時間と、診断を実行する間隔が記録されている。例えば、1回の診断を行う時間を0.1秒以下とし、診断を実行する間隔を100秒と記録しておくことで、診断プログラムは100秒毎に診断を0.1秒の時間だけ実行するため、システムへの負荷を平均0.1%以下とすることが可能となる。
診断プログラムは診断実行時にシステムに存在するプロセッサの個数分だけ自らの複製を作成し、該複製された診断プログラムはシステムの各プロセッサの上で実行され、各プロセッサについて診断を実行する。このように、通常は各プロセッサには診断のためのプログラムは存在せず、必要なときにだけ複製を作成することでシステムの資源消費がおさえられるため、システムへの負荷を軽減することができる。
プロセッサの診断の結果、障害を検出した場合には障害発生を示す情報を記録して、当該プロセッサ上の診断プログラムは処理を停止する。障害発生したプロセッサに隣接するプロセッサは、自身の診断処理を終了した後、前記障害発生を示す情報を参照し、隣接プロセッサでの障害発生を確認する。障害発生を検出した場合には、隣接プロセッサの障害を処置するための処理を行う。
障害時の処理を障害が発生したプロセッサとは別の正常なプロセッサが行うことにより、より信頼性の高い障害処理が可能となる。障害処置方法は、ユーザの指定で選択することが可能であり、例えば障害発生したプロセッサのみをシステムから切り離し、他のプロセッサは処理を継続することも可能であるし、システム全体を停止することも可能である。
本発明により、システムにおいて通常のアプリケーションを実行中にも定期的に診断プログラムを実行することが可能となるため、システムの信頼性を高めることができる。また、診断プログラムがシステムに与える負荷を制限することが可能なため、システムにおいて実行されるアプリケーションの性能低下を最小限に留めることができる。さらに、プロセッサに障害が発生した場合、障害処理を正常な隣接プロセッサがおこなうため、システムに発生する障害を未然に予防し、障害の影響を最小限に留めることが可能となる。
以下、本発明の実施の形態を図面に基づいて詳細に説明する。
図1は本発明の一実施形態によるプロセッサの診断処理方法の動作を示すフローチャートであり、図2は各プロセッサでの診断方法を示すフローチャートであり、図3はプロセッサの診断処理方法が実行されるシステムの構成を示すブロック図である。図1および図2中、S1からS25は処理手順であり、図3中、1から3はプロセッサであり、4は主記憶であり、5から6は外部記憶装置であり、7はバスであり、10はOSであり、11はアプリケーションであり、12は診断プログラムである。
図3において、プロセッサ1から3は複数個としているが、プロセッサの個数は1個でも構わないし、複数個の場合にはその個数は何個でも構わない。また図3ではプロセッサ1から3は、バス7を介して主記憶4、外部記憶装置5から6と接続されているが、接続の形態はこれ以外でも構わない。例えば、プロセッサ1から3と主記憶4の間に主記憶制御装置が介在していてもよい。プロセッサ1から3と外部記憶装置5から6との接続に関しても同様に、他の制御装置が介在していても構わない。主記憶4と外部記憶装置5から6との接続に関しても同様である。図3では外部記憶装置5および外部記憶装置6の2つが存在しているが、1つの外部記憶装置であっても構わないし、3つ以上の外部記憶装置であっても構わない。
システム起動時には、外部記憶装置5に格納されたOS10が読み出され、プロセッサ1から3がこれを実行することで、システムが使用可能となる。OS10の起動完了後、ユーザは必要に応じてアプリケーション11を実行することができる。前記OS10の起動時には、その起動過程で外部記憶装置5に格納された診断プログラム12が起動される。診断プログラム12が実行されることで、本発明の目的であるプロセッサ障害の診断を行う。OS10の起動時に診断プログラム12を起動する方法については、OS10に備えられた標準的機能を用いて行う。例えばUNIXの場合であれば、(UNIXは登録商標です)/etc/inittabというファイルに診断プログラム12の起動を示す行を加えることで、目的を達成することが可能である。この際、診断プログラム12が実行状態となっていても、ユーザは同時にアプリケーション11を実行することができる。診断プログラム12はOS10の上で実行される1つのプログラムであるため、他のプログラムの実行を妨げるものではない。
次に、図1から図3を用いてプロセッサ障害の診断の詳細について説明を行う。診断プログラム12はOS10によって起動されると、図1に示す処理手順によって実行される。まず、処理手順S1にしたがい、実行頻度の判定を行う。診断プログラム12はOS10の上で実行される1つのプログラムであるため、診断プログラム12の実行により、OS10が実行するその他のプログラム(例えばアプリケーション11)の性能に影響を及ぼす。この影響を最小限にするために実行頻度の判定を行う。診断プログラム12は前回診断を行った時刻情報を外部記憶装置6におかれた実行頻度指定情報15に記録を行っている。なお、図3では実行頻度指定情報15は外部記憶装置6におかれているが、主記憶4、または、外部記憶装置5においても構わないし、それ以外の記憶装置においてもよい。
診断プログラム12はこの時刻情報を処理手順S1において参照し、前回診断を行った時刻から一定時間が経過するまでは、診断プログラム12を休止状態とする。休止状態とすることで、他のプログラム(例えばアプリケーション11)はシステムにおいて性能低下することなく実行することが可能となる。休止状態とする手段については、OS10に備えられた標準的機能を用いて行う。例えばUNIXの場合であればsleep関数を実行することで目的を達成することが可能である。診断プログラム12を休止状態とする時間については、固定値としてもよいし、ユーザが設定できるよう、設定手段を設けても構わない。休止状態が終了して診断を開始する際、その時刻を実行頻度指定情報15に新たに記録を行う。
処理手順S1の後、処理手順S2が実行される。処理手順S2ではプロセッサ障害の診断を行うための診断項目の選択が行われる。後述するように、診断プログラム12は前回診断を行った診断項目の情報を外部記憶装置6におかれた診断内容指定情報16に記録を行っている。なお、図3では診断内容指定情報16は外部記憶装置6におかれているが、主記憶4、または、外部記憶装置5においても構わないし、それ以外の記憶装置においてもよい。
診断プログラム12はこの診断内容指定情報16を処理手順S2において参照し、今回の診断において実施する診断の内容を決定する。診断内容を図4を用いて説明する。図4は診断内容の集合を表すテーブルである。テーブル中20から24はフィールドである。フィールド20は個々の診断内容に割り当てられた番号を示しており、フィールド21は診断内容の項目を示しており、フィールド22は診断で用いる演算値を示しており、フィールド23は診断に要する時間の見積値を示している。なお、図4中、フィールド20およびフィールド21は本発明を説明するため便宜上設けたフィールドであり、実際のプログラムでは必ずしも物理的実体としてこれらのフィールドは設けなくても動作に支障はない。
図4のテーブルに示されたエントリの一つ一つが具体的な診断内容を示している。例えば、フィールド20の値が「1」であるエントリは、固定小数点演算のうち、加算が正しく行われるか否かを診断することを表しており、この診断のためにフィールド22で示される演算値を用いる。つまり、実際の診断においては、各プロセッサでフィールド22で示される「A」と「B」の値の加算を行い、「C」の値と比較を行う。両者が等しければ診断結果は正常でありプロセッサに異常はないと判断する。もし両者が等しくなければプロセッサに異常が発生したと判断して、障害処理を行う(詳細は後述する)。なお、図4ではフィールド22で示した演算値が各エントリで同じ表記になっているが、実際にはエントリ毎に異なった値であってもかまわない。
なお、上記診断にあたり、異常と判定された場合については、異常となった診断内容を複数回反復して診断を行ってもよい。例えば、あらかじめ基準回数を定めておき、一定回数以内しか異常が発生しない場合には、診断結果の報告のみを行い、後述する障害処理を行わないという処理方式をとっても構わない。
診断内容指定情報16には図4のテーブルの各エントリの内容を診断する毎に、診断が終了したエントリのフィールド20の値が格納される。ただし、後述するように、図4のテーブルの内容を複数一度に診断する場合は、診断内容指定情報16の更新はまとめて行っても構わない。また、図4においては、加減乗除算のように単純な診断項目のみを例示しているが、より複雑な診断内容であっても構わない。
このようにして、診断プログラム12はこの診断内容指定情報16を処理手順S2において参照し、今回行う診断の内容を更新していく。診断プログラム12は1回の診断で図4のテーブルの複数エントリを一度に診断することができる。このとき何項目を一度に診断すべきか判定するために図4のフィールド23の値を参照する。フィールド23の値は診断に要する時間の見積値であり、複数エントリについてこの値を積算することで診断に要する時間の総計を知ることができる。本実施例では、フィールド23の値は時間であるとしたが、最終的に実行時間の情報を得られるものであれば、フィールド23の内容は時間でなくても構わない。例えば診断の命令数などであってもよい。
1回の診断における診断時間については、固定値としてもよいし、ユーザが設定できるよう、設定手段を設けても構わない。また、例えば、診断の実行時にシステムの負荷に関する情報を収集して、この値に応じて診断時間を増減してもよい。仮に実行頻度指定情報15も用いて判断する、診断プログラムの診断間隔を100秒とし、1回の診断における診断時間を0.1秒とすれば、診断プログラム12によるシステムへの負荷を平均して0.1%以下とすることができる。このようにして、本発明では診断プログラム12を実行していても、ユーザが実行するプログラム(例えばアプリケーション11)にほとんど性能低下を与えないよう制御を行うことが可能である。また、必要に応じて診断プログラム12を優先的に実行するよう設定を行うことも可能である。
処理手順S2の後、処理手順S3が実行される。処理手順S3ではシステムで使用可能なプロセッサの数を取得する。
処理手順S3の後、処理手順S4が実行される。処理手順S4では取得したプロセッサの数に応じて、診断プログラム12の複製を行う。これは、診断プログラム12をシステムで使用可能な全てのプロセッサにおいて実行させるためである。なお、本実施例では、診断プログラム12をシステムで使用可能な全てのプロセッサにおいて同時に診断を行うものとして説明しているが、各プロセッサでの診断タイミングは必ずしも同時でなくても構わない。例えば、1回の診断時には1個のプロセッサのみ診断し、診断毎に別のプロセッサを順番に診断するような方式でも構わない。
診断プログラム12の複製は、OS10に備えられた標準的機能を用いて行う。例えばUNIXの場合であればsystem関数でもよいし、fork関数を用いてもよい。また、必ずしもプロセッサ毎にプロセスを生成せず、単一プロセスのままでマルチスレッドを用いてもよい。例えばPOSIXに準拠したシステムであれば、pthread_create関数を実行することで目的を達成することが可能である。
上記複製によって、処理手順S10からS12に示されるプロセスないしスレッドが生成される。処理手順S10からS12は後述するようにそれぞれ異なったプロセッサの上で実行されるが処理内容は全く同一である。処理手順S10からS12の処理内容を図2を用いて説明する。
最初に処理手順S20が行われる。処理手順S20では、前記処理手順S10からS12をシステムに存在する個々のプロセッサで実行させるために、バインド処理を行う。例えば、処理手順S10はプロセッサ1で実行され、処理手順S11はプロセッサ2で実行され、処理手順S12はプロセッサ3で実行されるようにバインド処理を行う。バインド処理はOS10に備えられた標準的機能を用いて行う。例えば、Sun Microsystems社のSolarisの場合には、pbindによって、HP社のHP-UXの場合にはpsrsetによって、IBM社のAIXの場合には、bindprocessorを実行することによって、目的を達成することが可能である。
処理手順S20の後、処理手順S21が実行される。処理手順S21では個々のプロセッサにおいて、具体的な診断が行われる。診断の項目については、先に図4を用いて説明したとおりである。診断内容指定情報16によって示された診断内容について、診断を実施する。
処理手順S21の後、処理手順S22が実行される。処理手順S22では診断の結果障害が存在したか否かが判定される。複数の診断内容について診断を行う場合には、複数の処理手順S21をまとめて実施の後、対応する処理手順S22をまとめて行ってもよいし、個々の診断毎に処理手順S21の後、処理手順S22を実行し、これを繰り返してもよい。個々の診断に際しては、診断状態が診断状態情報17に格納される。なお、図3では診断状態情報17は外部記憶装置6におかれているが、主記憶4、または、外部記憶装置5においても構わないし、それ以外の記憶装置においてもよい。
診断状態情報17に格納される情報について図5を用いて説明する。図5は診断状態情報17に格納される内容を表すテーブルである。テーブル中30から32はフィールドである。フィールド30は診断状態がどのプロセッサの状態であるかを示しており、フィールド31は診断実行の結果がどのような状態であるかを示しており、フィールド32は診断に関するその他の情報を示している。診断状態情報17には、プロセッサ分だけエントリが用意されている。
処理手順S22で診断結果の判定を行う度に、自プロセッサのエントリについて、診断状態情報17の内容が更新される。まず、処理手順S20において、フィールド31に状態「実行中」が格納される。そして、診断を実施する毎にフィールド32には、診断項番(図4で示したフィールド20の値)が格納される。1回の診断で行う診断内容について、すべて正常であった場合には、フィールド31に状態「実行完」が格納され、処理手順S23へ移行する。処理手順S23では今回の診断に関するログ情報の記録と、診断内容指定情報16の更新が行われる。
処理手順S22で障害が検出された場合には、処理手順S25へ移行する。そして、診断状態情報17の自プロセッサに対応するエントリにおいて、フィールド31に状態「障害」が格納される。フィールド32には、障害発生を検出した診断の診断項番(図4で示したフィールド20の値)と、障害に関する情報が格納される。障害に関する情報には診断時に行った演算結果の値、プロセッサのその他の情報などが格納される。これらの処理の後、障害の発生したプロセッサでは診断プログラム12は実行を終了する。
障害を検出して以降は、当該プロセッサでは診断プログラム12は実行されない。すなわち、それ以降の実行時には、処理手順S4において診断状態情報17の内容を参照し、フィールド31が状態「障害」となっていたプロセッサについては、診断プログラム12は実行されない。これを図6を用いて説明する。図6は診断状態情報17のフィールド31に示される状態の状態遷移を表した図である。図6中、40から42は状態である。
診断開始時には、処理手順S20において、フィールド31は状態「実行中」40になる。ただし、処理手順S20開始時に状態が「障害」42であった場合は、状態は「実行中」40にならない。診断が終了し、診断結果が正常であった場合には、状態は「実行完」41となる。通常は、状態は「実行中」40と「実行完」41のみを移る。そして障害検出時に状態は「障害」42となり、診断プログラム12の実行中は「障害」42のまま状態は保たれる。
障害検出後に、当該プロセッサを交換した場合、または、交換をしていなくても、当該プロセッサにおいて障害の再現試験を行う場合については状態は「障害」42から「実行完」41に移行させることができる。移行のための手段は診断プログラム12とは別に用意される。
障害が検出された場合、その後の処置は障害が発生したプロセッサとは別のプロセッサにおいて行われる。以下、その手順を説明する。処理手順S23の後、処理手順S24が実行される。処理手順S24では他のプロセッサでの障害発生時の処置を行う。処理手順S24においては、診断状態情報17の内容を参照し、自プロセッサに隣接しているプロセッサのフィールド31の値を確認する。もしフィールド31が状態「実行完」であれば、何もせずに処理手順S24を終了する。もしフィールド31が状態「障害」の場合には、そのプロセッサに対する障害処置を行う。この際に実行する処置の内容は固定的であってもよいし、ユーザが選択できるよう、選択手段を設けてもよい。障害処置としては、例えば、当該プロセッサのみをシステムから切り離し、残りのプロセッサについては処理を継続させてもよいし、あるいは、システム全体をシャットダウンさせてもよい。また、プロセッサの切り離しを行わず、ユーザに警告を発するだけでシステムをそのまま継続処理させてもよい。
例えば、システムに2個以上のプロセッサが存在する場合にはプロセッサの切り離しを行い、システムにプロセッサが1個だけ存在する場合にはシステム全体をシャットダウンさせるという方式でもよい。
なお、障害が発生したプロセッサの処置をどのプロセッサが行うかについては、必ずしも隣接プロセッサが行わなくてもよい。例えば、2個のプロセッサが同一のLSIに実装されているような場合には、隣接プロセッサにも障害が発生している可能性があるため、このような場合には隣接ではない対応関係をあらかじめ決めておき、その対応関係によってどのプロセッサが、どのプロセッサの障害処置を行うか上記と異なる方法を用いても構わない。
また、複数プロセッサで同時に障害が発生した場合については、同様に、対応関係を定めておき、それにしたがって処置を行えばよい。例えば、隣接プロセッサに障害が検出された場合には、さらにその隣のプロセッサに障害が発生していないか確認を行う方法などを用いればよい。
本発明においては、上記のようにプロセッサに障害が発生した場合、障害処置を他の正常なプロセッサが行うため、障害発生時でもその対応を正常に実施することのできる可能性が高く、より信頼性の高いシステムとすることが可能である。
処理手順S4で、診断プログラム12の複製を行ったプロセス(またはスレッド)は、処理手順S5を実行する。処理手順S5では各プロセッサで実行している処理手順S10からS12について、実行時間の監視を行う。既に述べたように、個々の処理手順S10からS12においては、診断時間を定められた時間以内にするための処理を行っているが、システムの状況によっては診断プログラムの実行時間があらかじめ想定した時間では終了しない場合も存在しうる。このような場合でもシステムに対する負荷を保証するために、処理手順S5では実行時間の監視を行い、もし定められた時間を超過した場合には、処理手順S10からS12を中途で打ち切り、強制終了させる。
もし、強制終了中に診断状態情報17において障害検出が見出された場合には、まず、障害が発生していないプロセッサに自身のプロセスないしスレッドのバインド処理を行う。その後、前述と同様の手順で障害処置を行い、処理手順S5を終了し、処理手順S6に移行する。
処理手順S5においては、さらに、システムの監視を行う。システムによっては稼動中にプロセッサ数の増減が可能なものが存在する。例えば、1つのハードウエアを仮想的に複数のハードウエアとして分割して使用することの可能なシステムにおいて、分割後に複数のハードウエア相互の間でプロセッサの授受を実行するようなシステムがその例である。処理手順S5ではプロセッサ数の変更要求を検出し、プロセッサ数が変化する場合、特にプロセッサ数が減少する場合に必要な処理を行う。すなわち、削減の対象となったプロセッサで実行されている診断プログラム12を強制終了させ、システムによるプロセッサの増減に速やかに対応する。処理手順S5で強制終了が必要でなかった場合には、そのまま処理手順S6に移行する。
処理手順S6では、診断プログラム12の複製の終了の待ち合わせを行う。全ての複製が終了したら、処理手順S7に移行する。処理手順S7では、診断内容指定情報16の更新を行う。すなわち、診断状態情報17のフィールド32に記録された診断項番の情報で診断内容指定情報16に更新する。
処理手順S5で強制終了が行われた場合には、診断状態情報17のフィールド32の内容はプロセッサ毎に異なっている可能性が高い。このような場合には、最も処理数の少なかったプロセッサの情報を用いて診断内容指定情報16の更新を行う。
処理手順S7の後、処理手順S8を実行する。処理手順S8では、診断プログラム12自身に問題が発生していないか自己確認を行う。問題が検出されなければ、処理手順S1に移行して、システムの診断の続行を行う。もし何らかの問題が検出された場合には、診断プログラム12を終了させる。
上記においては、診断対象をプロセッサとして説明を行ったが、本発明は診断の対象をシステムの他の資源、たとえばPCIカードのようなI/O資源に対して同様の手段で適用することが可能である。
その際、本実施例においては、図4で示した診断内容を診断対象に適合した内容に置きかえを行う。また、処理手順S21を実行する際には診断対象について、前記診断内容の診断を実施することが可能か否かの確認を行う。これは、例えばI/O資源の場合には他のプロセスの処理の途上にある可能性があるため、診断を行う時点で必ずしも全ての診断内容を実施可能とは限らないためである。
このように、診断内容を変更することで、本発明はプロセッサ以外のシステムの資源に対してもそのまま適用することができる。これにより、より広範な資源に関して、アプリケーション稼動時にシステムの障害を検出することが可能となり、システムの信頼性向上に寄与する。
次に、本発明の第2の実施の形態について説明を行う。本発明は第1の実施の形態の変形であり、第1の実施の形態よりも障害検出の効率を向上させることが可能である。
本実施例においては、図1の処理手順S2を実行する際の手順が第1の実施例とは異なる。本実施例では処理手順S2において、その実行が診断プログラム12の起動直後であった場合には、診断内容指定情報16の示す診断内容およびその前後の項番の診断内容について、通常診断を試行する回数の数倍の回数だけ診断を行う。
プロセッサで障害が発生した場合、診断プログラム12で検出する以前にシステムの障害として症状が発生してシステムダウンが起こる可能性がある。また、診断プログラム12が検出に成功した場合でも障害処置より前に診断プログラム12に障害が発生するか、システムに障害が発生するかのどちらかにより、障害を報告、処置する前にシステムダウンが起こる可能性がある。
このような場合、診断内容指定情報16に障害を検出した診断内容そのものかまたは、近傍の診断内容が格納されている可能性が高い。したがって、システム起動時に診断内容指定情報16の指し示す診断内容の近傍の診断を実行することで再度障害を検出できる可能性が高い。
このように、本実施例によれば、プロセッサ障害が発生して障害後の処置に失敗した場合でも、障害を再現させることが容易となり、障害原因を突き止めることが可能になるため、より信頼性の高いシステムを構築することが可能となる。
次に、本発明の第3の実施の形態について説明を行う。本発明は第1の実施の形態または第2の実施の形態の変形であり、第1の実施の形態または第2の実施の形態よりもシステムに負荷をかけずに診断プログラム12を実行させることが可能である。
図7は本発明の一実施形態によるプロセッサの診断処理方法と診断処理装置および診断プログラムにおいて、第1の実施の形態で述べた診断プログラム12を監視するプログラム(以下監視プログラムと呼ぶ)の動作を示すフローチャートである。図1中、S30からS34は処理手順である。
本実施例においても診断プログラム12の動作は第1の実施例と同様である。ただし、以下の一点のみ異なる。すなわち、診断プログラム12はOS10から起動されるのではなく、図7で動作を説明する監視プログラムによって起動される。
監視プログラムは診断プログラム12と同様、図3に示すシステム上で実行される。監視プログラムは、OS10の起動時にOS10によって起動される。起動方法は、第1の実施例における診断プログラム12の起動方法と同様である。起動後の監視プログラムの動作について、図7を用いて詳細に説明を行う。監視プログラムはOS10によって起動されると、図7に示す処理手順によって実行される。まず、処理手順S30にしたがい、実行頻度の判定を行う。処理手順S30の実現手段、および、目的は、第1の実施例における処理手順S1と同様である。すなわち、監視プログラムの実行がシステムに負荷を与えないようにするために、処理手順S30を行う。
処理手順S30の後、処理手順S31が実行される。処理手順S31では診断プログラム12の動作状況の確認を行う。システムに何らかの問題が発生した場合、または、診断プログラム12自身に問題点が存在したために、診断プログラム12が実行を終了していないかどうか確認を行う。また、何らかの制御の異常によって、診断プログラム12が複数個同時に起動されているような事態が発生していないかも同時に確認を行う。
上記確認の後、処理手順S32で診断プログラム12の再実行の必要性について判定を行う。診断プログラム12が実行を終了してる場合または、診断プログラム12が複数個同時に起動されているような場合には、処理手順S33に移行する。
処理手順S33では、診断プログラム12の再実行を行う。すなわち、診断プログラム12が実行を終了してる場合には、診断プログラム12を再度起動し、診断プログラム12が複数個同時に起動されているような場合には、一旦全ての診断プログラム12を終了させた後、診断プログラム12を再度起動する。
処理手順S34では監視プログラム自身に問題が発生していないか自己確認を行う。問題が検出されなければ、処理手順S30に移行して、監視の続行を行う。もし何らかの問題が検出された場合には、監視プログラムを終了させる。
監視プログラムを実行することには次のような利点が存在する。第1の実施例のままであっても、診断プログラム12の再起動だけであれば次のような手段を用いることで実現可能である。例えば、UNIXの場合であれば、/etc/inittabというファイルに診断プログラム12を登録する際に、respawn属性を指定すれば、OS10が診断プログラム12の監視を行い、診断プログラム12が停止している場合にはOS10が再起動を行う。この場合、/etc/inittabから起動するプログラムは1つに限定される。
現在存在するシステムにおいては、同一のOSであっても設定を変更するだけで複数のモードで実行できるものが存在する。例えば、32ビット/64ビットのモード切り替えをファイル設定だけで行えるシステムが存在する。しかし、32ビットモードと64ビットモードではそれぞれ専用のプログラムが必要であることが多いため、単一の診断プログラム12を用いると、プログラムサイズが巨大化するという問題点がある。32ビット/64ビット以外にもシステムに同様のモード切り替え事由が存在した場合、診断プログラム12のプログラムサイズはさらに巨大化する
このような場合、起動時にモードを判定して起動する診断プログラム12を環境に応じて切り替えられれば、より効率良く診断を行うことができる。本実施例により、起動時に診断プログラム12を選択することが可能になるため、診断プログラム12の個々のファイルサイズを削減することが可能となり、実行時に消費する主記憶容量を削減することが可能になり、したがって、プロセッサ上で消費する命令キャッシュの容量も削減可能となるため、システムに対する影響をさらに軽減することが可能になる。
診断プログラムの動作を示すフローチャートである。 診断プログラムの動作を示すフローチャートである。 診断プログラムが実行されるシステムの構成図である。 診断内容の集合を表すテーブルである。 診断状態情報に格納される内容を表すテーブルである。 診断状態の状態遷移図である。 監視プログラムの動作を示すフローチャートである。
符号の説明
1〜3 プロセッサ
4 主記憶
5、6 外部記憶装置
7 バス

Claims (9)

  1. 一個または複数個のプロセッサからなるシステムの各プロセッサの診断を行う診断処理方法において、前記システムの起動時に記憶手段から読み出された診断プログラムが起動され、前記診断プログラムが各プロセッサの診断を行うための一個または複数個のプロセス又はスレッドを所定の間隔で生成し、前記生成されたプロセス又はスレッドが各プロセッサ上で所定の診断を実行して終了することを特徴とするプロセッサの診断処理方法。
  2. 前記診断プログラムは前記プロセス又はスレッドの実行状態を監視し、所定時間内に診断の実行が終了しなかった場合には前記プロセス又はスレッドを強制終了させることを特徴とする請求項1記載のプロセッサの診断処理方法。
  3. 自プロセッサでの障害の発生を検出したプロセス又はスレッドは障害情報を記憶手段に格納して終了し、前記障害発生プロセッサとは別のプロセッサのプロセス又はスレッドが前記記憶手段に格納された前記障害発生プロセッサの障害情報を参照して所定の障害処理を行うことを特徴とする請求項1記載のプロセッサの診断処理方法。
  4. 前記所定の障害処理は、障害が発生したプロセッサのみをシステムより切り離す処理であるか又はシステム全体を停止する処理であることを特徴とする請求項3記載のプロセッサの診断処理方法。
  5. 前記システムの起動時に監視プログラムが起動され、前記監視プログラムが所定の診断プログラムを起動し、起動した診断プログラムの走行状態を監視し、前記診断プログラムに異常があれば前記診断プログラムの停止又は再起動を行うことを特徴とする請求項1記載のプロセッサの診断処理方法。
  6. 前記システムはプロセッサ構成を動的に変更可能なシステムであって、前記診断プログラムがプロセッサの構成変更を検出した場合には、構成変更後の各プロセッサ上で診断を実行させることを特徴とする請求項1記載のプロセッサの診断処理方法。
  7. 前記診断プログラムはプロセッサ診断を実行中にプロセッサの構成変更を検出した場合には、プロセッサ診断の実行を中断し、プロセッサの構成変更の完了後にプロセッサ診断の再実行を行わせることを特徴とする請求項6記載のプロセッサの診断処理方法。
  8. プロセッサを診断する内容は独立に実行可能な複数の診断内容の集合として構成され、前回診断を行った診断内容を示す診断内容指定情報を格納する記憶手段を備え、前記診断プログラムは前記診断内容指定情報により今回診断を行う診断内容を決定することを特徴とする請求項1記載のプロセッサの診断処理方法。
  9. 一個または複数個のプロセッサを具備するコンピュータシステムに各プロセッサの診断を実行させるための診断処理プログラムであって、プロセッサ診断を実行しない期間に休止処理を行うステップと、プロセッサ診断を開始するタイミングを決定するステップと、システム上のプロセッサ数に対応してプロセッサ診断のための一個または複数のプロセス又はスレッドを生成するステップと、前記生成されたプロセス又はスレッドをシステム上の各プロセッサ上で実行させるステップとをコンピュータシステムに実行させるための診断処理プログラム。
JP2003428629A 2003-12-25 2003-12-25 プロセッサの診断処理方法および診断処理プログラム Pending JP2005190038A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2003428629A JP2005190038A (ja) 2003-12-25 2003-12-25 プロセッサの診断処理方法および診断処理プログラム
US11/017,942 US7421618B2 (en) 2003-12-25 2004-12-22 Method for processing a diagnosis of a processor, information processing system and a diagnostic processing program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003428629A JP2005190038A (ja) 2003-12-25 2003-12-25 プロセッサの診断処理方法および診断処理プログラム

Publications (1)

Publication Number Publication Date
JP2005190038A true JP2005190038A (ja) 2005-07-14

Family

ID=34787522

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003428629A Pending JP2005190038A (ja) 2003-12-25 2003-12-25 プロセッサの診断処理方法および診断処理プログラム

Country Status (2)

Country Link
US (1) US7421618B2 (ja)
JP (1) JP2005190038A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009157457A (ja) * 2007-12-25 2009-07-16 Optim Corp 端末装置、故障診断方法およびプログラム
WO2009144824A1 (ja) * 2008-05-30 2009-12-03 富士通株式会社 情報処理装置、転送回路及び情報処理装置のエラー制御方法
JP2010231502A (ja) * 2009-03-27 2010-10-14 Hitachi Ltd ジョブ処理方法、ジョブ処理プログラムを格納したコンピュータ読み取り可能な記録媒体、および、ジョブ処理システム
JP2014504466A (ja) * 2010-11-19 2014-02-20 アルカテル−ルーセント 電気通信ネットワークにおけるセル回復のための方法およびシステム
WO2014203318A1 (ja) * 2013-06-17 2014-12-24 富士通株式会社 情報処理装置、情報処理方法、及び情報処理プログラム

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9223629B2 (en) * 2007-01-31 2015-12-29 Hewlett-Packard Development Company, L.P. Data processing system and method
US8856196B2 (en) * 2008-07-22 2014-10-07 Toyota Jidosha Kabushiki Kaisha System and method for transferring tasks in a multi-core processor based on trial execution and core node
US8103916B2 (en) * 2008-12-01 2012-01-24 Sap Ag Scheduling of checks in computing systems
JP5316128B2 (ja) 2009-03-17 2013-10-16 トヨタ自動車株式会社 故障診断システム、電子制御ユニット、故障診断方法
JP2012027544A (ja) * 2010-07-20 2012-02-09 Toshiba Corp ライトバックキャッシュを備える情報処理装置、及びその主メモリ診断方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0628328A (ja) 1992-07-08 1994-02-04 Nec Corp マルチプロセサの自己診断方式
JPH0683667A (ja) 1992-08-28 1994-03-25 Nec Corp 情報処理装置の診断方式
JPH06149612A (ja) 1992-11-10 1994-05-31 Fujitsu Ltd 診断テスト方式
US5675731A (en) * 1995-09-22 1997-10-07 Sun Microsystems, Inc. Scatter load for system test
JPH103397A (ja) 1996-06-18 1998-01-06 Toshiba Corp 計算機システム
JPH10247185A (ja) 1997-03-04 1998-09-14 Nec Corp プロセッサの故障診断方式
US5857097A (en) * 1997-03-10 1999-01-05 Digital Equipment Corporation Method for identifying reasons for dynamic stall cycles during the execution of a program
US6321376B1 (en) * 1997-10-27 2001-11-20 Ftl Systems, Inc. Apparatus and method for semi-automated generation and application of language conformity tests
US6360333B1 (en) * 1998-11-19 2002-03-19 Compaq Computer Corporation Method and apparatus for determining a processor failure in a multiprocessor computer

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009157457A (ja) * 2007-12-25 2009-07-16 Optim Corp 端末装置、故障診断方法およびプログラム
WO2009144824A1 (ja) * 2008-05-30 2009-12-03 富士通株式会社 情報処理装置、転送回路及び情報処理装置のエラー制御方法
US8042008B2 (en) 2008-05-30 2011-10-18 Fujitsu Limited Information processing device, transfer circuit and error controlling method for information processing device
JP5099222B2 (ja) * 2008-05-30 2012-12-19 富士通株式会社 情報処理装置、転送回路及び情報処理装置のエラー制御方法
JP2010231502A (ja) * 2009-03-27 2010-10-14 Hitachi Ltd ジョブ処理方法、ジョブ処理プログラムを格納したコンピュータ読み取り可能な記録媒体、および、ジョブ処理システム
JP2014504466A (ja) * 2010-11-19 2014-02-20 アルカテル−ルーセント 電気通信ネットワークにおけるセル回復のための方法およびシステム
WO2014203318A1 (ja) * 2013-06-17 2014-12-24 富士通株式会社 情報処理装置、情報処理方法、及び情報処理プログラム
JP6070840B2 (ja) * 2013-06-17 2017-02-01 富士通株式会社 情報処理装置、情報処理方法、及び情報処理プログラム

Also Published As

Publication number Publication date
US20050166089A1 (en) 2005-07-28
US7421618B2 (en) 2008-09-02

Similar Documents

Publication Publication Date Title
JP6377703B2 (ja) データ処理システムの再開
JP4222370B2 (ja) デバッグ支援装置及びデバッグ処理方法をコンピュータに実行させるためのプログラム
JPH0820965B2 (ja) プログラムの実行を続行する方法
US20080010506A1 (en) Multi-CPU computer and method of restarting system
JPH09258995A (ja) 計算機システム
JP2017041263A (ja) プロセスの再開
US20210109800A1 (en) Method and apparatus for monitoring device failure
JPH0950424A (ja) ダンプ採取装置およびダンプ採取方法
US10379931B2 (en) Computer system
JP2005190038A (ja) プロセッサの診断処理方法および診断処理プログラム
US20050033952A1 (en) Dynamic scheduling of diagnostic tests to be performed during a system boot process
JP2008083996A (ja) 情報処理装置、その制御装置、その制御方法及び制御プログラム
JP2770913B2 (ja) パリティの置換装置及び方法
JPH02294739A (ja) 障害検出方式
JP2000099372A (ja) コンピュータシステム
JP6060781B2 (ja) 障害診断装置およびプログラム
TWI736564B (zh) 用於診斷執行指令串流的處理器之方法、設備、及系統
JP5921306B2 (ja) 情報処理装置および情報処理方法およびプログラム
JP2008217665A (ja) マルチプロセッサシステム、タスクスケジューリング方法およびタスクスケジューリングプログラム
JPH10198578A (ja) デバッグ方式およびデバッグ方法
JP2922981B2 (ja) タスクの実行継続方法
JP2979553B2 (ja) 障害診断方式
US7853827B2 (en) Isotropic processor
JP2013097634A (ja) マルチプロセッサシステムの障害回復方法
JPH033041A (ja) タイムアウト監視回路

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060310

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20060424

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20071218

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080218

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080513

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080714

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20080909