(57)【要約】【課題】仮想マシンに対するリソースの追加を効率的に行うことを可能とするＣＰＵ動的割当てプログラム、ＣＰＵ動的割当て装置及びＣＰＵ動的割当て方法を提供する。【解決手段】複数の仮想マシンから、各仮想マシンに割当てられたＣＰＵの第１時間における第１実行待ち処理数と第１実行完了処理数とをそれぞれ取得し、取得した第１実行待ち処理数と第１実行完了処理数とに基づいて、第１時間における複数の仮想マシンそれぞれの第１処理状態を特定し、特定した第１処理状態と、複数の仮想マシンに割当てるＣＰＵのリソースの空き状況とに基づいて、複数の仮想マシンから、リソースを追加する仮想マシンを決定する。【選択図】図８
2018045493.tif 000002
【特許請求の範囲】
【請求項１】
複数の仮想マシンから、各仮想マシンに割当てられたＣＰＵの第１時間における実行待ち処理数である第１実行待ち処理数と、前記ＣＰＵの前記第１時間における実行完了処理数である第１実行完了処理数とをそれぞれ取得し、
取得した前記第１実行待ち処理数と前記第１実行完了処理数とに基づいて、前記第１時間における前記複数の仮想マシンそれぞれの第１処理状態を特定し、
特定した前記第１処理状態と、前記複数の仮想マシンに割当てるＣＰＵのリソースの空き状況とに基づいて、前記複数の仮想マシンから、前記リソースを追加する仮想マシンを決定する、
処理をコンピュータに実行させることを特徴とするＣＰＵ動的割当てプログラム。
【請求項２】
請求項１において、
前記特定する処理では、ＣＰＵの実行待ち処理数とＣＰＵの実行完了処理数との組み合わせと仮想マシンの処理状態とを対応付けた状態情報を記憶した記憶部を参照し、前記第１実行待ち処理数と前記第１実行完了処理数との組み合わせに対応する処理状態を、前記第１処理状態として前記複数の仮想マシン毎に特定し、
前記決定する処理では、
仮想マシンの処理状態とＣＰＵのリソースを追加する際の優先度とを対応付けた優先度情報を記憶した記憶部を参照し、前記第１処理状態に対応する優先度を前記複数の仮想マシン毎に特定し、
仮想マシンに追加するリソースの数が前記空き状況に対応するリソースの数に達するまで、特定した前記優先度が高い仮想マシンから順にリソースを追加する仮想マシンとして決定する、
ことを特徴とするＣＰＵ動的割当てプログラム。
【請求項３】
請求項１において、さらに、
複数の仮想マシンから、前記第１時間よりも後の第２時間におけるＣＰＵの実行待ち処理数である第２実行待ち処理数とＣＰＵの実行完了処理数である第２実行完了処理数とをそれぞれ取得する、
処理をコンピュータに実行させ、
前記特定する処理では、ＣＰＵの実行待ち処理数とＣＰＵの実行完了処理数との組み合わせと処理状態とを対応付けた状態情報を記憶した記憶部を参照し、取得した前記第１実行待ち処理数と前記第１実行完了処理数との組み合わせに対応する処理状態と、取得した前記第２実行待ち処理数と前記第２実行完了処理数との組み合わせに対応する処理状態とを、それぞれ第１処理状態と第２処理状態として前記複数の仮想マシン毎に特定し、
前記決定する処理では、
処理状態の組み合わせと優先度とを対応付けた優先度情報を記憶した記憶部を参照し、前記第１処理状態と前記第２処理状態との組み合わせに対応する優先度を、前記複数の仮想マシン毎に特定し、
仮想マシンに追加するリソースの数が前記空き状況に対応するリソースの数に達するまで、特定した前記優先度が高い仮想マシンから順にリソースを追加する仮想マシンとして決定する、
ことを特徴とするＣＰＵ動的割当てプログラム。
【請求項４】
請求項１において、さらに、
前記特定する処理の前に、複数の仮想マシンから、複数の時間のそれぞれにおけるＣＰＵの実行待ち処理数である第３実行待ち処理数と、前記複数の時間のそれぞれにおけるＣＰＵの実行完了処理数である第３実行完了処理数とを取得し、
ＣＰＵの実行待ち処理数をＸ座標としてＣＰＵの実行完了処理数をＹ座標とする平面上に、取得した前記第３実行待ち処理数と前記第３実行完了処理数との組み合わせのそれぞれに対応する複数の点をプロットし、
前記平面上をＸ軸及びＹ軸に並行な複数の直線によって複数の単位領域に分割し、
Ｘ座標が同じである前記複数の単位領域毎に、前記複数の点が含まれる単位領域であってＹ座標が最大である最大候補単位領域をそれぞれ特定し、
特定した前記最大候補単位領域のうち、Ｙ座標が最大であってＸ座標が最小である最大単位領域を特定し、
プロットした前記複数の点から、前記最大単位領域に対応するＸ座標よりも小さいＸ座標に対応し、前記最大単位領域に最も近い前記最大候補単位領域に含まれる点である限界点を特定し、
プロットした前記複数の点から、前記限界点に対応するＹ座標よりも小さいＹ座標に対応する点である第１閾値点を特定し、
前記平面上においてＹ座標が前記限界点に対応するＹ座標よりも小さい領域を、Ｘ座標が前記第１閾値点に対応するＸ座標未満であり、Ｙ座標が前記第１閾値点に対応するＹ座標未満である第１領域と、Ｘ座標が前記第１閾値点に対応するＸ座標未満であり、Ｙ座標が前記第１閾値点に対応するＹ座標以上である第２領域と、Ｘ座標が前記第１閾値点に対応するＸ座標以上であり、Ｙ座標が前記第１閾値点に対応するＹ座標未満である第３領域と、Ｘ座標が前記第１閾値点に対応するＸ座標以上であり、Ｙ座標が前記第１閾値点に対応するＹ座標以上である第４領域とに分割し、
Ｘ座標とＹ座標との組み合わせのそれぞれと、Ｘ座標とＹ座標との組み合わせのそれぞれに対応する点が前記第１領域、前記第２領域、前記第３領域及び前記第４領域のいずれに含まれるかを示す情報とを対応させることにより、前記状態情報を生成する、
処理をコンピュータに実行させることを特徴とするＣＰＵ動的割当てプログラム。
【請求項５】
請求項４において、
前記最大候補単位領域を特定する処理では、所定の基準を満たす数以上の前記複数の点が含まれる単位領域から、前記最大候補単位領域の特定を行う、
ことを特徴とするＣＰＵ動的割当てプログラム。
【請求項６】
請求項４において、
前記限界点を特定する処理では、前記最大単位領域に対応するＸ座標よりも小さいＸ座標に対応し、前記最大単位領域に最も近い前記最大候補単位領域に含まれる点が複数存在する場合、前記単位領域のそれぞれをさらに分割した単位領域について、前記複数の単位領域に分割する処理、前記最大候補単位領域を特定する処理、前記最大単位領域を特定する処理及び前記限界点を特定する処理を再度行う、
ことを特徴とするＣＰＵ動的割当てプログラム。
【請求項７】
請求項４において、
前記第１閾値点を特定する処理では、
前記平面上をＸ軸に平行な複数の直線によって複数の領域に分割し、
分割した前記複数の領域毎に、各領域に含まれる前記複数の点の数を特定し、
前記限界点を含む領域に含まれる前記複数の点の数に対する、各領域に含まれる前記複数の点の数の割合が所定以下である領域のうち、Ｙ座標が最大である領域を特定し、
特定した前記Ｙ座標が最大である領域に含まれる前記複数の点から、前記第１閾値点を特定する、
ことを特徴とするＣＰＵ動的割当てプログラム。
【請求項８】
請求項４において、
前記優先度情報は、Ｘ座標とＹ座標との組み合わせに対応する点が前記第３領域に含まれることを示す情報である場合の優先度が、他の優先度よりも高くなるように決定された情報である、
ことを特徴とするＣＰＵ動的割当てプログラム。
【請求項９】
請求項４において、さらに、
前記第１閾値点に対応するＹ座標よりも小さいＹ座標に対応する点である第２閾値点を特定する、
処理をコンピュータに実行させ、
前記領域を分割する処理では、
前記第１領域を、Ｙ座標が前記第２閾値点に対応するＹ座標以上である第５領域と、Ｙ座標が前記第２閾値点に対応するＹ座標未満である第６領域とに分割し、
前記第３領域を、Ｙ座標が前記第２閾値点に対応するＹ座標以上である第７領域と、Ｙ座標が前記第２閾値点に対応するＹ座標未満である第８領域とに分割し、
前記状態情報を生成する処理では、Ｘ座標とＹ座標との組み合わせのそれぞれと、Ｘ座標とＹ座標との組み合わせのそれぞれに対応する点が前記第２領域、前記第４領域、前記第５領域、前記第６領域、前記第７領域及び前記第８領域のいずれに含まれるかを示す情報とを対応させることにより、前記状態情報を生成する、
ことを特徴とするＣＰＵ動的割当てプログラム。
【請求項１０】
仮想マシンに割当てられたＣＰＵの特定の時間における実行待ち処理数と実行完了処理数とをそれぞれ取得し、
取得した前記実行待ち処理数と前記実行完了処理数とに基づいて、前記特定の時間における前記仮想マシンの処理状態を特定し、
特定した前記処理状態に基づいて前記仮想マシンに対してＣＰＵリソースを追加するか否かを決定する情報処理装置に、特定した前記処理状態を送信する、
処理をコンピュータに実行させることを特徴とするＣＰＵ動的割当てプログラム。
【請求項１１】
複数の仮想マシンから、各仮想マシンに割当てられたＣＰＵの特定の時間における実行待ち処理数と実行完了処理数とに基づく、前記特定の時間における各仮想マシンの処理状態を受信し、
受信した前記処理状態と、前記複数の仮想マシンに割当てるＣＰＵのリソースの空き状況とに基づいて、前記複数の仮想マシンから、前記リソースを追加する仮想マシンを決定する、
処理をコンピュータに実行させることを特徴とするＣＰＵ動的割当てプログラム。
【請求項１２】
複数の仮想マシンから、各仮想マシンに割当てられたＣＰＵの第１時間における実行待ち処理数である第１実行待ち処理数と、前記ＣＰＵの前記第１時間における実行完了処理数である第１実行完了処理数とをそれぞれ取得する情報取得部と、
取得した前記第１実行待ち処理数と前記第１実行完了処理数とに基づいて、前記第１時間における前記複数の仮想マシンそれぞれの第１処理状態を特定する処理状態特定部と、
特定した前記第１処理状態と、前記複数の仮想マシンに割当てるＣＰＵのリソースの空き状況とに基づいて、前記複数の仮想マシンから、前記リソースを追加する仮想マシンを決定する追加削除判定部と、を有する、
ことを特徴とするＣＰＵ動的割当て装置。
【請求項１３】
複数の仮想マシンから、各仮想マシンに割当てられたＣＰＵの第１時間における実行待ち処理数である第１実行待ち処理数と、前記ＣＰＵの前記第１時間における実行完了処理数である第１実行完了処理数とをそれぞれ取得し、
取得した前記第１実行待ち処理数と前記第１実行完了処理数とに基づいて、前記第１時間における前記複数の仮想マシンそれぞれの第１処理状態を特定し、
特定した前記第１処理状態と、前記複数の仮想マシンに割当てるＣＰＵのリソースの空き状況とに基づいて、前記複数の仮想マシンから、前記リソースを追加する仮想マシンを決定する、
ことを特徴とするＣＰＵ動的割当て方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＣＰＵ動的割当てプログラム、ＣＰＵ動的割当て装置及びＣＰＵ動的割当て方法に関する。
【背景技術】
【０００２】
近年、物理マシンの性能向上に伴い、複数の仮想マシン（ＶＭ：Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）を１つの物理マシンに集約する仮想化技術の研究が進められている。この仮想化技術は、例えば、仮想化ソフトウエア（以下、ハイパバイザとも呼ぶ）が物理マシンの物理リソースを複数の仮想マシンに割当て、各仮想マシンにインストールされたアプリケーションプログラムによるサービスの提供を可能にする。
【０００３】
上記のような仮想マシンにおいて、仮想マシンの管理を行う管理者（以下、単に管理者とも呼ぶ）は、例えば、各仮想マシンの生成を行う前に、各仮想マシンに割当てるべきＣＰＵのコア等の物理リソース（以下、単にＣＰＵのコアとも呼ぶ）の数を予め決定する。具体的に、管理者は、仮想マシンに対して同時に接続することが予測されるサービスの利用者（以下、単に利用者とも呼ぶ）の数等の見積り値に基づいて、各仮想マシンに割当てるＣＰＵのコアの数等の決定を行う。
【０００４】
そして、利用者に対するサービスの提供開始後、管理者は、例えば、事後的に各仮想マシンの処理状態についての分析を行い、各仮想マシンに割当てたＣＰＵのコアの再配置等を行う。具体的に、管理者は、例えば、単位時間当たりのＣＰＵの実行待ち処理数（以下、単に実行待ち処理数とも呼ぶ）が所定数よりも多くなっていた仮想マシンを特定し、特定した仮想マシンに対してＣＰＵのコアの追加を行う（例えば、特許文献１から３参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】国際公開第２０１５／０１９５３８号
【特許文献２】特開２０１４−２１９９７７号公報
【特許文献３】特表２０１５−５３０６７６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、仮想マシンにおいて実行される処理には、例えば、実行時間の大きく異なる複数の処理が混在している場合がある。そのため、管理者は、ＣＰＵの実行待ち処理数のみを参照する場合、仮想マシンに対するＣＰＵのコアの追加を効率的に行うことができない場合がある。したがって、管理者は、例えば、ＣＰＵの実行待ち処理数のみでなく、各仮想マシンが実行する各処理の処理負担を考慮した上で、ＣＰＵのコアを追加する仮想マシンの特定を行うことが好ましい。
【０００７】
そこで、一つの側面では、仮想マシンに対するリソースの追加を効率的に行うことを可能とするＣＰＵ動的割当てプログラム、ＣＰＵ動的割当て装置及びＣＰＵ動的割当て方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
実施の形態の一つの態様によれば、複数の仮想マシンから、各仮想マシンに割当てられたＣＰＵの第１時間における実行待ち処理数である第１実行待ち処理数と、前記ＣＰＵの前記第１時間における実行完了処理数である第１実行完了処理数とをそれぞれ取得し、取得した前記第１実行待ち処理数と前記第１実行完了処理数とに基づいて、前記第１時間における前記複数の仮想マシンそれぞれの第１処理状態を特定し、特定した前記第１処理状態と、前記複数の仮想マシンに割当てるＣＰＵのリソースの空き状況とに基づいて、前記複数の仮想マシンから、前記リソースを追加する仮想マシンを決定する、処理をコンピュータに実行させる。
【発明の効果】
【０００９】
一つの側面によれば、仮想マシンに対するリソースの追加を効率的に行うことを可能とする。
【図面の簡単な説明】
【００１０】
【図１】図１は、情報処理システム１００の全体構成を示す図である。
【図２】図２は、テスト装置１及び情報解析装置２のハードウエア構成を説明する図である。
【図３】図３は、サービス提供装置３及び管理装置４のハードウエア構成を説明する図である。
【図４】図４は、図２で説明したテスト装置１の機能ブロック図である。
【図５】図５は、図２で説明した情報解析装置２の機能ブロック図である。
【図６】図６は、図３で説明したサービス提供装置３の機能ブロック図である。
【図７】図７は、図３で説明した管理装置４の機能ブロック図である。
【図８】図８は、第１の実施の形態におけるＣＰＵ動的割当て処理の概略を説明するフローチャート図である。
【図９】図９は、第１の実施の形態におけるＣＰＵ動的割当て処理の概略を説明する図である。
【図１０】図１０は、第１の実施の形態におけるＣＰＵ動的割当て処理の概略を説明する図である。
【図１１】図１１は、第１の実施の形態におけるＣＰＵ動的割当て処理の概略を説明する図である。
【図１２】図１２は、第１の実施の形態におけるＣＰＵ動的割当て処理の詳細を説明するフローチャートである。
【図１３】図１３は、第１の実施の形態におけるＣＰＵ動的割当て処理の詳細を説明するフローチャートである。
【図１４】図１４は、第１の実施の形態におけるＣＰＵ動的割当て処理の詳細を説明するフローチャートである。
【図１５】図１５は、第１の実施の形態におけるＣＰＵ動的割当て処理の詳細を説明するフローチャートである。
【図１６】図１６は、第１の実施の形態におけるＣＰＵ動的割当て処理の詳細を説明するフローチャートである。
【図１７】図１７は、第１の実施の形態におけるＣＰＵ動的割当て処理の詳細を説明するフローチャートである。
【図１８】図１８は、第１の実施の形態におけるＣＰＵ動的割当て処理の詳細を説明するフローチャートである。
【図１９】図１９は、第１の実施の形態におけるＣＰＵ動的割当て処理の詳細を説明するフローチャートである。
【図２０】図２０は、情報格納領域１３０に蓄積された実行待ち数情報１３１及び実行完了数情報１３２の具体例を説明する図である。
【図２１】図２１は、グラフ情報２３１の具体例である。
【図２２】図２２は、グラフ情報２３１に情報が含まれる複数の点をプロットした場合の平面を説明する図である。
【図２３】図２３は、グラフ情報２３１に情報が含まれる複数の点をプロットした場合の平面を説明する図である。
【図２４】図２４は、状態情報２３４の具体例である。
【図２５】図２５は、優先度情報４３２の具体例を説明する図である。
【図２６】図２６は、追加削除要求情報４３３の具体例を説明する図である。
【図２７】図２７は、図３で説明したサービス提供装置３の機能ブロック図である。
【図２８】図２８は、図３で説明した管理装置４の機能ブロック図である。
【図２９】図２９は、第２の実施の形態におけるＣＰＵ動的割当て処理を説明するフローチャート図である。
【図３０】図３０は、第２の実施の形態におけるＣＰＵ動的割当て処理を説明するフローチャート図である。
【発明を実施するための形態】
【００１１】
［情報処理システムの構成］
図１は、情報処理システム１００の全体構成を示す図である。図１に示す情報処理システム１００は、例えば、利用者にサービスを提供するための業務システムである。図１に示す情報処理システム１００は、テスト装置１と、情報解析装置２と、サービス提供装置３と、管理装置４とを有する。テスト装置１、情報解析装置２、サービス提供装置３及び管理装置４は、それぞれ１台以上の物理マシンによって構成される装置である。
【００１２】
テスト装置１は、例えば、自装置に生成された仮想マシン１１ａ、仮想マシン１１ｂ及び仮想マシン１１ｃ等（以下、これらを総称して仮想マシン１１とも呼ぶ）に、管理者が予め定めたテスト処理を実行させ、テスト処理の実行時における各仮想マシン１１の状態を示す各種情報を生成する処理（以下、第１情報生成処理とも呼ぶ）を実行する。第１情報生成処理の詳細については後述する。なお、各仮想マシン１１は、管理者からの指示等の受け付けた仮想化ソフトウエア１２が、テスト装置１のハードウエア１３のＣＰＵのコアを割り当てることによって生成される。
【００１３】
情報解析装置２は、テスト装置１が生成した各種情報を解析し、管理装置４が参照する状態情報２ｂを生成する処理（以下、情報解析処理とも呼ぶ）を実行する。そして、情報解析装置２は、生成した状態情報２ｂを記憶部２ａに記憶する。情報解析処理の詳細については後述する。
【００１４】
サービス提供装置３は、自装置に生成された仮想マシン３１ａ、仮想マシン３１ｂ及び仮想マシン３１ｃ等（以下、これらを総称して仮想マシン３１とも呼ぶ）に、利用者に対するサービスの提供するためのサービス提供処理を実行させ、サービス提供処理の実行時における各仮想マシン３１の状態を示す各種情報を生成する処理（以下、第２情報生成処理とも呼ぶ）を実行する。第２情報生成処理の詳細については後述する。なお、各仮想マシン３１は、管理者からの指示等の受け付けた仮想化ソフトウエア３２が、ハードウエア３３のＣＰＵのコアを割り当てることによって生成される。
【００１５】
管理装置４は、サービス提供装置３が生成した各種情報を参照し、各仮想マシン３１にハードウエア３３（ＣＰＵのコア）の割当てを行うか否か判定するための処理（以下、割当て管理処理とも呼ぶ）を実行する。割当て管理処理の詳細については後述する。
【００１６】
なお、図１に示す情報処理システム１００において、例えば、テスト装置１に生成された仮想マシン１１の一部が情報解析装置２として動作するものであってもよい。また、図１に示す情報処理システム１００において、例えば、サービス提供装置３に生成された仮想マシン３１の一部が管理装置４として動作するものであってもよい。さらに、図１に示す情報処理システム１００において、例えば、管理装置４が情報解析処理を行うものであってもよい。
【００１７】
上記のような情報処理システム１００において、管理装置４は、例えば、各仮想マシン３１の生成が行われる前に、各仮想マシン３１に割当てるべきＣＰＵのコアの数を予め決定する。具体的に、管理装置４は、仮想マシン３１に対して同時に接続することが予測されるサービスの利用者の数等の見積り値に基づいて、各仮想マシン３１に割当てるＣＰＵのコアの数等の決定を行う。
【００１８】
そして、利用者に対するサービスの提供開始後、管理装置４は、例えば、事後的に各仮想マシン３１の処理状態についての分析を行い、各仮想マシン３１に割当てたＣＰＵのコアの再配置等を行う。具体的に、管理装置４は、例えば、単位時間当たりのＣＰＵの実行待ち処理数が所定の数よりも多くなっていた仮想マシン３１を特定し、特定した仮想マシン３１に対してＣＰＵのコアの追加を行う。
【００１９】
しかしながら、仮想マシン３１において実行される処理には、例えば、実行時間の大きく異なる複数の処理が混在している場合がある。そのため、管理装置４は、ＣＰＵの実行待ち処理数のみを参照する場合、仮想マシン３１に対するＣＰＵのコアの追加を効率的に行うことができない場合がある。したがって、管理装置４は、例えば、ＣＰＵの実行待ち処理数のみでなく、各仮想マシン３１が実行する各処理の処理負担を考慮した上で、ＣＰＵのコアを追加する仮想マシン３１の特定を行うことが好ましい。
【００２０】
そこで、本実施の形態における管理装置４は、仮想マシン３１のそれぞれから、各仮想マシン３１に割当てられたＣＰＵの特定の期間（以下、第１時間とも呼ぶ）における実行待ち処理数（以下、第１実行待ち処理数とも呼ぶ）を取得する。また、管理装置４は、仮想マシン３１のそれぞれから、各仮想マシン３１に割当てられたＣＰＵの第１時間における実行完了処理数（以下、第１実行完了処理数とも呼ぶ）を取得する。
【００２１】
そして、管理装置４は、取得した第１実行待ち処理数と第１実行完了処理数とに基づいて、第１時間における仮想マシン３１のそれぞれの処理状態（以下、第１処理状態とも呼ぶ）を特定する。その後、管理装置４は、特定した第１処理状態と、仮想マシン３１のそれぞれに割当てるＣＰＵのコアの空き状況とに基づいて、ＣＰＵのコアを追加する仮想マシン３１を決定する。
【００２２】
すなわち、例えば、仮想マシン３１ａにおける第１実行待ち処理数及び第１実行完了処理数と、仮想マシン３１ｂにおける第１実行待ち処理数及び第１実行完了処理数とを比較した場合、第１実行待ち処理数がほぼ同数である一方、第１実行完了処理数が大きく異なる場合があり得る。そのため、管理装置４は、この場合、第１実行待ち処理数だけでなく第１実行完了処理数を取得することで、仮想マシン３１ａ及び仮想マシン３１ｂのうち、より処理負担が大きい仮想マシン３１を特定することが可能になる。したがって、管理装置４は、処理負担が大きい仮想マシン３１（例えば、仮想マシン３１ａ）に対するＣＰＵのコアの追加を、処理負担が小さい仮想マシン３１（例えば、仮想マシン３１ｂ）に対するＣＰＵのコアの追加よりも優先して行うことが可能になる。
【００２３】
これにより、管理装置４は、仮想マシン３１に対するＣＰＵのコアの追加をより効率的に行うことが可能になる。
【００２４】
［情報処理システムのハードウエア構成］
次に、情報処理システム１００のハードウエア構成について説明する。図２は、テスト装置１及び情報解析装置２のハードウエア構成を説明する図である。また、図３は、サービス提供装置３及び管理装置４のハードウエア構成を説明する図である。
【００２５】
テスト装置１は、プロセッサであるＣＰＵ１０１と、メモリ１０２と、外部インターフェース（Ｉ／Ｏユニット）１０３と、記憶媒体（ストレージ）１０４とを有する。各部は、バス１０５を介して互いに接続される。
【００２６】
記憶媒体１０４は、記憶媒体１０４内のプログラム格納領域（図示しない）に、第１情報生成処理を行うためのプログラム１１０を記憶する。
【００２７】
ＣＰＵ１０１は、図２に示すように、プログラム１１０の実行時に、プログラム１１０を記憶媒体１０４からメモリ１０２にロードし、プログラム１１０と協働して第１情報生成処理を行う。
【００２８】
記憶媒体１０４は、例えば、第１情報生成処理を行う際に用いられる情報を記憶する情報格納領域１３０（以下、記憶部１３０とも呼ぶ）を有する。外部インターフェース１０３は、情報解析装置２と通信を行う。
【００２９】
情報解析装置２は、プロセッサであるＣＰＵ２０１と、メモリ２０２と、外部インターフェース（Ｉ／Ｏユニット）２０３と、記憶媒体（ストレージ）２０４とを有する。各部は、バス２０５を介して互いに接続される。
【００３０】
記憶媒体２０４は、記憶媒体２０４内のプログラム格納領域（図示しない）に、情報解析処理を行うためのプログラム２１０を記憶する。
【００３１】
ＣＰＵ２０１は、図２に示すように、プログラム２１０の実行時に、プログラム２１０を記憶媒体２０４からメモリ２０２にロードし、プログラム２１０と協働して情報解析処理を行う。
【００３２】
記憶媒体２０４は、例えば、情報解析処理を行う際に用いられる情報を記憶する情報格納領域２３０（以下、記憶部２３０とも呼ぶ）を有する。なお、図１で説明した記憶部２ａは、例えば、情報格納領域２３０に対応する。
【００３３】
外部インターフェース２０３は、テスト装置１と通信を行う。また、外部インターフェース２０３は、ネットワークＮＷを介して管理装置４と通信を行う。
【００３４】
サービス提供装置３は、プロセッサであるＣＰＵ３０１と、メモリ３０２と、外部インターフェース（Ｉ／Ｏユニット）３０３と、記憶媒体（ストレージ）３０４とを有する。各部は、バス３０５を介して互いに接続される。
【００３５】
記憶媒体３０４は、記憶媒体３０４内のプログラム格納領域（図示しない）に、第２情報生成処理を行うためのプログラム３１０を記憶する。
【００３６】
ＣＰＵ３０１は、図３に示すように、プログラム３１０の実行時に、プログラム３１０を記憶媒体３０４からメモリ３０２にロードし、プログラム３１０と協働して第２情報生成処理を行う。
【００３７】
記憶媒体３０４は、例えば、第２情報生成処理を行う際に用いられる情報を記憶する情報格納領域３３０（以下、記憶部３３０とも呼ぶ）を有する。また、外部インターフェース３０３は、管理装置４と通信を行う。
【００３８】
管理装置４は、プロセッサであるＣＰＵ４０１と、メモリ４０２と、外部インターフェース（Ｉ／Ｏユニット）４０３と、記憶媒体（ストレージ）４０４とを有する。各部は、バス４０５を介して互いに接続される。
【００３９】
記憶媒体４０４は、記憶媒体４０４内のプログラム格納領域（図示しない）に、割当て管理処理を行うためのプログラム４１０を記憶する。
【００４０】
ＣＰＵ４０１は、図３に示すように、プログラム４１０の実行時に、プログラム４１０を記憶媒体４０４からメモリ４０２にロードし、プログラム４１０と協働して割当て管理処理を行う。
【００４１】
記憶媒体４０４は、例えば、割当て管理処理を行う際に用いられる情報を記憶する情報格納領域４３０（以下、記憶部４３０とも呼ぶ）を有する。
【００４２】
外部インターフェース４０３は、サービス提供装置３と通信を行う。また、外部インターフェース４０３は、ネットワークＮＷを介して情報解析装置２と通信を行う。
【００４３】
[情報処理システムのソフトウエア構成]
次に、情報処理システム１００のソフトウエア構成について説明する。図４は、図２で説明したテスト装置１の機能ブロック図である。また、図５は、図２で説明した情報解析装置２の機能ブロック図である。また、図６は、図３で説明したサービス提供装置３の機能ブロック図である。さらに、図７は、図３で説明した管理装置４の機能ブロック図である。
【００４４】
初めに、テスト装置１の機能ブロック図について説明を行う。ＣＰＵ１０１は、図４に示すように、プログラム１１０と協働することにより、テスト実行部１１１と、事象検知部１１２と、情報管理部１１３として動作する。また、情報格納領域１３０には、図４に示すように、実行待ち数情報１３１（以下、第３実行待ち処理数とも呼ぶ）と、実行完了数情報１３２（以下、第３実行完了処理数とも呼ぶ）とが記憶されている。
【００４５】
テスト実行部１１１は、テスト装置１に生成された各仮想マシン１１に、管理者が予め定めたテスト処理を実行させる。
【００４６】
事象検知部１１２は、各仮想マシン１１によるテスト処理の実行中において、管理者が予め定めた所定の事象が発生したことを検知する。所定の事象の具体例については後述する。
【００４７】
情報管理部１１３は、事象検知部１１２が所定の事象を検知した場合に、検知した事象に対応するカウンタをカウントアップする。そして、情報管理部１１３は、各事象に対応するカウンタを参照して、実行待ち数情報１３１と実行完了数情報１３２とを生成し、情報格納領域１３０に記憶する。実行待ち数情報１３１は、ＣＰＵの実行待ちになった処理数を示す単位時間毎の情報である。また、実行完了数情報１３２は、ＣＰＵの実行が完了した処理数を示す単位時間毎の情報である。
【００４８】
次に、情報解析装置２の機能ブロック図について説明を行う。ＣＰＵ２０１は、図５に示すように、プログラム２１０と協働することにより、情報取得部２１１と、グラフ生成部２１２と、限界点特定部２１３と、閾値点特定部２１４と、情報管理部２１５として動作する。また、情報格納領域２３０には、図５に示すように、グラフ情報２３１と、限界点情報２３２と、閾値点情報２３３と、状態情報２３４とが記憶されている。なお、状態情報２３４は、例えば、図１等で説明した状態情報２ｂに対応する。
【００４９】
情報取得部２１１は、テスト装置１の情報格納領域１３０にアクセスし、実行待ち数情報１３１と実行完了数情報１３２とを取得する。
【００５０】
グラフ生成部２１２は、同じ単位時間の実行待ち数情報１３１と実行完了数情報１３２との組み合わせに対応する複数の点を、実行待ち数情報１３１をＸ座標として実行完了数情報１３２をＹ座標とする平面上にプロットする際に参照されるグラフ情報２３１を生成する。そして、グラフ生成部２１２は、生成したグラフ情報２３１を情報格納領域２３０に記憶する。グラフ情報２３１の具体例については後述する。また、グラフ生成部２１２は、グラフ情報２３１に情報が含まれる複数の点を平面上にプロットする。
【００５１】
限界点特定部２１３は、グラフ生成部２１２がグラフ情報２３１に情報が含まれる複数の点を平面上にプロットした場合において、プロットされた複数の点から限界点を特定する。限界点は、後述するように、実行待ち数情報１３１をＸ座標として実行完了数情報１３２をＹ座標とする平面の分割を行う際に用いられる点である。限界点を特定する際の具体例については後述する。そして、限界点特定部２１３は、特定した限界点に対応する情報である限界点情報２３２を情報格納領域２３０に記憶する。
【００５２】
閾値点特定部２１４は、プロットした複数の点から、限界点特定部２１３が特定した限界点に基づいて、第１閾値点を特定する。第１閾値点は、限界点と同様に、実行待ち数情報１３１をＸ座標として実行完了数情報１３２をＹ座標とする平面の分割を行う際に用いられる点である。第１閾値点を特定する際の具体例については後述する。そして、閾値点特定部２１４は、特定した第１閾値点に対応する情報である閾値点情報２３３を情報格納領域２３０に記憶する。
【００５３】
情報管理部２１５は、実行待ち数情報１３１をＸ座標として実行完了数情報１３２をＹ座標とする平面に含まれる領域のうち、Ｙ座標が限界点に対応するＹ座標よりも小さい領域を、第１領域、第２領域、第３領域及び第４領域に分割する。第１領域は、例えば、Ｘ座標が第１閾値点に対応するＸ座標未満であり、Ｙ座標が第１閾値点に対応するＹ座標未満である領域である。また、第２領域は、例えば、Ｘ座標が第１閾値点に対応するＸ座標未満であり、Ｙ座標が第１閾値点に対応するＹ座標以上である領域である。また、第３領域は、Ｘ座標が第１閾値点に対応するＸ座標以上であり、Ｙ座標が第１閾値点に対応するＹ座標未満である領域である。さらに、第４領域は、Ｘ座標が第１閾値点に対応するＸ座標以上であり、Ｙ座標が第１閾値点に対応するＹ座標以上である領域である。
【００５４】
そして、情報管理部２１５は、Ｘ座標とＹ座標との組み合わせのそれぞれと、Ｘ座標とＹ座標との組み合わせのそれぞれに対応する点が第１領域、第２領域、第３領域及び第４領域のいずれに含まれるかを示す情報とを対応させた状態情報２３４を生成する。その後、情報管理部２１５は、生成した状態情報２３４を情報格納領域２３０に記憶する。状態情報２３４の具体例については後述する。
【００５５】
次に、サービス提供装置３の機能ブロック図について説明を行う。ＣＰＵ３０１は、図６に示すように、プログラム３１０と協働することにより、サービス提供部３１１と、事象検知部３１２と、情報管理部３１３として動作する。また、情報格納領域３３０には、図６に示すように、実行待ち数情報３３１と、実行完了数情報３３２とが記憶されている。
【００５６】
サービス提供部３１１は、サービス提供装置３に生成された各仮想マシン３１に、利用者に対してサービスを提供するためのサービス提供処理を実行させる。
【００５７】
事象検知部３１２は、各仮想マシン３１による処理の実行中において、所定の事象が発生したことを検知する。
【００５８】
情報管理部３１３は、事象検知部３１２が所定の事象を検知した場合に、検知した事象に対応するカウンタをカウントアップする。そして、情報管理部３１３は、例えば、各事象に対応するカウンタを参照して、実行待ち数情報３３１と実行完了数情報３３２とを生成し、情報格納領域３３０に記憶する。実行待ち数情報３３１は、実行待ち数情報１３１と同様に、ＣＰＵの実行待ちになった処理数を示す単位時間毎の情報である。また、実行完了数情報３３２は、実行完了数情報１３２と同様に、ＣＰＵの実行が完了した処理数を示す単位時間毎の情報である。
【００５９】
次に、管理装置４の機能ブロック図について説明を行う。ＣＰＵ４０１は、図７に示すように、プログラム４１０と協働することにより、情報取得部４１１と、処理状態特定部４１２と、追加削除判定部４１３と、情報管理部４１４として動作する。また、情報格納領域４３０には、図７に示すように、空きコア情報４３１と、優先度情報４３２と、追加削除要求情報４３３とが記憶されている。
【００６０】
情報取得部４１１は、情報解析装置２の情報格納領域２３０に記憶された状態情報２３４を取得する。また、情報取得部４１１は、サービス提供装置３の情報格納領域３３０に記憶された実行待ち数情報３３１と実行完了数情報３３２とを取得する。この場合、情報取得部４１１は、例えば、情報格納領域３３０に記憶された実行待ち数情報３３１及び実行完了数情報３３２のうち、第１時間（管理者が予め定めた時間）に対応する実行待ち数情報３３１及び実行完了数情報３３２の取得を行う。
【００６１】
処理状態特定部４１２は、状態情報２３４を参照し、例えば、第１時間に対応する実行待ち数情報３３１と実行完了数情報３３２との組み合わせに対応する処理状態を、第１処理状態として仮想マシン３１毎に特定する。
【００６２】
追加削除判定部４１３は、処理状態特定部４１２が特定した第１処理状態と、仮想マシン３１に割当てるＣＰＵのコアの空き状況とに基づいて、ＣＰＵのコアを追加する仮想マシン３１を決定する。具体的に、追加削除判定部４１３は、各仮想マシン３１の処理状態とＣＰＵのコアを追加する際の優先度とを対応付けた優先度情報４３２を参照し、処理状態特定部４１２が特定した第１処理状態に対応する優先度を、仮想マシン３１毎に特定する。そして、追加削除判定部４１３は、仮想マシン３１に追加するＣＰＵのコアの数が、空きコア情報４３１が示すＣＰＵのコアの数（仮想マシン３１に割り当てられていないＣＰＵのコアの数）に達するまで、優先度が高い仮想マシン３１から順に、ＣＰＵのコアを追加する仮想マシン３１として決定する。優先度情報４３２の具体例については後述する。
【００６３】
[第１の実施の形態の概略］
次に、第１の実施の形態におけるＣＰＵ動的割当て処理の概略について説明を行う。図８は、第１の実施の形態におけるＣＰＵ動的割当て処理の概略を説明するフローチャート図である。図９から図１１は、第１の実施の形態におけるＣＰＵ動的割当て処理の概略を説明する図である。図９から図１１を参照しながら図８に示すＣＰＵ動的割当て処理について説明を行う。なお、以下、テスト装置１が実行する第１情報生成処理と、情報解析装置２が実行する情報解析処理と、サービス提供装置３が実行する第２情報生成処理と、管理装置４が実行する割当て管理処理とを総称して、単にＣＰＵ動的割当て処理とも呼ぶ。
【００６４】
管理装置４は、ＣＰＵ割当てタイミングまで待機する（Ｓ１のＮＯ）。ＣＰＵ割当てタイミングは、例えば、所定の時間毎（例えば、１０分毎）であってよい。そして、ＣＰＵ割当てタイミングになった場合（Ｓ１のＹＥＳ）、管理装置４は、図１０に示すように、仮想マシン３１のそれぞれから、各仮想マシン３１に割当てられたＣＰＵの第１時間における実行待ち数情報３３１と実行完了数情報３３２とを取得する（Ｓ２）。以下、実行待ち数情報３３１と実行完了数情報３３２とについて説明を行う。
【００６５】
図９は、スレッドの状態遷移を説明する図である。図９に示すように、スレッドが生成された場合、生成されたスレッドの状態は、「スレッド生成」から、ＣＰＵによって処理の実行が開始（再開）されるまで待機している状態を示す「ＣＰＵ実行待ち」に遷移する（以下、これを遷移Ａとも呼ぶ）。その後、スレッドの状態は、例えば、「ＣＰＵ実行待ち」から、ＣＰＵによって処理が実行されている状態を示す「ＣＰＵ実行中」に遷移する（以下、これを遷移Ｂとも呼ぶ）。そして、例えば、ＣＰＵから割り当てられたタイムスライス時間を消費した場合、スレッドの状態は、「ＣＰＵ実行中」から「ＣＰＵ実行待ち」に再度遷移する（以下、これを遷移Ｃとも呼ぶ）。
【００６６】
また、例えば、ＣＰＵによる処理の実行中にネットワークやデバイス等とのＩ／Ｏ待ちやスレッドの排他制御によるロック獲得待ち（以下、これらを総称してスレッド実行待ちとも呼ぶ）が発生した場合、スレッドの状態は、「ＣＰＵ実行中」から、スレッド実行待ちを示す「スレッド実行待ち」に遷移する（以下、これを遷移Ｄとも呼ぶ）そして、例えば、スレッド実行待ちが解除された場合、スレッドの状態は、「スレッド実行待ち」から「ＣＰＵ実行待ち」に再度遷移する（以下、これを遷移Ｅとも呼ぶ）。
【００６７】
さらに、例えば、ＣＰＵによる処理の終了等に伴ってスレッドが消滅した場合、消滅したスレッドの状態は、「ＣＰＵ実行中」から「スレッド消滅」に遷移する（以下、これを遷移Ｆとも呼ぶ）。
【００６８】
そのため、管理装置４は、Ｓ２の処理において、例えば、他の状態から「ＣＰＵ実行待ち」に対する遷移である遷移Ａ、遷移Ｃ及び遷移Ｅの数の単位時間あたりの合計を、実行待ち数情報３３１として取得する。また、管理装置４は、Ｓ２の処理において、例えば、「ＣＰＵ実行中」から他の状態への遷移である遷移Ｃ、遷移Ｄ及び遷移Ｆの数の単位時間あたりの合計を、実行完了数情報３３２として取得する。
【００６９】
図８に戻り、管理装置４は、図１１に示すように、Ｓ２の処理で取得した実行待ち数情報３３１と実行完了数情報３３２とに基づいて、第１時間における仮想マシン３１のそれぞれの第１処理状態を特定する（Ｓ３）。具体的に、管理装置４は、図１１に示すように、情報解析装置２の情報格納領域２３０に記憶された状態情報２３４を取得する。そして、管理装置４は、取得した状態情報２３４を参照し、Ｓ２の処理で取得した実行待ち数情報３３１と実行完了数情報３３２との組み合わせに対応する処理状態を、第１処理状態として仮想マシン３１毎に特定する。
【００７０】
すなわち、管理装置４は、実行待ち数情報３３１のみでなく、実行完了数情報３３２を考慮して仮想マシン３１の第１処理状態を特定する。これにより、管理装置４は、仮想マシン３１に対するＣＰＵのコアの追加をより効率的に行うことが可能になる。
【００７１】
そして、管理装置４は、図１１に示すように、Ｓ３の処理で特定した第１処理状態と、仮想マシン３１のそれぞれに割当てるＣＰＵのコアの空き状況とに基づいて、仮想マシン３１のそれぞれから、ＣＰＵのコアを追加する仮想マシン３１を決定する（Ｓ４）。
【００７２】
このように、本実施の形態における管理装置４は、仮想マシン３１のそれぞれから、各仮想マシン３１に割当てられたＣＰＵの第１時間における実行待ち数情報３３１を取得する。また、管理装置４は、仮想マシン３１のそれぞれから、各仮想マシン３１に割当てられたＣＰＵの第１時間における実行完了数情報３３２を取得する。
【００７３】
そして、管理装置４は、取得した実行待ち数情報３３１と実行完了数情報３３２とに基づいて、第１時間における仮想マシン３１のそれぞれの第１処理状態を特定する。その後、管理装置４は、特定した第１処理状態と、仮想マシン３１のそれぞれに割当てるＣＰＵのコアの空き状況とに基づいて、ＣＰＵのコアを追加する仮想マシン３１を決定する。
【００７４】
これにより、管理装置４は、仮想マシン３１に対するＣＰＵのコアの追加をより効率的に行うことが可能になる。
【００７５】
[第１の実施の形態の詳細]
次に、第１の実施の形態におけるＣＰＵ動的割当て処理の詳細について説明を行う。図１２から図１９は、第１の実施の形態におけるＣＰＵ動的割当て処理の詳細を説明するフローチャートである。また、図２０から図２６は、第１の実施の形態におけるＣＰＵ動的割当て処理の詳細を説明する図である。図２０から図２６を参照しながら、図１２から図１９のＣＰＵ動的割当て処理を説明する。
【００７６】
[情報生成処理の詳細]
初めに、ＣＰＵ動的割当て処理のうち、テスト装置１が実行する情報生成処理について説明を行う。図１２から図１４は、テスト装置１の情報生成処理について説明するフローチャートである。なお、以下、テスト装置１において仮想マシン１１が既に生成されているものとして説明を行う。また、以下、生成された仮想マシン１１がテスト装置１のテスト実行部１１１からの指示に基づく処理を既に行っているものとして説明を行う。
【００７７】
テスト装置１の事象検知部１１２は、図１２に示すように、各仮想マシン１１において動作するスレッドの状態が他の状態から「ＣＰＵ実行待ち」に遷移するまで待機する（Ｓ１１のＮＯ）。すなわち、事象検知部１１２は、図９で説明した遷移のうちの遷移Ａ、遷移Ｃ及び遷移Ｅが発生するまで待機する。
【００７８】
そして、スレッドの状態が他の状態から「ＣＰＵ実行待ち」に遷移した仮想マシン１１を検知した場合（Ｓ１１のＹＥＳ）、事象検知部１１２は、遷移のトリガを判定する（Ｓ１２）。その結果、Ｓ１１の処理で検知した遷移が遷移Ａであって、遷移のトリガが新たなスレッドに生成である場合（Ｓ１２のスレッド生成）、テスト装置１の情報管理部１１３は、Ｓ１１の処理で検知した仮想マシン１１に対応するカウンタであって、スレッド生成回数をカウントするためのカウンタ（以下、スレッド生成回数カウンタとも呼ぶ）をカウントアップする（Ｓ１３）。一方、Ｓ１１の処理で検知した遷移が遷移Ｅであって、遷移のトリガがスレッドの実行待ちの解除である場合（Ｓ１２のスレッド実行待ち解除）、情報管理部１１３は、Ｓ１１の処理で検知した仮想マシン１１に対応するカウンタであって、スレッド実行待ち解除回数をカウントするためのカウンタ（以下、スレッド実行待ち解除回数カウンタとも呼ぶ）をカウントアップする（Ｓ１４）。
【００７９】
また、事象検知部１１２は、図１３に示すように、各仮想マシン１１において動作するスレッドの状態が「ＣＰＵ実行中」から他の状態に遷移するまで待機する（Ｓ２１のＮＯ）。すなわち、事象検知部１１２は、図９で説明した遷移のうちの遷移Ｃ、遷移Ｄ及び遷移Ｆが発生するまで待機する。
【００８０】
そして、スレッドの状態が「ＣＰＵ実行中」から遷移した仮想マシン１１を検知した場合（Ｓ２１のＹＥＳ）、事象検知部１１２は、遷移のトリガと判定する（Ｓ２２）。その結果、Ｓ２１の処理で検知した遷移が遷移Ｃであって、遷移のトリガがスレッドにおける処理の実行中断である場合（Ｓ２２のスレッド処理中断）、情報管理部１１３は、Ｓ２１の処理で検知した仮想マシン１１に対応するカウンタであって、スレッド処理中断回数をカウントするためのカウンタ（以下、スレッド処理中断回数カウンタとも呼ぶ）をカウントアップする（Ｓ２３）。また、Ｓ２１の処理で検知した遷移が遷移Ｄであって、遷移のトリガがスレッド実行待ちの発生である場合（Ｓ２２のスレッド実行待ち発生）、情報管理部１１３は、Ｓ２１の処理で検知した仮想マシン１１に対応するカウンタであって、遷移のトリガがスレッド実行待ち回数をカウントするためのカウンタ（以下、スレッド実行待ち回数カウンタとも呼ぶ）をカウントアップする（Ｓ２４）。さらに、Ｓ２１の処理で検知した遷移が遷移Ｆであって、遷移のトリガがスレッド消滅である場合（Ｓ２２のスレッド消滅）、情報管理部１１３は、Ｓ２１の処理で検知した仮想マシン１１に対応するカウンタであって、スレッド消滅回数をカウントするためのカウンタ（以下、スレッド消滅回数カウンタとも呼ぶ）をカウントアップする（Ｓ２５）。
【００８１】
なお、図１３に示す例において、スレッド処理中断回数カウントのカウントアップは、Ｓ２３の処理において行われる。そのため、情報管理部１１３は、Ｓ１１の処理において、検知した遷移が遷移Ｃであって、遷移のトリガが遷移のトリガがスレッドにおける処理の実行中断である場合であっても、スレッド処理中断回数カウントのカウントアップを行わない。
【００８２】
また、情報管理部１１３は、図１４に示すように、情報算出タイミングまで待機する（Ｓ３１のＮＯ）。情報算出タイミングは、例えば、各スレッドがＣＰＵから割り当てられたタイムスライス時間を超える処理時間を要する処理を複数回実行することができる時間毎であってよい。具体的に、情報算出タイミングは、例えば、所定の時間毎（例えば、１分毎）であってよい。以下、情報算出タイミングが１分毎であるものとして説明を行う。
【００８３】
そして、情報算出タイミングになった場合（Ｓ３１のＹＥＳ）、情報管理部１１３は、スレッド生成回数カウンタが示す値と、スレッド処理中断回数カウンタが示す値と、スレッド実行待ち解除回数カウンタが示す値とから、実行待ち数情報１３１を算出する（Ｓ３２）。具体的に、例えば、ある仮想マシン１１に対応するスレッド生成回数カウンタが示す値が「３２（回）」であり、スレッド生成回数カウンタが示す値が「２２（回）」であり、スレッド実行待ち解除回数カウンタが示す値が「１９（回）」である場合、情報管理部１１３は、これらの合計値である「７３（回）」を算出する。そして、情報管理部１１３は、例えば、算出した「７３（回）」を、実行待ち情報１３１として情報格納領域１３０に記憶する。
【００８４】
また、情報管理部１１３は、この場合、スレッド実行待ち回数カウンタが示す値と、スレッド消滅回数カウンタが示す値と、スレッド処理中断回数カウンタが示す値とから、実行完了数情報１３２を算出する（Ｓ３３）。具体的に、例えば、ある仮想マシン１１に対応するスレッド実行待ち回数カウンタが示す値が「６（回）」であり、スレッド消滅回数カウンタが示す値が「４（回）」であり、スレッド処理中断回数カウンタが示す値が「２２（回）」である場合、情報管理部１１３は、これらの合計値である「３２（回）」を算出する。そして、情報管理部１１３は、例えば、算出した「３２（回）」を、実行完了数情報１３２として情報格納領域１３０に記憶する。以下、情報格納領域１３０に蓄積された実行待ち数情報１３１及び実行完了数情報１３２の具体例について説明を行う。
【００８５】
[実行待ち数情報及び実行完了数情報の具体例]
図２０は、情報格納領域１３０に蓄積された実行待ち数情報１３１及び実行完了数情報１３２の具体例を説明する図である。なお、以下、仮想マシン１１のそれぞれに割当てられたＣＰＵのコアの数が１個であるものとして説明を行う。
【００８６】
図２０に示す情報は、各情報を識別する「項番」と、実行待ち数情報１３１及び実行完了数情報１３２に対応する仮想マシン１１を識別する「ＶＭ名」とを項目として有している。また、図２０に示す情報は、実行待ち数情報１３１及び実行完了数情報１３２に対応する単位時間の開始時間を示す「開始時間」と、実行待ち数情報１３１及び実行完了数情報１３２に対応する単位時間の終了時間を示す「終了時間」とを項目として有している。さらに、図２０に示す情報は、「ＶＭ名」に情報が設定された仮想マシン１１に割当てられているＣＰＵのコア数を示す「コア数」と、実行待ち数情報１３１を示す「実行待ち数」と、実行完了数情報１３２を示す「実行完了数」とを項目として有している。
【００８７】
具体的に、情報管理部１１３は、図２０に示すように、例えば、「項番」が「１」である情報の「ＶＭ名」に「ＶＭ−００１」を設定し、「開始時間」に「２０１６／０８／１２  １８：３３：００」を設定し、「終了時間」に「２０１６／０８／１２  １８：３３：５９」を設定する。また、情報管理部１１３は、図２０に示すように、例えば、「項番」が「１」である情報の「コア数」に「１」を設定し、「実行待ち数」に「７３（回）」を設定し、「実行完了数」に「３２（回）」を設定する。図２０に含まれる他の情報については説明を省略する。
【００８８】
図１４に戻り、情報管理部１１３は、スレッド生成回数カウンタ、スレッド実行待ち解除回数カウンタ、スレッド処理中断回数カウンタ、スレッド実行待ち回数カウンタ及びスレッド消滅回数カウンタをそれぞれ初期化する（Ｓ３４）。これにより、情報管理部１１３は、次の単位時間における所定の事象の発生回数をカウントすることが可能になる。
【００８９】
[情報解析処理の詳細]
次に、ＣＰＵ動的割当て処理のうち、情報解析装置２が実行する情報解析処理について説明を行う。図１５は、情報解析装置２の情報解析処理について説明するフローチャートである。
【００９０】
情報解析装置２の情報取得部２１１は、情報解析タイミングまで待機する（Ｓ４１のＮＯ）。情報解析タイミングは、情報解析装置２に対して管理者による入力（情報解析処理を開始する旨の入力）があったタイミングであってよい。そして、情報解析タイミングになった場合（Ｓ４１のＹＥＳ）、情報取得部２１１は、テスト装置１の情報格納領域１３０から、実行待ち数情報１３１と実行完了数情報１３２とを取得する（Ｓ４２）。
【００９１】
その後、情報解析装置２のグラフ生成部２１２は、Ｓ４２の処理で取得した実行待ち数情報１３１と実行完了数情報１３２との組み合わせのそれぞれに対応するグラフ情報２３１を生成する（Ｓ４３）。その後、情報解析装置２の情報管理部２１５は、グラフ生成部２１２が生成したグラフ情報２３１を情報格納領域２３０に記憶する。以下、グラフ情報２３１の具体例について説明を行う。
【００９２】
[グラフ情報の具体例]
図２１は、グラフ情報２３１の具体例である。図２１に示すグラフ情報２３１は、グラフ情報２３１に含まれる各情報を識別する「項番」と、実行待ち数情報１３１をＸ座標として実行完了数情報１３２をＹ座標とする平面上におけるＸ座標及びＹ座標をそれぞれ示す「Ｘ座標」及び「Ｙ座標」とを項目として有する。
【００９３】
具体的に、グラフ生成部２１２は、例えば、図２１に示すように、「項番」が「１」である情報の「Ｘ座標」に「７３」を設定し、「Ｙ座標」に「３２」を設定する。すなわち、グラフ生成部２１２は、図２０で説明した情報に含まれる実行待ち数情報１３１及び実行完了数情報１３２を参照し、「実行待ち数」に設定された値及び「実行完了数」に設定された値を、「Ｘ座標」及び「Ｙ座標」にそれぞれ設定する。図２１に含まれる他の情報については説明を省略する。
【００９４】
図１５に戻り、情報解析装置２の限界点特定部２１３は、Ｓ４３の処理で生成したグラフ情報２３１から、限界点を示す情報である限界点情報２３２を生成する（Ｓ４４）。そして、限界点特定部２１３は、生成した限界点情報２３２を情報格納領域２３０に記憶する。さらに、情報解析装置２の閾値点特定部２１４は、Ｓ４３の処理で生成したグラフ情報２３１とＳ４４の処理で生成した限界点情報２３２から、第１閾値点を示す情報である閾値点情報２３３を生成する（Ｓ４５）。そして、閾値点特定部２１４は、生成した閾値点情報２３３を情報格納領域２３０に記憶する。
【００９５】
すなわち、限界点特定部２１３及び閾値点特定部２１４は、Ｓ４４及びＳ４５の処理において、数多くの実行待ち数情報１３１及び実行完了数情報１３２に基づいて限界点及び第１閾値点の特定を行う。そのため、特定された限界点及び第１閾値点は、管理装置４がＣＰＵのコアを追加するか否かの判定を行う際に参照する基準として信頼性が高い情報である。
【００９６】
そのため、管理装置４は、後述するように、Ｓ４４及びＳ４５の処理において特定された限界点及び第１閾値点を参照し、サービス提供装置３から取得した実行待ち数情報３３１と実行完了数情報３３２との組み合わせに対応する点の限界点及び第１閾値点に対する相対位置を特定する。これにより、管理装置４は、サービス提供装置３から取得した実行待ち数情報３３１及び実行完了数情報３３２に対応する仮想マシン３１にＣＰＵのコアの追加を行うべきか否かの決定を、精度高く行うことが可能になる。以下、限界点及び第１閾値点の詳細について説明を行う。
【００９７】
[限界点及び第１閾値点の詳細]
図２０等で説明した実行待ち数情報１３１は、各仮想マシン１１が処理すべき処理数の増加に伴って増加する。これに対し、実行完了数情報１３２は、各仮想マシン１１が処理すべき処理数が所定数になるまでの間、各仮想マシン１１が処理すべき処理数の増加に伴って増加するが、各仮想マシン１１が処理すべき処理数が所定数以上になった場合、各仮想マシン１１が処理すべき処理数の増加に伴って徐々に減少する。これは、各仮想マシン１１の処理能力の限界から、実行完了数情報１３２に上限が存在することを意味する。そのため、各仮想マシン１１に対するＣＰＵのコアの追加は、各仮想マシン１１の実行完了数情報１３２が上限に達する前に行われることが好ましい。
【００９８】
そこで、限界点特定部２１３は、Ｓ４４の処理において、例えば、実行完了数情報１３２が上限に達する直前の状態を示す点である限界点を特定し、特定した限界点に対応するＸ座標及びＹ座標を含む限界点情報２３２を生成する。そして、管理装置４は、後述するように、サービス提供装置３から取得した実行待ち数情報３３１と実行完了数情報３３２との組み合わせに対応する点のＸ座標が、限界点情報２３２に含まれるＸ座標以上である仮想マシン３１の存在を検知した場合に、検知した仮想マシン３１に対してＣＰＵのコアを追加すべき旨の判定を行う。
【００９９】
これにより、管理装置４は、後述するように、実行完了数情報３３２が上限に達して減少し始めている仮想マシン３１のみでなく、実行完了数情報３３２が間もなく上限に達する仮想マシン３１についても、ＣＰＵのコアの追加を行う旨の判定を行うことが可能になる。
【０１００】
また、管理装置４は、実行完了数情報１３２が間もなく上限に達する状態にある仮想マシン３１を検知することが可能になるため、仮想マシン３１に対してＣＰＵのコアを追加するか否かの判定を動的に行うことが可能になる。したがって、管理者は、例えば、各仮想マシン３１に割当てる必要があるＣＰＵのコアの数の決定や、事後的に行われる仮想マシン３１の処理状態についての分析等を行う必要がなくなる。さらに、管理者は、仮想マシン３１が行う処理の処理負担が急激に変化する場合であっても、仮想マシン３１に対して状況に応じた数のＣＰＵのコアを割り当てることが可能になる。
【０１０１】
その後、情報管理部２１５は、Ｓ４５の処理において、Ｓ４４の処理で生成した限界点情報２３２から、限界点よりもＹ座標が小さい点である第１閾値点を示す閾値点情報２３３を生成する。そして、管理装置４は、後述するように、Ｓ４４の処理においてＣＰＵに追加を行う旨の判定を行った仮想マシン３１に、実行待ち数情報３３１と実行完了数情報３３２との組み合わせに対応する点のＹ座標が、第１閾値点のＹ座標未満である仮想マシン３１が存在するか否かの判定を行う。すなわち、管理装置４は、この場合、Ｓ４４の処理においてＣＰＵに追加を行う旨の判定を行った仮想マシン３１に、実行完了数情報１３２が上限に達した後、実行完了数情報１３２が大きく低下した仮想マシン１１が存在するか否かの判定を行う。そして、管理装置４は、実行待ち数情報３３１と実行完了数情報３３２との組み合わせに対応する点のＹ座標が、第１閾値点のＹ座標未満である仮想マシン３１の存在を検知した場合、検知した仮想マシン１１に対してＣＰＵの追加を優先的に行う必要がある旨の判定を行う。
【０１０２】
これにより、管理装置４は、Ｓ４４の処理においてＣＰＵに追加を行う旨の判定を行った仮想マシン３１の中から、より優先してＣＰＵの追加を行う必要がある仮想マシン３１の特定を行うことが可能になる。以下、Ｓ４４及びＳ４５の処理の具体例について説明を行う。
【０１０３】
[Ｓ４４及びＳ４５の処理の具体例]
図２２及び図２３は、グラフ情報２３１に情報が含まれる複数の点をプロットした場合の平面を説明する図である。
【０１０４】
限界点特定部２１３は、Ｓ４４の処理において、実行待ち数情報１３１をＸ座標として実行完了数情報１３３をＹ座標とする平面（以下、単に平面とも呼ぶ）に、グラフ情報２３１に情報が含まれる複数の点をプロットする。そして、限界点特定部２１３は、Ｓ４４の処理において、例えば、Ｘ軸及びＹ軸に平行な複数の直線によって、平面を複数の単位領域に分割する。
【０１０５】
具体的に、限界点特定部２１３は、平面に各点をプロットした後、例えば、図２２に示すように、「Ｘ１」から「Ｘ１０」のいずれか及び「Ｙ１」から「Ｙ１０」のいずれかに対応する複数の単位領域に平面を分割する。
【０１０６】
また、限界点特定部２１３は、この場合、図２２に示すように、各単位領域内にプロットされた点の数を設定する。具体的に、例えば、「Ｘ３」及び「Ｙ８」に対応する単位領域内に４０（個）の点がプロットされている場合、限界点特定部２１３は、図２２に示すように、「Ｘ３」及び「Ｙ８」に対応する領域に「４０」を設定する。
【０１０７】
なお、以下、図２２に示す例において、例えば、「Ｘ１」は、図２１で説明したグラフ情報２３１における「Ｘ座標」が「１」から「１０」までの範囲に対応するものとする。同様に、例えば、「Ｘ２」は、図２１で説明したグラフ情報２３１における「Ｘ座標」が「１１」から「２０」までの範囲に対応するものとする。また、図２２に示す例において、例えば、「Ｙ１」は、図２１で説明したグラフ情報２３１における「Ｙ座標」が「１」から「１０」までの範囲に対応するものとする。同様に、例えば、「Ｙ２」は、図２１で説明したグラフ情報２３１における「Ｙ座標」が「１１」から「２０」までの範囲に対応するものとする。
【０１０８】
さらに、図２２に示す例において、十分な数の点がプロットされていない単位領域は、Ｓ４４及びＳ４５の処理において処理の対象外であるものとし、「−」が設定されるものとする。具体的に、図２２に示す例では、図２２に示す例に含まれる全ての単位領域において、プロットされた点の数が１０パーセンタイル値以下である単位領域を、処理の対象外とする。同様に、図２２に示す例では、図２２に示す例においてＸ座標が同じまたはＹ座標が同じである１０（個）の単位領域のそれぞれにおいて、プロットされた点の数が１０パーセンタイル値以下である単位領域を、処理の対象外とする。
【０１０９】
そして、限界点特定部２１３は、Ｓ４４の処理において、例えば、Ｘ座標が同じである単位領域毎に、１つ以上の点が含まれる単位領域であってＹ座標が最大である単位領域を、最大候補単位領域としてそれぞれ特定する。続いて、限界点特定部２１３は、例えば、特定した最大候補単位領域のうち、Ｙ座標が最大であってＸ座標が最小である単位領域を、最大単位領域として特定する。さらに、限界点特定部２１３は、例えば、特定した最大単位領域に対応するＸ座標よりも小さいＸ座標に対応し、最大単位領域に最も近い最大候補単位領域に含まれる点を、限界点として特定する。
【０１１０】
具体的に、図２２に示す例において、例えば、「Ｘ１」に対応する単位領域のうち、１つ以上の点が含まれる単位領域であってＹ座標が最大である単位領域は、「Ｘ１」及び「Ｙ５」に対応する単位領域である。同様に、図２２に示す例において、例えば、「Ｘ２」に対応する単位領域のうち、１つ以上の点が含まれる単位領域であってＹ座標が最大である単位領域は、「Ｘ２」及び「Ｙ７」に対応する単位領域である。そのため、限界点特定部２１３は、最大候補単位領域として、「Ｘ１」及び「Ｙ５」に対応する単位領域、「Ｘ２」及び「Ｙ７」に対応する単位領域及び「Ｘ３」及び「Ｙ９」に対応する単位領域等をそれぞれ特定する。
【０１１１】
そして、限界点特定部２１３は、この場合、特定した最大候補単位領域のうち、Ｙ座標が最大であってＸ座標が最小である「Ｘ３」及び「Ｙ９」に対応する単位領域を、最大単位領域として特定する。さらに、限界点特定部２１３は、「Ｘ３」及び「Ｙ９」に対応する単位領域に対応するＸ座標よりも小さいＸ座標に対応し、「Ｘ３」及び「Ｙ９」に対応する単位領域に最も近い最大候補単位領域である「Ｘ２」及び「Ｙ７」に対応する単位領域に含まれる点を、限界点として特定する。
【０１１２】
ここで、「Ｘ２」及び「Ｙ７」に対応する領域には、「１０」が設定されている。すなわち、図２２に示す例では、「Ｘ２」及び「Ｙ７」に対応する領域に含まれる点の数が「１」に収束されていない。そのため、限界点特定部２１３は、この場合、例えば、平面をさらに小さい単位領域に分割した場合におけるＳ４４の処理を行う。具体的に、限界点特定部２１３は、例えば、図２３に示すように、例えば、「Ｘ２」から「Ｘ３」のいずれか及び「Ｙ７」から「Ｙ９」のいずれかに対応する単位領域を、さらに小さい単位領域に分割した場合におけるＳ４４の処理を行う。
【０１１３】
なお、図２３に示す例において、例えば、「Ｘ１１」は、図２１で説明したグラフ情報２３１における「Ｘ座標」が「１１」から「１２」までの範囲に対応する。同様に、例えば、「Ｘ１２」は、図２１で説明したグラフ情報２３１における「Ｘ座標」が「１３」から「１４」までの範囲に対応する。また、図２３に示す例において、例えば、「Ｙ１１」は、図２１で説明したグラフ情報２３１における「Ｙ座標」が「６１」から「６３」までの範囲に対応する。同様に、例えば、「Ｙ１２」は、図２１で説明したグラフ情報２３１における「Ｙ座標」が「６４」から「６６」までの範囲に対応する。
【０１１４】
具体的に、図２３に示す例において、例えば、「Ｘ１２」に対応する単位領域のうち、１つ以上の点が含まれる単位領域であってＹ座標が最大である単位領域は、「Ｘ１２」及び「Ｙ１２」に対応する単位領域である。同様に、図２３に示す例において、例えば、「Ｘ１３」に対応する単位領域のうち、１つ以上の点が含まれる単位領域であってＹ座標が最大である単位領域は、「Ｘ１３」及び「Ｙ１３」に対応する単位領域である。そのため、限界点特定部２１３は、最大候補単位領域として、「Ｘ１２」及び「Ｙ１２」に対応する単位領域、「Ｘ１３」及び「Ｙ１３」に対応する単位領域及び「Ｘ１４」及び「Ｙ１４」に対応する単位領域等をそれぞれ特定する。
【０１１５】
そして、限界点特定部２１３は、この場合、特定した最大候補単位領域のうち、Ｙ座標が最大であってＸ座標が最小である「Ｘ１７」及び「Ｙ１８」に対応する単位領域を、最大単位領域として特定する。さらに、限界点特定部２１３は、「Ｘ１７」及び「Ｙ１８」に対応する単位領域に対応するＸ座標よりも小さいＸ座標に対応し、「Ｘ１７」及び「Ｙ１８」に対応する単位領域に最も近い最大候補単位領域である「Ｘ１６」及び「Ｙ１７」に対応する単位領域に含まれる点を、限界点として特定する。
【０１１６】
ここで、「Ｘ１６」と「Ｙ１７」とに対応する領域には「１」が設定されている。そのため、情報管理部２１５は、「Ｘ１６」と「Ｙ１７」とに対応する領域に含まれる点を限界点として特定し、特定した限界点に対応する情報を限界点情報２３２として生成する。具体的に、情報管理部２１５は、この場合、例えば、「Ｘ座標」が「３１」であって「Ｙ座標」が「７９」である点を示す情報を、限界点情報２３２として生成し、情報格納領域２３０に記憶する（Ｓ４４）。
【０１１７】
その後、閾値点特定部２１４は、Ｓ４５の処理において、例えば、Ｙ座標が限界点情報２３２に含まれるＹ座標未満である領域を、Ｘ軸に並行な直線によって均等に複数の領域に分割する。そして、閾値点特定部２１４は、例えば、分割した複数の領域毎に、各領域に含まれる点の数を特定する。続いて、閾値点特定部２１４は、例えば、限界点を含む領域に含まれる点の数に対する、各領域に含まれる点の数の割合が所定の閾値（例えば、０．８）以下である複数の領域のうち、Ｙ座標が最大である領域（以下、特定の領域とも呼ぶ）を特定する。さらに、閾値点特定部２１４は、例えば、Ｘ座標が限界点と同じであり、Ｙ座標が特定の領域に含まれる点を第１閾値点として特定し、特定した第１閾値点に対応する情報を閾値点情報２３３として生成する。
【０１１８】
具体的に、閾値点特定部２１４は、この場合、例えば、「Ｘ座標」が「３１」であって「Ｙ座標」が「６４」である点を示す情報を閾値点情報２３３として生成し、情報格納領域２３０に記憶する（Ｓ４５）。
【０１１９】
図１５に戻り、情報管理部２１５は、Ｓ４４の処理で生成した限界点情報２３２と、Ｓ４５の処理で算出した閾値点情報２３３とから、状態情報２３４を生成する（Ｓ４６）。以下、状態情報１３４の具体例について説明を行う。
【０１２０】
[状態情報の具体例]
図２４は、状態情報２３４の具体例である。図２４に示す状態情報２３４は、状態情報２３４に含まれる各情報を識別する「項番」と、Ｘ座標の範囲を示す「Ｘ座標の範囲」と、Ｙ座標の範囲を示す「Ｙ座標の範囲」と、各仮想マシン１１の処理状態を示す「処理状態」とを項目として有する。
【０１２１】
具体的に、情報管理部２１５は、「項番」が「１」である情報の「Ｘ座標の範囲」に、原点のＸ座標から第１閾値点のＸ座標までの範囲である「０−３１」を設定し、「Ｙ座標の範囲」に、原点のＸ座標から第１閾値点のＹ座標までの範囲である「０−６４」を設定する。そして、情報管理部２１５は、「項番」が「１」である情報の「処理状態」に「状態Ａ」を設定する。
【０１２２】
また、情報管理部２１５は、「項番」が「２」である情報の「Ｘ座標の範囲」に、原点のＸ座標から第１閾値点のＸ座標までの範囲である「０−３１」を設定し、「Ｙ座標の範囲」に、第１閾値点のＹ座標から限界点のＹ座標までの範囲である「６４−７９」を設定する。そして、情報管理部２１５は、「項番」が「２」である情報の「処理状態」に「状態Ｂ」を設定する。
【０１２３】
また、情報管理部２１５は、「項番」が「３」である情報の「Ｘ座標の範囲」に、第１閾値点のＸ座標よりも大きい範囲である「３１−」を設定し、「Ｙ座標の範囲」に、原点のＹ座標から第１閾値点のＹ座標までの範囲である「０−６４」を設定する。そして、情報管理部２１５は、「項番」が「１」である情報の「処理状態」に「状態Ｃ」を設定する。
【０１２４】
さらに、情報管理部２１５は、「項番」が「４」である情報の「Ｘ座標の範囲」に、第１閾値点のＸ座標よりも大きい範囲である「３１−」を設定し、「Ｙ座標の範囲」に、第１閾値点のＹ座標から限界点のＹ座標までの範囲である「６４−７９」を設定する。そして、情報管理部２１５は、「項番」が「４」である情報の「処理状態」に「状態Ｄ」を設定する。
【０１２５】
これにより、管理装置４は、後述するように、情報管理部２１５が生成した状態情報２３４を参照することで、仮想マシン３１にＣＰＵのコアを追加するか否かの判断を行うことが可能になる。
【０１２６】
[サービス提供処理の詳細]
次に、ＣＰＵ動的割当て処理のうち、サービス提供装置３が実行するサービス提供処理について説明を行う。図１６は、サービス提供装置３のサービス提供処理について説明するフローチャートである。なお、以下、サービス提供装置３において複数の仮想マシン３１が既に生成されているものとして説明を行う。また、以下、生成された仮想マシン３１がサービス提供装置３のサービス提供部３１１からの指示に基づく処理を既に行っているものとして説明を行う。
【０１２７】
サービス提供装置３の事象検知部３１２は、図１２及び図１３で説明したテスト装置１の事象検知部１１２と同様の処理を行う。すなわち、事象検知部３１２は、スレッドの状態が他の状態から「ＣＰＵ実行待ち」に遷移した仮想マシン３１を検知した場合（図１２のＳ１１のＹＥＳ）、スレッド生成回数カウンタまたはスレッド実行待ち解除回数カウンタのいずれかをカウントアップする（図１２のＳ１３、Ｓ１４）。また、事象検知部３１２は、スレッドの状態が「ＣＰＵ実行中」から遷移した仮想マシン３１を検知した場合（図１３のＳ２１のＹＥＳ）、スレッド処理中断回数カウンタ、スレッド実行待ち回数カウンタまたはスレッド消滅回数カウンタのいずれかをカウントアップする（図１３のＳ２３、Ｓ２４、Ｓ２５）。
【０１２８】
一方、情報管理部３１３は、図１６に示すように、情報算出タイミングまで待機する（Ｓ１１１のＮＯ）。情報算出タイミングは、例えば、各スレッドがＣＰＵから割り当てられたタイムスライス時間を超える処理時間を要する処理を複数回実行することができる時間毎であってよい。具体的に、情報算出タイミングは、例えば、所定の時間毎（例えば、１分毎）であってよい。以下、情報算出タイミングが１分毎であるものとして説明を行う。
【０１２９】
そして、情報算出タイミングになった場合（Ｓ１１１のＹＥＳ）、情報管理部３１３は、スレッド生成回数カウンタが示す値と、スレッド処理中断回数カウンタが示す値と、スレッド実行待ち解除回数カウンタが示す値とから、実行待ち数情報３３１を算出する（Ｓ１１２）。そして、情報管理部１１３は、例えば、算出した実行待ち情報１３１を情報格納領域１３０に記憶する。
【０１３０】
また、情報管理部３１３は、この場合、スレッド実行待ち回数カウンタが示す値と、スレッド消滅回数カウンタが示す値と、スレッド処理中断回数カウンタが示す値とから、実行完了数情報３３２を算出する（Ｓ１１３）。そして、情報管理部１１３は、例えば、算出した実行完了数情報１３２を情報格納領域１３０に記憶する。
【０１３１】
その後、情報管理部３１３は、スレッド生成回数カウンタ、スレッド実行待ち解除回数カウンタ、スレッド処理中断回数カウンタ、スレッド実行待ち回数カウンタ及びスレッド消滅回数カウンタをそれぞれ初期化する（Ｓ１１４）。
【０１３２】
[割当て管理処理の詳細]
次に、ＣＰＵ動的割当て処理のうち、管理装置４が実行する割当て管理処理について説明を行う。図１７から図１９は、管理装置４の割当て管理処理について説明するフローチャートである。
【０１３３】
管理装置４の情報取得部４１１は、図１７に示すように、状態判定タイミングになるまで待機する（Ｓ１２１のＮＯ）。状態判定タイミングは、例えば、所定の時間毎（例えば、１０分毎）であってよい。なお、以下、仮想マシン３１毎に状態判定タイミングが異なるものとして説明を行う。すなわち、以下、Ｓ１２１からＳ１２７の処理が仮想マシン３１毎に行われるものとして説明を行う。
【０１３４】
そして、状態判定タイミングになった場合（Ｓ１２１のＹＥＳ）、情報取得部４１１は、情報解析装置２の情報格納領域２３０から、状態情報２３４を取得する（Ｓ１２２）。また、情報取得部４１１は、この場合、サービス提供装置３の情報格納領域３３０から、実行待ち数情報３３１と実行完了数情報３３２とを取得する（Ｓ１２３）。具体的に、情報取得部４１１は、例えば、Ｓ１２１の処理において状態判定タイミングになった仮想マシン３１に対応する実行待ち数情報３３１と実行完了数情報３３２との取得を行う。
【０１３５】
その後、管理装置４の処理状態特定部４１２は、Ｓ１２２の処理及びＳ１２３の処理で取得した情報から、第１時間における仮想マシン３１の第１処理状態を特定する（Ｓ１２４）。
【０１３６】
具体的に、処理状態特定部４１２は、例えば、第１時間における実行待ち数情報３３１及び実行完了数情報３３２として「４２」及び「５１」をそれぞれ取得した場合、図２４で説明した状態情報２３４を参照し、「Ｘ座標の範囲」及び「Ｙ座標の範囲」に「４２」及び「５１」がそれぞれ含まれる情報として「項番」が「３」である情報を特定する。そして、処理状態特定部４１２は、この場合、「項番」が「３」である情報の「処理状態」に設定された情報である「状態Ｃ」を特定する。
【０１３７】
さらに、処理状態特定部４１２は、Ｓ１２２の処理及びＳ１２３の処理で取得した情報から、第１時間よりも後の特定の期間（以下、第２時間とも呼ぶ）における仮想マシン３１の処理状態（以下、第２処理状態とも呼ぶ）を特定する（Ｓ１２５）。
【０１３８】
すなわち、処理状態特定部４１２は、仮想マシン３１のそれぞれについて、例えば、２つの異なる時間における処理状態を特定する。そして、管理装置４は、後述するように、２つの異なる時間における処理状態から、仮想マシン３１にＣＰＵのコアを追加するか否かの判定を行う。これにより、管理装置４は、仮想マシン３１のそれぞれにおける処理状態の推移に基づいて、仮想マシン３１にＣＰＵのコアを追加するか否かの判定を行うことが可能になる。そのため、管理装置４は、仮想マシン３１にＣＰＵのコアを追加するか否かの判定をより精度高く行うことが可能になる。なお、以下、第２時間における実行待ち数情報３３１及び実行完了数情報３３２を、それぞれ第２実行待ち処理数及び第２実行完了処理数とも呼ぶ。
【０１３９】
そして、管理装置４の追加削除判定部４１３は、Ｓ１２２等で情報の取得を行った仮想マシン３１がＣＰＵのコアの追加が必要である仮想マシンであるか否かを判定する（Ｓ１２６）。具体的に、追加削除判定部４１３は、優先度情報４３２を参照し、Ｓ１２２等で情報の取得を行った仮想マシン３１がＣＰＵのコアの追加が必要である仮想マシンであるか否かの判定を行う。以下、優先度情報４３２の具体例について説明を行う。
【０１４０】
[優先度情報の具体例]
図２５は、優先度情報４３２の具体例を説明する図である。図２５に示す優先度情報４３２は、優先度情報４３２に含まれる各情報を識別する「項番」と、第１処理状態を示す「第１時間の処理状態」と、第２処理状態を示す「第２時間の処理状態」とを項目として有している。また、図２５に示す優先度情報４３２は、ＣＰＵのコアを追加すべきか否かを示す「コア追加要否」と、ＣＰＵのコアを追加する際の優先度を示す「優先度」を項目として有している。「コア追加要否」には、ＣＰＵのコアを追加すべき旨を示す「○」、または、ＣＰＵのコアの追加をすべきでない旨を示す「×」が設定されている。なお、「コア追加要否」に「×」が設定されている場合、「優先度」には、優先度が設定されていないことを示す「−」が設定される。
【０１４１】
具体的に、図２５に示す優先度情報４３２において、「項番」が「１」である情報には、「第１時間の処理状態」として「状態Ａ」が設定され、「第２時間の処理状態」として「状態Ａ」が設定され、「コア追加要否」として「×」が設定され、「優先度」として「−」が設定されている。また、図２５に示す優先度情報４３２において、「項番」が「３」である情報には、「第１時間の処理状態」として「状態Ａ」が設定され、「第２時間の処理状態」として「状態Ｃ」が設定され、「コア追加要否」として「○」が設定され、「優先度」として「３」が設定されている。図２５に含まれる他の情報については説明を省略する。
【０１４２】
そのため、追加削除判定部４１３は、Ｓ１２６の処理において、例えば、Ｓ１２４の処理及びＳ１２５の処理において特定された第１処理状態及び第２処理状態がそれぞれ「状態Ｂ」及び「状態Ｄ」である場合、図２５で説明した優先度情報４３２における「項番」が「８」である情報を参照する。そして、「項番」が「８」である情報の「コア追加要否」には「○」が設定されているため、追加削除判定部４１３は、Ｓ１２２の処理及びＳ１２３の処理において取得した情報に対応する仮想マシン３１に、ＣＰＵのコアを追加すべきである旨の判定を行う。
【０１４３】
なお、仮想マシン３１の処理状態が「状態Ａ」または「状態Ｂ」である場合とは、例えば、その仮想マシン３１に対応する実行待ち数情報３３１と実行完了数情報３３２との組み合わせに対応する点のＸ座標が、限界点（第１閾値点）のＸ座標未満である場合である。一方、仮想マシン３１の処理状態が「状態Ｃ」または「状態Ｄ」である場合とは、例えば、その仮想マシン３１に対応する実行待ち数情報３３１と実行完了数情報３３２との組み合わせに対応する点のＸ座標が、限界点（第１閾値点）のＸ座標以上である場合である。
【０１４４】
そのため、管理者は、図２５に示す優先度情報４３２に示すように、例えば、「第２時間に対応する処理状態」が「状態Ｃ」及び「状態Ｄ」である情報の「コア追加要否」には、「○」を設定する。一方、管理者は、図２５に示す優先度情報４３２に示すように、例えば、「第１時間に対応する処理状態」が「状態Ｃ」及び「状態Ｄ」であったが、「第２時間に対応する処理状態」が「状態Ｃ」及び「状態Ｄ」でない情報の「コア追加要否」には、「−」を設定する。
【０１４５】
さらに、仮想マシン３１の処理状態が「状態Ｃ」である場合とは、仮想マシン３１の処理状態が「状態Ｄ」である場合と比較して、実行している処理数が低下している状態である。そのため、管理者は、例えば、処理状態が「状態Ｃ」である仮想マシン３１に対して、処理状態が「状態Ｄ」である仮想マシン３１よりも優先してＣＰＵのコアを追加する旨の判断をする。そして、管理者は、この場合、図２５に示す優先度情報４３２に示すように、例えば、「第２時間に対応する処理状態」が「状態Ｃ」である情報の「優先度」に、「第２時間に対応する処理状態」が「状態Ｄ」である情報の「優先度」よりも高い数値を設定する。
【０１４６】
図１７に戻り、Ｓ１２２等で情報の取得を行った仮想マシン３１がＣＰＵのコアの追加が必要である仮想マシン３１であると判定した場合（Ｓ１２６のＹＥＳ）、管理装置４の情報管理部４１４は、Ｓ１２２の処理及びＳ１２３の処理で情報を取得した仮想マシン３１を示す情報を、追加削除要求情報４３３に追加する（Ｓ１２７）。そして、情報管理部４１４は、情報を追加した追加削除要求情報４３３を情報格納領域４３０に記憶する。一方、Ｓ１２２等で情報の取得を行った仮想マシン３１がＣＰＵのコアの追加が必要でない仮想マシン３１であると判定した場合（Ｓ１２６のＮＯ）、情報管理部４１４は、Ｓ１２７の処理を行わない。以下、追加削除要求情報４３３の具体例について説明を行う。
【０１４７】
[追加削除要求情報の具体例]
図２６は、追加削除要求情報４３３の具体例を説明する図である。図２６に示す追加削除要求情報４３３は、追加削除要求情報４３３に含まれる各情報を識別する「項番」と、情報管理部４１４が情報の追加を行った日時である「受付日時」とを項目として有する。また、図２６に示す追加削除要求情報４３３は、追加または削除の対象である仮想マシン３１を識別する「ＶＭ名」と、各情報の種別を示す「要求種別」とを項目として有する。「要求種別」には、仮想マシン３１の追加要求に関する情報であることを示す「追加」、または、仮想マシン３１の削除要求に関する情報であることを示す「削除」が設定される。さらに、図２６に示す追加削除要求情報４３３は、図２５で説明した優先度情報４３２と同じ項目である「第１時間の処理状態」と、「第２時間の処理状態」と、「優先度」とを項目として有する。なお、「要求種別」に「削除」が設定される場合、「第１時間の処理状態」、「第２時間の処理状態」及び「優先度」には「−」が設定される。
【０１４８】
具体的に、図２６に示す追加削除要求情報４３３において、「項番」が「１」である情報には、「受付日時」として「２０１６／０８／１２  １９：０７：２３」が設定され、「ＶＭ名」として「ＶＭ−００３」が設定され、「要求種別」として「追加」が設定されている。また、「項番」が「１」である情報には、「第１時間の処理状態」として「状態Ａ」が設定され、「第２時間の処理状態」として「状態Ｃ」が設定され、「優先度」として「３」が設定されている。また、図２６に示す追加削除要求情報４３３において、「項番」が「３」である情報には、「受付日時」として「２０１６／０８／１２  １９：０８：１５」が設定され、「ＶＭ名」として「ＶＭ−００１」が設定され、「要求種別」として「削除」が設定されている。また、「項番」が「３」である情報において、「第１時間の処理状態」、「第２時間の処理状態」及び「優先度」には「−」が設定されている。図２６に含まれる他の情報については説明を省略する。
【０１４９】
なお、情報管理部４１４は、例えば、仮想マシン３１のぞれぞれのＣＰＵの使用率を定期的に取得し、ＣＰＵの使用率が所定の閾値（例えば、２０（％））を下回った仮想マシン３１の存在する場合に、「要求種別」が「削除」である情報を追加削除要求情報４３３に追加するものであってよい。
【０１５０】
図１８に戻り、追加削除判定部４１３は、追加削除判定タイミングまで待機する（Ｓ１３１のＮＯ）。追加削除判定タイミングは、例えば、所定の時間毎（例えば、１０分毎）であってよい。そして、追加削除判定タイミングになった場合（Ｓ１３１のＹＥＳ）、追加削除判定部４１３は、情報格納領域４３０から追加削除要求情報４３３を取得する（Ｓ１３２）。
【０１５１】
そして、追加削除判定部４１３は、Ｓ１３２の処理で取得した追加削除要求情報４３３に、「要求種別」に「削除」が設定された情報（以下、削除要求とも呼ぶ）が存在するか否かを判定する（Ｓ１３３）。その結果、削除要求が存在すると判定した場合（Ｓ１３３のＹＥＳ）、追加削除判定部４１３は、削除要求に対応するＣＰＵのコアの削除を指示する（Ｓ１３４）。
【０１５２】
具体的に、図２６で説明した追加削除要求情報４３３において、「項番」が「３」である情報の「要求種別」に設定された情報は「削除」である。そのため、追加削除判定部４１３は、この場合、「項番」が「３」である情報の「ＶＭ名」に設定された情報である「ＶＭ−００１」のＣＰＵのコアを１つ削除する旨の指示を行う。
【０１５３】
その後、追加削除判定部４１３は、情報格納領域４４０に記憶された空きコア情報４３１に、Ｓ１３４の処理で削除を指示したＣＰＵのコアの数を加算する（Ｓ１３５）。その後、追加削除判定部４１３は、ＣＰＵのコアの数を加算した空きコア情報４３１を情報格納領域４４０に記憶する。
【０１５４】
具体的に、情報格納領域４４０に記憶された空きコア情報４３１が示す値が「５」であり、Ｓ１３４において削除する旨の指示が行われたＣＰＵのコアの数が「１」である場合、追加削除判定部４１３は、新たな空きコア情報４３１を「６」に決定する。
【０１５５】
一方、削除要求が存在しないと判定した場合（Ｓ１３３のＮＯ）、追加削除判定部４１３等は、Ｓ１３４の処理及びＳ１３５の処理を行わない。
【０１５６】
続いて、追加削除判定部４１３は、図１９に示すように、Ｓ１３２の処理で取得した追加削除要求情報４３３に、「要求種別」に「追加」が設定された情報（以下、追加要求とも呼ぶ）が存在するか否かを判定する（Ｓ１４１）。具体的に、追加削除判定部４１３は、Ｓ１３２の処理で取得した追加削除要求情報４３３に含まれる追加要求のうち、後述するＳ１４３の処理がまだ行われていない追加要求が存在するか否かの判定を行う。その結果、追加要求が存在すると判定した場合（Ｓ１４１のＹＥＳ）、追加削除判定部４１３は、空きコアが存在するか否かを判定する（Ｓ１４２）。具体的に、追加削除判定部４１３は、この場合、情報格納領域４４０に記憶された空きコア情報４３１が１以上であるか否かを判定する。
【０１５７】
そして、空きコアが存在すると判定した場合（Ｓ１４２のＹＥＳ）、追加削除判定部４１３は、情報格納領域４３０に記憶された優先度情報４３２を参照し、追加要求に対応する仮想マシン３１のうち、優先度が最も高い仮想マシン３１に対してＣＰＵのコアの追加を指示する（Ｓ１４３）。
【０１５８】
具体的に、図２６で説明した追加削除要求情報４３３において、「項番」が「１」、「２」及び「４」である情報の「要求種別」に設定された情報は「追加」である。そして、「項番」が「１」、「２」及び「４」である情報の「優先度」には、それぞれ「３」、「２」及び「３」が設定されている。そのため、追加削除判定部４１３は、この場合、「項番」が「２」である情報（「優先度」に「２」が設定された情報）の「ＶＭ名」に設定された情報である「ＶＭ−０１４」のＣＰＵのコアを１つ追加する旨の指示を行う。
【０１５９】
なお、追加削除判定部４１３は、Ｓ１４３の処理において、「優先度」に同じ値が設定された仮想マシン３１が複数存在する場合、例えば、第１時間における実行待ち数情報１３１と実行完了数情報１３２との組み合わせに対応する点のＸ座標及びＹ座標と、第２時間における実行待ち数情報１３１と実行完了数情報１３２との組み合わせに対応する点のＸ座標及びＹ座標との距離の差が大きい仮想マシン３１を優先するものであってよい。
【０１６０】
さらに、追加削除判定部４１３は、情報格納領域４４０に記憶された空きコア情報４３１から、「１」を減算する（Ｓ１４４）。具体的に、情報格納領域４４０に記憶された空きコア情報４３１が示す値が「６」である場合、追加削除判定部４１３は、新たな空きコア情報４３１が示す値を「５」に更新する。その後、追加削除判定部４１３は、Ｓ１４１以降の処理を再度行う。
【０１６１】
一方、Ｓ１４１の処理において追加要求が存在しないと判定した場合（Ｓ１４１のＮＯ）、または、Ｓ１４２の処理において空きコアが存在しないと判定した場合（Ｓ１４２のＮＯ）、追加削除判定部４１３は、Ｓ１３１以降の処理を再度行う。
【０１６２】
このように、本実施の形態における管理装置４は、仮想マシン３１のそれぞれから、各仮想マシン３１に割当てられたＣＰＵの第１時間における実行待ち数情報３３１を取得する。また、管理装置４は、仮想マシン３１のそれぞれから、各仮想マシン３１に割当てられたＣＰＵの第１時間において実行が完了した処理数を示す実行完了数情報３３２を取得する。
【０１６３】
そして、管理装置４は、取得した実行待ち数情報３３１と実行完了数情報３３２とに基づいて、第１時間における仮想マシン３１のそれぞれの第１処理状態を特定する。その後、管理装置４は、特定した第１処理状態と、仮想マシン３１のそれぞれに割当てるＣＰＵのコアの空き状況とに基づいて、ＣＰＵのコアを追加する仮想マシン３１を決定する。
【０１６４】
これにより、管理装置４は、仮想マシン３１に対するＣＰＵのコアの追加をより効率的に行うことが可能になる。
【０１６５】
[Ｓ４５の処理の他の実施例］
次に、Ｓ４５の処理における他の実施例について説明を行う。情報解析装置２の閾値点特定部２１４は、Ｓ４５の処理において、第１閾値点に加えて、第１閾値点に対応する実行完了数情報１３２よりも小さい実行完了数情報１３２に対応する点（以下、第２閾値点）を特定するものであってもよい。
【０１６６】
この場合、情報解析装置２の情報管理部２１５は、第１領域を、Ｙ座標が第２閾値点に対応するＹ座標以上である領域（以下、第５領域とも呼ぶ）と、Ｙ座標が第２閾値点に対応するＹ座標未満である領域（以下、第６領域とも呼ぶ）とに分割する。また、情報管理部２１５は、第３領域を、Ｙ座標が第２閾値点に対応するＹ座標以上である領域（以下、第７領域とも呼ぶ）と、Ｙ座標が第２閾値点に対応するＹ座標未満である領域（以下、第８領域とも呼ぶ）とに分割する。その後、情報管理部２１５は、Ｘ座標とＹ座標との組み合わせと、Ｘ座標とＹ座標との組み合わせに対応する点が第２領域、第４領域、第５領域、第６領域、第７領域及び第８領域のいずれに含まれるかを示す情報とを対応させることにより、状態情報２３４を生成する。
【０１６７】
なお、管理者は、この場合、第２領域、第４領域、第５領域、第６領域、第７領域及び第８領域の情報が含まれる優先度情報４３２を予め生成する。
【０１６８】
これにより、管理装置４は、仮想マシン３１に対してＣＰＵのコアを追加するか否かの判定を、より精度高く行うことが可能になる。
【０１６９】
[仮想マシンに割当てられているＣＰＵのコアの数が２以上である場合の処理］
次に、サービス提供装置３で動作する仮想マシン３１に割当てられているＣＰＵのコアの数が２以上である場合の処理について説明を行う。
【０１７０】
テスト装置１で動作する仮想マシン１１に割当てられているＣＰＵのコアの数が１つである場合、情報解析装置２の限界点特定部２１３及び閾値点特定部２１４は、ＣＰＵのコアの数が１つである場合に対応する限界点情報２３２及び閾値点情報２３３を生成する。そのため、例えば、サービス提供装置３で動作する仮想マシン３１に割当てられているＣＰＵのコアの数が２以上である場合、管理装置４は、限界点情報２３２及び閾値点情報２３３から生成された情報である状態情報２３４をそのまま参照することができない。
【０１７１】
そこで、限界点特定部２１３は、Ｓ４４の処理において、例えば、原点から限界点までのＸ座標及びＹ座標の変化量を定数倍した複数の情報を、予め限界点情報２３２に含めるものであってよい。すなわち、限界点特定部２１３は、例えば、仮想マシン３１に割当てられているＣＰＵのコアの数が２の場合や３の場合に対応する限界点を示す情報を、限界点情報２３２に予め含める。同様に、閾値点特定部２１４は、例えば、仮想マシン３１に割当てられているＣＰＵのコアの数が２の場合や３の場合に対応する第１閾値点を示す情報を、閾値点情報２３３に予め含める。そして、情報解析装置２の情報管理部２１５は、例えば、限界点情報２３２及び閾値点情報２３３に情報が含まれる限界点及び第１閾値点のそれぞれに対応する状態情報２３４をそれぞれ生成する。
【０１７２】
これにより、管理装置４は、割当てられているＣＰＵのコアの数が２以上である仮想マシン３１が存在する場合であっても、仮想マシン３１に対してＣＰＵのコアを追加するか否かの判定を、より精度高く行うことが可能になる。
【０１７３】
[第２の実施の形態］
次に、第２の実施の形態におけるＣＰＵ動的割当て処理について説明を行う。第２の実施の形態におけるサービス提供装置３は、第１の実施の形態において管理装置４が行っていた割当て管理処理の一部を管理装置４に代わって行う。これにより、管理装置４は、割当て管理処理の実行に伴う処理負担をサービス提供装置３に分担させることが可能になる。なお、以下、第１の実施の形態と処理の内容が異なるサービス提供装置３及び管理装置４についてのみ説明を行う。また、以下、サービス提供装置３及び管理装置４が行う処理のうち、第１の実施の形態と処理の内容が異なる処理についてのみ説明を行う。
【０１７４】
[情報処理システムのソフトウエア構成]
初めに、第２の実施の形態における情報処理システム１００のソフトウエア構成について説明する。図２７は、図３で説明したサービス提供装置３の機能ブロック図である。また、図２８は、図３で説明した管理装置４の機能ブロック図である。
【０１７５】
初めに、サービス提供装置３の機能ブロック図について説明を行う。第２の実施の形態におけるＣＰＵ３０１は、図２７に示すように、プログラム３１０と協働することにより、第１の実施の形態で説明したサービス提供部３１１と、事象検知部３１２と、情報管理部３１３とに加えて、情報取得部３１４と、処理状態特定部３１５と、情報送信部３１６としても動作する。
【０１７６】
情報取得部３１４は、第１の実施の形態における情報取得部４１１と同様に、情報解析装置２の情報格納領域２３０に記憶された状態情報２３４を取得する。また、情報取得部３１４は、第１の実施の形態における情報取得部４１１と同様に、サービス提供装置３の情報格納領域３３０に記憶された実行待ち数情報３３１と実行完了数情報３３２とを取得する。
【０１７７】
処理状態特定部３１５は、第１の実施の形態における処理状態特定部４１２と同様に、情報取得部３１４が取得した状態情報２３４を参照する。そして、処理状態特定部３１５は、第１の実施の形態における処理状態特定部４１２と同様に、例えば、情報取得部３１４が取得した実行待ち数情報３３１と実行完了数情報３３２との組み合わせに対応する処理状態を、第１処理状態として仮想マシン３１毎に特定する。
【０１７８】
情報送信部３１６は、例えば、処理状態特定部３１５が特定した仮想マシン３１毎の第１処理状態を、管理装置４に送信する。
【０１７９】
次に、管理装置４の機能ブロック図について説明を行う。第２の実施の形態におけるＣＰＵ４０１は、図２８に示すように、プログラム４１０と協働することにより、第１の実施の形態で説明した追加削除判定部４１３と、情報管理部４１４とに加えて、情報受信部４１５としても動作する。なお、第２の実施の形態におけるＣＰＵ４０１は、第１の実施の形態で説明した情報取得部４１１及び処理状態特定部４１２としては動作しない。
【０１８０】
情報受信部４１５は、サービス提供装置３の情報送信部３１６が送信した仮想マシン３１毎の第１処理状態を受信する。
【０１８１】
[第２の実施の形態におけるサービス提供処理の詳細]
次に、第２の実施の形態におけるＣＰＵ動的割当て処理について説明する。図２９及び図３０は、第２の実施の形態におけるＣＰＵ動的割当て処理を説明するフローチャート図である。
【０１８２】
初めに、第２の実施の形態におけるＣＰＵ動的割当て処理のうち、サービス提供装置３が実行するサービス提供処理について説明を行う。図２９は、サービス提供装置３のサービス提供処理について説明するフローチャートである。
【０１８３】
サービス提供装置３の情報取得部３１４は、図２９に示すように、状態判定タイミングになるまで待機する（Ｓ２０１のＮＯ）。そして、状態判定タイミングになった場合（Ｓ２０１のＹＥＳ）、情報取得部３１４は、情報解析装置２の情報格納領域２３０から、状態情報２３４を取得する（Ｓ２０２）。また、情報取得部３１４は、この場合、情報格納領域３３０から、実行待ち数情報３３１と実行完了数情報３３２とを取得する（Ｓ２０３）。
【０１８４】
その後、サービス提供装置３の処理状態特定部３１５は、Ｓ２０２の処理及びＳ２０３の処理で取得した情報から、第１時間における仮想マシン３１の第１処理状態を特定する（Ｓ２０４）。そして、処理状態特定部３１５は、Ｓ２０２の処理及びＳ２０３の処理で取得した情報から、第２時間における仮想マシン３１の第２処理状態を特定する（Ｓ２０５）。
【０１８５】
その後、サービス提供装置３の情報送信部３１６は、Ｓ２０４の処理で特定した第１処理状態と、Ｓ２０５の処理で特定した第２処理状態とを、管理装置４に送信する（Ｓ２０６）。
【０１８６】
[第２の実施の形態における割当て管理処理の詳細]
次に、第２の実施の形態におけるＣＰＵ動的割当て処理のうち、管理装置４が実行する割当て管理処理について説明を行う。図３０は、管理装置４の割当て管理処理について説明するフローチャートである。
【０１８７】
管理装置４の情報受信部４１５は、サービス提供装置３から送信された第１処理状態及び第２処理状態を受信するまで待機する(Ｓ２１１のＮＯ)。そして、第１処理状態及び第２処理状態を受信した場合（Ｓ２１１のＹＥＳ）、追加削除判定部４１３は、図１７のＳ１２２及びＳ１２３の処理において情報の取得を行った仮想マシン３１がＣＰＵのコアの追加が必要である仮想マシンであるか否かを判定する（Ｓ２１２）。
【０１８８】
その結果、Ｓ１２２の処理等において情報の取得を行った仮想マシン３１がＣＰＵのコアの追加が必要である仮想マシンであると判定した場合（Ｓ２１２のＹＥＳ）、情報管理部４１４は、Ｓ１２２の処理等において情報を取得した仮想マシン３１を示す情報を、追加削除要求情報４３３に追加する（Ｓ２１３）。そして、情報管理部４１４は、情報を追加した追加削除要求情報４３３を情報格納領域４３０に記憶する。一方、Ｓ１２２の処理等で情報の取得を行った仮想マシン３１がＣＰＵのコアの追加が必要でない仮想マシンであると判定した場合（Ｓ２１２のＮＯ）、情報管理部４１４は、Ｓ２１３の処理を行わない。
【０１８９】
すなわち、第２の実施の形態における管理装置４は、第１処理状態及び第２処理状態の特定を自装置において行わず、サービス提供装置３に行わせる。そして、第２の実施の形態における管理装置４は、サービス提供装置３から受信した第１処理状態及び第２処理状態に対応する情報を、追加削除要求情報４３３に記憶する。その後、第２の実施の形態における管理装置４は、第１の実施の形態の場合と同様に、追加削除要求情報４３３を参照して、仮想マシン３１にＣＰＵのコアを追加するか否かの判定を行う。
【０１９０】
これにより、管理装置４は、割当て管理処理の実行に伴う処理負担をサービス提供装置３に分担させることが可能になる。
【０１９１】
以上の実施の形態をまとめると、以下の付記の通りである。
【０１９２】
（付記１）
複数の仮想マシンから、各仮想マシンに割当てられたＣＰＵの第１時間における実行待ち処理数である第１実行待ち処理数と、前記ＣＰＵの前記第１時間における実行完了処理数である第１実行完了処理数とをそれぞれ取得し、
取得した前記第１実行待ち処理数と前記第１実行完了処理数とに基づいて、前記第１時間における前記複数の仮想マシンそれぞれの第１処理状態を特定し、
特定した前記第１処理状態と、前記複数の仮想マシンに割当てるＣＰＵのリソースの空き状況とに基づいて、前記複数の仮想マシンから、前記リソースを追加する仮想マシンを決定する、
処理をコンピュータに実行させることを特徴とするＣＰＵ動的割当てプログラム。
【０１９３】
（付記２）
付記１において、
前記特定する処理では、ＣＰＵの実行待ち処理数とＣＰＵの実行完了処理数との組み合わせと仮想マシンの処理状態とを対応付けた状態情報を記憶した記憶部を参照し、前記第１実行待ち処理数と前記第１実行完了処理数との組み合わせに対応する処理状態を、前記第１処理状態として前記複数の仮想マシン毎に特定し、
前記決定する処理では、
仮想マシンの処理状態とＣＰＵのリソースを追加する際の優先度とを対応付けた優先度情報を記憶した記憶部を参照し、前記第１処理状態に対応する優先度を前記複数の仮想マシン毎に特定し、
仮想マシンに追加するリソースの数が前記空き状況に対応するリソースの数に達するまで、特定した前記優先度が高い仮想マシンから順にリソースを追加する仮想マシンとして決定する、
ことを特徴とするＣＰＵ動的割当てプログラム。
【０１９４】
（付記３）
付記１において、さらに、
複数の仮想マシンから、前記第１時間よりも後の第２時間におけるＣＰＵの実行待ち処理数である第２実行待ち処理数とＣＰＵの実行完了処理数である第２実行完了処理数とをそれぞれ取得する、
処理をコンピュータに実行させ、
前記特定する処理では、ＣＰＵの実行待ち処理数とＣＰＵの実行完了処理数との組み合わせと処理状態とを対応付けた状態情報を記憶した記憶部を参照し、取得した前記第１実行待ち処理数と前記第１実行完了処理数との組み合わせに対応する処理状態と、取得した前記第２実行待ち処理数と前記第２実行完了処理数との組み合わせに対応する処理状態とを、それぞれ第１処理状態と第２処理状態として前記複数の仮想マシン毎に特定し、
前記決定する処理では、
処理状態の組み合わせと優先度とを対応付けた優先度情報を記憶した記憶部を参照し、前記第１処理状態と前記第２処理状態との組み合わせに対応する優先度を、前記複数の仮想マシン毎に特定し、
仮想マシンに追加するリソースの数が前記空き状況に対応するリソースの数に達するまで、特定した前記優先度が高い仮想マシンから順にリソースを追加する仮想マシンとして決定する、
ことを特徴とするＣＰＵ動的割当てプログラム。
【０１９５】
（付記４）
付記１において、さらに、
前記特定する処理の前に、複数の仮想マシンから、複数の時間のそれぞれにおけるＣＰＵの実行待ち処理数である第３実行待ち処理数と、前記複数の時間のそれぞれにおけるＣＰＵの実行完了処理数である第３実行完了処理数とを取得し、
ＣＰＵの実行待ち処理数をＸ座標としてＣＰＵの実行完了処理数をＹ座標とする平面上に、取得した前記第３実行待ち処理数と前記第３実行完了処理数との組み合わせのそれぞれに対応する複数の点をプロットし、
前記平面上をＸ軸及びＹ軸に並行な複数の直線によって複数の単位領域に分割し、
Ｘ座標が同じである前記複数の単位領域毎に、前記複数の点が含まれる単位領域であってＹ座標が最大である最大候補単位領域をそれぞれ特定し、
特定した前記最大候補単位領域のうち、Ｙ座標が最大であってＸ座標が最小である最大単位領域を特定し、
プロットした前記複数の点から、前記最大単位領域に対応するＸ座標よりも小さいＸ座標に対応し、前記最大単位領域に最も近い前記最大候補単位領域に含まれる点である限界点を特定し、
プロットした前記複数の点から、前記限界点に対応するＹ座標よりも小さいＹ座標に対応する点である第１閾値点を特定し、
前記平面上においてＹ座標が前記限界点に対応するＹ座標よりも小さい領域を、Ｘ座標が前記第１閾値点に対応するＸ座標未満であり、Ｙ座標が前記第１閾値点に対応するＹ座標未満である第１領域と、Ｘ座標が前記第１閾値点に対応するＸ座標未満であり、Ｙ座標が前記第１閾値点に対応するＹ座標以上である第２領域と、Ｘ座標が前記第１閾値点に対応するＸ座標以上であり、Ｙ座標が前記第１閾値点に対応するＹ座標未満である第３領域と、Ｘ座標が前記第１閾値点に対応するＸ座標以上であり、Ｙ座標が前記第１閾値点に対応するＹ座標以上である第４領域とに分割し、
Ｘ座標とＹ座標との組み合わせのそれぞれと、Ｘ座標とＹ座標との組み合わせのそれぞれに対応する点が前記第１領域、前記第２領域、前記第３領域及び前記第４領域のいずれに含まれるかを示す情報とを対応させることにより、前記状態情報を生成する、
処理をコンピュータに実行させることを特徴とするＣＰＵ動的割当てプログラム。
【０１９６】
（付記５）
付記４において、
前記最大候補単位領域を特定する処理では、所定の基準を満たす数以上の前記複数の点が含まれる単位領域から、前記最大候補単位領域の特定を行う、
ことを特徴とするＣＰＵ動的割当てプログラム。
【０１９７】
（付記６）
付記４において、
前記限界点を特定する処理では、前記最大単位領域に対応するＸ座標よりも小さいＸ座標に対応し、前記最大単位領域に最も近い前記最大候補単位領域に含まれる点が複数存在する場合、前記単位領域のそれぞれをさらに分割した単位領域について、前記複数の単位領域に分割する処理、前記最大候補単位領域を特定する処理、前記最大単位領域を特定する処理及び前記限界点を特定する処理を再度行う、
ことを特徴とするＣＰＵ動的割当てプログラム。
【０１９８】
（付記７）
付記４において、
前記第１閾値点を特定する処理では、
前記平面上をＸ軸に平行な複数の直線によって複数の領域に分割し、
分割した前記複数の領域毎に、各領域に含まれる前記複数の点の数を特定し、
前記限界点を含む領域に含まれる前記複数の点の数に対する、各領域に含まれる前記複数の点の数の割合が所定以下である領域のうち、Ｙ座標が最大である領域を特定し、
特定した前記Ｙ座標が最大である領域に含まれる前記複数の点から、前記第１閾値点を特定する、
ことを特徴とするＣＰＵ動的割当てプログラム。
【０１９９】
（付記８）
付記４において、
前記優先度情報は、Ｘ座標とＹ座標との組み合わせに対応する点が前記第３領域に含まれることを示す情報である場合の優先度が、他の優先度よりも高くなるように決定された情報である、
ことを特徴とするＣＰＵ動的割当てプログラム。
【０２００】
（付記９）
付記４において、さらに、
前記第１閾値点に対応するＹ座標よりも小さいＹ座標に対応する点である第２閾値点を特定する、
処理をコンピュータに実行させ、
前記領域を分割する処理では、
前記第１領域を、Ｙ座標が前記第２閾値点に対応するＹ座標以上である第５領域と、Ｙ座標が前記第２閾値点に対応するＹ座標未満である第６領域とに分割し、
前記第３領域を、Ｙ座標が前記第２閾値点に対応するＹ座標以上である第７領域と、Ｙ座標が前記第２閾値点に対応するＹ座標未満である第８領域とに分割し、
前記状態情報を生成する処理では、Ｘ座標とＹ座標との組み合わせのそれぞれと、Ｘ座標とＹ座標との組み合わせのそれぞれに対応する点が前記第２領域、前記第４領域、前記第５領域、前記第６領域、前記第７領域及び前記第８領域のいずれに含まれるかを示す情報とを対応させることにより、前記状態情報を生成する、
ことを特徴とするＣＰＵ動的割当てプログラム。
【０２０１】
（付記１０）
仮想マシンに割当てられたＣＰＵの特定の時間における実行待ち処理数と実行完了処理数とをそれぞれ取得し、
取得した前記実行待ち処理数と前記実行完了処理数とに基づいて、前記特定の時間における前記仮想マシンの処理状態を特定し、
特定した前記処理状態に基づいて前記仮想マシンに対してＣＰＵリソースを追加するか否かを決定する情報処理装置に、特定した前記処理状態を送信する、
処理をコンピュータに実行させることを特徴とするＣＰＵ動的割当てプログラム。
【０２０２】
（付記１１）
複数の仮想マシンから、各仮想マシンに割当てられたＣＰＵの特定の時間における実行待ち処理数と実行完了処理数とに基づく、前記特定の時間における各仮想マシンの処理状態を受信し、
受信した前記処理状態と、前記複数の仮想マシンに割当てるＣＰＵのリソースの空き状況とに基づいて、前記複数の仮想マシンから、前記リソースを追加する仮想マシンを決定する、
処理をコンピュータに実行させることを特徴とするＣＰＵ動的割当てプログラム。
【０２０３】
（付記１２）
複数の仮想マシンから、複数の時間のそれぞれにおけるＣＰＵの実行待ち処理数である第３実行待ち処理数と、前記複数の時間のそれぞれにおけるＣＰＵの実行完了処理数である第３実行完了処理数とを取得し、
ＣＰＵの実行待ち処理数をＸ座標としてＣＰＵの実行完了処理数をＹ座標とする平面上に、取得した前記第３実行待ち処理数と前記第３実行完了処理数との組み合わせのそれぞれに対応する複数の点をプロットし、
前記平面上をＸ軸及びＹ軸に並行な複数の直線によって複数の単位領域に分割し、
Ｘ座標が同じである前記複数の単位領域毎に、前記複数の点が含まれる単位領域であってＹ座標が最大である最大候補単位領域をそれぞれ特定し、
特定した前記最大候補単位領域のうち、Ｙ座標が最大であってＸ座標が最小である最大単位領域を特定し、
プロットした前記複数の点から、前記最大単位領域に対応するＸ座標よりも小さいＸ座標に対応し、前記最大単位領域に最も近い前記最大候補単位領域に含まれる点である限界点を特定し、
プロットした前記複数の点から、前記限界点に対応するＹ座標よりも小さいＹ座標に対応する点である第１閾値点を特定し、
前記平面上においてＹ座標が前記限界点に対応するＹ座標よりも小さい領域を、Ｘ座標が前記第１閾値点に対応するＸ座標未満であり、Ｙ座標が前記第１閾値点に対応するＹ座標未満である第１領域と、Ｘ座標が前記第１閾値点に対応するＸ座標未満であり、Ｙ座標が前記第１閾値点に対応するＹ座標以上である第２領域と、Ｘ座標が前記第１閾値点に対応するＸ座標以上であり、Ｙ座標が前記第１閾値点に対応するＹ座標未満である第３領域と、Ｘ座標が前記第１閾値点に対応するＸ座標以上であり、Ｙ座標が前記第１閾値点に対応するＹ座標以上である第４領域とに分割し、
Ｘ座標とＹ座標との組み合わせのそれぞれと、Ｘ座標とＹ座標との組み合わせのそれぞれに対応する点が前記第１領域、前記第２領域、前記第３領域及び前記第４領域のいずれに含まれるかを示す情報とを対応させることにより、前記状態情報を生成する、
処理をコンピュータに実行させることを特徴とするＣＰＵ動的割当てプログラム。
【０２０４】
（付記１３）
複数の仮想マシンから、各仮想マシンに割当てられたＣＰＵの第１時間における実行待ち処理数である第１実行待ち処理数と、前記ＣＰＵの前記第１時間における実行完了処理数である第１実行完了処理数とをそれぞれ取得する情報取得部と、
取得した前記第１実行待ち処理数と前記第１実行完了処理数とに基づいて、前記第１時間における前記複数の仮想マシンそれぞれの第１処理状態を特定する処理状態特定部と、
特定した前記第１処理状態と、前記複数の仮想マシンに割当てるＣＰＵのリソースの空き状況とに基づいて、前記複数の仮想マシンから、前記リソースを追加する仮想マシンを決定する追加削除判定部と、を有する、
ことを特徴とするＣＰＵ動的割当て装置。
【０２０５】
（付記１４）
複数の仮想マシンから、各仮想マシンに割当てられたＣＰＵの第１時間における実行待ち処理数である第１実行待ち処理数と、前記ＣＰＵの前記第１時間における実行完了処理数である第１実行完了処理数とをそれぞれ取得し、
取得した前記第１実行待ち処理数と前記第１実行完了処理数とに基づいて、前記第１時間における前記複数の仮想マシンそれぞれの第１処理状態を特定し、
特定した前記第１処理状態と、前記複数の仮想マシンに割当てるＣＰＵのリソースの空き状況とに基づいて、前記複数の仮想マシンから、前記リソースを追加する仮想マシンを決定する、
ことを特徴とするＣＰＵ動的割当て方法。
【０２０６】
（付記１５）
仮想マシンに割当てられたＣＰＵの特定の時間における実行待ち処理数と実行完了処理数とをそれぞれ取得する情報取得部と、
取得した前記実行待ち処理数と前記実行完了処理数とに基づいて、前記特定の時間における前記仮想マシンの処理状態を特定する処理状態特定部と、
特定した前記処理状態に基づいて前記仮想マシンに対してＣＰＵリソースを追加するか否かを決定する情報処理装置に、特定した前記処理状態を送信する情報送信部と、を有する、
ことを特徴とするＣＰＵ動的割当て装置。
【０２０７】
（付記１６）
仮想マシンに割当てられたＣＰＵの特定の時間における実行待ち処理数と実行完了処理数とをそれぞれ取得し、
取得した前記実行待ち処理数と前記実行完了処理数とに基づいて、前記特定の時間における前記仮想マシンの処理状態を特定し、
特定した前記処理状態に基づいて前記仮想マシンに対してＣＰＵリソースを追加するか否かを決定する情報処理装置に、特定した前記処理状態を送信する、
ことを特徴とするＣＰＵ動的割当て方法。
【０２０８】
（付記１７）
複数の仮想マシンから、各仮想マシンに割当てられたＣＰＵの特定の時間における実行待ち処理数と実行完了処理数とに基づく、前記特定の時間における各仮想マシンの処理状態を受信する情報受信部と、
受信した前記処理状態と、前記複数の仮想マシンに割当てるＣＰＵのリソースの空き状況とに基づいて、前記複数の仮想マシンから、前記リソースを追加する仮想マシンを決定する追加削除判定部と、を有する、
ことを特徴とするＣＰＵ動的割当て装置。
【０２０９】
（付記１８）
複数の仮想マシンから、各仮想マシンに割当てられたＣＰＵの特定の時間における実行待ち処理数と実行完了処理数とに基づく、前記特定の時間における各仮想マシンの処理状態を受信し、
受信した前記処理状態と、前記複数の仮想マシンに割当てるＣＰＵのリソースの空き状況とに基づいて、前記複数の仮想マシンから、前記リソースを追加する仮想マシンを決定する、
ことを特徴とするＣＰＵ動的割当て方法。
【０２１０】
（付記１９）
複数の仮想マシンから、複数の時間のそれぞれにおけるＣＰＵの実行待ち処理数と実行完了処理数とを取得する情報取得部と、
ＣＰＵの実行待ち処理数をＸ座標としてＣＰＵの実行完了処理数をＹ座標とする平面上に、取得した前記第３実行待ち処理数と前記第３実行完了処理数との組み合わせのそれぞれに対応する複数の点をプロットするグラフ生成部と、
前記平面上をＸ軸及びＹ軸に並行な複数の直線によって複数の単位領域に分割し、Ｘ座標が同じである前記複数の単位領域毎に、前記複数の点が含まれる単位領域であってＹ座標が最大である最大候補単位領域をそれぞれ特定し、特定した前記最大候補単位領域のうち、Ｙ座標が最大であってＸ座標が最小である最大単位領域を特定し、プロットした前記複数の点から、前記最大単位領域に対応するＸ座標よりも小さいＸ座標に対応し、前記最大単位領域に最も近い前記最大候補単位領域に含まれる点である限界点を特定する限界点特定部と、
プロットした前記複数の点から、前記限界点に対応するＹ座標よりも小さいＹ座標に対応する点である第１閾値点を特定する閾値点特定部と、
前記平面上においてＹ座標が前記限界点に対応するＹ座標よりも小さい領域を、Ｘ座標が前記第１閾値点に対応するＸ座標未満であり、Ｙ座標が前記第１閾値点に対応するＹ座標未満である第１領域と、Ｘ座標が前記第１閾値点に対応するＸ座標未満であり、Ｙ座標が前記第１閾値点に対応するＹ座標以上である第２領域と、Ｘ座標が前記第１閾値点に対応するＸ座標以上であり、Ｙ座標が前記第１閾値点に対応するＹ座標未満である第３領域と、Ｘ座標が前記第１閾値点に対応するＸ座標以上であり、Ｙ座標が前記第１閾値点に対応するＹ座標以上である第４領域とに分割し、Ｘ座標とＹ座標との組み合わせのそれぞれと、Ｘ座標とＹ座標との組み合わせのそれぞれに対応する点が前記第１領域、前記第２領域、前記第３領域及び前記第４領域のいずれに含まれるかを示す情報とを対応させた状態情報を生成する情報管理部と、を有する、
ことを特徴とするＣＰＵ動的割当て装置。
【０２１１】
（付記２０）
複数の仮想マシンから、複数の時間のそれぞれにおけるＣＰＵの実行待ち処理数と実行完了処理数とを取得し、
ＣＰＵの実行待ち処理数をＸ座標としてＣＰＵの実行完了処理数をＹ座標とする平面上に、取得した前記第３実行待ち処理数と前記第３実行完了処理数との組み合わせのそれぞれに対応する複数の点をプロットし、
前記平面上をＸ軸及びＹ軸に並行な複数の直線によって複数の単位領域に分割し、
Ｘ座標が同じである前記複数の単位領域毎に、前記複数の点が含まれる単位領域であってＹ座標が最大である最大候補単位領域をそれぞれ特定し、
特定した前記最大候補単位領域のうち、Ｙ座標が最大であってＸ座標が最小である最大単位領域を特定し、
プロットした前記複数の点から、前記最大単位領域に対応するＸ座標よりも小さいＸ座標に対応し、前記最大単位領域に最も近い前記最大候補単位領域に含まれる点である限界点を特定し、
プロットした前記複数の点から、前記限界点に対応するＹ座標よりも小さいＹ座標に対応する点である第１閾値点を特定し、
前記平面上においてＹ座標が前記限界点に対応するＹ座標よりも小さい領域を、Ｘ座標が前記第１閾値点に対応するＸ座標未満であり、Ｙ座標が前記第１閾値点に対応するＹ座標未満である第１領域と、Ｘ座標が前記第１閾値点に対応するＸ座標未満であり、Ｙ座標が前記第１閾値点に対応するＹ座標以上である第２領域と、Ｘ座標が前記第１閾値点に対応するＸ座標以上であり、Ｙ座標が前記第１閾値点に対応するＹ座標未満である第３領域と、Ｘ座標が前記第１閾値点に対応するＸ座標以上であり、Ｙ座標が前記第１閾値点に対応するＹ座標以上である第４領域とに分割し、
Ｘ座標とＹ座標との組み合わせのそれぞれと、Ｘ座標とＹ座標との組み合わせのそれぞれに対応する点が前記第１領域、前記第２領域、前記第３領域及び前記第４領域のいずれに含まれるかを示す情報とを対応させた状態情報を生成する、
ことを特徴とするＣＰＵ動的割当て方法。
【符号の説明】
【０２１２】
１：テスト装置              ２：情報解析装置
２ａ：記憶部                ３：サービス提供装置
４：管理装置                １１：仮想マシン
１２：仮想化ソフトウエア    １３：ハードウエア
３１：仮想マシン            ３２：仮想化ソフトウエア
３３：ハードウエア
【図１】
2018045493.tif 000003
【図２】
2018045493.tif 000004
【図３】
2018045493.tif 000005
【図４】
2018045493.tif 000006
【図５】
2018045493.tif 000007
【図６】
2018045493.tif 000008
【図７】
2018045493.tif 000009
【図８】
2018045493.tif 000010
【図９】
2018045493.tif 000011
【図１０】
2018045493.tif 000012
【図１１】
2018045493.tif 000013
【図１２】
2018045493.tif 000014
【図１３】
2018045493.tif 000015
【図１４】
2018045493.tif 000016
【図１５】
2018045493.tif 000017
【図１６】
2018045493.tif 000018
【図１７】
2018045493.tif 000019
【図１８】
2018045493.tif 000020
【図１９】
2018045493.tif 000021
【図２０】
2018045493.tif 000022
【図２１】
2018045493.tif 000023
【図２２】
2018045493.tif 000024
【図２３】
2018045493.tif 000025
【図２４】
2018045493.tif 000026
【図２５】
2018045493.tif 000027
【図２６】
2018045493.tif 000028
【図２７】
2018045493.tif 000029
【図２８】
2018045493.tif 000030
【図２９】
2018045493.tif 000031
【図３０】
2018045493.tif 000032