JP2005122334A - メモリダンプ方法、メモリダンプ用プログラム及び仮想計算機システム - Google Patents

メモリダンプ方法、メモリダンプ用プログラム及び仮想計算機システム Download PDF

Info

Publication number
JP2005122334A
JP2005122334A JP2003354489A JP2003354489A JP2005122334A JP 2005122334 A JP2005122334 A JP 2005122334A JP 2003354489 A JP2003354489 A JP 2003354489A JP 2003354489 A JP2003354489 A JP 2003354489A JP 2005122334 A JP2005122334 A JP 2005122334A
Authority
JP
Japan
Prior art keywords
memory
dump
virtual machine
address
area
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
JP2003354489A
Other languages
English (en)
Inventor
Taro Nakamura
太郎 中村
Yoshinori Wakai
義憲 若井
Takayuki Abe
孝之 阿部
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 JP2003354489A priority Critical patent/JP2005122334A/ja
Publication of JP2005122334A publication Critical patent/JP2005122334A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】仮想計算機に障害が発生してメモリダンプを採取する場合に、仮想計算機の業務再開までの停止時間を短縮させる。
【解決手段】物理計算機上に動作する一の仮想計算機に割り当てられるメモリ領域内に格納する障害情報を他の仮想計算機が補助記憶装置にダンプできるように、障害情報を格納するメモリ領域のダンプ対象領域のアドレスを他の仮想計算機に割り当てられたメモリ領域内のダンプ処理領域のアドレスに上書きすることによって、他の仮想計算機に割り当てられたメモリ領域と物理メモリとのマッピング情報を管理するページテーブルの内容を変更する。
【選択図】図1

Description

本発明は、メモリダンプ方法、メモリダンプ用プログラム及びそれらを実行する仮想計算機システム関する。
計算機に障害が発生した場合、障害の原因を解析するためにメモリダンプを採取する手法が用いられる。メモリダンプ中は、ダンプ対象のメモリ内容を上書きすることができないことから、通常メモリダンプ処理が完了してから計算機の再起動を行っていた。そのため、メモリダンプ処理が計算機の停止時間を増大させるという問題があった。一方、計算機上に複数の仮想計算機を構築して運用する仮想計算機システムにおいても、メモリダンプの処理時間に関する問題は同様に存在する。
このような問題を考慮し、ダンプ処理による計算機の再起動の遅延を回避する技術として、特開2001−290677号公報に開示されている技術がある。
特開2001−290677号公報
特開2001−290677号公報に開示されている技術は、計算機システムを通常業務系と待機系に分割し、ダンプ対象のメモリを待機系のメモリに退避する。しかしながら、メモリコピーの所要時間による計算機システム再起動の遅延の問題が依然として存在する。
本発明は、障害が発生した仮想計算機が迅速に業務を再開できるメモリダンプを実現することを目的とする。
物理計算機上に動作する一の仮想計算機に割り当てられるメモリ領域内に格納する障害情報を他の仮想計算機が補助記憶装置にダンプできるように、障害情報を格納するメモリ領域のダンプ対象領域のアドレスが他の仮想計算機に割り当てられたメモリ領域内のダンプ処理領域のアドレスに上書きされることによって、他の仮想計算機に割り当てられたメモリ領域と物理メモリとのマッピング情報を管理するページテーブルの内容を変更する。
仮想計算機に障害が発生してメモリダンプを採取する場合、当該仮想計算機の再起動を即座に開始することができ、障害発生による仮想計算機の業務停止時間を短く抑えることができる。
図1は、メモリダンプを実行する仮想計算機システムの一構成例を示す。
物理計算機100は、プロセッサ104とホストメモリ105(物理メモリ)を備えている。物理計算機100上でハイパバイザ101と呼ばれる制御プログラム(以下、ハイパバイザという)が動作する。ハイパバイザ101により構築される仮想計算機102aと102b(以下、仮想計算機102という)が物理計算機100上で動作する。ホストメモリ105の領域がハイパバイザ101により分割され、仮想計算機102に対してゲストメモリ106aと106b(以下、ゲストメモリ106という)として割り当てられる。仮想計算機102aと102b上でオペレーティングシステム103a、103b(以下、OS103という)がそれぞれ動作する。
このように、物理計算機のプロセッサ104やホストメモリ105などの物理的資源がハイパバイザ101により排他的または時間的に分割され、仮想計算機102aと102bに対して提供され、仮想計算機システムが構築される。
図1に示される障害検出手段1100が仮想計算機102aに発生する障害を検出すると、メモリ退避手段1101が仮想計算機102aに割り当てられたメモリ領域(ゲストメモリ106a)に格納される情報を保存し、仮想計算機103aを再起動する。OS103bは、ゲストメモリ106b上にダンプ処理用領域を設定し、ダンプ処理領域のアドレスを通信手段1104によりハイパバイザ104に通知する。ハイパバイザ1101は、ゲストメモリ106a上にダンプ処理対象領域のアドレスを取得し、ダンプ処理領域のアドレスに上書きすることによってアドレス変換を行い、通信手段1101によりOS103bに通知する。OS103bは、ハイパバイザ101が行ったアドレス変換によってダンプ処理対象領域にアクセスでき、ダンプ処理対象領域に格納する情報をダンプし、補助記憶装置に出力することができる。
このように、仮想計算機102aに障害が発生した場合においてゲストメモリ106aに格納される障害情報を仮想計算機102bがダンプ手段を用いて行うことを説明した。
一方、仮想計算機103bに障害が発生し場合又は仮想計算機103aと103bの両方に障害が発生した場合、上述と同様の方法によりにゲストメモリ103aに格納される障害情報のダンプ処理を行う。この場合、ゲストメモリ103bに格納される障害情報を再起動された仮想計算機103bがダンプを行うために、上述のハイパバイザ101によるアドレス変換を行うまでもない。
図1に示される障害検出手段1100、メモリ退避手段1101、通信手段1104、ダンプ手段1103及びそれらを有する計算機システムが実行するメモリダンプの処理についての詳細な説明は後述する。
図2に、仮想計算機システムのプロセッサ104とホストメモリ105の一構成例を示す。
図2(a)に、仮想計算機システムプロセッサ104の構成を示す。
プロセッサ104には、PSR200、IHB201及びTLB301という3つの制御レジスタを有する。
PSR200は、プロセッサの動作モードを示すレジスタである。
PSR200の特権ビット(以下、Pビットという)202は、プロセッサ104の動作モードを示す。Pビット202が「1」の場合、プロセッサ104は特権モードで動作する。一方、Pビット202が「0」の場合、プロセッサ104は非特権モードで動作する。なお、ハイパバイザ101は特権モードで動作する。
PSR200のアドレス変換ビット(以下、Tビットという)300は、プロセッサ104のアドレス変換を制御する。Tビット300が「1」の場合、プロセッサ104は、後述のTLB301を用いてアドレス変換を行う。Tビット300の値が「0」の場合、アドレス変換を行わない。ハイパバイザ101が仮想計算機102を起動する場合、Tビット300を「1」に設定する。
IHB201は、後述の割り込みハンドラ204のアドレスを格納するレジスタである。プロセッサ104に対して割り込みが発生すると実行中の処理が中断され、割り込みハンドラへ分岐する。
TLB301は、ホストメモリ105とゲストメモリ106とのマッピングを管理する後述のページテーブル302の内容を記憶するレジスタである。
図2(c)に、TLB301の構成を示す。
TLB301は、有効ビット(以下、Vビットという)400、アクセス制御ビット(以下、Cビットという)401、仮想ページアドレス402及び実ページアドレス403の各フィールドを有する。
Vビット400は、エントリの有効/無効を表すフラグである。例えば、Vビット400が「1」の場合、エントリが有効であり、「0」の場合、エントリは無効である。
Cビット401は、エントリにより変換されたメモリ領域に対するアクセスを制御するフラグである。Cビットは、PSR200のPビットとの組み合わせで、OS103によるメモリ領域のアクセスができるか否かが決まる。Cビットが「0」であり、かつPビットが「1」の場合、OS103によるアクセスができる。一方、Cビットが「1」の場合であり、かつPビットが「0」の場合、アクセス違反例外による割り込みが発生する。
仮想ページアドレス402は、OS103が管理する仮想空間上のページアドレスを格納するフィールドである。但し、仮想計算機システムではOS103のアドレス変換モードで動作する場合、ゲスト仮想ページアドレスを格納する。一方、OS103が非アドレス変換モードで動作する場合、ゲスト実ページアドレスを格納する。
実ページアドレス403は、ホストメモリ105(物理メモリ)上のページアドレスを格納するフィールドである。仮想計算機システムにおいては、実ページアドレス403は、ホスト実ページアドレス406を格納する。
なお、PSR200、IHB201及びTLB301は特権レジスタである。プロセッサ104が非特権モードで動作するときにPSR200、IHB201及びTLB301にアクセスすると割り込みが発生する。
図2(b)に、ホストメモリ105の構成を示す。
ホストメモリ105は、仮想計算機102aと102bが使用するゲストメモリ106aと106bに対してハイパバイザ101によって割り当てられたゲストメモリ領域を有する。また、ホストメモリ105は、割り込みハンドラ204と制御テーブル203を格納する領域を有する。さらに、ホストメモリ105は、図示していない他の空き領域を有する。
ゲストメモリ106は、ゲスト割り込みハンドラ205とゲストページテーブル307を格納する領域を有する。
ゲスト割り込みハンドラ205は、OS103自身が作成した割り込みハンドラをいう。
ゲストページテーブル307は、仮想計算機102が作り出した仮想空間上のアドレス(以下、ゲスト仮想ページアドレス)をゲストメモリ上のアドレス(以下、ゲスト実ページアドレス)へのマッピングをページ単位で管理するテーブルである。
割り込みハンドラ204は、ハイパバイザ101自らが作成し、実行する割り込みハンドラをいう。
制御テーブル203は、仮想計算機102の状態を管理するための管理情報を格納する領域である。
制御テーブル203は、ページテーブル302aと302b(以下、ページテーブル302という)、ゲストPSR303aと303b(以下、ゲストPSR303という)、ゲストIHB206aと206b(以下、ゲスト206という)及びゲストTLBテーブル304aと304b(以下、ゲストTLBテーブル304という)を格納する領域を有する。
ページテーブル302は、ゲストメモリ106上のアドレス(以下、ゲスト実アドレスという)がホストメモリ105上のアドレス(以下、ホスト実アドレスという)へのマッピングをページ単位で管理するテーブルである。
図2(d)に、ページテーブル302の構成を示す。
ページテーブル302は、ホストCビット404、ゲスト実ページアドレス405及びホスト実ページアドレス406の各フィールドを有する。ハイパバイザ101は、仮想計算機102を起動する際にゲストメモリ106の全ページに対するエントリをページテーブル302に登録する。
ホストCビット404は、ホストアクセス制御ビットをいう。ハイパバイザ101は、OS103によるアクセスをインタセプトしたいページに対してホストCビットを「1」に設定し、インタセプトしないページに対してホストCビットを「0」に設定する。
ゲスト実ページアドレス405は、ゲスト実メモリのベースアドレスを格納するフィールドである。ゲスト実メモリは、仮想計算機102上のOS103から見える仮想的な物理メモリである。
ホスト実ページアドレス406は、ホスト実メモリ(ホストメモリ105)のベースアドレスを格納するフィールドである。
ゲストPSR303は、OS103から見た論理的なPSR200の内容を格納する領域をいう。
ゲストPSR303のゲスト特権ビット(以下、ゲストPビットという)305は、仮想計算機102の動作モードを管理する。
ゲストPSR303のゲストアドレス変換ビット(以下、ゲストTビットという)306は、仮想計算機102のアドレス変換を管理する。ゲストTビット306が「1」の場合、仮想計算機102上のプログラム(例えば、OS103やアプリケーション)は、ゲスト仮想アドレスからゲスト実アドレスへのアドレス変換を行う。ゲストTビット306が「0」の場合、アドレス変換を行わない。なお、OS103は、ゲスト仮想アドレスからゲスト実アドレスへのアドレス変換を管理するゲストページテーブル307をゲストメモリ106上に作成する。
ゲストIHB206は、ゲスト割り込みハンドラ204のアドレスを格納する領域である。
ゲストTLBテーブル304は、OS103から見た論理的なTLB301の内容を格納するための領域である。
図2(e)に、ゲストTLBテーブル304の構成を示す。
ゲストTLBテーブル304は、ゲスト有効ビット(以下、ゲストVビットという)407、ゲストアクセス制御ビット(以下、ゲストCビットという)408、ゲスト仮想ページアドレス409及びゲスト実ページアドレス410の各フィールドを有する。
ゲスト仮想ページアドレス409は、仮想計算機102が作り出した仮想空間をページ単位で示すアドレスである。
ゲスト実ページアドレス410は、前述ページテーブル302上のゲスト実ページアドレス405に対応する。
ゲストVビット407は、前述のTLB301のVビットと同様の働きを有するが、ゲストVビットはゲストTLBに対する有効又は無効の状態を表す。
ゲストCビット408は、TLBのCビットと同じである。ただし、アクセス違反例外(割り込み)の発生はあくまでTLB301のCビットとPSR200のPビットとの関係で制御される。ゲストCビットとゲストPビットは、メモリ上に置かれた仮想的なレジスタ(ゲストTLBおよびゲストPSR)であるため、例外の発生には関与しない。ハイパバイザ101は、ゲストCビットとゲストPビットとの関係が矛盾しないように、OS103に対してアクセス違反例外をエミュレートする。
以下、図1に示される障害検出手段1100、メモリ退避手段1101、通信手段1104及びダンプ手段1103を説明する。
障害検出手段1100は、ハイパバイザ101が割り込みをインタセプトすることによって実現する。
例えば、仮想計算機102aに障害が発生した場合、マシンチェック割り込みや予期しないNMI(Non−Maskable Interrupt)が発生する場合がある。ハイパバイザ101は、これらの割り込みをインタセプトすることによって、仮想計算機102aに障害が発生したことを検出することができる。
また、OS103aは障害発生時にファームウェアのサービス関数を呼び出してシステムのリセットを実行する場合がある。この場合は、OS103aがサービス関数を呼び出すときに、障害が発生したことを表すフラグを引数として渡させるようにする。ハイパバイザ101は、OS103によるサービス関数の呼び出しをインタセプトし、引数の値から障害が発生したか否かを検出することができる。ハイパバイザ101は、仮想計算機102を起動する際に、ファームウェアコードが含まれるゲスト実ページアドレスに対してページテーブル302の対応するエントリのホストCビットを1に設定する。よって、OS103がファームウェアのサービス関数を呼び出すと割り込みが発生するため、ハイパバイザ101はサービス関数の呼び出しをインタセプトすることができる。
メモリ退避手段1101は、障害検出手段1100が仮想計算機102の障害を検出した際に、ゲストメモリ106の内容を退避してから当該仮想計算機102の再起動を行うことによって実現する。メモリ退避手段1101は、ホストメモリ105上に空き領域を退避領域として設定し、ページテーブル302が操作されることによって実現する。メモリ退避の処理の説明は後述する。
ダンプ手段1103は、通常のOSが持つデバイスドライバを利用することができる。
通信手段1104は、OS103bからハイパバイザ101へメッセージを通知する場合と、ハイパバイザ101からOS103へメッセージを通知する場合とで実現方法が異なる。
OS103からハイパバイザ101へメッセージを通知する場合では、ハイパバイザ101は、ゲストメモリ106上に後述の通信用ページを予約する。仮想計算機102を起動する際に、通信用ページのゲスト実ページアドレスに対応するページテーブル302のホストCビット404の値を「1」に設定する。このホストCビット404の設定によって、OS103がこの領域にアクセスすると割り込みが発生する。ハイパバイザ101は、この割り込みをインタセプトし、OS103がアクセスしたアドレスからメッセージ内容を解析できる。
一方、ハイパバイザ101からOS103へメッセージを通知する場合では、ハイパバイザ101は、割り込みをエミュレートすることによりハイパバイザ101による処理が終了したことをOS103に通知する。割り込みのエミュレーションは、ゲスト割り込みハンドラ205に分岐してOS103に制御を移すことによって実現する。このとき、ハイパバイザ101は、割り込み制御レジスタにOS103が指定したベクタ番号を書き込むことによって、ハイパバイザ101からの割り込みであることを指定できる。この割り込み制御レジスタは、例えばItanium(Itaniumは登録商標です)アーキテクチャにおけるIVR(External Interrupt Vector Register)などである。
図3は、ハイパバイザ101とOS103とのゲストメモリ106b上の通信用ページの構成を示す。
OS103は、ハイパバイザ101との通信に用いる割り込みベクタ番号をVECTOR1300に書き込む。この処理は、OS103のブート時に行う。ハイパバイザ101は、この書き込み操作をインタセプトし、ベクタ番号を取得する。メモリダンプ処理中にハイパバイザ101からOS103に対して割り込みをエミュレーションする際は、このベクタ番号を使用する。DUMPBASE1301とREADREQ1302の使用方法は後述する。
図4は、障害検出手段1100が仮想計算機102に発生する障害を検出してから当該仮想計算機102を再起動するまでの処理を示す。
ステップ1200では、PURGETLB命令を実行することによりTLB301の全エントリをパージする。PURGETLB命令とは、INDEXで指定されたTLB301のエントリのVビット400を「0」にする処理をいう。
ステップ1201では、ゲストTLBテーブル304の全エントリのゲストVビット407を「0」に設定する。
ステップ1202では、あらかじめ用意されたホストメモリ105上の空き領域にゲストメモリ106がマッピングされるように新たなページテーブル302を作成する。このとき、障害発生時に使用していたもとのページテーブル302(以下、ページテーブル302'という)は、後述のメモリダンプ処理に利用するために保存する。
ステップ1203では、ゲストPSR306のゲストPビットの値を「1」に設定し、ゲストTビットの値を「0」に設定する。
ステップ1204では、ステップ1202で作成したページテーブル302を用いて仮想計算機102を再起動する。
図5は、図1に示される計算機システムが実行するメモリダンプの処理を示す。
ステップ1400では、ハイパバイザ101は、通信手段1104を介してOS103bに対してメモリダンプ処理の開始を指示する。OS103bは、この指示を受けてメモリダンプの処理を開始する。なお、OS103bによるメモリダンプ処理は、ゲストTビットの値が「1」であるアドレス変換モードで実行する。既述のように、ゲストTビットの値が「1」のとき、仮想計算機102上のOS103は、ゲスト仮想アドレスからゲスト実アドレスへのアドレス変換を行う。
ステップ1401では、OS103bは、ダンプ処理のための1ページ分のメモリ領域(以下、ダンプ処理用領域という)をゲストメモリ106b上に設定する。このダンプ処理用領域は、ゲスト仮想ページアドレスが示すゲスト仮想空間の領域である。
ステップ1402では、OS103bは、ステップ1401で設定したダンプ処理用領域のベースアドレス(ゲスト仮想ページアドレス)を図13に示す通信用ページ上のDUMPBASE1301に書き込む。この操作により割り込みが発生し、ハイパバイザ101に処理が移される。本ステップによって、OS103bはダンプ処理用領域のゲスト仮想ページアドレスをDUMPBASEに書き込むことによりハイパバイザに通知することになる。
ステップ1403では、ハイパバイザ101は、DUMPBASEから取得したダンプ処理用領域のベースアドレスからゲストTLBテーブル304bを引き、ゲスト実ページアドレスを取得する。さらに、ハイパバイザ101は、取得したゲスト実ページアドレスからページテーブル302bを引き、エントリ(以下、ワークエントリという)を取得する。そして、取得したエントリからホスト実アドレスを取り出し、退避させる。既述のように、ハイパバイザ101は、ゲストテーブルTLB304bとページテーブル302bを管理しているため、取得したゲスト仮想ページアドレスに対応するゲスト実ページアドレスとホスト実ページアドレスを取得することができる。
ステップ1404では、ハイパバイザ101は、OS103bに処理を戻す(ステップ1402で発生した割り込みからの復帰)。本ステップによって、ハイパバイザ101がダンプ処理の準備ができたことをOS103bに通知することになる。
ステップ1405では、OS103bは、図3の通信用ページにあるREADREQ1302の内容を読み込む。この操作により割り込みが発生し、ハイパバイザ101に処理が移される。本ステップによって、ハイパバイザ101は、OS103bがダンプ処理を行う準備ができたことを検出したことになる。
なお、通信用ページにあるREADREQのビット値が「1」の場合はOS103bがダンプ処理を継続し、「0」の場合はダンプ処理を終了することになる。READREOのビット値は、後述のようにハイパバイザ101によって設定される。
ステップ1406では、ハイパバイザ101は、図4のステップ1202で保存した障害発生時のページテーブル302a'の中に、ダンプ処理が未実施のエントリが残されているか否かを判別する。未ダンプのエントリが存在する場合はステップ1407に処理が移される。存在しない場合はステップ1411に処理が移される。
ステップ1407〜ステップ1409は、ダンプ処理用領域のマッピング変更の処理を示す。
ステップ1407では、ハイパバイザ101は、ページテーブル302a'から未ダンプのエントリを1つ取り出し、ホスト実ページアドレス406a'を取得する。そして、取得したホスト実ページアドレス406a'をステップ1403で取得したページテーブル302bのワークエントリのホスト実ページアドレス406bに上書きする。
既述のように、ワークエントリのホスト実ページアドレスは、ステップ1403で取得したOS103bに対して割り当てられたホスト実ページアドレスである。したがって、ステップ1403で取得したページテーブル302bのワークエントリのホスト実ページアドレスがダンプ対象領域のページテーブル302a'上のホスト実ページアドレスに書き換えられたことになる。
また、ワークエントリには、既に実行された本ステップによって既にダンプ処理が完了した過去のダンプ対象領域のホスト実ページアドレスが記述されている場合がある。この場合は、ハイパバイザ101は、ページテーブル302a'から次のダンプすべきダンプ対象領域のホスト実ページアドレスを取得し、ワークエントリのホスト実ページアドレス上に上書きする処理を行う。
本ステップによって、ワークエントリのホスト実ページアドレスをダンプ対象領域のホスト実ページアドレスに書き換える処理がハイパバイザ101によって行われる。
ステップ1408では、ハイパバイザ101は、ワークエントリのゲスト実ページアドレス405bに対する変換を記述したエントリがゲストTLB304bに存在するか否かを判別する。ステップ1407では、ページテーブル302bのホスト実ページアドレスの書き換え処理を行ったが、TLB301にも反映させる必要がある。TLB301は、ゲスト仮想ページアドレスからホスト実ページアドレスへの変換が記述される。エントリがゲストTLB304bに存在する場合はステップ1409に処理が移される。ゲストTLB304bにエントリが存在する場合はTLB301にもエントリが存在するため、TLB301の書き換えを行う必要がある。エントリがゲストTLB304bに存在しない場合、ステップ1410に処理が移される。ダンプ処理用領域に対するゲスト仮想ページアドレスからゲスト実ページアドレスへの変換がゲストTLBにエントリとして存在しない場合、TLB301にも対応するエントリがないため、TLB301の書き換えを行う必要がない。
ステップ1409では、ハイパバイザ101は、ステップ1407で書き換え処理が行われたワークエントリのホスト実ページアドレス、ホストCビット、ステップ1402でOS103bから通知を受けたダンプ処理用領域のゲスト仮想アドレス、およびステップ1408でエントリが見つかったINDEXをオペランドとしてINSERTTLB命令を実行する。
INSERTTLB命令とは、INSERTTLB命令の実行とは、オペランドに指定された値をTLB301のエントリに格納する処理である。TLB301のエントリはINDEXで指定され、Vビット400の値は「1」が設定される。
ステップ1410では、ハイパバイザ101は、ステップ1405でOS103bが実行したREADREQ1302の読み込み命令をデコードし、命令オペランドから書き込み対象のレジスタを割り出す。ハイパバイザ101は、このレジスタに「1」を設定してOS103bに処理を戻す(ステップ1405で発生した割り込みからの復帰)。本ステップよって、ハイパバイザ101は、ダンプ対象領域に対するマッピングの変更(ホスト実ページアドレスの書き換え処理)を完了し、OS103bに対してダンプ処理の準備ができたことを通知することになる。
ステップ1411〜ステップ1414は、ダンプ処理により書き換えられたワークエントリとTLB301の内容をダンプ処理開始前に戻す処理を示す。
ステップ1411では、ハイパバイザ101は、ステップ1403で退避したホスト実ページアドレスをページテーブル302bのワークエントリに書き戻す処理を行う。
ステップ1412では、ハイパバイザ101は、ワークエントリのゲスト実ページアドレス405bに対する変換を記述したエントリがゲストTLB304bに存在するか否かを判別する。エントリが存在する場合は、ステップ1413に処理が移される。エントリが存在しない場合は、ステップ1414に処理が移される。
ステップ1413では、ハイパバイザ101は、ステップ1411で書き戻されたワークエントリのホスト実ページアドレス、ホストCビット、ステップ1402でOS103bから通知を受けたダンプ処理用領域のゲスト仮想ページアドレス、およびステップ1412でエントリが見つかったINDEXをオペランドとしてINSERTTLB命令を実行する。
ステップ1414では、ハイパバイザ101は、ステップ1405でOS302bが実行したREADREQ1302の読み込み命令をデコードし、命令オペランドから書き込み対象のレジスタを割り出す。ハイパバイザ101は、このレジスタに「0」を設定してOS103bに処理を戻す(ステップ1405で発生した割り込みからの復帰)。
ステップ1415では、OS103bは、ステップ1405で実行したREADREQ1302の読み込み命令によって得られた値(ステップ1410又はステップ1414でハイパバイザ101が設定した値)を読み込んで、ダンプ処理を継続するか否か判別する。値が「1」の場合は、ステップ1416に処理が移される。値が「0」の場合は、ダンプ処理は終了する。
ステップ1416では、OS103bは、ステップ1401で確保したダンプ処理用領域の内容をダンプ手段1103により補助記憶装置1102に書き込む処理を行う。その後、再び1405へ戻る。
なお、図14に示すメモリダンプの処理では、OS103bが確保するダンプ処理用領域を1ページ分としたが複数ページ分を用いてもよい。
このように、仮想計算機102に障害が発生して障害内容を含むメモリ領域の内容をダンプする場合は、メモリダンプを実行してから仮想計算機102を再起動する従来の手法は不要となる。その代わりに、障害が発生した仮想計算機102を再起動してから、ページテーブル302を変更することによってゲストメモリ106とホストメモリ105のマッピングの変更を行う。よって、障害発生から仮想計算機が再起動されるまでの時間を短縮することができ、迅速に仮想計算機が行う業務を再開させることができる。
図6は、メモリダンプの処理を実行する仮想計算機システムの他の構成を示す。
図6の計算機システムでは、ハイパバイザ101がダンプ手段1103を備え、メモリダンプ処理を実行する。したがって、通信手段1104は不要となる。
ダンプ手段1103は、図1の計算機システムと同様に通常のOSが持つデバイスドライバを利用することができる。
障害検出手段1100、メモリ退避手段1101等は、図11の仮想計算機システムと同じ構成である。また、障害検出手段1100が仮想計算機102に発生する障害を検出してから当該仮想計算機102を再起動するまでの処理は、図4に示す処理と同じである。
図7は、図6の仮想計算機システムが実行するメモリダンプ処理の手順を示す。
ステップ1600では、ハイパバイザ101は、図4に示すステップ1202で保存したページテーブル302a'からダンプ処理が未実施のエントリを一つ取り出し、ホスト実ページアドレス406a'を取得する。
ステップ1601では、ハイパバイザ101は、ステップ1600で取得したホスト実ページアドレスから1ページ分のホストメモリ領域をダンプ手段1104により補助記憶装置11105に書き込む。
ステップ1602では、ハイパバイザ101は、ページテーブル302a'に未ダンプのエントリが存在するか否かを判別する。エントリが存在する場合は、ステップ1600へ戻る。未ダンプのエントリが存在しない場合は、ダンプ処理を終了する。
このように、図6の計算機システムによるメモリダンプ処理の実行によって、仮想計算機の障害発生から再起動されるまでの時間を短縮することができ、迅速に業務を再開することができる。
また、図6の計算機システムにおいては、図1の計算機システムのようにOS103b側にダンプ手段や通信手段、すなわちOS103bの専用プログラムを設ける必要はない。OS103b側に設けるダンプ手段や通信手段のような専用プログラムは通常、ある程度再利用可能であるが、OS103bの種類ごとに個別に用意する必要がある。図7の計算機システムでは、ダンプ手段はハイパバイザ側が持つことによってメモリダンプ処理を実行することによる稼動中のOS103bにかかる負荷を低減させることができる。
また、障害が発生した仮想計算機103は何らかの原因によって再起動できない場合においてもハイパバイザ101がダンプ手段1103を用いて障害情報を格納するゲストメモリ106の内容を補助記憶装置にダンプすることができる。
さらに、図6の計算機システムでは、ハイパバイザがダンプ手段を用いて障害情報を補助記憶装置に出力できるため、OS103a又はOS103bのいずれまたは両方に発生する障害に関する障害情報を補助記憶装置1102に出力することができる。
メモリダンプを実行する仮想計算機システムの一構成例を示す。 図1の仮想計算機システムのプロセッサとホストメモリの構成の一例を示す。 ゲストメモリ106b上のハイパバイザ101とOS103bと通信用ページの構成を示す。 障害検出手段が仮想計算機に発生する障害を検出してから当該仮想計算機を再起動するまでの処理を示す。 図1の計算機システムが実行するメモリダンプの処理を示す。 メモリダンプを実行する仮想計算機システムの他の構成例を示す。 図6の仮想計算機システムが実行するメモリダンプ処理を示す。
符号の説明
100 物理計算機
101 ハイパバイザ
102 仮想計算機
103 OS
1100 障害検出手段
1101 メモリ待避手段
1102 補助記憶装置
1103 ダンプ手段
1104 通信手段

Claims (15)

  1. 第1のOSを実行する第1の仮想計算機と第2のOSを実行する第2の仮想計算機を動作させる少なくとも1つプロセッサと、
    前記第1と第2の仮想計算機に割り当てられる第1と第2のメモリ領域を有するメモリと、
    補助記憶装置を備える仮想計算機システムにおいて、
    前記第1と第2のメモリ領域から前記メモリへのマッピングを管理するアドレス変換手段と、
    前記第1の仮想計算機に発生する障害を検出する障害検出手段と、
    前記障害が検出されると前記第1の仮想計算機を再起動するメモリ退避手段と、
    前記アドレス変換手段を制御する制御手段と、
    前記第1のメモリ領域に格納する情報を前記補助記憶装置にダンプするダンプ手段を備えることを特徴とする仮想計算機システム。
  2. 前記第2のOSが前記ダンプ手段を用いて前記第1のメモリ領域に格納する情報を前記補助記憶装置にダンプすることを特徴とする請求項1に記載の仮想計算機システム。
  3. 前記アドレス変換手段は、前記第1と第2のメモリ領域とから前記メモリへのマッピングを管理する第1と第2のページテーブルを有することを特徴とする請求項1に記載の仮想計算機システム。
  4. 前記アドレス変換手段を制御する制御手段は、前記メモリに格納されるハイパバイザであることを特徴とする請求項1に記載の仮想計算機システム。
  5. 前記第1のメモリ領域に格納される内容を前記メモリの空き領域に保存し、前記第1の仮想計算機を再起動する前記メモリ退避手段を備えることを特徴とする請求項1に記載の仮想計算機システム。
  6. 第1と第2のOSを実行する第1と第2の仮想計算機を動作させる少なくとも1つのプロセッサと、
    前記第1と第2の仮想計算機の各々に割り当てられる第1と第2のメモリ領域を有するメモリであって、前記第1と第2のメモリ領域からのマッピングを管理するアドレス変換手段を格納するメモリと、
    補助記憶装置を備える仮想計算機システムにおいて、
    前記第1の仮想計算機に発生する障害を検出する障害検出手段と、
    前記障害検出手段により障害が検出されると前記第1の仮想計算機を再起動するメモリ退避手段と、
    前記第1のメモリ領域のダンプ対象領域にマッピングされる第1のアドレスを取得し、前記第2のメモリ領域のダンプ処理用領域にマッピングされる第2のアドレスを取得し、前記第2のアドレスを前記第1のアドレスに変換する制御手段と、
    前記第1のメモリ領域に格納する情報を前記補助記憶装置にダンプするダンプ手段を備えることを特徴とする仮想計算機システム。
  7. 前記第2のOSが前記ダンプ手段を用いて前記第1のメモリ領域に格納する情報を前記補助記憶装置にダンプすることを特徴とする請求項6に記載の仮想計算機システム。
  8. 前記アドレス変換手段は、前記第1と第2のメモリ領域とから前記メモリへのマッピングを管理する第1と第2のページテーブルを有することを特徴とする請求項6に記載の仮想計算機システム。
  9. 前記アドレス変換手段を制御する制御手段は、前記メモリに格納されるハイパバイザであることを特徴とする請求項6に記載の仮想計算機システム。
  10. 前記第1のメモリ領域に格納される内容を前記メモリの空き領域に保存し、前記第1の仮想計算機を再起動する前記メモリ退避手段を備えることを特徴とする請求項6に記載の仮想計算機システム。
  11. 少なくとも1つ以上の仮想計算機を動作させるプロセッサと、前記仮想計算機に割り当てられたメモリ領域を有するメモリと、補助記憶装置を有する計算機システムが行うメモリダンプ方法であって、
    前記仮想計算機の障害を検出し、
    前記メモリ領域に格納される内容を保存し、
    前記仮想計算機を再起動し、
    前記メモリ領域の内容を前記補助記憶装置に出力することを特徴とするメモリダンプ方法。
  12. 第1のOSを実行する第1の仮想計算機と、第2のOSを実行する第2の仮想計算機を動作させる少なくとも1つプロセッサと、
    前記第1と第2の仮想計算機に割り当てられる第1と第2のメモリ領域と、前記第1と第2のメモリ領域からのマッピングを管理するアドレス変換手段を格納するメモリと、
    補助記憶装置を備える仮想計算機システムが実行するメモリダンプ方法であって、
    前記第1の仮想計算機に発生する障害を検出し、
    前記第1のメモリ領域に格納される内容を保存し、
    前記第1の仮想計算機を再起動し、
    前記第1のメモリ領域に格納する情報を前記第2のOSがアクセスできるように前記アドレス変換手段を制御し、
    前記第1のメモリに格納する情報を前記補助記憶装置に出力することを特徴とするメモリダンプ方法。
  13. 第1と第2の仮想計算機を動作させるプロセッサと、
    前記第1と第2の仮想計算機に割り当てられた第1と第2のメモリ領域を有するメモリと、
    補助記憶装置を備える仮想計算機システムが実行する、前記第1の仮想計算機に発生する障害に関する情報を前記第1のメモリ領域から前記補助記憶装置にダンプするためのアドレス変換プログラムであって、
    前記第1の仮想計算機に障害が検出されると前記第1のメモリ領域に格納する情報を保存し、前記第1の仮想計算機を再起動するステップと、
    前記第1のメモリ領域のダンプ対象領域にマッピングされる第1のアドレスを取得するステップと、
    前記第2のメモリ領域のダンプ処理用領域にマッピングされる第2のアドレスを取得するステップと、
    前記第2のアドレスを前記第1のアドレスに変換するステップを実行することを特徴とするアドレス変換プログラム。
  14. 前記アドレス変換プログラムは、前記メモリに格納されるハイパバイザが実行することを特徴とする請求項13に記載のアドレス変換プログラム。
  15. 第1のOSを実行する第1の仮想計算機と第2のOSを実行する第2の仮想計算機を動作させる少なくとも1つのプロセッサと、前記第1の仮想計算機と前記第2の仮想計算機の各々に割り当てられる第1のメモリ領域と第2のメモリ領域を有するメモリであって、前記第1のメモリ領域からのマッピングを管理する第1のページテーブルと前記第2のメモリ領域からのマッピングを管理する第2のページテーブルと前記第1のページテーブルと前記第2のページテーブルを管理するハイパバイザを格納するメモリと、補助記憶装置を有する仮想計算機システムにおいて、
    前記第2のOSは、前記第2のメモリ領域においてダンプ処理領域を設定し、前記ダンプ処理用領域の仮想アドレスを前記ハイパバイザに通知する通信手段と、前記第2のメモリ領域に格納する情報を前記補助記憶装置にダンプするダンプ手段を備え、
    前記ハイパバイザは、前記第1のOSに発生する障害を検出する障害検出用手段と、前記メモリに第3のメモリ領域を設定し、前記第3のメモリ領域と前記メモリとのマッピング情報を管理する第3のページテーブルを生成し、前記第1のOSを再起動するメモリ退避手段を備え、
    前記ハイパバイザは、前記第1のメモリ領域において前記第1のページテーブルに基づいて前記ダンプ対象領域の実アドレスを取得し、前記ダンプ処理用領域の仮想アドレスを前記通信手段より取得し、前記第2のページテーブルに基づいて前記ダンプ処理用領域の実アドレスを取得し、該取得した前記ダンプ処理用領域の実アドレスを前記取得したダンプ対象領域の実アドレスに変換し、
    前記第2のOSは、前記変換されたダンプ対象領域の実アドレスに基づいて前記ダンプ手段を用いて前記ダンプ対象領域に格納する情報を前記補助記憶装置にダンプすることを特徴とする仮想計算機システム。
JP2003354489A 2003-10-15 2003-10-15 メモリダンプ方法、メモリダンプ用プログラム及び仮想計算機システム Pending JP2005122334A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003354489A JP2005122334A (ja) 2003-10-15 2003-10-15 メモリダンプ方法、メモリダンプ用プログラム及び仮想計算機システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003354489A JP2005122334A (ja) 2003-10-15 2003-10-15 メモリダンプ方法、メモリダンプ用プログラム及び仮想計算機システム

Publications (1)

Publication Number Publication Date
JP2005122334A true JP2005122334A (ja) 2005-05-12

Family

ID=34612387

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003354489A Pending JP2005122334A (ja) 2003-10-15 2003-10-15 メモリダンプ方法、メモリダンプ用プログラム及び仮想計算機システム

Country Status (1)

Country Link
JP (1) JP2005122334A (ja)

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008114395A1 (ja) * 2007-03-19 2008-09-25 Fujitsu Limited 仮想計算機ダンプ採取プログラム、ダンプ採取システムおよびダンプ採取方法
JP2009129101A (ja) * 2007-11-21 2009-06-11 Mitsubishi Electric Corp 情報処理装置の障害処理システム
US7574627B2 (en) 2006-02-22 2009-08-11 Hitachi, Ltd. Memory dump method, memory dump program and computer system
JP2009230596A (ja) * 2008-03-25 2009-10-08 Hitachi Ltd サーバ装置のユーザデータ保護方法、サーバ装置及びコンピュータプログラム
WO2012090290A1 (ja) 2010-12-27 2012-07-05 富士通株式会社 メモリダンプ機能を有する情報処理装置、メモリダンプ方法、およびメモリダンププログラム
JP2012194930A (ja) * 2011-03-18 2012-10-11 Mitsubishi Electric Corp 障害解析情報収集装置
US8375386B2 (en) * 2005-06-29 2013-02-12 Microsoft Corporation Failure management for a virtualized computing environment
WO2013136457A1 (ja) * 2012-03-13 2013-09-19 富士通株式会社 仮想計算機システム、情報保存処理プログラム及び情報保存処理方法
JP2013190883A (ja) * 2012-03-12 2013-09-26 Fujitsu Ltd 情報処理装置、メモリダンププログラム及びメモリダンプ方法
JP2014006676A (ja) * 2012-06-22 2014-01-16 Fujitsu Ltd メモリダンプ機能を有する情報処理装置、メモリダンプ方法、およびメモリダンププログラム
JPWO2013030939A1 (ja) * 2011-08-29 2015-03-23 富士通株式会社 情報処理装置、メモリダンプ採取方法、及びプログラム
US8990630B2 (en) 2009-07-10 2015-03-24 Fujitsu Limited Server having memory dump function and memory dump acquisition method
JP2017062841A (ja) * 2016-11-30 2017-03-30 富士通株式会社 メモリダンプ機能を有する情報処理装置
CN109690505A (zh) * 2016-09-26 2019-04-26 英特尔公司 用于针对虚拟化输入/输出实施方式的混合层地址映射的设备和方法

Cited By (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8707305B2 (en) 2005-06-29 2014-04-22 Microsoft Corporation Failure management for a virtualized computing environment
US8375386B2 (en) * 2005-06-29 2013-02-12 Microsoft Corporation Failure management for a virtualized computing environment
US7574627B2 (en) 2006-02-22 2009-08-11 Hitachi, Ltd. Memory dump method, memory dump program and computer system
WO2008114395A1 (ja) * 2007-03-19 2008-09-25 Fujitsu Limited 仮想計算機ダンプ採取プログラム、ダンプ採取システムおよびダンプ採取方法
US8719639B2 (en) 2007-03-19 2014-05-06 Fujitsu Limited Virtual machine control program, virtual machine control system, and dump capturing method
JP2009129101A (ja) * 2007-11-21 2009-06-11 Mitsubishi Electric Corp 情報処理装置の障害処理システム
JP2009230596A (ja) * 2008-03-25 2009-10-08 Hitachi Ltd サーバ装置のユーザデータ保護方法、サーバ装置及びコンピュータプログラム
US8990630B2 (en) 2009-07-10 2015-03-24 Fujitsu Limited Server having memory dump function and memory dump acquisition method
WO2012090290A1 (ja) 2010-12-27 2012-07-05 富士通株式会社 メモリダンプ機能を有する情報処理装置、メモリダンプ方法、およびメモリダンププログラム
US9015535B2 (en) 2010-12-27 2015-04-21 Fujitsu Limited Information processing apparatus having memory dump function, memory dump method, and recording medium
JPWO2012090290A1 (ja) * 2010-12-27 2014-06-05 富士通株式会社 メモリダンプ機能を有する情報処理装置、メモリダンプ方法、およびメモリダンププログラム
JP2012194930A (ja) * 2011-03-18 2012-10-11 Mitsubishi Electric Corp 障害解析情報収集装置
JPWO2013030939A1 (ja) * 2011-08-29 2015-03-23 富士通株式会社 情報処理装置、メモリダンプ採取方法、及びプログラム
JP2013190883A (ja) * 2012-03-12 2013-09-26 Fujitsu Ltd 情報処理装置、メモリダンププログラム及びメモリダンプ方法
WO2013136457A1 (ja) * 2012-03-13 2013-09-19 富士通株式会社 仮想計算機システム、情報保存処理プログラム及び情報保存処理方法
EP2687986A2 (en) 2012-06-22 2014-01-22 Fujitsu Limited Information processing device with memory dump function, memory dump method, and recording medium
JP2014006676A (ja) * 2012-06-22 2014-01-16 Fujitsu Ltd メモリダンプ機能を有する情報処理装置、メモリダンプ方法、およびメモリダンププログラム
US9229820B2 (en) 2012-06-22 2016-01-05 Fujitsu Limited Information processing device with memory dump function, memory dump method, and recording medium
CN109690505A (zh) * 2016-09-26 2019-04-26 英特尔公司 用于针对虚拟化输入/输出实施方式的混合层地址映射的设备和方法
CN109690505B (zh) * 2016-09-26 2023-08-08 英特尔公司 用于针对虚拟化输入/输出实施方式的混合层地址映射的设备和方法
JP2017062841A (ja) * 2016-11-30 2017-03-30 富士通株式会社 メモリダンプ機能を有する情報処理装置

Similar Documents

Publication Publication Date Title
US10859289B2 (en) Generating and using checkpoints in a virtual computer system
US7631147B2 (en) Efficient flushing of translation lookaside buffers in a multiprocessor environment
US10255090B2 (en) Hypervisor context switching using a redirection exception vector in processors having more than two hierarchical privilege levels
US10162655B2 (en) Hypervisor context switching using TLB tags in processors having more than two hierarchical privilege levels
EP1854006B1 (en) Method and system for preserving dump data upon a crash of the operating system
US20050246453A1 (en) Providing direct access to hardware from a virtual environment
JP2008077144A (ja) 仮想化システム、メモリ管理方法及び制御プログラム
JP4783392B2 (ja) 情報処理装置および障害回復方法
US8738890B2 (en) Coupled symbiotic operating system
JP2006072997A (ja) 高速再起動を伴うメモリダンプ生成
JP2012252576A (ja) 情報処理装置、起動方法およびプログラム
JP2005122334A (ja) メモリダンプ方法、メモリダンプ用プログラム及び仮想計算機システム
WO2013088818A1 (ja) 仮想計算機システム、仮想化機構、及びデータ管理方法
US7200705B2 (en) Method of checkpointing state of virtual memory for process
US7552434B2 (en) Method of performing kernel task upon initial execution of process at user level
Vahidi et al. VETE: Virtualizing the Trusted Execution Environment
US7546600B2 (en) Method of assigning virtual process identifier to process within process domain
US20060184713A1 (en) Method for operating a virtual machine computer system running guest operating systems on a central processing means virtualized by a host system having register stack engine functionality
GB2537760A (en) Computer, and resource scheduling method using hypervisor
EP1901171A1 (en) Apparatus and method for handling interrupt disabled section and page pinning apparatus and method
US7363536B1 (en) Delivery of an interruption to an operating system
US20230161650A1 (en) Method and apparatus for inter-process communication, and computer storage medium
CN118069403A (zh) 一种异常指令的处理方法
Nomura et al. Design and overhead estimation of device driver process
Early ESPRIT LTR 21917 (Pegasus II) Deliverable 2.1. 2 Pentium Port Report