(57)【要約】  複数のアプリケーションのそれぞれについて、アプリケーションの実行に関連した負荷が低下する時間の傾向を判定する低負荷傾向判定部（２１）と、判定された時間の傾向に基づき、複数の仮想マシンの中から、割り当てを行なうアプリケーションに割り当てる仮想マシンを選択して割り当てる割り当て処理部（２２）とを備えることで、仮想マシンのリソースを効率的に利用できるようにする。
2017006384.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
複数のアプリケーションのそれぞれについて、該アプリケーションの実行に関連した負荷が低下する時間の傾向を判定し、
前記時間の傾向に基づき、前記複数の仮想マシンの中から、割り当てを行なうアプリケーションに割り当てる仮想マシンを選択して割り当てる
処理を実行させることを特徴とする、仮想マシン管理プログラム。
【請求項２】
前記時間の傾向を、前記割り当てを行なうアプリケーションが入力操作インタフェース機能を有するかを判断することで判定する
処理を前記コンピュータに実行させることを特徴とする、請求項１記載の仮想マシン管理プログラム。
【請求項３】
前記時間の傾向を、前記割り当てを行なうアプリケーションに対応する地域判定要素に基づき判定する
処理を前記コンピュータに実行させることを特徴とする、請求項１または２記載の仮想マシン管理プログラム。
【請求項４】
前記仮想マシンに割り当て済みのアプリケーションの実行によるハードウェア負荷の測定結果に基づいて作成した、前記割り当て済みのアプリケーションに関する前記負荷が低下する時間の傾向を表す低負荷傾向実績情報と、前記割り当てを行なうアプリケーションの実行によるハードウェア負荷が低下する時間の傾向を予測する低負荷傾向推定情報と、に基づき、前記割り当てを行なうアプリケーションに割り当てる仮想マシンを選択する
処理を前記コンピュータに実行させることを特徴とする、請求項１〜３のいずれか１項に記載の仮想マシン管理プログラム。
【請求項５】
前記割り当てを行なうアプリケーションに割り当てる仮想マシンとして選択した前記仮想マシンにアプリケーションを割り当て可能な空きリソースがあるかを確認し、空きリソースが無い場合に仮想マシンの追加を行なう処理を前記コンピュータに実行させることを特徴とする、請求項１〜４のいずれか１項に記載の仮想マシン管理プログラム。
【請求項６】
複数のアプリケーションのそれぞれについて、該アプリケーションの実行に関連した負荷が低下する時間の傾向を判定する低負荷傾向判定部と、
前記時間の傾向に基づき、前記複数の仮想マシンの中から、割り当てを行なうアプリケーションに割り当てる仮想マシンを選択して割り当てる割り当て処理部と
を備えることを特徴とする、仮想マシン管理装置。
【請求項７】
前記低負荷傾向判定部が、
前記時間の傾向を、前記割り当てを行なうアプリケーションが入力操作インタフェース機能を有するかを判断することで判定する
ことを特徴とする、請求項６記載の仮想マシン管理装置。
【請求項８】
前記低負荷傾向判定部が、
前記時間の傾向を、前記割り当てを行なうアプリケーションに対応する地域判定要素に基づき判定する
ことを特徴とする、請求項６または７記載の仮想マシン管理装置。
【請求項９】
前記割り当て処理部が、
前記仮想マシンに割り当て済みのアプリケーションの実行によるハードウェア負荷の測定結果に基づいて作成した、前記割り当て済みのアプリケーションに関する前記負荷が低下する時間の傾向を表す低負荷傾向実績情報と、前記割り当てを行なうアプリケーションの実行によるハードウェア負荷が低下する時間の傾向を予測する低負荷傾向推定情報と、に基づき、前記割り当てを行なうアプリケーションに割り当てる仮想マシンを選択する
ことを特徴とする、請求項６〜８のいずれか１項に記載の仮想マシン管理装置。
【請求項１０】
前記割り当てを行なうアプリケーションに割り当てる仮想マシンとして選択した前記仮想マシンに空きリソースがあるかを確認し、空きリソースが無い場合に仮想マシンの追加を行なう仮想マシン管理部を備える
ことを特徴とする、請求項６〜９のいずれか１項に記載の仮想マシン管理装置。
【請求項１１】
複数のアプリケーションのそれぞれについて、該アプリケーションの実行に関連した負荷が低下する時間の傾向を判定するステップと、
前記時間の傾向に基づき、前記複数の仮想マシンの中から、割り当てを行なうアプリケーションに割り当てる仮想マシンを選択して割り当てるステップと
を備えることを特徴とする、仮想マシン管理方法。
【請求項１２】
前記時間の傾向を、前記割り当てを行なうアプリケーションが入力操作インタフェース機能を有するかを判断することで判定するステップ
を備えることを特徴とする、請求項１１記載の仮想マシン管理方法。
【請求項１３】
前記時間の傾向を、前記割り当てを行なうアプリケーションに対応する地域判定要素に基づき判定するステップ
を備えることを特徴とする、請求項１１または１２記載の仮想マシン管理方法。
【請求項１４】
前記仮想マシンに割り当て済みのアプリケーションの実行によるハードウェア負荷の測定結果に基づいて作成した、前記割り当て済みのアプリケーションに関する前記負荷が低下する時間の傾向を表す低負荷傾向実績情報と、前記割り当てを行なうアプリケーションの実行によるハードウェア負荷が低下する時間の傾向を予測する低負荷傾向推定情報と、に基づき、前記割り当てを行なうアプリケーションに割り当てる仮想マシンを選択する
ことを特徴とする、請求項１１〜１３のいずれか１項に記載の仮想マシン管理方法。
【請求項１５】
前記割り当てを行なうアプリケーションに割り当てる仮想マシンとして選択した前記仮想マシンに空きリソースがあるかを確認し、空きリソースが無い場合に仮想マシンの追加を行なうステップ
を備えることを特徴とする、請求項１１〜１４のいずれか１項に記載の仮想マシン管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想マシン管理プログラム，仮想マシン管理装置および仮想マシン管理方法に関する。
【背景技術】
【０００２】
クラウドコンピューティングサービスの一つとして、アプリケーションの実行基盤を提供するＰａａＳ（Platform as a Service）が知られている。
ＰａａＳ環境では、アプリケーション開発者がアプリケーションをアップロードする際に、運用プログラムによってアプリケーションのインスタンス（アプリケーションインスタンス，アプリインスタンス）を配備する仮想マシン（Virtual Machine：ＶＭ）が決定される。なお、インスタンスとは、データを処理する単位である。以下、アプリケーションインスタンスを単にインスタンスという。【０００３】
ＰａａＳの運用者は、運用コストを低減するために、インスタンスの配備やスケーリングを行なう際に、新たに作成するインスタンスの配置場所を適切に決定し、使用するＶＭリソース（例えば、ストレージ）を最小限にすることが求められる。
従来の分散処理システムにおいては、ＶＭへインスタンスを配置する際に、同じリソース（例えば、ストレージ）を利用するアプリケーションのインスタンスを同一のＶＭに配備している。【０００４】
図８は従来の仮想マシンの管理方法によるＶＭへのアプリケーションのインスタンスの配置方法を説明するための図である。
図８においては、ＰａａＳ環境において、４種類のアプリケーションＡ，Ｂ，Ｃ，Ｄの各インスタンスを複数のＶＭに配置する例を示している。図８中において、符号０１Ａ，０１Ｂ，０１Ｃ，０１Ｄは、それぞれアプリケーションＡ，Ｂ，Ｃ，Ｄの各インスタンスを示す。以下、アプリケーションＡのインスタンスを、符号０１Ａを用いてインスタンス０１Ａと表す。同様に、アプリケーションＢのインスタンスを、符号０１Ｂを用いてインスタンス０１Ｂと表し、アプリケーションＣのインスタンスを、符号０１Ｃを用いてインスタンス０１Ｃと表す。また、アプリケーションＤのインスタンスを、符号０１Ｄを用いてインスタンス０１Ｄと表す。【０００５】
また、アプリケーションＡ，Ｂ，Ｃ，Ｄは互いに異なるリソースを利用するものとする。
前述の如く、従来の分散処理システムにおいては、同じリソースを利用するアプリケーションのインスタンスを同じＶＭに配備する。従って、図８に示すように、アプリケーションＡに関する複数のインスタンス０１Ａは同一のＶＭにまとめて配備される。同様に、アプリケーションＢ，Ｃ，Ｄに関する複数のインスタンス０１Ｂ，０１Ｃ，０１Ｄは、それぞれ同一のＶＭにまとめて配備される。【０００６】
従って、アプリケーションＡ，Ｂ，Ｃ，Ｄが互いに異なるリソースを利用する場合には、インスタンス０１Ａ，０１Ｂ，０１Ｃ，０１Ｄは互いに異なるＶＭにそれぞれ配備される。
ここで、図８に示す状態において、更にアプリケーションＡについてのインスタンス０１Ａ′およびアプリケーションＣについてのインスタンス０１Ｃ′をスケールアウトにより追加する。このような場合に、従来の仮想マシンの管理方法によれば、インスタンス０１Ａ′は、インスタンス０１Ａが動作している既存のＶＭに配備され、インスタンス０１Ｃ′は、インスタンス０１Ｃが動作している既存のＶＭに配備される。【０００７】
また、仮想マシンの管理においては、実行されていないインスタンスをＶＭから削除するスケールインを行なったり、インスタンスが実行されていないＶＭをスケールインすることで、ＶＭリソースを効率的に使用することが行なわれている。
【特許文献１】特表２００６−５０６７４８号公報
【特許文献２】国際公開ＷＯ２０１０／０９５５７９号パンフレット
【特許文献３】国際公開ＷＯ２０１３／０１８９１４号パンフレット
【発明の開示】
【発明が解決しようとする課題】
【０００８】
上述の如く、従来の仮想マシンの管理方法においては、同じリソースを利用するアプリケーションのインスタンスを同じＶＭに配備する。
これにより、ＶＭにおいては、配備された複数のインスタンスを必ずしも同様のタイミングでスケールインすることができず、スケールインできるインスタンスがある一方で、いつまでもスケールインできないインスタンスが残存する場合がある。【０００９】
ＶＭにおいて、スケールインできないインスタンスが残存して動作している間は、ＶＭのスケールインを行なうことができない。
例えば、図８に示した例において、上述の如く追加したインスタンス０１Ａ′，０１Ｃ′をそれぞれＶＭからスケールインする場合においても、各ＶＭにおいてはインスタンス０１Ａ，０１Ｃがそれぞれ動作していることにより、これらのＶＭをスケールインすることはできない。その結果、例えば、少数のインスタンスが動作するＶＭが複数存在することで、ＶＭリソースを効率的に利用することができないという課題がある。【００１０】
１つの側面では、本発明は、仮想マシンのリソースを効率的に利用できるようにすることを目的とする。
【課題を解決するための手段】
【００１１】
上記の目的を達成するために、この仮想マシン管理装置は、複数のアプリケーションのそれぞれについて、前記アプリケーションの実行に関連した負荷が低下する時間の傾向を判定する低負荷傾向判定部と、前記時間の傾向に基づき、前記複数の仮想マシンの中から、割り当てを行なうアプリケーションに割り当てる仮想マシンを選択して割り当てる割り当て処理部とを備える。
【発明の効果】
【００１２】
一実施形態によれば、仮想マシンのリソースを効率的に利用できる。
【図面の簡単な説明】
【００１３】
【図１】実施形態の一例としての仮想マシン管理装置を備えるコンピュータシステムを例示する図である。
【図２】実施形態の一例としての仮想マシン管理装置として機能する管理サーバのハードウェア構成を示す図である。
【図３】実施形態の一例としての仮想マシン管理装置として機能する管理サーバの機能構成を示す図である。
【図４】実施形態の一例としての仮想マシン管理装置として機能する管理サーバにおける低負荷傾向実績情報を例示する図である。
【図５】実施形態の一例としての仮想マシン管理装置として機能する管理サーバの低負荷傾向推定情報を例示する図である。
【図６】実施形態の一例としての仮想マシン管理装置による仮想マシンの管理方法を説明するフローチャートである。
【図７】実施形態の一例としての仮想マシン管理装置による仮想マシンの管理方法を説明するフローチャートである。
【図８】実施形態の一例としての仮想マシン管理装置として機能する管理サーバにおけるＶＭへのアプリケーションのインスタンスの配備例を示す図である。
【図９】従来の仮想マシンの管理方法によるＶＭへのアプリケーションのインスタンスの配置方法を説明するための図である。
【発明を実施するための最良の形態】
【００１４】
以下、図面を参照して本仮想マシン管理プログラム，仮想マシン管理装置および仮想マシン管理方法に係る実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。又、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。【００１５】
（Ａ）構成
図１は実施形態の一例としての仮想マシン管理装置を備えるコンピュータシステムを例示する図、図２はその仮想マシン管理装置として機能する管理サーバのハードウェア構成を示す図、図３はその仮想マシン管理装置の機能構成を示す図である。
図１に示すコンピュータシステム１は、管理サーバ（仮想マシン管理装置）１０と複数（図１に示す例では５台）のノードコンピュータ２（以下、単にノード２という）とをネットワーク３を介して相互に接続して構成されている。【００１６】
また、コンピュータシステム１には、開発者端末５およびユーザ端末４が通信可能に接続されている。
ノード２は、図示しないプロセッサとメモリとを備えるコンピュータであって、プロセッサがプログラムを実行することで種々の機能を実現する。例えば、ノード２は、そのプロセッサやメモリ等のリソースの一部を、管理サーバ１０が管理する仮想マシン（ＶＭ）の実行のために提供し、管理サーバ１０から割り当てられた処理を実行する。すなわち、ノード２は、仮想マシンとしての少なくとも一部の機能を実行する。【００１７】
開発者端末５は、アプリケーションプログラム（アプリケーション）の提供者が使用するコンピュータである。提供者は、この開発者端末５を用いてアプリケーションを管理サーバ１０に送信することで、本コンピュータシステム１へのアプリケーションのアップロードを行なう。
アプリケーションは、例えば、ウェブアプリケーション（ウェブアプリ）である。ウェブアプリは、ネットワークを介して使用するアプリケーションソフトウェアであり、ウェブブラウザ上で動作するJavaScript（登録商標）等のプログラミング言語によるプログラムとウェブサーバ側のプログラムが協調することによって動作する。【００１８】
なお、アプリケーションにおいては、実行に際してユーザによる入力操作や確認作業を伴う、ユーザ介在型アプリケーションと、ユーザの手を煩わせることなく動作する、ユーザ非介在型アプリケーションとがある。
ユーザ介在型アプリケーションは、例えば、ワードプロセッサや表計算，ゲーム等のアプリケーションである。ユーザ非介在型アプリケーションは、例えば、演算や解析等をバッチ処理で行なうデータ処理用のアプリケーションである。【００１９】
ユーザ端末４は、ユーザが使用するコンピュータであり、図示しないプロセッサとメモリとを備え、プロセッサがプログラムを実行することで種々の機能を実現する。例えば、ユーザ端末４においてウェブブラウザが実行され、ユーザは、このウェブブラウザ上でアプリケーション（ウェブアプリ）を使用する。すなわち、ユーザは、このユーザ端末４を用いて、ユーザ介在型アプリケーションの操作や、ユーザ非介在型アプリケーションに対する実行指示を行なう。【００２０】
管理サーバ１０は、サーバ機能を有するコンピュータ（サーバコンピュータ）であり、複数のノード２のハードウェアリソースおよびソフトウェアリソースを用いて仮想化された開発環境や実行環境を提供する。本実施形態においては、管理サーバ１０が仮想化システムとしてＰａａＳ環境を用いる例について示す。
管理サーバ１０は、複数のノード２のリソースを用いて複数のＶＭを実現し、これらのＶＭに、上述したアプリケーションのインスタンスを割り当てて実施させる仮想マシン管理装置として機能する。【００２１】
まず、図２を参照しながら、本実施形態の仮想マシン管理装置として機能する管理サーバ１０のハードウェア構成について説明する。
管理サーバ１０は、例えば、プロセッサ１１，ＲＡＭ（Random Access Memory）１２，ＨＤＤ（Hard Disk Drive）１３，グラフィック処理装置１４，入力インタフェース１５，光学ドライブ装置１６，機器接続インタフェース１７およびネットワークインタフェース１８を構成要素として有する。これらの構成要素１１〜１８は、バス１９を介して相互に通信可能に構成される。【００２２】
プロセッサ（処理部）１１は、管理サーバ１０全体を制御する。プロセッサ１１は、マルチプロセッサであってもよい。プロセッサ１１は、例えばＣＰＵ（Central Processing Unit），ＭＰＵ（Micro Processing Unit），ＤＳＰ（Digital Signal Processor），ＡＳＩＣ（Application Specific Integrated Circuit），ＰＬＤ（Programmable Logic Device），ＦＰＧＡ（Field Programmable Gate Array）のいずれか一つであってもよい。また、プロセッサ１１は、ＣＰＵ，ＭＰＵ，ＤＳＰ，ＡＳＩＣ，ＰＬＤ，ＦＰＧＡのうちの２種類以上の要素の組み合わせであってもよい。【００２３】
ＲＡＭ（記憶部）１２は、管理サーバ１０の主記憶装置として使用される。ＲＡＭ１２には、プロセッサ１１に実行させるＯＳ（Operating System）プログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１２には、プロセッサ１１による処理に必要な各種データが格納される。アプリケーションプログラムには、管理サーバ１０によって本実施形態の仮想マシン管理機能を実現するためにプロセッサ１１によって実行される仮想マシン管理プログラム（図３の符号３１参照）が含まれてもよい。【００２４】
ＨＤＤ（記憶部）１３は、内蔵したディスクに対して、磁気的にデータの書き込み及び読み出しを行なう。ＨＤＤ１３は、管理サーバ１０の補助記憶装置として使用される。ＨＤＤ１３には、ＯＳプログラム，アプリケーションプログラム、及び各種データが格納される。なお、補助記憶装置としては、フラッシュメモリ等の半導体記憶装置（ＳＳＤ：Solid State Drive）を使用することもできる。【００２５】
グラフィック処理装置１４には、モニタ１４ａが接続されている。グラフィック処理装置１４は、プロセッサ１１からの命令に従って、画像をモニタ１４ａの画面に表示させる。モニタ１４ａとしては、ＣＲＴ（Cathode Ray Tube）を用いた表示装置や液晶表示装置等が挙げられる。
入力インタフェース１５には、キーボード１５ａおよびマウス１５ｂが接続されている。入力インタフェース１５は、キーボード１５ａやマウス１５ｂから送られてくる信号をプロセッサ１１に送信する。なお、マウス１５ｂは、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル，タブレット，タッチパッド，トラックボール等が挙げられる。【００２６】
光学ドライブ装置１６は、レーザ光等を利用して、光ディスク１６ａに記録されたデータの読み取りを行なう。光ディスク１６ａは、光の反射によって読み取り可能にデータを記録された可搬型の非一時的な記録媒体である。光ディスク１６ａには、ＤＶＤ（Digital Versatile Disc），ＤＶＤ−ＲＡＭ，ＣＤ−ＲＯＭ（Compact Disc Read Only Memory），ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）等が挙げられる。【００２７】
機器接続インタフェース１７は、管理サーバ１０に周辺機器を接続するための通信インタフェースである。例えば、機器接続インタフェース１７には、メモリ装置１７ａやメモリリーダライタ１７ｂを接続することができる。メモリ装置１７ａは、機器接続インタフェース１７との通信機能を搭載した非一時的な記録媒体、例えばＵＳＢ（Universal Serial Bus）メモリである。メモリリーダライタ１７ｂは、メモリカード１７ｃへのデータの書き込み、またはメモリカード１７ｃからのデータの読み出しを行なう。メモリカード１７ｃは、カード型の非一時的な記録媒体である。【００２８】
ネットワークインタフェース１８は、ネットワーク３に接続される。ネットワークインタフェース１８は、ネットワーク３を介して、ノード２や開発者端末５，ユーザ端末４等の他のコンピュータまたは通信機器との間でデータの送受信を行なう。
以上のようなハードウェア構成を有する管理サーバ１０によって、後述する本実施形態の仮想マシン管理機能を実現することができる。【００２９】
なお、管理サーバ１０は、例えばコンピュータ読み取り可能な非一時的な記録媒体に記録されたプログラム（仮想マシン管理プログラム等）を実行することにより、本実施形態の仮想マシン管理機能を実現する。管理サーバ１０に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、管理サーバ１０に実行させるプログラムをＨＤＤ１３に格納しておくことができる。プロセッサ１１は、ＨＤＤ１３内のプログラムの少なくとも一部をＲＡＭ１２にロードし、ロードしたプログラムを実行する。【００３０】
また、管理サーバ１０（プロセッサ１１）に実行させるプログラムを、光ディスク１６ａ，メモリ装置１７ａ，メモリカード１７ｃ等の非一時的な可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ１１からの制御により、ＨＤＤ１３にインストールされた後、実行可能になる。また、プロセッサ１１が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。【００３１】
次に、図３を参照しながら、本実施形態の仮想マシン管理機能を有する管理サーバ（情報処理装置，コンピュータ）１０の機能構成について説明する。図３は、当該機能構成の一例を示すブロック図である。
管理サーバ１０は、仮想マシン（ＶＭ）を管理し、ＶＭにアプリケーションのインスタンスを割り当てる機能を果たす。このため、管理サーバ１０は、図１に示すように、少なくとも処理部２０，記憶部３０，入力部４０および表示部５０としての機能を有している。【００３２】
処理部２０は、例えば図２に示すようなプロセッサ１１であり、上述した仮想マシン管理プログラム３１を実行することで、後述するＶＭ管理部２３，低負荷傾向判定部２１，割り当て処理部２２としての機能を果たす。
記憶部３０は、例えば図２に示すようなＲＡＭ１２，ＨＤＤ１３であり、仮想マシン管理機能を実現するための各種情報を記憶し保存する。当該各種情報としては、上述した仮想マシン管理プログラム３１のほか、ＧＵＩ（Graphical User Interface）判定条件３２，地域判定条件３３，低負荷傾向実績情報３６，低負荷傾向推定情報３４および地域管理情報３５などが含まれる。なお、これらのＧＵＩ判定条件３２，地域判定条件３３，低負荷傾向実績情報３６，低負荷傾向推定情報３４および地域管理情報３５の詳細については後述する。【００３３】
入力部４０は、例えば図２に示すようなキーボード１５ａおよびマウス１５ｂであり、システム管理者等によって操作され、各種指示を行なう。なお、マウス１５ｂに代え、タッチパネル，タブレット，タッチパッド，トラックボール等が用いられてもよい。
表示部５０は、例えば図２に示すようなモニタ１４ａであり、例えばエラー通知等、システム管理者等に対して提示する各種情報を表示する。【００３４】
仮想マシン管理プログラム３１は、上述のごとく、処理部２０（プロセッサ１１）に、仮想マシン管理機能を実行させるものである。
次に、処理部２０（プロセッサ１１）によって実現される、ＶＭ管理部２３，低負荷傾向判定部２１および割り当て処理部２２としての機能について説明する。
ＶＭ管理部２３は、本コンピュータシステム１に備えられる複数のノード２のリソースを用いて、複数のＶＭを構成し、また、これらの複数のＶＭの管理を行なう。また、ＶＭ管理部（仮想マシン管理部）２３は、ＶＭの削除するスケールインやＶＭを追加するスケールアウトも行なう。【００３５】
なお、ＶＭの構成や管理は既知の種々の手法を用いて実現することができ、その説明は省略する。
低負荷傾向判定部２１は、アプリケーションおよび複数のＶＭそれぞれの上で既に動作している各アプリケーション（インスタンス）を実行するためのハードウェアの負荷が低下する時間の傾向を判定する。以下、簡便のため、アプリケーションを実行するためのハードウェアの負荷を、単に、アプリケーションの負荷と表現する。【００３６】
低負荷傾向判定部２１は、図３に示すように、負荷測定部２１３，ＧＵＩ（Graphical User Interface）判定部２１１および地域特性判定部２１２としての機能を備える。
負荷測定部２１３は、ＶＭに割り当て済みのアプリケーションインスタンスについて、各インスタンスの実行によるハードウェア負荷を測定する。負荷測定部２１３は、インスタンスの実行に用いられるノードコンピュータ２のハードウェアの負荷として、例えば、ＣＰＵ使用率、メモリ使用率およびディスクＩ／Ｏを測定する。【００３７】
このように、負荷測定部２１３は、ＶＭに割り当て済みのアプリケーションインスタンスについて、各インスタンスの実行によるハードウェア負荷を測定する。
また、負荷測定部２１３は、測定したハードウェア負荷に基づき。ＶＭに割り当て済みの各アプリケーションについて低負荷傾向実績情報３６を作成する。
図４は実施形態の一例としての仮想マシン管理装置として機能する管理サーバにおける低負荷傾向実績情報３６を例示する図である。【００３８】
この図４に示す低負荷傾向実績情報３６は、複数の時間帯（図４に示す例では、0:00〜4:00，4:00〜8:00，8:00〜12:00，12:00〜16:00，16:00〜20:00および20:00〜24:00の６つの時間帯）のそれぞれについて、低負荷であるか否かを示す情報（“0”もしくは“1”）を対応付けて構成されている。
負荷測定部２１３は、低負荷傾向実績情報３６において、低負荷である時間帯に対しては“0”を、低負荷でない時間帯に対しては“1”を、低負状態であるか否かを表す情報として設定する。【００３９】
例えば、負荷測定部２１３は、上述した各時間帯について、前述の如く測定した、インスタンスの実行に用いられるノードコンピュータ２のハードウェアの負荷（ＣＰＵ使用率、メモリ使用率およびディスクＩ／Ｏ）の実測値を、予め規定した閾値と比較する。負荷測定部２１３は、ＣＰＵ使用率、メモリ使用率およびディスクＩ／Ｏのいずれかの実測値が閾値以上となった場合に、低負荷傾向実績情報３６における当該時間帯に対して、低負荷でないことを示す“1”を設定する。また、ＣＰＵ使用率、メモリ使用率およびディスクＩ／Ｏのいずれの実測値も閾値未満の場合には、低負荷傾向実績情報３６における当該時間帯に対して、低負荷であることを示す“0”を設定する。【００４０】
すなわち、低負荷傾向実績情報３６において、時間帯毎に設定された、これらの低負荷であるか否かを示す情報は、ＶＭにおいて実行されている各アプリケーションの負荷が低くなる時間の傾向を表す情報として機能する。
なお、低負荷傾向実績情報３６の構成は、図４に例示したものに限定されるものではなく、適宜変更して実施することができる。例えば、図４に例示した低負荷傾向実績情報３６は４時間毎の６つの時間帯に分けて構成されているが、これに限定されるものではなく、５つ以下、もしくは７つ以上の時間帯に分けて構成してもよい。また、図４に示す例においては、低負荷である時間帯に対しては“0”を、低負荷でない時間帯に対しては“1”を設定しているが、これらに限定されるものではなく、適宜変更して実施することができる。【００４１】
また、上述の如く構成された低負荷傾向実績情報３６は、記憶部３０の所定の領域等にアプリケーションを特定する情報（例えば、アプリケーションＩＤ）に対応付けて格納される。
以下、本コンピュータシステム１において、ＶＭ上で実行されているアプリケーションを既存アプリケーションまたは既存アプリという場合がある。【００４２】
負荷測定部２１３は、既存アプリの実行に伴うハードウェア負荷を測定し、ハードウェア負荷を時間毎（時間帯毎）に管理することで、既存アプリによるハードウェア負荷が低くなる時間の傾向を表す情報を管理する。
また、負荷測定部２１３は、既存アプリケーションについてのＣＰＵ使用率やメモリ使用率、ディスクＩ／Ｏを定期的に取得（モニタリング）し、低負荷傾向実績情報３６を更新する。【００４３】
ＧＵＩ判定部２１１は、本コンピュータシステム１に新規にアップロードされるアプリケーションについて、当該アプリケーションの負荷が低下する時間の傾向を判断するために、アプリケーションを利用するための手動操作の必要性の有無を判定する。
具体的には、ＧＵＩ判定部２１１は、アップロードされたアプリケーションがＧＵＩを持つかどうかに基づいて、当該アプリケーションを利用するための手動操作の必要性の有無を決定する。すなわち、ＧＵＩ判定部２１１は、アプリケーションが入力操作インタフェース機能であるＧＵＩを有するか否かを判定することで、ユーザ介在型アプリケーションであるか否かを判定する。【００４４】
ＧＵＩを持つアプリケーションは、人が操作することを想定したユーザ介在型アプリケーションであるので、一般的には日中に多く利用され、夜間にはほとんど利用されないと考えられる。
従って、そのアプリケーションを利用するための手動操作の必要性があるユーザ介在型アプリケーションは、夜間の時間帯には負荷が低下すると判断することができる。【００４５】
新規にアップロードされるアプリケーションについては、当該アプリケーションの実行に関連したハードウェア負荷は測定されておらず、そのハードウェア負荷が低くなる時間は不明である。しかしながら、当該アプリケーションがユーザ介在型アプリケーションである場合には、夜間の時間帯には負荷が低下すると判断することができる。
そこで、本コンピュータシステム１においては、低負荷傾向判定部２１（ＧＵＩ判定部２１１）は、ユーザ介在型アプリケーションについては、夜間の時間帯（例えば、20:00〜8:00）の時間帯はそのハードウェア負荷が低くなると推定する。【００４６】
以下、本コンピュータシステム１において、本コンピュータシステム１に新規にアップロードされるアプリケーションを新規アプリケーションまたは新規アプリという場合がある。
ＧＵＩ判定部２１１は、新規アプリケーションがユーザ介在型アプリケーションであるか否か、すなわち、新規アプリケーションがＧＵＩを有するか否かを判断するために、ＧＵＩ判定条件３２を用いる。【００４７】
ＧＵＩ判定条件３２は、ＧＵＩ判定部２１１が、アプリケーションがＧＵＩを持つか否かの判定を行なうために用いる情報（条件）である。ＧＵＩ判定条件３２として設定された以下の条件１〜３のいずれかを満たす場合に、ＧＵＩ判定部２１１は、アプリケーションがＧＵＩを持つと判断する。
［条件１］HTML，CSS，JavaScriptのいずれかのファイルがアプリケーション内にあること。【００４８】
具体的には、アプリケーション内に、“.html”，“.css”，“.js”のいずれかの拡張子を有するファイルが含まれること。
［条件２］アプリケーションにおいて、特定のテンプレートエンジン（例えば、Jade，HAML，Mustache）が利用されていること。
例えば、アプリケーション内に拡張子“.jade”を有するファイルが含まれる場合には、テンプレートエンジンJadeが利用されていると判断することができる。【００４９】
また、アプリケーション内に、拡張子“.haml”を有するファイルが含まれる場合には、テンプレートエンジンHAMLが利用されていると判断することができる。
また、アプリケーション内に、拡張子“.mastache”を有するファイルが含まれる場合には、テンプレートエンジンMustacheが利用されていると判断することができる。
［条件３］
上記条件１，２のいずれにも該当しない場合において、アプリケーションが、当該アプリケーションの作成に用いられている言語（作成言語）に応じたＧＵＩ機能を有すること。【００５０】
以下に、Java（登録商標），Ruby，Node.js（登録商標），Python（登録商標）およびPHPの５種類の作成言語について、ＧＵＩ機能を有することを判定するための条件を例示する。
（１）作成言語がJavaの場合に、「拡張子“.war”を有するファイルがある」、「ＪＳＰ（JavaServer Pages）が利用されている」および「テンプレートエンジンとしてApache Velocityを利用している」のいずれかの条件を満たすこと。【００５１】
なお、アプリケーション内に拡張子“.jsp”を有するファイルがある場合に、ＪＳＰが利用されていると判断することができる。また、アプリケーション内に拡張子“.vm”を有するファイルがある場合に、テンプレートエンジンとしてApache Velocityを利用していると判断することができる。
（２）作成言語がRubyの場合に、「テンプレートエンジンとしてerbが利用されている」または、「ソースコードの中でHTMLの生成に関係するERBのようなライブラリが利用されている」こと。【００５２】
なお、アプリケーション内に拡張子“.erb”を有するファイルがある場合に、テンプレートエンジンとしてerbが利用されていると判断することができる。
（３）作成言語がNode.jsの場合に、テンプレートエンジンとしてEJSが利用されていること。
なお、アプリケーション内に拡張子“.ejs”を有するファイルがある場合に、テンプレートエンジンとしてEJSが利用されていると判断することができる。【００５３】
（４）作成言語がPythonの場合に、テンプレートエンジンとしてJinja2, Makoが利用されていること。
なお、アプリケーション内に拡張子“.jinja2”を有するファイルがある場合に、テンプレートエンジンとしてJinja2が利用されていると判断することができる。また、アプリケーション内に拡張子“.mak”または拡張子“.mako”を有するファイルがある場合に、テンプレートエンジンとしてMakoが利用されていると判断することができる。【００５４】
（５）作成言語がPHPの場合に、テンプレートエンジンとしてSmarty，Twig，PHPTALのいずれかを利用していること。
なお、アプリケーション内に拡張子“.tpl”を有するファイルがある場合に、テンプレートエンジンとしてSmartyが利用されていると判断することができる。また、アプリケーション内に拡張子“.twig”を有するファイルがある場合に、テンプレートエンジンとしてTwigが利用されていると判断することができる。【００５５】
さらに、アプリケーション内に拡張子“.phptal”を有するファイルがある場合に、テンプレートエンジンとしてPHPTALが利用されていると判断することができる。
なお、作成言語（アプリケーションの作成言語）は、例えば、以下の（ａ）〜（ｅ）に示す手法で判断することができる。
（ａ）アプリケーションのrootディレクトリにpom.xmlというファイルがある場合には、作成言語はJavaである。【００５６】
（ｂ）アプリケーション内にGemfileがある場合には、作成言語はRubyである。
（ｃ）アプリケーション内にpackage.jsonがある場合には、作成言語はNode.jsである。
（ｄ）アプリケーション内にrequirements.txtまたはsetup.pyがある場合には、作成言語はPythonである。【００５７】
（ｅ）アプリケーション内に拡張子“.php”のファイルがある場合には、作成言語はPHPである。
また、ＧＵＩ判定部２１１は、上記条件１〜３のいずれにも該当しない場合に、アプリケーションがＧＵＩを持たないと判定する。また、上記条件１，２のいずれにも該当せず、且つ、条件３に関してアプリケーションの作成言語を判別できない場合には、ＧＵＩ判定部２１１は、アプリケーションにおけるＧＵＩの有無が不明であると判定する。【００５８】
ＧＵＩ判定部２１１は、新規アプリケーションがＧＵＩを持つか否かの判定結果に基づき、低負荷傾向推定情報３４を作成する。
低負荷傾向推定情報３４は、新規アプリケーションを実行させる場合に、当該新規アプリケーションの実行にともなうノード２の負荷の状況を推定する情報であり、負荷の状況を時間帯毎に表す。【００５９】
図５は実施形態の一例としての仮想マシン管理装置として機能する管理サーバの低負荷傾向推定情報３４を例示する図である。
本コンピュータシステム１においては、ＧＵＩ判定部２１１は、新規アプリケーションがユーザ介在型アプリケーションであるか否かを判断し、ユーザ介在型アプリケーションである場合には、夜間の時間帯（例えば、20:00〜8:00）の時間帯はそのハードウェア負荷が低くなると推定する。低負荷傾向推定情報３４はこのような推定に基づき作成される。【００６０】
低負荷傾向推定情報３４は、図４に示した低負荷傾向実績情報３６と同様の構成を有する。すなわち、図５に示す低負荷傾向推定情報３４は、複数の時間帯（図５に示す例では、0:00〜4:00，4:00〜8:00，8:00〜12:00，12:00〜16:00，16:00〜20:00および20:00〜24:00の６つの時間帯）のそれぞれについて、低負荷であるか否かを示す情報（“0”もしくは“1”）を対応付けて構成されている。【００６１】
ＧＵＩ判定部２１１は、低負荷傾向推定情報３４において、低負荷であると予想される時間帯に対しては“0”を、低負荷でないと予想される時間帯に対しては“1”を、低負状態であるか否かを表す情報として設定する。
すなわち、低負荷傾向推定情報３４において、時間帯毎に設定された、これらの低負荷であるか否かを示す情報は、アプリケーションの負荷が低くなる時間の傾向を表す（推定する）情報として機能する。【００６２】
また、ＧＵＩを持たない、あるいはＧＵＩの有無が不明である場合には、ＧＵＩ判定部２１１は、低負荷傾向推定情報３４において、全ての時間帯に対して“2”を設定する。
なお、低負荷傾向推定情報３４の構成は、図５に例示したものに限定されるものではなく、適宜変更して実施することができる。例えば、図５に例示した低負荷傾向推定情報３４は４時間毎の６つの時間帯に分けて構成されているが、これに限定されるものではなく、５つ以下、もしくは７つ以上の時間帯に分けて構成してもよい。また、図５に示す例においては、低負荷である時間帯に対しては“0”を、低負荷でない時間帯に対しては“1”を設定し、更に、ＧＵＩを持たない、あるいはＧＵＩの有無が不明である場合には全ての時間帯に対して“2”を設定しているが、これらに限定されるものではなく、適宜変更して実施することができる。【００６３】
また、上述の如く構成された低負荷傾向推定情報３４は、記憶部３０の所定の領域等にアプリケーションを特定する情報（例えば、アプリケーションＩＤ）に対応付けて格納される。
地域特性判定部２１２は、新規アプリケーションについて、当該新規アプリケーションの負荷が低下する時間の傾向を判断するために、アプリケーションの地域特性（例えば、使用される国）を判定する。すなわち、地域特性判定部２１２は、そのアプリケーションがどの地域で利用されるのかを判定する。【００６４】
前述の如く、ＧＵＩを持つユーザ介在型アプリケーションは、日中に多く利用され、夜間にはほとんど利用されないと考えられる。そして、このようなアプリケーションが特定の地域（国）のみで利用される場合には、その地域の夜間の時間帯には負荷が低下すると判断することができる。
また、世界中で広く利用されるアプリケーションと特定の地域のみで利用されるアプリケーションでは、負荷が低くなる時間の傾向が異なる。【００６５】
地域特性判定部２１２は、アプリケーションの地域特性、すなわち、アプリケーションが主に（多く）利用される地域を特定するために、地域判定条件３３を用いる。
地域判定条件３３は、ＧＵＩ判定部２１１が、アプリケーションが利用される地域の判定を行なうために用いる情報（条件）である。例えば、地域判定条件３３として、アプリケーションのＧＵＩやヘルプ機能等において用いられている言語（表示言語）や、ウェブアプリのトップページのドメイン（トップレベルドメイン，トップドメイン）等の地域判定要素に、地域ＩＤ（identification）を対応付けて構成する。地域ＩＤは地域を特定するための識別情報である。【００６６】
これらの地域判定要素は、管理サーバ１０にアップロードされたアプリケーションのソースデータ等から抽出してもよく、また、予めアプリケーションの開発者等に入力させ、入力された地域判定要素をアプリケーションに対応して管理サーバ１０において管理してもよい。
地域特性判定部２１２は、新規アプリケーションのＧＵＩ等において用いられている表示言語や、ウェブアプリのトップドメインに基づいて地域判定条件３３を参照し、新規アプリケーションに対応する地域ＩＤを決定する。これにより、ＧＵＩ判定部２１１が、新規アプリケーションが利用される地域の判定を行なう。【００６７】
なお、例えば、表示言語が日本語であるのに対してトップドメインが米国を表す等、地域判定要素間で示す地域が異なる場合には、例えば、表示言語に対応する地域を優先して採用することが望ましい。すなわち、地域判定要素に予め重み付けを行なうことが望ましい。
地域特性判定部２１２によって判定された地域ＩＤは、記憶部３０の所定の領域等に地域管理情報３５として新規アプリケーションを特定する情報（例えば、アプリケーションＩＤ）に対応付けて格納される。【００６８】
また、地域特性判定部２１２は、既存アプリケーションについても、当該既存アプリケーションについて判定された地域ＩＤを、地域管理情報３５として新規アプリケーションを特定する情報（例えば、アプリケーションＩＤ）に対応付けて格納する制御を行なう。
なお、既存アプリケーションの地域ＩＤは、例えば、当該既存アプリケーションを本コンピュータシステム１にアップロードする際に決定された値を用いることができる。【００６９】
上述した低負荷傾向判定部２１（ＧＵＩ判定部２１１，地域特性判定部２１２）は、例えば、開発者端末５から管理サーバ１０にアプリケーションのアップロードが行なわれると、このアップロードされたアプリケーションについて、低負荷傾向推定情報３４や地域管理情報３５の設定を行なう。
また、低負荷傾向判定部２１（負荷測定部２１３）は、後述する割り当て処理部２２が、アプリケーションのインスタンスをＶＭに配備した後に、アプリケーションによるプロセッサ使用率（ＣＰＵ使用率）、ＲＡＭ１２の使用量（メモリ使用量）、ＨＤＤ１３に対するＩ（Input）／Ｏ（Output）（ディスクＩ／Ｏ）を負荷情報として監視する。これらの監視により得られた監視結果は、例えば、記憶部３０において、低負荷傾向実績情報３６低負荷傾向推定情報３４として管理格納される。【００７０】
割り当て処理部２２は、上述した低負荷傾向判定部２１（ＧＵＩ判定部２１１，地域特性判定部２１２，負荷測定部２１３）によって設定された低負荷傾向実績情報３６，低負荷傾向推定情報３４および地域管理情報３５に基づいて、複数のＶＭの中から、アプリケーションのインスタンスを配備する先のＶＭを選定する。
例えば、開発者端末５から管理サーバ１０にアプリケーションのアップロードが行なわれると、割り当て処理部２２は、このアップロードされた新規アプリケーションのインスタンスを配備する先のＶＭを選定する。【００７１】
具体的には、割り当て処理部２２は、新規アプリケーションのインスタンスを配備する先のＶＭを決定するに際し、地域管理情報３５に同じ地域ＩＤが設定され、且つ、低負荷傾向推定情報３４における負荷が低い時間の傾向を表す情報が一致または類似するアプリケーションのインスタンスが既に動作しているＶＭを、複数のＶＭの中から選定する。
なお、負荷が低い時間の傾向を表す情報が類似するとは、例えば、双方の負荷が低い時間の傾向を表す情報の不一致点の数が所定の閾値（例えば１つ）以下である場合である。  【００７２】
そして、割り当て処理部２２は、このようにして選定したＶＭに対して、アプリケーションのインスタンスを割り当てる。
また、割り当て処理部２２は、選定したＶＭにアプリケーションのインスタンスを割り当てる際に、ＶＭの空き状態を確認する。すなわち、選定したＶＭにインスタンスを割り当て可能なリソース（ハードウェアリソースおよびソフトウェアリソース）の空きがあるか否かを確認する。選定したＶＭにインスタンスを割り当てる空き（空きリソース）がある場合には、当該ＶＭにインスタンスを割り当てる。【００７３】
一方、選定した配備先のＶＭに新たにインスタンスを配備するための空きがない場合には、割り当て処理部２２は、ＶＭ管理部２３にＶＭのスケールアウトを実施させ、このスケールアウトによって追加されたＶＭにアプリケーションのインスタンスを配備する。
また、割り当て処理部２２は、アプリケーションのスケールアウトが行なわれる際にも、このスケールアウトされるアプリケーションのインスタンスを配備する先のＶＭを決定する。【００７４】
割り当て処理部２２は、新規アプリケーションのインスタンスやスケールアウトされたアプリケーションのインスタンスを配備する先のＶＭを、以下の基準（１），（２）に従って決定する。すなわち、
（１）地域ＩＤが同一であり、且つ、負荷が低くなる時間の傾向を表す情報が一致または類似し、且つ、負荷が低くなる時間が一定であるアプリケーションのインスタンス同士を同じＶＭに配備させる。【００７５】
（２）地域ＩＤが同じであり、且つ、負荷が低くなる時間が不定であるアプリケーションインスタンス同士を同じＶＭに配備する。
ここで、負荷が低くなる時間が一定であるとは、例えば、毎日の16:00〜20:00の時間帯や、月曜日の12:00〜16:00の時間帯に負荷が低くなる等、特定の時間（時間帯）に負荷が低くなることをいう。同一の時間に負荷が低くなるアプリインスタンス同士を、同一のＶＭに配備することで、スケールインを行なう機会を増やすことが可能となる。【００７６】
また、負荷が低くなる時間が不定であるとは、負荷が低くなる時間が、特に決まっていないことをいう。
同一の時間に負荷が低くなるアプリケーション（例えば、アプリケーションＡ，Ｂ）インスタンスが配備されているＶＭに、負荷が低くなる時間が不定であるアプリケーション（例えば、アプリケーションＣ）のインスタンスを配備する場合を考える。このような場合に、アプリケーションＡ，Ｂの各インスタンスは負荷が低くなり、スケールインにより消去されても、アプリケーションＣが残存することにより、対象のＶＭをスケールインすることができない。【００７７】
そこで、負荷が低くなる時間が不定であるアプリケーションのインスタンス同士を同じＶＭに配備する。これにより、同一の時間に負荷が低くなる各アプリケーションの各インスタンスは負荷が低くなり、スケールインにより消去する場合に、対象のＶＭをスケールインすることができる。
例えば、負荷測定部２１３が、既存アプリケーションについてのハードウェア負荷を定期的にモニタリングし、低負荷傾向実績情報３６を更新する際に、低負荷傾向実績情報３６の内容が変更されない場合には、負荷が低くなる時間が一定であると判断される。コレに対して、既存アプリケーションについてのハードウェア負荷の定期的なモニタリングにより低負荷傾向実績情報３６の内容が変更される場合には、負荷が低くなる時間が不定であると判断される。【００７８】
なお、これらの負荷が低くなる時間についての一定／不定の判断結果は、低負荷傾向実績情報３６に対応付けてＲＡＭ１２等に記憶される。
また、このとき、配備する先のＶＭに新たにアプリケーションのインスタンスを配備するための空きがない場合には、割り当て処理部２２は、ＶＭ管理部２３にＶＭのスケールアウトを実施させ、スケールアウトによって追加されたＶＭにアプリケーションのインスタンスを配備する。【００７９】
（Ｂ）動作
上述の如く構成された、実施形態の一例としての仮想マシン管理装置による仮想マシンの管理方法を、図６および図７に示すフローチャート（ステップＡ１〜Ａ２１）に従って説明する。なお、図６にはステップＡ１〜Ａ８の処理を示し、図７にはステップＡ９〜Ａ２１の処理を示す。【００８０】
開発者端末５から管理サーバ１０にアプリケーションのアップロードが行なわれると、ＧＵＩ判定部２１１は、アップロードされたアプリケーション（新規アプリケーション）がＧＵＩを有するか否かを判定する。
すなわち、ステップＡ１において、ＧＵＩ判定部２１１は、ＧＵＩ判定条件３２に基づき、HTML，CSS，JavaScriptのいずれかのファイルが、アップロードされた新規アプリケーション内にあるか（条件１）否かを確認する。【００８１】
これらのいずれのファイルも新規アプリケーション内にない場合には（ステップＡ１のＮＯルート参照）、ステップＡ２に移行する。
ステップＡ２においては、ＧＵＩ判定部２１１は、新規アプリケーションに、Jade，HAML，Mustache等のＧＵＩに関する特定のテンプレートエンジンが利用されているか否か（条件２）を確認する。【００８２】
特定のテンプレートエンジンが新規アプリケーションに利用されていない場合には（ステップＡ２のＮＯルート参照）、ステップＡ３に移行する。
ステップＡ３において、ＧＵＩ判定部２１１は、新規アプリケーションの作成言語の判別が可能であるか否かを確認する。新規アプリケーションの作成言語を判別することができる場合には（ステップＡ３のＹＥＳルート参照）、ステップＡ４に移行する。【００８３】
ステップＡ４において、ＧＵＩ判定部２１１は、新規アプリケーションが、判別された作成言語に応じたＧＵＩを有するか否か（条件３）を判別する。
その後、ステップＡ５において、地域特性判定部２１２が、新規アプリケーションにおいて用いられている表示言語やトップドメインに基づき、当該新規アプリケーションが主に利用される地域を特定する。【００８４】
ステップＡ１における確認の結果、新規アプリケーション内にHTML，CSS，JavaScriptのいずれかのファイルがある場合には（ステップＡ１のＹＥＳルート参照）、ステップＡ５に移行する。
また、ステップＡ２における確認の結果、新規アプリケーション内に特定のテンプレートエンジンが利用されている場合にも（ステップＡ２のＹＥＳルート参照）、ステップＡ５に移行する。【００８５】
さらに、ステップＡ３における確認の結果、新規アプリケーションの作成言語を判別することができない場合にも（ステップＡ３のＮＯルート参照）、ステップＡ５に移行する。
ステップＡ６において、ＧＵＩ判定部２１１は、新規アプリケーションにおけるＧＵＩの有無の判定結果に基づき、低負荷傾向推定情報３４に新規アプリケーションの負荷が低くなる時間の傾向を表す情報を設定・管理する。【００８６】
また、地域特性判定部２１２が、新規アプリケーションが主に利用される地域に基づき、地域ＩＤを決定し、地域管理情報３５に設定・管理する。
ステップＡ７において、割り当て処理部２２は、低負荷傾向実績情報３６および低負荷傾向推定情報３４を参照して、新規アプリケーションについての負荷が低くなる時間の傾向を表す情報および地域ＩＤと、ＶＭに配備済みの他インスタンスの各既存アプリケーションについての負荷が低くなる時間の傾向を表す情報および地域ＩＤとを比較する。【００８７】
ステップＡ８において、割り当て処理部２２は、同じ地域ＩＤを有し、且つ、負荷が低くなる時間の傾向を表す情報が類似または一致する既存アプリケーションのインスタンスが動作しているＶＭを、新規アプリケーションのインスタンスの配置先として選択する。
ステップＡ９において、割り当て処理部２２は、選択したＶＭにインスタンスを追加できるだけの空きがあるか否かを確認する。選択したＶＭに空きがない場合には（ステップＡ９のＮＯルート参照）、ステップＡ１０においてＶＭをスケールアウトし、ステップＡ１１において、スケールアウトしたＶＭに、新規アプリケーションのインスタンスを配備する。【００８８】
その後、ステップＡ１３において、負荷測定部２１３は、ＶＭに配備したインスタンスに関し、当該インスタンスを実行するするノード２について、ＣＰＵ使用率、メモリ使用量、ディスクＩ／Ｏをモニタリング（監視）する。これらの監視により得られた監視結果は、例えば、記憶部３０に、低負荷傾向実績情報３６として、低負荷傾向推定情報３４や地域管理情報３５とともに管理格納される。【００８９】
一方、ステップＡ９における確認の結果、選択したＶＭに空きがある場合には（ステップＡ９のＹＥＳルート参照）、ステップＡ１２において、ステップＡ８において選択したＶＭに、アップロードされたアプリケーションのインスタンスを配備した後、ステップＡ１３に移行する。
その後、ステップＡ１４において、例えば、アクセス増加による負荷増大により、アプリケーションのスケールアウトが発生するものとする。【００９０】
ステップＡ１５において、割り当て処理部２２は、スケールアウトが発生したアプリケーションと、既存アプリケーションとのそれぞれについて、低負荷傾向実績情報３６を参照して、各アプリケーションの負荷が低くなる時間の傾向を表す情報を取得する。
また、割り当て処理部２２は、当該アプリケーションについて、負荷が低くなる時間が一定であるか／不定であるかの判断結果も取得する。【００９１】
ステップＡ１６において、割り当て処理部２２は、各既存アプリケーションのインスタンスについての負荷が低くなる時間の傾向を表す情報および負荷が低くなる時間が一定であるか不定であるか、並びに地域ＩＤを、スケールアウトが行なわれたアプリケーションについての負荷が低くなる時間の傾向を表す情報および負荷が低くなる時間が一定であるか不定であるか、並びに地域ＩＤと比較する。【００９２】
ステップＡ１７において、割り当て処理部２２は、前述した基準（１），（２）従って、新たに追加されるアプリケーションのインスタンスの配備先のＶＭを選定する。
（１）地域ＩＤが同一であり、且つ、負荷が低くなる時間の傾向を表す情報が一致または類似し、且つ、負荷が低くなる時間が一定であるアプリケーションのインスタンス同士を同じＶＭに配備させる。【００９３】
（２）地域ＩＤが同じであり、且つ、負荷が低くなる時間が不定であるアプリケーションインスタンス同士を同じＶＭに配備する。
その後、ステップＡ１８において、割り当て処理部２２は、ステップＡ１７において選択したＶＭにインスタンスを追加できるだけの空きがあるか否かを確認する。選択したＶＭに空きがない場合には（ステップＡ１８のＮＯルート参照）、ステップＡ１９においてＶＭをスケールアウトし、ステップＡ２０において、スケールアウトしたＶＭに、アップロードされたアプリケーションのインスタンスを配備する。【００９４】
一方、ステップＡ１８における確認の結果、選択したＶＭに空きがある場合には（ステップＡ１８のＹＥＳルート参照）、ステップＡ１７において選択したＶＭに新たに追加されたアプリケーションのインスタンスを配備し（ステップＡ２１）、処理を終了する。
（Ｃ）効果
このように、実施形態の一例としてのコンピュータシステム１によれば、アプリケーションのアップロード時やスケールアウト時に、低負荷傾向判定部２１がアプリケーションについて、負荷が低下する時間の傾向を判定し、割り当て処理部２２が、負荷が低下する時間の傾向が共通するアプリケーションのインスタンスをまとめるように同じＶＭに配備する。【００９５】
これにより、ＶＭに配備された複数のインスタンスが同様のタイミングで低負荷状態となり、ＶＭ内でインスタンスが動作していない状況が発生しやすくなる。これにより、ＶＭのスケールインを実行できる機会が増加する。したがって、効率的にＶＭリソースを利用することができる。
負荷測定部２１３は、ＶＭに割り当て済みのアプリケーションインスタンスについて、各インスタンスを実行するためのハードウェア負荷を測定し、低負荷傾向実績情報３６を作成する。これにより、既存アプリケーションについて、当該既存アプリケーションの実行にともなう負荷が低下する時間の傾向を把握することができる。【００９６】
また、ＧＵＩ判定部２１１が、本コンピュータシステム１にアップロードされた新規アプリケーションがＧＵＩを持つかどうかを判定することで、この新規アプリケーションの負荷が低下する時間の傾向を容易に推定することができる。
ＧＵＩ判定部２１１は、アプリケーション内にHTML，CSS，JavaScriptのいずれかのファイルがあるか（条件１）や、アプリケーションに特定のテンプレートエンジン（例えば、Jade，HAML，Mustache）が利用されているか（条件２）を判断することで、アプリケーションがＧＵＩを持つかどうかを容易に判定することができる。【００９７】
さらに、これらの条件１，２でＧＵＩの有無を判定できない場合であっても、ＧＵＩ判定部２１１が、アプリケーションの作成言語に応じたＧＵＩ機能を確認することで、アプリケーションがＧＵＩを持つかどうかを容易に判定することができる。
また、地域特性判定部２１２が、アプリケーションがどの地域で利用されるのかを判定し、割り当て処理部２２が、その利用地域および負荷が低下する時間の傾向が同じアプリケーションのインスタンスを、同じＶＭに配備する。利用地域が同じであれば、時差等もなく負荷が低下する時間の傾向も一致すると考えられるからである。【００９８】
割り当て処理部２２が、新規アプリケーションのインスタンスを配備する先のＶＭとして、地域管理情報３５に同じ地域ＩＤが設定され、且つ、低負荷傾向推定情報３４における負荷が低い時間の傾向を表す情報が一致または類似するアプリケーションのインスタンスが既に動作しているＶＭを、複数のＶＭの中から選定する。
これにより、ＶＭに割り当てられた複数のインスタンスに対応する各アプリケーションが、同様のタイミングで低負荷となり、ＶＭのスケールインを行なうことが可能となる。従って、ＶＭリソースの利用効率を高めることができる。  また、割り当て処理部２２が、スケールアウトされるアプリケーションのインスタンスを配備する先のＶＭとして、地域ＩＤが同一であり、且つ、負荷が低くなる時間の傾向を表す情報が一致または類似し、且つ、負荷が低くなる時間が一定であるアプリケーションのインスタンスが既に動作しているＶＭを、複数のＶＭの中から選択する。【００９９】
これによっても、ＶＭに割り当てられた複数のインスタンスに対応する各アプリケーションが、同様のタイミングで低負荷となり、ＶＭのスケールインを行なうことが可能となる。従って、ＶＭリソースの利用効率を高めることができる。
図８は実施形態の一例としての仮想マシン管理装置として機能する管理サーバにおけるＶＭへのアプリケーションのインスタンスの配備例を示す図である。【０１００】
図８においては、ＰａａＳ環境において、４種類のアプリケーションＡ，Ｂ，Ｃ，Ｄの各インスタンスを複数のＶＭ１００ａ，１００ｂ，１００ｃ，１００ｄに配置する例を示している。
また、図８中において、符号０１Ａ，０１Ｂ，０１Ｃ，０１Ｄは、それぞれアプリケーションＡ，Ｂ，Ｃ，Ｄの各インスタンスを示す。以下、アプリケーションＡのインスタンスを、符号０１Ａを用いてインスタンス０１Ａと表す。同様に、アプリケーションＢのインスタンスを、符号０１Ｂを用いてインスタンス０１Ｂと表し、アプリケーションＣのインスタンスを、符号０１Ｃを用いてインスタンス０１Ｃと表す。また、アプリケーションＤのインスタンスを、符号０１Ｄを用いてインスタンス０１Ｄと表す。【０１０１】
また、アプリケーションＡとアプリケーションＣとは、アプリケーションの負荷が低くなる時間の傾向が同じである。また、これらのアプリケーションＡ，Ｃと、アプリケーションＢ，Ｄはアプリケーションの負荷が低くなる時間の傾向が互いに異なるものとする。
上述の如く、管理サーバ１０は、負荷が低くなる時間の傾向が共通のアプリケーションのインスタンスを同じＶＭに配備する。図８に示す例においては、アプリケーションＡとアプリケーションＣとがアプリケーションの負荷が低くなる時間の傾向が同じであるので、インスタンス０１Ａ，０１Ｃが同じＶＭ１００ａに配備されている。【０１０２】
なお、ＶＭ１００ｂには２つのインスタンス０１Ｂが配備されており、ＶＭ１００ｄには２つのインスタンス０１Ｄが配備されている。
ここで、スケールアウトによりインスタンス０１Ａ′，０１Ｃ′がＶＭ１００ｃに配備された後、これらの、インスタンス０１Ａ′，０１Ｃ′のスケールインが行なわれ場合に、ＶＭ１００ｃ内にはいずれのインスタンスも動作しない状況になる。従って、ＶＭ１００ｃのスケールインを行なうことが可能となり、ＶＭリソースの利用効率を高めることができる。【０１０３】
例えば、アプリケーションＡが日本語メニュー表記のワードプロセッサのウェブアプリであり、アプリケーションＣが日本語メニュー表記の表計算のウェブアプリであるものとする。
これらのユーザ介在型アプリケーションは日本における夜間の時間帯に低負荷となると考えられる。従って、日本における夜間の時間帯に、ＶＭ１００ａ，１００ｃをスケールインすることで、ＶＭリソースを演算や解析等のユーザ非介在型アプリケーションに割り振ることができ、ＶＭリソースを効率的に用いることができる。【０１０４】
（Ｄ）その他
そして、本発明は上述した実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で種々変形して実施することができる。
例えば、上述した実施形態においては、仮想化システムとしてＰａａＳ環境を用いる例について示しているが、これに限定されるものではなく、ＰａａＳ環境以外の仮想化システムを用いてもよい。【０１０５】
また、図１に示す例においては、コンピュータシステム１が５つのノード２と管理サーバ１０とを備えて構成されているが、これに限定されるものではなく、４つ以下または６つ以上のノード２を備えてもよい。また、管理サーバ１０としての機能を複数のサーバに分割して実現してもよく、また、管理サーバ１０を冗長化して備えてもよい。
さらに、図１に示す例においては、便宜上、ユーザ端末４および開発者端末５をそれぞれ１つだけ示しているが、これに限定されるものではなく、ユーザ端末４および開発者端末５をそれぞれ２つ以上備えてもよい。【０１０６】
また、上述した開示により本実施形態を当業者によって実施・製造することが可能である。
【符号の説明】
【０１０７】
１    コンピュータシステム
２    ノードコンピュータ
３    ネットワーク
４    ユーザ端末
５    開発者端末
１０    管理サーバ
１１    プロセッサ（処理部）
１２    ＲＡＭ（記憶部）
１３    ＨＤＤ（記憶部）
１４    グラフィック処理装置
１４ａ    モニタ（表示部）
１５    入力インタフェース
１５ａ    キーボード（入力部）
１５ｂ    マウス（入力部）
１６    光学ドライブ装置
１６ａ    光ディスク
１７    機器接続インタフェース
１７ａ    メモリ装置
１７ｂ    メモリリーダライタ
１７ｃ    メモリカード
１８    ネットワークインタフェース
１９    バス
２０    処理部
２１    低負荷傾向判定部
２１１    ＧＵＩ判定部
２１２    地域特性判定部
２１３    負荷測定部
２２    割り当て処理部
２３    ＶＭ管理部
３０    記憶部
３１    仮想マシン管理プログラム
３２    ＧＵＩ判定条件
３３    地域判定条件
３４    低負荷傾向推定情報
３５    地域管理情報
３６    低負荷傾向実績情報
４０    入力部
５０    表示部
【図１】
2017006384.tif 000003
【図２】
2017006384.tif 000004
【図３】
2017006384.tif 000005
【図４】
2017006384.tif 000006
【図５】
2017006384.tif 000007
【図６】
2017006384.tif 000008
【図７】
2017006384.tif 000009
【図８】
2017006384.tif 000010
【図９】
2017006384.tif 000011
【手続補正書】
【提出日】平成30年1月24日(2018.1.24)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピュータに、
複数のアプリケーションのそれぞれについて、該アプリケーションの実行に関連した負荷が低下する時間の傾向を判定し、
前記時間の傾向に基づき、前記複数の仮想マシンの中から、割り当てを行なうアプリケーションに割り当てる仮想マシンを選択して割り当てる
処理を実行させることを特徴とする、仮想マシン管理プログラム。
【請求項２】
前記時間の傾向を、前記割り当てを行なうアプリケーションが入力操作インタフェース機能を有するかを判断することで判定する
処理を前記コンピュータに実行させることを特徴とする、請求項１記載の仮想マシン管理プログラム。
【請求項３】
前記時間の傾向を、前記割り当てを行なうアプリケーションに対応する地域判定要素に基づき判定する
処理を前記コンピュータに実行させることを特徴とする、請求項１または２記載の仮想マシン管理プログラム。
【請求項４】
前記仮想マシンに割り当て済みのアプリケーションの実行によるハードウェア負荷の測定結果に基づいて作成した、前記割り当て済みのアプリケーションに関する前記負荷が低下する時間の傾向を表す低負荷傾向実績情報と、前記割り当てを行なうアプリケーションの実行によるハードウェア負荷が低下する時間の傾向を予測する低負荷傾向推定情報と、に基づき、前記割り当てを行なうアプリケーションに割り当てる仮想マシンを選択する
処理を前記コンピュータに実行させることを特徴とする、請求項１〜３のいずれか１項に記載の仮想マシン管理プログラム。
【請求項５】
前記割り当てを行なうアプリケーションに割り当てる仮想マシンとして選択した前記仮想マシンにアプリケーションを割り当て可能な空きリソースがあるかを確認し、空きリソースが無い場合に仮想マシンの追加を行なう処理を前記コンピュータに実行させることを特徴とする、請求項１〜４のいずれか１項に記載の仮想マシン管理プログラム。
【請求項６】
複数のアプリケーションのそれぞれについて、該アプリケーションの実行に関連した負荷が低下する時間の傾向を判定する低負荷傾向判定部と、
前記時間の傾向に基づき、前記複数の仮想マシンの中から、割り当てを行なうアプリケーションに割り当てる仮想マシンを選択して割り当てる割り当て処理部と
を備えることを特徴とする、仮想マシン管理装置。
【請求項７】
複数のアプリケーションのそれぞれについて、該アプリケーションの実行に関連した負荷が低下する時間の傾向を判定するステップと、
前記時間の傾向に基づき、前記複数の仮想マシンの中から、割り当てを行なうアプリケーションに割り当てる仮想マシンを選択して割り当てるステップと
を備えることを特徴とする、仮想マシン管理方法。
【国際調査報告】
2017006384.tif 000012
2017006384.tif 000013
2017006384.tif 000014
2017006384.tif 000015