(57)【要約】【課題】仮想マシンを移動する際のメモリデータの転送を削減する。【解決手段】情報処理装置１０の処理部１２は、仮想マシン１３が使用するメモリ１１上の単位領域１４のデータ１４ａを情報処理装置２０にコピーし、また、単位領域１４に対応させてバッファ領域１５を割り当てる。処理部１２は、コピー後に単位領域１４のデータ１４ａが更新される毎に、バッファ領域１５に更新履歴１５ａが保存されるよう制御する。処理部１２は、情報処理装置２０で仮想マシン１３を稼働させる際、バッファ領域１５に保存された更新履歴１５ａの量が閾値を超える場合には単位領域１４のデータ１４ａを情報処理装置２０に再度コピーし、更新履歴１５ａの量が閾値を超えない場合には更新履歴１５ａを情報処理装置２０に対して送信させる。【選択図】図１
2018088134.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
仮想マシンが使用するメモリ上の単位領域のデータを他のコンピュータにコピーし、また、前記単位領域に対応させてバッファ領域を割り当て、
コピー後に前記単位領域のデータが更新される毎に、前記単位領域に対応する前記バッファ領域に更新履歴が保存されるよう制御し、
前記他のコンピュータで前記仮想マシンを稼働させる際、前記バッファ領域に保存された前記更新履歴の量が閾値を超える場合には前記単位領域のデータを前記他のコンピュータに再度コピーし、前記更新履歴の量が前記閾値を超えない場合には前記更新履歴を前記他のコンピュータに対して送信させる、
処理を実行させるマイグレーションプログラム。
【請求項２】
前記メモリは複数の単位領域を含み、
前記複数の単位領域に対応させて複数のバッファ領域が割り当てられ、
前記コンピュータに更に、前記複数のバッファ領域のうち前記更新履歴の量が前記閾値を超えるバッファ領域の数に基づいて、前記コンピュータにおいて前記仮想マシンを停止させるタイミングを判定する処理を実行させる、
請求項１記載のマイグレーションプログラム。
【請求項３】
前記単位領域のデータの再度コピーと前記更新履歴の送信との選択的実行は、前記コンピュータにおいて前記仮想マシンが停止した後に行われ、
前記コンピュータに更に、前記仮想マシンの停止前は、前記更新履歴の量が前記閾値を超えた場合に前記単位領域のデータを再度コピーする処理を実行させる、
請求項１記載のマイグレーションプログラム。
【請求項４】
前記単位領域のデータの再度コピーと前記更新履歴の送信との選択的実行は、前記コンピュータにおいて前記仮想マシンが停止した後に行われ、
前記コンピュータに更に、前記仮想マシンの停止前は、前記更新履歴の量が前記閾値を超えた場合に前記更新履歴を送信させる処理を実行させる、
請求項１記載のマイグレーションプログラム。
【請求項５】
前記コンピュータに更に、前記単位領域のデータが更新される頻度に応じて、前記バッファ領域に保存される前記更新履歴のフォーマットを変更する処理を実行させる、
請求項１記載のマイグレーションプログラム。
【請求項６】
前記コンピュータに更に、前記単位領域のデータが更新される頻度に応じて、前記単位領域に対応する前記バッファ領域のサイズを変更する処理を実行させる、
請求項１記載のマイグレーションプログラム。
【請求項７】
仮想マシンが使用する単位領域を含むメモリと、
前記単位領域のデータを他の情報処理装置にコピーし、コピー後に前記単位領域のデータが更新される毎に、前記単位領域に対応させて割り当てられたバッファ領域に更新履歴が保存されるよう制御し、前記仮想マシンを前記他の情報処理装置で稼働させる際、前記バッファ領域に保存された前記更新履歴の量が閾値を超える場合には前記単位領域のデータを前記他の情報処理装置に再度コピーし、前記更新履歴の量が前記閾値を超えない場合には前記更新履歴を前記他の情報処理装置に対して送信させる処理部と、
を有する情報処理装置。
【請求項８】
第１の情報処理装置および第２の情報処理装置を含むシステムが実行するマイグレーション方法であって、
前記第１の情報処理装置に配置された仮想マシンが使用するメモリ上の単位領域のデータを第２の情報処理装置にコピーし、また、前記単位領域に対応させて前記第１の情報処理装置が有するバッファ領域を割り当て、
コピー後に前記第１の情報処理装置において前記単位領域のデータが更新される毎に、前記単位領域に対応する前記バッファ領域に更新履歴を保存し、
前記バッファ領域に保存された前記更新履歴の量が閾値を超える場合、前記単位領域のデータを前記第２の情報処理装置に再度コピーし、再度コピーされた前記単位領域のデータに基づいて前記第２の情報処理装置で前記仮想マシンを稼働させ、
前記更新履歴の量が前記閾値を超えない場合、前記更新履歴を前記第２の情報処理装置に送信し、更新前にコピーされた前記単位領域のデータと前記更新履歴とに基づいて前記第２の情報処理装置で前記仮想マシンを稼働させる、
マイグレーション方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はマイグレーションプログラム、情報処理装置およびマイグレーション方法に関する。
【背景技術】
【０００２】
現在、物理的なコンピュータ（物理マシンと言うことがある）上で１以上の仮想的なコンピュータ（仮想マシンと言うことがある）を稼働させるコンピュータ仮想化技術が利用されている。コンピュータ仮想化技術では、物理マシンが有するプロセッサ処理能力やメモリ領域などのハードウェアリソースを各仮想マシンに柔軟に割り当てることができ、ハードウェアリソースの利用管理が容易となる。
【０００３】
ここで、ある物理マシンに配置された仮想マシンを他の物理マシンに移動させたいことがある。例えば、ある物理マシンの負荷が高くハードウェアリソースが不足傾向にあるとき、当該物理マシン上の一部の仮想マシンを他の物理マシンに移動させることがある。また、例えば、ある物理マシンを保守作業や省電力化のために停止させたいとき、当該物理マシン上の全ての仮想マシンを他の物理マシンに移動させることがある。
【０００４】
異なる物理マシン間で仮想マシンを移動させる方法として、仮想マシンで実行されているオペレーティングシステム（ＯＳ：Operating System）などのソフトウェアをシャットダウンせずに移動する「ライブマイグレーション」がある。ライブマイグレーションによれば、仮想マシンが情報処理を実行できない実質的停止時間を短縮できる。ライブマイグレーションの手順として、例えば、次のような手順が考えられる。
【０００５】
移動元の物理マシンは、移動させたい仮想マシンが使用する複数単位のメモリ領域（各単位のメモリ領域をページと言うことがある）のデータを、移動先の物理マシンに対して順次コピーする。このとき、移動元の物理マシンでは当該仮想マシンがまだ停止しておらず稼働中である。よって、仮想マシンが使用する全てのページのデータを１回コピーし終えるまでに、１以上のページが仮想マシンによって更新されることがある。移動元の物理マシンは、コピー後に更新されたページ（ダーティページと言うことがある）のデータを、ページ単位で移動先の物理マシンに対して再度コピーする。移動元の物理マシンは、ダーティページが十分少なくなるまで再コピーを繰り返す。
【０００６】
ダーティページが十分少なくなると、移動元の物理マシンは、仮想マシンを停止させてページ更新がそれ以上発生しないようにし、残りのダーティページのデータを移動先の物理マシンに対してコピーする。また、移動元の物理マシンは、プログラムカウンタやその他のレジスタ値などのプロセッサコンテキストを移動先の物理マシンに送信する。移動先の物理マシンは、受信したページデータをメモリに配置し、受信したプロセッサコンテキストをプロセッサに設定し、仮想マシンの情報処理を開始する。これにより、移動元の物理マシンで中断した情報処理を、移動先の物理マシンが引き継ぐことができる。
【０００７】
なお、稼働系の仮想マシンと待機系の仮想マシンとを稼働させるフォールトトレラントサーバが提案されている。提案のフォールトトレラントサーバは、チェックポイントが到来すると稼働系の仮想マシンを一時停止させる。フォールトトレラントサーバは、第１のグループのメモリ領域については、前回のチェックポイント以降に更新されたデータを仮想マシンの停止中に転送バッファにコピーする。また、フォールトトレラントサーバは、第２のグループのメモリ領域については、一旦書き込み禁止に設定し、更新データを仮想マシンの一時停止を解除した後に転送バッファにコピーする。フォールトトレラントサーバは、転送バッファのデータを待機系の仮想マシンに対して送信する。
【０００８】
また、仮想マシンのライブマイグレーションを行うクラウドシステムが提案されている。提案のクラウドシステムは、移動元の物理マシンにおける各ページの更新頻度を測定する。クラウドシステムは、更新頻度の低いページのデータを、更新頻度の高いページよりも優先的に移動元の物理マシンから移動先の物理マシンにコピーする。
【０００９】
また、例えば、移動先の物理マシンで使用するメモリ領域を選択することができる計算機システムが提案されている。提案の計算機システムは、移動元の物理マシンにおいてプログラムによって更新されたメモリ領域を検出し、更新されたメモリ領域を示す情報を移動元の物理マシンから移動先の物理マシンに送信する。計算機システムは、移動元の物理マシンにおいて更新されたデータを、移動先の物理マシンが有するメモリ領域のうち最もアクセス性能が高くなるメモリ領域に配置する。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２０１４−１７８９８１号公報
【特許文献２】特開２０１４−１９１７５２号公報
【特許文献３】国際公開第２０１６／０１３０９８号
【発明の概要】
【発明が解決しようとする課題】
【００１１】
ところで、上記のライブマイグレーションにおいては、メモリデータの再コピーはページ単位で行われる。そのため、１回の書き込みサイズは小さいものの書き込み対象ページが分散しているメモリ更新処理を仮想マシンが継続的に行っていると、再コピーすべきページが高頻度で発生し、円滑にライブマイグレーションを行うことが難しいことがある。
【００１２】
例えば、ダーティページが十分に少なくなるまで仮想マシンを停止させずに再コピーを繰り返す場合、仮想マシンを停止できない状態が長時間続いてライブマイグレーションを正常に完了できないおそれがある。また、例えば、ライブマイグレーションを完了させるために上記の再コピーの繰り返しを打ち切った場合、残ったダーティページが多いために仮想マシン停止後のメモリデータのコピーに長時間を要することになる。そのため、仮想マシンの実質的停止時間が長くなり、仮想マシンの可用性が低下する。
【００１３】
１つの側面では、本発明は、仮想マシンを移動する際のメモリデータの転送を削減できるマイグレーションプログラム、情報処理装置およびマイグレーション方法を提供することを目的とする。
【課題を解決するための手段】
【００１４】
１つの態様では、コンピュータに以下の処理を実行させるマイグレーションプログラムが提供される。仮想マシンが使用するメモリ上の単位領域のデータを他のコンピュータにコピーし、また、単位領域に対応させてバッファ領域を割り当てる。コピー後に単位領域のデータが更新される毎に、単位領域に対応するバッファ領域に更新履歴が保存されるよう制御する。他のコンピュータで仮想マシンを稼働させる際、バッファ領域に保存された更新履歴の量が閾値を超える場合には単位領域のデータを他のコンピュータに再度コピーし、更新履歴の量が閾値を超えない場合には更新履歴を他のコンピュータに対して送信させる。
【００１５】
また、１つの態様では、メモリと処理部とを有する情報処理装置が提供される。また、１つの態様では、第１の情報処理装置および第２の情報処理装置を含むシステムが実行するマイグレーション方法が提供される。
【発明の効果】
【００１６】
１つの側面では、仮想マシンを移動する際のメモリデータの転送を削減できる。
【図面の簡単な説明】
【００１７】
【図１】第１の実施の形態の情報処理システムの例を示す図である。
【図２】第２の実施の形態の情報処理システムの例を示す図である。
【図３】物理マシンのハードウェア例を示すブロック図である。
【図４】仮想マシンの配置例を示すブロック図である。
【図５】プレコピー方式の第１のマイグレーション例を示す図である。
【図６】プレコピー方式の第１のマイグレーション例を示す図（続き）である。
【図７】プレコピー方式の第２のマイグレーション例を示す図である。
【図８】プレコピー方式の第２のマイグレーション例を示す図（続き）である。
【図９】更新履歴のフォーマット例を示す図である。
【図１０】ＴＬＢテーブルの例を示す図である。
【図１１】物理マシンの機能例を示すブロック図である。
【図１２】移動元処理の手順例を示すフローチャートである。
【図１３】移動元処理の手順例を示すフローチャート（続き）である。
【図１４】更新履歴生成の手順例を示すフローチャートである。
【図１５】移動先処理の手順例を示すフローチャートである。
【図１６】差分事前送信の手順例を示すフローチャートである。
【図１７】バッファモード変更の手順例を示すフローチャートである。
【図１８】バッファサイズ変更の手順例を示すフローチャートである。
【発明を実施するための形態】
【００１８】
以下、本実施の形態を図面を参照して説明する。
［第１の実施の形態］
第１の実施の形態を説明する。
【００１９】
図１は、第１の実施の形態の情報処理システムの例を示す図である。
第１の実施の形態の情報処理システムは、情報処理装置１０，２０を含む。情報処理装置１０，２０は、それぞれ１以上の仮想マシンを稼働させることができる物理マシンである。例えば、情報処理装置１０，２０は、データセンタなどの情報処理施設に設置されたサーバ装置である。情報処理装置１０，２０は、図示しないネットワークに接続されている。第１の実施の形態では、情報処理装置１０に配置された仮想マシン１３を、シャットダウンせずに情報処理装置２０に移動するライブマイグレーションを行う。
【００２０】
情報処理装置１０は、メモリ１１および処理部１２を有する。情報処理装置２０は、メモリ２１および処理部２２を有する。メモリ１１，２１は、例えば、ＲＡＭ（Random Access Memory）などの揮発性の半導体メモリである。処理部１２，２２は、例えば、ＣＰＵ（Central Processing Unit）などのプロセッサである。ただし、処理部１２，２２は、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＦＰＧＡ（Field Programmable Gate Array）などの電子回路を含んでもよい。プロセッサは、ＲＡＭなどのメモリに記憶されたプログラムを実行する。プログラムには、後述する処理を実行させるマイグレーションプログラムが含まれる。複数のプロセッサの集合を「マルチプロセッサ」または単に「プロセッサ」と言うこともある。
【００２１】
情報処理装置１０では、メモリ１１に含まれる単位領域１４が仮想マシン１３に割り当てられている。単位領域１４は、メモリ１１内の所定サイズの記憶領域であり、例えば、ページと言われる記憶領域である。仮想マシン１３は稼働中に、単位領域１４に記憶されたデータ１４ａの一部または全部を更新することができる。単位領域１４を含む複数の単位領域が仮想マシン１３に割り当てられてもよい。
【００２２】
仮想マシン１３を情報処理装置１０から情報処理装置２０に移動させる場合、処理部１２は、仮想マシン１３を停止させる前に、単位領域１４に記憶されたデータ１４ａ全体を情報処理装置２０にコピーする。仮想マシン１３に複数の単位領域が割り当てられている場合、処理部１２は、複数の単位領域それぞれのデータを情報処理装置２０にコピーする。仮想マシン１３を停止させる前のコピーを「プレコピー」と言うことがある。仮想マシン１３がまだ停止していないため、単位領域１４のデータ１４ａをコピーした後に、仮想マシン１３によってデータ１４ａの一部または全部が更新される可能性がある。
【００２３】
また、仮想マシン１３は、単位領域１４に対してバッファ領域１５を割り当てる。バッファ領域１５は、メモリ１１に含まれる記憶領域であってもよいし、情報処理装置１０が有するメモリ１１とは異なる記憶装置に含まれる記憶領域であってもよい。仮想マシン１３に複数の単位領域が割り当てられている場合、処理部１２は、複数の単位領域それぞれに対してバッファ領域を割り当てる。すなわち、その場合には、複数の単位領域に対応付けて複数のバッファ領域が用意されることになる。
【００２４】
処理部１２は、単位領域１４のデータ１４ａを１回コピーした後、データ１４ａが更新される毎にバッファ領域１５に更新履歴１５ａが保存されるよう制御する。仮想マシン１３に複数の単位領域が割り当てられている場合、更新された単位領域に対応するバッファ領域に更新履歴が保存される。更新履歴１５ａは、例えば、値を書き込んだ位置を示すオフセット（単位領域１４の先頭からの相対アドレス）、書き込みサイズ、書き込まれた値などを含む。ただし、サイズや値は省略できることがある。更新履歴１５ａの保存は、例えば、メモリ１１へのアクセスを監視するハードウェアを利用して実装される。
【００２５】
そして、処理部１２は、情報処理装置２０で仮想マシン１３を稼働させる際、バッファ領域１５に保存された更新履歴１５ａの量が所定の閾値を超えるか判定する。更新履歴１５ａの量が閾値を超える場合、処理部１２は、単位領域１４のデータ１４ａ全体を情報処理装置２０に再度コピーする。一方、更新履歴１５ａの量が閾値を超えない場合、処理部１２は、データ１４ａに代えて更新履歴１５ａを情報処理装置２０に対して送信させる。仮想マシン１３に複数の単位領域が割り当てられている場合、データの再コピーと更新履歴の送信は単位領域毎に選択される。データ１４ａの再コピーと更新履歴１５ａの送信との選択実行は、例えば、情報処理装置１０で仮想マシン１３を停止した後に行われる。仮想マシン１３を停止させた後のコピーを「ストップコピー」と言うことがある。
【００２６】
例えば、データ１４ａを１回コピーしてから情報処理装置１０で仮想マシン１３を停止させるまでの間は、処理部１２は、更新履歴１５ａの量が閾値を超えない限り、単位領域１４をダーティ状態として取り扱わない。処理部１２は、更新履歴１５ａの量が閾値を超えた場合のみ、単位領域１４をダーティ状態として取り扱い、仮想マシン１３の停止前にデータ１４ａ全体を再度コピーするか更新履歴１５ａを送信させる。処理部１２は、各単位領域がダーティ状態か否かに応じて、仮想マシン１３を停止させるタイミングを判定する。仮想マシン１３を停止させた後は、処理部１２は、上記のように、更新履歴１５ａの量に応じてデータ１４ａの再コピーと更新履歴１５ａの送信の一方を選択する。
【００２７】
情報処理装置２０では、処理部２２は、プレコピーにおいて情報処理装置１０からデータ１４ａを取得すると、単位領域１４に対応するメモリ２１の単位領域にデータ１４ａを保存する。また、処理部２２は、ストップコピーにおいて情報処理装置１０からデータ１４ａを再取得すると、メモリ２１の単位領域に最新のデータ１４ａを上書きする。また、処理部２２は、ストップコピーにおいて情報処理装置１０から更新履歴１５ａを取得すると、メモリ２１の単位領域に対して更新履歴１５ａが示す書き込みを再実行する。これにより、仮想マシン１３が停止した時のメモリ１１の状態がメモリ２１に反映される。そして、処理部２２は、情報処理装置２０上で仮想マシン１３を稼働させる。
【００２８】
第１の実施の形態の情報処理システムによれば、単位領域１４のデータ１４ａ全体が１回コピーされた後、情報処理装置１０においてデータ１４ａの少なくとも一部が更新される毎に、単位領域１４に対応するバッファ領域１５に更新履歴１５ａが保存される。そして、更新履歴１５ａの量が多い場合にはデータ１４ａ全体が再度コピーされ、更新履歴１５ａの量が少ない場合には更新履歴１５ａが情報処理装置２０に送信される。
【００２９】
これにより、仮想マシン１３を移動する際のメモリデータの転送を削減することができ、円滑にライブマイグレーションを行うことができる。例えば、情報処理装置１０で仮想マシン１３が停止した後、情報処理装置２０で仮想マシン１３が稼働開始するまでの間において、情報処理装置１０から情報処理装置２０への転送量が減少する。よって、仮想マシン１３の実質的停止時間が減少する。また、例えば、仮想マシン１３が停止した後の転送量が少なくなるため、早いタイミングで仮想マシン１３を停止させやすくなる。よって、ライブマイグレーションが正常に完了しやすくなる。
【００３０】
［第２の実施の形態］
次に、第２の実施の形態を説明する。
図２は、第２の実施の形態の情報処理システムの例を示す図である。
【００３１】
第２の実施の形態の情報処理システムは、物理マシン１００，１００ａ，１００ｂを含む複数の物理マシンを有する。各物理マシンはネットワーク３０に接続されている。
物理マシン１００，１００ａ，１００ｂは、それぞれ１以上の仮想マシンを動作させることができるサーバコンピュータである。物理マシン１００，１００ａ，１００ｂでは、仮想マシンを管理する管理ソフトウェアとしてハイパーバイザを実行する。ただし、ハイパーバイザに代えて管理ＯＳなど他の種類の管理ソフトウェアを用いてもよい。各物理マシンのハイパーバイザは、当該物理マシンが有するＣＰＵやＲＡＭなどのハードウェアリソースを、当該物理マシン上で動作する仮想マシンに割り当てる。仮想マシンは、割り当てられたハードウェアリソースを用いて、ＯＳやミドルウェアやアプリケーションソフトウェアなどの各種のソフトウェアを実行する。
【００３２】
この情報処理システムの運用中、ある物理マシンから別の物理マシンに仮想マシンを移動させることがある。例えば、複数の仮想マシンが動作する物理マシンにおいてハードウェアリソースが不足している場合、負荷分散のために一部の仮想マシンを他の物理マシンに移動させることがある。また、例えば、ある物理マシンの保守作業を行う場合、その物理マシンを停止させるために全ての仮想マシンを他の物理マシンに移動させることがある。また、例えば、省電力化のために稼働中の物理マシンの数を減らす場合、停止させる物理マシン上の全ての仮想マシンを他の物理マシンに移動させることがある。
【００３３】
図３は、物理マシンのハードウェア例を示すブロック図である。
物理マシン１００は、ＣＰＵ１０１、ＲＡＭ１０２、トランザクションモニタ１０３、更新バッファ管理部１０４、ＨＤＤ（Hard Disk Drive）１０５、画像信号処理部１０６、入力信号処理部１０７、媒体リーダ１０８および通信インタフェース１０９を有する。
【００３４】
ＣＰＵ１０１は、プログラムの命令を実行する演算回路を含むプロセッサである。ＣＰＵ１０１は、ＨＤＤ１０５に記憶されたプログラムやデータの少なくとも一部をＲＡＭ１０２にロードし、プログラムを実行する。なお、ＣＰＵ１０１は複数のプロセッサコアを備えてもよく、物理マシン１００は複数のプロセッサを備えてもよく、以下で説明する処理を複数のプロセッサまたはプロセッサコアを用いて並列に実行してもよい。また、複数のプロセッサの集合を「マルチプロセッサ」または「プロセッサ」と言うことがある。
【００３５】
ＲＡＭ１０２は、ＣＰＵ１０１が実行するプログラムやＣＰＵ１０１が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。ＲＡＭ１０２の記憶領域は、「ページ」と呼ばれる固定長の小領域に細分化されて管理される。なお、物理マシン１００は、ＲＡＭ以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
【００３６】
トランザクションモニタ１０３は、ＣＰＵ１０１からＲＡＭ１０２へのアクセスを監視するハードウェアモジュールである。トランザクションモニタ１０３は、例えば、ＣＰＵ１０１とＲＡＭ１０２との間のメモリバスに接続されている。物理マシン１００が複数のプロセッサを有しており、これら複数のプロセッサが共有メモリ方式によってＲＡＭ１０２にアクセスし得る場合、複数のプロセッサからのアクセスが監視される。
【００３７】
後述するように、トランザクションモニタ１０３は、所定の条件が満たされたときにＲＡＭ１０２の一部のページへの書き込みを監視する。監視対象のページへの書き込みが検出されると、トランザクションモニタ１０３は、ＲＡＭ１０２に用意された更新バッファに書き込み内容を示す更新履歴を保存する。書き込みを監視するにあたり、トランザクションモニタ１０３は、仮想メモリアドレスと物理メモリアドレスの変換に用いるＴＬＢ（Translation Lookaside Buffer）テーブルを参照する。ＴＬＢテーブルは、例えば、ＣＰＵ１０１によって生成され、ＣＰＵ１０１内のメモリ管理ユニットまたはＣＰＵ１０１外部のユニット（トランザクションモニタ１０３でもよい）に保存されている。ＲＡＭ１０２上にＴＬＢテーブルを生成し、その一部をＣＰＵ１０１などに読み込んでもよい。
【００３８】
更新バッファ管理部１０４は、ＲＡＭ１０２に用意された更新バッファを監視するハードウェアモジュールである。後述するように、更新バッファ管理部１０４は、更新バッファに記憶された更新履歴の量が閾値を超えると、ＴＬＢテーブルを書き換えることがある。また、更新バッファ管理部１０４は、更新バッファに記憶された更新履歴の量が閾値を超えると、ＣＰＵ１０１に対して割り込み信号を発行することがある。
【００３９】
なお、トランザクションモニタ１０３と更新バッファ管理部１０４とを合わせて１つのハードウェアモジュールとしてもよい。また、ＲＡＭ１０２の記憶領域の一部を更新バッファとして使用する代わりに、物理マシン１００にＲＡＭ１０２とは別の専用バッファメモリを搭載し当該専用バッファメモリを更新バッファとして使用してもよい。その場合、専用バッファメモリの中に更新バッファ管理部１０４を組み込むようにしてもよい。
【００４０】
ＨＤＤ１０５は、ＯＳやミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性の記憶装置である。プログラムには、物理マシン間で仮想マシンを移動させるためのマイグレーションプログラムが含まれる。なお、物理マシン１００は、フラッシュメモリやＳＳＤ（Solid State Drive）などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
【００４１】
画像信号処理部１０６は、ＣＰＵ１０１からの命令に従って、物理マシン１００に接続されたディスプレイ１１１に画像を出力する。ディスプレイ１１１としては、ＣＲＴ（Cathode Ray Tube）ディスプレイ、液晶ディスプレイ（ＬＣＤ：Liquid Crystal Display）、プラズマディスプレイ、有機ＥＬ（ＯＥＬ：Organic Electro-Luminescence）ディスプレイなどの各種ディスプレイを用いることができる。
【００４２】
入力信号処理部１０７は、物理マシン１００に接続された入力デバイス１１２から入力信号を取得し、ＣＰＵ１０１に出力する。入力デバイス１１２としては、マウスやタッチパネルやタッチパッドやトラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、物理マシン１００に複数種類の入力デバイスが接続されていてもよい。
【００４３】
媒体リーダ１０８は、記録媒体１１３に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体１１３として、例えば、磁気ディスク、光ディスク、光磁気ディスク（ＭＯ：Magneto-Optical disk）、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク（ＦＤ：Flexible Disk）やＨＤＤが含まれる。光ディスクには、ＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disc）が含まれる。
【００４４】
媒体リーダ１０８は、例えば、記録媒体１１３から読み取ったプログラムやデータを、ＲＡＭ１０２やＨＤＤ１０５などの他の記録媒体にコピーする。読み取られたプログラムは、例えば、ＣＰＵ１０１によって実行される。なお、記録媒体１１３は可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体１１３やＨＤＤ１０５などを、コンピュータ読み取り可能な記録媒体と言うことがある。
【００４５】
通信インタフェース１０９は、ネットワーク３０に接続され、ネットワーク３０を介して他のコンピュータと通信を行うインタフェースである。通信インタフェース１０９は、例えば、スイッチなどの通信装置とケーブルで接続される有線通信インタフェースである。ただし、基地局と無線リンクで接続される無線通信インタフェースであってもよい。
【００４６】
図４は、仮想マシンの配置例を示すブロック図である。
物理マシン１００は、ハイパーバイザ１２１を有する。物理マシン１００には、仮想マシン１２３，１２４が配置されている。ハイパーバイザ１２１は、物理マシン１００が有するＣＰＵ１０１の処理時間やＲＡＭ１０２の記憶領域などのハードウェアリソースを仮想マシン１２３，１２４に割り当てる。仮想マシン１２３では、アプリケーション１２５やＯＳ１２６が実行される。アプリケーション１２５は、アプリケーションプログラムから起動されたプロセスである。ＯＳ１２６は、ハイパーバイザ１２１から割り当てられたハードウェアリソースを管理し、割り当てられたハードウェアリソースを用いてアプリケーション１２５を実行させる。仮想マシン１２４も、ハイパーバイザ１２１から割り当てられたハードウェアリソースを用いてアプリケーションを実行する。
【００４７】
同様に、物理マシン１００ａは、ハイパーバイザ１２１ａを有する。物理マシン１００ａには、仮想マシン１２３ａ，１２４ａが配置されている。ハイパーバイザ１２１ａは、物理マシン１００ａが有するハードウェアリソースを仮想マシン１２３ａ，１２４ａに割り当てる。仮想マシン１２３ａ，１２４ａはそれぞれ、ハイパーバイザ１２１ａから割り当てられたハードウェアリソースを用いてアプリケーションを実行する。
【００４８】
物理マシン１００と物理マシン１００ａとの間では、仮想マシンを移動させることができる。例えば、物理マシン１００から物理マシン１００ａに仮想マシン１２３を移動させることができる。ハイパーバイザ１２１は、マイグレーション制御部１２２を有する。ハイパーバイザ１２１ａは、マイグレーション制御部１２２ａを有する。マイグレーション制御部１２２，１２２ａは、仮想マシンの移動を制御する。マイグレーション制御部１２２，１２２ａは、ＯＳやアプリケーションをシャットダウンせずに仮想マシンを移動させることができるライブマイグレーションを実装している。
【００４９】
次に、物理マシン間の仮想マシンの移動について説明する。ここでは、物理マシン１００から物理マシン１００ａに仮想マシン１２３を移動させる場合を考える。
図５は、プレコピー方式の第１のマイグレーション例を示す図である。
【００５０】
プレコピー方式のライブマイグレーションは、ｐｒｅ−ｃｏｐｙフェーズとｓｔｏｐ−ｃｏｐｙ＆ｍｏｖｅフェーズを含む。ｐｒｅ−ｃｏｐｙフェーズでは、仮想マシンを停止させないまま、移動元の物理マシンにおけるメモリ上のページのデータを移動先の物理マシンにコピーする。仮想マシンは停止していないため、仮想マシンに割り当てられている全てのページのデータを１回コピーし終えるまでに、１以上のページが更新によってダーティページになることがある。その場合、少なくとも一部のダーティページのデータを移動先の物理マシンに再度コピーすることがある。ダーティページ数が閾値以下になると、ｓｔｏｐ−ｃｏｐｙ＆ｍｏｖｅフェーズに移行する。
【００５１】
ｓｔｏｐ−ｃｏｐｙ＆ｍｏｖｅフェーズでは、移動元の物理マシンにおいて仮想マシンを停止させる。そして、残りのダーティページのデータを移動先の物理マシンにコピーする。また、仮想マシンの現在の状態を示すＣＰＵコンテキストを、移動元の物理マシンから移動先の物理マシンにコピーする。ＣＰＵコンテキストには、プログラムカウンタなどＣＰＵ１０１が有するレジスタの値や、ＲＡＭ１０２に一時的に退避されているレジスタの値などが含まれる。移動先の物理マシンは、コピーされたページデータおよびＣＰＵコンテキストに基づいて、仮想マシンの情報処理を途中から再開する。
【００５２】
以下に説明する第１の方法では、ページデータのコピーはページ単位で行われる。すなわち、ページの中の一部のデータが書き換えられると当該ページがダーティページと判断され、当該ページに含まれるデータ全体が再度コピーされることになる。
【００５３】
一例として、物理マシン１００は、ページ１５２〜１５４を含む複数のページを仮想マシン１２３に割り当てている。また、物理マシン１００は、仮想マシン１２３に関するＣＰＵコンテキスト１５１を有する。ライブマイグレーションが開始されると、移動先の物理マシン１００ａは、ページ１５２ａ〜１５４ａを含む複数のページを仮想マシン１２３に割り当てる。ページ１５２ａはページ１５２に対応し、ページ１５３ａはページ１５３に対応し、ページ１５４ａはページ１５４に対応する。物理マシン１００は、仮想マシン１２３が使用する全てのページのデータを物理マシン１００ａに送信する。ページ１５２のデータはページ１５２ａに書き込まれ、ページ１５３のデータはページ１５３ａに書き込まれ、ページ１５４のデータはページ１５４ａに書き込まれる。
【００５４】
物理マシン１００が全てのページのデータを送信し終えるまでに、仮想マシン１２３によってページ１５２，１５３が更新される。すると、ページ１５２，１５３がダーティページと判断される。ダーティページ数が閾値より大きい場合、物理マシン１００は、更新されたページ１５２，１５３のデータ全体を物理マシン１００ａに送信する。ページ１５２のデータはページ１５２ａに上書きされ、ページ１５３のデータはページ１５３ａに上書きされる。また、この間に仮想マシン１２３によってページ１５４が更新される。すると、ページ１５４が新たにダーティページになったと判断される。ダーティページ数が閾値より多い間、上記のダーティページの再送が繰り返される。
【００５５】
図６は、プレコピー方式の第１のマイグレーション例を示す図（続き）である。
ダーティページ数が閾値以下になった場合、物理マシン１００は、仮想マシン１２３に割り当てるＣＰＵ処理時間をゼロにするなどの方法によって仮想マシン１２３を強制停止させる。物理マシン１００は、残っているダーティページとしてページ１５４のデータ全体を物理マシン１００ａに送信する。ページ１５４のデータはページ１５４ａに上書きされる。また、物理マシン１００は、仮想マシン１２３を停止させた時点におけるＣＰＵコンテキスト１５１を物理マシン１００ａに送信する。物理マシン１００ａは、例えば、仮想マシン１２３の再開時にＣＰＵがＣＰＵコンテキスト１５１を読み込むように、ＲＡＭの中の適切な位置にＣＰＵコンテキスト１５１を保存する。
【００５６】
物理マシン１００は、仮想マシン１２３に割り当てたハードウェアリソースを解放する。これにより、ページ１５２〜１５４が解放され、ページ１５２〜１５４のデータが物理マシン１００から消去される。物理マシン１００ａは、コピーされたＣＰＵコンテキスト１５１およびページ１５２ａ〜１５４ａのデータを用いて、物理マシン１００が停止した時点から仮想マシン１２３の情報処理を再開する。
【００５７】
しかし、上記のライブマイグレーション方法では、仮想マシン１２３がＲＡＭ１０２に高頻度で書き込みを行っていると、ライブマイグレーションを効率的に行うことが難しい場合がある。特に、１回の書き込みサイズは小さいものの、多数のページに分散して書き込みが行われていると、ライブマイグレーションが効率的に行われない。
【００５８】
例えば、仮想マシン１２３が多数のページに分散して書き込みを行うと、ｐｒｅ−ｃｏｐｙフェーズにおいてダーティページの発生頻度が高くなり、ダーティページ数が減少しない。ダーティページ数が閾値以下になるまでｐｒｅ−ｃｏｐｙを繰り返す場合、いつまで待ってもｓｔｏｐ−ｃｏｐｙ＆ｍｏｖｅフェーズに移行せず、ライブマイグレーションが終了しない可能性がある。また、ライブマイグレーションを開始してから所定時間経過してもライブマイグレーションが完了しないと、タイムアウトエラーによってライブマイグレーションが失敗したとみなされる可能性がある。
【００５９】
また、所定時間待ってもｐｒｅ−ｃｏｐｙフェーズが終わらない場合、物理マシン１００は、強制的にｐｒｅ−ｃｏｐｙフェーズを打ち切ってｓｔｏｐ−ｃｏｐｙ＆ｍｏｖｅフェーズを開始することも考えられる。その場合、ダーティページが多いためｓｔｏｐ−ｃｏｐｙ＆ｍｏｖｅフェーズにおけるページデータの送信に長時間を要し、仮想マシン１２３の実質的停止時間が長くなる可能性がある。また、ダーティページの発生頻度が高い場合、物理マシン１００は、仮想マシン１２３に割り当てるＣＰＵ処理時間を減少させてダーティページの発生頻度を強制的に下げることも考えられる。その場合、移動直前の仮想マシン１２３のパフォーマンスが低下する可能性がある。
【００６０】
また、プレコピー方式に代えてポストコピー方式を採用することも考えられる。ポストコピー方式では、ページデータをコピーせずに、先にＣＰＵコンテキスト１５１を移動先の物理マシン１００ａにコピーして物理マシン１００ａで仮想マシン１２３を実行させる。仮想マシン１２３が未コピーのページにアクセスしようとすると、ページフォールトを発生させて物理マシン１００からページデータを取得する。このようなポストコピー方式では、移動直後の仮想マシン１２３のパフォーマンスが低下する可能性がある。
【００６１】
以上を踏まえて、第２の実施の形態では、物理マシン１００，１００ａは、以下に説明する第２の方法によってプレコピー方式のライブマイグレーションを行う。
図７は、プレコピー方式の第２のマイグレーション例を示す図である。
【００６２】
第２の方法では、物理マシン１００は、仮想マシン１２３に割り当てられた複数のページに対応付けて、ＲＡＭ１０２に複数の更新バッファを確保する。物理マシン１００は、あるページの中の一部のデータが書き換えられたとき、その更新内容を示す差分レコードを当該ページに対応する更新バッファに保存しておく。
【００６３】
物理マシン１００は、更新量が少ないページ、すなわち、対応する更新バッファに格納された差分レコードが少ないページを、ダーティページでないとみなす。物理マシン１００は、ダーティページでないとみなしたページについては、当該ページのデータ全体を物理マシン１００ａに再送しなくてよい。物理マシン１００は、更新バッファに格納された差分レコードが多くなった時点で、当該ページがダーティページになったと判断し、当該ページのデータ全体を物理マシン１００ａに再送すればよい。ｓｔｏｐ−ｃｏｐｙ＆ｍｏｖｅフェーズでは、物理マシン１００は、ダーティページでないとみなしたページについて当該ページのデータ全体に代えて差分レコードを物理マシン１００ａに送信する。
【００６４】
一例として、物理マシン１００は、ページ１５２〜１５４を含む複数のページを仮想マシン１２３に割り当てている。また、物理マシン１００は、仮想マシン１２３に関するＣＰＵコンテキスト１５１を有する。前述の第１の方法と同様、物理マシン１００は、仮想マシン１２３が使用する全てのページのデータを物理マシン１００ａに送信する。ページ１５２のデータはページ１５２ａに書き込まれ、ページ１５３のデータはページ１５３ａに書き込まれ、ページ１５４のデータはページ１５４ａに書き込まれる。
【００６５】
また、物理マシン１００は、ページ１５２に対応付けて更新バッファ１５５を用意し、ページ１５３に対応付けて更新バッファ１５６を用意し、ページ１５４に対応付けて更新バッファ１５７を用意する。物理マシン１００が全てのページのデータを１回送信し終えるまでに、仮想マシン１２３によってページ１５２〜１５４が更新される。すると、物理マシン１００は、更新バッファ１５５〜１５７に差分レコードを保存する。
【００６６】
更新バッファ１５５にはページ１５２への書き込みを示す差分レコードが保存される。更新バッファ１５６にはページ１５３への書き込みを示す差分レコードが保存される。更新バッファ１５７にはページ１５４への書き込みを示す差分レコードが保存される。しかし、ページ１５２〜１５４が１回更新されただけでは、物理マシン１００は、すぐにはページ１５２〜１５４をダーティページと判断しない。よって、物理マシン１００は、ページ１５２〜１５４のデータ全体を物理マシン１００ａに送信しなくてよい。
【００６７】
ページ１５３への書き込みが多数回発生すると、更新バッファ１５６に保存された差分レコードの量が閾値を超える。すると、物理マシン１００は、ページ１５３をダーティページと判断する。このようにして判断されたダーティページの数が閾値より大きい場合、物理マシン１００は、ページ１５３のデータ全体を物理マシン１００ａに送信し、ページ１５３に対応する更新バッファ１５６から差分レコードを削除する。ダーティページ数が閾値より多い間、上記のダーティページの再送が繰り返される。
【００６８】
図８は、プレコピー方式の第２のマイグレーション例を示す図（続き）である。
ダーティページ数が閾値以下になった場合、物理マシン１００は仮想マシン１２３を強制停止させる。物理マシン１００は、差分レコードの量が閾値を超えているダーティページが残っている場合、ダーティページのデータ全体を物理マシン１００ａに送信する。一方、物理マシン１００は、それ以外のページについて、当該ページに対応する更新バッファに保存されている差分レコードを物理マシン１００ａに送信する。更新バッファ１５５，１５７には差分レコードが保存されているため、物理マシン１００は、更新バッファ１５５，１５７の差分レコードを物理マシン１００ａに送信する。
【００６９】
物理マシン１００ａは、物理マシン１００から受信した差分レコードに基づいてページデータを更新する。更新バッファ１５５に保存されていた差分レコードに基づいてページ１５２ａのデータが更新され、更新バッファ１５７に保存されていた差分レコードに基づいてページ１５４ａのデータが更新される。また、物理マシン１００は、ＣＰＵコンテキスト１５１を物理マシン１００ａに送信する。前述の第１の方法と同様に、物理マシン１００は、仮想マシン１２３に割り当てたハードウェアリソースを解放する。物理マシン１００ａは、コピーされたＣＰＵコンテキスト１５１およびページ１５２ａ〜１５４ａのデータを用いて、仮想マシン１２３の情報処理を再開する。
【００７０】
上記の第２の方法では、ページの一部分のみ書き換えられたときに当該ページのデータ全体を再送しなくてよいため、物理マシン１００から物理マシン１００ａに送信するデータが削減される。また、更新が少ないページはダーティページでないとみなされるため、ｐｒｅ−ｃｏｐｙフェーズからｓｔｏｐ−ｃｏｐｙ＆ｍｏｖｅフェーズに移行しやすくなる。よって、ライブマイグレーションを迅速に完了させることができる。
【００７１】
図９は、更新履歴のフォーマット例を示す図である。
更新バッファ１５５〜１５７に保存される差分レコードのフォーマットとして、フォーマット１６１〜１６４などの幾つかのフォーマットが考えられる。
【００７２】
フォーマット１６１では、１回の書き込みに対応する差分レコードはページオフセットと書き込みサイズと書き込み値を含む。ページオフセットは、ページの先頭から書き込みが行われた場所の先頭までの距離を示す相対アドレスである。書き込みサイズは、書き込み値の長さを示すバイト数である。書き込み値は、書き込まれたビット列である。
【００７３】
フォーマット１６２では、差分レコードはページオフセットと書き込み値を含み、書き込みサイズが省略されている。書き込みサイズが省略されている場合、書き込み値は所定のバイト数に固定されている。例えば、書き込みサイズは、６４バイトなどキャッシュメモリのキャッシュラインサイズに固定される。実際の書き込み量が所定のバイト数に満たない場合、不足部分には更新していない後続のビット列が補完される。実際の書き込み量が所定のバイト数を超える場合、差分レコードが分割される。差分レコードを送信する際に、書き込みサイズを差分レコードに挿入してもよい。
【００７４】
フォーマット１６３では、差分レコードはページオフセットと書き込みサイズを含み、書き込み値が省略されている。書き込み値が省略されている場合、差分レコードを送信する際に、ページオフセットおよび書き込みサイズによって特定されるビット列がページから読み出され、書き込み値として差分レコードに挿入される。
【００７５】
フォーマット１６４では、差分レコードはページオフセットを含み、書き込みサイズと書き込み値が省略されている。省略された書き込みサイズは、フォーマット１６２と同様に取り扱う。省略された書き込み値は、フォーマット１６３と同様に取り扱う。すなわち、差分レコードを送信する際に、ページオフセットおよび所定のバイト数によって特定されるビット列がページから読み出され、書き込み値として差分レコードに挿入される。このとき、更に書き込みサイズを差分レコードに挿入してもよい。
【００７６】
前述のように、差分レコードは、トランザクションモニタ１０３によって生成されてＲＡＭ１０２上の更新バッファに保存される。また、更新バッファに保存された差分レコードの量が閾値を超えたことは、更新バッファ管理部１０４によって検出される。第２の実施の形態では、仮想メモリアドレスと物理メモリアドレスを対応付けたＴＬＢテーブルを拡張して、トランザクションモニタ１０３および更新バッファ管理部１０４を制御する。
【００７７】
図１０は、ＴＬＢテーブルの例を示す図である。
ＴＬＢテーブル１４４は、物理ページ番号、書き込み禁止フラグ、モニタフラグ、フルフラグ、バッファアドレス、バッファモードおよびバッファサイズの項目を有する。ＴＬＢテーブル１４４では、仮想メモリアドレスに含まれる仮想ページ番号から、当該仮想メモリアドレスが示すページに関する情報にアクセスすることができる。
【００７８】
物理ページ番号は、ページを識別する識別番号であり、物理メモリアドレスの一部を構成する。書き込み禁止フラグは、ページへの書き込みの排他制御に用いるフラグである。書き込み禁止フラグが「０（ＯＦＦ）」であることは書き込みが禁止されていないことを示し、書き込み禁止フラグが「１（ＯＮ）」であることは書き込みが禁止されていることを示す。書き込み禁止フラグがＯＮである場合、書き込みを行おうとする他のプロセスは書き込み禁止フラグがＯＦＦになるまで待機することになる。
【００７９】
モニタフラグは、書き込みが発生したときに差分レコードを生成するか否かを示すフラグである。モニタフラグが「０（ＯＦＦ）」であることは差分レコードを生成しなくてよいことを示し、モニタフラグが「１（ＯＮ）」であることは差分レコードを生成することを示す。モニタフラグは、マイグレーション制御部１２２，１２２ａによって書き換えられる。フルフラグは、更新バッファに保存されている差分レコードの量が閾値を超えたか否かを示すフラグである。フルフラグが「０（ＯＦＦ）」であることは差分レコードの量が閾値を超えていないことを示し、フルフラグが「１（ＯＮ）」であることは差分レコードの量が閾値を超えていることを示す。フルフラグは、更新バッファ管理部１０４やマイグレーション制御部１２２，１２２ａによって書き換えられる。
【００８０】
バッファアドレスは、更新バッファとして確保されたメモリ領域の先頭を示す物理メモリアドレスである。バッファモードは、更新バッファに保存される差分レコードのフォーマットを示す。フォーマットは、例えば、前述のフォーマット１６１〜１６４の中から選択される。バッファサイズは、更新バッファの大きさを示す。なお、第２の実施の形態では、バッファモードおよびバッファサイズは固定である。よって、バッファモードおよびバッファサイズの項目をＴＬＢテーブル１４４から省略してもよい。
【００８１】
次に、物理マシン１００の機能について説明する。
図１１は、物理マシンの機能例を示すブロック図である。
マイグレーション制御部１２２は、全体制御部１３１、ページ状態管理部１３２、転送制御部１３３、ページ読み出し部１３４、ページ書き込み部１３５、コンテキスト移動部１３６、バッファフル検出部１３７、差分読み出し部１３８および差分書き込み部１３９を有する。マイグレーション制御部１２２は、例えば、ＣＰＵ１０１が実行するプログラムモジュールを用いて実装される。また、物理マシン１００は、ページ領域１４１、更新バッファ領域１４２およびＴＬＢテーブル記憶部１４３を有する。ページ領域１４１および更新バッファ領域１４２は、ＲＡＭ１０２に確保された記憶領域である。ＴＬＢテーブル記憶部１４３は、ＲＡＭ１０２に確保された記憶領域でもよいし、ＣＰＵ１０１の内部または外部に存在するキャッシュメモリでもよい。
【００８２】
全体制御部１３１は、マイグレーション制御部１２２内の他のユニットに指示して、ライブマイグレーション全体を制御する。ページ状態管理部１３２は、仮想マシンに割り当てられた各ページの状態を管理する。ページ状態には、ライブマイグレーションを開始してから１回もデータを送信していない転送前状態と、現在データを送信している転送中状態とが含まれる。また、ページ状態には、１回以上データを送信しており現在ダーティページと判断されていない転送後クリーン状態と、１回以上データを送信しており現在ダーティページと判断されている転送後ダーティ状態とが含まれる。ページ状態管理部１３２は、適宜、ＴＬＢテーブル１４４の各種フラグを書き換える。
【００８３】
転送制御部１３３は、他の物理マシンとの間の通信を制御する。転送制御部１３３は、ページ読み出し部１３４からページデータを取得すると、移動先の物理マシンにページデータを送信する。また、転送制御部１３３は、移動元の物理マシンからページデータを受信すると、受信したページデータをページ書き込み部１３５に出力する。また、転送制御部１３３は、差分読み出し部１３８から差分レコードを取得すると、移動先の物理マシンに差分レコードを送信する。また、転送制御部１３３は、移動元の物理マシンから差分レコードを受信すると、受信した差分レコードを差分書き込み部１３９に出力する。
【００８４】
また、転送制御部１３３は、コンテキスト移動部１３６からＣＰＵコンテキストを取得すると、移動先の物理マシンにＣＰＵコンテキストを送信する。また、転送制御部１３３は、移動元の物理マシンからＣＰＵコンテキストを受信すると、受信したＣＰＵコンテキストをコンテキスト移動部１３６に出力する。
【００８５】
ページ読み出し部１３４は、全体制御部１３１から指定されたページのデータ全体をＲＡＭ１０２から読み出し、転送制御部１３３に出力する。ページ書き込み部１３５は、転送制御部１３３から取得したページデータをＲＡＭ１０２に書き込む。
【００８６】
コンテキスト移動部１３６は、ＣＰＵコンテキストの移動を制御する。コンテキスト移動部１３６は、全体制御部１３１からの指示に応じて、移動する仮想マシンに関するＣＰＵコンテキストを収集して転送制御部１３３に出力する。このとき、例えば、全体制御部１３１は、ＣＰＵ１０１のレジスタ値をＲＡＭ１０２に退避させ、既にＲＡＭ１０２に退避されている情報と合わせてＣＰＵコンテキストを形成する。また、コンテキスト移動部１３６は、転送制御部１３３からＣＰＵコンテキストを取得すると、ＣＰＵ１０１に読み込まれるようにＲＡＭ１０２の適切な位置にＣＰＵコンテキストを書き込む。
【００８７】
バッファフル検出部１３７は、全体制御部１３１からの指示に応じてＴＬＢテーブル１４４に含まれるフルフラグを確認する。バッファフル検出部１３７は、フルフラグがＯＮになっているページ、すなわち、差分レコードの量が閾値を超えている更新バッファに対応するページを検出し、検出したページを全体制御部１３１に通知する。
【００８８】
差分読み出し部１３８は、全体制御部１３１から指定されたページに対応する更新バッファから差分レコードを読み出し、差分レコードを転送制御部１３３に出力する。このとき、差分読み出し部１３８は、読み出した差分レコードに書き込み値が含まれていない場合、ページから書き込み値に相当するデータを読み出して差分レコードに挿入する。差分読み出し部１３８は、読み出した差分レコードに書き込みサイズが含まれていない場合、所定のバイト数を書き込みサイズとして差分レコードに挿入してもよい。
【００８９】
差分書き込み部１３９は、転送制御部１３３から取得した差分レコードに従って、ページのデータの一部分を更新する。すなわち、差分書き込み部１３９は、差分レコードに含まれるページオフセットおよび書き込みサイズによって特定される場所に、差分レコードに含まれる書き込み値を上書きする。差分レコードに書き込みサイズが含まれていない場合、差分書き込み部１３９は、書き込みサイズが所定のバイト数であるとみなす。
【００９０】
ページ領域１４１は、仮想マシンに割り当てられた複数のページを含む。更新バッファ領域１４２は、ページ領域１４１に含まれる複数のページに対応する複数の更新バッファを含む。更新バッファは、ライブマイグレーションの際に動的に確保される。ＴＬＢテーブル記憶部１４３は、前述のＴＬＢテーブル１４４を記憶する。トランザクションモニタ１０３は、ＴＬＢテーブル１４４を参照し、更新バッファへの書き込みを行う。更新バッファ管理部１０４は、更新バッファを監視し、ＴＬＢテーブル１４４を更新する。
【００９１】
なお、他の物理マシンも物理マシン１００と同様の機能を有する。
次に、ライブマイグレーションの手順について説明する。
図１２は、移動元処理の手順例を示すフローチャートである。
【００９２】
ここでは、物理マシン１００が移動元であることを想定して説明する。他の物理マシンも物理マシン１００と同様の処理を実行できる。
（Ｓ１０）全体制御部１３１は、移動させる仮想マシンに割り当てられている複数のページを特定する。全体制御部１３１は、特定した複数のページに対応付けて複数の更新バッファをＲＡＭ１０２に確保する。確保された複数の更新バッファそれぞれの場所を示すバッファアドレスが、ＴＬＢテーブル１４４に書き込まれる。また、確保された複数の更新バッファそれぞれのバッファサイズやバッファモードが、ＴＬＢテーブル１４４に書き込まれる。ただし、バッファサイズやバッファモードが固定であれば省略してもよい。
【００９３】
（Ｓ１１）ページ状態管理部１３２は、ＴＬＢテーブル１４４において、ステップＳ１０で特定された全てのページについてモニタフラグとフルフラグをＯＦＦに設定する。
以下のステップＳ１２〜Ｓ２２はｐｒｅ−ｃｏｐｙフェーズである。
【００９４】
（Ｓ１２）全体制御部１３１は、ステップＳ１０の全てのページを対象ページとする。
（Ｓ１３）全体制御部１３１は、対象ページを１つ選択する。対象ページは、上記のステップＳ１２または後述するステップＳ２１で特定されるものである。
【００９５】
（Ｓ１４）ページ状態管理部１３２は、ＴＬＢテーブル１４４において、ステップＳ１３で選択された対象ページについて書き込み禁止フラグをＯＮに設定する。
（Ｓ１５）ページ読み出し部１３４は、ステップＳ１３で選択された対象ページのデータ全体をページ領域１４１から読み出す。転送制御部１３３は、ページ読み出し部１３４が読み出したデータを、移動先の物理マシン１００ａに送信する。
【００９６】
（Ｓ１６）全体制御部１３１は、ステップＳ１３で選択された対象ページの更新バッファから差分レコードを削除し、当該更新バッファを初期化する。
（Ｓ１７）ページ状態管理部１３２は、ＴＬＢテーブル１４４において、ステップＳ１３で選択された対象ページについてモニタフラグをＯＮに設定する。また、ページ状態管理部１３２は、ＴＬＢテーブル１４４において、ステップＳ１３で選択された対象ページについて書き込み禁止フラグとフルフラグをＯＦＦに設定する。
【００９７】
（Ｓ１８）全体制御部１３１は、ステップＳ１３で全ての対象ページが選択されたか判断する。全ての対象ページが選択された場合はステップＳ１９に処理が進み、未選択の対象ページが存在する場合はステップＳ１３に処理が進む。
【００９８】
（Ｓ１９）バッファフル検出部１３７は、ＴＬＢテーブル１４４からフルフラグがＯＮになっているページを検索し、検索されたページをダーティページと判定する。
（Ｓ２０）全体制御部１３１は、ステップＳ１９で検索されたダーティページの数が所定の閾値以下であるか判断する。ダーティページ数が閾値以下である場合はステップＳ２２に処理が進み、閾値を超える場合はステップＳ２１に処理が進む。
【００９９】
（Ｓ２１）全体制御部１３１は、ステップＳ１９で検索された全てのダーティページを対象ページとする。そして、ステップＳ１３に処理が進む。
図１３は、移動元処理の手順例を示すフローチャート（続き）である。
【０１００】
（Ｓ２２）全体制御部１３１は、ｐｒｅ−ｃｏｐｙフェーズからｓｔｏｐ−ｃｏｐｙ＆ｍｏｖｅフェーズに移行することを決定する。転送制御部１３３は、移動先の物理マシン１００ａにｐｒｅ−ｃｏｐｙ終了通知を送信する。
【０１０１】
以下のステップＳ２３〜３０はｓｔｏｐ−ｃｏｐｙ＆ｍｏｖｅフェーズである。
（Ｓ２３）コンテキスト移動部１３６は、移動させる仮想マシンを停止させる。仮想マシンの停止は、例えば、割り当てるＣＰＵ処理時間をゼロにすることによって行う。この停止は、ＣＰＵコンテキストを維持したままの強制停止であり、ＯＳやアプリケーションのシャットダウン（正常な終了手続き）は行われない。
【０１０２】
（Ｓ２４）バッファフル検出部１３７は、ＴＬＢテーブル１４４からフルフラグがＯＮになっているページを検索し、検索されたページをダーティページと判定する。ただし、バッファフル検出部１３７は、直前のステップＳ１９の検索結果を使うことで、ここではダーティページの検索を省略してもよい。ページ読み出し部１３４は、ダーティページのデータ全体をページ領域１４１から読み出す。転送制御部１３３は、ページ読み出し部１３４が読み出したデータを、移動先の物理マシン１００ａに送信する。
【０１０３】
（Ｓ２５）全体制御部１３１は、移動させる仮想マシンのページのうちダーティページ以外のページについて、更新バッファを１つ選択する。
（Ｓ２６）差分読み出し部１３８は、ステップＳ２５で選択された更新バッファのバッファモード、すなわち、更新バッファに格納される差分レコードのフォーマットが、書き込み値を省略するものであるか判断する。例えば、差分読み出し部１３８は、ＴＬＢテーブル１４４に記載されたバッファモードを確認する。ただし、全ての更新バッファを通じてバッファモードが固定である場合、ＴＬＢテーブル１４４を参照しなくてもよい。差分レコードから書き込み値が省略されている場合はステップＳ２７に処理が進み、書き込み値が省略されていない場合はステップＳ２８に処理が進む。
【０１０４】
（Ｓ２７）差分読み出し部１３８は、ステップＳ２５で選択された更新バッファに記憶されている差分レコードそれぞれに対して書き込み値を補完する。このとき、差分読み出し部１３８は、更新バッファに対応するページの中から、差分レコードのページオフセットと書き込みサイズによって特定される場所のビット列を書き込み値として読み出す。ただし、差分レコードから書き込みサイズが省略されている場合、書き込みサイズは所定バイト数（例えば、キャッシュラインサイズ）であるとみなす。
【０１０５】
（Ｓ２８）転送制御部１３３は、ステップＳ２５で選択された更新バッファの中の全ての差分レコードを、移動先の物理マシン１００ａに送信する。ただし、書き込み値が省略されている場合、転送制御部１３３は、ステップＳ２７で書き込み値が補完された差分レコードを送信する。差分レコードから書き込みサイズが省略されている場合、転送制御部１３３は、書き込みサイズを補完した差分レコードを送信してもよい。
【０１０６】
（Ｓ２９）全体制御部１３１は、ステップＳ２５で全ての更新バッファが選択されたか判断する。全ての更新バッファが選択された場合はステップＳ３０に処理が進み、未選択の更新バッファが存在する場合はステップＳ２５に処理が進む。
【０１０７】
（Ｓ３０）コンテキスト移動部１３６は、移動させる仮想マシンについてプログラムカウンタなどを含むＣＰＵコンテキストを収集する。ＣＰＵコンテキストの一部は、ＣＰＵ１０１のレジスタやキャッシュメモリに記憶されていることがあり、また、ＲＡＭ１０２に退避されていることがある。転送制御部１３３は、コンテキスト移動部１３６が収集したＣＰＵコンテキストを、移動先の物理マシン１００ａに送信する。
【０１０８】
（Ｓ３１）全体制御部１３１は、ステップＳ１０で確保した更新バッファを解放する。
（Ｓ３２）全体制御部１３１は、仮想マシンに割り当てられているＣＰＵ１０１やＲＡＭ１０２などのハードウェアリソースを解放することで、物理マシン１００から当該仮想マシンを削除する。これにより、ライブマイグレーションが完了する。
【０１０９】
図１４は、更新履歴生成の手順例を示すフローチャートである。
（Ｓ４０）トランザクションモニタ１０３は、ＣＰＵ１０１とＲＡＭ１０２との間のメモリバス上においてページへの書き込みを検出する。
【０１１０】
（Ｓ４１）トランザクションモニタ１０３は、ステップＳ４０の書き込み対象のページに対応するモニタフラグをＴＬＢテーブル１４４から検索する。トランザクションモニタ１０３は、検索したモニタフラグがＯＮであるか判断する。モニタフラグがＯＮの場合はステップＳ４２に処理が進み、モニタフラグがＯＦＦの場合は更新履歴生成が終了する。
【０１１１】
（Ｓ４２）トランザクションモニタ１０３は、ステップＳ４０で検出された書き込みについての差分レコードを生成する。このとき、トランザクションモニタ１０３は、書き込みの内容からページオフセットを特定して差分レコードに挿入する。差分レコードが書き込みサイズを含むフォーマットである場合、トランザクションモニタ１０３は、書き込みの内容から書き込みサイズを特定して差分レコードに挿入する。また、差分レコードが書き込み値を含むフォーマットである場合、トランザクションモニタ１０３は、書き込みの内容から書き込み値を特定して差分レコードに挿入する。上記の制御のため、トランザクションモニタ１０３は、ＴＬＢテーブル１４４の中のバッファモードを参照してもよい。
【０１１２】
（Ｓ４３）トランザクションモニタ１０３は、ステップＳ４０の書き込み対象のページに対応する更新バッファをＲＡＭ１０２の中から特定する。このとき、トランザクションモニタ１０３は、ＴＬＢテーブル１４４の中のバッファアドレスやバッファサイズを参照してもよい。そして、トランザクションモニタ１０３は、特定した更新バッファの末尾に、ステップＳ４２で生成された差分レコードを追記する。
【０１１３】
（Ｓ４４）更新バッファ管理部１０４は、ステップＳ４３の更新バッファに記憶されている差分レコードの量（例えば、合計バイト数）が所定の閾値を超えたか判断する。閾値を算出するために、更新バッファ管理部１０４は、ＴＬＢテーブル１４４の中のバッファサイズを参照してもよい。閾値は、例えば、更新バッファのサイズより若干小さい値とする。差分レコード量が閾値を超えた場合はステップＳ４５に処理が進み、差分レコード量が閾値以下である場合は更新履歴生成が終了する。
【０１１４】
（Ｓ４５）更新バッファ管理部１０４は、ＴＬＢテーブル１４４において、ステップＳ４３の更新バッファに対応するページのフルフラグをＯＮに設定する。
図１５は、移動先処理の手順例を示すフローチャートである。
【０１１５】
ここでは、物理マシン１００が移動先であることを想定して説明する。他の物理マシンも物理マシン１００と同様の処理を実行できる。
（Ｓ５０）全体制御部１３１は、受け入れる仮想マシンに対してＣＰＵ１０１やＲＡＭ１０２などのハードウェアリソースを割り当てる。
【０１１６】
（Ｓ５１）転送制御部１３３は、１つのページのデータ全体を受信したか判断する。１つのページのデータ全体は、ｐｒｅ−ｃｏｐｙフェーズとｓｔｏｐ−ｃｏｐｙ＆ｍｏｖｅフェーズの両方で受信され得る。ページのデータ全体を受信した場合はステップＳ５２に処理が進み、それ以外の場合はステップＳ５３に処理が進む。
【０１１７】
（Ｓ５２）ページ書き込み部１３５は、ステップＳ５０で割り当てられたＲＡＭ１０２の記憶領域の中から、受信されたデータが格納されていた移動元のページに対応する移動先のページを特定する。ページ書き込み部１３５は、特定したページに受信されたデータを書き込む。当該ページへの書き込みが２回目以降である場合、データが上書きされる。
【０１１８】
（Ｓ５３）転送制御部１３３は、１つのページについての１以上の差分レコードを受信したか判断する。第２の実施の形態では、差分レコードはｓｔｏｐ−ｃｏｐｙ＆ｍｏｖｅフェーズで受信され得る。差分レコードを受信した場合はステップＳ５４に処理が進み、それ以外の場合はステップＳ５５に処理が進む。なお、第２の実施の形態では、差分レコードはｐｒｅ−ｃｏｐｙフェーズで受信されないため、ｐｒｅ−ｃｏｐｙ終了通知を受信した後に差分レコードの受信判定を開始してもよい。
【０１１９】
（Ｓ５４）差分書き込み部１３９は、ステップＳ５０で割り当てられたＲＡＭ１０２の記憶領域の中から、差分レコードが対象とする移動元のページに対応する移動先のページを特定する。特定したページには、既に１回以上データが書き込まれている。差分書き込み部１３９は、差分レコードそれぞれに基づいて、特定したページのデータの一部分を更新する。すなわち、差分書き込み部１３９は、差分レコードのページオフセットと書き込みサイズに基づいてページ内の場所を特定し、差分レコードに含まれる書き込み値を特定した場所に上書きする。ただし、差分レコードから書き込みサイズが省略されている場合、所定のバイト数（例えば、キャッシュラインサイズ）を書き込みサイズとみなす。
【０１２０】
（Ｓ５５）転送制御部１３３は、ＣＰＵコンテキストを受信したか判断する。ＣＰＵコンテキストは、ｓｔｏｐ−ｃｏｐｙ＆ｍｏｖｅフェーズの最後（ページデータと差分レコードを受信した後）で受信される。ＣＰＵコンテキストを受信した場合はステップＳ５６に処理が進み、それ以外の場合はステップＳ５１に処理が進む。
【０１２１】
（Ｓ５６）コンテキスト移動部１３６は、受け入れる仮想マシンがＣＰＵコンテキストに従って情報処理を再開するように、ＣＰＵコンテキストをＲＡＭ１０２に保存する。すなわち、コンテキスト移動部１３６は、ＣＰＵ１０１がＣＰＵコンテキストに含まれるプログラムカウンタなどのレジスタ値を読み込むようにする。
【０１２２】
（Ｓ５７）全体制御部１３１は、仮想マシンの実行を開始させる。これにより、ステップＳ５６のＣＰＵコンテキストが示す位置からプログラムの実行が再開され、移動元の物理マシン１００ａが停止した位置の直後から情報処理が引き継がれる。
【０１２３】
第２の実施の形態の情報処理システムによれば、プレコピー方式のライブマイグレーションにおいて、ページ内のデータが更新される毎に当該ページに対応する更新バッファに差分レコードが記録される。更新バッファの差分レコードが少ないうちは、当該ページはダーティページでないとみなされ、差分レコードの量が閾値を超えたときに、当該ページがダーティページになったとみなされる。そして、ダーティページでないとみなされたページについては、仮想マシンの停止後にデータ全体に代えて差分レコードが転送される。
【０１２４】
これにより、見かけ上のダーティページ数を減らすことができる。よって、ｐｒｅ−ｃｏｐｙフェーズからｓｔｏｐ−ｃｏｐｙ＆ｍｏｖｅフェーズに迅速に移行できるようになり、ライブマイグレーションが正常に完了する可能性が高くなる。また、ｓｔｏｐ−ｃｏｐｙ＆ｍｏｖｅフェーズの転送データ量が削減される。よって、仮想マシンの実質的停止時間を短縮することができる。また、ｐｒｅ−ｃｏｐｙフェーズにおいてダーティページ数を減らすために仮想マシンのＣＰＵ処理時間の割り当てを減らさなくてもよく、ライブマイグレーション時の仮想マシンの性能低下を軽減できる。また、ポストコピー方式と比べて、仮想マシンが移動した後の性能低下を軽減できる。
【０１２５】
このように、第２の実施の形態によれば、円滑にライブマイグレーションを行うことができる。また、更新バッファに記録する差分レコードから書き込みサイズおよび書き込み値の少なくとも一方を省略することが可能である。これにより、更新バッファのサイズを削減できる。また、更新バッファへの差分レコードの記録や差分レコード量の検出は、ＴＬＢテーブル１４４を利用してハードウェアで実装される。これにより、ライブマイグレーション時のＲＡＭ１０２へのアクセス性能の低下を軽減できる。
【０１２６】
［第３の実施の形態］
次に、第３の実施の形態を説明する。
第３の実施の形態の情報処理システムは、ｐｒｅ−ｃｏｐｙフェーズにおいて、更新バッファの差分レコード量が閾値を超えたことを迅速に検知し、更新バッファが溢れる前にページのデータ全体に代えて差分レコードを送信するようにする。
【０１２７】
第３の実施の形態の情報処理システムは、図２と同様のシステム構成によって実装できる。また、第３の実施の形態の物理マシンは、図３と同様のハードウェア構成および図１１と同様のソフトウェア構成によって実装できる。また、第３の実施の形態の物理マシンは、図１０と同様のＴＬＢテーブルを利用することができる。以下では、図２，３，１０，１１と同様の符号を用いて第３の実施の形態を説明する。
【０１２８】
第３の実施の形態では、更新バッファ管理部１０４は、ある更新バッファの差分レコード量が閾値を超えると、ＴＬＢテーブル１４４のフルフラグをＯＮに設定すると共に、ＣＰＵ１０１に対して割り込み信号を送信する。よって、図１４の更新履歴生成のフローチャートを第３の実施の形態に適用するにあたっては、ステップＳ４５において、更新バッファ管理部１０４がＣＰＵ１０１に対して割り込みを発行する。
【０１２９】
第３の実施の形態においても、図１２，１３の移動元処理のフローチャートが移動元の物理マシンに適用され、図１５の移動先処理のフローチャートが移動先の物理マシンに適用される。第３の実施の形態では更に、移動元の物理マシンにおいて、図１２，１３の移動元処理と並行して以下の差分事前送信が実行される。
【０１３０】
図１６は、差分事前送信の手順例を示すフローチャートである。
（Ｓ６０）バッファフル検出部１３７は、更新バッファ管理部１０４が発行した割り込みを検出する。割り込みは、上記のようにステップＳ４５で発行される。
【０１３１】
（Ｓ６１）バッファフル検出部１３７は、ＴＬＢテーブル１４４からフルフラグがＯＮになっているページを検索し、検索されたページをダーティページとして選択する。
（Ｓ６２）ページ状態管理部１３２は、ＴＬＢテーブル１４４において、ステップＳ６１で選択されたダーティページについて書き込み禁止フラグをＯＮに設定する。
【０１３２】
（Ｓ６３）差分読み出し部１３８は、選択されたダーティページに対応する更新バッファのバッファモードが、書き込み値を省略するものであるか判断する。差分レコードから書き込み値が省略されている場合はステップＳ６４に処理が進み、書き込み値が省略されていない場合はステップＳ６５に処理が進む。
【０１３３】
（Ｓ６４）差分読み出し部１３８は、更新バッファに記憶されている差分レコードそれぞれに対して書き込み値を補完する。このとき、差分読み出し部１３８は、ステップＳ６１で選択されたダーティページの中から、差分レコードのページオフセットと書き込みサイズによって特定される場所のビット列を書き込み値として読み出す。ただし、差分レコードから書き込みサイズが省略されている場合、書き込みサイズは所定バイト数（例えば、キャッシュラインサイズ）であるとみなす。
【０１３４】
（Ｓ６５）転送制御部１３３は、更新バッファの中の全ての差分レコードを、移動先の物理マシン１００ａに送信する。ただし、書き込み値が省略されている場合、転送制御部１３３は、ステップＳ６４で書き込み値が補完された差分レコードを送信する。
【０１３５】
（Ｓ６６）全体制御部１３１は、ステップＳ６１で選択されたダーティページの更新バッファから差分レコードを削除し、当該更新バッファを初期化する。
（Ｓ６７）ページ状態管理部１３２は、ＴＬＢテーブル１４４において、ステップＳ６１で選択されたダーティページの書き込み禁止フラグとフルフラグをＯＦＦに設定する。
【０１３６】
なお、更新バッファ管理部１０４が割り込みを１回発行する毎に選択されるダーティページは１つでもよいし２つ以上でもよい。ｐｒｅ−ｃｏｐｙフェーズにおいて、図１２の処理と図１４の処理とが並行して実行される。ダーティページの発生頻度が高い場合、図１４の処理によってダーティページが減少するものの、ダーティページは完全にはなくならないため、図１２のステップＳ１３〜Ｓ２１の処理が実行されることになる。移動先の物理マシンでは、第２の実施の形態と異なり、図１５のステップＳ５３，Ｓ５４がｐｒｅ−ｃｏｐｙフェーズにおいても実行されることになる。
【０１３７】
第３の実施の形態の情報処理システムによれば、第２の実施の形態と同様の効果が得られる。更に、第３の実施の形態では、更新バッファに記録された差分レコードの量が閾値を超えたことが迅速に検出され、更新バッファから差分レコードが溢れる前に差分レコードが転送される。よって、ダーティページのデータ全体を再度コピーする場合よりもｐｒｅ−ｃｏｐｙフェーズの転送データ量を削減できる。
【０１３８】
［第４の実施の形態］
次に、第４の実施の形態を説明する。
第４の実施の形態の情報処理システムは、複数の更新バッファそれぞれのバッファモードを動的に変更することで、更新バッファに格納可能な差分レコードの数と差分レコードを送信する際の負荷との間のバランスを図るようにする。
【０１３９】
更新バッファに保存される差分レコードに書き込み値が含まれている場合、差分レコードを送信するときにページ本体にアクセスしなくてよく、差分レコードを送信する負荷が低くなる。ただし、各差分レコードのサイズが大きくなるため、更新バッファに格納可能な差分レコードの数が少なくなりダーティページの発生頻度が高くなる。一方、更新バッファに保存される差分レコードから書き込み値が省略されている場合、差分レコードを送信するときにページ本体にアクセスすることになり、差分レコードを送信する負荷が高くなる。ただし、各差分レコードのサイズが小さくなるため、更新バッファに格納可能な差分レコードの数が多くなりダーティページの発生頻度は低くなる。
【０１４０】
そこで、第４の実施の形態では、最初は各更新バッファのバッファモードを書き込み値を省略しないバッファモード（例えば、図９のフォーマット１６１またはフォーマット１６２）に設定する。そして、ライブマイグレーション中に更新頻度の高いページについては、更新バッファのバッファモードを書き込み値を省略するバッファモード（例えば、図９のフォーマット１６３またはフォーマット１６４）に変更する。これにより、更新頻度の低いページについては差分レコードを送信する負荷が低くなり、更新頻度の高いページについてはダーティページになる頻度を抑制できる。
【０１４１】
第４の実施の形態の情報処理システムは、図２と同様のシステム構成によって実装できる。また、第４の実施の形態の物理マシンは、図３と同様のハードウェア構成および図１１と同様のソフトウェア構成によって実装できる。また、第４の実施の形態の物理マシンは、図１０と同様のＴＬＢテーブルを利用することができる。以下では、図２，３，１０，１１と同様の符号を用いて第４の実施の形態を説明する。
【０１４２】
第４の実施の形態においても、図１２，１３の移動元処理のフローチャートおよび図１４の更新履歴生成のフローチャートが移動元の物理マシンに適用され、図１５の移動先処理のフローチャートが移動先の物理マシンに適用される。ただし、図１２のステップＳ２１からステップＳ１３に戻るときに、以下のステップＳ７０〜Ｓ７４が実行される。
【０１４３】
図１７は、バッファモード変更の手順例を示すフローチャートである。
（Ｓ７０）ページ状態管理部１３２は、前述のステップＳ１９で検索されたダーティページそれぞれについて、ライブマイグレーションを開始してからダーティページになった回数（ダーティ回数）を特定する。ダーティ回数は、更新バッファの差分レコード量が閾値を超えた回数である。なお、ページ状態管理部１３２は、ページ毎にステップＳ１９でダーティページと判定された回数を管理している。
【０１４４】
（Ｓ７１）全体制御部１３１は、ダーティページを１つ選択する。
（Ｓ７２）全体制御部１３１は、ステップＳ７１で選択したダーティページのダーティ回数が所定の閾値を超えたか判断する。ダーティ回数が閾値を超えた場合はステップＳ７３に処理が進み、ダーティ回数が閾値以下である場合はステップＳ７４に処理が進む。
【０１４５】
（Ｓ７３）ページ状態管理部１３２は、ステップＳ７１で選択したダーティページのバッファモードを、書き込み値を省略するバッファモードに変更する。ページ状態管理部１３２は、ＴＬＢテーブル１４４のバッファモードを書き換える。これにより、更新バッファが初期化されて次に書き込まれる差分レコードからフォーマットが変更される。
【０１４６】
（Ｓ７４）全体制御部１３１は、ステップＳ７１で全てのダーティページを選択したか判断する。全てのダーティページを選択した場合、バッファモード変更が終了してステップＳ１３に進む。未選択のダーティページがある場合、ステップＳ７１に処理が進む。
【０１４７】
なお、上記ではページ毎の更新頻度の指標としてダーティ回数を使用しているが、他の指標を使用することもできる。例えば、各ページの書き込み回数をカウントすることができる場合、ステップＳ７０において各ダーティページの書き込み回数が特定される。そして、ステップＳ７２で書き込み回数と所定の閾値とが比較される。
【０１４８】
第４の実施の形態の情報処理システムによれば、第２の実施の形態と同様の効果が得られる。更に、第４の実施の形態では、更新頻度の低いページのバッファモードは書き込み値を省略しないバッファモードに設定され、更新頻度の高いページのバッファモードは書き込み値を省略するバッファモードに設定される。よって、差分レコードを送信する際の負荷とダーティページの発生頻度との間のバランスを図ることができる。
【０１４９】
［第５の実施の形態］
次に、第５の実施の形態を説明する。
第５の実施の形態の情報処理システムは、複数の更新バッファそれぞれのバッファサイズを動的に変更することで、更新バッファとして確保されるメモリ領域の量とダーティページの発生頻度との間のバランスを図るようにする。
【０１５０】
更新バッファのバッファサイズが大きい場合、更新バッファに格納可能な差分レコードの数が多くなりダーティページの発生頻度が低くなる。ただし、更新バッファとして確保されるメモリ領域が多くなってしまう。また、更新頻度が低いページに対応する更新バッファでは使用されない領域が多くなり、メモリ使用効率が低下する。一方、更新バッファのバッファサイズが小さい場合、更新バッファに格納可能な差分レコードの数が少なくなりダーティページの発生頻度が高くなる。ただし、更新バッファとして確保されるメモリ領域は少なく、メモリ使用効率の低下を避けることができる。
【０１５１】
そこで、第５の実施の形態では、最初は各更新バッファのバッファサイズを小さく設定しておく。そして、ライブマイグレーション中に更新頻度の高いページについては、更新バッファのバッファサイズを大きくする。これにより、更新頻度の低いページについては更新バッファとして使用するメモリ領域が少なくてすみ、更新頻度の高いページについてはダーティページになる頻度を抑制できる。
【０１５２】
第５の実施の形態の情報処理システムは、図２と同様のシステム構成によって実装できる。また、第５の実施の形態の物理マシンは、図３と同様のハードウェア構成および図１１と同様のソフトウェア構成によって実装できる。また、第５の実施の形態の物理マシンは、図１０と同様のＴＬＢテーブルを利用することができる。以下では、図２，３，１０，１１と同様の符号を用いて第５の実施の形態を説明する。
【０１５３】
第５の実施の形態においても、図１２，１３の移動元処理のフローチャートおよび図１４の更新履歴生成のフローチャートが移動元の物理マシンに適用され、図１５の移動先処理のフローチャートが移動先の物理マシンに適用される。ただし、図１２のステップＳ２１からステップＳ１３に戻るときに、以下のステップＳ８０〜Ｓ８４が実行される。
【０１５４】
図１８は、バッファサイズ変更の手順例を示すフローチャートである。
（Ｓ８０）ページ状態管理部１３２は、前述のステップＳ１９で検索されたダーティページそれぞれについて、ライブマイグレーションを開始してからダーティページになった回数（ダーティ回数）を特定する。ダーティ回数は、更新バッファの差分レコード量が閾値を超えた回数である。なお、ページ状態管理部１３２は、ページ毎にステップＳ１９でダーティページと判定された回数を管理している。
【０１５５】
（Ｓ８１）全体制御部１３１は、ダーティページを１つ選択する。
（Ｓ８２）全体制御部１３１は、ステップＳ８１で選択したダーティページのダーティ回数が閾値を超えたか判断する。ダーティ回数が閾値を超えた場合はステップＳ８３に処理が進み、ダーティ回数が閾値以下である場合はステップＳ８４に処理が進む。なお、閾値は固定値でもよいし中央値でもよい。ダーティ回数の中央値は、ライブマイグレーションを開始してから１回以上ダーティページになったことのあるページのダーティ回数の中央値である。ただし、中央値に代えて平均値や最頻値などの他の代表値を用いてもよい。
【０１５６】
（Ｓ８３）ページ状態管理部１３２は、ステップＳ７１で選択したダーティページのバッファサイズを拡大する。例えば、バッファサイズを現在の２倍に拡大する。ページ状態管理部１３２は、ＴＬＢテーブル１４４のバッファサイズを書き換える。これにより、更新バッファが一杯になったか次に判定するときに使用される閾値が大きくなる。
【０１５７】
（Ｓ８４）全体制御部１３１は、ステップＳ８１で全てのダーティページを選択したか判断する。全てのダーティページを選択した場合、バッファサイズ変更が終了してステップＳ１３に進む。未選択のダーティページがある場合、ステップＳ８１に処理が進む。
【０１５８】
なお、上記ではページ毎の更新頻度の指標としてダーティ回数を使用しているが、他の指標を使用することもできる。例えば、各ページの書き込み回数をカウントすることができる場合、ステップＳ８０において各ダーティページの書き込み回数が特定される。そして、ステップＳ８２で書き込み回数と閾値とが比較される。
【０１５９】
第５の実施の形態の情報処理システムによれば、第２の実施の形態と同様の効果が得られる。更に、第５の実施の形態では、更新頻度の低いページのバッファサイズは小さく設定され、更新頻度の高いページのバッファサイズは大きく設定される。よって、メモリ領域の使用効率とダーティページの発生頻度との間のバランスを図ることができる。
【符号の説明】
【０１６０】
１０，２０  情報処理装置
１１，２１  メモリ
１２，２２  処理部
１３  仮想マシン
１４  単位領域
１４ａ  データ
１５  バッファ領域
１５ａ  更新履歴
【図１】
2018088134.tif 000003
【図２】
2018088134.tif 000004
【図３】
2018088134.tif 000005
【図４】
2018088134.tif 000006
【図５】
2018088134.tif 000007
【図６】
2018088134.tif 000008
【図７】
2018088134.tif 000009
【図８】
2018088134.tif 000010
【図９】
2018088134.tif 000011
【図１０】
2018088134.tif 000012
【図１１】
2018088134.tif 000013
【図１２】
2018088134.tif 000014
【図１３】
2018088134.tif 000015
【図１４】
2018088134.tif 000016
【図１５】
2018088134.tif 000017
【図１６】
2018088134.tif 000018
【図１７】
2018088134.tif 000019
【図１８】
2018088134.tif 000020