JPWO2012004854A1 - プロセッサ装置及びプログラム - Google Patents

プロセッサ装置及びプログラム Download PDF

Info

Publication number
JPWO2012004854A1
JPWO2012004854A1 JP2012523458A JP2012523458A JPWO2012004854A1 JP WO2012004854 A1 JPWO2012004854 A1 JP WO2012004854A1 JP 2012523458 A JP2012523458 A JP 2012523458A JP 2012523458 A JP2012523458 A JP 2012523458A JP WO2012004854 A1 JPWO2012004854 A1 JP WO2012004854A1
Authority
JP
Japan
Prior art keywords
memory
memory dump
dump
unit
processor device
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.)
Granted
Application number
JP2012523458A
Other languages
English (en)
Other versions
JP5225515B2 (ja
Inventor
敦 攝津
敦 攝津
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Application granted granted Critical
Publication of JP5225515B2 publication Critical patent/JP5225515B2/ja
Publication of JPWO2012004854A1 publication Critical patent/JPWO2012004854A1/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1629Error detection by comparing the output of redundant processing systems
    • G06F11/165Error detection by comparing the output of redundant processing systems with continued operation after detection of the error
    • 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/0766Error or fault reporting or storing
    • G06F11/0778Dumping, i.e. gathering error/state information after a fault for later 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/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/0766Error or fault reporting or storing
    • G06F11/0787Storage of error reports, e.g. persistent data storage, storage using memory protection
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant

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)
  • Debugging And Monitoring (AREA)

Abstract

プロセッサコア2のメモリダンプ実施部35が共有メモリであるメモリ装置5のデータをHDD装置7に保存しているときに異常が発生した場合に、メモリダンプ異常検出部37がメモリダンプ異常を検出し、コア連携部36がプロセッサコア1のコア連携部30にメモリダンプ異常を通知し、プロセッサコア1のメモリダンプ実施部29がコア連携部30からメモリダンプ実施部35のメモリダンプ異常を通知され、メモリダンプ実施部35に代わってメモリ装置5のデータをHDD装置7に保存する。

Description

本発明は、プロセッサ装置がメモリ装置のデータを二次記憶装置に保存するメモリダンプ技術に関する。
計算機システムにおいて、障害発生時にメモリ装置(以下、単にメモリともいう)の内容を二次記憶装置に保存(これをメモリダンプと呼ぶ)しておき、障害原因の解析に活用する手法が一般的に利用されている。
従来のメモリダンプ方式では、障害が発生したプロセッサ装置(以下、単にプロセッサともいう)自身が二次記憶装置に保存するのが一般的であったが、この場合、障害が発生したプロセッサにて二次記憶装置に保存できない場合、メモリダンプを実施することができなかった。
これを解決する方法として、例えば、特許文献1に記載の方法がある。
特許文献1の方法では、障害発生プロセッサが二次記憶装置にアクセスできる場合は、障害発生プロセッサが障害処理プログラムを共有メモリにロードし、共有メモリにロードされた障害処理プログラムを用いて固有メモリの内容を二次記憶装置に保存する。
一方、障害発生プロセッサが二次記憶装置にアクセスできない場合は、まず、健全なプロセッサの中から特定のプロセッサが支援プロセッサとして選定される。
そして、支援プロセッサが障害処理プログラムを共有メモリにロードし、障害発生プロセッサが共有メモリにロードされた障害処理プログラムを用いて固有メモリの内容を共有メモリにコピーする。
次に、支援プロセッサが共有メモリにコピーされた障害発生プロセッサの固有メモリのデータを二次記憶装置に保存する。
特開平8−30565号公報
上記従来技術においては、障害発生プロセッサが固有メモリの内容を二次記憶装置に保存できるか否かは、プロセッサ装置情報に予め設定された構成情報を元に決めている。
そして、障害発生プロセッサが固有メモリの内容を二次記憶装置に保存できる設定になっている場合に、障害発生プロセッサが障害処理プログラムを用いて固有メモリの内容を二次記憶装置に保存している最中に、障害処理プログラムが異常になると、二次記憶装置への保存ができない。
障害処理プログラムが異常になるケースとしては、障害処理プログラムが共有メモリに保持されている場合に、プログラムコードに、別コードから書込みが発生し、コードが不正になってしまう(いわゆるプログラムのバグにより発生する)ケースがある。
更に、障害処理プログラムが異常になるケースとしては、プロセッサが論理アドレス空間を物理アドレス空間に変換するMMU(Memory Management Unit)を備え、障害処理プログラムコードが論理アドレス空間を用いて動作している場合、障害情報(障害発生プロセッサの固有メモリの内容)が保存されている領域の論理アドレス空間をアクセスするための変換テーブルに別コードから書込みが発生し、論理アドレス空間設定が不正になるようなケースが考えられる。
このようなケースに至った場合、障害発生プロセッサが固有メモリの内容を二次記憶装置に保存できる設定になっていても、二次記憶装置に固有メモリの内容を保存している最中に異常となってしまうため、保存ができない。
また、支援プロセッサが障害発生プロセッサの固有メモリの内容を二次記憶装置に保存するケースでも、障害発生プロセッサが固有メモリの内容を共有メモリに保存する最中に異常となってしまうと、保存ができない。
さらには、支援プロセッサが共有メモリから障害発生プロセッサの固有メモリの内容を二次記憶装置に保存する際でも、保存処理を行うプログラムや共有メモリの論理アドレス空間に対して上記のような現象が発生した場合は、二次記憶装置に保存することができなくなる。
この発明は、上記のような課題を解決することを主な目的とし、複数のプロセッサ装置がメモリ装置を共有する構成において、メモリダンプを試行するプロセッサ装置がメモリダンプを正常に行えない状態になっていても、別のプロセッサ装置によりメモリダンプが確実に実施できる機構を得ることを主な目的とする。
本発明に係るプロセッサ装置は、
メモリ装置のメモリダンプを行う他のプロセッサ装置と接続され、前記メモリ装置を前記他のプロセッサ装置と共有しているプロセッサ装置であって、
前記他のプロセッサ装置においてメモリダンプが正常に行われていないことを検出する障害検出部と、
前記障害検出部により前記他のプロセッサ装置においてメモリダンプが正常に行われていないことが検出された場合に、前記他のプロセッサ装置に代わって、前記メモリ装置のメモリダンプを行うメモリダンプ実施部とを有することを特徴とする。
本発明によれば、障害検出部が他のプロセッサ装置においてメモリダンプが正常に行われていないことを検出した場合に、メモリダンプ実施部が他のプロセッサ装置に代わってメモリ装置のメモリダンプを行うため、メモリダンプを試行するプロセッサ装置がメモリダンプを正常に行えない状態になっていても、メモリダンプが確実に実施できる。
実施の形態1に係るハードウェア構成例を示す図。 実施の形態1に係るソフトウェア構成例を示す図。 実施の形態1に係る障害発生時の動作例を示す図。 実施の形態1に係る障害発生時の動作例を示す図。 実施の形態1に係る障害発生時の動作例を示すフローチャート図。 実施の形態1に係る障害発生時の動作例を示すフローチャート図。 実施の形態2に係るハードウェア構成例を示す図。 実施の形態2に係るソフトウェア構成例を示す図。 実施の形態2に係る障害発生時の動作例を示す図。 実施の形態2に係る障害発生時の動作例を示す図。 実施の形態2に係る障害発生時の動作例を示すフローチャート図。 実施の形態2に係る障害発生時の動作例を示すフローチャート図。 実施の形態3に係るソフトウェア構成例を示す図。 実施の形態3に係る障害発生時の動作例を示す図。 実施の形態3に係る障害発生時の動作例を示す図。 実施の形態3に係る障害発生時の動作例を示すフローチャート図。 実施の形態3に係る障害発生時の動作例を示すフローチャート図。 実施の形態4に係るソフトウェア構成例を示す図。 実施の形態4に係る障害発生時の動作例を示す図。 実施の形態4に係る障害発生時の動作例を示す図。 実施の形態4に係る障害発生時の動作例を示すフローチャート図。 実施の形態4に係る障害発生時の動作例を示すフローチャート図。 実施の形態5に係るソフトウェア構成例を示す図。 実施の形態5に係る障害発生時の動作例を示す図。 実施の形態5に係る障害発生時の動作例を示す図。 実施の形態5に係る障害発生時の動作例を示す図。 実施の形態5に係る障害発生時の動作例を示すフローチャート図。 実施の形態5に係る障害発生時の動作例を示すフローチャート図。 実施の形態5に係る障害発生時の動作例を示すフローチャート図。
実施の形態1.
本実施の形態では、複数のプロセッサコアがメモリを共有しているハードウェア構成における、メモリダンプ方式を説明する。
より具体的には、本実施の形態は、各プロセッサコアの上で複数のオペレーティングシステムおよびアプリケーションが動作している構成において、1つのプロセッサコアに障害が発生し、そのプロセッサコア上で動作しているOSにて二次記憶装置にメモリ内容を保存している最中に、当該プロセッサコアにおいて異常が発生した場合のメモリダンプ方式に関する。
そして、本実施の形態では、メモリダンプを実施しているプロセッサコアにて異常を検出し、異常を検出したプロセッサコアが、別プロセッサコアにメモリダンプを指示し、別プロセッサコアが、二次記憶装置にメモリ内容を保存することにより、メモリダンプ処理中に障害が発生しても、メモリダンプが確実に実施できるメモリダンプ方式を説明する。
以下、実施の形態1に係るメモリダンプ方式を図を用いて説明する。
図1は、本実施の形態に係るメモリダンプ方式におけるハードウェア(H/W)構成例を示す。
図中、1、2、3が演算処理を行うプロセッサコアであり、お互いが、バス4で結合される。
各プロセッサコアは、プロセッサ装置の例である。
また、バス4を通して、プロセッサコア1、プロセッサコア2、プロセッサコア3と、メモリ装置5、コンソール装置6、ハードディスク装置(以下、HDD装置とも表記する)7及びバックアップメモリ装置8が結合されている。
メモリ装置5は、オペレーティングシステム(以下、OSとも表記する)のコードやデータ、およびアプリケーション(以下、APとも表記する)のコードやデータ、およびヒープ/スタックを保持する。
前述したように、プロセッサコア1、プロセッサコア2、プロセッサコア3は、メモリ装置5を共有している。
コンソール装置6は、OSやAPからのメッセージを出力する。
ハードディスク装置7は、メモリダンプ時にメモリ装置5の内容を格納する。
バックアップメモリ装置8は、HDD装置7上にある、メモリ装置5の内容を保存するためのファイルの情報を保持している。
プロセッサコア1、プロセッサコア2、プロセッサコア3には、それぞれ、演算処理を行う演算処理部9(プロセッサコア1)、10(プロセッサコア2)、11(プロセッサコア3)、メモリ装置5の内容および演算処理部の処理結果を一時的に保持しておくキャッシュ12(プロセッサコア1)、13(プロセッサコア2)、14(プロセッサコア3)、および、各プロセッサコア間で通信を行うためのプロセッサコア間通信機能15(プロセッサコア1)、16(プロセッサコア2)、17(プロセッサコア3)が存在する。
プロセッサコア間通信機能については、プロセッサコアに割込みを通知する方法や、メモリ装置5を介して、通信したいプロセッサコアが通信先プロセッサコアが参照するメモリ領域に印をつけ、通信先プロセッサコアがそれを参照することにより、通知を把握する方法などが利用される。
本実施の形態では、3つのプロセッサコアを図示しているが、3つである必要はなく、2つのプロセッサコアでも、4つ以上のプロセッサコアでも、動作そのものに変更はない。
図2は、図1で示したH/W構成に対する、ソフトウェア(S/W)の構成例を示す図である。
図中、プロセッサコア1ではオペレーティングシステム(OS)21が動作する。
同様に、プロセッサコア2ではOS22が、プロセッサコア3ではOS23が動作する。
また、HDD装置7には、メモリ装置5の内容を保存するための記憶領域であるダンプファイル24が存在し、バックアップメモリ装置8には、ダンプファイル24のHDD装置7内での位置情報などが格納されたファイル情報格納領域25が存在する。
プロセッサコア1のOS21には、プロセッサコア1のリセット時に動作し、OS21自身の初期化を行うOS初期化部26、ダンプファイル24の情報をファイル情報格納領域25に設定するメモリダンプ設定部27(ダンプ設定部27とも表記する)、OS21動作中に不正命令が実行されたり、不正アドレスへのアクセスが発生したことによりOS21がこれ以上動作できなくなったときに、その異常を検出する異常検出部28が存在する。
また、OS21には、異常検出部28からの指示により、ファイル情報格納領域25にあるダンプファイル情報を元に、メモリ装置5の内容をダンプファイル24に書き込むメモリダンプ実施部29(ダンプ実施部29とも表記する)が存在する。
後述するように、メモリダンプ実施部29は、他のプロセッサコア(例えば、プロセッサコア2)においてメモリダンプが正常に行われていないことが検出された場合に、他のプロセッサコアに代わって、メモリ装置5のメモリダンプを行う。
更に、OS21には、プロセッサコア間の通信を行うためのコア連携部30と、メモリダンプ実施部29の処理中に異常が発生した場合に、その異常を検出するメモリダンプ異常検出部31(ダンプ異常検出部31とも表記する)が存在する。
プロセッサコア2のOS22にも、同様な手段として、OS初期化部32、メモリダンプ設定部33(ダンプ設定部33とも表記する)、異常検出部34、メモリダンプ実施部35(以下、ダンプ実施部35とも表記する)、コア連携部36、メモリダンプ異常検出部37(ダンプ異常検出部37とも表記する)が存在する。
また、図2では、図示を省略しているが、プロセッサコア3のOS23にも、同様な手段として、OS初期化部、メモリダンプ設定部、異常検出部、メモリダンプ実施部、コア連携部、メモリダンプ異常検出部が存在する。
OS23における各要素を言及する場合には、OS初期化部38、メモリダンプ設定部39、異常検出部40、メモリダンプ実施部41、コア連携部42、メモリダンプ異常検出部43と表記する。
なお、コア連携部30、コア連携部36及びコア連携部42は、それぞれ、障害検出部、メモリダンプ完了通知部及びメモリダンプ要求部の例に相当する。
また、メモリダンプ異常検出部31、メモリダンプ異常検出部37及びメモリダンプ異常検出部43は、メモリダンプ要求部の例に相当する。
後述するように、プロセッサコア2がメモリダンプを試行するケースにおいては、メモリダンプ異常検出部37がメモリダンプ実施部35によるメモリダンプの実施状況を監視する。
そして、メモリダンプ異常検出部37がメモリダンプ実施部35においてメモリダンプが正常に行われていないことを検出した場合に、コア連携部36が、例えばプロセッサコア1のコア連携部30に、メモリダンプ実施部35の代わりにメモリ装置5のメモリダンプを実施するよう要求する。
また、コア連携部30は、コア連携部36から、メモリダンプの要求、つまりプロセッサコア2においてメモリダンプが正常に行われていない旨の通知を受け、プロセッサコア2においてメモリダンプが正常に行われていないことを検出する。
また、プロセッサコア1のメモリダンプ実施部29においてメモリダンプが正常に完了した場合は、コア連携部30はコア連携部36にメモリダンプが正常に完了したことを通知する。
プロセッサコア1、プロセッサコア2、プロセッサコア3上で動作しているOS21、OS22、OS23の実行コードやデータ、および各OS上で動作するアプリケーション(AP)は、メモリ装置5内に存在する。
そのため、メモリ装置5には、OS21が利用しているOS21用領域44と、OS22が利用しているOS22用領域と、OS23が利用しているOS23用領域が存在している。
各OS用領域は、コードやデータが重なるとOSが動作できなくなるため、互いに独立して(異なる物理アドレスにて)メモリ装置5内に配置される。
また、各OS内の要素も、各OS用領域に存在し、OS21のメモリダンプ実施部29やコア連携部30などのコードやデータは、OS21用領域44のメモリダンプ実施部290(ダンプ実施部290とも表記する)、コア連携部300などとして存在し、同様に、OS22の各要素およびOS23の各要素も、それぞれOS22用領域45、OS23用領域46に存在する。
OS22用領域45においても、メモリダンプ実施部35やコア連携部36などのコードやデータは、メモリダンプ実施部350(ダンプ実施部350とも表記する)、コア連携部360などとして存在する。
更に、OS23用領域46においても、メモリダンプ実施部41やコア連携部42などのコードやデータは、メモリダンプ実施部410(ダンプ実施部410とも表記する)、コア連携部420などとして存在する。
次に、本実施の形態におけるメモリダンプ方式の障害発生時の動作例を、図3、図4内の矢印および図5、図6のフローチャートを用いて説明する。
なお、図3、図4では、作図上の理由から、プロセッサコア3、メモリ装置5内のOS23用領域46、コンソール装置6の図示を省略している。
図3〜図6では、プロセッサコア2上で動作するOS22に障害が発生し、かつ、OS22のメモリダンプ実施部35のメモリ装置5上のコード・データであるOS22用領域45内のメモリダンプ実施部350のデータが破壊されていた場合の例を説明する。
まず、OS22動作中に障害が発生すると、OS22の異常検出部34がその異常を検出する(図5のS101)。
この異常検出は、リソース不足によってOS22が単独で異常と検出できるものや、不正アドレスアクセスや、不正命令実装によって、プロセッサコア2上で例外が発生することによって異常と検出されるものがある。
これら異常が異常検出部34によって検出されると、異常検出部34は、異常の原因特定などの処理をした後、メモリダンプ実施部35にメモリダンプの指示を出す(図3及び図5のS102)。
メモリダンプ指示を受けたメモリダンプ実施部35は、メモリダンプ実施中に発生するプロセッサコア2の例外を、再度異常検出部34が検出しない(検出すると、再度メモリダンプ指示が発生するので)ように、例外が発生した場合、メモリダンプ異常検出部37が検出するようにプロセッサコア2を設定した後、バックアップメモリ装置8内にあるファイル情報格納領域25からHDD装置7内にあるダンプファイル24の位置情報を取得する(図3及び図5のS103)。
次に、メモリダンプ実施部35は、取得した位置情報を元に、HDD装置7内のダンプファイル24にメモリ装置5の内容を書き込む(図3及び図5のS104)。
ここで、メモリ装置5のOS22用領域45内のメモリダンプ実施部350のデータが破壊されていなければ、メモリダンプ実施部35の動作に支障がないので、メモリダンプ実施部35のメモリダンプ処理は正常に終了する。
しかし、メモリ装置5のOS22用領域45のメモリダンプ実施部350のデータが破壊されていた場合、メモリダンプ実施部35の動作は不定になり、不正命令実行や不正アクセスにより、プロセッサコア2上で例外が発生する。
この場合、すでにメモリダンプ実施部35の動作は不正になっているため、再度メモリダンプ実施部35を動作させても、メモリダンプを正常に動作させることができない。
メモリダンプ異常検出部37は、メモリダンプ実施部35のメモリダンプの実施状況を監視しているため、プロセッサコア2上で例外が発生したことがメモリダンプ異常検出部37によって検出される(図3及び図5のS105)。
異常を検出すると、メモリダンプ異常検出部37は、コア連携部36に別プロセッサコアへの通知(メモリダンプの実施要求を含む通知)を指示する(図3及び図5のS106)。
メモリダンプ異常検出部37から指示を受けたコア連携部36は、通知を送信すべきプロセッサコアを選択する。
ここでは、コア連携部36はプロセッサコア1に通知を行う(図3及び図5のS107)。
プロセッサコアの選択については、特定のプロセッサコアを予め決めておく方法や、各プロセッサコアの負荷状況をメモリ装置5内に記録するようにし、一番負荷が低いプロセッサコアを選択する、などの方法がある。
また、プロセッサコアへの通知については、プロセッサコア間割込みを利用するものや、メモリ装置5内の共通領域への読み書きによって同期を取る方法が取られる。
本実施の形態では、このような方法により、プロセッサコア2のコア連携部36は、プロセッサコア1を選択し、プロセッサコア1へ通知を行う。
この通知は、プロセッサコア1のコア連携部30が受信する(図6のS108)。
プロセッサコア1のコア連携部30は、プロセッサコア2のコア連携部36からの通知を受信すると、メモリダンプ実施部29に対し、メモリダンプを指示する(図4及び図6のS109)。
メモリダンプ実施部29は、バックアップメモリ装置8内にあるファイル情報格納領域25からHDD装置7内にあるダンプファイル24の位置情報を取得し(図4及び図6のS110)、取得した位置情報を元に、HDD装置7内のダンプファイル24にメモリ装置5の内容を書き込む(図4及び図6のS111)。
メモリ装置5内のOS22用領域45内のメモリダンプ実施部350のデータは破壊されているものの、メモリ装置5内のOS21用領域44のメモリダンプ実施部290の動作には支障がないので、メモリダンプ実施部29のメモリダンプは正常に終了する。
メモリダンプ実施部29は、メモリダンプが終了すると、コア連携部30に対し、メモリダンプ終了の通知を行う(図4及び図6のS112)。
コア連携部30は、通知元であるプロセッサコア2に対し処理完了の通知を行う(図4及び図6のS113)。
この通知は、プロセッサコア2のコア連携部36が受信する(図5のS114)。
プロセッサコア2のコア連携部36は、プロセッサコア1のコア連携部30からの通知を受信すると、メモリダンプ異常検出部37に処理完了の通知を行う(図4及び図5のS115)。
この通知を受けて、メモリダンプ異常検出部37は、異常検出部34に処理完了の通知を行う(図4及び図6のS116)。
通知を受けた異常検出部34は、メモリ内容が保存されたことにより、装置を停止または再起動する(図4及び図6のS117)。
以上がこの実施の形態におけるメモリダンプ方式の障害発生時の動作である。
以上のように、実施の形態1によるメモリダンプ方式では、1つのプロセッサコアに障害が発生し、そのプロセッサコア上で動作しているOSにて二次記憶装置にメモリ内容を保存している最中に、メモリダンプ実施部内にて異常が発生した時に、別プロセッサコアにメモリダンプを指示し、別プロセッサコア上にてメモリダンプを実施する。
このため、メモリダンプ処理中に障害が発生しても、メモリダンプが確実に実施できる。
なお、プロセッサコア1のメモリダンプ実施部29の処理にて、プロセッサコア2のメモリダンプ実施部35が実施したのと同様に、プロセッサコア1の例外を、メモリダンプ異常検出部31が検出するように、プロセッサコア1に設定し、プロセッサコア1のメモリダンプ実施部29の処理中に異常が発生した時に、さらに別のプロセッサコア(例えば、プロセッサコア3)にメモリダンプを指示するようにしてもよい。
このようにすることで、メモリダンプがさらに確実に実施できる。
また、本実施の形態では、プロセッサコア1のメモリダンプ実施部29によるメモリダンプ処理が終了した後、コア連携部30を介して、プロセッサコア2の異常検出部34に処理完了を通知し、プロセッサコア2の異常検出部34にて装置の停止または再起動を実施している。
これにつき、メモリダンプ実施部29が、プロセッサコア1の異常検出部28に処理完了を通知し、異常検出部28にて装置の停止または再起動を行うことでも、同様なメモリダンプ方式を得ることができる。
また、本実施の形態では、メモリダンプ実施部35の処理内での異常について、プロセッサコア2の例外発生をメモリダンプ異常検出部37が検出することにより、異常を検出している。
これにつき、例外発生ではなく、利用したデータが不正であることをメモリダンプ実施部35が検出した時に、メモリダンプ異常検出部37に異常を通知することでも、同様なメモリダンプ方式を得ることができる。
また、本実施の形態では、メモリダンプ実施部35の処理内での異常について、プロセッサコア2の例外発生をOS22内のメモリダンプ異常検出部37が検出することにより、異常を検出している。
これをH/Wの仮想化支援機能を利用し、OS22が動作できないような状態(例えば、ダブルフォルト)では、仮想化支援機能にてOS22とは別の機能(仮想化支援コード)が動作し、その中で、プロセッサコア1へのメモリダンプ指示を行うことでも、同様なメモリダンプ方式を得ることができる。
また、仮想化支援機能とは別に、プロセッサコアの例外発生を、従来からプロセッサコアに備えられているシステム管理モード(System Management Mode:SMM)に遷移するようにし、SMMモードで動作するコード内にて、プロセッサコア1へのメモリダンプ指示を行うことでも、同様なメモリダンプ方式を得ることができる。
つまり、メモリダンプ実施部35の処理内での異常を検出するのは、OS22(プロセッサコア2)に限らず、OS21(プロセッサコア1)やOS23(プロセッサコア3)を含む、他の機構であってもよい。
また、本実施の形態では、メモリダンプ実施部35の処理内での異常を、メモリダンプ異常検出部37にて検出するようにしている。
これにつき、異常検出部34が異常検出時にメモリダンプ実施中か否かを判断し、メモリダンプ実施中でなければ、メモリダンプ実施部35にメモリダンプ指示をし、メモリダンプ実施中であれば、コア連携部36に別プロセッサコアへの通知を指示するようにすることで、メモリダンプ異常検出部37を必要とすることなく、同様なメモリダンプ方式を得ることができる。
異常検出部34がメモリダンプ実施中か否かを判断する方法としては、異常検出時に実行していたコード位置が、メモリダンプ実施部35のコード内であるか否かを判断することや、メモリダンプ実施部35がメモリダンプ開始時に、メモリ装置5内の特定の領域にマーキングし、それを異常検出部34が読み取ることで判断することができる。
また、本実施の形態では、プロセッサコア1、2、3上のOSに同様な機能を持たせているが、1つのプロセッサコアにコア連携部およびメモリダンプ実施部のみを備え、メモリダンプ専用とし、他のOSのメモリダンプ中に異常が発生した場合、メモリダンプ専用のプロセッサコアに通知することでも、同様なメモリダンプ方式を得ることができる。
なお、プロセッサコア2のメモリダンプ実施部35がメモリダンプを実施している最中にメモリダンプ実施部350が破損した場合には、破損時には既にメモリ装置5の一部のデータはHDD装置7に保存されている。
しかしながら、プロセッサコア1のメモリダンプ実施部29は、メモリダンプ実施部35によりどのデータがHDD装置7に保存されているかを確認できないので、メモリダンプ実施部35におけるメモリダンプの進捗状況にかかわらず、メモリダンプを最初からやり直す。
以上、本実施の形態では、
複数のプロセッサコアと、各プロセッサコアが共有するメモリと、障害発生時のメモリ内容を保存する二次記憶装置を備えたハードウェア上にて、複数のオペレーティングシステム(OS)が動作している構成において、以下の構成要素を含む、メモリダンプ方式を説明した。
(1)各プロセッサコア上のOSに以下の構成要素を持つ。
(a)障害発生時にメモリ内容を二次記憶装置に保存する手段
(b)二次記憶装置に保存する間に発生する異常を検出する手段
(c)上記(b)の手段から呼び出され、他プロセッサコアに通知を行う手段
(d)他プロセッサコアからの通知を受け、上記(a)の手段を呼び出す手段
実施の形態2.
本実施の形態では、複数のプロセッサコアと、論理アドレス空間を物理アドレス空間に変換するMMUを持ったハードウェア構成を備え、その上で複数のオペレーティングシステム(OS)およびアプリケーション(AP)が動作している構成におけるメモリダンプ方式を説明する。
より具体的には、本実施の形態に係るメモリダンプ方式では、メモリダンプ処理専用プロセッサコアを設け、メモリダンプ処理専用プロセッサコア以外は、各自が使用するメモリ領域のみ論理アドレス空間として参照できるようにし、メモリダンプ処理専用プロセッサコアは、全メモリを論理アドレス空間として参照できるようにしている。
そして、本実施の形態に係るメモリダンプ方式では、1つのプロセッサコアに障害が発生し、そのプロセッサコア上で動作しているOS内で二次記憶装置にメモリ内容を保存している最中に、メモリダンプ処理において異常が発生した場合に、メモリダンプを実施しているプロセッサコアにて異常を検出した後、異常を検出したプロセッサコアがメモリダンプ処理専用プロセッサコアにメモリダンプを指示し、メモリダンプ処理専用プロセッサコアが、二次記憶装置にメモリ内容を保存する。
本実施の形態に係るメモリダンプ方式によれば、メモリダンプ処理専用プロセッサコア以外は、各自が使用するメモリ領域のみ論理アドレス空間として参照できるため、メモリダンプ処理専用プロセッサコア上のメモリダンプ処理用のコードが、他プロセッサコアから破壊されることなく、メモリダンプを確実に実施できる。
図7は、本実施の形態に係るメモリダンプ方式におけるハードウェア(H/W)構成例を示す。
図7において、MMU(Memory Management Unit)18、19、20以外は、図1に示した要素と同じである。
ここでは、MMU18、19、20以外の要素の説明を省略する。
MMU18、19、20は、論理アドレスをメモリ装置5の物理アドレスに変換する機能を有し、プロセッサコア1、2、3がメモリ装置5をアドレス空間として論理的に分割するために用いられる。
各プロセッサコア上のOSは、このMMUを使用することで、メモリ装置5の一部をそのOS専用のメモリとして使用し、他プロセッサコアのOSが参照できないようにすることができる。
本実施の形態では、3つのプロセッサコアを図示しているが、3つである必要はなく、2つのプロセッサコアでも、4つ以上のプロセッサコアでも、動作そのものに変更はない。
図8は、図1で示したH/W構成に対する、ソフトウェア(S/W)の構成例を示す図である。
図8では、作図上の理由から、コンソール装置6の図示を省略し、また、プロセッサコア3のOS23の内部構成の図示を省略している。
なお、プロセッサコア3のOS23は、プロセッサコア2のOS22と同様の内部構成である。
つまり、OS23は、図2について説明したように、OS初期化部38、メモリダンプ設定部39、異常検出部40、メモリダンプ実施部41、コア連携部42、メモリダンプ異常検出部43と、後述するマップ部52を備える。
また、図8では、記述を省略しているが、本実施の形態においてもコア連携部30、コア連携部36及びコア連携部42は、それぞれ、障害検出部、メモリダンプ完了通知部及びメモリダンプ要求部の例に相当し、メモリダンプ異常検出部37及びメモリダンプ異常検出部43は、メモリダンプ要求部の例に相当する。
実施の形態2では、プロセッサコア1のOS21は、他のプロセッサコアのOSとは異なり、メモリダンプを専用に処理する機能を有し、メモリダンプ設定部、異常検出部、メモリダンプ異常検出部を持たない構成になっている。
また、各OSには、プロセッサコアのMMU(図7のMMU18(プロセッサコア1)、MMU19(プロセッサコア2)、MMU20(プロセッサコア3))を使用して、メモリ装置5を論理アドレス空間上で参照可能(マップ)にするためのマップ部を備える(OS21にはマップ部50を、OS22にはマップ部51を、OS23にはマップ部52(不図示)をそれぞれ備える)。
マップ部50、51、52は、それぞれのOSがアクセスできるメモリ装置5の物理アドレス空間を指定する。
後述するように、OS22、OS23は、メモリダンプ時以外はメモリ装置5の一部の物理アドレス空間に対応する論理アドレス空間が設定され、一部の物理アドレス空間のみアクセス可能である。
一方で、メモリダンプ時には、マップ部51、52が、メモリ装置5内の全ての物理アドレスを対象とする論理アドレスをそれぞれのOSに設定し、メモリダンプ実施部35、41がメモリ装置5内の全ての物理アドレスをアクセス可能な状態にする。
マップ部51、52は、アクセス制御部の例である。
また、メモリ装置5には、各プロセッサコアのMMUが論理アドレス空間と物理アドレス空間を変換するためのテーブルである、ページテーブルを備える。
プロセッサコア1のMMU18は、OS21用領域44内にあるページテーブル54を参照するようにマップ部50にて設定される。
ページテーブル54内で設定されている論理アドレス空間と物理アドレス空間の変換情報は、OS21の各要素のコード(メモリダンプ実施部290、コア連携部300など)およびページテーブル54が格納されているOS21用領域44、すなわちメモリ装置5全体を参照可能にするよう設定される。
これにより、プロセッサコア1では、メモリ装置5全体を参照可能になる。
また、プロセッサコア2のMMU19は、OS22用領域45内にあるページテーブル55を参照するようにマップ部51にて設定される。
ページテーブル55内で設定されている論理アドレス空間と物理アドレス空間の変換情報は、OS22の各要素のコード(メモリダンプ実施部350、コア連携部360など)およびページテーブル55が格納されているOS22用領域45のみを参照可能にするよう設定される。
これにより、プロセッサコア2では、OS22用領域45のみ参照可能になり、OS21用領域44のメモリダンプ実施部290や、OS23用領域46は参照できない。
こうすることで、プロセッサコア2内の処理にて、OS21用の領域や、OS23用の領域がデータ破壊されることを防ぐ。
同様に、プロセッサコア3のMMU20は、OS23用領域46内にあるページテーブル56を参照するようマップ部52にて設定される。
ページテーブル56内で設定されている論理アドレス空間と物理アドレス空間の変換情報は、OS23の各要素のコード(メモリダンプ実施部410、コア連携部420など)およびページテーブル56が格納されているOS23用領域46のみを参照可能にするよう設定される。
これにより、プロセッサコア3では、OS23用領域46のみ参照可能になり、OS21用領域44のメモリダンプ実施部290や、OS22用領域45は参照できない。
こうすることで、プロセッサコア3内の処理にて、OS21用の領域や、OS22用の領域がデータ破壊されることを防ぐ。
次に、本実施の形態におけるメモリダンプ方式の障害発生時の動作例を、図9、図10内の矢印および図11、図12のフローチャートを用いて説明する。
なお、図9、図10では、作図上の理由から、プロセッサコア3、メモリ装置5内のOS23用領域46、コンソール装置6の図示を省略している。
図9〜図12では、プロセッサコア2上で動作するOS22に障害が発生し、かつ、OS22のメモリダンプ実施部35のメモリ装置5上のコード・データであるOS22用領域45内のメモリダンプ実施部350のデータが破壊されていた場合の例で説明する。
まず、OS22動作中に障害が発生すると、OS22の異常検出部34がその異常を検出する(図11のS201)。
異常が異常検出部34によって検出されると、異常検出部34は、異常の原因特定などの処理をした後、メモリダンプ実施部35にメモリダンプの指示を出す(図9及び図11のS202)。
メモリダンプ指示を受けたメモリダンプ実施部35は、メモリダンプ実施中に発生するプロセッサコア2の例外を、再度異常検出部34が検出しないように、例外が発生した場合、メモリダンプ異常検出部37が検出するようにプロセッサコア2を設定した後、バックアップメモリ装置8内にあるファイル情報格納領域25からHDD装置7内にあるダンプファイル24の位置情報を取得する(図9及び図11のS203)。
次にメモリダンプ実施部35は、取得した位置情報を元に、HDD装置7内のダンプファイル24にメモリ装置5の内容を書き込む処理を行う。
プロセッサコア2では、メモリ装置5のOS22用領域45内にあるページテーブル55を使用してMMU19が動作しているため、OS22のメモリダンプ実施部35は、メモリ装置5のOS22用領域45しかアクセスできないようになっている。
このため、メモリ装置5の内容を書き込む処理は、以下のようにして行われる。
まず、メモリダンプ実施部35は、メモリ装置5の物理アドレス空間の先頭ページ(アドレス空間を一定のサイズ(一般的には4Kバイト)で区切った領域)が、OS22用領域45内に存在するかチェックする(図11のS204)。
これは、ページテーブル55を参照し、プロセッサコア2の論理アドレス空間に、所望の物理アドレスが含まれているか否かで判断される。
所望の物理アドレスが、OS22用領域45に含まれていない場合(図11のS204でNO)、メモリダンプ実施部35はマップ部51に指示し、物理アドレス空間をプロセッサコア2の論理アドレス空間上(マップ領域57)で参照可能にする(図9及び図11のS205)。
マップ部51は、物理アドレス空間をプロセッサコア2の論理アドレス空間で参照できるように、MMU19が使用しているページテーブル55を設定する。
所望の物理アドレスが、OS22用領域45に含まれている場合(図11のS204でYES)は、論理アドレス空間上で物理アドレスが既に参照可能になっているため、マップ部51に指示は出さない。
OS22用領域へのマップ(図9及び図11のS205)が完了した、または、既に参照可能になっている(図11のS204でYES)場合は、次にメモリダンプ実施部35は、物理アドレス空間の先頭ページに対応する論理アドレス空間のページをダンプファイル24に書き込む(図9及び図11のS206)。
そして、異常が発生していない(図11のS207でNO)場合は、物理アドレス空間の次のページにてS204からS206の処理を行う。
ここで、メモリ装置5のOS22用領域45内のメモリダンプ実施部350のデータが破壊されていなければ、メモリダンプ実施部35の動作に支障がないので、物理アドレス空間内のメモリ装置5の内容が全てダンプファイル24に格納された時点で、メモリダンプ実施部35のメモリダンプ処理は正常に終了する。
しかし、メモリ装置5のOS22用領域45のメモリダンプ実施部350のデータが破壊されていた場合、メモリダンプ実施部35の動作は異常(図11のS207でYES)になり、不正命令実行や不正アクセスにより、プロセッサコア2上で例外が発生する。
この場合、すでにメモリダンプ実施部35の動作は不正になっているため、再度メモリダンプ実施部35を動作させても、メモリダンプを正常に動作させることができない。
プロセッサコア2上で例外が発生したことは、メモリダンプ異常検出部37によって検出される(図9及び図11のS208)。
異常を検出すると、メモリダンプ異常検出部37は、コア連携部36に別プロセッサコアへの通知(メモリダンプの実施要求を含む通知)を指示する(図9及び図11のS209)。
メモリダンプ異常検出部37から指示を受けたコア連携部36は、送信すべきプロセッサコアを選択する。
本実施の形態ではプロセッサコア1を、メモリダンプを専用に処理する機能としているので、コア連携部36はプロセッサコア1に送信を行う(図9及び図11のS210)。
この通知は、プロセッサコア1のコア連携部30が受信する(図12のS211)。
プロセッサコア1のコア連携部30は、プロセッサコア2のコア連携部36からの通知を受信すると、メモリダンプ実施部29に対し、メモリダンプを指示する(図10及び図12のS212)。
メモリダンプ実施部29は、バックアップメモリ装置8内にあるファイル情報格納領域25からHDD装置7内にあるダンプファイル24の位置情報を取得し(図10及び図12のS213)、取得した位置情報を元に、HDD装置7内のダンプファイル24にメモリ装置5の内容を書き込む(図10及び図12のS214)。
メモリ装置5内のOS22用領域45内のメモリダンプ実施部350のデータは破壊されているものの、メモリ装置5内のOS21用領域44のメモリダンプ実施部290の動作には支障がないので、メモリダンプ実施部29のメモリダンプは正常に終了する。
また、OS21用領域44のページテーブル54により、プロセッサコア1では、論理アドレス空間にメモリ装置5が全て参照可能になっており、マップ部50を呼び出す必要はない。
メモリダンプ実施部29は、メモリダンプが終了すると、コア連携部30に対し、メモリダンプ終了の通知を行う(図10及び図12のS215)。
コア連携部30は、通知元であるプロセッサコア2に対し処理完了の通知を行う(図10及び図12のS216)。
この通知は、プロセッサコア2のコア連携部36が受信する(図11のS217)。
プロセッサコア2のコア連携部36は、プロセッサコア1のコア連携部30からの通知を受信すると、メモリダンプ異常検出部37に処理完了の通知を行う(図10及び図11のS218)。
この通知を受けて、メモリダンプ異常検出部37は、異常検出部34に処理完了の通知を行う(図10及び図11のS219)。
通知を受けた異常検出部34は、メモリ内容が保存されたことにより、装置を停止または再起動する(図10及び図11のS220)。
以上がこの実施の形態におけるメモリダンプ方式の障害発生時の動作である。
実施の形態2によるメモリダンプ方式では、論理アドレス空間を物理アドレス空間に変換するMMUを利用し、各プロセッサコアを論理アドレス空間で動作させ、通常の動作を行うプロセッサコアは、そのプロセッサコアが動作しているOSが利用できる特定のメモリ領域だけを参照可能し、メモリダンプを専用に行うプロセッサコアのみメモリ全体を参照できるようにしている。
また、実施の形態2によるメモリダンプ方式では、1つのプロセッサコアに障害が発生し、そのプロセッサコア上で動作しているOSにて二次記憶装置にメモリ内容を保存している最中に、メモリダンプ実施部内にて異常が発生した時に、メモリダンプを実施しているプロセッサコアにて異常を検出した後、異常を検出したプロセッサコアがメモリダンプ処理専用プロセッサコアにメモリダンプを指示し、メモリダンプ処理専用プロセッサコア上のメモリダンプ実施部にて、二次記憶装置にメモリ内容を保存する。
このため、実施の形態2によるメモリダンプ方式では、メモリダンプ処理中に障害が発生しても、メモリダンプが確実に実施できる。
なお、本実施の形態では、通常の動作を行うプロセッサコアは、そのプロセッサコアが動作しているOSが利用できる特定のメモリ領域だけを参照可能であり、メモリダンプを専用に行うプロセッサコアのみメモリ全体を参照できるようにしたので、通常の動作を行うプロセッサコアにて、メモリ内のデータを破壊するような異常状態が発生しても、メモリダンプを専用に行うプロセッサコア上で動作するコードには影響を与えない。
以上、本実施の形態では、
各プロセッサコアは、メモリを分割して、各メモリを異なるアドレス空間として管理することができるMMU(Memory Management Unit)を備え、以下の構成要素を含むメモリダンプ方式を説明した。
(1)1つのプロセッサコア上のOSに以下の構成要素を持つ
(a)MMUを使って、メモリ全体をアクセス可能にする手段
(2)上記(1)以外のプロセッサコア上のOSに以下の構成要素を持つ
(a)MMUを使って、メモリの特定の領域のみアクセス可能にする手段
(b)障害発生時に、他メモリの内容をアクセス可能にする手段
(c)二次記憶装置に保存する間に異常が発生した場合、上記(1)のプロセッサコアに通知を行う手段
実施の形態3.
本実施の形態に係るメモリダンプ方式では、メモリダンプ処理専用プロセッサコアが、定期的に他プロセッサコアの状態を監視し、異常を検出した場合、メモリダンプ処理専用プロセッサコア自身が、異常が検出されたプロセッサコアを停止し、メモリダンプを実施する。
本実施の形態に係るメモリダンプ方式によれば、障害が発生したプロセッサコア自身がハングアップ等で動作できない場合でも、メモリダンプを確実に実施できる。
実施の形態3では、H/W構成は実施の形態2と同じであり、図7で示される。
図13は、図7で示したH/W構成に対する、ソフトウェア(S/W)の構成例を示す図である。
実施の形態3では、プロセッサコア1のOS21に、プロセッサコア2のOS22およびプロセッサコア3のOS23の動作状況を監視するための監視部60が存在する。
監視部60は、後述するカウンタのカウンタ値を監視する。このカウンタ値は、他のプロセッサコアが正常に動作している間は所定の周期で更新される。
そして、監視部60は、カウンタ値の更新が停止した場合に、他のプロセッサコアに障害が発生したと判断する。
また、プロセッサコア2のOS22に、OS22が問題なく動作していることを示す応答部61が存在し、プロセッサコア3のOS23にも同様な応答部62(不図示)が存在する。
また、メモリ装置5には、OS22が動作していることを示すために応答部61がカウンタ値を更新するカウンタ63と、OS23が動作していることを示すために応答部62がカウンタ値を更新するカウンタ64が存在する。
つまり、応答部61は、OS22が正常に動作している間はカウンタ63のカウンタ値を所定の周期で更新して、プロセッサコア2が正常に動作していることを監視部60に示す。
同様に、応答部62は、OS23が正常に動作している間はカウンタ64のカウンタ値を所定の周期で更新して、プロセッサコア3が正常に動作していることを監視部60に示す。
応答部61、62は、カウンタ値更新部の例である。
なお、実施の形態3では、プロセッサコア2およびプロセッサコア3の異常検出部にて異常が検出された場合の動作は、実施の形態2と同じであり、図9、図10の矢印および図11、図12のフローチャートで示される。
次に、本実施の形態におけるメモリダンプ方式の障害発生時の動作例を説明する。
具体的には、プロセッサコアがハングアップ、すなわち、突然動作できなくなる状態に陥ったケースでの動作例を図14、図15内の矢印および図16、図17のフローチャートを用いて説明する。
なお、図14、図15では、作図上の理由から、プロセッサコア3、メモリ装置5内のOS23用領域46、コンソール装置6の図示を省略している。
図14〜図17では、プロセッサコア2がハングアップする場合の例を説明する。
まず、プロセッサコア2およびプロセッサコア3が問題なく動作している状態でのプロセッサコア2およびプロセッサコア3の動作を説明する。
プロセッサコア2が問題なく動作している場合では、図16のS301にてプロセッサコア2のOS22は通常の動作を実施している。
そして一定時間が経過しているかチェックされる(図16のS302)。
このチェックは、OS内部時刻の更新状況を監視することや、時刻変化によって発生する割り込みによって起動されてもよい。
S302にて、一定時間が経過していない場合(図16のS302でNO)は、S301に戻って通常の動作を継続する。
S302にて一定時間が経過している場合(図16のS302でYES)、OS22では応答部61が動作し、メモリ装置5のOS22用領域45にあるカウンタ63を1加算する(図14及び図17のS303)。
これにより、カウンタ63は一定時間毎に加算され、監視部60はカウンタ63を見ることで、OS22が動作していることが確認できる。
S303にてカウンタ63を加算した後は、OS22は、S301に戻って通常の動作を継続する。
以上がプロセッサコア2の動作である。
なお、プロセッサコア3における動作は、図14及び図16に示したプロセッサコア2の動作(S301〜S303)と同様であり、説明を省略する。
次に、プロセッサコア1の動作を説明する。
プロセッサコア1では、まずOS21の監視部60が、一定時間経過したをチェックする(図17のS310)。
一定時間経過していない場合(S310でNO)は、まだ、プロセッサコア2およびプロセッサコア3のチェックを行う必要がないので、最初に戻る。
S310にて一定時間経過している場合(S310でYES)、カウンタ63およびカウンタ64がチェックされる(図14及び図17のS311)。
図14では、監視部60がOS22用領域45のカウンタ63をチェックすることのみが図示されているが、監視部60は同時にOS23用領域46のカウンタ64もチェックする。
ここで、一定時間経過時にカウンタ63およびカウンタ64の値が正しく更新(カウントアップ)されている場合(図17のS311でYES)、プロセッサコア2およびプロセッサコア3が正常に動作していると判断し、最初に戻る。
プロセッサコア2が動作できていない場合は、OS22の応答部61にてカウンタ63の更新が実施されないため、監視部60によるS311でのカウンタ63の更新チェックにて、監視部60はOS22が動作できていない、すなわち異常が発生したと判断される(S312でNO)。
これにより、監視部60は、メモリダンプ実施部29にメモリダンプを指示する(図14及び図17のS313)。
メモリダンプ実施部29は、監視部60からの指示に基づき、バックアップメモリ装置8内にあるファイル情報格納領域25からHDD装置7内にあるダンプファイル24の位置情報を取得し(図15及び図17のS314)、取得した位置情報を元に、HDD装置7内のダンプファイル24にメモリ装置5の内容を書き込む(図15及び図17のS315)。
プロセッサコア2は動作できていないもののメモリ装置5内のOS21用領域44のメモリダンプ実施部290の動作には支障がないので、メモリダンプ実施部29のメモリダンプは正常に終了する。
また、OS21用領域44のページテーブル54により、プロセッサコア1では、論理アドレス空間にメモリ装置5が全て参照可能になっており、マップ部50を呼び出す必要はない。
メモリダンプ実施部29は、メモリダンプが終了すると、監視部60に対し、メモリダンプ終了の通知を行う(図15及び図17のS316)。
通知を受けた監視部60は、メモリ内容が保存されたことにより、装置を停止または再起動する(図15及び図17のS317)。
以上がこの実施の形態におけるメモリダンプ方式の障害発生時の動作である。
実施の形態3によるメモリダンプ方式では、通常の動作を行うプロセッサコアには、一定時間毎にメモリ内のデータを更新する手段を設け、メモリダンプを専用に行うプロセッサコアには、そのデータを一定時間毎に参照し、データが更新されていない場合、メモリダンプの実施を指示する手段を設けている。
このため、本実施の形態によるメモリダンプ方式では、通常の動作を行うプロセッサコアにてH/W的にハングアップ状態となり、OSの異常検知部が動作できない状態でも、メモリダンプが確実に実施できる。
なお、本実施の形態では、通常の動作を行うプロセッサコアが正常に動作しているか否かについて、メモリ内のデータを定期的に更新することで判断している。
これを、プロセッサコア間通信を使い、通常の動作を行うプロセッサコアは、定期的に、メモリダンプを行うプロセッサコアに通知割込みを発生させ、メモリダンプを行うプロセッサコアは、定期的な割込みが来ない場合に、正常に動作していないと判断し、メモリダンプを実施するようにしても、同様なメモリダンプ方式を得ることができる。
以上、本実施の形態では、
各プロセッサコアに、以下の構成要素を含むメモリダンプ方式を説明した。
(1)実施の形態2に記載のメモリダンプを専用に処理するプロセッサコア上のOSに以下の構成要素を持つ。
(a)下記の(2)(a)をチェックし、一定時間内に値が更新されない場合、メモリ内容を二次記憶装置に保存する手段
(2)上記の(1)のプロセッサコア以外のプロセッサコア上のOSに以下の構成要素を持つ。
(a)メモリ内の、自身がアクセス可能な領域に存在するカウンタ
(b)メモリダンプ中に、カウンタを一定時間毎に更新する手段
実施の形態4.
本実施の形態では、複数のプロセッサコアと、論理アドレス空間を物理アドレス空間に変換するMMUを持ったハードウェア構成を備え、その上で複数のオペレーティングシステム(OS)およびアプリケーション(AP)が動作している構成におけるメモリダンプ方式を説明する。
より具体的には、本実施の形態に係るメモリダンプ方式では、各プロセッサコアは、各自が使用するメモリ領域のみ、論理アドレス空間として参照できるようにし、1つのプロセッサコアに障害が発生し、そのプロセッサコア上で動作しているOS内で二次記憶装置にメモリ内容を保存している最中に、メモリダンプ処理において異常が発生した場合に、メモリダンプを実施しているプロセッサコアにて異常を検出した後、異常を検出したプロセッサコアが別のプロセッサコアにメモリダンプを指示し、別プロセッサコア上のOSが、全メモリを論理アドレス空間として参照できるようにしてから、メモリダンプを実施する。
本実施の形態に係るメモリダンプ方式によれば、メモリダンプ処理専用プロセッサコアを持つことなく、メモリダンプを確実に実施できる。
実施の形態4では、H/W構成は実施の形態2と同じであり、図7で示される。
図18は、図7で示したH/W構成に対する、ソフトウェア(S/W)の構成例を示す図である。
実施の形態4では、実施の形態2と異なり、プロセッサコア1はメモリダンプを専用に処理する構成ではない。
このため、プロセッサコア1のOS21には、実施の形態1と同様に、メモリダンプ設定部27、異常検出部28、メモリダンプ異常検出部31を備える。
プロセッサコア2のOS22およびプロセッサコア3のOS23の構成は、実施の形態2と同じである。
また、メモリ装置5の構成も、実施の形態2と異なり、OS21用領域44は、メモリ装置5全体を示すようにはならず、プロセッサコア1のMMU18が使用するページテーブル54は、OS22用領域45やOS23用領域46とは重複せず、OS21用領域44のみを参照できるように設定される。
つまり、本実施の形態では、プロセッサコア1には、メモリ装置5の一部の物理アドレスをを対象とする論理アドレスが割り当てられ、メモリダンプ時以外は、プロセッサコア1は、MMU18を用いて、割り当てられている論理アドレスが対象としている一部の物理アドレスにのみアクセス可能である。
また、メモリ装置5内の各OS用領域には、OS用領域外のメモリ領域を各OS内の領域(論理アドレス空間)で参照するための領域を持っている。
OS21用領域44にはマップ領域70を、OS22用領域45にはマップ領域71を、OS23用領域46にはマップ領域72を、それぞれ備える。
なお、本実施の形態では、メモリダンプ実施部29、35、41が、カウンタ値更新部の例でもある。
また、本実施の形態では、マップ部51、52の他、マップ部50もアクセス制御部の例となる。
次に、本実施の形態におけるメモリダンプ方式の障害発生時の動作について、図19、図20内の矢印および図21、図22のフローチャートを用いて説明する。
なお、図19、図20では、作図上の理由から、プロセッサコア3、メモリ装置5内のOS23用領域46、コンソール装置6の図示を省略している。
図19〜図22では、プロセッサコア2上で動作するOS22に障害が発生し、かつ、OS22のメモリダンプ実施部35のメモリ装置5上のコード・データであるOS22用領域45内のメモリダンプ実施部350のデータが破壊されていた場合の例で説明する。
まず、OS22動作中に障害が発生すると、OS22の異常検出部34がその異常を検出する(図21のS401)。
異常が異常検出部34によって検出されると、異常検出部34は、異常の原因特定などの処理をした後、メモリダンプ実施部35にメモリダンプの指示を出す(図19及び図21のS402)。
メモリダンプ指示を受けたメモリダンプ実施部35は、メモリダンプ実施中に発生するプロセッサコア2の例外を、再度異常検出部34が検出しないように、例外が発生した場合、メモリダンプ異常検出部37が検出するようにプロセッサコア2を設定した後、バックアップメモリ装置8内にあるファイル情報格納領域25からHDD装置7内にあるダンプファイル24の位置情報を取得する(図19及び図21のS403)。
次にメモリダンプ実施部35は、取得した位置情報を元に、HDD装置7内のダンプファイル24にメモリ装置5の内容を書き込む処理を行う。
プロセッサコア2では、メモリ装置5のOS22用領域45内にあるページテーブル55を使用してMMU19が動作しているため、OS22のメモリダンプ実施部35は、メモリ装置5のOS22用領域45しかアクセスできないようになっている。
このため、メモリ装置5の内容を書き込む処理は、以下のようにして行われる。
まず、メモリダンプ実施部35は、メモリ装置5の物理アドレス空間の先頭ページ(アドレス空間を一定のサイズ(一般的には4Kバイト)で区切った領域)が、OS22用領域45内に存在するかチェックする(図21のS404)。
これは、ページテーブル55を参照し、プロセッサコア2の論理アドレス空間に、所望の物理アドレスが含まれているか否かで判断される。
所望の物理アドレスが、OS22用領域45に含まれていない場合(図21のS404でNO)、メモリダンプ実施部35はマップ部51に指示し、物理アドレス空間をプロセッサコア2の論理アドレス空間上(マップ領域71)で参照可能にする(図19及び図21のS405)。
マップ部51は、物理アドレス空間をプロセッサコア2の論理アドレス空間で参照できるように、MMU19が使用しているページテーブル55を設定する。
なお、図19では、先頭ページ及びOS21用領域44をマップ領域71に設定している例を示しているが、他の領域についても同様の処理を繰り返すと、メモリ装置5の全領域が参照可能となる。
所望の物理アドレスが、OS22用領域45に含まれている場合(図21のS404でYES)は、論理アドレス空間上で物理アドレスが既に参照可能になっているため、マップ部51に指示は出さない。
OS22用領域45へのマップ(図19及び図21のS405)が完了した、または、既に参照可能になっている(図21のS404でYES)場合、次にメモリダンプ実施部35は、物理アドレス空間の先頭ページに対応する論理アドレス空間のページをダンプファイル24に書き込む(図19及び図21のS406)。
そして、異常が発生していない(図21のS407でNO)場合は、物理アドレス空間の次のページにてS404からS406の処理を行う。
ここで、メモリ装置5のOS22用領域45内のメモリダンプ実施部350のデータが破壊されていなければ、メモリダンプ実施部35の動作に支障がないので、物理アドレス空間内のメモリ装置5の内容が全てダンプファイル24に格納された時点で、メモリダンプ実施部35のメモリダンプ処理は正常に終了する。
しかし、メモリ装置5のOS22用領域45のメモリダンプ実施部350のデータが破壊されていた場合、メモリダンプ実施部35の動作は異常(図21のS407でYES)になり、不正命令実行や不正アクセスにより、プロセッサコア2上で例外が発生する。
この場合、すでにメモリダンプ実施部35の動作は不正になっているため、再度メモリダンプ実施部35を動作させても、メモリダンプを正常に動作させることができない。
プロセッサコア2上で例外が発生したことは、メモリダンプ異常検出部37によって検出される(図19及び図21のS408)。
異常を検出すると、メモリダンプ異常検出部37は、コア連携部36に別プロセッサコアへの通知(メモリダンプの実施要求を含む通知)を指示する(図19及び図21のS409)。
メモリダンプ異常検出部37から指示を受けたコア連携部36は、送信すべきプロセッサコアを選択する。
本実施の形態ではプロセッサコア1に送信を行う(図19及び図21のS410)。
プロセッサコアの選択については、実施の形態1と同様に特定のプロセッサコアを予め決めておく方法や、各プロセッサコアの負荷状況をメモリ装置5内に記録するようにし、一番負荷が低いプロセッサコアを選択する、などの方法がある。
本実施の形態では、このような方法により、プロセッサコア2のコア連携部36は、プロセッサコア1を選択し、プロセッサコア1に通知の送信を行う(図19及び図21のS410)。
この通知は、プロセッサコア1のコア連携部30が受信する(図22のS411)。
プロセッサコア1のコア連携部30は、プロセッサコア2のコア連携部36からの通知を受信すると、メモリダンプ実施部29に対し、メモリダンプを指示する(図20及び図22のS412)。
メモリダンプ実施部29は、バックアップメモリ装置8内にあるファイル情報格納領域25からHDD装置7内にあるダンプファイル24の位置情報を取得し(図20及び図22のS413)、取得した位置情報を元に、HDD装置7内のダンプファイル24にメモリ装置5の内容を書き込む処理を行う。
プロセッサコア1では、メモリ装置5のOS21用領域44内にあるページテーブル54を使用してMMU18が動作しているため、OS21のメモリダンプ実施部29は、メモリ装置5のOS21用領域44しかアクセスできないようになっている。
このため、メモリ装置5の内容を書き込む処理は、以下のようにして行われる。
まず、メモリダンプ実施部29は、メモリ装置5の物理アドレス空間の先頭ページ(アドレス空間を一定のサイズ(一般的には4Kバイト)で区切った領域)が、OS21用領域44内に存在するかチェックする(図22のS414)。
これは、ページテーブル54を参照し、プロセッサコア1の論理アドレス空間に、所望の物理アドレスが含まれているか否かで判断される。
所望の物理アドレスが、OS21用領域44に含まれていない場合(図22のS414でNO)は、メモリダンプ実施部29はマップ部50に指示し、物理アドレス空間をプロセッサコア1の論理アドレス空間上(マップ領域70)で参照可能にする(図20及び図22のS415)。
マップ部50は、物理アドレス空間をプロセッサコア1の論理アドレス空間で参照できるように、MMU18が使用しているページテーブル54を設定する。
なお、図20では、先頭ページ及びOS22用領域45をマップ領域70に設定している例を示しているが、他の領域についても同様の処理を繰り返すと、メモリ装置5の全領域が参照可能となる。
所望の物理アドレスが、OS21用領域44に含まれている場合(図22のS414でYES)は、論理アドレス空間上で物理アドレスが既に参照可能になっているため、マップ部50に指示は出さない。
OS21用領域44へのマップ(図20及び図22のS415)が完了した、または、既に参照可能になっている(図22のS414でYES)場合は、次にメモリダンプ実施部29は、物理アドレス空間の先頭ページに対応する論理アドレス空間のページをダンプファイル24に書き込む(図20及び図22のS416)。
そして、メモリダンプがメモリ装置5のすべての領域に対して行われたかチェック(図22のS417)し、すべての領域に対して行われていない場合(図22のS417でNO)は、物理アドレス空間の次のページにてS414からS416の処理を行う。
メモリ装置5内のOS22用領域45内のメモリダンプ実施部350のデータは破壊されているものの、メモリ装置5内のOS21用領域44のメモリダンプ実施部290の動作には支障がないので、メモリダンプ実施部29のメモリダンプは正常に終了する。
メモリダンプ実施部29は、メモリ装置5の全ての領域に対してメモリダンプが終了すると(図22のS417でYES)、コア連携部30に対し、メモリダンプ終了の通知を行う(図20及び図22のS418)。
コア連携部30は、通知元であるプロセッサコア2に対し処理完了の通知を行う(図20及び図22のS419)。
この通知は、プロセッサコア2のコア連携部36が受信する(図21のS420)。
プロセッサコア2のコア連携部36は、プロセッサコア1のコア連携部30からの通知を受信すると、メモリダンプ異常検出部37に処理完了の通知を行う(図20及び図21のS421)。
この通知を受けて、メモリダンプ異常検出部37は、異常検出部34に処理完了の通知を行う(図20及び図21のS422)。
通知を受けた異常検出部34は、メモリ内容が保存されたことにより、装置を停止または再起動する(図20及び図21のS423)。
以上がこの実施の形態におけるメモリダンプ方式の障害発生時の動作である。
実施の形態4によるメモリダンプ方式では、論理アドレス空間を物理アドレス空間に変換するMMUを利用し、各プロセッサコアを論理アドレス空間で動作させ、そのプロセッサコアが動作しているOSが利用できる特定のメモリ領域だけを参照できるようにしている。
また、実施の形態4によるメモリダンプ方式では、1つのプロセッサコアに障害が発生し、そのプロセッサコア上で動作しているOSにて二次記憶装置にメモリ内容を保存している最中に、メモリダンプ実施部内にて異常が発生した時に、メモリダンプを実施しているプロセッサコアにて異常を検出した後、異常を検出したプロセッサコアが他のプロセッサコアにメモリダンプを指示し、指示を受けたプロセッサコア上のメモリダンプ実施部は、そのプロセッサコアが動作する論理アドレス空間に、そのプロセッサコアが参照できなかったメモリ領域を参照できるようにページテーブルを設定し、二次記憶装置にメモリ内容を保存する。
このため、実施の形態4によるメモリダンプ方式では、メモリダンプ処理中に障害が発生しても、メモリダンプを専用に処理するプロセッサコアを必要とせずに、メモリダンプが確実に実施できる。
以上、本実施の形態では、
各プロセッサコアは、メモリを分割して、各メモリを異なるアドレス空間として管理することができるMMU(Memory Management Unit)を備え、以下の構成要素を含むメモリダンプ方式を説明した。
(1)各プロセッサコア上のOSに以下の構成要素を持つ。
(a)MMUを使って、メモリの特定の領域のみアクセス可能にする手段
(b)障害発生時に、他メモリの内容をアクセス可能にする手段。
実施の形態5.
本実施の形態に係るメモリダンプ方式では、あるプロセッサコアにおいてメモリダンプ処理を行っている際に異常が発生した際に、障害が発生したプロセッサコアが別のプロセッサコアにメモリダンプを指示し、障害が発生したプロセッサコアが別プロセッサコアのメモリダンプを監視し、一定時間内にメモリダンプ処理が終了しない場合は、その別プロセッサコアを停止させ、もう1つの別のプロセッサコアにメモリダンプを指示する。
実施の形態5では、H/W構成は実施の形態1と同じであり、図1で示される。
図23は、図1で示したH/W構成に対する、ソフトウェア(S/W)の構成例を示す図である。
実施の形態5では、他プロセッサコアにて実施されているメモリダンプ処理を監視するために、OS21には監視部80が、OS22には監視部81が、OS23には監視部82(不図示)がそれぞれ備わる。
また、メモリ装置5には、各プロセッサコアでのメモリダンプ処理にて、メモリダンプが動作し続けることを示すカウンタとして、OS21用領域44にカウンタ83が、OS22用領域45にカウンタ84が、OS23用領域にカウンタ85が、それぞれ備わる。
それ以外の構成は、実施の形態1と同じである。
なお、本実施の形態においても、コア連携部30、コア連携部36及びコア連携部42は、それぞれ、障害検出部、メモリダンプ完了通知部及びメモリダンプ要求部の例に相当する。
また、本実施の形態においても、メモリダンプ異常検出部31、メモリダンプ異常検出部37及びメモリダンプ異常検出部43は、メモリダンプ要求部の例に相当する。
次に、本実施の形態におけるメモリダンプ方式の障害発生時の動作について、図24、図25、図26の矢印および図27、図28、図29のフローチャートを用いて説明する。
なお、図24、図25、図26では、作図上の理由から、プロセッサコア3、メモリ装置5内のOS23用領域46、コンソール装置6の図示を省略している。
図24〜図29では、プロセッサコア2上で動作するOS22に障害が発生し、かつ、OS22のメモリダンプ実施部35のメモリ装置5上のコード・データであるOS22用領域45内のメモリダンプ実施部350のデータが破壊されていた場合の例を説明する。
まず、OS22動作中に障害が発生すると、OS22の異常検出部34がその異常を検出する(図27のS501)。
異常検出部34は、異常の原因特定などの処理をした後、メモリダンプ実施部35にメモリダンプの指示を出す(図24及び図27のS502)。
メモリダンプ指示を受けたメモリダンプ実施部35は、メモリダンプ実施中に発生するプロセッサコア2の例外を、再度異常検出部34が検出しない(検出すると、再度メモリダンプ指示が発生するので)ように、例外が発生した場合、メモリダンプ異常検出部37が検出するようにプロセッサコア2を設定した後、バックアップメモリ装置8内にあるファイル情報格納領域25からHDD装置7内にあるダンプファイル24の位置情報を取得する(図24及び図27のS503)。
次にメモリダンプ実施部35は、取得した位置情報を元に、HDD装置7内のダンプファイル24にメモリ装置5の内容を書き込む(図24及び図27のS504)。
ここで、メモリ装置5のOS22用領域45内のメモリダンプ実施部350のデータが破壊されていなければ、メモリダンプ実施部35の動作に支障がないので、メモリダンプ実施部35のメモリダンプ処理は正常に終了する。
しかし、メモリ装置5のOS22用領域45のメモリダンプ実施部350のデータが破壊されていた場合、メモリダンプ実施部35の動作は不定になり、不正命令実行や不正アクセスにより、プロセッサコア2上で例外が発生する。
プロセッサコア2上で例外が発生したことは、メモリダンプ異常検出部37によって検出される(図24及び図27のS505)。
異常を検出すると、メモリダンプ異常検出部37は、コア連携部36に別プロセッサコアへの通知(メモリダンプの実施要求を含む通知)を指示する(図24及び図27のS506)。
メモリダンプ異常検出部37から指示を受けたコア連携部36は、送信すべきプロセッサコアを選択する。
本実施の形態ではプロセッサコア1に通知の送信を行う(図24及び図27のS507)。
プロセッサコア2のコア連携部36は、プロセッサコア1を選択し、プロセッサコア1へ通知を行う。
この通知は、プロセッサコア1のコア連携部30が受信する(図29のS508)。
プロセッサコア1のコア連携部30は、プロセッサコア2のコア連携部36からの通知を受信すると、メモリダンプ実施部29に対し、メモリダンプを指示する(図25及び図28のS509)。
メモリダンプ実施部29は、バックアップメモリ装置8内にあるファイル情報格納領域25からHDD装置7内にあるダンプファイル24の位置情報を取得し(図25及び図28のS510)、取得した位置情報を元に、HDD装置7内のダンプファイル24にメモリ装置5の内容を書き込む。
この処理は、以下のようにして行われる。
まず、メモリダンプ実施部29は、メモリ装置5の先頭から1ページ分(4KB)をダンプファイル24に保存する(図25及び図28のS511)。
そしてメモリダンプ実施部29は、メモリ装置5にあるOS21用領域44のカウンタ83を1加算する(図25及び図28のS512)。
次に、メモリダンプ実施部29は、メモリダンプがメモリ装置5の全ての領域に対して終了したかチェックする(図29のS513)。
まだメモリダンプが全ての領域に対して終了していない場合(図29のS513でNO)、メモリ装置5の次のページに対しメモリダンプを行い(図25及び図28のS511)、カウンタ83を再度1加算する(図25及び図28のS512)。
これをメモリ装置5全体に対して実施する。
メモリダンプがメモリ装置5の全ての領域に対して終了した場合(図29のS513でYES)、プロセッサコア1は処理を終了する。
メモリ装置5内のOS22用領域45内のメモリダンプ実施部350のデータは破壊されているものの、メモリ装置5内のOS21用領域44のメモリダンプ実施部290の動作には支障がないので、メモリダンプ実施部29のメモリダンプは正常に終了する。
S507にて、プロセッサコア2のコア連携部36がプロセッサコア1への通知を行うと、プロセッサコア2のメモリダンプ異常検出部37は監視部81に監視の開始を通知する(図26及び図28のS514)。
通知を受けた監視部81は、まず、一定時間経過したかチェックする(図28のS515)。
一定時間が経過していなければ(S515でNO)、監視部81は、時間が経過するまで待つ。
S515にて一定時間が経過していることが判明した場合(S515でYES)、監視部81は、プロセッサコア1のメモリダンプ実施部29が、S512にて更新しているメモリ装置5のOS21用領域44内にあるカウンタ83を参照し、値が更新されているかチェックする(図26及び図28のS516)。
カウンタ83の内容は、プロセッサコア1のメモリダンプ実施部29にて、1ページ分のメモリダンプを実施する毎に1加算するようになっているので、メモリダンプ実施部29の動作に支障がなければ、監視部81がカウンタを参照する毎に値は更新されている。
更新されている場合(S516でYES)、監視部81は、カウンタ83の値から、メモリダンプが終了したかチェックする(図28のS517)。
プロセッサコア1のメモリダンプ実施部29では、1ページ(4KB)毎にカウンタ83を1加算しているので、メモリ装置5全体でメモリダンプが実施されたときのカウンタ値は、
カウンタ83の値=メモリ実装量÷4KB
にて算出でき、カウンタ83がこの値になった時、メモリダンプがメモリ装置5全体に対し終了したと判断することができる。
メモリ装置5全体に対し、まだメモリダンプが終了していない場合(S517でNO)、S515に戻り、再度一定時間待って(S515)、カウンタ83の値が更新されたかをチェックする(S516)。
S517にて、カウンタ83の値が、メモリ装置5全体に対してメモリダンプを実施したことを意味する値になった時、監視部81は、メモリダンプ異常検出部37に、処理完了の通知を行う(図26及び図28のS518)。
通知を受けたメモリダンプ異常検出部37は、異常検出部34に処理完了の通知を行う(図26及び図28のS519)。
通知を受けた異常検出部34は、メモリ内容が保存されたことにより、装置を停止または再起動する(図26及び図28のS520)。
S516にて、カウンタ83の値が更新されていない場合(S516でNO)、監視部81は、メモリダンプ異常検出部37にメモリダンプ処理が異常であることを意味する通知を行う(図26のS522)。
メモリダンプ異常検出部37は、異常情報をバックアップメモリ装置8内に保存するなどし、異常の記録をした後、プロセッサコア1の停止を行う(図28のS521)。
これは、コア連携部36を用い、通常のプロセッサコア間通信とは別系統の通知を行うことで、プロセッサコア1で停止指示が来たことを判断できるようにする。
メモリダンプ異常検出部37は、これにより、プロセッサコア1のメモリダンプは正常にできなかったと判断し、S506に戻り、別のプロセッサコア(プロセッサコア3)に、コア連携部36を介して、メモリダンプ指示を行う。
これにより、プロセッサコア3のメモリダンプ実施部41にてメモリダンプが実施される。以上がこの実施の形態におけるメモリダンプ方式の障害発生時の動作である。
実施の形態5によるメモリダンプ方式では、各プロセッサコア上にて、他プロセッサコアのメモリダンプ処理を監視する監視部を設けるとともに、各プロセッサコアでのメモリダンプ処理中には、メモリダンプ処理が正常に動作していることを意味するカウンタを設け、監視部は、そのカウンタを一定時間毎に参照し、値が更新されていない場合、異常と判断し、別のプロセッサコアにメモリダンプを実施する。
このため、あるプロセッサコアにおけるメモリダンプ処理にて異常が発生し、別プロセッサコアにてメモリダンプを実施した際に、別プロセッサコアのメモリダンプ処理でもハングアップするような状態に陥るような状況になっても、メモリダンプが確実に実施できる、メモリダンプ方式を得ることができる。
以上、本実施の形態では、
各プロセッサコアに、以下の構成要素を含むメモリダンプ方式を説明した。
(1)各プロセッサコア上のOSに以下の構成要素を持つ。
(a)メモリ内に存在するカウンタ
(b)メモリダンプ中に、カウンタを一定時間毎に更新する手段
(c)二次記憶装置に保存する間に異常が発生し、他プロセッサコアにメモリダンプを通知した後、カウンタ値をチェックし、一定時間内に値が更新されない場合、別プロセッサコアにメモリダンプを通知する手段
1 プロセッサコア、2 プロセッサコア、3 プロセッサコア、4 バス、5 メモリ装置、6 コンソール装置、7 HDD装置、8 バックアップメモリ装置、9 演算処理部、10 演算処理部、11 演算処理部、12 キャッシュ、13 キャッシュ、14 キャッシュ、15 プロセッサコア間通信機能、16 プロセッサコア間通信機能、17 プロセッサコア間通信機能、18 MMU、19 MMU、20 MMU、21 OS、22 OS、23 OS、24 ダンプファイル、25 ファイル情報格納領域、26 OS初期化部、27 メモリダンプ設定部、28 異常検出部、29 メモリダンプ実施部、30 コア連携部、31 メモリダンプ異常検出部、32 OS初期化部、33 メモリダンプ設定部、34 異常検出部、35 メモリダンプ実施部、36 コア連携部、37 メモリダンプ異常検出部、44 OS21用領域、45 OS22用領域、46 OS23用領域、50 マップ部、51 マップ部、54 ページテーブル、55 ページテーブル、56 ページテーブル、60 監視部、61 応答部、63 カウンタ、64 カウンタ、70 マップ領域、71 マップ領域、72 マップ領域、80 監視部、81 監視部、83 カウンタ、84 カウンタ、85 カウンタ、290 メモリダンプ実施部、300 コア連携部、350 メモリダンプ実施部、360 コア連携部、410 メモリダンプ実施部、420 コア連携部。

Claims (16)

  1. メモリ装置のメモリダンプを行う他のプロセッサ装置と接続され、前記メモリ装置を前記他のプロセッサ装置と共有しているプロセッサ装置であって、
    前記他のプロセッサ装置においてメモリダンプが正常に行われていないことを検出する障害検出部と、
    前記障害検出部により前記他のプロセッサ装置においてメモリダンプが正常に行われていないことが検出された場合に、前記他のプロセッサ装置に代わって、前記メモリ装置のメモリダンプを行うメモリダンプ実施部とを有することを特徴とするプロセッサ装置。
  2. 前記障害検出部は、
    前記他のプロセッサ装置からメモリダンプが正常に行われていない旨の通知を受信し、前記他のプロセッサ装置においてメモリダンプが正常に行われていないことを検出することを特徴とする請求項1に記載のプロセッサ装置。
  3. 前記プロセッサ装置は、更に、
    前記他のプロセッサ装置が正常に動作している間は前記他のプロセッサ装置により所定の周期で更新されるカウンタ値を監視し、前記カウンタ値の更新が停止した場合に、前記他のプロセッサ装置が正常に動作していないと判断し、前記メモリダンプ実施部に前記メモリ装置のメモリダンプを行うよう指示する監視部を有し、
    前記メモリダンプ実施部は、
    前記監視部からの指示に基づき、前記メモリ装置のメモリダンプを行うことを特徴とする請求項1又は2に記載のプロセッサ装置。
  4. 前記プロセッサ装置は、更に、
    前記メモリダンプ実施部によるメモリダンプが正常に完了した場合に、前記他のプロセッサ装置に前記メモリダンプ実施部によるメモリダンプが正常に完了したことを通知するメモリダンプ完了通知部を有することを特徴とする請求項1〜3のいずれかに記載のプロセッサ装置。
  5. 前記プロセッサ装置は、
    論理アドレスを前記メモリ装置の物理アドレスに変換するMMU(Memory Management Unit)に接続され、前記メモリ装置内の一部の物理アドレスを対象とする論理アドレスが割り当てられ、メモリダンプ時以外は、前記MMUを用いて、割り当てられている論理アドレスが対象としている一部の物理アドレスにのみアクセス可能な他のプロセッサ装置に接続されていることを特徴とする請求項1〜4のいずれかに記載のプロセッサ装置。
  6. 前記プロセッサ装置は、
    論理アドレスを前記メモリ装置の物理アドレスに変換するMMU(Memory Management Unit)に接続され、前記メモリ装置内の全ての物理アドレスを対象とする論理アドレスが割り当てられ、
    前記メモリダンプ実施部は、
    前記MMUを用いて、前記メモリ装置内の全ての物理アドレスにアクセスしてメモリダンプを行うことを特徴とする請求項1〜5のいずれかに記載のプロセッサ装置。
  7. 前記プロセッサ装置は、
    論理アドレスを前記メモリ装置の物理アドレスに変換するMMU(Memory Management Unit)に接続され、前記メモリ装置内の一部の物理アドレスを対象とする論理アドレスが割り当てられ、メモリダンプ時以外は、前記MMUを用いて、割り当てられている論理アドレスが対象としている一部の物理アドレスにのみアクセス可能であり、
    前記プロセッサ装置は、更に、
    メモリダンプ時に、前記メモリ装置内の全ての物理アドレスを対象とする論理アドレスを設定し、前記メモリダンプ実施部が前記メモリ装置内の全ての物理アドレスをアクセス可能な状態にするアクセス制御部を有し、
    前記メモリダンプ実施部は、
    前記MMUを用いて、前記メモリ装置内の全ての物理アドレスにアクセスしてメモリダンプを行うことを特徴とする請求項1〜6のいずれかに記載のプロセッサ装置。
  8. 前記プロセッサ装置は、
    それぞれが前記メモリ装置を共有し、前記メモリ装置のメモリダンプを行う2以上の他のプロセッサ装置に接続されており、
    前記プロセッサ装置は、更に、
    前記メモリダンプ実施部によるメモリダンプの実施状況を監視し、前記メモリダンプ実施部においてメモリダンプが正常に行われていないことを検出した場合に、前記障害検出部によりメモリダンプが正常に行われていないことが検出されたプロセッサ装置以外の他のプロセッサ装置に、前記メモリダンプ実施部の代わりに前記メモリ装置のメモリダンプを実施するよう要求するメモリダンプ要求部を有することを特徴とする請求項1〜7のいずれかに記載のプロセッサ装置。
  9. 前記プロセッサ装置は、
    それぞれが前記メモリ装置を共有し、前記メモリ装置のメモリダンプを行う2以上の他のプロセッサ装置に接続されており、
    前記プロセッサ装置は、更に、
    少なくともいずれかの他のプロセッサ装置により更新状況が監視されるカウンタ値を、前記メモリダンプ実施部によりメモリダンプが正常に行われている間は所定の周期で更新するカウンタ値更新部を有することを特徴とする請求項1〜8のいずれかに記載のプロセッサ装置。
  10. 他のプロセッサ装置と接続され、前記他のプロセッサ装置とメモリ装置を共有しているプロセッサ装置であって、
    所定の場合に、前記メモリ装置のメモリダンプを行うメモリダンプ実施部と、
    前記メモリダンプ実施部によるメモリダンプの実施状況を監視し、前記メモリダンプ実施部においてメモリダンプが正常に行われていないことを検出した場合に、前記他のプロセッサ装置に、前記メモリダンプ実施部の代わりに前記メモリ装置のメモリダンプを実施するよう要求するメモリダンプ要求部とを有することを特徴とするプロセッサ装置。
  11. 前記プロセッサ装置は、更に、
    前記他のプロセッサ装置により更新状況が監視されるカウンタ値を、所定の周期で更新するカウンタ値更新部を有することを特徴とする請求項10に記載のプロセッサ装置。
  12. 前記プロセッサ装置は、更に、
    前記メモリダンプ要求部が前記他のプロセッサ装置にメモリダンプを実施するよう要求した後に、前記他のプロセッサ装置においてメモリダンプが正常に行われている間は前記他のプロセッサ装置により所定の周期で更新されるカウンタ値を監視し、前記カウンタ値の更新が停止した場合に、前記他のプロセッサ装置においてメモリダンプが正常に行われていないと判断する監視部を有することを特徴とする請求項10又は11に記載のプロセッサ装置。
  13. 前記プロセッサ装置は、
    それぞれが前記メモリ装置を共有し、前記メモリ装置のメモリダンプを行う2以上の他のプロセッサ装置に接続されており、
    前記メモリダンプ要求部は、
    メモリダンプの実施を要求したプロセッサ装置においてメモリダンプが正常に行われていないと前記監視部により判断された場合に、前記監視部によりメモリダンプが正常に行われていないと判断されたプロセッサ装置以外の他のプロセッサ装置に前記メモリ装置のメモリダンプを実施するよう要求することを特徴とする請求項12に記載のプロセッサ装置。
  14. 前記プロセッサ装置は、
    論理アドレスを前記メモリ装置の物理アドレスに変換するMMU(Memory Management Unit)に接続され、前記メモリ装置内の一部の物理アドレスを対象とする論理アドレスが割り当てられ、メモリダンプ時以外は、前記MMUを用いて、割り当てられている論理アドレスが対象としている一部の物理アドレスにのみアクセス可能であり、
    前記プロセッサ装置は、更に、
    メモリダンプ時に、前記メモリ装置内の全ての物理アドレスを対象とする論理アドレスを設定し、前記メモリダンプ実施部が前記メモリ装置内の全ての物理アドレスをアクセス可能な状態にするアクセス制御部を有し、
    前記メモリダンプ実施部は、
    前記MMUを用いて、前記メモリ装置内の全ての物理アドレスにアクセスしてメモリダンプを行うことを特徴とする請求項10〜13のいずれかに記載のプロセッサ装置。
  15. メモリ装置のメモリダンプを行う他のプロセッサ装置と接続され、前記メモリ装置を前記他のプロセッサ装置と共有しているプロセッサ装置に、
    前記他のプロセッサ装置においてメモリダンプが正常に行われていないことを検出する障害検出処理と、
    前記障害検出処理により前記他のプロセッサ装置においてメモリダンプが正常に行われていないことが検出された場合に、前記他のプロセッサ装置に代わって、前記メモリ装置のメモリダンプを行うメモリダンプ実施処理とを実行させることを特徴とするプログラム。
  16. 他のプロセッサ装置と接続され、前記他のプロセッサ装置とメモリ装置を共有しているプロセッサ装置であって、
    所定の場合に、前記メモリ装置のメモリダンプを行うメモリダンプ実施処理と、
    前記メモリダンプ実施処理によるメモリダンプの実施状況を監視し、前記メモリダンプ実施処理においてメモリダンプが正常に行われていないことを検出した場合に、前記他のプロセッサ装置に、前記メモリダンプ実施処理の代わりに前記メモリ装置のメモリダンプを実施するよう要求するメモリダンプ要求処理とを実行させることを特徴とするプログラム。
JP2012523458A 2010-07-06 2010-07-06 プロセッサ装置及びプログラム Expired - Fee Related JP5225515B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2010/061436 WO2012004854A1 (ja) 2010-07-06 2010-07-06 プロセッサ装置及びプログラム

Publications (2)

Publication Number Publication Date
JP5225515B2 JP5225515B2 (ja) 2013-07-03
JPWO2012004854A1 true JPWO2012004854A1 (ja) 2013-09-02

Family

ID=45440856

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012523458A Expired - Fee Related JP5225515B2 (ja) 2010-07-06 2010-07-06 プロセッサ装置及びプログラム

Country Status (5)

Country Link
US (1) US8583960B2 (ja)
EP (1) EP2592557A4 (ja)
JP (1) JP5225515B2 (ja)
CN (1) CN102971715B (ja)
WO (1) WO2012004854A1 (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2701063A4 (en) * 2011-04-22 2014-05-07 Fujitsu Ltd INFORMATION PROCESSING DEVICE, METHOD OF PROCESSING INFORMATION PROCESSING DEVICE
US20150006978A1 (en) * 2012-02-13 2015-01-01 Mitsubishi Electric Corporation Processor system
JP6035909B2 (ja) * 2012-06-29 2016-11-30 富士通株式会社 ストレージシステムおよびストレージシステムの制御方法
JP6035908B2 (ja) * 2012-06-29 2016-11-30 富士通株式会社 ストレージシステム
JP6133614B2 (ja) * 2013-02-12 2017-05-24 Necプラットフォームズ株式会社 障害ログ採取装置、障害ログ採取方法、及び、障害ログ採取プログラム
US9417947B1 (en) * 2013-03-15 2016-08-16 Twitter, Inc. System and method for robust storage of error event information
US9842040B2 (en) * 2013-06-18 2017-12-12 Empire Technology Development Llc Tracking core-level instruction set capabilities in a chip multiprocessor
TWI625622B (zh) * 2013-10-31 2018-06-01 聯想企業解決方案(新加坡)有限公司 在多核心處理器系統與運作多核心處理器系統的電腦實施方法
JP6221702B2 (ja) * 2013-12-05 2017-11-01 富士通株式会社 情報処理装置、情報処理方法、及び情報処理プログラム
US9740551B2 (en) 2014-12-02 2017-08-22 International Business Machines Corporation Enhanced restart of a core dumping application
US10216562B2 (en) * 2016-02-23 2019-02-26 International Business Machines Corporation Generating diagnostic data
US9690508B1 (en) * 2016-09-27 2017-06-27 International Business Machines Corporation PDSE physical dump anonymizer
KR20190037666A (ko) * 2017-09-29 2019-04-08 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US20210216667A1 (en) 2020-01-10 2021-07-15 Acronis International Gmbh Systems and methods for protecting against unauthorized memory dump modification
JP2022118489A (ja) 2021-02-02 2022-08-15 キオクシア株式会社 メモリシステム
US11644999B2 (en) * 2021-09-10 2023-05-09 Qualcomm Incorporated Protecting memory regions based on occurrence of an event

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59148492A (ja) 1983-02-14 1984-08-25 Hitachi Ltd 二重化構成電子交換機の再開処理方式
JPS61260338A (ja) 1985-05-14 1986-11-18 Fujitsu Ltd メモリダンプ方式
JPS63200242A (ja) 1987-02-16 1988-08-18 Nec Corp ホツトスタンバイシステムの系切替え方式
JPS6476230A (en) 1987-09-18 1989-03-22 Nec Corp Fault information dumping system in duplexed constitution multi-processor
JPH02257358A (ja) 1989-03-30 1990-10-18 Nec Commun Syst Ltd マルチプロセッサシステムにおける障害情報収集方式
JPH03216742A (ja) 1990-01-20 1991-09-24 Fujitsu Ltd メモリダンプシステム
JP2570104B2 (ja) 1993-05-31 1997-01-08 日本電気株式会社 情報処理装置に於ける障害情報採取方式
US5761739A (en) * 1993-06-08 1998-06-02 International Business Machines Corporation Methods and systems for creating a storage dump within a coupling facility of a multisystem enviroment
JPH07234808A (ja) 1994-02-24 1995-09-05 Toshiba Corp システムダンプ採取方式
JPH0830565A (ja) 1994-07-18 1996-02-02 Fuji Xerox Co Ltd マルチプロセッサ装置およびその障害情報収集方法
JPH09330253A (ja) 1996-06-10 1997-12-22 Nec Corp メモリダンプ方法及びそれを適用したメモリダンプシステム
JP2000148544A (ja) 1998-11-05 2000-05-30 Nec Eng Ltd ダンプ出力方式
US6779132B2 (en) * 2001-08-31 2004-08-17 Bull Hn Information Systems Inc. Preserving dump capability after a fault-on-fault or related type failure in a fault tolerant computer system
US7308609B2 (en) * 2004-04-08 2007-12-11 International Business Machines Corporation Method, data processing system, and computer program product for collecting first failure data capture information
JP2006040001A (ja) 2004-07-28 2006-02-09 Mitsubishi Heavy Ind Ltd コンピュータシステム及びメモリダンプ方法
CN1755660B (zh) * 2004-09-28 2010-09-29 惠普开发有限公司 冗余处理器中的诊断存储器转储方法
JP2006172100A (ja) 2004-12-15 2006-06-29 Hitachi Ltd オペレーティングシステムの高速切替え方式及びその方法
WO2006082657A1 (ja) * 2005-02-07 2006-08-10 Fujitsu Limited マルチcpuコンピュータおよびシステム再起動方法
US8375386B2 (en) * 2005-06-29 2013-02-12 Microsoft Corporation Failure management for a virtualized computing environment
US7478272B2 (en) * 2005-09-30 2009-01-13 International Business Machines Corporation Replacing a failing physical processor
WO2007077604A1 (ja) 2005-12-28 2007-07-12 Fujitsu Limited 情報処理装置及びハングアップ監視方法
US7788537B1 (en) * 2006-01-31 2010-08-31 Emc Corporation Techniques for collecting critical information from a memory dump
JP2007226413A (ja) * 2006-02-22 2007-09-06 Hitachi Ltd メモリダンプ方法、メモリダンププログラム、及び、計算機システム
JP2007334403A (ja) 2006-06-12 2007-12-27 Mitsubishi Electric Corp 計算機システム障害対応方式及び計算機システム障害対応方法
CN101295268B (zh) * 2007-04-27 2011-03-02 国际商业机器公司 面向软件系统的分区存储器转储方法和装置

Also Published As

Publication number Publication date
US20130111264A1 (en) 2013-05-02
EP2592557A1 (en) 2013-05-15
EP2592557A4 (en) 2014-03-26
JP5225515B2 (ja) 2013-07-03
WO2012004854A1 (ja) 2012-01-12
CN102971715B (zh) 2015-07-08
CN102971715A (zh) 2013-03-13
US8583960B2 (en) 2013-11-12

Similar Documents

Publication Publication Date Title
JP5225515B2 (ja) プロセッサ装置及びプログラム
JP4923990B2 (ja) フェイルオーバ方法、およびその計算機システム。
US9652332B2 (en) Information processing apparatus and virtual machine migration method
WO2017022002A1 (ja) ストレージ装置、ストレージシステム、ストレージシステムの制御方法
EP2634696B1 (en) Information processing apparatus, control method, and control program
JP2009129101A (ja) 情報処理装置の障害処理システム
US20140025903A1 (en) Multi-core processor system
JP6124644B2 (ja) 情報処理装置および情報処理システム
CN105247491B (zh) 计算机系统和控制方法
JP4985512B2 (ja) 分散共有メモリ型マルチプロセッサシステム及びマルチプロセッサシステムにおける負荷分散方法
US9448871B2 (en) Information processing device and method for selecting processor for memory dump processing
JP5557612B2 (ja) 計算機及び転送プログラム
JP6725662B2 (ja) 計算機システムおよび処理方法
WO2012137239A1 (ja) 計算機システム
US20080307190A1 (en) System and Method for Improved Virtual Real Memory
JP2008250386A (ja) アクセス制御装置及びコンピュータシステム
JP6269673B2 (ja) 情報処理装置、i/oシステム、及び、i/o制御方法
JP5454686B2 (ja) マルチコアプロセッサシステム、復元プログラム、および復元方法
JP4937200B2 (ja) イメージ検査装置、os装置及びイメージ検査方法
JP2008077388A (ja) マルチプロセッサ制御システム、方法、およびプログラム
JP2000347758A (ja) 情報処理装置
JP6303724B2 (ja) ログ制御方法、ログ制御プログラムおよびログ制御装置
JP2009020545A (ja) コンピュータの異常監視装置
JP2004046474A (ja) マルチos環境の計算機システムおよびそのプログラム
JP2008123129A (ja) マルチプロセッサシステム、障害処理方法、プログラム及び記録媒体

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130212

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130312

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160322

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees