(57)【要約】      （修正有）【課題】システムコンポーネントの使用を追跡する方法であって、追跡される各システムコンポーネントに対し、そのコンポーネントの値が連続した時間単位基準（successive time unit basis）で測定され、その測定されたデータは、値が繰り返す連続した時間単位の数とともに格納される方法を提供する。【解決手段】追跡される各パラメータに対し、連続した時間単位基準で該パラメータの値を測定するステップと、前記測定された値を、該値が繰り返す連続した時間単位の数とともに格納するステップとを含むシステム測定パラメータを追跡する方法。【選択図】図６
2006313551.tif 000002
【特許請求の範囲】
【請求項１】
追跡される各パラメータに対し、連続した時間単位基準で該パラメータの値を測定するステップと、
前記測定された値を、該値が繰り返す連続した時間単位の数とともに格納するステップと
を含む、システム測定パラメータを追跡する方法。
【請求項２】
前記測定パラメータの各々に対して測定メトリックを確定するステップをさらに含む請求項１に記載のシステム測定パラメータを追跡する方法。
【請求項３】
前記測定パラメータのいくつかに対して前記実際の測定値を量子化するステップをさらに含む請求項１に記載のシステム測定パラメータを追跡する方法。
【請求項４】
監視されている少なくとも１つのソースから、迅速に変化するデータ値を受け取る手段であって、該データ値の各々は短い時間に関してシステム状態を表す、受け取る手段と、
前記短い時間の各々に対して前記データ値を保存するため、該データ値をランレングス符号化する手段と
を具備する、システム状態を表すデータを処理するシステム。
【請求項５】
前記圧縮手段が、前記データのうちのいくつかを前記圧縮に先立って量子化する手段を備える請求項４に記載のシステム状態を表すデータを処理するシステム。
【請求項６】
前記データをフォーマットに変換する手段をさらに具備する、ここで、前記データの値を表す値が該データの受け取られた値において特定の値が連続して現れる回数を表す特定の値とともに提示される、請求項４に記載のシステム状態を表すデータを処理するシステム。
【請求項７】
前記提示されたデータを分析する手段をさらに具備する請求項６に記載のシステム状態を表すデータを処理するシステム。
【請求項８】
前記コンポーネントのうちのいくつかに関して測定されたパラメータを表す値のストリングを受け取る記憶装置と、
前記値のストリングの受け取られたものをランレングスストリングに変換するプロセスと
を具備する、各々が監視されるパラメータを有する複数のコンポーネントを有するコンピュータシステムであって、ここで、前記コンポーネントパラメータのうちのいくつかは、整数量として直接測定可能であり、前記コンポーネントパラメータのうちの他のものは、整数パラメータに量子化されなければならず、前記変換の前に前記パラメータのうちの前記他のものを量子化するプロセスをさらに具備する、コンピュータシステム。
【請求項９】
ある時間にワークグループに割り当てられるＣＰＵの数は、整数として、又は量子化される分数又は浮動小数点数として表される請求項８に記載のコンピュータシステム。
【請求項１０】
ある時間にワークグループによって又はワークグループのために要求されるＣＰＵの数は、整数として、又は量子化される分数又は浮動小数点数として表される請求項９に記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データの格納に関する。特に、データを編成して格納するシステム及び方法に関する。
【背景技術】
【０００２】
データ、特に、コンピュータシステムの性能データを管理するために種々の方法を利用することができる。これらの方法は、通常、性能データを収集して格納し、そのデータに基づいて種々の報告を作成する。こうした性能データは、たとえば、システムで利用可能な資源の量、特定の時刻に使用されたＣＰＵの数、特定の時刻に利用可能な物理メモリの量などを追跡する。さらに、こうした方法は、いかにこうした資源が利用されるかに関するデータを収集する。たとえば、ＣＰＵ利用率（各ＣＰＵがビジーであった期間及びアイドル状態であった期間のパーセント）は、実行待ち行列の長さ（ＣＰＵを使用するために列に並んで待っているプロセスの平均数）、メモリ利用率（使用中の実メモリのパーセント）、及びワークグループにおけるＣＰＵの数として監視される。上記は、監視、格納、分析される必要のあるパラメータのごくわずかを列挙している。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
コンピュータシステムが障害追跡されている時（リアルタイム処理）、又はシステムがリアルタイムに観測されている時、データは、通常、５〜１５秒毎に収集され、ユーザに対して表示される。性能の問題を診断するためには、データが正確であること（data this precise）が必要であることが多い。しかしながら、将来使用するためにデータをアーカイブする場合、特に、通常６ヶ月以上データをアーカイブする場合、収集されたデータパラメータの各々に対して１５秒毎にサンプルを格納することは実際的ではない。したがって、妥当な量の記憶空間にデータを格納するため、管理システムは、通常、サンプリングのインターバルにメトリック（metric）が一回測定され格納されるサンプリング技法を使用する。サンプリングされているデータがサンプリングのインターバル中に大幅に変化しないと仮定すると、測定時における値は、サンプリング中の全体を表すものと考えられる。コンピュータシステム等、高速に変化するシステムの場合、こうした方法は有効ではない。
【０００４】
別の解決法は、データを平均化するものである。したがって、測定システムがインターバル中に２０個のサンプルを収集する場合、アーカイブしている時にそれら２０個のサンプルの値が平均化され、それにより、管理システムは、そのインターバルに対して１つのデータ点のみを格納すればよい。平均化は、ユーザが問合せを提出し、通常数秒で取得される応答を待つ対話式システムではうまくいかない。こうした作業負荷に対する要求は、時々刻々と変化する。したがって、５分のインターバルの間、コンピュータシステムは大部分の時間アイドル状態であって、わずかな時間で完全に飽和する場合がある。過負荷のわずかな期間の間に、性能は許容できないほど低速である可能性がある。この過負荷は、同じサンプリングのインターバルにおいて発生している長いアイドル期間で平均化される場合は目立たない場合もある。この状況では、５分の平均化は、実際のシステム動作を十分に表していない。
【０００５】
平均化タイプのシステムに対する別の主な欠点は、ベンダがさまざまな形態の仮想パーティション又は仮想マシンを導入しているコンピューティングシステムの特徴におけるより最近の変化からもたらされる。これらのシステムは動的であり、そのためシステムは資源を非常に迅速に追加する又は除去することができる。したがって、後に使用するために性能データが格納されるいかなるシステムにおいても、資源使用量を確定するために時間のわずかな増分にまで掘り下げることができることが重要である。
【０００６】
たとえば、４分間アイドル状態であり、その４分間の間に１つのＣＰＵしか割り当てられない仮想マシンを想定する。その仮想マシンが、５分の測定インターバルの最後の１分間に非常にビジーとなり、その負荷を処理するためにさらなる５つのＣＰＵが追加される場合、その５分のインターバルの間に管理システムはサーバのＣＰＵの数に対して何を報告するべきか？サンプリングを使用するツールは、「１」又は「６」のいずれかを報告する。平均値を格納するシステムは、サーバが平均２つのＣＰＵを有していたと報告する。これらの値のいずれも、その５分のインターバルの間のシステム動作を理解するために特に有用ではない。
【課題を解決するための手段】
【０００７】
一実施形態では、システムコンポーネントの使用を追跡する方法であって、追跡される各システムコンポーネントに対し、そのコンポーネントの値が連続した時間単位基準（successive time unit basis）で測定され、その測定されたデータは、値が繰り返す連続した時間単位の数とともに格納される方法が開示されている。
【０００８】
別の実施形態では、システム状態を表すデータを処理するシステムであって、監視されているソースのうちの少なくとも１つから迅速に変化するデータ値を受け取り、各データ値が短い時間に関してシステム状態を表し、且つ、そのデータが、その短い時間の各々においてデータ値を保存する間に圧縮される、システムが開示されている。
【０００９】
本発明がより完全に理解されるために、ここで、添付図面に関連する以下の説明について言及する。
【発明を実施するための最良の形態】
【００１０】
一般に、測定されるシステムパラメータは、離散量で測定可能なパラメータと、瞬間で大きく変わるパラメータ（非離散）とにグループ化することができる。ＣＰＵ割当ては、離散的に測定することができるパラメータの一例である。それは、ＣＰＵ割当ては、任意の所与の時間において、割り当てられているＣＰＵの数を離散的にカウントすることができるためである。しかしながら、使用率（総ＣＰＵ容量の％）は、任意のサンプリング時間中に大きく変わる可能性があり、これらの使用率測定値は、非離散パラメータの一例である。
【００１１】
離散的に測定可能なコンポーネントに関して、測定のインターバルは、可変であって、任意の所与の区分に対し事前に特定することができる。ＣＰＵ割当ての場合、時間単位は、たとえば１５秒であってもよい。この時間単位は、ＣＰＵを採用している何らかのシステムがＣＰＵを他のワークグループに再割当てするために使用する時間単位に一致する。こうしたシステムでは、１５秒毎に、各ワークグループに対してＣＰＵがいくつ必要であるかに関して判断がなされる。したがって、特定の１分間において（及び３つのワークグループ及び８つのＣＰＵを想定すると）、最初の１５秒は図１Ａに示すようなものであってもよく、ここでは、ワークグループ（ＷＧ）１には３つのＣＰＵが割り当てられており、ＷＧ２には４つのＣＰＵが割り当てられており、ＷＧ３には１つのＣＰＵが割り当てられている。
【００１２】
図１Ａを続けると、ＣＰＵの割当ては、第２の１５秒間も同じままである。そして、第３の１５秒間において、ＷＧ１は６つのＣＰＵを必要とし、ＷＧ２は２つのＣＰＵを使用し、ＷＧ３は１つのＣＰＵを使用する。残りの１５秒間（時間(period)４）では、ＷＧ１及びＷＧ３は同じままであり、ＷＧ２は１になる。第２の１分間（時間(time period)５〜８）では、時間８においてＷＧ１が２つのＣＰＵまで減少する以外はすべてが同じままである。
【００１３】
本明細書で論考する概念を使用すると、且つ図１Ｂに示すように、ＷＧ１に対するランレングス符号化（run length encoding）は、３，２、６，５、２，１である。これは、次のように解釈できる。２つの連続した時間に対して３つのＣＰＵ、５つの連続した時間に対して６つのＣＰＵ、そして１つの連続した時間に対して２つのＣＰＵである。ＷＧ２の場合、それは４，２、２，１、１，５であり、ＷＧ３の場合、それは１，８である。
【００１４】
動作時、長期格納のためにデータを圧縮することができるようにランレングス符号化が発生する前に、生測定データは長期間保持される。通常、生データが格納される時間の長さは、圧縮前の２時間〜２日間である。最も一般的には、生データは、圧縮前に１日格納される。
【００１５】
図２Ａは、量子化されなければならないデータ（非離散データ）のための圧縮されていない時系列データのチャートであり、そこでは、任意の時刻１２：００：００で開始して、１５秒のインターバルの間の利用率を示す。また、各ＣＰＵ利用率値に対し、ビン番号を示し、ビン内には最大利用率が示されている。図２Ａのビン番号は、図３に示すビン例に従う。
【００１６】
図２Ａのデータパラメータは、図１Ａに関して論考した「平滑（smooth）」すなわち整数のデータとは異なり、迅速に変化している。したがって、１時間分のデータに対し、各サンプルが１５秒間のシステム性能メトリックの値を表す場合、２４０個のサンプルがある。
【００１７】
したがって、迅速に変化するデータ（すなわち、この例ではＣＰＵ使用率の％）が、図１Ａの整数データに対して示すように格納されるとすれば、記憶空間は節約されない。しかしながら、ビンを確立することにより（たとえば２０％範囲）、１５％容量で実行しているＣＰＵには０が与えられ、３％で実行しているＣＰＵにもまた０が与えられる。このステップの目的は、「雑音を含む」データを取得し、それを、個々の値のわずかな変化が平滑化されるために十分大きい「ビン」に入れるということである。この構成を使用すると、保存される値は、圧縮によって著しく変化することはない。したがって、図２Ｂに示すように、且つ図３に示すビン値を使用すると、図２Ａに示すように１２：００に開始して４分間に及ぶ時間に対し、ランレングス符号化は０，８、１，９、０，３である。
【００１８】
なお、任意の時間（インターバル１５秒）において、ＣＰＵの使用率は、激しく上昇するか又は下降する可能性があるが、その時間中のＣＰＵの使用率の平均は単一の値、すなわち図３に示すような「ビン」番号である、ということに留意されたい。１００％に近いＣＰＵは、たとえば５０％前後であるＣＰＵとは異なる結果を有するため、いくつかの率に対して、種々の平均化規則を確立してもよい（すなわち、ビンサイズが非一様であってもよい）。しかしながら、期間が比較的短く、必要に応じて調整することができるため、この平均化は、格納されたデータの後の使用に影響を与えない。ビンサイズの選択は重要である。ビンのサイズは、データを十分に圧縮するために大きくなければならないが、重要な変化が喪失しない程度に小さくなければならない。したがって、ほとんどのＣＰＵ利用率に対し、ビンサイズは通常１０％と２０％との間である。
【００１９】
図４Ａは、データの格納の動作を制御するフローチャートの一実施形態４０を示す。プロセス４０１は、データが、各所与の時間に対して直接カウントすることができる平滑データ（整数データ）であるか否かを判断する。データが平滑データである場合、データを圧縮するために、プロセス６０（図６に関して論考する）等のプロセスが続く。
【００２０】
データが平滑データでない場合、プロセス５０（図５に関して論考する）がデータを量子化する。こうした量子化が発生すると、又は量子化が必要でない場合、データを圧縮するためにプロセス６０等のプロセスが続く。
【００２１】
図４Ｂは、データを分析する１つのプロセス４１を示す。プロセス４１０は、データを分析する時であるか否かを判断する。分析する時である場合、プロセス４１１はデータを取得し、プロセル４１２は分析を実行する。
【００２２】
図５は、データを量子化するプロセスの一実施形態５０を示す。入力は、メトリック名又は別の識別子と一連の値とである。これらは、たとえば、図２ＡにおいてＣＰＵ容量の項目の下に示す値であってもよい。なお、本明細書ではＣＰＵについて論考するが、データの値を過度に数学的に変更することなく複数の期間にわたってデータの完全性を保存するように、論考する方法においていかなるデータストリームを処理してもよいことに留意されたい。
【００２３】
プロセス５０２は、所与のメトリックに対して量子化テーブルQt[]（図３）を選択する。このテーブルは、ビン範囲を設定する。プロセス５０３は、bin_id（ビン識別子）をゼロに設定する。プロセス５０４は、データストリームから次の値を取得し、プロセス５０５は、新たな値がQt[bin_id]最大値以下であるか否かを判断する。（図３は、ビン最大値の一例を示す。）
【００２４】
値がbin_id最大値以下である場合、プロセス５０７によってbin_id識別が出力され（保存され）、プロセス５０８によりさらなるデータが取得される。プロセス５０３〜５０８は、すべてのデータにbin_idが与えられるまで続く。
【００２５】
プロセス５０５が、現bin_id最大値より大きい値に達したと判断した場合、プロセス５０６はbin_idをインクリメントし、プロセス５０５に関してこの新たな値が繰り返される。
【００２６】
図６は、本明細書で論考する概念に従ってデータを圧縮するプロセスの一実施形態６０を示す。入力は、メトリック名（又は他の識別子）、メトリックが生成された時のタイムスタンプ（time stamp）、及び所定時間にわたって測定されたサンプル系列であり、各サンプルは、各時点における性能メトリックの値を表す。これらの性能メトリックは、たとえば、ＣＰＵ利用率、又はワークグループにおけるＣＰＵの数等である。このルーチンに入力されるデータ値は、整数値であっても、又は量子化された値（プロセス５０）であってもよい。
【００２７】
プロセス６０１は、初期データ値のメトリック名及びタイムスタンプを格納する。プロセス６０２は、入力シーケンスを使用してNewValue（新たな値）を特定し、プロセス６０３は、提示されているNewValueが値の時間系列におけるFirstValue（第１の値）であるか否かを判断する。FirstValueである場合、プロセス６０６は、CurrentValue（現在値）をNewValueに設定し、NumberOfOccurrences（発生の数）を「１」と記録する。これは、この特定の「新たな」値が１度現れたことを意味する。
【００２８】
そして、プロセス６０９は、プロセス６０２と協働して作用する別のNewValueを取得する。そして、プロセス６０３は、NewValueが時間系列の開始であるか否かを再び判断する。これは、通常、実際のデータ値からは確定されず、圧縮される期間に対応するデータのブロックによって確定される。
【００２９】
プロセス６０３において、NewValueがFirstValueでない場合、プロセス６０４は、NewValueがCurrentValueに等しいか否かを判断する。等しい場合、NewValueはCurrentValueの繰返しでなければならず、プロセス６０７はNumberOfOccurrencesをインクリメントする。そして、プロセス６０９、６０２、６０３、６０４及び６０７は、プロセス６０４が、NewValueがCurrentValueとは異なると判断する時まで連続的に繰り返す。そのような判断がなされた時、プロセス６０５は、CurrentValueをその値のNumberOfOccurrencesとともに格納する。
【００３０】
そして、プロセス６０８は、CurrentValueをNewValueであるとしてリセットし、再びプロセス６０９、６０２、６０３、６０４及び６０５は、プロセス６０９がさらなるデータがあるかどうか問うことを停止する時まで繰り返す。これは、データの現ブロックからの入力ストリーム終了によってもたらされる。
【００３１】
プロセス６０９が、この系列に対してこれ以上データが収集されないと判断すると、プロセス６１０は、データのCurrentValueをNumberOfOccurrencesとともに格納する。そして、プロセス６０は入力データを取得し、それを、図１Ａ、図１Ｂ、図２Ａ及び図２Ｂに関して論考した形式でランレングス符号化ストリング（run length encoded string）として格納する。
【００３２】
図７は、システムの一実施形態７０を示す。そこでは、コンピュータ７１が、複数のＣＰＵ７２と、記憶装置７３と、複数のアプリケーション７５と、複数のワークグループ７４とともに示されている。アプリケーションのうちの１つは、たとえば、プロセス４０、５０及び６０を制御して、データを収集し、格納し（たとえば記憶装置７３に）、収集されているデータを分析することができる。これにより、ユーザは、過去のインターバルにわたって、単純なデータ平均化を使用して可能であったよりも細かい粒度でデータを観測することができる。そして、容量計画のために、又は他の目的のために、アプリケーションによってローカルに、もしくはデータ転送又は他の方法によってリモートに制御される統計的分析を行うことができる。
【００３３】
コンピュータシステム分析における重要な測定は、メトリックがどれくらいの長さ閾値を超えたかを判断することである。たとえば、ＣＰＵ利用率がどれくらいの長さ９０％を超えたかである。これを、本明細書で論考した概念を使用してデータが圧縮されている場合、はるかに効率的に判断することができる。閾値より大きい値を表すbin_idが、テーブルから選択される。そして、ビンの識別子（ｉｄ）が閾値の識別子（ｉｄ）と一致するデータ対（データ対はbin_id及び発生の数である）に対して、圧縮データを走査する。値が閾値を超えた回数は、発生の数を取得し、インターバルで乗算することにより計算される。この計算を行うためにデータを解凍する必要はなく、そのため、この構成が他の圧縮メカニズムよりはるかに効率的になる。
【００３４】
コンピュータシステム分析における別の重要な測定は、メトリックが、どのくらいの頻度で、選択された持続時間より長く閾値を超えるかを判断することである。たとえば、「ＣＰＵ利用率が、どれくらいの頻度で５分間より長く９０％を超えたか？」である。
【００３５】
上述した分析は、メトリックが閾値を上回った期間をいかに特定するかと、それがその値をどれくらい長く上回ったかをいかに判断することとを示す。こうしたデータのセットが与えられると、持続時間を超えるこうした発生の数をカウントすることは簡単である。
【００３６】
コンピュータシステム性能を分析する別の重要なツールは、選択されたメトリックに対してヒストグラムを生成することである。たとえば、最近６ヶ月の間、コンピュータシステムのＣＰＵ利用率が０％と１０％との間であったのは時間の何パーセントであるか、１０％と２０％との間であったのはその時間の何パーセントであるか、等を示すヒストグラムを生成する。
【００３７】
論考した概念にしたがって圧縮されるデータが与えられると、各データ対（bin_id及び発生の数）を取得して、発生の数をヒストグラムの適当なビンに追加することにより、ヒストグラムを生成することができる。この分析は、データを解凍することなく実行することができる。また、２ビンのみから構成される、ヒストグラムの特別な例では、ＣＰＵ利用率が９０％を超えたのは時間の何パーセントであるかという質問に回答してもよい。これは、上述した方法で計算してもよい。
【図面の簡単な説明】
【００３８】
【図１Ａ】２分間にわたるワークグループ使用の例を示すチャートである。
【図１Ｂ】図１Ａのチャートに基づくデータ圧縮の一実施形態の一例を示す図である。
【図２Ａ】４分間の圧縮されていない時系列データを示すチャートである。
【図２Ｂ】データが量子化された場合の、図２の例に対する圧縮された時系列データの一実施形態を示すチャートである。
【図３】データを量子化するためのビンの一実施形態を示すチャートである。
【図４Ａ】システム及び方法動作の実施形態を示す図である。
【図４Ｂ】システム及び方法動作の実施形態を示す図である。
【図５】システム及び方法動作の実施形態を示す図である。
【図６】システム及び方法動作の実施形態を示す図である。
【図７】本明細書で論考する概念を利用するシステムの一実施形態を示す図である。
【符号の説明】
【００３９】
７３  記憶装置
７４  ワークグループ
７５  アプリケーション
【図１Ａ】
2006313551.tif 000003
【図１Ｂ】
2006313551.tif 000004
【図２Ａ】
2006313551.tif 000005
【図２Ｂ】
2006313551.tif 000006
【図３】
2006313551.tif 000007
【図４Ａ】
2006313551.tif 000008
【図４Ｂ】
2006313551.tif 000009
【図５】
2006313551.tif 000010
【図６】
2006313551.tif 000011
【図７】
2006313551.tif 000012