(57)【特許請求の範囲】
【請求項１】
企業コンピュータシステムに対するネットワークリソースのニーズを予想するコンピュータ実装される方法であって、前記企業コンピュータシステムは、前記企業コンピュータシステムのユーザのためのコンピュータリソースをホストする複数のネットワークサーバを備え、前記方法は、
コンピュータデータベースシステムによって、前記複数のネットワークサーバに対する性能データを含む多変量時系列（ＭＴＳ）を受信することであって、前記性能データが、一連の過去のサンプリング時間に対する前記複数のネットワークサーバに対する複数のｄ個の性能変数を含む、受信することと、
前記ｄ個の性能変数の各々が性能変数グループに属するように、前記コンピュータデータベースシステムと通信するプログラムされたコンピュータシステムによって、前記性能データの前記ｄ個の性能変数の各々を２つ以上の性能変数グループへとグループ化することであって、
前記プログラムされたコンピュータシステムによって、性能変数の各対間の依存度を表す相関行列を計算することと、
前記プログラムされたコンピュータシステムによって、前記依存度に基づいて、前記２つ以上の性能変数グループを決定することと、を含む、グループ化することと、
プログラムされたコンピュータシステムによって、１つ以上の未来の時間において前記ｄ個の性能変数に対する予測を計算することによって、前記企業コンピュータシステムの前記複数のネットワークサーバの未来のワークロードの予測を計算することであって、
前記２つ以上の性能変数グループに適用されるｋ最近傍探索アルゴリズムを用いて、前記性能データの基準状態を表す変数のベクトルに対するｋ個の最近傍を見つけることと、
前記ｋ個の最近傍の加重平均を計算することと、を含む、計算することと、
プログラムされたコンピュータシステムによって、前記計算された予測に基づいた前記１つ以上の未来の時間の各々において、前記企業コンピュータシステムの前記ユーザによるリソース要求に対処するための動作モードにあるために、前記企業コンピュータシステムによって必要とされる前記複数のネットワークサーバにおける推奨ネットワークサーバ数を決定することと、を含む、方法。
【請求項２】
前記複数のネットワークサーバに対する前記ｄ個の性能変数が、少なくとも以下の：
ＣＰＵ負荷と、
一次コンピュータメモリ使用と、
単位期間あたりの二次コンピュータストレージ入力／出力（ＩＯ）動作と、を示す変数を含む、請求項１に記載の方法。
【請求項３】
前記相関行列が、スピアマン（Ｓｐｅａｒｍａｎ）相関行列を含む、請求項１に記載の方法。
【請求項４】
前記プログラムされたコンピュータシステムによって、前記依存度に基づいて、前記２つ以上の性能変数グループを決定することは、アフィニティプロパゲーション（Ａｆｆｉｎｉｔｙ  Ｐｒｏｐａｇａｔｉｏｎ）クラスタリングアルゴリズムを用いて前記２つ以上の性能変数グループを決定することを含む、請求項１に記載の方法。
【請求項５】
前記性能データの前記基準状態を表す変数のベクトルに対する前記ｋ個の最近傍を見つけることが、
前記基準状態を表す変数のベクトルと、過去のサンプリング時間における前記性能データを表す複数のベクトルの各々との間の距離をそれぞれ計算することと、
前記基準状態を表す前記変数のベクトルまでの最小距離を有する過去のサンプリング時間に対するｋ個のベクトルを決定することと、を含む、請求項１に記載の方法。
【請求項６】
距離を計算することが、ユークリッド（Ｅｕｃｌｉｄｅａｎ）距離を計算することを含む、請求項５に記載の方法。
【請求項７】
前記１つ以上の未来の時間のうちの少なくとも１つについて、前記企業コンピュータシステムの前記ユーザによる前記リソース要求に対処するための動作モードにするために、前記企業コンピュータシステムによって必要とされる前記複数のネットワークサーバにおける前記推奨ネットワークサーバ数を示すデータを、前記プログラムされたコンピュータシステムによって送信することと、
前記プログラムされたコンピュータシステムと通信している１つ以上のブローカコンピュータシステムによって、前記複数のネットワークサーバにおける前記推奨ネットワークサーバ数が、前記少なくとも１つの未来の時間について前記ユーザによる前記リソース要求に対処するための動作モードにあるように、前記複数のネットワークサーバに命令することと、をさらに含む、請求項１に記載の方法。
【請求項８】
企業コンピュータシステムに対するネットワークリソースのニーズを予想するためのシステムであって、前記企業コンピュータシステムが、前記企業コンピュータシステムのユーザのためにコンピュータリソースをホストする複数のネットワークサーバを備え、前記システムが、
前記複数のネットワークサーバに対する性能データを含む多変量時系列（ＭＴＳ）を格納するために、前記複数のネットワークサーバと通信するコンピュータデータベースシステムであって、前記性能データが、一連の過去のサンプリング時間についての前記複数のネットワークサーバに対する複数のｄ個の性能変数を含む、コンピュータデータベースシステムと、
前記コンピュータデータベースシステムと通信するプログラムされたコンピュータシステムであって、前記プログラムされたコンピュータシステムが、
前記ｄ個の性能変数の各々が変数グループに属するように、前記性能データの前記ｄ個の性能変数の各々を２つ以上の性能変数グループにグループ化することであって、
前記プログラムされたコンピュータシステムによって、性能変数の各対間の依存度を表す相関行列を計算することと、
前記プログラムされたコンピュータシステムによって、前記依存度に基づいて、前記２つ以上の性能変数グループを決定することと、を含む、グループ化することと、
前記複数のネットワークサーバのワークロードを示す１つ以上の未来の時間における前記ｄ個の性能変数に対する予測を計算することであって、前記予測が、
前記２つ以上の性能変数グループに適用されるｋ最近傍探索アルゴリズムを用いて、前記性能データの基準状態を表す変数のベクトルに対してｋ個の最近傍を見つけることと、
前記ｋ個の最近傍の加重平均を計算することと、
によって計算される、予測を計算することと、
前記計算された予測に基づいて、前記１つ以上の未来の時間の各々において、前記企業コンピュータシステムの前記ユーザによるリソース要求に対処するための動作モードにするために、前記企業コンピュータシステムによって必要とされるネットワークサーバ数を決定することと、
によって、前記企業コンピュータシステムの前記複数のネットワークサーバの未来のワークロードを予測するようにプログラムされている、プログラムされたコンピュータシステムと、
前記プログラムされたコンピュータシステムおよび前記複数のネットワークサーバと通信する、少なくとも１つのブローカコンピュータシステムであって、
前記１つ以上の未来の時間のうちの少なくとも１つに対する、前記企業コンピュータシステムの前記ユーザによる前記リソース要求に対処するように、動作モードにするために、前記企業コンピュータシステムによって必要とされる前記複数のネットワークサーバにおける推奨ネットワークサーバ数を示すデータを、前記プログラムされたコンピュータシステムから受信するため、および
前記複数のネットワークサーバにおける前記推奨ネットワークサーバ数が、前記少なくとも１つの未来の時間に対する、前記ユーザによる前記リソース要求に対処するための動作モードになるように、前記複数のネットワークサーバに命令するための、ブローカコンピュータシステムと、を備える、システム。
【請求項９】
前記複数のネットワークサーバに対する前記ｄ個の性能変数が、少なくとも以下の：
ＣＰＵ負荷と、
一次コンピュータメモリ使用と、
単位時間当たりの二次コンピュータストレージ入力／出力（ＩＯ）操作と、示す変数を含む、請求項８に記載のシステム。
【請求項１０】
前記相関行列が、スピアマン相関行列を含む、請求項８に記載のシステム。
【請求項１１】
前記プログラムされたコンピュータシステムによって、前記依存度に基づいて、前記２つ以上の性能変数グループを決定することは、アフィニティプロパゲーションクラスタリングアルゴリズムを用いて前記２つ以上の性能変数グループを決定することを含む、請求項８に記載のシステム。
【請求項１２】
前記性能データの前記基準状態を表す変数のベクトルに対する前記ｋ個の最近傍を見つけることが、
前記基準状態を表す変数のベクトルと、過去のサンプリング時間における前記性能データを表す複数のベクトルの各々との間の距離をそれぞれ計算することと、
前記基準状態を表す前記変数のベクトルまでの最小距離を有する過去のサンプリング時間に対するｋ個のベクトルを決定することと、を含む、請求項８に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
今日、大規模なコンピュータインフラストラクチャを使用している企業は、任意の所与の日にその企業のアプリケーションの使用を想定している最大同時ユーザ数に容易に対応するように、仮想デスクトップ／アプリケーションインフラストラクチャの要件を超大規模にする傾向がある。これは、ユーザがパフォーマンスの低下または不当なダウンタイムを被らないことを保証するための手段とみなされている。この手法は合理的に思えるだろうが、残念ながら、ほとんど未使用のまま、または長期間にわたって十分に活用されていないサーバの急増につながっている。この過剰プロビジョニングは、いくつかの例を挙げるだけでも、ライセンス、電力、熱、冷却、およびデータセンターのスペースに関して、企業が年間を通して不必要に増加した設備投資および運用経費を負担することを最終的に意味する。
【背景技術】
【０００２】
企業のコンピュータインフラストラクチャのニーズを予想するために、時系列予想のいくつかの異なる手法がこれまでに提案されている。この先行研究は、線形回帰、指数平滑法、自己回帰積分移動平均（ＡＲＩＭＡ）などの古典的なモデルの使用から、サポートベクターマシン（ＳＶＭ）、人工ニューラルネットワーク（ＡＮＮ）、およびファジーロジックなど、より高度な計算知能の非線形手法にまで及んでいる。ｋ最近傍（ｋ−ＮＮ）アルゴリズムも時系列予想に最近拡張されているが、この分野における既存の研究では、いかなる追加の関連メトリクスも参照せずに、個々の履歴データに焦点が当てられている。したがって、ほとんどのアプリケーションは、過去の類似した最近傍を識別するために１次元の荷重曲線の形状のみを使用して、１次元の一変量時系列に制約される一方で、大きな次元特徴空間間の相関はしばしば無視される。しかしながら、測定されたコンピュータハードウェアメトリクスの多くは、互いに密接に関連しているため、１次元から抽出された履歴に関する知識は、同様の動作を共有する時系列のグループから収集されたものと比較すると不適切である。
【発明の概要】
【０００３】
一般的な一態様では、本発明は、ネットワークユーザによって要求されるリソース（アプリケーション、データなど）をホストするためにネットワークサーバを採用する企業コンピュータシステムのための、ネットワークリソースおよび／またはインフラストラクチャのニーズを予想するためのコンピュータ実装システムおよび方法に関する。予想に基づいて、ネットワークリソースは、それに応じてスケーリングまたはプロビジョニングすることができる。すなわち、例えば、ネットワークサーバの状態は、過剰な容量を削減しながら、ユーザの要求ニーズを満たすように動的に調整することができる。本発明の予想技法は、クラウドコンピューティング環境にも適用可能である。予想に基づいて、クラウドサーバプールを動的にスケーリングし、そのため、システムの規模は、変化する要求を満たし、システムの負荷が低いときにリソースを浪費することを回避する。
【０００４】
予想は、ネットワークリソースに対するユーザの要求に関する履歴データに基づいて生成される。あるシナリオでは、相関分析に従ってそれらのメトリクスに基づいてグループ化された要求のバリアントのグループ化に基づいて多変量ｋ最近傍（ｋ−ＮＮ）予想が使用されるので、同じグループ内のメトリクス間の依存性は高くなる。次いで、多変量ｋ−ＮＮアルゴリズムが各グループに対して実行され、多段階先予測が生成される。この手法は、予測速度とともに予測性能が改善されるように、他の無関係なメトリクスの影響を低減させる。別の予想技法は、予測およびストライプサンプリング手法を使用する。単位時間内の未来の要求数を予測し、要求の特徴を分析し、それに従って要求を分類し、スライスサンプリング戦略を決定することによって、未来の詳細なワークロードデータを生成することができる。さらに別の手法は、要求パターン予測に基づく適応スケジューリングアルゴリズムである。このアルゴリズムは、様々なワークロードに対するシステムの適応能力を決定し、履歴と現在のシステム負荷に基づいてシステムが使用するクラウドリソースを調整することで、システムが動的負荷を満たしながら無駄を削減することができるようにする。
【０００５】
本発明の実施形態からのこれらおよび他の利点は、以下の記載から明らかになるであろう。
【図面の簡単な説明】
【０００６】
本発明の様々な実施形態は、添付の図面に関連した実施例として本明細書に記載される。
【０００７】
【図１】本発明の様々な実施形態による企業コンピュータシステムのブロック図である。
【０００８】
【図２】本発明の様々な実施形態による図１の企業コンピュータシステムのためのサーバ数推奨を決定するためのプロセスフローのフローチャートである。
【０００９】
【図３】本発明の様々な実施形態による単変量ｋ−ＮＮ手法のための予測方法の一例を図示するグラフである。
【００１０】
【図４】本発明の様々な実施形態による図１の予測コンピュータシステムのブロック図である。
【００１１】
【図５】本発明の様々な実施形態による図３のコンピュータシステムによって実行されるプロセスフローのフローチャートである。
【００１２】
【図６】本発明の様々な実施形態による図１のリソース予測コンピュータシステムのコントローラの一例を図示する。
【００１３】
【図７】１日にわたる企業コンピュータシステムのネットワークサーバに対する典型的な負荷（例えば、要求数）の例を示す。
【００１４】
【図８】本発明の様々な実施形態による図６のコントローラのための伝達関数の図である。
【発明を実施するための形態】
【００１５】
一般的な一態様では、本発明の実施形態を使用して、企業に対する未来のコンピュータリソースのニーズを予測することができる。１つの例示的な企業コンピュータシステム１０が図１に図示されている。図１に図示されている企業コンピュータシステム１０は、広域ネットワーク（ＷＡＮ）１４と相互接続された、いくつかのローカルエリアネットワーク（ＬＡＮ）１２を含む。各ＬＡＮ１２は、いくつかのクライアントコンピュータ１６およびいくつかのネットワークサーバ１８を含むことができる。ネットワークサーバ１８は、実装態様に応じて、例えば、そのＬＡＮ１２内の、または他のＬＡＮ１２からのクライアントコンピュータ１６用のコンピュータプログラム、データ、記憶装置、およびプリンタなどのコンピュータリソースをホストしてもよい。
【００１６】
リソース予測コンピュータシステム２０は、様々な実施形態に従って、ネットワークサーバ１８に対する多変量時系列（ＭＴＳ）データに基づいて企業のリソース予測を実行し、ＭＴＳデータはデータベースコンピュータシステム２２に格納される。リソース予測コンピュータシステム２０およびＭＴＳデータベースシステム２２は、図示の目的でＷＡＮ１４に接続されているものとして図１に示されているが、それらの一方または両方を図示されているＬＡＮ１２のうちの１つに含めることができる。それらは、企業のネットワーク内の異なるＬＡＮ１２とＷＡＮ１４に接続することもできる。リソース予測コンピュータシステム２０は、サーバ（複数可）、メインフレーム（複数可）、ワークステーション（複数可）、および／または任意の他の好適なコンピュータデバイスなどの１つ以上の相互接続されたコンピュータデバイスとして実装されてもよい。リソース予測コンピュータシステム２０のそのような各コンピュータ装置は、１つ以上のプロセッサ２４および１つ以上のメモリユニット２６を含んでもよい。メモリユニット２６は、一次コンピュータストレージ（例えば、ＲＡＭおよびＲＯＭ）および二次コンピュータストレージ（例えば、ＨＤＤ、ＳＳＤ、フラッシュ）の両方を含んでもよい。プロセッサ（複数可）２４は、図１に示し、さらに以下に記載するように、変数グルーピングモジュール３０およびｋ最近傍（ｋ−ＮＮ）探索モジュール３２などの、メモリユニット２６に格納されたコンピュータ命令（例えば、ソフトウェア）を実行するマイクロプロセッサ（複数可）を含んでもよい。図示の目的のために、図示されたリソース予測コンピュータシステム２０は、１つのコンピュータのみを含み、ならびに１つのプロセッサ２４および１つのメモリユニット２６のみが図示されているが、本発明はそれに限定されず、リソース予測コンピュータシステム２０を必要に応じてスケーリングすることができることを理解されたい。
【００１７】
ＭＴＳデータベース２２は、企業システム１０のネットワークサーバ１８に対する時系列のコンピュータ使用率およびハードウェア統計を格納する。統計には、次のように、各ユーザリソース要求に関連するいくつかの変数の値（以下のものなど）を含めることができる。
−リソースを要求しているユーザのユーザ名
−要求の開始時間
−要求の終了時間
−要求の合計時間
−要求の動作時間
−要求されたプロセスまたはリソース
−要求に対処したネットワークサーバのＩＤ
−要求に対処したネットワークサーバの地理的位置
−ＣＰＵ利用率−ネットワークサーバの一次メモリ（例えば、ＲＡＭ）利用率
−ネットワークサーバのディスクＩＯ（ディスクメモリまたは他の二次コンピュータメモリへの読み書き動作の合計）
【００１８】
ＭＴＳデータベース２２は、データベース管理システム（ＤＢＭＳ）ソフトウェアを実行し、かつ好適なＲＡＩＤディスクアレイおよび／または任意の他の好適なデータ記憶機構を含む、必要に応じて１つ以上のデータベースサーバを用いて実装されてもよい。使用量およびハードウェア統計は、ＣＳＶファイルおよび／またはネットワークサーバ１８からの任意の他の好適なデータフォーマットを使用してＭＴＳデータベース２２に送信されてもよい。各ネットワークサーバ１８は、その周期的統計をＭＴＳデータベース２２に送信してもよく、および／またはＬＡＮ１２内の１つ以上のネットワークサーバ１８は、ＬＡＮ１２内の複数のネットワークサーバ１８に関する統計を収集し、その収集をＭＴＳデータベース２２に送信することができる。ＭＴＳデータベース２２は、例えば、オラクル（Ｏｒａｃｌｅ）またはＳＱＬデータベース、または他の任意の好適なデータベースとして実装されてもよい。
【００１９】
様々な実施形態では、企業の未来のコンピュータリソースのニーズを予測するために、リソース予測コンピュータシステム２０は、各関連変数が１つのクラスタのメンバーとなるように、かつ同じクラスタを有する変数間の依存性が高いが他のクラスタ内の変数と比較して非常に低いように、関連変数をクラスタへとグループ化する。プロセッサ２４は、変数グルーピングモジュール３０のソフトウェアを実行することによって、この機能を実行してもよい。クラスタが決定された後、リソース予測コンピュータシステム２０は、予測を計算するために様々な実施形態においてｋ−ＮＮ探索を使用する。プロセッサ２４は、ｋ−ＮＮ探索モジュール３２のソフトウェアを実行することによってこの機能を実行してもよい。
【００２０】
図２は、様々な実施形態によるＭＴＳデータベース２２とともにリソース予測コンピュータシステム２０によって実行されてもよい予測プロセスのプロセスフローである。ステップ５０において、ＭＴＳデータベース２２は、企業のネットワークサーバ１８に対する時系列使用量およびハードウェア統計変数を受信し、格納する。データは、５分ごと、１０分ごと、または任意の他の好適な時間増分などの周期的な時間増分に対して収集される。次にステップ５２において、リソース予測コンピュータシステム２０は、データベース２２に格納されているＭＴＳデータを前処理して、ノイズを除去または低減し、かつ／または従来のデータ前処理技法を使用してデータを標準正規分布データへとスケーリングすることができる。
【００２１】
高次元時系列を扱うとき、すべての次元に基づく全体的なｋ−ＮＮ推定は、無関係なメトリクス間の干渉のために大きな誤差を持つ可能性がある。しかしながら、測定されたコンピュータハードウェアメトリクスのいくつかは、互いに密接に関連しており、同様の挙動を共有しているので、予測が単変量時系列から単に抽出されると、関連情報は失われることになる。すべての関連変数から集約された知識を利用するために、ｋ−ｎｎ探索を実行する前、高次元ＭＴＳは、より小さいもののグループに分解され、ここでは同じグループ内の変数間の依存性は高いが、他のグループ内の変数との依存性は非常に低い。この動作は、図２のステップ５４において、変数グルーピングモジュール３０のソフトウェアを実行することによって、可変クラスタを生成するリソース予測コンピュータシステム２０のプロセッサ２４によって実行される。そのような分解はまた、モデル空間を大幅に狭めもするので、その後のｋ−ＮＮ探索を高速化する。様々な実装態様では、変数グルーピングは２つの段階、すなわち（ｉ）相関行列構築、および（ｉｉ）変数クラスタリングを含む。
【００２２】
ｄ個の変数を有し、かつ長さＴのＭＴＳが与えられた場合、２つの変数間の関連性を測定するために相関係数を使用することができる。一実施形態では、２つの変数間の関係の単調性のノンパラメトリックな尺度であるスピアマン（Ｓｐｅａｒｍａｎ）の順位相関係数が使用される。スピアマン相関は、両方のデータセットが正規分布していると仮定しない。サイズｎのサンプルの場合、未処理の変数Ｘｉ、Ｙｉは、ランクｘｉ、ｙｉに変換され、スピアマンの順位相関係数ρは、これらから次のように計算される。
【数１】
0006756048.tif 000002
式中、ｘｉ、ｙｉは、未処理の変数を指し、バー付きのｘ、ｙは、変数の平均を指す。
【００２３】
ある変数がある時間差後に他の変数に影響を与える可能性があることに留意し、したがって、変数ｉ、ｊの各対について、アルゴリズムは、０から予め定義された「ＭａｘＬａｇ」期間まで探索でき、ρｉｊとなる最大係数を、以下のように選択することができる。
【数２】
0006756048.tif 000003
すべての変数の中で、対での相関係数は、ｎ×ｎ相関行列を形成するために計算される。以下の表１は、特定のネットワークサーバホストを用いた実験で構築された例示的な相関行列である。これは、より濃い灰色を有する対称行列が強い相関を示すことに留意されたい。
【表１】
0006756048.tif 000004
【００２４】
上記で構築した相関行列に基づいて、ｎ個の変数をクラスタに分解するために分割方法を適用することができる。様々な実施形態において、アフィニティプロパゲーション（Ａｆｆｉｎｉｔｙ  Ｐｒｏｐａｇａｔｉｏｎ）（ＡＰ）クラスタリングアルゴリズムがこのステップで使用される。ＡＰは、データポイント間の「メッセージパッシング」の概念に基づくクラスタリングアルゴリズムである。ｋ平均法（ｋ−ｍｅａｎｓ）およびｋ−ｍｅｄｏｉｄｓ法などの他の既知の分割方法とは異なり、ＡＰでは、アルゴリズムを実行する前にクラスタの数を決定または推定する必要はない。したがって、入力ハードウェアメトリクスが変化するにつれてグループ化の結果が変化する場合があるので、本実施形態により適している。ＡＰについてのさらなる詳細は、その全体が参照により本明細書に組み込まれる、Ｂｒｅｎｄａｎ  Ｊ．Ｆｒｅｙ  ｅｔ  ａｌ．，“Ｃｌｕｓｔｅｒｉｎｇ  ｂｙ  ｐａｓｓｉｎｇ  ｍｅｓｓａｇｅｓ  ｂｅｔｗｅｅｎ  ｄａｔａ  ｐｏｉｎｔｓ，”Ｓｃｉｅｎｃｅ  ３１：９７２−９７６（２００７）に見出すことができる。
【００２５】
ＡＰアルゴリズムは、収束するまでサンプルの対間でメッセージを送信することによってクラスタを作成する。ポイント間で送信されるメッセージには２つのカテゴリがある。一方は、サンプルｋがサンプルｉの見本となるべきであるという責任であり、ｒ（ｉ，ｋ）によって表される。もう一方は、サンプルｉがサンプルｋを見本として選択するべきであるという可用性であり、ａ（ｉ，ｋ）で表され：
【数３】
0006756048.tif 000005
となり、式中、ｓ（ｉ，ｋ）は、サンプルｉとｋとの間の類似度である。アルゴリズムは、収束するまで２つの行列の計算を実行する。表２は、表１の行列に基づくクラスタリング結果を示す。
【表２】
0006756048.tif 000006
この例で分かるように、各変数０〜６は、グループ／クラスタのうちの１つに属する。
【００２６】
可変クラスタが決定された後、ステップ５６において、ｋ−ＮＮアルゴリズムが所望の予測をするために使用される。説明の目的のために、ｋ−ＮＮ探索アルゴリズムは、一変量の状況について、および一定幅の時間間隔で測定された直前の一定数の履歴データに基づく１ステップ先の値についてのみ最初に図示される。ｔ＝（１，２，・・・，Ｔ）の場合、予想範囲ｈ＝（１，２，・・・，Ｈ）に対して、点Ｔから予測ｘＴ＋ｈ（ここでｘは⌒付き）行われる有限かつ等距離の時系列ｘｔを考える。最初に、時系列の最近の状態の特徴を表すために、特徴ベクトルの集合が作成される。等しい長さｍのセグメントは、ｍ個の連続した観測値のシーケンスｘｍｔ（ここでｘは→付き）＝［ｘt，ｘｔ−１，・・・，ｘｔ−（ｍ−１）］Ｔのベクトルシーケンスｘｍｔ（ここでｘは→付き）とみなされ、ここで、ｍはサンプリング長と称される予め定められた整数である。ベクトルは、すべてのｔ＝（ｍ，ｍ＋１，ｍ＋２，・・・，Ｔ−ｍ）、いわゆるｍ履歴と重複して作成されることに留意されたい。
【００２７】
次に、過去における行動の類似パターンを識別するために、様々な実施形態において、ユークリッド距離メトリクスなどの所与の距離メトリクスを使用して、すべてのｍ履歴と最後に観測されたベクトルｘｍｔ（ここでｘは→付き）＝［ｘＴ，ｘＴ−１，・・・，ｘＴ−（ｍ−１）］Ｔとの間の距離がそれぞれ計算される。
【数４】
0006756048.tif 000007
【００２８】
最後に、すべてのｍ個の履歴に対する対での距離がランク付けされ、ターゲット特徴ベクトルまでの最小距離を有するｋ個のベクトルのその後の観測値がそれぞれ選択される。ｋ個の最近傍の各々を局所的に重み付けすることができ、その後予測ｘＴ＋ｈ（ここでｘは⌒付き）を形成するために集約される。
【数５】
0006756048.tif 000008
式中、ｎｅｉｇｈｊ，ｈは、近傍のｊの範囲ｈに続く値であり、ｗｊは、重みを表す。図３は、一変量ｋ−ＮＮ手法のための予測方法を図示するグラフである。基準期間（３４１〜３８１日目）に最も近い２つの近傍（１７１〜２２１日目と１〜５１日目）を示す。
【００２９】
多変量の場合、単変量の場合の参照（例えば、最新の）特徴ベクトルおよびｍ履歴は、多次元に拡張される。Ｘｄをｄ次元の多変量時系列（ＭＴＳ）とする。時間ＴにおけるＭＴＳの未来を予測するためには、目標特徴行列は、
【数６】
0006756048.tif 000009
であり、式中ｘｍＴ，ｉ（ここでｘは→付き）は、次元ｉで時間Ｔにおいて最後に観測されたベクトルを表す。同様に、距離メトリクスは、距離メトリクスの合計として定義することができる（例えば、すべてのｄ次元におけるユークリッド距離
【数７】
0006756048.tif 000010
ｍ履歴にわたって探索することによって、ＭＴＳの現在の（または他の参照）状態に近いグローバルなｋ個の最近傍を見つけることができ、それらの各々は、ｍ個の連続した観測のｄ個のベクトルによって構成される。ｋ個の最近傍の範囲ｈを有する後続の値は、参照ｋ×ｄ行列として表すことができる。
【数８】
0006756048.tif 000011
各次元に対する予測値は、対応する次元での参照項目を集計することによって生成される。
【数９】
0006756048.tif 000012
ここで、各次元の近傍は、結果を形成するためにそれぞれ重み付けされる。一実施形態では、重みは、勾配降下アルゴリズムによって得られ、新しいデータと一致するように徐々に調整される。予測は、時間範囲の累積ユーザリソース要求とそれらの要求に対処するために必要なサーバリソースを予想することができる。したがって、予測は、時間範囲ステップに対して予測されたサーバワークロードをもたらす。拡張されたワークロード予想を得るために、このプロセスを追加の時間範囲ステップに対して繰り返すことができる。
【００３０】
図２のステップ５８において、リソース予測コンピュータシステム２０は、未来の時間範囲ステップにおけるサーバの数を推奨することができる。このようなサーバ数の予測は、多数の有益な目的のために使用することができる。そのような目的の１つは、企業が予想された数のサーバに基づいてそのサーバ１８をプロビジョニングすることを可能にすることである。以下のメトリクスを含むいくつかの計算されたメトリクスがそのような能力計画において使用されてもよい。
・ＣＰＵ／メモリ／ディスクの過負荷率および不足負荷率。これらのメトリクスの計算は、ＣＰＵ、メモリ、およびディスクの過負荷値および不足負荷値（それぞれの過負荷閾値および不足負荷閾値を上回るまたは下回る）を平均することによって実行することができる。閾値は、例えば、過負荷の場合は９０％、不足負荷の場合は１０％とすることができる。
・ＣＰＵ／メモリ／ディスクの過負荷時間率および不足負荷時間率。これらのメトリクスは、全体の期間と比較した、ＣＰＵ／メモリ／ディスクが過負荷になっている（過負荷閾値を上回った）または不足負荷となっている（不足負荷閾値を下回った）時間の長さの比率に基づいて計算することができる。
・全体的な過負荷時間率および不足負荷時間率。この計算では、サーバのためのＣＰＵ／メモリ／ディスクメトリクスのいずれかが過負荷または不足負荷の場合、場合によっては、サーバが過負荷または不足負荷になっているとみなされる。
これらのメトリクスは、上述のｋ−ＮＮ予測されたＣＰＵ／メモリ／ディスクの負荷に基づいて、リソース予測コンピュータシステム２０によって、未来の時間ステップのために予測することができる（ステップ５６参照）。
【００３１】
これらの予想された過負荷メトリクス／不足負荷メトリクスは、推奨されたサーバ１８の数（図１参照）など、企業コンピュータシステムのためのハードウェアリソースを推奨するための様々な推奨方法論に対する入力パラメータとして使用することができる。３つのそのような推奨方法論は、いわゆる「容量ベースのサーバ数推奨」（Ｃ−ＳＮＲ）、「使用量ベースのサーバ数推奨」（Ｕ−ＳＮＲ）、および「適応型サーバ数推奨」（Ａ−ＳＮＲ）である。Ｃ−ＳＮＲでは、サーバによって処理することができる要求の数が予め定められている。したがって、要求の総数が予測されると、サーバ数を簡単に導出することができる。Ｕ−ＳＮＲでは、ユーザがサーバ要求を実行する最も可能性の高い時間は、ユーザの使用経過および分類に基づいて既知である。要求に対するユーザの平均負荷値もユーザの分類に基づいて認識されるため、ユーザの要求によってシステムにもたらされると予想される負荷を予測することができる。サーバ容量を最大限に活用しようとする割り当てアルゴリズムを適用することによって、サーバ数を決定することができる。Ａ−ＳＮＲでは、比率（実際には閾値）を使用して、新しいユーザセッションを送信するサーバおよび新しいサーバを追加するべきかどうかを決定する。新しい要求が出されたとき、最初の試みは、現在稼働中のサーバがその要求に対処することである。要求は、分類結果から推定される潜在的な負荷レベルに基づいて現在のサーバに割り当てられる。過負荷状態のために新しい要求を現在アクティブなサーバに割り当てることができない場合、要求に対処するために新しいサーバが追加される。同様に、要求が完了すると、残りのワークロードをサーバ１８間で再均衡化することができる。
【００３２】
このメトリクスのうちのどれが使用されようと、または他のメトリクスが使用されようと、リソース予測コンピュータシステム２０は、予想されたユーザのワークロードに基づいて、特定の期間について企業にとって適切な数のサーバ１８を予想することができる。リソース予測コンピュータシステム２０は、これらのサーバ数推奨をネットワークサーバ１８に対するブローカ（図１参照）として機能するネットワークサーバ４０に通信することができる。リソース予測コンピュータシステム２０から伝達された決定に基づいて、このブローカサーバ（複数可）４０は、ＬＡＮ１２内のいくつのサーバ１８を、様々な時点で起動（フルアクティブ、動作モード）および、または低電力モード（例えば、アイドルモードまたはスリープモード）にするべきかを決定することができ、それに応じてサーバ１８に命令することができる。このようにして、ネットワークサーバ１８のうちのいくつかは、予想された使用法および／または負荷パターンに基づいて、それらが必要とされ予想されていない期間中に低電力モードにすることができる。例えば、図１を参照して、リソース予測コンピュータシステム２０は、特定の期間に必要とされる予想数のネットワークサーバ１８を決定することができる。予想は、１つのＬＡＮ１２内のネットワークサーバ１８または複数のＬＡＮ１２にわたるネットワークサーバ１８に対するものとすることができる。リソース予測コンピュータシステム２０は、この数をブローカサーバ４０に送信することができ、これは、そのＬＡＮ１２および／または他のＬＡＮ１２内の様々なサーバ１８に、適切なときに動作可能な高電力モード（ユーザのリソース要求を処理することができる）にあるか、または低電力モード（ユーザのリソース要求を処理できない）にあるように命令することができる。ネットワークサーバ１８は、それに応じて命令された電力モードを仮定することができる。このようにして、予想されたネットワークリソースのニーズが低いときには、エネルギーおよび関連するコストを節約するために、ある数のネットワークサーバ１８を低電力モードにすることができる。逆に、予想されたネットワークリソースのニーズが高いときには、十分な数のネットワークサーバ１８が予想されるユーザ要求負荷に対処するように準備されることになる。
【００３３】
様々な実施形態において、プロセッサ２４は（ｋ−ＮＮ探索モジュールソフトウェア３２を実行するとき）、ｋ−ＮＮ探索の前にｋ−ＮＮ探索のためのｋおよびｍパラメータを選択する。モジュール３２は、異なるデータセットに対する予想誤差を最小にするために、ｋおよびｍパラメータを調整するために高クライミングアルゴリズムを使用してもよい。問題に対する恣意的な解（この場合は、ｋおよびｍパラメータ）から始まる高クライミングアルゴリズムの反復アルゴリズムは、次いで、解の単一要素を漸増的に変更することによって、より良好な解を見つけようとする。その変更がより良好な解を生み出す場合、それ以上の改善を見出すことができなくなるまで繰り返される新しい解への漸増変更が行われる。他の実施形態では、ｋおよびｍパラメータは、再確立される。
【００３４】
Ｋ最近傍を有する予測間の関係は、時間とともに変化する可能性がある。したがって、重みは、好ましくは、時間とともに調整される。Ｔｒａｉｎｔ＝［ｘｔ−１，ｘｔ−２，・・・，ｘｔ−ｎ］は、時間ｔにおけるサイズｎの学習セットを表すと仮定する。ｘｔは、時間ｔにおける真の値であり、ｙｔは、時間ｔに対する予測値である。以前に取得した重みに基づいて、ｙｔをＴｒａｉｎｔに基づいて予測することができる。ｘｔの真の値が分かった後、Ｔｒａｉｎｔ＋１＝［ｘｔ，ｘｔ−１，・・・，ｘｔ−ｎ＋１］に基づいて重みを更新することができ、この新しい重みは、ｙｔ＋１の予測に使用される。
【００３５】
別の一般的な問題は、企業で必要なコンピューティングリソースが動的に変化することである。企業が最高のワークロードに対応するサーバ数を維持している場合、ワークロードが低い時間の間、そのような多数のサーバを必要としないため、これは大きな無駄になる。ユーザの要求を満たすのに十分なサーバを維持するだけでなく、可能な限りエネルギーを節約するという目標を達成するためには、ワークロードを予測する必要がある。したがって、本発明の様々な実施形態は、予測およびストライプサンプリング手法に基づくワークロード生成方法を提供する。単位時間内の未来の要求数を予測し、要求の特徴を分析し、それに応じて要求を分類し、スライスサンプリング戦略を決定することによって、未来の詳細ワークロードデータを生成することができる。未来のワークロードデータは、サーバリソースを動的に調整するためのベースを提供することができる。
【００３６】
一般的な一態様では、予測およびストライプサンプリング手法をステップへと分割することができる。第１に、時系列予測モデルを適用して単位時間内の要求数を予測する。ｋ最近傍（ＫＮＮ）アルゴリズムに基づいて、要求数時系列データ内の現在のサブシーケンスに類似するＫ個のサブシーケンスが探索される。次いで、線形回帰モデルを適用して、Ｋ個の最近傍シーケンスによって与えられる予測を最終予測結果に合成することができる。
【００３７】
第２に、要求の特徴を分析する。各要求は、異なるリソース（ＣＰＵ負荷、メモリなど）を消費する。さらに、各要求の長さを予測する必要がある。様々な実施形態に従って、分析を３つのタイプへと分割することができる。
ａ．相関分析。要求の異なる属性に対して相関分析を実行することができる。２つの属性が相関している場合、それらは互いに依存するが、一方で相関していない２つの属性は互いに影響しない。
ｂ．分類要求。関連性の高い属性で要求を分類することによって、要求を、内部記憶コストの低い短期間の要求、内部記憶コストの低い長期間の要求、内部記憶コストの高い長期間の要求などの、異なるタイプへと分割することができる。
ｃ．周期分析。周期的な要素によってもたらされるマイナスの影響は、取り除かれるべきである。要求は、勤務時間と非勤務時間との間に著しい違いを示している。要求をサンプリングすることが望まれる場合、同様の周期的時間内の要求がサンプリングのために選択されるべきである。
【００３８】
第３に、スライスベースのサンプリングおよび期間ベースのサンプリングの組み合わせを用いて、各カテゴリの割合に従って履歴データから要求が選択され、これらの要求データが最終的な予測にまとめられる。
【００３９】
このプロセスには、ワークロードが複数のメトリクスに基づいて測定されるという利点があり、これにより、単一のメトリクスの制限を克服する。別の潜在的な利点は、未来の要求数および様々なメトリクスに対する各要求の影響を考慮しながら、各要求によってもたらされるワークロードをモデル化することによってより正確な予測を行うことである。そのようにして、この方法は、全体的なワークロード予想手法の制限を克服する。
【００４０】
図４は、リソース予測コンピュータシステム２０の図であり、図５は、本発明の様々な実施形態による将来のワークロードトレースを生成するために、この予測およびストライプサンプリング戦略を実施するためにリソース予測コンピュータシステム２０によって実行されるプロセスフローの図である。図３に示すように、そのような実施形態によれば、リソース予測コンピュータシステム２０は、未来のワークロードトレースを生成するための予測およびストライプサンプリングモジュール６０を含んでもよい。予測およびストライプサンプリングモジュール６０は、メモリ（複数可）２６に格納され、かつリソース予測コンピュータシステム２０のプロセッサ（複数可）２４によって実行されるソフトウェアコードとして実装されてもよい。図５の例示的なプロセスフローは、予測およびストライプサンプリングモジュール６０のコードが実行されるときに、リソース予測コンピュータシステム２０によって実施することができる。さらに、データベース２２は、ネットワークサーバのユーザによる履歴要求に関するデータを格納することができる。
【００４１】
ステップ６２において、単位時間当たりの要求数が予測される。単位時間ごとにユーザによっていくつの要求が送信されるかを予測する問題は、時系列予測問題としてモデル化することができる。したがって、Ｋ個の最近傍分類アルゴリズムを使用して、データベース２２内に格納されている履歴データから現在のサブシーケンスと同様のサブシーケンスを見つけ出すことができる。次いで、これらの類似のサブシーケンスに基づいて得られた予測を一緒に組み合わせて、最終予測結果を生成することができる。時間間隔が単位時間Ｔであると仮定すると、各単位時間内に発生する要求数は、Ｎ＝［ｎ１，ｎ２，・・・，ｎｐ］として表すことができ、式中、ｎ１は、ｉ番目の単位時間内に発生した要求数であり、ｐは、次のように表すことができる。
【数１０】
0006756048.tif 000013
要求数が現時点のそれらと類似している場合を見つけるために、最新のｍ個の観測値からなるサブシーケンスを描画することができる。
【数１１】
0006756048.tif 000014
もう一方の観測は、次のように表すことができる。
【数１２】
0006756048.tif 000015
【００４２】
複数のサブシーケンスＮｉ，ｉ＋ｍ−１＝［ｎｉ，・・・，ｎｉ＋ｍ−１］は、Ｎｎｏｗに最も類似する履歴データから見出すことができる。履歴サブシーケンスと現在のサブシーケンスとの間の類似性を測定するための評価基準を使用することができる。Ｄｉｓ（Ｘ，Ｙ）を２つの時系列間の類似性を測定するための距離関数とする。距離関数ユークリッド距離を使用することができ、これは以下の通りである。
【数１３】
0006756048.tif 000016
【００４３】
各履歴サブシーケンスと現在のサブシーケンスとの間の距離を計算することができる。履歴シーケンスは、サブシーケンスセット｛Ｎ１，１＋ｍ−１，Ｎ２，２＋ｍ−１，・・・，Ｎｐ−２＊ｍ＋１，ｐ−ｍ｝へと分割することができる。次いで、範囲０＜ｉ≦ｐ−２＊ｍ＋１でｉを見つけるために距離を計算することができ、それは、Ｄｉｓ（Ｎｉ，ｉ＋ｍ−１，Ｎｎｏｗ）の値が最小になるようにする。次いで、現在のものに最も類似したサブシーケンスＮｉ，ｉ＋ｍ−１を決定することができる。
【００４４】
セット内のすべての履歴サブシーケンスについて、距離ｄｉ＝Ｄｉｓ（Ｎｉ，ｉ＋ｍ−１，Ｎｎｏｗ）を計算して距離セットＤ＝｛ｄ１，ｄ２，・・・・・・，ｄｐ−２＊ｍ＋１｝を得ることができる。Ｄ内のすべての要素がソートされた後、最近接距離［ｄａ，ｄｂ，・・・・・・，ｄｋ］を決定することができ、距離［ａ，ｂ，・・・，・・・，ｋ］のインデックスは、最も類似したサブシーケンスのインデックスである。
【００４５】
これらＫ個の最近傍シーケンスの直後のサブシーケンスは、最終予測を生成するために結合されるのが好ましい。２つの要因を考慮することが好ましい。第１に、類似性は、モデルで考慮されるべきであり、概して、類似性が高いものほどより大きい重みを有するべきである。第２に、サブシーケンスの出現時間、概してより最近の出現時間はより大きい重みを有するべきである。したがって、様々な実施形態では、ｋ個のサブシーケンスは、現在のサブシーケンスとの類似性および発生時間に従ってソートされる。次いで、線形回帰手法を適用して、ｋ番目の予測に対する重みを学習することができる。
【００４６】
次に、ステップ６４において、要求特徴または属性が分析される。属性は、上述のように、要求の持続時間、ディスクＩＯ、ＣＰＵおよび／またはメモリ使用率などの要求データを含むことができる。このステップ６４は、様々な実施形態による３つのサブステップ、ステップ６６における訂正分析、ステップ６８における要求分類、ステップ７０における周期性分析を含むことができる。訂正分析ステップ６６において、各要求は概して、異なるワークロードを様々なコンピュータリソースにもたらす。したがって、ワークロードを特徴付けるために、複数の特徴を使用するべきである。１つの問題は、これらのワークロード特徴に相関があるかどうかである。例えば、ＣＰＵの消費量が少なくなると、ディスク入力／出力の消費量も減少するという主張が、あるアプリケーションに当てはまるかどうかが分かるはずである。
【００４７】
様々な実施形態に従って、ピアソン相関係数をこのステップで使用することができる。要求ワークロードが２つの特定の特徴を有していると仮定すると、これは２つの時系列Ｘ＝［ｘ１，ｘ２，・・・，ｘＮ］およびＹ＝［ｙ１，ｙ２，・・・，ｙＮ］によってさらに表すことができ、式中、ｉ番目の要求の値は（ｘｉ，ｙｉ）として表すことができ、これら２つの特徴間の相関関係は、次のように表すことができる。
【数１４】
0006756048.tif 000017
この相関係数の絶対値が大きいほど、相関度は高い。値が０に近い場合、２つの特徴は、ほぼ独立していることを示す。
【００４８】
要求分類ステップ６８に関しては、特徴数に対する特徴値の分布を観察することによって、いくつかの特徴が複数のピークを有することがあり、これは特徴値を分類することができることを示す。要求をクラスの比率に従って過去からサンプリングすることができるように、異なるタイプへと分類することができる。分類プロセスの間、分類は、相関のある特徴についてなされるべきである。このステップでは、古典的なｋ平均法クラスタリングアルゴリズムに基づく二等分Ｋ平均法を、局所最適解に陥ることを回避するために使用することができる。このクラスタリングアルゴリズムは、３つのステップに分割することができる。第１のステップは、クラスタリング中心を見つけることであり、第２のステップは、各点とクラスタ中心との間の距離を計算し、各点を最も近いクラスタに入れることであり、第３のステップは、すべてのクラスタ座標の平均値を新しいクラスタ中心として計算することである。二等分Ｋ平均クラスタリング法は、最初にすべての点を１つのクラスタの中へと入れ、次いで１つのクラスタを２つに分割し、最後に最大誤差を低減させることができるクラスタを２つのクラスタに分割することを選択することによってさらに強化することができる。このプロセスは、クラスタの数がユーザによって与えられたＫの数に等しくなるまで繰り返すことができる。
【００４９】
循環的要因は、予測における重要な要因である。サーバへの要求は、人々から行われるため、勤務時間と勤務時間外の要求数が異なることは明らかである。したがって、循環的要因の影響は、周期性分析ステップ７０において考慮されるべきである。一実施形態では、高速フーリエ変換（ＦＦＴ）を使用して、要求特徴シーケンスのサイクル長を計算することができる。時間間隔ｔにおける特性ｘｉの平均値を得ることができる。次いで、サンプリングレートｆｓ＝１／ｔで、時系列ｆ（ｎ）、式中ｎ＝０，１，２，・・・，Ｎ−１、を決定することができる。
【００５０】
ｆ（ｎ）の離散フーリエ変換（ＤＦＴ）をＦ（ｋ）と仮定して、
【数１５】
0006756048.tif 000018
を得ることができ、式中、
【数１６】
0006756048.tif 000019
ｋ＝０，１，２，・・・，Ｎ−１である。ＤＦＴを得た後、各ｋは、次のように表すことができる、離散周波数値に対応する。
【数１７】
0006756048.tif 000020
シーケンスが周期的である場合、フーリエ変換関数のスペクトルは、周期の逆数でヒットし、衝撃値によってｆ（ｎ）の周期を得ることができる。単一の特徴によって表される要求負荷については、対応するサイクル時点から要求をサンプリングすることだけが必要とされる。複数のカテゴリへと分類されている要求については、あらゆる時間単位における各カテゴリの比率を予測することができ、これはステップ６２で導入されたＫ−ＮＮ手法を採用することによって行うことができる。
【００５１】
分析の結果により、ステップ７２において、未来の要求をシミュレートするために、履歴データから要求データを抽出することができる。周期性分析により、サイクルの長さがＴｐｅｒｉｄであることが示されたと仮定する。分類では、要求は、Ｋ個のクラスに分割され、履歴要求収集Ｎｈｉｓｔｏｒｙは、いくつかのサブセットに分割される。
【数１８】
0006756048.tif 000021
【００５２】
ｐ個の要求がある時間間隔ｔｐｒｅｄｉｃｔで未来発生すると予測され、ｋ−ｓｔクラスの予測された比率がｗｋであると仮定する。したがって、カテゴリｋの要求数は、ｐｋ＝ｗｋ＊ｐである。履歴サブセットＮｔｐｒｅｄｉｃｔ，ｋ，ｐｋのサイズの範囲内で、要求を選択するために、乱数を生成することができる。次いで、すべてのカテゴリの要求を、シミュレートされた未来の要求の集合体に統合することができる。各履歴要求の発生時刻は、各単位時間間隔内で固定されていない。その相対的な開始時間は、次のように表すことができる。
ｔｕｎｉｔ＝ｔａｃｔｕａｌ−ｋＴ、ｋ＝０，１，２，・・・
未来の要求シーケンスのシミュレーション中に、実際の要求時間は、ｔｐｒｅｄｉｃｔ＝ｔｕｎｉｔ＋ｔｐｅｒｉｏｄとして表すことができる。
上記の方法により、未来のワークロードトレースを生成することができる。また、未来のワークロードトレースに基づいて、予想されるワークロードに基づいて企業のユーザのニーズを満たすことができるように未来の期間についてサーバ数推奨を行うことができる（図２のステップ５８参照）。
【００５３】
上述の解決策の１つの利点は、ワークロードが複数のメトリクスに基づいて測定されることであり、これは単一のメトリクスの制限を克服する。別の利点は、未来の要求数と各要求が様々なメトリクスに与える影響を考慮しながら、各要求によってもたらされるワークロードをモデル化することで、より正確な予測を行うことである。そのため、この解決策は、全体的なワークロード予想手法で経験した制限を克服する。
【００５４】
予想された使用パターンの別の潜在的な有益な用途は、サービスとしてのデスクトップ（ＤａａＳ）を提供するクラウドコンピューティングベンダーによってホストされている、仮想デスクトップに移行する企業向けである。企業は、予測を実行して、ＣＰＵ数、ＲＡＭ容量、および／またはストレージ容量などの、予想されたＤａａＳリソースサイズを決定することができる。そのようにして、企業は、そのニーズのために過度に多くのクラウドコンピューティングリソースを保有しておくこと（かつ、それによってそのニーズのために過払いすること）、および過度に少ないラウドコンピューティングリソースしか保有しておかないこと（かつ、それによってそのユーザに対する必要とされるリソースを有しないこと）を回避することができる。
【００５５】
別の有益な用途は、企業が特定のワークロードまたはリソースに対して必要とするネットワークサーバ１８の数を決定することである。（上述の推奨方法のいずれかに従って）必要なサーバ数を示す特定のリソースに対する企業の予想された使用パターンに基づいて、企業は適切な数のサーバを調達することができる。例えば、システムが高負荷状態にあるとき、コントローラは要求を共有するために、例えば、仮想サーバなどのサーバをシステムに追加する。システムの負荷が低い場合、コントローラは、余分なリソースを返してコストを削減する。図６は、そのような決定をするためのコントローラ１２０（例えば、図１に示されているリソース予測コンピュータシステム２０）を図示している。
【００５６】
システムの要求は、時系列データとして説明することができ、すなわち要求の数は、時間とともに周期的に変化している。例えば、昼間の要求は、概して夜間の要求よりも多くなる。本発明の様々な実施形態では、コントローラ１２０は、未来の要求を予測し、異なる方針に従ってシステムを調整する。プロセスの一般的なステップは、図６に関連して以下に説明される。
【００５７】
ｋ−ＮＮ予測部１２２は、未来の要求を予測するためにｋ−ＮＮアルゴリズムを使用する。様々な実施形態では、予測部１２２は、特定の期間数ではなく、次の期間中に要求パターンを予測するだけである。要求パターンは、増加、減少、および変動の３つのタイプに分割することができる。要求パターンは、要求数がＸ１期間（例えば、３期間）にわたって増加した場合、またはＺ１期間（例えば、Ｚ１＝２）中にＹ１％（例えば、４０％）を超えて増加した場合、増加として分類することができる。増加パターンの後の次のパターンもまた、それらが連続的な増加しない期間を満たすまで増加パターンとして分類されることになる。Ｚ２期間（例えば、Ｚ２＝Ｚ１＝２）中に要求数がＸ２期間にわたって減少し続ける（例えば、Ｘ２＝Ｘ１＝３）、またはＹ２％を超えて減少する（例えば、Ｙ２＝Ｙ１＝４０％）場合、要求パターンは、減少として分類される。他のパターンは、変動として分類され、これを除いて様々な実施形態では、増加または減少パターンに続く期間も、場合によっては減少期間または増加期間が生じるまで、増加または減少に分類することができる。
【００５８】
図７は、１日の典型的なサービスシステムの負荷を示す。この例では、サンプル期間は、１５分ごとである。この例では、午前７時から午前８時まで、要求データは、増加傾向にある。要求数は、この時間枠内でわずかな減少期間を有して急速に増加する。午前８時から午前９時まで、要求数は、減少パターンにあり、要求数は、この１時間の期間の大部分で減少する。午前１０時から午後２時（すなわち、時間／時間軸上で１４時）まで、要求データは、この４時間の期間中要求数が変動し続けるので、変動パターンにある。他の期間も同様に分類することができる。要求パターンを３つのタイプに分割した後、ｋ−ＮＮ予測部１２２は、次の制御サイクルのための要求パターンを予測する。すべての制御サイクルの要求数が記録される。予測部１２２は、いくつかの連続する点（例えば、５つの連続する点）を１つのグループとしてグループ化し、最新のデータグループを分類するためのサンプルデータとする。次いで、ｋ−ＮＮ予測部１２２は、履歴データから類似グループを探索する。様々な実施形態において、要求は通常周期性を示すので、ｋ−ＮＮ予測部１２２は、履歴内の類似の周期的時間を探索する。２つのグループ間の分散は、それらの間の類似度を決定するために使用される。次いで、ｋ−ＮＮ予測部１２２は、Ｋ個の最も類似したグループ（例えば、Ｋ＝５）を選択する。これらの類似のグループを見つけた後、ｋ−ＮＮ予測部１２２は、グループの次の期間のパターンを得て、次の期間に対する要求パターンの予測として最も高い頻度のパターンを取る。
【００５９】
３つのパターンは、異なる特徴を有している。その結果、意志決定部１２６は、異なる制御方針を適用することができる。増加するパターンでは、仮想プロバイダーからサーバリソースを取得してサービスの開始を待つのに時間がかかるため、事前にサーバを追加する必要がある。以下の式は、追加サーバの必要数を計算するために使用することができる。
【数１９】
0006756048.tif 000022
ここで、ｕ（ｔ）は、時刻ｔにおける制御出力であり、これは追加するサーバ数であり、ｅ（ｔ）は、システムの負荷と理想的な負荷との偏差であり、Ｋは、比例係数であり、ｒ´（ｔ）は、時間ｔにおける予測要求数であり、Ｔｃは、制御周期であり、Ａは、予測影響係数である（予測が制御プロセスにどの程度影響するかを決定する）。式の右側の第１の部分（すなわち、Ｋｅ（ｔ））は、従来の比例制御である。第２の部分（すなわち、ＡＫ（ｒ´（ｔ＋Ｔｃ）−ｒ´（ｔ）））は予測の影響を制御プロセスに導入し、予測影響係数によって出力に影響を与える。
【００６０】
減少パターンでは、サーバの低減が遅延をもたらすことはめったにないので、事前にサーバを減少させる必要性はほとんど、またはまったくない。したがって、意思決定部１２６は、システムの負荷が低いときにサーバを閉じてサーバに戻すことができる。計算は、式ｕ（ｔ）＝Ｋｅ（ｔ）に従って行うことができる。増加パターンに対する上述の式と比較して、減少パターンの式は、比例制御部分のみを含む。
【００６１】
変動パターンでは、意思決定部１２６は、要求が頻繁に変動する場合があるので、システムの負荷の変化に慎重に対処しなければならない。意志決定部１２６が、負荷に応じてサーバを変動させるだけの場合、サーバの起動と停止を繰り返すことで発生するエネルギー消費コストに加えて、サーバが１時間単位で支払われるため、システムが不安定になり、多大な無駄が生じる可能性がある。そのため、変動パターンについては、意思決定部１２６は、以下の式を使用することができる。
【数２０】
0006756048.tif 000023
ｅ（ｔ）≧０のとき、意志決定部１２６は、比例制御によってサーバを追加するだけである。ｅ（ｔ）＜０の場合、これはサーバ数を低減する必要があり得ることを意味し、意思決定部１２６は、最後の３つの制御期間（または他のいくつかの制御期間）にわたる負荷レベルを収集し、これらの期間すべての間システムが低負荷状態にあった場合、コントローラは、（３つの制御期間のうちの）負荷が最も大きい制御期間を選択して、減少パターンについて上述したようにクローズして戻すサーバ数を計算する。制御ポリシーの目的は、システムの安定性を確保しながらサーバ数を安定させることである。
【００６２】
サーバを追加することは、いくらかの遅延を有する場合があるため、コントローラ１２０は、遅延の影響を補償するためにスミス予測部１２４を含んでもよい。スミス予測部１２４は、利用可能／購入されているがまだ使用されていないサーバ数を入力として受信することができる。この入力に基づいて、スミス予測部１２４は、これらのサーバの容量を推定し、これらの保留容量をシステムの現在の負荷に対して補償する。次いで、補償されたシステムの負荷は、意思決定プロセスで使用するために意思決定部１２６に配信される。スミス予測部１２４の原理は、様々な実施形態において、補償部分がシステムのフィードバックに導入され、それが遅延されたフィードバック量を事前に意志決定部１２６に入れることである。
【００６３】
図８は、本発明の様々な実施形態によるコントローラ１２０の伝達関数である。この図では、Ｇ０（ｓ）ｅ−ｔｓは、システム内の遅れを表し、スミス予測部の伝達関数は、Ｇ０（ｓ）（１−ｅ−ｔｓ）である。スミス予測部１２４は、ｋ−ＮＮ予測部１２２  Ｇτ（ｓ）に接続され、純粋な時間遅延補償を有するコントローラが形成される。スミス予測部を追加すると、システムの閉ループ伝達関数は、次のようになる。
【数２１】
0006756048.tif 000024
特性方程式は、次のとおりである。
【数２２】
0006756048.tif 000025
特性方程式内の遅延項は、スミス予測部の補償後に除去され、これはシステムに対する遅延の影響を低減することが分かる。
【００６４】
学習部１２８は、システム負荷および状態情報を収集し、その情報を使用して、意思決定部１２６において比例係数Ｋをオンラインで調整する。比例係数Ｋは、コントローラ１２０がシステムの負荷にどのように反応するかを決定する。Ｋ値が大きいほど、より多くの調整が行われるが、それによってシステムはより変動しやすくなる。学習部１２８は、式に従ってオンラインでＫを調整することができ
【数２３】
0006756048.tif 000026
式中、Ｔは、サンプリング期間の長さであり、ｓは、この期間の平均サーバ数であり、ｒは、この期間の完了した要求数であり、ｓＴ／ｒは、単位時間あたりの単位サーバの効率を表し、Ｌは、修正係数で、調整率を決定する。Ｌの値が大きいと、Ｋの応答はより速くなるが、変動にもつながる場合がある。
【００６５】
コントローラ１２０は、部材２６に格納されている適切なソフトウェア命令を用いて上述のプロセスを実施することができ、コンピュータシステム２０のプロセッサ（複数可）２４によって実行される（図１参照）。例えば、メモリ２６は、上述のプロセスを実施するためにプロセッサ（複数可）２４によって実行される、ｋ−ＮＮ予測、スミス予測、学習、および意思決定のためのソフトウェアモジュールを含んでもよい。その結果をブローカコンピュータシステム４０に提供することができ、場合によっては、それはネットワークサーバのランプアップまたはランプダウンを実行することができる。これら４つの部分（１２２、１２４、１２６、１２８）を組み入れ、様々な要求パターンに対して異なる制御ポリシーを適用することによって、本発明の実施形態は、ほとんどの期間にわたって、スケーラブルクラウドシステムに適切な制御を行うことができ、システムの性能を保証し、かつ不要なコストを削減する。
【００６６】
さらに別の有益な用途は、仮想ユーザのワークロードのシミュレーションである。仮想システムの模擬負荷テストのために、実際のクライアントワークロードに基づいた履歴的な時間データおよび未来の時間データを生成することができる。
【００６７】
したがって、様々な実施形態では、本発明は、企業コンピュータシステムに対するネットワークリソースのニーズを予想するコンピュータシステムおよび関連するコンピュータ実装方法を対象とする。様々な実施形態によれば、コンピュータデータベースシステムは、複数のネットワークサーバに関する多変量時系列（ＭＴＳ）性能データを受信して格納する。ＭＴＳ性能データは、一連の過去のサンプリング時間についての複数のネットワークサーバに対する複数のｄ個の性能変数に対するデータを含む。プログラムされたコンピュータシステム（例えば、リソース予測コンピュータシステム２０）は、ＭＴＳ性能データ内の性能変数の各々が変数グループに属するように、ＭＴＳ性能データ内の変数を２つ以上の変数グループにグループ化する。次いで、プログラムされたコンピュータシステムは、１つ以上の未来の時間範囲ステップで変数の予測を計算することによって、企業コンピュータシステムのネットワークサーバの未来のワークロードの予測を計算する。プログラムされたコンピュータシステムは、以下を含むステップを実行することによって予測を計算する。
（ｉ）２つ以上の変数グループに適用されるｋ最近傍探索アルゴリズムを使用して、ＭＴＳ性能データの基準状態に対するｋ個の最近傍を見つけること、および
（ｉｉ）ｋ個の最近傍の加重平均を計算すること。次いで、プログラムされたコンピュータシステムは、計算された予測に基づいて、１つ以上の未来の時間範囲ステップの各々において、企業コンピュータシステムのユーザによるリソース要求に対処するために、企業が動作モードにあるために必要な推奨ネットワークサーバ数を決定することができる。
【００６８】
様々な実装態様では、複数のネットワークサーバに対する性能変数は、少なくとも、単位期間あたりのＣＰＵ負荷、一次コンピュータメモリ利用率、および二次コンピュータストレージ入出力（ＩＯ）操作を示す変数を含む。また、変数をグループ化するステップは、プログラムされたコンピュータシステムによって、性能変数の各対間の相関を示す相関行列を計算するステップと、プログラムされたコンピュータシステムによって、クラスタリングアルゴリズムを使用して相関行列に基づいて変数グループを決定するステップと、も含んでもよい。相関行列はスピアマン相関行列を含んでもよく、クラスタリングアルゴリズムは、アフィニティプロパゲーションクラスタリングアルゴリズムを含んでもよい。
【００６９】
また、ＭＴＳ性能データの基準状態に最も近いｋ個の最近傍を見つけるステップは、（ｉ）ＭＴＳの基準状態を表すベクトルとＭＴＳデータを表す複数のベクトルの各々との間の距離をそれぞれ以前のサンプリング時間において計算することと、（ｉｉ）ＭＴＳの基準状態を表すベクトルまでの距離が最も小さい過去のサンプリング時間についてｋ個のベクトルを決定することと、を含んでもよい。計算された距離は、ユークリッド距離であってもよい。
【００７０】
さらに、プログラムされたコンピュータシステムは、未来の時間範囲ステップのうちの少なくとも１つについて、企業コンピュータシステムのユーザによるリソース要求に対処するために、企業が動作モードにあるために必要な推奨ネットワークサーバ数を示すデータを送信してもよい。したがって、１つ以上のブローカコンピュータシステムは、推奨ネットワークサーバ数が少なくとも１つの未来の時間範囲ステップの間ユーザによるリソース要求に対処するための動作モードになるように、ネットワークサーバに命令してもよい。
【００７１】
別の一般的な態様では、本発明は、未来の期間にわたるネットワークサーバの未来のワークロードを予測するためのコンピュータシステムおよび関連するコンピュータ実装方法を対象とする。プログラムされたコンピュータシステム（例えば、リソース予測コンピュータシステム２０）は、期間のｋ個の最も最近のサブシーケンスのソートに基づいて、未来の期間についての要求数ｐを予測し、単位時間Ｔ当たりの企業コンピュータシステムのユーザによるネットワークサーバへの要求数は、最近の期間の現在のサブシーケンスと最も類似している。次いで、プログラムされたコンピュータシステムは、（データベース２２に格納されたデータに基づいて）履歴要求を要求の属性に基づいて２つ以上の要求タイプクラスに分類する。次いで、プログラムされたコンピュータシステムは、２つ以上の要求タイプクラスの各々における履歴要求の比率に基づいて、２つ以上の要求タイプクラスの各々について、未来の期間における要求の比率を予測する。次いで、プログラムされたコンピュータシステムは、要求タイプクラスについて１つ以上の要求属性に対する周期性を決定する。次いで、プログラムされたコンピュータシステムは、ｐ個のサンプルが、２つ以上の要求タイプクラスの各々の予測比率を有するように、かつｐ個のサンプルが、要求タイプクラスの周期性に基づいて、将来の期間と同じ要求サイクルポイントからのものであるように、ｐ個の履歴要求をサンプリングする。最後に、プログラムされたコンピュータシステムは、ｐ個のサンプリングされた履歴要求を合成して未来の期間のネットワークサーバに対するワークロードトレースを得る。
【００７２】
様々な実装態様によれば、１つ以上のブローカシステムは、予測された未来のワークロードに基づいて、未来の期間にネットワークサーバの状態を調整することができる。また、プログラムされたコンピュータシステムは、履歴リクエストの属性の相関分析を実行し、相関分析に基づいて履歴要求を２つ以上のクラスに分類することを含め、要求の属性に基づいて、履歴要求を２つ以上の要求タイプクラスに分類することもできる。プログラムされたコンピュータシステムは、相関分析を実行する際に要求の属性のペア間のピアソン相関係数を計算し、要求の要求属性に基づいて、要求を２つ以上の要求に分割するためにクラスタリングアルゴリズムを使用することができる。また、高速フーリエ変換を周期性分析に使用して、２つ以上のクラスの１つ以上の要求属性のサイクル長を計算することもできる。
【００７３】
別の一般的な態様によれば、本発明は、企業コンピュータシステムに対するネットワークリソースのニーズを予想するコンピュータシステムおよび関連するコンピュータ実装方法を対象とする。プログラムされたコンピュータシステム（例えば、リソース予測コンピュータシステム２０）は、企業コンピュータシステムユーザのユーザ要求データに基づいて、未来の時間範囲ステップについて予測されたユーザリソース要求パターンを決定する。次いで、プログラムされたコンピュータシステムは、未来の時間範囲ステップに対する予測されたユーザリソース要求パターンの分類に基づいて、未来の時間範囲ステップについて企業が必要とする推奨サーバ数を計算する。そうすることで、プログラムされたコンピュータシステムは、未来の時間範囲ステップに対する予測されたユーザリソース要求パターンが増加として分類されるときに、第１の制御ポリシーを使用して推奨サーバ数を計算し、未来の時間範囲ステップに対する予測されたユーザリソース要求パターンが減少として分類されたときに、第２の制御ポリシーを使用して推奨サーバ数を計算する。
【００７４】
様々な実装態様では、第１の制御ポリシーは、比例定数Ｋを含む第１の式を使用して推奨サーバ数を計算し、第２の制御ポリシーは、比例定数Ｋを含む第２の式を使用して推奨サーバ数を計算する。その場合、プログラムされたコンピュータシステムは、単位期間内の単位ネットワークサーバの効率に基づいて、第１および第２の制御ポリシーに対して、比例定数Ｋをオンラインで調整することもできる。また、プログラムされたコンピュータシステムは、未来の時間範囲ステップに対する予測されたユーザリソース要求パターンが増加または減少として分類されないときに、第３の制御ポリシーを使用して推奨サーバ数を計算することもできる。３番目の制御ポリシーは、比例定数Ｋを含む（第３の）式を使用して推奨サーバ数を計算することもできる。
【００７５】
様々な実装態様では、未来の時間範囲ステップに対する予測されたユーザリソース要求パターンは１つ以上の条件が満たされると増加して分類され、この１つ以上の条件は、予測要求数が連続した時間範囲ステップの第１の閾値数（Ｎ１）を超えて増加したという第１の条件と、予測要求数が連続した時間範囲ステップの第２の閾値数（Ｎ２）を超えて第１の閾値パーセンテージより多く増加したという第２の条件と、を含む。また、増加の分類のための１つ以上の条件は、（ｉ）直前の時間範囲ステップが増加として分類され、かつ（ｉｉ）未来の時間範囲ステップが減少として分類されないという第３の条件を含むことができる。同様に、未来の時間範囲ステップに対する予測されたユーザリソース要求パターンは、１つ以上の条件が満たされると減少として分類することができ、この１つ以上の条件は、予測要求数が、連続した時間範囲ステップの第３の閾値数（Ｎ３）を超えて減少したという第１の条件、および予測要求数が、連続した時間範囲ステップの第４の閾値数（Ｎ４）を超えて第２の閾値パーセンテージより多く減少したという第２の条件を含む。（ｉ）直前の時間範囲ステップが減少として分類され、かつ（ｉｉ）未来の時間範囲ステップが増加として分類されないという、減少の分類のための第３の条件もある可能性がある。プログラムされたコンピュータシステムはまた、増加する未来の時間範囲ステップのために、企業によって必要とされる推奨サーバ数を計算するときに、現在使用されていない利用可能なネットワークサーバの容量を補償することもできる。
【００７６】
例えば、図１は、本発明の態様を理解するのに十分な企業コンピュータシステム１０の構成要素のみを図示していることに留意されたい。企業コンピュータシステム１０は、有線（例えば、ツイストペアケーブルを介したイーサネット（登録商標））または無線（例えば、Ｗｉ−Ｆｉ）の通信リンクを有する、多数の相互接続ネットワークされたＬＡＮ、ＷＡＮ、ＭＡＮなどを含むことができることを認識するべきである。ネットワークサーバ１８は、企業の要求に応じて多数の異なるタイプのリソースに対処することができ、クライアントコンピュータ１６は、ラップトップ、パーソナルコンピュータ、タブレットコンピュータ、スマートフォンなどのような、任意の好適なタイプのネットワーク対応エンドユーザコンピュータデバイスとすることができる。リソース予測コンピュータシステム２０は、１つ以上のネットワークコンピュータ装置によって実装することができる。リソース予測コンピュータシステム２０が複数のコンピュータ装置を含む場合、それらは１つ以上のＬＡＮ、ＷＡＮ、ＭＡＮなどによって相互接続ネットワークすることができる。さらに、企業コンピュータシステム１０は、サーバ１８をプロビジョニングするための追加のブローカコンピュータ４０を含んでもよい。
【００７７】
本明細書に記載のソフトウェアモジュールは、プロセッサ（複数可）２４がモジュールのソフトウェアプログラムを実行するときに、プロセッサ（複数可）２４が本明細書に記載のモジュールの機能を実行させるように、パイソン（Ｐｙｔｈｏｎ）などの任意の好適なコンピュータ言語で書かれた１つ以上のコンピュータプログラム内に実装することができる。命令のプログラムを実行するために好適なプロセッサ２４は、例として、一般および特殊用途の両方のマイクロプロセッサを含む。さらに、本明細書に記載の任意のコンピュータ構成要素は、単一のプロセッサまたは複数のプロセッサを含むことができる。プロセッサ２４は、読み出し専用メモリ、もしくはランダムアクセスメモリ、またはその両方から命令およびデータを受信する。
【００７８】
本明細書は、多くの具体的な実装態様の詳細を含むが、これらはいかなる発明の範囲または特許請求され得るものの限定としても解釈されるべきではなく、むしろ特定の発明の特定の実装態様に特有である可能性のある特徴の説明として解釈されるべきである。本明細書において別々の実装態様の文脈で記載されている特定の特徴は、単一の実装態様において組み合わせて実装することもできる。逆に、単一の実装態様の文脈で記載されている様々な特徴は、別々にまたは任意の好適な副次的組み合わせで複数の実装態様で実施することもできる。さらに、特徴は、ある組み合わせにおいて作用するものとして上で説明されてもよく、かつ当初はそのように特許請求されてもよいが、場合によっては特許請求された組み合わせからの１つ以上の特徴を切り取ることができ、また特許請求された組み合わせは副次的組み合わせまたは副次的組み合わせの変形を対象としてもよい。
【００７９】
同様に、動作は特定の順序で図面に描かれているが、これは望ましい結果を達成するためには、そのような動作が示された特定の順序または順次に実行されること、またはすべての図示された動作が実行されることが必要であるように理解するべきではない。特定の状況では、多重タスク処理および並列処理が有利な場合がある。さらに、上述の実装態様における様々なシステム構成要素の分離は、すべての実装態様においてそのような分離を必要とすると理解されるべきではなく、記載されたプログラム構成要素およびシステムは、概して単一の製品において統合することができ、または複数の製品にパッケージ化することができると理解されるべきである。
【００８０】
このようにして、主題の特定の実装態様を記載した。他の実装態様は、以下の特許請求の範囲内にある。場合によっては、請求項に記載されている動作は異なる順序で実行することができ、それでも望ましい結果を達成することができる。さらに、添付の図面に示されたプロセスは、望ましい結果を達成するために、示された特定の順序、または順次順序を必ずしも必要としない。特定の実装態様では、多重タスク処理および並列処理が有利である場合がある。
【図１】
0006756048.tif 000027
【図２】
0006756048.tif 000028
【図３】
0006756048.tif 000029
【図４】
0006756048.tif 000030
【図５】
0006756048.tif 000031
【図６】
0006756048.tif 000032
【図７】
0006756048.tif 000033
【図８】
0006756048.tif 000034