JP2012103952A - メモリダンプ方法 - Google Patents

メモリダンプ方法 Download PDF

Info

Publication number
JP2012103952A
JP2012103952A JP2010252770A JP2010252770A JP2012103952A JP 2012103952 A JP2012103952 A JP 2012103952A JP 2010252770 A JP2010252770 A JP 2010252770A JP 2010252770 A JP2010252770 A JP 2010252770A JP 2012103952 A JP2012103952 A JP 2012103952A
Authority
JP
Japan
Prior art keywords
memory
area
core
memory dump
dump method
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
JP2010252770A
Other languages
English (en)
Inventor
Hideyuki Aze
英之 畔
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
Priority to JP2010252770A priority Critical patent/JP2012103952A/ja
Publication of JP2012103952A publication Critical patent/JP2012103952A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

【課題】リアルタイム性能への影響を最小限に抑えつつ、計算機の障害発生時に、障害発生前の状態を含めてメモリダンプするメモリダンプ方法を得る。
【解決手段】デュアルコアCPUを搭載した計算機で、コア1(102)上で動作するメイン処理部(109)のOS1(107)は、メモリ上のコア1領域(105)を使用して、通常処理を行い、コア2(103)上で動作する遅延処理部(110)のOS2(108)は、メモリ上のコア2領域(106)を使用して、OS1(107)より所定時間遅れて、OS1(107)と同じ処理を行い、計算機に障害が発生したときは、メモリダンプ機能1(111)により、コア1領域(105)及びコア2領域(106)を含むメモリ全部をダンプして、所定時間前のメモリ状態をもダンプするようにした。
【選択図】図1

Description

この発明は、計算機の障害発生時に、障害発生前のメモリ状態を含めてメモリダンプするメモリダンプ方法に関するものである。
従来のメモリダンプ機能は、計算機の障害を検出した際に、その瞬間のメモリ内容をディスク装置に出力するものである。このとき保存されるのは障害が発生した瞬間のメモリ内容のみであるため、障害発生の原因や経緯を知るには高度な専門知識が必要で、かつ時間をかけて調べる必要があった。
これを改善するために、定期的にメモリのスナップショットを記録することで、障害発生前の状態を保存する方法がある。(特許文献1参照)
また、スナップショットを記録する以外の方法として、計算機の動作(トレース)をログ情報として保存することで、障害発生までの動作を再現できるようにする方法がある。(特許文献2参照)
特開2009−80705号公報(第5〜16頁、図1) 特開2007−199956号公報(第6〜16頁、図3)
定期的にメモリのスナップショットを記録する方法の場合、スナップショットを取得する処理をシステムに追加する必要がある。またスナップショット取得中もシステム動作を続けるためには、スナップショットの正当性を保障するための工夫が必要であった。そのため、リアルタイム性能を要求されるようなシステムでは適用が難しかった。
また、計算機の動作をログ情報として保存する方法の場合、アプリケーションレベルのログであれば実現は容易だが、OS(オペレーティングシステム)のI/O(入出力)処理を全て保存するにはOSに大幅に手を加える必要があり、実現が困難である。
さらに、ログを保存する処理がOS内に追加になることから、メモリスナップショットを記録する場合と同様、リアルタイム性能を要求されるようなシステムでは適用が難しいという問題があった。
この発明は、上記のような課題を解決するためになされたものであり、リアルタイム性能への影響を最小限に抑えつつ、計算機の障害発生時に、障害発生前の状態を含めてメモリダンプするメモリダンプ方法を得ることを目的にするものである。
この発明に係わるメモリダンプ方法においては、複数のOSが、それぞれ独立して動作するように構成された計算機のメモリダンプ方法であって、第1のOSが第1のOS用のメモリ領域を使用して、通常の処理を行い、第2のOSが第1のOSより所定時間遅れて、第2のOS用のメモリ領域を使用して、第1のOSと同一の処理を行い、障害発生時には、第1のOS用のメモリ領域および第2のOS用のメモリ領域の内容をダンプするものである。
この発明は、以上説明したように、複数のOSが、それぞれ独立して動作するように構成された計算機のメモリダンプ方法であって、第1のOSが第1のOS用のメモリ領域を使用して、通常の処理を行い、第2のOSが第1のOSより所定時間遅れて、第2のOS用のメモリ領域を使用して、第1のOSと同一の処理を行い、障害発生時には、第1のOS用のメモリ領域および第2のOS用のメモリ領域の内容をダンプするので、障害発生時に、障害発生時のメモリダンプだけでなく、障害発生前のメモリダンプも取得することができる。
この発明の実施の形態1による計算機を示す構成図である。 この発明の実施の形態2による計算機を示す構成図である。 この発明の実施の形態2による計算機のハイパーバイザの動作を示すフローチャートである。 この発明の実施の形態3による計算機を示す構成図である。 この発明の実施の形態4による計算機を示す構成図である。 この発明の実施の形態5による計算機を示す構成図である。
実施の形態1.
以下、この発明の実施の形態1を図1に基づいて説明する。
図1は、この発明の実施の形態1による計算機を示す構成図である。
図1において、デュアルコアのCPU(101)を搭載した計算機において、CPU(101)のコア1(102)をメイン処理部(109)、コア2(103)を遅延処理部(110)として使用する。
メモリ(104)は、メイン処理部(109)用のコア1領域(105)(第1のOS用メモリ領域)と、遅延処理部(110)用のコア2領域(106)(第2のOS用メモリ領域)に領域を分割して使用する。コア1上で動作するOS1(107)(第1のOS)とコア2上で動作するOS2(108)(第2のOS)は、同じOSであって、互いに独立に動作する。
OS1(107)は、メモリダンプ機能1(111)を有し、OS2(108)は、メモリダンプ機能2(112)を有する。メモリダンプ機能1(111)とメモリダンプ機能2(112)は同じものであり、どちらもメモリ(104)をダンプする。
なお、OS1(107)とOS2(108)はS/W(ソフトウェア)層であり、コア1(102)とコア2(103)とコア1領域(105)とコア2領域(106)はH/W(ハードウェア)層である。
次に、動作について説明する。
図1において、メイン処理部(109)のOS1(107)は、通常通りのOS動作を行う。遅延処理部(110)のOS2(108)は、OS1(107)から一定の時間遅れて、OS1(107)と同じ動作を行う。
OS1(107)にて障害が発生して、メモリダンプ機能1(111)によりメモリダンプを取得する場合は、メモリ(104)の全領域を対象とすることで、OS1(107)とOS2(108)の両方のメモリ内容を保存する。
なお、OS2(108)のメモリダンプ機能2(112)は、OS1(107)の障害発生時には動作しない。これは、OS2(108)が、OS1(107)から一定の時間遅れて動作し、まだ障害発生していないためである。
これにより、OS1(107)で障害が発生した瞬間のメモリ内容だけでなく、OS1(107)の少し前の状態、すなわち障害発生前のメモリ内容を、OS2(108)のメモリ内容として同時に残すことが可能となる。
この方法を利用することで、OS1(107)には特殊な改造が不要であり、かつOS1(107)はOS2(108)に影響されること無く動作するため、OS1(107)のリアルタイム動作を妨げることなく、OS2(108)のメモリ内容として、障害発生前のメモリ内容を保存することが可能となる。
実施の形態1によれば、デュアルコアCPUを搭載した計算機で、2つのOSのうちの一つを通常通りのOS動作を行わせ、もう一つのOSを一つ目のOSから一定時間遅れて、同じ動作を行わせることで、メモリダンプ時に障害発生時のメモリ内容および障害発生前のメモリ内容を保存することができる。
実施の形態2.
実施の形態1は、外部のデバイスを扱うことはできない。OS1(107)とOS2(108)から同じI/O要求を外部のデバイスに出しても、要求を出すタイミングが異なるため同じ結果を得られない可能性がある。
また、ユーザ操作など非同期の割り込みを受けた場合に、OS1(107)とOS2(108)では割り込みを受けた瞬間の状態が異なっているため、同じ動作とならない。実施の形態2は、これらの対応するためのものである。
以下、実施の形態2を図に基づいて説明する。
図2は、この発明の実施の形態2による計算機を示す構成図である。
図2において、101〜112は図1におけるものと同一のものである。図2では、2つのOSを管理するためのハイパーバイザ(202)をS/W層に搭載し、OS1(107)とOS2(108)のI/Oは、ハイパーバイザ(202)を経由して処理することで、外部のデバイス(201)を扱えるようにする。
メモリ(104)には、ハイパーバイザ(202)で使用するためのハイパーバイザ管理領域(203)を設ける。このハイパーバイザ管理領域(203)は、FIFO(first−in,first−out)構造とする。
図3は、この発明の実施の形態2による計算機のハイパーバイザの動作を示すフローチャートである。
次に、実施の形態2の動作について、図3に基づいて説明する。
図3は、ハイパーバイザ(202)の動作について示したものである。ハイパーバイザ(202)は、OSからI/Oの要求を受けた場合(S301)、その要求の発行元によって動作を切り替える(S302)。
OS1(107)からの要求の場合は、デバイス201に対して要求を出し(S303)、ハイパーバイザ管理領域(203)にその要求の内容を記憶する(S304)。その後、デバイスからの応答を受けると、OS1(107)にその応答を通知し(S305)、応答の内容をハイパーバイザ管理領域(203)に記憶し(S306)、処理を終了する。
また、要求の発行元がOS2(108)の場合は、既に同じ要求がOS1(107)から出された後であるため、FIFOに従ってハイパーバイザ管理領域(203)から応答を取り出し(S307)、その応答をOS2(108)に通知する(S308)。その後、ハイパーバイザ管理領域(203)から要求と応答を削除して(S309)、処理を終了する。
このようにハイパーバイザ(202)を設計することで、図2に示すように、OS1(107)のI/O要求は、デバイス201まで到達し、OS2(108)のI/O要求は、ハイパーバイザ(202)で折り返すことになる。
非同期の割り込みについても、ハイパーバイザ(202)にて、ハイパーバイザ管理領域(203)に保存し、OS2(108)への通知は、ハイパーバイザ(202)から通知するようにすることで、OS1(107)に通知したのと同じタイミングでOS2(108)に通知することが可能となる。
これにより、OS1(107)とOS2(108)は、共に特殊な改造なしで、通常通りI/O処理を行えば良く、またハイパーバイザ(202)内の処理もI/O要求・応答をスルーしているだけのため、リアルタイム性能への影響も低く抑えることができる。
また、OS2(108)の動作状態からOS1(107)の動作状態になる間のI/O要求・応答がハイパーバイザ管理領域(203)に保存されることから、OS2(108)からOS1(107)に至る動作を再現することが可能となる。
実施の形態2によれば、ハイパーバイザを設けたので、OSに特殊な改造を施すことなく、外部デバイスへの入出力があっても、メモリダンプ時に障害発生時のメモリ内容および障害発生前のメモリ内容を保存することができる。
また、ハイパーバイザ管理領域に保存された、OS2からOS1に至るI/O要求・応答の動作を再現することが可能となる。
実施の形態3.
実施の形態3を、図4に基づいて説明する。
図4は、この発明の実施の形態3による計算機を示す構成図である。
図4において、101〜112は図1におけるものと同一のものである。図4では、OS1(107)とOS2(108)に、それぞれタスクスイッチ管理機能(401)を設けている。
タスクスイッチ管理機能(401)は、OS1(107)でタスクスイッチ(プロセススイッチ・コンテキストスイッチ)が発生した際に、OS1(107)から通知を受け、OS2(108)にタスク開始を指示する。
OS2(108)は、タスクスイッチ管理機能(401)から指示を受けて、当該タスクを開始し、タスクスイッチ時点まで動作して、タスクスイッチ管理機能(401)から次のタスク開始指示を待つ。
実施の形態1の場合、OS2(108)の動作するタイミングは、OS1(107)の一定時間後としているため、メモリダンプに含まれる障害発生前のメモリ内容は、OS1(107)で動作中のタスクと同一のタスク実行中となる可能性がある。
これに対し、実施の形態3では、OS2(108)は、OS1(107)から必ず1タスク遅れた状態で動作するため、OS1(107)で動作中のタスクの開始時からの状態を確実に取得することができ、より解析の確実性を向上させることができる。
実施の形態3によれば、2つのOSにタスクスイッチ管理機能を設けたので、OS2により取得される障害発生前のメモリ内容を、タスクの開始時からのものにすることができる。
実施の形態4.
以下、実施の形態4を、図5に基づいて説明する。
図5は、この発明の実施の形態4による計算機を示す構成図である。
図5において、101〜112は図1におけるものと同一のものである。図5では、トリプルコアCPUの場合について示したもので、新たに追加された遅延処理部2(504)は、コア3(501)、メモリ(104)のコア3領域(502)、OS3(503)より構成される。OS3(503)には、メモリダンプ機能3(511)が含まれている。
図1に示した実施の形態1は、デュアルコアCPUの場合について説明したものであるが、実施の形態4は、これを3コア以上のマルチコアCPUに拡張するものである。
図5は、トリプルコアCPUの場合のものであり、OS3(503)の動作を、OS2(108)よりも、さらに遅れて動作させるようにする。
これにより、OS1(107)の動作に影響を与えることなく、OS1(107)とOS2(108)とOS3(503)を合わせて、3つのタイミングのメモリ内容を記録することが可能である。
実施の形態4によれば、マルチコアCPUの複数のOSを順次、遅れて動作させることにより、複数のタイミングのメモリ内容を記録することができる。
実施の形態5.
以下、実施の形態5について図6を用いて説明する。
図6は、この発明の実施の形態5による計算機を示す構成図である。
図6において、101〜104、107〜112は図1におけるものと同一のものである。図6では、メモリ(104)を、コア共通書換え不可領域(601)、コア1書換え可能領域(602)、コア2書換え可能領域(603)の3つの空間に分割する。
実施の形態1では、メモリ(104)をコア1領域(105)とコア2領域(106)に分割して使用するため、OS1(107)で使用可能なメモリサイズは、搭載メモリの半分程度のサイズであった。これを改善したものが、図6に示した実施の形態5である。
実施の形態5では、メモリ(104)を、コア共通書換え不可領域(601)、コア1書換え可能領域(602)、コア2書換え可能領域(603)の3つの空間に分割する。
一般にメモリ空間には、スタック領域やデータ領域などの書換え可能な領域と、テキスト領域などの書換え不可能な領域が存在する。本発明では、各コアで同じOSを動作させるため、書換え不可能な領域は、いずれのコアについても同じ内容となる。
そこで、書換え不可能な領域は、全コアで共有し、書換え可能な領域のみ、各コア上のOSに対応した空間を割り当てるようにした。
これにより、各OSが使用可能なメモリサイズを増やすことができ、メモリを有効活用することが可能である。
実施の形態5によれば、メモリをコア共通書換え不可領域、コア1書換え可能領域およびコア2書換え可能領域の3つの空間に分割し、書換え可能な領域のみ、各コア上のOSに対応した空間を割り当てることで、各OSが使用可能なメモリサイズを増やし、メモリを有効活用することができる。
101 CPU
102 コア1
103 コア2
104 メモリ
105 コア1領域
106 コア2領域
107 OS1
108 OS2
109 メイン処理部
110 遅延処理部
111 メモリダンプ機能1
112 メモリダンプ機能2
201 デバイス
202 ハイパーバイザ
203 ハイパーバイザ管理領域
401 タスクスイッチ管理機能
501 コア3
502 コア3領域
503 OS3
504 遅延処理部2
511 メモリダンプ機能3
601 コア共通書換え不可領域
602 コア1書換え可能領域
603 コア2書換え可能領域


Claims (5)

  1. 複数のオペレーティングシステム(以下、OSという)が、それぞれ独立して動作するように構成された計算機のメモリダンプ方法であって、
    第1のOSが第1のOS用のメモリ領域を使用して、通常の処理を行い、
    第2のOSが上記第1のOSより所定時間遅れて、第2のOS用のメモリ領域を使用して、上記第1のOSと同一の処理を行い、
    障害発生時には、上記第1のOS用のメモリ領域および上記第2のOS用のメモリ領域の内容をダンプすることを特徴とするメモリダンプ方法。
  2. 上記第1のOSおよび第2のOSの動作は、デバイスへの入出力動作を含むものであり、両OSの上記デバイスへの入出力を管理するハイパーバイザにより上記第1のOS1の上記デバイスへの入出力要求およびこの入出力要求に対する上記デバイスからの応答を、上記メモリに設けられたハイパーバイザ管理領域に保存するとともに、
    上記第2のOSから上記デバイスへの入出力要求があった場合には、上記ハイパーバイザ管理領域に保存された上記第1のOSの当該入出力要求に対する上記デバイスからの応答を、上記第2のOSに返すようにしたことを特徴とする請求項1記載のメモリダンプ方法。
  3. 複数のOSが、それぞれ独立して動作するように構成された計算機のメモリダンプ方法であって、
    第1のOSが第1のOS用のメモリ領域を使用して、タスクによる通常の処理を行い、
    上記第1のOSのタスクスイッチを管理するタスクスイッチ管理機能により、第2のOSが上記第1のOSよりタスク単位で遅延されて、第2のOS用のメモリ領域を使用して、上記第1のOSと同一の処理を行い、
    障害発生時には、上記第1のOS用のメモリ領域および上記第2のOS用のメモリ領域の内容をダンプすることを特徴とするメモリダンプ方法。
  4. それぞれ独立して動作する3つ以上のOSであっても、各OSの動作タイミングを所定時間ずつ順次遅らせるようにしたことを特徴とする請求項1記載のメモリダンプ方法。
  5. 各OSによって使用されるメモリ空間は、書換え可能な領域のみをOS毎に管理し、書換え不可能な領域は各OSで共有するようにしたことを特徴とする請求項1〜請求項4のいずれかに記載のメモリダンプ方法。

JP2010252770A 2010-11-11 2010-11-11 メモリダンプ方法 Pending JP2012103952A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010252770A JP2012103952A (ja) 2010-11-11 2010-11-11 メモリダンプ方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010252770A JP2012103952A (ja) 2010-11-11 2010-11-11 メモリダンプ方法

Publications (1)

Publication Number Publication Date
JP2012103952A true JP2012103952A (ja) 2012-05-31

Family

ID=46394257

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010252770A Pending JP2012103952A (ja) 2010-11-11 2010-11-11 メモリダンプ方法

Country Status (1)

Country Link
JP (1) JP2012103952A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106997315A (zh) * 2016-01-25 2017-08-01 阿里巴巴集团控股有限公司 一种用于虚拟机的内存转储的方法和装置
CN109241029A (zh) * 2018-08-08 2019-01-18 新智能源系统控制有限责任公司 一种实现scada系统数据库平滑迁移的方法和装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106997315A (zh) * 2016-01-25 2017-08-01 阿里巴巴集团控股有限公司 一种用于虚拟机的内存转储的方法和装置
CN106997315B (zh) * 2016-01-25 2021-01-26 阿里巴巴集团控股有限公司 一种用于虚拟机的内存转储的方法和装置
CN109241029A (zh) * 2018-08-08 2019-01-18 新智能源系统控制有限责任公司 一种实现scada系统数据库平滑迁移的方法和装置
CN109241029B (zh) * 2018-08-08 2020-09-25 新智能源系统控制有限责任公司 一种实现scada系统数据库平滑迁移的方法和装置

Similar Documents

Publication Publication Date Title
US8381032B2 (en) System-directed checkpointing implementation using a hypervisor layer
US9588844B2 (en) Checkpointing systems and methods using data forwarding
JP5212360B2 (ja) 制御プログラム、制御システムおよび制御方法
US8893122B2 (en) Virtual computer system and a method of controlling a virtual computer system on movement of a virtual computer
US8533390B2 (en) Circular buffer in a redundant virtualization environment
US8151147B2 (en) Synchronize error handling for a plurality of partitions
CN103229149A (zh) 使用分层中断管理压缩存储器
US20110107344A1 (en) Multi-core apparatus and load balancing method thereof
Deshpande et al. Scatter-gather live migration of virtual machines
US11861390B1 (en) Transparent disk caching for virtual machines
GB2504772A (en) Coprocessor providing service address space for diagnostics collection
WO2019028682A1 (zh) 一种多系统共享内存的管理方法及装置
JP2009157684A (ja) 仮想化プログラム、シミュレーション装置、仮想化方法
JP2010218481A (ja) 高信頼性計算機システムおよびその構成方法
JP2015088133A (ja) 情報処理装置、起動方法及び起動プログラム
JP2012103952A (ja) メモリダンプ方法
JP2007265137A (ja) マルチタスク処理方法及びマルチタスク処理装置
JP6218652B2 (ja) 計算機、障害処理方法及びプログラム
US20150089271A1 (en) Management device, data acquisition method, and recording medium
US11392504B2 (en) Memory page fault handling for network interface devices in a virtualized environment
JP5635815B2 (ja) コンピュータシステム及びその制御方法
JP5565187B2 (ja) 情報処理装置および割込み制御プログラム
US20110191638A1 (en) Parallel computer system and method for controlling parallel computer system
US10241821B2 (en) Interrupt generated random number generator states
JP2005216317A (ja) キュー装置