(57)【要約】  ライブマイグレーション行う際に有用な情報を、仮想マシンの通常動作時においても簡便に取得し、または効率的な計画・実行ができるようにする。仮想マシンのライブマイグレーションを管理するプログラムであって、前記仮想マシンに割り当てられたメモリのアクセス数を計数するアクセスカウンタのカウント値と、前記メモリの容量と、ライブマイグレーションでの物理マシン間のデータ転送のバンド幅とを用いて、前記仮想マシンのライブマイグレーションを実行する際のコストを推定し、更に、ライブマイグレーションの計画の策定及び実行を行う。
2013105217.tif 000002
【特許請求の範囲】
【請求項１】
仮想マシンのライブマイグレーションを管理するプログラムであって、
前記仮想マシンに割り当てられたメモリのアクセス数を計数するアクセスカウンタのカウント値と、前記メモリの容量と、ライブマイグレーションでの物理マシン間のデータ転送のバンド幅とを用いて、前記仮想マシンのライブマイグレーションを実行する際のコストを推定する、
処理をコンピュータに実行させることを特徴とするプログラム。
【請求項２】
前記コストは、メモリ転送時間である、ことを特徴とする請求項１記載のプログラム。
【請求項３】
推定された前記コストを所定の閾値と比較した結果に基づき、前記仮想マシンをライブマイグレーションの実行対象から除外し、又は、前記仮想マシンのライブマイグレーションの実行中においてはライブマイグレーションの実行を中止する、
処理をコンピュータに実行させる、ことを特徴とする請求項１又は２記載のプログラム。
【請求項４】
推定された前記コストにもとづき、複数の仮想マシンのライブマイグレーションの実行計画を策定し、
前記配置計画に基づき、ライブマイグレーションを行う、
処理をコンピュータに実行させる、ことを特徴とする請求項１ないし３のうちいずれか１項記載のプログラム。
【請求項５】
前記アクセスカウンタは、メモリへの書き込み回数を計数するものである、
ことを特徴とする請求項１ないし４のうちいずれか１項記載のプログラム。
【請求項６】
前記蓄積する処理は、複数の仮想マシンの各々に対応づけて前記アクセスカウンタの値を積算する、
処理を更に含む、ことを特徴とする請求項１ないし５のうちいずれか１項記載のプログラム。
【請求項７】
前記アクセスカウンタは、複数の仮想マシンの各々に対応づけられた複数のアクセスカウンタを含む、
ことを特徴とする請求項１ないし６のうちいずれか１項記載のプログラム。
【請求項８】
前記アクセスカウンタは、前記メモリに含まれる複数のメモリ領域の各々に対応づけられた複数のアクセスカウンタを含み、
前記蓄積する処理は、前記複数のアクセスカウンタの値を、前記複数のメモリ領域の各々に対応づけて積算する、
処理を更に含む、ことを特徴とする請求項１ないし７のうちいずれか１項記載のプログラム。
【請求項９】
推定された前記コストは、前記仮想マシンのマイグレーションにおいて、前記メモリの内容を物理マシン間で転送するのに要する推定時間を表す、ことを特徴とする請求項１ないし８のうちいずれか１項記載のプログラム。
【請求項１０】
仮想マシンのライブマイグレーションを管理する方法であって、
前記仮想マシンに割り当てられたメモリのアクセス数を計数するアクセスカウンタのカウント値と、前記メモリの容量と、ライブマイグレーションでの物理マシン間のデータ転送のバンド幅とを用いて、前記仮想マシンのライブマイグレーションを実行する際のコストを推定する、
処理を有する、ことを特徴とする方法。
【請求項１１】
前記コストは、メモリ転送時間である、ことを特徴とする請求項１０記載の方法。
【請求項１２】
推定された前記コストを所定の閾値と比較した結果に基づき、前記仮想マシンをライブマイグレーションの実行対象から除外し、又は、前記仮想マシンのライブマイグレーションの実行中においてはライブマイグレーションの実行を中止する、
処理を有する、ことを特徴とする請求項１０又は１１記載の方法。
【請求項１３】
推定された前記コストにもとづき、複数の仮想マシンのライブマイグレーションの実行計画を策定し、
前記配置計画に基づき、ライブマイグレーションを行う、
処理を有する、ことを特徴とする請求項１０ないし１２のうちいずれか１項記載の制御装置。
【請求項１４】
前記アクセスカウンタは、メモリへの書き込み回数を計数するものである、
ことを特徴とする請求項１０ないし１３のうちいずれか１項記載の方法。
【請求項１５】
前記蓄積する処理は、複数の仮想マシンの各々に対応づけて前記アクセスカウンタの値を積算する、
処理を更に含む、ことを特徴とする請求項１０ないし１４のうちいずれか１項記載の方法。
【請求項１６】
前記アクセスカウンタは、複数の仮想マシンの各々に対応づけられた複数のアクセスカウンタを含む、
ことを特徴とする請求項１０ないし１５のうちいずれか１項記載の方法。
【請求項１７】
前記アクセスカウンタは、前記メモリに含まれる複数のメモリ領域の各々に対応づけられた複数のアクセスカウンタを含み、
前記蓄積する処理は、前記複数のアクセスカウンタの値を、前記複数のメモリ領域の各々に対応づけて積算する、
処理を更に含む、ことを特徴とする請求項１０ないし１６のうちいずれか１項記載の方法。
【請求項１８】
推定された前記コストは、前記仮想マシンのマイグレーションにおいて、前記メモリの内容を物理マシン間で転送するのに要する推定時間を表す、ことを特徴とする請求項１０ないし１７のうちいずれか１項記載の方法。
【請求項１９】
仮想マシンのライブマイグレーションを管理する装置であって、
前記仮想マシンに割り当てられたメモリのアクセス数を計数するアクセスカウンタのカウント値と、前記メモリの容量と、ライブマイグレーションでの物理マシン間のデータ転送のバンド幅とを用いて、前記仮想マシンのライブマイグレーションを実行する際のコストを推定するコスト推定部、
を有する、ことを特徴とする装置。
【請求項２０】
前記コストは、メモリ転送時間である、ことを特徴とする請求項１９記載の装置。
【請求項２１】
推定された前記コストを所定の閾値と比較した結果に基づき、前記仮想マシンをライブマイグレーションの実行対象から除外し、又は、前記仮想マシンのライブマイグレーションの実行中においてはライブマイグレーションの実行を中止する、配置制御部、
を有する、ことを特徴とする請求項１９又は２０記載の装置。
【請求項２２】
推定された前記コストにもとづき、複数の仮想マシンのライブマイグレーションの実行計画を策定する配置計画部と、
前記配置計画に基づき、ライブマイグレーションを行う、マイグレーション実行部と、
を有する、ことを特徴とする請求項１９ないし２１のうちいずれか１項記載の装置。
【請求項２３】
前記アクセスカウンタは、メモリへの書き込み回数を計数するものである、
ことを特徴とする請求項１９ないし２２のうちいずれか１項記載の装置。
【請求項２４】
前記蓄積部は、複数の仮想マシンの各々に対応づけて前記アクセスカウンタの値を積算する、
ことを特徴とする請求項１９ないし２３のうちいずれか１項記載の装置。
【請求項２５】
前記アクセスカウンタは、複数の仮想マシンの各々に対応づけられた複数のアクセスカウンタを含む、
ことを特徴とする請求項１９ないし２４のうちいずれか１項記載の装置。
【請求項２６】
前記アクセスカウンタは、前記メモリに含まれる複数のメモリ領域の各々に対応づけられた複数のアクセスカウンタを含み、
前記蓄積部は、前記複数のアクセスカウンタの値を、前記複数のメモリ領域の各々に対応づけて積算する、
ことを特徴とする請求項１９ないし２５のうちいずれか１項記載の装置。
【請求項２７】
推定された前記コストは、前記仮想マシンのマイグレーションにおいて、前記メモリの内容を物理マシン間で転送するのに要する推定時間を表す、ことを特徴とする請求項１９ないし２６のうちいずれか１項記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想マシンに対する管理プログラム、方法、及び装置に関する。
【背景技術】
【０００２】
近年、物理マシン（ＰＭ：Physical Machine）上で、仮想マシン（ＶＭ：Virtual Machine）を稼働させるための仮想マシン技術（仮想化技術）が活用されている。この仮想マシン技術を利用することによって、一つの物理マシン上に、複数の仮想マシンを稼働させることができる。そして、仮想マシン毎に異なるオペレーティングシステムやアプリケーションを動作させることができる。【０００３】
サーバに仮想マシン技術を導入することにより、複数の仮想化されたサーバを１つの物理サーバに集約することができる。この集約は、合理的であり、結果的にコスト削減にもつながる。しかしながら、例えば各マシンの負荷状況の変化等が生じると、集約した仮想マシンの１つが他の仮想マシンに影響を及ぼす場合がある。このため、このような仮想マシン技術においては、仮想マシンが提供しているサービスをほとんど停止させずに別の物理マシンに移動させるライブマイグレーション（Live Migration）技術がある。【０００４】
ライブマイグレーションについて、その概要を説明する。ライブマイグレーションには、大きく分けて、「プレコピー方式」と「ポストコピー方式」がある。ライブマイグレーションを行うためには、ライブマイグレーションのターゲットとなっている仮想マシンの少なくとも物理メモリの内容、及びストレージの切り替え、ネットワークの切り替え等を行う。プレコピー方式とは、この物理メモリの内容を事前に移動させた後にＣＰＵの状態を移動させる方式をいう。これに対して、ポストコピー方式は、物理メモリの内容は移動させずに、ＣＰＵの状態等を移動させる方式をいう。この場合、物理メモリの内容が移動先のマシンに移動していないため、移動先のマシンの仮想メモリシステムのアドレス変換テーブルを空の状態としておく。このようにしておくことにより、移動先マシンでＣＰＵがメモリをアクセスする際には、初期の段階では、物理メモリに目的のデータが存在しない。このため、ページフォールトが発生し、これに対処するために、ハードディスクから物理メモリに、必要とされるページが満たされてゆく。【０００５】
なお、両方式とも、ハードディスク等の大容量メモリについては共有化を図るため、ハードディスク上の大量のデータの移動は不要である。【０００６】
従来、ライブマイグレーション要求に対してライブマイグレーション可否判断を行い、この可否判断結果が否定的である場合には、ライブマイグレーションを中止する技術がある（例えば、特許文献１）。この技術は、安全レベルの属性を各ＶＭに持たせ、安全レベルが「低」のＶＭと安全レベルが「高」のＶＭを同じコンピュータ上で動作させないようにする。これによって、安全レベル「低」のＶＭの不具合により、安全レベル「高」のＶＭの実行が脅かされるという事態を回避している。【０００７】
また、マイグレーションを実行に移す直前の段階において、負荷情報に基づいてマイグレーションの必要性を判断することで不要なマイグレーションを中止する技術がある（例えば、特許文献２）。なお、特許文献２は、負荷情報として、移行元、移行先サーバ、仮想マシンのＣＰＵ使用率やメモリ使用率を提示するにとどまる。【０００８】
また、仮想マシンが現在稼動している物理マシンから他の物理マシンへ移動するために要する時間である移動所要時間を推計する技術がある（例えば、特許文献３及び特許文献４）。特許文献３及び４では、メモリ変更率を用いて、メモリ転送時間を推計し得ることを開示する。【０００９】
また、カメラのフレームメモリに対して何回書き込みアクセスがあったかをカウントするカウンタの値を用いて、二つの連続するフレーム間の画像の差異の大きさを判定する技術がある（例えば、特許文献５）。【００１０】
ライブマイグレーションにおけるメモリ転送中にメモリが書き換えられてしまう割合（すなわち、再度コピーを実行しなければならない割合）をダーティ率（メモリ変更率）と呼ぶ。ダーティ率は、メモリ変更量をメモリ転送量で除算した値である。このダーティ率があまりに高い場合、メモリ転送を終了させることができない場合も発生する。この場合には、コンテキストを停止させ、メモリ転送を強制的に終了させる実装も行われることがある。この場合には、サービス停止の時間が許容範囲を超えてしまう可能性がある。仮想マシンのサービスを提供している顧客との間のサービスレベルアグリーメント（ＳＬＡ）に規定された、サービス停止時間の限度を超えることは避けなければならない。したがって、このような長期的なサービス停止を避けるために、ターゲットの仮想マシンのライブマイグレーションを中止し、その代わりに他の仮想マシンに対してライブマイグレーションを実行して、負荷分散を担保することも行われる場合がある。【００１１】
したがって、ライブマイグレーションを行うことによってコンテキスト停止が長期間続くような状態や、ライブマイグレーションの中止を事前に防止する必要がある。このためには、ライブマイグレーションを行う前の通常の動作時において、物理マシンに与える負荷をなるべく少なくして、メモリのダーティ率を把握しておき、ライブマイグレーション実行時におけるメモリ転送時間を予測することが必要となる。【００１２】
なお、ライブマイグレーションに要するメモリ転送時間の予測値Ｔは、メモリの容量をＭ、ライブマイグレーションで使用するデータ伝送帯域幅（転送スループット）をｔｐ、ダーティ率（メモリ変更量をメモリ転送量で除算した値）をｒとすると、以下の式で与えられる。【００１３】
Ｔ＝Ｍ／｛ｔｐ（１−ｒ）｝      ・・・（１）
したがって、通常時におけるダーティ率を得ることができれば、ライブマイグレーション時におけるメモリ転送時間を推定することができる。【００１４】
しかしながら、一般に、このダーティ率の検出には、オーバーヘッドが伴う。ライブマイグレーション中におけるダーティ率の検出の手法は以下の通りである。まず、コピー済み領域をハードウエア的に書き込み禁止領域として設定する。そして、書き込み禁止領域への書き込み要求をソフトウエア的にトラップする。このトラップによって、所定のルーチンを動作させ、特定の領域への書き込みを検出し、書き込みがあったことを示す情報を保存する。この処理は、書き込みをトラップする毎に処理ルーチンを動作させることになるため、オーバーヘッドが生じることになる。したがって、通常動作中においてダーティ率を検出するために、この仕組みを利用した場合、大きなオーバーヘッドとなってしまう。これは、仮想マシンの通常の処理を圧迫することとなる。【００１５】
したがって、ライブマイグレーションを実行していない通常動作時において、メモリダーティ率やプレコピーにおけるメモリ転送時間の推定値を簡便に把握する技術が望まれている。
【先行技術文献】
【特許文献】
【００１６】
【特許文献１】特開２０１０−２３８０４４号公報
【特許文献２】特開２０１１−１０８０１４号公報
【特許文献３】特開２０１１−１３８１８４号公報
【特許文献４】特願２０１０−２３３０２０号
【特許文献５】特開２００６−２４３９４０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１７】
１つの側面では、本発明は、ライブマイグレーション行う際に有用な情報を取得することを目的とする。
【課題を解決するための手段】
【００１８】
一実施形態によれば、仮想マシンのライブマイグレーションを管理するプログラムであって、前記仮想マシンに割り当てられたメモリのアクセス数を計数するアクセスカウンタのカウント値と、前記メモリの容量と、ライブマイグレーションでの物理マシン間のデータ転送のバンド幅とを用いて、前記仮想マシンのライブマイグレーションを実行する際のコストを推定する、処理をコンピュータに実行させるプログラムが提供される。
【発明の効果】
【００１９】
実施態様によれば、ライブマイグレーション行う際に有用となる情報を簡便に取得できる。
【図面の簡単な説明】
【００２０】
【図１】仮想マシンのライブマイグレーションの例を示す図である。
【図２】メモリのコピーの手順を示す図である。
【図３】本発明の実施例に係る装置の全体構成を示す図である。
【図４】１つの実施例を示す図である。
【図５】１つの実施例を示す図である。
【図６】１つの実施例を示す図である。
【図７】１つの実施例を示す図である。
【図８】配置管理部の処理フローを示す図である。
【図９】ＶＭ管理部におけるカウンタの処理を示す図である。
【図１０】ライブマイグレーションの計画策定と実行の例を示す図である。
【図１１】ライブマイグレーションの一連の処理の他の例を示す図である。
【図１２】１つの実施例における機能ブロック図である。
【図１３】サーバ及び仮想マシン管理装置のハードウエア構成を示す図である。
【発明を実施するための形態】
【００２１】
以下に、図面を用いて本発明の実施例を詳細に説明する。なお、以下の実施例は、発明を理解するためのものであり、本発明の範囲を限定するためのものではない点に留意すべきである。また、以下の複数の実施例は、相互に排他的なものではない。したがって、矛盾が生じない限り、実施例の各要素を組み合わせることも意図されていることに留意すべきである。また、請求項に記載された方法やプログラムに係る発明は、矛盾のない限り処理の順番を入れ替えてもよく、あるいは、複数の処理を同時に実施してもよい。そして、これらの実施形態も、請求項に記載された発明の技術的範囲に包含されることは言うまでもない。
【００２２】
本発明の実施例では、上述のプレコピー方式を採用することを前提としている。
【００２３】
プレコピー方式の概略を以下に説明する。
【００２４】
図１は、仮想マシンのライブマイグレーションの例を示している。物理マシンであるサーバ１１０上で、ＶＭ管理部１１５のもとに仮想マシンＢ１１１が動作している。この仮想マシンＢ１１１は、自身の仮想メモリ空間を管理する。仮想マシンＢ１１１が管理する仮想メモリのうち、サーバ１１０の物理メモリに存在する物理メモリ領域をメモリＡ１１２とする。この状態において、ライブマイグレーションを実行して、この仮想マシンＢ１１１を、サーバ１２０に移送し、サーバ１２０上の仮想マシンＢ'１２１として動作させる場合について説明する。サーバ１２０は、ＶＭ管理部１２５を有している。そして仮想マシンＢ'１２１が管理する仮想メモリ空間のうち、サーバ１２０の物理メモリにコピーすべき物理メモリ領域をメモリＡ'１２２とする。
【００２５】
図２は、物理メモリのコピーの手順を示している。上述のプレコピー方式を採用して、ライブマイグレーションを行うには、まず、仮想マシンＢ１１１の管理下にある物理メモリＡ１１２の内容をサーバ１２０上の物理メモリＡ'１２２にコピーする必要がある。（既に述べたように、ハードディスクにスワップアウトされている仮想メモリ領域は、両サーバがハードディスクを共有化するため、コピーする必要はない。）
時刻ｔ１において、メモリＡ１１２の内容とメモリＡ'１２２の内容は異なっている。
【００２６】
時刻ｔ２において、メモリＡ１１２の内容の全ての情報２２２をメモリＡ'１２２にコピーする動作を開始する。このコピーの間においても、メモリＡ１１２は、内容が書き換えられている。
【００２７】
時刻ｔ３において、直前の転送途中において書き換えられたデータ２２４をＡ'１２２にコピーする動作を開始する。このコピーの間においても、メモリＡ１１２は、内容が書き換えられている。
【００２８】
時刻ｔ４において、直前の転送途中において書き換えられたデータ２２６をＡ'１２２にコピーする動作を開始する。このコピーの間においても、メモリＡ１１２は、内容が書き換えられている。
【００２９】
時刻ｔ５において、直前の転送途中において書き換えられたデータ２２８をＡ'１２２にコピーする動作を開始する。このコピーの間においても、メモリＡ１１２は、内容が書き換えられている。
【００３０】
以上の処理を、残りのコピー見積もり時間が、例えば１秒以下（あるいは、コピーすべき残りのデータ量が所定量以下）になるまで繰り返す。時刻ｔｎにおいて、コピー見積もり時間が１秒以下になった場合には、仮想マシンＢ１１１のコンテキストを停止させる。そして、残りのコピー部分をメモリＡ１１２からメモリＡ'１２２にコピーすると共に、仮想マシンＢ１１１のＣＰＵ内のレジスタ情報等を仮想マシンＢ'１２２にコピーする。また、ストレージの切り替え、ネットワークの切り替え等を行う。
【００３１】
その後、仮想マシンＢ'１２１を開始させる。この一連の処理によって、仮想マシンＢが、サーバ１１０からサーバ１２０にライブマイグレーションされる。
【００３２】
以上のように、動作している仮想マシンのメモリは変更され続けるため、差異なくコピーするには、複数回にわたるコピー操作が必要となる。
【実施例】
【００３３】
図３は、本発明の実施例に係る装置の全体構成を示している。図３に示すように、仮想マシン管理装置３１０、サーバ１、サーバ２、及びサーバ３がネットワークＮＷによって接続されている。これらは、いずれも物理マシンである。サーバ１には、仮想マシンＶＭ１、ＶＭ２、及びＶＭ３が動作している。これらの仮想マシンは、ＶＭ管理部１の管理下に置かれている。ＶＭ管理部１は、複数の仮想マシンの各々の動作状態を把握すると共に、外部とのインターフェースを含む仮想的なマシン環境を仮想マシンに提供している。また、ＶＭ管理部１は、仮想マシン管理装置３１０と連携して、ライブマイグレーションの実行を行ってもよい。同様に、サーバ２においては、ＶＭ管理部２の下で、仮想マシンＶＭ４、ＶＭ５、及びＶＭ６が動作している。サーバ３においては、ＶＭ管理部３が存在している。図３は、サーバ１における仮想マシンＶＭ１及びＶＭ２が、ライブマイグレーションによって、サーバ３に移動する準備がなされていることが示されている。【００３４】
仮想マシン管理装置３１０は、サーバ１、サーバ２、及びサーバ３に存在する仮想マシン全体の管理をつかさどる。そして、配置管理部３１２は、複数の仮想マシンの動作状態、物理マシンの動作状態、オペレータの指示を含む情報に基づいて、仮想マシンの動的な再配置を計画し、その計画をライブマイグレーションによって実行する。また、配置管理部３１２は、ライブマイグレーションが行われている状況を監視し、ライブマイグレーションの中止を行ってもよい。【００３５】
なお、図３におけるそれぞれの物理マシンは、筐体が別個である必要はない。また、配置管理部３１２が、仮想マシンの存在する物理マシン上に存在してもよい。また、各物理マシンがネットワークＮＷ以外の通信機能により情報伝送を行ってもよい。あるいは、ネットワークＮＷとその他の通信機能の両者が協働して情報伝送を行ってもよい。情報伝送の手段を複数用いてバンド幅を広くすれば、ライブマイグレーションにかかる時間を短縮できる。【００３６】
図４は、１つの実施例を示している。図４（ａ）は、サーバ１の機能ブロック図を示している。図４（ｂ）は、サーバ１のハードウエアブロック図を示している。なお、理解を助けるために、サーバ１の機能ブロック図である図４（ａ）とサーバ１のハードウエアブロック図である図４（ｂ）を上下に配置し、かつ、データの流れが分かるように矢印を描いている点に留意すべきである。【００３７】
図４（ａ）は、ＶＭ管理部が、仮想マシンＶＭ１、ＶＭ２、及びＶＭ３を管理している。ＶＭ管理部には、仮想マシンＶＭ１、ＶＭ２、ＶＭ３に対応づけて、それぞれメモリへのアクセスをカウントするカウンタ４０１、４０２、４０３が設けられている。図４（ｂ）において、サーバ１は、ＣＰＵ４４０、物理メモリ４６０、及びアクセスカウンタ４５０を含んでもよい。アクセスカウンタ４５０は、ハードウエアで構成されているものとする。【００３８】
ここで、ハードウエアとは、ワイヤードロジック又はマイクロプログラムを含むハードウエアを意味する。【００３９】
図４（ｂ）においては、アクセスカウンタ４５０が物理メモリ４６０に隣接して設けられているが、アクセスカウンタの位置は、ＣＰＵ等の他の場所にあってもよい。そして、ＶＭ管理部は、タイマ割込などを用いて、アクセスカウンタ４５０を定期的に読み出してもよい。ＶＭ管理部は、アクセスカウンタ４５０の値を基にして、ＶＭ１、ＶＭ２、ＶＭ３にそれぞれ対応して設けられたカウンタ４０１、４０２、４０３に、対応する仮想マシンのアクセス数を振り分けて積算して保存する。この結果、カウンタ４０１、４０２、４０３には、それぞれ、ＶＭ１、ＶＭ２、ＶＭ３のアクセス数が保存される。なお、アクセスカウンタ４５０は、仮想マシンが切り替わる毎に（コンテキストがスイッチする毎に）リセットさせてもよい。【００４０】
なお、この実施例においては、アクセスカウンタ４５０が１個であるため、各メモリのどの位置が書き換えられたかの情報は取得できない。したがって、ライブマイグレーションにおけるメモリ転送の単位をページとし、例えば、重みをα、１ページの容量をＷ、カウンタ４０１の値に記録された単位時間当たりのメモリ書き込み回数をｎ、単位時間当たりの転送量（すなわちスループット）をｔｐとすれば、ＶＭ１が管理している物理メモリのダーティ率ｒは、以下の式で表される。【００４１】
ｒ＝αｎＷ／ｔｐ    ・・・（２）
ここで、重みαは、同じページに複数回書き込みが行なわれることを考慮したものである。すなわち、同じページに対して複数回の書き込みがなされても、再度転送するページは、そのページのみでよい。したがって、αは１よりも小さい重みである。【００４２】
よって、上述の式（１）に式（２）を適用すると、ＶＭ１の管理するメモリの予想転送時間ＴＶＭ１は、以下の式で表される。【００４３】
ＴＶＭ１＝Ｍ／｛ｔｐ（１−αｎＷ／ｔｐ）｝    ・・・（３）
なお、アクセスカウンタ４５０が書き込みと読み込みとの両者のアクセス回数を計数するアクセスカウンタである場合には、アクセスカウンタの全計数値のうち、書き込みの計数値の割合をβとすれば、ＶＭ１の管理するメモリの予想転送時間ＴＶＭ１は、以下の式で表される。【００４４】
ＴＶＭ１＝Ｍ／｛ｔｐ（１−βαｎＷ／ｔｐ）｝    ・・・（４）
この転送時間ＴＶＭ１は、ライブマイグレーションの際のメモリ転送時間の推定値となる。そして、転送時間ＴＶＭ１は、時間的なリソースを消費するものであるから、ＶＭ１のライブマイグレーションに対する推定コストと認識してもよい。【００４５】
上述の重みαは、メモリのアクセスの散らばりの度合いに関連する。α及びβは、仮想マシン動作時において統計的に測定することにより取得し、予め定めておいてもよい。また、仮想マシン毎に別個の値を予め定めておいてもよい。また、仮想マシン上で動作するアプリケーションに応じて、予め定めておいてもよい。【００４６】
カウンタ４０１、４０２、４０３には、それぞれ、ＶＭ１、ＶＭ２、ＶＭ３に対応してメモリアクセス回数が積算して保存される。単位時間当たりのアクセス回数を算出するには、単位時間の開始時のカウンタの値と単位時間の終了時のカウンタの値との差を求めることによって算出してもよい。あるいは、単位時間毎にカウンタの値を読み出し、読み出し後にカウンタをリセットしてもよい。これらのカウンタの内容は、配置管理部３１２などで利用されてもよい。なお、配置管理部３１２の動作については、図１０及び図１１を用いて後述する。【００４７】
図５は、他の実施例を示している。ＣＰＵ内には、種々のパフォーマンスを測定するために、複数のパフォーマンスカウンタが設けられている。物理メモリ４６０の書き込みアクセスを計数するパフォーマンスカウンタであるアクセスカウンタ５５０を用いてもよい。図５におけるその他の構成は、図４と同様であるため、同じ参照符号を付している。このアクセスカウンタ５５０の利用方法は、図４に示したアクセスカウンタ４５０と同じであってもよい。アクセスカウンタ５５０は、ハードウエアで構成されたカウンタであるため、アクセスカウンタ５５０の使用によるＣＰＵへの負荷は、非常に小さい。なお、本明細書において、ハードウエアとは、ハードワイヤード、マイクロプログラムを含むハードウエアを意味する。このため、ライブマイグレーションが実行されていない通常のオペレーション時においても、上述の式（３）によって、メモリ転送時間の推定値（推定コスト）を得ることができる。これに対して、上述のようにメモリを書き込み禁止状態にして、メモリ書き込みのアクセスをソフトウエア的にトラップしカウントする処理を、通常の処理において導入することは、オーバーヘッドが増加してしまう。このオーバーヘッドは、通常の処理を圧迫することになる。これに対して、本実施例によれば、メモリ転送の推定値を算出するための処理は、通常の処理にほとんど影響を与えないという大きな利点がある。【００４８】
加えて、このように、事前に各仮想マシンのライブマイグレーションに要する推定コストを得ることにより、より的確なライブマイグレーションの実行計画が策定できる。なお、実行計画の策定に係る具体的な説明は、図１０及び図１１を用いて後述する。【００４９】
図６は、更に別の実施例を示している。なお、図４及び図５と同じ構成要素については、同じ参照番号が付されている。複数のアクセスカウンタ６５０は、複数の仮想マシンの各々に対応して、ハードウエアとして設置されたメモリアクセスカウンタである。したがって、例えば、ＶＭ１専用のアクセスカウンタが、複数のアクセスカウンタ６５０内に存在することになる。このため、本実施例の場合には、ＶＭ管理部が、各仮想マシンに対応するアクセスカウンタの内容を読み出す。そして、その値をＶＭ管理部内の各仮想マシンに対応するカウンタに積算してゆけばよい。【００５０】
アクセスカウンタ６５０が、書き込みアクセスをカウントするものであれば、式（３）を用いて、メモリ転送時間の推定値を算出できる。また、アクセスカウンタ６５０が、読み出し及び書き込みアクセスをカウントするものであれば、式（４）を用いて、メモリ転送時間の推定値を算出できる。【００５１】
図７は、物理メモリ４６０のページ単位にアクセスカウンタ７５１、７５２、７５３ないし７９９が設けられた、更に別の実施例を示している。このアクセスカウンタは、例えば、仮想メモリシステムにおいてメモリアクセス管理に用いられるページ毎に設けられてもよい。このページは、物理メモリ４６０と動的記憶装置（図示せず）との間のメモリスワップの転送単位と同一であってもよい。また、このページは、ライブマイグレーションの際のメモリ転送単位と同一であってもよい。複数のアクセスカウンタ７５１、７５２、７５３ないし７９９を集約し、１つのカウンタとして扱う場合には、図４に示した実施例１と同じ処理を行ってもよい。すなわち、各メモリ領域のアクセスカウンタの値を、各仮想マシンのメモリアクセス数として集計し、対応する仮想マシンのカウンタに積算してもよい。【００５２】
以上の実施例において、各仮想マシンのメモリアクセス数がＶＭ管理部の対応するカウンタに蓄積される。メモリ転送時間の推定値は、上述の式（３）または式（４）によって、同様に求めることができる。【００５３】
なお、本実施例の場合には、ＶＭ１を例に、例えば、以下の処理を行ってもよい。【００５４】
まず、以下の前提条件を置く。
（１）物理メモリ４６０には、Ｌ個のページが存在するとする。ＶＭ管理部の各仮想マシンに対応するカウンタ４０１、４０２、４０３に代えて、ＶＭ管理部にＬ個のカウンタ（図示せず）を設け、Ｌ個のアクセスカウンタの各々と対応付ける。Ｌ個のカウンタは初期値をゼロとする。【００５５】
そして、タイマ割込を用いて以下の処理を実行する。
（Ａ）タイマ割込で定期的にＬ個のアクセスカウンタの各々を読み出し、読み出された値を用いて、ＶＭ管理部の対応するＬ個のカウンタの各々を個別に積算する。
（Ｂ）タイマ割込を用いて、単位時間（例えば、ダーティ率を計算するための単位時間）間隔で、ＶＭ１に割り当てられているページに対応するＶＭ管理部のカウンタを読み出し、ゼロより大きい値を有するカウンタの数を調べる（例えばｊ個）。他の仮想マシンに対しても同様に調べる。ＶＭ管理部のＬ個のカウンタをゼロリセットする。【００５６】
以上の処理において、例えばＶＭ１における、メモリダーティ率ｒＶＭ１は、メモリ変更量を転送量で除算した値であるから、１ページの容量をＷ、単位時間当たりの転送量（すなわちスループット）をｔｐとして、以下の式から求めてもよい。【００５７】
ｒＶＭ１＝ｊＷ／ｔｐ    ・・・（５）
このダーティ率ｒＶＭ１はデータ取得時刻によって変動し得る。このため、順次蓄積し、例えば移動平均を求めて利用してもよい。なお、物理メモリ４６０において、各仮想マシンに割り当てられる物理メモリのページ数を動的に変更するアーキテクチャを採用している場合には、このダーティ率ｒＶＭ１は、近似値である点に留意する必要がある。【００５８】
そして、このダーティ率から、式（１）を用いて、メモリ転送時間の推定値を算出することができる。【００５９】
上記の実施例から、当業者は、そのほかの変形例を考えつくことができるであろう。【００６０】
以上の実施例によって、ＶＭ管理部に備えられたカウンタの値は、仮想マシン管理装置３１０に存在する配置管理部３１２に送られてもよい。配置管理部３１２は、メモリ転送時間の推定値を算出してもよい。【００６１】
なお、以上の実施例では、メモリアクセスに対するカウンタを利用した。その他の変形例としては、ＴＬＢ（Translation Look aside Buffer）（図示せず）の参照回数をカウントするパフォーマンスカウンタを利用してもよい。ＣＰＵがメモリにアクセスするためには、仮想アドレスから物理アドレスに変換する必要がある。このため、仮想メモリシステムにおいては、仮想アドレスと物理アドレスとを対応付けるアドレス変換テーブルを持っている。ＴＬＢは、このアドレス変換テーブルをキャッシングするものであり、高速にアクセス可能である。したがって、ＣＰＵは、仮想メモリアドレスを物理メモリアドレスに変換するために、メモリアクセスの都度ＴＬＢを参照する。したがって、ＴＬＢ参照回数は、メモリアクセス回数と一致するか、又は、強い相関性を持っている。したがって、ＴＬＢの参照回数をカウントするカウンタを用いる場合には、図４又は図５に示した実施例と同様の手法を採用することができる。【００６２】
図８は、配置管理部３１２の処理フローを示している。【００６３】
ステップ８０２において、ＶＭ管理部に蓄積されたＶＭ毎のメモリアクセス数を取得する。【００６４】
ステップ８０４において、上述の式（１）、（３）、又は（４）によって、仮想マシンのメモリ転送時間の推定値を算出する。このメモリ転送時間の推定値を、マイグレーションの推定コストと呼んでもよい。【００６５】
ステップ８２０において、その推定コストを表示装置に出力してもよい。なお、表示は、任意のステップにおいてなされてもよい。【００６６】
ステップ８０６において、推定コストを所定の閾値と比較してもよい。この判断が「はい」であれば、ステップ８０８に進む。「いいえ」であれば、ステップ８０２に戻る。【００６７】
ステップ８０８において、閾値を超えた推定コストを持つ仮想マシンは、ライブマイグレーションの対象から除外してもよい。後の配置計画の策定のために、除外すべき仮想マシンのリストをメモリに蓄積してもよい。あるいは、その仮想マシンのライブマイグレーションが実行中であれば、ライブマイグレーションを中止してもよい。【００６８】
ステップ８１０において、全ての仮想マシンにおいて、処理が残っているかがチェックされる。判断結果が、「いいえ」であれば、全ての仮想マシンにおける処理が終了したことになる。判断結果が、「はい」であれば、ステップ８０２に戻り、次の仮想マシンに対する処理を実行する。なお、表示出力ステップ８２０においては、ライブマイグレーションの対象外となった仮想マシンのリストや、メモリダーティ率等の種々の情報を表示するようにしてもよい。【００６９】
図８の処理は、タイマ割込で実行してもよい。あるいは、オペレータの指示により実行してもよい。【００７０】
図９は、ＶＭ管理部におけるカウンタの処理の一例を示している。この処理は、タイマ割込を利用して実行してもよい。【００７１】
ステップ９０２は、タイマートリガーを契機として、割込が発生し、この処理に移行したことを示している。【００７２】
ステップ９０４において、メモリアクセスカウンタを読み出す。上述のように、メモリアクセスカウンタは、物理マシンのアーキテクチャにより種々の形態が存在する。【００７３】
ステップ９０６において、メモリアクセスカウンタを読み出した時刻において動作している仮想マシンが特定される。この特定は、ＶＭ管理部自身が認識しているものである。【００７４】
ステップ９０８において、対応する仮想マシンのカウンタに読み出し値を計上する。アクセスカウンタの読み出しの間隔は、タイマ割込の間隔を設定することにより変更可能である。このタイマ割込の間隔は、仮想マシンが切り替わる間隔よりも短いことが望ましい。このようにすることによって、ある仮想マシンが動作している間に、どれくらいアクセスカウンタの値が増加するかを知ることができる。この増加した値を、ＶＭ管理部の対応するカウンタに積算してもよい。アクセスカウンタがリセットできるようになっている場合には、仮想マシンが切り替わったときにリセットしてもよい。あるいは、アクセスカウンタに値をセットすることができる場合には、仮想マシンが切り替わったときに、ＶＭ管理部のカウンタの値をセットし、他の仮想マシンに切り替わるまで、アクセスカウンタをカウントアップさせてもよい。そして、アクセスカウンタのカウントアップした結果をＶＭ管理部のカウンタに上書きしてもよい。また、仮想マシンが切り替わったときに、この処理を実行してもよい。【００７５】
以上の処理で、タイマ割込を終了させ、割込前の処理にリターンしてもよい。【００７６】
図１０は、配置管理部３１２が行う、ライブマイグレーションの計画策定と実行の例を示している。【００７７】
ステップ１００２において、ライブマイグレーションの必要生が判断される。判断する要素としては、オペレータの指示、特定の物理マシンでの稼働率の上昇、予定されている稼働率の上昇、物理マシンの保守、ＶＭ管理部のバージョンアップ、省エネ等を目的とした仮想マシンの物理マシンへの集約、稼働率等に関する特定の物理マシンとの相関性等が挙げられる。判断結果が「いいえ」であれば処理は終了する。判断結果が「はい」であれば、ステップ１００４に移る。以下の処理においては、図３と図１２も合わせて参照されたい。【００７８】
ステップ１００４において、配置管理部３１２（１２１０）内の配置計画部１２１２により、配置計画の策定が行われる。配置計画の一例としては、推定コスト（メモリ転送時間の推定値）の小さい順に仮想マシンを並び替える。そして、この順番の先頭の仮想マシンから順にライブマイグレーションを実行するよう配置計画を立てる。移動先の物理マシンは、物理マシン稼働率の一番小さいマシンを選定してもよく、又は、予め定められていてもよい。あるいは、オペレータの指定を考慮してもよい。【００７９】
ステップ１００６において、策定された配置計画に基づき、ライブマイグレーションを実行する。図８とともに説明したように、ライブマイグレーションの実行中において、推定コストが閾値を超えている場合には、ライブマイグレーションを中止してもよい。【００８０】
図１１は、ライブマイグレーションの一連の処理の他の例を示している。【００８１】
ステップ１１０２は、ライブマイグレーションの要求の発生を示している。この処理が開始されたことを示している。【００８２】
ステップ１１０４において、仮想メモリ毎のカウンタの読み出し値より、アクセス頻度を算出する。【００８３】
ステップ１１０６において、仮想メモリ毎のアクセス頻度から、ダーティ率を算出する。【００８４】
ステップ１１０８において、少なくともメモリ量と、ダーティ率と、転送バンド幅とから、メモリ転送時間の推定値、すなわちライブマイグレーションの推定コストを算出する。【００８５】
ステップ１１１０において、仮想マシン毎のライブマイグレーション推定コストを昇順にソートする。【００８６】
ステップ１１１２において、ライブマイグレーション推定コストの低いものを一応の移動対象と設定する。他のコスト（例えば、他の仮想マシンとの相関関係、安定的動作をすることの重要度、将来におけるコストの変動要因等）を検討する。【００８７】
ステップ１１１４において、上記ステップ１１１２において検討した結果のコストベネフィットが適切なものからライブマイグレーションを実行するよう配置計画を立てる。なお、適切なものを選択するために、ステップ１１１２における種々の検討要因を考慮した評価関数を予め定め、その評価関数の出力結果に基づいて、最適なライブマイグレーションの順番を含む配置計画を策定してもよい。【００８８】
ステップ１１１６において、配置計画に基づきライブマイグレーションを順次実行する。【００８９】
ステップ１１１８においては、図８の説明において既に述べたように、ライブマイグレーションを実行中であっても、コストが大きい場合には、ライブマイグレーションを中止してもよい。【００９０】
以上の処理によって、ライブマイグレーションが実行される。なお、上述の各ステップは、矛盾の生じない範囲において、順番を入れ替えて実行してもよく、また、同時に実行してもよい。【００９１】
図１２は、１つの実施例における機能ブロック図を示している。【００９２】
アクセスカウンタ１２０２は、メモリに対するアクセスカウンタである。【００９３】
カウンタ蓄積部１２０４は、アクセスカウンタ１２０２の内容を、例えば仮想メモリ毎に積算して蓄積するカウンタの集合である。【００９４】
コスト推定部１２０６は、カウンタ蓄積部の値、転送バンド幅、仮想マシンの物理メモリ容量等から、メモリ転送時間の推定値を算出し、これをライブマイグレーションのコストとして推定するものである。このコスト推定部１２０６は、以下に述べる配置管理部１２２０の一部であってもよい。【００９５】
表示部１２０８は、各仮想マシンの推定コスト、ダーティ率、配置計画、ライブマイグレーションの進捗の内容等を表示してもよい。【００９６】
配置管理部１２２０は、配置制御部１２１０、配置計画部１２１２、マイグレーション実行部１２１４を含む。上述のように、コスト推定部１２０６がこれに含まれてもよい。【００９７】
配置計画部１２１２は、ライブマイグレーション推定コストの小さいものを一応の移動対象と設定してもよい。他のコスト（例えば、他の仮想マシンとの相関関係、安定的動作をすることの重要度、将来におけるコストの変動要因等）を検討してもよい。そして、全体的なコストベネフィットが適切なものからライブマイグレーションを実行するよう配置計画を立ててもよい。なお、適切なものを選択するために、種々の検討要因を考慮した評価関数を予め定め、その評価関数の出力結果に基づいて、最適なライブマイグレーションの順番を含む配置計画を策定してもよい。【００９８】
マイグレーション実行部１２１４は、配置計画に基づいて、マイグレーションを実行する。【００９９】
配置制御部１２１０は、マイグレーションに関する全体的な管理をつかさどる。例えば、ライブマイグレーションを実行中であっても、コストが大きい場合には、ライブマイグレーションを中止させてもよい。【０１００】
図１３は、物理マシンであるサーバ及び仮想マシン管理装置３１０のハードウエア構成を示している。【０１０１】
物理マシンは、ＣＰＵ１３０２、ＲＯＭ１３０４、ドライブ装置１３０６、ＲＡＭ１３１０、ネットワークコントローラ１３１２、ＨＤＤ１３１４を含んでもよい。これらは、バス１３１６で接続されている。【０１０２】
ＣＰＵには、パフォーマンスカウンタ１３０３が含まれてもよい。またドライブ装置は、プログラム等が格納された記憶媒体１３０８を読み書きすることが可能である。記憶媒体１３０８から読み込まれたプログラムは、ＣＰＵが実行することができる。【０１０３】
なお、本実施形態のプログラムは、記憶媒体１３０８に格納することができる。記憶媒体１３０８とは、構造（structure）を有する１つ以上の非一時的（non-transitory）な、有形（tangible）な、記憶媒体を言う。例示として、可搬記録媒体１４４０としては、磁気記録媒体、光ディスク、光磁気記録媒体、不揮発性メモリなどがある。磁気記録媒体には、ＨＤＤ、フレキシブルディスク（ＦＤ）、磁気テープ（ＭＴ）などがある。光ディスクには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc-Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。また、光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。
【符号の説明】
【０１０４】
１２０２  アクセスカウンタ
１２０４  カウンタ蓄積部
１２０６  コスト推定部
１２０８  表示部
１２１０  配置制御部
１２１２  配置計画部
１２１４  マイグレーション実行部
１２２０  配置管理部
【図１】
2013105217.tif 000003
【図２】
2013105217.tif 000004
【図３】
2013105217.tif 000005
【図４】
2013105217.tif 000006
【図５】
2013105217.tif 000007
【図６】
2013105217.tif 000008
【図７】
2013105217.tif 000009
【図８】
2013105217.tif 000010
【図９】
2013105217.tif 000011
【図１０】
2013105217.tif 000012
【図１１】
2013105217.tif 000013
【図１２】
2013105217.tif 000014
【図１３】
2013105217.tif 000015
【手続補正書】
【提出日】平成26年6月5日(2014.6.5)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
仮想マシンのライブマイグレーションを管理するプログラムであって、
前記仮想マシンに割り当てられたメモリのアクセス数を計数するアクセスカウンタのカウント値と、前記メモリの容量と、ライブマイグレーションでの物理マシン間のデータ転送のバンド幅とを用いて、前記仮想マシンのライブマイグレーションを実行する際のコストを推定する、
処理をコンピュータに実行させることを特徴とするプログラム。
【請求項２】
前記コストは、メモリ転送時間である、ことを特徴とする請求項１記載のプログラム。
【請求項３】
推定された前記コストを所定の閾値と比較した結果に基づき、前記仮想マシンをライブマイグレーションの実行対象から除外し、又は、前記仮想マシンのライブマイグレーションの実行中においてはライブマイグレーションの実行を中止する、
処理をコンピュータに実行させる、ことを特徴とする請求項１又は２記載のプログラム。
【請求項４】
推定された前記コストにもとづき、複数の仮想マシンのライブマイグレーションの実行計画を策定し、
配置計画に基づき、ライブマイグレーションを行う、
処理をコンピュータに実行させる、ことを特徴とする請求項１ないし３のうちいずれか１項記載のプログラム。
【請求項５】
前記アクセスカウンタは、メモリへの書き込み回数を計数するものである、
ことを特徴とする請求項１ないし４のうちいずれか１項記載のプログラム。
【請求項６】
前記推定する処理は、複数の仮想マシンの各々に対応づけて前記アクセスカウンタのカウント値を積算する、
処理を更に含む、ことを特徴とする請求項１ないし５のうちいずれか１項記載のプログラム。
【請求項７】
前記アクセスカウンタは、複数の仮想マシンの各々に対応づけられた複数のアクセスカウンタを含む、
ことを特徴とする請求項１ないし６のうちいずれか１項記載のプログラム。
【請求項８】
前記アクセスカウンタは、前記メモリに含まれる複数のメモリ領域の各々に対応づけられた複数のアクセスカウンタを含み、
前記推定する処理は、前記複数のアクセスカウンタの値を、前記複数のメモリ領域の各々に対応づけて積算する、
処理を更に含む、ことを特徴とする請求項１ないし７のうちいずれか１項記載のプログラム。
【請求項９】
推定された前記コストは、前記仮想マシンのマイグレーションにおいて、前記メモリの内容を物理マシン間で転送するのに要する推定時間を表す、ことを特徴とする請求項１ないし８のうちいずれか１項記載のプログラム。
【請求項１０】
仮想マシンのライブマイグレーションを管理する方法であって、
前記仮想マシンに割り当てられたメモリのアクセス数を計数するアクセスカウンタのカウント値と、前記メモリの容量と、ライブマイグレーションでの物理マシン間のデータ転送のバンド幅とを用いて、前記仮想マシンのライブマイグレーションを実行する際のコストを推定する、
処理を有する、ことを特徴とする方法。
【請求項１１】
仮想マシンのライブマイグレーションを管理する装置であって、
前記仮想マシンに割り当てられたメモリのアクセス数を計数するアクセスカウンタのカウント値と、前記メモリの容量と、ライブマイグレーションでの物理マシン間のデータ転送のバンド幅とを用いて、前記仮想マシンのライブマイグレーションを実行する際のコストを推定するコスト推定部、
を有する、ことを特徴とする装置。
【国際調査報告】
2013105217.tif 000016
2013105217.tif 000017