(57)【特許請求の範囲】
【請求項１】
コンピュータに、
稼働中の仮想マシンがリアルタイム処理を実行する仮想マシン及びバッチ処理を実行する仮想マシンのいずれであるかの判定を行ない、
前記仮想マシンが実行する処理が終了した場合、前記判定の結果に基づいて、前記仮想マシンが前記バッチ処理を実行する仮想マシンである場合は前記仮想マシンを停止し、前記仮想マシンが前記リアルタイム処理を実行する仮想マシンである場合は前記仮想マシンの稼働を維持し、
前記仮想マシンの状態が所定の状態であるか判定し、
前記仮想マシンの状態が前記所定の状態であり且つ前記仮想マシンが前記リアルタイム処理を実行する仮想マシンである場合、前記仮想マシンを前記バッチ処理を実行する仮想マシンに変更する、
処理を実行させるための制御プログラム。
【請求項２】
前記コンピュータに、
前記仮想マシンの状態が前記所定の状態ではなく且つ前記仮想マシンが前記バッチ処理を実行する仮想マシンである場合、前記仮想マシンを前記リアルタイム処理を実行する仮想マシンに変更する、
処理をさらに実行させるための請求項１記載の制御プログラム。
【請求項３】
前記コンピュータに、
前記コンピュータ内のリソースの使用率が閾値を超えたか判定し、
前記コンピュータ内のリソースの使用率が前記閾値を超えており且つ前記仮想マシンが前記バッチ処理を実行する仮想マシンである場合、前記仮想マシンを一時停止する、
処理をさらに実行させるための請求項１記載の制御プログラム。
【請求項４】
前記コンピュータに、
前記コンピュータ内のリソースの使用率が前記閾値を超えていない場合、一時停止中の他の仮想マシンの稼働を再開する、
処理をさらに実行させるための請求項３記載の制御プログラム。
【請求項５】
コンピュータが、
稼働中の仮想マシンがリアルタイム処理を実行する仮想マシン及びバッチ処理を実行する仮想マシンのいずれであるかの判定を行ない、
前記仮想マシンが実行する処理が終了した場合、前記判定の結果に基づいて、前記仮想マシンが前記バッチ処理を実行する仮想マシンである場合は前記仮想マシンを停止し、前記仮想マシンが前記リアルタイム処理を実行する仮想マシンである場合は前記仮想マシンの稼働を維持し、
前記仮想マシンの状態が所定の状態であるか判定し、
前記仮想マシンの状態が前記所定の状態であり且つ前記仮想マシンが前記リアルタイム処理を実行する仮想マシンである場合、前記仮想マシンを前記バッチ処理を実行する仮想マシンに変更する、
処理を実行する制御方法。
【請求項６】
稼働中の仮想マシンがリアルタイム処理を実行する仮想マシン及びバッチ処理を実行する仮想マシンのいずれであるかの判定を行なう判定部と、
前記仮想マシンが実行する処理が終了した場合、前記判定の結果に基づいて、前記仮想マシンが前記バッチ処理を実行する仮想マシンである場合は前記仮想マシンを停止し、前記仮想マシンが前記リアルタイム処理を実行する仮想マシンである場合は前記仮想マシンの稼働を維持する制御部と、
前記仮想マシンの状態が所定の状態であるか判定し、前記仮想マシンの状態が前記所定の状態であり且つ前記仮想マシンが前記リアルタイム処理を実行する仮想マシンである場合、前記仮想マシンを前記バッチ処理を実行する仮想マシンに変更する変更処理部と、
を有する情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想マシンの配備技術に関する。
【背景技術】
【０００２】
クラウドシステムにおいて稼働するＶＭ（Virtual Machine）は、バッチ処理を実行するＶＭ（以下、バッチＶＭと呼ぶ）とリアルタイム処理を実行するＶＭ（以下、オンラインＶＭと呼ぶ）とに大別される。
【０００３】
バッチＶＭは、例えば、自動化テスト（例えばミドルウエア試験）、サイレントインストール、ＶＭテンプレートを更新する処理（例えばパッチの適用）、及びコンパイル等を実行する。バッチＶＭはデータを一括して処理するため、データを処理している間は割り当てられたリソースをフルに使用する。
【０００４】
オンラインＶＭは、例えば、手動テスト（例えば、自動化できないミドルウエア試験）、コーディング、環境構築（例えばＯＳ（Operating System）、ミドルウエアのインストール）、及びトラブル調査等のために使用される。オンラインＶＭは要求に応じて処理を実行するため、要求が無い場合にはオンラインＶＭによって消費されるリソース（特に、ＣＰＵ（Central Processing Unit）及びＩ／Ｏ（Input/Output））の量は少ない。
【０００５】
オンプレミスのシステムとは異なり、クラウドシステムは多数のユーザにより利用される。そのため、特定の時間帯においてバッチＶＭだけ或いはオンラインＶＭだけを稼働させるといった運用を行うことが難しく、バッチＶＭとオンラインＶＭとが両方実行される時間帯が発生する。特に昼間の時間帯においては、夜間の時間帯に比べてリアルタイム処理の要求が頻繁に発生するため、バッチＶＭとオンラインＶＭとが両方実行されると、オンラインＶＭに割り当てるリソースが競合により不足することがある。
【０００６】
ＶＭの種別に着目してリソースの割り当てを行う従来技術は存在するが、従来技術はＶＭに割り当てるリソースが十分に存在することを前提としているので、リソースが十分でない場合にはリアルタイム処理の性能を確保できないことがある。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１３−１９６０６２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明の目的は、１つの側面では、リソース不足によってリアルタイム処理の性能が低下することを抑制するための技術を提供することである。
【課題を解決するための手段】
【０００９】
１つの態様では、稼働中の仮想マシンがリアルタイム処理を実行する仮想マシン及びバッチ処理を実行する仮想マシンのいずれであるかの判定を行ない、仮想マシンが実行する処理が終了した場合、判定の結果に基づいて、仮想マシンがバッチ処理を実行する仮想マシンである場合は仮想マシンを停止し、仮想マシンがリアルタイム処理を実行する仮想マシンである場合は仮想マシンの稼働を維持する処理を含む。
【発明の効果】
【００１０】
１つの側面では、リソース不足によってリアルタイム処理の性能が低下することを抑制できるようになる。
【図面の簡単な説明】
【００１１】
【図１】図１は、本実施の形態のシステム概要を示す図である。
【図２】図２は、物理マシンのハードウエア構成図である。
【図３】図３は、物理マシンの機能ブロック図である。
【図４】図４は、制御ブロックの一例を示す図である。
【図５】図５は、種別データ格納部に格納されるデータの一例を示す図である。
【図６】図６は、種別変更処理部が実行する処理の処理フローを示す図である。
【図７】図７は、種別変更処理部が実行する処理の処理フローを示す図である。
【図８】図８は、種別変更処理部が実行する処理の処理フローを示す図である。
【図９】図９は、処理監視部が実行する処理の処理フローを示す図である。
【図１０】図１０は、第２変更部が実行する処理の処理フローを示す図である。
【図１１】図１１は、第１変更部が実行する処理の処理フローを示す図である。
【図１２】図１２は、リソース監視部が実行する処理の処理フローを示す図である。
【図１３】図１３は、リソース監視部が実行する処理の処理フローを示す図である。
【図１４】図１４は、リソース監視部が実行する処理の処理フローを示す図である。
【図１５】図１５は、閾値の算出について説明するための図である
【図１６】図１６は、ＶＭの実行とリソース使用率との関係について説明するための図である。
【発明を実施するための形態】
【００１２】
図１に、本実施の形態のシステム概要を示す。例えばインターネットであるネットワーク３には、情報処理システム１と、ユーザ端末５とが接続される。情報処理システム１は、複数の物理マシン１０を有する。各物理マシン１０は、ユーザ端末５から受信した要求に応じて仮想マシンの配備を実行する。
【００１３】
図２に、物理マシン１０のハードウエア構成図を示す。物理マシン１０は、１又は複数のＣＰＵ１５１と、１又は複数のメモリ１５２と、１又は複数のＩ／Ｏ１５３と、１又は複数の記憶媒体１５４とを有する。Ｉ／Ｏ１５３は、例えば物理ポート等である。記憶媒体１５４は、不揮発性の記憶媒体である。ＣＰＵ１５１とメモリ１５２とＩ／Ｏ１５３とは、バスによって接続される。
【００１４】
本実施の形態の処理を実行するためのプログラムは、メモリ１５２にロードされてＣＰＵ１５１に実行され、図３に示す各種機能を実現する。図３に、物理マシン１０の機能ブロック図を示す。物理マシン１０は、受付部１００と、実行制御部１１０と、管理部１２０と、ＶＭ実行部１３０と、ＶＭ実行部１３０によって実行される複数のＶＭとを含む。なお、ここでは１台の物理マシン１０において上記機能が実現される例を示したが、複数台の物理マシン１０において実現されてもよい。また、受付部１００、実行制御部１１０、及び管理部１２０は、１又は複数の仮想マシンによって実現されてもよい。
【００１５】
受付部１００は、要求受付部１０１と、第１変更部１０２とを含む。
【００１６】
要求受付部１０１は、ＶＭを配備することを要求する配備要求をユーザ端末５から受信した場合、管理部１２０における配備部１２３に、オンデマンド命令によってＶＭの配備を指示する。また、要求受付部１０１は、ＶＭを返却することを要求する返却要求をユーザ端末５から受信した場合、管理部１２０における配備部１２３に、オンデマンド命令によってＶＭの返却を指示する。オンデマンド命令は、ＯＳ種別の情報と、ＶＭ名と、ＶＭの実行状態を示す情報と、リソースの情報（例えば、ＣＰＵ、メモリ、ディスクサイズ、及びトラフィック量の情報など）と、ＩＰ（Internet Protocol）アドレスと、ＶＭ種別の情報とを含む。ＶＭの配備時においてはＶＭ種別は「オンラインＶＭ」に設定される。上で述べたように、オンラインＶＭはリアルタイム処理を実行するＶＭであり、バッチＶＭはバッチ処理を実行するＶＭである。ＶＭ名は、ユーザが付けた名前である。ＶＭの実行状態は、「実行中」、「一時停止」、及び「停止」のいずれかに設定される。「実行中」の場合はバッチＶＭに電源が投入されており、「一時停止」及び「停止」の場合にはバッチＶＭに電源が投入されていない。但し、「一時停止」の場合にはバッチ処理に使用するデータが記憶媒体１５４に保存され、再起動時にはそのデータを用いてバッチ処理が再開される。なお、本実施の形態においては、バッチＶＭの実行状態は制御ブロックによって管理されるが、オンラインＶＭの実行状態は管理されない。
【００１７】
第１変更部１０２は、ＶＭの種別を変更することを要求する変更要求をユーザ端末５から受信した場合、変更要求の内容に応じて、種別変更処理部１１６にＶＭ種別を変更させる。ＶＭの種別は、オンラインＶＭからバッチＶＭへ変更されるか又はバッチＶＭからオンラインＶＭへ変更される。
【００１８】
なお、リアルタイム処理の要求をユーザ端末５からいつ受信するかは不明であるため、特に昼間の時間帯においては、リアルタイム処理の性能を維持するためオンラインＶＭが稼働し続けていることが好ましい。本実施の形態においては、明示的な停止指示があるまで或いはスケジュールに従って停止されるまでは、オンラインＶＭの稼働は維持される。一方、バッチ処理の終了後においてはバッチＶＭを停止することが可能である。本実施の形態においては、バッチ処理を終了したバッチＶＭは原則として停止される。なお、バッチ処理の終了後においてバッチＶＭが消費するリソース量は比較的少ない。
【００１９】
実行制御部１１０は、キュー管理部１１１と、制御キュー１１２と、リソース監視部１１３と、処理監視部１１４と、第２変更部１１５と、種別変更処理部１１６とを含む。
【００２０】
キュー管理部１１１は、制御キュー１１２に格納される制御ブロックを管理する。また、キュー管理部１１１は、種別データ格納部１２１に格納されたデータを更新することを管理部１２０における種別管理部１２２に指示する。
【００２１】
制御キュー１１２は、制御ブロックを格納する。図４に、制御ブロックの一例を示す。制御ブロックはバッチＶＭを管理するためのデータであり、ＯＳ種別の情報と、バッチＶＭのＶＭ名と、バッチＶＭのＶＭ識別子、バッチＶＭの実行状態を示す情報とを含む。ＶＭ識別子は、各ＶＭに割り当てられる一意の文字列である。
【００２２】
リソース監視部１１３は、物理マシン１０内のリソースの情報を管理部１２０から取得し、リソースの使用状況を監視する。リソース監視部１１３が監視に使用する閾値εnは、ユーザによって固定値に設定されてもよいし、リソース監視部１１３によって動的に変更されてもよい。閾値εnは、ＣＰＵ１５１及びメモリ１５２のそれぞれについて設定される。
【００２３】
処理監視部１１４は、例えば定期的に、物理マシン１０におけるＶＭの実行状態についての情報を管理部１２０から取得し、ＶＭの実行状態を監視する。また、処理監視部１１４は、ＶＭの実行状態に応じて、種別変更処理部１１６にＶＭ種別を変更させる。
【００２４】
第２変更部１１５は、例えば定期的に、ＶＭが判定条件を満たすか判定を行い、判定の結果に応じて、種別変更処理部１１６にＶＭ種別を変更させる。
【００２５】
種別変更処理部１１６は、処理監視部１１４、第１変更部１０２、及び第２変更部１１５からの呼び出しに応じて、後で説明する第１の種別変更処理及び第２の種別変更処理を実行する。
【００２６】
管理部１２０は、種別データ格納部１２１と、種別管理部１２２と、配備部１２３と、移動部１２４と、リソース変更部１２５と、状況管理部１２６と、仮想化管理部１２７とを含む。
【００２７】
種別管理部１２２は、種別データ格納部１２１に格納されたデータを管理する。
【００２８】
配備部１２３は、オンデマンド命令によってＶＭの配備を指示された場合、ＶＭの配備についての実行指示をＶＭ実行部１３０に送信する。また、配備部１２３は、オンデマンド命令によってＶＭの返却を指示された場合、ＶＭの返却についての実行指示をＶＭ実行部１３０に送信する。なお、配備部１２３は、配備完了時にＶＭにＶＭ識別子を割り当て、ＶＭのユーザにＶＭ識別子を通知する。通知は、例えばメール或いは表示装置への表示等によって行われる。
【００２９】
移動部１２４は、ＶＭのマイグレーションについての実行指示をＶＭ実行部１３０に送信する。ＶＭのマイグレーションは、例えば、或る物理マシン１０の処理負荷が閾値を超えた場合に実行される。
【００３０】
リソース変更部１２５は、物理マシン１０において実行されるＶＭに割り当てるリソース量（例えば、ＣＰＵ数、ＣＰＵ使用率、メモリ量、ディスク容量、及びネットワーク数など）の変更についての実行指示をＶＭ実行部１３０に送信する。
【００３１】
状況管理部１２６は、物理マシン１０におけるＶＭのリソース量の情報を、例えば定期的にＶＭ実行部１３０から取得し、実行制御部１１０に送信する。
【００３２】
仮想化管理部１２７は、ＶＭの実行状態等を監視する処理を実行し、ＶＭの実行状態等についての情報を実行制御部１１０に送信する。
【００３３】
ＶＭ実行部１３０は、例えばハイパバイザである制御部１３１を含む。制御部１３１は、電源が投入されており実行可能なＶＭを実行する。制御部１３１は、管理部１２０から実行指示を受け付けた場合、実行指示に従いＶＭの配備、返却、及びマイグレーション等を実行する。制御部１３１は、ＶＭによって使用されるリソースの情報を管理部１２０に送信する。
【００３４】
図５に、種別データ格納部１２１に格納されるデータの一例を示す。図４の例では、ＶＭ識別子と、ＶＭ種別の情報とが格納される。
【００３５】
次に、図６乃至図１６を用いて、物理マシン１０において実行される処理について説明する。まず、図６及び図７を用いて、種別変更処理部１１６が実行する第１の種別変更処理について説明する。本処理は、処理監視部１１４、第２変更部１１５、又は第１変更部１０２に呼び出されて実行される。
【００３６】
本処理の対象となるＶＭのことを対象ＶＭと呼ぶこととする。まず、種別変更処理部１１６は、対象ＶＭのＶＭ種別が「バッチＶＭ」であるか判定する（図６：ステップＳ１１）。対象ＶＭのＶＭ種別が「バッチＶＭ」ではない場合（ステップＳ１１：Ｎｏルート）、呼び出し元の処理に戻る。一方、対象ＶＭのＶＭ種別が「バッチＶＭ」である場合（ステップＳ１１：Ｙｅｓルート）、種別変更処理部１１６は、キュー管理部１１１を介して、対象ＶＭの制御ブロックにおけるＶＭ種別を「バッチＶＭ」から「オンラインＶＭ」に変更する（ステップＳ１３）。また、種別変更処理部１１６は、管理部１２０における種別管理部１２２に、対象ＶＭのＶＭ種別の変更を指示する。これに応じ、種別管理部１２２は、種別データ格納部１２１に格納された、対象ＶＭのＶＭ種別の情報を、「バッチＶＭ」から「オンラインＶＭ」に変更する。
【００３７】
種別変更処理部１１６は、対象ＶＭの制御ブロックにおける実行状態が「一時停止」であるか判定する（ステップＳ１５）。対象ＶＭの制御ブロックにおける実行状態が「一時停止」ではない場合（ステップＳ１５：Ｎｏルート）、ステップＳ１９の処理に移行する。一方、対象ＶＭの制御ブロックにおける実行状態が「一時停止」である場合（ステップＳ１５：Ｙｅｓルート）、種別変更処理部１１６は、対象ＶＭについて再開処理を実行する（ステップＳ１７）。再開処理については、図７を用いて説明する。なお、再開処理は、バッチＶＭとして再開する処理とオンラインＶＭとして再開する処理とが有るが、ステップＳ１７の再開処理については、対象ＶＭがオンラインＶＭとして再開されるものとする。
【００３８】
まず、種別変更処理部１１６は、管理部１２０を介して、ＶＭ実行部１３０に対象ＶＭの再開を指示する再開指示を送信する（図７：ステップＳ２１）。これに応じ、ＶＭ実行部１３０における制御部１３１は、対象ＶＭに電源を投入し、対象ＶＭをオンラインＶＭとして再開する。なお、オンラインＶＭとして再開する場合、制御部１３１は、対象ＶＭに電源を投入し、一時停止前に記憶媒体１５４に保存したデータ（例えばコンテキストなど）によって対象ＶＭに処理を再開させる。なお、ＶＭの再開処理はよく知られた処理であるので、ここでは詳細な説明を省略する。
【００３９】
種別変更処理部１１６は、対象ＶＭの制御ブロックにおける実行状態を「一時停止」から「実行中」に変更する（ステップＳ２３）。そして呼び出し元の処理に戻る。
【００４０】
図６の説明に戻り、種別変更処理部１１６は、対象ＶＭの制御ブロックを制御キュー１１２から取り出し、削除する（ステップＳ１９）。そして呼び出し元の処理に戻る。
【００４１】
次に、図８を用いて、種別変更処理部１１６が実行する第２の種別変更処理について説明する。本処理は、第２変更部１１５又は第１変更部１０２に呼び出されて実行される。
【００４２】
まず、種別変更処理部１１６は、対象ＶＭのＶＭ種別が「オンラインＶＭ」であるか判定する（図８：ステップＳ３１）。対象ＶＭのＶＭ種別が「オンラインＶＭ」ではない場合（ステップＳ３１：Ｎｏルート）、呼び出し元の処理に戻る。一方、対象ＶＭのＶＭ種別が「オンラインＶＭ」である場合（ステップＳ３１：Ｙｅｓルート）、種別変更処理部１１６は、キュー管理部１１１を介して、対象ＶＭの制御ブロックにおけるＶＭ種別を「オンラインＶＭ」から「バッチＶＭ」に変更する（ステップＳ３３）。また、種別変更処理部１１６は、管理部１２０における種別管理部１２２に、対象ＶＭのＶＭ種別の変更を指示する。これに応じ、種別管理部１２２は、種別データ格納部１２１に格納された、対象ＶＭのＶＭ種別の情報を、「オンラインＶＭ」から「バッチＶＭ」に変更する。
【００４３】
種別変更処理部１１６は、対象ＶＭについて制御ブロックを生成する（ステップＳ３５）。そして、種別変更処理部１１６は、生成した制御ブロックにおける実行状態を「実行中」に設定する（ステップＳ３７）。ステップＳ３７においてはＯＳ種別、ＶＭ名及びＶＭ識別子等も設定される。
【００４４】
種別変更処理部１１６は、制御キュー１１２の最後尾に、対象ＶＭについての制御ブロックを追加する（ステップＳ３９）。そして呼び出し元の処理に戻る。
【００４５】
次に、図９を用いて、処理監視部１１４が実行する処理について説明する。本処理は、例えば定期的に実行される。
【００４６】
まず、処理監視部１１４は、制御キュー１１２に格納されている制御ブロックの数が１以上であるか判定する（図９：ステップＳ４１）。
【００４７】
制御キュー１１２に格納されている制御ブロックの数が１以上ではない場合（ステップＳ４１：Ｎｏルート）、処理は終了する。一方、制御キュー１１２に格納されている制御ブロックの数が１以上である場合（ステップＳ４１：Ｙｅｓルート）、処理監視部１１４は、実行状態が「停止」であるＶＭ（ここでは、バッチＶＭ）についての制御ブロックが制御キュー１１２に有るか判定する（ステップＳ４３）。
【００４８】
実行状態が「停止」であるＶＭについての制御ブロックが制御キュー１１２に無い場合（ステップＳ４３：Ｎｏルート）、処理は終了する。一方、実行状態が「停止」であるＶＭについての制御ブロックが制御キュー１１２に有る場合（ステップＳ４３：Ｙｅｓルート）、処理監視部１１４は、種別変更処理部１１６を呼び出す。これに応じ、種別変更処理部１１６は、実行状態が「停止」であるＶＭを対象として第１の種別変更処理を実行する（ステップＳ４５）。第１の種別変更処理については、図６及び図７を用いて説明したとおりである。そして処理は終了する。
【００４９】
以上のような処理を実行すれば、バッチ処理の完了をシステムにおいて検知して、バッチＶＭをオンラインＶＭに変更し、自動実行制御の対象から外すことができるようになる。なお、停止中のオンラインＶＭは、予め定められたスケジュールに従って又は起動指示に従って起動される。
【００５０】
次に、図１０を用いて、第２変更部１１５が実行する処理について説明する。本処理は、例えば定期的に実行される。なお、本処理は全ＶＭについて実行されるが、説明を簡単にするため、ここでは１台のＶＭ（以下、対象ＶＭと呼ぶ）について処理を実行する場合を例にして説明する。
【００５１】
まず、第２変更部１１５は、バッチＶＭの判定条件がユーザ或いは管理者によって設定されているか判定する（図１０：ステップＳ５１）。バッチＶＭの判定条件とは、稼働中のＶＭがバッチＶＭであるか判定するための条件である。本実施の形態においては、以下のような判定条件のうち少なくともいずれかを満たすＶＭをバッチＶＭであると判定する。
【００５２】
（１）トラフィック量が所定値（例えば０）以下であるＶＭ。トラフィック量が所定値以下であるＶＭは、バッチ処理であるサイレントインストール或いはコンパイル処理等を実行している可能性が高い。トラフィック量の情報は、状況管理部１２６から取得可能である。
【００５３】
（２）ユーザからの入力を受け付けていないＶＭ。ユーザからの入力を受け付けていないＶＭは、手動テスト、コーディング、環境構築、及びトラブル調査等についてのリアルタイム処理を実行していない（すなわち、バッチＶＭである）と考えられる。入力とは、例えばマウス又はキーボードによる入力である。ユーザからの入力は、例えば、マウス座標の変化及びキー入力を受け付けるためのエージェントソフトウエアをＶＭに導入することで検出される。
【００５４】
（３）問いかけに対するユーザからの応答が検出されないＶＭ。例えば、ＶＭに導入したエージェントソフトウエアによって、ユーザへの問いかけを行う文字列をユーザ端末５に送信し、その問いかけに対する応答が検出されない場合にはバッチＶＭであると判定する。
【００５５】
（４）特定のネットワークポート（例えば、ポート番号が２２であるＳＳＨ（Secure SHell）のポート或いはポート番号が３３８９であるＲＤＰ（Remote Desktop Protocol）のポート）での通信が確立していないＶＭ。特定のネットワークポートでの通信が確立されているか否かは、例えば、ＯＳのセッションを監視するエージェントソフトウエアをＶＭに導入することで判断することができる。
【００５６】
バッチＶＭの判定条件がユーザ或いは管理者によって設定されていない場合（ステップＳ５１：Ｎｏルート）、処理は終了する。一方、バッチＶＭの判定条件がユーザ或いは管理者によって設定されている場合（ステップＳ５１：Ｙｅｓルート）、第２変更部１１５は、対象ＶＭが判定条件を満たすか判定する（ステップＳ５２）。
【００５７】
対象ＶＭが判定条件を満たさない場合（ステップＳ５２：Ｎｏルート）、第２変更部１１５は、種別変更処理部１１６に第１の種別変更処理の実行を指示する。これに応じ、種別変更処理部１１６は、第１の種別変更処理を実行する（ステップＳ５４）。第１の種別変更処理については、図６及び図７を用いて説明したとおりであるので、説明を省略する。
【００５８】
一方、対象ＶＭが判定条件を満たす場合（ステップＳ５２：Ｙｅｓルート）、第２変更部１１５は、種別変更処理部１１６に第２の種別変更処理の実行を指示する。これに応じ、種別変更処理部１１６は、対象ＶＭについて第２の種別変更処理を実行する（ステップＳ５３）。第２の種別変更処理については、図８を用いて説明したとおりであるので、説明を省略する。そして処理は終了する。
【００５９】
以上のような処理によれば、判定条件を満たすＶＭの種別を「バッチＶＭ」に自動的に変更できる一方、リソース不足であると閾値によって判定された時点でバッチＶＭを一時停止し、リソースをオンラインＶＭで利用できるようになる。これにより、オンラインＶＭの応答性能の劣化等を防止し、また、リソースを有効利用できるようになる。
【００６０】
次に、図１１を用いて、第１変更部１０２が実行する処理について説明する。
【００６１】
まず、第１変更部１０２は、ＶＭの種別を変更することを要求する変更要求をユーザ端末５から受信する（図１１：ステップＳ５５）。変更要求は、ＶＭ名又はＶＭ識別子とＶＭ種別の指定とを含む。
【００６２】
第１変更部１０２は、変更要求においてバッチＶＭへの変更が指定されているか判定する（ステップＳ５６）。変更要求においてバッチＶＭへの変更が指定されている場合（ステップＳ５６：Ｙｅｓルート）、第１変更部１０２は、種別変更処理部１１６に、第２の種別変更処理の実行を指示する。これに応じ、種別変更処理部１１６は、ＶＭ名又はＶＭ識別子によって特定されるＶＭについて、第２の種別変更処理を実行する（ステップＳ５７）。そして処理は終了する。第２の種別変更処理については、図８を用いて説明したとおりであるので、説明を省略する。
【００６３】
一方、変更要求においてバッチＶＭへの変更が指定されていない場合（ステップＳ５６：Ｎｏルート）、第１変更部１０２は、種別変更処理部１１６に、第１の種別変更指示の実行を指示する。これに応じ、種別変更処理部１１６は、第１の種別変更処理を実行する（ステップＳ５８）。そして処理は終了する。第１の種別変更処理については、図６及び図７を用いて説明したとおりであるので、説明を省略する。
【００６４】
以上のような処理を実行すれば、ユーザの意向に合わせてＶＭ種別を変更できるようになる。
【００６５】
次に、図１２及び図１３を用いて、リソース監視部１１３が実行する処理について説明する。本処理は、ＣＰＵ１５１及びメモリ１５２について定期的に実行される。
【００６６】
まず、リソース監視部１１３は、リソース使用率が閾値εn未満であるか判定する（図１２：ステップＳ６１）。リソース利用率が閾値εn未満ではない場合（ステップＳ６１：Ｎｏルート）、リソース監視部１１３は、実行状態が「実行中」であるバッチＶＭについての制御ブロックが制御キュー１１２に有るか判断する（ステップＳ６３）。
【００６７】
実行状態が「実行中」であるバッチＶＭについての制御ブロックが制御キュー１１２に無い場合（ステップＳ６３：Ｎｏルート）、処理は終了する。一方、実行状態が「実行中」であるバッチＶＭ（以下、対象ＶＭと呼ぶ）についての制御ブロックが制御キュー１１２に有る場合（ステップＳ６３：Ｙｅｓルート）、リソース監視部１１３は、一時停止処理を実行する（ステップＳ６５）。一時停止処理については、図１３を用いて説明する。
【００６８】
まず、リソース監視部１１３、管理部１２０を介して、ＶＭ実行部１３０に対象ＶＭの一時停止を指示する一時停止指示を送信する（図１３：ステップＳ８１）。これに応じ、ＶＭ実行部１３０における制御部１３１は、対象ＶＭを一時停止する。具体的には、制御部１３１は、対象ＶＭが使用するデータを記憶媒体１５４に保存し、対象ＶＭの電源を切断する。なお、ＶＭの一時停止処理はよく知られた処理であるので、ここでは詳細な説明を省略する。
【００６９】
処理監視部１１４は、対象ＶＭの制御ブロックにおける実行状態を「実行中」から「一時停止」に変更する（ステップＳ８３）。そして呼び出し元の処理（図１２）に戻り処理は終了する。
【００７０】
一方、リソース利用率が閾値εn未満である場合（ステップＳ６１：Ｙｅｓルート）、リソース監視部１１３は、制御キュー１１２における制御ブロックの数が１以上であるか判定する（ステップＳ６７）。制御ブロックの数が１以上ではない場合（ステップＳ６７：Ｎｏルート）、処理は終了する。一方、制御ブロックの数が１以上である場合（ステップＳ６７：Ｙｅｓルート）、リソース監視部１１３は、実行状態が「一時停止」であるバッチＶＭについての制御ブロックが制御キュー１１２に格納されているか判定する（ステップＳ６９）。
【００７１】
実行状態が「一時停止」であるバッチＶＭについての制御ブロックが制御キュー１１２に格納されていない場合（ステップＳ６９：Ｎｏルート）、処理は終了する。一方、実行状態が「一時停止」であるバッチＶＭ（ここでは、対象ＶＭと呼ぶ）についての制御ブロックが制御キュー１１２に格納されている場合（ステップＳ６９：Ｙｅｓルート）、リソース監視部１１３は、再開処理の実行を処理監視部１１４に指示する。これに応じ、処理監視部１１４は、対象ＶＭについて再開処理を実行する（ステップＳ７１）。そして処理は終了する。再開処理については、図７を用いて説明したとおりであるが、ステップＳ１７の場合とは異なり、ここでは対象ＶＭをバッチＶＭとして再開する処理を行う。
【００７２】
以上のような処理を実行すれば、リソース使用率に応じてバッチＶＭの一時停止と再開とを適切に行えるので、リソースが不足してオンラインＶＭの処理性能が劣化することを抑制できるようになると共に、リソースを有効に活用できるようになる。
【００７３】
次に、図１４及び図１５を用いて、閾値εnを算出する処理について説明する。本処理は、例えば定期的に実行される。
【００７４】
まず、リソース監視部１１３は、物理マシン１０内のリソースの情報を管理部１２０から取得する（図１４：ステップＳ９１）。
【００７５】
リソース監視部１１３は、ステップＳ９１において取得した情報に基づき閾値εnを算出する（ステップＳ９３）。そして処理は終了する。ステップＳ９３において算出された閾値εnは、図１２及び図１３を用いて説明した処理において使用される。
【００７６】
図１５を用いて、閾値εの算出について説明する。図１５において、横軸ｔは時間を表し、縦軸Ｒはリソースの使用率（％）を表す。Ｒumaxは使用率の最大値であり、Ｒｏは全オンラインＶＭによるリソースの使用率である。ｋはサンプリング数、δはサンプリング間隔であり、Δ（＝ｋ＊δ）は単位監視期間である。εmaxは閾値の上限であり、εminは閾値の下限である。Ｒｏの算出に使用される各オンラインＶＭのリソース使用率は、単位監視期間においてｋ回サンプリングされる。図１５においては、サンプリング数ｋ＝５であり、サンプリング間隔δ＝１である。
【００７７】
閾値εnの初期値であるε1は、Ｒumaxの１／２である５０とする。Δ1におけるサンプリング時刻ｔ1乃至ｔ5にてサンプリングが実行され、Ｒｏが算出される。Ｒｏが算出されると、Δ2についての閾値であるε2が算出される。なお、監視間隔Δnについての閾値εnは、以下の式によって与えられる。
【００７８】
【数１】
0006488910.tif 000002
【００７９】
よって、ε2は以下のようにして算出される。
【００８０】
【数２】
0006488910.tif 000003
【００８１】
ε2＝４０でありε1より小さいので、バッチＶＭが実行されにくくなる。
【００８２】
このように、或る監視間隔Δnについて算出されたリソース使用率Ｒｏが閾値εnを超える場合、次の監視間隔Δn+1において使用する閾値εn+1の値が小さくなる。逆に、或る監視間隔Δnについて算出されたリソース使用率Ｒｏが閾値εnを超えない場合、次の監視間隔Δn+1において使用する閾値εn+1の値が大きくなる。
【００８３】
これにより、オンラインＶＭのリソース使用率が日々大きく変動するために予測が困難な場合であっても適切な閾値を算出することができるようになる。
【００８４】
なお、εmax及びεminを導入することで、極端に大きい又は小さいＲｏが算出された場合に閾値εnが不適切な値になることを抑制できるようになる。
【００８５】
図１６を用いて、ＶＭの実行とリソース使用率との関係について説明する。図１６において、横軸は時間を表し、縦軸はリソースの使用率を表す。破線は閾値を表す。最初の段階では、オンラインＶＭであるＶＭ１とバッチＶＭであるＶＭ２とが実行されているが、オンラインＶＭであるＶＭ３の起動に伴い、リソース使用率が閾値を超えることが検出された。そこで、バッチＶＭであるＶＭ２は一時停止される。ＶＭ３の起動後にＶＭ４が起動し、リソースの使用率は閾値を超えるが、オンラインＶＭしか実行されていないので、ＶＭの一時停止は行われない。ＶＭ３及びＶＭ４が停止後、リソース使用率が閾値を下回ったため、ＶＭ２のバッチ処理が再開される。その後、ＶＭ２のバッチ処理が終了すると、ＶＭ２が停止する。一方、ＶＭ３及びＶＭ４は、夜間の時間帯にはオンラインＶＭからバッチＶＭに変更され、バッチ処理を実行する。図１６の例では、昼間の時間帯の閾値は５０（％）であり、夜間の時間帯の閾値は８０（％）である。
【００８６】
以上本発明の一実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上で説明した物理マシン１０の機能ブロック構成は実際のプログラムモジュール構成に一致しない場合もある。
【００８７】
また、上で説明した各テーブルの構成は一例であって、上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ処理の順番を入れ替えることも可能である。さらに、並列に実行させるようにしても良い。
【００８８】
以上述べた本発明の実施の形態をまとめると、以下のようになる。
【００８９】
本実施の形態に係る制御方法は、（Ａ）稼働中の仮想マシンがリアルタイム処理を実行する仮想マシン及びバッチ処理を実行する仮想マシンのいずれであるかの判定を行ない、（Ｂ）仮想マシンが実行する処理が終了した場合、判定の結果に基づいて、仮想マシンがバッチ処理を実行する仮想マシンである場合は仮想マシンを停止し、仮想マシンがリアルタイム処理を実行する仮想マシンである場合は仮想マシンの稼働を維持する処理を含む。
【００９０】
このようにすれば、バッチ処理を実行する仮想マシンによってリソースが占有されることを抑制できるので、リソース不足によってリアルタイム処理の性能が低下することを抑制できるようになる。
【００９１】
また、本制御方法は、（Ｃ）コンピュータ内のリソースの使用率が閾値を超えたか判定し、（Ｄ）コンピュータ内のリソースの使用率が閾値を超えており且つ仮想マシンがバッチ処理を実行する仮想マシンである場合、仮想マシンを一時停止する処理をさらに含んでもよい。このようにすれば、バッチ処理によりリソースが消費されることを抑制できるようになる。また、仮想マシンは一時停止されるので、仮想マシンがバッチ処理を後で再開することもできる。
【００９２】
また、本制御方法は、（Ｅ）コンピュータ内のリソースの使用率が閾値を超えていない場合、一時停止中の他の仮想マシンの稼働を再開する処理をさらに含んでもよい。このようにすれば、リアルタイム処理の性能が劣化することを抑制しつつリソースを有効に利用できるようになる。
【００９３】
また、本制御方法は、（Ｆ）仮想マシンの状態が所定の状態であるか判定し、（Ｇ）仮想マシンの状態が所定の状態であり且つ仮想マシンがリアルタイム処理を実行する仮想マシンである場合、仮想マシンをバッチ処理を実行する仮想マシンに変更する処理をさらに含んでもよい。このようにすれば、仮想マシンの種別を自動的に変更できるようになる。
【００９４】
また、本制御方法は、（Ｇ）仮想マシンの状態が所定の状態ではなく且つ仮想マシンがバッチ処理を実行する仮想マシンである場合、仮想マシンをリアルタイム処理を実行する仮想マシンに変更する処理をさらに含んでもよい。このようにすれば、仮想マシンの種別を自動的に変更できるようになる。
【００９５】
また、本制御方法は、（Ｈ）直近の所定期間におけるコンピュータ内のリソースの使用率に基づき、閾値を算出する処理をさらに含んでもよい。
【００９６】
また、上で述べた所定の状態は、トラフィック量が所定値以下である状態、ユーザからの入力を受け付けていない状態、及び所定のポート番号のネットワークポートでの通信が確立していない状態の少なくともいずれかを含んでもよい。
【００９７】
なお、上記方法による処理をプロセッサに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、ＣＤ−ＲＯＭ、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。
【００９８】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【００９９】
（付記１）
コンピュータに、
稼働中の仮想マシンがリアルタイム処理を実行する仮想マシン及びバッチ処理を実行する仮想マシンのいずれであるかの判定を行ない、
前記仮想マシンが実行する処理が終了した場合、前記判定の結果に基づいて、前記仮想マシンが前記バッチ処理を実行する仮想マシンである場合は前記仮想マシンを停止し、前記仮想マシンが前記リアルタイム処理を実行する仮想マシンである場合は前記仮想マシンの稼働を維持する、
処理を実行させるための制御プログラム。
【０１００】
（付記２）
前記コンピュータに、
前記コンピュータ内のリソースの使用率が閾値を超えたか判定し、
前記コンピュータ内のリソースの使用率が前記閾値を超えており且つ前記仮想マシンが前記バッチ処理を実行する仮想マシンである場合、前記仮想マシンを一時停止する、
処理をさらに実行させるための付記１記載の制御プログラム。
【０１０１】
（付記３）
前記コンピュータに、
前記コンピュータ内のリソースの使用率が前記閾値を超えていない場合、一時停止中の他の仮想マシンの稼働を再開する、
処理をさらに実行させるための付記２記載の制御プログラム。
【０１０２】
（付記４）
前記コンピュータに、
前記仮想マシンの状態が所定の状態であるか判定し、
前記仮想マシンの状態が前記所定の状態であり且つ前記仮想マシンが前記リアルタイム処理を実行する仮想マシンである場合、前記仮想マシンを前記バッチ処理を実行する仮想マシンに変更する、
処理をさらに実行させるための付記３記載の制御プログラム。
【０１０３】
（付記５）
前記コンピュータに、
前記仮想マシンの状態が前記所定の状態ではなく且つ前記仮想マシンが前記バッチ処理を実行する仮想マシンである場合、前記仮想マシンを前記リアルタイム処理を実行する仮想マシンに変更する、
処理をさらに実行させるための付記４記載の制御プログラム。
【０１０４】
（付記６）
前記コンピュータに、
直近の所定期間における前記コンピュータ内のリソースの使用率に基づき、前記閾値を算出する、
処理をさらに実行させるための付記２又は３記載の制御プログラム。
【０１０５】
（付記７）
前記所定の状態は、
トラフィック量が所定値以下である状態、ユーザからの入力を受け付けていない状態、及び所定のポート番号のネットワークポートでの通信が確立していない状態の少なくともいずれかを含む
付記４又は５記載の制御プログラム。
【０１０６】
（付記８）
コンピュータが、
稼働中の仮想マシンがリアルタイム処理を実行する仮想マシン及びバッチ処理を実行する仮想マシンのいずれであるかの判定を行ない、
前記仮想マシンが実行する処理が終了した場合、前記判定の結果に基づいて、前記仮想マシンが前記バッチ処理を実行する仮想マシンである場合は前記仮想マシンを停止し、前記仮想マシンが前記リアルタイム処理を実行する仮想マシンである場合は前記仮想マシンの稼働を維持する、
処理を実行する制御方法。
【０１０７】
（付記９）
稼働中の仮想マシンがリアルタイム処理を実行する仮想マシン及びバッチ処理を実行する仮想マシンのいずれであるかの判定を行なう判定部と、
前記仮想マシンが実行する処理が終了した場合、前記判定の結果に基づいて、前記仮想マシンが前記バッチ処理を実行する仮想マシンである場合は前記仮想マシンを停止し、前記仮想マシンが前記リアルタイム処理を実行する仮想マシンである場合は前記仮想マシンの稼働を維持する制御部と、
を有する情報処理装置。
【符号の説明】
【０１０８】
１  情報処理システム    ３  ネットワーク
５  ユーザ端末    １０  物理マシン
１５１  ＣＰＵ    １５２  メモリ
１５３  Ｉ／Ｏ    １５４  記憶媒体
１００  受付部    １０１  要求受付部
１０２  第１変更部    １１０  実行制御部
１１１  キュー管理部    １１２  制御キュー
１１３  リソース監視部    １１４  処理監視部
１１５  第２変更部    １１６  種別変更処理部
１２０  管理部    １２１  種別データ格納部
１２２  種別管理部    １２３  配備部
１２４  移動部    １２５  リソース変更部
１２６  状況管理部    １２７  仮想化管理部
１３０  ＶＭ実行部    １３１  制御部
【図１】
0006488910.tif 000004
【図２】
0006488910.tif 000005
【図３】
0006488910.tif 000006
【図４】
0006488910.tif 000007
【図５】
0006488910.tif 000008
【図６】
0006488910.tif 000009
【図７】
0006488910.tif 000010
【図８】
0006488910.tif 000011
【図９】
0006488910.tif 000012
【図１０】
0006488910.tif 000013
【図１１】
0006488910.tif 000014
【図１２】
0006488910.tif 000015
【図１３】
0006488910.tif 000016
【図１４】
0006488910.tif 000017
【図１５】
0006488910.tif 000018
【図１６】
0006488910.tif 000019