(57)【要約】【課題】メモリをダンプしながら、プログラムを迅速に再起動することができるようにする。【解決手段】情報処理装置は、プログラムの起動処理中に、メモリへのアクセス要求を取得し、取得したアクセス要求に含まれるアクセス対象の記憶領域を指定する領域指定情報と、アクセス要求の取得順とを記憶し、プログラムの起動処理終了後、実行中のプログラムの実行を停止し、プログラムの実行停止後、アクセスパターン記憶部に記憶されている領域指定情報と上記取得順とを読み出し、上記取得順に、各領域指定情報が示す記憶領域の内容をダンプし、ダンプ中にプログラムを起動する。【選択図】図１
2008242999.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵと、メモリと、
前記ＣＰＵにより実行されるアプリケーションプログラムの起動処理中に、前記アプリケーションプログラムから前記メモリへのアクセス要求を複数取得するアクセス要求取得部と、
前記アクセス要求に含まれる、アクセス対象の記憶領域を指定する情報である領域指定情報、および前記アクセス要求の取得順を記憶するアクセスパターン記憶部と、
前記アプリケーションプログラムの起動処理終了後、実行中の前記アプリケーションプログラムの実行を停止させる停止処理部と、
前記アプリケーションプログラムの実行停止後、前記アクセスパターン記憶部から前記領域指定情報および前記取得順を読み出し、前記取得順に、各前記領域指定情報により指定される前記記憶領域の内容をダンプするダンプ処理部と、
前記ダンプ処理部によるダンプ中に、前記アプリケーションプログラムを起動する再起動処理部と、
を備えることを特徴とする情報処理装置。
【請求項２】
請求項１に記載の情報処理装置であって、
前記アプリケーションプログラムを起動するために必要な記憶領域の大きさであるコアサイズを記憶するコアサイズ記憶部を備え、
前記ダンプ処理部は、前記記憶領域の内容をダンプするごとに、ダンプした前記記憶領域の大きさの累計値であるダンプサイズを算出し、
前記再起動処理部は、前記累計値が前記コアサイズ以上になったときに、前記アプリケーションプログラムを起動すること、
を特徴とする情報処理装置。
【請求項３】
請求項１に記載の情報処理装置であって、
前記アクセス要求に含まれる前記領域指定情報により特定される前記記憶領域に対するデータの入出力を行うアクセス処理部と、
前記領域指定情報に対応付けて、前記記憶領域の内容がダンプされたかどうかを示すフラグ値を記憶するダンプ出力テーブルと、
を備え、
前記ダンプ処理部は、前記記憶領域の内容をダンプした際に、前記領域指定情報に対応付けて、ダンプしたことを示す前記フラグ値を前記ダンプ出力テーブルに登録し、
前記アクセス処理部は、前記アクセス要求に含まれる前記領域指定情報に対応する前記ダンプ出力テーブルの前記フラグ値を前記ダンプ出力テーブルから取得し、取得した前記フラグ値により、前記記憶領域の内容がダンプされているかどうかを判断し、当該記憶領域の内容がダンプされていない場合には、当該記憶領域の内容がダンプされるまで待機すること、
を特徴とする情報処理装置。
【請求項４】
請求項１に記載の情報処理装置であって、
前記アプリケーションプログラムに障害が発生したことを検知する障害検知部を備え、
前記停止処理部は、前記障害の検知を契機として、前記アプリケーションプログラムの実行を停止すること、
を特徴とする情報処理装置。
【請求項５】
ＣＰＵと、メモリと、
仮想マシン上で実行されるオペレーティングシステムの起動処理中に、前記オペレーティングシステムから前記メモリへのアクセス要求を複数取得するアクセス要求取得部と、
前記アクセス要求に含まれるアクセス対象の記憶領域を指定する情報である領域指定情報、および前記アクセス要求の取得順を記憶するアクセスパターン記憶部と、
前記オペレーティングシステムの起動処理終了後、実行中の前記オペレーティングシステムの実行を停止させる停止処理部と、
前記オペレーティングシステムの実行停止後、前記アクセスパターン記憶部に記憶されている前記領域指定情報および前記取得順を読み出し、前記取得順に、各前記領域指定情報により指定される前記記憶領域の内容をダンプするダンプ処理部と、
前記ダンプ処理部によるダンプ中に、前記オペレーティングシステムを起動する再起動処理部と、
を備えることを特徴とする情報処理装置。
【請求項６】
メモリの内容をダンプする方法であって、
ＣＰＵと、メモリとを備えるコンピュータが、
前記ＣＰＵにより実行されるアプリケーションプログラムの起動処理中に、前記アプリケーションプログラムから前記メモリへのアクセス要求を複数取得し、
前記アクセス要求に含まれるアクセス対象の記憶領域を指定する情報である領域指定情報、および前記アクセス要求の取得順を記憶し、
前記アプリケーションプログラムの起動処理終了後、実行中の前記アプリケーションプログラムの実行を停止させ、
前記アプリケーションプログラムの実行停止後、前記アクセスパターン記憶部から前記領域指定情報および前記取得順を読み出し、読み出した前記取得順に、各前記領域指定情報により特定される前記記憶領域の内容をダンプし、
ダンプ処理中に、前記アプリケーションプログラムを起動すること、
を特徴とするメモリダンプ方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置およびメモリダンプ方法に関する。
【背景技術】
【０００２】
情報処理装置においてプログラムの障害時などにメモリの内容をダンプすることが行われている。特許文献１に記載のシステムでは、オペレーティングシステムに障害が発生した際に、オペレーティングシステムのロードに必要なメモリ領域をダンプした後、オペレーティングシステムを再ロードし、使用しようとするメモリ領域がダンプ済みでなければ使用する前にダンプするとともに、ダンプ済みでないメモリ領域を順次ダンプするようにして、プログラムの再起動までの時間を短縮している。
【特許文献１】特開平１０−３３３９４４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
特許文献１に記載のシステムでは、オペレーティングシステムの起動処理とメモリのダンプ処理とが並行して実行される。しかし、特許文献１に記載のシステムでは、オペレーティングシステムの起動処理中にアクセスされるメモリ領域は、必ずしもダンプされているとは限らない。起動処理中にダンプ済みでない領域に対するアクセスされると、アクセスの度にダンプ処理が行われ、そのダンプ処理の後にメモリへのアクセスが行われることになり、オペレーティングシステムの起動処理には時間がかかってしまう。
【０００４】
本発明は、このような背景を鑑みてなされたものであり、メモリをダンプしながら、プログラムを迅速に再起動することのできる情報処理装置およびメモリダンプ方法を提供することを目的とする。
【課題を解決するための手段】
【０００５】
上記課題を解決するための本発明の主たる発明は、情報処理装置であって、ＣＰＵと、メモリと、前記ＣＰＵにより実行されるアプリケーションプログラムの起動処理中に、前記アプリケーションプログラムから前記メモリへのアクセス要求を複数取得するアクセス要求取得部と、前記アクセス要求に含まれる、アクセス対象の記憶領域を指定する情報である領域指定情報、および前記アクセス要求の取得順を記憶するアクセスパターン記憶部と、前記アプリケーションプログラムの起動処理終了後、実行中の前記アプリケーションプログラムの実行を停止させる停止処理部と、前記アプリケーションプログラムの実行停止後、前記アクセスパターン記憶部から前記領域指定情報および前記取得順を読み出し、前記取得順に、各前記領域指定情報により指定される前記記憶領域の内容をダンプするダンプ処理部と、前記ダンプ処理部によるダンプ中に、前記アプリケーションプログラムを起動する再起動処理部と、を備えることとする。
【発明の効果】
【０００６】
本発明によれば、メモリをダンプしながら、プログラムを迅速に再起動することができる。
【発明を実施するための最良の形態】
【０００７】
図１は、本発明の一実施形態に係る情報処理装置１０のハードウェア構成図である。本実施形態の情報処理装置１０は、パーソナルコンピュータやワークステーションなどの一般的なコンピュータを想定している。図１に示すように、情報処理装置１０は、物理ＣＰＵ１１、物理メモリ１２、記憶装置１３、入力装置１４、出力装置１５を備えている。記憶装置１３は、各種のプログラムやデータを記憶する、例えばハードディスクドライブやＣＤ−ＲＯＭドライブ、フラッシュメモリなどである。物理ＣＰＵ１１は各種の演算処理を行い情報処理装置１０の制御を司る。物理ＣＰＵ１１は記憶装置１３に記憶されているプログラムを物理メモリ１２に読み出して実行することにより各種の機能を実現する。入力装置１４は、情報の入力を受け付けるキーボードやマウス、タッチパネル、マイクロフォンなどであり、出力装置１５は、情報を出力するディスプレイやプリンタ、スピーカなどである。
【０００８】
本実施形態の情報処理装置１０では、物理ＣＰＵ１１や物理メモリ１２、記憶装置１３などの各種の資源を論理的に分割し、論理区画ごとに異なる資源を割り当てて仮想的なコンピュータを実現する、いわゆるサーバ仮想化（以下、単に仮想化という。）が行われる。なお、以下の説明において、各論理区画において仮想化された物理ＣＰＵ１１を仮想ＣＰＵといい、仮想化された物理メモリ１２を仮想メモリという。仮想化されたコンピュータ上では、オペレーティングシステム（ゲストオペレーティングシステムと呼ばれる。以下、ゲストＯＳと略記する。）が動作する。
【０００９】
仮想化が行われた情報処理装置１０の論理構成を図２に示す。同図に示すように、本実施形態の情報処理装置１０では、ゲストＯＳ２０およびハイパバイザ３０が実行される。物理メモリ１２には、ハイパバイザ３０に割り当てられた記憶領域であるハイパバイザ領域１２１と、ゲストＯＳ２０に割り当てられた記憶領域であるゲストＯＳ領域１２２とが確保される。
【００１０】
ゲストＯＳ２０からの仮想ＣＰＵに対する演算命令や仮想メモリへのアクセス要求（以下、メモリアクセス要求という。）は、ハイパバイザ３０により物理ＣＰＵ１１への演算命令や物理メモリ１２に対するアクセス要求に変換される。このようなハイパバイザ３０による変換処理により、情報処理装置１０における仮想化が実現される。なお、以下の説明ではメモリアクセス要求に係る処理についてのみ説明する。
【００１１】
図３は、本実施形態に係る情報処理装置１０の機能ブロック図である。同図に示すように、情報処理装置１０は、ゲストＯＳ２０およびハイパバイザ３０を備えており、ゲストＯＳ２０はメモリアクセス要求送信部２１および障害通知部２２を備え、ハイパバイザ３０は、アクセスパターンテーブル３１、ダンプ出力テーブル３２、サイズ管理テーブル３３、アクセスパターンテーブル作成部４１、ダンプ出力テーブル作成部４２、サイズ管理テーブル登録部４３、メモリアクセス要求受信部４４、メモリアクセス処理部４５、障害検知部４６、ゲストＯＳ停止処理部４７、ゲストＯＳ起動処理部４８、ダンプ処理部４９を備えている。
【００１２】
メモリアクセス要求送信部２１は、アクセスの対象となる仮想メモリの記憶領域を指定したメモリアクセス要求をハイパバイザ３０に送信する。なお、本実施形態では、物理メモリ１２および仮想メモリの記憶領域は、物理メモリ１２上のアドレス（以下、物理アドレスという。）または仮想メモリ上のアドレス（以下、仮想アドレスという。）と、ブロック数とで表されるものとする。
【００１３】
障害通知部２２は、ゲストＯＳ２０で障害が発生した場合に、その旨をハイパバイザ３０に通知する。障害通知部２２は、例えば仮想ＣＰＵに対する割り込みなどにより障害を通知する。
【００１４】
サイズ管理テーブル３３は、各種のデータサイズについての設定値を管理する。図４にサイズ管理テーブル３３の構成例を示す。同図に示すように、サイズ管理テーブル３３は、アクセスパターンサイズ３３１、コアサイズ３３２およびブロックサイズ３３３を管理している。アクセスパターンサイズ３３１は、後述するアクセスパターンテーブル３１の大きさを示す。コアサイズ３３２は、ゲストＯＳ２０の起動開始に必要な記憶領域の大きさを示す。コアサイズ３３２は、例えば、ゲストＯＳ２０を実現するためのアプリケーションプログラム（以下、ＯＳプログラムという。）を物理メモリ１２上に読み出すためのローダプログラムのデータサイズやＯＳプログラム自身のデータサイズなどとすることができる。ブロックサイズ３３３は、物理メモリ１２および仮想メモリを構成するブロックの大きさである。なお、本実施形態では、物理メモリ１２および仮想メモリはブロック単位で管理されるものとする。  
サイズ管理テーブル登録部４３は、入力装置１４を介して、ユーザからアクセスパターンサイズ３３１やコアサイズ３３２、ブロックサイズ３３３の入力を受け付け、受け付けた値をサイズ管理テーブル３３に登録する。
【００１５】
アクセスパターンテーブル３１は、ゲストＯＳ２０の起動処理中において、ゲストＯＳ２０からアクセスされた物理メモリ１２の領域と、そのアクセス順と（以下、アクセスパターンという。）を記憶する。アクセスパターンテーブル３１の構成例を図５に示す。図５の例では、アクセスパターンテーブル３１には、アクセスされたブロックの物理アドレスが、アクセスされた順に格納されている。本実施形態では、ゲストＯＳ２０の起動後、ゲストＯＳ２０からメモリアクセス要求を受信するごとに、アクセスの対象となるブロックを示す物理アドレスがアクセスパターンテーブル３１の最後尾に追加されていくものとし、同一のメモリアクセス要求に基づいて複数のブロックに対してアクセスが行われた場合には、各ブロックについての物理アドレスのそれぞれをアクセスパターンテーブル３１に格納するものとする。
【００１６】
なお、本実施形態において、ゲストＯＳ２０が起動処理中である期間とは、ゲストＯＳ２０が起動してから、所定数（サイズ管理テーブル３３のアクセスパターンサイズ３３１に基づいて求められる。）のブロックに対してアクセスが行われるまでの期間とする。起動処理中の期間としては、例えば、ゲストＯＳ２０が起動してから、ゲストＯＳ２０から送信される仮想ＣＰＵへの演算命令の個数が所定の数を超えるまでの期間や、ゲストＯＳ２０が起動してから、ユーザのログインを受け付けるプロセスが起動されるまでの期間を採用することもできる。
【００１７】
アクセスパターンテーブル作成部４１は、アクセスパターンテーブル３１を作成する。なお、アクセスパターンテーブル３１の作成処理の詳細については後述する。
【００１８】
ダンプ出力テーブル３２は、ダンプされたゲストＯＳ領域１２２中の記憶領域を管理する。本実施形態では、ダンプ出力テーブル３２は、ブロックごとにダンプされたかどうかを管理する。ダンプ出力テーブル３２の構成例を図６に示す。同図に示すように、ダンプ出力テーブル３２には、ブロックの先頭を示す物理アドレス３２１に対応付けて、ブロックの内容がダンプされたかどうかを示す出力フラグ３２２が格納される。出力フラグ３２２には、ブロックの内容が既にダンプされたことを示す「完了」または、未だダンプされていないことを示す「未完了」のいずれかが設定される。  
ダンプ出力テーブル作成部４２は、ゲストＯＳ領域１２２に係るダンプ処理の開始時にダンプ出力テーブル３２を作成する。なお、ダンプ出力テーブルの作成処理の詳細については後述する。
【００１９】
メモリアクセス要求受信部４４は、ゲストＯＳ２０のメモリアクセス要求送信部２１が送信したアクセス要求を受信する。  
メモリアクセス処理部４５は、受信したメモリアクセス要求に応じて物理メモリ１２に対するデータの入出力処理を行う。メモリアクセス処理部４５による物理メモリ１２に対する入出力処理の流れを図７に示す。なお、図７は、ゲストＯＳ領域１２２のダンプ処理が行われていない場合の入出力処理の流れを示しており、ダンプ処理中における物理メモリ１２への入出力処理については後述する。
【００２０】
図７に示すように、メモリアクセス処理部４５は、メモリアクセス要求に含まれる仮想アドレスおよびブロック数を取得し（Ｓ５０１）、取得した仮想アドレスを物理アドレスに変換する（Ｓ５０２）。仮想アドレスから物理アドレスへの変換は、例えば、ゲストＯＳ領域１２２の先頭の物理アドレスに、仮想アドレスを加算することにより求められる。メモリアクセス処理部４５は、変数Ｎを０に初期化し（Ｓ５０３）、Ｎがブロック数になれば処理を終了する（Ｓ５０４：ＹＥＳ）。
【００２１】
Ｎがブロック数になっていなければ（Ｓ５０４：ＮＯ）、メモリアクセス処理部４５は、Ｎとサイズ管理テーブル３３のブロックサイズ３３３とを乗じた値を上記の物理アドレスに加算してブロックアドレスとする（Ｓ５０５）。メモリアクセス処理部４５は、ブロックアドレスが示すブロックに対してデータの入出力を行い（Ｓ５０６）、Ｎをインクリメントする（Ｓ５０７）。
【００２２】
以上のようにして、メモリアクセス処理部４５は、メモリアクセス要求に応じて物理メモリ１２に対するデータの入出力を行う。
【００２３】
障害検知部４６は、ゲストＯＳ２０の障害通知部２２からの障害通知を検知する。なお、障害検知部４６は、ゲストＯＳ２０の動作を監視して、例えば処理のタイムアウトなどにより、ゲストＯＳ２０の障害を検知するようにしてもよい。
【００２４】
ゲストＯＳ停止処理部４７は、障害検知部４６がゲストＯＳ２０の障害を検知した場合に、ゲストＯＳ２０の実行を停止する。ゲストＯＳ停止処理部４７は、例えば、プログラムを終了するように指示するシグナルをゲストＯＳ２０に送信するようにしてもよいし、ハイパバイザ３０がゲストＯＳ２０からの仮想ＣＰＵへの演算命令を処理しないようにして、ゲストＯＳ２０に対して仮想ＣＰＵが停止したように見せかけることで、ゲストＯＳ２０の処理が進まないようにしてもよい。
【００２５】
ゲストＯＳ起動処理部４８は、ゲストＯＳ停止処理部４７によりゲストＯＳ２０の実行が停止された後、ゲストＯＳ２０を起動する。すなわち、ゲストＯＳ停止処理部４７およびゲストＯＳ起動処理部４８により、ゲストＯＳ２０が再起動されることになる。
【００２６】
ダンプ処理部４９は、ゲストＯＳ停止処理部４７によりゲストＯＳ２０の実行が停止された後、停止されたゲストＯＳ２０に対応するゲストＯＳ領域１２２の内容をダンプする。なお、本実施形態において、記憶領域の内容をダンプするとは、記憶領域に記憶されているデータを、記憶装置１３に書き込んだり、出力装置１５に出力したりすることである。ダンプにより出力されたデータは、例えば、プログラムの障害時にプログラムの不具合を解析するために用いられる。
【００２７】
以下、ゲストＯＳ２０の障害時におけるダンプ処理の詳細について説明する。  
図８は、本実施形態の情報処理装置１０におけるゲストＯＳ領域１２２のダンプ処理の流れを説明する図である。
【００２８】
まず最初にハイパバイザ３０は、ゲストＯＳ２０を起動し（Ｓ６０１）、アクセスパターンテーブル３１を作成する（Ｓ６０２）。アクセスパターンテーブル３１の作成処理の流れを図９に示す。  
アクセスパターンテーブル作成部４１は、空のアクセスパターンテーブル３１を作成する（Ｓ６２１）。次に、アクセスパターンテーブル作成部４１は、アクセスパターンテーブル３１に登録されているレコード数に、サイズ管理テーブル３３のブロックサイズ３３３を乗じて登録サイズとする（Ｓ６２２）。アクセスパターンテーブル作成部４１は、登録サイズがサイズ管理テーブル３３のアクセスパターンサイズ３３１以上であれば（Ｓ６２３：ＹＥＳ）、処理を終了する。  
登録サイズがアクセスパターンサイズ３３１よりも小さい場合に（Ｓ６２３：ＮＯ）、メモリアクセス要求受信部４４がメモリアクセス要求を受信すると（Ｓ６２４）、メモリアクセス処理部４５は、メモリアクセス要求に含まれている仮想アドレスを物理アドレスに変換する（Ｓ６２５）。アクセスパターンテーブル作成部４１は、変換された物理アドレスがアクセスパターンテーブル３１に登録されているかどうかを判定し（Ｓ６２６）、物理アドレスが登録されていなければ（Ｓ６２６：ＮＯ）、物理アドレスをアクセスパターンテーブル３１の最後尾に追加し（Ｓ６２７）、ステップＳ６２２からの処理を繰り返す。  
以上のようにして、アクセスパターンテーブル３１が作成される。
【００２９】
次にハイパバイザ３０は、ダンプ出力テーブル３２を作成する（Ｓ６０３）。ダンプ出力テーブル３２の作成処理の流れを図１０に示す。  
ダンプ出力テーブル作成部４２は、ゲストＯＳ領域１２２の大きさを、サイズ管理テーブル３３のブロックサイズ３３３で割った商をブロック数とし（Ｓ６４１）、ゲストＯＳ領域１２２の先頭アドレスをブロックアドレスとする（Ｓ６４２）。ダンプ出力テーブル作成部４２は、ダンプ出力テーブル３２に登録されているレコード数をカウントし、カウントしたレコード数がブロック数以上になっていれば（Ｓ６４３：ＹＥＳ）処理を終了する。  
ダンプ出力テーブル作成部４２は、ダンプ出力テーブル３２のレコード数がブロック数より小さければ（Ｓ６４３：ＮＯ）、ブロックアドレスをダンプ出力テーブル３２に追加登録し（Ｓ６４４）、ブロックアドレスに対応する出力フラグ３２２を「未完了」に設定する（Ｓ６４５）。ダンプ出力テーブル作成部４２は、ブロックアドレスにブロックサイズ３３３を加算し（Ｓ６４６）、ステップＳ６４３からの処理を繰り返す。  
以上のようにして、ダンプ出力テーブル３２が作成される。
【００３０】
上記のようにしてゲストＯＳ２０が起動され、アクセスパターンテーブル３１およびダンプ出力テーブル３２が作成された後に、障害検知部４６が障害通知を検知すると（Ｓ６０４）、ゲストＯＳ停止処理部４７は、ゲストＯＳ２０に提供している仮想ＣＰＵを停止して（Ｓ６０５）、ゲストＯＳ２０の実行を停止する。
【００３１】
ゲストＯＳ２０の実行が停止されると、ハイパバイザ３０は、ステップＳ６０１において起動されたゲストＯＳ２０の起動中にアクセスされたゲストＯＳ領域１２２中の記憶領域（以下、アクセスパターン領域という。）について、ダンプ処理を行う（Ｓ６０６）。アクセスパターン領域についてのダンプ処理の流れを図１１に示す。
【００３２】
ダンプ処理部４９は、起動フラグを「偽」に設定し（Ｓ６６１）、ダンプサイズを「０」に設定し（Ｓ６６２）、アクセスパターンテーブル３１に記憶されている各物理アドレスについて以下の処理を行う。  
起動フラグが「偽」であり、かつダンプサイズがサイズ管理テーブル３３のコアサイズ３３２以上である場合には（Ｓ６６３：ＹＥＳ）、ゲストＯＳ起動処理部４８は、ゲストＯＳを起動し（Ｓ６６４）、ダンプ処理部４９は、起動フラグを「真」とする（Ｓ６６５）。  
ダンプ処理部４９は、物理アドレスに対応する出力フラグ３２２をダンプ出力テーブル３２から読み出し（Ｓ６６６）、読み出した出力フラグ３２２が「未完了」であれば（Ｓ６６７：ＹＥＳ）、物理アドレスに対応するブロックの内容をダンプする。具体的には、ダンプ処理部４９は、物理アドレスからサイズ管理テーブル３３のブロックサイズ３３３分のデータをダンプする（Ｓ６６８）。  
ダンプ処理部４９は、ブロックの内容をダンプした後、物理アドレスに対応するダンプ出力テーブル３２の出力フラグ３２２に「完了」を設定する（Ｓ６６９）。
【００３３】
以上の処理を繰り返すことにより、ダンプ処理部４９は、アクセスパターンテーブル３１に記憶されている各物理アドレスに対応するブロックをダンプする。ダンプ処理部４９によりダンプされたデータの累計がコアサイズ３３２以上になったときには、ゲストＯＳ起動処理部４８がゲストＯＳ２０を起動する。
【００３４】
このように、本実施形態のハイパバイザ３０は、アクセスパターンテーブル３１に記憶されているブロックのアクセスパターンに従って、ブロックの内容をダンプすることができる。したがって、ハイパバイザ３０は、ゲストＯＳ２０の再起動時において、ゲストＯＳ２０の最初の起動時にアクセスされたブロックを優先的にダンプすることができる。ゲストＯＳ２０の起動時にアクセスされたブロックは、ゲストＯＳ２０の再起動時にもアクセスされる可能性が高いため、上記処理により、ゲストＯＳ２０の再起動時にアクセスされる可能性の高いブロックの内容を、ゲストＯＳ２０の起動に先だってダンプしておくことができる。したがって、ダンプ処理とゲストＯＳ２０の起動処理とを並行して行うことができる。
【００３５】
もっとも、ゲストＯＳ２０から、最初の起動時とは異なるブロックに対してアクセスがなされる場合や、ゲストＯＳ２０の起動処理がダンプ処理よりも高速に実行されている場合などには、ダンプ処理が終わっていないブロックに対してゲストＯＳ２０からのアクセス要求が送信されることがある。
【００３６】
この場合に本実施形態のハイパバイザ３０は、アクセス要求の対象となるブロックが未だダンプされていなければ、そのブロックをダンプした後に入出力処理を行うようにしている。ダンプ中におけるメモリへの入出力処理の流れを図１２に示す。
【００３７】
図１２の処理は、上述の図７に示した処理のステップＳ５０６の前に、ステップＳ６２１〜ステップＳ６２３の処理を加えたものである。すなわち、メモリアクセス処理部４５が、Ｎとサイズ管理テーブル３３のブロックサイズ３３３とを乗じた値を上記の物理アドレスに加算してブロックアドレスを算出（Ｓ５０５）した後、ブロックアドレスに対応する出力フラグ３２２をダンプ出力テーブル３２から読み出し、読み出した出力フラグ３２２が「未完了」であるかどうかを判定する（Ｓ６８１）。出力フラグ３２２が「未完了」の場合（Ｓ６８１：ＹＥＳ）、ダンプ処理部４９は、ブロックアドレスが示すブロックの内容をダンプして（Ｓ６８２）、ブロックアドレスに対応する出力フラグ３２２を「完了」に設定する（Ｓ６８３）。
【００３８】
このようにして、ハイパバイザ３０は、ダンプ処理中に、未だダンプされていないブロックに対するアクセス要求を受けた場合には、そのブロックの内容をダンプした後に、アクセス要求に応じた物理メモリ１２へのアクセス処理を行うことができる。したがって、ダンプ処理とゲストＯＳ２０の起動処理とを並行した実行したとしても、ゲストＯＳ２０の前回停止時点でのゲストＯＳ領域１２２の内容を確実にダンプすることができる。
【００３９】
以上のようにして、アクセスパターン領域のダンプ処理が終わると、次にハイパバイザ３０は、ゲストＯＳ領域１２２のうち未だダンプ処理がなされていない記憶領域（以下、未ダンプ領域という。）についてのダンプ処理を行う（Ｓ６０７）。図１３は、未ダンプ領域についてのダンプ処理の流れを示す図である。ダンプ処理部４９は、ダンプ出力テーブル３２に記憶されている各レコードについて、レコードの出力フラグ３２２が「未完了」であれば（Ｓ７０１：ＹＥＳ）、物理アドレスに対応するブロックの内容をダンプし（Ｓ７０２）、出力フラグ３２２に「完了」を設定する（Ｓ７０３）。このようにして、ダンプ処理部４９は、未ダンプ領域についてのダンプ処理を行う。
【００４０】
以上説明したように、本実施形態の情報処理装置１０によれば、ゲストＯＳ２０の最初の起動時にアクセスされたブロック（記憶領域）のアクセスパターンを記憶しておき、ゲストＯＳ２０の再起動時には、アクセスパターンに従ってゲストＯＳ領域１２２をダンプすることができる。一般に、オペレーティングシステムやその他のアプリケーションプログラムの起動処理において仮想メモリに対するアクセスパターンはほぼ同じになることが多いので、起動時のアクセスパターンに従ってダンプを行うことにより、ゲストＯＳ２０の再起動時にアクセスされる可能性の高いブロックについて、優先的にダンプを行っておくことが可能となる。したがって、従来のようにダンプ処理のすべてが終了するまでゲストＯＳ２０の起動を行わない場合に比べると、より迅速にゲストＯＳ２０の再起動を開始することができる。またこれにより、ゲストＯＳ２０により提供されるサービスのダウンタイムを短縮することが可能となる。特に、近年のようにゲストＯＳ２０に割り当てられるゲストＯＳ領域１２２が大容量になっている場合には、ゲストＯＳ領域１２２のすべての内容をダンプするには長い時間がかかってしまうので効果的である。
【００４１】
また、本実施形態の情報処理装置１０では、ゲストＯＳ領域１２２のダンプ中に、未だダンプされていないブロックに対してアクセスされた場合には、そのブロックの内容をダンプした後、ブロックに対するアクセス処理を行うようにしているので、ゲストＯＳ２０の再起動時に、最初の起動時とは異なるブロックに対するアクセスを行った場合でも、確実にゲストＯＳ領域１２２をダンプすることができる。
【００４２】
その一方で、上記の処理では、アクセスの対象となるブロックのダンプが未完了である場合に、そのブロックの内容をダンプし、そのブロックについてのダンプが完了した後にデータの入出力を行うようにしているため、オーバーヘッドが大きいが、本実施形態の情報処理装置１０では、上述のようにゲストＯＳ２０の再起動時にアクセスされる可能性の高いブロックを優先的にダンプすることができるので、ダンプが未完了であるブロックにアクセスされる可能性を低減することができる。したがって、ゲストＯＳ領域１２２のダンプ処理に係るオーバーヘッドを低減し、情報処理装置１０の処理負荷を抑えることができる。また、これによりゲストＯＳ２０も迅速に起動することができるので、ゲストＯＳ２０が提供するサービスのダウンタイムを短縮することができる。
【００４３】
なお、本実施形態の情報処理装置１０では、１つのゲストＯＳ２０のみが実行されるものとしたが、これに限らず、複数のゲストＯＳ２０が実行されるようにしてもよい。この場合、ハイパバイザ３０は、ゲストＯＳ２０ごとに、アクセスパターンテーブル３１やダンプ出力テーブル３２、サイズ管理テーブル３３などを設けるようにする。
【００４４】
また、本実施形態の情報処理装置１０では、物理アドレスのパターンをアクセスパターンテーブル３１に格納するものとしたが、仮想アドレスのパターンを格納するようにしてもよい。この場合、ゲストＯＳ領域１２２に割り当てられる物理メモリ１２上の領域が変更になった場合にも対応することができる。
【００４５】
また、本実施形態において、アクセスパターンテーブル３１には、ブロックごとに物理アドレスが格納されるものとしたが、物理アドレスとブロック数とを対応付けて格納するようにしてもよい。この場合、メモリアクセス要求に含まれている仮想アドレスを物理アドレスに変換し、物理アドレスと、メモリアクセス要求に含まれるブロック数とを対応付けてアクセスパターンテーブル３１に登録するようにする。
【００４６】
また、本実施形態では、アクセスパターンテーブル３１には、ゲストＯＳ２０からのアクセス順にブロックの物理アドレスが格納されるものとしたが、アクセス順と、アクセスされた領域とが格納されればよい。例えば、アクセスパターンテーブル３１は、アクセスされた順を示す番号と、物理アドレスとを対応付けて記憶するようにしてもよい。この場合、レコードの記憶順を管理しないリレーショナルデータベース管理システムにおけるテーブルとして、アクセスパターンテーブル３１を実現することもできる。
【００４７】
また、本実施形態において、ダンプ出力テーブル３２は、物理アドレスに対応付けて出力フラグ３２２を管理するものとしたが、仮想アドレスに対応付けて出力フラグ３２２を管理するようにしてもよい。
【００４８】
また、本実施形態では、ブロック単位でアクセスパターンを記憶するものとしたが、これに限らず、可変長の記憶領域単位で記憶するようにしてもよい。この場合、例えば、アクセスパターンテーブル３１には、物理アドレスとデータ長とを対応付けて登録するようにする。
【００４９】
以上、本実施形態について説明したが、上記実施形態は本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。本発明は、その趣旨を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物も含まれる。
【図面の簡単な説明】
【００５０】
【図１】本発明の一実施形態に係る情報処理装置１０のハードウェア構成図である。
【図２】仮想化された情報処理装置１０の論理構成を説明する図である。
【図３】本実施形態に係る情報処理装置１０の機能ブロック図である。
【図４】サイズ管理テーブル３３の構成例を示す図である。
【図５】アクセスパターンテーブル３１の構成例を示す図である。
【図６】ダンプ出力テーブル３２の構成例を示す図である。
【図７】物理メモリ１２に対する入出力処理の流れを示す図である。
【図８】ゲストＯＳ領域１２２のダンプ処理の流れを説明する図である。
【図９】アクセスパターンテーブル３１の作成処理の流れを示す図である。
【図１０】ダンプ出力テーブル３２の作成処理の流れを示す図である。
【図１１】アクセスパターン領域についてのダンプ処理の流れを示す図である。
【図１２】ダンプ中におけるメモリへの入出力処理の流れを示す図である。
【図１３】未ダンプ領域についてのダンプ処理の流れを示す図である。
【符号の説明】
【００５１】
１０    情報処理装置
１１    物理ＣＰＵ
１２    物理メモリ
１３    記憶装置
１４    入力装置
１５    出力装置
２０    ゲストＯＳ
２１    メモリアクセス要求送信部
２２    障害通知部
３０    ハイパバイザ
３１    アクセスパターンテーブル
３２    ダンプ出力テーブル
３２１  物理アドレス
３２２  出力フラグ
３３    サイズ管理テーブル
３３１  アクセスパターンサイズ
３３２  コアサイズ
３３３  ブロックサイズ
４１    アクセスパターンテーブル作成部
４２    ダンプ出力テーブル作成部
４３    サイズ管理テーブル登録部
４４    メモリアクセス要求受信部
４５    メモリアクセス処理部
４６    障害検知部
４７    ゲストＯＳ停止処理部
４８    ゲストＯＳ起動処理部
４９    ダンプ処理部
１２１  ハイパバイザ領域
１２２  ゲストＯＳ領域
【図１】
2008242999.tif 000003
【図２】
2008242999.tif 000004
【図３】
2008242999.tif 000005
【図４】
2008242999.tif 000006
【図５】
2008242999.tif 000007
【図６】
2008242999.tif 000008
【図７】
2008242999.tif 000009
【図８】
2008242999.tif 000010
【図９】
2008242999.tif 000011
【図１０】
2008242999.tif 000012
【図１１】
2008242999.tif 000013
【図１２】
2008242999.tif 000014
【図１３】
2008242999.tif 000015