(57)【特許請求の範囲】
【請求項１】
１つ以上の仮想マシンが配置される複数の物理サーバと、前記複数の物理サーバの中から新たな仮想マシンの配置先となる物理サーバを決定するリソース割当サーバと、前記リソース割当サーバに通信接続される一時割当サーバと、を備えるキャッシュ競合管理システムであって、
前記リソース割当サーバは、
前記新たな仮想マシンの配置要求を受け付けた場合に、前記一時割当サーバに当該新たな仮想マシンを一時的に稼働させ、当該新たな仮想マシンを単体で稼働させたときの、キャッシュヒット率およびキャッシュミス数を前記一時割当サーバから取得して記憶部に記憶し、
前記複数の物理サーバそれぞれから、その物理サーバ上において配置済みの仮想マシンそれぞれの、前記キャッシュヒット率および前記キャッシュミス数を取得して前記記憶部に記憶し、
前記新たな仮想マシンの前記キャッシュヒット率および前記キャッシュミス数と、前記配置済みの仮想マシンそれぞれの前記キャッシュヒット率および前記キャッシュミス数とを参照し、
前記キャッシュヒット率の高い仮想マシンと前記キャッシュミス数の多い仮想マシンとを組み合わせると、より高い値となるように設定された評価関数を用いて、前記新たな仮想マシンを前記配置済みの仮想マシンそれぞれの物理サーバに配置した場合のスコアを算出し、前記算出したスコアが最小の物理サーバを、前記新たな仮想マシンの配置先の物理サーバとして決定すること
を特徴とするキャッシュ競合管理システム。
【請求項２】
１つ以上の仮想マシンが配置される複数の物理サーバと、前記複数の物理サーバの中から新たな仮想マシンの配置先となる物理サーバを決定するリソース割当サーバと、前記リソース割当サーバに通信接続される一時割当サーバと、を備えるキャッシュ競合管理システムの前記リソース割当サーバであって、
前記リソース割当サーバは、
前記新たな仮想マシンの配置要求を受け付けた場合に、前記一時割当サーバに当該新たな仮想マシンを一時的に稼働させ、当該新たな仮想マシンを単体で稼働させたときの、キャッシュヒット率およびキャッシュミス数を前記一時割当サーバから取得して記憶部に記憶し、
前記複数の物理サーバそれぞれから、その物理サーバ上において配置済みの仮想マシンそれぞれの、前記キャッシュヒット率および前記キャッシュミス数を取得して前記記憶部に記憶し、
前記新たな仮想マシンの前記キャッシュヒット率および前記キャッシュミス数と、前記配置済みの仮想マシンそれぞれの前記キャッシュヒット率および前記キャッシュミス数とを参照し、
前記キャッシュヒット率の高い仮想マシンと前記キャッシュミス数の多い仮想マシンとを組み合わせると、より高い値となるように設定された評価関数を用いて、前記新たな仮想マシンを前記配置済みの仮想マシンそれぞれの物理サーバに配置した場合のスコアを算出し、前記算出したスコアが最小の物理サーバを、前記新たな仮想マシンの配置先の物理サーバとして決定すること
を特徴とするリソース割当サーバ。
【請求項３】
１つ以上の仮想マシンが配置される複数の物理サーバと、一時的に仮想マシンを配置する一時割当サーバとに接続され、前記複数の物理サーバの中から新たな仮想マシンの配置先となる物理サーバを決定するリソース割当サーバのリソース割当方法であって、
前記リソース割当サーバは、
前記新たな仮想マシンの配置要求を受け付けた場合に、前記一時割当サーバに当該新たな仮想マシンを一時的に稼働させ、当該新たな仮想マシンを単体で稼働させたときの、キャッシュヒット率およびキャッシュミス数を前記一時割当サーバから取得して記憶部に記憶するステップと、
前記複数の物理サーバそれぞれから、その物理サーバ上において配置済みの仮想マシンそれぞれの、前記キャッシュヒット率および前記キャッシュミス数を取得して前記記憶部に記憶するステップと、
前記新たな仮想マシンの前記キャッシュヒット率および前記キャッシュミス数と、前記配置済みの仮想マシンそれぞれの前記キャッシュヒット率および前記キャッシュミス数とを参照し、
前記キャッシュヒット率の高い仮想マシンと前記キャッシュミス数の多い仮想マシンとを組み合わせると、より高い値となるように設定された評価関数を用いて、前記新たな仮想マシンを前記配置済みの仮想マシンそれぞれの物理サーバに配置した場合のスコアを算出し、前記算出したスコアが最小の物理サーバを、前記新たな仮想マシンの配置先の物理サーバとして決定するステップと、
を実行することを特徴とするリソース割当方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、汎用プラットフォーム上に配置する仮想マシン間のキャッシュ競合を防止する、キャッシュ競合管理システム、リソース割当サーバおよびリソース割当方法に関する。
【背景技術】
【０００２】
サーバ仮想化技術の発展に伴い、物理サーバを統合し、汎用プラットフォーム上で複数の仮想マシン（ＶＭ：Virtual Machine）を動作させることが行われている。現在ＣＰＵ（Central Processing Unit）で主流となっているマルチコア構成では、低次のキャッシュを複数のコアが共有するアーキテクチャを持つことが一般的である。
【０００３】
汎用プラットフォームのノード上で仮想マシンを単体で動かしたときには、図８（ａ）に示したように、その仮想マシン（図８（ａ）では、「ＶＭ１」）が共有キャッシュ（図８においては「３次キャッシュメモリ」）を占有した状態となる。これに対し、同じノード上で複数の仮想マシンが稼働している場合、図８（ｂ）に示すように、自身の仮想マシン（「ＶＭ１」）以外の他の仮想マシン（「ＶＭ２」「ＶＭ３」「ＶＭ４」）によって共有キャッシュ（３次キャッシュメモリ）のデータが置き換えられ、キャッシュミスが相対的に増加する。ここで、キャッシュミスとは、命令処理に必要なデータがキャッシュメモリに存在せず、キャッシュメモリからデータを読み込むことができないことをいう。キャッシュミスを起こしたコアは、キャッシュメモリより数倍アクセス時間のかかるメインメモリまで参照にいかなければならず、その結果として性能低下を引き起こす。これを複数仮想マシン間のキャッシュ競合と呼ぶ。
【０００４】
実際のアプリケーションにおいてもキャッシュ競合は問題となっており、ベンチマークアプリケーションを他のアプリケーションと同時に動かした場合、キャッシュ競合により性能が最大約６５％下がることが報告されている（非特許文献１参照）。
【０００５】
この問題に対し、コア毎やスレッド毎に利用できるキャッシュ空間を固定的に割り当てることでキャッシュ競合を回避する技術が開発されている。例えば、ページカラーリング技術を用いたパーティショニング手法がある（非特許文献２参照）。
このページカラーリング技術を用いたパーティショニング手法では、メインメモリからキャッシュメモリへのマッピングが固定的であることを利用し、割り当てたいキャッシュメモリの部分に対応したメインメモリのみをプロセスや仮想マシンから使えるように限定する。これによりプロセスや仮想マシンの使うキャッシュメモリのキャッシュ空間を限定する。
【０００６】
図９に示すように、例えば、キャッシュメモリ上の一定サイズの空間領域（Ｃｏｌｏｒ）おいてＣｏｌｏｒ「Ａ」を使用する部分は、メインメモリ上で固定されている。そのため、プロセス「Ａ」は、メインメモリ上においてＣｏｌｏｒ「Ａ」を使用する部分に固定して割り当てる。同様に、プロセス「Ｂ」はキャッシュメモリにおいてＣｏｌｏｒ「Ｂ」を使用するメインメモリの部分に固定して割り当てる。プロセス「Ｃ」は、キャッシュメモリにおいてＣｏｌｏｒ「Ｃ」を使用するメインメモリの部分に固定して割り当てる。このようにキャッシュ空間を限定して使用することにより、キャッシュ競合を回避することができる。
【先行技術文献】
【非特許文献】
【０００７】
【非特許文献１】D. Chandra et al.,“Predicting Inter-Thread Cache Contention on a Chip Multi-Processor Architecture,” In Proceedings of the 11th International Symposium on High Performance Computer Architecture (HCPA), Feb. 2005
【非特許文献２】S. Cho and L. Jin,“Managing distributed, shared L2 caches through OS-level page allocation,”In Proceedings of the 39th Annual IEEE/ACM International Symposium on Microarchitecture, Dec. 2006. Univ. of Pittsburgh
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、非特許文献２に記載のページカラーリング技術を用いたパーティショニング手法では、上記のように、メモリ（キャッシュメモリおよびメインメモリ）の使用空間を、アプリケーション（プロセス）に固定的に割り当てることが必要となるため、特定の色（Ｃｏｌｏｒ）のメモリを切らしたときに、他の色（Ｃｏｌｏｒ）のメモリが余っていてもそのメモリを使用することができない。それにより、ページスラッシングが発生したり、リカラーリングによるメモリのコピーに伴うコスト増大が発生したりしてしまう。つまり、メモリの使用効率が低下してしまう問題があった。
【０００９】
このような背景を鑑みて本発明がなされたのであり、本発明は、汎用プラットフォーム上の仮想マシンが使用するメモリの割り当てに関する柔軟性を維持しつつ、複数の仮想マシンを同時に動かす際のキャッシュ競合による性能低下を抑制することができる、キャッシュ競合管理システム、リソース割当サーバおよびリソース割当方法を提供することを課題とする。
【課題を解決するための手段】
【００１０】
前記した課題を解決するため、請求項１に記載の発明は、１つ以上の仮想マシンが配置される複数の物理サーバと、前記複数の物理サーバの中から新たな仮想マシンの配置先となる物理サーバを決定するリソース割当サーバと、前記リソース割当サーバに通信接続される一時割当サーバと、を備えるキャッシュ競合管理システムであって、前記リソース割当サーバが、前記新たな仮想マシンの配置要求を受け付けた場合に、前記一時割当サーバに当該新たな仮想マシンを一時的に稼働させ、当該新たな仮想マシンを単体で稼働させたときの、キャッシュヒット率およびキャッシュミス数を前記一時割当サーバから取得して記憶部に記憶し、前記複数の物理サーバそれぞれから、その物理サーバ上において配置済みの仮想マシンそれぞれの、前記キャッシュヒット率および前記キャッシュミス数を取得して前記記憶部に記憶し、前記新たな仮想マシンの前記キャッシュヒット率および前記キャッシュミス数と、前記配置済みの仮想マシンそれぞれの前記キャッシュヒット率および前記キャッシュミス数とを参照し、前記キャッシュヒット率の高い仮想マシンと前記キャッシュミス数の多い仮想マシンとを組み合わせると、より高い値となるように設定された評価関数を用いて、前記新たな仮想マシンを前記配置済みの仮想マシンそれぞれの物理サーバに配置した場合のスコアを算出し、前記算出したスコアが最小の物理サーバを、前記新たな仮想マシンの配置先の物理サーバとして決定することを特徴とするキャッシュ競合管理システムとした。
【００１１】
また、請求項２に記載の発明は、１つ以上の仮想マシンが配置される複数の物理サーバと、前記複数の物理サーバの中から新たな仮想マシンの配置先となる物理サーバを決定するリソース割当サーバと、前記リソース割当サーバに通信接続される一時割当サーバと、を備えるキャッシュ競合管理システムの前記リソース割当サーバであって、前記リソース割当サーバが、前記新たな仮想マシンの配置要求を受け付けた場合に、前記一時割当サーバに当該新たな仮想マシンを一時的に稼働させ、当該新たな仮想マシンを単体で稼働させたときの、キャッシュヒット率およびキャッシュミス数を前記一時割当サーバから取得して記憶部に記憶し、前記複数の物理サーバそれぞれから、その物理サーバ上において配置済みの仮想マシンそれぞれの、前記キャッシュヒット率および前記キャッシュミス数を取得して前記記憶部に記憶し、前記新たな仮想マシンの前記キャッシュヒット率および前記キャッシュミス数と、前記配置済みの仮想マシンそれぞれの前記キャッシュヒット率および前記キャッシュミス数とを参照し、前記キャッシュヒット率の高い仮想マシンと前記キャッシュミス数の多い仮想マシンとを組み合わせると、より高い値となるように設定された評価関数を用いて、前記新たな仮想マシンを前記配置済みの仮想マシンそれぞれの物理サーバに配置した場合のスコアを算出し、前記算出したスコアが最小の物理サーバを、前記新たな仮想マシンの配置先の物理サーバとして決定することを特徴とするリソース割当サーバとした。
【００１２】
また、請求項３に記載の発明は、１つ以上の仮想マシンが配置される複数の物理サーバと、一時的に仮想マシンを配置する一時割当サーバとに接続され、前記複数の物理サーバの中から新たな仮想マシンの配置先となる物理サーバを決定するリソース割当サーバのリソース割当方法であって、前記リソース割当サーバが、前記新たな仮想マシンの配置要求を受け付けた場合に、前記一時割当サーバに当該新たな仮想マシンを一時的に稼働させ、当該新たな仮想マシンを単体で稼働させたときの、キャッシュヒット率およびキャッシュミス数を前記一時割当サーバから取得して記憶部に記憶するステップと、前記複数の物理サーバそれぞれから、その物理サーバ上において配置済みの仮想マシンそれぞれの、前記キャッシュヒット率および前記キャッシュミス数を取得して前記記憶部に記憶するステップと、前記新たな仮想マシンの前記キャッシュヒット率および前記キャッシュミス数と、前記配置済みの仮想マシンそれぞれの前記キャッシュヒット率および前記キャッシュミス数とを参照し、前記キャッシュヒット率の高い仮想マシンと前記キャッシュミス数の多い仮想マシンとを組み合わせると、より高い値となるように設定された評価関数を用いて、前記新たな仮想マシンを前記配置済みの仮想マシンそれぞれの物理サーバに配置した場合のスコアを算出し、前記算出したスコアが最小の物理サーバを、前記新たな仮想マシンの配置先の物理サーバとして決定するステップと、を実行することを特徴とするリソース割当方法。
【００１３】
このように、キャッシュ競合管理システムのリソース割当サーバは、キャッシュヒット率が性能に大きく影響を及ぼすこと（後記する、「キャッシュセンシティブ」であること）を評価する第１の評価値としてのキャッシュヒット率と、キャッシュメモリのデータを頻繁に置き換えること（後記する、「キャッシュを汚すこと」）を評価する第２の評価値としてのキャッシュミス数とを採用する。そして、リソース割当サーバは、新たな仮想マシンの配置要求を受け付けた場合に、一時割当サーバに当該新たな仮想マシンを一時的に稼働させ、キャッシュヒット率およびキャッシュミス数を取得し、また、複数の物理サーバそれぞれから、配置済みの仮想マシンそれぞれの、キャッシュヒット率およびキャッシュミス数を取得する。そして、リソース割当サーバは、キャッシュヒット率の高い仮想マシンとキャッシュミス数の多い仮想マシンとを組み合わせると、より高い値となるように設定された評価関数を用いて、新たな仮想マシンを配置済みの仮想マシンそれぞれの物理サーバに配置した場合のスコアを算出できる。そして、リソース割当サーバは、算出したスコアが最小の物理サーバを、新たな仮想マシンの配置先の物理サーバとして決定する。
これにより、メモリの使用空間をアプリケーション（プロセス）に固定的に割り当てることなく柔軟に変更することができる。また、複数の仮想マシンを同時に動かす際のキャッシュ競合による性能低下を抑制することができる。
【発明の効果】
【００１８】
本発明によれば、汎用プラットフォーム上の仮想マシンが使用するメモリの割り当てに関する柔軟性を維持しつつ、複数の仮想マシンを同時に動かす際のキャッシュ競合による性能低下を抑制する、キャッシュ競合管理システム、リソース割当サーバおよびリソース割当方法を提供することができる。
【図面の簡単な説明】
【００１９】
【図１】本実施形態に係るキャッシュ競合管理システムの全体構成を示す図である。
【図２】本実施形態に係るキャッシュ競合管理システムを構成する、リソース割当サーバ、一時割当サーバ、物理サーバそれぞれの構成を示す機能ブロック図である。
【図３】本実施形態に係る仮想マシンの組み合わせのポリシーを示す表である。
【図４】式（２）の数式の一部である「ｍｉｎ（ＣＨＲＡ，ＣＭＢ）」の算出を説明するための図である。
【図５】本実施形態に係るリソース割当サーバの配置サーバ決定部が算出するサーバスコア（Ｓｃｏｒｅ）を説明するための図である。
【図６】本実施形態に係るキャッシュ競合管理システムが実行する処理の流れを示すフローチャートである。
【図７】本実施形態に係るリソース割当サーバの配置サーバ決定部が実行する配置先サーバ決定処理の流れを示すフローチャートである。
【図８】汎用プラットフォーム上で複数の仮想マシンを動作させた場合のキャッシュ競合を説明するための図である。
【図９】ページカラーリング技術を用いたパーティショニング手法を説明するための図である。
【発明を実施するための形態】
【００２０】
次に、本発明を実施するための形態（以下、「本実施形態」という。）における、キャッシュ競合管理システム１、リソース割当サーバ１０およびリソース割当方法について説明する。
【００２１】
＜発明の概要＞
図１は、本実施形態に係るキャッシュ競合管理システム１の全体構成を示す図である。
図１に示すように、キャッシュ競合管理システム１は、仮想マシンがデプロイ（利用可能な状態に配置）される複数の物理サーバ３０からなる仮想インフラ手段３００と、物理サーバ３０それぞれと通信接続され、複数の物理サーバ３０の中から新たな仮想マシンの配置先を決定するリソース割当サーバ１０と、リソース割当サーバ１０および各物理サーバ３０と接続される一時割当サーバ２０と、を含んで構成される。
【００２２】
本実施形態に係るキャッシュ競合管理システム１においては、新たな仮想マシンの最適な配置先となる物理サーバ３０を決定するため、「キャッシュセンシティブな仮想マシンと、キャッシュを汚す仮想マシンを、同じ物理サーバ上に配置することを避ける」というポリシーを採用する。そのため、各仮想マシンがどの程度「キャッシュセンシティブ」か、どの程度「キャッシュを汚す」かを評価する。
【００２３】
ここで、「キャッシュセンシティブ（であること）」とは、キャッシュヒット率（若しくはキャッシュミス率）が性能に大きく影響すること、を意味する。例えば、キャッシュヒット率が高い（言い換えれば、キャッシュミス率の低い）状態から、キャッシュヒット率が低下する（言い換えれば、キャッシュミス率が上昇する）場合に、性能低下（例えば、１クロックあたりの命令実行数の低下）の影響がより大きくなるような仮想マシンを意味する。
また、「キャッシュを汚す」とは、キャッシュメモリのキャッシュラインを頻繁に自身の仮想マシンのデータに置き換えることを意味する。
【００２４】
本実施形態では、「キャッシュセンシティブ」な仮想マシンは、「仮想マシン単体で動かしたときのキャッシュヒット率が高い仮想マシン」であると近似的に捉えるものとする。これにより、「キャッシュセンシティブ」の指標（第１の評価値）として「キャッシュヒット率」を用いる。
なお、キャッシュヒット率は、以下の式（１）で表わされる。ここで、「Ｃｈｒ」は、キャッシュヒット率を表わす。「Ｃｈｃ」は、キャッシュヒット数（／ｓ）を表わす。「Ｃｍ」は、キャッシュミス数（／ｓ）を表わす。
【００２５】
【数１】
0006383340.tif 000002
【００２６】
また、「キャッシュを汚す」仮想マシンは、他の仮想マシンのデータを頻繁に自身のデータに置き換えて迷惑をかける仮想マシンである。キャッシュラインの入れ替えはキャッシュミスにより引き起こされるため、キャッシュミス数（キャッシュミス率ではなく絶対量を用いる。）を「キャッシュを汚す」ことの指標（第２の評価値）として用いる。
【００２７】
本実施形態に係るキャッシュ競合管理システム１では、新たに導入する仮想マシンを、仮想インフラ手段３００のいずれかの物理サーバ３０に配置する前に、一時割当サーバ２０において、その新たな仮想マシンの一時的なデプロイを実行する。そして、一時割当サーバ２０が、当該仮想マシンを単体で稼働させたときのキャッシュメモリに対する特性を示す情報（後記する「キャッシュアクセス特性情報」）である、キャッシュヒット率とキャッシュミス数とを検出する。リソース割当サーバ１０は、一時割当サーバ２０で検出した、キャッシュヒット率およびキャッシュミス数と、仮想インフラ手段３００内の各物理サーバ３０に配置済みの仮想マシンのキャッシュヒット率およびキャッシュミス数（後記する、「キャッシュアクセス統計情報」）を用いて、「キャッシュセンシティブな仮想マシンと、キャッシュを汚す仮想マシンを、同じ物理サーバ上に配置することを避ける」というポリシーの下、最適な物理サーバ３０に当該仮想マシンの配置先を決定する。具体的には、リソース割当サーバ１０は、キャッシュヒット率の高い仮想マシンとキャッシュミス数の多い仮想マシンとを、同じ物理サーバ３０に配置しないようにして、新たな仮想マシンの配置先を決定する（詳細は、後記する。）。
【００２８】
なお、図１においては、一時割当サーバ２０がキャッシュ競合管理システム１内に１台設置される例を示している。しかしながら、一時割当サーバ２０は、後記するように、複数台が設置されてもよい。以下においては、基本的な構成として、一時割当サーバ２０が一台設置されるものとして説明する。
【００２９】
＜キャッシュ競合管理システムの構成＞
次に、本実施形態に係るキャッシュ競合管理システム１を構成する各装置の構成について、詳細に説明する。
図２は、本実施形態に係るキャッシュ競合管理システム１を構成する、リソース割当サーバ１０、一時割当サーバ２０、物理サーバ３０それぞれの構成を示す機能ブロック図である。
【００３０】
≪リソース割当サーバ≫
本実施形態に係るリソース割当サーバ１０は、新たな仮想マシンを仮想インフラ手段３００のいずれかの物理サーバ３０に配置する際に、一時割当サーバ２０に一時的なデプロイを実行させ、当該仮想マシンを単体で稼働させたときのキャッシュヒット率（第１の評価値）とキャッシュミス数（第２の評価値）の情報を検出する。なお、この一時割当サーバ２０が検出する、キャッシュヒット率とキャッシュミス数とを、キャッシュアクセス特性情報と称する。リソース割当サーバ１０は、このキャッシュアクセス特性情報と、各物理サーバ３０が検出するキャッシュヒット率（第１の評価値）とキャッシュミス数（第２の評価値）との情報である、キャッシュアクセス統計情報とを参照し、新たな仮想マシンの配置先の物理サーバ３０を決定する。
リソース割当サーバ１０は、この配置先の物理サーバ３０の決定処理を、「キャッシュセンシティブな仮想マシンと、キャッシュを汚す仮想マシンを、同じ物理サーバ上に配置することを避ける」というポリシーの下、キャッシュヒット率の高い仮想マシンとキャッシュミス数の多い仮想マシンを、同じ物理サーバ３０に配置しないように、新たな仮想マシンの配置先を決定する。
このリソース割当サーバ１０は、図２に示すように、制御部１１と、入出力部１２と、記憶部１３とを含んで構成される。
【００３１】
入出力部１２は、通信接続される、一時割当サーバ２０および各物理サーバ３０との間の情報の入出力を行う。また、入出力部１２は、通信回線を介して情報の送受信を行う不図示の通信インタフェースと、キーボード等の入力手段やモニタ等の出力手段（いずれも不図示）との間で入出力を行う入出力インタフェースとから構成される。
【００３２】
記憶部１３は、ハードディスクやフラッシュメモリ、ＲＡＭ（Random Access Memory）等の記憶手段からなり、各物理サーバ３０から収集したキャッシュアクセス統計情報１３１や、一時割当サーバ２０から取得したキャッシュアクセス特性情報１３２等が記憶される。
【００３３】
制御部１１は、リソース割当サーバ１０全体の制御を司り、図２に示すように、キャッシュアクセス統計情報収集部１１１と、一時割当部１１２と、キャッシュアクセス特性情報取得部１１３と、配置サーバ決定部１１４とを含んで構成される。
また、この制御部１１は、例えば、記憶部１３に格納されたプログラムを不図示のＣＰＵがＲＡＭに展開し実行することで実現される。
【００３４】
キャッシュアクセス統計情報収集部１１１は、仮想インフラ手段３００内の各物理サーバ３０から、その物理サーバ３０上に設定されている各仮想マシンについてのキャッシュアクセス統計情報を取得する。例えば、キャッシュアクセス統計情報収集部１１１は、各物理サーバ３０に対して、キャッシュアクセス統計情報取得要求を所定の時間間隔で送信することにより、各物理サーバ３０の最新のキャッシュアクセス統計情報を取得する。なお、ここでは、キャッシュアクセス統計情報収集部１１１は、キャッシュアクセス統計情報として、各仮想マシンの所定時間内における、キャッシュヒット率とキャッシュミス数とを取得するものとする。そして、キャッシュアクセス統計情報収集部１１１は、取得したキャッシュアクセス統計情報１３１を記憶部１３に記憶する。
【００３５】
一時割当部１１２は、例えばユーザ端末等の外部装置（不図示）から、仮想インフラ手段３００に対する仮想マシンのデプロイ要求を受け付ける。そして、一時割当部１１２は、受け付けたデプロイ要求に応じて、仮想マシンを一時的にデプロイさせるためのリソース要求を一時割当サーバ２０に送信する。
なお、一時割当サーバ２０がキャッシュ競合管理システム１内に複数配備されている場合には、例えば、実行させる一時割当サーバ２０をランダムに決定し、その一時割当サーバ２０に対しリソース要求を送信する。
【００３６】
キャッシュアクセス特性情報取得部１１３は、一時割当サーバ２０が仮想マシンを一時的にデプロイした結果として検出した、キャッシュアクセス特性情報を一時割当サーバ２０から取得する。ここで、キャッシュアクセス特性情報取得部１１３は、キャッシュアクセス特性情報として、仮想マシンを単体で稼働した場合におけるキャッシュメモリの利用に関する、キャッシュヒット率とキャッシュミス数の情報を取得する。そして、キャッシュアクセス特性情報取得部１１３は、取得したキャッシュアクセス特性情報１３２を記憶部１３に記憶する。
【００３７】
配置サーバ決定部１１４は、一時割当サーバ２０が検出したキャッシュアクセス特性情報１３２を用いて、「キャッシュセンシティブな仮想マシンと、キャッシュを汚す仮想マシンを、同じ物理サーバ上に配置することを避ける」というポリシーの下で、新たな仮想マシンの最適な配置先となる物理サーバ３０を決定する。
【００３８】
上記のポリシーは、具体的には、図３に示す仮想マシンの組み合わせを想定し、物理サーバ３０の最適配置を行う。具体的には、上記したように、「キャッシュセンシティブ」な仮想マシンは、「仮想マシンを単体で動かしたときのキャッシュヒット率が高い仮想マシン」であると近似的に捉える。また、「キャッシュを汚す」仮想マシンは、キャッシュミス数が多い仮想マシンと捉える。よって、図３に示すように、「キャッシュヒット率の高い仮想マシン（ＶＭ）」と「キャッシュミス数の多い仮想マシン（ＶＭ）」の組み合わせ（ケース「４」）は「組み合わせ“不適”」とする。それ以外の組み合わせである、「キャッシュヒット率の低い仮想マシン（ＶＭ）」と「キャッシュミス数の少ない仮想マシン（ＶＭ）」の組み合わせ（ケース「１」）、「キャッシュヒット率の低い仮想マシン（ＶＭ）」と「キャッシュミス数の多い仮想マシン（ＶＭ）」の組み合わせ（ケース「２」）、「キャッシュヒット率の高い仮想マシン（ＶＭ）」と「キャッシュミス数の少ない仮想マシン（ＶＭ）」の組み合わせ（ケース「３」）は、「組み合わせ“適”」とする。
【００３９】
配置サーバ決定部１１４においては、上記のポリシー（図３に示す仮想マシン組み合わせポリシーの表）を数式化したものとして、仮想マシン「Ａ」と仮想マシン「Ｂ」の相性の悪さを示す評価関数（Incompatibility）を、以下の式（２）のように定義する。この際、キャッシュヒット率を０〜１に正規化した値（以下、「ＣＨＲ」と称する場合がある。）と、キャッシュミス数を０〜１に正規化した値（以下、「ＣＭ」と称する場合がある。）を用いる。
【００４０】
【数２】
0006383340.tif 000003
【００４１】
図３の仮想マシン組み合わせポリシーの表に示す場合において、仮想マシン「Ａ」と仮想マシン「Ｂ」との間で評価関数（Incompatibility）が高くになるのは、次に示す状態のときである。
・“仮想マシン「Ａ」のキャッシュヒット率（ＣＨＲＡ）が高く”、かつ、“仮想マシン「Ｂ」のキャッシュミス数（ＣＭＢ）が多い”
または、
・“仮想マシン「Ｂ」のキャッシュヒット率（ＣＨＲＢ）が高く”、かつ、“仮想マシン「Ａ」のキャッシュミス数（ＣＭＡ）が多い”
【００４２】
図４は、式（２）の数式の一部である「ｍｉｎ（ＣＨＲＡ，ＣＭＢ）」の算出を説明するための図である。
ここで、「ｍｉｎ（ＣＨＲＡ，ＣＭＢ）」では、仮想マシン「Ａ」のキャッシュヒット率（ＣＨＲＡ）と、仮想マシン「Ｂ」のキャッシュミス数（ＣＭＢ）の値のうち、低い値を返すが、ケース「１」〜「３」では、キャッシュヒット率（ＣＨＲＡ）か、キャッシュミス数（ＣＭＢ）かのどちらかの値が低いため、仮想マシン「Ａ」と仮想マシン「Ｂ」の相性の悪さを示す評価関数（Incompatibility）が低い値となる。これに対し、ケース「４」では、キャッシュヒット率（ＣＨＲＡ）、キャッシュミス数（ＣＭＢ）のいずれもが高い値のため、評価関数（Incompatibility）が高い値となる。
仮想マシン「Ｂ」のキャッシュヒット率（ＣＨＲＢ）と、仮想マシン「Ａ」のキャッシュミス数（ＣＭＡ）についても、同様に「ｍｉｎ（ＣＨＲＢ，ＣＭＡ）」の算出を行う。そして、「ｍｉｎ（ＣＨＲＡ，ＣＭＢ）」と「ｍｉｎ（ＣＨＲＢ，ＣＭＡ）」のどちらかの値が高ければ、その仮想マシン「Ａ」，「Ｂ」は相性が悪いと考え、高い方の値を返す（「ｍａｘ」をとる。）。
【００４３】
配置サーバ決定部１１４は、式（２）に示す、仮想マシン「Ａ」と仮想マシン「Ｂ」の相性の悪さを示す評価関数（Incompatibility）を用いて、新たに配置する仮想マシン（仮想マシン「Ａ」とする。）と、仮想インフラ手段３００の各物理サーバ３０上に設定済みの仮想マシンそれぞれ（仮想マシン「Ｂ」とする。）の相性の悪さを示す評価関数（Incompatibility）を算出する。そして、配置サーバ決定部１１４は、各仮想マシンについて算出した評価関数（Incompatibility）を用いて、物理サーバ３０毎に平均し、以下の式（３）に示すサーバスコア（Ｓｃｏｒｅ）を算出する。ここで、「ｎ」は、物理サーバ３０上の仮想マシン数である。
【００４４】
【数３】
0006383340.tif 000004
【００４５】
図５は、リソース割当サーバ１０の配置サーバ決定部１１４が算出するサーバスコア（Ｓｃｏｒｅ）を説明するための図である。図５（ａ）は、処理の目的とする仮想マシン、つまり、新たに配置する仮想マシン（仮想マシン「Ａ」）を単体で稼働させた場合のキャッシュヒット率（ＣＨＲ）、キャッシュミス数（ＣＭ）を示す。この値に基づき、配置サーバ決定部１１４は、各物理サーバ３０上に設定済みの仮想マシンそれぞれとの相性の悪さを示す評価関数（Incompatibility）を算出し、さらにその物理サーバ３０毎に平均して、サーバスコア（Ｓｃｏｒｅ）を算出する。そして、配置サーバ決定部１１４は、物理サーバ３０のうち、サーバスコア（Ｓｃｏｒｅ）が最小である物理サーバ３０を配置先として決定する。図５（ｂ）に示す例では、サーバスコア（Ｓｃｏｒｅ）が最小（Ｓｃｏｒｅ＝0.33）であるサーバ「Ｚ」を、配置先の物理サーバ３０として決定する。
【００４６】
配置サーバ決定部１１４は、新たに配置する仮想マシンの配置先となる物理サーバ３０を決定すると、一時割当サーバ２０に対し、配置先の物理サーバ３０を示す情報が付されたマイグレーション指示情報を送信する。
【００４７】
≪一時割当サーバ≫
次に、本実施形態に係る一時割当サーバ２０について説明する。
一時割当サーバ２０は、仮想インフラ手段３００に配置される物理サーバ３０と同様の物理サーバであり、制御部、入出力部および記憶部により構成される（いずれも不図示）。なお、入出力部および記憶部は、物理サーバとしての一般的な構成を備えるため説明を省略する。
一時割当サーバ２０の制御部は、一時割当サーバ２０全体の制御を司り、図２に示すように、ＶＭ一時デプロイ部２１、キャッシュアクセス特性情報検出部２２、マイグレーション部２３を含んで構成される。
【００４８】
ＶＭ一時デプロイ部２１は、リソース割当サーバ１０から、仮想マシンを一時的にデプロイさせることを示すリソース要求を受信し、そのリソース要求に示される仮想マシンを、自身のＣＰＵコア上にデプロイする。
【００４９】
キャッシュアクセス特性情報検出部２２は、ＶＭ一時デプロイ部２１によりデプロイされた仮想マシンについて、キャッシュアクセス特性情報を検出する。ここで、キャッシュアクセス特性情報検出部２２は、対象となる仮想マシンをデプロイした結果として、その仮想マシンを単体で稼働した場合におけるキャッシュメモリの利用に関する特定情報（キャッシュアクセス特性情報）である、キャッシュヒット率とキャッシュミス数の情報を検出する。
そして、キャッシュアクセス特性情報検出部２２は、検出したキャッシュアクセス特性情報を、リソース割当サーバ１０に送信する。
【００５０】
マイグレーション部２３は、リソース割当サーバ１０から、新たに配置する仮想マシンの配置先となる物理サーバ３０の情報が付されたマイグレーション指示情報を受信すると、一時的にデプロイした仮想マシンを配置先となる物理サーバ３０に移行する処理（マイグレーション）を実行する。
【００５１】
なお、一時割当サーバ２０は、一時的にデプロイする仮想マシンに関する情報（プログラム等）を、自身の記憶部に予め記憶しておくようにしてもよいし、その仮想マシンに関する情報（プログラム）をリソース割当サーバ１０や他の外部装置等から取得するようにしてもよい。
【００５２】
≪物理サーバ≫
次に、本実施形態に係る物理サーバ３０について説明する。
仮想インフラ手段３００を構成する各物理サーバ３０は、複数のＣＰＵコア上に仮想マシンが設定されるコンピュータであり、制御部、入出力部および記憶部を備える（いずれも不図示）。なお、入出力部および記憶部は、物理サーバ（コンピュータ）としての一般的な構成を備えるため説明を省略する。
物理サーバ３０の制御部は、物理サーバ３０全体の制御を司り、ＶＭデプロイ部３１、キャッシュアクセス統計情報検出部３２、マイグレーション部３３を含んで構成される。
【００５３】
ＶＭデプロイ部３１は、マイグレーション部３３により移行された仮想マシンを、ＣＰＵコア上にデプロイする。
【００５４】
キャッシュアクセス統計情報検出部３２は、ＶＭデプロイ部３１によりデプロイされた仮想マシンについて、キャッシュアクセス統計情報を検出する。ここで、キャッシュアクセス統計情報検出部３２は、自身のＣＰＵコア上に設定された各仮想マシンに関するキャッシュメモリの利用に関する統計情報（キャッシュアクセス統計情報）を所定の時間間隔で検出する。具体的には、キャッシュアクセス統計情報検出部３２は、キャッシュアクセス統計情報として、キャッシュヒット率とキャッシュミス数の情報を検出する。
そして、キャッシュアクセス統計情報検出部３２は、リソース割当サーバ１０からのキャッシュアクセス統計情報取得要求を取得すると、自身が検出した各仮想マシンのキャッシュアクセス統計情報を、キャッシュアクセス統計情報取得応答として、リソース割当サーバ１０に送信する。
【００５５】
マイグレーション部３３は、一時割当サーバ２０から、一時的にデプロイした仮想マシンを移行する処理（マイグレーション）を実行する。
【００５６】
＜処理の流れ＞
次に、キャッシュ競合管理システム１が実行する処理について、図６を参照して説明する。
図６は、本実施形態に係るキャッシュ競合管理システム１が実行する処理の流れを示すフローチャートである。
【００５７】
まず、リソース割当サーバ１０のキャッシュアクセス統計情報収集部１１１は、各物理サーバ３０（図６においては、物理サーバ「Ｘ」，「Ｙ」，「Ｚ」）に対して、所定の時間間隔で、キャッシュアクセス統計情報取得要求を送信する（ステップＳ１）。
【００５８】
続いて、キャッシュアクセス統計情報取得要求を受信した各物理サーバ３０のキャッシュアクセス統計情報検出部３２は、自身のＣＰＵコア上に設定された各仮想マシンについて、キャッシュメモリの利用に関する統計情報（キャッシュアクセス統計情報）を検出する。そして、キャッシュアクセス統計情報検出部３２は、検出した各仮想マシンのキャッシュアクセス統計情報（キャッシュヒット率、キャッシュミス数）を、キャッシュアクセス統計情報取得応答として、リソース割当サーバ１０に送信する（ステップＳ２）。リソース割当サーバ１０のキャッシュアクセス統計情報収集部１１１は、各物理サーバ３０から受信したキャッシュアクセス統計情報１３１を記憶部１３に記憶する。
【００５９】
次に、リソース割当サーバ１０の一時割当部１１２は、ユーザ端末等の外部装置から、仮想マシンのデプロイ要求を受け付ける（ステップＳ３）。
そして、一時割当部１１２は、受け付けたデプロイ要求に応じて、仮想マシンを一時的にデプロイさせるためのリソース要求を、一時割当サーバ２０に送信する（ステップＳ４）。
なお、リソース割当サーバ１０のキャッシュアクセス統計情報収集部１１１は、ステップＳ１，Ｓ２のキャッシュアクセス統計情報１３１の収集処理を、所定の時間間隔ではなく、ステップＳ３のデプロイ要求を受け付けたことを契機に実行するようにしてもよい。
【００６０】
デプロイ要求を受信した一時割当サーバ２０のＶＭ一時デプロイ部２１は、そのリソース要求に示される仮想マシンを、自身のＣＰＵコア上にデプロイする（ステップＳ５：一時デプロイ）。
また、一時割当サーバ２０のキャッシュアクセス特性情報検出部２２は、デプロイされた仮想マシンについて、その仮想マシンを単体で動かした場合におけるキャッシュメモリの利用に関する特性情報としてキャッシュアクセス特性情報（キャッシュヒット率、キャッシュミス数）を検出する。そして、キャッシュアクセス特性情報検出部２２は、検出したキャッシュアクセス特性情報を、リソース割当サーバ１０に送信する（ステップＳ６）。
リソース割当サーバ１０のキャッシュアクセス特性情報取得部１１３は、一時割当サーバ２０から受信したキャッシュアクセス特性情報１３２を記憶部１３に記憶する。
【００６１】
リソース割当サーバ１０の配置サーバ決定部１１４は、記憶部１３に記憶したキャッシュアクセス特性情報１３２とキャッシュアクセス統計情報１３１とを用いて、「キャッシュセンシティブな仮想マシンと、キャッシュを汚す仮想マシンを、同じ物理サーバ上に配置することを避ける」というポリシーの下、新たな仮想マシンの最適な配置先となる物理サーバ３０を決定する（ステップＳ７：配置先サーバ決定処理）。ここでは、配置サーバ決定部１１４が、新たな仮想マシンの配置先を物理サーバ「Ｙ」に決定したものとして説明する。なお、配置先サーバ決定処理の詳細は、図７を参照して後記する。
【００６２】
配置サーバ決定部１１４は、新たに配置する仮想マシンの配置先として決定した物理サーバ３０（ここでは、物理サーバ「Ｙ」）の情報を付したマイグレーション指示情報を、一時割当サーバ２０に送信する（ステップＳ８）。
【００６３】
次に、一時割当サーバ２０のマイグレーション部２３は、マイグレーション指示情報を受信すると、一時的にデプロイした仮想マシンを配置先となる物理サーバ３０（ここでは、物理サーバ「Ｙ」）に移行する処理（マイグレーション）を実行する（ステップＳ９）。
また、配置先となる物理サーバ３０のマイグレーション部３３も、新たな仮想マシンを移行（取得）する処理（マイグレーション）を実行する（ステップＳ９）。そして、ＶＭデプロイ部３１が移行された新たな仮想マシンを、ＣＰＵコア上にデプロイする（ステップＳ１０）。
【００６４】
≪配置先サーバ決定処理≫
次に、リソース割当サーバ１０が実行する配置先サーバ決定処理（図６のステップＳ７）について詳細に説明する。
図７は、本実施形態に係るリソース割当サーバ１０の配置サーバ決定部１１４が実行する配置先サーバ決定処理の流れを示すフローチャートである。
【００６５】
まず、リソース割当サーバ１０の配置サーバ決定部１１４は、記憶部１３に記憶された、キャッシュアクセス特性情報１３２およびキャッシュアクセス統計情報１３１に格納されている全ての仮想マシンのキャッシュヒット率とキャッシュミス数とを取得し、各値を０〜１に正規化した値を算出する（ステップＳ７１）。
具体的には、配置サーバ決定部１１４は、キャッシュヒット率、キャッシュミス数のそれぞれについて、取得したすべての値から最小値を引き、それを値の範囲（最大値−最小値）で割ることにより、０〜１の範囲の値に正規化する（図５参照）。
【００６６】
続いて、配置サーバ決定部１１４は、仮想マシン「Ａ」（新たに配置する仮想マシン）と仮想マシン「Ｂ」（配置済みの仮想マシン）の相性の悪さを示す評価関数（Incompatibility）を、前記した式（２）のように定義して算出する。そして、配置サーバ決定部１１４は、算出した評価関数（Incompatibility）を、物理サーバ３０毎に平均し、前記した式（３）に示すサーバスコア（Ｓｃｏｒｅ）を算出する（ステップＳ７２）。
【００６７】
次に、配置サーバ決定部１１４は、物理サーバ３０のうち、サーバスコア（Ｓｃｏｒｅ）が最小である物理サーバ３０を配置先として決定する（ステップＳ７３）。
【００６８】
このようにすることで、本実施形態に係るキャッシュ競合管理システム１、リソース割当サーバ１０およびリソース割当方法によれば、従来技術のように、メモリの使用空間をアプリケーション（プロセス）に固定的に割り当てることなく、複数の仮想マシンを同時に動かす際のキャッシュ競合による性能低下を抑制することができる。
【００６９】
〔本実施形態の変形例〕
次に、本実施形態の変形例について説明する。本実施形態におけるキャッシュ競合管理システム１においては、新たな仮想マシンの最適な配置先となる物理サーバ３０を決定するため、「キャッシュセンシティブな仮想マシンと、キャッシュを汚す仮想マシンを、同じ物理サーバ上に配置することを避ける」というポリシーを採用した。そして、「キャッシュセンシティブ（であること）」の指標（第１の評価値）として、キャッシュヒット率を採用し、「キャッシュを汚す」ことの指標（第２の評価値）として、キャッシュミス数を採用した。
しかしながら、本発明はこれらの指標に限定されず、例えば、以下に示す指標を採用することができる。
【００７０】
例えば、「キャッシュセンシティブ（であること）」の指標として、キャッシュを切ったとき、つまり、キャッシュメモリそのものを使用不可にしたときの性能劣化を採用してもよい。
この場合に、対象となる仮想マシンがキャッシュを利用したときと、キャッシュを切ったときのＩＰＣ（Instructions Per Clock）等を計測して、性能劣化を検出する。そして、性能劣化（１クロックあたりの命令実行数の低下）が著しいほど値が大きくなるように正規化（０〜１の値）する。
また、「キャッシュセンシティブであること」の他の指標として、一時割当サーバ２０において、新たに配置する仮想マシンに対し、意図的にワークロード（規準となる仮想マシン）をぶつけ、キャッシュ占有率を減らしたときの性能劣化を検出する。そして、キャッシュ占有率が減った割合の多いほど値が大きくなるように正規化（０〜１の値）する。
【００７１】
一方、「キャッシュを汚すこと」の指標として、一時割当サーバ２０において、意図的にワークロード（規準となる仮想マシン）をぶつけたときのキャッシュ占有率を採用してもよい。
この場合に、新たに配置する仮想マシンのキャッシュ占有率が高いほど値が大きくなるように正規化（０〜１の値）する。
【００７２】
リソース割当サーバ１０は、新たな仮想マシンを仮想インフラ手段３００の物理サーバ３０に配置する度に、上記した各指標に関する値を一時割当サーバ２０に検出させて取得し、記憶部１３に記憶しておく。そして、リソース割当サーバ１０は、新たな仮想マシンのデプロイ要求を受信する度に、一時割当サーバ２０で検出させた新たな仮想マシンに関する指標と、自身の記憶部１３に記憶しておいた配置済みの各仮想マシンを配置する際に検出した指標とを用いて、前記した式（３）により、各物理サーバ３０のサーバスコア（Ｓｃｏｒｅ）を算出し、そのサーバスコア（Ｓｃｏｒｅ）が最小である物理サーバ３０を配置先として決定する。
このようにしても、仮想マシンが使用するメモリの割り当てに関する柔軟性を維持しつつ、複数の仮想マシンを同時に動かす際のキャッシュ競合による性能低下を抑制することができる。
【符号の説明】
【００７３】
１      キャッシュ競合管理システム
１０    リソース割当サーバ
１１    制御部
１２    入出力部
１３    記憶部
２０    一時割当サーバ
２１    ＶＭ一時デプロイ部
２２    キャッシュアクセス特性情報検出部
２３    マイグレーション部
３０    物理サーバ
３１    ＶＭデプロイ部
３２    キャッシュアクセス統計情報検出部
３３    マイグレーション部
１１１  キャッシュアクセス統計情報収集部
１１２  一時割当部
１１３  キャッシュアクセス特性情報取得部
１１４  配置サーバ決定部
１３１  キャッシュアクセス統計情報
１３２  キャッシュアクセス特性情報
３００  仮想インフラ手段
【図１】
0006383340.tif 000005
【図２】
0006383340.tif 000006
【図３】
0006383340.tif 000007
【図４】
0006383340.tif 000008
【図５】
0006383340.tif 000009
【図６】
0006383340.tif 000010
【図７】
0006383340.tif 000011
【図８】
0006383340.tif 000012
【図９】
0006383340.tif 000013