(57)【特許請求の範囲】
【請求項１】
物理マシン上の仮想マシンを他の物理マシン上の仮想マシンに移動する際の移動対象となる仮想マシンを決定する仮想マシン決定プログラムにおいて、コンピュータを、
仮想マシン毎にかつ経過時間毎に更新されたページ数を有する過去の記録であるページ数管理表から経過時間毎に更新されたページ数を読み出し、仮想マシンを搭載する物理マシンから他の物理マシンに転送する１ページあたりの転送時間を有する過去の記録である転送時間記録表から１ページあたりの転送時間を読み出し、読み出されたページ数と転送時間とから、所定の物理マシン上の所定の仮想マシンを他の物理マシン上の他の仮想マシンにページ転送するのに要する転送時間を、仮想マシン毎に算出する算出手段、
算出された転送時間が最も小さな仮想マシンを、移動対象の仮想マシンとして決定する仮想マシン決定手段、
として機能させるための仮想マシン決定プログラム。
【請求項２】
前記更新されたページ数に代えて参照されたページ数であることを特徴とする請求項１記載の仮想マシン決定プログラム。
【請求項３】
前記算出手段は、ページの移動方式毎に、所定の物理マシン上の所定の仮想マシンを他の物理マシン上の他の仮想マシンにページ転送するのに要する転送時間を算出し、
前記コンピュータを、
算出された転送時間が最も小さな移動方式を、仮想マシンの移動方式として決定する移動方式決定手段、
として更に機能させることを特徴とする請求項１もしくは２に記載の仮想マシン決定プログラム。
【請求項４】
仮想マシン毎にかつ経過時間毎に更新されたページ数を有する過去の記録であるページ数管理表から経過時間毎に更新されたページ数を読み出し、仮想マシンを搭載する物理マシンから他の物理マシンに転送する１ページあたりの転送時間を有する過去の記録である転送時間記録表から１ページあたりの転送時間を読み出し、読み出されたページ数と転送時間とから、所定の物理マシン上の所定の仮想マシンを他の物理マシン上の他の仮想マシンにページ転送するのに要する転送時間を、仮想マシン毎に算出する算出手段と、
算出された転送時間が最も小さな仮想マシンを、移動対象の仮想マシンとして決定する仮想マシン決定手段と
を具えることを特徴とする、仮想マシン決定装置。
【請求項５】
仮想マシン毎にかつ経過時間毎に更新されたページ数を有する過去の記録であるページ数管理表から経過時間毎に更新されたページ数を読み出し、仮想マシンを搭載する物理マシンから他の物理マシンに転送する１ページあたりの転送時間を有する過去の記録である転送時間記録表から１ページあたりの転送時間を読み出し、読み出されたページ数と転送時間とから、所定の物理マシン上の所定の仮想マシンを他の物理マシン上の他の仮想マシンにページ転送するのに要する転送時間を、仮想マシン毎に算出するステップと、
算出された転送時間が最も小さな仮想マシンを、移動対象の仮想マシンとして決定するステップと
を含むことを特徴とする、仮想マシン決定方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、物理マシン上の仮想マシンを他の物理マシン上の仮想マシンに移動する際の移動対象となる仮想マシンを決定するための、仮想マシン決定プログラムおよび仮想マシン決定装置および仮想マシン決定方法に関する。
【背景技術】
【０００２】
物理サーバ上で複数の仮想マシンを動作させるにあたっては、負荷分散や省電力化のために、仮想マシンを他の物理サーバへと転送させる手法が採られることがある。
【０００３】
こうした転送の際には、物理サーバ上で動作する複数の仮想マシンのうち、適切な台数を他の物理サーバへ転送させることになる。
【０００４】
従来技術として、こうした転送処理を行う際には、以下の三種の方式を組み合わせることが知られている（非特許文献１参照）。
【０００５】
〈プッシュ（push）方式〉
図１は、従来技術にかかるpush方式を用いた、仮想マシンの転送方法を説明する概念図である。
【０００６】
push方式では、転送元計算機上で転送対象となる仮想マシン（転送元仮想マシン） 102
を稼動させたまま、その仮想マシンを構成するメモリページを転送先計算機へと転送して、転送先仮想マシン 104 を構成することになる。この転送作業中にも、稼働中である転送元仮想マシン 102 は動作するため、メモリページのうちの一部は更新される。そこで、この更新されたメモリページを、転送先へと再送する。
【０００７】
push方式は、以下のような特徴を有する。
◆再送されるメモリページ量は、転送元仮想マシンのメモリページ更新頻度に依存するため、総転送ページ数が静的に定まらない。
◆総転送ページ数が静的に定まらないため、転送処理時間を静的には見積もることができない。
◆転送処理の負荷により、転送処理中の仮想マシンの性能が低下してしまう。
【０００８】
〈停止転送方式〉
図２は、従来技術にかかる停止転送方式を用いた、仮想マシンの転送方法を説明する概念図である。
【０００９】
停止転送方式では、転送元仮想マシン 202 を停止させて、この仮想マシン 202 を構成するメモリページを転送先計算機へと転送して、転送先仮想マシン 204 をいちどきに構成してしまう。停止転送方式を用いる場合には、仮想マシンの動作によるメモリページ更新は発生しないため、以下のような特徴がある。
◆再送が発生しないので、転送するページ数が仮想マシンの構成に依り一意に定まる。
◆転送処理にかかる時間も一定である。
◆転送処理中には、仮想マシンを停止させなくてはならない。
【００１０】
〈プル（pull）方式〉
図３は、従来技術にかかるpull方式を用いた、仮想マシンの転送方法を説明する概念図である。
【００１１】
pull方式では、転送先計算機上で転送元仮想マシン302 を動作させ、未転送のメモリページを参照しようとする時に転送元計算機から当該メモリページを転送することで、漸次転送先仮想マシン 304 を構成してゆく。このため、再送は発生せず、以下のような特徴を有する。
◆再送が発生しないため、転送するページ数が仮想マシンの構成に依り一意に定まる。
◆転送処理は未転送のメモリページの参照頻度に基づいて進行するため、転送処理時間を静的には見積もることができない。
◆未転送のメモリページ参照時に発生するページフォールトのコストが高く、転送処理中の仮想マシンの性能は低下する。
【００１２】
停止転送方式とpull方式については、単体で使用しても転送処理が可能である。
【００１３】
また、push方式と、停止転送方式とを組み合わせたものをLive Migration方式とも呼ぶ。この方式では、更新ページ数が充分に少なくなるまでpush方式で転送を行い、最後に停止転送方式を行う。こうすると、push方式によりくりかえし更新ページを再送させている期間内には、仮想マシンは稼動しつづけるので、結果的に仮想マシンが提供するサービスの停止時間を短縮できることになる。なお、実際にこのLive Migration方式は、Xen（商標）仮想マシンモニタにおける仮想マシン転送方式として採用されている。
【００１４】
また、同様に、以下のようなpush/pull併用方式も実現することができる。
［１］転送元計算機上で仮想マシンを動作させたまま、いったん全てのメモリページを転送する。
［２］転送処理の間に更新されたページのリストを転送先に送信し、仮想マシンを動作させる計算機を転送先に切り替える。
［３］更新されたページのリストに含まれるページが参照された時に、転送元よりページを再送する。
［４］更新されたページのうち、未転送のページの数が一定以下になったら、それらをまとめて転送する。
【００１５】
このような方式を用いることにより、pull方式が持つページフォールトコストの問題が軽減でき、さらには、仮想マシンの停止を行うこと無く転送処理が実施可能となる。
【００１６】
上述したようなさまざまな仮想マシン転送方式を用いることで、高負荷である物理サーバ上の仮想マシンを他の物理サーバへ転送させて動的負荷分散を行ったり、または、一部の物理サーバに仮想マシンを集約させて稼働する物理サーバ数を削減し電力消費を抑えることができる。
【発明の開示】
【発明が解決しようとする課題】
【００１７】
仮想マシン転送方式を用いて動的負荷分散や省電力化を実現しようとする際には、物理サーバ上の複数の仮想マシンのうち、どの仮想マシンを転送対象とするのかを選択する必要がある。
【００１８】
特にpush方式を含む転送方式では、転送処理中にもページが更新されるために、そのページ更新頻度に依って、転送時間、および転送処理が必要とするCPU時間、が異なってくることになる。
【００１９】
このため、転送対象とする仮想マシンの選択にあたっては、例えば、転送時間、もしくは転送処理が必要とするCPU時間が、できるだけ少なくなるようにしたいという要請がある。
【課題を解決するための手段】
【００２０】
本発明の或る実施形態においては、物理マシン上の仮想マシンを他の物理マシン上の仮想マシンに移動する際の移動対象となる仮想マシンを決定する仮想マシン決定プログラムにおいて、コンピュータを、
仮想マシン毎にかつ経過時間毎に更新されたページ数を有する過去の記録であるページ数管理表から経過時間毎に更新されたページ数を読み出し、仮想マシンを搭載する物理マシンから他の物理マシンに転送する１ページあたりの転送時間を有する過去の記録である転送時間記録表から１ページあたりの転送時間を読み出し、読み出されたページ数と転送時間とから、所定の物理マシン上の所定の仮想マシンを他の物理マシン上の他の仮想マシンにページ転送するのに要する転送時間を、仮想マシン毎に算出する算出手段、
算出された転送時間が最も小さな仮想マシンを、移動対象の仮想マシンとして決定する仮想マシン決定手段、
として機能させるための仮想マシン決定プログラム、が提供される。
【００２１】
本発明の別の実施形態においては、上述いた更新されたページ数に代えて、参照されたページ数を用いることもできる。
【００２２】
本発明のさらに別の実施形態においては、上述したような仮想マシン決定プログラムが、コンピュータ上で実行された際に実施できるような、仮想マシン決定方法が提供される。
【００２３】
本発明のさらに別の実施形態においては、上述したような仮想マシン決定方法を実施できるような仮想マシン決定装置が提供される。
【発明の効果】
【００２４】
本発明の実施形態により、転送ページ数の見積もりを利用して、移動対象となる仮想マシンおよび使用する移動方式を、例えば、転送時間、もしくは転送処理が必要とするCPU時間が、できるだけ少なくなるように、選択できるようになる。
【非特許文献１】Clark, C., Fraser, K., Hand, S., Hansen, J. G., Jul, E., Limpach, C., Pratt, I. and Warfield, A., Live Migration of Virtual Machines, Proceedings of the 2nd ACM/USENIX Symposium on Networked Systems Design and Implementation (NSDI), Boston, MA, May, 2005.
【発明を実施するための最良の形態】
【００２５】
〔１  定義〕
本明細書では、「仮想マシン」 virtual machine (VM) という語は、論理的な構成単位としてカプセル化して実施される仮想的なマシンもしくは計算機のことを指す。仮想マシンは、仮想マシンソフトウェア（仮想マシンモニター）によって実施される仮想サーバーと見做すことができるが、この解釈には限定はされない。仮想マシンの例としては、ソフトウェア内でのみ実施される仮想マシン、または、ソフトウェアにより部分的に実施される仮想マシン、または、ハードウェアおよびファームウェアおよびソフトウェアを組み合わせて実施する仮想マシン、が含まれるが、これらに限定はされない。
【００２６】
また本明細書では、「仮想マシン」という語が、当業者が一般に仮想化技術として認識している任意の形態を指すこともできる。こうした仮想化技術の例としては、物理パーティションによって実施される仮想サーバー、論理パーティションによって実施される仮想サーバー、ホストオペレーティングシステム（OS）上でエミュレートされるゲストOS（仮想OS）、といったものが含まれるが、これらに限定はされない。当業者は、これらの仮想化技術においても、当該技術分野において公知である手法を併用することにより、適切に本発明を実施できる、ということを正しく理解できる。
【００２７】
本発明の実施形態においては、こうした仮想マシンおよびその類似技術産物を、物理リソースあたり（もしくは、有体である物理計算機あたり）に、当業者が適切であると見做す個数だけ存在させることが可能である。
【００２８】
本明細書では、「リソース」 resource という語は、コンピュータ（計算機）を動作させる上で必要な種々の資源のことを指すか、または、それらの資源を任意に組み合わせた集合体のことを指す。リソースという概念には、一般に物理リソースと論理リソースとが含まれる。
【００２９】
本明細書では、「物理リソース」 physical resource とは、有体の資源のことを指すものであって、例えば、物理メモリ、CPU、I/Oデバイス、ストレージデバイス、などが含まれる。さらには、この「物理リソース」という語には、それら物理リソースの集合体としての物理マシンという概念も、また包摂されうる。
【００３０】
本明細書では、「論理リソース」もしくは「仮想リソース」 logical resource or virtual resource とは、情報的な資源を指すものであって、例えば、仮想メモリ、仮想ストレージ、データ構造、アプリケーション、などが含まれる。
【００３１】
本明細書では、（仮想マシンの）「移動」もしくは「転送」 migration という語は、互換可能に用いられ、仮想マシンを或るリソースから別のリソースへと移動（転送）させる行為を指す。転送元のリソースおよび転送先のリソースは、それぞれが、物理リソースであってもよいし、論理リソースであってもよいことを当業者は正しく理解できる。仮想マシンの転送に際しては、上述したような既知の転送方式およびそれらの組み合わせを用いることができる。加えて、本発明の或る実施形態では、将来実用化されるであろう開発途上の任意の転送方式を利用することも想定されている。
【００３２】
本明細書では、「ページ」 page もしくは「メモリページ」 memory page もしくは「ページファイル」 page file もしくは「スワップファイル」 swap file という語は、それぞれが互換可能に用いることができ、仮想リソースを実現するために用いられるひとつもしくは複数のファイルのことを指す。
【００３３】
本明細書では、「ページフォールト」 page fault という語は、仮想リソースを管理システムにおいて、物理メモリ上に存在しないページへの参照が起こったときに発生する割込みのことを指す。こうしたページフォールトが発生すると、上述したように転送処理中の仮想マシンの性能が低下する原因となる。
【００３４】
本明細書では、「転送時間」 migration time という語は、特に他に定めない限りは、或る仮想マシンを転送する処理の全体もしくは一部にかかる、実時間のことを指し、「転送実時間」とも称する。
【００３５】
本明細書では、「CPU時間」 CPU time という語は、或る時点（たとえばプロセス開始時点）から別の或る時点（たとえば現在）までのCPU使用時間の累積を表す値のことを指
す。詳細については後述する。
【００３６】
本明細書では、「CPU使用率」 CPU utilization という語は、或る処理の全体もしくは一部にかかった、CPU時間を転送時間（転送処理中に経過した実時間）で割った比率のことを指す。
【００３７】
〔２  概要〕
〔２．１  転送時間の予想についての概略〕
図４は、本発明の或る実施形態にかかる、仮想マシン上のサービスによるメモリページの更新／参照の頻度を動的に見積もるため、サービス毎のメモリページの更新/参照の頻度を記録するシステム 400 を説明するための機能ブロック図である。なお以下の説明では、システム 400 の構成要素が、或るホストコンピュータ（あるいは、ホストサーバ、または単に物理サーバもしくはサーバとも称する； 図示せず）の上で動作しているものとして説明してゆくが、別の手法として、これらの構成要素が複数のホストコンピュータの上にまたがって存在していてもよいし、または、システム 400 を動作させるコンピュータと仮想マシンを動作させるコンピュータが別であるように構成することも可能である。
【００３８】
システム 400 は、ホストコンピュータ（図示せず）上で動作する三個の仮想マシン 402, 404, 406 を包含している。なおここでの仮想マシンの数は単に例示に過ぎず、適切な他の個数の仮想マシンを使用することももちろん可能である。
【００３９】
さらにシステム 400 は、参照／更新頻度記録部 410 と、CPU時間記録部 412 と、転送時間記録部 414 と、方式選択部 416 と、VM選択部 418 と、転送制御部 420 とを含む。
【００４０】
参照／更新頻度記録部 410 は、仮想マシン 402, 404, 406 のページ（メモリページ）参照頻度および／もしくは更新頻度を記録し、適切な時期に方式選択部416 およびVM選択部 418 へと記録を出力する（より詳しくは後述する）。
【００４１】
CPU時間記録部 412 は、仮想マシン 402, 404, 406 を動作させているホストコンピュータのCPU（図示せず）の、或る作業（或る仮想マシンの転送など）にかかったCPU時間の記録を行い、適切な時期に方式選択部 416 およびVM選択部 418 へと記録を出力する（より詳しくは後述する）。
【００４２】
転送時間記録部 414 は、或る仮想マシンの転送にかかった実時間を記録する（より詳しくは後述する）。
【００４３】
方式選択部 416 は、CPU時間記録部 412 および転送時間記録部 414 の出力を承けて、適切な転送方式を判断し、転送制御部 420 へと出力する。転送方式は例えば、pull方式、停止転送方式、push方式、およびそれらの組み合わせ、から成る群から選択できるが、これらに限定はされない。
【００４４】
VM選択部 418 は、CPU時間記録部 412 および転送時間記録部 414 の出力を承けて、転送させるのに適切な仮想マシンを（例えば仮想マシン 402, 404, 406 の中から）選択して、転送制御部 420 へと報知する。
【００４５】
転送制御部 420 は、方式選択部 416 およびVM選択部 418 の出力を承けて、どの仮想マシンをどの方式で転送させればよいかを判断する。
【００４６】
〔２．２  転送対象とする仮想マシンを選択することについての概略〕
複数の仮想マシンが動作するホストサーバからいずれかの仮想マシンを転送させるにあたっては、上述した転送制御部 420 が、各仮想マシンの転送時間、または、各仮想マシンの転送処理が必要とするCPU時間もしくはCPU使用率、を見積もって、もっとも転送させ
やすい仮想マシンを選択して転送対象とする。
【００４７】
より具体的に述べると、方式選択部 416 およびVM選択部 418 が、参照／更新頻度記録部 410 、CPU時間記録部 412 、転送時間記録部 414 から得られた情報に基づいて、仮想マシン毎に転送時間および／もしくはCPU時間および／もしくはCPU使用率を算出する。そして、これらの算出結果から転送するにふさわしい仮想マシンを決定し、転送制御部 420
へと通知する（図４参照）。
【００４８】
これにより、従来技術では実現が困難であった、転送処理が必要とする転送時間および／もしくはCPU時間ができるだけ少なくなるような仮想マシンの選択が可能になる。
【００４９】
〔２．３  仮想マシン転送方式の選択についての概略〕
仮想マシンを転送させる際には、その転送方式の選択についても考慮できる。
【００５０】
転送方式を決定するにあたっては、方式選択部 416 が、各転送方式について、転送処理が必要とする転送時間および／もしくはCPU時間および／もしくはCPU使用率を上記方法で見積もる。
【００５１】
より具体的には、参照／更新頻度記録部 410 、CPU時間記録部 412 、転送時間記録部 414 から得られた情報に基づいて、仮想マシン毎の転送時間および／もしくはCPU時間および／もしくはCPU使用率を算出して、この算出結果に基づき転送方式を決定し、転送制御部 420 に通知する（図４参照）。
【００５２】
これにより、従来技術では困難であった、最適な仮想マシン転送方式の選択が可能となる。
【実施例】
【００５３】
以降の詳細な記載は、詳細な記載の一部を成す付随図面への参照を含んでいる。これらの図面は、あくまで例示のために、本発明を実施できる特定の実施形態群を示している。これらの実施形態群（本明細書中では「実施例」とも称する）は、当業者が本発明を実施できる程度に詳細に記載してある。これらの実施形態群は、利用可能な他の実施形態と組み合わせることもでき、あるいは、本発明の範囲を逸脱すること無く構造的変更および論理的変更を施すこともできる。したがって、以降の詳細な記載は、限定的なものとして解釈されるものでは無い。
【００５４】
〔３  転送時間の予想〕
図５は、転送対象とする仮想マシンを選択する際の手法の概念を説明するための図である。ここでは、複数の物理ホストサーバからなる環境において、それぞれの物理ホストサーバ上に複数の仮想マシン（VM）が動作している状況を示している。各物理ホストサーバは仮想マシンモニタを有し、おのおのの裡に在る仮想マシンの状況を監視できる。
【００５５】
本発明のいくつかの実施形態群においては、これらのうちの一つの物理サーバの負荷が高くなったときに、この物理サーバ上の仮想マシンを他の物理サーバに転送させることにより動的負荷分散を行う。
【００５６】
〔３．１  高速な負荷分散を指向する実施例〕
図５を用いてさらに説明する。図５には、物理（ホスト）サーバ 502, 512, 522 が在り、サーバ 502 上では、VM 503, 504, 505 および仮想マシンモニタ 508 が動作しており、以下同様にサーバ 512, 522 上ではそれぞれVM 513, 514 および仮想マシンモニタ 518 とVM 523, 524 および仮想マシンモニタ 528 が動作しており、それぞれのサーバはネットワーク（バス）で接続されている。
【００５７】
さてこの環境が稼動している際に何らかの原因でサーバ 502 に高負荷がかかったことが仮想マシンモニタ 508 からわかったとする。すると、サーバ 502 上の仮想マシン 503, 504, 505 のいずれかを他の物理サーバ 512, 522 へと転送させて負荷分散を行うことが求められる。このとき、仮想マシン 503, 504, 505 のどれが最も高速に転送できるのかを決定することで、可能なかぎり高速な負荷分散が実現できる。
【００５８】
図６は、図４に示した機構を高速な負荷分散に特化させた変形例を示す図である。なお図６中の構成要素に付した参照番号は、図４のそれと区別する意味で末尾に記号 "-6" がふってある。この末尾の記号以外が同じである構成要素同士の差異は、無いかもしくは当業者がその類似性を理解できる範囲内にとどめられる。また、以降の記載に現われる同様な図面・参照番号についても同様に理解されたい。
【００５９】
図６では、或る物理ホストサーバ（図示せず）上で稼動する仮想マシン 402-6, 404-6,
406-6 を、システム 400-6 が仮想マシンモニタ（図示せず）を用いて監視し適宜仮想マシンの転送処理をする際の判断を行う。
【００６０】
参照／更新頻度記録部 410-6 は、各仮想マシンが持つページの更新頻度および／もしくは参照頻度を計測し、将来のために統計情報を保持する。転送時間記録部 414-6 は、仮想マシン転送処理時の1ページあたりの転送時間を計測し、将来のために統計情報を保持する。なお、転送（実）時間の算出方法についての詳細は後述する。
【００６１】
適切な量の統計情報が得られたところで、図７に示す手順で転送処理を行う。
図７に示すフローチャートでは、まずステップ S702 で、過去の更新頻度情報と転送にかかった転送時間の統計情報とから、転送処理にかかる時間を各仮想マシン毎に算出して見積る。すべての仮想マシンについて算出が完了すると、ステップ S704 に進む。
【００６２】
ステップ S704 では、すべての仮想マシンのうち、転送時間が最短となることが見積もられた仮想マシンを決定する。
そしてステップ S706 では、決定された仮想マシンの転送を行う。
【００６３】
〔３．２  低負荷な負荷分散を指向する実施例〕
高負荷な物理ホストサーバ上で動作する仮想マシンを転送させる際には、最も低負荷に転送できるものを転送対象として選択することもできる。こうすることによって、転送処理による負荷上昇をできるだけ抑える負荷分散が可能となる。
【００６４】
図８は、図４に示した機構を低負荷な負荷分散に特化させた変形例を示す図である。図８では、或る物理ホストサーバ（図示せず）上で稼動する仮想マシン 402-8, 404-8, 406-8 を、システム 400-8 が仮想マシンモニタ（図示せず）を用いて監視し適宜仮想マシンの転送処理をする際の判断を行う。
【００６５】
参照／更新頻度記録部 410-8 は、各仮想マシンが持つページの更新頻度および／もしくは参照頻度を計測し、将来のために統計情報を保持する。CPU時間記録部 412-8 は、仮想マシン転送処理時の1ページあたりのCPU時間を計測し、将来のために統計情報を保持する。なお、CPU時間の算出方法についての詳細は後述する。
【００６６】
適切な量の統計情報が得られたところで、図９に示す手順で転送処理を行う。
【００６７】
図９に示すフローチャートでは、まずステップ S902 で、過去の更新頻度情報と転送にかかったCPU時間の統計情報とから、転送処理にかかるCPU時間を各仮想マシン毎に算出して見積る。すべての仮想マシンについて算出が完了すると、ステップ S904 に進む。
【００６８】
ステップ S904 では、すべての仮想マシンのうち、転送にかかるCPU時間が最短となることが見積もられた仮想マシンを決定する。
【００６９】
そしてステップ S906 では、決定された仮想マシンの転送を行う。
【００７０】
〔４  仮想マシン転送方式（移動方式）の選択〕
図５に戻り、今度は転送方式を選択して仮想マシンの転送を行うことを考える。高負荷がかかったサーバ 502 上の仮想マシン 503, 504, 505 のいずれかを他の物理サーバ 512, 522 へと転送させて負荷分散を行うことが求められたときに、仮想マシンを最も高速に転送できる転送方式を決定することで、動的負荷分散が実現できる。
【００７１】
〔４．１  高速な負荷分散を指向する実施例〕
図１０は、図４に示した機構を高速な負荷分散に特化させた変形例を示す図である。図１０では、或る物理ホストサーバ（図示せず）上で稼動する仮想マシン 402-10, 404-10,
406-10 を、システム 400-6 が仮想マシンモニタ（図示せず）を用いて監視し適宜仮想マシンの転送処理をする際の判断を行う。
【００７２】
参照／更新頻度記録部 410-10 は、各仮想マシンが持つページの更新頻度および／もしくは参照頻度を計測し、将来のために統計情報を保持する。転送時間記録部 414-10 は、仮想マシン転送処理時の1ページあたりの転送（実）時間を計測し、将来のために統計情報を保持する。
【００７３】
適切な量の統計情報が得られたところで、図１１に示す手順で転送処理を行う。
【００７４】
図１１に示すフローチャートでは、まずステップ S1102 で、過去の更新頻度情報と転送にかかった転送時間の統計情報とから、転送処理にかかる（実）時間を各転送方式毎に算出して見積る。考慮するすべての転送方式について算出が完了すると、ステップ S1104
に進む。
【００７５】
ステップ S1104 では、考慮したすべての転送方式のうち、転送時間が最短となることが見積もられた転送方式を決定する。
【００７６】
そしてステップ S1106 では、決定された転送方式により、或る仮想マシンの転送を行う。
【００７７】
〔４．２  低負荷な負荷分散を指向する実施例〕
本発明の或る実施形態においては、図８の実施例と同様の考えかたを以って、低負荷な負荷分散を指向した転送方式の選択を行う変形例も想定されている。図１２は、そうした変形例を示す図であって、或る物理ホストサーバ（図示せず）上で稼動する仮想マシン 402-12, 404-12, 406-12 を、システム 400-12 が仮想マシンモニタ（図示せず）を用いて監視し適宜仮想マシンの転送処理をする際の判断を行う。
【００７８】
参照／更新頻度記録部 410-12 は、各仮想マシンが持つページの更新頻度および／もしくは参照頻度を計測し、将来のために統計情報を保持する。CPU時間記録部 412-12 は、仮想マシン転送処理時の1ページあたりの転送にかかったCPU時間を計測し、将来のために統計情報を保持する。
【００７９】
適切な量の統計情報が得られたところで、図１３に示す手順で転送処理を行う。
【００８０】
図１３に示すフローチャートでは、まずステップ S1302 で、過去の更新頻度情報と転送にかかったCPU時間の統計情報とから、転送処理にかかるCPU時間を各転送方式毎に算出して見積る。すべての転送方式について算出が完了すると、ステップ S1304 に進む。
【００８１】
ステップ S1304 では、考慮したすべての転送方式のうち、転送時間が最短となることが見積もられた転送方式を決定する。
【００８２】
そしてステップ S1306 では、決定された転送方式により、或る仮想マシンの転送を行う。
【００８３】
こうした実施例では、転送時間が最短となる転送方式を用いて仮想マシンを転送させるため、低負荷な負荷分散を実現できる。
【００８４】
〔５  参照／更新頻度記録部の動作についての詳細〕
以降、さらに詳細な機構の説明を行ってゆく。
【００８５】
或る実施形態においては、図４（またはそれに類似するということを上述した図、以下同様）の参照／更新頻度記録部 410 （または類似の構成要素、以下同様）は、n秒間に1回以上更新したメモリページ数もしくは参照したメモリページ数を記録する。
【００８６】
こうした参照／更新頻度の記録にあたっては、例えば、各仮想マシン毎に、その仮想マシンがページを更新もしくは参照したことを管理するビットマップを用いることができる。仮想マシンが、ページの更新もしくは参照を行うと、ビットマップ上のそのページに該当するビットを0から1に変化させる。その後、このビットマップを走査し、1となっているビットを数えることで、更新もしくは参照したページ数を管理することができるのである。
【００８７】
図１４には、参照／更新頻度記録部 410 により記録される、更新（参照）ページ数管理表の例を示す。同様の手法により、参照ページ数管理表も作成できる。こうした管理表は、存在する各仮想マシンごとに作成するのが好ましい。図１４に示した例では、或るひとつの仮想マシンを成すページのうち、10秒間に更新されたページ数を、1秒ごとに記録してある。
【００８８】
なお、こうした管理表は、参照／更新頻度記録部 410 が、適切な外部の格納手段に保存しておいて必要な際に参照することもできるし、または、参照／更新頻度記録部 410 自身がそうした格納手段を内包し管理表を保存することも可能である。
【００８９】
こうした管理表は、或る一定期間（例えば図１４の例では10秒）内において、時刻n秒から(n+1)秒までの間に更新（参照）されたページ数を「n〜(n+1)秒間の更新ページ数」に記録し、同様にその他の区間についても記録するようにできる。当然のことながら、この区間の時間幅は他の任意の値に定めることもできる。
【００９０】
こうした管理表には、現在計測中である期間（図１４の例では「記録中」と表記してある）のほかに、少なくとも1世代前の記録情報も保持できる。更新（参照）ページ数の情報の問い合わせがなされると、管理表は例えば以下のいずれかの情報を返すことができる。
◆1世代前の更新（参照）数
◆1世代前〜n世代前の更新（参照）数の単純平均
◆1世代前〜n世代前の更新（参照）数の重み付け平均
【００９１】
なお、管理表からは、他にも例えば任意のm世代前からn世代前までの更新（参照）数の単純平均／重み付け平均（m ≦ n の自然数）の情報や、または当業者が適切であると考える統計的数値の情報なども返すことが可能である。
【００９２】
図１５は、参照／更新頻度記録部 410 が行う、更新（参照）ページ数記録処理を表したフローチャートである。
【００９３】
まず、変数 count の初期値を0として処理を開始する。
【００９４】
そしてステップ S1502 では、変数 count が、閾値としての一定数（適切な値を定めることができる）未満であるかどうかを判定する。またこの一定数は、記録する期間の秒数でもある。例えば、図１４に示した例のように、1秒きざみに10秒間測定する場合は、一定数は10となる。変数 count が一定数未満であればステップ S1504 へ、一定数以上であったならばステップ S1512 へと進む。
【００９５】
ステップ S1504 では1秒間のスリープが行われる。なお、図１５の例では、測定が1秒きざみであるので、スリープ時間は1秒であるが、他の実施形態で測定がt秒きざみである場合には、スリープ時間はt秒となる。このスリープの間に測定対象となっている仮想マシンは動作し、ページの更新（参照）を行う。
【００９６】
ステップ S1506 では、仮想マシン管理機構（図５の仮想マシンモニタ 508 など）を用いて、仮想マシンがページを更新もしくは参照したことを管理するビットマップ（更新（参照）ビットマップと略記する）に対し、対応するビットが記録される。そして1秒後にスリープが終わり処理が再開されると、更新（参照）ビットマップの走査が行われ、ビット数、すなわち或る時刻からスリープ時間分経過した時刻の間（たとえば時刻0から時刻1の間）に更新（参照）されたページ数、が記録される。
【００９７】
そしてステップ S1508 では、変数 count をインクリメントし、ステップ S1502 に戻る。
変数 count が一定数に達するまで、ステップS1502 からステップ S1508 の処理をくりかえしてゆき、図１４に示したような管理表に更新（参照）したページ数をカウントして記録してゆく。
【００９８】
そして変数 count が一定数に達すると、ステップS1512 で更新（参照）ビットマップのクリアを行って、ステップ S1514 で変数 count を0に戻してから、ステップS1502 に戻る。
【００９９】
なお、上記では更新（参照）ビットマップと表記して更新処理と参照処理を特に区別して記載しなかったが、実際には、ビットマップと管理表を、更新処理と参照処理とで別々に作成して使用できる。そしてこれらのビットマップと管理表についての処理手順は、実質的に同一とすることができる。
【０１００】
図１６には、或るデータベース（DB）サービス動作時に更新されるメモリページ数の時間依存変化を、グラフ化した例を示してあり、ここでは1≦n≦10としている。 "actual" と称した折れ線は、図１４のような管理表の値をプロットしたものであって、また、 "approximate" と称した実線は、 "actual" から適切な近似式を（例えば最小二乗法などで）算出したものである。ここでは一例として、"approximate" の関係式を、 D を更新されるページファイルの数、 t を経過実時間（秒）として、
【０１０１】
【数１】
0004894745.tif 000002
【０１０２】
と示してある。ここで M および k は最小二乗法により算出した係数であって、 M = 1.00×105 、 k = -6.37×10-1 である。
こうした近似式と、過去に実際に行われた転送処理における、転送速度、1ページ転送
あたりのCPU時間、転送方式についての統計情報と、によって、仮想マシンの転送実時間、および転送処理が必要とするCPU時間を見積もることができる。
【０１０３】
〔６  転送時間記録部の動作についての詳細〕
転送時間記録部（たとえば、図４の転送時間記録部 414 ）は、仮想マシンの実際の転送処理（または、その一部）にかかった実時間を記録する役割を担う。
【０１０４】
図１７には、転送時間記録表の例を示す。転送時間記録部は、転送時間記録表に、1ページあたりの転送にかかった（実）時間を記録する。こうした転送時間記録表では、直近の記録情報を1つ保持すればよいが、好ましくは、より正確な転送時間についての情報を提供するために、数世代前の情報を保持する。また、転送先により、通信性能が異なる可能性があるため、転送時間記録表には転送ノード毎に情報を記録することが好ましい。
【０１０５】
なお、こうした転送時間記録表は、転送時間記録部（たとえば、図４の転送時間記録部
414 ） が、適切な外部の格納手段に保存しておいて必要な際に参照することもできるし、または、転送時間記録部自身がそうした格納手段を内包し転送時間記録表を保存することも可能である。
【０１０６】
転送時間の問い合わせがなされると、転送時間記録表は、例えば以下のいずれかの情報を返すことができる。
◆1世代前の更新（参照）数
◆1世代前〜n世代前の更新（参照）数の単純平均
◆1世代前〜n世代前の更新（参照）数の重み付け平均
【０１０７】
なおこうした転送時間記録表は、上述した更新（参照）ページ数管理表と同様に、任意の世代間の更新（参照）数の単純平均／重み付け平均（m ≦ n の自然数）の情報なども提供できる。
【０１０８】
転送時間記録部は、転送時間の記録を行うために、転送処理の前後にて転送開始時刻と終了時刻とを取得する。さらに転送時間記録部は、転送処理中には、転送ページ数を取得する。そうしてから、転送時間記録部はこれらの情報から、1ページあたりの転送時間を算出して、転送時間記録表に記録する。
【０１０９】
図１８には、転送時間記録処理のフローチャートを示す。
【０１１０】
まずステップ S1802 では、転送開始時刻が（当該技術分野において周知である計時手段を用いるなどして）取得される。
【０１１１】
そしてステップ S1804 では、転送処理を行い、転送処理が開始して終了するまでの転送ページ数をカウントして、その値を適切な格納手段に保持し、ステップ S1806 で転送終了時刻が取得される。
【０１１２】
その後ステップ S1808 で、これまでのステップで取得している転送開始時刻・転送終了時刻・転送ページ数を用いて、1ページあたりの転送時間を算出し、記録する。なおこうした算出にあたっては、単純に転送ページ数を時間で割ってもよいし、または、当業者が適切と考える重み付けを施して計算を行ってもよい。
【０１１３】
〔７  CPU時間記録部の動作についての詳細〕
CPU時間記録部（たとえば、図４のCPU時間記録部 412 ）は、仮想マシンの実際の転送処理（または、その一部）にかかったCPU時間を記録する役割を担う。
【０１１４】
図１９には、CPU時間記録表の例を示す。CPU時間記録部は、CPU時間記録表に、1ページ
あたりの転送にかかったCPU時間を記録する。こうしたCPU時間記録表では、直近の記録情報を1つ保持すればよいが、好ましくは、正確なCPU時間についての情報を提供するために、数世代前の情報を保持する。また、転送先により、通信性能が異なる可能性があるため、CPU時間記録表には転送ノード毎に情報を記録することが好ましい。
【０１１５】
転送にかかったCPU時間についての問い合わせがなされると、CPU時間記録表は、例えば以下のいずれかの情報を返すことができる。
◆1世代前の更新（参照）数
◆1世代前〜n世代前の更新（参照）数の単純平均
◆1世代前〜n世代前の更新（参照）数の重み付け平均
【０１１６】
CPU時間記録部は、CPU時間の記録を行うために、例えば以下の機能を持つプロファイラを用いることができる。
◇一定期間（例えば1ms）おきに割込みを上げる（割込み処理を行う）。
◇割込み発生時の走行アドレスを取得し、転送処理かその他の処理（idleを含む）を判別し、転送処理の場合、カウントする。
◇プロファイラ停止時に、プロファイラの動作開始から停止までの時間と、カウント数とを用いて、転送処理にかかったCPU時間を算出する。具体的には、 "(割込み間隔)/(プロファイラ動作時間)*(カウント数)" をCPU時間とする。
【０１１７】
なお、上述したようなプロファイル取得によるCPU時間の算出方法は、一般に広く用いられている手法である。
【０１１８】
転送処理の前後にて、プロファイラの起動／停止を行い、CPU時間を取得する。また、転送処理中には、転送ページ数を取得する。これらの情報から、1ページあたりの転送時間を算出し、記録表に記録する。
【０１１９】
図２０にCPU時間記録部の処理のフローチャートを示す。
【０１２０】
まずステップ S2002 で、（上述したような）プロファイラを起動する。
【０１２１】
次にステップ S2004 で、転送処理を行って、転送ページ数をカウントし、得られた値を適切な格納手段に保持する。
【０１２２】
そしてステップ S2006 でプロファイラを停止し、上述したような手法を用いてCPU時間を算出する。
【０１２３】
その後ステップ S2008 で、これまでのステップで取得している転送開始時刻・転送終了時刻・転送ページ数を用いて、1ページあたりの転送にかかるCPU時間を算出し、記録する。なおこうした算出にあたっては、単純に転送ページ数を時間で割ってもよいし、または、当業者が適切と考える重み付けを施して計算を行ってもよい。
【０１２４】
〔８  Live Migration方式での転送時間とCPU時間の算出方法についての詳細〕
本発明の或る実施形態においては、転送方式としてLive Migration方式を考慮する。こうした場合に、転送にかかる実時間とCPU時間を算出する手順についてさらに詳述してゆく。
【０１２５】
一般に、Nページを転送する際にかかる時間Tは、下記の式(2)のように求められる。
【０１２６】
【数２】
0004894745.tif 000003
【０１２７】
ここで、 a は1ページあたりの転送時間であり、転送時間記録部より取得する。 b は初期コストであり、システム構成に依存して定まる。ただし、一般に b はせいぜい数100μs程度の値であるので、0と見做してもよい。
【０１２８】
仮想マシンを構成するページ数を N1 とすると、1回目の転送時間 T1 は、式(2)より、
【０１２９】
【数３】
0004894745.tif 000004
【０１３０】
となる。
【０１３１】
また、仮想マシンが時間 t の間に更新するページ数 N は、下記の式(4)で近似できる。
【０１３２】
【数４】
0004894745.tif 000005
【０１３３】
ここでこの M および k の値は、更新頻度記録表の情報を元に例えば最小二乗法により算出する。
【０１３４】
式(4)より、1回目の転送時間 T1 の間に更新されたページ数、すなわち2回目に転送するページ数 N2 は、
【０１３５】
【数５】
0004894745.tif 000006
【０１３６】
である。
【０１３７】
これを、2回目以降も同様に行ってゆく。具体的には、i回目の転送時間 Ti は、
【０１３８】
【数６】
0004894745.tif 000007
【０１３９】
で表され、また(i+1)回目の転送ページ数 Ni+1は、
【０１４０】
【数７】
0004894745.tif 000008
【０１４１】
で表される。
【０１４２】
そして、 Ti および／もしくはNiが所定の閾値以下となるまで、上記計算をくりかえす。こうした閾値は、例えば Tiについての30ms、 Ni について30ページ、と設定できる。
【０１４３】
この計算がj回くりかえされたとすると、総転送時間 Tallは、
【０１４４】
【数８】
0004894745.tif 000009
【０１４５】
と算出できる。
【０１４６】
1ページ転送あたりにかかるCPU時間を c とすると、転送処理全体にかかる総CPU時間 Call は、
【０１４７】
【数９】
0004894745.tif 000010
【０１４８】
と算出できる。なお、 c は、CPU時間記録部より取得する。
【０１４９】
そして、転送処理中の平均CPU使用率Paveは、
【０１５０】
【数１０】
0004894745.tif 000011
【０１５１】
となる。
【０１５２】
あるいは別の手法として、n回目の転送処理中のCPU使用時間 Cn を
【０１５３】
【数１１】
0004894745.tif 000012
【０１５４】
（ここで c は1ページ転送あたりのCPU時間とする）と算出し、n回目の転送処理中のCPU使用率 Pn を
【０１５５】
【数１２】
0004894745.tif 000013
【０１５６】
と算出することも可能であるが、実効的には、転送処理中の平均CPU使用率の方が重要であると考えられる。
【０１５７】
〔９  Push/Pull併用方式での転送時間とCPU時間の算出方法についての詳細〕
本発明の或る実施形態においては、転送方式として上述したPush/Pull併用方式を考慮する。こうした場合には、まず、push方式の転送時間 T1 を下記の式(13)で算出する。
【０１５８】
【数１３】
0004894745.tif 000014
【０１５９】
ここで T は転送時間、 N は転送ページ数、 a は1ページ転送の時間、 b はシステム依存の初期コストである。
【０１６０】
次に、ページ更新について統計情報から得られた近似式より、1回目の転送時に更新されたページ数 N2 を算出すると
【０１６１】
【数１４】
0004894745.tif 000015
【０１６２】
となる。即ち、push方式で転送されるページ数は N2となる。
【０１６３】
そして、Pull方式の転送時間 T2を、ページ参照について統計情報から得られる下記の近似式(15)
【０１６４】
【数１５】
0004894745.tif 000016
【０１６５】
を用いて、 R が一定数以上になる（則ち、参照ページが一定数以下になる）数 t を求めることで見積ることができる。なお、式(15)中の L 、 l 、 R は、例えば最小二乗法で求められる係数であって、 L = 5.24×105 、 l = -1.80 、 R = 4.19×105 となる。
【０１６６】
このようにすることで、まずPush方式での転送処理中のCPU時間 C1 が、
【０１６７】
【数１６】
0004894745.tif 000017
【０１６８】
と求まる。ここで c は1ページ転送あたりのCPU時間である。
【０１６９】
すると、Push方式での転送処理中のCPU使用率 P1 は、
【０１７０】
【数１７】
0004894745.tif 000018
【０１７１】
となる。
一方Pull方式での転送処理中のCPU時間 C2 は、
【０１７２】
【数１８】
0004894745.tif 000019
【０１７３】
と求まる。ここで p はページフォールト処理にかかるCPU時間である。
【０１７４】
そしてPull方式での転送処理中の平均CPU使用率 P2 は、
【０１７５】
【数１９】
0004894745.tif 000020
【０１７６】
となる。
【０１７７】
本発明を示し記載するにあたり、好ましい実施形態を参照してはいるが、本発明の本質
および範囲から逸脱すること無く多種多様な変更および修正を施すことが可能であるということを、当業者は容易に且つ正しく理解できる。開示した実施形態と、上述した変形例と、それらすべてに関する均等物とを包括するものとして、請求項を解釈されたい。
【０１７８】
〔１０  付記〕
（付記１）
物理マシン上の仮想マシンを他の物理マシン上の仮想マシンに移動する際の移動対象となる仮想マシンを決定する仮想マシン決定プログラムにおいて、コンピュータを、
仮想マシン毎にかつ経過時間毎に更新されたページ数を有する過去の記録であるページ数管理表から経過時間毎に更新されたページ数を読み出し、仮想マシンを搭載する物理マシンから他の物理マシンに転送する１ページあたりの転送時間を有する過去の記録である転送時間記録表から１ページあたりの転送時間を読み出し、読み出されたページ数と転送時間とから、所定の物理マシン上の所定の仮想マシンを他の物理マシン上の他の仮想マシンにページ転送するのに要する転送時間を、仮想マシン毎に算出する算出手段、
算出された転送時間が最も小さな仮想マシンを、移動対象の仮想マシンとして決定する仮想マシン決定手段、
として機能させるための仮想マシン決定プログラム。
（付記２）
前記更新されたページ数に代えて参照されたページ数であることを特徴とする付記１記載の仮想マシン決定プログラム。
（付記３）
前記転送時間は転送にかかるCPU時間またはCPU使用率であることを特徴とする付記１または２記載の仮想マシン決定プログラム。
（付記４）
前記算出手段は、ページの移動方式毎に、所定の物理マシン上の所定の仮想マシンを他の物理マシン上の他の仮想マシンにページ転送するのに要する転送時間を算出し、
前記コンピュータを、
算出された転送時間が最も小さな移動方式を、仮想マシンの移動方式として決定する移動方式決定手段、
として更に機能させることを特徴とする付記１から３の何れかに記載の仮想マシン決定プログラム。
（付記５）
前記移動方式は、Live Migration方式、かつ/または、push方式、かつ/または、pull方式、かつ/または、push/pull併用方式であることを特徴とする付記４記載の仮想マシン決定プログラム。
（付記６）
仮想マシン毎にかつ経過時間毎に更新されたページ数を有する過去の記録であるページ数管理表から経過時間毎に更新されたページ数を読み出し、仮想マシンを搭載する物理マシンから他の物理マシンに転送する１ページあたりの転送時間を有する過去の記録である転送時間記録表から１ページあたりの転送時間を読み出し、読み出されたページ数と転送時間とから、所定の物理マシン上の所定の仮想マシンを他の物理マシン上の他の仮想マシンにページ転送するのに要する転送時間を、仮想マシン毎に算出する算出手段と、
算出された転送時間が最も小さな仮想マシンを、移動対象の仮想マシンとして決定する仮想マシン決定手段と
を具えることを特徴とする、仮想マシン決定装置。
（付記７）
仮想マシン毎にかつ経過時間毎に更新されたページ数を有する過去の記録であるページ数管理表から経過時間毎に更新されたページ数を読み出し、仮想マシンを搭載する物理マシンから他の物理マシンに転送する１ページあたりの転送時間を有する過去の記録である転送時間記録表から１ページあたりの転送時間を読み出し、読み出されたページ数と転送
時間とから、所定の物理マシン上の所定の仮想マシンを他の物理マシン上の他の仮想マシンにページ転送するのに要する転送時間を、仮想マシン毎に算出するステップと、
算出された転送時間が最も小さな仮想マシンを、移動対象の仮想マシンとして決定するステップと
を含むことを特徴とする、仮想マシン決定方法。
【図面の簡単な説明】
【０１７９】
【図１】従来技術にかかるpush方式を用いた、仮想マシンの転送方法を説明する概念図である。
【図２】従来技術にかかる停止転送方式を用いた、仮想マシンの転送方法を説明する概念図である。
【図３】従来技術にかかるpull方式を用いた、仮想マシンの転送方法を説明する概念図である。
【図４】本発明の或る実施形態にかかる、仮想マシン上のサービスによるメモリページの更新／参照の頻度を動的に見積もるため、サービス毎のメモリページの更新/参照の頻度を記録する機構を説明するための機能ブロック図である。
【図５】転送対象とする仮想マシンを選択する際の手法の概念を説明するための図である。
【図６】図４に示した機構を高速な負荷分散に特化させた変形例其之一を示す図である。
【図７】高速な負荷分散を指向する仮想マシン決定方法を示すフローチャートである。
【図８】図４に示した機構を低負荷な負荷分散に特化させた変形例其之一を示す図である。
【図９】低負荷な負荷分散を指向する仮想マシン決定方法を示すフローチャートである。
【図１０】図４に示した機構を高速な負荷分散に特化させた変形例其之二を示す図である。
【図１１】高速な負荷分散を指向する転送方式決定方法を示すフローチャートである。
【図１２】図４に示した機構を低負荷な負荷分散に特化させた変形例其之二を示す図である。
【図１３】低負荷な負荷分散を指向する転送方式決定方法を示すフローチャートである。
【図１４】参照／更新頻度記録部により記録される、更新ページ数管理表の例である。
【図１５】更新（参照）ページ数記録処理を表すフローチャートである。
【図１６】或るデータベースサービス動作時に更新されるメモリページ数の時間依存変化を、グラフ化した例である。
【図１７】転送（実）時間記録表の例である。
【図１８】転送（実）時間記録処理を表すフローチャートである。
【図１９】転送にかかったCPU時間を記録する表の例である。
【図２０】転送にかかったCPU時間の記録処理を表すフローチャートである。
【符号の説明】
【０１８０】
102  ……  push方式による転送元仮想マシン
104  ……  push方式による転送先仮想マシン
202  ……  停止転送方式による転送元仮想マシン
204  ……  停止転送方式による転送先仮想マシン
302  ……  pull方式による転送元仮想マシン
304  ……  pull方式による転送先仮想マシン
400  ……  仮想マシン決定システム
402  ……  仮想マシン
404  ……  仮想マシン
406  ……  仮想マシン
410  ……  参照／更新頻度記録部
412  ……  CPU時間記録部
414  ……  転送時間記録部
416  ……  方式選択部
418  ……  VM選択部
420  ……  転送制御部
400-6  ……  仮想マシン決定システム
402-6  ……  仮想マシン
404-6  ……  仮想マシン
406-6  ……  仮想マシン
410-6  ……  参照／更新頻度記録部
414-6  ……  転送時間記録部
418-6  ……  VM選択部
420-6  ……  転送制御部
400-8  ……  仮想マシン決定システム
402-8  ……  仮想マシン
404-8  ……  仮想マシン
406-8  ……  仮想マシン
410-8  ……  参照／更新頻度記録部
412-8  ……  CPU時間記録部
418-8  ……  VM選択部
420-8  ……  転送制御部
400-10  ……  仮想マシン決定システム
402-10  ……  仮想マシン
404-10  ……  仮想マシン
406-10  ……  仮想マシン
410-10  ……  参照／更新頻度記録部
414-10  ……  転送時間記録部
416-10  ……  方式選択部
420-10  ……  転送制御部
400-12  ……  仮想マシン決定システム
402-12  ……  仮想マシン
404-12  ……  仮想マシン
406-12  ……  仮想マシン
410-12  ……  参照／更新頻度記録部
412-12  ……  CPU時間記録部
416-12  ……  方式選択部
420-12  ……  転送制御部
【図１】
0004894745.tif 000021
【図２】
0004894745.tif 000022
【図３】
0004894745.tif 000023
【図４】
0004894745.tif 000024
【図５】
0004894745.tif 000025
【図６】
0004894745.tif 000026
【図７】
0004894745.tif 000027
【図８】
0004894745.tif 000028
【図９】
0004894745.tif 000029
【図１０】
0004894745.tif 000030
【図１１】
0004894745.tif 000031
【図１２】
0004894745.tif 000032
【図１３】
0004894745.tif 000033
【図１４】
0004894745.tif 000034
【図１５】
0004894745.tif 000035
【図１６】
0004894745.tif 000036
【図１７】
0004894745.tif 000037
【図１８】
0004894745.tif 000038
【図１９】
0004894745.tif 000039
【図２０】
0004894745.tif 000040