(57)【要約】【課題】仮想マシンが不足または過剰状態にある期間を短縮する。【解決手段】情報処理装置１０は、監視部１１、制御部１２および記憶部１３を備える。監視部１１は、管理対象のシステムの負荷をモニタする。制御部１２は、システムに対して過去に起動指示を行い、かつ、起動処理中である仮想マシンの状況、および、負荷のモニタ結果に応じて、システムにおける仮想マシンの起動指示と起動処理中である仮想マシンの停止指示を行う。【選択図】図１
2015194958.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
管理対象のシステムの負荷をモニタし、
前記システムに対して過去に起動指示を行い、かつ、起動処理中である仮想マシンの状況、および、前記負荷のモニタ結果に応じて、前記システムにおける仮想マシンの起動指示と前記起動処理中である仮想マシンの停止指示を行う、
処理を実行させるプログラム。
【請求項２】
前記管理対象のシステムのリソースを減少させる指示を行う場合、起動処理中の仮想マシンがある場合は、起動処理中の仮想マシンの停止を指示し、起動処理中の仮想マシンがない場合は、稼働している仮想マシンの停止を指示することを特徴とする請求項１記載のプログラム。
【請求項３】
仮想マシンのスケールインの指示を行う際には、起動処理中の仮想マシンが複数ある場合は、起動を開始した時間が遅い仮想マシンから停止を指示することを特徴とする請求項２記載のプログラム。
【請求項４】
仮想マシンのスケールアウトまたはスケールインの指示では、前記負荷の増加時の変化量が第１の閾値を超える場合は、前記スケールアウトの指示を行い、前記負荷の減少時の変化量が第２の閾値を超える場合は、前記スケールインの指示を行うことを特徴とする請求項１乃至３のいずれかに記載のプログラム。
【請求項５】
前記スケールアウトまたは前記スケールインの指示では、現在の実測負荷と、目標負荷との差分に第１の係数を乗算した第１の差分値と、現在の実測負荷と、所定時間前の実測負荷との差分に第２の係数を乗算した第２の差分値とを求めて、第１の差分値と第２の差分値との和を算出し、前記和が正数の場合は、前記正数の値をスケールアウトする仮想マシンの台数とし、前記和が負数の場合は、前記負数の値をスケールインする仮想マシンの台数とすることを特徴とする請求項４記載のプログラム。
【請求項６】
情報処理システムで稼働させる仮想マシン数を管理するスケール管理方法であって、
コンピュータが、
管理対象のシステムの負荷をモニタし、
前記システムに対して過去に起動指示を行い、かつ、起動処理中である仮想マシンの状況、および、前記負荷のモニタ結果に応じて、前記システムにおける仮想マシンの起動指示と前記起動処理中である仮想マシンの停止指示を行う、
スケール管理方法。
【請求項７】
情報処理システムで稼働させる仮想マシン数を管理する情報処理装置であって、
管理対象のシステムの負荷をモニタする監視部と、
前記システムに対して過去に起動指示を行い、かつ、起動処理中である仮想マシンの状況、および、前記負荷のモニタ結果に応じて、前記システムにおける仮想マシンの起動指示と前記起動処理中である仮想マシンの停止指示を行う制御部と、
を有する情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、情報処理装置、スケール管理方法およびプログラムに関する。
【背景技術】
【０００２】
近年、インターネットを用いて、コンピュータ処理等をネットワーク経由で利用するクラウドサービスが提供されている。
クラウドサービスを提供するクラウド環境では、大規模なデータセンタなどに多数のサーバが用意され、ネットワークを通じて、仮想マシンやソフトウェアまたはデータ保管領域などが利用できるシステムが構築されている。
【０００３】
また、このようなシステムでは、仮想マシンの増減を行うオートスケール機能が備えられる。これは、システムの処理量に応じて、システムにサーバを追加するスケールアウト、またはシステムからサーバを削除するスケールインを行うものである。スケールアウト・インというスケール制御を行うことで、サービス要求に応じたサーバリソースの設定が行われる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−０１５９５８号公報
【特許文献２】特開２００５−１４１６０５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
クラウド環境において、ユーザに対する課金は利用したリソースに応じて行われるため、実際にリソースが必要となった状況になるまでは、リソース割り当て量の変化は通常行われない。
【０００６】
一方、急激なアクセス数の増加等、将来値の予測に応じてリソースを割り当てる必要がある場合があるが、実際にリソースを割り当てると、実際の処理にリソースが利用されない場合であっても課金が発生する。
【０００７】
リソース割り当てに対応する計算機の起動に一定の時間が必要である場合、サービスに対する要求の変化徴候に応じてリソース割り当ての増減を行い、要求の増減に対応する必要がある。しかしながら、過去に行ったリソース割り当ての増減のための計算機の起動や停止指示がサービスのリソースとして反映されるまでは時間がかかり、かつ、課金と関連するため、機動的な対応を行うことが困難である。
【課題を解決するための手段】
【０００８】
１つの案では、情報処理システムで稼働させる仮想マシン数を管理するプログラムが提供される。このプログラムにもとづいてコンピュータが以下の処理を実行する。
コンピュータは、管理対象のシステムの負荷をモニタし、前記システムに対して過去に起動指示を行い、かつ、起動処理中である仮想マシンの状況、および、前記負荷のモニタ結果に応じて、前記システムにおける仮想マシンの起動指示と前記起動処理中である仮想マシンの停止指示を行う。
【発明の効果】
【０００９】
１態様によれば、仮想マシンが不足または過剰状態にある期間の短縮が可能になる。
【図面の簡単な説明】
【００１０】
【図１】情報処理装置の構成例を示す図である。
【図２】インスタンス数と平均レスポンス時間の推移を示す図である。
【図３】インスタンス数と平均レスポンス時間の推移を示す図である。
【図４】インスタンス数と平均レスポンス時間の推移を示す図である。
【図５】インスタンス情報テーブルを示す図である。
【図６】インスタンス情報テーブルを示す図である。
【図７】インスタンス数と平均レスポンス時間の推移を示す図である。
【図８】インスタンス情報テーブルを示す図である。
【図９】インスタンス数と平均レスポンス時間の推移を示す図である。
【図１０】インスタンス情報テーブルを示す図である。
【図１１】インスタンス情報テーブルを示す図である。
【図１２】スケール制御の流れを示す図である。
【図１３】スケール制御の動作を示すフローチャートである。
【図１４】インスタンス情報の取得動作を示すフローチャートである。
【図１５】レスポンス時間情報ＤＢのデータ構造の一例を示す図である。
【図１６】インスタンス情報ＤＢのデータ構造の一例を示す図である。
【図１７】インスタンス数算出処理を説明するための図である。
【図１８】インスタンス数算出処理を説明するための図である。
【図１９】情報処理装置に用いるコンピュータのハードウェアの一例を示す図である。
【発明を実施するための形態】
【００１１】
以下、本発明の実施の形態を図面を参照して説明する。
本実施の形態は、仮想マシンを用いたサービスを行う情報処理システムにおける仮想マシン数を管理する情報処理装置が提供される。この情報処理装置は、管理対象のシステムの負荷をモニタし、システムに対して過去に起動指示を行い、かつ、起動処理中である仮想マシンの状況、および、負荷のモニタ結果に応じて、管理対象システムにおける仮想マシンの起動指示と起動処理中である仮想マシンの停止指示を行う。
【００１２】
また、情報処理装置は、単位時間当たりの負荷の変化に応じて、仮想マシンのスケールアウトまたはスケールインを行う。スケールインの際には、停止する仮想マシンが、起動開始時期にもとづいて選択される。これにより、仮想マシンが不足または過剰状態にある期間の短縮が可能になる。
【００１３】
図１は情報処理装置の構成例を示す図である。情報処理装置１０は、監視部１１、制御部１２および記憶部１３を備える。
監視部１１は、情報処理システムの負荷を監視する。負荷は、例えばレスポンス時間やＣＰＵ（Central Processing Unit）使用率などにもとづいて判断される。なお、レスポンス時間とは、クライアントがシステムにサービス要求を行った際にレスポンスが返信されるまでに要する時間である。レスポンス時間が長くなれば、負荷が高くなったことを意味し、レスポンス時間が短くなれば、負荷が軽減されたことを意味する。以下、レスポンス時間を用いて負荷を監視するものとする。その場合、監視部１１は、仮想マシンがサービス要求を受けてからレスポンスを送信するまでのレスポンス時間を認識する。
【００１４】
制御部１２は、単位時間当たりの負荷の変化量が閾値を超える場合には、新たに仮想マシンを起動させるスケールアウト、または既存の仮想マシンの中から起動開始時期にもとづいて選択された仮想マシンを停止させるスケールインの指示を行う。例えば制御部１２は、レスポンス時間の変化量を閾値と比較し、閾値を超える場合には、仮想マシンの台数を増加するスケールアウト、または仮想マシンの台数を減少するスケールインを実施する。また、制御部１２は、仮想マシンの動作状態の管理等も行う。記憶部１３は、スケール制御に関連する情報を記憶する。
【００１５】
図１には、仮想マシン数とレスポンス時間の推移が示されている。横軸はクラウドサービスを提供するシステムのシステム稼働時間、左縦軸は平均レスポンス時間、右縦軸は稼働している仮想マシン数である。グラフＧ１（細実線）は仮想マシン数であり、グラフＧ２（太実線）はレスポンス時間である。
【００１６】
制御部１２は、レスポンス時間の変化量を検出する。この場合、時刻ｔ１１において、レスポンス時間の増加変化量が第１の閾値を超えたことを認識したとすると、制御部１２は、スケールアウトを実施して、例えば、稼働させる仮想マシン数をＮ１からＮ２へ増加させる。
【００１７】
また、時刻ｔ１２において、レスポンス時間の減少変化量が第２の閾値を超えたことを認識したとすると、制御部１２は、スケールインを実施して、例えば、稼働させる仮想マシン数をＮ２からＮ１へ減少させる。
【００１８】
ここで、従来のオートスケールでは、レスポンス時間が上限値に達するとスケールアウトを実施し、レスポンス時間が下限値に達するとスケールインを実施している。このため、仮想マシンの起動完了または停止完了に要する時間帯で、仮想マシンの不足状態または過剰状態が生じている。
【００１９】
これに対し、情報処理装置１０では、レスポンス時間の増化率および減少率に応じてスケールアウト・インを行う。これにより、レスポンス時間が上限値に達する前に早い段階からスケールアウトを行ってスケールアウト対象の仮想マシンに起動指示を与えることができるので、仮想マシンが不足状態になることを抑制することが可能になる。または、仮想マシンが不足状態になる時間帯を短縮化させることが可能になる。
【００２０】
また、レスポンス時間が下限値に達する前に早い段階からスケールインを行ってスケールイン対象の仮想マシンに停止指示を与えることができるので、仮想マシンが過剰状態になることを抑制することが可能になる。または、仮想マシンが過剰状態になる時間帯を短縮化させることが可能になる。なお、動作の詳細については図４以降で説明する。
【００２１】
次に本技術の詳細を説明する前に、解決すべき課題について詳しく説明する。最初に理想的なスケール制御について説明する。なお、以降では仮想マシンをインスタンスとも呼ぶ。
【００２２】
図２はインスタンス数と平均レスポンス時間の推移を示す図である。横軸はシステム稼働時間、左縦軸は平均レスポンス時間、右縦軸は稼働しているインスタンス数である。なお、平均レスポンス時間とは、システムに対してＭ個のサービス要求のユーザアクセスがあった場合、Ｍ個のアクセスそれぞれのレスポンス時間の合計をＭで割った値である。
【００２３】
グラフｇ１（細実線）は、インスタンス数を示し、稼働しているインスタンスの数を表している。グラフｇ２（太実線）は、平均レスポンス時間を示す。また、グラフｇ１と横軸とに囲まれる領域の斜線部分（面積）は、インスタンス数に応じて増減する費用を示している。
【００２４】
さらに、平均レスポンス時間には、許容範囲Ｈが設定されている。許容範囲Ｈは、下限時間である下限値Ｌと、上限時間である上限値Ｕとを有し、平均レスポンス時間が下限値Ｌから上限値Ｕの中に収まるように、スケール制御が行われる。以下、時刻ｔにおける動作について説明する。
【００２５】
〔ｔ０≦ｔ＜ｔａ〕稼働しているインスタンス数＝Ｎ１である。インスタンス数がＮ１のリソース状態において、平均レスポンス時間は、許容範囲Ｈを満たしながら徐々に上昇し始めている。
【００２６】
〔ｔ＝ｔａ〕稼働しているインスタンス数＝Ｎ２である。平均レスポンス時間が許容範囲Ｈの上限値Ｕに達している。現状のインスタンス数では処理能力が不足するということなので、スケールアウトが実施されて、インスタンス数がＮ１からＮ２へ増加している。
【００２７】
〔ｔａ＜ｔ＜ｔｂ〕稼働しているインスタンス数＝Ｎ２である。スケールアウトによってリソースが増加して処理能力が上がるため、レスポンス速度が速まり、平均レスポンス時間が徐々に下降している。
【００２８】
〔ｔ＝ｔｂ〕稼働しているインスタンス数＝Ｎ１である。平均レスポンス時間が許容範囲Ｈの下限値Ｌに達している。現状のインスタンス数では処理能力が過剰になるということなので、スケールインが実施されて、インスタンス数がＮ２からＮ１へ減少している。
【００２９】
〔ｔｂ＜ｔ〕稼働しているインスタンス数＝Ｎ１である。スケールインによってリソースが減少して処理能力が下がるため、レスポンス速度が遅くなり、平均レスポンス時間が徐々に上昇している。
【００３０】
ここで、インスタンス数が少ないと費用は安くなるが、平均レスポンス時間が上限を超えてしまう可能性が生じる。逆に、インスタンス数が多いと平均レスポンス時間は短くなるが、費用は高くなってしまい、また平均レスポンス時間が下限を超えてしまう可能性も生じる。
【００３１】
したがって、上記の図２に示すように、平均レスポンス時間が許容範囲Ｈを満たすように、スケールアウト・インを行って、インスタンス数を変化させるスケール制御を行う。これにより、サービス要求を満たす必要十分のリソースを適切な費用で使用することができる。
【００３２】
しかし、上記のスケール制御は、インスタンスの起動および停止に要する時間を考慮していない場合の理想的なスケール制御の状態を示している。
すなわち、スケールアウト対象になったインスタンスを起動するには、起動にかかる処理時間を要し、また、スケールイン対象になったインスタンスを停止するには、停止にかかる処理時間を要するが、図２のスケール制御では、これらの時間が考慮されていないものである。
【００３３】
したがって、実際のスケール制御では、スケールアウトに対してはインスタンスの起動処理時間が影響を与えることになり、スケールインに対してはインスタンスの停止処理時間が影響を与えることになる。
【００３４】
次に従来のスケール制御の課題について説明する。図３はインスタンス数と平均レスポンス時間の推移を示す図である。横軸はシステム稼働時間、左縦軸は平均レスポンス時間、右縦軸は稼働しているインスタンス数である。グラフｇ１はインスタンス数であり、グラフｇ２は平均レスポンス時間である。
【００３５】
なお、グラフｇ１と横軸とに囲まれる領域は、図２と同様に費用を示すが、図を簡略化するために、以降の説明では斜線の表記は省略する。以下、従来のスケール制御の時刻ｔにおける動作について説明する。
【００３６】
〔ｔ０≦ｔ＜ｔ１〕稼働しているインスタンス数＝Ｎ１である。インスタンス数がＮ１のリソース状態において、平均レスポンス時間は徐々に上昇している。
〔ｔ＝ｔ１〕稼働しているインスタンス数＝Ｎ１である。平均レスポンス時間が上限値Ｕに達する。このとき、スケールアウトが実施されるので、スケールアウトによって増加すべきインスタンスが起動処理を開始する。
【００３７】
〔ｔ１＜ｔ＜ｔ２〕稼働しているインスタンス数＝Ｎ１である。スケールアウトによって増加すべきインスタンスの起動処理中の時間帯ｔＡとなる。時間帯ｔＡでは、スケールアウトはまだ完了していないので、平均レスポンス時間は、上限値Ｕを上回って上昇し続ける。
【００３８】
〔ｔ＝ｔ２〕稼働しているインスタンス数＝Ｎ２である。スケールアウト対象のインスタンスが起動を完了し、インスタンス数がＮ１からＮ２となって、スケールアウトが完了する。平均レスポンス時間の上昇が停止する。
【００３９】
〔ｔ２＜ｔ＜ｔ３〕稼働しているインスタンス数＝Ｎ２である。スケールアウトが行われて、インスタンス数がＮ１からＮ２へ増加した状態である。したがって、レスポンス速度が速まり、インスタンス数がＮ２のリソース状態において、平均レスポンス時間が徐々に下降していく。
【００４０】
〔ｔ＝ｔ３〕稼働しているインスタンス数＝Ｎ２である。平均レスポンス時間は、下限値Ｌに達する。このとき、スケールインが実施されるので、スケールインによって減少すべきインスタンスの停止処理が開始される。
【００４１】
〔ｔ３＜ｔ＜ｔ４〕稼働しているインスタンス数＝Ｎ２である。スケールインによって減少すべきインスタンスの停止処理中の時間帯ｔＢとなる。時間帯ｔＢでは、スケールインはまだ完了していないので、平均レスポンス時間は下降し続け、下限値Ｌを下回って下降し続ける。
【００４２】
〔ｔ＝ｔ４〕稼働しているインスタンス数＝Ｎ１である。インスタンスが停止処理を完了し、インスタンス数がＮ２からＮ１となってスケールインが完了する。平均レスポンス時間の下降が停止する。
【００４３】
〔ｔ４＜ｔ〕稼働しているインスタンス数＝Ｎ１である。インスタンス数がＮ１のリソース状態において、平均レスポンス時間は徐々に上昇している。
このように、従来のスケール制御では、平均レスポンス時間が上限値Ｕに達したときにスケールアウトを実施し、平均レスポンス時間が下限値Ｌに達したときにスケールインを実施する。
【００４４】
しかし、平均レスポンス時間が上限値Ｕに達したときにスケールアウトを実施しても、スケールアウト対象となったインスタンスは、スケールアウト実施時点では起動は完了せず、起動が完了するまでには一定の起動処理時間を要する。
【００４５】
このため、起動開始から起動完了までの時間帯ｔＡでは、サービス要求に対してインスタンスリソースが不足状態となるため、処理負荷の高い状態が続いてしまい、処理性能が悪化することになる。
【００４６】
また、平均レスポンス時間が下限値Ｌに達したときにスケールインを実施しても、スケールイン対象となったインスタンスは、スケールイン実施時点では停止は完了せず、停止が完了するまでには、一定の停止処理時間を要する。
【００４７】
このため、停止開始から停止完了までの時間帯ｔＢでは、サービス要求は満たされたとしても、インスタンスリソースが過剰状態となるため、無駄な費用が発生することになる。
【００４８】
このように、従来では、平均レスポンス時間の上限値／下限値を設けて、平均レスポンス時間と上限値／下限値とを比較して、スケールアウト・インを行っている。このため、リソースの不足状態が続いて処理性能が悪化したり、またはリソースの過剰状態が続いて無駄な費用が発生したりしている。
【００４９】
本技術はこのような点に鑑みてなされたものであり、インスタンスリソースが不足／過剰状態になることを抑制し、また、サービス要求を満たしつつ費用を抑えた効率のよいスケール制御の実現を図るものである。
【００５０】
次に本技術のスケール制御について以降詳しく説明する。図４はインスタンス数と平均レスポンス時間の推移を示す図である。横軸はシステム稼働時間、左縦軸は平均レスポンス時間、右縦軸は稼働しているインスタンス数である。グラフｇ１はインスタンス数であり、グラフｇ２は平均レスポンス時間である。
【００５１】
また、図５はインスタンス情報テーブルを示す図である。インスタンス情報テーブルＴａは、インスタンス情報として、「インスタンスＩＤ（identification）」、「状態」および「状態遷移時刻」の項目を有する。
【００５２】
「インスタンスＩＤ」は、インスタンスの識別番号である。「状態」は、インスタンスの動作状態を表す。「状態遷移時刻」は、インスタンスの動作状態が遷移した時刻（年月日が含まれてもよい）を表す。なお、図６は、図４の横軸の各時刻におけるインスタンス情報を示している。以下、図４の各時刻における動作について説明する。
【００５３】
〔時刻１２：００〕稼働しているインスタンス数は１であり、インスタンスＩＤ＝Ｉ１のインスタンスＩ１が稼働している。インスタンスＩ１は、時刻１１：００：００に起動を完了して現在稼働中とする。
【００５４】
この場合、制御部１２は、テーブル生成処理として、「インスタンスＩＤ」＝Ｉ１、「状態」＝稼働状態、「状態遷移時刻」＝１１：００：００を登録したインスタンス情報テーブルＴａ１（１２：００）を生成する。
【００５５】
〔時刻１２：１０〕稼働しているインスタンス数は１であり、インスタンスＩ１が稼働している。平均レスポンス時間が増加しており、増加変化量（増加度合いの傾き）が第１の閾値（閾値ｔｈ１とする）を超えたとする。
【００５６】
このとき、制御部１２は、スケールアウトを実施するので、スケールアウトによって増加すべきインスタンスを起動させる。起動させるインスタンスのＩＤ＝Ｉ２とし、起動開始指示時刻を１２：１０：００とする。
【００５７】
制御部１２は、テーブル生成処理として、「インスタンスＩＤ」＝Ｉ２、「状態」＝起動処理中、「状態遷移時刻」＝１２：１０：００を含むレコードを登録したインスタンス情報テーブルＴａ１（１２：１０）を生成する。
【００５８】
〔時刻１２：２０〕稼働しているインスタンス数は２であり、インスタンスＩ１、Ｉ２が稼働している。インスタンスＩ２は、時刻１２：２０：００に起動が完了して、稼働中となる。
【００５９】
制御部１２は、テーブル生成処理として、「インスタンスＩＤ」＝Ｉ２のレコードの「状態」を稼働状態に変更し、「状態遷移時刻」を１２：２０：００に変更したインスタンス情報テーブルＴａ１（１２：２０）を生成する。
【００６０】
〔時刻１２：３０〕稼働しているインスタンス数は２であり、インスタンスＩ１、Ｉ２が稼働している。平均レスポンス時間が減少しており、減少変化量（減少度合いの傾き）が第２の閾値（閾値ｔｈ２とする）を超えたとする。
【００６１】
このとき、制御部１２は、スケールインを実施するので、スケールインによって減少させるべきインスタンスを停止させる。停止させるインスタンスのＩＤ＝Ｉ２とし、停止開始指示時刻を１２：３０：００とする。
【００６２】
制御部１２は、テーブル生成処理として、「インスタンスＩＤ」＝Ｉ２のレコードの「状態」を停止処理中に変更し、「状態遷移時刻」を１２：３０：００に変更したインスタンス情報テーブルＴａ１（１２：３０）を生成する。
【００６３】
〔時刻１２：４０〕稼働しているインスタンス数は１であり、インスタンスＩ１が稼働し、インスタンスＩ２は稼働を停止する。
制御部１２は、インスタンスＩ２の停止完了を認識すると、テーブル生成処理として、「インスタンスＩＤ」＝Ｉ２のレコードを削除したインスタンス情報テーブルＴａ１（１２：４０）を生成する。
【００６４】
以上説明したように、本技術のスケール制御では、平均レスポンス時間の増加変化量が、増加変化量の閾値ｔｈ１を超えたときにスケールアウトを実施する。これにより、インスタンスの起動開始から起動完了までに要する時間を見込んで、スケールアウト対象のインスタンスに起動開始指示を与えることができる。
【００６５】
このため、平均レスポンス時間が上限値を上回る前に、または平均レスポンス時間が上限値を上回ったとしても上回る時間帯を最小限に抑えて、スケールアウトを実施することが可能になる。よって、インスタンスリソースが不足状態となる時間帯を低減し、処理性能の悪化を抑制することが可能になる。
【００６６】
また、本技術のスケール制御では、平均レスポンス時間の減少変化量が減少変化量の閾値ｔｈ２を下回ったときにはスケールインを実施する。これにより、インスタンスの停止開始から停止完了までに要する時間を見込んで、スケールイン対象のインスタンスに停止開始指示を与えることができる。
【００６７】
このため、平均レスポンス時間が下限値を下回る前に、または平均レスポンス時間が下限値を下回ったとしても下回る時間帯を最小限に抑えて、スケールインを実施することが可能になる。よって、インスタンスリソースが過剰状態となる時間帯を低減し、無駄な費用の発生を抑制することが可能になる。
【００６８】
なお、スケールアウト・インを実施する場合に、どれだけの台数のインスタンスを増加・減少させるかのインスタンス数の算出処理については、図１７、図１８で後述する。
ここで、本技術では、上記のように、平均レスポンス時間の増加変化量が閾値ｔｈ１を超えたことを認識すると、スケールアウト対象のインスタンスの起動処理を開始する。
【００６９】
このとき、インスタンスの起動処理開始後に、例えば、短時間で平均レスポンス時間の変化量の増加が緩和して、起動を開始した当該インスタンスのリソースが過剰となってしまう可能性もありうる。
【００７０】
ただし、このような場合であっても、本技術では、平均レスポンス時間の減少変化量が所定値を超えれば、インスタンスの停止処理が働くので、リソースの過剰状態はすみやかに解消されることになる。
【００７１】
図７と図８は、このような状態を説明するための図である。図７はインスタンス数と平均レスポンス時間の推移を示す図である。横軸はシステム稼働時間、左縦軸は平均レスポンス時間、右縦軸は稼働しているインスタンス数である。グラフｇ１はインスタンス数であり、グラフｇ２は平均レスポンス時間である。
【００７２】
また、図８はインスタンス情報テーブルを示す図である。図７の横軸の各時刻におけるインスタンス情報を示している。以下、図７の各時刻における動作について説明する。
〔時刻１２：００〕稼働しているインスタンス数は１であり、インスタンスＩＤ＝Ｉ１であるインスタンスＩ１が稼働している。インスタンスＩ１は、時刻１１：００：００に起動を完了して現在稼働中とする。
【００７３】
制御部１２は、テーブル生成処理として、「インスタンスＩＤ」＝Ｉ１、「状態」＝稼働状態、「状態遷移時刻」＝１１：００：００を登録したインスタンス情報テーブルＴａ２（１２：００）を生成する。
【００７４】
〔時刻１２：１０〕稼働しているインスタンス数は１であり、インスタンスＩ１が稼働している。平均レスポンス時間が増加しており、増加変化量が閾値ｔｈ１を超えたとする。このとき、制御部１２は、スケールアウトを実施するので、スケールアウトによって増加すべきインスタンスを起動させる。起動させるインスタンスのＩＤ＝Ｉ２とし、起動開始指示時刻を１２：１０：００とする。
【００７５】
制御部１２は、テーブル生成処理として、「インスタンスＩＤ」＝Ｉ２、「状態」＝起動処理中、「状態遷移時刻」＝１２：１０：００を含むレコードを登録したインスタンス情報テーブルＴａ２（１２：１０）を生成する。
【００７６】
〔時刻１２：１４〕稼働しているインスタンス数は１であり、インスタンスＩ１が稼働している。制御部１２は、スケールアウトを実施しようとして、インスタンスＩ２の起動を指示したが、インスタンスＩ２の起動が完了する前に、平均レスポンス時間の増加の傾きが小さくなることを認識したとする。
【００７７】
すなわち、インスタンスＩ２の起動が完了する前に、平均レスポンス時間の減少変化量が閾値ｔｈ２を超えたとする。
この場合、制御部１２は、起動指示を一旦出したインスタンスＩ２に対して、停止指示を与える。停止指示を受けたインスタンスＩ２は、停止処理を実行する。
【００７８】
制御部１２は、テーブル生成処理として、「インスタンスＩＤ」＝Ｉ２のレコードの「状態」を停止処理中に変更し、「時刻」を１２：１４：００に変更したインスタンス情報テーブルＴａ２（１２：１４）を生成する。
【００７９】
〔時刻１２：２０〕稼働しているインスタンス数は１であり、インスタンスＩ１が稼働している。インスタンスＩ２は、稼働を停止し、制御部１２は、時刻１２：２０：００にインスタンスＩ２の停止完了を認識したとする。
【００８０】
制御部１２は、テーブル生成処理として、「インスタンスＩＤ」＝Ｉ２のレコードを削除したインスタンス情報テーブルＴａ２（１２：２０）を生成する。
以上説明したように、起動処理を開始したスケールアウト対象のインスタンスが過剰リソースとなってしまう場合があっても、平均レスポンス時間の減少変化量にもとづいて、インスタンスの停止処理が働くので、リソースの過剰状態はすみやかに解消することが可能になる。
【００８１】
なお、起動処理中のインスタンスがあるにもかかわらず、すでに起動完了済みのインスタンスを停止すると、当該インスタンスで実行されている処理が中断してしまうため、停止処理時は、起動処理中のインスタンスから停止していくことになる。
【００８２】
次にインスタンスリソースの中で、どのインスタンスに対して停止指示を与えるかについて図９〜図１１を用いて説明する。図９はインスタンス数と平均レスポンス時間の推移を示す図である。横軸はシステム稼働時間、左縦軸は平均レスポンス時間、右縦軸は稼働しているインスタンス数である。グラフｇ１はインスタンス数であり、グラフｇ２は平均レスポンス時間である。
【００８３】
また、図１０、図１１はインスタンス情報テーブルを示す図である。図９の横軸の各時刻におけるインスタンス情報を示している。以下、図９の各時刻における動作について説明する。
【００８４】
〔時刻１２：００〕稼働しているインスタンス数は２であり、インスタンスＩＤ＝Ｉ１であるインスタンスＩ１と、インスタンスＩＤ＝Ｉ２であるインスタンスＩ２とが稼働している。
【００８５】
インスタンスＩ１は、時刻１０：００：００に起動を完了して現在稼働中であり、インスタンスＩ２は、時刻１１：００：００に起動を完了して現在稼働中であるとする。
制御部１２は、テーブル生成処理として、「インスタンスＩＤ」＝Ｉ１、「状態」＝稼働状態、「状態遷移時刻」＝１０：００：００を含むレコードと、「インスタンスＩＤ」＝Ｉ２、「状態」＝稼働状態、「状態遷移時刻」＝１１：００：００を含むレコードとを有するインスタンス情報テーブルＴａ３（１２：００）を生成する。
【００８６】
〔時刻１２：１０〕稼働しているインスタンス数は２であり、インスタンスＩ１、Ｉ２が稼働している。平均レスポンス時間が増加しており、増加変化量が閾値ｔｈ１を超えたとする。
【００８７】
このとき、制御部１２は、スケールアウトを実施するので、スケールアウトによって増加すべきインスタンスを起動させる。起動させるインスタンスのＩＤ＝Ｉ３とし、起動開始指示時刻を１２：１０：００とする。
【００８８】
制御部１２は、テーブル生成処理として、「インスタンスＩＤ」＝Ｉ３、「状態」＝起動処理中、「状態遷移時刻」＝１２：１０：００を含むレコードをあらたに登録したインスタンス情報テーブルＴａ３（１２：１０）を生成する。
【００８９】
〔時刻１２：１４〕稼働しているインスタンス数は２であり、インスタンスＩ１、Ｉ２が稼働している。時刻１２：１４において、増加変化量が再び閾値ｔｈ２を超えたとする。
【００９０】
このとき、制御部１２は、スケールアウトを実施してさらにインスタンスを増加させるので、スケールアウトによって増加すべきインスタンスを起動させる。起動させるインスタンスのＩＤ＝Ｉ４とし、起動開始指示時刻を１２：１４：００とする。
【００９１】
制御部１２は、テーブル生成処理として、「インスタンスＩＤ」＝Ｉ４、「状態」＝起動処理中、「状態遷移時刻」＝１２：１４：００を含むレコードをあらたに登録したインスタンス情報テーブルＴａ３（１２：１４）を生成する。
【００９２】
〔時刻１２：２０〕稼働しているインスタンス数は２であり、インスタンスＩ１、Ｉ２が稼働している。インスタンスＩ３、Ｉ４は、起動処理中である。
〔時刻１２：３０〕稼働しているインスタンス数は２であり、インスタンスＩ１、Ｉ２が稼働している。インスタンスＩ３、Ｉ３は、起動処理中である。平均レスポンス時間が減少しており、減少変化量が閾値ｔｈ２を超えたとする。このとき、制御部１２は、スケールインを実施するので、スケールインによって減少すべきインスタンスを停止させる。停止させるインスタンスは、起動を開始した時間が最も遅いインスタンスＩ４とし、停止開始指示時刻を１２：３０：００とする。
【００９３】
制御部１２は、テーブル生成処理として、「インスタンスＩＤ」＝Ｉ４のレコードの「状態」を停止処理中に変更し、「状態遷移時刻」を１２：３０：００に変更したインスタンス情報テーブルＴａ３（１２：３０）を生成する。
【００９４】
〔時刻１２：４０〕稼働しているインスタンス数は３であり、インスタンスＩ１、Ｉ２、Ｉ３が稼働している。インスタンスＩ３は、時刻１２：３８：００に起動を完了したとする。また、インスタンスＩ４は、時刻１２：４０：００に停止完了したとする。
【００９５】
制御部１２は、テーブル生成処理として、「インスタンスＩＤ」＝Ｉ３のレコードの「状態」を稼働状態に変更し、「状態遷移時刻」を１２：３８：００に変更し、さらに、インスタンスＩＤ＝Ｉ４のレコードを削除したインスタンス情報テーブルＴａ３（１２：４０）を生成する。
【００９６】
このように、停止指示を行うインスタンスの選択は、サービスへの影響を考慮して、起動処理中のインスタンスがあれば、起動処理中のインスタンスを選択する。また、起動処理中のインスタンスが複数ある場合は、起動を開始した時間が遅い、すなわち、直近に起動したインスタンスから順に停止させる。
【００９７】
また、起動処理中の仮想マシンがない場合は、稼働を開始した時間が遅い、すなわち、直近に稼働したインスタンスから順に停止させる。これにより、インスタンスを停止する際に、サービス断の発生を防止することが可能になる。
【００９８】
次にスケール制御の全体の流れについて説明する。図１２はスケール制御の流れを示す図である。情報処理システム１は、クライアント２、ロードバランサ３、サービス提供インスタンス群４、レスポンス時間情報取得部５、レスポンス時間情報ＤＢ（Data Base）６、インスタンス情報ＤＢ７、インスタンスＡ、Ｂおよびクラウド環境管理ＡＰＩ（Application Programming Interface）８を備える。
【００９９】
インスタンスＡは、インスタンス数算出部２１とスケール制御部２２を備える。インスタンスＢは、インスタンス情報取得部２３を備える。なお、インスタンス数算出部２１、スケール制御部２２およびインスタンス情報取得部２３は、１つのインスタンスに含まれていてもよい。
【０１００】
ここで、インスタンス数算出部２１、スケール制御部２２およびインスタンス情報取得部２３は、図１の制御部１２の機能に含まれる。また、レスポンス時間情報取得部５は、図１の監視部１１の機能に含まれる。さらに、レスポンス時間情報ＤＢ６とインスタンス情報ＤＢ７は、図１の記憶部１３の機能に含まれる。
【０１０１】
〔Ｓ１〕ロードバランサ３は、クライアント２から送信されたサービス要求を受信する。
〔Ｓ２〕ロードバランサ３は、サービス要求に対して該当のサービスを提供するインスタンスを、複数のインスタンスを含むサービス提供インスタンス群４の中から選定する。この場合、特定のインスタンスに負荷が偏重しないようにインスタンスが選定される。
【０１０２】
〔Ｓ３〕ロードバランサ３によって選定されたインスタンスは、サービス要求に対する処理を実行し、サービス要求を出したクライアントに対してレスポンスを送信する。
〔Ｓ４〕レスポンス時間情報取得部５は、インスタンスがどれぐらいの時間を要してレスポンスを送信したかに関するレスポンス時間情報を取得する。
【０１０３】
〔Ｓ５〕レスポンス時間情報取得部５は、レスポンス時間情報をレスポンス時間情報ＤＢ６に格納する。
〔Ｓ６〕インスタンス情報取得部２３は、クラウド環境管理ＡＰＩ８を介して、クラウド環境内のインスタンスに関するインスタンス情報を取得する。
【０１０４】
〔Ｓ７〕インスタンス情報ＤＢ７は、インスタンス情報を格納する。
〔Ｓ８〕インスタンス数算出部２１は、レスポンス時間情報とインスタンス情報にもとづいて、スケール制御を行うべきインスタンス数を算出する。
【０１０５】
〔Ｓ９〕スケール制御部２２は、クラウド環境管理ＡＰＩ８を通じて、インスタンス数の算出結果にもとづいて、スケール制御を行う。
次にフローチャートを用いてスケール制御について説明する。図１３はスケール制御の動作を示すフローチャートである。
【０１０６】
〔Ｓ１１〕インスタンス数算出部２１は、レスポンス時間情報ＤＢ６にアクセスする。
〔Ｓ１２〕インスタンス数算出部２１は、レスポンス時間情報を取得する。
〔Ｓ１３〕インスタンス数算出部２１は、インスタンス情報ＤＢ７にアクセスする。
【０１０７】
〔Ｓ１４〕インスタンス数算出部２１は、インスタンス情報を取得する。
〔Ｓ１５〕インスタンス数算出部２１は、インスタンス数を算出する。
〔Ｓ１６〕スケール制御部２２は、スケールアウト・インを実行しない場合は終了する。スケールアウトを実施する場合は、ステップＳ１７へ行き、スケールインを実施する場合は、ステップＳ１９へ行く。
【０１０８】
〔Ｓ１７〕スケール制御部２２は、スケールアウト対象のインスタンスの起動指示をクラウド環境管理ＡＰＩ８へ送信する。
〔Ｓ１８〕クラウド環境管理ＡＰＩ８は、インスタンスの起動指示を受ける。スケール制御部２２から発信された起動指示は、クラウド環境管理ＡＰＩ８を通じて、スケールアウト対象のインスタンスに送信される。
【０１０９】
〔Ｓ１９〕スケール制御部２２は、スケールイン対象のインスタンスの停止指示をクラウド環境管理ＡＰＩ８へ送信する。なお、上述したように、起動処理中のインスタンスがある場合は、起動を開始した時間が最も遅い、最近起動したインスタンスに停止指示を出す。また、起動処理中のインスタンスがない場合は、稼働を開始した時間が最も遅い、最近稼働したインスタンスに停止指示を出す。
【０１１０】
〔Ｓ２０〕クラウド環境管理ＡＰＩ８は、インスタンスの停止指示を受ける。スケール制御部２２から発信された停止指示は、クラウド環境管理ＡＰＩ８を通じて、スケールイン対象のインスタンスに送信される。
【０１１１】
図１４はインスタンス情報の取得動作を示すフローチャートである。
〔Ｓ３１〕インスタンス情報取得部２３は、クラウド環境管理ＡＰＩ８にアクセスする。
【０１１２】
〔Ｓ３２〕クラウド環境管理ＡＰＩ８は、クラウド環境内のインスタンスからインスタンス情報を収集する。
〔Ｓ３３〕インスタンス情報取得部２３は、インスタンス情報を取得する。
【０１１３】
〔Ｓ３４〕インスタンス情報取得部２３は、インスタンス情報ＤＢ７にアクセスする。
〔Ｓ３５〕インスタンス情報取得部２３は、インスタンス情報ＤＢ７にインスタンス情報を格納する。
【０１１４】
次にレスポンス時間情報ＤＢ６とインスタンス情報ＤＢ７のデータ構造について説明する。図１５はレスポンス時間情報ＤＢのデータ構造の一例を示す図である。レスポンス時間情報ＤＢ６は、レスポンス時間情報テーブルＴｂを有する。レスポンス時間情報テーブルＴｂは、「インスタンスＩＤ」、「レスポンス時間計測開始日時」、「レスポンス時間計測終了日時」および「平均レスポンス時間」の項目を含む。
【０１１５】
「インスタンスＩＤ」は、インスタンスの識別番号である。「レスポンス時間計測開始日時」は、レスポンス時間の計測を開始した日時を表す。「レスポンス時間計測終了日時」は、レスポンス時間の計測を終了した日時を表す。「平均レスポンス時間」は、計測開始から終了までの各アクセスの平均レスポンス時間の総和をアクセス数で割った値である。
【０１１６】
図１６はインスタンス情報ＤＢのデータ構造の一例を示す図である。インスタンス情報ＤＢは、インスタンス情報テーブルＴａを有する。なお、インスタンス情報テーブルＴａについては、図５で上述したので説明は省略する。
【０１１７】
次にインスタンス数の算出処理について説明する。図１７、図１８はインスタンス数算出処理を説明するための図である。図１７の横軸はシステム稼働時間、左縦軸はレスポンス時間（ｍｓ）、右縦軸はインスタンス数である。
【０１１８】
ここで、レスポンス時間の目標値である目標レスポンス時間を２００ｍｓとする。また、インスタンス数算出式を以下のように定義する。
インスタンス数（台数）＝｛（時刻ＴNでの実測レスポンス時間−目標レスポンス時間）・Ｋ１｝＋｛（時刻ＴNでの実測レスポンス時間−時刻Ｔ(N-1)での実測レスポンス時間）・Ｋ２｝          ・・・（１）
式（１）中のＫ１、Ｋ２は係数である。ここでは、Ｋ１＝１／１００、Ｋ２＝１／４００とする。また、インスタンス数は、四捨五入する。さらに、インスタンス数が正数の場合は、スケールアウトが実施され、インスタンス数が負数の場合は、スケールインが実施される。
【０１１９】
一方、式（１）の｛（時刻ＴNでの実測レスポンス時間−目標レスポンス時間）・Ｋ１｝は、レスポンス時間の実測値と目標値との差分にもとづいて、スケール数を算出する項である（項＃１とする）。
【０１２０】
さらに、式（１）の｛（時刻ＴNでの実測レスポンス時間−時刻Ｔ(N-1)での実測レスポンス時間）・Ｋ２｝は、レスポンス時間の実測値の変化にもとづいて、スケール数を算出する項である（項＃２とする）。以下、図１７に示す時刻Ｔ０〜Ｔ３における動作について説明する。
【０１２１】
〔Ｔ０〕実測レスポンス時間＝２００ｍｓであり、稼働インスタンス数＝１である。実測レスポンス時間が目標レスポンス時間と同じである（スケールアウト・インは実施されない）。
【０１２２】
〔Ｔ１〕実測レスポンス時間＝６００ｍｓであり、稼働インスタンス数＝１である。実測レスポンス時間が目標レスポンス時間を超えている。この場合、時刻Ｔ１での実測レスポンス時間＝６００ｍｓ、目標レスポンス時間＝２００ｍｓ、前回時刻Ｔ０での実測レスポンス時間＝２００ｍｓである。
【０１２３】
したがって、式（１）の項＃１は、（６００−２００）／１００＝４となる。また、式（１）の項＃２は、（６００−２００）／４００＝１となる。よって、インスタンス数＝４＋１＝５であり、５台のインスタンスをスケールアウトすることを決定する。
【０１２４】
〔Ｔ２〕実測レスポンス時間＝３００ｍｓであり、稼働インスタンス数＝６である。実測レスポンス時間が目標レスポンス時間を超えている。この場合、時刻Ｔ２での実測レスポンス時間＝３００ｍｓ、目標レスポンス時間＝２００ｍｓ、前回時刻Ｔ１での実測レスポンス時間＝６００ｍｓである。
【０１２５】
したがって、式（１）の項＃１は、（３００−２００）／１００＝１となる。また、式（１）の項＃２は、（３００−６００）／４００＝−０．７５となる。よって、インスタンス数＝１＋（−０．７５）＝０．２５となるが、四捨五入で０となるので、時刻Ｔ２において、スケール制御は実施されない。
【０１２６】
〔Ｔ３〕実測レスポンス時間＝１００ｍｓであり、稼働インスタンス数＝６である。実測レスポンス時間が目標レスポンス時間を下回る。この場合、時刻Ｔ３での実測レスポンス時間＝１００ｍｓ、目標レスポンス時間＝２００ｍｓ、前回時刻Ｔ２での実測レスポンス時間＝３００ｍｓである。
【０１２７】
したがって、式（１）の項＃１は、（１００−２００）／１００＝−１となる。また、式（１）の項＃２は、（１００−３００）／４００＝−０．５となる。よって、インスタンス数＝（−１）＋（−０．５）＝−１．５であり、四捨五入して２台のインスタンスがスケールインされることになる。
【０１２８】
このように、式（１）を用いてインスタンス数を算出することにより、スケールアウト・インすべきインスタンスの数を効率よく求めることが可能になる。その結果、インスタンスが不足したり過剰であったりする期間が短縮され、システムの運用効率が向上する。
【０１２９】
またクラウドコンピューティングによりサービスを利用しているユーザは、稼働しているインスタンス数に応じて課金される場合がある。このような場合にインスタンスが不足したり過剰であったりする期間が短縮されれば、ユーザに対する過剰な課金が抑止される。また起動中のインスタンスについて、起動完了前に不要と判断されれば、そのインスタンスが停止される。そのため性能不足が予測できた場合、実際に性能不足が発生する前にインスタンスの起動を開始し、性能不足が発生しないことが分かったら、起動処理を停止させることができる。その結果、課金を抑止するためにインスタンスの起動開始を遅らせる理由がなくなり、インスタンスの起動開始の遅延によるインスタンスに不足が生じることが抑止される。
【０１３０】
次に本技術をコンピュータによって実現する場合について説明する。上記に示した処理機能は、コンピュータによって実現可能である。例えば、情報処理システム１は、１以上のコンピュータによって構成される。そして情報処理システム１を構成するコンピュータの１つで、インスタンス数算出部２１とスケール制御部２２との機能を実現できる。図１９は情報処理装置に用いるコンピュータのハードウェアの一例を示す図である。
【０１３１】
情報処理装置１０内のコンピュータ１００は、ＣＰＵ１０１によって装置全体が制御されている。ＣＰＵ１０１には、バス１０８を介してＲＡＭ（Random Access Memory）１０２と複数の周辺機器が接続されている。
【０１３２】
ＲＡＭ１０２は、コンピュータ１００の主記憶装置として使用される。ＲＡＭ１０２には、ＣＰＵ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、ＣＰＵ１０１による処理に必要な各種データが格納される。
【０１３３】
バス１０８に接続されている周辺機器としては、ＨＤＤ（Hard Disk Drive）１０３、グラフィック処理装置１０４、入力インタフェース１０５、光学ドライブ装置１０６、および通信インタフェース１０７がある。
【０１３４】
ＨＤＤ１０３は、内蔵したディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。ＨＤＤ１０３は、コンピュータ１００の二次記憶装置として使用される。ＨＤＤ１０３には、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。なお、二次記憶装置としては、フラッシュメモリなどの半導体記憶装置を使用することもできる。
【０１３５】
グラフィック処理装置１０４には、モニタ１０４ａが接続されている。グラフィック処理装置１０４は、ＣＰＵ１０１からの命令に従って、画像をモニタ１０４ａの画面に表示させる。モニタ１０４ａとしては、ＣＲＴ（Cathode Ray Tube）を用いた表示装置や液晶表示装置などがある。
【０１３６】
入力インタフェース１０５には、キーボード１０５ａとマウス１０５ｂとが接続されている。入力インタフェース１０５は、キーボード１０５ａやマウス１０５ｂから送られてくる信号をＣＰＵ１０１に送信する。なお、マウス１０５ｂは、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【０１３７】
光学ドライブ装置１０６は、レーザ光などを利用して、光ディスク１０６ａに記録されたデータの読み取りを行う。光ディスク１０６ａは、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク１０６ａには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（Rewritable）などがある。
【０１３８】
通信インタフェース１０７は、ネットワーク１１０に接続されている。通信インタフェース１０７は、ネットワーク１１０を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
【０１３９】
以上のようなハードウェア構成によって、情報処理装置１０の機能を実現することができる。また、コンピュータで本実施の形態の機能を実現する場合、情報処理装置１０が有する機能の処理内容を記述したプログラムが提供される。
【０１４０】
そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。
【０１４１】
コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ／ＲＷなどがある。光磁気記録媒体には、ＭＯ（Magneto Optical disk）などがある。なおプログラムを記録する記録媒体には、一時的な伝搬信号自体は含まれない。
【０１４２】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１４３】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０１４４】
また、上記の処理機能の少なくとも一部を、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＰＬＤ（Programmable Logic Device）などの電子回路で実現することもできる。
【０１４５】
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。
【符号の説明】
【０１４６】
１０  情報処理装置
１１  監視部
１２  制御部
１３  記憶部
Ｇ１  仮想マシン数
Ｇ２  レスポンス時間
ｔ１１  スケールアウト実施時刻
ｔ１２  スケールイン実施時刻
Ｎ１、Ｎ２  稼働している仮想マシン数
【図１】
2015194958.tif 000003
【図２】
2015194958.tif 000004
【図３】
2015194958.tif 000005
【図４】
2015194958.tif 000006
【図５】
2015194958.tif 000007
【図６】
2015194958.tif 000008
【図７】
2015194958.tif 000009
【図８】
2015194958.tif 000010
【図９】
2015194958.tif 000011
【図１０】
2015194958.tif 000012
【図１１】
2015194958.tif 000013
【図１２】
2015194958.tif 000014
【図１３】
2015194958.tif 000015
【図１４】
2015194958.tif 000016
【図１５】
2015194958.tif 000017
【図１６】
2015194958.tif 000018
【図１７】
2015194958.tif 000019
【図１８】
2015194958.tif 000020
【図１９】
2015194958.tif 000021