(57)【特許請求の範囲】
【請求項１】
移行元実計算機から移行先実計算機に仮想計算機を移行する際に、仮想計算機内で実行されるプログラムの中から、選択したプログラムのメモリデータを優先して移行先実計算機に送信する仮想計算機移行システムにおいて、
前記移行元実計算機が、
仮想計算機内で実行されているプログラムの実行頻度を監視し、監視した実行頻度に基づいて実行頻度の高いプログラムがより上位となるプログラムリストを作成するプログラム監視手段を備えた仮想データ処理装置と、
仮想計算機の移行時に、前記プログラムリストで上位となっているプログラムから優先して順に仮選択を行い、前記仮選択を行う都度前記仮選択したプログラムのデータサイズと選択済みのプログラムのデータサイズとの合計が予め定めたメモリサイズの範囲内であるか判定し、前記範囲以内の場合は今回前記仮選択したプログラムを新たに前記選択済みのプログラムとし、前記範囲を超えているのであればそれまでに前記選択済みとしたプログラムに関するメモリデータの読込みを行うメモリデータ読込み手段と、
前記メモリデータ読込み手段によって読み込まれたメモリデータを、前記移行先実計算機に送信する第１のメモリデータ送信手段と、を備えるデータ処理装置と、
を備えることを特徴とする仮想計算機移行システム。
【請求項２】
前記データ処理装置が、
前記仮選択したプログラムが使用するメモリデータが置かれているページの参照カウンタが規定値以上か否かを調査し、調査結果を前記メモリデータ読み込み手段に通知する参照カウンタ判定手段を更に備え、
前記メモリデータ読み込み手段は、前記仮選択したプログラムのメモリデータであって、該メモリデータが置かれているページの参照カウンタが規定値以上であると前記調査結果に基づいて判断できるメモリデータを前記判定及び選択の対象とすることを特徴とする請求項１に記載の仮想計算機移行システム。
【請求項３】
前記データ処理装置が、
前記移行先実計算機と通信を行い、該通信に掛かる時間に基づいて前記移行元実計算機と前記移行先実計算機との間のネットワークの実効速度を測定するネットワーク品質判定手段と、
前記ネットワーク品質判定手段で測定したネットワークの実効速度に基づいて、前記予め定めたメモリサイズを決定するデータサイズ決定手段と、
を更に備えることを特徴とする請求項１又は２に記載の仮想計算機移行システム。
【請求項４】
前記プログラム監視手段が、仮想計算機のオペレーティングシステムが提供するプロセス情報を参照することで、プログラムの実行頻度を計測することを特徴とする請求項１乃至３の何れか１項に記載の仮想計算機移行システム。
【請求項５】
前記プログラム監視手段は、
前記仮想計算機内で実行されているプログラムの実行頻度を監視し、実行頻度に基づいて実行頻度の高いプログラムがより上位となるプログラムリストの作成に代えて、前記仮想計算機内で実行されているプログラムをまとめたリストであって実行優先度の高いプログラムがより上位となるプログラムリストを作成することを特徴とする請求項１乃至３の何れか１項に記載の仮想計算機移行システム。
【請求項６】
前記メモリデータ読込み手段は、仮想計算機の移行時に、まず前記仮想計算機を前記移行先実計算機に移行するために必要最低限のメモリデータのサイズを求め、その後前記プログラムリストで上位となっているプログラムから優先して順に仮選択を行い、前記仮選択を行う都度前記仮選択したプログラムのデータサイズと選択済みのプログラムのデータサイズと前記求めたメモリデータのサイズの合計が予め定めたメモリサイズの範囲内であるか判定し、前記範囲以内の場合は今回前記仮選択したプログラムを新たに前記選択済みのプログラムとし、前記範囲を超えているのであればそれまでに前記選択済みとしたプログラムに関するメモリデータの読込みを行うことを特徴とする請求項１乃至５の何れか１項に記載の仮想計算機移行システム。
【請求項７】
前記メモリデータ読込み手段は、
仮想計算機の移行時に、前記プログラムリストで上位となっているプログラムから優先して、予め定めたメモリサイズの範囲内でメモリデータの読込みを行うことに代えて、前記仮想計算機の移行時に、前記プログラムリストで上位となっているプログラムから優先して、予め定めたプログラム数の範囲内でメモリデータの読込みを行うことを特徴とする請求項１乃至５の何れか１項に記載の仮想計算機移行システム。
【請求項８】
前記移行先実計算機が、
前記第１のメモリデータ送信手段によって送信されてきた仮想計算機のメモリデータを受信するメモリデータ受信手段と、
前記メモリデータ受信手段によって受信したメモリデータを、前記移行先実計算機のメモリに書き込むメモリデータ書込み手段と、
を備えることを特徴とする請求項１乃至７の何れか１項に記載の仮想計算機移行システム。
【請求項９】
前記移行先実計算機が、
仮想計算機が参照しようとするメモリデータが前記移行先実計算機内に存在しない場合に、該当するメモリデータを前記移行元実計算機に要求するメモリ要求手段を更に備え、
前記移行元実計算機が、
前記メモリ要求手段からの要求を受け取り、前記該当するメモリデータを前記メモリデータ読込み手段に問い合わせるメモリ要求受信手段と、
前記メモリ要求受信手段における問い合わせに応じて前記メモリデータ読込み手段が読み込んだ前記該当するメモリデータを、前記移行先実計算機に送信する第２の送信手段と、
を更に備えることを特徴とする請求項８記載の仮想計算機移行システム。
【請求項１０】
前記移行元実計算機の前記仮想データ処理装置が、前記データ処理装置に含まれることを特徴とする請求項１乃至９の何れか１項に記載の仮想計算機移行システム。
【請求項１１】
前記移行元実計算機上で１つのオペレーティングシステム環境が実現されており、前記仮想データ処理装置と前記データ処理装置が備えている各手段が前記オペレーティングシステム環境下で動作していることを特徴とする、請求項１０に記載の仮想計算機移行システム。
【請求項１２】
移行元実計算機から移行先実計算機に仮想計算機を移行する際に、仮想計算機内で実行されるプログラムの中から、実行頻度の高いプログラムのメモリデータを優先して移行先実計算機に送信するシステムにおける仮想計算機移行方法であって、
前記移行元実計算機が、仮想計算機内で実行されているプログラムの実行頻度を監視し、監視した実行頻度に基づいて実行頻度の高いプログラムがより上位となるプログラムリストを作成するプログラム監視ステップと、
前記移行元実計算機が、仮想計算機の移行時に、前記プログラムリストで上位となっているプログラムから優先して順に仮選択を行い、前記仮選択を行う都度前記仮選択したプログラムのデータサイズと選択済みのプログラムのデータサイズとの合計が予め定めたメモリサイズの範囲内であるか判定し、前記範囲以内の場合は今回前記仮選択したプログラムを新たに前記選択済みのプログラムとし、前記範囲を超えているのであればそれまでに前記選択済みとしたプログラムに関するメモリデータの読込みを行うメモリデータ読込みステップと、
前記移行元実計算機が、前記メモリデータ読込みステップによって読み込まれたメモリデータを、前記移行先実計算機に送信する第１のメモリデータ送信ステップと、
を備えることを特徴とする仮想計算機移行方法。
【請求項１３】
前記移行元実計算機が、前記仮選択したプログラムが使用するメモリデータが置かれているページの参照カウンタが規定値以上か否かを調査する参照カウンタ判定ステップを更に備え、
前記メモリデータ読み込みステップでは、前記仮選択したプログラムのメモリデータであって、該メモリデータが置かれているページの参照カウンタが規定値以上であると前記調査の調査結果に基づいて判断できるメモリデータを前記判定及び選択の対象とすることを特徴とする請求項１２に記載の仮想計算機移行方法。
【請求項１４】
前記移行元実計算機が、該通信に掛かる時間に基づいて前記移行元実計算機と前記移行先実計算機との間のネットワークの実効速度を測定するネットワーク品質判定ステップと、
前記移行元実計算機が、前記ネットワーク品質判定ステップで測定したネットワークの実効速度に基づいて、前記予め定めたメモリサイズを決定するデータサイズ決定ステップと、
を更に備えることを特徴とする請求項１２又は１３に記載の仮想計算機移行方法。
【請求項１５】
前記プログラム監視ステップでは、仮想計算機のオペレーティングシステムが提供するプロセス情報を参照することで、プログラムの実行頻度を計測することを特徴とする請求項１２乃至１４の何れか１項に記載の仮想計算機移行方法。
【請求項１６】
前記プログラム監視ステップでは、前記仮想計算機内で実行されているプログラムの実行頻度を監視し、実行頻度に基づいて実行頻度の高いプログラムがより上位となるプログラムリストの作成に代えて、前記仮想計算機内で実行されているプログラムをまとめたリストであって実行優先度の高いプログラムがより上位となるプログラムリストを作成することを特徴とする請求項１２乃至１５の何れか１項に記載の仮想計算機移行方法。
【請求項１７】
前記メモリデータ読込みステップでは、仮想計算機の移行時に、まず前記仮想計算機を前記移行先実計算機に移行するために必要最低限のメモリデータのサイズを求め、その後前記プログラムリストで上位となっているプログラムから優先して順に仮選択を行い、前記仮選択を行う都度前記仮選択したプログラムのデータサイズと選択済みのプログラムのデータサイズと前記求めたメモリデータのサイズの合計が予め定めたメモリサイズの範囲内であるか判定し、前記範囲以内の場合は今回前記仮選択したプログラムを新たに前記選択済みのプログラムとし、前記範囲を超えているのであればそれまでに前記選択済みとしたプログラムに関するメモリデータの読込みを行うことを特徴とする請求項１２乃至１６の何れか１項に記載の仮想計算機移行方法。
【請求項１８】
前記メモリデータ読込みステップでは、仮想計算機の移行時に、前記プログラムリストで上位となっているプログラムから優先して、予め定めたメモリサイズの範囲内でメモリデータの読込みを行うことに代えて、前記仮想計算機の移行時に、前記プログラムリストで上位となっているプログラムから優先して、予め定めたプログラム数の範囲内でメモリデータの読込みを行うことを特徴とする請求項１２乃至１６の何れか１項に記載の仮想計算機移行方法。
【請求項１９】
前記移行先実計算機が、前記第１のメモリデータ送信ステップによって送信されてきた仮想計算機のメモリデータを受信するメモリデータ受信ステップと、
前記移行先実計算機が、前記メモリデータ受信ステップによって受信したメモリデータを、前記移行先実計算機のメモリに書き込むメモリデータ書込みステップと、
を備えることを特徴とする請求項１２乃至１８の何れか１項に記載の仮想計算機移行方法。
【請求項２０】
前記移行先実計算機が、仮想計算機が参照しようとするメモリデータが前記移行先実計算機内に存在しない場合に、該当するメモリデータを前記移行元実計算機に要求するメモリ要求ステップと、
前記移行元実計算機が、前記メモリ要求ステップからの要求を受け取り、前記該当するメモリデータを前記メモリデータ読込みステップに問い合わせるメモリ要求受信ステップと、
前記移行元実計算機が、前記メモリ要求受信ステップにおける問い合わせに応じて前記メモリデータ読込みステップが読み込んだ前記該当するメモリデータを、前記移行先実計算機に送信する第２の送信ステップと、
を更に備えることを特徴とする請求項１９に記載の仮想計算機移行方法。
【請求項２１】
前記移行元実計算機上で１つのオペレーティングシステム環境が実現されており、前記仮想データ処理装置と前記データ処理装置が行う各ステップが前記オペレーティングシステム環境下で行われていることを特徴とする、請求項１２乃至２０の何れか１項に記載の仮想計算機移行方法。
【請求項２２】
移行元実計算機から移行先実計算機に仮想計算機を移行する際に、仮想計算機内で実行されるプログラムの中から、選択したプログラムのメモリデータを優先して移行先実計算機に送信する仮想計算機移行システムにおける移行元実計算機に組み込まれる仮想計算機移行プログラムであって、
仮想計算機内で実行されているプログラムの実行頻度を監視し、監視した実行頻度に基づいて実行頻度の高いプログラムがより上位となるプログラムリストを作成するプログラム監視機能と、
仮想計算機の移行時に、前記プログラムリストで上位となっているプログラムから優先して順に仮選択を行い、前記仮選択を行う都度前記仮選択したプログラムのデータサイズと選択済みのプログラムのデータサイズとの合計が予め定めたメモリサイズの範囲内であるか判定し、前記範囲以内の場合は今回前記仮選択したプログラムを新たに前記選択済みのプログラムとし、前記範囲を超えているのであればそれまでに前記選択済みとしたプログラムに関するメモリデータの読込みを行うメモリデータ読込み機能と、
前記メモリデータ読込み機能によって読み込まれたメモリデータを、前記移行先実計算機に送信するメモリデータ送信機能と、
をコンピュータである前記移行元実計算機に実現させることを特徴とする仮想計算機移行プログラム。
【請求項２３】
前記移行元実計算機が、前記仮選択したプログラムが使用するメモリデータが置かれているページの参照カウンタが規定値以上か否かを調査する参照カウンタ判定機能を更に備え、
前記メモリデータ読み込み機能は、前記仮選択したプログラムのメモリデータであって、該メモリデータが置かれているページの参照カウンタが規定値以上であると前記調査の調査結果に基づいて判断できるメモリデータを前記判定及び選択の対象とすることを特徴とする請求項２２に記載の仮想計算機移行プログラム。
【請求項２４】
前記移行元実計算機が、前記移行先実計算機と通信を行い、該通信に掛かる時間に基づいて前記移行元実計算機と前記移行先実計算機との間のネットワークの実効速度を測定するネットワーク品質判定機能と、
前記ネットワーク品質判定機能で測定したネットワークの実効速度に基づいて、前記予め定めたメモリサイズを決定するデータサイズ決定機能と、
を更にコンピュータに実現させることを特徴とする請求項２２又は２３に記載の仮想計算機移行プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はネットワーク接続されている実計算機間で仮想計算機を移行する、仮想計算機移行システム、仮想計算機移行方法および仮想計算機移行プログラムに関する。
【背景技術】
【０００２】
ある実計算機（移行元実計算機）上で実行されている仮想計算機を、別の実計算機（移行先実計算機）上へ移行する場合を考える。この場合、仮想計算機が使用するファイル類は、移行元実計算機からも移行先実計算機からも参照可能なネットワーク上の記憶装置上に置かれることが多い。そのため、仮想計算機が使用するファイル類を移行する必要はない。しかし、仮想計算機が使用しているメモリデータは、移行元実計算機から移行先実計算機に送信する必要がある。【０００３】
このメモリデータの送信に関連した仮想計算機移行システムの一例が、非特許文献１に記載されている。【０００４】
非特許文献１では、仮想計算機ではなく、実計算機上で動作するプログラムの移行方式について記載されているが、同様の手法を仮想計算機の移行方式にも応用できるので、ここに一例として挙げる。【０００５】
具体的にはまず、移行元計算機のＯＳ（Operating System）上で動作するプログラムを、移行先計算機のＯＳ上に移行する時に、該当プログラムのＴＣＢ（Task Control Block）など、プログラムを移行先計算機で実行するために必要最低限のメモリデータを移行先計算機に移行する。そして、該当プログラムのテキスト領域やデータ領域などその他のメモリデータは、該当プログラムが移行先計算機で実行され、そのデータを初めて参照した時に、オンデマンドに移行元計算機から送信することとするという方式である。【０００６】
この方式を用いることにより、プログラムのダウンタイム（移行元でプログラムの処理を停止し、移行先でプログラムの処理を再開するまでに掛かる時間）を短くすることができる。ここで、”プログラム”を”仮想計算機”と置き換えると、この手法が仮想計算機の移行方式として応用することができる。【０００７】
また別の仮想計算機移行システムの一例が、非特許文献２に記載されている。【０００８】
非特許文献２では、仮想計算機を移行する前に、仮想計算機のＯＳ上で、メモリを取得しクリアし続けるプログラムを実行している。このプログラムを実行することにより、仮想計算機のＯＳのディスクキャッシュはフラッシュされ、ＯＳによって使用されるメモリ領域が小さくなる。この後で仮想計算機の移行処理を行うことで、移行先実計算機に送信しなければいけないメモリデータ量を小さく抑えることができる。
【非特許文献１】E. R. Zayas, Attacking the Process Migration Bottleneck, Proceedings of the 11th Symposiumon OperatingSystems Principles, pages13-24, November1987.
【非特許文献２】P. Sapuntzakis, R. Chandra ,B. Pfaff, J. Chow, M.S.Lam, and M. Rosenblum, Optimizing the migration of virtual computers, In Proc of the 5th Symposium on Operating Systems Design and Implementation (OSDI-02),December2002.
【発明の開示】
【発明が解決しようとする課題】
【０００９】
第１の問題点は、非特許文献１に関して、仮想計算機移行後のオンデマンドなメモリデータ送信に、時間が取られすぎていることである。その理由は、仮想計算機移行時に、移行直後参照される可能性が高いメモリデータが送信されておらず、仮想計算機移行後、すぐにオンデマンドなメモリデータ送信が発生する可能性が高いためである。【００１０】
第２の問題点は、非特許文献２に関して、仮想計算機移行時のメモリデータ送信に時間が取られすぎていることである。その理由は、仮想計算機移行後に必要とされる可能性が高いメモリデータ以外も送信しているからである。【００１１】
そこで、本発明は、仮想計算機移行時に、移行直後に参照される可能性が高いメモリデータを、優先的に移行先実計算機に送信することができる仮想計算機移行システム、仮想計算機移行方法および仮想計算機移行用プログラムを提供することを目的とする。【００１２】
また、本発明は、仮想計算機移行直後に参照される可能性が低いメモリデータは、仮想計算機を移行後、移行先実計算機上で実行中に、オンデマンドに移行元実計算機から送信することができる仮想計算機移行システム、仮想計算機移行方法および仮想計算機移行プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１３】
本発明の第１の観点によれば、移行元実計算機から移行先実計算機に仮想計算機を移行する際に、仮想計算機内で実行されるプログラムの中から、選択したプログラムのメモリデータを優先して移行先実計算機に送信する仮想計算機移行システムにおいて、前記移行元実計算機が、仮想計算機内で実行されているプログラムの実行頻度を監視し、監視した実行頻度に基づいて実行頻度の高いプログラムがより上位となるプログラムリストを作成するプログラム監視手段を備えた仮想データ処理装置と、仮想計算機の移行時に、前記プログラムリストで上位となっているプログラムから優先して順に仮選択を行い、前記仮選択を行う都度前記仮選択したプログラムのデータサイズと選択済みのプログラムのデータサイズとの合計が予め定めたメモリサイズの範囲内であるか判定し、前記範囲以内の場合は今回前記仮選択したプログラムを新たに前記選択済みのプログラムとし、前記範囲を超えているのであればそれまでに前記選択済みとしたプログラムに関するメモリデータの読込みを行うメモリデータ読込み手段と、前記メモリデータ読込み手段によって読み込まれたメモリデータを、前記移行先実計算機に送信する第１のメモリデータ送信手段と、を備えるデータ処理装置と、を備えることを特徴とする仮想計算機移行システムが提供される。
【００１４】
更に、本発明の第２の観点によれば、移行元実計算機から移行先実計算機に仮想計算機を移行する際に、仮想計算機内で実行されるプログラムの中から、実行頻度の高いプログラムのメモリデータを優先して移行先実計算機に送信するシステムにおける仮想計算機移行方法であって、前記移行元実計算機が、仮想計算機内で実行されているプログラムの実行頻度を監視し、監視した実行頻度に基づいて実行頻度の高いプログラムがより上位となるプログラムリストを作成するプログラム監視ステップと、前記移行元実計算機が、仮想計算機の移行時に、前記プログラムリストで上位となっているプログラムから優先して順に仮選択を行い、前記仮選択を行う都度前記仮選択したプログラムのデータサイズと選択済みのプログラムのデータサイズとの合計が予め定めたメモリサイズの範囲内であるか判定し、前記範囲以内の場合は今回前記仮選択したプログラムを新たに前記選択済みのプログラムとし、前記範囲を超えているのであればそれまでに前記選択済みとしたプログラムに関するメモリデータの読込みを行うメモリデータ読込みステップと、前記移行元実計算機が、前記メモリデータ読込みステップによって読み込まれたメモリデータを、前記移行先実計算機に送信する第１のメモリデータ送信ステップと、を備えることを特徴とする仮想計算機移行方法が提供される。
【００１５】
更に、本発明の第３の観点によれば、移行元実計算機から移行先実計算機に仮想計算機を移行する際に、仮想計算機内で実行されるプログラムの中から、選択したプログラムのメモリデータを優先して移行先実計算機に送信する仮想計算機移行システムにおける移行元実計算機に組み込まれる仮想計算機移行プログラムであって、仮想計算機内で実行されているプログラムの実行頻度を監視し、監視した実行頻度に基づいて実行頻度の高いプログラムがより上位となるプログラムリストを作成するプログラム監視機能と、仮想計算機の移行時に、前記プログラムリストで上位となっているプログラムから優先して順に仮選択を行い、前記仮選択を行う都度前記仮選択したプログラムのデータサイズと選択済みのプログラムのデータサイズとの合計が予め定めたメモリサイズの範囲内であるか判定し、前記範囲以内の場合は今回前記仮選択したプログラムを新たに前記選択済みのプログラムとし、前記範囲を超えているのであればそれまでに前記選択済みとしたプログラムに関するメモリデータの読込みを行うメモリデータ読込み機能と、前記メモリデータ読込み機能によって読み込まれたメモリデータを、前記移行先実計算機に送信するメモリデータ送信機能と、をコンピュータである前記移行元実計算機に実現させることを特徴とする仮想計算機移行プログラムが提供される。
【発明の効果】
【００１７】
本発明によれば、仮想計算機移行時に、移行直後に参照される可能性が高いメモリデータを、優先的に移行先実計算機に送信することから仮想計算機の移行直後であっても、仮想計算機の実行パフォーマンスが劣化することを防止することが可能となる。
【図面の簡単な説明】
【００１８】
【図１】本発明の第１の実施形態を示すブロック図である。
【図２】本発明の第１の実施形態の動作を示すフローチャート（１／３）である。
【図３】本発明の第１の実施形態の動作を示すフローチャート（２／３）である。
【図４】本発明の第１の実施形態の動作を示すフローチャート（３／３）である。
【図５】本発明の第２の実施形態を示すブロック図である。
【図６】本発明の第２の実施形態の動作を示すフローチャート（１／３）である。
【図７】本発明の第２の実施形態の動作を示すフローチャート（２／３）である。
【図８】本発明の第２の実施形態の動作を示すフローチャート（３／３）である。
【図９】本発明の第３の実施形態を示すブロック図である。
【図１０】本発明の第３の実施形態の動作を示すフローチャート（１／３）である。
【図１１】本発明の第３の実施形態の動作を示すフローチャート（２／３）である。
【図１２】本発明の第３の実施形態の動作を示すフローチャート（３／３）である。
【図１３】本発明の第４の実施形態を示すブロック図である。
【図１４】本発明の第１の実施例を示すブロック図である。
【図１５】本発明の第１の実施例におけるプログラムリストである。
【図１６】本発明の第２の実施例を示すブロック図である。
【図１７】本発明の第２の実施例におけるプログラムリストである。
【図１８】本発明の第２の実施例におけるプログラムが使用するページの参照カウンタである。
【図１９】本発明の第３の実施例を示すブロック図である。
【図２０】本発明の第３の実施例におけるプログラムリストである。
【図２１】本発明の第３の実施例におけるプログラムが使用するページの参照カウンタである。
【符号の説明】
【００１９】
１  移行元実計算機
２  移行先実計算機
１１  仮想データ処理装置Ｘ
１２  データ処理装置Ｘ
１３  通信装置Ｘ
１４  メモリＸ
１５  仮想計算機移行プログラムＸ
１６  仮想計算機移行プログラムＸ’
２１  仮想データ処理装置Ｙ
２２  データ処理装置Ｙ
２３  通信装置Ｙ
２４  メモリＹ
２５  仮想計算機移行プログラムＹ
２６  仮想計算機移行プログラムＹ’
１００  パーソナル・コンピュータＸ
１０１  仮想ＣＰＵ−Ｘ
１０２  ＣＰＵ−Ｘ
１０３  ＳＤＲＡＭ−Ｘ
１０４  イーサネットカードＸ
１１１  仮想計算機内プログラムＸ
１１２  プログラム監視部Ｘ
１２１  メモリデータ読込み部
１２２  メモリ要求受信部
１２３  メモリデータ送信部
１２４  参照カウンタ判定部
１２５  ＮＷ品質判定部
１２６  データサイズ決定部
２００  パーソナル・コンピュータＹ
２０１  仮想ＣＰＵ−Ｙ
２０２  ＣＰＵ−Ｙ
２０３  ＳＤＲＡＭ−Ｙ
２０４  イーサネットカードＹ
２１１  仮想計算機内プログラムＹ
２１２  プログラム監視部Ｙ
２２１  メモリデータ受信部
２２２  メモリデータ書込み部
２２３  メモリ要求送信部
【発明を実施するための最良の形態】
【００２０】
次に、発明を実施するための最良の形態について図面を参照して詳細に説明する。【００２１】
［第１の実施形態］
図１を参照すると、本発明の第１の実施の形態は、移行元実計算機１と移行先実計算機２を有する。【００２２】
移行元実計算機１は、仮想データ処理装置Ｘ１１、データ処理装置Ｘ１２、通信装置Ｘ１３及びメモリＸ１４を有する。【００２３】
メモリＸ１４は、データ処理装置Ｘ１２または仮想データ処理装置Ｘ１１から使用されるメモリであり、移行元実計算機１内で動作するプログラムによって使用される。【００２４】
仮想データ処理装置Ｘ１１は、仮想計算機におけるデータ処理装置であって、仮想計算機内プログラムＸ１１１、プログラム監視部Ｘ１１２を有する。仮想計算機内プログラムＸ１１１は、仮想計算機内で実行されるプログラムであり、実行されているプログラムの数はいくつであっても良い。プログラム監視部Ｘ１１２は、仮想データ処理装置Ｘ１１内で実行されるプログラムの実行状況を監視し、仮想計算機移行の直前において頻繁に実行されているプログラム、もしくは実行優先度が高く設定されているプログラムをまとめたプログラムリストを生成する。【００２５】
データ処理装置Ｘ１２は、移行元実計算機１上で実行される仮想計算機の制御を行うもので、メモリデータ読込み部１２１、メモリ要求受信部１２２及びメモリデータ送信部１２３を有している。【００２６】
メモリデータ読込み部１２１は、プログラム監視部Ｘ１１２からプログラムリストを取得し、各プログラムを実行するために必要なメモリデータや、仮想計算機を移行先実計算機上で実行するために最低限必要なメモリデータを、メモリＸ１４から読み込む。更には後述するメモリ要求受信部１２２からの問い合わせに従い、該当するメモリデータを取得する。【００２７】
メモリ要求受信部１２２は、移行先実計算機２からのメモリデータ要求を受信し、該当するメモリデータをメモリデータ読込み部１２１に問い合わせる。【００２８】
メモリデータ送信部１２３は、メモリデータ読込み部１２１で取得したメモリデータを、通信装置Ｘ１３を介して移行先実計算機２に送信する。【００２９】
なお仮想計算機は仮想データ処理装置Ｘ１１とメモリＸ１４から形成されている。仮想計算機が使用する記憶装置は、図１には記載していないが、移行元実計算機１、移行先実計算機２からアクセス可能なネットワーク上の記憶装置内に置かれている。つまり、仮想計算機がファイルにアクセスする際は、ネットワーク上の記憶装置内に置かれているファイルにアクセスすることになる。また仮想データ処理装置Ｘ１１は、仮想計算機のために割当てられた仮想的なデータ処理装置であって、実体はデータ処理装置Ｘ１２の一部である。【００３０】
一方、移行先実計算機２は、仮想データ処理装置Ｙ２１とデータ処理装置Ｙ２２、通信装置Ｙ２３、メモリＹ２４を有する。【００３１】
仮想データ処理装置Ｙ２１は、仮想計算機内プログラムＹ２１１及びプログラム監視部Ｙ２１２を有している。これら仮想データ処理装置Ｙ２１の構成要素は、仮想計算機の移行によって、移行元実計算機１から移行されるものであり、移行前は移行先実計算機２内に存在しない。すなわち仮想計算機内プログラムＹ２１１は、仮想計算機内プログラムＸ１１１と同一のものであり、プログラム監視部Ｙ２１２は、プログラム監視部Ｘ１１２と同一のものである。また、仮想計算機内プログラムＹ２１１の数は、仮想計算機内プログラムＸ１１１同様いくつであっても良い。【００３２】
データ処理装置Ｙ２２は、移行先実計算機２上で実行される仮想計算機の制御を行うもので、メモリデータ受信部２２１、メモリデータ書込み部２２２及びメモリ要求送信部２２３を有する。【００３３】
メモリデータ受信部２２１は、通信装置Ｙ２３を介して、移行元実計算機１からメモリデータを受信する。【００３４】
メモリデータ書込み部２２２は、受信したメモリデータをメモリの適切なアドレスに書き込む。【００３５】
メモリ要求送信部２２３は、仮想データ処理装置Ｙ２１が参照しようとするメモリデータがない時に発生する例外を検知し、該当するメモリデータを通信装置Ｙ２３を介して移行元実計算機１に要求する。【００３６】
なお仮想データ処理装置Ｙ２１は、仮想データ処理装置Ｘ１１と同じく、仮想計算機のために割り当てられた仮想的なデータ処理装置であって、実体はデータ処理装置Ｙ２２の一部である。【００３７】
また図示していないが、移行元実計算機１、移行先実計算機２ともに、モニタ、キーボード、マウスなどの入出力装置や、ＨＤＤ（Hard Disk Drive）、光学ドライブなどの記憶装置を備えている。また、メモリデータ読込み部１２１、メモリ要求受信部１２２、メモリデータ送信部１２３は、移行先実計算機２に含まれていても良い。また、メモリデータ受信部２２１、メモリデータ書込み部２２２、メモリ要求送信部２２３は、移行元実計算機１に含まれていても良い。【００３８】
次に、図１及び図２乃至図４のフローチャートを参照して、本実施の形態の全体の動作について詳細に説明する。【００３９】
まず仮想計算機を移行元実計算機１から移行先実計算機２に移行するステップについて説明する。【００４０】
移行元実計算機１で仮想計算機の移行処理が開始されると、まずプログラム監視部Ｘ１１２が、仮想計算機上で直近まで実行されていた複数のプログラムを、実行頻度順にプログラムリストとしてまとめ、メモリデータ読込み部１２１に通知する（図２のステップＡ１）。【００４１】
次に、メモリデータ読込み部１２１が、仮想計算機を移行先実計算機２に移行するために必要最低限なメモリデータのサイズを求める（ステップＡ２）。【００４２】
そして、プログラム監視部Ｘ１１２から通知されたプログラムリストから順に１つプログラムを仮選択する（ステップＡ３）。【００４３】
次に、仮選択をしたプログラムのデータサイズと、すでに選択済みのプログラムのデータサイズと、ステップＡ２で求めたメモリデータサイズとの合計が、規定値以内かどうかを判定する（ステップＡ４）。【００４４】
合計が、規定値以内であれば、仮選択したプログラムを選択済みにし（ステップＡ５）、ステップＡ２の処理を再度行う。【００４５】
合計が、規定値を超えているのであれば、それまでに選択した全てのプログラムについて、関連するメモリデータを読み込む（ステップＡ６）。【００４６】
次に、メモリデータ送信部１２３は、メモリデータ読込み部１２１が読み出したメモリデータを、通信装置Ｘ１３を介して移行先実計算機２に送信する（ステップＡ７）。【００４７】
なお上記ステップＡ４では、送信するメモリデータサイズが規定値を超えていないかを判定基準にしているが、選択したプログラム数の合計が規定値以内かどうかを判定基準としても良い。【００４８】
移行先実計算機２では、メモリデータ受信部２２１が、通信装置Ｙ２３を介してメモリデータを受信する（図３のステップＡ８）。【００４９】
次に、メモリデータ書込み部２２２は、受信したメモリデータをメモリの適切なアドレスに書き込む（ステップＡ９）。【００５０】
以上のステップで、仮想計算機の移行が完了する。これ以降、移行先実計算機２で仮想計算機を実行する、そして、移行元実計算機から送信されなかったメモリデータを参照する時に、以下のステップを踏む。【００５１】
移行先実計算機２上に、仮想計算機が参照しようとするメモリデータがない時に、メモリ要求送信部２５は、該当するメモリデータを、通信装置Ｙ２３を介して移行元実計算機１に要求する（図４のステップＡ１０）。【００５２】
メモリ要求受信部１２２は、要求を受け取ると、該当するメモリデータをメモリデータ読込み部１２１に問い合わせ（ステップＡ１１）、メモリデータ読込み部１２１は該当するメモリデータを読み出す（ステップＡ１２）。【００５３】
そして、メモリデータ送信部１２３は、メモリデータ読込み部１２１が読み出したメモリデータを、通信装置Ｘ１３を介して移行先実計算機２に送信する（ステップＡ１３）。【００５４】
次に、本実施の形態の効果について説明する。【００５５】
本実施形態の第１の効果は、移行先実計算機で仮想計算機の実行を再開しても、再開直後の実行パフォーマンスが劣化しにくいことである。これはメモリデータ読込み部１２１、プログラム監視部Ｘ１１２によって作成されたプログラムリストをもとに、移行先実計算機で実行される可能性が高いプログラムのメモリデータを読み出し、移行先実計算機２に送信するよう構成されているためである。【００５６】
本実施形態の第２の効果は、仮想計算機のダウンタイムを短くすることができることである。これはメモリデータ読込み部１２１が、規定値を上回るメモリデータは移行先実計算機に送信しないよう構成されているためである。【００５７】
［第２の実施形態］
次に、本発明の第２の実施形態について、図面を参照して詳細に説明する。【００５８】
図５を参照すると、本発明の第２の実施形態は、本発明の第１の実施の形態と比較し、参照カウンタ判定部１２４を有する点で異なるが、それ以外の構成は第１の実施形態と同じである。なお、メモリデータ読込み部１２１の動作も一部異なるためこの点も説明する。【００５９】
参照カウンタ判定部１２４は、メモリデータ読込み部１２１から問い合わせのあったメモリデータが置かれているページに関する参照カウンタを調査する。調査結果は、メモリデータ読込み部１２１に通知する。【００６０】
またメモリデータ読込み部１２１は、各プログラムを実行するために必要なメモリデータを取得する時、メモリデータが置かれているメモリページの参照カウンタを、参照カウンタ判定部１２４に問い合わせる。そして参照カウンタが規定値以上のメモリページのみを読込み対象とする。これ以外の処理は、第１の実施の形態におけるメモリデータ読込み部１２１と同様の処理を行う。【００６１】
以上の構成要素以外は、全て本発明の第１の実施形態と同じ構成なので、説明は省略する。【００６２】
次に、図５及び図６乃至図８のフローチャートを参照して、本実施の形態の全体の動作について詳細に説明する。【００６３】
移行元実計算機１で仮想計算機の移行処理が開始されると、まずプログラム監視部Ｘ１１２が、仮想計算機上で直近まで実行されていた複数のプログラムを、実行頻度順にプログラムリストとしてまとめ、メモリデータ読込み部１２１に通知する（図６のステップＢ１）。【００６４】
次に、メモリデータ読込み部１２１が、仮想計算機を移行先実計算機に移行するために必要最低限なメモリデータのサイズを求める（ステップＢ２）。【００６５】
そして、プログラム監視部Ｘ１１２から通知されたプログラムリストから順にプログラムを仮選択する（ステップＢ３）。【００６６】
そして、仮選択プログラムが使用するメモリデータの全ページに関して、その参照カウンタを参照カウンタ判定部１２４に問い合わせる。問い合わせを受けた参照カウンタ判定部１２４は、指定のあったページの参照カウンタを調査し、メモリデータ読込み部１２１に調査結果を通知する（ステップＢ４）。【００６７】
メモリデータ読込み部１２１は、参照カウンタが規定値以上であるメモリデータを読込み対象とする（ステップＢ５）。【００６８】
次に、メモリデータ読込み部１２１は、ステップＢ２で求めたメモリデータサイズと、ステップＢ５で読込み対象として選択されたメモリデータサイズと、すでに選択済みのプログラムのデータサイズとの合計が、規定値以内かどうかを判定する（ステップＢ６）。規定値以内であれば、仮選択プログラムを選択済みプログラムにし（ステップＢ７）、ステップＢ３の処理を再度行う。規定値をオーバーしていれば、それまでに選択した全てのプログラムについて、関連するメモリデータを読み込む（ステップＢ８）。次に、メモリデータ送信部１２３は、メモリデータ読込み部１２１が読み出したメモリデータを、通信装置Ｘ１３を介して移行先実計算機２に送信する（ステップＢ９）。
【００６９】
これ以降のステップＢ１０乃至Ｂ１５は、それぞれ図３、図４のステップＡ８乃至Ａ１３と同じであるので、説明は省略する。【００７０】
次に、本実施の形態の効果について説明する。【００７１】
本実施の形態の第１の効果は、移行先実計算機で仮想計算機の実行を再開しても、再開直後の実行パフォーマンスが劣化しにくいことである。これはメモリデータ読込み部１２１、プログラム監視部Ｘ１１２によって作成されたプログラムリストをもとに、移行先実計算機で実行される可能性が高いプログラムのメモリデータを読み出し、移行先実計算機２に送信するよう構成されているためである。【００７２】
本実施の形態の第２の効果は、仮想計算機のダウンタイムを短くすることができることである。これはメモリデータ読込み部１２１が、規定値を上回るメモリデータは移行先実計算機に送信しないよう構成されているためである。【００７３】
本実施の形態の第３の効果は、移行先実計算機上で仮想計算機の実行を再開した時に、特定のプログラムの実行において実行性能が大きく低下する事象の発生を低減することができることである。これは、仮想計算機の移行時に、メモリデータ読込み部１２１と参照カウンタ判定部１２４が連携し、参照カウンタが規定値以下のページの上に置かれているメモリデータは移行先仮想計算機に送信されず、より多くの種類のプログラムのメモリデータが送信対象となるよう構成されているためである。【００７４】
［第３の実施形態］
次に、本発明の第３の実施形態について、図面を参照して詳細に説明する。【００７５】
図９を参照すると、本発明の第３の実施形態は、本発明の第２の実施形態と比較し、データ処理装置Ｘ１２にＮＷ（Network：ネットワーク）品質判定部１２５とデータサイズ決定部１２６を有しているが、それ以外の構成は第２の実施の形態と同じである。【００７６】
ＮＷ品質判定部１２５は、移行先実計算機２と通信を行い、移行元実計算機１と移行先実計算機２間のネットワーク品質を判定する。【００７７】
データサイズ決定部１２６は、ＮＷ品質判定部１２５によって測定されたネットワーク品質をもとに、仮想計算機の移行時に移行先実計算機２に送信するメモリデータサイズを決定する。【００７８】
またメモリデータ読込み部１２１は、規定値ではなく、データサイズ決定部１２６で決定したメモリデータサイズに収まるように、メモリ送信を行うプログラムを決定し、そのプログラムのメモリデータを読み込む。【００７９】
以上の構成要素以外は、全て本発明の第２の実施形態と同じ構成なので、説明は省略する。【００８０】
次に、図９及び図１０乃至１２のフローチャートを参照して、本実施の形態の全体の動作について詳細に説明する。【００８１】
移行元実計算機１で仮想計算機の移行処理が開始されると、まずプログラム監視部Ｘ１１２が、仮想計算機上で直近まで実行されていた複数のプログラムを、実行頻度順にプログラムリストとしてまとめ、メモリデータ読込み部１２１に通知する（図１０のステップＣ１）。【００８２】
次に、ＮＷ品質判定部１２５が、移行先実計算機２と通信を行い、移行元実計算機１と移行先実計算機２間のネットワーク品質を求める（ステップＣ２）。【００８３】
データサイズ決定部１２６は、ステップＣ２で求まったネットワーク品質をもとに、移行先実計算機２に送信するメモリデータサイズを決定する（ステップＣ３）。【００８４】
次に、メモリデータ読込み部１２１が、仮想計算機を移行先実計算機に移行するために必要最低限なメモリデータのサイズを求める（ステップＣ４）。【００８５】
そして、プログラム監視部Ｘ１１２から通知されたプログラムリストから順にプログラムを仮選択する（ステップＣ５）。【００８６】
そして、仮選択プログラムが使用するメモリデータの全ページに関して、その参照カウンタを参照カウンタ判定部１２４に問い合わせる。参照カウンタ判定部１２４は、指定のあったページの参照カウンタを調査し、メモリデータ読込み部１２１に通知する（ステップＣ６）。【００８７】
メモリデータ読込み部１２１は、参照カウンタが規定値以上のメモリデータを読込み対象とする（ステップＣ７）。【００８８】
次に、メモリデータ読込み部１２１は、ステップＣ４で求めたメモリデータサイズと、ステップＢ４で読込み対象として選択されたメモリデータサイズと、すでに選択済みのプログラムのデータサイズとの合計が、規定値以内かどうかを判定する（ステップＣ８）。【００８９】
規定値以内であれば、仮選択プログラムを選択済みプログラムにし（ステップＣ９）、ステップＣ５の処理を再度行う。規定値をオーバーしていれば、それまでに選択した全てのプログラムについて、関連するメモリデータを読み込む（ステップＣ１０）。【００９０】
次に、メモリデータ送信部１２３は、メモリデータ読込み部１２１が読み出したメモリデータを、通信装置Ｘ１３を介して移行先実計算機２に送信する（ステップＣ１１）。【００９１】
これ以降のステップＣ１２乃至Ｃ１７は、それぞれ図７、図８のステップＢ１０乃至Ｂ１５と同じであるので、説明は省略する。【００９２】
次に、本実施の形態の効果について説明する。【００９３】
本実施の形態の第１の効果は、移行先実計算機で仮想計算機の実行を再開しても、再開直後の実行パフォーマンスが劣化しにくいことである。これは、メモリデータ読込み部１２１、プログラム監視部Ｘ１１２によって作成されたプログラムリストをもとに、移行先実計算機で実行される可能性が高いプログラムのメモリデータを読み出し、移行先実計算機２に送信するよう構成されているためである。【００９４】
本実施の形態の第２の効果は、仮想計算機のダウンタイムを短くすることができることである。これは、メモリデータ読込み部１２１が、規定値を上回るメモリデータは移行先実計算機に送信しないよう構成されているためである。【００９５】
本実施の形態の第３の効果は、移行先実計算機上で仮想計算機の実行を再開した時に、特定のプログラムの実行において実行性能が大きく低下する事象の発生を低減することができることである。これは、仮想計算機の移行時に、メモリデータ読込み部１２１が参照カウンタ判定部１２４が連携し、参照カウンタが規定値以下のページの上に置かれているメモリデータは移行先仮想計算機に送信されず、より多くの種類のプログラムのメモリデータが送信対象となるよう構成されているためである。【００９６】
本実施の形態の第４の効果は、移行先実計算機間と高速なネットワークが保証されていれば、移行時に送信するメモリデータサイズを増やして、オンデマンドで取得するメモリデータを減らすことができる。逆に移行先実計算機間と低速なネットワークしか確立できないのであれば、仮想計算機のダウンタイムが一定時間を越えないよう、送信するメモリデータサイズを減らすことができることである。これは、データサイズ決定部１２６が、ネットワーク環境に応じて、移行先実計算機２に送信するメモリデータサイズを決定するよう構成されているためである。【００９７】
［第４の実施形態］
次に、本発明の第４の実施形態について、図面を参照して詳細に説明する。【００９８】
図１３を参照すると、本発明の第４の実施の形態は、本発明の第１、第２及び第３の実施形態と同様に、移行元実計算機１と移行先実計算機２を有する。【００９９】
移行元実計算機１は、仮想データ処理装置Ｘ１１と、データ処理装置Ｘ１２、通信装置Ｘ１３、メモリＸ１４を有している。【０１００】
仮想計算機移行プログラムＸ１５は、仮想データ処理装置Ｘ１１に読み込まれ、仮想データ処理装置Ｘ１１の動作を制御するプログラムである。仮想データ処理装置Ｘ１１は、仮想計算機移行プログラムＸ１５の制御により、第１、第２及び第３の実施の形態における仮想データ処理装置Ｘ１１による処理と同一の処理を実行する。【０１０１】
仮想計算機移行プログラムＸ’１６は、データ処理装置Ｘ１２に読み込まれ、データ処理装置Ｘ１２の動作を制御するプログラムである。データ処理装置Ｘ１２は、仮想計算機環境移行プログラムＸ’１６の制御により、第１、第２及び第３の実施の形態におけるデータ処理装置Ｘ１２による処理と同一の処理を実行する。【０１０２】
移行元実計算機２は、仮想データ処理装置Ｙ２１と、データ処理装置Ｙ２２、通信装置Ｙ２３、メモリＹ２４を有する。【０１０３】
仮想計算機移行プログラムＹ２５は、仮想データ処理装置Ｙ２１に読み込まれ、仮想データ処理装置Ｙ２１の動作を制御するプログラムである。仮想データ処理装置Ｙ２１は、仮想計算機環境移行プログラムＹ２５の制御により、第１、第２及び第３の実施の形態における仮想データ処理装置Ｙ２１による処理と同一の処理を実行する。【０１０４】
仮想計算機移行プログラムＹ’２６は、データ処理装置Ｙ２２に読み込まれ、データ処理装置Ｙ２２の動作を制御するプログラムである。データ処理装置Ｙ２２は、仮想計算機環境移行プログラムＹ’２６の制御により、第１、第２及び第３の実施の形態におけるデータ処理装置Ｙ２２による処理と同一の処理を実行する。【０１０５】
なお第１の実施の形態で説明したように、仮想データ処理装置Ｘ１１の実体はデータ処理装置Ｘ１２の一部であり、仮想データ処理装置Ｙ２１の実体は、データ処理装置Ｙ２２の一部である。
【実施例１】
【０１０６】
次に、本発明の第１の実施例を、図１４及び図１５を参照して説明する。かかる実施例は、本発明の第１の実施形態に対応するものである。【０１０７】
図１４に示すように、本実施例は、移行元実計算機１としてパーソナル・コンピュータＸ１００を、通信装置Ｘ１３としてイーサネットカードＸ１０４（イーサネットは登録商標）を、メモリＸ１４としてＳＤＲＡＭ（Synchronous Dynamic Random Access Memory）−Ｘ１０３を、データ処理装置Ｘ１２としてＣＰＵ（Central Processing Unit）−Ｘ１０１、仮想データ処理装置Ｘ１１として仮想ＣＰＵ−Ｘ１０１を有している。【０１０８】
また移行先実計算機２としてパーソナル・コンピュータＹ２００を、通信装置Ｙ２３としてイーサネットカードＹ２０４を、メモリＹ２４としてＳＤＲＡＭ−Ｙ２０３を、データ処理装置Ｙ２２としてＣＰＵ−Ｙ２０２、仮想データ処理装置Ｙ２１として仮想ＣＰＵ−Ｙ２０１を有している。【０１０９】
ここでは、ＳＤＲＡＭ−Ｘ１０３のうち１２８ＭＢが仮想計算機のために使用されているとする。またパーソナル・コンピュータＸ１００からパーソナル・コンピュータＹ２００に移行する仮想計算機のメモリのうち、まず６４ＭＢを移行時にパーソナル・コンピュータＹ２００に転送することとする。残りの６４ＭＢは移行後に、オンデマンドにパーソナル・コンピュータＸ１００からパーソナル・コンピュータＹ２００にメモリデータを転送することとする。なお、仮想計算機を移行するための最低限のメモリデータサイズは、５０ＭＢであるとする。【０１１０】
仮想計算機を移行する時、まずプログラム監視部Ｘ１１２は、仮想ＣＰＵ−Ｘ１０１で移行直近に実行されたプログラムの実行頻度をもとに、図１５で示すようなプログラムリストを作成し、メモリデータ読込み部１２１に渡す。次に、メモリ読込み部１２１は、移行するための最低限のメモリデータサイズ（５０ＭＢ）に、プログラムリストの上位のプログラムからメモリ使用量を足し算していく。その結果、ブラウザプログラムまでは足せる（合計６０ＭＢ）が、メールプログラムを足すと、送信するメモリデータサイズが６４ＭＢを超えてしまうことが分かる。そこでメモリデータ読込み部１２１は、移行するための最低限のメモリデータとブラウザプログラムをメモリから読み込み、読み込んだメモリデータを、通信装置を介して移行先実計算機に送信する。【０１１１】
なお上記処理の中で、メモリデータ読込み部１２１は、送信するメモリデータサイズが規定値（６４ＭＢ）を超えていないかを判定基準にしているが、選択したプログラム数の合計が規定値以内かどうかを判定しても良い。この場合、例えば規定値をひとつとすればブラウザプログラムのみが選択されることとなる。また、規定値を２つ以上とすればブラウザプログラム及びメールプログラムが選択されることとなる。【０１１２】
また上記処理の中で、プログラム監視部Ｘ１１２は、仮想計算機のＯＳが提供するプロセス情報（例：Ｌｉｎｕｘ（登録商標）の／ｐｒｏｃファイルシステム）を参照することで、プログラムの実行頻度を計測したり、プログラムの優先度を求めたりすることができる。【０１１３】
また上記処理の中で、メモリデータ読込み部１２１は、ＳＤＲＡＭ−Ｘ１０３の中にあるページテーブルを参照することで、各プログラムが使用するメモリデータを特定する。またページテーブルは、移行するための最低限のメモリデータに含まれている。【０１１４】
パーソナル・コンピュータＹ２００では、メモリデータ受信部２２１が、イーサネットカードＹ２０４を介してメモリデータを受信する。次に、メモリデータ書込み部２２２が、受信したメモリデータをＳＤＲＡＭ−Ｙ２０３に書き込む。以上のステップで、仮想計算機の移行が完了する。【０１１５】
パーソナル・コンピュータＹ２００で、仮想計算機を実行し、パーソナル・コンピュータＸ１００移行元から送信されなかったメモリデータを参照する時に、以下のステップを踏む。【０１１６】
パーソナル・コンピュータＹ２００で、参照しようとするメモリデータがなく仮想ＣＰＵ−Ｙ２０１、つまりＣＰＵ−Ｙ２０２に例外が発生した時に、ＣＰＵ−Ｙ２０２のメモリ要求送信部２２３は、該当するメモリデータの物理メモリアドレスを、イーサネットカードＹ２０４を介してパーソナル・コンピュータＸ１００に要求する。メモリ要求受信部１２２は要求を受け取ると、該当するメモリデータの物理メモリアドレスをＣＰＵ−Ｘ１０２のメモリデータ読込み部１２１に送信し、メモリデータ読込み部１２１は該当するメモリデータをＳＤＲＡＭ−Ｘ１０３から読み出す。そして、メモリデータ送信部は、メモリデータ読込み部が読み出したメモリデータを、イーサネットカードＸ１０４を介してパーソナル・コンピュータＹ２００に送信する。
【実施例２】
【０１１７】
次に、本発明の第２の実施例を、図１６、図１７及び図１８を参照して説明する。かかる実施例は、本発明の第２の実施形態に対応するものである。【０１１８】
図１６に示すように、本実施例は、移行元実計算機１としてパーソナル・コンピュータＸ１００を、通信装置Ｘ１３としてイーサネットカードＸ１０４を、メモリＸ１４としてＳＤＲＡＭ−Ｘ１０３を、データ処理装置Ｘ１２としてＣＰＵ−Ｘ１０２を、仮想データ処理装置Ｘ１１として仮想ＣＰＵ−Ｘ１０１を有している。【０１１９】
また移行先実計算機２としてパーソナル・コンピュータＹ２００を、通信装置Ｙ２３としてイーサネットカードＹ２０４を、メモリＹ２４としてＳＤＲＡＭ−Ｙ２０３を、データ処理装置Ｙ２２としてＣＰＵ−Ｙ２０２を、仮想データ処理装置Ｙ２１として仮想ＣＰＵ−Ｙ２０１を有している。【０１２０】
ここでは、ＳＤＲＡＭ−Ｘ１０３のうち１２８ＭＢが仮想計算機のために使用されているとする。またパーソナル・コンピュータＸ１００からパーソナル・コンピュータＹ２００に移行する仮想計算機のメモリのうち、６４ＭＢを移行時にパーソナル・コンピュータＹ２００に転送し、残りの６４ＭＢは移行後、オンデマンドにパーソナル・コンピュータＸ１００からパーソナル・コンピュータＹ２００にメモリデータを転送することとする。また、メモリデータ読込み部１２１では、参照カウンタが２以上のページを読込み対象になっているとする。また、メモリの１ページは、４０９６バイトであるとする。なお、仮想計算機を移行するための最低限のメモリデータサイズは、５０ＭＢであるとする。【０１２１】
仮想計算機を移行する時、まずプログラム監視部Ｘ１１２は、仮想ＣＰＵ−Ｘ１０１で移行直近に実行されたプログラムの実行頻度をもとに、図１７で示すようなプログラムリストを作成し、メモリデータ読込み部１２１に渡す。なお、メモリデータ読込み部１２１は、メモリの中にあるページテーブルを参照することで、プログラムが使用するメモリデータを特定したり、サイズを求めたりすることが可能である。【０１２２】
メモリデータ読込み部１２１は、プログラムリストの上位であるブラウザプログラムをまず仮選択プログラムとし、ブラウザプログラムが使用するメモリデータの全ページに関して、その参照カウンタを参照カウンタ判定部１２４に問い合わせる。問い合わせ結果が図１８の通りであった場合、メモリデータ読込み部１２１は、まず移行するための最低限のメモリデータサイズ（５０ＭＢ）に、参照カウンタが２以上のブラウザプログラムのページ（２５００ページ＝約１０ＭＢ）を足し算する（合計：約６０ＭＢ）。すると６４ＭＢに達していないため、メモリデータ読込み部１２１は、ブラウザプログラムを選択済みプログラムとし、メールプログラムを仮選択プログラムとする。【０１２３】
そしてメールプログラムが使用するメモリデータの全ページに関して、その参照カウンタを参照カウンタ判定部１２４に問い合わせる。そして、参照カウンタが２以上のメールプログラムのページ（９００ページ＝約３．７ＭＢ）を、足し算する（合計：６３．７ＭＢ）。すると６４ＭＢに達していないため、メモリデータ読込み部１２１は、メールプログラムを選択済みプログラムとし、エディタプログラムを仮選択プログラムとする。【０１２４】
そしてエディタプログラムが使用するメモリデータの全ページに関して、その参照カウンタを参照カウンタ判定部１２４に問い合わせる。そして、参照カウンタが２以上のエディタプログラムのページ（８００ページ＝約３．３ＭＢ）を、足し算する（合計：６７ＭＢ）。すると、６４ＭＢを超えてしまうため、メモリデータ読込み部１２１は、ブラウザプログラムとメールプログラムに関して、メモリデータを読み込む。そして、メモリデータ送信部１２３は、読み込んだメモリデータをイーサネットカードＸ１０４を介してパーソナル・コンピュータＹ２００に送信する。【０１２５】
なお上記処理の中で、プログラム監視部Ｘ１１２は、仮想計算機のＯＳが提供するプロセス情報（例：Ｌｉｎｕｘの／ｐｒｏｃファイルシステム）を参照することで、プログラムの実行頻度を計測したり、プログラムの優先度を求めたりすることができる。【０１２６】
また上記処理の中で、メモリデータ読込み部及び参照カウンタ判定部は、ＳＤＲＡＭ−Ｘ１０３の中にあるページテーブルを参照することで、各プログラムが使用するメモリデータを特定する。またページテーブルは、移行するための最低限のメモリデータに含まれている。【０１２７】
パーソナル・コンピュータＹ２００では、メモリデータ受信部２２１が、イーサネットカードＹ２０４を介してメモリデータを受信する。次に、メモリデータ書込み部２２２が、受信したメモリデータをＳＤＲＡＭ−Ｙ２０３に書き込む。【０１２８】
以上のステップで、仮想計算機の移行が完了する。【０１２９】
パーソナル・コンピュータＹ２００で、仮想計算機を実行し、パーソナル・コンピュータＸ１００移行元から送信されなかったメモリデータを参照する時に、以下のステップを踏む。【０１３０】
パーソナル・コンピュータＹ２００で、参照しようとするメモリデータがなく仮想ＣＰＵ−Ｙ２０１、つまりＣＰＵ−Ｙ２０２に例外が発生した時に、ＣＰＵ−Ｙ２０２のメモリ要求送信部２２３は、該当するメモリデータの物理メモリアドレスを、イーサネットカードＹ２０４を介してパーソナル・コンピュータＸ１００に要求する。【０１３１】
メモリ要求受信部１２２は要求を受け取ると、該当するメモリデータの物理メモリアドレスをＣＰＵ−Ｘ１０２のメモリデータ読込み部１２１に送信し、メモリデータ読込み部１２１は該当するメモリデータをＳＤＲＡＭ−Ｘ１０３から読み出す。【０１３２】
そして、メモリデータ送信部１２３は、メモリデータ読込み部１２１が読み出したメモリデータを、イーサネットカードＸ１０４を介してパーソナル・コンピュータＹ２００に送信する。
【実施例３】
【０１３３】
次に、本発明の第３の実施例を、図１９、図２０及び図２１を参照して説明する。かかる実施例は、本発明の第３の実施形態に対応するものである。【０１３４】
図１９に示すように、本実施例は、移行元実計算機１としてパーソナル・コンピュータＸ１００を、通信装置Ｘ１３としてイーサネットカードＸ１０４を、メモリＸ１４としてＳＤＲＡＭ−Ｘ１０３を、データ処理装置Ｘ１２としてＣＰＵ−Ｘ１０２を、仮想データ処理装置Ｘ１１として仮想ＣＰＵ−Ｘ１０１を有している。【０１３５】
また移行先実計算機２としてパーソナル・コンピュータＹ２００を、通信装置Ｙ２３としてイーサネットカードを、メモリＹ２４としてＳＤＲＡＭ−Ｙ２０３を、データ処理装置Ｙ２２としてＣＰＵ−Ｙ２０２を、仮想データ処理装置Ｙ２１として仮想ＣＰＵ−Ｙ２０１を有している。【０１３６】
ここでは、ＳＤＲＡＭ−Ｘ１０３のうち１２８ＭＢが仮想計算機のために使用されているとする。またパーソナル・コンピュータＸ１００からパーソナル・コンピュータＹ２００に移行する仮想計算機のメモリのうち、６４ＭＢを移行時にパーソナル・コンピュータＹ２００に転送し、残りの６４ＭＢは移行後、オンデマンドにパーソナル・コンピュータＸ１００からパーソナル・コンピュータＹ２００にメモリデータを転送することとする。また、メモリデータ読込み部１２１は、参照カウンタが２以上のページを読込み対象になっているとする。またメモリの１ページは、４０９６バイトであるとする。なお、仮想計算機を移行するための最低限のメモリデータサイズは、５０ＭＢであるとする。【０１３７】
仮想計算機を移行する時、まずプログラム監視部Ｘ１１２は、仮想ＣＰＵ−Ｘ１０１で移行直近に実行されたプログラムの実行頻度をもとに、図２０で示すようなプログラムリストを作成し、メモリデータ読込み部１２１に渡す。次にＮＷ品質判定部１２５が、イーサネットカードＸ１０４及びＹを介してパーソナル・コンピュータＹ２００とデータ通信を行う。そして、データ通信に掛かる時間をもとにパーソナル・コンピュータＸ１００とパーソナル・コンピュータＹ２００間のネットワークの実効速度を求める。【０１３８】
次に、データサイズ決定部１２６は、求めたネットワークの実効速度をもとに、仮想計算機の移行時にパーソナル・コンピュータＹ２００に送信するメモリデータサイズを決定する。ここでは６８ＭＢに決定したとする。【０１３９】
メモリデータ読込み部１２１は、プログラムリストの上位であるブラウザプログラムをまず仮選択プログラムとし、ブラウザプログラムが使用するメモリデータの全ページに関して、その参照カウンタを参照カウンタ判定部１２４に問い合わせる。問い合わせ結果が図２１の通りであった場合、メモリデータ読込み部１２１は、まず移行するための最低限のメモリデータサイズ（５０ＭＢ）に、参照カウンタが２以上のブラウザプログラムのページ（２５００ページ＝約１０ＭＢ）を足し算する（合計：約６０ＭＢ）。すると６７ＭＢに達していないため、メモリデータ読込み部１２１は、ブラウザプログラムを選択済みプログラムとし、メールプログラムを仮選択プログラムとする。【０１４０】
そしてメールプログラムが使用するメモリデータの全ページに関して、その参照カウンタを参照カウンタ判定部１２４に問い合わせる。そして、参照カウンタが２以上のメールプログラムのページ（９００ページ＝約３．７ＭＢ）を、足し算する（合計：６３．７ＭＢ）。【０１４１】
すると６８ＭＢに達していないため、メモリデータ読込み部１２１は、メールプログラムを選択済みプログラムとし、エディタプログラムを仮選択プログラムとする。そしてエディタプログラムが使用するメモリデータの全ページに関して、その参照カウンタを参照カウンタ判定部１２４に問い合わせる。そして、参照カウンタが２以上のエディタプログラムのページ（８００ページ＝約３．３ＭＢ）を、足し算する（合計：６７ＭＢ）。【０１４２】
すると６８ＭＢに達していないため、メモリデータ読込み部１２１は、エディタプログラムを選択済みプログラムとし、表計算プログラムを仮選択プログラムとする。そして表計算プログラムが使用するメモリデータの全ページに関して、その参照カウンタを参照カウンタ判定部１２４に問い合わせる。そして、参照カウンタが２以上のエディタプログラムのページ（８００ページ＝約３．３ＭＢ）を、足し算する（合計：７０．３ＭＢ）。【０１４３】
すると、６８ＭＢを超えてしまうため、ブラウザプログラムとメールプログラムとエディタプログラムに関して、メモリデータを読み込み、読み込んだメモリデータをイーサネットカードＸ１０４を介してパーソナル・コンピュータＹ２００に送信する。【０１４４】
なお上記処理の中で、プログラム監視部Ｘ１１２は、仮想計算機のＯＳが提供するプロセス情報（例：Ｌｉｎｕｘの／ｐｒｏｃファイルシステム）を参照することで、プログラムの実行頻度を計測したり、プログラムの優先度を求めたりすることができる。【０１４５】
また上記処理の中で、メモリデータ読込み部１２１及び参照カウンタ判定部１２４は、ＳＤＲＡＭ−Ｘ１０３の中にあるページテーブルを参照することで、各プログラムが使用するメモリデータを特定する。またページテーブルは、移行するための最低限のメモリデータに含まれている。【０１４６】
パーソナル・コンピュータＹ２００では、メモリデータ受信部２２１が、イーサネットカードＹ２０４を介してメモリデータを受信する。【０１４７】
次に、メモリデータ書込み部２２２が、受信したメモリデータをＳＤＲＡＭ−Ｙ２０３に書き込む。以上のステップで、仮想計算機の移行が完了する。【０１４８】
パーソナル・コンピュータＹ２００で、仮想計算機を実行し、パーソナル・コンピュータＸ１００移行元から送信されなかったメモリデータを参照する時に、以下のステップを踏む。【０１４９】
パーソナル・コンピュータＹ２００で、参照しようとするメモリデータがなく仮想ＣＰＵ−Ｙ２０１、つまりＣＰＵ−Ｙ２０２に例外が発生した時に、ＣＰＵ−Ｙ２０２のメモリ要求送信部２２３は、該当するメモリデータの物理メモリアドレスを、イーサネットカードＹ２０４を介してパーソナル・コンピュータＸ１００に要求する。メモリ要求受信部１２２は要求を受け取ると、該当するメモリデータの物理メモリアドレスをＣＰＵ−Ｘ１０２のメモリデータ読込み部１２１に送信し、メモリデータ読込み部１２１は該当するメモリデータをＳＤＲＡＭ−Ｘ１０３から読み出す。そして、メモリデータ送信部１２３は、メモリデータ読込み部１２１が読み出したメモリデータを、イーサネットカードＸ１０４を介してパーソナル・コンピュータＹ２００に送信する。【０１５０】
第１乃至第３の実施例で述べたＣＰＵ−Ｘ１０２は、パーソナル・コンピュータＸ１００で実行される仮想マシンモニタ（ＶＭＭ：Virtual Machine Monitor）であっても良く、仮想ＣＰＵ−Ｘ１０１は、パーソナル・コンピュータＸ１００で実行される仮想マシン（ＶＭ：Virtual Machine）であっても良い。同様に、ＣＰＵ−Ｙ２０２は、パーソナル・コンピュータＹ２００で実行される仮想マシンモニタ（ＶＭＭ）であっても良く、仮想ＣＰＵ−Ｙ２０１は、パーソナル・コンピュータＹ２００で実行される仮想マシン（ＶＭ）であっても良い。【０１５１】
また第１乃至第３の実施例は、ＬｉｎｕｘＶＳｅｒｖｅｒやＳｏｌａｒｉｓ（登録商標）コンテナのような、仮想ＯＳで実施されていても良い。仮想ＣＰＵ−Ｘ１０１とＣＰＵ−Ｘ１０２がそれぞれ独立した仮想ＯＳとして実行され、ＣＰＵ−Ｘ１０２に相当する仮想ＯＳが仮想ＣＰＵ−Ｘ１０１に相当する仮想ＯＳの移行を行っても良い。同様に、仮想ＣＰＵ−Ｙ２０１とＣＰＵ−Ｙ２０２がそれぞれ独立した仮想ＯＳとして実行されていても良い。【０１５２】
また第１乃至第３の実施例は、パーソナル・コンピュータＸ１００上の１つのＯＳ上で、ＣＰＵ−Ｘ１０２及び仮想ＣＰＵ−Ｘ１０１に相当する処理が組み込まれていても良い。同様に、パーソナル・コンピュータＹ上の１つのＯＳ上で、ＣＰＵ−Ｙ２０２及び仮想ＣＰＵ−Ｙ２０１に相当する処理が組み込まれていても良い。【０１５３】
第１の効果は、仮想計算機の移行直後であっても、仮想計算機の実行パフォーマンスが劣化しにくいことである。その理由は、仮想計算機移行時に、移行直後に参照される可能性が高いメモリデータを、優先的に移行先実計算機に送信するからである。【０１５４】
第２の効果は、仮想計算機移行時に仮想計算機のダウンタイムを短くすることができる。その理由は、仮想計算機移行時に、移行直後に参照される可能性が低いメモリデータは、仮想計算機移行時に移行先実計算機に送信せず、仮想計算機を移行後、移行先実計算機上で実行中に、オンデマンドに移行元実計算機から送信するためである。【０１５５】
なお、本発明の実施形態である仮想計算機移行システムは、ハードウェア、ソフトウェア又はこれらの組合せにより実現することができる。【０１５６】
本願は、日本の特願２００７−３０４７９２（２００７年１１月２６日に出願）に基づいたものであり、又、特願２００７−３０４７９２に基づくパリ条約の優先権を主張するものである。特願２００７−３０４７９２の開示内容は、特願２００７−３０４７９２を参照することにより本明細書に援用される。【０１５７】
本発明の代表的な実施形態が詳細に述べられたが、様々な変更(changes)、置き換え(substitutions)及び選択(alternatives)が請求項で定義された発明の精神と範囲から逸脱することなくなされることが理解されるべきである。また、仮にクレームが出願手続きにおいて補正されたとしても、クレームされた発明の均等の範囲は維持されるものと発明者は意図する。
【産業上の利用可能性】
【０１５８】
本発明によれば、実計算機上で実行されている仮想計算機を異なる実計算機上に移行するための、仮想計算機移行システムや、仮想計算機移行システムをコンピュータ上に実現するためのプログラムといった用途に適用できる。
【図１】
0005382449.tif 000002
【図２】
0005382449.tif 000003
【図３】
0005382449.tif 000004
【図４】
0005382449.tif 000005
【図５】
0005382449.tif 000006
【図６】
0005382449.tif 000007
【図７】
0005382449.tif 000008
【図８】
0005382449.tif 000009
【図９】
0005382449.tif 000010
【図１０】
0005382449.tif 000011
【図１１】
0005382449.tif 000012
【図１２】
0005382449.tif 000013
【図１３】
0005382449.tif 000014
【図１４】
0005382449.tif 000015
【図１５】
0005382449.tif 000016
【図１６】
0005382449.tif 000017
【図１７】
0005382449.tif 000018
【図１８】
0005382449.tif 000019
【図１９】
0005382449.tif 000020
【図２０】
0005382449.tif 000021
【図２１】
0005382449.tif 000022