(57)【要約】【課題】アプリケーションの性能要件を満たすように、アプリケーションを追加する物理マシンを決定する。【解決手段】本発明の実施形態としての仮想マシン管理装置は、シミュレーション部と決定部とを備える。前記シミュレーション部は、第１〜第ｎの仮想マシンで実行可能な第１〜第ｎのアプリケーションのそれぞれの動作スケジュールに従って、物理マシンが備える複数の物理ＣＰＵのそれぞれに、前記第１〜第ｎの仮想マシンから仮想マシンを割り当て、前記物理ＣＰＵを割り当てられた前記仮想マシンに前記割り当てた物理ＣＰＵを用いてそれぞれの前記アプリケーションを実行させることを、所定のスケジューリング間隔で行うシミュレーションを行う。前記決定部は、前記第１〜第ｎのアプリケーションに対して、前記物理ＣＰＵが割り当てられなかったことにより実行を待機させられた時間に基づき、それぞれの性能要件が満たされるかを決定する。【選択図】図３
2018112837.tif 000002
【特許請求の範囲】
【請求項１】
第１〜第ｎの仮想マシンで実行可能な第１〜第ｎのアプリケーションのそれぞれの動作スケジュールに従って、物理マシンが備える複数の物理ＣＰＵのそれぞれに、前記第１〜第ｎの仮想マシンから仮想マシンを割り当て、前記物理ＣＰＵを割り当てられた前記仮想マシンに前記割り当てた物理ＣＰＵを用いてそれぞれの前記アプリケーションを実行させることを、所定のスケジューリング間隔で行うシミュレーションを行うシミュレーション部と、
前記第１〜第ｎのアプリケーションに対して、前記物理ＣＰＵが割り当てられなかったことにより実行を待機させられた時間に基づき、それぞれの性能要件が満たされるかを決定する決定部と、
を備えた仮想マシン管理装置。
【請求項２】
前記第１〜第ｎ−１の仮想マシンおよび前記第１〜第ｎ−１のアプリケーションは、前記物理マシンに搭載されており、
前記第ｎの仮想マシンおよび前記第ｎのアプリケーションは、前記物理マシンに新規に追加する候補であり、
前記決定部は、前記第１〜第ｎのアプリケーションの性能要件が満たされる場合は、前記第ｎの仮想マシンおよび第ｎのアプリケーションを前記物理マシンに追加可能であることを決定する
請求項１に記載の仮想マシン管理装置。
【請求項３】
前記第１〜第ｎのアプリケーションの前記動作スケジュールは、第１〜第ｎの動作周期と、前記第１〜第ｎの動作周期内に配置された１つ以上の第１〜第ｎの動作イベントとに基づき定義され、
前記シミュレーション部は、前記第１〜第ｎの動作イベントごとに、前記物理ＣＰＵを割り当てられなかったことにより実行を待機させられた時間に基づき、ＣＰＵ競合時間を計算し、
前記決定部は、前記ＣＰＵ競合時間に基づき、前記第１〜第ｎのアプリケーションの性能要件が満たされるかを決定する
請求項２に記載の仮想マシン管理装置。
【請求項４】
前記第ｎ動作イベントを処理するために必要なＣＰＵサイクル数を、前記第ｎの仮想マシンと前記第ｎのアプリケーションとをインストールした計測用物理マシンを用いて計測する計測部を備え、
前記シミュレーション部は、前記ＣＰＵサイクル数に基づき、前記物理マシンのＣＰＵクロック数で前記第ｎの動作イベントを実行する場合に要する処理時間である第ｎ処理時間を計算し、前記第１〜第ｎ−１の動作イベントの実行に要する処理時間である第１〜第ｎ−１の処理時間を予め取得しており、前記第１〜第ｎの仮想マシンに前記物理ＣＰＵを割り当てるごとに、前記第１〜第ｎの処理時間から単位時間を減算することにより、前記第１〜第ｎの動作イベントを実行する
請求項３に記載の仮想マシン管理装置。
【請求項５】
前記計測部は、前記計測用物理マシンで前記第ｎ動作イベントの処理に要した処理時間を計測し、計測した処理時間と、前記計測用物理マシンのＣＰＵクロック数とに基づいて、前記ＣＰＵサイクル数を計測する
請求項４に記載の仮想マシン管理装置。
【請求項６】
前記第１〜第ｎの仮想マシンは、それぞれ少なくとも１つの仮想ＣＰＵを備え、
前記シミュレーション部は、前記複数の物理ＣＰＵのそれぞれに、前記第１〜第ｎの仮想マシンが備える仮想ＣＰＵ群から仮想ＣＰＵを割り当て、前記物理ＣＰＵを割り当てられた前記仮想ＣＰＵに前記割り当てた物理ＣＰＵを用いてそれぞれの前記動作イベントを実行させる
請求項３ないし５のいずれか一項に記載の仮想マシン管理装置。
【請求項７】
前記シミュレーション部は、前記複数の物理ＣＰＵのそれぞれに割り当てる前記仮想ＣＰＵを、前記第１〜第ｎの仮想マシンが備える仮想ＣＰＵ群からランダムに選択する
請求項６に記載の仮想マシン管理装置。
【請求項８】
仮想ＣＰＵ数計算部をさらに備え、
前記計測部は、前記第ｎの仮想マシンによる前記計測用物理マシンのＣＰＵ使用率を計測し、
前記仮想ＣＰＵ数計算部は、前記ＣＰＵ使用率と、前記計測用物理マシンのＣＰＵクロック数と、前記物理マシンのＣＰＵクロック数とに基づいて、前記シミュレーションで用いる前記第ｎの仮想マシンに搭載する仮想ＣＰＵ数を計算し、
前記シミュレーション部は、前記仮想ＣＰＵ数の仮想ＣＰＵを搭載した前記第ｎの仮想マシンを用いる
請求項６または７に記載の仮想マシン管理装置。
【請求項９】
前記計測部は、前記ＣＰＵ使用率を、前記第ｎのアプリケーションの性能要件に応じた時間間隔で計測し、
前記仮想ＣＰＵ数計算部は、前記ＣＰＵ使用率の最大値に基づいて、前記仮想ＣＰＵ数を計算する
請求項８に記載の仮想マシン管理装置。
【請求項１０】
前記決定部は、前記第１〜第ｎの動作イベントに対して計算された前記ＣＰＵ競合時間の最大値または９９パーセンタイル値に基づき、前記第１〜第ｎのアプリケーションの性能要件が満たされるかを決定する
請求項３ないし９のいずれか一項に記載の仮想マシン管理装置。
【請求項１１】
前記シミュレーション部は、前記シミュレーションを、前記物理マシンに加えて、第２〜第Ｍの物理マシンを対象に行い、
前記決定部は、前記物理マシンおよび前記第２〜第Ｍの物理マシンのうち、前記第１〜第ｎのアプリケーションの性能要件を満たす物理マシンを選択し、選択した物理マシンに、前記第ｎの仮想マシンおよび第ｎのアプリケーションを追加することを決定する
請求項２ないし１０のいずれか一項に記載の仮想マシン管理装置。
【請求項１２】
第１〜第ｎの仮想マシンで実行可能な第１〜第ｎのアプリケーションのそれぞれの動作スケジュールに従って、物理マシンが備える複数の物理ＣＰＵのそれぞれに、前記第１〜第ｎの仮想マシンから仮想マシンを割り当て、前記物理ＣＰＵを割り当てられた前記仮想マシンに前記割り当てた物理ＣＰＵを用いてそれぞれの前記アプリケーションを実行させることを、所定のスケジューリング間隔で行うシミュレーションを行うステップと、
前記第１〜第ｎのアプリケーションに対して、前記物理ＣＰＵが割り当てられなかったことにより実行を待機させられた時間に基づき、それぞれの性能要件が満たされるかを決定するステップと、
を備えた仮想マシン管理方法。
【請求項１３】
第１〜第ｎの仮想マシンで実行可能な第１〜第ｎのアプリケーションのそれぞれの動作スケジュールに従って、物理マシンが備える複数の物理ＣＰＵのそれぞれに、前記第１〜第ｎの仮想マシンから仮想マシンを割り当て、前記物理ＣＰＵを割り当てられた前記仮想マシンに前記割り当てた物理ＣＰＵを用いてそれぞれの前記アプリケーションを実行させることを、所定のスケジューリング間隔で行うシミュレーションを行うステップと、
前記第１〜第ｎのアプリケーションに対して、前記物理ＣＰＵが割り当てられなかったことにより実行を待機させられた時間に基づき、それぞれの性能要件が満たされるかを決定するステップと、
をコンピュータに実行させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、仮想マシン管理装置、仮想マシン管理方法およびコンピュータプログラムに関する。
【背景技術】
【０００２】
ビルや工場の設備機器を監視制御するアプリケーションが存在する。このアプリケーションを監視制御アプリケーションと呼ぶ。監視制御アプリケーションの例として、設備機器（空調機器や照明機器）の状態（運転状態、温度、湿度、照度、など）を定期的に計測するアプリケーションや、設備機器の状態を調節するアプリケーションが存在する。監視制御アプリケーションは、その処理を行う時刻（動作時刻）を、数ミリから数十ミリ秒程度の精度で正確に守ることが要求される。
【０００３】
また、計算機の仮想化技術が存在する。仮想化は、物理マシン（ＰＭ：Ｐｈｙｓｉｃａｌ  Ｍａｃｈｉｎｅ）上に、仮想的な計算機（ＶＭ：Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）を作成する技術である。仮想的な計算機とは、オペレーティングシステム（ＯＳ）や、ＯＳ上で動作するアプリケーションにとって、あたかも物理マシンのように振る舞うソフトウェアのことである。
【０００４】
仮想化を使うことで、アプリケーションごとに独立した実行環境を用意しつつ、かつ、単一のＰＭ上で複数のアプリケーションを実行できる。そのため、あるシステムを構築するために必要なＰＭ数を減らせる場合が多い。ＰＭ数を減らせば、システムのハードウェアコストを削減できるし、システムが消費する電力消費量や物理空間を削減できる。
【０００５】
一般的に、仮想化はアプリケーションの性能を低下させる。特に、単一のＰＭ上で、複数のＶＭを実行した場合に、アプリケーションの性能は低下する。ＰＭに搭載されているＣＰＵやメモリなどの計算資源を、ＶＭ間で共有するためである。一方で、監視制御アプリケーションの利用者の立場では、できるだけ多くのアプリケーションおよびＶＭを、ＰＭ上で実行したい。そのほうが、上述のコスト削減効果が増すためである。
【０００６】
したがって、ＶＭ上で実行される監視制御アプリケーションの性能を保ちつつ、できるだけ多くのＶＭを単一ＰＭ上で実行できればよい。
【０００７】
関連技術として、ＶＭ上で実行されるアプリケーションの性能低下を予測し、性能が低下するまでＶＭを追加するものが知られている。この技術では、ＶＭ群によるＣＰＵ使用率を計測し、Ａ）ＶＭ群のＣＰＵ使用率の合計を、Ｂ）ＰＭのＣＰＵ資源の値と比較する。そして、ＡがＢに達した場合に、アプリケーションの性能が低下すると判定する。アプリケーションとしては、Ｗｅｂサーバアプリが想定されている。
【０００８】
しかしながら、アプリケーションが監視制御アプリケーションの場合では、ＶＭ群によるＣＰＵ使用率が小さくかつＰＭのＣＰＵ資源に余裕があっても、ＶＭ数が増えると動作時刻が乱れる場合がある。例えば、監視制御アプリケーションの動作時刻が数十ミリ以上乱れてしまう可能性がある。
【０００９】
ＣＰＵ資源に余裕があるにもかかわらず、アプリケーションの動作時刻が乱れるのは、ＣＰＵ競合が原因である。ＣＰＵ競合とは、複数のＶＭが、ある時刻に、あるＣＰＵを使用しようとした場合に、１つのＶＭだけがＣＰＵを使用できて、残りのＶＭはＣＰＵを使用できない現象のことである。残りのＶＭは、ＣＰＵが解放されるのを待つことになる。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】国際公開第２００７／１４８３７１号
【発明の概要】
【発明が解決しようとする課題】
【００１１】
本発明の実施形態は、物理マシンにおける複数の仮想マシン上で複数のアプリケーションを実行する場合に、各アプリケーションの性能要件が満たされるかを事前に判断可能にするものである。
【課題を解決するための手段】
【００１２】
本発明の実施形態としての仮想マシン管理装置は、シミュレーション部と決定部とを備える。前記シミュレーション部は、第１〜第ｎの仮想マシンで実行可能な第１〜第ｎのアプリケーションのそれぞれの動作スケジュールに従って、物理マシンが備える複数の物理ＣＰＵのそれぞれに、前記第１〜第ｎの仮想マシンから仮想マシンを割り当て、前記物理ＣＰＵを割り当てられた前記仮想マシンに前記割り当てた物理ＣＰＵを用いてそれぞれの前記アプリケーションを実行させることを、所定のスケジューリング間隔で行うシミュレーションを行う。前記決定部は、前記第１〜第ｎのアプリケーションに対して、前記物理ＣＰＵが割り当てられなかったことにより実行を待機させられた時間に基づき、それぞれの性能要件が満たされるかを決定する。
【図面の簡単な説明】
【００１３】
【図１】本実施形態に係る仮想マシン（ＶＭ：Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）管理装置を備えたＶＭ管理システムを示す。
【図２】仮想化の概念図。
【図３】本実施形態に係るＶＭ管理装置の機能ブロック図。
【図４】ＶＭ数とＣＰＵ競合時間の関係を示す図。
【図５】本実施形態に係るＶＭ管理装置の全体の概略動作フローを示す図。
【図６】本実施形態に係る動作スケジュールの統合例を示す図。
【図７】物理マシンの仮想モデルと、仮想マシンの仮想モデルとを模式的に示す図。
【図８】本実施形態に係るシミュレーションの動作フローを示す図。
【図９】本実施形態に係るコンピュータのハードウェアブロック図。
【発明を実施するための形態】
【００１４】
以下、図面を参照しながら、本発明の実施形態について説明する。
【００１５】
図１は、本実施形態に係る仮想マシン（ＶＭ：Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）管理装置を備えたＶＭ管理システムを示す。ＶＭ管理システムは、ＶＭ管理装置１１と、複数の物理マシン（ＰＭ：Ｐｈｙｓｉｃａｌ  Ｍａｃｈｉｎｅ）１２Ａ、１２Ｂ、１２Ｃ、１２Ｄと、計測用ＰＭ＿１３とを備え、これらがネットワーク１４を介して接続されている。以下、ＰＭ＿１２と記載するときは、複数のＰＭ＿１２Ａ〜１２Ｄのうちの任意の１台を指すものとする。
【００１６】
ＰＭ＿１２は、複数のＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）と、メモリと、ネットワーク１４との入出力インタフェースとを備える。メモリは、ＤＲＡＭまたはＳＲＡＭ等の不揮発性メモリ、ＮＡＮＤ等の不揮発性メモリ、およびこれらの両方でもよい。ＰＭ＿１２は、ＳＳＤおよびハードディスク等のストレージ装置を備えてもよい。ＰＭ＿１２が備える複数のＣＰＵのそれぞれを、物理ＣＰＵ（ｐｈｙｓｉｃａｌ  ＣＰＵ：ｐＣＰＵ）と記載することがある。
【００１７】
ＰＭ＿１２では、計算機の仮想化技術により、１つ以上のＶＭ（仮想的マシン）が作成されている。ＶＭとは、オペレーティングシステム（ＯＳ）や、ＯＳ上で動作するアプリケーションにとって、あたかもＰＭ（物理マシン）のように振る舞うソフトウェアのことである。ＯＳおよびアプリケーションは、ＶＭ上で動作する。
【００１８】
図２は、仮想化の概念図を示す。ＰＭ＿１２には、ＶＭＭ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ  Ｍｏｎｉｔｏｒ）と呼ばれる仮想化ソフトウェアがインストールされている。ＶＭＭの具体例として、ＸｅｎまたはＫＶＭなどがある。ＶＭＭを介して、複数のＶＭが、ＰＭ上で動作可能になっている。各ＶＭ上では、ＯＳおよびアプリケーションが動作する。アプリケーションのことを、単にアプリと記述する場合がある。
【００１９】
本実施形態ではアプリとして、所定の周期で同じ動作を繰り返すアプリを想定する。具体的には、監視制御アプリである。監視制御アプリの例として、センサの監視を行うアプリがある。なお、各ＶＭ上では、１つの監視制御アプリが動作することを想定するが、これに限定されるものではない。
【００２０】
ＶＭＭが行う動作の一つの例として、ＶＭＭは、一定の時間間隔（所定のスケジューリング間隔）で、ＣＰＵスケジューリングを行う。ＣＰＵスケジューリングとは、どのＶＭにどのｐＣＰＵを使わせるかを決定し、ＶＭに、決定したｐＣＰＵを割り当て、使用させることである。ＣＰＵスケジューリングの結果、ｐＣＰＵを割り当てられなかったＶＭは、動作できない。
【００２１】
計測用ＰＭ＿１３は、ＰＭ＿１２と同様、複数のＣＰＵと、メモリと、ネットワーク１４との入出力インタフェースを備える。計測用ＰＭ＿１３は、ＶＭ管理装置１１により制御される。計測用ＰＭ＿１３に、ＶＭＭ、ＶＭ、ＯＳおよびアプリをインストールすることで、ＶＭおよびアプリが動作可能である。計測用ＰＭ＿１３は、後述するように、新たに追加（インストール）したいアプリの特性を把握するために用いられる。計測用ＰＭ＿１３が備える複数のＣＰＵのそれぞれを、物理ＣＰＵ（ｐＣＰＵ）と記載することがある。
【００２２】
図３に、ＶＭ管理装置の機能ブロック図を示す。ＶＭ管理装置は、ＰＭ情報記憶部１０１、ＶＭ情報記憶部１０２、アプリ情報記憶部１０３、計測部１０４、ｖＣＰＵ数計算部１０５、シミュレーション部（あるいはＣＰＵ競合時間推定部）１０６、およびＶＭ追加先決定部（あるいは決定部）１０７を備える。ＶＭ管理装置は、これらのブロック以外に、ユーザから指示またはデータを入力するための入力部、データを表示する表示部、外部装置とデータを送受信する通信部を備えていてもよい。ＶＭ管理装置は、新たにアプリ（監視制御アプリ）を追加する場合に、アプリを追加する対象となる物理マシンを、ＰＭ＿１２Ａ〜ＰＭ＿１２Ｄの中から決定する。追加可能なＰＭが存在しない場合、新たなＰＭをネットワーク１４に追加することも決定する。なお、アプリを追加する場合、当該アプリを実行する仮想マシンと、アプリと仮想マシンとの間に介在するＯＳも追加する必要がある。
【００２３】
ＰＭ情報記憶部１０１は、ネットワーク１４に接続されている各ＰＭの情報を記憶している。ＰＭの情報は、一例として、以下を含む。
●    ＰＭを識別するためのＩＤ
●    ＰＭのホスト名
●    ＩＰアドレス
●    ＰＭが備えるｐＣＰＵの個数
●    ＰＭが備えるメモリのサイズ
●    ＰＭにインストールされている仮想化ソフトウェア（ＶＭＭ）の名称
●    ＣＰＵスケジューリング間隔
●    ＰＭで実行中のＶＭのＩＤ
【００２４】
ＶＭ情報記憶部１０２は、ＶＭの情報を記憶する。ＶＭの情報は、一例として、以下を含む。
●    ＶＭを識別するためのＩＤ
●    ＶＭのホスト名
●    ＩＰアドレス
●    ＶＭが備える仮想ＣＰＵ（ｖｉｒｔｕａｌ  ＣＰＵ：ｖＣＰＵ）の個数（ＶＭには１つ以上のｖＣＰＵが配置され、ｖＣＰＵによりアプリが実行される。）
●    ＶＭが仮想的に備えるメモリのサイズ
●    ＶＭで実行中のアプリのＩＤ
【００２５】
アプリ情報記憶部１０３は、アプリの情報を記憶する。アプリの情報は、一例として以下を含む。
●    アプリのＩＤ
●    アプリの動作スケジュール
●    アプリの性能要件
【００２６】
アプリの動作スケジュールおよびアプリの性能要件について説明する。
【００２７】
アプリの動作スケジュールは、動作の周期と、動作イベントとから定義される。動作イベントは、周期内における動作の開始時刻と、その動作が完了するまでの時間（処理時間）とにより定義される。つまり、動作スケジュールは、複数の動作イベントを、異なる所定のタイミングで実行することを定めている。
【００２８】
アプリの性能要件は、許容できる動作時刻の誤差（許容誤差）として定義される。動作時刻の誤差は、「動作スケジュールで定義されている動作時刻」と「実際に動作した時刻」の差である。
【００２９】
計測部１０４は、新規に追加したいアプリの特性を把握する処理を行う。計測部１０４は、計測用ＰＭ＿１３に、ＶＭ、ＯＳ、ＶＭＭ等の実行環境を用意し、追加するアプリをＶＭ上で実際に実行することで、アプリが、どのくらいｐＣＰＵの資源（リソース）を消費するのか、および処理にどのくらいの時間がかかるのか等を計測する。例えば、１動作イベントあたりのｐＣＰＵの資源（リソース）の消費量、および１動作イベントあたりの処理時間を把握する。
【００３０】
ｖＣＰＵ数計算部１０５は、ＰＭ＿１２ごとに、計測部１０４により把握されたアプリの特性（計測の結果）に基づき、当該追加するアプリを実行するＶＭに搭載させるｖＣＰＵ数を計算する。
【００３１】
シミュレーション部１０６は、各ＰＭ＿１２について、それぞれにアプリ（およびＶＭとＯＳ）を追加する場合における、ＰＭ＿１２に搭載済みのアプリと、追加するアプリとの動作をシミュレーションする。具体的には、シミュレーションでは、ＰＭ＿１２に搭載されている複数のｐＣＰＵのそれぞれに、搭載済みのＶＭと、追加するアプリのＶＭとの中からＶＭを選択して割り当て、選択したＶＭにそれぞれのアプリを実行させることを、所定のスケジューリング間隔で行う。このシミュレーションの結果に基づき、アプリ毎かつ動作イベント毎にＣＰＵ競合時間を計算する。シミュレーションでは、計測結果と、各アプリの動作スケジュールと、計算されたｖＣＰＵ数と、各ＰＭ＿１２のｐＣＰＵ数と、仮想化ソフトウェア（ＶＭＭ）によるＣＰＵスケジューリング間隔とを用いる。
【００３２】
ＣＰＵ競合およびＣＰＵ競合時間について説明する。ＣＰＵ競合とは、複数のＶＭが、ある時刻に、あるｐＣＰＵを使用しようとした場合に、１つのＶＭだけがｐＣＰＵを使用できて、残りのＶＭはｐＣＰＵを使用できない現象のことである。残りのＶＭは、ｐＣＰＵが解放されるのを待つことになる。このＣＰＵ解放を待つ時間のことを「ＣＰＵ競合時間」と呼ぶ。
【００３３】
図４に、ＶＭ数と、ＣＰＵ競合時間の最大値との関係を示す。この図は、８つのｐＣＰＵ（コア）を備えたＰＭを用いて評価した結果を示す。８コアであるため、ＶＭ数が９個の時点から、ｐＣＰＵを使用できないＶＭ、すなわちＣＰＵ競合が生じ、ＣＰＵ競合時間が増加している。ＣＰＵ競合時間の間は、ＶＭはアプリを実行できないから、監視制御アプリの動作時刻は乱れる。ＶＭ数が２０の時点で、ＰＭのＣＰＵ資源には、まだ余裕が存在しているが、アプリの動作時刻が数ミリ秒から数十ミリ秒ほど乱れる。この乱れは、処理を行う時刻（動作時刻）を、数ミリから数十ミリ秒程度の精度で正確に守ることが要求される監視制御アプリでは問題となる。
【００３４】
ＶＭ追加先決定部１０７は、上記のシミュレーションにおいて各アプリがｐＣＰＵを使用できずに待機させられた時間（より詳細には、各アプリの動作イベント毎に計算されたＣＰＵ競合時間）に基づき、ＰＭ＿１２が搭載済みのアプリの性能要件と、当該ＰＭに追加するアプリの性能要件とが満たされるかを評価する。この評価を、ＰＭ＿１２毎に行う。そして、搭載済みのアプリの性能要件と、追加するアプリの性能要件とを満たすＰＭ＿１２を、アプリ（およびＶＭ、ＯＳ）を追加する対象となるＰＭとして決定する。
【００３５】
図５は、ＶＭ管理装置の動作フローを概略的に示す。
【００３６】
アプリの追加要求が発生する（Ｓ１０１）。例えば、監視制御する対象となる設備機器が増えたため、それに対応するアプリを実行したい場合がある。追加要求はユーザが入力部を用いて入力してもよいし、外部装置から通信ネットワークを介してＶＭ管理装置が追加要求を受信してもよい。
【００３７】
追加要求を受けたＶＭ管理装置の計測部１０４は、追加するアプリの特性を把握するための処理を行う（Ｓ１０２）。特性とは、アプリが消費するＣＰＵ資源（リソース）の量などである。ステップＳ１０２の詳細は後述する。
【００３８】
追加するアプリの特性が把握されたら、ｖＣＰＵ数計算部１０５が、追加するアプリを実行するＶＭに搭載させるｖＣＰＵ数を計算する（Ｓ１０３）。本ステップは、追加候補となるＰＭごとに行う。すなわち、ＰＭ＿１２Ａ、ＰＭ＿１２Ｂ、ＰＭ＿１２Ｃ、ＰＭ＿１２Ｄのそれぞれに対して、本ステップを行う。ステップＳ１０３の詳細は後述する。
【００３９】
シミュレーション部１０６が、ＰＭ＿１２Ａ〜ＰＭ＿１２Ｄのそれぞれについて、アプリを追加した場合のＣＰＵ競合時間を推定する（Ｓ１０４）。ステップＳ１０４の詳細は後述する。
【００４０】
ＶＭ追加先決定部１０７が、シミュレーション部１０６の推定結果に基づき、追加するアプリの性能要件および搭載済みのアプリの性能要件を満たすＰＭが存在するかを判断する（Ｓ１０５）。
【００４１】
追加するアプリの性能要件および搭載済みのアプリの性能要件を満たすＰＭが存在しなければ（Ｓ１０５のＮＯ）、ユーザにＰＭの追加を指示する情報を出力する（Ｓ１０６）。例えば、ＰＭの追加の指示情報を表示装置の画面に表示してもよいし、ユーザ端末に指示情報を送信してもよい。ユーザは、この指示情報を受けて、例えばネットワーク１４に新規のＰＭを追加するなどの対応を行う。ＰＭの追加後、ステップＳ１０４に戻る。
【００４２】
一方、追加するアプリの性能要件および搭載済みのアプリの性能要件を満たすＰＭが１つ以上存在すれば（Ｓ１０５のＹＥＳ）、ＶＭ追加先決定部１０７は、当該１つ以上のＰＭの中から、アプリを追加するＰＭを選択する（Ｓ１０７）。ステップＳ１０７の詳細は後述する。
【００４３】
ＶＭ追加先決定部１０７は、選択したＰＭに、アプリ（およびＶＭとＯＳ）を追加する（Ｓ１０８）。
【００４４】
以下、ステップＳ１０２、Ｓ１０３、Ｓ１０４、Ｓ１０７の詳細を説明する。
【００４５】
（Ｓ１０２：アプリの特性の把握）
計測部１０４は、アプリの計測（ベンチマーク）を行うことで、アプリが消費するＣＰＵ資源や、アプリの動作に必要な時間を把握する。このために、計測部１０４は、計測用ＰＭ＿１３でＶＭを起動し、そのＶＭ上で、新たに追加するアプリを動かす。この際、計測部１０４は、アプリが必要とするＣＰＵ資源を高精度に把握するため、ＶＭに、１つまたは複数のｖＣＰＵを搭載（作成）させる。一例として、計測用ＰＭ＿１３が持つｐＣＰＵ数の８割程度がＶＭに搭載されるようにする。なお、計測用ＰＭ＿１３で動かすＶＭ、アプリ、ＯＳ、ＶＭＭは、ＶＭ管理装置からアクセス可能な記憶装置から読み出して計測用ＰＭ＿１３にインストールしてもよいし、通信ネットワークを介して外部のサーバ等から受信してもよい。ＶＭ、アプリ、ＯＳおよびＶＭＭのうちの一部または全部が、予め計測用ＰＭ＿１３にインストールしておいてもよい。
【００４６】
計測部１０４は、計測用ＰＭ＿１３に、アプリの動作周期よりも長い期間、アプリを実行させる。アプリの実行中、ＶＭ群によるＣＰＵ使用時間（計測用ＰＭ＿１３に搭載されている複数のｐＣＰＵの使用時間の合計）、１イベントの処理に必要なＣＰＵサイクル数、ＶＭ群によるＣＰＵ使用率（計測用ＰＭ＿１３に搭載されている複数のｐＣＰＵの使用率の合計）などを計測する。
【００４７】
例えば、アプリの実行期間において、アプリがＮ個の動作イベントを処理し、かつ、ＶＭ群によるＣＰＵ使用時間がＵ秒として計測されたとする。このとき、計測部１０４は、１イベントの処理に必要なＣＰＵサイクル数Ｃｅを、以下の式で計算する。
【数１】
2018112837.tif 000003
Ｘは、計測用ＰＭ＿１３のＣＰＵクロック数（クロック周波数）、すなわち、計測用ＰＭ＿１３が備える複数のｐＣＰＵのクロック数である。なお、複数のｐＣＰＵのクロック数は同じとする。
【００４８】
また、計測部１０４は、アプリの許容誤差に応じた間隔で、ＣＰＵ使用率を計測する。例えばアプリの許容誤差が１００ｍｓであれば、１００ｍｓ間隔でＣＰＵ使用率を計測する。計測部１０４は、実行期間中の最大ＣＰＵ使用率を把握する。
【００４９】
（Ｓ１０３：ｖＣＰＵ数の計算）
ｖＣＰＵ数計算部１０５は、計測用ＰＭ＿１３のｐＣＰＵのＣＰＵクロック数を考慮して、追加するＶＭに必要なｖＣＰＵ数（Ｎｖｃｐｕ）を決定する。Ｎｖｃｐｕは、以下の式で計算する。
【数２】
2018112837.tif 000004
Ｘは、式（１）と同様、ｐＣＰＵのクロック数である。Ｙは、ＶＭを追加する可能性があるＰＭ＿１２のクロック数である。最大ＣＰＵ使用率は、計測部１０４が計測した値である。
【数３】
2018112837.tif 000005
はｚ以上の最小の整数を返す天井関数である。
【００５０】
例えば、最大ＣＰＵ使用率が１５０％で、ＹがＸの２倍だとする。この場合、引数の値は０．７５になるため、Ｎｖｃｐｕは１となる。
【００５１】
式（２）を用いることで、ＶＭに必要なｖＣＰＵ数をより正確に見積もることができる。
【００５２】
（Ｓ１０４：ＣＰＵ競合時間の推定）
シミュレーション部１０６は、ＰＭ＿１２ごとに（すなわちＰＭ＿１２Ａ〜１２Ｄのそれぞれについて）、ＣＰＵ競合時間を推定する。以下、ＰＭ＿１２が備えるｐＣＰＵ数をＮｃｐｕと記載する。
【００５３】
シミュレーション部１０６は、ＰＭ＿１２のｐＣＰＵ数（Ｎｃｐｕ）と、ＰＭ＿１２上で動いているＶＭ群を把握する。
また、シミュレーション部１０６は、各ＶＭが備えているｖＣＰＵの数を把握する。
また、シミュレーション部１０６は、各ＶＭ上で動いているアプリ群のそれぞれの動作スケジュールを把握する。
また、シミュレーション部１０６は、ＰＭ＿１２ごとに、追加するＶＭに備えさせるｖＣＰＵ数を、ｖＣＰＵ数計算部１０５から取得する。
また、シミュレーション部１０６は、追加するアプリの動作イベント１つの処理に必要なサイクル数を、計測部１０４から取得する。
シミュレーション部１０６は、ＰＭ＿１２ごとに、ｐＣＰＵクロック数Ｙから、追加するアプリの動作イベント１つの処理に必要な処理時間Ｔｅを、以下の式（３）により計算する。
【数４】
2018112837.tif 000006
シミュレーション部１０６は、ＰＭ＿１２にインストール済み（動作中）のアプリの動作イベントの処理時間の情報を、アプリ情報記憶部１０３から取得する。
【００５４】
シミュレーション部１０６は、ＰＭ＿１２にインストール済み（動作中）のアプリの動作スケジュールと、新たに追加するアプリの動作スケジュールとを統合して、統合スケジュールを作成する。この際、各動作スケジュールの動作周期の最小公倍数を計算し、それを統合スケジュールの動作周期として定める。この際、各動作スケジュールがもつ動作イベントの、上記動作周期内での動作開始のタイミングを維持する。各動作スケジュールがもつ動作イベントが、どのＶＭ上で発生するイベントなのか、という情報も把握しておく。
【００５５】
図６は、シミュレーション部１０６が統合スケジュールを作成する一例を示す。マルは動作イベントを表している。マルの中の数字は、その動作イベントを実行するアプリの番号である。仮に動作スケジュールの単位時間を１秒とすると、図では、アプリ１の動作スケジュールは５秒周期、アプリ２の動作スケジュールは１０秒周期であるから、統合スケジュールの周期は１０秒となる。
【００５６】
シミュレーション部１０６は、ＰＭ＿１２の仮想モデルと、ＰＭ＿１２に搭載されているＶＭ群の仮想モデルとを作成し、アプリ群の動作をシミュレーションすることで、ＣＰＵ競合時間を推定する。
【００５７】
図７に、ＰＭ＿１２の仮想モデルと、ＶＭの仮想モデル（図ではＶＭ＿１の仮想モデルと、ＶＭ＿２の仮想モデルが示されるが、ＶＭ＿３以降の仮想モデルが存在してもよい）とを模式的に示す。図の左には、ＶＭ＿１、ＶＭ＿２、ＶＭ＿３のそれぞれの動作イベントが時系列に配置されており、右側のイベントほど先に実行される。
【００５８】
ＰＭ＿１２の仮想モデルは、１個以上のｐＣＰＵ（図のＣＰＵ１とＣＰＵ２）を有する。ＣＰＵ１とＣＰＵ２のクロック数はＹである。
【００５９】
ＶＭ１の仮想モデルおよびＶＭ２の仮想モデルのそれぞれは、１個以上のｖＣＰＵ（図のｖＣＰＵ１とｖＣＰＵ２）と、１個のイベントキューとを持つ。１つのｖＣＰＵは、同時に１つのｐＣＰＵと関連付けられることができる。また、１つのｐＣＰＵは、同時に１つのｖＣＰＵと関連づけられることができる。また、１つのｖＣＰＵは、同時に一つの動作イベントと関連付けられることができる。１つの動作イベントが、複数のｖＣＰＵに関連づけられてもよい。この場合、１つの動作イベントが、複数のｖＣＰＵで実行できる。イベントキューは、無限個の動作イベントと関連付けられる。
【００６０】
図８は、シミュレーション部１０６が行うシミュレーションのフローチャートを示す。ＰＭ＿１２（ＰＭ＿１２Ａ〜ＰＭ＿１２Ｄのそれぞれに）にアプリを追加する場合に、ＰＭ＿１２に搭載済みのアプリと、追加するアプリとの動作をシミュレーションする。
【００６１】
シミュレーション時刻Ｔ＝０からシミュレーションを開始する（Ｓ２０１）。シミュレーションは離散時間で行う。シミュレーションの単位時間をＷとする。Ｗの値は、一例として、各アプリの許容遅延以下の値である。
【００６２】
フリーな（ｖＣＰＵと関連付けられていない）ｐＣＰＵが存在する場合は、そのｐＣＰＵを使わせるｖＣＰＵを決定する（Ｓ２０２）。イベントが関連付けられているｖＣＰＵが、候補となる。これにより、各ｐＣＰＵは、複数のＶＭのいずれかのｖＣＰＵと関連付けられる。ｖＣＰＵの選び方はいくつかある。
●    イベントが関連付けられている全ｖＣＰＵから、ランダムでｖＣＰＵを選ぶ。
●    ｐＣＰＵと関連付けられた回数が、ｖＣＰＵ間で平等になるようにｖＣＰＵを選ぶ。
【００６３】
新たにｐＣＰＵと関連づけられたｖＣＰＵには、固定の値を有するｐＣＰＵ使用可能時間を割り当てる。ｐＣＰＵ使用可能時間が０より大きい間、ｖＣＰＵはｐＣＰＵを使用できる。ｐＣＰＵ使用可能時間の値は、ＰＶ情報記憶部１０１に記憶されている「仮想化ソフトウェアのＣＰＵスケジューリング間隔」の値と同じにする。
【００６４】
統合スケジュールの時刻Ｔにおける動作イベントＥ（ｔ）を確認する。複数の動作イベント（Ｅ＿１，  Ｅ＿２，  ．．．，  Ｅ＿ｉ，  ．．．，  Ｅ＿ｘ）が存在する場合もある。そして、各イベントＥ＿ｉを、Ｅ＿ｉを、該当するＶＭのイベントキューに登録する（Ｓ２０３）。
【００６５】
次に、各ＶＭが備えているｖＣＰＵについて、以下の処理を行う。
ｖＣＰＵがｐＣＰＵと関連付けられており、かつ、ｖＣＰＵが動作イベントと関連付けられておらず、かつ、イベントキューにイベントがあるなら、動作イベントを１つ選び、選んだ動作イベントを、ｖＣＰＵと関連付ける（Ｓ２０４）。動作イベントの選び方は、Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ  （ＦＩＦＯ）で選んでもよいし、ランダムで選んでもよい。
【００６６】
動作イベントと関連付けられているｖＣＰＵは、自身がｐＣＰＵと関連付けられているなら、動作イベントを処理できる。このため、動作イベントの処理時間から、シミュレーションの単位時間Ｗを減算する（Ｓ２０５）。動作イベントの処理時間が所定値以下（ここでは０以下になったら）、その動作イベントの処理は完了したとみなし（Ｓ２０６）、その動作イベントを消去する（Ｓ２０７）。その動作イベントとｖＣＰＵとの関連付けも消える。追加するアプリの処理時間は、前述した処理時間Ｔｅに相当し、その他のアプリの処理時間は、アプリ情報記憶部１０３に格納されている。すなわち、その他のアプリの処理時間は、予め取得されている。
【００６７】
なお、動作イベントの処理が完了した結果、一定時間後に、別の動作イベントが発生する場合がある。例えば、リクエストを送って、非同期で返ってきたレスポンスを処理する動作イベントなどがある。その場合は、別の動作イベントを、統合スケジュールに追加する。
【００６８】
ｖＣＰＵがｐＣＰＵと関連付けられているなら、ｖＣＰＵのｐＣＰＵ使用可能時間から、シミュレーションの単位時間Ｗを減算する（Ｓ２０８）。ｐＣＰＵ使用可能時間が基準値以下（ここでは０以下）になったら（Ｓ２０９のＹＥＳ）、ｖＣＰＵとｐＣＰＵとの関連付けを破棄する（Ｓ２１０）。すなわち、これまでこのｖＣＰＵが使用していたｐＣＰＵはフリーとなる。なお、ｖＣＰＵで動作イベントの実行がまだ完了していない場合、その動作イベントはイベントキューに留まったままとなり、次にｖＣＰＵがｐＣＰＵに関連づけられたときに、途中から実行される。このため、ステップＳ２０５で計算された減算後の動作イベントの処理時間の値は、次に使い回せるように、一時的に記憶しておく。
【００６９】
シミュレーション時刻を進める。すなわち、Ｔ＝Ｔ＋Ｗとする（Ｓ２１１）。Ｔが統合スケジュールの動作周期１回分に達するまで、シミュレーションを継続する（Ｓ２１２のＮＯ）。Ｔが統合スケジュールの動作周期１回分に達したら（Ｓ２１２のＹＥＳ）、シミュレーションを終了する。
【００７０】
シミュレーション部１０６は、上記のシミュレーションを実施した結果から、動作イベントごとに、ＣＰＵ競合時間を推定する。ＣＰＵ競合時間は、動作イベントがイベントキューで待機させられた時間と、動作イベントが処理完了するまでにｖＣＰＵが待機させられた時間との合計である。より正確には、以下の時間Ｔ１と時間Ｔ２との合計である。
時間Ｔ１：動作イベントがＶＭのイベントキューに登録されてから、ｖＣＰＵと関連付けられるまでの時間
時間Ｔ２：動作イベントがｖＣＰＵに関連付けられた後、処理完了までの間に、そのｖＣＰＵとｐＣＰＵの関連付けが途切れた場合、その途切れていた時間
【００７１】
シミュレーション部１０６は、動作イベントごとに計算したＣＰＵ競合時間に基づき、全アプリにおけるＣＰＵ競合時間の最大値、および９９パーセンタイル値（９９ｔｈ値）などの指標を少なくとも１つ計算する。変形例として、アプリ毎に、ＣＰＵ競合時間の最大値および９９ｔｈ値を計算してもよい。
【００７２】
ＣＰＵ  ａｆｆｉｎｉｔｙを使う場合は、そのＶＭの動作イベントは、競合することなく処理できる。したがって、そのＶＭと、占有されるｐＣＰＵを除外して、上記の処理を行えばよい。
【００７３】
上述したＣＰＵ競合時間の推定処理は、ｐＣＰＵと関連づけるｖＣＰＵを選択する処理など、ランダムな要素を含む。したがって、推定処理を複数行った場合は、推定処理ごとに、推定されるＣＰＵ競合時間が変わりうる。そこで、推定処理を複数回実行し、それらの結果を統計処理したものを、最終的なＣＰＵ競合時間としてもよい。例えば、３０回繰り返して、各実施のＣＰＵ競合時間の最大値、平均値、またはその他の統計値を計算してもよい。
【００７４】
（Ｓ１０７：アプリを追加するＰＭを選択）
ＶＭ追加先決定部１０７は、ＰＭ＿１２ごとのＣＰＵ競合時間の推定結果を利用し、各アプリ（ＰＭにもともと存在するアプリと、新たに追加するアプリ）の性能要件が満たされるかを評価する。そして、搭載しているすべてのアプリの性能要件と、追加するアプリの性能要件とを満たすＰＭを、アプリ（およびＶＭ、ＯＳ）の追加先として選択する。アプリの性能要件を満たすとは、例えば以下である。下記の例の場合、下記の２つの性能要件の両方を要求してもよいし、いずれか一方のみを要求してもよい。変形例として、アプリ毎に計算したＣＰＵ競合時間の最大値および９９パーセンタイル値を用いておよい。
●    各アプリが許容する処理タイミング誤差＞ＣＰＵ競合時間の最大値
●    各アプリが許容する処理タイミング誤差＞ＣＰＵ競合時間の９９パーセンタイル値
【００７５】
アプリの性能要件を満たすＰＭが複数存在する場合は、その中から１つのＰＭを選べばよい。選び方としては、以下がある。
●    ＶＭ数がもっとも少ないＰＭ
●    動作イベントの総量（合計回数または合計処理時間）がもっとも少ないＰＭ
●    追加後のＣＰＵ競合時間がもっとも小さいＰＭ
【００７６】
ＶＭ追加先決定部１０７は、アプリを追加するＰＭを選択したら、ＰＭ情報記憶部１０１の「実行中のＶＭのＩＤ」を更新する。「実行中のＶＭのＩＤ」に、選択したＶＭのＩＤを追加する。また、追加したアプリおよび追加したＶＭに関する情報、ＶＭ情報記憶部１０２およびアプリ情報記憶部１０３に追加する。
【００７７】
本実施形態に係るＶＭ管理装置のハードウェア構成について、図９を参照して説明する。本実施形態に係るＶＭ管理装置は、コンピュータ１１０により構成される。コンピュータ１１０には、サーバ、クライアント、マイコン、及び汎用コンピュータなどが含まれる。図９は、コンピュータ１１０の一例を示す図である。
【００７８】
図９のコンピュータ１１０は、ＣＰＵ（中央演算装置）１１１と、入力装置１１２と、表示装置１１３と、通信装置１１４と、記憶装置１１５と、を備える。プロセッサ１１１、入力装置１１２、表示装置１１３、通信装置１１４、及び記憶装置１１５は、バス１１６により相互に接続されている。
【００７９】
プロセッサ１１１は、コンピュータ１１０の制御装置及び演算装置を含む電子回路である。プロセッサ１１１として、例えば、汎用目的プロセッサ、中央処理装置（ＣＰＵ）、マイクロプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、コントローラ、マイクロコントローラ、状態マシン、特定用途向け集積回路、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、プログラム可能論理回路（ＰＬＤ）、及びこれらの組合せを用いることができる。
【００８０】
プロセッサ１１１は、バス１１６を介して接続された各装置（例えば、入力装置１１２、通信装置１１４、記憶装置１１５）から入力されたデータやプログラムに基づいて演算処理を行い、演算結果や制御信号を、バス１１６を介して接続された各装置（例えば、表示装置１１３、通信装置１１４、記憶装置１１５）に出力する。具体的には、プロセッサ１１１は、コンピュータ１１０のＯＳ（オペレーティングシステム）や、ＶＭ管理プログラムなどを実行し、コンピュータ１１０を構成する各装置を制御する。
【００８１】
ＶＭ管理プログラムは、コンピュータ１１０に、ＶＭ管理装置の上述の各機能構成を実現させるプログラムである。ＶＭ管理プログラムは、一時的でない有形のコンピュータ読み取り可能な記憶媒体  に記憶される。上記の記憶媒体は、例えば、光ディスク、光磁気ディスク、磁気ディスク、磁気テープ、フラッシュメモリ、半導体メモリであるが、これに限られない。プロセッサ１１１がセンサ設計支援プログラムを実行することにより、コンピュータ１１０がＶＭ管理装置として機能する。
【００８２】
入力装置１１２は、コンピュータ１１０に情報を入力するための装置である。入力装置１１２は、例えば、キーボード、マウス、及びタッチパネルであるが、これに限られない。ユーザは、入力装置１１２を用いることにより、各種の設定を行うことができる。
【００８３】
表示装置１１３は、画像や映像を表示するための装置である。表示装置１１３は、例えば、ＬＣＤ（液晶ディスプレイ）、ＣＲＴ（ブラウン管）、及びＰＤＰ（プラズマディスプレイ）であるが、これに限られない。表示装置１１３は、ＧＵＩ又はＣＵＩを表示する。また、表示装置１１３は、記憶部１０１、１０２、１０３に記憶された各種のデータや、計測部１０４、ｖＣＰＵ数計算部１０５、シミュレーション部１０６およびＶＭ追加先決定部１０７により計算された結果を表示してもよい。
【００８４】
通信装置１１４は、コンピュータ１１０が外部装置と無線又は有線で通信するための装置である。通信装置１１４は、例えば、モデム、ハブ、及びルータであるが、これに限られない。記憶部１０１〜１０３に格納するデータや、ＰＭにインストールするＶＭおよびアプリが、通信装置１１４を介して外部装置から入力され、記憶装置１１５に記憶されてもよい。
【００８５】
記憶装置１１５は、コンピュータ１１０のＯＳや、ＶＭ管理プログラム、ＶＭ管理プログラムの実行に必要なデータ、及びＶＭ管理プログラムの実行により生成されたデータなどを記憶するハードウェアの記憶媒体である。記憶装置１１５には、主記憶装置と外部記憶装置とが含まれる。主記憶装置は、例えば、ＲＡＭ、ＤＲＡＭ、ＳＲＡＭであるが、これに限られない。また、外部記憶装置は、例えば、ハードディスク、光ディスク、フラッシュメモリ、及び磁気テープであるが、これに限られない。
【００８６】
なお、コンピュータ１１０は、プロセッサ１１１、入力装置１１２、表示装置１１３、通信装置１１４、及び記憶装置１１５を、それぞれ１つ又は複数備えてもよいし、プリンタやスキャナなどの周辺機器を接続されていてもよい。
【００８７】
また、ＶＭ管理装置は、単一のコンピュータ１１０により構成されてもよいし、相互に接続された複数のコンピュータ１１０からなるシステムとして構成されてもよい。
【００８８】
さらに、ＶＭ管理プログラムは、コンピュータ１１０の記憶装置１１５に予め記憶されていてもよいし、コンピュータ１１０の外部の記憶媒体に記憶されていてもよいし、インターネット上にアップロードされていてもよい。いずれの場合も、ＶＭ管理プログラムをコンピュータ１１０にインストールして実行することにより、ＶＭ管理装置の機能が実現される。
【００８９】
以上、本実施形態によれば、アプリおよびＶＭをＰＭに追加しようとする場合に、追加する前に、ＣＰＵ競合時間がアプリの性能要件を満たすかなど、アプリの性能面で問題がないかを高精度に判断できる。これにより、アプリおよびＶＭを追加した後に、アプリの性能面で問題が生じる可能性を減らすことができる。また、アプリの性能要件を満たすかを自動的に判断できるため、人が、逐一、実機評価により性能を確認する手間を減らすことができる。
【００９０】
なお、この仮想マシン管理装置は、例えば、汎用のコンピュータ装置を基本ハードウェアとして用いることでも実現することが可能である。すなわち、仮想マシン管理装置が備える各処理部は、上記のコンピュータ装置に搭載されたプロセッサにプログラムを実行させることにより実現することができる。このとき、仮想マシン管理装置は、上記のプログラムをコンピュータ装置にあらかじめインストールすることで実現してもよいし、ＣＤ−ＲＯＭなどの記憶媒体に記憶して、あるいはネットワークを介して上記のプログラムを配布して、このプログラムをコンピュータ装置に適宜インストールすることで実現してもよい。また、仮想マシン管理装置が備える各記憶部は、上記のコンピュータ装置に内蔵あるいは外付けされたメモリ、ハードディスクもしくはＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−ＲＡＭ、ＤＶＤ−Ｒなどの記憶媒体などを適宜利用して実現することができる。
【符号の説明】
【００９１】
１１：仮想マシン（ＶＭ）管理装置
１２Ａ〜１２Ｄ：物理マシン（ＰＭ）
１３：計測用ＰＭ
１４：ネットワーク
１０１：ＰＭ情報記憶部
１０２：ＶＭ情報記憶部
１０３：アプリ情報記憶部
１０４：ベンチマーク計測部
１０５：ｖＣＰＵ数計算部
１０６：シミュレーション部
１０７：ＶＭ追加先決定部
【図１】
2018112837.tif 000007
【図２】
2018112837.tif 000008
【図３】
2018112837.tif 000009
【図４】
2018112837.tif 000010
【図５】
2018112837.tif 000011
【図６】
2018112837.tif 000012
【図７】
2018112837.tif 000013
【図８】
2018112837.tif 000014
【図９】
2018112837.tif 000015