一般的な一態様では、本発明の実施形態を使用して、企業に対する未来のコンピュータリソースのニーズを予測することができる。1つの例示的な企業コンピュータシステム10が図1に図示されている。図1に図示されている企業コンピュータシステム10は、広域ネットワーク(WAN)14と相互接続された、いくつかのローカルエリアネットワーク(LAN)12を含む。各LAN12は、いくつかのクライアントコンピュータ16およびいくつかのネットワークサーバ18を含むことができる。ネットワークサーバ18は、実装態様に応じて、例えば、そのLAN12内の、または他のLAN12からのクライアントコンピュータ16用のコンピュータプログラム、データ、記憶装置、およびプリンタなどのコンピュータリソースをホストしてもよい。
リソース予測コンピュータシステム20は、様々な実施形態に従って、ネットワークサーバ18に対する多変量時系列(MTS)データに基づいて企業のリソース予測を実行し、MTSデータはデータベースコンピュータシステム22に格納される。リソース予測コンピュータシステム20およびMTSデータベースシステム22は、図示の目的でWAN14に接続されているものとして図1に示されているが、それらの一方または両方を図示されているLAN12のうちの1つに含めることができる。それらは、企業のネットワーク内の異なるLAN12とWAN14に接続することもできる。リソース予測コンピュータシステム20は、サーバ(複数可)、メインフレーム(複数可)、ワークステーション(複数可)、および/または任意の他の好適なコンピュータデバイスなどの1つ以上の相互接続されたコンピュータデバイスとして実装されてもよい。リソース予測コンピュータシステム20のそのような各コンピュータ装置は、1つ以上のプロセッサ24および1つ以上のメモリユニット26を含んでもよい。メモリユニット26は、一次コンピュータストレージ(例えば、RAMおよびROM)および二次コンピュータストレージ(例えば、HDD、SSD、フラッシュ)の両方を含んでもよい。プロセッサ(複数可)24は、図1に示し、さらに以下に記載するように、変数グルーピングモジュール30およびk最近傍(k-NN)探索モジュール32などの、メモリユニット26に格納されたコンピュータ命令(例えば、ソフトウェア)を実行するマイクロプロセッサ(複数可)を含んでもよい。図示の目的のために、図示されたリソース予測コンピュータシステム20は、1つのコンピュータのみを含み、ならびに1つのプロセッサ24および1つのメモリユニット26のみが図示されているが、本発明はそれに限定されず、リソース予測コンピュータシステム20を必要に応じてスケーリングすることができることを理解されたい。
MTSデータベース22は、企業システム10のネットワークサーバ18に対する時系列のコンピュータ使用率およびハードウェア統計を格納する。統計には、次のように、各ユーザリソース要求に関連するいくつかの変数の値(以下のものなど)を含めることができる。
-リソースを要求しているユーザのユーザ名
-要求の開始時間
-要求の終了時間
-要求の合計時間
-要求の動作時間
-要求されたプロセスまたはリソース
-要求に対処したネットワークサーバのID
-要求に対処したネットワークサーバの地理的位置
-CPU利用率-ネットワークサーバの一次メモリ(例えば、RAM)利用率
-ネットワークサーバのディスクIO(ディスクメモリまたは他の二次コンピュータメモリへの読み書き動作の合計)
MTSデータベース22は、データベース管理システム(DBMS)ソフトウェアを実行し、かつ好適なRAIDディスクアレイおよび/または任意の他の好適なデータ記憶機構を含む、必要に応じて1つ以上のデータベースサーバを用いて実装されてもよい。使用量およびハードウェア統計は、CSVファイルおよび/またはネットワークサーバ18からの任意の他の好適なデータフォーマットを使用してMTSデータベース22に送信されてもよい。各ネットワークサーバ18は、その周期的統計をMTSデータベース22に送信してもよく、および/またはLAN12内の1つ以上のネットワークサーバ18は、LAN12内の複数のネットワークサーバ18に関する統計を収集し、その収集をMTSデータベース22に送信することができる。MTSデータベース22は、例えば、オラクル(Oracle)またはSQLデータベース、または他の任意の好適なデータベースとして実装されてもよい。
様々な実施形態では、企業の未来のコンピュータリソースのニーズを予測するために、リソース予測コンピュータシステム20は、各関連変数が1つのクラスタのメンバーとなるように、かつ同じクラスタを有する変数間の依存性が高いが他のクラスタ内の変数と比較して非常に低いように、関連変数をクラスタへとグループ化する。プロセッサ24は、変数グルーピングモジュール30のソフトウェアを実行することによって、この機能を実行してもよい。クラスタが決定された後、リソース予測コンピュータシステム20は、予測を計算するために様々な実施形態においてk-NN探索を使用する。プロセッサ24は、k-NN探索モジュール32のソフトウェアを実行することによってこの機能を実行してもよい。
図2は、様々な実施形態によるMTSデータベース22とともにリソース予測コンピュータシステム20によって実行されてもよい予測プロセスのプロセスフローである。ステップ50において、MTSデータベース22は、企業のネットワークサーバ18に対する時系列使用量およびハードウェア統計変数を受信し、格納する。データは、5分ごと、10分ごと、または任意の他の好適な時間増分などの周期的な時間増分に対して収集される。次にステップ52において、リソース予測コンピュータシステム20は、データベース22に格納されているMTSデータを前処理して、ノイズを除去または低減し、かつ/または従来のデータ前処理技法を使用してデータを標準正規分布データへとスケーリングすることができる。
高次元時系列を扱うとき、すべての次元に基づく全体的なk-NN推定は、無関係なメトリクス間の干渉のために大きな誤差を持つ可能性がある。しかしながら、測定されたコンピュータハードウェアメトリクスのいくつかは、互いに密接に関連しており、同様の挙動を共有しているので、予測が単変量時系列から単に抽出されると、関連情報は失われることになる。すべての関連変数から集約された知識を利用するために、k-nn探索を実行する前、高次元MTSは、より小さいもののグループに分解され、ここでは同じグループ内の変数間の依存性は高いが、他のグループ内の変数との依存性は非常に低い。この動作は、図2のステップ54において、変数グルーピングモジュール30のソフトウェアを実行することによって、可変クラスタを生成するリソース予測コンピュータシステム20のプロセッサ24によって実行される。そのような分解はまた、モデル空間を大幅に狭めもするので、その後のk-NN探索を高速化する。様々な実装態様では、変数グルーピングは2つの段階、すなわち(i)相関行列構築、および(ii)変数クラスタリングを含む。
d個の変数を有し、かつ長さTのMTSが与えられた場合、2つの変数間の関連性を測定するために相関係数を使用することができる。一実施形態では、2つの変数間の関係の単調性のノンパラメトリックな尺度であるスピアマン(Spearman)の順位相関係数が使用される。スピアマン相関は、両方のデータセットが正規分布していると仮定しない。サイズnのサンプルの場合、未処理の変数X
i、Y
iは、ランクx
i、y
iに変換され、スピアマンの順位相関係数ρは、これらから次のように計算される。
式中、x
i、y
iは、未処理の変数を指し、バー付きのx、yは、変数の平均を指す。
ある変数がある時間差後に他の変数に影響を与える可能性があることに留意し、したがって、変数i、jの各対について、アルゴリズムは、0から予め定義された「MaxLag」期間まで探索でき、ρ
ijとなる最大係数を、以下のように選択することができる。
すべての変数の中で、対での相関係数は、n×n相関行列を形成するために計算される。以下の表1は、特定のネットワークサーバホストを用いた実験で構築された例示的な相関行列である。これは、より濃い灰色を有する対称行列が強い相関を示すことに留意されたい。
上記で構築した相関行列に基づいて、n個の変数をクラスタに分解するために分割方法を適用することができる。様々な実施形態において、アフィニティプロパゲーション(Affinity Propagation)(AP)クラスタリングアルゴリズムがこのステップで使用される。APは、データポイント間の「メッセージパッシング」の概念に基づくクラスタリングアルゴリズムである。k平均法(k-means)およびk-medoids法などの他の既知の分割方法とは異なり、APでは、アルゴリズムを実行する前にクラスタの数を決定または推定する必要はない。したがって、入力ハードウェアメトリクスが変化するにつれてグループ化の結果が変化する場合があるので、本実施形態により適している。APについてのさらなる詳細は、その全体が参照により本明細書に組み込まれる、Brendan J.Frey et al.,“Clustering by passing messages between data points,”Science 31:972-976(2007)に見出すことができる。
APアルゴリズムは、収束するまでサンプルの対間でメッセージを送信することによってクラスタを作成する。ポイント間で送信されるメッセージには2つのカテゴリがある。一方は、サンプルkがサンプルiの見本となるべきであるという責任であり、r(i,k)によって表される。もう一方は、サンプルiがサンプルkを見本として選択するべきであるという可用性であり、a(i,k)で表され:
となり、式中、s(i,k)は、サンプルiとkとの間の類似度である。アルゴリズムは、収束するまで2つの行列の計算を実行する。表2は、表1の行列に基づくクラスタリング結果を示す。
この例で分かるように、各変数0~6は、グループ/クラスタのうちの1つに属する。
可変クラスタが決定された後、ステップ56において、k-NNアルゴリズムが所望の予測をするために使用される。説明の目的のために、k-NN探索アルゴリズムは、一変量の状況について、および一定幅の時間間隔で測定された直前の一定数の過去のデータに基づく1ステップ先の値についてのみ最初に図示される。t=(1,2,・・・,T)の場合、予想範囲h=(1,2,・・・,H)に対して、点Tから予測xT+h(ここでxは⌒付き)行われる有限かつ等距離の時系列xtを考える。最初に、時系列の最近の状態の特徴を表すために、特徴ベクトルの集合が作成される。等しい長さmのセグメントは、m個の連続した観測値のシーケンスxm
t(ここでxは→付き)=[xt,xt-1,・・・,xt-(m-1)]Tのベクトルシーケンスxm
t(ここでxは→付き)とみなされ、ここで、mはサンプリング長と称される予め定められた整数である。ベクトルは、すべてのt=(m,m+1,m+2,・・・,T-m)、いわゆるm履歴と重複して作成されることに留意されたい。
次に、過去における行動の類似パターンを識別するために、様々な実施形態において、ユークリッド距離メトリクスなどの所与の距離メトリクスを使用して、すべてのm履歴と最後に観測されたベクトルx
m
t(ここでxは→付き)=[x
T,x
T-1,・・・,x
T-(m-1)]
Tとの間の距離がそれぞれ計算される。
最後に、すべてのm個の履歴に対する対での距離がランク付けされ、ターゲット特徴ベクトルまでの最小距離を有するk個のベクトルのその後の観測値がそれぞれ選択される。k個の最近傍の各々を局所的に重み付けすることができ、その後予測x
T+h(ここでxは⌒付き)を形成するために集約される。
式中、neigh
j,hは、近傍のjの範囲hに続く値であり、w
jは、重みを表す。図3は、一変量k-NN手法のための予測方法を図示するグラフである。基準期間(341~381日目)に最も近い2つの近傍(171~221日目と1~51日目)を示す。
多変量の場合、単変量の場合の参照(例えば、最新の)特徴ベクトルおよびm履歴は、多次元に拡張される。X
dをd次元の多変量時系列(MTS)とする。時間TにおけるMTSの未来を予測するためには、目標特徴行列は、
であり、式中x
m
T,i(ここでxは→付き)は、次元iで時間Tにおいて最後に観測されたベクトルを表す。同様に、距離メトリクスは、距離メトリクスの合計として定義することができる(例えば、すべてのd次元におけるユークリッド距離
m履歴にわたって探索することによって、MTSの現在の(または他の参照)状態に近いグローバルなk個の最近傍を見つけることができ、それらの各々は、m個の連続した観測のd個のベクトルによって構成される。k個の最近傍の範囲hを有する後続の値は、参照k×d行列として表すことができる。
各次元に対する予測値は、対応する次元での参照項目を集計することによって生成される。
ここで、各次元の近傍は、結果を形成するためにそれぞれ重み付けされる。一実施形態では、重みは、勾配降下アルゴリズムによって得られ、新しいデータと一致するように徐々に調整される。予測は、時間範囲の累積ユーザリソース要求とそれらの要求に対処するために必要なサーバリソースを予想することができる。したがって、予測は、時間範囲ステップに対して予測されたサーバワークロードをもたらす。拡張されたワークロード予想を得るために、このプロセスを追加の時間範囲ステップに対して繰り返すことができる。
図2のステップ58において、リソース予測コンピュータシステム20は、未来の時間範囲ステップにおけるサーバの数を推奨することができる。このようなサーバ数の予測は、多数の有益な目的のために使用することができる。そのような目的の1つは、企業が予想された数のサーバに基づいてそのサーバ18をプロビジョニングすることを可能にすることである。以下のメトリクスを含むいくつかの計算されたメトリクスがそのような能力計画において使用されてもよい。
・CPU/メモリ/ディスクの過負荷率および不足負荷率。これらのメトリクスの計算は、CPU、メモリ、およびディスクの過負荷値および不足負荷値(それぞれの過負荷閾値および不足負荷閾値を上回るまたは下回る)を平均することによって実行することができる。閾値は、例えば、過負荷の場合は90%、不足負荷の場合は10%とすることができる。
・CPU/メモリ/ディスクの過負荷時間率および不足負荷時間率。これらのメトリクスは、全体の期間と比較した、CPU/メモリ/ディスクが過負荷になっている(過負荷閾値を上回った)または不足負荷となっている(不足負荷閾値を下回った)時間の長さの比率に基づいて計算することができる。
・全体的な過負荷時間率および不足負荷時間率。この計算では、サーバのためのCPU/メモリ/ディスクメトリクスのいずれかが過負荷または不足負荷の場合、場合によっては、サーバが過負荷または不足負荷になっているとみなされる。
これらのメトリクスは、上述のk-NN予測されたCPU/メモリ/ディスクの負荷に基づいて、リソース予測コンピュータシステム20によって、未来の時間ステップのために予測することができる(ステップ56参照)。
これらの予想された過負荷メトリクス/不足負荷メトリクスは、推奨されたサーバ18の数(図1参照)など、企業コンピュータシステムのためのハードウェアリソースを推奨するための様々な推奨方法論に対する入力パラメータとして使用することができる。3つのそのような推奨方法論は、いわゆる「容量ベースのサーバ数推奨」(C-SNR)、「使用量ベースのサーバ数推奨」(U-SNR)、および「適応型サーバ数推奨」(A-SNR)である。C-SNRでは、サーバによって処理することができる要求の数が予め定められている。したがって、要求の総数が予測されると、サーバ数を簡単に導出することができる。U-SNRでは、ユーザがサーバ要求を実行する最も可能性の高い時間は、ユーザの使用経過および分類に基づいて既知である。要求に対するユーザの平均負荷値もユーザの分類に基づいて認識されるため、ユーザの要求によってシステムにもたらされると予想される負荷を予測することができる。サーバ容量を最大限に活用しようとする割り当てアルゴリズムを適用することによって、サーバ数を決定することができる。A-SNRでは、比率(実際には閾値)を使用して、新しいユーザセッションを送信するサーバおよび新しいサーバを追加するべきかどうかを決定する。新しい要求が出されたとき、最初の試みは、現在稼働中のサーバがその要求に対処することである。要求は、分類結果から推定される潜在的な負荷レベルに基づいて現在のサーバに割り当てられる。過負荷状態のために新しい要求を現在アクティブなサーバに割り当てることができない場合、要求に対処するために新しいサーバが追加される。同様に、要求が完了すると、残りのワークロードをサーバ18間で再均衡化することができる。
このメトリクスのうちのどれが使用されようと、または他のメトリクスが使用されようと、リソース予測コンピュータシステム20は、予想されたユーザのワークロードに基づいて、特定の期間について企業にとって適切な数のサーバ18を予想することができる。リソース予測コンピュータシステム20は、これらのサーバ数推奨をネットワークサーバ18に対するブローカ(図1参照)として機能するネットワークサーバ40に通信することができる。リソース予測コンピュータシステム20から伝達された決定に基づいて、このブローカサーバ(複数可)40は、LAN12内のいくつのサーバ18を、様々な時点で起動(フルアクティブ、動作モード)および、または低電力モード(例えば、アイドルモードまたはスリープモード)にするべきかを決定することができ、それに応じてサーバ18に命令することができる。このようにして、ネットワークサーバ18のうちのいくつかは、予想された使用法および/または負荷パターンに基づいて、それらが必要とされ予想されていない期間中に低電力モードにすることができる。例えば、図1を参照して、リソース予測コンピュータシステム20は、特定の期間に必要とされる予想数のネットワークサーバ18を決定することができる。予想は、1つのLAN12内のネットワークサーバ18または複数のLAN12にわたるネットワークサーバ18に対するものとすることができる。リソース予測コンピュータシステム20は、この数をブローカサーバ40に送信することができ、これは、そのLAN12および/または他のLAN12内の様々なサーバ18に、適切なときに動作可能な高電力モード(ユーザのリソース要求を処理することができる)にあるか、または低電力モード(ユーザのリソース要求を処理できない)にあるように命令することができる。ネットワークサーバ18は、それに応じて命令された電力モードを仮定することができる。このようにして、予想されたネットワークリソースのニーズが低いときには、エネルギーおよび関連するコストを節約するために、ある数のネットワークサーバ18を低電力モードにすることができる。逆に、予想されたネットワークリソースのニーズが高いときには、十分な数のネットワークサーバ18が予想されるユーザ要求負荷に対処するように準備されることになる。
様々な実施形態において、プロセッサ24は(k-NN探索モジュールソフトウェア32を実行するとき)、k-NN探索の前にk-NN探索のためのkおよびmパラメータを選択する。モジュール32は、異なるデータセットに対する予想誤差を最小にするために、kおよびmパラメータを調整するために高クライミングアルゴリズムを使用してもよい。問題に対する恣意的な解(この場合は、kおよびmパラメータ)から始まる高クライミングアルゴリズムの反復アルゴリズムは、次いで、解の単一要素を漸増的に変更することによって、より良好な解を見つけようとする。その変更がより良好な解を生み出す場合、それ以上の改善を見出すことができなくなるまで繰り返される新しい解への漸増変更が行われる。他の実施形態では、kおよびmパラメータは、再確立される。
K最近傍を有する予測間の関係は、時間とともに変化する可能性がある。したがって、重みは、好ましくは、時間とともに調整される。Traint=[xt-1,xt-2,・・・,xt-n]は、時間tにおけるサイズnの学習セットを表すと仮定する。xtは、時間tにおける真の値であり、ytは、時間tに対する予測値である。以前に取得した重みに基づいて、ytをTraintに基づいて予測することができる。xtの真の値が分かった後、Traint+1=[xt,xt-1,・・・,xt-n+1]に基づいて重みを更新することができ、この新しい重みは、yt+1の予測に使用される。
別の一般的な問題は、企業で必要なコンピューティングリソースが動的に変化することである。企業が最高のワークロードに対応するサーバ数を維持している場合、ワークロードが低い時間の間、そのような多数のサーバを必要としないため、これは大きな無駄になる。ユーザの要求を満たすのに十分なサーバを維持するだけでなく、可能な限りエネルギーを節約するという目標を達成するためには、ワークロードを予測する必要がある。したがって、本発明の様々な実施形態は、予測およびストライプサンプリング手法に基づくワークロード生成方法を提供する。単位時間内の未来の要求数を予測し、要求の特徴を分析し、それに応じて要求を分類し、スライスサンプリング戦略を決定することによって、未来の詳細ワークロードデータを生成することができる。未来のワークロードデータは、サーバリソースを動的に調整するためのベースを提供することができる。
一般的な一態様では、予測およびストライプサンプリング手法をステップへと分割することができる。第1に、時系列予測モデルを適用して単位時間内の要求数を予測する。k最近傍(KNN)アルゴリズムに基づいて、要求数時系列データ内の現在のサブシーケンスに類似するK個のサブシーケンスが探索される。次いで、線形回帰モデルを適用して、K個の最近傍シーケンスによって与えられる予測を最終予測結果に合成することができる。
第2に、要求の特徴を分析する。各要求は、異なるリソース(CPU負荷、メモリなど)を消費する。さらに、各要求の長さを予測する必要がある。様々な実施形態に従って、分析を3つのタイプへと分割することができる。
a.相関分析。要求の異なる属性に対して相関分析を実行することができる。2つの属性が相関している場合、それらは互いに依存するが、一方で相関していない2つの属性は互いに影響しない。
b.分類要求。関連性の高い属性で要求を分類することによって、要求を、内部記憶コストの低い短期間の要求、内部記憶コストの低い長期間の要求、内部記憶コストの高い長期間の要求などの、異なるタイプへと分割することができる。
c.周期分析。周期的な要素によってもたらされるマイナスの影響は、取り除かれるべきである。要求は、勤務時間と非勤務時間との間に著しい違いを示している。要求をサンプリングすることが望まれる場合、同様の周期的時間内の要求がサンプリングのために選択されるべきである。
第3に、スライスベースのサンプリングおよび期間ベースのサンプリングの組み合わせを用いて、各カテゴリの割合に従って過去のデータから要求が選択され、これらの要求データが最終的な予測にまとめられる。
このプロセスには、ワークロードが複数のメトリクスに基づいて測定されるという利点があり、これにより、単一のメトリクスの制限を克服する。別の潜在的な利点は、未来の要求数および様々なメトリクスに対する各要求の影響を考慮しながら、各要求によってもたらされるワークロードをモデル化することによってより正確な予測を行うことである。そのようにして、この方法は、全体的なワークロード予想手法の制限を克服する。
図4は、リソース予測コンピュータシステム20の図であり、図5は、本発明の様々な実施形態による将来のワークロードトレースを生成するために、この予測およびストライプサンプリング戦略を実施するためにリソース予測コンピュータシステム20によって実行されるプロセスフローの図である。図3に示すように、そのような実施形態によれば、リソース予測コンピュータシステム20は、未来のワークロードトレースを生成するための予測およびストライプサンプリングモジュール60を含んでもよい。予測およびストライプサンプリングモジュール60は、メモリ(複数可)26に格納され、かつリソース予測コンピュータシステム20のプロセッサ(複数可)24によって実行されるソフトウェアコードとして実装されてもよい。図5の例示的なプロセスフローは、予測およびストライプサンプリングモジュール60のコードが実行されるときに、リソース予測コンピュータシステム20によって実施することができる。さらに、データベース22は、ネットワークサーバのユーザによる過去の要求に関するデータを格納することができる。
ステップ62において、単位時間当たりの要求数が予測される。単位時間ごとにユーザによっていくつの要求が送信されるかを予測する問題は、時系列予測問題としてモデル化することができる。したがって、K個の最近傍分類アルゴリズムを使用して、データベース22内に格納されている
過去のデータから現在のサブシーケンスと同様のサブシーケンスを見つけ出すことができる。次いで、これらの類似のサブシーケンスに基づいて得られた予測を一緒に組み合わせて、最終予測結果を生成することができる。時間間隔が単位時間Tであると仮定すると、各単位時間内に発生する要求数は、N=[n
1,n
2,・・・,n
p]として表すことができ、式中、n
1は、i番目の単位時間内に発生した要求数であり、pは、次のように表すことができる。
要求数が現時点のそれらと類似している場合を見つけるために、最新のm個の観測値からなるサブシーケンスを描画することができる。
もう一方の観測は、次のように表すことができる。
複数のサブシーケンスN
i,i+m-1=[n
i,・・・,n
i+m-1]は、N
nowに最も類似する
過去のデータから見出すことができる。
過去のサブシーケンスと現在のサブシーケンスとの間の類似性を測定するための評価基準を使用することができる。Dis(X,Y)を2つの時系列間の類似性を測定するための距離関数とする。距離関数ユークリッド距離を使用することができ、これは以下の通りである。
各過去のサブシーケンスと現在のサブシーケンスとの間の距離を計算することができる。過去のシーケンスは、サブシーケンスセット{N1,1+m-1,N2,2+m-1,・・・,Np-2*m+1,p-m}へと分割することができる。次いで、範囲0<i≦p-2*m+1でiを見つけるために距離を計算することができ、それは、Dis(Ni,i+m-1,Nnow)の値が最小になるようにする。次いで、現在のものに最も類似したサブシーケンスNi,i+m-1を決定することができる。
セット内のすべての過去のサブシーケンスについて、距離di=Dis(Ni,i+m-1,Nnow)を計算して距離セットD={d1,d2,・・・・・・,dp-2*m+1}を得ることができる。D内のすべての要素がソートされた後、最近接距離[da,db,・・・・・・,dk]を決定することができ、距離[a,b,・・・,・・・,k]のインデックスは、最も類似したサブシーケンスのインデックスである。
これらK個の最近傍シーケンスの直後のサブシーケンスは、最終予測を生成するために結合されるのが好ましい。2つの要因を考慮することが好ましい。第1に、類似性は、モデルで考慮されるべきであり、概して、類似性が高いものほどより大きい重みを有するべきである。第2に、サブシーケンスの出現時間、概してより最近の出現時間はより大きい重みを有するべきである。したがって、様々な実施形態では、k個のサブシーケンスは、現在のサブシーケンスとの類似性および発生時間に従ってソートされる。次いで、線形回帰手法を適用して、k番目の予測に対する重みを学習することができる。
次に、ステップ64において、要求特徴または属性が分析される。属性は、上述のように、要求の持続時間、ディスクIO、CPUおよび/またはメモリ使用率などの要求データを含むことができる。このステップ64は、様々な実施形態による3つのサブステップ、ステップ66における訂正分析、ステップ68における要求分類、ステップ70における周期性分析を含むことができる。訂正分析ステップ66において、各要求は概して、異なるワークロードを様々なコンピュータリソースにもたらす。したがって、ワークロードを特徴付けるために、複数の特徴を使用するべきである。1つの問題は、これらのワークロード特徴に相関があるかどうかである。例えば、CPUの消費量が少なくなると、ディスク入力/出力の消費量も減少するという主張が、あるアプリケーションに当てはまるかどうかが分かるはずである。
様々な実施形態に従って、ピアソン相関係数をこのステップで使用することができる。要求ワークロードが2つの特定の特徴を有していると仮定すると、これは2つの時系列X=[x
1,x
2,・・・,x
N]およびY=[y
1,y
2,・・・,y
N]によってさらに表すことができ、式中、i番目の要求の値は(x
i,y
i)として表すことができ、これら2つの特徴間の相関関係は、次のように表すことができる。
この相関係数の絶対値が大きいほど、相関度は高い。値が0に近い場合、2つの特徴は、ほぼ独立していることを示す。
要求分類ステップ68に関しては、特徴数に対する特徴値の分布を観察することによって、いくつかの特徴が複数のピークを有することがあり、これは特徴値を分類することができることを示す。要求をクラスの比率に従って過去からサンプリングすることができるように、異なるタイプへと分類することができる。分類プロセスの間、分類は、相関のある特徴についてなされるべきである。このステップでは、古典的なk平均法クラスタリングアルゴリズムに基づく二等分K平均法を、局所最適解に陥ることを回避するために使用することができる。このクラスタリングアルゴリズムは、3つのステップに分割することができる。第1のステップは、クラスタリング中心を見つけることであり、第2のステップは、各点とクラスタ中心との間の距離を計算し、各点を最も近いクラスタに入れることであり、第3のステップは、すべてのクラスタ座標の平均値を新しいクラスタ中心として計算することである。二等分K平均クラスタリング法は、最初にすべての点を1つのクラスタの中へと入れ、次いで1つのクラスタを2つに分割し、最後に最大誤差を低減させることができるクラスタを2つのクラスタに分割することを選択することによってさらに強化することができる。このプロセスは、クラスタの数がユーザによって与えられたKの数に等しくなるまで繰り返すことができる。
循環的要因は、予測における重要な要因である。サーバへの要求は、人々から行われるため、勤務時間と勤務時間外の要求数が異なることは明らかである。したがって、循環的要因の影響は、周期性分析ステップ70において考慮されるべきである。一実施形態では、高速フーリエ変換(FFT)を使用して、要求特徴シーケンスのサイクル長を計算することができる。時間間隔tにおける特性xiの平均値を得ることができる。次いで、サンプリングレートfs=1/tで、時系列f(n)、式中n=0,1,2,・・・,N-1、を決定することができる。
f(n)の離散フーリエ変換(DFT)をF(k)と仮定して、
を得ることができ、式中、
k=0,1,2,・・・,N-1である。DFTを得た後、各kは、次のように表すことができる、離散周波数値に対応する。
シーケンスが周期的である場合、フーリエ変換関数のスペクトルは、周期の逆数でヒットし、衝撃値によってf(n)の周期を得ることができる。単一の特徴によって表される要求負荷については、対応するサイクル時点から要求をサンプリングすることだけが必要とされる。複数のカテゴリへと分類されている要求については、あらゆる時間単位における各カテゴリの比率を予測することができ、これはステップ62で導入されたK-NN手法を採用することによって行うことができる。
分析の結果により、ステップ72において、未来の要求をシミュレートするために、
過去のデータから要求データを抽出することができる。周期性分析により、サイクルの長さがT
peridであることが示されたと仮定する。分類では、要求は、K個のクラスに分割され、
過去の要求収集N
historyは、いくつかのサブセットに分割される。
p個の要求がある時間間隔tpredictで未来発生すると予測され、k-stクラスの予測された比率がwkであると仮定する。したがって、カテゴリkの要求数は、pk=wk*pである。過去のサブセットNtpredict,k,pkのサイズの範囲内で、要求を選択するために、乱数を生成することができる。次いで、すべてのカテゴリの要求を、シミュレートされた未来の要求の集合体に統合することができる。各過去の要求の発生時刻は、各単位時間間隔内で固定されていない。その相対的な開始時間は、次のように表すことができる。
tunit=tactual-kT、k=0,1,2,・・・
未来の要求シーケンスのシミュレーション中に、実際の要求時間は、tpredict=tunit+tperiodとして表すことができる。
上記の方法により、未来のワークロードトレースを生成することができる。また、未来のワークロードトレースに基づいて、予想されるワークロードに基づいて企業のユーザのニーズを満たすことができるように未来の期間についてサーバ数推奨を行うことができる(図2のステップ58参照)。
上述の解決策の1つの利点は、ワークロードが複数のメトリクスに基づいて測定されることであり、これは単一のメトリクスの制限を克服する。別の利点は、未来の要求数と各要求が様々なメトリクスに与える影響を考慮しながら、各要求によってもたらされるワークロードをモデル化することで、より正確な予測を行うことである。そのため、この解決策は、全体的なワークロード予想手法で経験した制限を克服する。
予想された使用パターンの別の潜在的な有益な用途は、サービスとしてのデスクトップ(DaaS)を提供するクラウドコンピューティングベンダーによってホストされている、仮想デスクトップに移行する企業向けである。企業は、予測を実行して、CPU数、RAM容量、および/またはストレージ容量などの、予想されたDaaSリソースサイズを決定することができる。そのようにして、企業は、そのニーズのために過度に多くのクラウドコンピューティングリソースを保有しておくこと(かつ、それによってそのニーズのために過払いすること)、および過度に少ないラウドコンピューティングリソースしか保有しておかないこと(かつ、それによってそのユーザに対する必要とされるリソースを有しないこと)を回避することができる。
別の有益な用途は、企業が特定のワークロードまたはリソースに対して必要とするネットワークサーバ18の数を決定することである。(上述の推奨方法のいずれかに従って)必要なサーバ数を示す特定のリソースに対する企業の予想された使用パターンに基づいて、企業は適切な数のサーバを調達することができる。例えば、システムが高負荷状態にあるとき、コントローラは要求を共有するために、例えば、仮想サーバなどのサーバをシステムに追加する。システムの負荷が低い場合、コントローラは、余分なリソースを返してコストを削減する。図6は、そのような決定をするためのコントローラ120(例えば、図1に示されているリソース予測コンピュータシステム20)を図示している。
システムの要求は、時系列データとして説明することができ、すなわち要求の数は、時間とともに周期的に変化している。例えば、昼間の要求は、概して夜間の要求よりも多くなる。本発明の様々な実施形態では、コントローラ120は、未来の要求を予測し、異なる方針に従ってシステムを調整する。プロセスの一般的なステップは、図6に関連して以下に説明される。
k-NN予測部122は、未来の要求を予測するためにk-NNアルゴリズムを使用する。様々な実施形態では、予測部122は、特定の期間数ではなく、次の期間中に要求パターンを予測するだけである。要求パターンは、増加、減少、および変動の3つのタイプに分割することができる。要求パターンは、要求数がX1期間(例えば、3期間)にわたって増加した場合、またはZ1期間(例えば、Z1=2)中にY1%(例えば、40%)を超えて増加した場合、増加として分類することができる。増加パターンの後の次のパターンもまた、それらが連続的な増加しない期間を満たすまで増加パターンとして分類されることになる。Z2期間(例えば、Z2=Z1=2)中に要求数がX2期間にわたって減少し続ける(例えば、X2=X1=3)、またはY2%を超えて減少する(例えば、Y2=Y1=40%)場合、要求パターンは、減少として分類される。他のパターンは、変動として分類され、これを除いて様々な実施形態では、増加または減少パターンに続く期間も、場合によっては減少期間または増加期間が生じるまで、増加または減少に分類することができる。
図7は、1日の典型的なサービスシステムの負荷を示す。この例では、サンプル期間は、15分ごとである。この例では、午前7時から午前8時まで、要求データは、増加傾向にある。要求数は、この時間枠内でわずかな減少期間を有して急速に増加する。午前8時から午前9時まで、要求数は、減少パターンにあり、要求数は、この1時間の期間の大部分で減少する。午前10時から午後2時(すなわち、時間/時間軸上で14時)まで、要求データは、この4時間の期間中要求数が変動し続けるので、変動パターンにある。他の期間も同様に分類することができる。要求パターンを3つのタイプに分割した後、k-NN予測部122は、次の制御サイクルのための要求パターンを予測する。すべての制御サイクルの要求数が記録される。予測部122は、いくつかの連続する点(例えば、5つの連続する点)を1つのグループとしてグループ化し、最新のデータグループを分類するためのサンプルデータとする。次いで、k-NN予測部122は、過去のデータから類似グループを探索する。様々な実施形態において、要求は通常周期性を示すので、k-NN予測部122は、履歴内の類似の周期的時間を探索する。2つのグループ間の分散は、それらの間の類似度を決定するために使用される。次いで、k-NN予測部122は、K個の最も類似したグループ(例えば、K=5)を選択する。これらの類似のグループを見つけた後、k-NN予測部122は、グループの次の期間のパターンを得て、次の期間に対する要求パターンの予測として最も高い頻度のパターンを取る。
3つのパターンは、異なる特徴を有している。その結果、意志決定部126は、異なる制御方針を適用することができる。増加するパターンでは、仮想プロバイダーからサーバリソースを取得してサービスの開始を待つのに時間がかかるため、事前にサーバを追加する必要がある。以下の式は、追加サーバの必要数を計算するために使用することができる。
ここで、u(t)は、時刻tにおける制御出力であり、これは追加するサーバ数であり、e(t)は、システムの負荷と理想的な負荷との偏差であり、Kは、比例係数であり、r´(t)は、時間tにおける予測要求数であり、T
cは、制御周期であり、Aは、予測影響係数である(予測が制御プロセスにどの程度影響するかを決定する)。式の右側の第1の部分(すなわち、Ke(t))は、従来の比例制御である。第2の部分(すなわち、AK(r´(t+T
c)-r´(t)))は予測の影響を制御プロセスに導入し、予測影響係数によって出力に影響を与える。
減少パターンでは、サーバの低減が遅延をもたらすことはめったにないので、事前にサーバを減少させる必要性はほとんど、またはまったくない。したがって、意思決定部126は、システムの負荷が低いときにサーバを閉じてサーバに戻すことができる。計算は、式u(t)=Ke(t)に従って行うことができる。増加パターンに対する上述の式と比較して、減少パターンの式は、比例制御部分のみを含む。
変動パターンでは、意思決定部126は、要求が頻繁に変動する場合があるので、システムの負荷の変化に慎重に対処しなければならない。意志決定部126が、負荷に応じてサーバを変動させるだけの場合、サーバの起動と停止を繰り返すことで発生するエネルギー消費コストに加えて、サーバが1時間単位で支払われるため、システムが不安定になり、多大な無駄が生じる可能性がある。そのため、変動パターンについては、意思決定部126は、以下の式を使用することができる。
e(t)≧0のとき、意志決定部126は、比例制御によってサーバを追加するだけである。e(t)<0の場合、これはサーバ数を低減する必要があり得ることを意味し、意思決定部126は、最後の3つの制御期間(または他のいくつかの制御期間)にわたる負荷レベルを収集し、これらの期間すべての間システムが低負荷状態にあった場合、コントローラは、(3つの制御期間のうちの)負荷が最も大きい制御期間を選択して、減少パターンについて上述したようにクローズして戻すサーバ数を計算する。制御ポリシーの目的は、システムの安定性を確保しながらサーバ数を安定させることである。
サーバを追加することは、いくらかの遅延を有する場合があるため、コントローラ120は、遅延の影響を補償するためにスミス予測部124を含んでもよい。スミス予測部124は、利用可能/購入されているがまだ使用されていないサーバ数を入力として受信することができる。この入力に基づいて、スミス予測部124は、これらのサーバの容量を推定し、これらの保留容量をシステムの現在の負荷に対して補償する。次いで、補償されたシステムの負荷は、意思決定プロセスで使用するために意思決定部126に配信される。スミス予測部124の原理は、様々な実施形態において、補償部分がシステムのフィードバックに導入され、それが遅延されたフィードバック量を事前に意志決定部126に入れることである。
図8は、本発明の様々な実施形態によるコントローラ120の伝達関数である。この図では、G
0(s)e
-tsは、システム内の遅れを表し、スミス予測部の伝達関数は、G
0(s)(1-e
-ts)である。スミス予測部124は、k-NN予測部122 G
τ(s)に接続され、純粋な時間遅延補償を有するコントローラが形成される。スミス予測部を追加すると、システムの閉ループ伝達関数は、次のようになる。
特性方程式は、次のとおりである。
特性方程式内の遅延項は、スミス予測部の補償後に除去され、これはシステムに対する遅延の影響を低減することが分かる。
学習部128は、システム負荷および状態情報を収集し、その情報を使用して、意思決定部126において比例係数Kをオンラインで調整する。比例係数Kは、コントローラ120がシステムの負荷にどのように反応するかを決定する。K値が大きいほど、より多くの調整が行われるが、それによってシステムはより変動しやすくなる。学習部128は、式に従ってオンラインでKを調整することができ
式中、Tは、サンプリング期間の長さであり、sは、この期間の平均サーバ数であり、rは、この期間の完了した要求数であり、sT/rは、単位時間あたりの単位サーバの効率を表し、Lは、修正係数で、調整率を決定する。Lの値が大きいと、Kの応答はより速くなるが、変動にもつながる場合がある。
コントローラ120は、部材26に格納されている適切なソフトウェア命令を用いて上述のプロセスを実施することができ、コンピュータシステム20のプロセッサ(複数可)24によって実行される(図1参照)。例えば、メモリ26は、上述のプロセスを実施するためにプロセッサ(複数可)24によって実行される、k-NN予測、スミス予測、学習、および意思決定のためのソフトウェアモジュールを含んでもよい。その結果をブローカコンピュータシステム40に提供することができ、場合によっては、それはネットワークサーバのランプアップまたはランプダウンを実行することができる。これら4つの部分(122、124、126、128)を組み入れ、様々な要求パターンに対して異なる制御ポリシーを適用することによって、本発明の実施形態は、ほとんどの期間にわたって、スケーラブルクラウドシステムに適切な制御を行うことができ、システムの性能を保証し、かつ不要なコストを削減する。
さらに別の有益な用途は、仮想ユーザのワークロードのシミュレーションである。仮想システムの模擬負荷テストのために、実際のクライアントワークロードに基づいた履歴的な時間データおよび未来の時間データを生成することができる。
したがって、様々な実施形態では、本発明は、企業コンピュータシステムに対するネットワークリソースのニーズを予想するコンピュータシステムおよび関連するコンピュータ実装方法を対象とする。様々な実施形態によれば、コンピュータデータベースシステムは、複数のネットワークサーバに関する多変量時系列(MTS)性能データを受信して格納する。MTS性能データは、一連の過去のサンプリング時間についての複数のネットワークサーバに対する複数のd個の性能変数に対するデータを含む。プログラムされたコンピュータシステム(例えば、リソース予測コンピュータシステム20)は、MTS性能データ内の性能変数の各々が変数グループに属するように、MTS性能データ内の変数を2つ以上の変数グループにグループ化する。次いで、プログラムされたコンピュータシステムは、1つ以上の未来の時間範囲ステップで変数の予測を計算することによって、企業コンピュータシステムのネットワークサーバの未来のワークロードの予測を計算する。プログラムされたコンピュータシステムは、以下を含むステップを実行することによって予測を計算する。
(i)2つ以上の変数グループに適用されるk最近傍探索アルゴリズムを使用して、MTS性能データの基準状態に対するk個の最近傍を見つけること、および
(ii)k個の最近傍の加重平均を計算すること。次いで、プログラムされたコンピュータシステムは、計算された予測に基づいて、1つ以上の未来の時間範囲ステップの各々において、企業コンピュータシステムのユーザによるリソース要求に対処するために、企業が動作モードにあるために必要な推奨ネットワークサーバ数を決定することができる。
様々な実装態様では、複数のネットワークサーバに対する性能変数は、少なくとも、単位期間あたりのCPU負荷、一次コンピュータメモリ利用率、および二次コンピュータストレージ入出力(IO)操作を示す変数を含む。また、変数をグループ化するステップは、プログラムされたコンピュータシステムによって、性能変数の各対間の相関を示す相関行列を計算するステップと、プログラムされたコンピュータシステムによって、クラスタリングアルゴリズムを使用して相関行列に基づいて変数グループを決定するステップと、も含んでもよい。相関行列はスピアマン相関行列を含んでもよく、クラスタリングアルゴリズムは、アフィニティプロパゲーションクラスタリングアルゴリズムを含んでもよい。
また、MTS性能データの基準状態に最も近いk個の最近傍を見つけるステップは、(i)MTSの基準状態を表すベクトルとMTSデータを表す複数のベクトルの各々との間の距離をそれぞれ以前のサンプリング時間において計算することと、(ii)MTSの基準状態を表すベクトルまでの距離が最も小さい過去のサンプリング時間についてk個のベクトルを決定することと、を含んでもよい。計算された距離は、ユークリッド距離であってもよい。
さらに、プログラムされたコンピュータシステムは、未来の時間範囲ステップのうちの少なくとも1つについて、企業コンピュータシステムのユーザによるリソース要求に対処するために、企業が動作モードにあるために必要な推奨ネットワークサーバ数を示すデータを送信してもよい。したがって、1つ以上のブローカコンピュータシステムは、推奨ネットワークサーバ数が少なくとも1つの未来の時間範囲ステップの間ユーザによるリソース要求に対処するための動作モードになるように、ネットワークサーバに命令してもよい。
別の一般的な態様では、本発明は、未来の期間にわたるネットワークサーバの未来のワークロードを予測するためのコンピュータシステムおよび関連するコンピュータ実装方法を対象とする。プログラムされたコンピュータシステム(例えば、リソース予測コンピュータシステム20)は、期間のk個の最も最近のサブシーケンスのソートに基づいて、未来の期間についての要求数pを予測し、単位時間T当たりの企業コンピュータシステムのユーザによるネットワークサーバへの要求数は、最近の期間の現在のサブシーケンスと最も類似している。次いで、プログラムされたコンピュータシステムは、(データベース22に格納されたデータに基づいて)過去の要求を要求の属性に基づいて2つ以上の要求タイプクラスに分類する。次いで、プログラムされたコンピュータシステムは、2つ以上の要求タイプクラスの各々における過去の要求の比率に基づいて、2つ以上の要求タイプクラスの各々について、未来の期間における要求の比率を予測する。次いで、プログラムされたコンピュータシステムは、要求タイプクラスについて1つ以上の要求属性に対する周期性を決定する。次いで、プログラムされたコンピュータシステムは、p個のサンプルが、2つ以上の要求タイプクラスの各々の予測比率を有するように、かつp個のサンプルが、要求タイプクラスの周期性に基づいて、将来の期間と同じ要求サイクルポイントからのものであるように、p個の過去の要求をサンプリングする。最後に、プログラムされたコンピュータシステムは、p個のサンプリングされた過去の要求を合成して未来の期間のネットワークサーバに対するワークロードトレースを得る。
様々な実装態様によれば、1つ以上のブローカシステムは、予測された未来のワークロードに基づいて、未来の期間にネットワークサーバの状態を調整することができる。また、プログラムされたコンピュータシステムは、過去のリクエストの属性の相関分析を実行し、相関分析に基づいて過去の要求を2つ以上のクラスに分類することを含め、要求の属性に基づいて、過去の要求を2つ以上の要求タイプクラスに分類することもできる。プログラムされたコンピュータシステムは、相関分析を実行する際に要求の属性のペア間のピアソン相関係数を計算し、要求の要求属性に基づいて、要求を2つ以上の要求に分割するためにクラスタリングアルゴリズムを使用することができる。また、高速フーリエ変換を周期性分析に使用して、2つ以上のクラスの1つ以上の要求属性のサイクル長を計算することもできる。
別の一般的な態様によれば、本発明は、企業コンピュータシステムに対するネットワークリソースのニーズを予想するコンピュータシステムおよび関連するコンピュータ実装方法を対象とする。プログラムされたコンピュータシステム(例えば、リソース予測コンピュータシステム20)は、企業コンピュータシステムユーザのユーザ要求データに基づいて、未来の時間範囲ステップについて予測されたユーザリソース要求パターンを決定する。次いで、プログラムされたコンピュータシステムは、未来の時間範囲ステップに対する予測されたユーザリソース要求パターンの分類に基づいて、未来の時間範囲ステップについて企業が必要とする推奨サーバ数を計算する。そうすることで、プログラムされたコンピュータシステムは、未来の時間範囲ステップに対する予測されたユーザリソース要求パターンが増加として分類されるときに、第1の制御ポリシーを使用して推奨サーバ数を計算し、未来の時間範囲ステップに対する予測されたユーザリソース要求パターンが減少として分類されたときに、第2の制御ポリシーを使用して推奨サーバ数を計算する。
様々な実装態様では、第1の制御ポリシーは、比例定数Kを含む第1の式を使用して推奨サーバ数を計算し、第2の制御ポリシーは、比例定数Kを含む第2の式を使用して推奨サーバ数を計算する。その場合、プログラムされたコンピュータシステムは、単位期間内の単位ネットワークサーバの効率に基づいて、第1および第2の制御ポリシーに対して、比例定数Kをオンラインで調整することもできる。また、プログラムされたコンピュータシステムは、未来の時間範囲ステップに対する予測されたユーザリソース要求パターンが増加または減少として分類されないときに、第3の制御ポリシーを使用して推奨サーバ数を計算することもできる。3番目の制御ポリシーは、比例定数Kを含む(第3の)式を使用して推奨サーバ数を計算することもできる。
様々な実装態様では、未来の時間範囲ステップに対する予測されたユーザリソース要求パターンは1つ以上の条件が満たされると増加して分類され、この1つ以上の条件は、予測要求数が連続した時間範囲ステップの第1の閾値数(N1)を超えて増加したという第1の条件と、予測要求数が連続した時間範囲ステップの第2の閾値数(N2)を超えて第1の閾値パーセンテージより多く増加したという第2の条件と、を含む。また、増加の分類のための1つ以上の条件は、(i)直前の時間範囲ステップが増加として分類され、かつ(ii)未来の時間範囲ステップが減少として分類されないという第3の条件を含むことができる。同様に、未来の時間範囲ステップに対する予測されたユーザリソース要求パターンは、1つ以上の条件が満たされると減少として分類することができ、この1つ以上の条件は、予測要求数が、連続した時間範囲ステップの第3の閾値数(N3)を超えて減少したという第1の条件、および予測要求数が、連続した時間範囲ステップの第4の閾値数(N4)を超えて第2の閾値パーセンテージより多く減少したという第2の条件を含む。(i)直前の時間範囲ステップが減少として分類され、かつ(ii)未来の時間範囲ステップが増加として分類されないという、減少の分類のための第3の条件もある可能性がある。プログラムされたコンピュータシステムはまた、増加する未来の時間範囲ステップのために、企業によって必要とされる推奨サーバ数を計算するときに、現在使用されていない利用可能なネットワークサーバの容量を補償することもできる。
例えば、図1は、本発明の態様を理解するのに十分な企業コンピュータシステム10の構成要素のみを図示していることに留意されたい。企業コンピュータシステム10は、有線(例えば、ツイストペアケーブルを介したイーサネット)または無線(例えば、Wi-Fi)の通信リンクを有する、多数の相互接続ネットワークされたLAN、WAN、MANなどを含むことができることを認識するべきである。ネットワークサーバ18は、企業の要求に応じて多数の異なるタイプのリソースに対処することができ、クライアントコンピュータ16は、ラップトップ、パーソナルコンピュータ、タブレットコンピュータ、スマートフォンなどのような、任意の好適なタイプのネットワーク対応エンドユーザコンピュータデバイスとすることができる。リソース予測コンピュータシステム20は、1つ以上のネットワークコンピュータ装置によって実装することができる。リソース予測コンピュータシステム20が複数のコンピュータ装置を含む場合、それらは1つ以上のLAN、WAN、MANなどによって相互接続ネットワークすることができる。さらに、企業コンピュータシステム10は、サーバ18をプロビジョニングするための追加のブローカコンピュータ40を含んでもよい。
本明細書に記載のソフトウェアモジュールは、プロセッサ(複数可)24がモジュールのソフトウェアプログラムを実行するときに、プロセッサ(複数可)24が本明細書に記載のモジュールの機能を実行させるように、パイソン(Python)などの任意の好適なコンピュータ言語で書かれた1つ以上のコンピュータプログラム内に実装することができる。命令のプログラムを実行するために好適なプロセッサ24は、例として、一般および特殊用途の両方のマイクロプロセッサを含む。さらに、本明細書に記載の任意のコンピュータ構成要素は、単一のプロセッサまたは複数のプロセッサを含むことができる。プロセッサ24は、読み出し専用メモリ、もしくはランダムアクセスメモリ、またはその両方から命令およびデータを受信する。
本明細書は、多くの具体的な実装態様の詳細を含むが、これらはいかなる発明の範囲または特許請求され得るものの限定としても解釈されるべきではなく、むしろ特定の発明の特定の実装態様に特有である可能性のある特徴の説明として解釈されるべきである。本明細書において別々の実装態様の文脈で記載されている特定の特徴は、単一の実装態様において組み合わせて実装することもできる。逆に、単一の実装態様の文脈で記載されている様々な特徴は、別々にまたは任意の好適な副次的組み合わせで複数の実装態様で実施することもできる。さらに、特徴は、ある組み合わせにおいて作用するものとして上で説明されてもよく、かつ当初はそのように特許請求されてもよいが、場合によっては特許請求された組み合わせからの1つ以上の特徴を切り取ることができ、また特許請求された組み合わせは副次的組み合わせまたは副次的組み合わせの変形を対象としてもよい。
同様に、動作は特定の順序で図面に描かれているが、これは望ましい結果を達成するためには、そのような動作が示された特定の順序または順次に実行されること、またはすべての図示された動作が実行されることが必要であるように理解するべきではない。特定の状況では、多重タスク処理および並列処理が有利な場合がある。さらに、上述の実装態様における様々なシステム構成要素の分離は、すべての実装態様においてそのような分離を必要とすると理解されるべきではなく、記載されたプログラム構成要素およびシステムは、概して単一の製品において統合することができ、または複数の製品にパッケージ化することができると理解されるべきである。
このようにして、主題の特定の実装態様を記載した。他の実装態様は、以下の特許請求の範囲内にある。場合によっては、請求項に記載されている動作は異なる順序で実行することができ、それでも望ましい結果を達成することができる。さらに、添付の図面に示されたプロセスは、望ましい結果を達成するために、示された特定の順序、または順次順序を必ずしも必要としない。特定の実装態様では、多重タスク処理および並列処理が有利である場合がある。