(57)【要約】【課題】処理の要求を受け付けたときに処理部を起動し始める場合と比べて、処理部による処理の実行開始を早める。【解決手段】ＶＭ制御部２０は、ＶＭの状態を停止状態から起動状態の間の待機状態に予め遷移させ、待機状態のＶＭの状態に関する情報をストレージ２２に記憶させておく。ＶＭ制御部２０は、ユーザから処理要求を受け付けた場合、当該ユーザの固有の設定情報と、待機状態の処理部の状態に関する情報と、を用いて、処理部の状態を待機状態から起動状態に遷移させる。【選択図】図１
2018129003.tif 000002
【特許請求の範囲】
【請求項１】
データを処理する処理部の起動を制御する制御手段と、
処理部の状態に関する情報を記憶する記憶手段と、
を有し、
前記制御手段は、処理部の状態を停止状態から起動状態の間の待機状態に予め遷移させ、待機状態の処理部の状態に関する情報を前記記憶手段に記憶させておき、ユーザから処理要求を受け付けた場合、当該ユーザの固有の設定情報と、待機状態の処理部の状態に関する情報と、を用いて、処理部の状態を待機状態から起動状態に遷移させる、
ことを特徴とする情報処理装置。
【請求項２】
前記制御手段は、処理を実行するための機能を処理部に予め割り当てることで、処理部の状態を停止状態から待機状態に予め遷移させておき、ユーザから処理要求を受け付けた場合、当該ユーザの固有の設定情報を待機状態の処理部に設定することで、処理部の状態を待機状態から起動状態に遷移させる、
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記制御手段は、処理部に割り当てられた機能が更新された場合、待機状態の処理部の状態を停止状態に遷移させる、
ことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記制御手段は、共通の処理を利用する複数のユーザを同一のグループに分類し、同一のグループ毎に処理部を割り当て、各グループの処理部に、共通の処理を実行するための機能を割り当てて処理部の状態を停止状態から待機状態に遷移させる、
ことを特徴とする請求項２又は請求項３に記載の情報処理装置。
【請求項５】
前記制御手段は、複数のユーザの間で、利用される処理が完全に一致する場合、当該複数のユーザを同一のグループに分類する、
ことを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記制御手段は、複数のユーザの間で、利用される処理が部分的に一致する場合、当該複数のユーザを同一のグループに分類し、部分的に一致する処理を実行するための処理部を当該同一のグループに割り当て、部分的に一致する処理を実行するための機能をその処理部に割り当てて処理部の状態を停止状態から待機状態に遷移させる、
ことを特徴とする請求項４に記載の情報処理装置。
【請求項７】
前記制御手段は、複数の処理部の起動を制御する手段であり、複数の処理部の中の少なくとも１つの処理部の状態を停止状態から待機状態に遷移させ、優先度の高いユーザからの処理要求を優先度の低いユーザからの処理要求よりも優先的に待機状態の処理部に割り当てる、
ことを特徴とする請求項１から請求項６のいずれか一項に記載の情報処理装置。
【請求項８】
前記制御手段は、優先度の高いユーザからの処理要求を待機状態の処理部に割り当て、優先度の低いユーザからの処理要求を停止状態の処理部に割り当てる、
ことを特徴とする請求項７に記載の情報処理装置。
【請求項９】
利用可能な処理の数が多いユーザほど、優先度が高くなる、
ことを特徴とする請求項７又は請求項８に記載の情報処理装置。
【請求項１０】
前記制御手段は、複数の処理部の起動を制御する手段であり、負荷の大きい処理を実行するための機能を負荷の小さい処理を実行するための機能よりも優先的に処理部に予め割り当てて、その処理部の状態を停止状態から待機状態に予め遷移させる、
ことを特徴とする請求項２から請求項６のいずれか一項に記載の情報処理装置。
【請求項１１】
負荷の大きい処理は画像処理を含む処理であり、負荷の小さい処理はユーザのログイン処理を含む処理である、
ことを特徴とする請求項１０に記載の情報処理装置。
【請求項１２】
前記制御手段は、要求された処理の実行が完了した処理部の状態を起動状態から待機状態に遷移させる、
ことを特徴とする請求項１から請求項１１のいずれか一項に記載の情報処理装置。
【請求項１３】
前記制御手段は、予め定められた上限数の処理部の状態が既に待機状態に遷移されている場合、新たに処理の実行が完了した処理部の状態を起動状態から停止状態に遷移させる、
ことを特徴とする請求項１２に記載の情報処理装置。
【請求項１４】
コンピュータを、
データを処理する処理部の起動を制御する起動制御手段、
処理部の状態に関する情報を記憶手段に記憶させる記憶制御手段、
として機能させ、
前記起動制御手段は、処理部の状態を停止状態から起動状態の間の待機状態に予め遷移起動させ、
前記記憶制御手段は、待機状態の処理部の状態に関する情報を前記記憶手段に記憶させておき、
前記起動制御手段は、ユーザから処理要求を受け付けた場合、当該ユーザの固有の設定情報と、待機状態の処理部の状態に関する情報と、を用いて、処理部の状態を待機状態から起動状態に遷移させる、
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及びプログラムに関する。
【背景技術】
【０００２】
クラウドコンピューティングのように、サービス提供者が有するプロセッサやメモリ等のリソースを、例えば課金方式等の形式でユーザに使用させる技術が知られている。このようなサービスは、一般的に、処理に用いられるリソース（例えば処理部（仮想マシン、ＶＭ））を必要に応じて自動的に増減する、いわゆるオートスケーリング機能を備えている。一般的に、処理部の数を増加させる処理を「スケールアウト」と称し、処理部の数を減少させる処理を「スケールイン」と称している。
【０００３】
特許文献１には、仮想マシン間でのタスクの切り替えに関する技術が開示されている。特許文献２には、社内のサーバ環境が高負荷になった場合、事前に契約した社外のクラウドサービスを利用する技術が開示されている。特許文献３には、ライブマイグレーションとトラフィックエンジニアリングを組み合わせることで、特定の環境下においてクラウドサービス全体の性能低下を抑制する技術が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特表２００９−５３６７６２号公報
【特許文献２】特表２０１４−５３２３５４号公報
【特許文献３】特開２０１３−１７９４５６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
一般的に、ユーザから処理の要求を受け付けた場合、処理部を起動させ（処理部の状態を停止状態から起動状態に遷移させ）、処理の実行が完了した場合、処理部を停止させる（処理部の状態を起動状態から停止状態に遷移させる）。ユーザ毎に処理部で使用されるパラメータが異なる場合があるため、あるユーザが要求した処理を実行するために処理部を起動させたとしても、その処理部によって、別のユーザが要求した処理を実行できるとは限らない。そのため、通常は、処理の実行が完了した場合、処理部を停止させ（スケールイン）、処理の要求を新たに受け付けた場合に、処理部を起動させる（スケールアウト）。しかし、この場合、処理部の起動と停止（スケールアウトとスケールイン）を繰り返すことになるため、処理の効率が低下する。つまり、ユーザから処理の要求を受け付けたタイミングで処理部を起動し始めるので、その起動に要する時間分、処理の実行が遅れる。
【０００６】
本発明の目的は、処理の要求を受け付けたときに処理部を起動し始める場合と比べて、処理部による処理の実行開始を早めることにある。
【課題を解決するための手段】
【０００７】
請求項１に記載の発明は、データを処理する処理部の起動を制御する制御手段と、処理部の状態に関する情報を記憶する記憶手段と、を有し、前記制御手段は、処理部の状態を停止状態から起動状態の間の待機状態に予め遷移させ、待機状態の処理部の状態に関する情報を前記記憶手段に記憶させておき、ユーザから処理要求を受け付けた場合、当該ユーザの固有の設定情報と、待機状態の処理部の状態に関する情報と、を用いて、処理部の状態を待機状態から起動状態に遷移させる、ことを特徴とする情報処理装置である。
【０００８】
請求項２に記載の発明は、前記制御手段は、処理を実行するための機能を処理部に予め割り当てることで、処理部の状態を停止状態から待機状態に予め遷移させておき、ユーザから処理要求を受け付けた場合、当該ユーザの固有の設定情報を待機状態の処理部に設定することで、処理部の状態を待機状態から起動状態に遷移させる、ことを特徴とする請求項１に記載の情報処理装置である。
【０００９】
請求項３に記載の発明は、前記制御手段は、処理部に割り当てられた機能が更新された場合、待機状態の処理部の状態を停止状態に遷移させる、ことを特徴とする請求項２に記載の情報処理装置である。
【００１０】
請求項４に記載の発明は、前記制御手段は、共通の処理を利用する複数のユーザを同一のグループに分類し、同一のグループ毎に処理部を割り当て、各グループの処理部に、共通の処理を実行するための機能を割り当てて処理部の状態を停止状態から待機状態に遷移させる、ことを特徴とする請求項２又は請求項３に記載の情報処理装置である。
【００１１】
請求項５に記載の発明は、前記制御手段は、複数のユーザの間で、利用される処理が完全に一致する場合、当該複数のユーザを同一のグループに分類する、ことを特徴とする請求項４に記載の情報処理装置である。
【００１２】
請求項６に記載の発明は、前記制御手段は、複数のユーザの間で、利用される処理が部分的に一致する場合、当該複数のユーザを同一のグループに分類し、部分的に一致する処理を実行するための処理部を当該同一のグループに割り当て、部分的に一致する処理を実行するための機能をその処理部に割り当てて処理部の状態を停止状態から待機状態に遷移させる、ことを特徴とする請求項４に記載の情報処理装置である。
【００１３】
請求項７に記載の発明は、前記制御手段は、複数の処理部の起動を制御する手段であり、複数の処理部の中の少なくとも１つの処理部の状態を停止状態から待機状態に遷移させ、優先度の高いユーザからの処理要求を優先度の低いユーザからの処理要求よりも優先的に待機状態の処理部に割り当てる、ことを特徴とする請求項１から請求項６のいずれか一項に記載の情報処理装置である。
【００１４】
請求項８に記載の発明は、前記制御手段は、優先度の高いユーザからの処理要求を待機状態の処理部に割り当て、優先度の低いユーザからの処理要求を停止状態の処理部に割り当てる、ことを特徴とする請求項７に記載の情報処理装置である。
【００１５】
請求項９に記載の発明は、利用可能な処理の数が多いユーザほど、優先度が高くなる、ことを特徴とする請求項７又は請求項８に記載の情報処理装置である。
【００１６】
請求項１０に記載の発明は、前記制御手段は、複数の処理部の起動を制御する手段であり、負荷の大きい処理を実行するための機能を負荷の小さい処理を実行するための機能よりも優先的に処理部に予め割り当てて、その処理部の状態を停止状態から待機状態に予め遷移させる、ことを特徴とする請求項２から請求項６のいずれか一項に記載の情報処理装置である。
【００１７】
請求項１１に記載の発明は、負荷の大きい処理は画像処理を含む処理であり、負荷の小さい処理はユーザのログイン処理を含む処理である、ことを特徴とする請求項１０に記載の情報処理装置である。
【００１８】
請求項１２に記載の発明は、前記制御手段は、要求された処理の実行が完了した処理部の状態を起動状態から待機状態に遷移させる、ことを特徴とする請求項１から請求項１１のいずれか一項に記載の情報処理装置である。
【００１９】
請求項１３に記載の発明は、前記制御手段は、予め定められた上限数の処理部の状態が既に待機状態に遷移されている場合、新たに処理の実行が完了した処理部の状態を起動状態から停止状態に遷移させる、ことを特徴とする請求項１２に記載の情報処理装置である。
【００２０】
請求項１４に記載の発明は、コンピュータを、データを処理する処理部の起動を制御する起動制御手段、処理部の状態に関する情報を記憶手段に記憶させる記憶制御手段、として機能させ、前記起動制御手段は、処理部の状態を停止状態から起動状態の間の待機状態に予め遷移起動させ、前記記憶制御手段は、待機状態の処理部の状態に関する情報を前記記憶手段に記憶させておき、前記起動制御手段は、ユーザから処理要求を受け付けた場合、当該ユーザの固有の設定情報と、待機状態の処理部の状態に関する情報と、を用いて、処理部の状態を待機状態から起動状態に遷移させる、ことを特徴とするプログラムである。
【発明の効果】
【００２１】
請求項１，２，１４に記載の発明によれば、処理の要求を受け付けたときに処理部を起動し始める場合と比べて、処理部による処理の実行開始が早くなる。
【００２２】
請求項３に記載の発明によれば、機能が更新された後の処理の実行開始が早くなる。
【００２３】
請求項４−６に記載の発明によれば、各ユーザに待機状態の処理部を予め割り当てる場合と比べて、待機状態の処理部の数を減らせる。
【００２４】
請求項７−９に記載の発明によれば、優先度の高いユーザからの要求に係る処理の実行開始が早くなる。
【００２５】
請求項１０，１１に記載の発明によれば、負荷の大きい処理の実行開始が早くなる。
【００２６】
請求項１２に記載の発明によれば、処理の実行が完了した処理部の状態を停止状態に遷移させる場合と比べて、次の処理の実行開始が早くなる。
【００２７】
請求項１３に記載の発明によれば、処理部を待機状態に維持する場合にコストが発生する場合において、待機状態の処理部の上限数を定めない場合と比べて、そのコストを抑えることが可能となる。
【図面の簡単な説明】
【００２８】
【図１】本実施形態に係る情報処理システムの一例を示す図である。
【図２】ＶＭ管理テーブルの一例を示す図である。
【図３】本実施形態に係る情報処理システムの一例を示す図である。
【図４】各テナントが利用可能な処理を示す図である。
【発明を実施するための形態】
【００２９】
図１を参照して、本発明の実施形態に係る情報処理システムについて説明する。図１には、本実施形態に係る情報処理システムの一例が示されている。
【００３０】
本実施形態に係る情報処理システム１０は、処理を実行するというサービスをユーザに提供する。情報処理システム１０においては、一例として、複数のユーザ（テナント）がリソースを共有するマルチテナント方式が採用されている。処理は、例えば、画像処理（画像処理ジョブ）、印刷に関する処理（印刷ジョブ）、スキャンに関する処理（スキャンジョブ）、等である。情報処理システム１０は、これらの処理の中の少なくとも１つの処理を実行する機能を備えていてもよい。もちろん、これら以外の処理が情報処理システム１０によって実行されてもよい。
【００３１】
画像処理ジョブは、例えば、複数の図面（画像）の差分を演算する図面差分処理、ＯＣＲ（Optical character recognition）処理等の文字認識処理、等である。情報処理システム１０は、例えば、図示しないネットワーク等の通信経路を介して、ＰＣ（パーソナルコンピュータ）やモバイル端末等の端末装置１２から画像データを受け取り、その画像データに対して画像処理を適用し、画像処理の結果を端末装置１２に送る。
【００３２】
印刷ジョブは、ユーザが指定した印刷対象の文書データをプリンタで印刷するために行うデータ処理である。印刷ジョブは、例えば、文書データを印刷データに変換する処理、変換結果の印刷データをユーザによって指定されたプリンタに送信する処理、文書データを画像に変換して画像から情報を抽出する処理、処理結果を他のサーバ等へ転送する処理、等を含む。情報処理システム１０は、例えば、通信経路を介して端末装置１２から文書データを受け取り、その文書データを図示しないプリンタで取扱可能なデータ形式の印刷データに変換し、その印刷データを通信経路経由でプリンタに提供して印刷を実行させる。
【００３３】
スキャンジョブは、スキャン（画像読取処理）によって得られた画像に対するデータ処理や画像の転送処理等を含むジョブである。この場合、端末装置１２は、スキャナ、ファクシミリ装置、複合機（プリンタ、スキャナ、コピー機、ファクシミリ装置等の機能を併せ持つ装置）等であってもよい。
【００３４】
情報処理システム１０は、１又は複数のＶＭ（Virtual Machine：仮想マシン）を含む。図１に示す例では、情報処理システム１０はＶＭ群１４を含み、ＶＭ群１４は、６個のＶＭ（ＶＭ１４ａ，１４ｂ，１４ｃ，１４ｄ，１４ｅ，１４ｆ）を含む。もちろん、この数は一例に過ぎない。ＶＭは、ユーザからの指示に対応する処理（例えば、画像処理ジョブや印刷ジョブやスキャンジョブ等）を実行する。ＶＭは、例えば、ＩａａＳ（Infrastructure as a Service）プロバイダから提供されるインフラ上に構築されるものであってよい。
【００３５】
ＶＭは、割り当てられるジョブの他に、ユーザからの要求を処理するユーザインターフェース処理も実行する。ユーザインターフェース処理は、情報処理システム１０に対するユーザの接続（ログイン）の可否を判定するログイン処理、ジョブについてのパラメータ（例えば印刷部数等の印刷属性）の設定を受け付ける処理、ジョブの実行開始要求を受け付ける処理、ジョブの状態確認の要求を受け付けてジョブの状態情報をユーザに提供する処理、等を含む。
【００３６】
ユーザ振り分け部１６は、ユーザ（端末装置１２）からの処理要求をいずれかのＶＭに振り分ける（割り当てる）機能を備えている。
【００３７】
テナント管理部１８は、情報処理システム１０が提供するサービスを利用する各テナント（各ユーザ）に関する情報（テナント管理情報２８）を作成し、各テナントを管理する機能を備えている。テナント管理情報２８はストレージ２２に記憶される。テナント管理情報２８は、例えば、各テナントを一意に識別する情報、各テナント（各ユーザ）が利用可能な処理（例えば画像処理ジョブ、印刷ジョブ、スキャンジョブ等）を示す情報、各テナント（各ユーザ）の多重度を示す情報、等を含む。
【００３８】
テナントが利用可能な処理は、例えば、サービスの利用契約等に従って予め定められる。例えば、テナントＡ（ユーザＡ）が、情報処理システム１０が提供するサービスの利用契約を締結しており、その利用契約によって、テナントＡが利用可能な処理として図面差分処理が定められているものとする。この場合、テナントＡは、情報処理システム１０が提供する図面差分処理を利用することが可能となる。
【００３９】
多重度は、同時実行可能な処理の数、つまり、並列的に実行可能な処理の数である。同時実行可能な処理の数は、例えばサービスの利用契約等に従って、テナント毎（ユーザ毎）に予め定められる。例えば、サービスの利用契約によって、テナントＡの多重度が「３」に定められているものとする。この場合、テナントＡは、３つの処理が並列的に実行されるように要求することができる。例えば、テナントＡから要求された２つのジョブがＶＭによって実行中の場合において、テナントＡから別のジョブ（３つ目のジョブ）の実行要求が与えられた場合、当該別のジョブ（３つ目のジョブ）もＶＭによって実行される。テナントＡから要求された３つのジョブが実行中の場合において、テナントＡから別のジョブ（４つ目のジョブ）の実行要求が与えられた場合、当該別のジョブ（４つ目のジョブ）は実行されず、実行中の３つのジョブの中で少なくとも１つのジョブの実行が完了すると、４つ目のジョブが実行される。
【００４０】
ＶＭ制御部２０は、各ＶＭを制御する機能を備えている。ＶＭ制御部２０は、例えば、停止状態のＶＭを起動させたり、起動状態（すなわち稼働状態）のＶＭを停止させたりする。また、ＶＭ制御部２０は、ＶＭの状態を停止状態から起動状態までの間の待機状態（Ｒｅａｄｙ状態）まで予め遷移させ、待機状態のＶＭの状態に関する情報をストレージ２２に記憶させる。待機状態は、処理を実行するための機能がＶＭに割り当てられている状態であって、処理を要求したユーザの固有の設定情報がＶＭに設定されていない状態である。具体的には、待機状態は、処理を実行するためのプログラムがロードされているが、ユーザの固有のパラメータがＶＭに設定されていない状態である。ＶＭ制御部２０は、例えば、待機状態のＶＭの状態に関する情報として、待機状態のＶＭのスナップショットを作成し、そのスナップショットをストレージ２２に記憶させる。スナップショットは、例えば、ある時点におけるＶＭを構成する情報（例えば、メモリの情報、ディスクイメージ、レジスタの情報、ファイル、ディレクトリ、データベースファイル、ソースコード等）を抜き出したものである。ＶＭ制御部２０は、テナント（ユーザ）から処理要求を受けた場合、当該ユーザの固有の設定情報（パラメータ）と、待機状態のＶＭの状態に関する情報（スナップショット）と、を用いて、ＶＭの状態を待機状態から起動状態へ遷移させる。つまり、ＶＭ制御部２０は、待機状態のＶＭ（処理を実行するためのプログラムがロードされた状態のＶＭ）に、ユーザの固有の設定情報（パラメータ）をマウントすることで、ＶＭを起動させる。これにより、当該ユーザ固有の処理を提供するＶＭが構築される。なお、例えば、ユーザ振り分け部１６とＶＭ制御部２０によって、制御手段、起動制御手段及び記憶制御手段が構成される。
【００４１】
例えば、ユーザＩＤを入力するための画面を提供するという処理に関して、テナント毎（ユーザ毎）に、その画面に表示される情報が異なる場合がある。例えば、あるテナントに係る処理においては、ユーザＩＤとして文字列「社員ＩＤ」が画面上に表示され、別のテナントに関する処理においては、ユーザＩＤとして文字列「会員ＩＤ」が画面上に表示される場合がある。ユーザＩＤを入力するための画面を表示するという処理を実行するためのプログラムがロードされた状態のＶＭが、待機状態のＶＭである。文字列「社員ＩＤ」や文字列「会員ＩＤ」が、ユーザ固有のパラメータ（設定情報）に相当する。テナントＡの固有のパラメータ（社員ＩＤ）が待機状態のＶＭに適用されると、そのＶＭの状態は待機状態から起動状態に遷移する。起動したＶＭは、ユーザＩＤを入力するための画面を提供するという処理を実行する。テナントＡの固有のパラメータが適用された場合、ユーザＩＤの文字列として文字列「社員ＩＤ」が画面上に表示され、その社員ＩＤを入力するための入力欄がその画面上に表示される。テナントＢの固有のパラメータ（会員ＩＤ）が待機状態のＶＭに適用された場合も同様に、ＶＭは起動し、ユーザＩＤを入力するための画面を提供するという処理を実行する。この場合、ユーザＩＤの文字列として文字列「会員ＩＤ」が画面上に表示され、その会員ＩＤを入力するための入力欄がその画面上に表示される。このように、複数のテナント間において、処理（例えば、ユーザＩＤを入力するための画面を提供するという処理）が共通する場合であっても、固有のパラメータ（例えば文字列「社員ＩＤ」や「会員ＩＤ」等）が互いに異なる場合がある。ユーザの固有のパラメータを待機状態のＶＭに適用することで、当該ユーザ固有の処理が提供される。
【００４２】
ＶＭがユーザ（端末装置１２）から受ける処理要求は、例えば、ログイン要求、ジョブ実行要求、ジョブ状態確認要求、等を含む。
【００４３】
端末装置１２からログイン要求を受けると、ユーザ振り分け部１６からそのログイン要求を割り当てられたＶＭが、端末装置１２から受け取ったパスワード等のユーザ認証情報を用いてユーザのログインを認めるか否かを判定する。ログインが認められると、ユーザは情報処理システム１０に対してログインしている状態となる。ログイン状態のユーザからの要求は、ログインを受け付けたＶＭが受け取って処理する。すなわち、ユーザは、そのＶＭにログインしたと捉えることができる。
【００４４】
例えば、印刷ジョブが実行される場合、ログイン状態においては、ユーザ（端末装置１２）からそのＶＭに印刷データや印刷パラメータの入力が行われる。すると、当該ＶＭは、一意なジョブ識別子を発行し、それら入力された情報をそのジョブ識別子に対応付けて、ストレージ２２に保存する。端末装置１２からＶＭにジョブ実行要求が入力されると、そのＶＭは、そのジョブ識別子をキュー（印刷待ち行列）の末尾に追加する。各ＶＭは、それぞれ次の印刷ジョブを受け入れ可能になると、そのキューの先頭の印刷ジョブを受け入れる。ユーザは、キューに入れられた印刷ジョブの状態を確認したい場合、ジョブ状態の確認を要求する。これに応じて、端末装置１２から情報処理システム１０にジョブ状態確認要求が送られる。この要求を受け取った情報処理システム１０内のＶＭは、その要求の対象である印刷ジョブの現在の状態を示す情報を端末装置１２に返す。
【００４５】
ユーザが明示的にログアウトを要求した場合、又は、操作をしない状態が予め定められた時間続いてタイムアウトとなった場合、ユーザのログイン状態は解除される。ログイン解除の後、ユーザが情報処理システム１０に対して要求を行う場合は、再度ログインを行う必要がある。例えば、ユーザがログインしてジョブを投入し、ジョブ実行要求を行った後、ログインが解除され、その後、そのユーザがそのジョブの状態を知りたい場合、そのユーザは再びログイン要求を行って情報処理システム１０にログインした上で、ジョブ確認要求を行うことになる。
【００４６】
なお、ユーザ振り分け部１６、テナント管理部１８及びＶＭ制御部２０は、仮想マシン上に構築されたものであってもよい。
【００４７】
ストレージ２２は、ＶＭ群１４、ユーザ振り分け部１６、テナント管理部１８及びＶＭ制御部２０の間で共有される記憶装置である。ストレージ２２には、ＶＭ管理情報２４、スナップショット管理情報２６、テナント管理情報２８、パラメータ管理情報３０及びジョブ管理情報３２が記憶されている。ＶＭ群１４、ユーザ振り分け部１６、テナント管理部１８及びＶＭ制御部２０は、これらの情報を参照しながら処理を実行する。
【００４８】
ＶＭ管理情報２４は、各ＶＭを管理するための情報であり、例えば、各ＶＭが実行中のジョブを示す情報等を含む。ＶＭ管理情報２４においては、例えば、ＶＭ毎に、ＶＭを一意に識別するＶＭ識別子、そのＶＭが実行中のジョブを示す情報、等が互いに対応付けられている。
【００４９】
スナップショット管理情報２６は、各ＶＭの状態に関する情報（スナップショット）を管理するための情報である。スナップショット管理情報２６においては、例えば、ＶＭ毎に、ＶＭを一意に識別するＶＭ識別子と、そのＶＭの状態に関する情報（スナップショット）と、が互いに対応付けられている。例えば、ＶＭ制御部２０は、ＶＭの状態を停止状態から待機状態まで遷移させ、その待機状態のＶＭのスナップショットを作成する。そのスナップショットはスナップショット管理情報２６に含まれてストレージ２２に記憶される。
【００５０】
テナント管理情報２８は、上述したように、各テナント（ユーザ）に関する情報である。テナント管理情報２８においては、例えば、テナント毎（ユーザ毎）に、テナント（ユーザ）を一意に識別するユーザ識別子、そのテナントが利用可能な処理（例えば画像処理ジョブ、印刷ジョブ、スキャンジョブ等）を示す情報、そのテナントの多重度を示す情報、等が互いに対応付けられている。
【００５１】
パラメータ管理情報３０は、ＶＭに適用される設定情報（パラメータ）を管理するための情報である。パラメータ管理情報３０においては、例えば、テナント毎（ユーザ毎）に、テナント（ユーザ）を一意に識別するユーザ識別子と、そのテナントの固有の設定情報（パラメータ）と、が互いに対応付けられている。各テナントの設定情報は、例えば、画像処理パラメータ、処理結果、ログ、ユーザ情報、ユーザインターフェース用の情報、等を含む。各テナントの設定情報は予め作成されて、ストレージ２２に予め記憶される。
【００５２】
ジョブ管理情報３２は、処理（ジョブ）を管理するための情報である。ジョブ管理情報３２においては、例えば、ジョブ毎に、ジョブ（例えば画像処理ジョブ、印刷ジョブ、スキャンジョブ等）を一意に識別するジョブ識別子、そのジョブを投入したテナント（ユーザ）を一意に識別するユーザ識別子、そのジョブで使用されるデータの格納場所を示す情報、そのジョブの現在の状況を示す情報、そのジョブの負荷（例えば、ＶＭがジョブの実行を完了するのに要する時間）を示す情報、等が互いに対応付けられている。
【００５３】
以下、図２を参照して、ＶＭ管理情報２４について詳しく説明する。図２には、ＶＭ管理情報２４の一例としてのＶＭ管理テーブルが示されている。
【００５４】
ＶＭ管理テーブルにおいては、例えば、ＶＭ毎に、ＶＭを一意に識別するＶＭ識別子、そのＶＭの状態（起動、停止、待機）、そのＶＭが同時に受付可能なユーザ数、そのＶＭに現在ログインしているユーザ数（ログインユーザ数）、現在ログインしているユーザのユーザ識別子のリスト（ログインユーザ）、そのＶＭが並列的に実行可能な最大ジョブ数、及び、そのＶＭが現在実行しているジョブのジョブ識別子のリスト（実行中ジョブ）が、互いに対応付けられている。
【００５５】
最大ジョブ数と最大ユーザ数は、各ＶＭの処理能力に応じて予め定められた値である。ＶＭの状態として、起動状態、停止状態及び待機状態が設けられている。起動状態とは、ＶＭが起動済みである状態、すなわち、ジョブやユーザインターフェース処理を実行可能な状態である。停止状態とは、ＶＭが停止している状態である。停止状態のＶＭがジョブやユーザインターフェース処理を実行可能になるには、そのＶＭを起動させる起動処理が必要であり、この起動処理にはある程度の時間がかかる。待機状態とは、起動状態と停止状態の中間の状態（アイドル状態）であり、いわば起動又は停止の準備段階である。より詳しく説明すると、待機状態とは、上述したように、処理を実行するためのプログラムがロードされているが、ユーザの固有のパラメータがＶＭに設定されていない状態である。待機状態ではＶＭは停止していないが、新たなジョブは受け入れないし、ユーザインターフェース処理も実行しない。これらの処理を実行するには、ＶＭは起動状態に復帰する必要がある。ただし、待機状態のＶＭは、まだ停止していないので、停止した状態から起動状態に復帰する場合と比べて、起動に要する時間が削減される。
【００５６】
ＶＭ管理テーブル（ＶＭ管理情報２４）は、ユーザ振り分け部１６、ＶＭ制御部２０及び各ＶＭによって随時更新される。例えば、ＶＭ制御部２０がＶＭの状態を遷移させた場合、ＶＭ管理テーブル内のそのＶＭの状態が遷移後の値に更新される。ユーザ振り分け部１６がユーザからのログイン要求をいずれかのＶＭに振り分けた場合、ＶＭ管理テーブル内のそのＶＭのログインユーザ数に１が加算される。ＶＭがログイン処理を実行してユーザを認証した場合、そのユーザ識別子がログインユーザとしてＶＭ管理テーブルに追加される。ＶＭにログイン中のユーザがログアウトした場合、そのＶＭのログインユーザ数が１つ減算され、そのユーザのユーザ識別子がＶＭ管理テーブルから削除される。ＶＭがキューから新たなジョブを取得して実行を開始すると、そのジョブのジョブ識別子が実行中のジョブの欄に追加される。ＶＭがそのジョブの実行を完了すると、実行中ジョブの欄からそのジョブのジョブ識別子が削除される。
【００５７】
以下、情報処理システム１０について更に詳しく説明する。
【００５８】
図３を参照して、ＶＭにテナント（ユーザ）が振り分けられた状態の情報処理システム１０について説明する。図３には、情報処理システム１０の一例が示されている。図３に示す例では、ＶＭ１４ａ，１４ｂにテナントＡ（ユーザＢ）が既に振り分けられており、ＶＭ１４ｃ，１４ｄ，１４ｅにテナントＢ（ユーザＢ）が既に振り分けられている。ＶＭ１４ｆは、いずれのテナントにも振り分けられていない。
【００５９】
ＶＭ制御部２０は、ＶＭ１４ａ，１４ｂの状態を停止状態から待機状態まで遷移させる。つまり、ＶＭ制御部２０は、テナントＡが利用可能な処理を実行するためのプログラムをＶＭ１４ａ，１４ｂにロードすることで、ＶＭ１４ａ，１４ｂの状態を待機状態に遷移させる。これにより、ＶＭ１４ａ，１４ｂに、テナントＡが利用可能な処理を実行するための機能が割り当てられる。また、ＶＭ制御部２０は、待機状態のＶＭ１４ａ，１４ｂのそれぞれのスナップショットを作成する。ＶＭ１４ａ，１４ｂのそれぞれのスナップショットは、スナップショット管理情報２６に含まれてストレージ２２に記憶される。
【００６０】
ＶＭ１４ａ，１４ｂは、異なる処理を実行してもよいし、同じ処理を実行してもよい。ＶＭ１４ａ，１４ｂが異なる処理を実行する場合、ＶＭ制御部２０は、ＶＭ１４ａ，１４ｂのそれぞれに別々のプログラムをロードする。例えば、テナントＡが図面差分処理と文字認識処理を利用することができる場合、ＶＭ制御部２０は、例えば、ＶＭ１４ａに図面差分処理用のプログラムをロードすることでＶＭ１４ａの状態を待機状態に遷移させ、ＶＭ１４ｂに文字認識処理用のプログラムをロードすることでＶＭ１４ｂの状態を待機状態に遷移させる。これにより、図面差分処理を実行するための機能がＶＭ１４ａに割り当てられ、文字認識処理を実行するための機能がＶＭ１４ｂに割り当てられる。ＶＭ１４ａ，１４ｂが同じ処理を実行する場合、ＶＭ制御部２０は、ＶＭ１４ａ，１４ｂに同じプログラムをロードすることでＶＭ１４ａ，１４ｂの状態を待機状態に遷移させる。
【００６１】
ＶＭ制御部２０は、テナントＡから処理の要求を受けると、その処理に関するテナントＡの固有の設定情報（パラメータ）をストレージ２２から取得し、要求された処理を実行するための機能が割り当てられたＶＭ（ＶＭ１４ａ又はＶＭ１４ｂ）のスナップショットをストレージ２２から取得し、テナントＡの固有の設定情報とスナップショットを用いて、そのＶＭの状態を待機状態から起動状態へ遷移させる。つまり、ＶＭ制御部２０は、テナントＡの固有の設定情報を待機状態のＶＭ（ＶＭ１４ａ又はＶＭ１４ｂ）に設定し（マウントし）、そのＶＭの状態を待機状態から起動状態に遷移させる。これにより、そのＶＭは起動し、自身に割り当てられた処理を実行する。
【００６２】
テナントＢについても同様であり、ＶＭ制御部２０は、テナントＢが利用可能な処理を実行するためのプログラムをＶＭ１４ｃ，１４ｄ，１４ｅにロードすることで、１４ｃ，１４ｄ，１４ｅの状態を待機状態から起動状態に遷移させる。これにより、ＶＭ１４ｃ，１４ｄ，１４ｅに、テナントＢが利用可能な処理を実行するための機能が割り当てられる。また、ＶＭ制御部２０は、待機状態のＶＭ１４ｃ，１４ｄ，１４ｅのそれぞれのスナップショットを作成する。ＶＭ１４ｃ，１４ｄ，１４ｅのそれぞれのスナップショットは、スナップショット管理情報２６に含まれてストレージ２２に記憶される。
【００６３】
ＶＭ制御部２０は、テナントＢから処理の要求を受けると、その処理に関するテナントＢの固有の設定情報（パラメータ）をストレージ２２から取得し、要求された処理を実行するための機能が割り当てられたＶＭ（ＶＭ１４ｃ、ＶＭ１４ｄ又はＶＭ１４ｅ）のスナップショットをストレージ２２から取得し、テナントＢの固有の設定情報とスナップショットを用いて、そのＶＭの状態を待機状態から起動状態に遷移させる。つまり、ＶＭ制御部２０は、テナントＢの固有の設定情報を待機状態のＶＭ（ＶＭ１４ｃ、ＶＭ１４ｄ又はＶＭ１４ｅ）に設定し（マウントし）、そのＶＭの状態を待機状態から起動状態に遷移させる。これにより、そのＶＭは起動し、自身に割り当てられた処理を実行する。
【００６４】
なお、テナントが振り分けられていないＶＭ１４ｆは停止している。ＶＭ１４ｆにテナントが振り分けられた場合、ＶＭ制御部２０は、そのテナントが利用可能な処理を実行するための機能をＶＭ１４ｆに割り当てて、ＶＭ１４ｆの状態を停止状態から待機状態に遷移させ、待機状態のＶＭ１４ｆのスナップショットを作成する。
【００６５】
以下、図４を参照して、具体例を挙げて情報処理システム１０について詳しく説明する。図４には、各テナントが利用可能な処理の一例が示されている。
【００６６】
例えば、テナントＡ，Ｂ(ユーザＡ，Ｂ)は、画像処理ジョブの一例として、図面差分処理を利用することができ、テナントＣ，Ｄ（ユーザＣ，Ｄ）は、画像処理ジョブの一例として、図面差分処理と文字認識処理を利用することができるものとする。利用可能な処理は、例えば、テナント毎（ユーザ毎）に、サービスの利用契約等によって予め定められる。各テナントが利用可能な処理を示す情報は、上述したテナント管理情報２８に含まれてストレージ２２に予め記憶されている。
【００６７】
また、各テナントの固有の設定情報（パラメータ）は、パラメータ管理情報３０に含まれてストレージ２２に予め記憶されている。例えば、図面差分処理に関する設定情報（パラメータ）として、テナントＡ（ユーザＡ）の固有の設定情報、テナントＢ（ユーザＢ）の固有の設定情報、テナントＣ（ユーザＣ）の固有の設定情報、及び、テナントＤ（ユーザＤ）の固有の設定情報が、パラメータ管理情報３０に含まれてストレージ２２に予め記憶されている。同様に、文字認識処理に関する設定情報（パラメータ）として、テナントＣの固有の設定情報、及び、テナントＤの固有の設定情報が、パラメータ管理情報３０に含まれてストレージ２２に予め記憶されている。
【００６８】
例えば、ユーザ振り分け部１６は、テナントＡをＶＭ１４ａに振り分け、テナントＢをＶＭ１４ｂに振り分け、テナントＣをＶＭ１４ｃ，１４ｄに振り分け、テナントＤをＶＭ１４ｅ，１４ｆに振り分けたものとする。
【００６９】
ＶＭ制御部２０は、ＶＭ１４ａ，１４ｂ，１４ｃ，１４ｄ，１４ｅ，１４ｆの状態を停止状態から待機状態まで遷移させ、各ＶＭのスナップショットを作成してストレージ２２に記憶させる。例えば、ＶＭ制御部２０は、図面差分処理を実行するためのプログラムをＶＭ１４ａ，１４ｂ，１４ｃ，１４ｅにロードすることで、ＶＭ１４ａ，１４ｂ，１４ｃ，１４ｅの状態を停止状態から待機状態に遷移させ、ＶＭ１４ａ，１４ｂ，１４ｃ，１４ｅのそれぞれのスナップショットを作成してストレージ２２に記憶させる。つまり、ＶＭ制御部２０は、図面差分処理を実行するための機能をＶＭ１４ａ，１４ｂ，１４ｃ，１４ｅに割り当てて、ＶＭ１４ａ，１４ｂ，１４ｃ，１４ｅの状態を停止状態から待機状態に遷移させ、ＶＭ１４ａ，１４ｂ，１４ｃ，１４ｅのそれぞれのスナップショットを作成してストレージ２２に記憶させる。また、ＶＭ制御部２０は、文字認識処理を実行するためのプログラムをＶＭ１４ｄ，１４ｆにロードすることで、ＶＭ１４ｄ，１４ｆの状態を停止状態から待機状態に遷移させ、ＶＭ１４ｄ，１４ｆのそれぞれのスナップショットを作成してストレージ２２に記憶させる。つまり、ＶＭ制御部２０は、文字認識処理を実行するための機能をＶＭ１４ｄ，１４ｆに割り当てて、ＶＭ１４ｄ，１４ｆの状態を停止状態から待機状態に遷移させ、ＶＭ１４ｄ，１４ｆのそれぞれのスナップショットを作成してストレージ２２に記憶させる。
【００７０】
ＶＭ制御部２０は、テナントＡから図面差分処理の要求を受けると、図面差分処理に関するテナントＡの固有の設定情報をストレージ２２から取得し、テナントＡが振り分けられたＶＭ１４ａのスナップショットをストレージ２２から取得し、その設定情報とスナップショットを用いて、ＶＭ１４ａの状態を待機状態から起動状態に遷移させる。つまり、ＶＭ制御部２０は、テナントＡの固有の設定情報を待機状態のＶＭ１４ａに設定し（マウントし）、これにより、ＶＭ１４ａを起動させる。ＶＭ１４ａは、テナントＡの固有の設定情報を用いて図面差分処理を実行することになる。その図面差分処理の実行が完了した場合、ＶＭ制御部２０は、ＶＭ１４ａの状態を起動状態から待機状態に遷移させる。これにより、テナントＡから次の図面差分処理の要求を受け付けたときに、ＶＭ１４ａの状態を停止状態から起動状態に遷移させる場合と比べて、次の処理の実行開始が早くなる。
【００７１】
ＶＭ制御部２０は、テナントＢから図面差分処理の要求を受けると、図面差分処理に関するテナントＢの固有の設定情報をストレージ２２から取得し、テナントＢが振り分けられたＶＭ１４ｂのスナップショットをストレージ２２から取得し、その設定情報とスナップショットを用いて、ＶＭ１４ｂの状態を待機状態から起動状態に遷移させる。つまり、ＶＭ制御部２０は、テナントＢの固有の設定情報を待機状態のＶＭ１４ｂに設定し（マウントし）、これにより、ＶＭ１４ｂを起動させる。ＶＭ１４ｂは、テナントＢの固有の設定情報を用いて図面差分処理を実行することになる。その図面差分処理の実行が完了した場合、ＶＭ制御部２０は、ＶＭ１４ｂの状態を起動状態から待機状態に遷移させる。これにより、テナントＢから次の図面差分処理の要求を受け付けたときに、ＶＭ１４ｂの状態を停止状態から起動状態に遷移させる場合と比べて、次の処理の実行開始が早くなる。
【００７２】
ＶＭ制御部２０は、テナントＣから図面差分処理の要求を受けると、図面差分処理に関するテナントＣの固有の設定情報をストレージ２２から取得し、テナントＣが振り分けられたＶＭ１４ｃのスナップショットをストレージ２２から取得し、その設定情報とスナップショットを用いて、ＶＭ１４ｃの状態を待機状態から起動状態に遷移させる。つまり、ＶＭ制御部２０は、テナントＣの固有の設定情報を待機状態のＶＭ１４ｃに設定し（マウントし）、これにより、ＶＭ１４ｃを起動させる。ＶＭ１４ｃは、テナントＣの固有の設定情報を用いて図面差分処理を実行することになる。その図面差分処理の実行が完了した場合、ＶＭ制御部２０は、ＶＭ１４ｃの状態を起動状態から待機状態に遷移させる。これにより、テナントＣから次の図面差分処理の要求を受け付けたときに、ＶＭ１４ｃの状態を停止状態から起動状態に遷移させる場合と比べて、次の処理の実行開始が早くなる。
【００７３】
ＶＭ制御部２０は、テナントＣから文字認識処理の要求を受けると、文字認識処理に関するテナントＣの固有の設定情報をストレージ２２から取得し、テナントＣが振り分けられたＶＭ１４ｄのスナップショットをストレージ２２から取得し、その設定情報とスナップショットを用いて、ＶＭ１４ｄの状態を待機状態から起動状態に遷移させる。つまり、ＶＭ制御部２０は、テナントＣの固有の設定情報を待機状態のＶＭ１４ｄに設定し（マウントし）、これにより、ＶＭ１４ｄを起動させる。ＶＭ１４ｄは、テナントＣの固有の設定情報を用いて文字認識処理を実行することになる。その文字認識処理の実行が完了した場合、ＶＭ制御部２０は、ＶＭ１４ｄの状態を起動状態から待機状態に遷移させる。これにより、テナントＣから次の文字認識処理の要求を受け付けたときに、ＶＭ１４ｄの状態を停止状態から起動状態に遷移させる場合と比べて、次の処理の実行開始が早くなる。
【００７４】
ＶＭ制御部２０は、テナントＤから図面差分処理の要求を受けると、図面差分処理に関するテナントＤの固有の設定情報をストレージ２２から取得し、テナントＤが振り分けられたＶＭ１４ｅのスナップショットをストレージ２２から取得し、その設定情報とスナップショットを用いて、ＶＭ１４ｅの状態を待機状態から起動状態に遷移させる。つまり、ＶＭ制御部２０は、テナントＤの固有の設定情報を待機状態のＶＭ１４ｅに設定し（マウントし）、これにより、ＶＭ１４ｅを起動させる。ＶＭ１４ｅは、テナントＤの固有の設定情報を用いて図面差分処理を実行することになる。その図面差分処理の実行が完了した場合、ＶＭ制御部２０は、ＶＭ１４ｅの状態を起動状態から待機状態に遷移させる。これにより、テナントＤから次の図面差分処理の要求を受け付けたときに、ＶＭ１４ｅの状態を停止状態から待機状態に遷移させる場合と比べて、次の処理の実行開始が早くなる。
【００７５】
ＶＭ制御部２０は、テナントＤから文字認識処理の要求を受けると、文字認識処理に関するテナントＤの固有の設定情報をストレージ２２から取得し、テナントＤが振り分けられたＶＭ１４ｆのスナップショットをストレージ２２から取得し、その設定情報とスナップショットを用いて、ＶＭ１４ｆの状態を待機状態から起動状態に遷移させる。つまり、ＶＭ制御部２０は、テナントＤの固有の設定情報を待機状態のＶＭ１４ｆに設定し（マウントし）、これにより、ＶＭ１４ｆを起動させる。ＶＭ１４ｆは、テナントＤの固有の設定情報を用いて文字認識処理を実行することになる。その文字認識処理の実行が完了した場合、ＶＭ制御部２０は、ＶＭ１４ｆの状態を起動状態から待機状態に遷移させる。これにより、テナントＤから次の文字認識処理の要求を受け付けたときに、ＶＭ１４ｆの状態を停止状態から起動状態に遷移させる場合と比べて、次の処理の実行開始が早くなる。
【００７６】
以上のように、本実施形態によると、ＶＭの状態を待機状態に予め遷移させて、そのＶＭのスナップショットを作成しておき、テナント（ユーザ）から処理要求を受け付けた場合、そのテナントの固有の設定情報とスナップショットを用いてＶＭを起動させる。処理要求を受け付けたときにＶＭの状態が既に待機状態に遷移しているため、ＶＭの状態を停止状態から待機状態へ遷移させる時間分（処理を実行するためのプログラムをロードする時間分）、起動に要する時間が削減される。これにより、処理要求を受け付けたときにＶＭを起動し始める場合（つまり、ＶＭの状態を停止状態から起動状態に遷移させる場合）と比べて、ＶＭによる処理の実行開始が早くなる。
【００７７】
また、要求された処理の実行が完了した場合、その処理を実行していたＶＭの状態を起動状態から待機状態に遷移させることで、次の処理を受け付けたときにＶＭの状態を停止状態から起動状態に遷移させる場合と比べて、次の処理の実行開始が早くなる。
【００７８】
なお、ＶＭが起動している時間に応じて課金処理が行われる場合がある。この場合、処理を実行していないＶＭの状態を起動状態に維持した場合、サービスを利用していないにもかかわらず利用コストが増大することがある。これを回避するために、処理の実行が完了したＶＭの状態を起動状態から停止状態に遷移させる（スケールイン）ことが考えられる。しかし、ＶＭを停止させた場合、そのＶＭの起動に時間を要するため、その時間の分、ＶＭによる処理の実行開始が遅れる。本実施形態によると、ＶＭの状態を待機状態に予め遷移させているため、起動に要する時間が削減され、その分、ＶＭによる処理の実行開始が早くなる。
【００７９】
以下、変形例について説明する。
【００８０】
（変形例１）
ＶＭに割り当てられている機能（プログラム）が更新された場合、ＶＭ制御部２０は、ＶＭの状態を待機状態から停止状態に遷移させ、そのＶＭについてのスナップショットをストレージ２２から削除してもよい。機能（プログラム）が更新された場合、そのＶＭの待機状態は、更新後の機能を反映したものではなく、また、そのＶＭのスナップショットも、更新後の機能を反映したものではない。それ故、ＶＭ制御部２０は、ＶＭの状態を停止状態に遷移させる。これにより、ＶＭがリセットされる。ＶＭ制御部２０は、停止状態のＶＭに更新後の機能（更新後のプログラム）をロードして、そのＶＭの状態を停止状態から待機状態に遷移させてもよい。これにより、機能の更新がＶＭに反映される。
【００８１】
（変形例２）
ＶＭ制御部２０は、予め定められた上限数のＶＭの状態を待機状態に予め遷移させ、上限数を超えるＶＭの状態を待機状態に予め遷移させずに停止状態に維持してもよい。上限数は、例えば、管理者等によって定められた任意の数であってもよいし、サービスを利用するテナントの数（ユーザの数）に基づいて決定された数（例えば、テナント数と同数、テナント数よりも多い数又は少ない数）であってもよいし、各テナントの多重度の総数に基づいて決定された数（例えば、総数と同数、総数よりも多い数又は少ない数）であってもよい。
【００８２】
ＶＭ制御部２０は、テナントから処理の要求を受け付けると、停止状態のＶＭよりも待機状態のＶＭを優先的に利用する。つまり、ＶＭ制御部２０は、テナントからの処理の要求に応じて、待機状態のＶＭを起動させて処理を実行させ、待機状態の全ＶＭが処理を実行している場合、停止状態のＶＭを起動させて処理を実行させる。例えば、待機状態のＶＭの数に応じて課金される場合においては、待機状態のＶＭの上限数を設定することで、全ＶＭの状態を待機状態に予め遷移させる場合と比べて、利用コストが削減される。また、全ＶＭの状態を待機状態に予め遷移させた場合、利用されないにもかかわらず待機状態に維持されたＶＭが存在することがあり、この場合、利用していないにもかかわらず利用コストが発生する。待機状態のＶＭの上限数を設定することで、このようなコストが削減される。
【００８３】
また、ＶＭ制御部２０は、処理の実行が完了したＶＭの状態を起動状態から待機状態に遷移させる。上限数のＶＭが既に待機状態に遷移している場合、ＶＭ制御部２０は、新たに処理の実行が完了したＶＭの状態を起動状態から停止状態に遷移させる（スケールイン）。
【００８４】
例えば、各テナントの多重度の総数と同じ数が上限数として用いられ、その上限数のＶＭの状態が待機状態に予め遷移されている場合、各テナントから要求された全処理が、待機状態のＶＭに割り当てられることになる。それ故、いずれの処理もその実行開始が早くなる。
【００８５】
テナント数と同じ数が上限数として用いられ、各テナントに１つの待機状態のＶＭが割り当てられていてもよい。これにより、各テナントは、最低限、１つの待機状態のＶＭを利用することができる。
【００８６】
なお、ＶＭ制御部２０は、ＶＭ群１４に含まれるすべてのＶＭの状態を停止状態から待機状態に予め遷移させてもよい。
【００８７】
（変形例３）
ＶＭ制御部２０は、共通の処理を利用する複数のテナント（複数のユーザ）を同一のグループに分類し、同一のグループ毎に１又は複数のＶＭを割り当ててもよい。この場合、ＶＭ制御部２０は、各グループのＶＭに、当該共通の処理を実行するためのプログラムをロードすることで、当該共通の処理を実行するための機能（プログラム）を割り当てて、ＶＭの状態を停止状態から待機状態に予め遷移させる。
【００８８】
図４を参照して、変形例３について詳しく説明する。例えば、テナントＡ，Ｂは、いずれも図面差分処理を利用するため、テナントＡ，Ｂは共通の処理（図面差分処理）を利用しており、また、テナントＡ，Ｂの間で、利用される処理が完全に一致している。この場合、ＶＭ制御部２０は、テナントＡ，Ｂを同一のグループαに予め分類し、例えば、上限数のＶＭをグループαに割り当てる。上限数は、例えば、共通処理の種類数に基づいて決定された数（例えば、その種類数以上の数）であってもよいし、同一のグループに含まれるテナントの数に基づいて決定された数（例えば、テナント数と同数、テナント数よりも多い数又は少ない数）であってもよいし、各テナントの多重度の総数に基づいて決定された数（例えば、総数と同数、総数よりも多い数又は少ない数）であってもよい。
【００８９】
例えば、共通処理の種類数以上の数が上限数として用いられるものとする。グループαの共通処理は図面差分処理であるため、共通処理の種類数は１つである。従って、ＶＭ制御部２０は、１又は複数のＶＭをグループαに割り当てる。ＶＭ制御部２０は、グループαに割り当てられた１又は複数のＶＭに、共通の処理（図面差分処理）を実行するためのプログラムをロードすることで、当該共通の処理（図面差分処理）を実行するための機能（プログラム）を割り当てて、その１又は複数のＶＭの状態を停止状態から待機状態に予め遷移させる。また、ＶＭ制御部２０は、待機状態のＶＭのスナップショットを作成してストレージ２２に記憶させる。共通処理の種類数以上のＶＭがグループαに割り当てられることで、各共通処理を実行するための機能が、少なくとも１つのＶＭに割り当てられることになる。
【００９０】
上限数が、テナント数や多重度の総数によって定められる場合も同様である。例えば、テナント数以上の数が上限数として用いられ、各テナントに少なくとも１つの待機状態のＶＭが割り当てられてもよい。これにより、各テナントは、少なくとも１つの待機状態のＶＭを利用することができる。また、各テナントの多重度の総数以上の数が上限数として用いられてもよい。この場合、各テナントから要求された全処理が、待機状態のＶＭに割り当てられることになる。
【００９１】
ＶＭ制御部２０は、例えば、テナントＡから図面差分処理の要求を受け付けた場合、図面差分処理に関するテナントＡの固有の設定情報をストレージ２２から取得し、グループαに割り当てられて図面差分処理を実行するための機能が割り当てられたＶＭのスナップショットをストレージ２２から取得し、その設定情報とスナップショットを用いて、そのＶＭの状態を待機状態から起動状態に遷移させる。そのＶＭは、テナントＡの固有の設定情報を用いて図面差分処理を実行することになる。テナントＢから図面差分処理の要求を受け付けた場合も同様である。
【００９２】
１つのＶＭがグループαに割り当てられている場合において、テナントＡに係る図面差分処理の実行中にテナントＢから図面差分処理の要求を受け付けた場合、テナントＡに係る図面差分処理の実行が完了した後に、テナントＢに係る図面差分処理が実行される。テナントＡに係る図面差分処理の実行が完了した場合、ＶＭ制御部２０は、その処理の実行を完了したＶＭの状態を起動状態から待機状態に遷移させ、その待機状態のＶＭに、テナントＢの固有の設定情報を設定（マウント）することで、そのＶＭの状態を待機状態から起動状態に遷移させる。その後、そのＶＭは、テナントＢから要求された図面差分処理を実行する。
【００９３】
複数のＶＭがグループαに割り当てられている場合において、テナントＡに係る図面差分処理の実行中にテナントＢから図面差分処理の要求を受け付けた場合、テナントＢから要求された図面差分処理は、テナントＡから要求された図面差分処理を実行しているＶＭとは異なるＶＭによって実行される。これにより、テナントＡから要求された図面差分処理とテナントＢから要求された図面差分処理が、並列的に実行される。
【００９４】
また、テナントＣ，Ｄは、いずれも図面差分処理と文字認識処理を利用するため、テナントＣ，Ｄは共通の処理（図面差分処理と文字認識処理）を利用しており、また、テナントＣ，Ｄの間で、利用される処理が完全に一致している。この場合、ＶＭ制御部２０は、テナントＣ，Ｄを同一のグループβに予め分類し、例えば、上限数のＶＭをグループβに割り当てる。
【００９５】
例えば、共通処理の種類数以上の数が上限数として用いられているものとする。グループβの共通処理は図面差分処理と文字認識処理であるため、共通処理の種類数は２つである。従って、ＶＭ制御部２０は、２つ以上のＶＭをグループβに割り当てる。具体的には、ＶＭ制御部２０は、グループβに割り当てられた１又は複数のＶＭに、共通処理（図面差分処理）を実行するための機能（プログラム）を割り当てて、その１又は複数のＶＭの状態を停止状態から待機状態に予め遷移させる。同様に、ＶＭ制御部２０は、グループβに分類された別の１又は複数のＶＭに、共通処理（文字認識処理）を実行するための機能（プログラム）を割り当てて、その１又は複数のＶＭの状態を停止状態から待機状態に予め遷移させる。また、ＶＭ制御部２０は、待機状態のＶＭのスナップショットを作成してストレージ２２に記憶させる。上限数が、テナント数や多重度の総数によって定められる場合も同様である。
【００９６】
ＶＭ制御部２０は、例えば、テナントＣから文字認識処理の要求を受け付けた場合、文字認識処理に関するテナントＣの固有の設定情報をストレージ２２から取得し、グループβに割り当てられて文字認識処理を実行するための機能が割り当てられたＶＭのスナップショットをストレージ２２から取得し、その設定情報とスナップショットを用いて、そのＶＭの状態を待機状態から起動状態に遷移させる。そのＶＭは、テナントＣの固有の設定情報を用いて文字認識処理を実行することになる。テナントＣから図面差分処理の要求を受け付けた場合や、テナントＤから図面差分処理や文字認識処理を受け付けた場合も同様である。
【００９７】
グループα，βに割り当てられていないＶＭの状態は停止状態に維持される。そのＶＭに処理を実行させる場合、ＶＭ制御部２０は、そのＶＭを起動させて処理を割り当てることになる。
【００９８】
変形例３によると、共通の処理を利用する複数のテナントを同一のグループに分類して、当該同一のグループにＶＭを予め割り当てることで、各テナントに待機状態の処理部を予め割り当てる場合と比べて、待機状態のＶＭの数を減らせる。
【００９９】
（変形例４）
ＶＭ制御部２０は、複数のテナントの間で、利用される処理が部分的に一致（共通）する場合、当該複数のテナントを同一のグループに分類し、同一のグループ毎に１又は複数のＶＭを割り当ててもよい。この場合、ＶＭ制御部２０は、各グループのＶＭに、部分的に一致（共通）する処理を実行するための機能（プログラム）を割り当てて、ＶＭの状態を停止状態から待機状態に予め遷移させる。
【０１００】
図４を参照して、変形例４について詳しく説明する。例えば、テナントＡ，Ｂはいずれも図面差分処理を利用し、テナントＣ，Ｄはいずれも図面差分処理と文字認識処理を利用するため、テナントＡ，Ｂ，Ｃ，Ｄはいずれも図面差分処理を利用する。つまり、テナントＡ，Ｂ，Ｃ，Ｄの間で、利用される処理が部分的に一致（共通）している。この場合、ＶＭ制御部２０は、テナントＡ，Ｂ，Ｃ，Ｄを同一のグループγに予め分類し、例えば、上限数のＶＭをグループγに割り当てる。上限数は、変形例３と同様に、例えば、共通処理の種類数に基づいて決定された数であってもよいし、同一のグループに含まれるテナントの数に基づいて決定された数であってもよいし、各テナントの多重度の総数に基づいて決定された数であってもよい。
【０１０１】
例えば、共通処理の種類数以上の数が上限数として用いられるものとする。グループγの共通処理は図面差分処理であるため、共通処理の種類数は１つである。従って、ＶＭ制御部２０は、１又は複数のＶＭをグループγに割り当てる。ＶＭ制御部２０は、グループγに割り当てられた１又は複数のＶＭに、共通の処理（図面差分処理）を実行するためのプログラムをロードすることで、当該共通の処理（図面差分処理）を実行するための機能（プログラム）を割り当てて、その１又は複数のＶＭの状態を停止状態から待機状態に予め遷移させる。また、ＶＭ制御部２０は、待機状態のＶＭのスナップショットを作成してストレージ２２に記憶させる。
【０１０２】
ＶＭ制御部２０は、例えば、テナントＡから図面差分処理の要求を受け付けた場合、図面差分処理に関するテナントＡの固有の設定情報をストレージ２２から取得し、グループγに割り当てられて図面差分処理を実行するための機能が割り当てられたＶＭのスナップショットをストレージ２２から取得し、その設定情報とスナップショットを用いて、そのＶＭの状態を待機状態から起動状態に遷移させる。そのＶＭは、テナントＡの固有の設定情報を用いて図面差分処理を実行することになる。テナントＢ，Ｃ，Ｄから図面差分処理の要求を受け付けた場合も同様である。変形例３と同様に、各テナントから要求された処理が順番に実行されてもよいし、複数の処理が並列的に実行されてもよい。
【０１０３】
変形例３と同様に、グループγに割り当てられていないＶＭの状態は停止状態に維持される。そのＶＭに処理を実行させる場合、ＶＭ制御部２０は、そのＶＭを起動させて処理を割り当てることになる。
【０１０４】
また、ＶＭ制御部２０は、テナントＣやテナントＤから文字認識処理の要求を受け付けた場合、グループγに割り当てられていないＶＭを起動させて文字認識処理を割り当てる。なお、テナントＣ，Ｄは、共通の文字認識処理を利用することができるため、変形例３と同様に、テナントＣ，Ｄは、グループγとは別に、グループβに割り当てられてもよい。この場合、ＶＭ制御部２０は、グループβにＶＭを割り当てて、そのＶＭの状態を停止状態から待機状態に遷移させる。ＶＭ制御部２０は、テナントＣやテナントＤから文字認識処理の要求を受け付けた場合、グループβに割り当てられた待機状態のＶＭを起動させて文字認識処理を実行させる。
【０１０５】
なお、変形例３，４において、ＶＭ制御部２０は、グループに割り当てられた待機状態のＶＭを起動させて処理を実行させる場合、そのグループに待機状態のＶＭを補充してもよい。つまり、ＶＭ制御部２０は、停止状態のＶＭをそのグループに割り当て、そのグループの共通処理を実行するためのプログラムをロードすることで、その共通処理を実行するための機能（プログラム）をその停止状態のＶＭに割り当てて、そのＶＭの状態を停止状態から起動状態に遷移させてもよい。これにより、同一のグループに分類された待機状態のＶＭの数が一定に維持される。ＶＭ制御部２０は、処理の実行が完了したＶＭの状態を起動状態から待機状態に遷移させる。このとき、同一のグループに分類された待機状態のＶＭの数が一定に維持されるように、ＶＭ制御部２０は、余剰となった待機状態のＶＭの状態を停止状態に遷移させてもよい（スケールイン）。もちろん、余剰となった待機状態のＶＭがグループに含まれる場合であっても、ＶＭ制御部２０は、その余剰となった待機状態のＶＭの状態を待機状態に維持してもよい。
【０１０６】
（変形例５）
ＶＭ制御部２０は、ＶＭ群１４の中の少なくとも１つのＶＭの状態を停止状態から待機状態に遷移させ、ユーザ振り分け部１６は、優先度の高いテナントからの処理要求を優先度の低いテナントからの処理要求よりも優先的に待機状態のＶＭに割り当ててもよい。例えば、ユーザ振り分け部１６は、優先度の高いテナントからの処理要求を待機状態のＶＭに割り当て、優先度の低いテナントからの処理要求を停止状態のＶＭに割り当ててもよい。より詳しく説明すると、ユーザ振り分け部１６は、優先度が予め定められた順位以上となるテナントからの処理要求を待機状態のＶＭに割り当て、優先度が予め定められた順位未満となるテナントからの処理要求を停止状態のＶＭに割り当ててもよい。別の例として、ユーザ振り分け部１６、すべての待機状態のＶＭに処理要求が割り当てられるまで、優先度の高いテナントからの処理要求から順番に待機状態のＶＭに割り当てていき、すべての待機状態のＶＭに処理要求が割り当てられた場合、それ以降の優先度のテナントからの処理要求を停止状態のＶＭに割り当ててもよい。
【０１０７】
各テナントの優先度は、例えば、各テナントの多重度（利用可能な処理の数）に基づいて定められてもよいし、情報処理システム１０が提供するサービスの利用に対する各テナントの支払金額に基づいて定められてもよい。例えば、多重度の高いテナントほど（利用可能な処理の数が多いテナントほど）、優先度が高くなる。多重度は、上述したように、サービスの利用契約等によって定められる。また、支払金額の多いテナントほど、優先度が高くなってもよい。
【０１０８】
以上のように、各テナントの優先度に応じて処理要求を待機状態のＶＭ又は停止状態のＶＭに割り当てることで、各テナントの個別的な事情を考慮して処理がＶＭに割り当てられる。
【０１０９】
変形例３，４に変形例５が適用されてもよい。例えば、図４に示されているグループαを例に挙げて説明する。テナントＡの多重度は「１００」であり、テナントＢの多重度は「１」であるとする。この場合、テナントＡはテナントＢよりも優先度が高いため、ＶＭ制御部２０は、テナントＡからの処理要求をテナントＢの処理要求よりも優先して待機状態のＶＭに割り当てる。
【０１１０】
（変形例６）
ＶＭ制御部２０は、負荷の大きい処理を実行するための機能を負荷の小さい処理を実行するための機能よりも優先的にＶＭに予め割り当てて、そのＶＭの状態を停止状態から待機状態に予め遷移させてもよい。例えば、ＶＭ制御部２０は、負荷の大きい処理を実行するための機能をＶＭに予め割り当てて、そのＶＭの状態を停止状態から待機状態に予め遷移させ、負荷の小さい処理を実行するための機能を予めＶＭに割り当てなくてもよい。もちろん、負荷の大きい処理を実行するための機能をＶＭに予め割り当てた場合において、機能が予め割り当てられていないＶＭが存在する場合、ＶＭ制御部２０は、そのＶＭに負荷の小さい処理を実行するための機能を割り当ててもよい。上述した実施形態と同様に、ＶＭ制御部２０は、待機状態のＶＭのスナップショットを作成してストレージ２２に記憶させておく。
【０１１１】
負荷の大きい処理は、例えば画像処理を含む処理であり、負荷の小さい処理は、例えば、ユーザログイン処理を含む処理である。
【０１１２】
ＶＭ制御部２０は、負荷の大きい処理の要求をテナントから受け付けた場合、その処理を実行するための機能が割り当てられた待機状態のＶＭのスナップショットと、そのテナントの固有の設定情報と、を用いて、そのＶＭの状態を待機状態から起動状態に遷移させ、そのＶＭに負荷の大きい処理を実行させる。ＶＭ制御部２０は、負荷の小さい処理の要求をテナントから受け付けた場合、その処理を実行するための機能を停止状態のＶＭに割り当て、そのテナントの固有の設定情報をそのＶＭに適用することで、そのＶＭの状態を停止状態から起動状態に遷移させ、そのＶＭに負荷の小さい処理を実行させる。
【０１１３】
通常、処理の負荷が大きくなるほど、処理を実行するためのプログラムをロードする時間が長くなるため、ＶＭを停止状態から起動させた場合、その処理を実行するＶＭを起動させるための時間が長くなる。例えば、画像処理を実行するためのプログラムをロードする時間は、通常、ユーザログイン処理を実行するためのプログラムをロードする時間よりも長いため、画像処理を実行するＶＭを起動させる時間は、ユーザログイン処理を実行するＶＭを起動させる時間よりも長くなる。変形例６によると、負荷の大きい処理を実行するためのプログラムが予めロードされてＶＭに割り当てられ、そのＶＭの状態が停止状態から待機状態に予め遷移される。それ故、負荷の大きい処理の要求を受け付けてからＶＭを起動し始める場合と比べて、負荷の大きい処理の実行開始が早くなる。
【０１１４】
待機状態のＶＭの数に制限がある場合等のように、すべてのＶＭの状態を停止状態から待機状態に予め遷移させることができない場合や、利用される処理の数よりもＶＭの数の方が少ない場合等のように、すべての機能をＶＭに予め割り当てることができない場合がある。変形例６によると、このような場合において、負荷の大きい処理を実行するための機能が負荷の小さい処理を実行するための機能よりも優先的にＶＭに予め割り当てられて、そのＶＭの状態が停止状態から待機状態に予め遷移するので、負荷の大きさに関わらず機能をＶＭに予め割り当てる場合や、負荷の小さい処理を実行するための機能を負荷の大きい処理を実行するための機能よりも優先的にＶＭに予め割り当てる場合と比較して、情報処理システム１０の全体の処理の効率が向上し得る。つまり、負荷の大きい処理を実行するための機能をＶＭに割り当てて、そのＶＭを停止状態から待機状態に遷移させるのに要する時間は、負荷の小さい処理を実行するための機能をＶＭに割り当てて、そのＶＭを停止状態から待機状態に遷移させるのに要する時間よりも長くなる。変形例６では、その長い時間が削減されるので、情報処理システム１０の全体の処理の効率が向上する。
【０１１５】
上述した実施形態及び変形例１から変形例６においては、ホスティングサービス（Hosting Service）が適用されてもよいし、クラウドサービス（Cloud Service）が適用されてもよいし、ホスティングサービスとクラウドサービスの両方が適用されてもよい。つまり、ＶＭは、ホスティングサービスに含まれていてもよいし、クラウドサービスに含まれていてもよいし、ホスティングサービスとクラウドサービスの両方に含まれていてもよい。
【０１１６】
上記の情報処理システム１０は、一例としてハードウェアとソフトウェアとの協働により実現される。具体的には、情報処理システム１０は、図示しないＣＰＵ等の１又は複数のプロセッサを備えている。当該１又は複数のプロセッサが、図示しない記憶装置に記憶されたプログラムを読み出して実行することにより、情報処理システム１０の各部の機能が実現される。上記プログラムは、ＣＤやＤＶＤ等の記録媒体を経由して、又は、ネットワーク等の通信経路を経由して、記憶装置に記憶される。別の例として、情報処理システム１０の各部は、例えばプロセッサや電子回路やＡＳＩＣ（Application Specific Integrated Circuit）等のハードウェア資源により実現されてもよい。その実現においてメモリ等のデバイスが利用されてもよい。更に別の例として、情報処理システム１０の各部は、ＤＳＰ（Digital Signal Processor）やＦＰＧＡ（Field Programmable Gate Array）等によって実現されてもよい。
【符号の説明】
【０１１７】
１０  情報処理システム、１２  端末装置、１４  ＶＭ群、１６  ユーザ振り分け部、１８  テナント管理部、２０  ＶＭ制御部、２２  ストレージ、２４  ＶＭ管理情報、２６  スナップショット管理情報、２８  テナント管理情報、３０  パラメータ管理情報、３２  ジョブ管理情報。
【図１】
2018129003.tif 000003
【図２】
2018129003.tif 000004
【図３】
2018129003.tif 000005
【図４】
2018129003.tif 000006