(57)【要約】      （修正有）【課題】アプリケーションプログラムを実行するプロセスが異常終了した場合に、アプリケーション再立ち上げまでの業務停止時間を削減する。【解決手段】プログラムは、仮想計算機上で実行されるプロセスの異常を検知したときに、前記プロセスに割り当てられている仮想計算機上のメモリの割当先を示す第１割当情報（ゲストＶＭの物理ページ０２から０４）を取得させる。第１割当情報を基に、異常が検知されたプロセスに割り当てられている仮想計算機上のメモリに対する情報処理装置のメモリの割当先を示す第２割当情報（ホスト計算機の物理メモリのページ０３から０５）を取得させる。第２割当情報を保存するとともに、異常が検知されたプロセスに割り当てられている仮想計算機上のメモリに対する情報処理装置メモリの割当先を情報処理装置のメモリの空き領域（ホスト計算機の物理メモリのページ０７から０９）に変更させる。【選択図】図３
2018013859.tif 000002
【特許請求の範囲】
【請求項１】
仮想計算機を起動可能な情報処理装置に、
前記仮想計算機上で実行されるプロセスの異常を検知したときに、前記プロセスに割り当てられている前記仮想計算機上のメモリの割当先を示す第１割当情報を取得することと、
前記第１割当情報を基に、前記プロセスに割り当てられている前記仮想計算機上のメモリに対する前記情報処理装置のメモリの割当先を示す第２割当情報を取得することと、
前記第２割当情報を保存するとともに、前記プロセスに割り当てられている前記仮想計算機上のメモリに対する前記情報処理装置のメモリの割当先を前記情報処理装置のメモリの空き領域に変更する処理と、
を実行させるためのプログラム。
【請求項２】
前記情報処理装置のメモリは、前記情報処理装置の物理メモリである請求項１に記載のプログラム。
【請求項３】
前記プロセスに割り当てられている前記仮想計算機上のメモリの割当量が前記物理メモリ上の空き領域よりも大きい場合に、前記情報処理装置のメモリの割当先を前記情報処理装置のメモリの空き領域に変更する処理を回避することをさらに実行させるための請求項２に記載のプログラム。
【請求項４】
前記プロセスに割り当てられている前記仮想計算機上のメモリの割当量が所定の閾値以下の場合に、前記情報処理装置のメモリの割当先を前記情報処理装置のメモリの空き領域に変更する処理を回避することをさらに実行させる請求項１から３のいずれか１項に記載のプログラム。
【請求項５】
前記異常が検知されたプロセスが実行されていた前記仮想計算機上のメモリを用いて前記プロセスを再起動することをさらに実行させるための請求項１から４のいずれか１項に記載のプログラム。
【請求項６】
前記保存された前記第２割当情報を基に前記情報処理装置のメモリをダンプすることをさらに実行させ、
前記再起動は、前記ダンプと並行して実行される請求項５に記載のプログラム。
【請求項７】
前記仮想計算機上のメモリの割当先は、仮想計算機の仮想メモリのうち、仮想計算機の物理メモリが割り当てられている領域である請求項１から６のいずれか１項に記載のプログラム。
【請求項８】
仮想計算機を起動可能な情報処理装置が、
前記仮想計算機上で実行されるプロセスの異常を検知したときに、前記プロセスに割り当てられている前記仮想計算機上のメモリの割当先を示す第１割当情報を取得することと、
前記第１割当情報を基に、前記プロセスに割り当てられている前記仮想計算機上のメモリに対する前記情報処理装置のメモリの割当先を示す第２割当情報を取得することと、
前記第２割当情報を保存するとともに、前記プロセスに割り当てられている前記仮想計算機上のメモリに対する前記情報処理装置のメモリの割当先を前記情報処理装置のメモリの空き領域に変更することと、
を実行する情報処理方法。
【請求項９】
仮想計算機を起動可能な情報処理装置であって、
前記仮想計算機上で実行されるプロセスの異常を検知したときに、前記プロセスに割り当てられている前記仮想計算機上のメモリの割当先を示す第１割当情報を取得する第１の取得手段と、
前記第１割当情報を基に、前記プロセスに割り当てられている前記仮想計算機上のメモリに対する前記情報処理装置のメモリの割当先を示す第２割当情報を取得する第２の取得手段と、
前記第２割当情報を保存するとともに、前記プロセスに割り当てられている前記仮想計算機上のメモリに対する前記情報処理装置のメモリの割当先を前記情報処理装置のメモリの空き領域に変更する割当変更手段と、
を備える情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法、およびプログラムに関する。
【背景技術】
【０００２】
今日、社会の様々な場面で情報処理装置が利用されている。情報処理装置は、ユーザサイドに設けられる形態のものもあれば、クラウドのようにサービス提供会社等からネットワークを通じて提供される形態のものもある。いずれの形態においても、情報処理装置は様々なアプリケーションプログラムを実行し、ユーザに様々なサービス、あるいは機能を提供する。そして、情報処理装置の高性能化、情報処理技術の高度化に伴い、情報処理装置の果たす役割はますます大きくなっている。したがって、仮に情報処理装置においてアプリケーションプログラムが異常終了したような場合には、早期の復旧が望まれる。
【０００３】
図１は、従来の情報処理装置において、ユーザの業務を支援するアプリケーションプログラムが異常終了した場合の業務再開までの処理手順を例示する。図１では、ユーザの業務遂行と連携して実行されるアプリケーションプログラム（以下、業務アプリケーションという）での復旧処理が例示されている。図1の場合における業務再開までの手順は、概
ね以下の通りである。
（手順１）例えば、情報処理装置のオペレーティングシステム（ＯＳ）が異常を検知する。
（手順２）ＯＳは、メモリダンプを採取する。
（手順３）ＯＳは、異常終了した業務アプリケーションの実行時に使用された計算機資源を解放する。
（手順４）その他の復旧処理、例えば、業務アプリケーションの再立ち上げなどが実行される。
【０００４】
ただし、手順４は、業務アプリケーション依存の手順である。したがって、ここでは、手順４のその他の復旧処理に至るまでの手順１から手順３の実施時間を業務停止時間とみなす。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】国際公開第２０１３／１３６４５７号
【特許文献２】特開２０１４−６６７６号公報
【特許文献３】特開２０１１−２２７７６６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述のように、情報処理装置では、業務アプリケーション等のアプリケーションプログラムに異常が発生すると、異常検知、メモリダンプ、および資源の解放が実施され、その後、アプリケーションプログラムの再立ち上げが実施される。そして、アプリケーションプログラムの再立ち上げが実施されるまでは、ユーザの業務実施にあたり、情報処理装置の支援が停止し、ユーザの業務が影響を受ける。そこで、開示の実施形態は、アプリケーションプログラムを実行するプロセスの異常が検知された場合に、アプリケーション再立ち上げまでの業務停止時間を削減することを目的とする。なお、情報処理装置において、アプリケーションプログラムと、アプリケーションプログラムを実行するためのリソース等の環境に係る情報とは、プロセスと呼ばれる。
【課題を解決するための手段】
【０００７】
開示の技術の一側面は、仮想計算機システムとして動作するコンピュータに以下のことを実行させるプログラムより例示される。このプログラムは、仮想計算機上で実行されるプロセスの異常を検知したときに、異常が検知されたプロセスに割り当てられている仮想計算機上のメモリの割当先を示す第１割当情報を取得させる。そして、このプログラムは、第１割当情報を基に、異常が検知されたプロセスに割り当てられている仮想計算機上のメモリに対する情報処理装置のメモリの割当先を示す第２割当情報を取得させる。さらに、このプログラムは、第２割当情報を保存するとともに、異常が検知されたプロセスに割り当てられている仮想計算機上のメモリに対する情報処理装置のメモリの割当先を情報処理装置メモリの空き領域に変更させる。
【発明の効果】
【０００８】
本情報処理装置によれば、アプリケーションプログラムを実行するプロセスが異常終了した場合に、アプリケーション再立ち上げまでの業務停止時間を削減することができる。
【図面の簡単な説明】
【０００９】
【図１】アプリケーションプログラムが異常終了した場合の業務再開までの処理手順を例示する図である。
【図２】従来の処理手順とともに、実施形態１の処理手順を例示する図である。
【図３】実施形態１の処理手順を物理メモリの構成とともに説明する図である。
【図４】ホスト計算機による物理アドレスの割当変更を補足説明する図である。
【図５】比較例１による処理と、ホスト計算機による物理アドレスの割当変更を比較する図である。
【図６】比較例２に係る情報処理装置の処理例を示す
【図７】比較例３に係る情報処理装置の処理例を示す図である。
【図８】情報処理装置の構成を例示する図である。
【図９】ゲストＯＳが業務アプリケーションの異常を検知した場合の処理を例示する図である。
【図１０】ホストＯＳのダンプ採取イベント検出時の処理を例示する図である。
【図１１】メモリの付け替え処理の詳細を例示する図である。
【図１２】メモリの付け替え処理前のメモリ割り当ての状態を例示する図である。
【図１３】メモリの付け替え処理後のメモリ割り当ての状態を例示する図である。
【図１４】メモリの付け替え処理後のダンプ採取時の状態を例示する図である。
【図１５】ゲスト仮想アドレスとゲスト物理アドレスとの関係を変換マップによって例示する図である。
【図１６】ホスト物理アドレス空間、ホスト仮想アドレス空間、ゲスト物理アドレス空間、および、ゲスト仮想アドレス空間の関係を変換操作によって例示する図である。
【図１７】実施形態２におけるゲストＯＳによる異常検出、ダンプ採取イベント開始処理を例示する図である。
【図１８】ホスト側の処理を例示する図である。
【図１９】ハンドラの処理を例示する図である。
【発明を実施するための形態】
【００１０】
以下、図面を参照して、一実施形態に係る情報処理装置について説明する。以下の実施形態の構成は例示であり、本情報処理装置は実施形態の構成には限定されない。
［実施形態１］
＜実施形態１における処理の流れ＞
【００１１】
実施形態１では、情報処理装置として、仮想計算機システムを想定する。仮想計算機システムは、ホスト計算機とゲスト仮想マシン（以下、仮想マシンをＶＭという）を有する
。以下、仮想計算機システムである情報処理装置のうち、ゲストＶＭを除いたシステムをホスト計算機という。ホスト計算機は、物理計算機とも呼ばれる。
【００１２】
実施形態１では、仮想計算機システムにおいてゲストＶＭが実行している業務アプリケーションに異常が発生したときに、ホスト計算機は、ゲストＶＭで業務アプリケーションによって使用されていたメモリに対応するホスト計算機の物理メモリの割当を変更する。
【００１３】
図２に、従来の情報処理装置の処理手順とともに、実施形態１の情報処理装置において業務アプリケーションが異常終了した場合の再立ち上げまでの処理手順を例示する。図２で「経過時間」のラベルが付された時間軸の上側が、従来の情報処理装置の処理手順を例示する。一方、時間軸の下側が実施形態１の情報処理装置の処理手順を例示する。実施形態１の情報処理装置の処理手順は、以下の通りである。
（手順１）ゲストＶＭ上の業務アプリケーションに異常が起きると、ホスト計算機が異常を検知する。
【００１４】
（手順２）ホスト計算機はゲストＶＭの業務アプリケーションによって使用されていたメモリアドレス（例えば、ゲストＶＭの物理メモリアドレス）に対応するホスト計算機の物理メモリアドレス（ホスト計算機の物理メモリアドレス）を、別の空き領域の物理メモリアドレスに割当変更する。
【００１５】
（手順３）ホスト計算機の物理メモリアドレスの割当を変更するとき、ホスト計算機のハイパーバイザは、元のホスト計算機の物理メモリが解放されたことをゲストＶＭに通知する。すると、ゲストＶＭは、メモリ資源が解放されたことを認識するので、業務再開可能な状態になる。一方、この割当変更により、元々ゲストＶＭの業務アプリケーションに割り当てられていたホスト計算機の物理メモリの内容は、割当て変更前のホスト計算機の物理メモリのアドレスとして保持されているため、ホスト計算機は、ゲストVM上の異常を検知した業務アプリケーションのメモリダンプを採取可能である。
【００１６】
したがって、図２のように、ホスト計算機の物理メモリアドレスの割当変更により、ゲストＶＭは、ホスト計算機によるメモリダンプの採取処理とともに、業務アプリケーションの再開が可能となる。すなわち、従来の情報処理装置では、メモリダンプの採取、資源解放後に行われている業務アプリケーションの再開が、メモリ割当変更直後のタイミングから可能となり、業務アプリケーション停止時間が削減される。
【００１７】
図３は、実施形態１の処理手順を物理メモリの構成とともに説明する図である。図３の例では、ゲストＶＭの物理メモリ（Ｇｕｅｓｔ−ｐｈｙｓｉｃａｌメモリ）のページ００から０４がホスト計算機の物理メモリ（Ｈｏｓｔ−ｐｈｙｓｉｃａｌメモリ）のページ０１から０５に割り当てられている。そして、ゲストＶＭの物理メモリのページ０２から０４で業務アプリケーション「業務アプリ」が実行中に異常終了（図中"Error"の箇所を参
照）したことを例示している。
このような場合に、本実施形態の情報処理装置は、以下のように業務アプリケーション「業務アプリ」を再開する。なお、図３以下において、「業務アプリ」を「業務ＡＰ」というラベルで例示する。
（手順１）異常検知
図２で説明したように、ホスト計算機のホストＯＳがゲストＶＭ上で実行される業務アプリケーション「業務アプリ」の異常を検知する。
（手順２）ホスト計算機の物理アドレスの割当変更
【００１８】
図２で説明したように、ホスト計算機はゲストＶＭの物理アドレスに割り当てられていたホスト計算機の物理アドレスを変更する。ここでは、以下の２つの手順が実行される。
【００１９】
（手順２．１）ホスト計算機のホストＯＳは、割当変更可否判定を実行する。すなわち、ホストＯＳは、「メモリ割当変更を行うかどうか」を判定する。実施形態１では、ゲストＶＭの物理メモリのうち、異常終了した業務アプリケーションで使用されているメモリのページ（図３では、ゲストＶＭの物理ページ０２から０４）に割り当てることができる空き領域がホスト計算機の物理メモリに存在する場合に、ホストＯＳは、メモリ割当変更を行うと判定する。ホスト計算機の物理メモリの空き領域が少ない場合に、異常終了した業務アプリケーションで使用されているページを確保した状態で、さらに、ゲストＶＭにホスト計算機の物理メモリを割り当てると、ホスト計算機の負荷が大きくなるからである。
【００２０】
また、実施形態１では、ゲストＶＭの物理メモリのうち、異常終了した業務アプリケーションで使用されているメモリのページが所定の閾値以上ある場合に、ホストＯＳは、メモリ割当変更を行うと判定する。異常終了した業務アプリケーションで使用されているメモリのページが少ない場合には、図１のような従来と同様の手順が実行されても、業務アプリケーション停止時間が長くならず、業務に及ぼす影響がそれほど大きくないからである。また、ホスト計算機の負荷を軽減できるからである。
【００２１】
（手順２．２）ホスト計算機のＯＳは、メモリ割当を変更する。ホストＯＳは、ゲストＶＭが持つ物理メモリ（Ｇｕｅｓｔ−ｐｈｙｓｉｃａｌメモリ）とホスト計算機の物理メモリ（Ｈｏｓｔ−ｐｈｙｓｉｃａｌメモリ）の対応関係を変更する。すなわち、ホストＯＳは、別の空き領域（図３では、ホスト計算機の物理メモリのページ０７から０９）をゲストＶＭの物理メモリ（図３では、ゲストＶＭの物理メモリのページ０２から０４）に割り当てる。
【００２２】
（手順３）ゲストＶＭは、メモリ割当変更により、ホスト計算機の元の物理メモリの解放を認識する。したがって、ゲストＶＭは、異常終了した業務アプリケーションに対する後処理、例えば、様々な管理情報のクリア処理等を実行し、業務アプリケーションを終了させる。これにより、ゲストＯＳは、業務アプリケーションを再開することが可能となる。業務アプリケーションの再開時には、ゲストＯＳは、ゲストＶＭの物理メモリのページ（図３では、ページ０２から０４）を含めた空きページを使用して業務アプリケーションを実行すればよい。これにより、ゲストＶＭの物理メモリに対応して割当変更されたホスト計算機の物理メモリのページ（図３では、ページ０７から０９）が使用される。このときの、異常終了した業務アプリケーション「業務アプリ」に割り当てられていた元のホスト計算機の物理メモリのページ０３から０５の内容は、そのまま維持され、ダンプ採取の対象となる。
【００２３】
図４は、ホスト計算機による物理アドレスの割当変更を補足説明する図である。図４においても、ゲストＶＭの物理メモリ（Ｇｕｅｓｔ−ｐｈｙｓｉｃａｌメモリ）のページ００から０４がホスト計算機の物理メモリ（Ｈｏｓｔ−ｐｈｙｓｉｃａｌメモリ）のページ０１から０５に割り当てられていたときに、異常が検知されたものとしている。ただし、図４では、異常終了した業務アプリケーションで使用されているページ（ゲストＶＭの物理ページ０２から０４）に割り当てることができる空き領域がホスト計算機の物理メモリに存在しない。したがって、ホスト計算機は、手順２．１の判定の結果、割当変更できないと判定する。このような判定の結果、ホスト計算機の物理メモリに空き領域が少ない場合に、ホストＯＳは、異常終了した業務アプリケーションのためにさらに空き領域を費やすということを抑制でき、ホスト計算機の負担、例えば、スワップアウトの発生等による処理の負担を低減できる。
【００２４】
なお、実施形態１では、ホスト計算機は、逆に、業務アプリケーションによるゲストＶＭ上のメモリ使用領域が所定以上大きいか否かも判定する。異常終了した業務アプリケー
ションによって使用される物理メモリの領域が十分に小さい場合には、図３に例示したような物理メモリの割当変更を行わなくて、業務アプリケーション再開までの停止時間はそれほど長時間のものとはならない。実施形態１のホストＯＳは、業務アプリケーションによるゲストＶＭ上のメモリ使用領域が所定以上大きいか否かを判定することで、効果が大きいものに限定して、物理メモリの割当変更を行うことができる。したがって、実施形態１では、効果が少ない場合に、物理メモリの割当変更を回避し、ホスト計算機の負担が軽減される。
【００２５】
以上のように、実施形態１では、情報処理装置のホスト計算機は、物理メモリの割当変更の要否を判定する。ホスト計算機の物理メモリの空き領域が十分でない場合か、業務アプリケーションによって使用される物理メモリの領域が十分に小さい場合には、ホスト計算機は、物理メモリの割当変更が不要と判定する。すなわち、空き領域確保のために大量のスワップアウトが発生して効果が得られない場合、あるいは、ダンプの採取サイズが小さくゲスト上のダンプ採取で十分な場合などには、要否判定の結果として、ゲストＶＭがダンプを実行する。その結果、ホスト計算機の負荷が大きくなる場合、あるいは、物理メモリの割当変更の効果が少ない場合に、本情報処理装置は、ホスト計算機にダンプ採取を任せないようにし、ホスト計算機の負担が抑制される。
【００２６】
一方、ホスト計算機が物理メモリの割当変更の要否判定をしないでホストＯＳが物理メモリの割当変更とダンプ採取を行う場合には、ゲストＶＭ上で異常が発生するすべての業務アプリケーションのダンプ採取をホスト計算機が担当することになり、ホスト計算機の負担が増加する場合がある。
【００２７】
図５は、比較例１による処理と、ホスト計算機による物理アドレスの割当変更を比較する図である。図５で、上側は実施形態１による処理を例示し、下側は、比較例１の処理を例示する。比較例１は、例えば、業務アプリケーションに異常が発生した場合に、業務アプリケーションで使用されていたページに限定せず、ゲストＶＭ全体の物理メモリのホスト計算機の物理メモリへの割当を変更する場合である。
【００２８】
実施形態１の情報処理装置では、ホスト計算機は、業務アプリケーションで使用されていたゲストＶＭの物理メモリのページに対応するホスト計算機の物理メモリのページを変更する。つまり、実施形態１では、業務アプリケーションを実行する業務プロセスを起動するための最低限の容量のホスト計算機の物理メモリのページが変更される。
【００２９】
一方、比較例１は、ゲストＶＭの物理メモリ全体に対応するホスト計算機の物理メモリのページが変更される。したがって、比較例１の手順では、実際に業務アプリケーションで使用されない物理メモリのページに対しても、ホスト計算機の物理メモリのページが変更される。したがって、ダンプ採取の際にゲストＶＭ全体が対象となるため、実施形態１に比べてゲストＶＭのカーネルや他業務など余分な領域までダンプが採取される結果となり、無駄なストレージ資源を使用する結果となる。
【００３０】
図６は、比較例２に係る情報処理装置の処理例を示す。比較例２の情報処理装置は、ホスト計算機の物理メモリ上に、ゲストＧＡとゲストＧＢで例示される各ゲストＶＭの物理メモリに対応する領域とともに、予備領域を確保する。ホスト計算機が業務アプリケーションの異常を検知したときには、ホスト計算機は、それまで業務アプリケーションが動作していた物理メモリの領域を保存したまま、予備領域でゲストＶＭ（図６でゲストＧＡ）を起動する。そして、新たに起動されたゲストＶＭが業務アプリケーションを再起動する。そして、ホスト計算機は保存したままとなっている、業務アプリケーションが動作していた物理メモリの領域からメモリダンプを採取すればよい。さらに、ダンプ採取後は、ホスト計算機は、ダンプ採取領域を予備領域とすればよい。
【００３１】
しかしながら、図６の手順では、異常発生前に予備領域が確保される。予備領域は、普段は、使えない無駄な領域となる。また、図６の手順でも、図５と同様、実際に業務アプリケーションで使用されない物理メモリに対しても、ホスト計算機の物理メモリのページが割り当てられる結果となる。一方、実施形態１の手順では、比較例２の手順に対して、ホスト計算機の物理メモリの無駄な領域が軽減される。
【００３２】
図７は、比較例３に係る情報処理装置の処理例を示す。比較例３は、ホスト計算機がゲストＶＭで実行される業務アプリケーションの異常を検知すると、メモリダンプ用のゲストＶＭ（ダンプ用ＶＭ）に、業務アプリケーションによって使用されていた物理メモリを割り当てるとともに、業務アプリケーションが実行されていたゲストＶＭ（図７のゲストＧＡ）から、異常発生時に使用していた物理メモリへのアクセスを禁止し、ゲストＶＭを再起動する。ゲストＶＭでは、使用が禁止された物理メモリにアクセスするとページフォルトが発生する。一方、ダンプ用ＶＭによりダンプ済みとなった物理メモリの領域へのアクセス禁止は順次解除される。
【００３３】
図７の手順では、ダンプ用ＶＭには、異常が発生した業務アプリケーションが実行されていたゲストＶＭの全領域に対応する物理メモリが割り当てられ、ホスト計算機の物理メモリの領域を圧迫する。また、異常が検知された異常発生時に使用していた物理メモリへのアクセスが禁止されるので、業務アプリケーションの再開は、ダンプ用ＶＭの処理の進行に依存することになる。
【００３４】
一方、実施形態１の手順では、ゲストＶＭ全体ではなく、業務アプリケーションで使用されているページに限定して、ホスト計算機の物理メモリの割当が変更されるので、ホスト計算機の物理メモリの消費が抑制される。また、ホスト計算機の物理メモリの割当変更により、ゲストＯＳは、メモリダンプの採取の進行に依存しないで、業務アプリケーションを再開できる。
＜構成＞
【００３５】
図８に情報処理装置１００の構成を例示する。情報処理装置１００は、物理計算機としてのホスト計算機１０上に構築された仮想計算機システムである。情報処理装置１００あるいはホスト計算機１０は、仮想計算機を起動可能な情報処理装置の一例である。ホスト計算機１０は、ＣＰＵ１と、主記憶部２と、ストレージ接続部３を有する。ＣＰＵ１は、主記憶部２に実行可能に展開されたコンピュータプログラムにより、ホスト計算機１０の機能を提供する。主記憶部２は、ＣＰＵ１で実行されるコンピュータプログラム、ＣＰＵ１によって処理されるデータ等を記憶する。主記憶部２は、例えば、複数の物理ページ（例えば、ページ００から１４）を有し、ページ単位で管理される。主記憶部２は、例えば、Random Access Memory（ＲＡＭ）である。ストレージ接続部３は、外部記憶装置へのインターフェースであり、例えば、ダンプ用ストレージ４が接続される。主記憶部２は、情報処理装置のメモリ、および物理メモリの一例である。
【００３６】
ＣＰＵ１は、ホストＯＳ５と、ホストＯＳ５で起動されるハイパーバイザ６によって仮想計算機（ＶＭ）の環境を提供する。ＶＭは、仮想ＣＰＵともいう。ハイパーバイザ６は、ＣＰＵ１を仮想化したリソースによりゲストＶＭを作成し、ゲストＯＳを稼動させる。ハイパーバイザ６は仮想化基盤、あるいは仮想化ソフトウェアとも呼ばれる。図８では、例えば、ゲストＧＡ，ゲストＧＢの２つのゲストＶＭが例示されている。また、ゲストＧＡ、ＧＢは、それぞれ複数の業務アプリケーション（ゲスト業務Ａ１、Ａ２、Ａ３、Ｂ１、Ｂ２、Ｂ３）を実行する。以下、ゲストＶＭで業務アプリケーションを実行するプロセスを業務プロセスともいう。プロセスは、ゲストＯＳが業務アプリケーションの実行を管理する単位であり、プログラムのコードとメモリのページを含む。
【００３７】
ゲストＶＭが、業務アプリケーションであるゲスト業務Ａ１実行中に入出力にアクセスするための特権命令を検出すると、ハイパーバイザ６を通じてホストＯＳ５に制御が移る。以降、ホストＯＳ５によって入出力が制御される。ゲストＶＭは、仮想計算機の一例である。
【００３８】
また、例えば、ゲストＶＭが、業務アプリケーションであるゲスト業務Ａ１実行中に例外処理を検出すると、トラップが発生し、制御がハイパーバイザ６を介して、ゲストＧＡのゲストＯＳからホストＯＳ５に制御が移る。ホストＯＳ５は、ハンドラを起動し、例外を処理する。
【００３９】
なお、実施形態１の情報処理装置１００は、図８の構成に限定される訳ではない。例えば、物理計算機であるホスト計算機１０上でホストＯＳ５を搭載せずにハイパーバイザ６が実行され、ハイパーバイザ６にホスト計算機１０を制御するようにしてもよい。以下、情報処理装置１００による情報処理方法を例示する。
＜処理フロー＞
【００４０】
図９は、ゲストＯＳが業務アプリケーションの異常を検知した場合の処理を例示する図である。図９は、ゲストＶＭがゲストＯＳを実行することでなされる処理であるが、以下、ゲストＯＳが実行する処理として説明する。
【００４１】
この処理では、まず、ゲストＯＳが業務アプリケーションの異常を検知する（Ｓ１）。ゲストＯＳは、例えば、ゲストＶＭでのトラップにより異常を検知できる。すると、ゲストＯＳは、ダンプ採取イベントを開始する（Ｓ２）。ゲストＯＳがダンプ採取イベントを開始すると、制御は一旦ハイパーバイザ６を介してホストＯＳに移る（図１０参照）。このダンプ採取イベントにより、ゲストＯＳからホストＯＳ５に異常検知が通知される。そして、ゲストＯＳは、ホストＯＳ５による処理の完了待ちとなる（Ｓ３）。
【００４２】
ホストＯＳ５による処理が完了すると制御がゲストＯＳに戻り、ホストＯＳ５による処理結果がゲストＯＳに引き渡される。すると、ゲストＯＳは、ホストＯＳ５による処理結果を基に、ダンプ採取をホストＯＳ５で実行するか否かを判定する（Ｓ４）。ホストＯＳ５でダンプ採取が実行される場合、ゲストＯＳはプロセス終了処理・再開処理を実行する（Ｓ６）。プロセス終了処理・再開処理では、ゲストＯＳは、例えば，異常が検知された業務アプリケーションに割り当てられていた仮想メモリ等のリソースを解放し、業務アプリケーション実行のための管理情報などをクリアする。その後、ゲストＯＳは、同一のゲストＶＭにおいて、業務アプリケーションを再開する。ホスト計算機１０のＣＰＵ１は、「異常が検知されたプロセスが実行されていた仮想計算機上のメモリを用いてプロセスを再起動する手段」の一例として、Ｓ６の処理を実行する。
【００４３】
一方、Ｓ４の判定で、ホストＯＳ５でダンプ採取が実行されない場合、ゲストＯＳがダンプ採取を実行する。その後、ゲストＯＳはプロセス終了処理を実行する（Ｓ６）。
【００４４】
図１０は、ホストＯＳ５のダンプ採取イベント検出時の処理を例示する図である。上述のように、ゲストＯＳは、ダンプ採取イベントを開始すると、制御はハイパーバイザ６を介してホストＯＳ５に移る（Ｓ１１）。すなわち、ホストＯＳ５は、ゲストＯＳのダンプ採取イベントを検出し、図１０の処理を開始する。まず、ホストＯＳ５は、プロセスサイズ(ゲストＶＭの仮想メモリまたは対応する物理メモリのページ数)を確認する（Ｓ１１）。なお、プロセスサイズは、より正確には、ゲストＶＭの物理メモリのページ数に加えて、プロセスを管理する情報等を含む。プロセスサイズが第１割当情報の一例である。ホスト計算機１０のＣＰＵ１は、「プロセスに割り当てられている仮想計算機上のメモリの割
当先を示す第１割当情報を取得すること」の一例として、Ｓ１１の処理を実行する。また、ホスト計算機１０のＣＰＵ１は、第１の取得手段の一例として、Ｓ１１の処理を実行する。
【００４５】
次に、ホストＯＳ５は、プロセスのサイズが閾値以上か否かを判定する（Ｓ１２）。ホスト計算機１０のＣＰＵ１は、「プロセスに割り当てられている仮想計算機上のメモリの割当量が所定の閾値以下の場合に、情報処理装置のメモリの割当先を情報処理装置のメモリの空き領域に変更する処理を回避すること」の一例として、Ｓ１２の処理を実行する。閾値は、ホストＯＳ５のシステムパラメータとして、主記憶部２に保存しておけばよい。Ｓ１２の判定でプロセスのサイズが閾値以上の場合、ホストＯＳ５は、十分な空き物理メモリが存在するか否かを判定する（Ｓ１３）。ホスト計算機１０のＣＰＵ１は、「仮想計算機上のメモリの割当量が物理メモリ上の空き領域よりも大きい場合に、情報処理装置のメモリの割当先を情報処理装置のメモリの空き領域に変更する処理を回避すること」の一例として、Ｓ１３の処理を実行する。
【００４６】
Ｓ１３の判定で十分な空き物理メモリが存在する場合、ホストＯＳ５は、メモリの付け替え処理を実行する（Ｓ１４）。ここで、メモリの付け替え処理とは、異常が検知された業務アプリケーションに割り当てられているゲストＶＭの物理メモリに対応するホスト計算機１０の物理メモリのページを付け替える処理をいう。
【００４７】
そして、ホストＯＳ５は、メモリの付け替え処理が正常終了したか否かを判定する。Ｓ１４の判定でメモリの付け替え処理が正常終了した場合には、ホストＯＳ５は、ゲストＯＳに”ホストが採取”とのメッセージ（戻り値）を通知し、処理を終了する。一方、Ｓ１２、Ｓ１３、および、Ｓ１５の判定がＮＯの場合には、ホストＯＳ５は、ゲストＯＳに”ゲストが採取”とのメッセージ（戻り値）を通知し、処理を終了する。
【００４８】
図１１に、メモリの付け替え処理（図１０のＳ１４）の詳細を例示する。この処理では、ホストＯＳ５は、ダンプ採取対象の業務プロセスによって使用されるページ、すなわち、ゲストＶＭ上で異常が検知された業務アプリケーションによって使用されるページと同数の空きページをホスト計算機１０の物理メモリである主記憶部２に確保する（Ｓ２１）。
【００４９】
次に、ホストＯＳ５は、変換マップＡ、Ｂ、Ｃを参照する。変換マップＡは、ホスト計算機１０の物理メモリとホスト計算機１０の仮想メモリとの間を対応付けるマップである。ホスト計算機仮想メモリは、ホストＯＳ５のプロセスに割り当てられるメモリである。また、変換マップＢは、ホスト計算機１０の仮想メモリとゲストＶＭの物理メモリとの間を対応付けるマップである。また、変換マップＣは、ゲストＶＭの物理メモリとゲストＶＭの仮想メモリとの間を対応付けるマップである。そして、ホストＯＳ５は、変換マップＡ、Ｂ、Ｃのマッピング情報から、業務アプリケーションのプロセスが動作するゲストＶＭの仮想メモリに対応するホスト計算機１０上の物理メモリのページを特定する（Ｓ２２）。この特定された物理メモリのページがダンプ採取される領域である。業務アプリケーションのプロセスが動作するゲストＶＭの仮想メモリが第１割当情報の一例である。特定されるホスト計算機１０上のページが第２割当情報の一例である。ホスト計算機１０のＣＰＵ１は、「第１割当情報を基に、プロセスに割り当てられている仮想計算機上のメモリに対する情報処理装置のメモリの割当先を示す第２割当情報を取得すること」の一例として、Ｓ２２の処理を実行する。ホスト計算機１０のＣＰＵ１は、第２の取得手段の一例として、Ｓ２２の処理を実行する。
【００５０】
次にホストＯＳ５は、変換マップＡの対応関係を書き換えて、業務アプリケーションのプロセスが動作するゲストＶＭの仮想メモリに空きページを割り当てる（Ｓ２３）。Ｓ２
３の処理によって、図１１の右側に例示したように、ゲストＯＳが管理するゲストＶＭの仮想メモリの領域に対して、ホストＯＳ５が管理するホスト計算機１０の物理メモリ上の空き領域が割り当てられる。ホスト計算機１０のＣＰＵ１は、「第２割当情報を保存するとともに、プロセスに割り当てられている仮想計算機上のメモリに対する情報処理装置のメモリの割当先を情報処理装置のメモリの空き領域に変更する処理」の一例として、Ｓ２３の処理を実行する。
【００５１】
さらに、ホストＯＳ５は、ホスト計算機１０の物理メモリ（図８の主記憶部２）で "ホストが採取する領域"のダンプをとる予約をする（Ｓ２４）。ここで、予約をするとは、
ダンプ採取対象の物理メモリのページを確保し、ダンプ採取に備えておくことをいう。また、ダンプ採取対象の物理メモリのページは、Ｓ２３の処理前に業務アプリケーションの業務プロセスによって使用されていたゲストＶＭの仮想メモリのページに割り当てられていたページである。そして、次にホストＯＳ５は、メモリの付け替え処理を終了し、図１０のＳ１５に復帰する。
【００５２】
この予約にしたがい、ホストＯＳ５は、予約された物理ページのメモリのダンプを実行し、ストレージ接続部３を介して、ダンプ用ストレージ４に採取されたメモリのダンプを出力する。ホスト計算機１０のＣＰＵ１は、ストレージ接続部３を介して、ダンプ用ストレージ４と連携し、「ダンプすること」の一例として、Ｓ２４の予約に対応するダンプ採取を実行する。したがって、Ｓ６の処理でのゲストＯＳによるプロセス終了処理・再開処理と、ホストＯＳ５によるダンプ採取（ダンプする手段による処理）は、並行して実行される。
【００５３】
図１２に、メモリの付け替え処理前のメモリ割り当ての状態を例示する。ここでは、業務アプリケーションがゲストＶＭによってゲストＯＳ上で業務プロセスとして実行されているとする。業務プロセスは、他のプロセスとは分離された独自の仮想アドレス空間を有している。今、仮想アドレス空間上で、太い黒枠部分が業務プロセスによって使用される仮想アドレス空間のページ（以下、業務プロセス割り当て済みページ）であるとする。
【００５４】
業務プロセス割り当て済みページは、変換マップＣによってゲストＶＭの物理アドレス空間のページに対応付けされる。なお、ゲストＶＭの物理アドレス空間のページは、ゲストＯＳによって管理されている。
【００５５】
さらに、ゲストＶＭは、ホスト計算機１０のホストＯＳ５上で実行されるハイパーバイザによって作成される。ハイパーバイザは、ホスト計算機１０の仮想アドレス空間で実行される。したがって、ゲストＶＭの物理アドレスは、ハイパーバイザによってホスト計算機１０の仮想アドレス空間内で提供される。このとき、ゲストＶＭの物理アドレス空間のページは、変換マップＢにより、ホスト計算機のホストＯＳ５上の仮想アドレス空間のページに対応付けされる。
【００５６】
さらに、ホスト計算機１０の仮想アドレス空間のページは、変換マップＡによってホスト計算機の物理アドレス空間のページに対応付けされる。図１２のように、メモリの付け替え処理前、ホスト計算機１０の仮想アドレス空間の業務プロセス割り当て済みページは、ホスト計算機１０の物理アドレス空間のページと実線で示される対応関係であったとする。また、ホスト計算機１０の物理アドレス空間で、「空きページ」とされた部分が空きページであったとする。
【００５７】
図１３に、メモリの付け替え処理後のメモリ割り当ての状態を例示する。図１３のように、ゲストＶＭの物理アドレス空間のページは、メモリの付け替え処理後には、付け替え前にホスト計算機１０の物理アドレス空間で、「空きページ」とされた部分に割り当てら
れる。一方、付け替え前に、業務プロセス割り当て済みページに割り当てられていたホスト計算機１０の物理アドレス空間のページは、仮想アドレス空間のページとの関係が切り離される。図１３の点線が切り離された関係を例示する。
【００５８】
図１４に、メモリの付け替え処理後のダンプ採取時の状態を例示する。上述のように、メモリの付け替え処理により、業務プロセス割り当て済みページに割り当てられていたホスト計算機１０の物理アドレス空間のページは、ゲストＶＭの物理アドレス空間のページから切り離される。したがって、ゲストＶＭで実行中の業務プロセスは、それまでアクセスしていた物理アドレス空間のページへのアクセスできない。このとき、ゲストＯＳはハイパーバイザ６を介してホストＯＳ５からホスト計算機１０の物理メモリの解放を通知される。物理メモリ解放の通知を受けると、ゲストＯＳは業務プロセスを終了するための様々な後処理を実行する。そして、後処理終了後に、ゲストＯＳは、業務プロセスを再起動できる。
【００５９】
一方、メモリ付け替え処理前、業務プロセス割り当て済みページに対応するページに割り当てられていたホスト計算機１０の物理アドレス空間のページは、ダンプ採取のためホストＯＳ５のダンプ処理に引き渡される。
＜効果＞
【００６０】
実施形態１の情報処理装置１００では、業務アプリケーションを実行中の業務プロセスが異常となった場合に、業務プロセスの仮想空間上で使用中のページ（業務プロセス割り当て済みページ）に対応するホスト計算機１０の物理アドレス空間上のページが付け替えられる。したがって、ゲストＶＭは、異常が発生した業務アプリケーションを終了させる時間を削減し早期に業務復旧可能な状態にする効果が得られる。実施形態１の構成では、冗長構成や予備領域などを用意することなく業務復旧可能であるため、冗長構成や予備領域などにかかる計算機資源のコストを削減する効果が得られる。
【００６１】
実施形態１の情報処理装置１００では、仮想化システムのゲストＶＭ上で動作する業務アプリケーションの異常発生時に、ホストＯＳ５およびハイパーバイザ６が、ゲストＶＭ上の業務アプリケーションに異常が発生したという情報に基づいて、ゲストＶＭの物理アドレスとホスト計算機１０の物理アドレスとの対応表を操作する。そして、ホストＯＳ５およびハイパーバイザ６が、異常が発生したゲストＶＭの業務アプリケーションが使用していたメモリ領域をゲストＶＭから見て解放する。以上の処理によって、情報処理装置１００は、ゲストＶＭの業務アプリケーションを早期に復旧させることができるようになる。
［実施形態２］
【００６２】
図１５から図１９の図面を参照して、実施形態２に係る情報処理装置１００を説明する。実施形態１では、業務プロセスの異常時に、業務プロセスによる仮想アドレス空間の使用中のページに対応するホスト計算機１０の物理アドレス空間上のページを付け替える処理が例示された。実施形態２では、実施形態１と同様の処理をホストＯＳ５で起動されるハンドラで実行する処理例を説明する。ホストＯＳ５で起動されるハンドラによる処理以外の構成および作用は、実施形態１の情報処理装置１００と同様である。そこで、実施形態１の情報処理装置１００の構成はそのまま実施形態２に適用される。したがって、実施形態２の情報処理装置１００の構成要素のうち、実施形態１の情報処理装置１００と同一の構成要素については、同一の符号を付してその説明を省略する。以下、実施形態２の情報処理装置１００による情報処理方法を例示する。
＜メモリのページの表記法＞
以下、実施形態２におけるメモリ空間のページの表記法を説明する。実施形態２では、メモリ空間のページは、＜空間名＞＿＜内容＞［通し番号］で表記する。
【００６３】
＜空間名＞は、メモリのページが存在するメモリ空間の名称であり、４つの空間が用意される。例えば、ホスト物理アドレス空間は、”ＨＰ”（Ｈｏｓｔ  Ｐｈｙｓｉｃａｌ）で表わす。また、ホスト仮想アドレスは””ＨＶ” （Ｈｏｓｔ  Ｖｉｒｔｕａｌ）で表
わす。また、ゲスト物理アドレス空間は”ＧＰ”（Ｇｕｅｓｔ  Ｐｈｙｓｉｃａｌ）で表わす。さらに、ゲスト仮想アドレスは、”ＧＶ”（Ｇｕｅｓｔ  Ｖｉｒｔｕａｌ）で表す。
【００６４】
＜内容＞は、表記される該当ページに格納されているデータの種類を示す。実施形態２では、データの種類は、５種類用意される。業務プロセスのデータは”Ｐ”（Ｐｒｏｃｅｓｓ）で表し、変換マップＡを含む管理情報を格納するメモリ空間管理領域は”ｍＡ”で表す。また、変換マップＢを含む管理情報を格納するメモリ空間管理領域は”ｍＢ”で表す。さらに、変換マップＣを含む管理情報を格納するメモリ空間管理領域は”ｍＣ”で表す。さらにまた、空きページは”Ｓ”で表す。
【００６５】
［通し番号］は、メモリ領域をページ単位でみた場合の通し番号である。具体的には、通し番号は、０，１，２，…，（メモリ領域サイズ／ページサイズ）の整数部分−１である。通し番号を一般的に表す場合はｉ，ｊ，ｋ等の英小文字が利用される。なお、「通し番号」が省略されていた場合、つまり、＜空間名＞＿＜内容＞は、先頭アドレスを示す。
【００６６】
表記例は以下の通りである。例えば、ホスト物理空間の空きページの２つ目は、ＨＰ＿Ｓ［１］で表される。また、ゲスト仮想空間の業務プロセスのページは一般に、ＧＶ＿Ｐ［ｊ］で表される。さらに、ホスト仮想空間の変換マップＢ先頭アドレスは、ＨＶ＿ｍＢで表される。
＜メモリアドレス変換操作の表記法＞
【００６７】
実施形態１で説明したように、変換マップＡ、Ｂ、Ｃはそれぞれメモリ空間管理領域ｍＡ、ｍＢ、ｍＣに格納されている。各変換マップにはそれぞれメモリアドレス変換操作に用いる情報が格納されている。例えば、ゲストＯＳ上の業務プロセスの仮想アドレスからゲストＯＳ上の物理アドレスへの変換にはｍＣ内の変換マップＣを利用する。このｍＣによる変換操作は、以下の［数１］で表される。
［数１］
ＧＰ＿Ｐ［ｊ］＝Ｔ＿ｍＣ（ＧＶ＿Ｐ［ｊ］）
同様に、メモリ空間管理領域ｍＡ、ｍＢを利用した変換操作をそれぞれＴ＿ｍＡ、Ｔ＿ｍＢと記述する。
【００６８】
図１５に、ゲスト仮想アドレスとゲスト物理アドレスとの関係を変換マップＣ、および、変換操作Ｔ＿ｍＣによって例示する。変換マップＣは、メモリ空間管理領域ｍＣに記憶されておおり、ゲスト仮想アドレス空間とゲスト物理アドレス空間との対応関係を記述する。また、変換操作Ｔ＿ｍＣは、ゲスト仮想アドレス空間のページをゲスト物理アドレス空間のページに変換する操作を示す。
【００６９】
図１６に、ホスト物理アドレス空間（ＨＰ）、ホスト仮想アドレス空間（ＨＶ）、ゲスト物理アドレス空間（ＧＰ）、および、ゲスト仮想アドレス空間（ＧＶ）の関係を変換操作Ｔ＿ｍＡ、Ｔ＿ｍＢ、Ｔ＿ｍＣによって例示する。なお、図１６で、太い黒枠は、ゲスト物理アドレス空間のページ０、１、ｊに対応する各空間のページを示す。
【００７０】
また、変換操作Ｔ＿ｋは、メモリ空間管理領域ｍＣをゲスト仮想アドレスからゲスト物理アドレスに変換する操作を示す。メモリ空間管理領域ｍＣは、ゲストＯＳの仮想メモリ空間にあり、ゲストＯＳに依存して、ゲスト物理空間に配置される。したがって、変換操
作Ｔ＿ｋは、ゲストＯＳ個別の処理である。なお、ゲストＯＳ上の業務プロセスの仮想アドレスからゲストＯＳ上の物理アドレスへの変換操作Ｔ＿ｍＣは、メモリ空間管理領域ｍＣに定義される。また、ゲスト仮想空間（ＧＶ）上のメモリ空間管理領域ｍＣの先頭アドレスは、ＧＶ＿ｍＣで示される。
【００７１】
ゲスト物理アドレス空間（ＧＰ）のページ（ＧＰ＿ｍＣ［ｉ］、ＧＰ＿Ｐ［ｊ］）に変換操作Ｔ＿ｍＢを行うことで、ホスト仮想アドレス空間（ＨＶ）の対応ページ（ＨＶ＿ｍＣ［ｉ］、ＨＶ＿Ｐ［ｊ］）が得られる。ホスト仮想アドレス空間（ＨＶ）のページ（ＨＶ＿ｍＣ［ｉ］、ＨＶ＿ｍＢ、ＨＶ＿ｍＡ、ＨＶ＿Ｐ［ｊ］）に変換操作Ｔ＿ｍＡを行うことで、ホスト物理アドレス空間（ＨＰ）の対応ページ（ＨＰ＿ｍＣ［ｉ］、ＨＰ＿ｍＢ、ＨＰ＿ｍＡ、ＨＰ＿Ｐ［ｊ］）が得られる。
＜処理フロー＞
【００７２】
図１７は、実施形態２におけるゲストＯＳによる異常検出、ダンプ採取イベント開始処理を例示する図である。この処理では、ゲストＯＳは、業務アプリケーションを実行する業務プロセスの異常を検知すると、ハイパーバイザ６を介して、ホストＯＳ５にメモリ空間管理領域ｍＣの先頭アドレスＧＶ＿ｍＣとゲストＯＳの版数を通知する（Ｓ３１）。そして、ゲストＯＳは、ホストＯＳ５の処理完了待ちとなる（Ｓ３２）。ホストＯＳ５の処理が完了すると、ゲストＯＳは、ホストからの返却値を確認する（Ｓ３３）。
【００７３】
ホストＯＳ５からの返却値が"ホストが採取"である場合には、ゲストＯＳはプロセス終了処理・再開処理を実行し、さらに業務プロセスを再開する（Ｓ３５）。プロセス終了処理・再開処理は、実施形態１の場合と同様である。ホスト計算機１０のＣＰＵ１は、「異常が検知されたプロセスが実行されていた仮想計算機上のメモリを用いてプロセスを再起動すること」の一例として、Ｓ３５の処理を実行する。一方、ホストＯＳ５からの返却値が"ゲストが採取"である場合には、ゲストＯＳがダンプを採取する（Ｓ３４）。その後、ゲストＯＳはプロセス終了処理を実行し、処理を終了する（Ｓ３５）。
【００７４】
図１８に、ホスト側の処理を例示する。ゲストＯＳがダンプ採取イベントを開始すると、ホストＯＳ５は、ハイパーバイザ６を介して、ダンプ採取イベントを受け取り、図１８の処理を開始する。そして、ホストＯＳ５は、ゲストＯＳからＧＶ＿ｍＣとゲストＯＳの版数を受け取る（Ｓ４１）。
【００７５】
そして、ホストＯＳ５は、ＯＳ版数に対応するハンドラが存在するか否かを判定する（Ｓ４２）。ＯＳ版数に対応するハンドラが存在する場合には、ホストＯＳ５は、ＯＳ版数に依存するハンドラを呼び出す（Ｓ４３）。そして、ホストＯＳ５は、ハンドラ呼び出し結果を判定する（Ｓ４４）。ホスト計算機１０のＣＰＵ１は、仮想計算機上で実行されるプロセスの異常を検知することの一例として、Ｓ４１およびＳ４３の処理を実行する。
【００７６】
ハンドラ呼び出し結果が、"ホストが採取"を示す場合、ホストＯＳ５は、異常が検出された業務プロセスによって使用されていたページに対応するホスト計算機１０の物理アドレス空間のページＨＰ＿Ｐ［ｊ］をダンプ採取のために予約する（Ｓ４５）。この予約にしたがい、ホストＯＳ５は、予約された物理メモリのページのダンプを実行し、ストレージ接続部３を介して、ダンプ用ストレージ４に採取されたメモリのダンプを出力する。このように、ダンプの対象を予約した物理メモリのページとすることで、ホストＯＳ５は、業務プロセスによって使用されるメモリのうち、ホスト計算機１０において実際に割り当てられている物理メモリのページに限定してダンプ採取を実行できる。
【００７７】
ホスト計算機１０のＣＰＵ１は、ストレージ接続部３を介して、ダンプ用ストレージ４と連携し、「ダンプすること」の一例として、Ｓ４５の予約に対応するダンプ採取を実行
する。したがって、Ｓ３５の処理でのゲストＯＳによるプロセス終了処理・再開処理と、ホストＯＳ５によるダンプ採取（ダンプする手段による処理）は、並行して実行される。そして、ゲストＯＳに、"ホストが採取"を通知する（Ｓ４６）。一方、Ｓ４４の判定で、ハンドラ呼び出し結果が、"ゲストが採取"を示す場合、ホストＯＳ５は、ゲストＯＳに"
ゲストが採取"を通知する（Ｓ４７）。
【００７８】
図１９は、ゲストＯＳに対応するハンドラの処理を例示する。この処理では、ハンドラは、変換操作Ｔ＿ｋに用いる情報を得る。変換操作Ｔ＿ｋに用いる情報とは、ゲストＯＳ依存の情報であり、例えば、ゲストＯＳのバージョン、ゲストＶＭの仮想メモリ空間上のメモリ空間管理領域ｍＣの先頭アドレスＧＶ＿ｍＣに対応するゲストＶＭ上の物理アドレス空間の位置等である（Ｓ５０）。
【００７９】
次に、ハンドラは、変換操作Ｔ＿ｍＢ、Ｔ＿ｋにより、ゲストＶＭの仮想メモリ空間上のメモリ空間管理領域ｍＣの先頭アドレスＧＶ＿ｍＣに対応するホスト仮想メモリ空間上のページＨＶ＿ｍＣを参照する。その結果、ハンドラは、業務プロセスによって使用されていたゲストＶＭ上の仮想アドレス空間のページＧＶ＿Ｐ［ｊ］、業務プロセスのサイズ、変換マップＣ等を取得する（Ｓ５１）。業務プロセスによって使用されていたゲストＶＭ上の仮想アドレス空間のページＧＶ＿Ｐ［ｊ］または業務プロセスのサイズが第１割当情報の一例である。ホスト計算機１０のＣＰＵ１は、「プロセスに割り当てられている仮想計算機上のメモリの割当先を示す第１割当情報を取得すること」の一例として、Ｓ５１の処理を実行する。ホスト計算機１０のＣＰＵ１は、第１の取得手段の一例として、Ｓ５１の処理を実行する。
【００８０】
次に、ハンドラは、業務プロセスサイズが所定の閾値より大きいか否かを判定する（Ｓ５２）。業務プロセスサイズが所定の閾値より大きい場合、ホスト物理アドレス空間の空きメモリ領域が業務プロセスサイズを格納できる大きさであるか否かを判定する（Ｓ５３）。そして、Ｓ５３の判定で、ホスト物理アドレス空間の空きメモリ領域が業務プロセスサイズを格納できる大きさである場合、ハンドラは、ホスト物理メモリ空間の空きページを確保し、各空ページの先頭アドレスをＨＰ＿Ｓ［ｊ］を取得する（Ｓ５４）。そして、ハンドラは、異常が検出された業務プロセスが使用するホスト仮想アドレスを計算する（Ｓ５６）。計算式は、以下のとおりである。
ＨＶ＿Ｐ［ｊ］  ＝  Ｔ＿ｍＢ（Ｔ＿ｍＣ（ＧＶ＿Ｐ［ｊ］））；
【００８１】
上記Ｔ＿ｍＣによる変換によって、ハンドラは、ダンプの対象であるゲストＶＭ上の業務プロセスのページから対応するホスト仮想アドレス空間のページを特定できる。したがって、ハンドラは、ゲストＶＭが使用するホスト仮想アドレス空間のうち、業務プロセスによって使用されているページに限定して処理を実行できる。さらに、ハンドラは、業務プロセスによって使用されているホスト仮想アドレス空間のページに対応するホスト物理アドレスを計算する（Ｓ５７）。計算式は以下の通りである。
ＨＰ＿Ｐ［ｊ］  ＝  Ｔ＿ｍＡ（ＨＶ＿Ｐ［ｊ］）；
【００８２】
特定される業務プロセスのゲストＶＭの仮想ページに対応するホスト物理アドレスＨＰ＿Ｐ［ｊ］が第２割当情報の一例である。ホスト計算機１０のＣＰＵ１は、「第１割当情報を基に、プロセスに割り当てられている仮想計算機上のメモリに対する情報処理装置のメモリの割当先を示す第２割当情報を取得すること」の一例として、Ｓ５６、Ｓ５７の処理を実行する。
【００８３】
そして、ハンドラは、異常が検出された業務プロセスが使用するホスト仮想アドレスがＳ５４で取得された空き領域となるよう、以下の計算式を満たすように、変換マップＡを書き換え、変換操作Ｔ＿ｍＡを変更する（Ｓ５８）。
ＨＰ＿Ｓ［ｊ］  ＝  Ｔ＿ｍＡ（ＨＶ＿Ｐ［ｊ］）；
【００８４】
ホスト計算機１０のＣＰＵ１は、「第２割当情報を保存するとともに、プロセスに割り当てられている仮想計算機上のメモリに対する情報処理装置のメモリの割当先を情報処理装置のメモリの空き領域に変更する処理」の一例として、Ｓ５８の処理を実行する。また、ホスト計算機１０のＣＰＵ１は、割当変更手段の一例としてＳ５８の処理を実行する。
【００８５】
そして、ハンドラは、“ホストが採取"とＨＰ＿Ｐ［ｊ］を戻り値として、ハイパーバ
イザ６を介してホストＯＳ５に返却する（Ｓ５９）。一方、Ｓ５２の判定で業務プロセスサイズが所定の閾値以下の場合には、ハンドラは処理をＳ５５に進める。また、Ｓ５３の判定でホスト物理アドレス空間の空きメモリ領域が業務プロセスサイズを格納できる大きさでない場合も、ハンドラは処理をＳ５５に進める。そして、"ゲストが採取" を戻り値
として、ハイパーバイザ６を介してホストＯＳ５に返却する（Ｓ５５）。ホスト計算機１０のＣＰＵ１は、「仮想計算機上のメモリの割当量が物理メモリ上の空き領域よりも大きい場合に、情報処理装置のメモリの割当先を情報処理装置のメモリの空き領域に変更する処理を回避すること」の一例として、Ｓ５３の処理を実行する。ホスト計算機１０のＣＰＵ１は、「プロセスに割り当てられている仮想計算機上のメモリの割当量が所定の閾値以下の場合に、情報処理装置のメモリの割当先を情報処理装置のメモリの空き領域に変更する処理を回避すること」の一例として、Ｓ５２の処理を実行する。
＜効果＞
【００８６】
以上述べたように、実施形態２の情報処理装置１００によっても、ゲストＶＭの業務プロセスが異常終了した場合に、ホストの負荷増加を抑制し、最低限の範囲でホスト計算機１０の物理メモリを確保し、業務プロセスを再開できる。すなわち、ホストＯＳ５は、業務プロセスによって使用されているゲストＶＭの物理メモリのページに対応するホスト計算機１０の物理メモリのページについてダンプの予約をした上で、ゲストＶＭの物理メモリをホスト計算機１０の物理メモリ（主記憶部２）の空きページに割り当てできる。したがって、ホストＯＳ５によるダンプ採取とともに、ゲストＯＳによる業務プロセスの終了処理、および、再開処理を並行して実行できる。
【００８７】
また、実施形態２の情報処理装置１００によれば、異常が発生したプロセスに割り当てられているゲストＶＭの仮想メモリの割当量（プロセスサイズ）が、ホスト計算機１０の物理メモリ上の空き領域よりも大きい場合に、メモリ付け替え処理を回避する。したがって、メモリ付け替えによって、ホスト計算機１０において、スワッピングが頻発するような事態を回避できる。
【００８８】
また、実施形態２の情報処理装置１００によれば、異常が発生したプロセスに割り当てられているゲストＶＭの仮想メモリの割当量（プロセスサイズ）が所定の閾値以下の場合に、メモリ付け替え処理を回避する。したがって、メモリ付け替えによっても業務プロセス再開までの時間短縮の効果が薄い場合に、ホスト計算機１０の負荷が増加することを抑制できる。
【００８９】
また、実施形態２の情報処理装置１００によれば、異常が発生したプロセスが実行されていたゲストＶＭのメモリを用いて、そのまま業務プロセスが再開できる。したがって、ゲストＶＭは、ゲストＶＭのうちの業務プロセス再開のための最低限の構成変更で、業務プロセスを再開でき、情報処理装置１００としての資源の浪費を低減できる。
【００９０】
また、実施形態２の情報処理装置１００によれば、ホストＯＳ５は、予約された物理メモリの割り当て情報を基に物理メモリ（主記憶部２）のダンプを採取する処理を実行する一方で、ダンプを採取する処理と並行してゲストＯＳは、業務プロセスを再開できる。こ
のため、業務プロセスの異常検知から、業務プロセスの再開までの時間が短縮される。
［その他の変形例］
【００９１】
上記実施形態１、２では、情報処理装置１００は、ゲストＶＭ上の業務プロセスによって使用される仮想メモリを求め、仮想メモリをゲストＶＭの物理メモリに変換し、さらに、ゲストＶＭの物理メモリを基にホスト計算機１０の仮想メモリに変換した。そして、情報処理装置１００は、ホスト計算機１０の仮想メモリを物理メモリに変換し、得られた物理メモリに代えて空き領域を割り当てた。しかし、情報処理装置１００の処理は、このような手順に限定される訳ではない。例えば、ゲストＯＳが、業務プロセスによって使用されているゲストＶＭの物理メモリの領域を管理している場合には、業務プロセスで異常が検知されて、ゲストＯＳからホストＯＳ５に制御が移るときに、ゲストＶＭの物理メモリのページをホストＯＳ５に引き渡してもよい。要するに、ゲストＶＭ上で業務プロセスに使用されている物理メモリを基にして、ダンプ対象となるホスト計算機１０のメモリページを取得することで、ダンプ対象をゲストＶＭの物理メモリに限定することができる。ゲストＶＭの物理メモリは、ゲストＯＳによってスワップアウトされていないメモリであり、業務プロセスの異常発生時に、実際にアクセスされていた領域のダンプ採取が可能となる。
【００９２】
ただし、上記実施形態２のように、ホストＯＳ５に、メモリ空間管理領域ｍＣの先頭アドレスＧＶ＿ｍＣを引き渡すことで、簡易に、業務プロセスによって使用されていたゲストＶＭの仮想メモリのページの集合を引き渡すことができる。
【００９３】
また、上記実施形態では、ホストＯＳ５（ハンドラ）は、ゲストＶＭの物理メモリに対応するホスト計算機１０上での物理メモリである主記憶部２のページの割当先を空きページに変更した。ただし、ホストＯＳ５が仮想メモリのページをダンプする機能を有している場合には、ゲストＶＭの物理メモリに対応するホスト計算機１０上での仮想メモリのページの割当先を他の仮想メモリのページとしてもよい。このように、ホスト計算機１０上での仮想メモリのページを付け替えることによっても、ダンプ対象のページを保存するとともに、異常が検知された業務プロセスを早期に再開させることができる。その結果、情報処理装置１００は、異常が発生したページのダンプ採取と、業務プロセスの再開を並行して進めることができる。
ただし、ダンプの対象を仮想メモリのページではなく物理メモリ（主記憶部２）のページとすることで、ホストＯＳ５は、業務プロセスによって使用されるメモリのうち、ホスト計算機１０において実際に割り当てられている物理メモリ（主記憶部２）のページに限定してダンプ採取を実行できる。つまり、ホストＯＳ５は、業務プロセスの異常や障害が検知されたときに物理メモリ（主記憶部２）からスワップアウトされていない、実際に業務プロセスによって使用されているメモリの領域のダンプを採取できる。
《コンピュータが読み取り可能な記録媒体》
【００９４】
コンピュータその他の機械、装置（以下、コンピュータ等）に上記いずれかの機能を実現させるプログラムをコンピュータ等が読み取り可能な記録媒体に記録することができる。そして、コンピュータ等に、この記録媒体のプログラムを読み込ませて実行させることにより、その機能を提供させることができる。
【００９５】
ここで、コンピュータ等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピュータ等から読み取ることができる記録媒体をいう。このような記録媒体のうちコンピュータ等から取り外し可能なものとしては、例えばフレキシブルディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ／Ｗ、ＤＶＤ、ブルーレイディスク、ＤＡＴ、８ｍｍテープ、フラッシュメモリなどのメモリカード等がある。また、コンピュータ等に固定された記録媒体とし
てハードディスク、ＲＯＭ（リードオンリーメモリ）等がある。さらに、ＳＳＤ（Solid State Drive）は、コンピュータ等から取り外し可能な記録媒体としても、コンピュータ
等に固定された記録媒体としても利用可能である。
【符号の説明】
【００９６】
１    ＣＰＵ
２    主記憶部
３    ストレージ接続部
４    ダンプ用ストレージ
５    ホストＯＳ
６    ハイパーバイザ
１０    ホスト計算機
１００    情報処理装置
【図１】
2018013859.tif 000003
【図２】
2018013859.tif 000004
【図３】
2018013859.tif 000005
【図４】
2018013859.tif 000006
【図５】
2018013859.tif 000007
【図６】
2018013859.tif 000008
【図７】
2018013859.tif 000009
【図８】
2018013859.tif 000010
【図９】
2018013859.tif 000011
【図１０】
2018013859.tif 000012
【図１１】
2018013859.tif 000013
【図１２】
2018013859.tif 000014
【図１３】
2018013859.tif 000015
【図１４】
2018013859.tif 000016
【図１５】
2018013859.tif 000017
【図１６】
2018013859.tif 000018
【図１７】
2018013859.tif 000019
【図１８】
2018013859.tif 000020
【図１９】
2018013859.tif 000021