JP2018045493A - Cpu動的割当てプログラム、cpu動的割当て装置及びcpu動的割当て方法 - Google Patents

Cpu動的割当てプログラム、cpu動的割当て装置及びcpu動的割当て方法 Download PDF

Info

Publication number
JP2018045493A
JP2018045493A JP2016180395A JP2016180395A JP2018045493A JP 2018045493 A JP2018045493 A JP 2018045493A JP 2016180395 A JP2016180395 A JP 2016180395A JP 2016180395 A JP2016180395 A JP 2016180395A JP 2018045493 A JP2018045493 A JP 2018045493A
Authority
JP
Japan
Prior art keywords
coordinate
information
cpu
execution
virtual machine
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2016180395A
Other languages
English (en)
Inventor
卓 野中
Taku Nonaka
卓 野中
義起 寺井
Yoshiki Terai
義起 寺井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2016180395A priority Critical patent/JP2018045493A/ja
Publication of JP2018045493A publication Critical patent/JP2018045493A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

【課題】仮想マシンに対するリソースの追加を効率的に行うことを可能とするCPU動的割当てプログラム、CPU動的割当て装置及びCPU動的割当て方法を提供する。【解決手段】複数の仮想マシンから、各仮想マシンに割当てられたCPUの第1時間における第1実行待ち処理数と第1実行完了処理数とをそれぞれ取得し、取得した第1実行待ち処理数と第1実行完了処理数とに基づいて、第1時間における複数の仮想マシンそれぞれの第1処理状態を特定し、特定した第1処理状態と、複数の仮想マシンに割当てるCPUのリソースの空き状況とに基づいて、複数の仮想マシンから、リソースを追加する仮想マシンを決定する。【選択図】図8

Description

本発明は、CPU動的割当てプログラム、CPU動的割当て装置及びCPU動的割当て方法に関する。
近年、物理マシンの性能向上に伴い、複数の仮想マシン(VM:Virtual Machine)を1つの物理マシンに集約する仮想化技術の研究が進められている。この仮想化技術は、例えば、仮想化ソフトウエア(以下、ハイパバイザとも呼ぶ)が物理マシンの物理リソースを複数の仮想マシンに割当て、各仮想マシンにインストールされたアプリケーションプログラムによるサービスの提供を可能にする。
上記のような仮想マシンにおいて、仮想マシンの管理を行う管理者(以下、単に管理者とも呼ぶ)は、例えば、各仮想マシンの生成を行う前に、各仮想マシンに割当てるべきCPUのコア等の物理リソース(以下、単にCPUのコアとも呼ぶ)の数を予め決定する。具体的に、管理者は、仮想マシンに対して同時に接続することが予測されるサービスの利用者(以下、単に利用者とも呼ぶ)の数等の見積り値に基づいて、各仮想マシンに割当てるCPUのコアの数等の決定を行う。
そして、利用者に対するサービスの提供開始後、管理者は、例えば、事後的に各仮想マシンの処理状態についての分析を行い、各仮想マシンに割当てたCPUのコアの再配置等を行う。具体的に、管理者は、例えば、単位時間当たりのCPUの実行待ち処理数(以下、単に実行待ち処理数とも呼ぶ)が所定数よりも多くなっていた仮想マシンを特定し、特定した仮想マシンに対してCPUのコアの追加を行う(例えば、特許文献1から3参照)。
国際公開第2015/019538号 特開2014−219977号公報 特表2015−530676号公報
しかしながら、仮想マシンにおいて実行される処理には、例えば、実行時間の大きく異なる複数の処理が混在している場合がある。そのため、管理者は、CPUの実行待ち処理数のみを参照する場合、仮想マシンに対するCPUのコアの追加を効率的に行うことができない場合がある。したがって、管理者は、例えば、CPUの実行待ち処理数のみでなく、各仮想マシンが実行する各処理の処理負担を考慮した上で、CPUのコアを追加する仮想マシンの特定を行うことが好ましい。
そこで、一つの側面では、仮想マシンに対するリソースの追加を効率的に行うことを可能とするCPU動的割当てプログラム、CPU動的割当て装置及びCPU動的割当て方法を提供することを目的とする。
実施の形態の一つの態様によれば、複数の仮想マシンから、各仮想マシンに割当てられたCPUの第1時間における実行待ち処理数である第1実行待ち処理数と、前記CPUの前記第1時間における実行完了処理数である第1実行完了処理数とをそれぞれ取得し、取得した前記第1実行待ち処理数と前記第1実行完了処理数とに基づいて、前記第1時間における前記複数の仮想マシンそれぞれの第1処理状態を特定し、特定した前記第1処理状態と、前記複数の仮想マシンに割当てるCPUのリソースの空き状況とに基づいて、前記複数の仮想マシンから、前記リソースを追加する仮想マシンを決定する、処理をコンピュータに実行させる。
一つの側面によれば、仮想マシンに対するリソースの追加を効率的に行うことを可能とする。
図1は、情報処理システム100の全体構成を示す図である。 図2は、テスト装置1及び情報解析装置2のハードウエア構成を説明する図である。 図3は、サービス提供装置3及び管理装置4のハードウエア構成を説明する図である。 図4は、図2で説明したテスト装置1の機能ブロック図である。 図5は、図2で説明した情報解析装置2の機能ブロック図である。 図6は、図3で説明したサービス提供装置3の機能ブロック図である。 図7は、図3で説明した管理装置4の機能ブロック図である。 図8は、第1の実施の形態におけるCPU動的割当て処理の概略を説明するフローチャート図である。 図9は、第1の実施の形態におけるCPU動的割当て処理の概略を説明する図である。 図10は、第1の実施の形態におけるCPU動的割当て処理の概略を説明する図である。 図11は、第1の実施の形態におけるCPU動的割当て処理の概略を説明する図である。 図12は、第1の実施の形態におけるCPU動的割当て処理の詳細を説明するフローチャートである。 図13は、第1の実施の形態におけるCPU動的割当て処理の詳細を説明するフローチャートである。 図14は、第1の実施の形態におけるCPU動的割当て処理の詳細を説明するフローチャートである。 図15は、第1の実施の形態におけるCPU動的割当て処理の詳細を説明するフローチャートである。 図16は、第1の実施の形態におけるCPU動的割当て処理の詳細を説明するフローチャートである。 図17は、第1の実施の形態におけるCPU動的割当て処理の詳細を説明するフローチャートである。 図18は、第1の実施の形態におけるCPU動的割当て処理の詳細を説明するフローチャートである。 図19は、第1の実施の形態におけるCPU動的割当て処理の詳細を説明するフローチャートである。 図20は、情報格納領域130に蓄積された実行待ち数情報131及び実行完了数情報132の具体例を説明する図である。 図21は、グラフ情報231の具体例である。 図22は、グラフ情報231に情報が含まれる複数の点をプロットした場合の平面を説明する図である。 図23は、グラフ情報231に情報が含まれる複数の点をプロットした場合の平面を説明する図である。 図24は、状態情報234の具体例である。 図25は、優先度情報432の具体例を説明する図である。 図26は、追加削除要求情報433の具体例を説明する図である。 図27は、図3で説明したサービス提供装置3の機能ブロック図である。 図28は、図3で説明した管理装置4の機能ブロック図である。 図29は、第2の実施の形態におけるCPU動的割当て処理を説明するフローチャート図である。 図30は、第2の実施の形態におけるCPU動的割当て処理を説明するフローチャート図である。
[情報処理システムの構成]
図1は、情報処理システム100の全体構成を示す図である。図1に示す情報処理システム100は、例えば、利用者にサービスを提供するための業務システムである。図1に示す情報処理システム100は、テスト装置1と、情報解析装置2と、サービス提供装置3と、管理装置4とを有する。テスト装置1、情報解析装置2、サービス提供装置3及び管理装置4は、それぞれ1台以上の物理マシンによって構成される装置である。
テスト装置1は、例えば、自装置に生成された仮想マシン11a、仮想マシン11b及び仮想マシン11c等(以下、これらを総称して仮想マシン11とも呼ぶ)に、管理者が予め定めたテスト処理を実行させ、テスト処理の実行時における各仮想マシン11の状態を示す各種情報を生成する処理(以下、第1情報生成処理とも呼ぶ)を実行する。第1情報生成処理の詳細については後述する。なお、各仮想マシン11は、管理者からの指示等の受け付けた仮想化ソフトウエア12が、テスト装置1のハードウエア13のCPUのコアを割り当てることによって生成される。
情報解析装置2は、テスト装置1が生成した各種情報を解析し、管理装置4が参照する状態情報2bを生成する処理(以下、情報解析処理とも呼ぶ)を実行する。そして、情報解析装置2は、生成した状態情報2bを記憶部2aに記憶する。情報解析処理の詳細については後述する。
サービス提供装置3は、自装置に生成された仮想マシン31a、仮想マシン31b及び仮想マシン31c等(以下、これらを総称して仮想マシン31とも呼ぶ)に、利用者に対するサービスの提供するためのサービス提供処理を実行させ、サービス提供処理の実行時における各仮想マシン31の状態を示す各種情報を生成する処理(以下、第2情報生成処理とも呼ぶ)を実行する。第2情報生成処理の詳細については後述する。なお、各仮想マシン31は、管理者からの指示等の受け付けた仮想化ソフトウエア32が、ハードウエア33のCPUのコアを割り当てることによって生成される。
管理装置4は、サービス提供装置3が生成した各種情報を参照し、各仮想マシン31にハードウエア33(CPUのコア)の割当てを行うか否か判定するための処理(以下、割当て管理処理とも呼ぶ)を実行する。割当て管理処理の詳細については後述する。
なお、図1に示す情報処理システム100において、例えば、テスト装置1に生成された仮想マシン11の一部が情報解析装置2として動作するものであってもよい。また、図1に示す情報処理システム100において、例えば、サービス提供装置3に生成された仮想マシン31の一部が管理装置4として動作するものであってもよい。さらに、図1に示す情報処理システム100において、例えば、管理装置4が情報解析処理を行うものであってもよい。
上記のような情報処理システム100において、管理装置4は、例えば、各仮想マシン31の生成が行われる前に、各仮想マシン31に割当てるべきCPUのコアの数を予め決定する。具体的に、管理装置4は、仮想マシン31に対して同時に接続することが予測されるサービスの利用者の数等の見積り値に基づいて、各仮想マシン31に割当てるCPUのコアの数等の決定を行う。
そして、利用者に対するサービスの提供開始後、管理装置4は、例えば、事後的に各仮想マシン31の処理状態についての分析を行い、各仮想マシン31に割当てたCPUのコアの再配置等を行う。具体的に、管理装置4は、例えば、単位時間当たりのCPUの実行待ち処理数が所定の数よりも多くなっていた仮想マシン31を特定し、特定した仮想マシン31に対してCPUのコアの追加を行う。
しかしながら、仮想マシン31において実行される処理には、例えば、実行時間の大きく異なる複数の処理が混在している場合がある。そのため、管理装置4は、CPUの実行待ち処理数のみを参照する場合、仮想マシン31に対するCPUのコアの追加を効率的に行うことができない場合がある。したがって、管理装置4は、例えば、CPUの実行待ち処理数のみでなく、各仮想マシン31が実行する各処理の処理負担を考慮した上で、CPUのコアを追加する仮想マシン31の特定を行うことが好ましい。
そこで、本実施の形態における管理装置4は、仮想マシン31のそれぞれから、各仮想マシン31に割当てられたCPUの特定の期間(以下、第1時間とも呼ぶ)における実行待ち処理数(以下、第1実行待ち処理数とも呼ぶ)を取得する。また、管理装置4は、仮想マシン31のそれぞれから、各仮想マシン31に割当てられたCPUの第1時間における実行完了処理数(以下、第1実行完了処理数とも呼ぶ)を取得する。
そして、管理装置4は、取得した第1実行待ち処理数と第1実行完了処理数とに基づいて、第1時間における仮想マシン31のそれぞれの処理状態(以下、第1処理状態とも呼ぶ)を特定する。その後、管理装置4は、特定した第1処理状態と、仮想マシン31のそれぞれに割当てるCPUのコアの空き状況とに基づいて、CPUのコアを追加する仮想マシン31を決定する。
すなわち、例えば、仮想マシン31aにおける第1実行待ち処理数及び第1実行完了処理数と、仮想マシン31bにおける第1実行待ち処理数及び第1実行完了処理数とを比較した場合、第1実行待ち処理数がほぼ同数である一方、第1実行完了処理数が大きく異なる場合があり得る。そのため、管理装置4は、この場合、第1実行待ち処理数だけでなく第1実行完了処理数を取得することで、仮想マシン31a及び仮想マシン31bのうち、より処理負担が大きい仮想マシン31を特定することが可能になる。したがって、管理装置4は、処理負担が大きい仮想マシン31(例えば、仮想マシン31a)に対するCPUのコアの追加を、処理負担が小さい仮想マシン31(例えば、仮想マシン31b)に対するCPUのコアの追加よりも優先して行うことが可能になる。
これにより、管理装置4は、仮想マシン31に対するCPUのコアの追加をより効率的に行うことが可能になる。
[情報処理システムのハードウエア構成]
次に、情報処理システム100のハードウエア構成について説明する。図2は、テスト装置1及び情報解析装置2のハードウエア構成を説明する図である。また、図3は、サービス提供装置3及び管理装置4のハードウエア構成を説明する図である。
テスト装置1は、プロセッサであるCPU101と、メモリ102と、外部インターフェース(I/Oユニット)103と、記憶媒体(ストレージ)104とを有する。各部は、バス105を介して互いに接続される。
記憶媒体104は、記憶媒体104内のプログラム格納領域(図示しない)に、第1情報生成処理を行うためのプログラム110を記憶する。
CPU101は、図2に示すように、プログラム110の実行時に、プログラム110を記憶媒体104からメモリ102にロードし、プログラム110と協働して第1情報生成処理を行う。
記憶媒体104は、例えば、第1情報生成処理を行う際に用いられる情報を記憶する情報格納領域130(以下、記憶部130とも呼ぶ)を有する。外部インターフェース103は、情報解析装置2と通信を行う。
情報解析装置2は、プロセッサであるCPU201と、メモリ202と、外部インターフェース(I/Oユニット)203と、記憶媒体(ストレージ)204とを有する。各部は、バス205を介して互いに接続される。
記憶媒体204は、記憶媒体204内のプログラム格納領域(図示しない)に、情報解析処理を行うためのプログラム210を記憶する。
CPU201は、図2に示すように、プログラム210の実行時に、プログラム210を記憶媒体204からメモリ202にロードし、プログラム210と協働して情報解析処理を行う。
記憶媒体204は、例えば、情報解析処理を行う際に用いられる情報を記憶する情報格納領域230(以下、記憶部230とも呼ぶ)を有する。なお、図1で説明した記憶部2aは、例えば、情報格納領域230に対応する。
外部インターフェース203は、テスト装置1と通信を行う。また、外部インターフェース203は、ネットワークNWを介して管理装置4と通信を行う。
サービス提供装置3は、プロセッサであるCPU301と、メモリ302と、外部インターフェース(I/Oユニット)303と、記憶媒体(ストレージ)304とを有する。各部は、バス305を介して互いに接続される。
記憶媒体304は、記憶媒体304内のプログラム格納領域(図示しない)に、第2情報生成処理を行うためのプログラム310を記憶する。
CPU301は、図3に示すように、プログラム310の実行時に、プログラム310を記憶媒体304からメモリ302にロードし、プログラム310と協働して第2情報生成処理を行う。
記憶媒体304は、例えば、第2情報生成処理を行う際に用いられる情報を記憶する情報格納領域330(以下、記憶部330とも呼ぶ)を有する。また、外部インターフェース303は、管理装置4と通信を行う。
管理装置4は、プロセッサであるCPU401と、メモリ402と、外部インターフェース(I/Oユニット)403と、記憶媒体(ストレージ)404とを有する。各部は、バス405を介して互いに接続される。
記憶媒体404は、記憶媒体404内のプログラム格納領域(図示しない)に、割当て管理処理を行うためのプログラム410を記憶する。
CPU401は、図3に示すように、プログラム410の実行時に、プログラム410を記憶媒体404からメモリ402にロードし、プログラム410と協働して割当て管理処理を行う。
記憶媒体404は、例えば、割当て管理処理を行う際に用いられる情報を記憶する情報格納領域430(以下、記憶部430とも呼ぶ)を有する。
外部インターフェース403は、サービス提供装置3と通信を行う。また、外部インターフェース403は、ネットワークNWを介して情報解析装置2と通信を行う。
[情報処理システムのソフトウエア構成]
次に、情報処理システム100のソフトウエア構成について説明する。図4は、図2で説明したテスト装置1の機能ブロック図である。また、図5は、図2で説明した情報解析装置2の機能ブロック図である。また、図6は、図3で説明したサービス提供装置3の機能ブロック図である。さらに、図7は、図3で説明した管理装置4の機能ブロック図である。
初めに、テスト装置1の機能ブロック図について説明を行う。CPU101は、図4に示すように、プログラム110と協働することにより、テスト実行部111と、事象検知部112と、情報管理部113として動作する。また、情報格納領域130には、図4に示すように、実行待ち数情報131(以下、第3実行待ち処理数とも呼ぶ)と、実行完了数情報132(以下、第3実行完了処理数とも呼ぶ)とが記憶されている。
テスト実行部111は、テスト装置1に生成された各仮想マシン11に、管理者が予め定めたテスト処理を実行させる。
事象検知部112は、各仮想マシン11によるテスト処理の実行中において、管理者が予め定めた所定の事象が発生したことを検知する。所定の事象の具体例については後述する。
情報管理部113は、事象検知部112が所定の事象を検知した場合に、検知した事象に対応するカウンタをカウントアップする。そして、情報管理部113は、各事象に対応するカウンタを参照して、実行待ち数情報131と実行完了数情報132とを生成し、情報格納領域130に記憶する。実行待ち数情報131は、CPUの実行待ちになった処理数を示す単位時間毎の情報である。また、実行完了数情報132は、CPUの実行が完了した処理数を示す単位時間毎の情報である。
次に、情報解析装置2の機能ブロック図について説明を行う。CPU201は、図5に示すように、プログラム210と協働することにより、情報取得部211と、グラフ生成部212と、限界点特定部213と、閾値点特定部214と、情報管理部215として動作する。また、情報格納領域230には、図5に示すように、グラフ情報231と、限界点情報232と、閾値点情報233と、状態情報234とが記憶されている。なお、状態情報234は、例えば、図1等で説明した状態情報2bに対応する。
情報取得部211は、テスト装置1の情報格納領域130にアクセスし、実行待ち数情報131と実行完了数情報132とを取得する。
グラフ生成部212は、同じ単位時間の実行待ち数情報131と実行完了数情報132との組み合わせに対応する複数の点を、実行待ち数情報131をX座標として実行完了数情報132をY座標とする平面上にプロットする際に参照されるグラフ情報231を生成する。そして、グラフ生成部212は、生成したグラフ情報231を情報格納領域230に記憶する。グラフ情報231の具体例については後述する。また、グラフ生成部212は、グラフ情報231に情報が含まれる複数の点を平面上にプロットする。
限界点特定部213は、グラフ生成部212がグラフ情報231に情報が含まれる複数の点を平面上にプロットした場合において、プロットされた複数の点から限界点を特定する。限界点は、後述するように、実行待ち数情報131をX座標として実行完了数情報132をY座標とする平面の分割を行う際に用いられる点である。限界点を特定する際の具体例については後述する。そして、限界点特定部213は、特定した限界点に対応する情報である限界点情報232を情報格納領域230に記憶する。
閾値点特定部214は、プロットした複数の点から、限界点特定部213が特定した限界点に基づいて、第1閾値点を特定する。第1閾値点は、限界点と同様に、実行待ち数情報131をX座標として実行完了数情報132をY座標とする平面の分割を行う際に用いられる点である。第1閾値点を特定する際の具体例については後述する。そして、閾値点特定部214は、特定した第1閾値点に対応する情報である閾値点情報233を情報格納領域230に記憶する。
情報管理部215は、実行待ち数情報131をX座標として実行完了数情報132をY座標とする平面に含まれる領域のうち、Y座標が限界点に対応するY座標よりも小さい領域を、第1領域、第2領域、第3領域及び第4領域に分割する。第1領域は、例えば、X座標が第1閾値点に対応するX座標未満であり、Y座標が第1閾値点に対応するY座標未満である領域である。また、第2領域は、例えば、X座標が第1閾値点に対応するX座標未満であり、Y座標が第1閾値点に対応するY座標以上である領域である。また、第3領域は、X座標が第1閾値点に対応するX座標以上であり、Y座標が第1閾値点に対応するY座標未満である領域である。さらに、第4領域は、X座標が第1閾値点に対応するX座標以上であり、Y座標が第1閾値点に対応するY座標以上である領域である。
そして、情報管理部215は、X座標とY座標との組み合わせのそれぞれと、X座標とY座標との組み合わせのそれぞれに対応する点が第1領域、第2領域、第3領域及び第4領域のいずれに含まれるかを示す情報とを対応させた状態情報234を生成する。その後、情報管理部215は、生成した状態情報234を情報格納領域230に記憶する。状態情報234の具体例については後述する。
次に、サービス提供装置3の機能ブロック図について説明を行う。CPU301は、図6に示すように、プログラム310と協働することにより、サービス提供部311と、事象検知部312と、情報管理部313として動作する。また、情報格納領域330には、図6に示すように、実行待ち数情報331と、実行完了数情報332とが記憶されている。
サービス提供部311は、サービス提供装置3に生成された各仮想マシン31に、利用者に対してサービスを提供するためのサービス提供処理を実行させる。
事象検知部312は、各仮想マシン31による処理の実行中において、所定の事象が発生したことを検知する。
情報管理部313は、事象検知部312が所定の事象を検知した場合に、検知した事象に対応するカウンタをカウントアップする。そして、情報管理部313は、例えば、各事象に対応するカウンタを参照して、実行待ち数情報331と実行完了数情報332とを生成し、情報格納領域330に記憶する。実行待ち数情報331は、実行待ち数情報131と同様に、CPUの実行待ちになった処理数を示す単位時間毎の情報である。また、実行完了数情報332は、実行完了数情報132と同様に、CPUの実行が完了した処理数を示す単位時間毎の情報である。
次に、管理装置4の機能ブロック図について説明を行う。CPU401は、図7に示すように、プログラム410と協働することにより、情報取得部411と、処理状態特定部412と、追加削除判定部413と、情報管理部414として動作する。また、情報格納領域430には、図7に示すように、空きコア情報431と、優先度情報432と、追加削除要求情報433とが記憶されている。
情報取得部411は、情報解析装置2の情報格納領域230に記憶された状態情報234を取得する。また、情報取得部411は、サービス提供装置3の情報格納領域330に記憶された実行待ち数情報331と実行完了数情報332とを取得する。この場合、情報取得部411は、例えば、情報格納領域330に記憶された実行待ち数情報331及び実行完了数情報332のうち、第1時間(管理者が予め定めた時間)に対応する実行待ち数情報331及び実行完了数情報332の取得を行う。
処理状態特定部412は、状態情報234を参照し、例えば、第1時間に対応する実行待ち数情報331と実行完了数情報332との組み合わせに対応する処理状態を、第1処理状態として仮想マシン31毎に特定する。
追加削除判定部413は、処理状態特定部412が特定した第1処理状態と、仮想マシン31に割当てるCPUのコアの空き状況とに基づいて、CPUのコアを追加する仮想マシン31を決定する。具体的に、追加削除判定部413は、各仮想マシン31の処理状態とCPUのコアを追加する際の優先度とを対応付けた優先度情報432を参照し、処理状態特定部412が特定した第1処理状態に対応する優先度を、仮想マシン31毎に特定する。そして、追加削除判定部413は、仮想マシン31に追加するCPUのコアの数が、空きコア情報431が示すCPUのコアの数(仮想マシン31に割り当てられていないCPUのコアの数)に達するまで、優先度が高い仮想マシン31から順に、CPUのコアを追加する仮想マシン31として決定する。優先度情報432の具体例については後述する。
[第1の実施の形態の概略]
次に、第1の実施の形態におけるCPU動的割当て処理の概略について説明を行う。図8は、第1の実施の形態におけるCPU動的割当て処理の概略を説明するフローチャート図である。図9から図11は、第1の実施の形態におけるCPU動的割当て処理の概略を説明する図である。図9から図11を参照しながら図8に示すCPU動的割当て処理について説明を行う。なお、以下、テスト装置1が実行する第1情報生成処理と、情報解析装置2が実行する情報解析処理と、サービス提供装置3が実行する第2情報生成処理と、管理装置4が実行する割当て管理処理とを総称して、単にCPU動的割当て処理とも呼ぶ。
管理装置4は、CPU割当てタイミングまで待機する(S1のNO)。CPU割当てタイミングは、例えば、所定の時間毎(例えば、10分毎)であってよい。そして、CPU割当てタイミングになった場合(S1のYES)、管理装置4は、図10に示すように、仮想マシン31のそれぞれから、各仮想マシン31に割当てられたCPUの第1時間における実行待ち数情報331と実行完了数情報332とを取得する(S2)。以下、実行待ち数情報331と実行完了数情報332とについて説明を行う。
図9は、スレッドの状態遷移を説明する図である。図9に示すように、スレッドが生成された場合、生成されたスレッドの状態は、「スレッド生成」から、CPUによって処理の実行が開始(再開)されるまで待機している状態を示す「CPU実行待ち」に遷移する(以下、これを遷移Aとも呼ぶ)。その後、スレッドの状態は、例えば、「CPU実行待ち」から、CPUによって処理が実行されている状態を示す「CPU実行中」に遷移する(以下、これを遷移Bとも呼ぶ)。そして、例えば、CPUから割り当てられたタイムスライス時間を消費した場合、スレッドの状態は、「CPU実行中」から「CPU実行待ち」に再度遷移する(以下、これを遷移Cとも呼ぶ)。
また、例えば、CPUによる処理の実行中にネットワークやデバイス等とのI/O待ちやスレッドの排他制御によるロック獲得待ち(以下、これらを総称してスレッド実行待ちとも呼ぶ)が発生した場合、スレッドの状態は、「CPU実行中」から、スレッド実行待ちを示す「スレッド実行待ち」に遷移する(以下、これを遷移Dとも呼ぶ)そして、例えば、スレッド実行待ちが解除された場合、スレッドの状態は、「スレッド実行待ち」から「CPU実行待ち」に再度遷移する(以下、これを遷移Eとも呼ぶ)。
さらに、例えば、CPUによる処理の終了等に伴ってスレッドが消滅した場合、消滅したスレッドの状態は、「CPU実行中」から「スレッド消滅」に遷移する(以下、これを遷移Fとも呼ぶ)。
そのため、管理装置4は、S2の処理において、例えば、他の状態から「CPU実行待ち」に対する遷移である遷移A、遷移C及び遷移Eの数の単位時間あたりの合計を、実行待ち数情報331として取得する。また、管理装置4は、S2の処理において、例えば、「CPU実行中」から他の状態への遷移である遷移C、遷移D及び遷移Fの数の単位時間あたりの合計を、実行完了数情報332として取得する。
図8に戻り、管理装置4は、図11に示すように、S2の処理で取得した実行待ち数情報331と実行完了数情報332とに基づいて、第1時間における仮想マシン31のそれぞれの第1処理状態を特定する(S3)。具体的に、管理装置4は、図11に示すように、情報解析装置2の情報格納領域230に記憶された状態情報234を取得する。そして、管理装置4は、取得した状態情報234を参照し、S2の処理で取得した実行待ち数情報331と実行完了数情報332との組み合わせに対応する処理状態を、第1処理状態として仮想マシン31毎に特定する。
すなわち、管理装置4は、実行待ち数情報331のみでなく、実行完了数情報332を考慮して仮想マシン31の第1処理状態を特定する。これにより、管理装置4は、仮想マシン31に対するCPUのコアの追加をより効率的に行うことが可能になる。
そして、管理装置4は、図11に示すように、S3の処理で特定した第1処理状態と、仮想マシン31のそれぞれに割当てるCPUのコアの空き状況とに基づいて、仮想マシン31のそれぞれから、CPUのコアを追加する仮想マシン31を決定する(S4)。
このように、本実施の形態における管理装置4は、仮想マシン31のそれぞれから、各仮想マシン31に割当てられたCPUの第1時間における実行待ち数情報331を取得する。また、管理装置4は、仮想マシン31のそれぞれから、各仮想マシン31に割当てられたCPUの第1時間における実行完了数情報332を取得する。
そして、管理装置4は、取得した実行待ち数情報331と実行完了数情報332とに基づいて、第1時間における仮想マシン31のそれぞれの第1処理状態を特定する。その後、管理装置4は、特定した第1処理状態と、仮想マシン31のそれぞれに割当てるCPUのコアの空き状況とに基づいて、CPUのコアを追加する仮想マシン31を決定する。
これにより、管理装置4は、仮想マシン31に対するCPUのコアの追加をより効率的に行うことが可能になる。
[第1の実施の形態の詳細]
次に、第1の実施の形態におけるCPU動的割当て処理の詳細について説明を行う。図12から図19は、第1の実施の形態におけるCPU動的割当て処理の詳細を説明するフローチャートである。また、図20から図26は、第1の実施の形態におけるCPU動的割当て処理の詳細を説明する図である。図20から図26を参照しながら、図12から図19のCPU動的割当て処理を説明する。
[情報生成処理の詳細]
初めに、CPU動的割当て処理のうち、テスト装置1が実行する情報生成処理について説明を行う。図12から図14は、テスト装置1の情報生成処理について説明するフローチャートである。なお、以下、テスト装置1において仮想マシン11が既に生成されているものとして説明を行う。また、以下、生成された仮想マシン11がテスト装置1のテスト実行部111からの指示に基づく処理を既に行っているものとして説明を行う。
テスト装置1の事象検知部112は、図12に示すように、各仮想マシン11において動作するスレッドの状態が他の状態から「CPU実行待ち」に遷移するまで待機する(S11のNO)。すなわち、事象検知部112は、図9で説明した遷移のうちの遷移A、遷移C及び遷移Eが発生するまで待機する。
そして、スレッドの状態が他の状態から「CPU実行待ち」に遷移した仮想マシン11を検知した場合(S11のYES)、事象検知部112は、遷移のトリガを判定する(S12)。その結果、S11の処理で検知した遷移が遷移Aであって、遷移のトリガが新たなスレッドに生成である場合(S12のスレッド生成)、テスト装置1の情報管理部113は、S11の処理で検知した仮想マシン11に対応するカウンタであって、スレッド生成回数をカウントするためのカウンタ(以下、スレッド生成回数カウンタとも呼ぶ)をカウントアップする(S13)。一方、S11の処理で検知した遷移が遷移Eであって、遷移のトリガがスレッドの実行待ちの解除である場合(S12のスレッド実行待ち解除)、情報管理部113は、S11の処理で検知した仮想マシン11に対応するカウンタであって、スレッド実行待ち解除回数をカウントするためのカウンタ(以下、スレッド実行待ち解除回数カウンタとも呼ぶ)をカウントアップする(S14)。
また、事象検知部112は、図13に示すように、各仮想マシン11において動作するスレッドの状態が「CPU実行中」から他の状態に遷移するまで待機する(S21のNO)。すなわち、事象検知部112は、図9で説明した遷移のうちの遷移C、遷移D及び遷移Fが発生するまで待機する。
そして、スレッドの状態が「CPU実行中」から遷移した仮想マシン11を検知した場合(S21のYES)、事象検知部112は、遷移のトリガと判定する(S22)。その結果、S21の処理で検知した遷移が遷移Cであって、遷移のトリガがスレッドにおける処理の実行中断である場合(S22のスレッド処理中断)、情報管理部113は、S21の処理で検知した仮想マシン11に対応するカウンタであって、スレッド処理中断回数をカウントするためのカウンタ(以下、スレッド処理中断回数カウンタとも呼ぶ)をカウントアップする(S23)。また、S21の処理で検知した遷移が遷移Dであって、遷移のトリガがスレッド実行待ちの発生である場合(S22のスレッド実行待ち発生)、情報管理部113は、S21の処理で検知した仮想マシン11に対応するカウンタであって、遷移のトリガがスレッド実行待ち回数をカウントするためのカウンタ(以下、スレッド実行待ち回数カウンタとも呼ぶ)をカウントアップする(S24)。さらに、S21の処理で検知した遷移が遷移Fであって、遷移のトリガがスレッド消滅である場合(S22のスレッド消滅)、情報管理部113は、S21の処理で検知した仮想マシン11に対応するカウンタであって、スレッド消滅回数をカウントするためのカウンタ(以下、スレッド消滅回数カウンタとも呼ぶ)をカウントアップする(S25)。
なお、図13に示す例において、スレッド処理中断回数カウントのカウントアップは、S23の処理において行われる。そのため、情報管理部113は、S11の処理において、検知した遷移が遷移Cであって、遷移のトリガが遷移のトリガがスレッドにおける処理の実行中断である場合であっても、スレッド処理中断回数カウントのカウントアップを行わない。
また、情報管理部113は、図14に示すように、情報算出タイミングまで待機する(S31のNO)。情報算出タイミングは、例えば、各スレッドがCPUから割り当てられたタイムスライス時間を超える処理時間を要する処理を複数回実行することができる時間毎であってよい。具体的に、情報算出タイミングは、例えば、所定の時間毎(例えば、1分毎)であってよい。以下、情報算出タイミングが1分毎であるものとして説明を行う。
そして、情報算出タイミングになった場合(S31のYES)、情報管理部113は、スレッド生成回数カウンタが示す値と、スレッド処理中断回数カウンタが示す値と、スレッド実行待ち解除回数カウンタが示す値とから、実行待ち数情報131を算出する(S32)。具体的に、例えば、ある仮想マシン11に対応するスレッド生成回数カウンタが示す値が「32(回)」であり、スレッド生成回数カウンタが示す値が「22(回)」であり、スレッド実行待ち解除回数カウンタが示す値が「19(回)」である場合、情報管理部113は、これらの合計値である「73(回)」を算出する。そして、情報管理部113は、例えば、算出した「73(回)」を、実行待ち情報131として情報格納領域130に記憶する。
また、情報管理部113は、この場合、スレッド実行待ち回数カウンタが示す値と、スレッド消滅回数カウンタが示す値と、スレッド処理中断回数カウンタが示す値とから、実行完了数情報132を算出する(S33)。具体的に、例えば、ある仮想マシン11に対応するスレッド実行待ち回数カウンタが示す値が「6(回)」であり、スレッド消滅回数カウンタが示す値が「4(回)」であり、スレッド処理中断回数カウンタが示す値が「22(回)」である場合、情報管理部113は、これらの合計値である「32(回)」を算出する。そして、情報管理部113は、例えば、算出した「32(回)」を、実行完了数情報132として情報格納領域130に記憶する。以下、情報格納領域130に蓄積された実行待ち数情報131及び実行完了数情報132の具体例について説明を行う。
[実行待ち数情報及び実行完了数情報の具体例]
図20は、情報格納領域130に蓄積された実行待ち数情報131及び実行完了数情報132の具体例を説明する図である。なお、以下、仮想マシン11のそれぞれに割当てられたCPUのコアの数が1個であるものとして説明を行う。
図20に示す情報は、各情報を識別する「項番」と、実行待ち数情報131及び実行完了数情報132に対応する仮想マシン11を識別する「VM名」とを項目として有している。また、図20に示す情報は、実行待ち数情報131及び実行完了数情報132に対応する単位時間の開始時間を示す「開始時間」と、実行待ち数情報131及び実行完了数情報132に対応する単位時間の終了時間を示す「終了時間」とを項目として有している。さらに、図20に示す情報は、「VM名」に情報が設定された仮想マシン11に割当てられているCPUのコア数を示す「コア数」と、実行待ち数情報131を示す「実行待ち数」と、実行完了数情報132を示す「実行完了数」とを項目として有している。
具体的に、情報管理部113は、図20に示すように、例えば、「項番」が「1」である情報の「VM名」に「VM−001」を設定し、「開始時間」に「2016/08/12 18:33:00」を設定し、「終了時間」に「2016/08/12 18:33:59」を設定する。また、情報管理部113は、図20に示すように、例えば、「項番」が「1」である情報の「コア数」に「1」を設定し、「実行待ち数」に「73(回)」を設定し、「実行完了数」に「32(回)」を設定する。図20に含まれる他の情報については説明を省略する。
図14に戻り、情報管理部113は、スレッド生成回数カウンタ、スレッド実行待ち解除回数カウンタ、スレッド処理中断回数カウンタ、スレッド実行待ち回数カウンタ及びスレッド消滅回数カウンタをそれぞれ初期化する(S34)。これにより、情報管理部113は、次の単位時間における所定の事象の発生回数をカウントすることが可能になる。
[情報解析処理の詳細]
次に、CPU動的割当て処理のうち、情報解析装置2が実行する情報解析処理について説明を行う。図15は、情報解析装置2の情報解析処理について説明するフローチャートである。
情報解析装置2の情報取得部211は、情報解析タイミングまで待機する(S41のNO)。情報解析タイミングは、情報解析装置2に対して管理者による入力(情報解析処理を開始する旨の入力)があったタイミングであってよい。そして、情報解析タイミングになった場合(S41のYES)、情報取得部211は、テスト装置1の情報格納領域130から、実行待ち数情報131と実行完了数情報132とを取得する(S42)。
その後、情報解析装置2のグラフ生成部212は、S42の処理で取得した実行待ち数情報131と実行完了数情報132との組み合わせのそれぞれに対応するグラフ情報231を生成する(S43)。その後、情報解析装置2の情報管理部215は、グラフ生成部212が生成したグラフ情報231を情報格納領域230に記憶する。以下、グラフ情報231の具体例について説明を行う。
[グラフ情報の具体例]
図21は、グラフ情報231の具体例である。図21に示すグラフ情報231は、グラフ情報231に含まれる各情報を識別する「項番」と、実行待ち数情報131をX座標として実行完了数情報132をY座標とする平面上におけるX座標及びY座標をそれぞれ示す「X座標」及び「Y座標」とを項目として有する。
具体的に、グラフ生成部212は、例えば、図21に示すように、「項番」が「1」である情報の「X座標」に「73」を設定し、「Y座標」に「32」を設定する。すなわち、グラフ生成部212は、図20で説明した情報に含まれる実行待ち数情報131及び実行完了数情報132を参照し、「実行待ち数」に設定された値及び「実行完了数」に設定された値を、「X座標」及び「Y座標」にそれぞれ設定する。図21に含まれる他の情報については説明を省略する。
図15に戻り、情報解析装置2の限界点特定部213は、S43の処理で生成したグラフ情報231から、限界点を示す情報である限界点情報232を生成する(S44)。そして、限界点特定部213は、生成した限界点情報232を情報格納領域230に記憶する。さらに、情報解析装置2の閾値点特定部214は、S43の処理で生成したグラフ情報231とS44の処理で生成した限界点情報232から、第1閾値点を示す情報である閾値点情報233を生成する(S45)。そして、閾値点特定部214は、生成した閾値点情報233を情報格納領域230に記憶する。
すなわち、限界点特定部213及び閾値点特定部214は、S44及びS45の処理において、数多くの実行待ち数情報131及び実行完了数情報132に基づいて限界点及び第1閾値点の特定を行う。そのため、特定された限界点及び第1閾値点は、管理装置4がCPUのコアを追加するか否かの判定を行う際に参照する基準として信頼性が高い情報である。
そのため、管理装置4は、後述するように、S44及びS45の処理において特定された限界点及び第1閾値点を参照し、サービス提供装置3から取得した実行待ち数情報331と実行完了数情報332との組み合わせに対応する点の限界点及び第1閾値点に対する相対位置を特定する。これにより、管理装置4は、サービス提供装置3から取得した実行待ち数情報331及び実行完了数情報332に対応する仮想マシン31にCPUのコアの追加を行うべきか否かの決定を、精度高く行うことが可能になる。以下、限界点及び第1閾値点の詳細について説明を行う。
[限界点及び第1閾値点の詳細]
図20等で説明した実行待ち数情報131は、各仮想マシン11が処理すべき処理数の増加に伴って増加する。これに対し、実行完了数情報132は、各仮想マシン11が処理すべき処理数が所定数になるまでの間、各仮想マシン11が処理すべき処理数の増加に伴って増加するが、各仮想マシン11が処理すべき処理数が所定数以上になった場合、各仮想マシン11が処理すべき処理数の増加に伴って徐々に減少する。これは、各仮想マシン11の処理能力の限界から、実行完了数情報132に上限が存在することを意味する。そのため、各仮想マシン11に対するCPUのコアの追加は、各仮想マシン11の実行完了数情報132が上限に達する前に行われることが好ましい。
そこで、限界点特定部213は、S44の処理において、例えば、実行完了数情報132が上限に達する直前の状態を示す点である限界点を特定し、特定した限界点に対応するX座標及びY座標を含む限界点情報232を生成する。そして、管理装置4は、後述するように、サービス提供装置3から取得した実行待ち数情報331と実行完了数情報332との組み合わせに対応する点のX座標が、限界点情報232に含まれるX座標以上である仮想マシン31の存在を検知した場合に、検知した仮想マシン31に対してCPUのコアを追加すべき旨の判定を行う。
これにより、管理装置4は、後述するように、実行完了数情報332が上限に達して減少し始めている仮想マシン31のみでなく、実行完了数情報332が間もなく上限に達する仮想マシン31についても、CPUのコアの追加を行う旨の判定を行うことが可能になる。
また、管理装置4は、実行完了数情報132が間もなく上限に達する状態にある仮想マシン31を検知することが可能になるため、仮想マシン31に対してCPUのコアを追加するか否かの判定を動的に行うことが可能になる。したがって、管理者は、例えば、各仮想マシン31に割当てる必要があるCPUのコアの数の決定や、事後的に行われる仮想マシン31の処理状態についての分析等を行う必要がなくなる。さらに、管理者は、仮想マシン31が行う処理の処理負担が急激に変化する場合であっても、仮想マシン31に対して状況に応じた数のCPUのコアを割り当てることが可能になる。
その後、情報管理部215は、S45の処理において、S44の処理で生成した限界点情報232から、限界点よりもY座標が小さい点である第1閾値点を示す閾値点情報233を生成する。そして、管理装置4は、後述するように、S44の処理においてCPUに追加を行う旨の判定を行った仮想マシン31に、実行待ち数情報331と実行完了数情報332との組み合わせに対応する点のY座標が、第1閾値点のY座標未満である仮想マシン31が存在するか否かの判定を行う。すなわち、管理装置4は、この場合、S44の処理においてCPUに追加を行う旨の判定を行った仮想マシン31に、実行完了数情報132が上限に達した後、実行完了数情報132が大きく低下した仮想マシン11が存在するか否かの判定を行う。そして、管理装置4は、実行待ち数情報331と実行完了数情報332との組み合わせに対応する点のY座標が、第1閾値点のY座標未満である仮想マシン31の存在を検知した場合、検知した仮想マシン11に対してCPUの追加を優先的に行う必要がある旨の判定を行う。
これにより、管理装置4は、S44の処理においてCPUに追加を行う旨の判定を行った仮想マシン31の中から、より優先してCPUの追加を行う必要がある仮想マシン31の特定を行うことが可能になる。以下、S44及びS45の処理の具体例について説明を行う。
[S44及びS45の処理の具体例]
図22及び図23は、グラフ情報231に情報が含まれる複数の点をプロットした場合の平面を説明する図である。
限界点特定部213は、S44の処理において、実行待ち数情報131をX座標として実行完了数情報133をY座標とする平面(以下、単に平面とも呼ぶ)に、グラフ情報231に情報が含まれる複数の点をプロットする。そして、限界点特定部213は、S44の処理において、例えば、X軸及びY軸に平行な複数の直線によって、平面を複数の単位領域に分割する。
具体的に、限界点特定部213は、平面に各点をプロットした後、例えば、図22に示すように、「X1」から「X10」のいずれか及び「Y1」から「Y10」のいずれかに対応する複数の単位領域に平面を分割する。
また、限界点特定部213は、この場合、図22に示すように、各単位領域内にプロットされた点の数を設定する。具体的に、例えば、「X3」及び「Y8」に対応する単位領域内に40(個)の点がプロットされている場合、限界点特定部213は、図22に示すように、「X3」及び「Y8」に対応する領域に「40」を設定する。
なお、以下、図22に示す例において、例えば、「X1」は、図21で説明したグラフ情報231における「X座標」が「1」から「10」までの範囲に対応するものとする。同様に、例えば、「X2」は、図21で説明したグラフ情報231における「X座標」が「11」から「20」までの範囲に対応するものとする。また、図22に示す例において、例えば、「Y1」は、図21で説明したグラフ情報231における「Y座標」が「1」から「10」までの範囲に対応するものとする。同様に、例えば、「Y2」は、図21で説明したグラフ情報231における「Y座標」が「11」から「20」までの範囲に対応するものとする。
さらに、図22に示す例において、十分な数の点がプロットされていない単位領域は、S44及びS45の処理において処理の対象外であるものとし、「−」が設定されるものとする。具体的に、図22に示す例では、図22に示す例に含まれる全ての単位領域において、プロットされた点の数が10パーセンタイル値以下である単位領域を、処理の対象外とする。同様に、図22に示す例では、図22に示す例においてX座標が同じまたはY座標が同じである10(個)の単位領域のそれぞれにおいて、プロットされた点の数が10パーセンタイル値以下である単位領域を、処理の対象外とする。
そして、限界点特定部213は、S44の処理において、例えば、X座標が同じである単位領域毎に、1つ以上の点が含まれる単位領域であってY座標が最大である単位領域を、最大候補単位領域としてそれぞれ特定する。続いて、限界点特定部213は、例えば、特定した最大候補単位領域のうち、Y座標が最大であってX座標が最小である単位領域を、最大単位領域として特定する。さらに、限界点特定部213は、例えば、特定した最大単位領域に対応するX座標よりも小さいX座標に対応し、最大単位領域に最も近い最大候補単位領域に含まれる点を、限界点として特定する。
具体的に、図22に示す例において、例えば、「X1」に対応する単位領域のうち、1つ以上の点が含まれる単位領域であってY座標が最大である単位領域は、「X1」及び「Y5」に対応する単位領域である。同様に、図22に示す例において、例えば、「X2」に対応する単位領域のうち、1つ以上の点が含まれる単位領域であってY座標が最大である単位領域は、「X2」及び「Y7」に対応する単位領域である。そのため、限界点特定部213は、最大候補単位領域として、「X1」及び「Y5」に対応する単位領域、「X2」及び「Y7」に対応する単位領域及び「X3」及び「Y9」に対応する単位領域等をそれぞれ特定する。
そして、限界点特定部213は、この場合、特定した最大候補単位領域のうち、Y座標が最大であってX座標が最小である「X3」及び「Y9」に対応する単位領域を、最大単位領域として特定する。さらに、限界点特定部213は、「X3」及び「Y9」に対応する単位領域に対応するX座標よりも小さいX座標に対応し、「X3」及び「Y9」に対応する単位領域に最も近い最大候補単位領域である「X2」及び「Y7」に対応する単位領域に含まれる点を、限界点として特定する。
ここで、「X2」及び「Y7」に対応する領域には、「10」が設定されている。すなわち、図22に示す例では、「X2」及び「Y7」に対応する領域に含まれる点の数が「1」に収束されていない。そのため、限界点特定部213は、この場合、例えば、平面をさらに小さい単位領域に分割した場合におけるS44の処理を行う。具体的に、限界点特定部213は、例えば、図23に示すように、例えば、「X2」から「X3」のいずれか及び「Y7」から「Y9」のいずれかに対応する単位領域を、さらに小さい単位領域に分割した場合におけるS44の処理を行う。
なお、図23に示す例において、例えば、「X11」は、図21で説明したグラフ情報231における「X座標」が「11」から「12」までの範囲に対応する。同様に、例えば、「X12」は、図21で説明したグラフ情報231における「X座標」が「13」から「14」までの範囲に対応する。また、図23に示す例において、例えば、「Y11」は、図21で説明したグラフ情報231における「Y座標」が「61」から「63」までの範囲に対応する。同様に、例えば、「Y12」は、図21で説明したグラフ情報231における「Y座標」が「64」から「66」までの範囲に対応する。
具体的に、図23に示す例において、例えば、「X12」に対応する単位領域のうち、1つ以上の点が含まれる単位領域であってY座標が最大である単位領域は、「X12」及び「Y12」に対応する単位領域である。同様に、図23に示す例において、例えば、「X13」に対応する単位領域のうち、1つ以上の点が含まれる単位領域であってY座標が最大である単位領域は、「X13」及び「Y13」に対応する単位領域である。そのため、限界点特定部213は、最大候補単位領域として、「X12」及び「Y12」に対応する単位領域、「X13」及び「Y13」に対応する単位領域及び「X14」及び「Y14」に対応する単位領域等をそれぞれ特定する。
そして、限界点特定部213は、この場合、特定した最大候補単位領域のうち、Y座標が最大であってX座標が最小である「X17」及び「Y18」に対応する単位領域を、最大単位領域として特定する。さらに、限界点特定部213は、「X17」及び「Y18」に対応する単位領域に対応するX座標よりも小さいX座標に対応し、「X17」及び「Y18」に対応する単位領域に最も近い最大候補単位領域である「X16」及び「Y17」に対応する単位領域に含まれる点を、限界点として特定する。
ここで、「X16」と「Y17」とに対応する領域には「1」が設定されている。そのため、情報管理部215は、「X16」と「Y17」とに対応する領域に含まれる点を限界点として特定し、特定した限界点に対応する情報を限界点情報232として生成する。具体的に、情報管理部215は、この場合、例えば、「X座標」が「31」であって「Y座標」が「79」である点を示す情報を、限界点情報232として生成し、情報格納領域230に記憶する(S44)。
その後、閾値点特定部214は、S45の処理において、例えば、Y座標が限界点情報232に含まれるY座標未満である領域を、X軸に並行な直線によって均等に複数の領域に分割する。そして、閾値点特定部214は、例えば、分割した複数の領域毎に、各領域に含まれる点の数を特定する。続いて、閾値点特定部214は、例えば、限界点を含む領域に含まれる点の数に対する、各領域に含まれる点の数の割合が所定の閾値(例えば、0.8)以下である複数の領域のうち、Y座標が最大である領域(以下、特定の領域とも呼ぶ)を特定する。さらに、閾値点特定部214は、例えば、X座標が限界点と同じであり、Y座標が特定の領域に含まれる点を第1閾値点として特定し、特定した第1閾値点に対応する情報を閾値点情報233として生成する。
具体的に、閾値点特定部214は、この場合、例えば、「X座標」が「31」であって「Y座標」が「64」である点を示す情報を閾値点情報233として生成し、情報格納領域230に記憶する(S45)。
図15に戻り、情報管理部215は、S44の処理で生成した限界点情報232と、S45の処理で算出した閾値点情報233とから、状態情報234を生成する(S46)。以下、状態情報134の具体例について説明を行う。
[状態情報の具体例]
図24は、状態情報234の具体例である。図24に示す状態情報234は、状態情報234に含まれる各情報を識別する「項番」と、X座標の範囲を示す「X座標の範囲」と、Y座標の範囲を示す「Y座標の範囲」と、各仮想マシン11の処理状態を示す「処理状態」とを項目として有する。
具体的に、情報管理部215は、「項番」が「1」である情報の「X座標の範囲」に、原点のX座標から第1閾値点のX座標までの範囲である「0−31」を設定し、「Y座標の範囲」に、原点のX座標から第1閾値点のY座標までの範囲である「0−64」を設定する。そして、情報管理部215は、「項番」が「1」である情報の「処理状態」に「状態A」を設定する。
また、情報管理部215は、「項番」が「2」である情報の「X座標の範囲」に、原点のX座標から第1閾値点のX座標までの範囲である「0−31」を設定し、「Y座標の範囲」に、第1閾値点のY座標から限界点のY座標までの範囲である「64−79」を設定する。そして、情報管理部215は、「項番」が「2」である情報の「処理状態」に「状態B」を設定する。
また、情報管理部215は、「項番」が「3」である情報の「X座標の範囲」に、第1閾値点のX座標よりも大きい範囲である「31−」を設定し、「Y座標の範囲」に、原点のY座標から第1閾値点のY座標までの範囲である「0−64」を設定する。そして、情報管理部215は、「項番」が「1」である情報の「処理状態」に「状態C」を設定する。
さらに、情報管理部215は、「項番」が「4」である情報の「X座標の範囲」に、第1閾値点のX座標よりも大きい範囲である「31−」を設定し、「Y座標の範囲」に、第1閾値点のY座標から限界点のY座標までの範囲である「64−79」を設定する。そして、情報管理部215は、「項番」が「4」である情報の「処理状態」に「状態D」を設定する。
これにより、管理装置4は、後述するように、情報管理部215が生成した状態情報234を参照することで、仮想マシン31にCPUのコアを追加するか否かの判断を行うことが可能になる。
[サービス提供処理の詳細]
次に、CPU動的割当て処理のうち、サービス提供装置3が実行するサービス提供処理について説明を行う。図16は、サービス提供装置3のサービス提供処理について説明するフローチャートである。なお、以下、サービス提供装置3において複数の仮想マシン31が既に生成されているものとして説明を行う。また、以下、生成された仮想マシン31がサービス提供装置3のサービス提供部311からの指示に基づく処理を既に行っているものとして説明を行う。
サービス提供装置3の事象検知部312は、図12及び図13で説明したテスト装置1の事象検知部112と同様の処理を行う。すなわち、事象検知部312は、スレッドの状態が他の状態から「CPU実行待ち」に遷移した仮想マシン31を検知した場合(図12のS11のYES)、スレッド生成回数カウンタまたはスレッド実行待ち解除回数カウンタのいずれかをカウントアップする(図12のS13、S14)。また、事象検知部312は、スレッドの状態が「CPU実行中」から遷移した仮想マシン31を検知した場合(図13のS21のYES)、スレッド処理中断回数カウンタ、スレッド実行待ち回数カウンタまたはスレッド消滅回数カウンタのいずれかをカウントアップする(図13のS23、S24、S25)。
一方、情報管理部313は、図16に示すように、情報算出タイミングまで待機する(S111のNO)。情報算出タイミングは、例えば、各スレッドがCPUから割り当てられたタイムスライス時間を超える処理時間を要する処理を複数回実行することができる時間毎であってよい。具体的に、情報算出タイミングは、例えば、所定の時間毎(例えば、1分毎)であってよい。以下、情報算出タイミングが1分毎であるものとして説明を行う。
そして、情報算出タイミングになった場合(S111のYES)、情報管理部313は、スレッド生成回数カウンタが示す値と、スレッド処理中断回数カウンタが示す値と、スレッド実行待ち解除回数カウンタが示す値とから、実行待ち数情報331を算出する(S112)。そして、情報管理部113は、例えば、算出した実行待ち情報131を情報格納領域130に記憶する。
また、情報管理部313は、この場合、スレッド実行待ち回数カウンタが示す値と、スレッド消滅回数カウンタが示す値と、スレッド処理中断回数カウンタが示す値とから、実行完了数情報332を算出する(S113)。そして、情報管理部113は、例えば、算出した実行完了数情報132を情報格納領域130に記憶する。
その後、情報管理部313は、スレッド生成回数カウンタ、スレッド実行待ち解除回数カウンタ、スレッド処理中断回数カウンタ、スレッド実行待ち回数カウンタ及びスレッド消滅回数カウンタをそれぞれ初期化する(S114)。
[割当て管理処理の詳細]
次に、CPU動的割当て処理のうち、管理装置4が実行する割当て管理処理について説明を行う。図17から図19は、管理装置4の割当て管理処理について説明するフローチャートである。
管理装置4の情報取得部411は、図17に示すように、状態判定タイミングになるまで待機する(S121のNO)。状態判定タイミングは、例えば、所定の時間毎(例えば、10分毎)であってよい。なお、以下、仮想マシン31毎に状態判定タイミングが異なるものとして説明を行う。すなわち、以下、S121からS127の処理が仮想マシン31毎に行われるものとして説明を行う。
そして、状態判定タイミングになった場合(S121のYES)、情報取得部411は、情報解析装置2の情報格納領域230から、状態情報234を取得する(S122)。また、情報取得部411は、この場合、サービス提供装置3の情報格納領域330から、実行待ち数情報331と実行完了数情報332とを取得する(S123)。具体的に、情報取得部411は、例えば、S121の処理において状態判定タイミングになった仮想マシン31に対応する実行待ち数情報331と実行完了数情報332との取得を行う。
その後、管理装置4の処理状態特定部412は、S122の処理及びS123の処理で取得した情報から、第1時間における仮想マシン31の第1処理状態を特定する(S124)。
具体的に、処理状態特定部412は、例えば、第1時間における実行待ち数情報331及び実行完了数情報332として「42」及び「51」をそれぞれ取得した場合、図24で説明した状態情報234を参照し、「X座標の範囲」及び「Y座標の範囲」に「42」及び「51」がそれぞれ含まれる情報として「項番」が「3」である情報を特定する。そして、処理状態特定部412は、この場合、「項番」が「3」である情報の「処理状態」に設定された情報である「状態C」を特定する。
さらに、処理状態特定部412は、S122の処理及びS123の処理で取得した情報から、第1時間よりも後の特定の期間(以下、第2時間とも呼ぶ)における仮想マシン31の処理状態(以下、第2処理状態とも呼ぶ)を特定する(S125)。
すなわち、処理状態特定部412は、仮想マシン31のそれぞれについて、例えば、2つの異なる時間における処理状態を特定する。そして、管理装置4は、後述するように、2つの異なる時間における処理状態から、仮想マシン31にCPUのコアを追加するか否かの判定を行う。これにより、管理装置4は、仮想マシン31のそれぞれにおける処理状態の推移に基づいて、仮想マシン31にCPUのコアを追加するか否かの判定を行うことが可能になる。そのため、管理装置4は、仮想マシン31にCPUのコアを追加するか否かの判定をより精度高く行うことが可能になる。なお、以下、第2時間における実行待ち数情報331及び実行完了数情報332を、それぞれ第2実行待ち処理数及び第2実行完了処理数とも呼ぶ。
そして、管理装置4の追加削除判定部413は、S122等で情報の取得を行った仮想マシン31がCPUのコアの追加が必要である仮想マシンであるか否かを判定する(S126)。具体的に、追加削除判定部413は、優先度情報432を参照し、S122等で情報の取得を行った仮想マシン31がCPUのコアの追加が必要である仮想マシンであるか否かの判定を行う。以下、優先度情報432の具体例について説明を行う。
[優先度情報の具体例]
図25は、優先度情報432の具体例を説明する図である。図25に示す優先度情報432は、優先度情報432に含まれる各情報を識別する「項番」と、第1処理状態を示す「第1時間の処理状態」と、第2処理状態を示す「第2時間の処理状態」とを項目として有している。また、図25に示す優先度情報432は、CPUのコアを追加すべきか否かを示す「コア追加要否」と、CPUのコアを追加する際の優先度を示す「優先度」を項目として有している。「コア追加要否」には、CPUのコアを追加すべき旨を示す「○」、または、CPUのコアの追加をすべきでない旨を示す「×」が設定されている。なお、「コア追加要否」に「×」が設定されている場合、「優先度」には、優先度が設定されていないことを示す「−」が設定される。
具体的に、図25に示す優先度情報432において、「項番」が「1」である情報には、「第1時間の処理状態」として「状態A」が設定され、「第2時間の処理状態」として「状態A」が設定され、「コア追加要否」として「×」が設定され、「優先度」として「−」が設定されている。また、図25に示す優先度情報432において、「項番」が「3」である情報には、「第1時間の処理状態」として「状態A」が設定され、「第2時間の処理状態」として「状態C」が設定され、「コア追加要否」として「○」が設定され、「優先度」として「3」が設定されている。図25に含まれる他の情報については説明を省略する。
そのため、追加削除判定部413は、S126の処理において、例えば、S124の処理及びS125の処理において特定された第1処理状態及び第2処理状態がそれぞれ「状態B」及び「状態D」である場合、図25で説明した優先度情報432における「項番」が「8」である情報を参照する。そして、「項番」が「8」である情報の「コア追加要否」には「○」が設定されているため、追加削除判定部413は、S122の処理及びS123の処理において取得した情報に対応する仮想マシン31に、CPUのコアを追加すべきである旨の判定を行う。
なお、仮想マシン31の処理状態が「状態A」または「状態B」である場合とは、例えば、その仮想マシン31に対応する実行待ち数情報331と実行完了数情報332との組み合わせに対応する点のX座標が、限界点(第1閾値点)のX座標未満である場合である。一方、仮想マシン31の処理状態が「状態C」または「状態D」である場合とは、例えば、その仮想マシン31に対応する実行待ち数情報331と実行完了数情報332との組み合わせに対応する点のX座標が、限界点(第1閾値点)のX座標以上である場合である。
そのため、管理者は、図25に示す優先度情報432に示すように、例えば、「第2時間に対応する処理状態」が「状態C」及び「状態D」である情報の「コア追加要否」には、「○」を設定する。一方、管理者は、図25に示す優先度情報432に示すように、例えば、「第1時間に対応する処理状態」が「状態C」及び「状態D」であったが、「第2時間に対応する処理状態」が「状態C」及び「状態D」でない情報の「コア追加要否」には、「−」を設定する。
さらに、仮想マシン31の処理状態が「状態C」である場合とは、仮想マシン31の処理状態が「状態D」である場合と比較して、実行している処理数が低下している状態である。そのため、管理者は、例えば、処理状態が「状態C」である仮想マシン31に対して、処理状態が「状態D」である仮想マシン31よりも優先してCPUのコアを追加する旨の判断をする。そして、管理者は、この場合、図25に示す優先度情報432に示すように、例えば、「第2時間に対応する処理状態」が「状態C」である情報の「優先度」に、「第2時間に対応する処理状態」が「状態D」である情報の「優先度」よりも高い数値を設定する。
図17に戻り、S122等で情報の取得を行った仮想マシン31がCPUのコアの追加が必要である仮想マシン31であると判定した場合(S126のYES)、管理装置4の情報管理部414は、S122の処理及びS123の処理で情報を取得した仮想マシン31を示す情報を、追加削除要求情報433に追加する(S127)。そして、情報管理部414は、情報を追加した追加削除要求情報433を情報格納領域430に記憶する。一方、S122等で情報の取得を行った仮想マシン31がCPUのコアの追加が必要でない仮想マシン31であると判定した場合(S126のNO)、情報管理部414は、S127の処理を行わない。以下、追加削除要求情報433の具体例について説明を行う。
[追加削除要求情報の具体例]
図26は、追加削除要求情報433の具体例を説明する図である。図26に示す追加削除要求情報433は、追加削除要求情報433に含まれる各情報を識別する「項番」と、情報管理部414が情報の追加を行った日時である「受付日時」とを項目として有する。また、図26に示す追加削除要求情報433は、追加または削除の対象である仮想マシン31を識別する「VM名」と、各情報の種別を示す「要求種別」とを項目として有する。「要求種別」には、仮想マシン31の追加要求に関する情報であることを示す「追加」、または、仮想マシン31の削除要求に関する情報であることを示す「削除」が設定される。さらに、図26に示す追加削除要求情報433は、図25で説明した優先度情報432と同じ項目である「第1時間の処理状態」と、「第2時間の処理状態」と、「優先度」とを項目として有する。なお、「要求種別」に「削除」が設定される場合、「第1時間の処理状態」、「第2時間の処理状態」及び「優先度」には「−」が設定される。
具体的に、図26に示す追加削除要求情報433において、「項番」が「1」である情報には、「受付日時」として「2016/08/12 19:07:23」が設定され、「VM名」として「VM−003」が設定され、「要求種別」として「追加」が設定されている。また、「項番」が「1」である情報には、「第1時間の処理状態」として「状態A」が設定され、「第2時間の処理状態」として「状態C」が設定され、「優先度」として「3」が設定されている。また、図26に示す追加削除要求情報433において、「項番」が「3」である情報には、「受付日時」として「2016/08/12 19:08:15」が設定され、「VM名」として「VM−001」が設定され、「要求種別」として「削除」が設定されている。また、「項番」が「3」である情報において、「第1時間の処理状態」、「第2時間の処理状態」及び「優先度」には「−」が設定されている。図26に含まれる他の情報については説明を省略する。
なお、情報管理部414は、例えば、仮想マシン31のぞれぞれのCPUの使用率を定期的に取得し、CPUの使用率が所定の閾値(例えば、20(%))を下回った仮想マシン31の存在する場合に、「要求種別」が「削除」である情報を追加削除要求情報433に追加するものであってよい。
図18に戻り、追加削除判定部413は、追加削除判定タイミングまで待機する(S131のNO)。追加削除判定タイミングは、例えば、所定の時間毎(例えば、10分毎)であってよい。そして、追加削除判定タイミングになった場合(S131のYES)、追加削除判定部413は、情報格納領域430から追加削除要求情報433を取得する(S132)。
そして、追加削除判定部413は、S132の処理で取得した追加削除要求情報433に、「要求種別」に「削除」が設定された情報(以下、削除要求とも呼ぶ)が存在するか否かを判定する(S133)。その結果、削除要求が存在すると判定した場合(S133のYES)、追加削除判定部413は、削除要求に対応するCPUのコアの削除を指示する(S134)。
具体的に、図26で説明した追加削除要求情報433において、「項番」が「3」である情報の「要求種別」に設定された情報は「削除」である。そのため、追加削除判定部413は、この場合、「項番」が「3」である情報の「VM名」に設定された情報である「VM−001」のCPUのコアを1つ削除する旨の指示を行う。
その後、追加削除判定部413は、情報格納領域440に記憶された空きコア情報431に、S134の処理で削除を指示したCPUのコアの数を加算する(S135)。その後、追加削除判定部413は、CPUのコアの数を加算した空きコア情報431を情報格納領域440に記憶する。
具体的に、情報格納領域440に記憶された空きコア情報431が示す値が「5」であり、S134において削除する旨の指示が行われたCPUのコアの数が「1」である場合、追加削除判定部413は、新たな空きコア情報431を「6」に決定する。
一方、削除要求が存在しないと判定した場合(S133のNO)、追加削除判定部413等は、S134の処理及びS135の処理を行わない。
続いて、追加削除判定部413は、図19に示すように、S132の処理で取得した追加削除要求情報433に、「要求種別」に「追加」が設定された情報(以下、追加要求とも呼ぶ)が存在するか否かを判定する(S141)。具体的に、追加削除判定部413は、S132の処理で取得した追加削除要求情報433に含まれる追加要求のうち、後述するS143の処理がまだ行われていない追加要求が存在するか否かの判定を行う。その結果、追加要求が存在すると判定した場合(S141のYES)、追加削除判定部413は、空きコアが存在するか否かを判定する(S142)。具体的に、追加削除判定部413は、この場合、情報格納領域440に記憶された空きコア情報431が1以上であるか否かを判定する。
そして、空きコアが存在すると判定した場合(S142のYES)、追加削除判定部413は、情報格納領域430に記憶された優先度情報432を参照し、追加要求に対応する仮想マシン31のうち、優先度が最も高い仮想マシン31に対してCPUのコアの追加を指示する(S143)。
具体的に、図26で説明した追加削除要求情報433において、「項番」が「1」、「2」及び「4」である情報の「要求種別」に設定された情報は「追加」である。そして、「項番」が「1」、「2」及び「4」である情報の「優先度」には、それぞれ「3」、「2」及び「3」が設定されている。そのため、追加削除判定部413は、この場合、「項番」が「2」である情報(「優先度」に「2」が設定された情報)の「VM名」に設定された情報である「VM−014」のCPUのコアを1つ追加する旨の指示を行う。
なお、追加削除判定部413は、S143の処理において、「優先度」に同じ値が設定された仮想マシン31が複数存在する場合、例えば、第1時間における実行待ち数情報131と実行完了数情報132との組み合わせに対応する点のX座標及びY座標と、第2時間における実行待ち数情報131と実行完了数情報132との組み合わせに対応する点のX座標及びY座標との距離の差が大きい仮想マシン31を優先するものであってよい。
さらに、追加削除判定部413は、情報格納領域440に記憶された空きコア情報431から、「1」を減算する(S144)。具体的に、情報格納領域440に記憶された空きコア情報431が示す値が「6」である場合、追加削除判定部413は、新たな空きコア情報431が示す値を「5」に更新する。その後、追加削除判定部413は、S141以降の処理を再度行う。
一方、S141の処理において追加要求が存在しないと判定した場合(S141のNO)、または、S142の処理において空きコアが存在しないと判定した場合(S142のNO)、追加削除判定部413は、S131以降の処理を再度行う。
このように、本実施の形態における管理装置4は、仮想マシン31のそれぞれから、各仮想マシン31に割当てられたCPUの第1時間における実行待ち数情報331を取得する。また、管理装置4は、仮想マシン31のそれぞれから、各仮想マシン31に割当てられたCPUの第1時間において実行が完了した処理数を示す実行完了数情報332を取得する。
そして、管理装置4は、取得した実行待ち数情報331と実行完了数情報332とに基づいて、第1時間における仮想マシン31のそれぞれの第1処理状態を特定する。その後、管理装置4は、特定した第1処理状態と、仮想マシン31のそれぞれに割当てるCPUのコアの空き状況とに基づいて、CPUのコアを追加する仮想マシン31を決定する。
これにより、管理装置4は、仮想マシン31に対するCPUのコアの追加をより効率的に行うことが可能になる。
[S45の処理の他の実施例]
次に、S45の処理における他の実施例について説明を行う。情報解析装置2の閾値点特定部214は、S45の処理において、第1閾値点に加えて、第1閾値点に対応する実行完了数情報132よりも小さい実行完了数情報132に対応する点(以下、第2閾値点)を特定するものであってもよい。
この場合、情報解析装置2の情報管理部215は、第1領域を、Y座標が第2閾値点に対応するY座標以上である領域(以下、第5領域とも呼ぶ)と、Y座標が第2閾値点に対応するY座標未満である領域(以下、第6領域とも呼ぶ)とに分割する。また、情報管理部215は、第3領域を、Y座標が第2閾値点に対応するY座標以上である領域(以下、第7領域とも呼ぶ)と、Y座標が第2閾値点に対応するY座標未満である領域(以下、第8領域とも呼ぶ)とに分割する。その後、情報管理部215は、X座標とY座標との組み合わせと、X座標とY座標との組み合わせに対応する点が第2領域、第4領域、第5領域、第6領域、第7領域及び第8領域のいずれに含まれるかを示す情報とを対応させることにより、状態情報234を生成する。
なお、管理者は、この場合、第2領域、第4領域、第5領域、第6領域、第7領域及び第8領域の情報が含まれる優先度情報432を予め生成する。
これにより、管理装置4は、仮想マシン31に対してCPUのコアを追加するか否かの判定を、より精度高く行うことが可能になる。
[仮想マシンに割当てられているCPUのコアの数が2以上である場合の処理]
次に、サービス提供装置3で動作する仮想マシン31に割当てられているCPUのコアの数が2以上である場合の処理について説明を行う。
テスト装置1で動作する仮想マシン11に割当てられているCPUのコアの数が1つである場合、情報解析装置2の限界点特定部213及び閾値点特定部214は、CPUのコアの数が1つである場合に対応する限界点情報232及び閾値点情報233を生成する。そのため、例えば、サービス提供装置3で動作する仮想マシン31に割当てられているCPUのコアの数が2以上である場合、管理装置4は、限界点情報232及び閾値点情報233から生成された情報である状態情報234をそのまま参照することができない。
そこで、限界点特定部213は、S44の処理において、例えば、原点から限界点までのX座標及びY座標の変化量を定数倍した複数の情報を、予め限界点情報232に含めるものであってよい。すなわち、限界点特定部213は、例えば、仮想マシン31に割当てられているCPUのコアの数が2の場合や3の場合に対応する限界点を示す情報を、限界点情報232に予め含める。同様に、閾値点特定部214は、例えば、仮想マシン31に割当てられているCPUのコアの数が2の場合や3の場合に対応する第1閾値点を示す情報を、閾値点情報233に予め含める。そして、情報解析装置2の情報管理部215は、例えば、限界点情報232及び閾値点情報233に情報が含まれる限界点及び第1閾値点のそれぞれに対応する状態情報234をそれぞれ生成する。
これにより、管理装置4は、割当てられているCPUのコアの数が2以上である仮想マシン31が存在する場合であっても、仮想マシン31に対してCPUのコアを追加するか否かの判定を、より精度高く行うことが可能になる。
[第2の実施の形態]
次に、第2の実施の形態におけるCPU動的割当て処理について説明を行う。第2の実施の形態におけるサービス提供装置3は、第1の実施の形態において管理装置4が行っていた割当て管理処理の一部を管理装置4に代わって行う。これにより、管理装置4は、割当て管理処理の実行に伴う処理負担をサービス提供装置3に分担させることが可能になる。なお、以下、第1の実施の形態と処理の内容が異なるサービス提供装置3及び管理装置4についてのみ説明を行う。また、以下、サービス提供装置3及び管理装置4が行う処理のうち、第1の実施の形態と処理の内容が異なる処理についてのみ説明を行う。
[情報処理システムのソフトウエア構成]
初めに、第2の実施の形態における情報処理システム100のソフトウエア構成について説明する。図27は、図3で説明したサービス提供装置3の機能ブロック図である。また、図28は、図3で説明した管理装置4の機能ブロック図である。
初めに、サービス提供装置3の機能ブロック図について説明を行う。第2の実施の形態におけるCPU301は、図27に示すように、プログラム310と協働することにより、第1の実施の形態で説明したサービス提供部311と、事象検知部312と、情報管理部313とに加えて、情報取得部314と、処理状態特定部315と、情報送信部316としても動作する。
情報取得部314は、第1の実施の形態における情報取得部411と同様に、情報解析装置2の情報格納領域230に記憶された状態情報234を取得する。また、情報取得部314は、第1の実施の形態における情報取得部411と同様に、サービス提供装置3の情報格納領域330に記憶された実行待ち数情報331と実行完了数情報332とを取得する。
処理状態特定部315は、第1の実施の形態における処理状態特定部412と同様に、情報取得部314が取得した状態情報234を参照する。そして、処理状態特定部315は、第1の実施の形態における処理状態特定部412と同様に、例えば、情報取得部314が取得した実行待ち数情報331と実行完了数情報332との組み合わせに対応する処理状態を、第1処理状態として仮想マシン31毎に特定する。
情報送信部316は、例えば、処理状態特定部315が特定した仮想マシン31毎の第1処理状態を、管理装置4に送信する。
次に、管理装置4の機能ブロック図について説明を行う。第2の実施の形態におけるCPU401は、図28に示すように、プログラム410と協働することにより、第1の実施の形態で説明した追加削除判定部413と、情報管理部414とに加えて、情報受信部415としても動作する。なお、第2の実施の形態におけるCPU401は、第1の実施の形態で説明した情報取得部411及び処理状態特定部412としては動作しない。
情報受信部415は、サービス提供装置3の情報送信部316が送信した仮想マシン31毎の第1処理状態を受信する。
[第2の実施の形態におけるサービス提供処理の詳細]
次に、第2の実施の形態におけるCPU動的割当て処理について説明する。図29及び図30は、第2の実施の形態におけるCPU動的割当て処理を説明するフローチャート図である。
初めに、第2の実施の形態におけるCPU動的割当て処理のうち、サービス提供装置3が実行するサービス提供処理について説明を行う。図29は、サービス提供装置3のサービス提供処理について説明するフローチャートである。
サービス提供装置3の情報取得部314は、図29に示すように、状態判定タイミングになるまで待機する(S201のNO)。そして、状態判定タイミングになった場合(S201のYES)、情報取得部314は、情報解析装置2の情報格納領域230から、状態情報234を取得する(S202)。また、情報取得部314は、この場合、情報格納領域330から、実行待ち数情報331と実行完了数情報332とを取得する(S203)。
その後、サービス提供装置3の処理状態特定部315は、S202の処理及びS203の処理で取得した情報から、第1時間における仮想マシン31の第1処理状態を特定する(S204)。そして、処理状態特定部315は、S202の処理及びS203の処理で取得した情報から、第2時間における仮想マシン31の第2処理状態を特定する(S205)。
その後、サービス提供装置3の情報送信部316は、S204の処理で特定した第1処理状態と、S205の処理で特定した第2処理状態とを、管理装置4に送信する(S206)。
[第2の実施の形態における割当て管理処理の詳細]
次に、第2の実施の形態におけるCPU動的割当て処理のうち、管理装置4が実行する割当て管理処理について説明を行う。図30は、管理装置4の割当て管理処理について説明するフローチャートである。
管理装置4の情報受信部415は、サービス提供装置3から送信された第1処理状態及び第2処理状態を受信するまで待機する(S211のNO)。そして、第1処理状態及び第2処理状態を受信した場合(S211のYES)、追加削除判定部413は、図17のS122及びS123の処理において情報の取得を行った仮想マシン31がCPUのコアの追加が必要である仮想マシンであるか否かを判定する(S212)。
その結果、S122の処理等において情報の取得を行った仮想マシン31がCPUのコアの追加が必要である仮想マシンであると判定した場合(S212のYES)、情報管理部414は、S122の処理等において情報を取得した仮想マシン31を示す情報を、追加削除要求情報433に追加する(S213)。そして、情報管理部414は、情報を追加した追加削除要求情報433を情報格納領域430に記憶する。一方、S122の処理等で情報の取得を行った仮想マシン31がCPUのコアの追加が必要でない仮想マシンであると判定した場合(S212のNO)、情報管理部414は、S213の処理を行わない。
すなわち、第2の実施の形態における管理装置4は、第1処理状態及び第2処理状態の特定を自装置において行わず、サービス提供装置3に行わせる。そして、第2の実施の形態における管理装置4は、サービス提供装置3から受信した第1処理状態及び第2処理状態に対応する情報を、追加削除要求情報433に記憶する。その後、第2の実施の形態における管理装置4は、第1の実施の形態の場合と同様に、追加削除要求情報433を参照して、仮想マシン31にCPUのコアを追加するか否かの判定を行う。
これにより、管理装置4は、割当て管理処理の実行に伴う処理負担をサービス提供装置3に分担させることが可能になる。
以上の実施の形態をまとめると、以下の付記の通りである。
(付記1)
複数の仮想マシンから、各仮想マシンに割当てられたCPUの第1時間における実行待ち処理数である第1実行待ち処理数と、前記CPUの前記第1時間における実行完了処理数である第1実行完了処理数とをそれぞれ取得し、
取得した前記第1実行待ち処理数と前記第1実行完了処理数とに基づいて、前記第1時間における前記複数の仮想マシンそれぞれの第1処理状態を特定し、
特定した前記第1処理状態と、前記複数の仮想マシンに割当てるCPUのリソースの空き状況とに基づいて、前記複数の仮想マシンから、前記リソースを追加する仮想マシンを決定する、
処理をコンピュータに実行させることを特徴とするCPU動的割当てプログラム。
(付記2)
付記1において、
前記特定する処理では、CPUの実行待ち処理数とCPUの実行完了処理数との組み合わせと仮想マシンの処理状態とを対応付けた状態情報を記憶した記憶部を参照し、前記第1実行待ち処理数と前記第1実行完了処理数との組み合わせに対応する処理状態を、前記第1処理状態として前記複数の仮想マシン毎に特定し、
前記決定する処理では、
仮想マシンの処理状態とCPUのリソースを追加する際の優先度とを対応付けた優先度情報を記憶した記憶部を参照し、前記第1処理状態に対応する優先度を前記複数の仮想マシン毎に特定し、
仮想マシンに追加するリソースの数が前記空き状況に対応するリソースの数に達するまで、特定した前記優先度が高い仮想マシンから順にリソースを追加する仮想マシンとして決定する、
ことを特徴とするCPU動的割当てプログラム。
(付記3)
付記1において、さらに、
複数の仮想マシンから、前記第1時間よりも後の第2時間におけるCPUの実行待ち処理数である第2実行待ち処理数とCPUの実行完了処理数である第2実行完了処理数とをそれぞれ取得する、
処理をコンピュータに実行させ、
前記特定する処理では、CPUの実行待ち処理数とCPUの実行完了処理数との組み合わせと処理状態とを対応付けた状態情報を記憶した記憶部を参照し、取得した前記第1実行待ち処理数と前記第1実行完了処理数との組み合わせに対応する処理状態と、取得した前記第2実行待ち処理数と前記第2実行完了処理数との組み合わせに対応する処理状態とを、それぞれ第1処理状態と第2処理状態として前記複数の仮想マシン毎に特定し、
前記決定する処理では、
処理状態の組み合わせと優先度とを対応付けた優先度情報を記憶した記憶部を参照し、前記第1処理状態と前記第2処理状態との組み合わせに対応する優先度を、前記複数の仮想マシン毎に特定し、
仮想マシンに追加するリソースの数が前記空き状況に対応するリソースの数に達するまで、特定した前記優先度が高い仮想マシンから順にリソースを追加する仮想マシンとして決定する、
ことを特徴とするCPU動的割当てプログラム。
(付記4)
付記1において、さらに、
前記特定する処理の前に、複数の仮想マシンから、複数の時間のそれぞれにおけるCPUの実行待ち処理数である第3実行待ち処理数と、前記複数の時間のそれぞれにおけるCPUの実行完了処理数である第3実行完了処理数とを取得し、
CPUの実行待ち処理数をX座標としてCPUの実行完了処理数をY座標とする平面上に、取得した前記第3実行待ち処理数と前記第3実行完了処理数との組み合わせのそれぞれに対応する複数の点をプロットし、
前記平面上をX軸及びY軸に並行な複数の直線によって複数の単位領域に分割し、
X座標が同じである前記複数の単位領域毎に、前記複数の点が含まれる単位領域であってY座標が最大である最大候補単位領域をそれぞれ特定し、
特定した前記最大候補単位領域のうち、Y座標が最大であってX座標が最小である最大単位領域を特定し、
プロットした前記複数の点から、前記最大単位領域に対応するX座標よりも小さいX座標に対応し、前記最大単位領域に最も近い前記最大候補単位領域に含まれる点である限界点を特定し、
プロットした前記複数の点から、前記限界点に対応するY座標よりも小さいY座標に対応する点である第1閾値点を特定し、
前記平面上においてY座標が前記限界点に対応するY座標よりも小さい領域を、X座標が前記第1閾値点に対応するX座標未満であり、Y座標が前記第1閾値点に対応するY座標未満である第1領域と、X座標が前記第1閾値点に対応するX座標未満であり、Y座標が前記第1閾値点に対応するY座標以上である第2領域と、X座標が前記第1閾値点に対応するX座標以上であり、Y座標が前記第1閾値点に対応するY座標未満である第3領域と、X座標が前記第1閾値点に対応するX座標以上であり、Y座標が前記第1閾値点に対応するY座標以上である第4領域とに分割し、
X座標とY座標との組み合わせのそれぞれと、X座標とY座標との組み合わせのそれぞれに対応する点が前記第1領域、前記第2領域、前記第3領域及び前記第4領域のいずれに含まれるかを示す情報とを対応させることにより、前記状態情報を生成する、
処理をコンピュータに実行させることを特徴とするCPU動的割当てプログラム。
(付記5)
付記4において、
前記最大候補単位領域を特定する処理では、所定の基準を満たす数以上の前記複数の点が含まれる単位領域から、前記最大候補単位領域の特定を行う、
ことを特徴とするCPU動的割当てプログラム。
(付記6)
付記4において、
前記限界点を特定する処理では、前記最大単位領域に対応するX座標よりも小さいX座標に対応し、前記最大単位領域に最も近い前記最大候補単位領域に含まれる点が複数存在する場合、前記単位領域のそれぞれをさらに分割した単位領域について、前記複数の単位領域に分割する処理、前記最大候補単位領域を特定する処理、前記最大単位領域を特定する処理及び前記限界点を特定する処理を再度行う、
ことを特徴とするCPU動的割当てプログラム。
(付記7)
付記4において、
前記第1閾値点を特定する処理では、
前記平面上をX軸に平行な複数の直線によって複数の領域に分割し、
分割した前記複数の領域毎に、各領域に含まれる前記複数の点の数を特定し、
前記限界点を含む領域に含まれる前記複数の点の数に対する、各領域に含まれる前記複数の点の数の割合が所定以下である領域のうち、Y座標が最大である領域を特定し、
特定した前記Y座標が最大である領域に含まれる前記複数の点から、前記第1閾値点を特定する、
ことを特徴とするCPU動的割当てプログラム。
(付記8)
付記4において、
前記優先度情報は、X座標とY座標との組み合わせに対応する点が前記第3領域に含まれることを示す情報である場合の優先度が、他の優先度よりも高くなるように決定された情報である、
ことを特徴とするCPU動的割当てプログラム。
(付記9)
付記4において、さらに、
前記第1閾値点に対応するY座標よりも小さいY座標に対応する点である第2閾値点を特定する、
処理をコンピュータに実行させ、
前記領域を分割する処理では、
前記第1領域を、Y座標が前記第2閾値点に対応するY座標以上である第5領域と、Y座標が前記第2閾値点に対応するY座標未満である第6領域とに分割し、
前記第3領域を、Y座標が前記第2閾値点に対応するY座標以上である第7領域と、Y座標が前記第2閾値点に対応するY座標未満である第8領域とに分割し、
前記状態情報を生成する処理では、X座標とY座標との組み合わせのそれぞれと、X座標とY座標との組み合わせのそれぞれに対応する点が前記第2領域、前記第4領域、前記第5領域、前記第6領域、前記第7領域及び前記第8領域のいずれに含まれるかを示す情報とを対応させることにより、前記状態情報を生成する、
ことを特徴とするCPU動的割当てプログラム。
(付記10)
仮想マシンに割当てられたCPUの特定の時間における実行待ち処理数と実行完了処理数とをそれぞれ取得し、
取得した前記実行待ち処理数と前記実行完了処理数とに基づいて、前記特定の時間における前記仮想マシンの処理状態を特定し、
特定した前記処理状態に基づいて前記仮想マシンに対してCPUリソースを追加するか否かを決定する情報処理装置に、特定した前記処理状態を送信する、
処理をコンピュータに実行させることを特徴とするCPU動的割当てプログラム。
(付記11)
複数の仮想マシンから、各仮想マシンに割当てられたCPUの特定の時間における実行待ち処理数と実行完了処理数とに基づく、前記特定の時間における各仮想マシンの処理状態を受信し、
受信した前記処理状態と、前記複数の仮想マシンに割当てるCPUのリソースの空き状況とに基づいて、前記複数の仮想マシンから、前記リソースを追加する仮想マシンを決定する、
処理をコンピュータに実行させることを特徴とするCPU動的割当てプログラム。
(付記12)
複数の仮想マシンから、複数の時間のそれぞれにおけるCPUの実行待ち処理数である第3実行待ち処理数と、前記複数の時間のそれぞれにおけるCPUの実行完了処理数である第3実行完了処理数とを取得し、
CPUの実行待ち処理数をX座標としてCPUの実行完了処理数をY座標とする平面上に、取得した前記第3実行待ち処理数と前記第3実行完了処理数との組み合わせのそれぞれに対応する複数の点をプロットし、
前記平面上をX軸及びY軸に並行な複数の直線によって複数の単位領域に分割し、
X座標が同じである前記複数の単位領域毎に、前記複数の点が含まれる単位領域であってY座標が最大である最大候補単位領域をそれぞれ特定し、
特定した前記最大候補単位領域のうち、Y座標が最大であってX座標が最小である最大単位領域を特定し、
プロットした前記複数の点から、前記最大単位領域に対応するX座標よりも小さいX座標に対応し、前記最大単位領域に最も近い前記最大候補単位領域に含まれる点である限界点を特定し、
プロットした前記複数の点から、前記限界点に対応するY座標よりも小さいY座標に対応する点である第1閾値点を特定し、
前記平面上においてY座標が前記限界点に対応するY座標よりも小さい領域を、X座標が前記第1閾値点に対応するX座標未満であり、Y座標が前記第1閾値点に対応するY座標未満である第1領域と、X座標が前記第1閾値点に対応するX座標未満であり、Y座標が前記第1閾値点に対応するY座標以上である第2領域と、X座標が前記第1閾値点に対応するX座標以上であり、Y座標が前記第1閾値点に対応するY座標未満である第3領域と、X座標が前記第1閾値点に対応するX座標以上であり、Y座標が前記第1閾値点に対応するY座標以上である第4領域とに分割し、
X座標とY座標との組み合わせのそれぞれと、X座標とY座標との組み合わせのそれぞれに対応する点が前記第1領域、前記第2領域、前記第3領域及び前記第4領域のいずれに含まれるかを示す情報とを対応させることにより、前記状態情報を生成する、
処理をコンピュータに実行させることを特徴とするCPU動的割当てプログラム。
(付記13)
複数の仮想マシンから、各仮想マシンに割当てられたCPUの第1時間における実行待ち処理数である第1実行待ち処理数と、前記CPUの前記第1時間における実行完了処理数である第1実行完了処理数とをそれぞれ取得する情報取得部と、
取得した前記第1実行待ち処理数と前記第1実行完了処理数とに基づいて、前記第1時間における前記複数の仮想マシンそれぞれの第1処理状態を特定する処理状態特定部と、
特定した前記第1処理状態と、前記複数の仮想マシンに割当てるCPUのリソースの空き状況とに基づいて、前記複数の仮想マシンから、前記リソースを追加する仮想マシンを決定する追加削除判定部と、を有する、
ことを特徴とするCPU動的割当て装置。
(付記14)
複数の仮想マシンから、各仮想マシンに割当てられたCPUの第1時間における実行待ち処理数である第1実行待ち処理数と、前記CPUの前記第1時間における実行完了処理数である第1実行完了処理数とをそれぞれ取得し、
取得した前記第1実行待ち処理数と前記第1実行完了処理数とに基づいて、前記第1時間における前記複数の仮想マシンそれぞれの第1処理状態を特定し、
特定した前記第1処理状態と、前記複数の仮想マシンに割当てるCPUのリソースの空き状況とに基づいて、前記複数の仮想マシンから、前記リソースを追加する仮想マシンを決定する、
ことを特徴とするCPU動的割当て方法。
(付記15)
仮想マシンに割当てられたCPUの特定の時間における実行待ち処理数と実行完了処理数とをそれぞれ取得する情報取得部と、
取得した前記実行待ち処理数と前記実行完了処理数とに基づいて、前記特定の時間における前記仮想マシンの処理状態を特定する処理状態特定部と、
特定した前記処理状態に基づいて前記仮想マシンに対してCPUリソースを追加するか否かを決定する情報処理装置に、特定した前記処理状態を送信する情報送信部と、を有する、
ことを特徴とするCPU動的割当て装置。
(付記16)
仮想マシンに割当てられたCPUの特定の時間における実行待ち処理数と実行完了処理数とをそれぞれ取得し、
取得した前記実行待ち処理数と前記実行完了処理数とに基づいて、前記特定の時間における前記仮想マシンの処理状態を特定し、
特定した前記処理状態に基づいて前記仮想マシンに対してCPUリソースを追加するか否かを決定する情報処理装置に、特定した前記処理状態を送信する、
ことを特徴とするCPU動的割当て方法。
(付記17)
複数の仮想マシンから、各仮想マシンに割当てられたCPUの特定の時間における実行待ち処理数と実行完了処理数とに基づく、前記特定の時間における各仮想マシンの処理状態を受信する情報受信部と、
受信した前記処理状態と、前記複数の仮想マシンに割当てるCPUのリソースの空き状況とに基づいて、前記複数の仮想マシンから、前記リソースを追加する仮想マシンを決定する追加削除判定部と、を有する、
ことを特徴とするCPU動的割当て装置。
(付記18)
複数の仮想マシンから、各仮想マシンに割当てられたCPUの特定の時間における実行待ち処理数と実行完了処理数とに基づく、前記特定の時間における各仮想マシンの処理状態を受信し、
受信した前記処理状態と、前記複数の仮想マシンに割当てるCPUのリソースの空き状況とに基づいて、前記複数の仮想マシンから、前記リソースを追加する仮想マシンを決定する、
ことを特徴とするCPU動的割当て方法。
(付記19)
複数の仮想マシンから、複数の時間のそれぞれにおけるCPUの実行待ち処理数と実行完了処理数とを取得する情報取得部と、
CPUの実行待ち処理数をX座標としてCPUの実行完了処理数をY座標とする平面上に、取得した前記第3実行待ち処理数と前記第3実行完了処理数との組み合わせのそれぞれに対応する複数の点をプロットするグラフ生成部と、
前記平面上をX軸及びY軸に並行な複数の直線によって複数の単位領域に分割し、X座標が同じである前記複数の単位領域毎に、前記複数の点が含まれる単位領域であってY座標が最大である最大候補単位領域をそれぞれ特定し、特定した前記最大候補単位領域のうち、Y座標が最大であってX座標が最小である最大単位領域を特定し、プロットした前記複数の点から、前記最大単位領域に対応するX座標よりも小さいX座標に対応し、前記最大単位領域に最も近い前記最大候補単位領域に含まれる点である限界点を特定する限界点特定部と、
プロットした前記複数の点から、前記限界点に対応するY座標よりも小さいY座標に対応する点である第1閾値点を特定する閾値点特定部と、
前記平面上においてY座標が前記限界点に対応するY座標よりも小さい領域を、X座標が前記第1閾値点に対応するX座標未満であり、Y座標が前記第1閾値点に対応するY座標未満である第1領域と、X座標が前記第1閾値点に対応するX座標未満であり、Y座標が前記第1閾値点に対応するY座標以上である第2領域と、X座標が前記第1閾値点に対応するX座標以上であり、Y座標が前記第1閾値点に対応するY座標未満である第3領域と、X座標が前記第1閾値点に対応するX座標以上であり、Y座標が前記第1閾値点に対応するY座標以上である第4領域とに分割し、X座標とY座標との組み合わせのそれぞれと、X座標とY座標との組み合わせのそれぞれに対応する点が前記第1領域、前記第2領域、前記第3領域及び前記第4領域のいずれに含まれるかを示す情報とを対応させた状態情報を生成する情報管理部と、を有する、
ことを特徴とするCPU動的割当て装置。
(付記20)
複数の仮想マシンから、複数の時間のそれぞれにおけるCPUの実行待ち処理数と実行完了処理数とを取得し、
CPUの実行待ち処理数をX座標としてCPUの実行完了処理数をY座標とする平面上に、取得した前記第3実行待ち処理数と前記第3実行完了処理数との組み合わせのそれぞれに対応する複数の点をプロットし、
前記平面上をX軸及びY軸に並行な複数の直線によって複数の単位領域に分割し、
X座標が同じである前記複数の単位領域毎に、前記複数の点が含まれる単位領域であってY座標が最大である最大候補単位領域をそれぞれ特定し、
特定した前記最大候補単位領域のうち、Y座標が最大であってX座標が最小である最大単位領域を特定し、
プロットした前記複数の点から、前記最大単位領域に対応するX座標よりも小さいX座標に対応し、前記最大単位領域に最も近い前記最大候補単位領域に含まれる点である限界点を特定し、
プロットした前記複数の点から、前記限界点に対応するY座標よりも小さいY座標に対応する点である第1閾値点を特定し、
前記平面上においてY座標が前記限界点に対応するY座標よりも小さい領域を、X座標が前記第1閾値点に対応するX座標未満であり、Y座標が前記第1閾値点に対応するY座標未満である第1領域と、X座標が前記第1閾値点に対応するX座標未満であり、Y座標が前記第1閾値点に対応するY座標以上である第2領域と、X座標が前記第1閾値点に対応するX座標以上であり、Y座標が前記第1閾値点に対応するY座標未満である第3領域と、X座標が前記第1閾値点に対応するX座標以上であり、Y座標が前記第1閾値点に対応するY座標以上である第4領域とに分割し、
X座標とY座標との組み合わせのそれぞれと、X座標とY座標との組み合わせのそれぞれに対応する点が前記第1領域、前記第2領域、前記第3領域及び前記第4領域のいずれに含まれるかを示す情報とを対応させた状態情報を生成する、
ことを特徴とするCPU動的割当て方法。
1:テスト装置 2:情報解析装置
2a:記憶部 3:サービス提供装置
4:管理装置 11:仮想マシン
12:仮想化ソフトウエア 13:ハードウエア
31:仮想マシン 32:仮想化ソフトウエア
33:ハードウエア

Claims (13)

  1. 複数の仮想マシンから、各仮想マシンに割当てられたCPUの第1時間における実行待ち処理数である第1実行待ち処理数と、前記CPUの前記第1時間における実行完了処理数である第1実行完了処理数とをそれぞれ取得し、
    取得した前記第1実行待ち処理数と前記第1実行完了処理数とに基づいて、前記第1時間における前記複数の仮想マシンそれぞれの第1処理状態を特定し、
    特定した前記第1処理状態と、前記複数の仮想マシンに割当てるCPUのリソースの空き状況とに基づいて、前記複数の仮想マシンから、前記リソースを追加する仮想マシンを決定する、
    処理をコンピュータに実行させることを特徴とするCPU動的割当てプログラム。
  2. 請求項1において、
    前記特定する処理では、CPUの実行待ち処理数とCPUの実行完了処理数との組み合わせと仮想マシンの処理状態とを対応付けた状態情報を記憶した記憶部を参照し、前記第1実行待ち処理数と前記第1実行完了処理数との組み合わせに対応する処理状態を、前記第1処理状態として前記複数の仮想マシン毎に特定し、
    前記決定する処理では、
    仮想マシンの処理状態とCPUのリソースを追加する際の優先度とを対応付けた優先度情報を記憶した記憶部を参照し、前記第1処理状態に対応する優先度を前記複数の仮想マシン毎に特定し、
    仮想マシンに追加するリソースの数が前記空き状況に対応するリソースの数に達するまで、特定した前記優先度が高い仮想マシンから順にリソースを追加する仮想マシンとして決定する、
    ことを特徴とするCPU動的割当てプログラム。
  3. 請求項1において、さらに、
    複数の仮想マシンから、前記第1時間よりも後の第2時間におけるCPUの実行待ち処理数である第2実行待ち処理数とCPUの実行完了処理数である第2実行完了処理数とをそれぞれ取得する、
    処理をコンピュータに実行させ、
    前記特定する処理では、CPUの実行待ち処理数とCPUの実行完了処理数との組み合わせと処理状態とを対応付けた状態情報を記憶した記憶部を参照し、取得した前記第1実行待ち処理数と前記第1実行完了処理数との組み合わせに対応する処理状態と、取得した前記第2実行待ち処理数と前記第2実行完了処理数との組み合わせに対応する処理状態とを、それぞれ第1処理状態と第2処理状態として前記複数の仮想マシン毎に特定し、
    前記決定する処理では、
    処理状態の組み合わせと優先度とを対応付けた優先度情報を記憶した記憶部を参照し、前記第1処理状態と前記第2処理状態との組み合わせに対応する優先度を、前記複数の仮想マシン毎に特定し、
    仮想マシンに追加するリソースの数が前記空き状況に対応するリソースの数に達するまで、特定した前記優先度が高い仮想マシンから順にリソースを追加する仮想マシンとして決定する、
    ことを特徴とするCPU動的割当てプログラム。
  4. 請求項1において、さらに、
    前記特定する処理の前に、複数の仮想マシンから、複数の時間のそれぞれにおけるCPUの実行待ち処理数である第3実行待ち処理数と、前記複数の時間のそれぞれにおけるCPUの実行完了処理数である第3実行完了処理数とを取得し、
    CPUの実行待ち処理数をX座標としてCPUの実行完了処理数をY座標とする平面上に、取得した前記第3実行待ち処理数と前記第3実行完了処理数との組み合わせのそれぞれに対応する複数の点をプロットし、
    前記平面上をX軸及びY軸に並行な複数の直線によって複数の単位領域に分割し、
    X座標が同じである前記複数の単位領域毎に、前記複数の点が含まれる単位領域であってY座標が最大である最大候補単位領域をそれぞれ特定し、
    特定した前記最大候補単位領域のうち、Y座標が最大であってX座標が最小である最大単位領域を特定し、
    プロットした前記複数の点から、前記最大単位領域に対応するX座標よりも小さいX座標に対応し、前記最大単位領域に最も近い前記最大候補単位領域に含まれる点である限界点を特定し、
    プロットした前記複数の点から、前記限界点に対応するY座標よりも小さいY座標に対応する点である第1閾値点を特定し、
    前記平面上においてY座標が前記限界点に対応するY座標よりも小さい領域を、X座標が前記第1閾値点に対応するX座標未満であり、Y座標が前記第1閾値点に対応するY座標未満である第1領域と、X座標が前記第1閾値点に対応するX座標未満であり、Y座標が前記第1閾値点に対応するY座標以上である第2領域と、X座標が前記第1閾値点に対応するX座標以上であり、Y座標が前記第1閾値点に対応するY座標未満である第3領域と、X座標が前記第1閾値点に対応するX座標以上であり、Y座標が前記第1閾値点に対応するY座標以上である第4領域とに分割し、
    X座標とY座標との組み合わせのそれぞれと、X座標とY座標との組み合わせのそれぞれに対応する点が前記第1領域、前記第2領域、前記第3領域及び前記第4領域のいずれに含まれるかを示す情報とを対応させることにより、前記状態情報を生成する、
    処理をコンピュータに実行させることを特徴とするCPU動的割当てプログラム。
  5. 請求項4において、
    前記最大候補単位領域を特定する処理では、所定の基準を満たす数以上の前記複数の点が含まれる単位領域から、前記最大候補単位領域の特定を行う、
    ことを特徴とするCPU動的割当てプログラム。
  6. 請求項4において、
    前記限界点を特定する処理では、前記最大単位領域に対応するX座標よりも小さいX座標に対応し、前記最大単位領域に最も近い前記最大候補単位領域に含まれる点が複数存在する場合、前記単位領域のそれぞれをさらに分割した単位領域について、前記複数の単位領域に分割する処理、前記最大候補単位領域を特定する処理、前記最大単位領域を特定する処理及び前記限界点を特定する処理を再度行う、
    ことを特徴とするCPU動的割当てプログラム。
  7. 請求項4において、
    前記第1閾値点を特定する処理では、
    前記平面上をX軸に平行な複数の直線によって複数の領域に分割し、
    分割した前記複数の領域毎に、各領域に含まれる前記複数の点の数を特定し、
    前記限界点を含む領域に含まれる前記複数の点の数に対する、各領域に含まれる前記複数の点の数の割合が所定以下である領域のうち、Y座標が最大である領域を特定し、
    特定した前記Y座標が最大である領域に含まれる前記複数の点から、前記第1閾値点を特定する、
    ことを特徴とするCPU動的割当てプログラム。
  8. 請求項4において、
    前記優先度情報は、X座標とY座標との組み合わせに対応する点が前記第3領域に含まれることを示す情報である場合の優先度が、他の優先度よりも高くなるように決定された情報である、
    ことを特徴とするCPU動的割当てプログラム。
  9. 請求項4において、さらに、
    前記第1閾値点に対応するY座標よりも小さいY座標に対応する点である第2閾値点を特定する、
    処理をコンピュータに実行させ、
    前記領域を分割する処理では、
    前記第1領域を、Y座標が前記第2閾値点に対応するY座標以上である第5領域と、Y座標が前記第2閾値点に対応するY座標未満である第6領域とに分割し、
    前記第3領域を、Y座標が前記第2閾値点に対応するY座標以上である第7領域と、Y座標が前記第2閾値点に対応するY座標未満である第8領域とに分割し、
    前記状態情報を生成する処理では、X座標とY座標との組み合わせのそれぞれと、X座標とY座標との組み合わせのそれぞれに対応する点が前記第2領域、前記第4領域、前記第5領域、前記第6領域、前記第7領域及び前記第8領域のいずれに含まれるかを示す情報とを対応させることにより、前記状態情報を生成する、
    ことを特徴とするCPU動的割当てプログラム。
  10. 仮想マシンに割当てられたCPUの特定の時間における実行待ち処理数と実行完了処理数とをそれぞれ取得し、
    取得した前記実行待ち処理数と前記実行完了処理数とに基づいて、前記特定の時間における前記仮想マシンの処理状態を特定し、
    特定した前記処理状態に基づいて前記仮想マシンに対してCPUリソースを追加するか否かを決定する情報処理装置に、特定した前記処理状態を送信する、
    処理をコンピュータに実行させることを特徴とするCPU動的割当てプログラム。
  11. 複数の仮想マシンから、各仮想マシンに割当てられたCPUの特定の時間における実行待ち処理数と実行完了処理数とに基づく、前記特定の時間における各仮想マシンの処理状態を受信し、
    受信した前記処理状態と、前記複数の仮想マシンに割当てるCPUのリソースの空き状況とに基づいて、前記複数の仮想マシンから、前記リソースを追加する仮想マシンを決定する、
    処理をコンピュータに実行させることを特徴とするCPU動的割当てプログラム。
  12. 複数の仮想マシンから、各仮想マシンに割当てられたCPUの第1時間における実行待ち処理数である第1実行待ち処理数と、前記CPUの前記第1時間における実行完了処理数である第1実行完了処理数とをそれぞれ取得する情報取得部と、
    取得した前記第1実行待ち処理数と前記第1実行完了処理数とに基づいて、前記第1時間における前記複数の仮想マシンそれぞれの第1処理状態を特定する処理状態特定部と、
    特定した前記第1処理状態と、前記複数の仮想マシンに割当てるCPUのリソースの空き状況とに基づいて、前記複数の仮想マシンから、前記リソースを追加する仮想マシンを決定する追加削除判定部と、を有する、
    ことを特徴とするCPU動的割当て装置。
  13. 複数の仮想マシンから、各仮想マシンに割当てられたCPUの第1時間における実行待ち処理数である第1実行待ち処理数と、前記CPUの前記第1時間における実行完了処理数である第1実行完了処理数とをそれぞれ取得し、
    取得した前記第1実行待ち処理数と前記第1実行完了処理数とに基づいて、前記第1時間における前記複数の仮想マシンそれぞれの第1処理状態を特定し、
    特定した前記第1処理状態と、前記複数の仮想マシンに割当てるCPUのリソースの空き状況とに基づいて、前記複数の仮想マシンから、前記リソースを追加する仮想マシンを決定する、
    ことを特徴とするCPU動的割当て方法。
JP2016180395A 2016-09-15 2016-09-15 Cpu動的割当てプログラム、cpu動的割当て装置及びcpu動的割当て方法 Pending JP2018045493A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2016180395A JP2018045493A (ja) 2016-09-15 2016-09-15 Cpu動的割当てプログラム、cpu動的割当て装置及びcpu動的割当て方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016180395A JP2018045493A (ja) 2016-09-15 2016-09-15 Cpu動的割当てプログラム、cpu動的割当て装置及びcpu動的割当て方法

Publications (1)

Publication Number Publication Date
JP2018045493A true JP2018045493A (ja) 2018-03-22

Family

ID=61693084

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016180395A Pending JP2018045493A (ja) 2016-09-15 2016-09-15 Cpu動的割当てプログラム、cpu動的割当て装置及びcpu動的割当て方法

Country Status (1)

Country Link
JP (1) JP2018045493A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113419811A (zh) * 2021-05-20 2021-09-21 曙光信息产业股份有限公司 Cpu添加方法、设备、计算机设备及可读存储介质
WO2023223599A1 (ja) * 2022-05-17 2023-11-23 株式会社日立製作所 計算機システム及びメトリクスの算出方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113419811A (zh) * 2021-05-20 2021-09-21 曙光信息产业股份有限公司 Cpu添加方法、设备、计算机设备及可读存储介质
WO2023223599A1 (ja) * 2022-05-17 2023-11-23 株式会社日立製作所 計算機システム及びメトリクスの算出方法

Similar Documents

Publication Publication Date Title
CN113243005B (zh) 按需网络代码执行系统中的基于性能的硬件仿真
US8191069B2 (en) Method of monitoring performance of virtual computer and apparatus using the method
KR101651871B1 (ko) 멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치
JP6233413B2 (ja) タスク割り当て判定装置、制御方法、及びプログラム
US8429664B2 (en) Job scheduling apparatus and job scheduling method
US20100058342A1 (en) Provisioning system, method, and program
JP6364880B2 (ja) 並列計算機システム,ジョブ管理装置の制御プログラム,及び並列計算機システムの制御方法
EP3432159B1 (en) Garbage collection method and device
US8572621B2 (en) Selection of server for relocation of application program based on largest number of algorithms with identical output using selected server resource criteria
US9792142B2 (en) Information processing device and resource allocation method
JP2012525641A (ja) アプリケーション効率エンジン
US10496430B2 (en) Information processing system, autoscaling association apparatus, and non-transitory computer readable medium for determining a necessary number of virtual machines
JP7331407B2 (ja) コンテナ起動ホスト選択装置、コンテナ起動ホスト選択システム、コンテナ起動ホスト選択方法及びプログラム
JP2017041191A (ja) リソース管理装置、リソース管理プログラム、及びリソース管理方法
JPWO2013171944A1 (ja) 仮想マシン管理システム、仮想マシン管理方法およびプログラム
JP2018045493A (ja) Cpu動的割当てプログラム、cpu動的割当て装置及びcpu動的割当て方法
CN115617497A (zh) 线程处理方法、调度组件、监测组件、服务器和存储介质
CN115168040A (zh) 一种作业抢占调度方法、装置、设备和存储介质
US20210184926A1 (en) Network management device and network management method
JP2020024636A (ja) スケジューリング装置、スケジューリングシステム、スケジューリング方法及びプログラム
JP2007328413A (ja) 負荷分散方法
US11474868B1 (en) Sharded polling system
JP6700552B2 (ja) 処理制御プログラム、処理制御装置及び処理制御方法
US11726758B2 (en) Efficient scaling of a container-based application in a distributed computing system
CN111352710B (zh) 进程管理方法及装置、计算设备、存储介质