(57)【要約】【課題】リアルタイム性能への影響を最小限に抑えつつ、計算機の障害発生時に、障害発生前の状態を含めてメモリダンプするメモリダンプ方法を得る。【解決手段】デュアルコアＣＰＵを搭載した計算機で、コア１（１０２）上で動作するメイン処理部（１０９）のＯＳ１（１０７）は、メモリ上のコア１領域（１０５）を使用して、通常処理を行い、コア２（１０３）上で動作する遅延処理部（１１０）のＯＳ２（１０８）は、メモリ上のコア２領域（１０６）を使用して、ＯＳ１（１０７）より所定時間遅れて、ＯＳ１（１０７）と同じ処理を行い、計算機に障害が発生したときは、メモリダンプ機能１（１１１）により、コア１領域（１０５）及びコア２領域（１０６）を含むメモリ全部をダンプして、所定時間前のメモリ状態をもダンプするようにした。【選択図】図１
2012103952.tif 000002
【特許請求の範囲】
【請求項１】
複数のオペレーティングシステム（以下、ＯＳという）が、それぞれ独立して動作するように構成された計算機のメモリダンプ方法であって、
第１のＯＳが第１のＯＳ用のメモリ領域を使用して、通常の処理を行い、
第２のＯＳが上記第１のＯＳより所定時間遅れて、第２のＯＳ用のメモリ領域を使用して、上記第１のＯＳと同一の処理を行い、
障害発生時には、上記第１のＯＳ用のメモリ領域および上記第２のＯＳ用のメモリ領域の内容をダンプすることを特徴とするメモリダンプ方法。
【請求項２】
上記第１のＯＳおよび第２のＯＳの動作は、デバイスへの入出力動作を含むものであり、両ＯＳの上記デバイスへの入出力を管理するハイパーバイザにより上記第１のＯＳ１の上記デバイスへの入出力要求およびこの入出力要求に対する上記デバイスからの応答を、上記メモリに設けられたハイパーバイザ管理領域に保存するとともに、
上記第２のＯＳから上記デバイスへの入出力要求があった場合には、上記ハイパーバイザ管理領域に保存された上記第１のＯＳの当該入出力要求に対する上記デバイスからの応答を、上記第２のＯＳに返すようにしたことを特徴とする請求項１記載のメモリダンプ方法。
【請求項３】
複数のＯＳが、それぞれ独立して動作するように構成された計算機のメモリダンプ方法であって、
第１のＯＳが第１のＯＳ用のメモリ領域を使用して、タスクによる通常の処理を行い、
上記第１のＯＳのタスクスイッチを管理するタスクスイッチ管理機能により、第２のＯＳが上記第１のＯＳよりタスク単位で遅延されて、第２のＯＳ用のメモリ領域を使用して、上記第１のＯＳと同一の処理を行い、
障害発生時には、上記第１のＯＳ用のメモリ領域および上記第２のＯＳ用のメモリ領域の内容をダンプすることを特徴とするメモリダンプ方法。
【請求項４】
それぞれ独立して動作する３つ以上のＯＳであっても、各ＯＳの動作タイミングを所定時間ずつ順次遅らせるようにしたことを特徴とする請求項１記載のメモリダンプ方法。
【請求項５】
各ＯＳによって使用されるメモリ空間は、書換え可能な領域のみをＯＳ毎に管理し、書換え不可能な領域は各ＯＳで共有するようにしたことを特徴とする請求項１〜請求項４のいずれかに記載のメモリダンプ方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、計算機の障害発生時に、障害発生前のメモリ状態を含めてメモリダンプするメモリダンプ方法に関するものである。
【背景技術】
【０００２】
従来のメモリダンプ機能は、計算機の障害を検出した際に、その瞬間のメモリ内容をディスク装置に出力するものである。このとき保存されるのは障害が発生した瞬間のメモリ内容のみであるため、障害発生の原因や経緯を知るには高度な専門知識が必要で、かつ時間をかけて調べる必要があった。
これを改善するために、定期的にメモリのスナップショットを記録することで、障害発生前の状態を保存する方法がある。（特許文献１参照）
また、スナップショットを記録する以外の方法として、計算機の動作（トレース）をログ情報として保存することで、障害発生までの動作を再現できるようにする方法がある。（特許文献２参照）
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−８０７０５号公報（第５〜１６頁、図１）
【特許文献２】特開２００７−１９９９５６号公報（第６〜１６頁、図３）
【発明の概要】
【発明が解決しようとする課題】
【０００４】
定期的にメモリのスナップショットを記録する方法の場合、スナップショットを取得する処理をシステムに追加する必要がある。またスナップショット取得中もシステム動作を続けるためには、スナップショットの正当性を保障するための工夫が必要であった。そのため、リアルタイム性能を要求されるようなシステムでは適用が難しかった。
また、計算機の動作をログ情報として保存する方法の場合、アプリケーションレベルのログであれば実現は容易だが、ＯＳ（オペレーティングシステム）のＩ／Ｏ（入出力）処理を全て保存するにはＯＳに大幅に手を加える必要があり、実現が困難である。
さらに、ログを保存する処理がＯＳ内に追加になることから、メモリスナップショットを記録する場合と同様、リアルタイム性能を要求されるようなシステムでは適用が難しいという問題があった。
【０００５】
この発明は、上記のような課題を解決するためになされたものであり、リアルタイム性能への影響を最小限に抑えつつ、計算機の障害発生時に、障害発生前の状態を含めてメモリダンプするメモリダンプ方法を得ることを目的にするものである。
【課題を解決するための手段】
【０００６】
この発明に係わるメモリダンプ方法においては、複数のＯＳが、それぞれ独立して動作するように構成された計算機のメモリダンプ方法であって、第１のＯＳが第１のＯＳ用のメモリ領域を使用して、通常の処理を行い、第２のＯＳが第１のＯＳより所定時間遅れて、第２のＯＳ用のメモリ領域を使用して、第１のＯＳと同一の処理を行い、障害発生時には、第１のＯＳ用のメモリ領域および第２のＯＳ用のメモリ領域の内容をダンプするものである。
【発明の効果】
【０００７】
この発明は、以上説明したように、複数のＯＳが、それぞれ独立して動作するように構成された計算機のメモリダンプ方法であって、第１のＯＳが第１のＯＳ用のメモリ領域を使用して、通常の処理を行い、第２のＯＳが第１のＯＳより所定時間遅れて、第２のＯＳ用のメモリ領域を使用して、第１のＯＳと同一の処理を行い、障害発生時には、第１のＯＳ用のメモリ領域および第２のＯＳ用のメモリ領域の内容をダンプするので、障害発生時に、障害発生時のメモリダンプだけでなく、障害発生前のメモリダンプも取得することができる。
【図面の簡単な説明】
【０００８】
【図１】この発明の実施の形態１による計算機を示す構成図である。
【図２】この発明の実施の形態２による計算機を示す構成図である。
【図３】この発明の実施の形態２による計算機のハイパーバイザの動作を示すフローチャートである。
【図４】この発明の実施の形態３による計算機を示す構成図である。
【図５】この発明の実施の形態４による計算機を示す構成図である。
【図６】この発明の実施の形態５による計算機を示す構成図である。
【発明を実施するための形態】
【０００９】
実施の形態１．
以下、この発明の実施の形態１を図１に基づいて説明する。
図１は、この発明の実施の形態１による計算機を示す構成図である。
図１において、デュアルコアのＣＰＵ（１０１）を搭載した計算機において、ＣＰＵ（１０１）のコア１（１０２）をメイン処理部（１０９）、コア２（１０３）を遅延処理部（１１０）として使用する。
メモリ（１０４）は、メイン処理部（１０９）用のコア１領域（１０５）（第１のＯＳ用メモリ領域）と、遅延処理部（１１０）用のコア２領域（１０６）（第２のＯＳ用メモリ領域）に領域を分割して使用する。コア１上で動作するＯＳ１（１０７）（第１のＯＳ）とコア２上で動作するＯＳ２（１０８）（第２のＯＳ）は、同じＯＳであって、互いに独立に動作する。
ＯＳ１（１０７）は、メモリダンプ機能１（１１１）を有し、ＯＳ２（１０８）は、メモリダンプ機能２（１１２）を有する。メモリダンプ機能１（１１１）とメモリダンプ機能２（１１２）は同じものであり、どちらもメモリ（１０４）をダンプする。
なお、ＯＳ１（１０７）とＯＳ２（１０８）はＳ／Ｗ（ソフトウェア）層であり、コア１（１０２）とコア２（１０３）とコア１領域（１０５）とコア２領域（１０６）はＨ／Ｗ（ハードウェア）層である。
【００１０】
次に、動作について説明する。
図１において、メイン処理部（１０９）のＯＳ１（１０７）は、通常通りのＯＳ動作を行う。遅延処理部（１１０）のＯＳ２（１０８）は、ＯＳ１（１０７）から一定の時間遅れて、ＯＳ１（１０７）と同じ動作を行う。
ＯＳ１（１０７）にて障害が発生して、メモリダンプ機能１（１１１）によりメモリダンプを取得する場合は、メモリ（１０４）の全領域を対象とすることで、ＯＳ１（１０７）とＯＳ２（１０８）の両方のメモリ内容を保存する。
なお、ＯＳ２（１０８）のメモリダンプ機能２（１１２）は、ＯＳ１（１０７）の障害発生時には動作しない。これは、ＯＳ２（１０８）が、ＯＳ１（１０７）から一定の時間遅れて動作し、まだ障害発生していないためである。
【００１１】
これにより、ＯＳ１（１０７）で障害が発生した瞬間のメモリ内容だけでなく、ＯＳ１（１０７）の少し前の状態、すなわち障害発生前のメモリ内容を、ＯＳ２（１０８）のメモリ内容として同時に残すことが可能となる。
この方法を利用することで、ＯＳ１（１０７）には特殊な改造が不要であり、かつＯＳ１（１０７）はＯＳ２（１０８）に影響されること無く動作するため、ＯＳ１（１０７）のリアルタイム動作を妨げることなく、ＯＳ２（１０８）のメモリ内容として、障害発生前のメモリ内容を保存することが可能となる。
【００１２】
実施の形態１によれば、デュアルコアＣＰＵを搭載した計算機で、２つのＯＳのうちの一つを通常通りのＯＳ動作を行わせ、もう一つのＯＳを一つ目のＯＳから一定時間遅れて、同じ動作を行わせることで、メモリダンプ時に障害発生時のメモリ内容および障害発生前のメモリ内容を保存することができる。
【００１３】
実施の形態２．
実施の形態１は、外部のデバイスを扱うことはできない。ＯＳ１（１０７）とＯＳ２（１０８）から同じＩ／Ｏ要求を外部のデバイスに出しても、要求を出すタイミングが異なるため同じ結果を得られない可能性がある。
また、ユーザ操作など非同期の割り込みを受けた場合に、ＯＳ１（１０７）とＯＳ２（１０８）では割り込みを受けた瞬間の状態が異なっているため、同じ動作とならない。実施の形態２は、これらの対応するためのものである。
以下、実施の形態２を図に基づいて説明する。
【００１４】
図２は、この発明の実施の形態２による計算機を示す構成図である。
図２において、１０１〜１１２は図１におけるものと同一のものである。図２では、２つのＯＳを管理するためのハイパーバイザ（２０２）をＳ／Ｗ層に搭載し、ＯＳ１（１０７）とＯＳ２（１０８）のＩ／Ｏは、ハイパーバイザ（２０２）を経由して処理することで、外部のデバイス（２０１）を扱えるようにする。
メモリ（１０４）には、ハイパーバイザ（２０２）で使用するためのハイパーバイザ管理領域（２０３）を設ける。このハイパーバイザ管理領域（２０３）は、ＦＩＦＯ（ｆｉｒｓｔ−ｉｎ，ｆｉｒｓｔ−ｏｕｔ）構造とする。
【００１５】
図３は、この発明の実施の形態２による計算機のハイパーバイザの動作を示すフローチャートである。
【００１６】
次に、実施の形態２の動作について、図３に基づいて説明する。
図３は、ハイパーバイザ（２０２）の動作について示したものである。ハイパーバイザ（２０２）は、ＯＳからＩ／Ｏの要求を受けた場合（Ｓ３０１）、その要求の発行元によって動作を切り替える（Ｓ３０２）。
ＯＳ１（１０７）からの要求の場合は、デバイス２０１に対して要求を出し（Ｓ３０３）、ハイパーバイザ管理領域（２０３）にその要求の内容を記憶する（Ｓ３０４）。その後、デバイスからの応答を受けると、ＯＳ１（１０７）にその応答を通知し（Ｓ３０５）、応答の内容をハイパーバイザ管理領域（２０３）に記憶し（Ｓ３０６）、処理を終了する。
【００１７】
また、要求の発行元がＯＳ２（１０８）の場合は、既に同じ要求がＯＳ１（１０７）から出された後であるため、ＦＩＦＯに従ってハイパーバイザ管理領域（２０３）から応答を取り出し（Ｓ３０７）、その応答をＯＳ２（１０８）に通知する（Ｓ３０８）。その後、ハイパーバイザ管理領域（２０３）から要求と応答を削除して（Ｓ３０９）、処理を終了する。
【００１８】
このようにハイパーバイザ（２０２）を設計することで、図２に示すように、ＯＳ１（１０７）のＩ／Ｏ要求は、デバイス２０１まで到達し、ＯＳ２（１０８）のＩ／Ｏ要求は、ハイパーバイザ（２０２）で折り返すことになる。
非同期の割り込みについても、ハイパーバイザ（２０２）にて、ハイパーバイザ管理領域（２０３）に保存し、ＯＳ２（１０８）への通知は、ハイパーバイザ（２０２）から通知するようにすることで、ＯＳ１（１０７）に通知したのと同じタイミングでＯＳ２（１０８）に通知することが可能となる。
【００１９】
これにより、ＯＳ１（１０７）とＯＳ２（１０８）は、共に特殊な改造なしで、通常通りＩ／Ｏ処理を行えば良く、またハイパーバイザ（２０２）内の処理もＩ／Ｏ要求・応答をスルーしているだけのため、リアルタイム性能への影響も低く抑えることができる。
また、ＯＳ２（１０８）の動作状態からＯＳ１（１０７）の動作状態になる間のＩ／Ｏ要求・応答がハイパーバイザ管理領域（２０３）に保存されることから、ＯＳ２（１０８）からＯＳ１（１０７）に至る動作を再現することが可能となる。
【００２０】
実施の形態２によれば、ハイパーバイザを設けたので、ＯＳに特殊な改造を施すことなく、外部デバイスへの入出力があっても、メモリダンプ時に障害発生時のメモリ内容および障害発生前のメモリ内容を保存することができる。
また、ハイパーバイザ管理領域に保存された、ＯＳ２からＯＳ１に至るＩ／Ｏ要求・応答の動作を再現することが可能となる。
【００２１】
実施の形態３．
実施の形態３を、図４に基づいて説明する。
図４は、この発明の実施の形態３による計算機を示す構成図である。
図４において、１０１〜１１２は図１におけるものと同一のものである。図４では、ＯＳ１（１０７）とＯＳ２（１０８）に、それぞれタスクスイッチ管理機能（４０１）を設けている。
【００２２】
タスクスイッチ管理機能（４０１）は、ＯＳ１（１０７）でタスクスイッチ（プロセススイッチ・コンテキストスイッチ）が発生した際に、ＯＳ１（１０７）から通知を受け、ＯＳ２（１０８）にタスク開始を指示する。
ＯＳ２（１０８）は、タスクスイッチ管理機能（４０１）から指示を受けて、当該タスクを開始し、タスクスイッチ時点まで動作して、タスクスイッチ管理機能（４０１）から次のタスク開始指示を待つ。
実施の形態１の場合、ＯＳ２（１０８）の動作するタイミングは、ＯＳ１（１０７）の一定時間後としているため、メモリダンプに含まれる障害発生前のメモリ内容は、ＯＳ１（１０７）で動作中のタスクと同一のタスク実行中となる可能性がある。
これに対し、実施の形態３では、ＯＳ２（１０８）は、ＯＳ１（１０７）から必ず１タスク遅れた状態で動作するため、ＯＳ１（１０７）で動作中のタスクの開始時からの状態を確実に取得することができ、より解析の確実性を向上させることができる。
【００２３】
実施の形態３によれば、２つのＯＳにタスクスイッチ管理機能を設けたので、ＯＳ２により取得される障害発生前のメモリ内容を、タスクの開始時からのものにすることができる。
【００２４】
実施の形態４．
以下、実施の形態４を、図５に基づいて説明する。
図５は、この発明の実施の形態４による計算機を示す構成図である。
図５において、１０１〜１１２は図１におけるものと同一のものである。図５では、トリプルコアＣＰＵの場合について示したもので、新たに追加された遅延処理部２（５０４）は、コア３（５０１）、メモリ（１０４）のコア３領域（５０２）、ＯＳ３（５０３）より構成される。ＯＳ３（５０３）には、メモリダンプ機能３（５１１）が含まれている。
【００２５】
図１に示した実施の形態１は、デュアルコアＣＰＵの場合について説明したものであるが、実施の形態４は、これを３コア以上のマルチコアＣＰＵに拡張するものである。
図５は、トリプルコアＣＰＵの場合のものであり、ＯＳ３（５０３）の動作を、ＯＳ２（１０８）よりも、さらに遅れて動作させるようにする。
これにより、ＯＳ１（１０７）の動作に影響を与えることなく、ＯＳ１（１０７）とＯＳ２（１０８）とＯＳ３（５０３）を合わせて、３つのタイミングのメモリ内容を記録することが可能である。
【００２６】
実施の形態４によれば、マルチコアＣＰＵの複数のＯＳを順次、遅れて動作させることにより、複数のタイミングのメモリ内容を記録することができる。
【００２７】
実施の形態５．
以下、実施の形態５について図６を用いて説明する。
図６は、この発明の実施の形態５による計算機を示す構成図である。
図６において、１０１〜１０４、１０７〜１１２は図１におけるものと同一のものである。図６では、メモリ（１０４）を、コア共通書換え不可領域（６０１）、コア１書換え可能領域（６０２）、コア２書換え可能領域（６０３）の３つの空間に分割する。
【００２８】
実施の形態１では、メモリ（１０４）をコア１領域（１０５）とコア２領域（１０６）に分割して使用するため、ＯＳ１（１０７）で使用可能なメモリサイズは、搭載メモリの半分程度のサイズであった。これを改善したものが、図６に示した実施の形態５である。
実施の形態５では、メモリ（１０４）を、コア共通書換え不可領域（６０１）、コア１書換え可能領域（６０２）、コア２書換え可能領域（６０３）の３つの空間に分割する。
一般にメモリ空間には、スタック領域やデータ領域などの書換え可能な領域と、テキスト領域などの書換え不可能な領域が存在する。本発明では、各コアで同じＯＳを動作させるため、書換え不可能な領域は、いずれのコアについても同じ内容となる。
そこで、書換え不可能な領域は、全コアで共有し、書換え可能な領域のみ、各コア上のＯＳに対応した空間を割り当てるようにした。
これにより、各ＯＳが使用可能なメモリサイズを増やすことができ、メモリを有効活用することが可能である。
【００２９】
実施の形態５によれば、メモリをコア共通書換え不可領域、コア１書換え可能領域およびコア２書換え可能領域の３つの空間に分割し、書換え可能な領域のみ、各コア上のＯＳに対応した空間を割り当てることで、各ＯＳが使用可能なメモリサイズを増やし、メモリを有効活用することができる。
【符号の説明】
【００３０】
１０１  ＣＰＵ
１０２  コア１
１０３  コア２
１０４  メモリ
１０５  コア１領域
１０６  コア２領域
１０７  ＯＳ１
１０８  ＯＳ２
１０９  メイン処理部
１１０  遅延処理部
１１１  メモリダンプ機能１
１１２  メモリダンプ機能２
２０１  デバイス
２０２  ハイパーバイザ
２０３  ハイパーバイザ管理領域
４０１  タスクスイッチ管理機能
５０１  コア３
５０２  コア３領域
５０３  ＯＳ３
５０４  遅延処理部２
５１１  メモリダンプ機能３
６０１  コア共通書換え不可領域
６０２  コア１書換え可能領域
６０３  コア２書換え可能領域
【図１】
2012103952.tif 000003
【図２】
2012103952.tif 000004
【図３】
2012103952.tif 000005
【図４】
2012103952.tif 000006
【図５】
2012103952.tif 000007
【図６】
2012103952.tif 000008