(57)【特許請求の範囲】
【請求項１】
仮想マシンモニタが仮想マシンにリソースの割当量を割当てる割当時刻を決定する割当時刻取得部と、
前記割当時刻に、前記仮想マシンの前記リソースの使用量を計測する使用量計測部と、  前記使用量に基づいてリソースの割当量を算出する割当量算出部と、
次の前記割当時刻より所定時間前の設定時刻に、前記仮想マシンモニタに前記割当量算出部で算出された前記割当量を設定する割当量設定部と、を備え
前記割当時刻取得部は、前記仮想マシン上で動作するアプリケーションの性能情報を所定の手法により算出し、前記性能情報の変化に基づいて前記割当時刻を決定する、リソース制御装置。
【請求項２】
前記割当時刻取得部は、前記アプリケーションの動作の開始及び終了を制御する制御部を備える請求項１に記載のリソース制御装置。
【請求項３】
前記割当時刻取得部は、前記割当量の変化に応じた前記性能情報の変化に基づいて前記割当時刻を決定する
請求項１又は請求項２に記載のリソース制御装置。
【請求項４】
前記割当量設定部は、前記割当量を増加又は減少させ、
前記割当時刻取得部は、前記割当量の増加又は減少に応じて前記性能情報が所定値以上又所定値以下となった時刻に基づいて、前記割当時刻を決定する
請求項１乃至請求項３のいずれか１項に記載のリソース制御装置。
【請求項５】
仮想マシンモニタが仮想マシンにリソースの割当量を割当てる割当時刻を決定する割当時刻取得部と、
前記割当時刻に、前記仮想マシンの前記リソースの使用量を計測する使用量計測部と、  前記使用量に基づいてリソースの割当量を算出する割当量算出部と、
次の前記割当時刻より所定時間前の設定時刻に、前記仮想マシンモニタに前記割当量算出部により算出された前記割当量を設定する割当量設定部と、
前記仮想マシン上で動作するアプリケーションの性能情報を所定の手法により算出する性能計測部と、
前記割当量の周期的な変化に応じた前記性能情報の変化に基づいて、前記割当時刻の間隔である割当間隔を決定する割当間隔推定部と、を備える
リソース制御装置。
【請求項６】
前記割当量設定部は、前記割当量を複数の時間間隔で変化させ、
前記割当間隔推定部は、前記割当量の設定時刻から前記性能情報が変化するまでの時間が一定となる前記時間間隔を、前記割当間隔として決定する
請求項５に記載のリソース制御装置。
【請求項７】
仮想マシンモニタが仮想マシンにリソースの割当量を割当てる割当時刻を決定する割当時刻取得部と、
前記割当時刻に、前記仮想マシンの前記リソースの使用量を計測する使用量計測部と、  前記使用量に基づいてリソースの割当量を算出する割当量算出部と、
次の前記割当時刻より所定時間前の設定時刻に、前記仮想マシンモニタに前記割当量算出部により算出された前記割当量を設定する割当量設定部と、を備え、
前記割当時刻取得部は、前記仮想マシンモニタの動作履歴を取得し、前記動作履歴に基づいて前記割当時刻を決定する
リソース制御装置。
【請求項８】
コンピュータが
仮想マシンモニタが仮想マシンにリソースの割当量を割当てる割当時刻を決定し、
前記割当時刻に、前記仮想マシンの前記リソースの使用量を計測し、
前記使用量に基づいてリソースの割当量を算出し、
次の前記割当時刻より所定時間前の設定時刻に、前記仮想マシンモニタに前記算出された割当量を設定し、
前記仮想マシン上で動作するアプリケーションの性能情報を所定の手法により算出し、
前記性能情報の変化に基づいて前記割当時刻を決定する、
リソース制御方法。
【請求項９】
コンピュータが
仮想マシンモニタが仮想マシンにリソースの割当量を割当てる割当時刻を決定し、
前記割当時刻に、前記仮想マシンの前記リソースの使用量を計測し、
前記使用量に基づいてリソースの割当量を算出し、
次の前記割当時刻より所定時間前の設定時刻に、前記仮想マシンモニタに前記算出された割当量を設定し、
前記仮想マシン上で動作するアプリケーションの性能情報を所定の手法により算出し、  前記割当量の周期的な変化に応じた前記性能情報の変化に基づいて、前記割当時刻の間隔である割当間隔を決定する
リソース制御方法。
【請求項１０】
コンピュータが
仮想マシンモニタが仮想マシンにリソースの割当量を割当てる割当時刻を決定し、
前記割当時刻に、前記仮想マシンの前記リソースの使用量を計測し、
前記使用量に基づいてリソースの割当量を算出し、
次の前記割当時刻より所定時間前の設定時刻に、前記仮想マシンモニタに前記算出された割当量を設定し、
前記仮想マシンモニタの動作履歴を取得し、前記動作履歴に基づいて前記割当時刻を決定する
リソース制御方法。
【請求項１１】
コンピュータを、
仮想マシンモニタが仮想マシンにリソースの割当量を割当てる割当時刻を決定する手段と、
前記割当時刻に、前記仮想マシンの前記リソースの使用量を計測する手段と、
前記使用量に基づいてリソースの割当量を算出する手段と、
次の前記割当時刻より所定時間前の設定時刻に、前記仮想マシンモニタに前記算出された割当量を設定する手段と、
前記仮想マシン上で動作するアプリケーションの性能情報を所定の手法により算出する手段と、
前記性能情報の変化に基づいて前記割当時刻を決定する手段、
として機能させるリソース制御プログラム。
【請求項１２】
コンピュータを
仮想マシンモニタが仮想マシンにリソースの割当量を割当てる割当時刻を決定する手段と、
前記割当時刻に、前記仮想マシンの前記リソースの使用量を計測する手段と、
前記使用量に基づいてリソースの割当量を算出する手段と、
次の前記割当時刻より所定時間前の設定時刻に、前記仮想マシンモニタに前記算出された割当量を設定する手段と、
前記仮想マシン上で動作するアプリケーションの性能情報を所定の手法により算出する手段と、
前記割当量の周期的な変化に応じた前記性能情報の変化に基づいて、前記割当時刻の間隔である割当間隔を決定する手段、
として機能させるリソース制御プログラム。
【請求項１３】
コンピュータを
仮想マシンモニタが仮想マシンにリソースの割当量を割当てる割当時刻を決定する手段と、
前記割当時刻に、前記仮想マシンの前記リソースの使用量を計測する手段と、
前記使用量に基づいてリソースの割当量を算出する手段と、
次の前記割当時刻より所定時間前の設定時刻に、前記仮想マシンモニタに前記算出された割当量を設定する手段と、
前記仮想マシンモニタの動作履歴を取得し、前記動作履歴に基づいて前記割当時刻を決定する手段、
として機能させるリソース制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、リソース制御装置、方法、及びプログラムに関する。
【背景技術】
【０００２】
従来、ハイパーバイザー（Hypervisor）などの仮想マシンモニタ（Virtual Machine Monitor）（以下、「ＶＭＭ」という）と呼ばれるソフトウェア技術が利用されている。ＶＭＭを利用することで、１台のコンピュータ上で、複数の仮想マシン（Virtual Machine）（以下、「ＶＭ」という）を動作させることができる。
【０００３】
ＶＭＭは、例えば、ＶＭ１に１ＧＢのメモリを割当て、ＶＭ２に２ＧＢのメモリを割当てる、というように、個々のＶＭにリソースを割当てる機能を有する。また、ＶＭＭは、個々のＶＭに割当てるリソースを動的に、すなわち、ＶＭを停止させることなく、変更することができる。
【０００４】
このＶＭＭの機能を利用すれば、ＶＭが必要とする量のリソースをＶＭに割当てることができる。ＶＭが必要とするリソースは、時間的に変動する。ＶＭが必要とするリソースの変動にあわせてリソースを割当てることにより、コンピュータのリソースを有効に活用することができる。このような処理を行う技術を、動的リソース割当て技術と呼ぶ。
【０００５】
動的リソース割当て技術では、ＶＭが必要とするリソースを保証することが重要である。リソース保証とは、ＶＭが必要とするリソースよりも多くのリソースを割当てることをいう。リソースを保証できない場合、ＶＭの動作が乱れることがある。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１１−１７０７８７号公報
【非特許文献】
【０００７】
【非特許文献１】“PRESS: PRedictive Elastic ReSource Scaling for cloud systems”, Network and Service Management (CNSM), 2010 International Conference on
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ＶＭのリソースを精度よく保証することができるリソース制御装置、方法、及びプログラムを提供する。
【課題を解決するための手段】
【０００９】
一実施形態に係るリソース制御装置は、割当時刻取得部と、使用量計測部と、割当量算出部と、割当量設定部と、を備える。割当時刻取得部は、仮想マシンモニタが仮想マシンにリソースの割当量を割当てる割当時刻を取得する。使用量計測部は、割当時刻に、前記仮想マシンの前記リソースの使用量を計測する。割当量算出部は、使用量に基づいて割当量を算出する。割当量設定部は、割当時刻より所定時間前の設定時刻に、仮想マシンモニタに割当量を設定する。
【図面の簡単な説明】
【００１０】
【図１】第１実施形態に係るリソース制御装置の機能構成を示す図。
【図２】リソース制御装置の動作を説明する図。
【図３】アプリケーションの性能の変化を説明する図。
【図４】アプリケーションの性能の変化の実験結果を示す図。
【図５】図１のリソース制御装置のハードウェア構成を示す図。
【図６】図１のリソース制御装置とＶＭとの関係を示す図。
【図７】図１のリソース制御装置の処理を説明するフローチャート。
【図８】従来のリソース制御装置の動作を説明する図。
【図９】第２実施形態に係るリソース制御装置の機能構成を示す図。
【図１０】図９のリソース制御装置による割当間隔の推定処理を示すフローチャート。
【図１１】第３実施形態に係るリソース制御装置の機能構成を示す図。
【図１２】第４実施形態に係るリソース制御装置による割当量の算出方法を説明する図。
【発明を実施するための形態】
【００１１】
以下、本発明の実施形態について図面を参照して説明する。
【００１２】
（第１実施形態）
第１実施形態に係るリソース制御装置、方法、及びプログラムについて、図１〜図８を参照して説明する。本実施形態に係るリソース制御装置は、ＶＭＭがＶＭに割当てるリソースの割当量を算出し、算出した割当量をＶＭＭに設定する。ＶＭＭは、設定された割当量をＶＭに割当てる。ここでいうリソースとは、ＶＭが動作する物理マシン（Physical Machine）（以下、「ＰＭ」という）のリソースのことである。ＶＭＭがＶＭに割当てるリソースは、例えば、ＰＭのＣＰＵ、メモリ、ストレージ、ネットワークであるが、これに限られない。
【００１３】
本実施形態において、ＶＭＭは所定の時間間隔でＶＭにリソースを割当てるものとする。また、所定の時間間隔は既知であるものとする。以下では、ＶＭＭがＶＭにリソースを割当てる時刻を割当時刻、各割当時刻の間隔を割当間隔という。
【００１４】
まず、本実施形態に係るリソース制御装置の機能構成について、図１〜図４を参照して説明する。図１は、本実施形態に係るリソース制御装置の機能構成を示す図である。図１に示すように、リソース制御装置は、割当時刻取得部１と、使用量計測部２と、割当量算出部３と、割当量設定部４と、を備える。
【００１５】
割当時刻取得部１は、割当時刻を取得する。上述の通り、ＶＭＭは、所定の割当間隔でＶＭにリソースを割当てるため、割当時刻取得部１は、１つの割当時刻を取得すれば、その後の割当時刻を算出することができる。
【００１６】
ここで、図２は、本実施形態におけるリソース制御装置の動作を説明する説明図である。割当時刻取得部１が取得した割当時刻をＴ、割当間隔をＩとすると、割当時刻Ｔ以降の割当時刻は、図２に示すように、Ｔ＋Ｉ×Ｎ（Ｎは１以上の整数）で表される。割当時刻取得部１の詳細については後述する。
【００１７】
使用量計測部２は、ＶＭによるリソースの使用量を所定の時間間隔で計測する。より詳細には、使用量計測部２は、割当時刻取得部１が算出した割当時刻Ｔ＋Ｉ×Ｎに、前の割当時刻Ｔ＋Ｉ×（Ｎ−１）から割当時刻Ｔ＋Ｉ×Ｎまでのリソースの使用量を計測する。例えば、使用量計測部２は、時刻Ｔ＋Ｉに、時刻Ｔから時刻Ｔ＋Ｉまでのリソースの使用量を計測する。すなわち、使用量計測部２による使用量の計測時刻は、ＶＭＭによるリソースの割当時刻と一致する。
【００１８】
使用量計測部２による使用量の計測方法は任意である。使用量計測部２は、例えば、ＶＭが使用したリソースの履歴データをＶＭＭやＶＭから取得し、取得した履歴データに基づいてリソースの使用量を計測することができる。
【００１９】
割当量算出部３は、使用量計測部２が計測した各割当時刻間のリソースの使用量に基づいて、ＶＭＭがＶＭに割当てるリソースの割当量を算出する。割当量の算出方法は、計測されたリソースの使用量に基づいて割当量を算出する既知の方法から、任意に選択可能である。例えば、割当量算出部３は、過去の各割当時刻に計測された使用量の移動平均から、割当時刻におけるリソースの使用量の予測値Ｃを算出し、予測値Ｃに基づいて、割当量を算出することができる。割当量算出部３は、予測値Ｃや、予測値Ｃに所定のマージンを追加した値を割当量として算出する。
【００２０】
割当量設定部４は、割当量算出部３が算出したリソースの割当量を、所定の時間間隔でＶＭＭに設定する。より詳細には、割当量設定部４は、割当時刻取得部１が算出した割当時刻より所定時間前の設定時刻に割当量を設定する。したがって、設定時刻は、Ｔ＋Ｉ×Ｎ−Ｍ（Ｍ＜Ｉ）で表され、図２に示すように、設定時刻の間隔（設定間隔ｉ）は、割当間隔Ｉと一致する（ｉ＝Ｉ）。上記のＭは、割当量設定部４が割当量を設定してから、ＶＭＭが割当量を実際に割当てるまでに要する時間に応じたマージンである。例えば、ＶＭＭは、時刻Ｔ＋Ｉ−Ｍに割当量設定部４から設定された割当量を、時刻Ｔ＋ＩにＶＭに割当てる。
【００２１】
ここで、割当時刻取得部１について詳細に説明する。図１に示すように、本実施形態において、割当時刻取得部１は、アプリケーション制御部１１と、性能計測部１２と、割当時刻推定部１３と、を備える。
【００２２】
アプリケーション制御部１１は、ＶＭ上で動作するアプリケーションの、動作の開始及び終了を制御する。アプリケーション制御部１１が制御するアプリケーションは、ＶＭ上で動作する任意のソフトウェアであり、割当時刻を取得するためにＶＭにインストールされた専用のアプリケーションであってもよいし、ＶＭに予めインストールされている既存のアプリケーション（例えば、顧客にサービスを提供する制御アプリケーション）であってもよい。アプリケーション制御部１１は、ＶＭＭの機能、Secure Shell、及びTCP/IPなどを利用することにより、アプリケーションを制御することができる。
【００２３】
なお、このアプリケーションは、経時的に略一定の性能を発揮する処理を実行可能であることが好ましい。理由は後述する。また、このアプリケーションが、アプリケーション制御部１１による指示がなくても動作する場合には、リソース制御装置は、アプリケーション制御部１１を備えなくてもよい。このような場合として、アプリケーションが、ＶＭ上で常時動作している場合や、ＶＭのユーザによりアプリケーションの動作の開始及び終了が制御される場合が考えられる。
【００２４】
性能計測部１２は、ＶＭ上で動作する上述のアプリケーションの性能を、割当間隔より短い時間間隔で計測する。性能計測部１２が計測する性能は、例えば、アプリケーションの単位時間あたりの通信量、ディスクアクセス量、演算回数、及び通信回数や、アプリケーションの応答速度であるが、これに限られない。性能計測部１２は、ＶＭやアプリケーションから、アプリケーションの動作履歴や性能を示すログファイルを取得し、解析することにより、性能を計測することができる。
【００２５】
割当時刻推定部１３は、性能計測部１２が計測したアプリケーションの性能の変化に基づいて、割当時刻を推定する。ＶＭ上で動作するアプリケーションの性能は、ＶＭに割当てられたリソースの割当量に応じて変化する。このため、割当量設定部４が任意の時刻ｔに小さい割当量をＶＭＭに設定すると、図３に示すように、時刻ｔの次の割当時刻に、小さい割当量がＶＭに割当てられ、アプリケーションの性能が低下する。割当量推定部１３は、割当量設定部４に大きい割当量を設定させた後、小さい割当量を設定させ、性能の低下が開始した時刻Ｔ１、性能の低下が終了した時刻Ｔ２、又は性能が所定の閾値Ｔｈ以下となった時刻Ｔ３を、割当時刻Ｔとして推定すればよい。また、割当量推定部１３は、これらの時刻Ｔ１〜Ｔ３より所定時間ａだけ前の時刻を、割当時刻Ｔとして推定してもよい。ａは、例えば、性能計測部１２の計測間隔や、１ミリ秒などの所定値である。
【００２６】
ここで、図４は、リソースの割当量を増減させた場合のアプリケーションの性能の実験結果を示す図である。図４の左の縦軸は割当量、右の縦軸は性能、横軸は時間である。図４において、各時刻に設定された割当量と、各時刻に計測されたアプリケーションの性能と、が示されている。図４より、小さな割当量を設定した後に、性能が急激に低下し、大きな割当量を設定した後に、性能が急激に向上していることがわかる。
【００２７】
割当時刻推定部１３は、上述のように、アプリケーションの性能の変化に基づいて割当時刻を推定する。図３に示すように、アプリケーションの性能の変化は、アプリケーションの性能が略一定の場合、容易に観測することができる。このため、割当時刻を推定する際、アプリケーションの性能が略一定となるように、アプリケーションは、経時的に略一定の性能を発揮する処理を実行可能であるのが好ましい。これにより、割当時刻推定部１３は、割当時刻を精度よく推定することができる。
【００２８】
また、性能の変化が観測しやすいように、割当時刻を推定する際の割当量の変化は大きい方が好ましい。例えば、ＶＭにリソースの８０％〜１００％を割当てた後、割当量を０％〜２０％に減少させるのが好ましい。これにより、アプリケーションの性能が急激に変化するため、性能の変化を容易に観測することができる。したがって、割当時刻推定部１３は、割当時刻を精度よく推定することができる。
【００２９】
なお、以上の説明では、割当量を減少させる場合について説明したが、割当量を増加させる場合でも、同様に割当時刻を推定することができる。この場合、割当量推定部１３は、性能の向上が開始した時刻Ｔ１、性能の向上が終了した時刻Ｔ２、性能が所定の閾値Ｔｈ以上となった時刻Ｔ３、又はこれらの時刻Ｔ１〜Ｔ３より所定時間ａだけ前の時刻を、割当時刻Ｔとして推定すればよい。
【００３０】
次に、本実施形態に係るリソース制御装置のハードウェア構成について、図５及び図６を参照して説明する。本実施形態に係るリソース制御装置は、図５に示すように、コンピュータ１００（ＰＭ）により構成される。コンピュータ１００は、ＣＰＵ（中央演算装置）１０１と、入力装置１０２と、表示装置１０３と、通信装置１０４と、記憶装置１０５と、とを備え、これらはバス１０６により相互に接続されている。
【００３１】
ＣＰＵ１０１は、コンピュータ１００の制御装置及び演算装置である。ＣＰＵ１０１は、バス１０６を介して接続された各装置（例えば、入力装置１０２、通信装置１０４、記憶装置１０５）から入力されたデータやプログラムに基づいて演算処理を行い、演算結果や制御信号を、バス１０６を介して接続された各装置（例えば、表示装置１０３、通信装置１０４、記憶装置１０５）に出力する。
【００３２】
具体的には、ＣＰＵ１０１は、コンピュータ１００のＯＳ（オペレーティングシステム）や、リソース制御プログラムなどを実行し、コンピュータ１００を構成する各装置を制御する。リソース制御プログラムとは、コンピュータ１００に、リソース制御装置の上述の各機能構成を実現させるプログラムである。ＣＰＵ１０１がリソース制御プログラムを実行することにより、コンピュータ１００がリソース制御装置として機能する。
【００３３】
入力装置１０２は、コンピュータ１００に情報を入力するための装置である。入力装置１０２は、例えば、キーボード、マウス、及びタッチパネルであるが、これに限られない。
【００３４】
表示装置１０３は、画像や映像を表示するための装置である。表示装置１０３は、例えば、ＬＣＤ（液晶ディスプレイ）、ＣＲＴ（ブラウン管）、及びＰＤＰ（プラズマディスプレイ）であるが、これに限られない。
【００３５】
通信装置１０４は、コンピュータ１００が外部装置と無線又は有線で通信するための装置である。通信装置１０４は、例えば、モデム、ハブ、及びルータであるが、これに限られない。
【００３６】
記憶装置１０５は、コンピュータ１００のＯＳや、リソース制御プログラム、リソース制御プログラムの実行に必要なデータ、及びリソース制御プログラムの実行により生成されたデータなどを記憶する記憶媒体である。記憶装置１０５には、主記憶装置と外部記憶装置とが含まれる。主記憶装置は、例えば、ＲＡＭ、ＤＲＡＭ、ＳＲＡＭであるが、これに限られない。また、外部記憶装置は、ハードディスク、光ディスク、フラッシュメモリ、及び磁気テープであるが、これに限られない。
【００３７】
なお、コンピュータ１００は、ＣＰＵ１０１、入力装置１０２、表示装置１０３、通信装置１０４、及び記憶装置１０５を、１つ又は複数備えてもよいし、プリンタやスキャナなどの周辺機器を接続されていてもよい。
【００３８】
また、リソース制御装置は、単一のコンピュータ１００により構成されてもよいし、相互に接続された複数のコンピュータ１００からなるシステムとして構成されてもよい。
【００３９】
さらに、リソース制御プログラムは、コンピュータ１００の記憶装置１０５に予め記憶されていてもよいし、ＣＤ−ＲＯＭなどの記憶媒体に記憶されていてもよいし、インターネット上にアップロードされていてもよい。いずれの場合も、リソース制御プログラムをコンピュータ１００にインストールして実行することにより、リソース制御装置を構成することができる。
【００４０】
またさらに、リソース制御装置は、図６に示すように、ＶＭ及びＶＭＭが動作するＰＭと同一のコンピュータ１００により構成されてもよいし、ＶＭ及びＶＭＭが動作するＰＭとは別のコンピュータ１００により構成されてもよい。この場合、リソース制御装置は、コンピュータ１００の通信装置１０４を介してＶＭ及びＶＭＭが動作するＰＭと通信すればよい。
【００４１】
次に、本実施形態に係るリソース制御方法について、図７を参照して具体的に説明する。図７は、本実施形態に係るリソース制御装置による処理の一例を示すフローチャートである。
【００４２】
以下では、リソースはＣＰＵであり、アプリケーションの性能はＣＰＵの演算回数であるものとする。また、アプリケーションは、所定時間毎（例えば、１ミリ秒毎）に、時刻と、ＣＰＵの演算回数と、を含むログファイルを出力するものとする。
【００４３】
ステップＳ１において、アプリケーション制御部１１は、ＶＭ上のアプリケーションの動作を開始させる。処理の開始時点でアプリケーションが動作している場合には、ステップＳ１は省略される。
【００４４】
ステップＳ２において、割当量設定部４は、ＶＭＭにＣＰＵの割当量１００％をＶＭＭに設定する。ここで割当てられる割当量は、性能の変化から割当時刻を推定するための割当量であり、予め設定することができる。割当量は、例えば、８０％以上の任意の値に設定することができる。設定された割当量は、その後、ＶＭＭによりＶＭに割当てられる。
【００４５】
ステップＳ３において、性能計測部１２がアプリケーションの性能の計測を開始する。性能計測部１２は、性能の計測を開始すると、アプリケーションが出力するログファイルを参照し、単位時間あたりの演算回数を算出する。ログファイルに含まれるＣＰＵの演算回数は累積値であるため、性能計測部１２は、計測時刻のログファイルの演算回数から、単位時間前のログファイルの演算回数を減算することにより、単位時間あたりの演算回数を算出する。これにより、図４に示すような性能の履歴データが生成される。なお、ログファイルの取得方法は任意であり、ＶＭＭから取得してもよいし、ＦＴＰやＨＴＴＰを利用したファイル転送によりインターネットを介して取得してもよい。
【００４６】
ステップＳ４において、割当量設定部４は、ＣＰＵの割当量１０％をＶＭＭに設定する。ここで割当てられる割当量は、性能の変化から割当時刻を推定するための割当量であり、予め設定することができる。割当量は、例えば、２０％以下の任意の値に設定することができる。設定された割当量は、その後、ＶＭＭによりＶＭに割当てられる。
【００４７】
ステップＳ５において、割当時刻推定部１３は、割当時刻Ｔを推定する。ステップＳ４において、ＣＰＵの割当量が１００％から１０％に減少したことにより、図４に示すように、アプリケーションの性能が急激に低下する。割当時刻推定部１３は、性能計測部１２が生成した性能の履歴データを参照することにより、割当時刻Ｔを推定することができる。割当時刻の推定方法は上述の通りである。
【００４８】
ステップＳ６において、アプリケーション制御部１１は、ＶＭ上のアプリケーションの動作を終了させる。処理の終了時点でアプリケーションが動作していてもよい場合には、ステップＳ６は省略される。
【００４９】
ステップＳ７において、使用量計測部２は、ＶＭによるＣＰＵの使用量を計測する。使用量の計測は、割当時刻推定部１３が推定した割当時刻Ｔに基づいて算出された、割当時刻Ｔの割当時刻Ｔ＋Ｉ×Ｎに行われる。使用量計測部２は、割当時刻Ｔ＋Ｉ×Ｎにおいて、時刻Ｔ＋Ｉ×（Ｎ−１）から時刻Ｔ＋Ｉ×ＮまでのＣＰＵの使用量を計測する。
【００５０】
ステップＳ８において、割当量算出部３は、ＣＰＵの割当量を算出する。ここで算出される割当量は、ＶＭＭによって割当時刻Ｔ＋Ｉ×（Ｎ＋１）にＶＭに割当てられる割当量である。割当量の算出方法は上述の通りである。
【００５１】
ステップＳ９において、割当量設定部４は、割当量算出部３が算出したＣＰＵの割当量をＶＭＭに設定する。割当量の設定は、設定時刻Ｔ＋Ｉ×（Ｎ＋１）−Ｍに行われる。その後、割当時刻Ｔ＋Ｉ×（Ｎ＋１）に、ＶＭＭは、設定された割当量をＶＭに割当てる。
【００５２】
以降、処理が終了するまで、ステップＳ７〜Ｓ９の処理が繰り返される。なお、上記の説明において、割当時刻の推定は、ステップＳ１において、１回だけ行われたが、複数回行われてもよい。割当時刻の推定は、例えば、所定の時間間隔で、或いは、任意のタイミング（例えば、リソースの保証に失敗したタイミング）で、繰り返し行うことができる。これにより、割当時刻の推定精度を向上させることができる。
【００５３】
従来のリソース制御装置として、一定の時間幅を有するタイムスロット毎にリソースの割当処理を行う装置が提案されている。ここで、図８は、従来のリソース制御方法を説明する図である。従来方法では、各タイムスロット間の境界時刻ｔ１，ｔ３，ｔ５に、リソースの使用量の計測及び割当量の設定が行われる。
【００５４】
一般に、ＶＭＭは、リソース制御装置の動作とは関係なく、一定の割当間隔Ｉでリソースの割当を行うため、上述の通り、割当時刻は、設定時刻より後の時刻ｔ２，ｔ４，ｔ６となる。一般的なＶＭＭの割当間隔Ｉは、数ミリ秒〜数十ミリ秒であるため、割当時刻と設定時刻とのタイムラグも数ミリ秒〜数十ミリ秒となる。
【００５５】
従来方法では、動作精度が数分〜数時間のアプリケーションがＶＭ上で動作することを想定していたため、上記のような割当時刻と設定時刻とのタイムラグは、リソースの保証に対する影響が小さく、考慮されていなかった。
【００５６】
しかしながら、ＶＭ上で、動作精度が数ミリ秒〜数十ミリ秒のアプリケーションが動作する場合、リソースの使用量が急増するタイムスロットにおいて、リソースが不足する恐れがあった。例えば、図８の場合、設定時刻ｔ５〜割当時刻ｔ６（斜線部分）に、リソースが不足する可能性がある。これは、リソース制御装置が、設定時刻ｔ５以降に必要な割当量１００％を算出し、割当量１００％を設定時刻ｔ５に設定するためである。割当量１００％は、実際には割当時刻ｔ６まで割当てられないため、ＶＭが時刻ｔ５〜時刻ｔ６に多くのリソースを必要とした場合、時刻ｔ５〜時刻ｔ６にリソースが不足する。
【００５７】
これに対して、本実施形態に係るリソース制御装置は、割当時刻に計測したリソースの使用量に基づいて割当量を算出し、算出した割当量が次の割当時刻に割当てられるように設定することができる。すなわち、本実施形態に係るリソース制御装置は、割当時刻ｔ６以降に必要な割当量１００％を算出し、割当量１００％を設定時刻ｔ６−Ｍに設定する。これにより、割当量１００％は、割当時刻ｔ６に割当てられるため、リソースの不足が抑制される。
【００５８】
以上説明した通り、本実施形態に係るリソース制御装置は、ＶＭ上で動作精度が数ミリ秒〜数十ミリ秒のアプリケーションが動作する場合であっても、ＶＭのリソースを精度よく保証することができる。このリソース制御装置は、例えば、クラウドサーバのＶＭ上で動作する制御アプリケーションのリソース制御に好適に用いることができる。
【００５９】
（第２実施形態）
第２実施形態に係るリソース制御装置、方法、及びプログラムについて、図９及び図１０を参照して説明する。第１実施形態では、割当間隔Ｉは既知であることを前提としたが、割当間隔Ｉが不明な場合も考えられる。そこで、本実施形態に係るリソース制御装置は、割当間隔Ｉを推定する。
【００６０】
まず、本実施形態に係るリソース制御装置の機能構成について、図９を参照して説明する。図９は、本実施形態に係るリソース制御装置の機能構成を示す図である。図９に示すように、リソース制御装置の割当時刻取得部１は、割当間隔推定部１４を更に備える。他の構成は、第１実施形態と同様である。以下、割当間隔推定部１４について説明する。
【００６１】
割当間隔推定部１４は、割当間隔Ｉを推定する。本実施形態において、割当時刻推定部１３は、割当間隔推定部１４が推定した割当間隔Ｉに基づいて、割当時刻Ｔ＋Ｉ×Ｎを算出する。
【００６２】
割当量設定部４による割当量の設定間隔ｉと、ＶＭによる割当量の割当間隔Ｉと、が等しい場合、割当量の設定時刻からアプリケーションの性能が変化するまでの時間は、一定となる。割当間隔推定部１４は、このような性質を利用して、割当量の周期的な変化に応じた性能の変化に基づいて、割当間隔Ｉを推定する。
【００６３】
具体的には、割当間隔推定部１４は、図４に示すように、割当量設定部４に、所定の設定間隔ｉで、大きい割当量と小さい割当量とを交互に設定させる。そして、割当間隔推定部１４は、割当量の設定時刻と、割当量の変化に応じて性能が変化する時刻と、を比較する。
【００６４】
割当間隔推定部１４は、複数の設定間隔ｉについてこのような比較を行い、割当量の設定時刻から性能が変化するまで時間が一定となる設定間隔ｉを探索する。割当間隔推定部１４は、探索した設定間隔ｉを、割当間隔Ｉとして推定する。
【００６５】
次に、本実施形態に係る割当間隔Ｉの推定方法について、図１０を参照して説明する。図１０は、本実施形態に係るリソース制御装置による割当間隔Ｉの推定処理を示すフローチャートである。図１０のステップＳ１〜Ｓ３は、第１実施形態と同様である。本実施形態では、ステップＳ３において、性能計測部１２がアプリケーションの性能の計測を開始した後、処理はステップＳ１０に進む。
【００６６】
ステップＳ１０において、割当量設定部４は、所定の設定間隔ｉでＣＰＵの割当量を増減させる。すなわち、大きい割当量（例えば、１００％）と、小さい割当量（例えば、１０％）と、を交互にＶＭＭに設定する。
【００６７】
設定間隔ｉの初期値は、割当間隔Ｉより小さいのが好ましく、例えば、１０マイクロ秒以上１ミリ秒以下の任意の値である。これは、割当間隔Ｉより大きい初期値から探索した場合、設定間隔ｉが割当間隔Ｉの２以上の整数倍（例えば、ｉ＝２×Ｉ）となる恐れがあるためである。設定間隔ｉが割当間隔Ｉの２以上の整数倍の場合、設定間隔ｉと割当間隔Ｉとが一致しないにもかかわらず、設定時刻から性能が変化するまでの時刻が一定となるため、設定間隔ｉが割当間隔Ｉと誤推定されてしまう。
【００６８】
しかしながら、割当間隔Ｉより小さい初期値から探索することにより、設定間隔ｉが割当間隔Ｉの２以上の整数倍となることを防ぐことができる。したがって、割当間隔Ｉの誤推定が抑制され、割当間隔Ｉの推定精度を向上させることができる。
【００６９】
ステップＳ１１において、割当間隔推定部１４は、性能計測部１２が生成した性能の履歴データを参照して、設定時刻と、性能が変化した時刻と、の時間差を算出する。性能が変化した時刻として、例えば、性能の変化が開始した時刻Ｔ１、性能の変化が終了した時刻Ｔ２、又は性能が所定の閾値Ｔｈ以下又は以下となった時刻Ｔ３を、用いることができる。
【００７０】
割当間隔推定部１４は、ステップＳ１０及びＳ１１の処理を所定時間Ｖだけ継続し、上記の時間差を複数算出する。所定時間Ｖは、任意に設定可能であり、例えば、設定間隔ｉの１０倍程度である。
【００７１】
所定時間Ｖが経過した後、割当間隔推定部１４は、算出した複数の時間差が一定であるか判定する。割当間隔推定部１４は、例えば、複数の時間差の分散、標準偏差、又は最大値と最小値との差、が所定値以下の場合、時間差が一定であると判定する。
【００７２】
時間差が一定と判定された場合（ステップＳ１２のＹＥＳ）、処理はステップＳ１３に進む。
【００７３】
ステップＳ１３において、割当間隔推定部１４は、設定間隔ｉを、割当間隔Ｉとして推定する（Ｉ＝ｉ）。こうして推定された割当間隔Ｉを用いて、割当時刻推定部１３は、割当時刻を推定することができる。
【００７４】
一方、時間差が一定でない判定された場合（ステップＳ１２のＮＯ）、処理はステップＳ１４に進む。
【００７５】
ステップＳ１４において、割当間隔推定部１４は、設定間隔ｉを増加させる。設定間隔ｉの増加量は、割当間隔Ｉより小さいのが好ましく、例えば、１０マイクロ秒以上１ミリ秒以下の任意の値である。その後、処理はステップＳ１０に戻り、割当量設定部４は、新たな設定間隔ｉでＣＰＵの割当量を増減させる。
【００７６】
以上説明した通り、本実施形態に係るリソース制御装置は、アプリケーションの性能の変化に基づいて、ＶＭＭの割当間隔Ｉを推定することができる。これにより、ＶＭＭの割当間隔Ｉが不明な場合であっても、割当時刻を推定し、リソースの保証精度を向上させることができる。
【００７７】
（第３実施形態）
第３実施形態に係るリソース制御装置、方法、及びプログラムについて、図１１を参照して説明する。本実施形態に係るリソース制御装置は、ＶＭＭの動作履歴に基づいて、ＶＭＭの割当時刻を推定する。
【００７８】
本実施形態に係るリソース制御装置の機能構成について、図１１を参照して説明する。図１１は、本実施形態に係るリソース制御装置の機能構成を示す図である。図１１に示すように、リソース制御装置の割当時刻取得部１は、割当時刻推定部１３と、動作履歴取得部１５と、を備える。他の構成は第１実施形態と同様である。以下、割当時刻取得部１について説明する。
【００７９】
動作履歴取得部１５は、ＶＭＭの動作履歴のログファイルを取得する。ログファイルには、ＶＭＭの動作（処理）と、当該動作の時刻と、が含まれる。動作履歴取得部１５は、ＶＭＭの全ての動作のログファイルを取得してもよいし、割当処理だけのログファイルを取得してもよい。
【００８０】
動作履歴取得部１５は、例えば、ＶＭＭのＡＰＩを利用してログファイルを取得することができる。この場合、取得されるログファイルの内容は、ＡＰＩに依存する。
【００８１】
本実施形態において、割当時刻推定部１３は、動作履歴取得部１５が取得した動作履歴のログファイルを解析して、割当時刻を推定する。割当時刻の推定方法は、ログファイルの内容に応じて決定される。
【００８２】
例えば、動作履歴取得部１５が、割当処理だけのログファイルを取得した場合、割当時刻推定部１３は、ログファイルを参照して、各割当処理の時刻を割当時刻として取得すればよい。
【００８３】
また、動作履歴取得部１５が、ＶＭＭの全ての動作のログファイルを取得した場合、割当時刻推定部１３は、ログファイルを参照して、割当処理の時刻を抽出し、抽出した時刻を割当時刻として取得すればよい。動作履歴取得部１５は、例えば、ログファイルから特定の文字列が含まれた行を検索することにより、割当処理の時刻を抽出することができる。特定の文字列は、例えば、ＶＭＭが割当処理を行うプログラム関数の名称であるが、これに限られない。
【００８４】
以上説明した通り、本実施形態に係るリソース割当て装置は、ＶＭＭの動作履歴に基づいて割当時刻を取得する。したがって、アプリケーションの性能を計測することなく、割当時刻を取得することができる。
【００８５】
（第４実施形態）
第４実施形態に係るリソース制御装置、方法、及びプログラムについて、図１２を参照して説明する。本実施形態に係るリソース制御装置は、何らかの理由（例えば、ＶＭ上のアプリケーションを制御できない、アプリケーションの性能を計測できない、又はＶＭＭの動作履歴を取得できない）により、割当時刻を取得できない場合、割当時刻と設定時刻とのタイムラグが最大となった場合を想定して割当量を算出する。本実施形態に係るリソース制御装置の構成は、上記の各実施形態のいずれであってもよい。
【００８６】
以下では、本実施形態における割当量の算出方法について、図１２を参照して説明する。図１２は、割当量の算出方法を説明する図である。
【００８７】
本実施形態において、割当時刻が取得できない場合、割当量設定部４は、図１２に示すように、割当間隔Ｉで割当量を設定する。設定時刻は任意に決定可能である。また、使用量計測部２は、設定時刻にリソースの使用量を計測し、割当量算出部３は、設定時刻に計測された使用量に基づいて割当量を算出する。割当間隔Ｉは既知であってもよいし、割当間隔推定部１４により推定されてもよい。
【００８８】
このとき、ある割当量の設定時刻と割当時刻とのタイムラグｍは、Ｍ≦ｍ＜Ｉ＋Ｍとなる。これは、ｍ＜Ｍの場合、ＶＭＭによる割当処理が間に合わないためである。例えば、ｍ＜Ｍの場合、図１２の設定時刻ｔ１に設定された割当量がＶＭに割当てられるのは、時刻ｔ１＋Ｍから時刻ｔ２＋Ｍまでに含まれる割当時刻となる。
【００８９】
割当量算出部３が、上記の各実施形態と同様に割当量を算出した場合、図８を参照して説明した通り、タイムラグの期間にＶＭのリソースが不足する恐れがある。そこで、割当量算出部３は、過去に計測された使用量に基づいて、設定時刻における使用量の予測値Ｃ１を算出するとともに、その次の設定時刻における使用量の予測値Ｃ２を算出し、予測値Ｃ１，Ｃ２に基づいて、割当量を算出する。
【００９０】
例えば、割当量算出部３は、設定時刻ｔ３に設定する割当量を算出する場合、設定時刻ｔ１までに計測された使用量に基づいて、設定時刻ｔ３における使用量の予測値Ｃ１を算出するとともに、次の設定時刻ｔ５における使用量の予測値Ｃ２を算出する。予測値Ｃ１，Ｃ２は、過去に計測された使用量の移動平均などからそれぞれ算出すればよい。
【００９１】
そして、割当量算出部３は、予測値Ｃ１，Ｃ２に基づいて、設定時刻ｔ３の予測値Ｃを算出する。予測値Ｃは、例えば、予測値Ｃ１，Ｃ２の平均値や最大値である。そして、割当量算出部３は、予測値Ｃや、予測値Ｃに所定のマージンを追加した値を、設定時刻ｔ３の割当量として算出する。
【００９２】
以上説明した通り、本実施形態に係るリソース制御装置は、ある設定時刻に設定される割当量を、当該設定時刻におけるリソースの予測値Ｃ１と、次の設定時刻のリソースの使用量の予測値Ｃ２と、に基づいて算出する。これにより、リソース制御装置は、設定時刻と割当時刻とのタイムラグが最大となった場合の使用量の予測値Ｃ２を考慮した割当量を算出することができる。したがって、リソース制御装置は、割当時刻を取得できない場合のリソースの不足を抑制し、リソースを精度よく保証することができる。
【００９３】
なお、本発明は上記各実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記各実施形態に開示されている複数の構成要素を適宜組み合わせることによって種々の発明を形成できる。また例えば、各実施形態に示される全構成要素からいくつかの構成要素を削除した構成も考えられる。さらに、異なる実施形態に記載した構成要素を適宜組み合わせてもよい。
【符号の説明】
【００９４】
１：割当時刻取得部、２：使用量計測部、３：割当算出部、４：割当量設定部、１１：アプリケーション制御部、１２：性能計測部、１３：割当時刻推定部、１４：割当間隔推定部、１５：動作履歴取得部、１００：コンピュータ、１０１：ＣＰＵ、１０２：入力装置、１０３：表示装置、１０４：通信装置、１０５：記憶装置、１０６：バス
【図１】
0006495645.tif 000002
【図２】
0006495645.tif 000003
【図３】
0006495645.tif 000004
【図４】
0006495645.tif 000005
【図５】
0006495645.tif 000006
【図６】
0006495645.tif 000007
【図７】
0006495645.tif 000008
【図８】
0006495645.tif 000009
【図９】
0006495645.tif 000010
【図１０】
0006495645.tif 000011
【図１１】
0006495645.tif 000012
【図１２】
0006495645.tif 000013