(57)【要約】      （修正有）【課題】仮想マシンの動作環境におけるリソースの枯渇を抑制する。【解決手段】情報処理装置上で仮想マシンが起動したタイミングと仮想マシンが稼働を終了したタイミングとを示す稼働情報を取得し、取得した稼働情報に基づいて、情報処理装置上での所定期間における仮想マシンの稼働予測を行い、情報処理装置における新たな仮想マシンの起動が要求された場合、稼働予測の結果に基づいて、所定期間において新たな仮想マシンの起動を許容するか否かを決定する処理を含む。【選択図】図６
2016224582.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
情報処理装置上で仮想マシンが起動したタイミングと前記仮想マシンが稼働を終了したタイミングとを示す稼働情報を取得し、
取得した前記稼働情報に基づいて、前記情報処理装置上での所定期間における前記仮想マシンの稼働予測を行い、
前記情報処理装置における新たな仮想マシンの起動が要求された場合、前記稼働予測の結果に基づいて、前記所定期間において前記新たな仮想マシンの起動を許容するか否かを決定する、
ことを実行させることを特徴とする制御プログラム。
【請求項２】
前記仮想マシンの稼働予測を行う処理において、
取得した前記稼働情報から、前記所定期間において前記仮想マシンが起動するタイミングと前記仮想マシンが稼働を終了するタイミングとを示す第２の稼働情報を生成し、
生成した前記第２の稼働情報と、各仮想マシンに割り当てられるメモリの量とに基づき、前記所定期間において前記情報処理装置で使用されるメモリの量を算出し、
前記情報処理装置が有するメモリの量と、前記所定期間において前記情報処理装置で使用されるメモリの量とから、前記所定期間において使用可能なメモリの量を算出する、
ことを特徴とする請求項１記載の制御プログラム。
【請求項３】
前記新たな仮想マシンの起動を許容するか否かを決定する処理において、
算出された前記使用可能なメモリの量と、前記所定期間において常に前記新たな仮想マシンに割り当てられるメモリの量との比較に基づき、前記所定期間において前記新たな仮想マシンの起動を許容するか否かを決定する、
ことを特徴とする請求項２記載の制御プログラム。
【請求項４】
前記コンピュータに、
前記稼働情報の少なくとも一部が欠落しているか判定し、
前記稼働情報の少なくとも一部が欠落していると判定した場合、前記情報処理装置が有するプロセッサの使用率の情報に基づき、前記欠落部分を補完するデータを生成し、前記稼働情報に付加する、
ことをさらに実行させることを特徴とする請求項１乃至３のいずれか１つ記載の制御プログラム。
【請求項５】
コンピュータが、
情報処理装置上で仮想マシンが起動したタイミングと前記仮想マシンが稼働を終了したタイミングとを示す稼働情報を取得し、
取得した前記稼働情報に基づいて、前記情報処理装置上での所定期間における前記仮想マシンの稼働予測を行い、
前記情報処理装置における新たな仮想マシンの起動が要求された場合、前記稼働予測の結果に基づいて、前記所定期間において前記新たな仮想マシンの起動を許容するか否かを決定する、
処理を実行する制御方法。
【請求項６】
情報処理装置上で仮想マシンが起動したタイミングと前記仮想マシンが稼働を終了したタイミングとを示す稼働情報を取得する取得部と、
取得した前記稼働情報に基づいて、前記情報処理装置上での所定期間における前記仮想マシンの稼働予測を行う予測部と、
前記情報処理装置における新たな仮想マシンの起動が要求された場合、前記稼働予測の結果に基づいて、前記所定期間において前記新たな仮想マシンの起動を許容するか否かを決定する決定部と、
を有する制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想マシンの配備技術に関する。
【背景技術】
【０００２】
仮想化によって物理マシンを統合することで、省エネルギー化及び省資源化を図ることができる。但し、物理マシンのメモリ量以上のメモリを、物理マシン上で稼働する仮想マシンに割り当てると、メモリオーバーコミットが発生し、仮想マシンの性能が劣化することがある。そのため、通常は、物理マシンに搭載されたメモリの量の範囲で仮想マシンを配備するように運用が行われる。
【０００３】
一方で、ソフトウェア開発用のプライベートクラウド環境等においては、仮想マシンが長時間にわたって使用されないまま放置されているという実態が確認されている。そのような場合、使用されていない仮想マシンを停止してメモリを解放し、解放されたメモリを別の仮想マシンに割り当てれば、資源を有効に活用することができる。しかし、複数の利用者が同じ仮想マシンを使っているようなケースでは、各利用者は仮想マシンを停止してよいか判断できないことがある。そのため、例えば一般的な労働者が勤務する時間帯に合わせて仮想マシンを稼働させるようなスケジュールを予め作成し、そのスケジュールに従って仮想マシンの電源制御を自動で行うといった運用も行われている。
【０００４】
但し、利用者によって或いは自動電源制御によって仮想マシンが起動及び停止される環境においては、仮想マシンの停止によって解放されたメモリを新規の仮想マシンに割り当てると、メモリオーバーコミットが発生することがある。なぜなら、停止している仮想マシンが再起動された場合には、その仮想マシンにメモリを割り当てなければならなくなるからである。
【０００５】
よって、性能劣化を防ぐためには十分な量のリソースを仮想マシンに割り当てることが好ましいが、単純に多量のリソースを仮想マシンに割り当てるような運用を行うと、リソースを有効活用することはできない。
【０００６】
仮想マシンの配備に関する従来技術においては、仮想マシンが稼働を開始する予定時刻及び稼働を停止する予定時刻等に基づいて、仮想マシンによって生じる負荷を求め、仮想マシンが配備される物理マシンを負荷に基づいて決定している。しかし、この技術は、各仮想マシンの稼働予定が決まっていることを前提とした技術であるため、稼働予定が決まっていない仮想マシンがある程度存在するような環境には有効ではない。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】国際公報第２０１２／１１７４５３号
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明の目的は、１つの側面では、仮想マシンの動作環境におけるリソースの枯渇を抑制するための技術を提供することである。
【課題を解決するための手段】
【０００９】
１つの態様では、情報処理装置上で仮想マシンが起動したタイミングと仮想マシンが稼働を終了したタイミングとを示す稼働情報を取得し、取得した稼働情報に基づいて、情報処理装置上での所定期間における仮想マシンの稼働予測を行い、情報処理装置における新たな仮想マシンの起動が要求された場合、稼働予測の結果に基づいて、所定期間において新たな仮想マシンの起動を許容するか否かを決定する処理を含む。
【発明の効果】
【００１０】
１つの側面では、仮想マシンの動作環境におけるリソースの枯渇を抑制できるようになる。
【図面の簡単な説明】
【００１１】
【図１】図１は、システム概要を示す図である。
【図２】図２は、物理マシンのハードウエア構成図である。
【図３】図３は、物理マシンの機能ブロック図である。
【図４】図４は、スケジュールに従って仮想マシンの電源を制御する処理の処理フローを示す図である。
【図５】図５は、第２データ格納部に格納されるスケジュールデータの一例を示す図である。
【図６】図６は、配備要求を受信した物理マシンが実行する処理の処理フローを示す図である。
【図７】図７は、算出処理の処理フローを示す図である。
【図８】図８は、補完処理の処理フローを示す図である。
【図９】図９は、電源切断に関する稼働実績データを示す図である。
【図１０】図１０は、電源投入に関する稼働実績データを示す図である。
【図１１】図１１は、或る仮想マシンの稼働実績の一例を示す図である。
【図１２】図１２は、ＣＰＵ使用率のデータの一例を示す図である。
【図１３】図１３は、稼働実績の一例を示す図である。
【図１４】図１４は、時間帯の抽出の一例を示す図である。
【図１５】図１５は、時間帯の抽出の一例を示す図である。
【図１６】図１６は、時間帯の抽出の一例を示す図である。
【図１７】図１７は、稼働予測データの一例を示す図である。
【図１８】図１８は、算出処理の処理フローを示す図である。
【図１９】図１９は、第１データ格納部に格納されているメモリ割り当て情報の一例を示す図である。
【図２０】図２０は、第１データ格納部に格納されている物理マシン情報の一例を示す図である。
【図２１】図２１は、メモリ量データの一例を示す図である。
【図２２】図２２は、表示されるメッセージの一例を示す図である。
【発明を実施するための形態】
【００１２】
図１に、本実施の形態のシステム概要を示す。例えばインターネットであるネットワーク３には、情報処理システム１と、ユーザ端末５とが接続される。情報処理システム１は、複数の物理マシン１０を有する。各物理マシン１０は、ユーザ端末５から受信した要求に応じて仮想マシンの配備を実行し、また、予め定められたスケジュールに従って仮想マシンの電源制御を実行する。
【００１３】
図２に、物理マシン１０のハードウエア構成図を示す。物理マシン１０は、１又は複数のＣＰＵ（Central Processing Unit）１５１と、１又は複数のメモリ１５２と、１又は複数のＩ／Ｏ（Input/Output）１５３とを有する。Ｉ／Ｏ１５３は、例えば物理ポート等である。ＣＰＵ１５１とメモリ１５２とＩ／Ｏ１５３とは、バスによって接続される。
【００１４】
本実施の形態の処理を実行するためのプログラムは、メモリ１５２にロードされてＣＰＵ１５１に実行され、図３に示す各種機能を実現する。図３に、物理マシン１０の機能ブロック図を示す。物理マシン１０は、仮想化基盤１０１と、判定部１０２と、スケジュール管理部１０３と、第１データ格納部１０５と、第２データ格納部１０４と、算出部１０６とを含む。算出部１０６は、抽出部１０７と、補完部１０８とを含む。
【００１５】
仮想化基盤１０１は、例えばハイパバイザであり、１又は複数の仮想マシンを仮想化基盤１０１上で動作させる。各仮想マシンは、稼働状態又は停止状態にある。仮想化基盤１０１は、管理しているデータ（例えば、稼働実績データ及びＣＰＵ使用率のデータ等）を第１データ格納部１０５に格納する。仮想化基盤１０１は、スケジュール管理部１０３からの通知に基づき、仮想マシンの電源を制御する。
【００１６】
スケジュール管理部１０３は、第２データ格納部１０４に格納されたスケジュールデータに基づき処理を実行し、処理結果を仮想化基盤１０１に通知する。スケジュール管理部１０３は、仮想マシン毎のスケジュールデータを算出部１０６に渡す。スケジュール管理部１０３は、新規の仮想マシンを配備することを要求する配備要求をユーザ端末５から受信した場合、受信した配備要求に含まれる、新規の仮想マシンに割り当てるメモリ量の情報を、判定部１０２に通知する。スケジュール管理部１０３は、新規の仮想マシンを配備できないことを判定部１０２から通知された場合に、ユーザ端末５から受信した配備要求に対する応答メッセージを、ユーザ端末５に送信する。
【００１７】
算出部１０６における補完部１０８は、第１データ格納部１０５に格納された稼働実績データの一部が欠落している場合、第１データ格納部１０５に格納されたＣＰＵ使用率のデータに基づき、稼働実績データの欠落部分を補完する。算出部１０６における抽出部１０７は、第１データ格納部１０５に格納された稼働実績データに基づき、各仮想マシンの今後の稼働期間を表すデータ（以下、稼働予測データと呼ぶ）を生成する。算出部１０６は、抽出部１０７が生成した、各仮想マシンの稼働予測データと、第１データ格納部１０５に格納されたデータとに基づき、物理マシン１０において使用可能なメモリ量の時系列データを生成し、判定部１０２に渡す。
【００１８】
判定部１０２は、算出部１０６から受け取ったデータと、スケジュール管理部１０３から受け取ったデータとに基づき、新規の仮想マシンを物理マシン１０に配備できるか判定する。新規の仮想マシンを物理マシン１０に配備できる場合、判定部１０２は、仮想化基盤１０１に新規の仮想マシンを配備させる。新規の仮想マシンを物理マシン１０に配備できない場合、新規の仮想マシンを配備できないことをスケジュール管理部１０３に通知する。
【００１９】
次に、図４乃至図２２を用いて、物理マシン１０が実行する処理について説明する。第１に、図４及び図５を用いて、スケジュールに従って仮想マシンの電源を制御する処理について説明する。以下の説明で使用する図面においては、仮想マシンをＶＭ（Virtual Machine）と略す。
【００２０】
物理マシン１０のスケジュール管理部１０３は、例えばシステム時計から、現在時刻の情報を取得する（図４：ステップＳ１０１）。
【００２１】
スケジュール管理部１０３は、スケジュールデータを第２データ格納部１０４から読み出し、現在時刻が仮想マシンの電源制御の予定時刻であるか判定する（ステップＳ１０３）。
【００２２】
図５に、第２データ格納部１０４に格納されるスケジュールデータの一例を示す。図５の例では、スケジュールデータは、仮想マシンのＩＤ（IDentifier）と、電源制御の種別を表す情報と、各曜日において電源制御を行うか否かを表す制御情報と、時刻の情報とを含む。電源制御の種別について、「ＯＮ」は仮想マシンの起動であり、「ＯＦＦ」は仮想マシンの停止である。制御情報は、日曜日、月曜日、火曜日、水曜日、木曜日、金曜日、土曜日に電源制御を行うか否かを表す。例えば１行目のレコードは、月曜日から金曜日の０８：００に仮想マシン「ＶＭ００００６７」を起動することを表す。スケジュールデータは、予め情報処理システム１の管理者或いはユーザによって作成されて第２データ格納部１０４に格納される。
【００２３】
図４の説明に戻り、現在時刻が仮想マシンの電源制御の予定時刻ではない場合（ステップＳ１０３：Ｎｏルート）、ステップＳ１０１の処理に戻る。現在時刻が仮想マシンの電源制御の予定時刻である場合（ステップＳ１０３：Ｙｅｓルート）、スケジュール管理部１０３は、仮想マシンの電源制御の実行指示を仮想化基盤１０１に出力する。仮想化基盤１０１は、実行指示に従って仮想マシンの電源を制御する（ステップＳ１０５）。そしてステップＳ１０１の処理に戻る。
【００２４】
以上のように、仮想マシンの起動及び停止のパターン等を考慮して定めたスケジュールに従って仮想マシンの電源制御を実行すれば、極端にリソースが不足するような事態が発生することを抑制できるようになる。
【００２５】
第２に、図６乃至図２２を用いて、ユーザ端末５から配備要求を受信した場合に実行する処理について説明する。
【００２６】
物理マシン１０のスケジュール管理部１０３は、新規の仮想マシンを配備することを要求する配備要求をユーザ端末５から受信する（図６：ステップＳ１）。スケジュール管理部１０３は、受信した配備要求に含まれる、新規の仮想マシンに割り当てるメモリ量の情報を、判定部１０２に通知する。また、スケジュール管理部１０３は、配備要求を受信したことを算出部１０６に通知する。
【００２７】
これに応じ、算出部１０６は、算出処理を実行する（ステップＳ３）。算出処理については、図７乃至図２１を用いて説明する。
【００２８】
算出部１０６における補完部１０８は、補完処理を実行する（図７：ステップＳ１１）。補完処理については、図８乃至図１２を用いて説明する。
【００２９】
補完部１０８は、第１データ格納部１０５に格納されている稼働実績データの少なくとも一部が欠落しているか判定する（図８：ステップＳ５１）。
【００３０】
図９及び図１０に、稼働実績データの一例を示す。図９は電源切断に関する稼働実績データの一例を示す図であり、図１０は電源投入に関する稼働実績データの一例を示す図である。
【００３１】
図１１を用いて、欠落の検出について説明する。図１１に、或る仮想マシンの稼働実績の一例を示す。図１１には、０１日月曜日から１５日月曜日までにおいて或る仮想マシンが起動した時刻及び停止した時刻が示されている。なお、仮想マシンにエラーが発生している場合等においては、仮想化基盤１０１は稼働実績データを取得できないことがある。図１１の例では、仮想マシンは０５日金曜日の０８：５２に起動したのち、０８日月曜日の０８：３５に再度起動しているため、０５日金曜日の０８：５２から０８日月曜日の０８：３５の間において一旦停止したはずである。よって、稼働実績データの一部が欠落していると判定できる。
【００３２】
図８の説明に戻り、稼働実績データに欠落が無い場合（ステップＳ５１：Ｎｏルート）、呼び出し元の処理（図７）に戻る。一方、稼働実績データの少なくとも一部が欠落している場合（ステップＳ５１：Ｙｅｓルート）、補完部１０８は、第１データ格納部１０５に格納されているＣＰＵ使用率のデータに基づき、稼働実績データの欠落部分を補完する（ステップＳ５３）。そして呼び出し元の処理（図７）に戻る。
【００３３】
図１２に、ＣＰＵ使用率のデータの一例を示す。図１２の例では、ＣＰＵ使用率のデータは、仮想マシン名と、測定の開始時刻と、測定の終了時刻と、仮想マシンのＣＰＵ使用率（例えば、測定期間における平均値）の情報とを含む。ＣＰＵ使用率が所定値（例えば０）より高い場合、仮想マシンが稼働していると考えられる。そこで、補完部１０８は、欠落部分について、ＣＰＵ使用率が所定値より高い時間帯の開始時刻及び終了時刻を含むデータを生成し、稼働実績データに付加する。
【００３４】
図７の説明に戻り、抽出部１０７は、物理マシン１０において稼働中又は停止中の仮想マシンのうち未処理の仮想マシンを１台特定する（ステップＳ１３）。そして、抽出部１０７は、曜日を表す変数ｍをｍ＝１と設定し、時間帯を表す変数ｎをｎ＝０と設定する（ステップＳ１５）。なお、抽出部１０７は、物理マシン１０において稼働中又は停止中の仮想マシンの一覧を予め仮想化基盤１０１から取得しているものとする。
【００３５】
抽出部１０７は、稼働実績データ及び稼働実績データに付加されたデータに基づき、直近の所定期間における曜日ｍのｎ時台（ｎ時台は、ｎ時００分からｎ時５９分までの時間帯である）において、ステップＳ１３において特定した仮想マシン（以下、処理対象の仮想マシンと呼ぶ）が稼働していたか判定する（ステップＳ１７）。ここで、曜日１は日曜日であり、曜日２は月曜日であり、曜日３は火曜日であり、曜日４は水曜日であり、曜日５は木曜日であり、曜日６は金曜日であり、曜日７は土曜日であるとする。ｎ時台の途中において仮想マシンが稼働を開始又は停止した場合には、ｎ時台において仮想マシンが稼働していたものとみなす。
【００３６】
ステップＳ１７について、具体例を用いて詳細に説明する。例えば、処理対象の仮想マシンの稼働実績が、図１３の稼働実績であるとする。図１３には、０１日月曜日から１５日月曜日までにおいて、処理対象の仮想マシンが起動した時刻及び停止した時刻が示されている。ここでは、所定期間は２週間である。
【００３７】
このケースにおいて、１週目及び２週目の両方において仮想マシンが稼働していた時間帯を各曜日について抽出すると、図１４に示すようになる。図１４においては、各曜日の各時間帯について、仮想マシンが稼働していた場合「ＯＮ」が設定されており、仮想マシンが稼働していない場合にはセルが空欄である。
【００３８】
図１４よりも多くの時間帯を抽出するため、曜日に関係無く１度でも仮想マシンが稼働した時間帯を抽出すると、図１５に示すようになる。図１５においては、各時間帯について、仮想マシンが稼働していた場合「ＯＮ」が設定されており、仮想マシンが稼働していない場合にはセルが空欄である。
【００３９】
図１４の方法と図１５の方法の中間の方法として、各曜日について１回でも稼働した時間帯を抽出する方法も考えられる。この方法によって時間帯を抽出すると、図１６に示すようになる。図１６においては、各曜日の各時間帯について、仮想マシンが稼働していた場合「ＯＮ」が設定されており、仮想マシンが稼働していない場合にはセルが空欄である。図１６において、網掛けが付されたセルは、図１４の例においては抽出されなかった時間帯のマスである。
【００４０】
なお、抽出部１０７は、スケジュール管理部１０３から受け取ったスケジュールデータに基づき、仮想マシンが稼働することが予定されている時間帯についても「ＯＮ」を設定してもよい。このようにすれば、起動されてからあまり時間が経っておらず十分な稼働実績データを得られない場合等においても適切に抽出を行うことができるようになる。
【００４１】
また、所定期間を１週間にすることで、１週間以上前の古い稼働実績に影響されることなく、ユーザの最近の動向をより重視することも可能である。
【００４２】
図７の説明に戻り、処理対象の仮想マシンが直近の所定期間における曜日ｍのｎ時台において稼働している場合（ステップＳ１９：Ｙｅｓルート）、抽出部１０７は、曜日ｍのｎ時台を「ＯＮ」に設定する（ステップＳ２１）。一方、処理対象の仮想マシンが直近の所定期間における曜日ｍのｎ時台において稼働していない場合（ステップＳ１９：Ｎｏルート）、抽出部１０７は、曜日ｍのｎ時台を「ＯＦＦ」に設定する（ステップＳ２３）。
【００４３】
抽出部１０７は、ｎを１インクリメントし（ステップＳ２５）、ｎ＞２３が成立するか判定する（ステップＳ２７）。ｎ＞２３が成立しない場合（ステップＳ２７：Ｎｏルート）、ステップＳ１７の処理に戻る。一方、ｎ＞２３が成立する場合（ステップＳ２７：Ｙｅｓルート）、抽出部１０７は、ｍを１インクリメントし且つｎを０に設定し（ステップＳ２９）、ｍ＞７が成立するか判定する（ステップＳ３１）。
【００４４】
ｍ＞７が成立しない場合（ステップＳ３１：Ｎｏルート）、ステップＳ１７の処理に戻る。一方、ｍ＞７が成立する場合（ステップＳ３１：Ｙｅｓルート）、抽出部１０７は、未処理の仮想マシンが有るか判定する（ステップＳ３３）。未処理の仮想マシンが有る場合（ステップＳ３３：Ｙｅｓルート）、ステップＳ１３の処理に戻る。一方、未処理の仮想マシンが無い場合（ステップＳ３３：Ｎｏルート）、処理は端子Ａを介して図１８のステップＳ３５に移行する。
【００４５】
ここまでの処理によって、図１７に示すような稼働予測データが生成される。図１７の例では、各仮想マシンが各曜日の各時間帯において稼働するか否かを示す情報が格納される。図１７の例では月曜日についてのデータしか示されていないが、実際には全ての曜日についてのデータが生成される。このように、本実施の形態においては、今後稼働する可能性が時間帯を過去の稼働実績から推定している（すなわち、稼働予測を行っている）。なお、生成された稼働予測データは、メモリ１５２に格納される。
【００４６】
図１８の説明に移行し、算出部１０６は、ｍ＝１と設定し且つｎ＝０と設定し（図１８：ステップＳ３５）、曜日ｍのｎ時台に「ＯＮ」が設定されている仮想マシンを、稼働予測データから特定する（ステップＳ３７）。
【００４７】
算出部１０６は、ステップＳ３７において特定した仮想マシンの情報と、第１データ格納部１０５に格納されているメモリ割り当て情報とに基づき、ステップＳ３７において特定した仮想マシンに割り当てるメモリ量の合計Ｓmnを算出する（ステップＳ３９）。
【００４８】
図１９に、第１データ格納部１０５に格納されているメモリ割り当て情報の一例を示す。図１９の例では、ＶＭ名と、電源状態を示す情報と、論理ＣＰＵ数と、総物理メモリ量と、ホスト名とが格納される。論理ＣＰＵ数は、仮想マシンに割り当てられる論理ＣＰＵの数である。総物理メモリ量は、仮想マシンに割り当てられている物理メモリ量の総量である。但し、停止状態の仮想マシンについては、総物理メモリ量は、割り当てられる予定の物理メモリ量の総量である。ホスト名は、仮想マシンを実行する物理マシン１０の名前である。
【００４９】
図１８の説明に戻り、算出部１０６は、第１データ格納部１０５に格納されている物理マシン情報に基づき、曜日ｍのｎ時台において使用可能なメモリの量Ａmnを、Ａmn＝物理マシン１０の物理メモリ量−Ｓmnによって算出する（ステップＳ４１）。
【００５０】
図２０に、第１データ格納部１０５に格納されている物理マシン情報の一例を示す。図２０の例では、ホスト名と、コネクション状態を示す情報と、電源状態を示す情報と、物理マシン１０に搭載された物理メモリの総量と、或る時点におけるメモリ使用量とが格納される。
【００５１】
図１８の説明に戻り、算出部１０６は、ｎを１インクリメントし（ステップＳ４３）、ｎ＞２３が成立するか判定する（ステップＳ４５）。ｎ＞２３が成立しない場合（ステップＳ４５：Ｎｏルート）、ステップＳ３７の処理に戻る。一方、ｎ＞２３が成立する場合（ステップＳ４５：Ｙｅｓルート）、抽出部１０７は、ｍを１インクリメントし且つｎを０に設定し（ステップＳ４７）、ｍ＞７が成立するか判定する（ステップＳ４９）。
【００５２】
ｍ＞７が成立しない場合（ステップＳ４９：Ｎｏルート）、ステップＳ３７の処理に戻る。一方、ｍ＞７が成立する場合（ステップＳ４９：Ｙｅｓルート）、呼び出し元（図６）の処理に戻る。
【００５３】
以上のような処理を実行すれば、例えば図２１に示すように、各曜日の各時間帯において使用可能なメモリ量のデータ（以下、メモリ量データと呼ぶ）が生成される。単位はギガバイトである。生成されたメモリ量データは、判定部１０２に渡される。
【００５４】
図６の説明に戻り、判定部１０２は、算出処理において生成されたメモリ量データと、スケジュール管理部１０３から受け取った、新規の仮想マシンに割り当てるメモリ量の情報とに基づき、全曜日の全時間帯においてＡmnが新規の仮想マシンに割り当てるメモリ量より多いか判定する（ステップＳ５）。なお、新規の仮想マシンを稼働させる時間帯を指定するデータを配備要求が含む場合には、その時間帯のみについて比較を行うようにしてもよい。これにより、メモリリソースをより有効に活用できるようになる。
【００５５】
全曜日の全時間帯においてＡmnが新規の仮想マシンに割り当てるメモリ量より多い場合（ステップＳ５：Ｙｅｓルート）、スケジュール管理部１０３は、配備要求において指定された仮想マシンの起動指示を仮想化基盤１０１に出力する。これに応じ、仮想化基盤１０１は、起動指示に従い仮想マシンを起動する（ステップＳ７）。そして処理は終了する。
【００５６】
一方、いずれかの時間帯においてＡmnが新規の仮想マシンに割り当てるメモリ量以下である場合（ステップＳ５：Ｎｏルート）、スケジュール管理部１０３は、配備要求において指定された仮想マシンを起動することができないことを示すメッセージを生成し、ユーザ端末５に送信する（ステップＳ９）。そして処理は終了する。なお、新規の仮想マシンに割り当てるメモリ量を減らしたり、或いは時間帯を限定することで新規の仮想マシンを起動することができる場合には、その旨を示す情報をメッセージに付加してもよい。
【００５７】
ユーザ端末５は、受信したメッセージをディスプレイ等の表示装置に表示させる。図２２に、ユーザ端末５の表示装置に表示されるメッセージの一例を示す。ユーザは、このようなメッセージを確認することにより、例えば新規のマシンを別のタイミングで起動したり、割り当てるメモリ量を調整するなど、適切な対策を行うことができる。
【００５８】
以上のような処理を実行すれば、メモリオーバーコミットによる性能劣化が発生することを防ぎつつ、物理マシン１０のリソースを有効に活用できるようになる。特に、各仮想マシンに多めにメモリ量を割り当てることでメモリオーバーコミットを防ぐというような運用を行わなくても済むようになる。
【００５９】
また、或るプロジェクト用の仮想マシンに割り当てられていた多量のメモリが、そのプロジェクトの終了に伴い一度に解放されたような場合には、解放された多量のメモリを迅速に別の仮想マシンに割り当てることができるようになる。これに対し、例えばメモリ使用量のピーク値に基づいてメモリの割り当てを決めるような技術によれば、翌日にメモリ使用量のピーク値が減少したことを確認するまでは解放されたメモリを有効活用することができない。
【００６０】
以上本発明の一実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上で説明した物理マシン１０の機能ブロック構成は実際のプログラムモジュール構成に一致しない場合もある。
【００６１】
また、上で説明した各テーブルの構成は一例であって、上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ処理の順番を入れ替えることも可能である。さらに、並列に実行させるようにしても良い。
【００６２】
例えば、仮想化基盤１０１及び仮想化基盤１０１上で稼働する仮想マシンが複数の物理マシン１０に分散していてもよい。また、仮想化基盤１０１及び仮想化基盤１０１が実行される物理マシン１０と、それ以外の部分を実行する物理マシン１０とが異なっていてもよい。
【００６３】
また、ＣＰＵ使用率のデータだけを用いて稼働予測データを生成しても良い。
【００６４】
以上述べた本発明の実施の形態をまとめると、以下のようになる。
【００６５】
本実施の形態に係る制御方法は、（Ａ）情報処理装置上で仮想マシンが起動したタイミングと仮想マシンが稼働を終了したタイミングとを示す稼働情報を取得し、（Ｂ）取得した稼働情報に基づいて、情報処理装置上での所定期間における仮想マシンの稼働予測を行い、（Ｃ）情報処理装置における新たな仮想マシンの起動が要求された場合、稼働予測の結果に基づいて、所定期間において新たな仮想マシンの起動を許容するか否かを決定する処理を含む。
【００６６】
このようにすれば、仮想マシンが許容限度を超えて起動されることを防げるので、仮想マシンの動作環境においてリソースが枯渇することを抑制できるようになる。
【００６７】
また、仮想マシンの稼働予測を行う処理において、（ｂ１）取得した稼働情報から、所定期間において仮想マシンが起動するタイミングと仮想マシンが稼働を終了するタイミングとを示す第２の稼働情報を生成し、（ｂ２）生成した第２の稼働情報と、各仮想マシンに割り当てられるメモリの量とに基づき、所定期間において情報処理装置で使用されるメモリの量を算出し、（ｂ３）情報処理装置が有するメモリの量と、所定期間において情報処理装置で使用されるメモリの量とから、所定期間において使用可能なメモリの量を算出してもよい。このようにすれば、仮想マシンの動作環境におけるメモリリソースの枯渇を抑制できるようになる。
【００６８】
また、新たな仮想マシンの起動を許容するか否かを決定する処理において、（ｃ１）算出された使用可能なメモリの量と、所定期間において常に新たな仮想マシンに割り当てられるメモリの量との比較に基づき、所定期間において新たな仮想マシンの起動を許容するか否かを決定してもよい。このようにすれば、メモリオーバーコミットの発生を抑制できるようになる。
【００６９】
また、本制御方法は、（Ｄ）稼働情報の少なくとも一部が欠落しているか判定し、（Ｅ）稼働情報の少なくとも一部が欠落していると判定した場合、情報処理装置が有するプロセッサの使用率の情報に基づき、欠落部分に対応する期間において仮想マシンが稼働しているか判定し、（Ｆ）欠落部分に対応する期間において仮想マシンが稼働していると判定した場合、欠落部分を補完するデータを生成し、稼働情報に付加する処理をさらに含んでもよい。このようにすれば、障害等によって稼働情報の少なくとも一部が欠落してしまった場合に対処できるようになる。
【００７０】
なお、上記方法による処理をコンピュータに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、ＣＤ−ＲＯＭ、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。
【００７１】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【００７２】
（付記１）
コンピュータに、
情報処理装置上で仮想マシンが起動したタイミングと前記仮想マシンが稼働を終了したタイミングとを示す稼働情報を取得し、
取得した前記稼働情報に基づいて、前記情報処理装置上での所定期間における前記仮想マシンの稼働予測を行い、
前記情報処理装置における新たな仮想マシンの起動が要求された場合、前記稼働予測の結果に基づいて、前記所定期間において前記新たな仮想マシンの起動を許容するか否かを決定する、
ことを実行させることを特徴とする制御プログラム。
【００７３】
（付記２）
前記仮想マシンの稼働予測を行う処理において、
取得した前記稼働情報から、前記所定期間において前記仮想マシンが起動するタイミングと前記仮想マシンが稼働を終了するタイミングとを示す第２の稼働情報を生成し、
生成した前記第２の稼働情報と、各仮想マシンに割り当てられるメモリの量とに基づき、前記所定期間において前記情報処理装置で使用されるメモリの量を算出し、
前記情報処理装置が有するメモリの量と、前記所定期間において前記情報処理装置で使用されるメモリの量とから、前記所定期間において使用可能なメモリの量を算出する、
ことを特徴とする付記１記載の制御プログラム。
【００７４】
（付記３）
前記新たな仮想マシンの起動を許容するか否かを決定する処理において、
算出された前記使用可能なメモリの量と、前記所定期間において常に前記新たな仮想マシンに割り当てられるメモリの量との比較に基づき、前記所定期間において前記新たな仮想マシンの起動を許容するか否かを決定する、
ことを特徴とする付記２記載の制御プログラム。
【００７５】
（付記４）
前記コンピュータに、
前記稼働情報の少なくとも一部が欠落しているか判定し、
前記稼働情報の少なくとも一部が欠落していると判定した場合、前記情報処理装置が有するプロセッサの使用率の情報に基づき、前記欠落部分を補完するデータを生成し、前記稼働情報に付加する、
ことをさらに実行させることを特徴とする付記１乃至３のいずれか１つ記載の制御プログラム。
【００７６】
（付記５）
コンピュータが、
情報処理装置上で仮想マシンが起動したタイミングと前記仮想マシンが稼働を終了したタイミングとを示す稼働情報を取得し、
取得した前記稼働情報に基づいて、前記情報処理装置上での所定期間における前記仮想マシンの稼働予測を行い、
前記情報処理装置における新たな仮想マシンの起動が要求された場合、前記稼働予測の結果に基づいて、前記所定期間において前記新たな仮想マシンの起動を許容するか否かを決定する、
処理を実行する制御方法。
【００７７】
（付記６）
情報処理装置上で仮想マシンが起動したタイミングと前記仮想マシンが稼働を終了したタイミングとを示す稼働情報を取得する取得部と、
取得した前記稼働情報に基づいて、前記情報処理装置上での所定期間における前記仮想マシンの稼働予測を行う予測部と、
前記情報処理装置における新たな仮想マシンの起動が要求された場合、前記稼働予測の結果に基づいて、前記所定期間において前記新たな仮想マシンの起動を許容するか否かを決定する決定部と、
を有する制御装置。
【符号の説明】
【００７８】
１  情報処理システム    ３  ネットワーク
５  ユーザ端末    １０  物理マシン
１５１  ＣＰＵ    １５２  メモリ
１５３  Ｉ／Ｏ    １０１  仮想化基盤
１０２  判定部    １０３  スケジュール管理部
１０４  第２データ格納部    １０５  第１データ格納部
１０６  算出部    １０７  抽出部
１０８  補完部
【図１】
2016224582.tif 000003
【図２】
2016224582.tif 000004
【図３】
2016224582.tif 000005
【図４】
2016224582.tif 000006
【図５】
2016224582.tif 000007
【図６】
2016224582.tif 000008
【図７】
2016224582.tif 000009
【図８】
2016224582.tif 000010
【図９】
2016224582.tif 000011
【図１０】
2016224582.tif 000012
【図１１】
2016224582.tif 000013
【図１２】
2016224582.tif 000014
【図１３】
2016224582.tif 000015
【図１４】
2016224582.tif 000016
【図１５】
2016224582.tif 000017
【図１６】
2016224582.tif 000018
【図１７】
2016224582.tif 000019
【図１８】
2016224582.tif 000020
【図１９】
2016224582.tif 000021
【図２０】
2016224582.tif 000022
【図２１】
2016224582.tif 000023
【図２２】
2016224582.tif 000024