IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ジュニパー ネットワークス,インコーポレイティドの特許一覧

特許7201702コンピュータネットワークの測定メトリック
<>
  • 特許-コンピュータネットワークの測定メトリック 図1
  • 特許-コンピュータネットワークの測定メトリック 図2
  • 特許-コンピュータネットワークの測定メトリック 図3
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-12-26
(45)【発行日】2023-01-10
(54)【発明の名称】コンピュータネットワークの測定メトリック
(51)【国際特許分類】
   H04L 41/142 20220101AFI20221227BHJP
   H04L 43/0829 20220101ALI20221227BHJP
   H04L 43/0852 20220101ALI20221227BHJP
   H04L 43/087 20220101ALI20221227BHJP
   G06F 17/18 20060101ALI20221227BHJP
【FI】
H04L41/142
H04L43/0829
H04L43/0852
H04L43/087
G06F17/18 Z
【請求項の数】 15
(21)【出願番号】P 2020555774
(86)(22)【出願日】2019-04-10
(65)【公表番号】
(43)【公表日】2022-01-12
(86)【国際出願番号】 EP2019059129
(87)【国際公開番号】W WO2019197487
(87)【国際公開日】2019-10-17
【審査請求日】2022-01-21
(31)【優先権主張番号】1850400-1
(32)【優先日】2018-04-10
(33)【優先権主張国・地域又は機関】SE
【早期審査対象出願】
(73)【特許権者】
【識別番号】506245213
【氏名又は名称】ジュニパー ネットワークス,インコーポレイティド
(74)【代理人】
【識別番号】100099759
【弁理士】
【氏名又は名称】青木 篤
(74)【代理人】
【識別番号】100123582
【弁理士】
【氏名又は名称】三橋 真二
(74)【代理人】
【識別番号】100092624
【弁理士】
【氏名又は名称】鶴田 準一
(74)【代理人】
【識別番号】100114018
【弁理士】
【氏名又は名称】南山 知広
(74)【代理人】
【識別番号】100153729
【弁理士】
【氏名又は名称】森本 有一
(72)【発明者】
【氏名】ベルグステン,アンダス
(72)【発明者】
【氏名】サンドストラム,ミケル
【審査官】羽岡 さやか
(56)【参考文献】
【文献】特開2012-231236(JP,A)
【文献】特表2014-534726(JP,A)
【文献】国際公開第2012/081150(WO,A1)
【文献】米国特許出願公開第2015/0215057(US,A1)
【文献】米国特許出願公開第2005/0143982(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 12/00-43/55
(57)【特許請求の範囲】
【請求項1】
コンピュータネットワークのメトリックを測定する方法(100)であって、
数のデータソースから、データポイントを収集し(110)、
データソースから収集されたデータポイントのセットは、各データソースおよび前記データポイントのセットに対して固有であり得るサンプリング期間の間に収集され、
ンプルを構成する前記データポイントのセットは、各データソースについて、各サンプリング期間を通して収集され、
データソースは、問題となるデータポイントの特定のビンを決定するために前記データポイントを丸めることによって、各データポイントを配置することができる、多数のビンを定義するフラクタイル情報インスタンスタイプに関連付けられ、ここで、各ビンは各ビンとそれぞれのカウンタとの間に全単射マッピングが存在することによって、指数および仮数のそれぞれの対によって定義され、
データソースに対して、各サンプリング期間の開始時にリセットが実行され、空のフラクタイル情報インスタンスを生成し、
集されたデータポイントは、各データソースについて、それぞれの前記カウンタを更新して、問題となる前記サンプルのいくつの前記データポイントが、問題となる前記データソースについての前記ビンのそれぞれに属するかを追跡することによって、前記サンプリング期間を通して、関連するフラクタイル情報インスタンスを繰り返し更新する(121)ことによって処理され、
こで、各データソースについて、前記フラクタイル情報インスタンスは、前記サンプリング期間終了時に、さらなる処理のためコンピューティングデバイスまたはサーバに送信される、ことを含む方法。
【請求項2】
請求項1に記載のコンピュータネットワークのメトリックを測定する方法(100)であって、
つ以上のフラクタイル情報インスタンスが各データソースに関連付けられ、
データソースについて、正確に1つのフラクタイル情報インスタンスが各サンプリング期間中にアクティブであり、
データソースについて、非アクティブなフラクタイル情報インスタンスが各サンプリング期間中にパッシブであり、
データソースについて、アクティブフラクタイル情報インスタンスが前記サンプリング期間の開始時に空であり(105)、
データソースについて、前記パッシブなフラクタイル情報インスタンスが、さらなる処理(130)のために、送信され、および/または利用可能に記憶され、
データソースについて、少なくとも1つのパッシブなフラクタイル情報インスタンスが、各サンプリング期間の終了時にリサイクルされて、後続のサンプリング期間のために、前記空のアクティブフラクタイル情報インスタンスになる、方法。
【請求項3】
請求項1または2に記載のコンピュータネットワークのメトリックを測定する方法(100)であって、
つまたは複数のデータソースからのデータポイントの前記収集(110)は、テストエージェントによって実行され、
テストエージェントは、各データソースに関連付けられた前記フラクタイル情報インスタンスを、前記サンプリング期間全体にわたって各データポイントを収集した後に更新し(120)、
テストエージェントは、前記フラクタイル情報インスタンスを、各サンプリング期間の終了後に、制御センタにアップロードし、さらなる処理のために利用可能にする、方法。
【請求項4】
請求項1または2に記載のコンピュータネットワークのメトリックを測定する方法(100)であって、
記データポイントの収集(110)は、前記サンプリング期間を通じて前記サンプルのデータポイントを収集するテストエージェントによって実行され、
記テストエージェントは、前記サンプリング期間の終了時に、前記サンプル全体を制御センタにアップロードし(122)、
記制御センタは、さらなる処理(130)に利用できるように、受信されたサンプルから、前記フラクタイル情報インスタンスを生成する、方法。
【請求項5】
請求項1または2に記載のコンピュータネットワークのメトリックを測定する方法(100)であって、
御センタが、前記サンプリング期間の開始時に、各データソースについて、空の/リセットされたフラクタイル情報インスタンスで開始し(105)、
ストエージェントが、前記サンプリング期間を通じて前記制御センタに個々のデータポイント又はデータポイントのセットを繰り返しアップロードし(122)、
記サーバは、前記サンプリング期間を通じてデータポイントを受信する際に、各データソースについて各データポイントの受信後に、前記フラクタイル情報インスタンスを更新し(120)、
記フラクタイル情報インスタンスは、前記サンプリング期間の終了時におけるサンプル全体を表し、さらなる処理(130)に利用可能である、方法。
【請求項6】
請求項1または2に記載のコンピュータネットワークのメトリックを測定する方法(100)であって、
記さらなる処理(130)は、完全なサンプルにアクセスすることなく、前記フラクタイル情報インスタンスから統計的分析を実行すること(132)を含む、方法。
【請求項7】
請求項1から6のいずれか1項に記載のコンピュータネットワークのメトリックを測定する方法(100)であって、
々の測定間の間隔および前記サンプリング期間の長さは、測定されたメトリック、測定が行われるネットワークの一部のトラフィックレート、のうち1つ以上に依存して変動する、方法。
【請求項8】
請求項1から7のいずれか1項に記載のコンピュータネットワークのメトリックを測定する方法(100)であって、
前記サンプリング期間は、データの統計的分析がサポートされる最も小さい時間フレームを含む、方法。
【請求項9】
請求項1から8のいずれか1項に記載のコンピュータネットワークのメトリックを測定する方法(100)であって、
フラクタイル情報の主な表現は、最小絶対値および最大絶対値を有する値を定義する指数の間隔と、仮数を表す固定ビット数とを含む、方法。
【請求項10】
請求項1から9のいずれか1項に記載のコンピュータネットワークのメトリックを測定する方法(100)であって、
らなる処理(130)は、タイムスタンプをキーとし、圧縮されたフラクタイル情報をバイナリラージオブジェクト(BLOB)データとして用いて、サーバにおいて圧縮されたフラクタイル情報インスタンスがデータベースに記憶(136)されることを含む、方法。
【請求項11】
請求項1から10のいずれか1項に記載のコンピュータネットワークのメトリックを測定する方法(100)であって、
同一のデータソースを表すが異なる時間フレームでの2つ以上のオリジナルのフラクタイル情報インスタンスの集約は、最初にそれらを解凍し、次に、オリジナルの(301)フラクタイル情報インスタンスから対応するカウンタを加算(302)することによって、新たな集約カウンタを1つずつ計算することによって達成される、方法。
【請求項12】
請求項1から11のいずれか1項に記載のコンピュータネットワークのメトリックを測定する方法(100)であって、
集約のスケジューリングが集約スキームによって定義される、方法。
【請求項13】
少なくとも1つのデータプロセッサに通信可能に接続または結合されたメモリにロード可能なコンピュータプログラムであって、前記コンピュータプログラムが前記少なくとも1つのデータプロセッサ上で実行されるときに、請求項1から12のいずれか1項に記載の方法を実行するためのソフトウェアを含む、コンピュータプログラム。
【請求項14】
コンピュータプログラムが少なくとも1つのデータプロセッサにロードされるときに、前記コンピュータプログラムが前記少なくとも1つのデータプロセッサに、請求項1から12のいずれか1項に記載の方法を実行させる、前記コンピュータプログラムが記録されたプロセッサ読み取り可能媒体。
【請求項15】
データソースを含むコンピュータネットワークに接続可能に関連するシステムであって、前記システムはサーバおよび/または制御センタと、前記データソースに関連するスレーブデバイス、テストエージェントと、を備え、
ここで、前記システムは、各データソースについて、各サンプリング周期の開始時に、前記データソースに関連するタイプの空の/リセットされたフラクタイル情報インスタンスを提供する(105)ように構成され、
前記テストエージェントは、前記サンプリング周期を通じて、複数のデータソースからのデータポイントを収集する(110)ように構成され、ここで、サンプルを構成するデータポイントのセットは、各データソースについて各サンプリング周期を通じて収集され、
ここで、前記テストエージェントは、前記サンプリング周期を通じた各データポイントを使用して、各データソースに関連する前記フラクタイル情報インスタンスを更新し(120)、前記フラクタイル情報インスタンスを、各サンプリング周期の終了後に、前記制御センタにアップロードしてさらなる処理(130)のために利用可能にし、
ここで、前記フラクタイル情報インスタンスは、問題となるデータポイントの特定のビンを決定するために前記データポイントを丸めることによって、各データポイントを配置することができる、多数のビンを定義し、
ここで、各ビンは各ビンとそれぞれのカウンタとの間に全単射マッピングが存在することによって、指数および仮数のそれぞれの対によって定義され、
ここで、前記フラクタイル情報インスタンスを更新することは、それぞれの前記カウンタを更新して、問題となる前記サンプルの前記データポイントのうちのいくつが、問題となる前記データソースについての前記ビンのそれぞれに属するかを追跡することによって処理される、システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータネットワーク管理およびサービス品質のメトリックの測定など、コンピュータネットワークのメトリック、好ましくはコンピュータネットワーク内のメトリックを測定する方法およびシステムを対象とする。
【背景技術】
【0002】
コンピュータネットワーク管理では、他の多くのアプリケーション分野と同様に、例えば、遅延(latency)、ジッタ(jitter)、パケット損失、スループットなどの異なるメトリック(metrics)を測定することが一般的である。
【0003】
米国特許出願公開第20170093677号明細書「ネットワークにおけるエンドツーエンドのサービス品質を確実に測定するための方法及び装置」では、ネットワークにおけるサービス品質(QoS)をエンドツーエンドで確実に測定するための方法及び装置が記載されている。この技術は、QoS測定用にマークされたパケットを検出するよう構成されたエンドポイントのペアを備え、(セキュアなクロックを用いる)タイムスタンプをそのようなパケットに関連付け、パケットを識別するメタデータとともにタイムスタンプを外部モニタに報告する。
【0004】
米国特許出願公開第20170257287号明細書「リアルタイムサービス品質監視装置及び方法」には、リアルタイムのQoS監視装置が記載されている。この技術は、QoS測定のための少なくとも1つの監視対象アプリケーションプログラムを登録するように構成されたアプリケーション登録ユニットと、アプリケーションコード内のユーザ定義関数を検出するように構成された関数ファインダとも呼ばれる関数エクスプローラユニットと、ループステートメントを検出するように構成されたループステートメントエクスプローラユニットと、ユーザ定義位置を検出するように構成されたユーザ定義位置エクスプローラユニットと、関数ファインダによって検出された関数に対応する複数のハートビートコールを生成するように構成されたハートビートジェネレータと、を備える。
【0005】
米国特許第8958327B2号「受動的なネットワーク遅延の監視」では、ネットワーク内のノードの各ポートの常駐遅延と、ネットワーク内の各隣接ノードのペア間のピア遅延とを測定する方法が記載されており、この方法では、これらの常駐遅延とピア遅延から、ネットワーク内の隣接ノードのペア間の遅延を判別できる。この方法は、決定された遅延(待ち時間)を使用して、ネットワーク内のノードを通るデータパケットのための経路重み付けを含む。各ノードは、切り替え可能な接続を有するスイッチを含む。これは、コントローラにより、出力ポートから隣接ノードのポートにプローブパケットを送信するように構成される。プローブパケットは、タイムスタンプと識別子を含んでよい。
【0006】
米国特許第7260627B2号は、「リアルタイムメッシュ測定システムのストリーム遅延及びジッタ測定」を記載する。開示される方法は、ネットワークを通って移動する情報のパケットに関するシステム遅延および遅延ジッタを正確に測定する。この方法は、世界標準に設定されたリアルタイムクロックを使用して、送信元と宛先の間のネットワークを経由する情報のタイムスタンプ・パケットを用いる。次いで、タイムスタンプされたパケットを分析することによって、遅延および遅延ジッタが決定される。
【発明の開示】
【発明が解決しようとする課題】
【0007】
背景技術において上述した特許、ならびに多くの他の先行技術文献は、データポイントを得るために測定を行う異なる方法を記載しているが、先行技術は個々のデータポイントを得る方法に完全に焦点を当てている。
【0008】
これは、個々のデータポイントを取得する方法に焦点を当てておらず、むしろ、データポイントのセットまたはサンプルを収集し、これらをサーバなどのコンピューティングデバイスに効率的にアップロードして、これらのサンプルに対してランク統計を計算するなどの高度な統計解析を実行する手法に焦点を当てている本発明の態様とは異なる。
【課題を解決するための手段】
【0009】
本発明の一態様は、ランク統計のような高度な統計解析を実行し、特に、データソースからフラクタイル(分位点、変位値)(fractile)情報をどのように計算し表現するかを実行することであり、そこから、ランク統計は、データソース全体にアクセスすることなく、高い精度で計算され得る。
【0010】
本発明の一実施形態によれば、コンピュータ・ネットワークのメトリックを測定する方法が提供される。この方法は:
‐複数のデータソースから、データポイントを収集し、
‐ここで、各データソースから収集されたデータポイントのセットは、各データソースおよびデータポイントのセットに対して固有であり得るサンプリング期間中に収集され、
‐ここで、サンプルと呼ばれるデータポイントのセットは、各データソースの各サンプリング期間を通して収集され、
‐ここで、各データソースは、どのようにフラクタル情報インスタンスが処理され符号化され復号されるかを指定するフラクタル情報タイプに関連付けられ、
‐ここで、各データソースの各サンプリング期間の始めにリセットが実行され、空のフラクタル情報インスタンスをもたらし、
‐ここで、各データソースについて収集されたデータポイントは、サンプリング期間を通して関連付けられたフラクタル情報インスタンスを繰り返し更新することによって処理され、
‐ここで、各データソースについてのフラクタル情報インスタンスは、サンプリング期間が終了すると、圧縮され、さらなる処理のためコンピュータデバイスまたはサーバに送信される。
【0011】
ここで、「フラクタイル情報(fractile information)」という用語は、サーバなどのコンピューティングデバイスにアップロードおよび格納する各サンプルに関する最小限の情報として定義される。
【0012】
本明細書では、「さらなる処理」という用語は、それぞれのサンプルに関連するフラクタイル情報インスタンスからのサンプルのランク統計を計算すること、ならびに集約されたサンプルに関するランク統計の計算を可能にするためのフラクタイル情報インスタンスの集約などの、高度な統計解析を含む。
【0013】
ここで、「インスタンス」という用語は、通常、コンピュータプログラムの実行時に存在するあらゆるオブジェクトの具体的なオカレンスを意味する。
【0014】
本明細書では、「スレーブデバイス」、「テストエージェント」、および「プローブ」という用語は、以下のように関連付けられる。スレーブデバイスが、サーバに関連付けられ、測定を実行する責任を負い、したがってプローブとして働き、いくつかの実施形態ではテストエージェントとして実装される。
【0015】
ここで、「サーバ」という用語は、コンピュータ・ネットワークを介して1つ以上のスレーブ装置に接続され、そのような各スレーブ装置から測定に関する情報を受信し、そのような情報をさらなる処理のために利用可能にすることに責任を負う装置を意味する。サーバは「計算装置」を構成し、いくつかの実施形態では「制御センタ」として実装されてもよい。
【0016】
ここで、取得されたデータポイント上で実行される演算に対する「オンザフライ(on-the-fly)」という用語は、データポイントが得られた直後に演算が行われることを意味する。
【0017】
本明細書では、「サンプリング期間」、「サンプリング期間」、「サンプル期間」、および「サンプル時間期間」という用語、ならびにそれらの変形形態は、均等である。
【0018】
本発明の様々な態様および実施形態によれば、本発明による解決手段は、フラクタイル情報の効率的な圧縮、圧縮解除、アップロード、および集約、ならびに元のフラクタイル情報および集約されたフラクタイル情報からのランク統計の推定を提供する。
【0019】
まず、本発明の様々な態様および実施形態を開示する前に、使用される様々な用語の定義について説明する。
【0020】
典型的には本発明の様々な態様によれば、データポイントは、スレーブデバイスまたはプローブによって周期的に収集され、サンプリング期間中にデータソースから測定および/または収集されたデータポイントのセットは、サンプルを構成する。個々の測定間の期間ならびにサンプリング期間の長さは、測定されたメトリック、測定が行われるネットワークの部分におけるトラフィックレート、および他の要因に応じて変化し得る。サンプリング期間は、データの統計的分析がサポートされる最小の時間フレームである。各サンプリング期間の終わりに、サンプルの表現(サンプル全体とすることができるが、典型的にはそうではない)が、さらなる処理のためにサーバなどのコンピューティングデバイスにアップロードされる。
【0021】
データポイントは、サンプリング期間中にデータソースから収集され、したがってサンプルを構成する値や測定値とすることができる。サンプリング周期、ならびに各サンプルが含む値の数は、異なるデータソース間、ならびに同じデータソースからの異なるサンプル間で異なり得る。
【0022】
各サンプルから、典型的には各データソースから、フラクタイル情報のインスタンス、すなわち「フラクタイル情報インスタンス」が生成される。フラクタイル情報は、サーバにアップロードされるサンプルの好ましい表現であり、これは、サンプルからのランク統計の推定を、完全なサンプル(サンプル全体)にアクセスすることなく可能にする。
【0023】
好ましい実施形態では、フラクタイル情報は、スレーブ装置によりサンプリング周期を通して収集されたデータポイントで継続的に更新されることにより生成され、サンプリング期間の終わりにサーバにアップロードされる。代替実施形態では、サンプリング期間の終わりにサンプル全体がサーバにアップロードされ、そこから、サーバが完全なサンプルからフラクタル情報インスタンスを生成する。あるいは、すべての単一のデータポイントがリアルタイムでサーバにアップロードされ、そこから、サーバが、サンプリング期間を通して収集されたデータポイントまたはこれら2つの極値の間にあるいずれかで継続的に更新することにより、フラクタル情報インスタンスを生成する。
【0024】
フラクタイル情報はタイプを有し、通常、各データソースは、フラクタイル情報タイプに関連付けられる。
【0025】
フラクタイル情報の各インスタンスは、典型的には圧縮され、サーバにアップロードされる。通常、上記の方法からのような、圧縮の全体的な方法は、異なるデータソース間で同一であるが、同一でなくてもよい。一般的な場合、通常、各データソースは、圧縮方法に関連付けられなければならない。サーバ上にフラクタイル情報のインスタンスを記憶する場合、フラクタイル推定値の後続する計算を容易にするために、いくつかの追加情報も記憶することができる。これは異なるデータソース間で異なっても異ならなくてもよいが、異なる場合は、各データソースも、これがいかになされるかに関する情報に関連付けられなければならない。特に、選択されたフラクタイルの予め計算されたテーブルを使用する方法が使用される場合、フラクタイルの選択は、通常、構成の一部としてデータソースに関連付けられる必要がある。
【0026】
サーバでの空間を節約するために、一実施形態によれば、フラクタイル情報インスタンスが集約される。集約のスケジューリングは、異なるデータソース間で異なってよい集約スキームによって定義される。したがって、典型的には一実施形態によれば、各データソースは集約スキームに関連付けられる必要がある。
【0027】
サーバの役割は、典型的には、サンプルおよびサンプルの集約(集合体)の統計的分析を提供することである(集約(集合体)は、複数の個々のサンプルからの情報が組み合わされたスーパーサンプルである)。このような分析には、極値(min、max)、平均、所定のしきい値(しきい値カウンタ)より下/上/間のデータポイントの数、および百分位数(パーセンタイル)(perentile)が含まれるが、これらに限定されない。
【0028】
極値、平均、及び閾値カウンタは、典型的には、個々のサンプル及びサンプルの集約(集合体)の両方に関して直接的(straight forward)である。
・極値の場合、スレーブデバイスは、各サンプリング期間中に最小値および最大値を単純に追跡し、サンプリング期間の終わりにサーバにアップロードすることができる。
・平均の場合、スレーブデバイスは、サンプルのデータポイントの合計と数を単純に追跡し、サンプリング期間の終わりにこれらをサーバにアップロードする必要がある。
・しきい値カウンタの場合、スレーブデバイスは、しきい値を下回る/上回る/間にある値の数を単純に追跡し、サンプリング期間の終わりにこれらをサーバにアップロードする必要がある。
【0029】
一実施形態によれば、典型的には、サーバにおいて、極値、平均、および閾値カウンタを集約することも簡単である。2つのサンプルの集約(集合体)の極値はそれぞれのサンプルの極値の極値であり、2つのサンプルの平均は値の数の合計で除算された合計の合計であり、2つのサンプルのしきい値カウンタは、それぞれのサンプルのしきい値カウンタの合計である。
【0030】
課題は、典型的にはパーセンタイル(percentile)のようなランク統計を扱うことである。スレーブデバイスが、サンプリング期間の終わりに予め定義されたパーセンタイルのセット(例えば、1%、10%、25%、50%、75%、90%、および99%)を計算しこれらをサーバにアップロードするための線形時間選択アルゴリズムを実行するのに十分な計算能力を有すると仮定しても、サーバが、単に個々のサンプルからのパーセンタイルの選択から集約(集合体)サンプルのパーセンタイルを計算する方法はない。
【0031】
この課題を説明するために、x、y、およびzがそれぞれX、Y、およびZの中央値である21個のデータポイントからそれぞれ構成される3つのサンプルX、Y、およびZを考える。
【0032】
X、Y、Zのあらゆる他のデータポイントにアクセスすることなく、x、y、zのみが与えられるとすると、和集合(set union)X+Y+Zの中央値をどのように計算することができるだろうか。
【0033】
x<y<zである場合、yが和集合の中央値の最良の推定値であって、利用可能な限られた情報を与えられるべきであると推測することは容易である。確かに、yよりも小さいことが保証された21個のデータポイントと、yよりも大きいことが保証された21個のデータポイントとがあることがわかる。しかしながら、yに無関係な20個のデータポイント、ならびにxおよびzのそれぞれに無関係な20個のデータポイントも存在する。yに関係しない全てのデータ点がyよりも小さい場合、41個のデータポイントはyよりも小さく、21個のデータポイントはyよりも大きく、これは、yをむしろ正確でない中央値の推定値とする。一方、xに関連しない全てのデータポイントがxより小さい場合、31個のデータポイントはそれぞれ、xより小さく、またxより大きく、これは、xを完全な中央値の推定値とする。
【0034】
明らかに、推定値の品質は、推定値から推定値が計算される場合にはさらに低下し、集約のあらゆるレベルで推定値はさらに悪化する。
【0035】
集約されたサンプルのパーセンタイルの正確な計算は、各サンプルの全体、または各発生値に対する少なくとも1つの対(値、頻度)がサーバにアップロードされ、サーバに記憶されることを必要とする。
【0036】
ただし、これは、以下の理由により実行可能でないかもしれない。
・スレーブデバイスおよびサーバの間でサンプルを送信するためのコストが高すぎる。
・サーバでのサンプルからのパーセンタイルの計算コストが高すぎる。
・すべてのサンプルをサーバに格納するコストが高すぎる。
・サンプルを集約することが、一般的には、格納に必要な容量を減少させない。
【0037】
こうした目的のため、本発明によって解決されるべき技術的課題は、最小限の情報を識別する方法を見出すことであり、本明細書では、サーバにアップロードし格納される、各サンプルに関するフラクタイル情報と呼ぶ。a<=bの場合、「a/bフラクタイル」を、パーセンタイルよりも一般的なランク統計値として定義する(これは単にフラクタイルの特別な場合である。「aパーセンタイル」は「a/100フラクタイル」に等しい)。フラクタイル情報は、典型的には、その計算がサンプルからパーセンタイルを計算するよりも少ない計算資源しか必要としないように、パーセンタイルの推定をサポートしなければならない。また、典型的には、集約されたフラクタイル情報がすべての集約されたサンプルを適切に表し、同時に、単一のサンプルに関するフラクタイル情報以上のストレージを必要としないように、複数のサンプルからフラクタイル情報を集約することも可能でなければならない。このようにしてのみ、最近のサンプルのより高い時間線(time-line)粒度分析および過去のサンプルのより低い粒度時間線分析を提供することができるスキームを実装することが可能である。
【0038】
例:
現在の分の間の秒ベースのパーセンタイル、現在の時間の間の分ベースのパーセンタイル、現在の日の間の時間ベースのサンプルなどを考える。1分が経過すると、60インスタンスの秒ベースのフラクタイル情報が、分ベースのフラクタイル情報に集約され、1時間が経過すると、60インスタンスの分ベースのフラクタイル情報が、時間ベースのフラクタイル情報に集約され、1日が経過すると、24インスタンスの時間ベースのフラクタイル情報が、日ベースのフラクタイル情報に集約される。このスキームでは、サーバは、最大で、現在の分のフラクタイル情報の60インスタンス、現在の時間のフラクタイル情報の60インスタンス、現在の日のフラクタイル情報の24インスタンス、および現在の月のフラクタイル情報の30インスタンスを記録する必要がある。これは、最近のサンプルに対して完全な秒ベースの粒度(granularity)が提供されているにもかかわらず、1ヶ月間のフラクタイル情報の合計120未満のインスタンスとなる。集約が行われない場合、フラクタイル情報のほぼ260万のインスタンスが30日間で記憶される必要があり、これは、上位の集約スキームによって生成された120インスタンスよりも遥かに大きい。
【0039】
これを機能させるために考慮されなければならないフラクタイル情報のいくつかの追加的な側面があり、これは、目の前の技術的チャレンジにさらに追加される。
【0040】
一般的な場合、100%正確なパーセンタイルは上述したように完全な(全部の)サンプルを要求し、これはサーバにアップロードするには「高価」すぎ、集約してサーバでのストレージを節約することができないので、フラクタイル情報から計算されたパーセンタイル/フラクタイル情報は、推定値である。フラクタイル推定値の正確性は、絶対および相対ランク誤差で測定される。絶対ランク誤差は、推定フラクタイルと実際のフラクタイルとの間のランクの差の絶対値であり、相対ランク誤差は、絶対ランク誤差をサンプルのサイズで割ったものである。例えば、1000個のデータポイント間の中央値の推定値がランク400を有する場合、すなわち、正確に399個のデータポイントがより小さい値を有する場合、絶対ランク誤差は500-400=100であり、相対ランク誤差は100/1000=0.1=10%である。
【0041】
フラクタイル推定値は、可能な限り正確でなければならず、当然、正確性とストレージ(記憶)コストとの間にトレードオフが存在する。すなわち、フラクタイル情報のインスタンスのサイズが大きいほど、より正確な推定が可能になる。したがって、フラクタイル情報は、ユーザが適切なトレードオフを達成することを可能にするために、各データソースに対して個別に構成可能でなければならない。当該構成には、データソースの範囲と粒度の両方を含める必要がある。さらに、フラクタイル情報のための圧縮/解凍スキームは、サーバでの効率的なアップロードと記憶を提供するために必要である。
【0042】
所与のデータソースについて、通常、値の範囲および測定の精度、ならびに負の値、正の値、またはその両方が存在するかどうかについてのいくつかの考え方がある。
【0043】
例えば、遅延(latency)は、1マイクロ秒よりも正確に測定することができず、すなわち、最も近いマイクロ秒に丸められること、および、10マイクロ秒未満の遅延ならびに2秒を超える遅延が極めて稀であることがわかる。
【0044】
さらに、小さい値はさらなる丸めなしに測定され記録される必要があり得るが、最大値に近い測定値は小さい値と比較して非常に小さい相対丸め誤差を有する。
【0045】
例えば、1マイクロ秒の粒度では、10マイクロ秒の測定に対する相対丸め誤差が、1/10=10%(切り捨てによる丸めを仮定する)であり、一方、2秒の測定に対する丸め誤差は、1/2000000=0.00005%である。これは、最大相対丸め誤差を増加させることなく、大きな値のさらなる丸めを実行することができることを示唆する。
【0046】
本発明の好ましい実施形態によれば、複数の測定値にわたる相対誤差のバランスをとり、同時にデータ量を低減するように最適化されたフラクタイル情報表現が使用される。この特定の実施形態におけるフラクタイル情報の主な表現は、最小および最大の絶対値を有する値を定義する指数の間隔と、有効数字または仮数を表す固定数のビットとからなる。指定された指数間隔内の、利用可能なビットによって表すことができる仮数と指数との各組合せについて、いくつのサンプルのデータポイントが仮数および指数のそれぞれの組合せによって形成される値に丸められるかを追跡するためのカウンタを持つ。(仮数、指数の)対とカウンタとの間には全単射(bijective)マッピングがあり、カウンタは、ビン(bin)またはバケット(bucket)として参照されることがある(例えば、ビンに入る値の数をカウントする)。その結果はヒストグラムであり、各頻度カウンタは、当該カウンタに関連付けられる(仮数、指数の)対によって形成される値に丸められる値の数を追跡する。
【0047】
異なるデータソースのフラクタイル情報は、当然、仮数に利用可能な異なる指数間隔およびビットを有してよい。これらのパラメータは、負または正の値、あるいはその両方を示すフラグとともに、またテキスト文字列(典型的にはデータソースを識別するテキスト)とともに、フラクタイル情報のタイプを形成する。
【0048】
サーバは、各データソースのフラクタイル情報のタイプに関する知識を持つ。したがって、各サンプルを完了した後、データソースの識別子と共に、カウンタのアレイの圧縮バージョンをアップロードすれば十分である。プローブは、フラクタイル情報の2個のインスタンスが、新たなサンプリング期間ごとに、新たな/リセットされた(例えば、すべてのカウンタがゼロにされる)インスタンスで開始することができるように、フラクタイル情報の(少なくとも)2個のインスタンスを維持し、一方、以前のサンプリング期間からのインスタンスを、サーバへのアップロードが確認されるまでそのまま維持し、その後、それをリセットすることができる。
【0049】
本発明の好ましい実施形態は、複数の測定値にわたる相対誤差のバランスをとるように最適化されたフラクタイル情報表現を使用するが、本発明の範囲および要旨を何ら限定するものではない。当業者は、他の最適化基準を満たすように設計された他の方法(または機能)を使用して、データポイントがビン(bin)指標にマッピングされるフラクタイル情報の代替表現を使用することができる。当業者はさらに、そのような代替表現およびマッピング機能(関数)がタイプ情報に含まれ、異なるフラクタイル情報インスタンスが完全に異なるタイプならびにタイプ表現を使用することができることを理解するであろう。
【0050】
フラクタイル情報の圧縮されたインスタンスは、典型的にはタイムスタンプを使用してサーバ上のデータベースに記憶され、タイムスタンプは、フラクタイル情報によって表されるサンプリングの時間期間をキーとして識別し、圧縮されたフラクタイル情報をバイナリデータ(バイナリラージオブジェクトまたはBLOB)として識別する。
【0051】
同じデータソースを表す、フラクタイル情報の2個以上のオリジナルのインスタンスの集約は、典型的には、最初にそれらを解凍(圧縮解除)し、次に、フラクタイル情報のオリジナルのインスタンスから対応するカウンタを追加することによって、新たな集約カウンタを1つずつ計算することで達成される。タイムスタンプがより長い時間間隔を表しカウンタがより高い値を有することを除いて、集約されたフラクタイル情報を集約されていないフラクタイル情報から区別するものは何もないことに留意されたい。したがって、集約(集合体)の任意のレベルの集約を実行することは簡単であり、これがこの表現の全体的な目的である。しかしながら、集約の目的が単に累積時間期間のパーセンタイルを計算することである場合、集約は計算が完了したときに廃棄することができ、一方、目的がデータベースのストレージ(記憶容量)を節約することである場合、フラクタイル情報のオリジナルのインスタンスは削除され、集約は圧縮され、集約された間隔を表す新たなタイムスタンプと共に挿入される。
【0052】
フラクタイル情報からフラクタイルを計算することは、典型的には簡単である。まず、フラクタイル情報をデータベースから検索し、解凍する。次に、以前のカウンタの合計が目標ランク以下である最大のカウンタを見つけ、カウンタに対応する(仮数、指数の)対から、フラクタル推定値を計算する。
【0053】
以下、添付の図面も参照される。
【図面の簡単な説明】
【0054】
図1図1は、本発明の例示的な実施形態を示すフローチャートである。
図2図2は、本発明の例示的な実施形態を示すフローチャートである。
図3図3は、集約を示すフローチャートである。
【発明を実施するための形態】
【0055】
本発明の実施形態の以下の説明および添付の図面を参照すると、本発明の上記の説明にかなりの詳細が追加される。その目的は、本発明の好ましい実施形態を実施するのに十分な情報を当業者に提供することである。詳細な説明は決して本発明の範囲を限定するものではなく、当業者は特許請求の範囲の全範囲を達成するために詳細な説明を上位概念化する方法を理解するであろう。
【0056】
フラクタイル情報表現
図1は、本発明の実施形態の主要な動作を示す。第1のステップにおいて(105)、スレーブ装置は、サンプリング期間Sの開始時に、問題となるデータソースに対して適切なタイプのフラクタイル情報の空のインスタンスで開始する。これに続いて、サンプリング期間が終了し、サンプルからのすべてのデータポイントPが処理されるまで、フラクタル情報インスタンスをデータポイントで更新することによって(120)、データソースからデータ点ポインPを繰り返し収集し(110)、各データポイントを即座に処理する。ここで、処理120は、フラクタイル情報インスタンスFを各データポイントで更新することを意味する。サンプリング期間Sが終了すると(121)、サンプルを表すフラクタイル情報インスタンスFが、さらなる処理(130)のためにサーバにアップロードされる(122)。
【0057】
図2は、本発明の別の実施形態100´を示す。第1のステップでは、データソースから、データポイントのセットがサンプリング期間Sの間に収集され(110)、データポイントのセットは上述のようにサンプルを構成する。各サンプルは、サーバにアップロードされ(122)、サーバは完全なサンプルから、問題となるデータソースに適切なタイプのフラクタイル情報インスタンスFを直ちに生成する(130)。フラクタイル情報インスタンスFは、その後、さらなる処理(130)のために利用可能である。
【0058】
本発明のさらに別の実施形態によれば、第1のステップでは、サーバが問題となるデータソースのための適切なタイプのデータの空のフラクタイル情報インスタンスで処理を開始する(105)。データポイントは、サンプリング期間が終了するまで(121)、サンプリング期間S全体を通してデータソースから繰り返し収集され(110)、および、1つずつまたは複数のデータポイントPのセットでサーバに送信される。サーバは、単一のデータポイントまたはデータポイントのセットを受信すると、これらのデータポイントを持つフラクタイル情報インスタンスFを即座に更新する。サンプリング期間Sの終わりに、フラクタイル情報インスタンスFは全体としてのサンプルを表し、さらなる処理(130)のために利用可能である。
【0059】
一実施形態によれば、2つ以上のフラクタイル情報インスタンスF1、F2、・・・Fmが、各データソースに関連付けられる(300)。
-ここで、各データソースについて、正確に1つのフラクタイル情報インスタンスFは各サンプリング期間中にアクティブであり、
-ここで、各データソースについて、アクティブでないフラクタイル情報インスタンスは、各サンプリング期間中にパッシブ(passive)であり、
-ここで、各データソースについて、アクティブであるフラクタイル情報インスタンスFemptyは、サンプリング期間(S)の開始時に空であり(105)、
-ここで、各データソースについて、パッシブなフラクタイル情報インスタンスは、送信および/または格納されて、さらなる処理(130)のために利用可能にされ、
-ここで、各データソースについて、少なくとも1つのパッシブなフラクタイル情報インスタンスは、各サンプリング期間の終わりにリサイクル可能であって、次のサンプリング期間のために空のアクティブなフラクタイル情報インスタンスになることができる。
【0060】
典型的には、1つ以上のデータソースからのデータポイントの収集(110)は、テストエージェントによって実行される。
-ここで、各テストエージェントは、サンプリング期間S全体を通じて、データソースによって関連付けられた各データポイントを収集した直後に、各データソースに関連付けられたフラクタイル情報インスタンスFを更新し(120)、
-ここで、各テストエージェントは、各サンプリング期間(S)の終了後に、制御センタにフラクタイル情報インスタンス(F)をアップロードし(122)、さらなる処理のために利用可能とする。
【0061】
一実施形態によれば、さらなる処理(130)のステップは、高度な統計解析を実行するステップ(132)を含み、ここで、フラクタイル情報は、完全なサンプルにアクセスすることなく、サンプルからのランク統計の推定(134)を可能にする。
【0062】
一実施形態によれば、収集するステップ(110)は、サンプリング期間を含み、ここで、個々の測定間の間隔ならびにサンプリング期間の長さは、測定されたメトリック、測定が行われるネットワークの一部におけるトラフィックレートのうちの1つまたは複数に応じて変化する。
【0063】
フラクタイル情報表現が相対誤差のバランスをとるように選択される任意の実施形態によれば、データポイントは丸められ(rounded off)、(仮数、指数の)対によって表されることができるが、どの基部を指数に使用すべきか、また(仮数、指数の)対がビン(bin)またはカウンタにどのようにマッピングされるかについてはここでは説明しない。
【0064】
様々な実施形態によれば、この表現にはいくつかの選択肢があるが、2つの最も自明なものは、基数(base)2および基数10である。本発明の好ましい実施形態の実施において、仮数を、1/2以上1未満の数である正規化された分数(normalized fraction)として表すように選択した。コンピュータプログラムプロダクトとして好適な実施形態を実現するために使用したCプログラミング言語には、オリジナルの倍精度浮動小数点数を、分数*2^指数がオリジナルの数と等しくなるように正規化された分数および対応する指数に変換するために利用可能な関数frexpがある。フラクタイル情報タイプは次のパラメータを含む:
【0065】
name: タイプの名前を表すテキスト文字列
sigbits: 仮数を表す有効ビット数
expmin: 最小2乗指数
expmax: 最大2乗指数
negative: データポイントがゼロ未満であるかどうかを示すフラグ
positive: データポイントがゼロを超えるかどうかを示すフラグ
【0066】
上記の基本パラメータから、以下のヘルパー(helper)パラメータを計算する:
signum=2^sigbits: 正規化された分数の異なる仮数値の数(丸めた後)
expnum=expmax-expmin+1: 指数の異なる値の数
absmin=l/2*2^expmin: 表現可能な最小絶対値>0
absmax=(1-ε)*2^expmax: 表現できる最大絶対値、ここで、εは表現できる最小値>0
rawmin=0 if negative=false, otherwise
rawmin=-((signum/2)*expnum-1): 最小ロー(raw)カウンタ(ビン、バケット)インデックス
rawmax=0 if positive=false, otherwise
rawmax=((signum/2)*expnum-1): 最大ローカウンタインデックス
rawnum=signum*expnum-1 if negative=positive=true, otherwise
rawnum=signum/2*expnum: カウンタ/ビン/バケットの数
【0067】
これらのヘルパーパラメータが計算されると、各データポイントの値を[rawmin,rawmax]の範囲のロー(raw)インデックスにマッピングし、次に-rawminを加算して実際のカウンタ/ビン/バケットインデックスを得ることが簡単になる。
【0068】
値に対するカウンタのインデックスは以下のように計算される:まず、値は、absminおよびabsmaxに対してチェックされ、符号を変えずにこれらの間にあることを確認するためにキャップされる(capped)。次に、frexpを使用して、値から分数および指数が計算される。これに続いて、分数<0の場合には1/2を加算し、分数>0の場合には1/2を減算して、その結果を圧縮に格納することによって、分数を圧縮する。次に、rawindexの最初の部分は、signumでcompressを乗算し、compress<0の場合は積に-1/2を加算し、compress<0の場合は積に1/2を加算して計算され、最後に小数を切り捨てて整数を求める。rawindexの第2の部分の計算は、(指数-expmin)*signum/2を計算することによって達成される。最後のrawindexは、compress<0の場合は第1の部分から第2の部分を減算し、compress>0の場合は第1の部分に第2の部分を加算することによって得られる。最後のインデックスの計算は、rawindexに‐rawminを加算することによって完了する。
【0069】
フラクタイル情報の更新と保守
フラクタイル情報は、タイプおよびヘルパーパラメータの他に、rawnumカウンタのアレイによって表される。新しいデータポイントが利用可能なときにフラクタイル情報を更新することは、上述のようにインデックスを計算し、次いでインデックスに関連付けられるカウンタ、すなわち、counter[index]を1つ増やすことによって達成される。
【0070】
更新の他、フラクタイル情報に要求される唯一の他のメンテナンスは、サーバへのアップロードが確認されたときにすべてのカウンタをリセットすることである。これは、全てのカウンタをループし(looping through)、それらをゼロに設定することによって自明に達成される。
【0071】
フラクタル推定値の計算
フラクタイル計算の主な動作は、以下の式を使用してターゲットランクを最初に計算することである:ランク= a/b*n、ここで、aおよびbはフラクタイルパラメータであり、nはフラクタイル情報が表すデータポイントの数である。
【0072】
すべてのパラメータの組み合わせが有効であるわけではない。たとえば、10個のデータポイントの1/1000フラクタイルを計算しても意味がない。少なくとも、a/bが既約である(irreducible)と仮定すると、nはb以上でなければならないが、nがbよりも少なくとも10倍大きいことを必要とすることはより意味がある。さらに、(妥当な精度で)計算することができるフラクタイルは、rawnumにも依存する。カウンタが少なすぎる場合、フラクタイル推定値は極めて粗くなる。
【0073】
パラメータがOKであると仮定すると、フラクタル推定値の計算は、sum[index_1]< rank <= sum[index]となるようなインデックスを見つけることによって達成され、ここでsum[index]= counter[0]+ ... + counter[index]である。
【0074】
この計算は、ブルートフォース(brute force)を使用して、すなわち、合計がランク(rank)を超えるまで合計しながらカウンタをループすることによって、または相補的データ構造を使用して探索を高速化することによって実行することができる。
【0075】
フラクタイル情報が最大に圧縮される場合、すなわち、フラクタイル計算を高速化するための追加の情報が圧縮表現に含まれず、1つのフラクタイル計算のみが実行される場合、ブルートフォースが最も効率的な方法である。
【0076】
しかしながら、複数のフラクタイル推定値を計算する必要がある場合、計算を高速化するために相補的なデータ構造を構築することが典型的にはより効率的である。このような相補的データ構造の圧縮表現は、フラクタイル情報の圧縮表現に含まれるフラクタイル計算を高速化するために使用される追加情報を構成する。
【0077】
次に、図3を参照する。
最も単純な相補的データ構造は、サイズが最も近い整数に切り上げられたrawnumの平方根に等しい総和(aggregated sum)アレイaggrsumである。カウンタアレイは、最後のサブアレイを除いて、等しいサイズのサブアレイに論理的に分割され、ここで、各サブアレイは、aggrsum[0]がサブアレイゼロのカウンタの合計に等しく、aggrsum[uberindex]がaggrsum[uberindex-1]にサブアレイuberindexのカウンタの合計を加えたものに等しくなるように、aggrsumの1つの要素に対応する。
【0078】
総和アレイを使用するフラクタル推定値の計算は最初に、aggrsum[uberindex-]< rank<=aggrsum[uberindex]となるようにuberindexを見つけ、次に、サブアレイuberindexに直接ジャンプして、上述の方法を使用してそこでの探索を終了することによって達成される。
【0079】
総和アレイ(aggregated sum array)のサイズとカウンタアレイの各サブアレイの双方がおおよそrawnumの平方根に等しいので、総和アレイを用いてフラクタイル推定値を計算するための計算量、すなわち作業量はrawnumの平方根に比例する。これは、rawnumに比例する総和アレイなしで計算を実行するための計算の複雑さと比較されるべきである。1レベルの総和アレイを使用するための記憶オーバヘッドは、rawnumの平方根に比例する。
【0080】
ここで、総和する方法は、カウンタを直接使用することにより、最下位の合計アレイなしでも使用することができ、その理由は、総和アレイを使用して、カウンタアレイに迅速にジャンプし、次いで、累算を開始して、カウンタアレイのごく一部を処理するだけでよいことを確実にしながら、ターゲットランクを見つけることができるからである。実際、一実施形態によれば、この方法は、全和アレイ(full sum array)がそれを圧縮するときにいくつかの問題を引き起こすので好ましい。
【0081】
この方法はより多くのレベルに一般化することができ、また、何らかの余分な記憶装置を使用することを犠牲にして、計算をさらに高速化することができる。2つの総和レベルを用いて、サブアレイのサイズはrawnumの立方根として選択され、サブアレイの数はrawnumの立方根の平方に対するものである。中間レベルでは、rawnum合計の立方根の平方からなる総和アレイが記憶され、最上位レベルではアレイサイズはrawnumの立方根に等しい。
【0082】
以下では、0、1、および2レベルの総和アレイのストレージ・コストと計算コストを示して、100万のrawnumの固定値に対してストレージ空間対速度のトレードオフがどのように働くかを調べる。
【0083】
【表1】
【0084】
3つのレベルについてさえ、ストレージ・オーバヘッドは、100万の整数のカウンタアレイのサイズを決定するrawnumと比較してかなり小さいことに留意されたい。
【0085】
当業者であれば、これをさらに多くのレベルに一般化して、いくらかの追加のストレージをトレードしながら、フラクタイル推定値の計算のさらに高速化を達成することができるであろう。
【0086】
フラクタイル推定値の高速計算を提供する別の方法は、合計アレイ(これは定義により、ソートされる)を直接計算し、次いで、バイナリサーチを実行して、ターゲットランクに関連するインデックスを見つけることである。実際、個々のカウンタの各々は合計アレイから導出することができるので、カウンタアレイを記憶する必要さえなく、ストレージのオーバーヘッドをゼロにする。このようにして、計算のためのコストは、rawnumの基数2の対数に比例し、これは、100万のエントリに対して約20である。メモリアクセスおよびキャッシュラインサイズの局所性を利用できるように合計アレイを編成すると、計算コストがさらに低減される。キャッシュラインサイズが512ビットであるインテルアーキテクチャを仮定し、さらに、各総和(集約和)が32ビットを必要とすると仮定すると、各メモリアクセスで16の総和を探索し、17のファンアウト(fan-out)の探索を達成することができる。17は100万より大きいので、この例では計算コストを5に低減することを意味する(メインメモリからキャッシュへのメモリ読み出しのコストが計算のコストを支配すると仮定する)。
【0087】
高速フラクタイル計算を提供するさらに別の方法は、事前に計算された選択されたフラクタイルのテーブルを使用し、これらのそれぞれについて、対応するカウンタが格納されているカウンタアレイにインデックスを記録することである。このようにして、事前に計算されたフラクタイルの計算は超高速(すなわち、一定時間)になり、他のフラクタイルの計算は、最も小さい事前に計算されたフラクタイル(例えば、テーブルが50%、75%、および90%を含み、80%パーセンタイルを計算したい場合、75%パーセンタイル)であるベースカウンタで開始し、その後、80%パーセンタイルのターゲットランクに達するまで、ベースカウンタを越えてカウンタをループする。しかしながら、これは、予め計算された各フラクタイルに対して、合計アレイがある場合に有する対応する合計が計算され、テーブルに記憶されることを必要とする。さもなければ、ターゲットランクを正確にヒットすることは不可能である。
【0088】
フラクタイル情報の集約
フラクタイル情報の集約は、簡単である。同じデータソースを表すフラクタイル情報の2 つのインスタンスXとYがある場合(同じタイプであることとする)、集約は、カウンタアレイX.counter[0..rawnum-1] およびY.counter[0..rawnum-1]をループし、各インデックスにカウンタを追加するだけで実行される。すなわち、各インデックス0..rawnum‐1に対して、A.counter[index]= X.counter[index]+ Y.counter[index]であり、ここでAは集約フラクタイル情報である。
【0089】
さらに、(フラクタイル情報がカウンタではなくカウンタの合計によって表される場合)合計を加算することによって集約を実行することも、以下のとおり簡単である。
A.sum[index]= A.counter[0]+ ... + A.counter[index]=
=(X.counter[0]+Y.counter[0])+ ... +(X.counter[index]+Y.counter[index])=
=(X.counter[0]+... +X.counter[index])+(Y.counter[0]+...+Y.counter[index])=
= X.sum[index]+Y.sum[index].
【0090】
フラクタイル情報の圧縮と解凍
フラクタイル情報の記憶コストは、典型的には、カウンタのアレイの記憶コストおよびカウンタの合計によって支配される。タイプ、平均および極値のような他のすべては、これらがフラクタイル情報と共に記憶される場合、一定容量の記憶装置を必要とし、集約された合計アレイが使用される場合、集約された合計アレイの記憶コストは、カウンタアレイの記憶コストと比較して無視できる。
【0091】
タイプが豊富(rich)である場合、つまり、高い粒度と多くのカウンタを持つ場合、サンプルを表すフラクタイル情報の多数のカウンタは、ゼロである可能性があるため、情報を含んでいない可能性がある。全ての非ゼロ値がサンプルのサイズ等によって設定される制約内でランダムであることが期待できる。すなわち、カウンタの分数(一部)(fraction)が同じ値を有することを期待しなくてよい。これらの仮定の下で、ゼロを記憶することを回避し、ゼロではないカウンタのみを記憶することによって、カウンタアレイを圧縮することができるはずであることは明らかである。しかしながら、合計アレイを使用している場合、最初の非ゼロカウンタに先行するカウンタに対応する合計を除いて、合計はゼロではない。したがって、カウンタアレイと同じサイズの合計アレイを含む表現は避ける。
【0092】
以下では、カウンタアレイを圧縮および解凍する方法、異なる表現をいつ使用するか、およびこれが機能する理由を詳細に説明する。
【0093】
最初に、サイズnのカウンタアレイが与えられると、densityを非ゼロカウンタの数として定義する。さらに、counterbitsを、カウンタを表すために使用されるビット数とし、indexbitsを、カウンタアレイへのインデックスを表すために使用されるビット数とする。
【0094】
密度(density)が低いか、中程度か、または高いかに応じて、3つの異なる表現を扱う。
【0095】
低密度
counter[index]>0である各インデックスについて、(index, counter[index])の対を記憶する。さらに、リストのサイズ、すなわち対の数を記録する。
【0096】
中密度
counter[index]>0である各インデックスについて、カウンタを記憶する。さらに、サイズnのビットアレイがあり、各ビットはカウンタに対応し、格納されたカウンタに関連するビットのみがセットされる。
【0097】
高密度
カウンタアレイを非圧縮で記憶する。
【0098】
次に、これら3つの方法のそれぞれの記憶コストを調べて、どの方法をいつ使用するかを決定する閾値を計算するための式を導出する。S、S、およびSを、それぞれ低密度、中密度、および高密度表現に必要なビット数とすると、以下となる。
SL=density*(counterbits + indexbits) + indexbits
SM=density*counterbits + n
SH=n*counterbits
【0099】
中密度表現ではなく低密度表現を使用するための基準は、S<Sである。すなわち:
density*(counterbits + indexbits) + indexbits < density*counterbits + n
density*(counterbits + indexbits) - density*counterbits < n - indexbits
density*(counterbits + indexbits - counterbits) < n - indexbits
density < (n - indexbits)/indexbits
【0100】
高密度表現ではなく中密度表現を使用するための基準は、S<Sである。すなわち:
density*counterbits + n < n*counterbits
density*counterbits < n*counterbits - n
density < (n*counterbits - n)/counterbits
【0101】
典型的には、counterbitsは32ビットであり、これは中密度ケースで使用されるビットアレイが中密度レンジの下端で大きな記憶コストオーバヘッドを引き起こし得ることを意味する。同様の方法を再帰的に使用して、ビットアレイも圧縮することができる。原則として、このハイブリッドアプローチは、上述の総和アレイと同じである。ビットアレイは、同じサイズのチャンクに分割され、各チャンクについて1ビットを持つ別のビットアレイが使用されて、ゼロのみを含むのがどのチャンクか、および1を含むのがどのチャンクかを記録する。この場合、集約されたビットアレイのみを格納すればよく、これは、例えば、オリジナルサイズの1/32のサイズにでき、すべてのビットがゼロではない32ビットのチャンクのみを格納すれよい。
【0102】
カウンタアレイの圧縮は、密度を見つけるために最初にそれを分析することによって行われる。次に、上述したような適切な圧縮方法を実行する。
【0103】
低密度圧縮は、カウンタアレイをループし、非ゼロカウンタおよびそれらのインデックスを収集し、これらをdensityのサイズの事前に割り当てられた空のアレイに記憶し、続いて密度を記憶することによって達成される。解凍(圧縮解除)は最初に、タイプで使用可能な情報に基づいて、フラクタイル情報の空およびリセット(すべてのカウンタはゼロ)インスタンスを割り当てることによって実現される。次に、対のアレイをループし、各対(インデックス、値)について、空のフラクタイル情報インスタンスのcounter[index]に値を割り当てる。
【0104】
中密度圧縮は最初に、サイズnの空のビットアレイとサイズがdensityの小さいカウンタアレイとを割り当てることによって達成される。次に、オリジナルのカウンタアレイがループされ、各非ゼロカウンタが小さいカウンタアレイ内の次に利用可能な位置に記憶されると同時に、ビットアレイ内のビットを、オリジナルのカウンタアレイ内のカウンタと同じインデックスに設定する。低密度表現と同様に、解凍は、空のフラクタイル情報インスタンスを割り当てることによって開始する。これに続いて、小さいカウンタアレイ内の最初のカウンタで開始し、設定されたビットが見つかるまでビットアレイをループし、その後、小さいカウンタアレイ内の現在のカウンタの値を、空のフラクタイル情報インスタンスに、設定されたビットのインデックスと同じインデックスにおいて書き込んだ後、次のカウンタが現在のカウンタになるように、小さなカウンタアレイ内で前方に移動する。
【0105】
ハイブリッド方法を使用する場合の圧縮および解凍は、中密度アプローチを使用する場合の圧縮および解凍と本質的に同一であり、ビットアレイがどのように扱われるかのわずかな違いがある。
【0106】
タイプの縮減
通常、フラクタル情報のタイプは、所与のデータソースに対して変更されない。しかしながら、状況によっては、データソースの分析が、関心を引くことが何も起こらない値範囲において高精度で推定値を計算することができる過度にリッチなタイプを使用することによって開始されている可能性がある。
【0107】
リッチなタイプのフラクタイル情報のインスタンスをとり、それをよりリッチでないタイプとして表現されるようにダウンサンプルすることは常に可能である。これにより、データソースのタイプを縮減でき、集約を実行する際、よりリッチなタイプのインスタンスが、集約を実行する前に、よりリッチでないタイプにダウンサンプリングされる。
【0108】
上記に開示されたように、様々な態様および実施形態による本発明は、データソースからフラクタイル情報をどのように計算し表すかを開示する。
【0109】
本発明の方法ステップは、入力データを操作し、出力を生成することによって、本発明の機能を実行するための命令のプログラムを実行するプログラマブルプロセッサによって実行されてもよい。
【0110】
本発明は、デジタル電子回路で、またはコンピュータハードウェア、ファームウェア、ソフトウェアで、またはそれらの組合せで実施することができる。
【0111】
本発明は、データ記憶システム、少なくとも1つの入力デバイス、および少なくとも1つの出力デバイスからデータおよび命令を受信し、それらにデータおよび命令を送信するように結合された少なくとも1つのプログラマブルプロセッサを含むプログラマブルシステム上で実行可能な1つまたは複数のコンピュータプログラムで有利に実施することができる。各コンピュータプログラムは、高レベルの手続き型またはオブジェクト指向プログラミング言語、または必要に応じてアセンブリ言語または機械言語で実現することができ、いずれの場合でも、言語はコンパイル型または解釈型言語であってもよい。
【0112】
図1に示す方法の一例によれば、サーバおよび/またはサーバを含む制御センタからコンピュータネットワークのメトリックを測定する(100)方法は、以下のステップを含む:
-各サンプリング周期Sの開始時に、各データソースについて、データソースに関連する型の空のフラクタイル情報インスタンスFemptyを提供する(105);
-サンプリング期間(S)を通して、複数のデータソースからデータポイントを収集する(110)、ここで、サンプルを構成するデータポイントPのセットは、各データソースについて各サンプリング期間Sを通じて収集される;
-サンプリング期間(S)を通して、各データポイントに関連するフラクタイル情報インスタンスFを更新し(120);および
-各サンプリング期間(S)の終わりに、フラクタイル情報インスタンスFを制御センタにアップロードし、さらなる処理のために利用可能にする(130)。
【0113】
本方法のさらなる一例によれば、本方法は、以下を含むことができる:
-1つ以上のデータソースからのデータポイントの収集(110)は、テストエージェントによって実行され;
-各テストエージェントは、サンプリング期間(S)を通して各データポイントを収集した直後に、各データソースに関連付けられたフラクタイル情報インスタンスFを更新する(120);;
-各テストエージェントは、各サンプリング期間(S)の終了後、制御センタにフラクタイル情報インスタンスFをアップロードし、さらなる処理に利用可能とする(130)。
【0114】
本方法のさらなる一例によれば、本方法は、以下を含むことができる:
-各データソースからのデータポイントの収集(110)は、サンプル期間(S)を通してサンプルの全てのデータポイントPを収集するテストエージェントによって実行され;
-テストエージェントは、サンプル期間(S)の終わりに、サンプル全体を制御センタにアップロードする(121);
-制御センタは、受信したサンプルからフラクタイル情報インスタンスFを生成し、さらなる処理(130)に利用可能にする。
【0115】
本方法のさらなる一例によれば、本方法は、以下を含むことができる:
-制御センタは、サンプリング期間(S)の開始時に、各データソースの空の/リセットされたフラクタイル情報インスタンスFで開始し(105);
-テストエージェントは、サンプリング期間(S)を通して、個々のデータポイントまたはデータポイントのセットを制御センタに繰り返しアップロードし(122);
-サーバは、それぞれのテストエージェントから各データポイントを受信した直後に、各データソースについて、フラクタイル情報インスタンスFを更新する(120)ように構成され、ここで、サーバはサンプリング期間(S)を通してデータポイントを受信し、フラクタイル情報インスタンスFはサンプリング期間(S)の終わりにサンプル全体を表し、さらなる処理に利用可能とされる(130)。
【0116】
本方法のさらなる一例によれば、さらなる処理(130)のステップは、完全なサンプル(全体サンプル)にアクセスすることなく、フラクタイル情報インスタンスFから、ランク統計の計算(134)などの高度な統計解析を実行するステップ(132)を含む。
【0117】
本方法のさらなる一例によれば、収集するステップ(110)は、サンプリング期間(S)を含み、ここで、個々の測定間の間隔ならびにサンプリング期間の長さは、測定されたメトリック、測定が行われるネットワークの一部におけるトラフィックレートのうちの1つまたは複数に応じて変化する。
【0118】
本方法のさらなる一例によれば、サンプリング期間中にデータ点のセットを収集するステップ(110)は、データの統計的分析がサポートされる最小の時間フレームであるサンプリング期間(S)を含む。
【0119】
本方法のさらなる例は、以下を含む:
-各データソースから収集されたデータポイントPのセットは、各データソースおよびデータポイントPのセットに対して固有であり得るサンプリング期間(S)の間に収集され;および/または
-各データソースには、フラクタイル情報インスタンスがどのように処理され、エンコードされ、デコードされるか、を指定するフラクタイル情報タイプが関連付けられ;および/または
-各データソースについて、サンプリング周期の開始時にリセットが実行され、空のフラクタイル情報インスタンスFemptyを生成し、および/または
-収集されたデータポイントPは、各データソースについて、サンプリング期間を通して、関連するフラクタイル情報インスタンスFを繰り返し更新することによって処理され;および/または
-フラクタイル情報インスタンスFは、各データソースについてサンプリング周期(S)の終了時、圧縮され、さらなる処理のために計算装置またはサーバに送信される。
【0120】
図2および図3を参照して本明細書の説明において既に説明されたステップは、例示された方法のさらなる例に含まれてもよい。
【0121】
本発明のさらに別の例によれば、システムが提供される。このシステムは、データソースを含むコンピュータネットワークに接続可能に関連づけられる。このシステムは、サーバおよび/または制御センタ、およびデータソースに関連付けられたテストエージェントを含み、ここで、このシステムは、各データソースについて、各サンプリング期間(S)の開始時に、データソースと関連するタイプの空のフラクタイル情報インスタンスFemptyを提供するように構成され(105)、テストエージェントは、サンプリング期間(S)を通して、複数のデータソースからデータポイントを収集するように構成される(110)。ここで、サンプルを構成するデータポイントPのセットは、各データソースについて、各サンプリング期間(S)を通して収集され、サンプリング期間(S)を通じて各データソースに関連するフラクタイル情報インスタンスFを更新し(120)、各サンプリング期間(S)の終わり後に、フラクタイル情報インスタンスFを制御センタにアップロードしてさらなる処理利用で可能とするよう構成される(130)。
図1
図2
図3