(57)【要約】【課題】過去における仮想マシンの処理能力あるいは処理量に基づいて当該仮想マシンの処理能力を決定する場合に比して、より確実に、仮想マシンの処理能力を将来当該仮想マシンに割り当てられる処理量に適した能力に設定する。【解決手段】ジョブ解析部２２は、入力されたジョブに関する処理に対する各インスタンスタイプの処理順序及び当該ジョブを処理する場合の各インスタンスタイプが処理すべき処理量を示す処理順序情報３２、及び各インスタンスタイプの処理速度情報に基づいて、インスタンスタイプ毎に、当該ジョブに関する処理の割り当て時刻及び当該処理の処理量を示す処理スケジュール情報３６を生成する。インスタンス制御部２４は、現時点から判定対象時間Ｔ内における、各インスタンスタイプの残処理量の最大値と、各インスタンスタイプの可能処理量との比較に基づいて、各インスタンスタイプの処理能力を設定する。【選択図】図１
2018018275.tif 000002
【特許請求の範囲】
【請求項１】
入力された処理要求に関する処理を仮想マシンに順次割り当てて処理させる情報処理装置であって、
前記仮想マシンの単位時間当たりの処理量を示す処理速度情報と、前記仮想マシンに対して割り当て可能な処理量を示す割り当て可能処理量を記憶する記憶部と、
前記処理要求に関する処理の処理量、及び前記処理速度情報に基づいて、前記仮想マシンに対して将来割り当てられる処理の処理量及び当該処理の割り当て時刻を予測する処理スケジュール予測部と、
現時点から予め定められた判定対象時間の間における、前記仮想マシンに割り当てられると予測された１又は複数の処理の処理量の最大値、及び前記仮想マシンの割り当て可能処理量に基づいて、前記仮想マシンの処理能力を設定する仮想マシン制御部と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記仮想マシン制御部は、現時点から前記判定対象時間の間に、前記１又は複数の処理の処理量の最大値が、前記仮想マシンの割り当て可能処理量を超える場合に、前記仮想マシンの処理能力を増大させる、
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記仮想マシン制御部は、現時点から前記判定対象時間の間に、前記仮想マシンの割り当て可能処理量と、前記１又は複数の処理の処理量の最大値との差分が所定量以上である場合に、前記仮想マシンの処理能力を減少させる、
ことを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記仮想マシン制御部により前記仮想マシンの処理能力が変更された場合に、前記記憶部に記憶された、当該仮想マシンの前記処理速度情報及び前記割り当て可能処理量の少なくとも一方を更新する更新部、
をさらに備えることを特徴とする請求項１から３のいずれか１項に記載の情報処理装置。
【請求項５】
コンピュータに、入力された処理要求に関する処理を仮想マシンに順次割り当てて処理させるためのプログラムであって、
前記コンピュータを、
前記仮想マシンの単位時間当たりの処理量を示す処理速度情報と、前記仮想マシンに対して割り当て可能な処理量を示す割り当て可能処理量を記憶する記憶部と、
前記処理要求に関する処理の処理量、及び前記処理速度情報に基づいて、前記仮想マシンに対して将来割り当てられる処理の処理量及び当該処理の割り当て時刻を予測する処理スケジュール予測部と、
現時点から予め定められた判定対象時間の間における、前記仮想マシンに割り当てられると予測された１又は複数の処理の処理量の最大値、及び前記仮想マシンの割り当て可能処理量に基づいて、前記仮想マシンの処理能力を設定する仮想マシン制御部と、
として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及びプログラムに関する。
【背景技術】
【０００２】
従来、仮想マシンが広く用いられている。仮想マシンとは、仮想機械、仮想コンピュータ、あるいはバーチャルマシンなどとも称されるものであり、物理マシン上においてソフトウェアにより定義あるいは構築され、利用者をしてあたかも１台の物理マシンとして利用し得るものである。
【０００３】
仮想マシンを利用することで、利用者は、仮想マシンが実行すべき処理の処理量に応じて当該仮想マシンの処理能力を容易に変更することができる。例えば仮想マシンの台数を変更する、あるいは仮想マシンのＣＰＵ（Central Processing Unit）やメモリといったハードウェア資源量を変更することなどによって仮想マシンの処理能力を変更できる。一般的に、仮想マシンは仮想マシンベンダから提供され、契約者は、仮想マシンの処理能力に応じた額の使用料を仮想マシンベンダに支払う。したがって、契約者は、必要な処理を処理可能な限りにおいて、仮想マシンの処理能力をできるだけ低くしておくことが望まれる。
【０００４】
特許文献１及び２には、物理マシン上で実行される仮想マシンを管理する情報処理装置であって、仮想マシンの過去のハードウェア資源使用量に基づいて、当該仮想マシンの将来におけるハードウェア資源使用量を予測し、当該予測に基づいて当該仮想マシンのハードウェア資源量を決定する情報処理装置が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１３−２０６３２１号公報
【特許文献２】特許２０１５−０８７９３６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
仮想マシンが実行すべき処理の処理量に応じて仮想マシンの処理能力を決定する場合、当該仮想マシンの過去における処理能力、あるいは当該仮想マシンが過去において実行した処理の処理量に基づいて、仮想マシンの処理能力を決定することが考えられる。しかしながら、仮想マシンの過去の処理能力あるいは処理量から、将来において当該仮想マシンに割り当てられる処理の処理量を推認することは可能なものの、それが必ずしも将来の処理量と一致するとは限らない。つまり、過去における仮想マシンの処理能力あるいは処理量に基づいて設定された仮想マシンの処理能力が、将来当該仮想マシンに割り当てられる処理の処理量に対して適切な能力とならない場合が生じるおそれがあった。
【０００７】
本発明の目的は、過去における仮想マシンの処理能力あるいは処理量に基づいて当該仮想マシンの処理能力を決定する場合に比して、より確実に、仮想マシンの処理能力を将来当該仮想マシンに割り当てられる処理量に適した能力に設定することにある。
【課題を解決するための手段】
【０００８】
請求項１に係る発明は、入力された処理要求に関する処理を仮想マシンに順次割り当てて処理させる情報処理装置であって、前記仮想マシンの単位時間当たりの処理量を示す処理速度情報と、前記仮想マシンに対して割り当て可能な処理量を示す割り当て可能処理量を記憶する記憶部と、前記処理要求に関する処理の処理量、及び前記処理速度情報に基づいて、前記仮想マシンに対して将来割り当てられる処理の処理量及び当該処理の割り当て時刻を予測する処理スケジュール予測部と、現時点から予め定められた判定対象時間の間における、前記仮想マシンに割り当てられると予測された１又は複数の処理の処理量の最大値、及び前記仮想マシンの割り当て可能処理量に基づいて、前記仮想マシンの処理能力を設定する仮想マシン制御部と、を備えることを特徴とする情報処理装置である。
【０００９】
請求項２に係る発明は、前記仮想マシン制御部は、現時点から前記判定対象時間の間に、前記１又は複数の処理の処理量の最大値が、前記仮想マシンの割り当て可能処理量を超える場合に、前記仮想マシンの処理能力を増大させる、ことを特徴とする請求項１に記載の情報処理装置である。
【００１０】
請求項３に係る発明は、前記仮想マシン制御部は、現時点から前記判定対象時間の間に、前記仮想マシンの割り当て可能処理量と、前記１又は複数の処理の処理量の最大値との差分が所定量以上である場合に、前記仮想マシンの処理能力を減少させる、ことを特徴とする請求項１又は２に記載の情報処理装置である。
【００１１】
請求項４に係る発明は、前記仮想マシン制御部により前記仮想マシンの処理能力が変更された場合に、前記記憶部に記憶された、当該仮想マシンの前記処理速度情報及び前記割り当て可能処理量の少なくとも一方を更新する更新部、をさらに備えることを特徴とする請求項１から３のいずれか１項に記載の情報処理装置である。
【００１２】
請求項５に係る発明は、コンピュータに、入力された処理要求に関する処理を仮想マシンに順次割り当てて処理させるためのプログラムであって、前記コンピュータを、前記仮想マシンの単位時間当たりの処理量を示す処理速度情報と、前記仮想マシンに対して割り当て可能な処理量を示す割り当て可能処理量を記憶する記憶部と、前記処理要求に関する処理の処理量、及び前記処理速度情報に基づいて、前記仮想マシンに対して将来割り当てられる処理の処理量及び当該処理の割り当て時刻を予測する処理スケジュール予測部と、現時点から予め定められた判定対象時間の間における、前記仮想マシンに割り当てられると予測された１又は複数の処理の処理量の最大値、及び前記仮想マシンの割り当て可能処理量に基づいて、前記仮想マシンの処理能力を設定する仮想マシン制御部と、として機能させることを特徴とするプログラムである。
【発明の効果】
【００１３】
請求項１及び５に記載の発明によれば、過去における仮想マシンの処理能力あるいは処理量に基づいて当該仮想マシンの処理能力を決定する場合に比して、より確実に、仮想マシンの処理能力を将来仮想マシンに割り当てられる処理量に適した能力に設定することができる。
【００１４】
請求項２に記載の発明によれば、過去における仮想マシンの処理能力あるいは処理量に基づいて当該仮想マシンの処理能力を決定する場合に比して、より確実に、仮想マシンの処理能力を将来当該仮想マシンに割り当てられる処理量に応じて増大させることができる。
【００１５】
請求項３に記載の発明によれば、過去における仮想マシンの処理能力あるいは処理量に基づいて当該仮想マシンの処理能力を決定する場合に比して、より確実に、仮想マシンの処理能力を将来仮想マシンに割り当てられる処理量に応じて減少させることができる。
【００１６】
請求項４に記載の発明によれば、処理速度情報及び割り当て可能処理量が、常に現時点における仮想マシンの処理能力を示すものとなる。
【図面の簡単な説明】
【００１７】
【図１】本実施形態に係るサービス提供システムの構成概略図である。
【図２】処理順序情報の例を示す概念図である。
【図３】処理能力ＤＢの内容の例を示す概念図である。
【図４】タイプＡインスタンスの処理スケジュール情報の例を示す概念図である。
【図５】スケールアウト処理の流れを示すフローチャートである。
【図６】タイプＢインスタンスの処理スケジュール情報の例を示す概念図である。
【図７】タイプＣインスタンスの処理スケジュール情報の例を示す概念図である。
【図８】タイプＡインスタンスの処理スケジュール情報の第２の例を示す概念図である。
【図９】スケールイン処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００１８】
以下、本発明の実施形態を図面に基づいて説明する。
【００１９】
図１は、本実施形態に係るサービス提供システム１０の構成概略図である。サービス提供システム１０は、利用者（ユーザ）が使用するクライアント端末１２、情報処理装置としてのサーバ１４、複数の仮想マシンとしての複数のタイプＡ〜Ｃのインスタンス、及び、記憶装置（ハードディスクなど）群から構成されるストレージ１６を含んで構成される。クライアント端末１２とサーバ１４間は、ＬＡＮあるいはインターネットを含む通信回線を介して通信可能に接続されている。また、サーバ１４、複数のタイプ（Ａ〜Ｃ）のインスタンス、及びストレージ１６は互いに通信回線を介して通信可能に接続されている。なお、図１には１つのクライアント端末１２が示されているが、サービス提供システム１０には複数のユーザが利用する複数のクライアント端末１２が含まれていてもよい。また、図１には３つのインスタンスタイプが示されているが、サービス提供システム１０としてはそれ以外の数のインスタンスタイプを有するようにしてもよい。
【００２０】
サービス提供システム１０は、ユーザにマルチクラウドサービスを提供するものである。具体的には、サービス提供システム１０においては、通信回線を介してクライアント端末１２から入力された処理要求としてのジョブに関する処理をサーバ１４が複数のインスタンスタイプに順次処理させる。その処理結果がクライアント端末１２に返されてもよい。例えば、サービス提供システム１０は、ユーザから入力されたジョブに係る電子ドキュメントをストレージ１６に格納する処理、ストレージ１６に格納された電子ドキュメントを検索あるいは出力（ダウンロード）処理を行う。
【００２１】
タイプＡインスタンス、タイプＢインスタンス、及びタイプＣインスタンスの各インスタンスタイプは、それぞれ１又は複数のインスタンスから構成される。各インスタンスはインスタンスベンダから提供されるものである。サービス提供システム１０の管理者がインスタンスベンダと契約することによって、所定の処理能力を有するインスタンスが提供される。インスタンスベンダとの契約内容を変更（例えば各タイプに属するインスタンスの数を変更、あるいは各インスタンスの能力を変更）することで、各タイプのインスタンスの能力を動的に変更することが可能となっている。
【００２２】
本実施形態においては、タイプの異なるインスタンスは異なる処理を行う。例えば、タイプＡインスタンスは、クライアント端末１２から入力されたジョブの中継処理を行う。中継処理とは、クライアント端末１２とストレージ１６間におけるデータの中継処理、及び、各インスタンスタイプ間におけるデータの中継処理を含む。タイプＢインスタンスは、ジョブに係るドキュメントに対してＯＣＲ（Optical character recognition）処理、つまり光学文字認識処理を行う。また、タイプＣインスタンスは、ジョブに係るドキュメントの形式変換（例えばＷＯＲＤファイルからＰＤＦファイルへの変換）処理を行う。
【００２３】
クライアント端末１２は、例えばＰＣ（Personal Computer）、あるいはタブレット端末などである。図１には示されていないが、クライアント端末１２は、通常のコンピュータが有する構成、例えば制御部、記憶部、入力部、表示部、あるいは通信部を備えている。クライアント端末１２は、ユーザからの指示に基づいて、サービス提供システム１０に処理を要求するジョブをサーバ１４に送信する。
【００２４】
サーバ１４は、クライアント端末１２から入力されるジョブに関する処理を１又は複数のインスタンスタイプに順次割り当てて処理させる。サーバ１４は、以下の機能を実現する限りにおいてどのようなコンピュータであってもよい。なお、サーバ１４自体もインスタンスで構成されるようにしてもよく、また、サーバ１４にマルチクラウドサービスに関する処理を実行するインスタンスタイプ（例えばタイプＡインスタンス）の機能が含まれていてもよい。以下、サーバ１４が有する各機能について説明する。
【００２５】
制御部２０は、例えばＣＰＵなどから構成され、後述の記憶部３０に記憶されたプログラムに従って、サーバ１４の各部を制御するものである。制御部２０は、記憶部３０に記憶されたプログラムにより、ジョブ解析部２２及びインスタンス制御部２４としても機能する。
【００２６】
ジョブ解析部２２は、クライアント端末１２から入力された１又は複数のジョブを解析して、種々の情報を取得する。本実施形態では、ジョブ解析部２２は、入力されたジョブに関する処理に対する各インスタンスタイプの処理順序、及び当該ジョブを処理する場合の各インスタンスタイプが処理すべき処理量を示す処理順序情報を取得する。さらに、処理スケジュール予測部としてのジョブ解析部２２は、インスタンスタイプ毎に、入力されたジョブに関する処理がどのタイミングでどれだけの処理量が割り当てられるかを予測し、それらを示す処理スケジュール情報を生成する。ジョブ解析部２２の解析により得られた情報は記憶部３０に記憶される。ジョブ解析部２２の処理内容の詳細については後述する。
【００２７】
仮想マシン制御部としてのインスタンス制御部２４は、ジョブ解析部２２が演算した処理スケジュール情報に基づいて、複数のインスタンスタイプＡ〜Ｃの処理能力の設定（変更）処理を行うものである。インスタンス制御部２４は、各インスタンスタイプを提供するインスタンスベンダとの契約内容を更新することで、各インスタンスタイプの処理能力を変更する。本実施形態では、例えばタイプＡインスタンスとして機能するインスタンスの数を増加させる（スケールアウト）あるいは減少させる（スケールイン）ことでタイプＡインスタンスの処理能力を決定する。あるいは、１つのインスタンスのハードウェア資源（ＣＰＵコアの数あるいはメモリの数）を変更することで各インスタンスタイプの処理能力を変化させてもよい。また、更新部としてのインスタンス制御部２４は、インスタンスタイプの処理能力を変更した場合に、各インスタンスタイプの処理能力を示す情報が記憶される処理能力ＤＢ３４（後述）の更新処理を行う。インスタンス制御部２４の処理内容については、図５あるいは図６のフローチャートに沿って後に詳述する。
【００２８】
記憶部３０は、例えばハードディスク、ＲＯＭ（Read Only Memory）、あるいはＲＡＭ（Random Access Memory）を含んで構成され、サーバ１４を動作させるためのプログラムが記憶される。また、記憶部３０には、処理順序情報３２、処理能力ＤＢ３４、処理スケジュール情報３６、及び判定対象時間Ｔが記憶される。
【００２９】
処理順序情報３２は、サーバ１４に入力されたジョブに関する処理に対する各インスタンスタイプの処理順序、及び当該ジョブを処理する場合の各インスタンスタイプが処理すべき処理量が示されている。上述の通り、処理順序情報３２は、ジョブ解析部２２が入力されたジョブを解析することによって取得され、記憶部３０に記憶される。
【００３０】
図２に、処理順序情報３２の内容の例が示されている。例えば、入力されたジョブが、電子ドキュメントに対してＯＣＲ処理及び形式変換処理を行った上で、当該電子ドキュメントをストレージ１６に格納することを要求するものである場合、当該ジョブに関する処理の処理順序としては、タイプＡインスタンス（中継）→タイプＢインスタンス（ＯＣＲ処理）→タイプＡインスタンス（中継）→タイプＣインスタンス（形式変換処理）→タイプＡインスタンス（中継）となる。ジョブ解析部２２は、入力されたジョブを解析することにより、上述の処理順を示す情報を処理順序情報３２として取得する。
【００３１】
さらに、ジョブ解析部２２は、入力されたジョブを解析することで、当該ジョブを実行するために各インスタンスタイプに割り当てられる処理の処理量を演算する。例えば、ジョブに係る電子ドキュメントのデータ容量あるいはデータ内容などに基づいて処理量を演算する。ここでは、１、３、５場目の処理においてタイプＡインスタンスに割り当てられる処理量が「１０」であり、２番目の処理においてタイプＢインスタンスに割り当てられる処理量が「２０」であり、４番目の処理においてタイプＣインスタンスに割り当てられる処理量が「１５」であるとする。そのような処理量を示す情報（値）が処理順序情報３２に記憶される。なお、本明細書における処理量を示す数値は、処理量を相対的に表す指標である。
【００３２】
処理能力ＤＢ３４は、各インスタンスタイプの現在の処理能力を示す情報が記憶される。図３に、本実施形態における処理能力ＤＢ３４の例が示されている。本実施形態においては、処理能力ＤＢ３４には、各インスタンスタイプのインスタンス数、可能処理量情報、及び処理速度情報が記憶される。可能処理量情報は、各インスタンスタイプが現在処理可能な処理量を示すものである。本実施形態では、可能処理量情報は、各インスタンスタイプに現在割り当てることができる割り当て可能処理量を示すものである。また、処理速度情報は、各インスタンスタイプの単位時間当たりの処理量を示すものである。本実施形態では、処理速度情報として各インスタンスタイプの１秒当たりの処理量が記憶されている。
【００３３】
可能処理量情報及び処理速度情報は、各インスタンスタイプの処理能力を示すものであるから、あるインスタンスタイプの処理能力が変更されれば、当該インスタンスタイプの可能処理量情報及び処理速度情報の少なくとも一方が変更（更新）される。本例では、あるインスタンスタイプがスケールアウトされた場合に、処理能力として可能処理量が変更されるものとする。例えば、タイプＡインスタンスとして機能するインスタンスが１つの場合に可能処理量が「２０」である場合に、スケールアウトによりタイプＡインスタンスとして機能するインスタンスが２つになった場合、タイプＡインスタンスのインスタンス数が「２」になると共に、タイプＡインスタンスの可能処理量は２倍の「４０」となる。もちろん、インスタンスタイプの処理能力の変更によって可能処理量及び処理速度の両方が変更される場合は、当該インスタンスタイプの可能処理量情報及び処理速度情報の両方が変更される。上述の通り、処理能力ＤＢ３４の内容、つまり各インスタンスタイプのインスタンス数、可能処理量情報、及び処理速度情報の更新処理はインスタンス制御部２４が行う。
【００３４】
処理スケジュール情報３６は、上述のように、各インスタンスタイプにおいて、将来割り当てられる処理の処理量、及び当該処理の割り当て時刻を示す情報であり、ジョブ解析部２２によってインスタンスタイプ毎に生成される。
【００３５】
図４には、タイプＡインスタンスの処理スケジュール情報３６Ａの例が示されている。本実施形態においては、図４に示される通り、横軸が時間軸であり、縦軸が当該インスタンスタイプが処理すべき残処理量である残処理量グラフが処理スケジュール情報３６として生成される。ジョブ解析部２２は、ジョブの解析により得られた処理順序情報３２、及び処理能力ＤＢ３４に含まれる各インスタンスタイプの処理速度情報に基づいて、処理スケジュール情報３６を生成する。以下、図２〜図４を参照してジョブ解析部２２による処理スケジュール情報３６の生成処理について説明する。
【００３６】
図４に示す例は、図２に示す処理順序情報３２を有するジョブが同時期に３つ入力された場合におけるタイプＡインスタンスの処理スケジュール情報３６Ａである。このような場合、当該３つのジョブは各インスタンスタイプにおいて並行処理される。つまり、各インスタンスタイプに割り当てられる処理量は、図２に示す値の３倍となる（例えば、処理順１ではタイプＡインスタンスに処理量「３０」の処理が割り当てられ、処理順２ではタイプＢインスタンスに処理量「６０」の処理が割り当てられ、以下同様である）。
【００３７】
まず、処理順１において、処理量「３０」がタイプＡインスタンスに割り当てられるから、時刻＝０［ｓ］におけるタイプＡインスタンスの残処理量は「３０」となる。タイプＡインスタンスの処理速度情報によれば（図３参照）、タイプＡインスタンスは毎秒３処理量を処理するから、残処理量グラフは（時間，残処理量）＝（０，３０）の点から傾き−３の直線を描き、時刻＝１０［ｓ］において残処理量は「０」となる。
【００３８】
次いで、時刻＝１０［ｓ］から処理順２、つまりタイプＢインスタンスにおいて処理が開始される。タイプＢインスタンスには時刻＝１０［ｓ］に処理量「６０」が割り当てられ、タイプＢインスタンスは毎秒６処理量を処理するから、処理順２の処理は１０秒間で終了し、つまり時刻＝２０［ｓ］に終了する。その間タイプＡインスタンスには処理が割り当てられないから、時刻＝１０［ｓ］〜２０［ｓ］の間は、タイプＡインスタンスの残処理量グラフは残処理量＝０が維持される。
【００３９】
次いで、時刻＝２０［ｓ］から処理順３、つまりタイプＡインスタンスにおいて処理が開始される。処理順３において、処理量「３０」がタイプＡインスタンスに割り当てられるから、時刻＝２０［ｓ］における残処理量は３０となる。その後タイプＡインスタンスは処理順１と同様に処理を行うから、処理順１のときと同様に、残処理量グラフは傾き−３の直線を描き、時刻＝３０［ｓ］において残処理量は「０」となる。
【００４０】
次いで、時刻＝３０［ｓ］から処理順４、つまりタイプＣインスタンスにおいて処理が開始される。タイプＣインスタンスには時刻＝３０［ｓ］に処理量「４５」が割り当てられる。ここで、当該処理量４５はタイプＣの可能処理量を超えているが、処理スケジュール情報３６の生成処理においては、各タイプのインスタンスは可能処理量を超えた処理量を受け付けるものとして処理する。タイプＣインスタンスは毎秒９処理量を処理するから、処理順４の処理は５秒間で終了し、つまり時刻＝３５［ｓ］に終了する。その間タイプＡインスタンスには処理が割り当てられないから、時刻＝３０［ｓ］〜３５［ｓ］の間は、タイプＡインスタンスの残処理量グラフは残処理量＝０が維持される。
【００４１】
最後に、時刻＝３５［ｓ］から処理順５、つまりタイプＡインスタンスにおいて処理が開始される。処理順５において、処理量「３０」がタイプＡインスタンスに割り当てられるから、時刻＝３５［ｓ］における残処理量は「３０」となる。その後タイプＡインスタンスは処理順１及び３と同様に処理を行うから、処理順１及び３のときと同様に、残処理量グラフは傾き−３の直線を描き、時刻＝４５［ｓ］において残処理量は「０」となる。
【００４２】
上述のように、ジョブ解析部２２は処理スケジュール情報３６を生成して記憶部３０に記憶させる。上述の同様の処理によって、ジョブ解析部２２は他のインスタンスタイプについての処理スケジュール情報３６も生成し、記憶部３０に記憶させる。
【００４３】
判定対象時間Ｔは、インスタンス制御部２４が各インスタンスタイプの処理能力を変更するか否かを判定する際に用いられるものである。具体的には、インスタンス制御部２４は、現時点から判定対象時間Ｔ内における、あるインスタンスタイプの残処理量の最大値と、処理能力ＤＢ３４に記憶された当該インスタンスタイプの可能処理量との比較に基づいて、当該インスタンスタイプの処理能力を設定する。判定対象時間Ｔは、例えばサービス提供システム１０の管理者などによって予め設定される。
【００４４】
サーバ１４の構成概略としては以上の通りである。その他、図１には示されていないが、サーバ１４には、クライアント端末１２、複数のタイプのインスタンス、及びストレージ１６と通信を行うための通信部などが設けられる。
【００４５】
以下、図５に示すフローチャートに従って、サーバ１４の処理の流れを説明する。図５に示すフローチャートは、各インスタンスタイプの処理能力を増大させるスケールアウト処理に関するものである。なお、図５のフローチャートの開始時においては、タイプＡインスタンス、タイプＢインスタンス、及びタイプＣインスタンスはそれぞれ１つのインスタンスから構成されており、記憶部３０には図３に示す処理能力ＤＢ３４が記憶されているものとする。また、判定対象時間Ｔとして４０［ｓ］が記憶されているものとする。
【００４６】
ステップＳ１０において、サーバ１４は、１又は複数のクライアント端末１２からジョブを受信する。本例では、３つのジョブを受信したとする。
【００４７】
ステップＳ１２において、ジョブ解析部２２は、受信した３つのジョブそれぞれを解析して、各ジョブに関する処理に対する各インスタンスタイプの処理順序、及び当該ジョブを処理する場合の各インスタンスタイプが処理すべき処理量を取得する。ここでは、３つのジョブは同様のジョブであり、ジョブ解析部２２の解析により、各ジョブから図２に示す処理順序情報３２が取得され記憶部３０に記憶されたとする。ここで、上述のように同様のジョブは並行処理されるから、本例においても当該３つのジョブは並行処理される。したがって、実際に各インスタンスタイプに割り当てられる処理は図２に示す処理量の３倍となる。
【００４８】
ステップＳ１４において、ジョブ解析部２２は、ステップＳ１２で取得された処理順序情報３２、及び処理能力ＤＢ３４（そのうち各インスタンスタイプの処理速度情報）に基づいて、処理スケジュール情報３６を生成して記憶部３０に記憶させる。ここでは、上述の処理によって、タイプＡインスタンスについて図４に示す処理スケジュール情報３６Ａが生成されたとする。また、同様の処理によってタイプＢインスタンスについて図６に示す処理スケジュール情報３６Ｂが、タイプＣインスタンスについて図７に示す処理スケジュール情報３６Ｃが生成されたとする。
【００４９】
ステップＳ１６において、インスタンス制御部２４は、インスタンスタイプ毎に、ステップＳ１４で生成した処理スケジュール情報３６に基づいて、現時点から判定対象時間Ｔ以内における残処理量の最大値が、処理能力ＤＢ３４に設定された可能処理量を超えるか否かを判定する。ここでは、インスタンス制御部２４は、まずタイプＡインスタンスについて判定を行う。
【００５０】
図３及び図４を参照して、タイプＡインスタンスについて説明する。図３に示された処理能力ＤＢ３４によれば、タイプＡインスタンスの可能処理量は「２０」である。図４においては、参考のため可能処理量ライン５０Ａ（可能処理量＝２０の一点鎖線）が示されている。また、本例では、判定対象時間Ｔ＝４０［ｓ］であるから、図４において参考のために時間＝４０［ｓ］のラインが示されている。
【００５１】
インスタンス制御部２４は、現時点から判定対象時間Ｔの間に、タイプＡインスタンスに割り当てられた１又は複数の処理の処理量の最大値が可能処理量を超えるか否かを判定する。本実施形態では、現時点（時刻＝０［ｓ］）から時刻＝４０［ｓ］までの間における、図４に示すタイプＡインスタンスの残処理量グラフの最大値が可能処理量ライン５０Ａを超えるか否かを判定する。図４の例では、残処理量グラフは、時刻＝０［ｓ］、時刻＝２０［ｓ］、及び時刻＝３５［ｓ］において最大値「３０」を取り、これが可能処理量「２０」を超えるから、タイプＡインスタンスについては、ステップＳ１６の判定は「はい」となる。
【００５２】
ステップＳ１８において、インスタンス制御部２４は、タイプＡインスタンスの処理能力を増大させる。本実施形態では、タイプＡインスタンスのインスタンス数を増やすことでタイプＡインスタンスの処理能力を増大させる。つまりタイプＡインスタンスのスケールアウトを実行する。増やすインスタンスの数は、ステップＳ１６で演算された、現時点から判定対象時間Ｔの間におけるタイプＡインスタンスの残処理量グラフの最大値と、インスタンス１つあたりの可能処理量に基づいて決定されてよい。具体的には、増大後のタイプＡインスタンスの処理能力（可能処理量）が、現時点から判定対象時間Ｔの間におけるタイプＡインスタンスの残処理量グラフの最大値を超えるようにタイプＡインスタンスの数を設定する。
【００５３】
本例では、現時点から判定対象時間Ｔの間におけるタイプＡインスタンスの残処理量グラフの最大値は「３０」であり、タイプＡインスタンスの１つあたりの可能処理量は「２０」であるから、タイプＡインスタンスの数を２つにすれば、可能処理量は「４０」となり、判定対象時間Ｔ内の残処理量グラフの最大値を超える。したがって、インスタンス制御部２４は、ここではタイプＡインスタンスを２つにスケールアウトする。仮に、判定対象時間Ｔ内のタイプＡインスタンスの残処理量グラフの最大値が「５０」である場合は、インスタンス制御部２４は、タイプＡインスタンスを３つにスケールアウトさせ、その可能処理量を当該最大値である「５０」を超える「６０」に設定する。
【００５４】
ステップＳ２０において、インスタンス制御部２４は、処理能力ＤＢ３４の内容の更新処理を行う。ここでは、タイプＡインスタンスのインスタンス数及び可能処理量を更新する。ステップＳ１８において、タイプＡインスタンスの数を「１」から「２」に変更したため、インスタンス制御部２４は、タイプＡインスタンスのインスタンス数を「２」とし、可能処理量を２倍の「４０」とする。
【００５５】
ステップＳ２２において、インスタンス制御部２４は、入力されたジョブを処理するのに必要な全てのインスタンスタイプについて、その処理能力を増大させるか否かを判定する判定処理が終了したか否かを判断する。ここでは、タイプＢインスタンス及びタイプＣインスタンスについて処理が終わっていないため、ステップＳ２４を経由してステップＳ１６に戻る。
【００５６】
ステップＳ２４において、ジョブ解析部２２は、ステップＳ２０で更新された処理能力ＤＢに基づいて、各インスタンスタイプの処理スケジュール情報を更新する。スケールアウトにより、あるインスタンスタイプについての処理能力が変わった場合、それに応じて各インスタンスタイプにおける処理が完了するまでの時間が変動するからである。
【００５７】
再度のステップＳ１６において、タイプＢインスタンスについて上述の処理を行う。図３に示された処理能力ＤＢ３４によれば、タイプＢインスタンスの可能処理量は「６０」である。図６において、図４同様、参考のため可能処理量ライン５０Ｂ（可能処理量＝６０の一点鎖線）、判定対象時間＝４０［ｓ］のラインが示されている。図６に示されるように、判定対象時間４０［ｓ］以内におけるタイプＢインスタンスの残処理量グラフの最大値は「６０」となっており、タイプＢインスタンスの可能処理量「６０」を超えない。したがって、タイプＢインスタンスについては、ステップＳ１６の判定は「いいえ」となる。
【００５８】
再度のステップＳ２２において、未だタイプＣインスタンスについて処理が終わっていないため、ステップＳ１６に戻る。なお、タイプＢインスタンスについては処理能力ＤＢの更新が行われていないため、ステップＳ２４においては処理スケジュールの更新処理は行わずにステップＳ１６に戻る。
【００５９】
再々度のステップＳ１６において、タイプＣインスタンスについて上述の処理を行う。図３に示された処理能力ＤＢ３４によれば、タイプＣインスタンスの可能処理量は３０である。図７において、図４及び図６同様、参考のため可能処理量ライン５０Ｃ（可能処理量＝３０の一点鎖線）、判定対象時間＝４０［ｓ］のラインが示されている。図７に示されるように、判定対象時間４０［ｓ］以内におけるタイプＣインスタンスの残処理量グラフの最大値は「４５」となっており、これがタイプＣインスタンスの可能処理量「３０」を超える。したがって、タイプＣインスタンスについては、ステップＳ１６の判定は「はい」となる。
【００６０】
ステップＳ１８において、インスタンス制御部２４は、タイプＡインスタンス同様に、時点から判定対象時間Ｔの間におけるタイプＣインスタンスの残処理量グラフの最大値と、インスタンス１つあたりの可能処理量に基づいてタイプＣインスタンスをスケールアウトさせる。ここでは、タイプＣインスタンスの数を１つ増やし２つとする。また、ステップＳ２０において、インスタンス制御部２４は、処理能力ＤＢ３４におけるタイプＣインスタンスのインスタンス数を「２」とし、可能処理量を２倍の「６０」とする。
【００６１】
入力されたジョブを処理するのに必要な全てのインスタンスタイプについて、その処理能力を増大させるか否かを判定する判定処理が終了すると、ステップＳ２６において、サーバ１４の制御部２０は、ジョブの実行を開始する。具体的には、クライアント端末１２から入力された３つのジョブに関する処理をタイプＡ〜Ｃのインスタンスにそれぞれ実行させる。
【００６２】
図８に、図４に示したタイプＡインスタンスの処理スケジュール情報３６Ａとしての残処理量グラフの続きが示されている。図８に示す通り、タイプＡインスタンスにおいては、図５のフローチャートにおいて処理した３つのジョブ以来、しばらく処理が割り当てられないものとする。以下、図８を参照しながら、図９に示すフローチャートに従って、各インスタンスタイプの処理能力を減少させるスケールイン処理について説明する。
【００６３】
スケールイン処理は、ジョブがサーバ１４に入力され、当該ジョブの処理に関する処理スケジュール情報３６が生成された後（図５のステップＳ１４の後）において間欠的に実行される。スケールイン処理が実行される間隔は、サービス提供システム１０の管理者などによって適宜設定されてよい。本例では、５秒に１回の割合で実行される。なお、スケールイン処理の実行間隔がより小さい方が、各インスタンスタイプに割り当てられる処理量の変化により早期に対応してスケールイン処理を行うことができるが、その反面、インスタンス制御部２４の処理量が増加する。
【００６４】
ここでは、図５のステップＳ２６においてジョブが実行開始された後にスケールイン処理が実行された場合を例に説明する。したがって、図９のフローチャートの開始時においては、タイプＡインスタンスのインスタンス数は２であり、その可能処理量は「４０」であるとする。また、判定対象時間Ｔは変わらず４０［ｓ］であるとする。
【００６５】
まず、時刻＝３５［ｓ］の時点でスケールイン処理が開始された場合を考える。
【００６６】
スケールイン処理が開始されると、ステップＳ３０において、インスタンス制御部２４は、生成済みの処理スケジュール情報３６及び処理能力ＤＢ３４に基づいて、インスタンスタイプ毎に、可能処理量と、現時点から判定対象時間Ｔ以内における残処理量の最大値との差分が、所定量以上となるか否かを判定する。当該所定量は、インスタンス１つ分の可能処理量に基づいて定められる値である。本実施形態では、インスタンス１つ分の可能処理量そのものが当該所定量として利用される。ここでは、インスタンス制御部２４は、まずタイプＡインスタンスについて判定を行う。
【００６７】
現在、処理能力ＤＢ３４には、タイプＡインスタンスについて、インスタンス数が「２」であり、その可能処理量は「４０」であるから、インスタンス制御部２４はタイプＡインスタンスの１つ当たりの可能処理量が「２０」であることが把握である。図８においては、参考のために、現在のタイプＡインスタンスの可能処理量ライン５０Ａ（可能処理量＝４０の一点鎖線）が示されている。また、この場合の現在時刻である３５［ｓ］から判定対象時間Ｔ＝４０［ｓ］の間の時間がＴ１で示されている。
【００６８】
まず、インスタンス制御部２４は、現時点から判定対象時間Ｔ１の間における、タイプＡインスタンスの残処理量グラフの最大値を特定する。図８を参照して、ここでは、最大値として、時刻＝３５［ｓ］における残処理量「３０」が特定される。次いで、インスタンス制御部２４は、現在のタイプＡインスタンスの可能処理量「４０」と、特定した最大値「３０」との差分を演算し、差分「１０」を取得する。そして、差分「１０」とタイプＡインスタンスの１つ当たりの可能処理量「２０」を比較する。ここでは、差分「１０」がタイプＡインスタンスの１つ当たりの可能処理量「２０」以上とはならないため、ステップＳ３０の判定は「いいえ」となり、タイプＡインスタンスのインスタンス数を減少させずに、タイプＡインスタンスのスケールイン処理を終了する。なお、その後時刻＝３５［ｓ］においても、タイプＢインスタンス及びタイプＣインスタンスについてのスケールイン処理が実行されるが、当該処理はタイプＡインスタンと同様であるため、その説明は省略する。
【００６９】
次に、時刻＝４０［ｓ］の時点でスケールイン処理が開始された場合を考える。なお、図８においては、参考のために、この場合の現在時刻である４０［ｓ］から判定対象時間Ｔ＝４０［ｓ］の間の時間がＴ２で示されている。
【００７０】
インスタンス制御部２４は、現時点から判定対象時間Ｔ２の間におけるタイプＡインスタンスの残処理量グラフの最大値を特定する。図８を参照して、ここでは、最大値として、時刻＝４０［ｓ］における残処理量「１５」が特定される。次いで、インスタンス制御部２４は、現在のタイプＡインスタンスの可能処理量「４０」と、特定した最大値「１５」との差分を演算し、差分「２５」を取得する。そして、差分「２５」とタイプＡインスタンスの１つ当たりの可能処理量「２０」を比較する。ここでは、差分「２５」がタイプＡインスタンスの１つ当たりの可能処理量「２０」以上となっているため、ステップＳ３０の判定は「はい」となり、ステップＳ３２に進む。
【００７１】
ステップＳ３２において、インスタンス制御部２４は、タイプＡインスタンスの処理能力を減少させる。本実施形態では、タイプＡインスタンスのインスタンス数を１つ減らすことでタイプＡインスタンスの処理能力を減少させる。つまりタイプＡインスタンスのスケールインを実行する。詳しくは、タイプＡインスタンスのインスタンス数を１つ減らす処理を行う。これにより、タイプＡインスタンスのインスタンス数が「２」から「１」へ減少される。
【００７２】
ステップＳ３４において、インスタンス制御部２４は、処理能力ＤＢ３４の内容の更新処理を行う。ここでは、タイプＡインスタンスのインスタンス数及び可能処理量を更新する。ステップＳ３２において、タイプＡインスタンスの数を「２」から「１」に変更したため、インスタンス制御部２４は、タイプＡインスタンスのインスタンス数を「１」とし、可能処理量を半分の「２０」とする。
【００７３】
ステップＳ３６において、インスタンス制御部２４は、入力されたジョブを処理するのに必要な全てのインスタンスタイプについて、その処理能力を減少させるか否かを判定する判定処理が終了したか否かを判断する。ここでは、タイプＢインスタンス及びタイプＣインスタンスについて処理が終わっていないため、ステップＳ３８を経由してステップＳ３０に戻る。
【００７４】
ステップＳ３８において、ジョブ解析部２２は、ステップＳ３４で更新された処理能力ＤＢに基づいて、各インスタンスタイプの処理スケジュール情報を更新する。スケールインにより、あるインスタンスタイプについての処理能力が変わった場合、それに応じて各インスタンスタイプにおける処理が完了するまでの時間が変動するからである。
【００７５】
以後、タイプＢインスタンス及びタイプＣインスタンスについても上述と同様の処理を行う。
【００７６】
以上説明した本実施形態によれば、サーバ１４に入力されたジョブの分析により得られた処理スケジュール情報３６に基づいて、各インスタンスタイプの処理能力が設定（つまりスケールイン又はスケールアウト）される。これにより、過去における各インスタンスタイプの処理能力あるいは処理量に基づいて各インスタンスタイプ仮想マシンの処理能力を決定する場合に比して、より確実に、各インスタンスタイプの処理能力を、各インスタンスタイプが実行すべき処理の処理量に適した能力に設定することができる。
【００７７】
また、本実施形態によれば、ジョブの実行前に処理スケジュール情報３６が生成されるから、あるインスタンスタイプについてスケールアウトが必要になることを事前に把握することができる。スケールアウトを行うためには多少時間を要するところ、事前にスケールアウトを行っておくことで、スケールアウトの実行が間に合わなくなることがなく、当該インスタンスタイプに割り当てられた処理を滞らせることなく処理することができる。
【００７８】
以上、本発明に係る実施形態を説明したが、本発明は上記実施形態に限られるものではなく、本発明の趣旨を逸脱しない限りにおいて種々の変更が可能である。
【００７９】
例えば、上記実施形態においては、ジョブの実行前にスケールアウトを実行していたが、インスタンス制御部２４は、処理スケジュール情報３６に基づいて、あるインスタンスタイプの処理能力を増大させる必要があるタイミングを把握できるため、当該タイミングの直前において当該インスタンスタイプのスケールアウトを実行するようにしてもよい。例えば、図７に示す処理スケジュール情報３６Ｃが得られた場合、インスタンス制御部２４は、時刻＝３０［ｓ］の直前（もちろんスケールアウトに必要な時間を考慮した上で）にタイプＣインスタンスのスケールアウトを実行するようにしてもよい。
【００８０】
また、上記実施形態においては、ジョブに関する処理が複数タイプのインスタンスに割り当てられていたが、ジョブが１つのタイプのインスタンスのみを使用する場合であっても、本発明を適用し得る。例えば、サーバ１４がクライアント端末１２から、単にストレージ１６に電子ドキュメントを格納（あるいは検索、ダウンロードなど）する処理（つまりタイプＡインスタンスのみを使用する処理）を要求する複数のジョブを連続して受信した場合、複数のジョブに係る複数の処理は順次タイプＡインスタンスに割り当てられることになる。このような場合であっても、本実施形態のように、タイプＡインスタンスの処理スケジュール情報３６を生成し、それに応じてタイプＡインスタンスのスケールアウト処理あるいはスケールイン処理を行うことができる。
【符号の説明】
【００８１】
１０  サービス提供システム、１２  クライアント端末、１４  サーバ、１６  ストレージ、２０  制御部、２２  ジョブ解析部、２４  インスタンス制御部、３０  記憶部、３２  処理順序情報、３４  処理能力ＤＢ、３６  処理スケジュール情報。
【図１】
2018018275.tif 000003
【図２】
2018018275.tif 000004
【図３】
2018018275.tif 000005
【図４】
2018018275.tif 000006
【図５】
2018018275.tif 000007
【図６】
2018018275.tif 000008
【図７】
2018018275.tif 000009
【図８】
2018018275.tif 000010
【図９】
2018018275.tif 000011