以下、図面を参照して、一実施形態に係る情報処理装置について説明する。以下の実施形態の構成は例示であり、本情報処理装置は実施形態の構成には限定されない。
[実施形態1]
<実施形態1における処理の流れ>
実施形態1では、情報処理装置として、仮想計算機システムを想定する。仮想計算機システムは、ホスト計算機とゲスト仮想マシン(以下、仮想マシンをVMという)を有する
。以下、仮想計算機システムである情報処理装置のうち、ゲストVMを除いたシステムをホスト計算機という。ホスト計算機は、物理計算機とも呼ばれる。
実施形態1では、仮想計算機システムにおいてゲストVMが実行している業務アプリケーションに異常が発生したときに、ホスト計算機は、ゲストVMで業務アプリケーションによって使用されていたメモリに対応するホスト計算機の物理メモリの割当を変更する。
図2に、従来の情報処理装置の処理手順とともに、実施形態1の情報処理装置において業務アプリケーションが異常終了した場合の再立ち上げまでの処理手順を例示する。図2で「経過時間」のラベルが付された時間軸の上側が、従来の情報処理装置の処理手順を例示する。一方、時間軸の下側が実施形態1の情報処理装置の処理手順を例示する。実施形態1の情報処理装置の処理手順は、以下の通りである。
(手順1)ゲストVM上の業務アプリケーションに異常が起きると、ホスト計算機が異常を検知する。
(手順2)ホスト計算機はゲストVMの業務アプリケーションによって使用されていたメモリアドレス(例えば、ゲストVMの物理メモリアドレス)に対応するホスト計算機の物理メモリアドレス(ホスト計算機の物理メモリアドレス)を、別の空き領域の物理メモリアドレスに割当変更する。
(手順3)ホスト計算機の物理メモリアドレスの割当を変更するとき、ホスト計算機のハイパーバイザは、元のホスト計算機の物理メモリが解放されたことをゲストVMに通知する。すると、ゲストVMは、メモリ資源が解放されたことを認識するので、業務再開可能な状態になる。一方、この割当変更により、元々ゲストVMの業務アプリケーションに割り当てられていたホスト計算機の物理メモリの内容は、割当て変更前のホスト計算機の物理メモリのアドレスとして保持されているため、ホスト計算機は、ゲストVM上の異常を検知した業務アプリケーションのメモリダンプを採取可能である。
したがって、図2のように、ホスト計算機の物理メモリアドレスの割当変更により、ゲストVMは、ホスト計算機によるメモリダンプの採取処理とともに、業務アプリケーションの再開が可能となる。すなわち、従来の情報処理装置では、メモリダンプの採取、資源解放後に行われている業務アプリケーションの再開が、メモリ割当変更直後のタイミングから可能となり、業務アプリケーション停止時間が削減される。
図3は、実施形態1の処理手順を物理メモリの構成とともに説明する図である。図3の例では、ゲストVMの物理メモリ(Guest−physicalメモリ)のページ00から04がホスト計算機の物理メモリ(Host−physicalメモリ)のページ01から05に割り当てられている。そして、ゲストVMの物理メモリのページ02から04で業務アプリケーション「業務アプリ」が実行中に異常終了(図中"Error"の箇所を参
照)したことを例示している。
このような場合に、本実施形態の情報処理装置は、以下のように業務アプリケーション「業務アプリ」を再開する。なお、図3以下において、「業務アプリ」を「業務AP」というラベルで例示する。
(手順1)異常検知
図2で説明したように、ホスト計算機のホストOSがゲストVM上で実行される業務アプリケーション「業務アプリ」の異常を検知する。
(手順2)ホスト計算機の物理アドレスの割当変更
図2で説明したように、ホスト計算機はゲストVMの物理アドレスに割り当てられていたホスト計算機の物理アドレスを変更する。ここでは、以下の2つの手順が実行される。
(手順2.1)ホスト計算機のホストOSは、割当変更可否判定を実行する。すなわち、ホストOSは、「メモリ割当変更を行うかどうか」を判定する。実施形態1では、ゲストVMの物理メモリのうち、異常終了した業務アプリケーションで使用されているメモリのページ(図3では、ゲストVMの物理ページ02から04)に割り当てることができる空き領域がホスト計算機の物理メモリに存在する場合に、ホストOSは、メモリ割当変更を行うと判定する。ホスト計算機の物理メモリの空き領域が少ない場合に、異常終了した業務アプリケーションで使用されているページを確保した状態で、さらに、ゲストVMにホスト計算機の物理メモリを割り当てると、ホスト計算機の負荷が大きくなるからである。
また、実施形態1では、ゲストVMの物理メモリのうち、異常終了した業務アプリケーションで使用されているメモリのページが所定の閾値以上ある場合に、ホストOSは、メモリ割当変更を行うと判定する。異常終了した業務アプリケーションで使用されているメモリのページが少ない場合には、図1のような従来と同様の手順が実行されても、業務アプリケーション停止時間が長くならず、業務に及ぼす影響がそれほど大きくないからである。また、ホスト計算機の負荷を軽減できるからである。
(手順2.2)ホスト計算機のOSは、メモリ割当を変更する。ホストOSは、ゲストVMが持つ物理メモリ(Guest−physicalメモリ)とホスト計算機の物理メモリ(Host−physicalメモリ)の対応関係を変更する。すなわち、ホストOSは、別の空き領域(図3では、ホスト計算機の物理メモリのページ07から09)をゲストVMの物理メモリ(図3では、ゲストVMの物理メモリのページ02から04)に割り当てる。
(手順3)ゲストVMは、メモリ割当変更により、ホスト計算機の元の物理メモリの解放を認識する。したがって、ゲストVMは、異常終了した業務アプリケーションに対する後処理、例えば、様々な管理情報のクリア処理等を実行し、業務アプリケーションを終了させる。これにより、ゲストOSは、業務アプリケーションを再開することが可能となる。業務アプリケーションの再開時には、ゲストOSは、ゲストVMの物理メモリのページ(図3では、ページ02から04)を含めた空きページを使用して業務アプリケーションを実行すればよい。これにより、ゲストVMの物理メモリに対応して割当変更されたホスト計算機の物理メモリのページ(図3では、ページ07から09)が使用される。このときの、異常終了した業務アプリケーション「業務アプリ」に割り当てられていた元のホスト計算機の物理メモリのページ03から05の内容は、そのまま維持され、ダンプ採取の対象となる。
図4は、ホスト計算機による物理アドレスの割当変更を補足説明する図である。図4においても、ゲストVMの物理メモリ(Guest−physicalメモリ)のページ00から04がホスト計算機の物理メモリ(Host−physicalメモリ)のページ01から05に割り当てられていたときに、異常が検知されたものとしている。ただし、図4では、異常終了した業務アプリケーションで使用されているページ(ゲストVMの物理ページ02から04)に割り当てることができる空き領域がホスト計算機の物理メモリに存在しない。したがって、ホスト計算機は、手順2.1の判定の結果、割当変更できないと判定する。このような判定の結果、ホスト計算機の物理メモリに空き領域が少ない場合に、ホストOSは、異常終了した業務アプリケーションのためにさらに空き領域を費やすということを抑制でき、ホスト計算機の負担、例えば、スワップアウトの発生等による処理の負担を低減できる。
なお、実施形態1では、ホスト計算機は、逆に、業務アプリケーションによるゲストVM上のメモリ使用領域が所定以上大きいか否かも判定する。異常終了した業務アプリケー
ションによって使用される物理メモリの領域が十分に小さい場合には、図3に例示したような物理メモリの割当変更を行わなくて、業務アプリケーション再開までの停止時間はそれほど長時間のものとはならない。実施形態1のホストOSは、業務アプリケーションによるゲストVM上のメモリ使用領域が所定以上大きいか否かを判定することで、効果が大きいものに限定して、物理メモリの割当変更を行うことができる。したがって、実施形態1では、効果が少ない場合に、物理メモリの割当変更を回避し、ホスト計算機の負担が軽減される。
以上のように、実施形態1では、情報処理装置のホスト計算機は、物理メモリの割当変更の要否を判定する。ホスト計算機の物理メモリの空き領域が十分でない場合か、業務アプリケーションによって使用される物理メモリの領域が十分に小さい場合には、ホスト計算機は、物理メモリの割当変更が不要と判定する。すなわち、空き領域確保のために大量のスワップアウトが発生して効果が得られない場合、あるいは、ダンプの採取サイズが小さくゲスト上のダンプ採取で十分な場合などには、要否判定の結果として、ゲストVMがダンプを実行する。その結果、ホスト計算機の負荷が大きくなる場合、あるいは、物理メモリの割当変更の効果が少ない場合に、本情報処理装置は、ホスト計算機にダンプ採取を任せないようにし、ホスト計算機の負担が抑制される。
一方、ホスト計算機が物理メモリの割当変更の要否判定をしないでホストOSが物理メモリの割当変更とダンプ採取を行う場合には、ゲストVM上で異常が発生するすべての業務アプリケーションのダンプ採取をホスト計算機が担当することになり、ホスト計算機の負担が増加する場合がある。
図5は、比較例1による処理と、ホスト計算機による物理アドレスの割当変更を比較する図である。図5で、上側は実施形態1による処理を例示し、下側は、比較例1の処理を例示する。比較例1は、例えば、業務アプリケーションに異常が発生した場合に、業務アプリケーションで使用されていたページに限定せず、ゲストVM全体の物理メモリのホスト計算機の物理メモリへの割当を変更する場合である。
実施形態1の情報処理装置では、ホスト計算機は、業務アプリケーションで使用されていたゲストVMの物理メモリのページに対応するホスト計算機の物理メモリのページを変更する。つまり、実施形態1では、業務アプリケーションを実行する業務プロセスを起動するための最低限の容量のホスト計算機の物理メモリのページが変更される。
一方、比較例1は、ゲストVMの物理メモリ全体に対応するホスト計算機の物理メモリのページが変更される。したがって、比較例1の手順では、実際に業務アプリケーションで使用されない物理メモリのページに対しても、ホスト計算機の物理メモリのページが変更される。したがって、ダンプ採取の際にゲストVM全体が対象となるため、実施形態1に比べてゲストVMのカーネルや他業務など余分な領域までダンプが採取される結果となり、無駄なストレージ資源を使用する結果となる。
図6は、比較例2に係る情報処理装置の処理例を示す。比較例2の情報処理装置は、ホスト計算機の物理メモリ上に、ゲストGAとゲストGBで例示される各ゲストVMの物理メモリに対応する領域とともに、予備領域を確保する。ホスト計算機が業務アプリケーションの異常を検知したときには、ホスト計算機は、それまで業務アプリケーションが動作していた物理メモリの領域を保存したまま、予備領域でゲストVM(図6でゲストGA)を起動する。そして、新たに起動されたゲストVMが業務アプリケーションを再起動する。そして、ホスト計算機は保存したままとなっている、業務アプリケーションが動作していた物理メモリの領域からメモリダンプを採取すればよい。さらに、ダンプ採取後は、ホスト計算機は、ダンプ採取領域を予備領域とすればよい。
しかしながら、図6の手順では、異常発生前に予備領域が確保される。予備領域は、普段は、使えない無駄な領域となる。また、図6の手順でも、図5と同様、実際に業務アプリケーションで使用されない物理メモリに対しても、ホスト計算機の物理メモリのページが割り当てられる結果となる。一方、実施形態1の手順では、比較例2の手順に対して、ホスト計算機の物理メモリの無駄な領域が軽減される。
図7は、比較例3に係る情報処理装置の処理例を示す。比較例3は、ホスト計算機がゲストVMで実行される業務アプリケーションの異常を検知すると、メモリダンプ用のゲストVM(ダンプ用VM)に、業務アプリケーションによって使用されていた物理メモリを割り当てるとともに、業務アプリケーションが実行されていたゲストVM(図7のゲストGA)から、異常発生時に使用していた物理メモリへのアクセスを禁止し、ゲストVMを再起動する。ゲストVMでは、使用が禁止された物理メモリにアクセスするとページフォルトが発生する。一方、ダンプ用VMによりダンプ済みとなった物理メモリの領域へのアクセス禁止は順次解除される。
図7の手順では、ダンプ用VMには、異常が発生した業務アプリケーションが実行されていたゲストVMの全領域に対応する物理メモリが割り当てられ、ホスト計算機の物理メモリの領域を圧迫する。また、異常が検知された異常発生時に使用していた物理メモリへのアクセスが禁止されるので、業務アプリケーションの再開は、ダンプ用VMの処理の進行に依存することになる。
一方、実施形態1の手順では、ゲストVM全体ではなく、業務アプリケーションで使用されているページに限定して、ホスト計算機の物理メモリの割当が変更されるので、ホスト計算機の物理メモリの消費が抑制される。また、ホスト計算機の物理メモリの割当変更により、ゲストOSは、メモリダンプの採取の進行に依存しないで、業務アプリケーションを再開できる。
<構成>
図8に情報処理装置100の構成を例示する。情報処理装置100は、物理計算機としてのホスト計算機10上に構築された仮想計算機システムである。情報処理装置100あるいはホスト計算機10は、仮想計算機を起動可能な情報処理装置の一例である。ホスト計算機10は、CPU1と、主記憶部2と、ストレージ接続部3を有する。CPU1は、主記憶部2に実行可能に展開されたコンピュータプログラムにより、ホスト計算機10の機能を提供する。主記憶部2は、CPU1で実行されるコンピュータプログラム、CPU1によって処理されるデータ等を記憶する。主記憶部2は、例えば、複数の物理ページ(例えば、ページ00から14)を有し、ページ単位で管理される。主記憶部2は、例えば、Random Access Memory(RAM)である。ストレージ接続部3は、外部記憶装置へのインターフェースであり、例えば、ダンプ用ストレージ4が接続される。主記憶部2は、情報処理装置のメモリ、および物理メモリの一例である。
CPU1は、ホストOS5と、ホストOS5で起動されるハイパーバイザ6によって仮想計算機(VM)の環境を提供する。VMは、仮想CPUともいう。ハイパーバイザ6は、CPU1を仮想化したリソースによりゲストVMを作成し、ゲストOSを稼動させる。ハイパーバイザ6は仮想化基盤、あるいは仮想化ソフトウェアとも呼ばれる。図8では、例えば、ゲストGA,ゲストGBの2つのゲストVMが例示されている。また、ゲストGA、GBは、それぞれ複数の業務アプリケーション(ゲスト業務A1、A2、A3、B1、B2、B3)を実行する。以下、ゲストVMで業務アプリケーションを実行するプロセスを業務プロセスともいう。プロセスは、ゲストOSが業務アプリケーションの実行を管理する単位であり、プログラムのコードとメモリのページを含む。
ゲストVMが、業務アプリケーションであるゲスト業務A1実行中に入出力にアクセスするための特権命令を検出すると、ハイパーバイザ6を通じてホストOS5に制御が移る。以降、ホストOS5によって入出力が制御される。ゲストVMは、仮想計算機の一例である。
また、例えば、ゲストVMが、業務アプリケーションであるゲスト業務A1実行中に例外処理を検出すると、トラップが発生し、制御がハイパーバイザ6を介して、ゲストGAのゲストOSからホストOS5に制御が移る。ホストOS5は、ハンドラを起動し、例外を処理する。
なお、実施形態1の情報処理装置100は、図8の構成に限定される訳ではない。例えば、物理計算機であるホスト計算機10上でホストOS5を搭載せずにハイパーバイザ6が実行され、ハイパーバイザ6にホスト計算機10を制御するようにしてもよい。以下、情報処理装置100による情報処理方法を例示する。
<処理フロー>
図9は、ゲストOSが業務アプリケーションの異常を検知した場合の処理を例示する図である。図9は、ゲストVMがゲストOSを実行することでなされる処理であるが、以下、ゲストOSが実行する処理として説明する。
この処理では、まず、ゲストOSが業務アプリケーションの異常を検知する(S1)。ゲストOSは、例えば、ゲストVMでのトラップにより異常を検知できる。すると、ゲストOSは、ダンプ採取イベントを開始する(S2)。ゲストOSがダンプ採取イベントを開始すると、制御は一旦ハイパーバイザ6を介してホストOSに移る(図10参照)。このダンプ採取イベントにより、ゲストOSからホストOS5に異常検知が通知される。そして、ゲストOSは、ホストOS5による処理の完了待ちとなる(S3)。
ホストOS5による処理が完了すると制御がゲストOSに戻り、ホストOS5による処理結果がゲストOSに引き渡される。すると、ゲストOSは、ホストOS5による処理結果を基に、ダンプ採取をホストOS5で実行するか否かを判定する(S4)。ホストOS5でダンプ採取が実行される場合、ゲストOSはプロセス終了処理・再開処理を実行する(S6)。プロセス終了処理・再開処理では、ゲストOSは、例えば,異常が検知された業務アプリケーションに割り当てられていた仮想メモリ等のリソースを解放し、業務アプリケーション実行のための管理情報などをクリアする。その後、ゲストOSは、同一のゲストVMにおいて、業務アプリケーションを再開する。ホスト計算機10のCPU1は、「異常が検知されたプロセスが実行されていた仮想計算機上のメモリを用いてプロセスを再起動する手段」の一例として、S6の処理を実行する。
一方、S4の判定で、ホストOS5でダンプ採取が実行されない場合、ゲストOSがダンプ採取を実行する。その後、ゲストOSはプロセス終了処理を実行する(S6)。
図10は、ホストOS5のダンプ採取イベント検出時の処理を例示する図である。上述のように、ゲストOSは、ダンプ採取イベントを開始すると、制御はハイパーバイザ6を介してホストOS5に移る(S11)。すなわち、ホストOS5は、ゲストOSのダンプ採取イベントを検出し、図10の処理を開始する。まず、ホストOS5は、プロセスサイズ(ゲストVMの仮想メモリまたは対応する物理メモリのページ数)を確認する(S11)。なお、プロセスサイズは、より正確には、ゲストVMの物理メモリのページ数に加えて、プロセスを管理する情報等を含む。プロセスサイズが第1割当情報の一例である。ホスト計算機10のCPU1は、「プロセスに割り当てられている仮想計算機上のメモリの割
当先を示す第1割当情報を取得すること」の一例として、S11の処理を実行する。また、ホスト計算機10のCPU1は、第1の取得手段の一例として、S11の処理を実行する。
次に、ホストOS5は、プロセスのサイズが閾値以上か否かを判定する(S12)。ホスト計算機10のCPU1は、「プロセスに割り当てられている仮想計算機上のメモリの割当量が所定の閾値以下の場合に、情報処理装置のメモリの割当先を情報処理装置のメモリの空き領域に変更する処理を回避すること」の一例として、S12の処理を実行する。閾値は、ホストOS5のシステムパラメータとして、主記憶部2に保存しておけばよい。S12の判定でプロセスのサイズが閾値以上の場合、ホストOS5は、十分な空き物理メモリが存在するか否かを判定する(S13)。ホスト計算機10のCPU1は、「仮想計算機上のメモリの割当量が物理メモリ上の空き領域よりも大きい場合に、情報処理装置のメモリの割当先を情報処理装置のメモリの空き領域に変更する処理を回避すること」の一例として、S13の処理を実行する。
S13の判定で十分な空き物理メモリが存在する場合、ホストOS5は、メモリの付け替え処理を実行する(S14)。ここで、メモリの付け替え処理とは、異常が検知された業務アプリケーションに割り当てられているゲストVMの物理メモリに対応するホスト計算機10の物理メモリのページを付け替える処理をいう。
そして、ホストOS5は、メモリの付け替え処理が正常終了したか否かを判定する。S14の判定でメモリの付け替え処理が正常終了した場合には、ホストOS5は、ゲストOSに”ホストが採取”とのメッセージ(戻り値)を通知し、処理を終了する。一方、S12、S13、および、S15の判定がNOの場合には、ホストOS5は、ゲストOSに”ゲストが採取”とのメッセージ(戻り値)を通知し、処理を終了する。
図11に、メモリの付け替え処理(図10のS14)の詳細を例示する。この処理では、ホストOS5は、ダンプ採取対象の業務プロセスによって使用されるページ、すなわち、ゲストVM上で異常が検知された業務アプリケーションによって使用されるページと同数の空きページをホスト計算機10の物理メモリである主記憶部2に確保する(S21)。
次に、ホストOS5は、変換マップA、B、Cを参照する。変換マップAは、ホスト計算機10の物理メモリとホスト計算機10の仮想メモリとの間を対応付けるマップである。ホスト計算機仮想メモリは、ホストOS5のプロセスに割り当てられるメモリである。また、変換マップBは、ホスト計算機10の仮想メモリとゲストVMの物理メモリとの間を対応付けるマップである。また、変換マップCは、ゲストVMの物理メモリとゲストVMの仮想メモリとの間を対応付けるマップである。そして、ホストOS5は、変換マップA、B、Cのマッピング情報から、業務アプリケーションのプロセスが動作するゲストVMの仮想メモリに対応するホスト計算機10上の物理メモリのページを特定する(S22)。この特定された物理メモリのページがダンプ採取される領域である。業務アプリケーションのプロセスが動作するゲストVMの仮想メモリが第1割当情報の一例である。特定されるホスト計算機10上のページが第2割当情報の一例である。ホスト計算機10のCPU1は、「第1割当情報を基に、プロセスに割り当てられている仮想計算機上のメモリに対する情報処理装置のメモリの割当先を示す第2割当情報を取得すること」の一例として、S22の処理を実行する。ホスト計算機10のCPU1は、第2の取得手段の一例として、S22の処理を実行する。
次にホストOS5は、変換マップAの対応関係を書き換えて、業務アプリケーションのプロセスが動作するゲストVMの仮想メモリに空きページを割り当てる(S23)。S2
3の処理によって、図11の右側に例示したように、ゲストOSが管理するゲストVMの仮想メモリの領域に対して、ホストOS5が管理するホスト計算機10の物理メモリ上の空き領域が割り当てられる。ホスト計算機10のCPU1は、「第2割当情報を保存するとともに、プロセスに割り当てられている仮想計算機上のメモリに対する情報処理装置のメモリの割当先を情報処理装置のメモリの空き領域に変更する処理」の一例として、S23の処理を実行する。
さらに、ホストOS5は、ホスト計算機10の物理メモリ(図8の主記憶部2)で "ホストが採取する領域"のダンプをとる予約をする(S24)。ここで、予約をするとは、
ダンプ採取対象の物理メモリのページを確保し、ダンプ採取に備えておくことをいう。また、ダンプ採取対象の物理メモリのページは、S23の処理前に業務アプリケーションの業務プロセスによって使用されていたゲストVMの仮想メモリのページに割り当てられていたページである。そして、次にホストOS5は、メモリの付け替え処理を終了し、図10のS15に復帰する。
この予約にしたがい、ホストOS5は、予約された物理ページのメモリのダンプを実行し、ストレージ接続部3を介して、ダンプ用ストレージ4に採取されたメモリのダンプを出力する。ホスト計算機10のCPU1は、ストレージ接続部3を介して、ダンプ用ストレージ4と連携し、「ダンプすること」の一例として、S24の予約に対応するダンプ採取を実行する。したがって、S6の処理でのゲストOSによるプロセス終了処理・再開処理と、ホストOS5によるダンプ採取(ダンプする手段による処理)は、並行して実行される。
図12に、メモリの付け替え処理前のメモリ割り当ての状態を例示する。ここでは、業務アプリケーションがゲストVMによってゲストOS上で業務プロセスとして実行されているとする。業務プロセスは、他のプロセスとは分離された独自の仮想アドレス空間を有している。今、仮想アドレス空間上で、太い黒枠部分が業務プロセスによって使用される仮想アドレス空間のページ(以下、業務プロセス割り当て済みページ)であるとする。
業務プロセス割り当て済みページは、変換マップCによってゲストVMの物理アドレス空間のページに対応付けされる。なお、ゲストVMの物理アドレス空間のページは、ゲストOSによって管理されている。
さらに、ゲストVMは、ホスト計算機10のホストOS5上で実行されるハイパーバイザによって作成される。ハイパーバイザは、ホスト計算機10の仮想アドレス空間で実行される。したがって、ゲストVMの物理アドレスは、ハイパーバイザによってホスト計算機10の仮想アドレス空間内で提供される。このとき、ゲストVMの物理アドレス空間のページは、変換マップBにより、ホスト計算機のホストOS5上の仮想アドレス空間のページに対応付けされる。
さらに、ホスト計算機10の仮想アドレス空間のページは、変換マップAによってホスト計算機の物理アドレス空間のページに対応付けされる。図12のように、メモリの付け替え処理前、ホスト計算機10の仮想アドレス空間の業務プロセス割り当て済みページは、ホスト計算機10の物理アドレス空間のページと実線で示される対応関係であったとする。また、ホスト計算機10の物理アドレス空間で、「空きページ」とされた部分が空きページであったとする。
図13に、メモリの付け替え処理後のメモリ割り当ての状態を例示する。図13のように、ゲストVMの物理アドレス空間のページは、メモリの付け替え処理後には、付け替え前にホスト計算機10の物理アドレス空間で、「空きページ」とされた部分に割り当てら
れる。一方、付け替え前に、業務プロセス割り当て済みページに割り当てられていたホスト計算機10の物理アドレス空間のページは、仮想アドレス空間のページとの関係が切り離される。図13の点線が切り離された関係を例示する。
図14に、メモリの付け替え処理後のダンプ採取時の状態を例示する。上述のように、メモリの付け替え処理により、業務プロセス割り当て済みページに割り当てられていたホスト計算機10の物理アドレス空間のページは、ゲストVMの物理アドレス空間のページから切り離される。したがって、ゲストVMで実行中の業務プロセスは、それまでアクセスしていた物理アドレス空間のページへのアクセスできない。このとき、ゲストOSはハイパーバイザ6を介してホストOS5からホスト計算機10の物理メモリの解放を通知される。物理メモリ解放の通知を受けると、ゲストOSは業務プロセスを終了するための様々な後処理を実行する。そして、後処理終了後に、ゲストOSは、業務プロセスを再起動できる。
一方、メモリ付け替え処理前、業務プロセス割り当て済みページに対応するページに割り当てられていたホスト計算機10の物理アドレス空間のページは、ダンプ採取のためホストOS5のダンプ処理に引き渡される。
<効果>
実施形態1の情報処理装置100では、業務アプリケーションを実行中の業務プロセスが異常となった場合に、業務プロセスの仮想空間上で使用中のページ(業務プロセス割り当て済みページ)に対応するホスト計算機10の物理アドレス空間上のページが付け替えられる。したがって、ゲストVMは、異常が発生した業務アプリケーションを終了させる時間を削減し早期に業務復旧可能な状態にする効果が得られる。実施形態1の構成では、冗長構成や予備領域などを用意することなく業務復旧可能であるため、冗長構成や予備領域などにかかる計算機資源のコストを削減する効果が得られる。
実施形態1の情報処理装置100では、仮想化システムのゲストVM上で動作する業務アプリケーションの異常発生時に、ホストOS5およびハイパーバイザ6が、ゲストVM上の業務アプリケーションに異常が発生したという情報に基づいて、ゲストVMの物理アドレスとホスト計算機10の物理アドレスとの対応表を操作する。そして、ホストOS5およびハイパーバイザ6が、異常が発生したゲストVMの業務アプリケーションが使用していたメモリ領域をゲストVMから見て解放する。以上の処理によって、情報処理装置100は、ゲストVMの業務アプリケーションを早期に復旧させることができるようになる。
[実施形態2]
図15から図19の図面を参照して、実施形態2に係る情報処理装置100を説明する。実施形態1では、業務プロセスの異常時に、業務プロセスによる仮想アドレス空間の使用中のページに対応するホスト計算機10の物理アドレス空間上のページを付け替える処理が例示された。実施形態2では、実施形態1と同様の処理をホストOS5で起動されるハンドラで実行する処理例を説明する。ホストOS5で起動されるハンドラによる処理以外の構成および作用は、実施形態1の情報処理装置100と同様である。そこで、実施形態1の情報処理装置100の構成はそのまま実施形態2に適用される。したがって、実施形態2の情報処理装置100の構成要素のうち、実施形態1の情報処理装置100と同一の構成要素については、同一の符号を付してその説明を省略する。以下、実施形態2の情報処理装置100による情報処理方法を例示する。
<メモリのページの表記法>
以下、実施形態2におけるメモリ空間のページの表記法を説明する。実施形態2では、メモリ空間のページは、<空間名>_<内容>[通し番号]で表記する。
<空間名>は、メモリのページが存在するメモリ空間の名称であり、4つの空間が用意される。例えば、ホスト物理アドレス空間は、”HP”(Host Physical)で表わす。また、ホスト仮想アドレスは””HV” (Host Virtual)で表
わす。また、ゲスト物理アドレス空間は”GP”(Guest Physical)で表わす。さらに、ゲスト仮想アドレスは、”GV”(Guest Virtual)で表す。
<内容>は、表記される該当ページに格納されているデータの種類を示す。実施形態2では、データの種類は、5種類用意される。業務プロセスのデータは”P”(Process)で表し、変換マップAを含む管理情報を格納するメモリ空間管理領域は”mA”で表す。また、変換マップBを含む管理情報を格納するメモリ空間管理領域は”mB”で表す。さらに、変換マップCを含む管理情報を格納するメモリ空間管理領域は”mC”で表す。さらにまた、空きページは”S”で表す。
[通し番号]は、メモリ領域をページ単位でみた場合の通し番号である。具体的には、通し番号は、0,1,2,…,(メモリ領域サイズ/ページサイズ)の整数部分−1である。通し番号を一般的に表す場合はi,j,k等の英小文字が利用される。なお、「通し番号」が省略されていた場合、つまり、<空間名>_<内容>は、先頭アドレスを示す。
表記例は以下の通りである。例えば、ホスト物理空間の空きページの2つ目は、HP_S[1]で表される。また、ゲスト仮想空間の業務プロセスのページは一般に、GV_P[j]で表される。さらに、ホスト仮想空間の変換マップB先頭アドレスは、HV_mBで表される。
<メモリアドレス変換操作の表記法>
実施形態1で説明したように、変換マップA、B、Cはそれぞれメモリ空間管理領域mA、mB、mCに格納されている。各変換マップにはそれぞれメモリアドレス変換操作に用いる情報が格納されている。例えば、ゲストOS上の業務プロセスの仮想アドレスからゲストOS上の物理アドレスへの変換にはmC内の変換マップCを利用する。このmCによる変換操作は、以下の[数1]で表される。
[数1]
GP_P[j]=T_mC(GV_P[j])
同様に、メモリ空間管理領域mA、mBを利用した変換操作をそれぞれT_mA、T_mBと記述する。
図15に、ゲスト仮想アドレスとゲスト物理アドレスとの関係を変換マップC、および、変換操作T_mCによって例示する。変換マップCは、メモリ空間管理領域mCに記憶されておおり、ゲスト仮想アドレス空間とゲスト物理アドレス空間との対応関係を記述する。また、変換操作T_mCは、ゲスト仮想アドレス空間のページをゲスト物理アドレス空間のページに変換する操作を示す。
図16に、ホスト物理アドレス空間(HP)、ホスト仮想アドレス空間(HV)、ゲスト物理アドレス空間(GP)、および、ゲスト仮想アドレス空間(GV)の関係を変換操作T_mA、T_mB、T_mCによって例示する。なお、図16で、太い黒枠は、ゲスト物理アドレス空間のページ0、1、jに対応する各空間のページを示す。
また、変換操作T_kは、メモリ空間管理領域mCをゲスト仮想アドレスからゲスト物理アドレスに変換する操作を示す。メモリ空間管理領域mCは、ゲストOSの仮想メモリ空間にあり、ゲストOSに依存して、ゲスト物理空間に配置される。したがって、変換操
作T_kは、ゲストOS個別の処理である。なお、ゲストOS上の業務プロセスの仮想アドレスからゲストOS上の物理アドレスへの変換操作T_mCは、メモリ空間管理領域mCに定義される。また、ゲスト仮想空間(GV)上のメモリ空間管理領域mCの先頭アドレスは、GV_mCで示される。
ゲスト物理アドレス空間(GP)のページ(GP_mC[i]、GP_P[j])に変換操作T_mBを行うことで、ホスト仮想アドレス空間(HV)の対応ページ(HV_mC[i]、HV_P[j])が得られる。ホスト仮想アドレス空間(HV)のページ(HV_mC[i]、HV_mB、HV_mA、HV_P[j])に変換操作T_mAを行うことで、ホスト物理アドレス空間(HP)の対応ページ(HP_mC[i]、HP_mB、HP_mA、HP_P[j])が得られる。
<処理フロー>
図17は、実施形態2におけるゲストOSによる異常検出、ダンプ採取イベント開始処理を例示する図である。この処理では、ゲストOSは、業務アプリケーションを実行する業務プロセスの異常を検知すると、ハイパーバイザ6を介して、ホストOS5にメモリ空間管理領域mCの先頭アドレスGV_mCとゲストOSの版数を通知する(S31)。そして、ゲストOSは、ホストOS5の処理完了待ちとなる(S32)。ホストOS5の処理が完了すると、ゲストOSは、ホストからの返却値を確認する(S33)。
ホストOS5からの返却値が"ホストが採取"である場合には、ゲストOSはプロセス終了処理・再開処理を実行し、さらに業務プロセスを再開する(S35)。プロセス終了処理・再開処理は、実施形態1の場合と同様である。ホスト計算機10のCPU1は、「異常が検知されたプロセスが実行されていた仮想計算機上のメモリを用いてプロセスを再起動すること」の一例として、S35の処理を実行する。一方、ホストOS5からの返却値が"ゲストが採取"である場合には、ゲストOSがダンプを採取する(S34)。その後、ゲストOSはプロセス終了処理を実行し、処理を終了する(S35)。
図18に、ホスト側の処理を例示する。ゲストOSがダンプ採取イベントを開始すると、ホストOS5は、ハイパーバイザ6を介して、ダンプ採取イベントを受け取り、図18の処理を開始する。そして、ホストOS5は、ゲストOSからGV_mCとゲストOSの版数を受け取る(S41)。
そして、ホストOS5は、OS版数に対応するハンドラが存在するか否かを判定する(S42)。OS版数に対応するハンドラが存在する場合には、ホストOS5は、OS版数に依存するハンドラを呼び出す(S43)。そして、ホストOS5は、ハンドラ呼び出し結果を判定する(S44)。ホスト計算機10のCPU1は、仮想計算機上で実行されるプロセスの異常を検知することの一例として、S41およびS43の処理を実行する。
ハンドラ呼び出し結果が、"ホストが採取"を示す場合、ホストOS5は、異常が検出された業務プロセスによって使用されていたページに対応するホスト計算機10の物理アドレス空間のページHP_P[j]をダンプ採取のために予約する(S45)。この予約にしたがい、ホストOS5は、予約された物理メモリのページのダンプを実行し、ストレージ接続部3を介して、ダンプ用ストレージ4に採取されたメモリのダンプを出力する。このように、ダンプの対象を予約した物理メモリのページとすることで、ホストOS5は、業務プロセスによって使用されるメモリのうち、ホスト計算機10において実際に割り当てられている物理メモリのページに限定してダンプ採取を実行できる。
ホスト計算機10のCPU1は、ストレージ接続部3を介して、ダンプ用ストレージ4と連携し、「ダンプすること」の一例として、S45の予約に対応するダンプ採取を実行
する。したがって、S35の処理でのゲストOSによるプロセス終了処理・再開処理と、ホストOS5によるダンプ採取(ダンプする手段による処理)は、並行して実行される。そして、ゲストOSに、"ホストが採取"を通知する(S46)。一方、S44の判定で、ハンドラ呼び出し結果が、"ゲストが採取"を示す場合、ホストOS5は、ゲストOSに"
ゲストが採取"を通知する(S47)。
図19は、ゲストOSに対応するハンドラの処理を例示する。この処理では、ハンドラは、変換操作T_kに用いる情報を得る。変換操作T_kに用いる情報とは、ゲストOS依存の情報であり、例えば、ゲストOSのバージョン、ゲストVMの仮想メモリ空間上のメモリ空間管理領域mCの先頭アドレスGV_mCに対応するゲストVM上の物理アドレス空間の位置等である(S50)。
次に、ハンドラは、変換操作T_mB、T_kにより、ゲストVMの仮想メモリ空間上のメモリ空間管理領域mCの先頭アドレスGV_mCに対応するホスト仮想メモリ空間上のページHV_mCを参照する。その結果、ハンドラは、業務プロセスによって使用されていたゲストVM上の仮想アドレス空間のページGV_P[j]、業務プロセスのサイズ、変換マップC等を取得する(S51)。業務プロセスによって使用されていたゲストVM上の仮想アドレス空間のページGV_P[j]または業務プロセスのサイズが第1割当情報の一例である。ホスト計算機10のCPU1は、「プロセスに割り当てられている仮想計算機上のメモリの割当先を示す第1割当情報を取得すること」の一例として、S51の処理を実行する。ホスト計算機10のCPU1は、第1の取得手段の一例として、S51の処理を実行する。
次に、ハンドラは、業務プロセスサイズが所定の閾値より大きいか否かを判定する(S52)。業務プロセスサイズが所定の閾値より大きい場合、ホスト物理アドレス空間の空きメモリ領域が業務プロセスサイズを格納できる大きさであるか否かを判定する(S53)。そして、S53の判定で、ホスト物理アドレス空間の空きメモリ領域が業務プロセスサイズを格納できる大きさである場合、ハンドラは、ホスト物理メモリ空間の空きページを確保し、各空ページの先頭アドレスをHP_S[j]を取得する(S54)。そして、ハンドラは、異常が検出された業務プロセスが使用するホスト仮想アドレスを計算する(S56)。計算式は、以下のとおりである。
HV_P[j] = T_mB(T_mC(GV_P[j]));
上記T_mCによる変換によって、ハンドラは、ダンプの対象であるゲストVM上の業務プロセスのページから対応するホスト仮想アドレス空間のページを特定できる。したがって、ハンドラは、ゲストVMが使用するホスト仮想アドレス空間のうち、業務プロセスによって使用されているページに限定して処理を実行できる。さらに、ハンドラは、業務プロセスによって使用されているホスト仮想アドレス空間のページに対応するホスト物理アドレスを計算する(S57)。計算式は以下の通りである。
HP_P[j] = T_mA(HV_P[j]);
特定される業務プロセスのゲストVMの仮想ページに対応するホスト物理アドレスHP_P[j]が第2割当情報の一例である。ホスト計算機10のCPU1は、「第1割当情報を基に、プロセスに割り当てられている仮想計算機上のメモリに対する情報処理装置のメモリの割当先を示す第2割当情報を取得すること」の一例として、S56、S57の処理を実行する。
そして、ハンドラは、異常が検出された業務プロセスが使用するホスト仮想アドレスがS54で取得された空き領域となるよう、以下の計算式を満たすように、変換マップAを書き換え、変換操作T_mAを変更する(S58)。
HP_S[j] = T_mA(HV_P[j]);
ホスト計算機10のCPU1は、「第2割当情報を保存するとともに、プロセスに割り当てられている仮想計算機上のメモリに対する情報処理装置のメモリの割当先を情報処理装置のメモリの空き領域に変更する処理」の一例として、S58の処理を実行する。また、ホスト計算機10のCPU1は、割当変更手段の一例としてS58の処理を実行する。
そして、ハンドラは、“ホストが採取"とHP_P[j]を戻り値として、ハイパーバ
イザ6を介してホストOS5に返却する(S59)。一方、S52の判定で業務プロセスサイズが所定の閾値以下の場合には、ハンドラは処理をS55に進める。また、S53の判定でホスト物理アドレス空間の空きメモリ領域が業務プロセスサイズを格納できる大きさでない場合も、ハンドラは処理をS55に進める。そして、"ゲストが採取" を戻り値
として、ハイパーバイザ6を介してホストOS5に返却する(S55)。ホスト計算機10のCPU1は、「仮想計算機上のメモリの割当量が物理メモリ上の空き領域よりも大きい場合に、情報処理装置のメモリの割当先を情報処理装置のメモリの空き領域に変更する処理を回避すること」の一例として、S53の処理を実行する。ホスト計算機10のCPU1は、「プロセスに割り当てられている仮想計算機上のメモリの割当量が所定の閾値以下の場合に、情報処理装置のメモリの割当先を情報処理装置のメモリの空き領域に変更する処理を回避すること」の一例として、S52の処理を実行する。
<効果>
以上述べたように、実施形態2の情報処理装置100によっても、ゲストVMの業務プロセスが異常終了した場合に、ホストの負荷増加を抑制し、最低限の範囲でホスト計算機10の物理メモリを確保し、業務プロセスを再開できる。すなわち、ホストOS5は、業務プロセスによって使用されているゲストVMの物理メモリのページに対応するホスト計算機10の物理メモリのページについてダンプの予約をした上で、ゲストVMの物理メモリをホスト計算機10の物理メモリ(主記憶部2)の空きページに割り当てできる。したがって、ホストOS5によるダンプ採取とともに、ゲストOSによる業務プロセスの終了処理、および、再開処理を並行して実行できる。
また、実施形態2の情報処理装置100によれば、異常が発生したプロセスに割り当てられているゲストVMの仮想メモリの割当量(プロセスサイズ)が、ホスト計算機10の物理メモリ上の空き領域よりも大きい場合に、メモリ付け替え処理を回避する。したがって、メモリ付け替えによって、ホスト計算機10において、スワッピングが頻発するような事態を回避できる。
また、実施形態2の情報処理装置100によれば、異常が発生したプロセスに割り当てられているゲストVMの仮想メモリの割当量(プロセスサイズ)が所定の閾値以下の場合に、メモリ付け替え処理を回避する。したがって、メモリ付け替えによっても業務プロセス再開までの時間短縮の効果が薄い場合に、ホスト計算機10の負荷が増加することを抑制できる。
また、実施形態2の情報処理装置100によれば、異常が発生したプロセスが実行されていたゲストVMのメモリを用いて、そのまま業務プロセスが再開できる。したがって、ゲストVMは、ゲストVMのうちの業務プロセス再開のための最低限の構成変更で、業務プロセスを再開でき、情報処理装置100としての資源の浪費を低減できる。
また、実施形態2の情報処理装置100によれば、ホストOS5は、予約された物理メモリの割り当て情報を基に物理メモリ(主記憶部2)のダンプを採取する処理を実行する一方で、ダンプを採取する処理と並行してゲストOSは、業務プロセスを再開できる。こ
のため、業務プロセスの異常検知から、業務プロセスの再開までの時間が短縮される。
[その他の変形例]
上記実施形態1、2では、情報処理装置100は、ゲストVM上の業務プロセスによって使用される仮想メモリを求め、仮想メモリをゲストVMの物理メモリに変換し、さらに、ゲストVMの物理メモリを基にホスト計算機10の仮想メモリに変換した。そして、情報処理装置100は、ホスト計算機10の仮想メモリを物理メモリに変換し、得られた物理メモリに代えて空き領域を割り当てた。しかし、情報処理装置100の処理は、このような手順に限定される訳ではない。例えば、ゲストOSが、業務プロセスによって使用されているゲストVMの物理メモリの領域を管理している場合には、業務プロセスで異常が検知されて、ゲストOSからホストOS5に制御が移るときに、ゲストVMの物理メモリのページをホストOS5に引き渡してもよい。要するに、ゲストVM上で業務プロセスに使用されている物理メモリを基にして、ダンプ対象となるホスト計算機10のメモリページを取得することで、ダンプ対象をゲストVMの物理メモリに限定することができる。ゲストVMの物理メモリは、ゲストOSによってスワップアウトされていないメモリであり、業務プロセスの異常発生時に、実際にアクセスされていた領域のダンプ採取が可能となる。
ただし、上記実施形態2のように、ホストOS5に、メモリ空間管理領域mCの先頭アドレスGV_mCを引き渡すことで、簡易に、業務プロセスによって使用されていたゲストVMの仮想メモリのページの集合を引き渡すことができる。
また、上記実施形態では、ホストOS5(ハンドラ)は、ゲストVMの物理メモリに対応するホスト計算機10上での物理メモリである主記憶部2のページの割当先を空きページに変更した。ただし、ホストOS5が仮想メモリのページをダンプする機能を有している場合には、ゲストVMの物理メモリに対応するホスト計算機10上での仮想メモリのページの割当先を他の仮想メモリのページとしてもよい。このように、ホスト計算機10上での仮想メモリのページを付け替えることによっても、ダンプ対象のページを保存するとともに、異常が検知された業務プロセスを早期に再開させることができる。その結果、情報処理装置100は、異常が発生したページのダンプ採取と、業務プロセスの再開を並行して進めることができる。
ただし、ダンプの対象を仮想メモリのページではなく物理メモリ(主記憶部2)のページとすることで、ホストOS5は、業務プロセスによって使用されるメモリのうち、ホスト計算機10において実際に割り当てられている物理メモリ(主記憶部2)のページに限定してダンプ採取を実行できる。つまり、ホストOS5は、業務プロセスの異常や障害が検知されたときに物理メモリ(主記憶部2)からスワップアウトされていない、実際に業務プロセスによって使用されているメモリの領域のダンプを採取できる。
《コンピュータが読み取り可能な記録媒体》
コンピュータその他の機械、装置(以下、コンピュータ等)に上記いずれかの機能を実現させるプログラムをコンピュータ等が読み取り可能な記録媒体に記録することができる。そして、コンピュータ等に、この記録媒体のプログラムを読み込ませて実行させることにより、その機能を提供させることができる。
ここで、コンピュータ等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピュータ等から読み取ることができる記録媒体をいう。このような記録媒体のうちコンピュータ等から取り外し可能なものとしては、例えばフレキシブルディスク、光磁気ディスク、CD−ROM、CD−R/W、DVD、ブルーレイディスク、DAT、8mmテープ、フラッシュメモリなどのメモリカード等がある。また、コンピュータ等に固定された記録媒体とし
てハードディスク、ROM(リードオンリーメモリ)等がある。さらに、SSD(Solid State Drive)は、コンピュータ等から取り外し可能な記録媒体としても、コンピュータ
等に固定された記録媒体としても利用可能である。