特開2016-224582(P2016-224582A)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士通株式会社の特許一覧
特開2016-224582制御方法、制御装置、及び制御プログラム
<>
  • 特開2016224582-制御方法、制御装置、及び制御プログラム 図000003
  • 特開2016224582-制御方法、制御装置、及び制御プログラム 図000004
  • 特開2016224582-制御方法、制御装置、及び制御プログラム 図000005
  • 特開2016224582-制御方法、制御装置、及び制御プログラム 図000006
  • 特開2016224582-制御方法、制御装置、及び制御プログラム 図000007
  • 特開2016224582-制御方法、制御装置、及び制御プログラム 図000008
  • 特開2016224582-制御方法、制御装置、及び制御プログラム 図000009
  • 特開2016224582-制御方法、制御装置、及び制御プログラム 図000010
  • 特開2016224582-制御方法、制御装置、及び制御プログラム 図000011
  • 特開2016224582-制御方法、制御装置、及び制御プログラム 図000012
  • 特開2016224582-制御方法、制御装置、及び制御プログラム 図000013
  • 特開2016224582-制御方法、制御装置、及び制御プログラム 図000014
  • 特開2016224582-制御方法、制御装置、及び制御プログラム 図000015
  • 特開2016224582-制御方法、制御装置、及び制御プログラム 図000016
  • 特開2016224582-制御方法、制御装置、及び制御プログラム 図000017
  • 特開2016224582-制御方法、制御装置、及び制御プログラム 図000018
  • 特開2016224582-制御方法、制御装置、及び制御プログラム 図000019
  • 特開2016224582-制御方法、制御装置、及び制御プログラム 図000020
  • 特開2016224582-制御方法、制御装置、及び制御プログラム 図000021
  • 特開2016224582-制御方法、制御装置、及び制御プログラム 図000022
  • 特開2016224582-制御方法、制御装置、及び制御プログラム 図000023
  • 特開2016224582-制御方法、制御装置、及び制御プログラム 図000024
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】特開2016-224582(P2016-224582A)
(43)【公開日】2016年12月28日
(54)【発明の名称】制御方法、制御装置、及び制御プログラム
(51)【国際特許分類】
   G06F 9/50 20060101AFI20161205BHJP
   G06F 9/46 20060101ALI20161205BHJP
【FI】
   G06F9/46 462A
   G06F9/46 350
【審査請求】未請求
【請求項の数】6
【出願形態】OL
【全頁数】17
(21)【出願番号】特願2015-108187(P2015-108187)
(22)【出願日】2015年5月28日
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100103528
【弁理士】
【氏名又は名称】原田 一男
(72)【発明者】
【氏名】住田 宏己
(72)【発明者】
【氏名】吉本 安男
(57)【要約】      (修正有)
【課題】仮想マシンの動作環境におけるリソースの枯渇を抑制する。
【解決手段】情報処理装置上で仮想マシンが起動したタイミングと仮想マシンが稼働を終了したタイミングとを示す稼働情報を取得し、取得した稼働情報に基づいて、情報処理装置上での所定期間における仮想マシンの稼働予測を行い、情報処理装置における新たな仮想マシンの起動が要求された場合、稼働予測の結果に基づいて、所定期間において新たな仮想マシンの起動を許容するか否かを決定する処理を含む。
【選択図】図6
【特許請求の範囲】
【請求項1】
コンピュータに、
情報処理装置上で仮想マシンが起動したタイミングと前記仮想マシンが稼働を終了したタイミングとを示す稼働情報を取得し、
取得した前記稼働情報に基づいて、前記情報処理装置上での所定期間における前記仮想マシンの稼働予測を行い、
前記情報処理装置における新たな仮想マシンの起動が要求された場合、前記稼働予測の結果に基づいて、前記所定期間において前記新たな仮想マシンの起動を許容するか否かを決定する、
ことを実行させることを特徴とする制御プログラム。
【請求項2】
前記仮想マシンの稼働予測を行う処理において、
取得した前記稼働情報から、前記所定期間において前記仮想マシンが起動するタイミングと前記仮想マシンが稼働を終了するタイミングとを示す第2の稼働情報を生成し、
生成した前記第2の稼働情報と、各仮想マシンに割り当てられるメモリの量とに基づき、前記所定期間において前記情報処理装置で使用されるメモリの量を算出し、
前記情報処理装置が有するメモリの量と、前記所定期間において前記情報処理装置で使用されるメモリの量とから、前記所定期間において使用可能なメモリの量を算出する、
ことを特徴とする請求項1記載の制御プログラム。
【請求項3】
前記新たな仮想マシンの起動を許容するか否かを決定する処理において、
算出された前記使用可能なメモリの量と、前記所定期間において常に前記新たな仮想マシンに割り当てられるメモリの量との比較に基づき、前記所定期間において前記新たな仮想マシンの起動を許容するか否かを決定する、
ことを特徴とする請求項2記載の制御プログラム。
【請求項4】
前記コンピュータに、
前記稼働情報の少なくとも一部が欠落しているか判定し、
前記稼働情報の少なくとも一部が欠落していると判定した場合、前記情報処理装置が有するプロセッサの使用率の情報に基づき、前記欠落部分を補完するデータを生成し、前記稼働情報に付加する、
ことをさらに実行させることを特徴とする請求項1乃至3のいずれか1つ記載の制御プログラム。
【請求項5】
コンピュータが、
情報処理装置上で仮想マシンが起動したタイミングと前記仮想マシンが稼働を終了したタイミングとを示す稼働情報を取得し、
取得した前記稼働情報に基づいて、前記情報処理装置上での所定期間における前記仮想マシンの稼働予測を行い、
前記情報処理装置における新たな仮想マシンの起動が要求された場合、前記稼働予測の結果に基づいて、前記所定期間において前記新たな仮想マシンの起動を許容するか否かを決定する、
処理を実行する制御方法。
【請求項6】
情報処理装置上で仮想マシンが起動したタイミングと前記仮想マシンが稼働を終了したタイミングとを示す稼働情報を取得する取得部と、
取得した前記稼働情報に基づいて、前記情報処理装置上での所定期間における前記仮想マシンの稼働予測を行う予測部と、
前記情報処理装置における新たな仮想マシンの起動が要求された場合、前記稼働予測の結果に基づいて、前記所定期間において前記新たな仮想マシンの起動を許容するか否かを決定する決定部と、
を有する制御装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、仮想マシンの配備技術に関する。
【背景技術】
【0002】
仮想化によって物理マシンを統合することで、省エネルギー化及び省資源化を図ることができる。但し、物理マシンのメモリ量以上のメモリを、物理マシン上で稼働する仮想マシンに割り当てると、メモリオーバーコミットが発生し、仮想マシンの性能が劣化することがある。そのため、通常は、物理マシンに搭載されたメモリの量の範囲で仮想マシンを配備するように運用が行われる。
【0003】
一方で、ソフトウェア開発用のプライベートクラウド環境等においては、仮想マシンが長時間にわたって使用されないまま放置されているという実態が確認されている。そのような場合、使用されていない仮想マシンを停止してメモリを解放し、解放されたメモリを別の仮想マシンに割り当てれば、資源を有効に活用することができる。しかし、複数の利用者が同じ仮想マシンを使っているようなケースでは、各利用者は仮想マシンを停止してよいか判断できないことがある。そのため、例えば一般的な労働者が勤務する時間帯に合わせて仮想マシンを稼働させるようなスケジュールを予め作成し、そのスケジュールに従って仮想マシンの電源制御を自動で行うといった運用も行われている。
【0004】
但し、利用者によって或いは自動電源制御によって仮想マシンが起動及び停止される環境においては、仮想マシンの停止によって解放されたメモリを新規の仮想マシンに割り当てると、メモリオーバーコミットが発生することがある。なぜなら、停止している仮想マシンが再起動された場合には、その仮想マシンにメモリを割り当てなければならなくなるからである。
【0005】
よって、性能劣化を防ぐためには十分な量のリソースを仮想マシンに割り当てることが好ましいが、単純に多量のリソースを仮想マシンに割り当てるような運用を行うと、リソースを有効活用することはできない。
【0006】
仮想マシンの配備に関する従来技術においては、仮想マシンが稼働を開始する予定時刻及び稼働を停止する予定時刻等に基づいて、仮想マシンによって生じる負荷を求め、仮想マシンが配備される物理マシンを負荷に基づいて決定している。しかし、この技術は、各仮想マシンの稼働予定が決まっていることを前提とした技術であるため、稼働予定が決まっていない仮想マシンがある程度存在するような環境には有効ではない。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】国際公報第2012/117453号
【発明の概要】
【発明が解決しようとする課題】
【0008】
本発明の目的は、1つの側面では、仮想マシンの動作環境におけるリソースの枯渇を抑制するための技術を提供することである。
【課題を解決するための手段】
【0009】
1つの態様では、情報処理装置上で仮想マシンが起動したタイミングと仮想マシンが稼働を終了したタイミングとを示す稼働情報を取得し、取得した稼働情報に基づいて、情報処理装置上での所定期間における仮想マシンの稼働予測を行い、情報処理装置における新たな仮想マシンの起動が要求された場合、稼働予測の結果に基づいて、所定期間において新たな仮想マシンの起動を許容するか否かを決定する処理を含む。
【発明の効果】
【0010】
1つの側面では、仮想マシンの動作環境におけるリソースの枯渇を抑制できるようになる。
【図面の簡単な説明】
【0011】
図1図1は、システム概要を示す図である。
図2図2は、物理マシンのハードウエア構成図である。
図3図3は、物理マシンの機能ブロック図である。
図4図4は、スケジュールに従って仮想マシンの電源を制御する処理の処理フローを示す図である。
図5図5は、第2データ格納部に格納されるスケジュールデータの一例を示す図である。
図6図6は、配備要求を受信した物理マシンが実行する処理の処理フローを示す図である。
図7図7は、算出処理の処理フローを示す図である。
図8図8は、補完処理の処理フローを示す図である。
図9図9は、電源切断に関する稼働実績データを示す図である。
図10図10は、電源投入に関する稼働実績データを示す図である。
図11図11は、或る仮想マシンの稼働実績の一例を示す図である。
図12図12は、CPU使用率のデータの一例を示す図である。
図13図13は、稼働実績の一例を示す図である。
図14図14は、時間帯の抽出の一例を示す図である。
図15図15は、時間帯の抽出の一例を示す図である。
図16図16は、時間帯の抽出の一例を示す図である。
図17図17は、稼働予測データの一例を示す図である。
図18図18は、算出処理の処理フローを示す図である。
図19図19は、第1データ格納部に格納されているメモリ割り当て情報の一例を示す図である。
図20図20は、第1データ格納部に格納されている物理マシン情報の一例を示す図である。
図21図21は、メモリ量データの一例を示す図である。
図22図22は、表示されるメッセージの一例を示す図である。
【発明を実施するための形態】
【0012】
図1に、本実施の形態のシステム概要を示す。例えばインターネットであるネットワーク3には、情報処理システム1と、ユーザ端末5とが接続される。情報処理システム1は、複数の物理マシン10を有する。各物理マシン10は、ユーザ端末5から受信した要求に応じて仮想マシンの配備を実行し、また、予め定められたスケジュールに従って仮想マシンの電源制御を実行する。
【0013】
図2に、物理マシン10のハードウエア構成図を示す。物理マシン10は、1又は複数のCPU(Central Processing Unit)151と、1又は複数のメモリ152と、1又は複数のI/O(Input/Output)153とを有する。I/O153は、例えば物理ポート等である。CPU151とメモリ152とI/O153とは、バスによって接続される。
【0014】
本実施の形態の処理を実行するためのプログラムは、メモリ152にロードされてCPU151に実行され、図3に示す各種機能を実現する。図3に、物理マシン10の機能ブロック図を示す。物理マシン10は、仮想化基盤101と、判定部102と、スケジュール管理部103と、第1データ格納部105と、第2データ格納部104と、算出部106とを含む。算出部106は、抽出部107と、補完部108とを含む。
【0015】
仮想化基盤101は、例えばハイパバイザであり、1又は複数の仮想マシンを仮想化基盤101上で動作させる。各仮想マシンは、稼働状態又は停止状態にある。仮想化基盤101は、管理しているデータ(例えば、稼働実績データ及びCPU使用率のデータ等)を第1データ格納部105に格納する。仮想化基盤101は、スケジュール管理部103からの通知に基づき、仮想マシンの電源を制御する。
【0016】
スケジュール管理部103は、第2データ格納部104に格納されたスケジュールデータに基づき処理を実行し、処理結果を仮想化基盤101に通知する。スケジュール管理部103は、仮想マシン毎のスケジュールデータを算出部106に渡す。スケジュール管理部103は、新規の仮想マシンを配備することを要求する配備要求をユーザ端末5から受信した場合、受信した配備要求に含まれる、新規の仮想マシンに割り当てるメモリ量の情報を、判定部102に通知する。スケジュール管理部103は、新規の仮想マシンを配備できないことを判定部102から通知された場合に、ユーザ端末5から受信した配備要求に対する応答メッセージを、ユーザ端末5に送信する。
【0017】
算出部106における補完部108は、第1データ格納部105に格納された稼働実績データの一部が欠落している場合、第1データ格納部105に格納されたCPU使用率のデータに基づき、稼働実績データの欠落部分を補完する。算出部106における抽出部107は、第1データ格納部105に格納された稼働実績データに基づき、各仮想マシンの今後の稼働期間を表すデータ(以下、稼働予測データと呼ぶ)を生成する。算出部106は、抽出部107が生成した、各仮想マシンの稼働予測データと、第1データ格納部105に格納されたデータとに基づき、物理マシン10において使用可能なメモリ量の時系列データを生成し、判定部102に渡す。
【0018】
判定部102は、算出部106から受け取ったデータと、スケジュール管理部103から受け取ったデータとに基づき、新規の仮想マシンを物理マシン10に配備できるか判定する。新規の仮想マシンを物理マシン10に配備できる場合、判定部102は、仮想化基盤101に新規の仮想マシンを配備させる。新規の仮想マシンを物理マシン10に配備できない場合、新規の仮想マシンを配備できないことをスケジュール管理部103に通知する。
【0019】
次に、図4乃至図22を用いて、物理マシン10が実行する処理について説明する。第1に、図4及び図5を用いて、スケジュールに従って仮想マシンの電源を制御する処理について説明する。以下の説明で使用する図面においては、仮想マシンをVM(Virtual Machine)と略す。
【0020】
物理マシン10のスケジュール管理部103は、例えばシステム時計から、現在時刻の情報を取得する(図4:ステップS101)。
【0021】
スケジュール管理部103は、スケジュールデータを第2データ格納部104から読み出し、現在時刻が仮想マシンの電源制御の予定時刻であるか判定する(ステップS103)。
【0022】
図5に、第2データ格納部104に格納されるスケジュールデータの一例を示す。図5の例では、スケジュールデータは、仮想マシンのID(IDentifier)と、電源制御の種別を表す情報と、各曜日において電源制御を行うか否かを表す制御情報と、時刻の情報とを含む。電源制御の種別について、「ON」は仮想マシンの起動であり、「OFF」は仮想マシンの停止である。制御情報は、日曜日、月曜日、火曜日、水曜日、木曜日、金曜日、土曜日に電源制御を行うか否かを表す。例えば1行目のレコードは、月曜日から金曜日の08:00に仮想マシン「VM000067」を起動することを表す。スケジュールデータは、予め情報処理システム1の管理者或いはユーザによって作成されて第2データ格納部104に格納される。
【0023】
図4の説明に戻り、現在時刻が仮想マシンの電源制御の予定時刻ではない場合(ステップS103:Noルート)、ステップS101の処理に戻る。現在時刻が仮想マシンの電源制御の予定時刻である場合(ステップS103:Yesルート)、スケジュール管理部103は、仮想マシンの電源制御の実行指示を仮想化基盤101に出力する。仮想化基盤101は、実行指示に従って仮想マシンの電源を制御する(ステップS105)。そしてステップS101の処理に戻る。
【0024】
以上のように、仮想マシンの起動及び停止のパターン等を考慮して定めたスケジュールに従って仮想マシンの電源制御を実行すれば、極端にリソースが不足するような事態が発生することを抑制できるようになる。
【0025】
第2に、図6乃至図22を用いて、ユーザ端末5から配備要求を受信した場合に実行する処理について説明する。
【0026】
物理マシン10のスケジュール管理部103は、新規の仮想マシンを配備することを要求する配備要求をユーザ端末5から受信する(図6:ステップS1)。スケジュール管理部103は、受信した配備要求に含まれる、新規の仮想マシンに割り当てるメモリ量の情報を、判定部102に通知する。また、スケジュール管理部103は、配備要求を受信したことを算出部106に通知する。
【0027】
これに応じ、算出部106は、算出処理を実行する(ステップS3)。算出処理については、図7乃至図21を用いて説明する。
【0028】
算出部106における補完部108は、補完処理を実行する(図7:ステップS11)。補完処理については、図8乃至図12を用いて説明する。
【0029】
補完部108は、第1データ格納部105に格納されている稼働実績データの少なくとも一部が欠落しているか判定する(図8:ステップS51)。
【0030】
図9及び図10に、稼働実績データの一例を示す。図9は電源切断に関する稼働実績データの一例を示す図であり、図10は電源投入に関する稼働実績データの一例を示す図である。
【0031】
図11を用いて、欠落の検出について説明する。図11に、或る仮想マシンの稼働実績の一例を示す。図11には、01日月曜日から15日月曜日までにおいて或る仮想マシンが起動した時刻及び停止した時刻が示されている。なお、仮想マシンにエラーが発生している場合等においては、仮想化基盤101は稼働実績データを取得できないことがある。図11の例では、仮想マシンは05日金曜日の08:52に起動したのち、08日月曜日の08:35に再度起動しているため、05日金曜日の08:52から08日月曜日の08:35の間において一旦停止したはずである。よって、稼働実績データの一部が欠落していると判定できる。
【0032】
図8の説明に戻り、稼働実績データに欠落が無い場合(ステップS51:Noルート)、呼び出し元の処理(図7)に戻る。一方、稼働実績データの少なくとも一部が欠落している場合(ステップS51:Yesルート)、補完部108は、第1データ格納部105に格納されているCPU使用率のデータに基づき、稼働実績データの欠落部分を補完する(ステップS53)。そして呼び出し元の処理(図7)に戻る。
【0033】
図12に、CPU使用率のデータの一例を示す。図12の例では、CPU使用率のデータは、仮想マシン名と、測定の開始時刻と、測定の終了時刻と、仮想マシンのCPU使用率(例えば、測定期間における平均値)の情報とを含む。CPU使用率が所定値(例えば0)より高い場合、仮想マシンが稼働していると考えられる。そこで、補完部108は、欠落部分について、CPU使用率が所定値より高い時間帯の開始時刻及び終了時刻を含むデータを生成し、稼働実績データに付加する。
【0034】
図7の説明に戻り、抽出部107は、物理マシン10において稼働中又は停止中の仮想マシンのうち未処理の仮想マシンを1台特定する(ステップS13)。そして、抽出部107は、曜日を表す変数mをm=1と設定し、時間帯を表す変数nをn=0と設定する(ステップS15)。なお、抽出部107は、物理マシン10において稼働中又は停止中の仮想マシンの一覧を予め仮想化基盤101から取得しているものとする。
【0035】
抽出部107は、稼働実績データ及び稼働実績データに付加されたデータに基づき、直近の所定期間における曜日mのn時台(n時台は、n時00分からn時59分までの時間帯である)において、ステップS13において特定した仮想マシン(以下、処理対象の仮想マシンと呼ぶ)が稼働していたか判定する(ステップS17)。ここで、曜日1は日曜日であり、曜日2は月曜日であり、曜日3は火曜日であり、曜日4は水曜日であり、曜日5は木曜日であり、曜日6は金曜日であり、曜日7は土曜日であるとする。n時台の途中において仮想マシンが稼働を開始又は停止した場合には、n時台において仮想マシンが稼働していたものとみなす。
【0036】
ステップS17について、具体例を用いて詳細に説明する。例えば、処理対象の仮想マシンの稼働実績が、図13の稼働実績であるとする。図13には、01日月曜日から15日月曜日までにおいて、処理対象の仮想マシンが起動した時刻及び停止した時刻が示されている。ここでは、所定期間は2週間である。
【0037】
このケースにおいて、1週目及び2週目の両方において仮想マシンが稼働していた時間帯を各曜日について抽出すると、図14に示すようになる。図14においては、各曜日の各時間帯について、仮想マシンが稼働していた場合「ON」が設定されており、仮想マシンが稼働していない場合にはセルが空欄である。
【0038】
図14よりも多くの時間帯を抽出するため、曜日に関係無く1度でも仮想マシンが稼働した時間帯を抽出すると、図15に示すようになる。図15においては、各時間帯について、仮想マシンが稼働していた場合「ON」が設定されており、仮想マシンが稼働していない場合にはセルが空欄である。
【0039】
図14の方法と図15の方法の中間の方法として、各曜日について1回でも稼働した時間帯を抽出する方法も考えられる。この方法によって時間帯を抽出すると、図16に示すようになる。図16においては、各曜日の各時間帯について、仮想マシンが稼働していた場合「ON」が設定されており、仮想マシンが稼働していない場合にはセルが空欄である。図16において、網掛けが付されたセルは、図14の例においては抽出されなかった時間帯のマスである。
【0040】
なお、抽出部107は、スケジュール管理部103から受け取ったスケジュールデータに基づき、仮想マシンが稼働することが予定されている時間帯についても「ON」を設定してもよい。このようにすれば、起動されてからあまり時間が経っておらず十分な稼働実績データを得られない場合等においても適切に抽出を行うことができるようになる。
【0041】
また、所定期間を1週間にすることで、1週間以上前の古い稼働実績に影響されることなく、ユーザの最近の動向をより重視することも可能である。
【0042】
図7の説明に戻り、処理対象の仮想マシンが直近の所定期間における曜日mのn時台において稼働している場合(ステップS19:Yesルート)、抽出部107は、曜日mのn時台を「ON」に設定する(ステップS21)。一方、処理対象の仮想マシンが直近の所定期間における曜日mのn時台において稼働していない場合(ステップS19:Noルート)、抽出部107は、曜日mのn時台を「OFF」に設定する(ステップS23)。
【0043】
抽出部107は、nを1インクリメントし(ステップS25)、n>23が成立するか判定する(ステップS27)。n>23が成立しない場合(ステップS27:Noルート)、ステップS17の処理に戻る。一方、n>23が成立する場合(ステップS27:Yesルート)、抽出部107は、mを1インクリメントし且つnを0に設定し(ステップS29)、m>7が成立するか判定する(ステップS31)。
【0044】
m>7が成立しない場合(ステップS31:Noルート)、ステップS17の処理に戻る。一方、m>7が成立する場合(ステップS31:Yesルート)、抽出部107は、未処理の仮想マシンが有るか判定する(ステップS33)。未処理の仮想マシンが有る場合(ステップS33:Yesルート)、ステップS13の処理に戻る。一方、未処理の仮想マシンが無い場合(ステップS33:Noルート)、処理は端子Aを介して図18のステップS35に移行する。
【0045】
ここまでの処理によって、図17に示すような稼働予測データが生成される。図17の例では、各仮想マシンが各曜日の各時間帯において稼働するか否かを示す情報が格納される。図17の例では月曜日についてのデータしか示されていないが、実際には全ての曜日についてのデータが生成される。このように、本実施の形態においては、今後稼働する可能性が時間帯を過去の稼働実績から推定している(すなわち、稼働予測を行っている)。なお、生成された稼働予測データは、メモリ152に格納される。
【0046】
図18の説明に移行し、算出部106は、m=1と設定し且つn=0と設定し(図18:ステップS35)、曜日mのn時台に「ON」が設定されている仮想マシンを、稼働予測データから特定する(ステップS37)。
【0047】
算出部106は、ステップS37において特定した仮想マシンの情報と、第1データ格納部105に格納されているメモリ割り当て情報とに基づき、ステップS37において特定した仮想マシンに割り当てるメモリ量の合計Smnを算出する(ステップS39)。
【0048】
図19に、第1データ格納部105に格納されているメモリ割り当て情報の一例を示す。図19の例では、VM名と、電源状態を示す情報と、論理CPU数と、総物理メモリ量と、ホスト名とが格納される。論理CPU数は、仮想マシンに割り当てられる論理CPUの数である。総物理メモリ量は、仮想マシンに割り当てられている物理メモリ量の総量である。但し、停止状態の仮想マシンについては、総物理メモリ量は、割り当てられる予定の物理メモリ量の総量である。ホスト名は、仮想マシンを実行する物理マシン10の名前である。
【0049】
図18の説明に戻り、算出部106は、第1データ格納部105に格納されている物理マシン情報に基づき、曜日mのn時台において使用可能なメモリの量Amnを、Amn=物理マシン10の物理メモリ量−Smnによって算出する(ステップS41)。
【0050】
図20に、第1データ格納部105に格納されている物理マシン情報の一例を示す。図20の例では、ホスト名と、コネクション状態を示す情報と、電源状態を示す情報と、物理マシン10に搭載された物理メモリの総量と、或る時点におけるメモリ使用量とが格納される。
【0051】
図18の説明に戻り、算出部106は、nを1インクリメントし(ステップS43)、n>23が成立するか判定する(ステップS45)。n>23が成立しない場合(ステップS45:Noルート)、ステップS37の処理に戻る。一方、n>23が成立する場合(ステップS45:Yesルート)、抽出部107は、mを1インクリメントし且つnを0に設定し(ステップS47)、m>7が成立するか判定する(ステップS49)。
【0052】
m>7が成立しない場合(ステップS49:Noルート)、ステップS37の処理に戻る。一方、m>7が成立する場合(ステップS49:Yesルート)、呼び出し元(図6)の処理に戻る。
【0053】
以上のような処理を実行すれば、例えば図21に示すように、各曜日の各時間帯において使用可能なメモリ量のデータ(以下、メモリ量データと呼ぶ)が生成される。単位はギガバイトである。生成されたメモリ量データは、判定部102に渡される。
【0054】
図6の説明に戻り、判定部102は、算出処理において生成されたメモリ量データと、スケジュール管理部103から受け取った、新規の仮想マシンに割り当てるメモリ量の情報とに基づき、全曜日の全時間帯においてAmnが新規の仮想マシンに割り当てるメモリ量より多いか判定する(ステップS5)。なお、新規の仮想マシンを稼働させる時間帯を指定するデータを配備要求が含む場合には、その時間帯のみについて比較を行うようにしてもよい。これにより、メモリリソースをより有効に活用できるようになる。
【0055】
全曜日の全時間帯においてAmnが新規の仮想マシンに割り当てるメモリ量より多い場合(ステップS5:Yesルート)、スケジュール管理部103は、配備要求において指定された仮想マシンの起動指示を仮想化基盤101に出力する。これに応じ、仮想化基盤101は、起動指示に従い仮想マシンを起動する(ステップS7)。そして処理は終了する。
【0056】
一方、いずれかの時間帯においてAmnが新規の仮想マシンに割り当てるメモリ量以下である場合(ステップS5:Noルート)、スケジュール管理部103は、配備要求において指定された仮想マシンを起動することができないことを示すメッセージを生成し、ユーザ端末5に送信する(ステップS9)。そして処理は終了する。なお、新規の仮想マシンに割り当てるメモリ量を減らしたり、或いは時間帯を限定することで新規の仮想マシンを起動することができる場合には、その旨を示す情報をメッセージに付加してもよい。
【0057】
ユーザ端末5は、受信したメッセージをディスプレイ等の表示装置に表示させる。図22に、ユーザ端末5の表示装置に表示されるメッセージの一例を示す。ユーザは、このようなメッセージを確認することにより、例えば新規のマシンを別のタイミングで起動したり、割り当てるメモリ量を調整するなど、適切な対策を行うことができる。
【0058】
以上のような処理を実行すれば、メモリオーバーコミットによる性能劣化が発生することを防ぎつつ、物理マシン10のリソースを有効に活用できるようになる。特に、各仮想マシンに多めにメモリ量を割り当てることでメモリオーバーコミットを防ぐというような運用を行わなくても済むようになる。
【0059】
また、或るプロジェクト用の仮想マシンに割り当てられていた多量のメモリが、そのプロジェクトの終了に伴い一度に解放されたような場合には、解放された多量のメモリを迅速に別の仮想マシンに割り当てることができるようになる。これに対し、例えばメモリ使用量のピーク値に基づいてメモリの割り当てを決めるような技術によれば、翌日にメモリ使用量のピーク値が減少したことを確認するまでは解放されたメモリを有効活用することができない。
【0060】
以上本発明の一実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上で説明した物理マシン10の機能ブロック構成は実際のプログラムモジュール構成に一致しない場合もある。
【0061】
また、上で説明した各テーブルの構成は一例であって、上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ処理の順番を入れ替えることも可能である。さらに、並列に実行させるようにしても良い。
【0062】
例えば、仮想化基盤101及び仮想化基盤101上で稼働する仮想マシンが複数の物理マシン10に分散していてもよい。また、仮想化基盤101及び仮想化基盤101が実行される物理マシン10と、それ以外の部分を実行する物理マシン10とが異なっていてもよい。
【0063】
また、CPU使用率のデータだけを用いて稼働予測データを生成しても良い。
【0064】
以上述べた本発明の実施の形態をまとめると、以下のようになる。
【0065】
本実施の形態に係る制御方法は、(A)情報処理装置上で仮想マシンが起動したタイミングと仮想マシンが稼働を終了したタイミングとを示す稼働情報を取得し、(B)取得した稼働情報に基づいて、情報処理装置上での所定期間における仮想マシンの稼働予測を行い、(C)情報処理装置における新たな仮想マシンの起動が要求された場合、稼働予測の結果に基づいて、所定期間において新たな仮想マシンの起動を許容するか否かを決定する処理を含む。
【0066】
このようにすれば、仮想マシンが許容限度を超えて起動されることを防げるので、仮想マシンの動作環境においてリソースが枯渇することを抑制できるようになる。
【0067】
また、仮想マシンの稼働予測を行う処理において、(b1)取得した稼働情報から、所定期間において仮想マシンが起動するタイミングと仮想マシンが稼働を終了するタイミングとを示す第2の稼働情報を生成し、(b2)生成した第2の稼働情報と、各仮想マシンに割り当てられるメモリの量とに基づき、所定期間において情報処理装置で使用されるメモリの量を算出し、(b3)情報処理装置が有するメモリの量と、所定期間において情報処理装置で使用されるメモリの量とから、所定期間において使用可能なメモリの量を算出してもよい。このようにすれば、仮想マシンの動作環境におけるメモリリソースの枯渇を抑制できるようになる。
【0068】
また、新たな仮想マシンの起動を許容するか否かを決定する処理において、(c1)算出された使用可能なメモリの量と、所定期間において常に新たな仮想マシンに割り当てられるメモリの量との比較に基づき、所定期間において新たな仮想マシンの起動を許容するか否かを決定してもよい。このようにすれば、メモリオーバーコミットの発生を抑制できるようになる。
【0069】
また、本制御方法は、(D)稼働情報の少なくとも一部が欠落しているか判定し、(E)稼働情報の少なくとも一部が欠落していると判定した場合、情報処理装置が有するプロセッサの使用率の情報に基づき、欠落部分に対応する期間において仮想マシンが稼働しているか判定し、(F)欠落部分に対応する期間において仮想マシンが稼働していると判定した場合、欠落部分を補完するデータを生成し、稼働情報に付加する処理をさらに含んでもよい。このようにすれば、障害等によって稼働情報の少なくとも一部が欠落してしまった場合に対処できるようになる。
【0070】
なお、上記方法による処理をコンピュータに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、CD−ROM、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。
【0071】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【0072】
(付記1)
コンピュータに、
情報処理装置上で仮想マシンが起動したタイミングと前記仮想マシンが稼働を終了したタイミングとを示す稼働情報を取得し、
取得した前記稼働情報に基づいて、前記情報処理装置上での所定期間における前記仮想マシンの稼働予測を行い、
前記情報処理装置における新たな仮想マシンの起動が要求された場合、前記稼働予測の結果に基づいて、前記所定期間において前記新たな仮想マシンの起動を許容するか否かを決定する、
ことを実行させることを特徴とする制御プログラム。
【0073】
(付記2)
前記仮想マシンの稼働予測を行う処理において、
取得した前記稼働情報から、前記所定期間において前記仮想マシンが起動するタイミングと前記仮想マシンが稼働を終了するタイミングとを示す第2の稼働情報を生成し、
生成した前記第2の稼働情報と、各仮想マシンに割り当てられるメモリの量とに基づき、前記所定期間において前記情報処理装置で使用されるメモリの量を算出し、
前記情報処理装置が有するメモリの量と、前記所定期間において前記情報処理装置で使用されるメモリの量とから、前記所定期間において使用可能なメモリの量を算出する、
ことを特徴とする付記1記載の制御プログラム。
【0074】
(付記3)
前記新たな仮想マシンの起動を許容するか否かを決定する処理において、
算出された前記使用可能なメモリの量と、前記所定期間において常に前記新たな仮想マシンに割り当てられるメモリの量との比較に基づき、前記所定期間において前記新たな仮想マシンの起動を許容するか否かを決定する、
ことを特徴とする付記2記載の制御プログラム。
【0075】
(付記4)
前記コンピュータに、
前記稼働情報の少なくとも一部が欠落しているか判定し、
前記稼働情報の少なくとも一部が欠落していると判定した場合、前記情報処理装置が有するプロセッサの使用率の情報に基づき、前記欠落部分を補完するデータを生成し、前記稼働情報に付加する、
ことをさらに実行させることを特徴とする付記1乃至3のいずれか1つ記載の制御プログラム。
【0076】
(付記5)
コンピュータが、
情報処理装置上で仮想マシンが起動したタイミングと前記仮想マシンが稼働を終了したタイミングとを示す稼働情報を取得し、
取得した前記稼働情報に基づいて、前記情報処理装置上での所定期間における前記仮想マシンの稼働予測を行い、
前記情報処理装置における新たな仮想マシンの起動が要求された場合、前記稼働予測の結果に基づいて、前記所定期間において前記新たな仮想マシンの起動を許容するか否かを決定する、
処理を実行する制御方法。
【0077】
(付記6)
情報処理装置上で仮想マシンが起動したタイミングと前記仮想マシンが稼働を終了したタイミングとを示す稼働情報を取得する取得部と、
取得した前記稼働情報に基づいて、前記情報処理装置上での所定期間における前記仮想マシンの稼働予測を行う予測部と、
前記情報処理装置における新たな仮想マシンの起動が要求された場合、前記稼働予測の結果に基づいて、前記所定期間において前記新たな仮想マシンの起動を許容するか否かを決定する決定部と、
を有する制御装置。
【符号の説明】
【0078】
1 情報処理システム 3 ネットワーク
5 ユーザ端末 10 物理マシン
151 CPU 152 メモリ
153 I/O 101 仮想化基盤
102 判定部 103 スケジュール管理部
104 第2データ格納部 105 第1データ格納部
106 算出部 107 抽出部
108 補完部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22