JP6577455B2 - スレッド強度分析を用いた季節的傾向把握および予測によるクラウドサービスにおけるsla違反の予測的診断 - Google Patents

スレッド強度分析を用いた季節的傾向把握および予測によるクラウドサービスにおけるsla違反の予測的診断 Download PDF

Info

Publication number
JP6577455B2
JP6577455B2 JP2016507640A JP2016507640A JP6577455B2 JP 6577455 B2 JP6577455 B2 JP 6577455B2 JP 2016507640 A JP2016507640 A JP 2016507640A JP 2016507640 A JP2016507640 A JP 2016507640A JP 6577455 B2 JP6577455 B2 JP 6577455B2
Authority
JP
Japan
Prior art keywords
thread
stack
segment
block
stack segment
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2016507640A
Other languages
English (en)
Other versions
JP2016518660A (ja
JP2016518660A5 (ja
Inventor
チャン,エリック・エス
アハド,ラフィウル
ゴネイミー,アデル
サントス,アドリアノ・コベロ
Original Assignee
オラクル・インターナショナル・コーポレイション
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by オラクル・インターナショナル・コーポレイション filed Critical オラクル・インターナショナル・コーポレイション
Publication of JP2016518660A publication Critical patent/JP2016518660A/ja
Publication of JP2016518660A5 publication Critical patent/JP2016518660A5/ja
Application granted granted Critical
Publication of JP6577455B2 publication Critical patent/JP6577455B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/50Network service management, e.g. ensuring proper service fulfilment according to agreements
    • H04L41/5003Managing SLA; Interaction between SLA and QoS
    • H04L41/5009Determining service level performance parameters or violations of service level contracts, e.g. violations of agreed response time or mean time between failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/008Reliability or availability analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0715Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a system implementing multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0718Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in an object-oriented system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0778Dumping, i.e. gathering error/state information after a fault for later diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3452Performance evaluation by statistical analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3471Address tracing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/1824Distributed file systems implemented using Network-attached Storage [NAS] architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • G06F16/285Clustering or classification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3419Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Mathematical Physics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Probability & Statistics with Applications (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Debugging And Monitoring (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Description

優先権主張
本願はまた、2013年4月11日に提出され、「スレッド強度分析を用いた季節的傾向把握および予測によるクラウドサービスにおけるSLA違反についての予測的診断(PREDICTIVE DIAGNOSIS OF SLA VIOLATIONS IN CLOUD SERVICES BY SEASONAL TRENDING AND FORECASTING WITH THREAD INTENSITY ANALYTICS)」と題され、その内容が引用によりこの明細書中に援用されている米国仮特許出願連続番号第61/811,106号と、2013年12月17日に提出され、「スレッド強度分析を用いた季節的傾向把握および予測によるクラウドサービスにおけるSLA違反についての予測的診断(PREDICTIVE DIAGNOSIS OF SLA VIOLATIONS IN CLOUD SERVICES BY SEASONAL TRENDING AND FORECASTING WITH THREAD INTENSITY ANALYTICS)」と題され、その内容が引用によりこの明細書中に援用されている米国特許出願連続番号第14/109,578号とについての優先権を米国特許法第119条(e)に従って主張する。本願は、2013年4月11日に提出され、「Java(登録商標)ヒープ使用量の季節的傾向把握、予想、異常検出、およびエンドポイント予測(SEASONAL TRENDING, FORECASTING, ANOMALY DETECTION, AND ENDPOINT PREDICTION OF JAVA HEAP USAGE)」と題され、その内容が引用によりこの明細書中に援用されている米国仮特許出願連続番号第61/811,102号と、2013年12月17日に提出され、「Javaヒープ使用量の季節的傾向把握、予想、異常検出、およびエンドポイント予測(SEASONAL TRENDING,FORECASTING,ANOMALY DETECTION,AND ENDPOINT PREDICTION OF JAVA HEAP USAGE)」と題され、その内容が引用によりこの明細書中に援用されている米国特許出願連続番号第14/109,546号とについての優先権を米国特許法第119条(e)に従って主張する。本願は、2013年10月1日に提出され、「データ駆動型ビジネスプロセスおよびケースマネジメント(DATA DRIVEN BUSINESS PROCESS AND CASE MANAGEMENT)」と題され、その内容が引用によりこの明細書中に援用されている米国仮特許出願連続番号第61/885,424号と、2013年12月17日に提出され、「ビジネスプロセスおよびケースマネジメントのための知識集約型データマネジメントシステム(KNOWLEDGE INTENSIVE DATA MANAGEMENT SYSTEM FOR BUSINESS PROCESS AND CASE MANAGEMENT」と題され、その内容が引用によりこの明細書中に援用されている米国特許出願連続番号第14/109,651号とについての優先権を米国特許法第119条(e)に従って主張する。
背景
個々人および組織はデータ量の急速な増大に直面している。このようなデータは、複雑さおよび緊急性が急速に高くなる可能性がある。個々人および組織は、データに適切かつ適時に反応するために、しばしば、これらのデータを分析する必要がある。いくつかの分野においては、個々人および組織が行う行為は、規則によって管理されているが、これら規則もますます複雑になる傾向がある。たとえば、規則は、何らかの問題が起こるはずであるイベントに対する監査の影響を受け易い綿密な履歴記録をメンテナンスすることを必要とするかもしれない。代替的には、ビジネス組織間で締結されるサービスレベル合意(SLA:service level agreement)は、SLA違反を回避するために、かつ合意が満たされたかどうかを判断するために、データを系統的に分析すること、および、データ中の訴因となる情報に先を見越して対処することを必要とするかもしれない。規則、サービスレベル合意および他の要件に従うことは非常に面倒であるかもしれず、時間の経過とともにますます面倒になる可能性がある。
規制要件およびSLA要件が極めて複雑になってしまっているので、コンピュータソフトウェアは、それ自体が、要件に従おうと努力している個々人および組織を支援するのに適している。しかしながら、規則およびSLAは徐々に進化する傾向があるので、コンピュータソフトウェア自体もこれらに合わせて徐々に進化する必要がある。残念ながら、コンピュータソフトウェアを開発および更新するために用いられる従来のプロセスは遅々として進まず、しかも扱いにくい。ソフトウェア開発サイクルは通常長期にわたる。コンピュータソフトウェアの開発をはばむこれらの問題点は、部分的には、データがしばしば手順ソフトウェアコード内に隠されていることに起因する可能性がある。データは、しばしば、当該データに適用することができる情報から分離される。
本発明の実施形態に従った、スレッドまたはスタックセグメントの強度分析を適用するための技術の一例を示すフロー図である。 本発明の実施形態に従った、スレッドまたはスタックセグメントの強度分析を適用するための技術の一例を示すフロー図である。 本発明の実施形態に従った、スタックフレーム統計を更新するための技術の一例を示すフロー図である。 本発明の実施形態に従った、スタックフレーム統計を更新するための技術の一例を示すフロー図である。 本発明の実施形態に従った、スレッドおよびこれらのスレッドのスタックセグメントを分類するための技術の一例を示すフロー図である。 本発明の実施形態に従った、スレッドおよびこれらのスレッドのスタックセグメントを分類するための技術の一例を示すフロー図である。 本発明の実施形態に従った、スレッドおよびこれらのスレッドのスタックセグメントを分類するための技術の一例を示すフロー図である。 本発明の実施形態に従った、スレッドおよびこれらのスレッドのスタックセグメントを分類するための技術の一例を示すフロー図である。 本発明の実施形態に従った、スレッドおよびこれらのスレッドのスタックセグメントを分類するための技術の一例を示すフロー図である。 本発明の実施形態に従った、スレッドおよびこれらのスレッドのスタックセグメントを分類するための技術の一例を示すフロー図である。 本発明の実施形態に従った、スレッドおよびこれらのスレッドのスタックセグメントを分類するための技術の一例を示すフロー図である。 本発明の実施形態に従った、スレッドおよびこれらのスレッドのスタックセグメントを分類するための技術の一例を示すフロー図である。 本発明の実施形態に従った、スレッドおよびこれらのスレッドのスタックセグメントを分類するための技術の一例を示すフロー図である。 本発明の実施形態に従った、スレッドおよびこれらのスレッドのスタックセグメントを分類するための技術の一例を示すフロー図である。 本発明の実施形態に従った、季節的傾向把握フィルタを適用するための技術の一例を示すフロー図である。 本発明の実施形態に従った、スタックフレームの前または後の分岐点におけるスタックセグメントを分割するための技術の一例を示すフロー図である。 本発明の実施形態に従った、スタックフレームの前または後の分岐点におけるスタックセグメントを分割するための技術の一例を示すフロー図である。 本発明の実施形態に従った、スタックフレームの前または後の分岐点におけるスタックセグメントを分割するための技術の一例を示すフロー図である。 本発明の実施形態に従った、スレッドのスタックセグメントを一体化する(coalescing)ための技術の一例を示すフロー図である。 本発明の実施形態に従った、スレッドのスタックセグメントを一体化するための技術の一例を示すフロー図である。 本発明の実施形態に従った、スレッドのスタックセグメントを一体化するための技術の一例を示すフロー図である。 本発明の実施形態に従った、スレッドのスタックセグメントを一体化するための技術の一例を示すフロー図である。 本発明の実施形態に従った、スレッドのスタックセグメントを一体化するための技術の一例を示すフロー図である。 本発明の実施形態に従った、指定されたスタックトレースおよび一体化されたセグメントの指定されたセットについてのスレッド分類項目を登録するための技術の一例を示すフロー図である。 本発明の実施形態に従った、指定されたスタックトレースおよび一体化されたセグメントの指定されたセットについてのスレッド分類項目を登録するための技術の一例を示すフロー図である。 本発明の実施形態に従った、指定されたスレッド分類情報項目についてのスレッド分類統計を更新するための技術の一例を示すフロー図である。 本発明の実施形態に従った、指定されたセグメント情報項目についてのスタックセグメント統計を更新するための技術の一例を示すフロー図である。 本発明の実施形態に従って用いられ得るシステム環境のコンポーネントを示す簡略ブロック図である。 本発明の実施形態に従って用いられ得るコンピュータシステムの簡略ブロック図である。 本発明の実施形態に従った、さまざまな機能を用いてデータのさまざまな状態を変換するフレームワークを示すブロック図である。 本発明の実施形態に従った傾向を示す図である。 本発明の実施形態に従った、自動的に分類されたデータポイントのセットの例を示す図である。
詳細な説明
概要
データは、事実、情報、仮説および指令に分類することができる。知識を適用することによって他のカテゴリのデータに基づいてデータのいくつかのカテゴリを生成するアクティビティは、分類、査定、解決および規定(Enactments)に分類することができる。これらの分類は、たとえば履歴記録を維持することなどによって診断システムを強化するのに用いることができる。このような診断システムは、仮想マシンによってスレッドまたはスタックセグメントの強度およびメモリヒープ使用量などのシステムバイタルサインに知識を適用することに基づいて、コンピューティングシステムの故障を予測するシステムを含み得る。これらのバイタルサインは、実際には、メモリリーク、スタックした(stuck)スレッド、デッドロック、輻輳または他の問題などの情報を生成するように分類することができる。分類は、クラスの自動生成や、期間が不規則なサンプル間隔を用いた時系列データの傾向把握(trending)を含み得る。
データとアクティビティとの関係の維持
本発明の実施形態に従うと、アクティビティとそれらのアクティビティの動機づけとなったデータとの間の形式関係を維持するための技術が開示される。より具体的には、事実として形式的に認識されるデータは、形式的には、それらの事実に基づいた情報を導き出す分類アクティビティと関連付けることができるか、またはこの分類アクティビティにマップすることができる。このような情報はまた、一般的な意味のデータであるが、事実とは異なり、形式的に情報として認識することができる。査定アクティビティは、このような情報に基づいて仮説を導き出すものであるが、形式的にはその仮説に関連付けることができるかまたはその仮説にマップすることができる。解決アクティビティは、このような情報および仮説に基づいて指令を導き出すものであるが、形式的には、その指令と関連付けることができるかまたはその指令にマップすることができる。指令はまたデータであるが、事実および情報とは異なり、形式的に指令として認識することができる。規定(Enactment)アクティビティは、このような指令に基づいてさらに別の事実を導き出すものであるが、形式的には、さらに別の事実に関連付けることができるかまたはマップすることができる。
このように、本発明の実施形態においては、データの各項目は、事実として、情報として、仮説として、または指令として区別することができる。各々のアクティビティは、分類、査定、解決または規定として区別することができる。外部ソースからセンサなどのシステムに受信された生データは、概して、定性的ではなくむしろ定量的な事実として区別することができる。このような事実に適用される知識ベースの自動プロセスまたは人の判断は、分類として区別することができる。分類に起因するデータは、情報として区別することができる。情報は、概して、事実が定性的に意味すると判断または決定されたものを示す。このような情報に適用される知識ベースの自動化プロセスまたは人の判断は、査定として区別することができる。査定に起因するデータは仮説として区別することができる。同様に、このような仮説に適用される知識ベースの自動化プロセスまたは人の判断は、解決として区別することができる。解決に起因するデータは指令として区別することができる。指令は、概して、情報によって指定される状態を補修するかまたは改善しようとする作業に適しているとみなされる動作を規定する。このような指令に適用される知識ベースの自動化プロセスまたは人の動作は、規定として区別することができる。規定は、概して、指令によって規定される動作を実行する。規定に起因するデータは、規定によってもたらされた状態に対してなされた測定によって得られてもよく、事実として区別することもできる。さらなる分類はこれらの事実に関して行うことができるので、上述のシーケンスを反復して繰り返すことができる。繰り返しのたびに、付加的な事実、情報および指令を確認することができる。繰り返しのたびに、付加的な分類、査定、解決および規定を実行することができる。このように、本発明の実施形態は、情報を生成する事実、仮説を生成する情報の査定、指令を生成する情報の解決、およびさらなる事実を生成する指令の規定を周期的に分類することを含み得る。この周期は、CARE(Classification-Assessment-Resolution-Enactment:分類・査定・解決・規定)ループと称される。
本発明の一実施形態においては、システムにおいて行なわれる分類のたびに、その分類とその分類の動機づけとなった事実との間のマッピングを生成および格納することができる。システムにおいてなされる査定のたびに、その査定とその査定の動機づけとなった情報との間のマッピングを生成および格納することができる。システムにおいてなされる解決のたびに、その解決とその解決の動機づけとなった情報との間のマッピングを生成および格納することができる。システムにおいて実行される規定のたびに、その規定とその規定の動機づけとなった指令との間のマッピングを生成および格納することができる。加えて、各々の分類とその分類に起因する情報との間のマッピングを生成および格納することができる。加えて、各々の査定とその査定に起因する仮説との間のマッピングを生成および格納することができる。加えて、各々の解決とその解決に起因する指令との間のマッピングを生成および格納することができる。加えて、各々の規定とその規定に起因する事実との間のマッピングを生成および格納することができる。
本発明の一実施形態においては、事実、分類、情報、査定、仮説、解決、指令および規定のインスタンスを分類するために、オブジェクト指向クラスのセットが確立される。これらのクラスの各々のドメイン特有サブクラスはこれらのクラスから導き出すことができる。たとえば、特定のドメイン(たとえば、データセンタ健全性の監視、診断および管理)のために、事実クラスのドメイン特有サブクラスは事実クラスから導き出すことができ、分類クラスのドメイン特有サブクラスは分類クラスから導き出すことができ、査定クラスのドメイン特有サブクラスは査定クラスから導き出すことができ、仮説クラスのドメイン特有サブクラスは仮説クラスから導き出すことができ、解決クラスのドメイン特有サブクラスは解決クラスから導き出すことができ、指令クラスのドメイン特有サブクラスは指令クラスから導き出すことができ、規定クラスのドメイン特有サブクラスは規定クラスから導き出すことができる。これらのドメイン特有サブクラスの各々には、これらを適用することのできるドメインに適したラベルおよび属性を与えることができる。たとえば、データセンタ健全性管理、診断および管理ドメインにおいては、事実クラスのドメイン特有サブクラスはスレッドダンプクラスであってもよい。別の例の場合、情報クラスのドメイン特有サブクラスはスタックした(stuck)スレッドクラスであってもよい。別の例の場合、指令クラスのドメイン特有サブクラスはロードバランシングクラスであってもよい。
本発明の一実施形態においては、事実であるデータ項目ごとに、事実クラスのドメイン特有サブクラスのインスタンスであるオブジェクトがインスタンス化されて、そのデータ項目に関係する属性の値を格納することができる。情報であるデータ項目ごとに、情報クラスのドメイン特有サブクラスのインスタンスであるオブジェクトがインスタンス化されて、そのデータ項目に関係する属性の値を格納することができる。指令であるデータ項目ごとに、指令クラスのドメイン特有サブクラスのインスタンスであるオブジェクトがインスタンス化されて、そのデータ項目に関係する属性の値を格納することができる。
本発明の一実施形態においては、分類であるアクティビティごとに、分類クラスのドメイン特有サブクラスのインスタンスであるオブジェクトがインスタンス化されて、そのアクティビティに関係する属性の値を格納することができる。査定であるアクティビティごとに、査定クラスのドメイン特有サブクラスのインスタンスであるオブジェクトがインスタンス化されて、そのアクティビティに関係する属性の値を格納することができる。解決であるアクティビティごとに、解決クラスのドメイン特有サブクラスのインスタンスであるオブジェクトがインスタンス化されて、そのアクティビティに関係する属性の値を格納することができる。規定であるアクティビティごとに、規定クラスのドメイン特有サブクラスのインスタンスであるオブジェクトがインスタンス化されて、そのアクティビティに関係する属性の値を格納することができる。
本発明の一実施形態においては、これらのオブジェクト間のマッピングを生成および格納することができる。このようなマッピングは、場合よっては、このようなマッピングを格納することができるデータベースに対してクエリを実行することによって、後でリコールすることができる。
分類・査定・解決・規定ループ
本発明の一実施形態においては、4つの別個のクラスのデータ、すなわち事実、情報、仮説および指令、が規定される。一実施形態においては、4つの別個のクラスの知識、すなわち分類、査定、解決および規定が規定される。情報インスタンスは、分類プロセスによって事実から抽出された観察および/または予測および/またはノルマおよび/または目標を含み得る。仮説インスタンスは、査定プロセスによってなされた観察および/または予測から導き出すことができる。指令インスタンスは、解決プロセスによってなされた仮説から導き出すことができる。規定プロセスは新しい事実を生成することができる。
一実施形態においては、事実(システムへの生入力)は、分類知識を適用することによって観察および/または予測および/またはノルマに分解することができる。事実は、観察についての確立された用語を表わす別個のタグ特性にマッピングすることができる。観察は、仮説を導き出すために査定を実行するのに用いることができる。このような仮説は確率、規模および反応緊急性を有し得る。観察、予測、ノルマおよび/または仮説を用いて、状況に対処するための指令(アクションプラン)を決定することができる。指令は、規定知識を適用することによって実行することができる。指令が規定されると、新しく現われた事実が分類され得る。さらなる査定を実行することにより、状況が解決されたかどうか、または、さらなる指令が確認されるべきであるかどうかを判断することができる。
この明細書中に開示される技術を用いてアプリケーションを開発することができる。この明細書中に開示される知識、情報、プロセスおよび社会的相互関係モデルを用いて、データ駆動型アプリケーションを開発することができる。セマンティクスは、データを事実、情報、仮説および指令に分類することによってデータに関連付けることができる。このように区別されたこれらのデータは、CAREループを用いて、分類、査定、解決および規定の知識と相互に関連付けることができる。データベース技術を用いて、この明細書中に開示される技術を実現し、かつ、この明細書中に開示されるモデルを実現することができる。
知識、情報、プロセスおよび社会的相互関係モデル
この明細書中に開示されるモデルを一般的な設計パターンとして用いて、進化的アプリケーションを発展させることができる。このようなアプリケーションは符号化された知識プロセスを徐々に投入することによって発展させることができる。このような符号化された知識プロセスを用いることにより、手動プロセスを自動化することができる。指令クラスは、指令を実行するために必要な暗黙知のプロファイルに関連付けることができる。アクタークラスは暗黙知プロファイルに関連付けることができる。アクターの指令および暗黙知プロファイルについての暗黙知要件を適合させることによって、最適な人的資源を選択し、各々のタスクに割当てることができる。CAREループは、動的な反応システムを構築するためにエンジンとして用いることができる。
知識、データおよびアクター
本発明の一実施形態においては、3つのオブジェクト指向クラス、すなわちデータクラス、知識クラスおよびアクタークラス、を規定することができる。オブジェクトはこれらのクラスからインスタンス化することができる。これらのオブジェクトはアプリケーション用のデータベースに格納することができる。複数のバージョンの各オブジェクトを仮データベースにおいて維持することができるため、必要に応じて各オブジェクトの履歴を得ることができる。
データオブジェクト(データクラスのインスタンス)は、事実、イベントストリーム、関係、拡張マークアップ言語(XML:Extensible Markup Language)ドキュメント、テキストなどの構造化された生のコンテンツ、半構造化された生のコンテンツ、および構造化されていない生のコンテンツを表わし得る。データオブジェクトはまた、カテゴリ、タグ、関係およびコンテナなどのメタデータを表わし得る。データオブジェクトはまた、ユーザインターフェイス形式、規定形式および通知テンプレートなどの獲得プロセスによって取り込まれたコンテンツを表わし得る。
知識オブジェクト(知識クラスのインスタンス)は、アルゴリズム、スクリプト、プロセス、クエリ、リソース記述フレームワーク(RDF:Resource Description Framework)原理、プロダクションルール、デシジョンツリー、サポートベクトルマシン、ニューラルネットワーク、ベイズ(Bayesian)ネットワーク、隠れマルコフモデル、ホップフィールドモデル、人の暗黙知などを表わし得る。データオブジェクトが追加、変更または削除されると、知識をこれらのデータオブジェクトに適用することができる。知識オブジェクトが更新されると、結果として、その知識オブジェクトにおける知識が既に適用されているデータオブジェクトが遡求的に処理される可能性がある。知識オブジェクト内の知識は、それらの知識オブジェクトが配置されると直ちに、適用することができる。
アクターオブジェクト(アクタークラスのインスタンス)は、個々人、個々人のグループ、または組織を表わし得る。アクターオブジェクトは、組織的コンテキスト、スキルプロファイル、知識プロファイル、利害関係プロファイルおよび優先度プロファイルなどの属性を有し得る。このような知識プロファイルは、アクターオブジェクトが有する暗黙知であって、システムが符号化された状態では所有し得ない暗黙知を示し得る。アクターオブジェクトが個々人を表わす場合、アクターオブジェクトは、オブジェクトによって表わされるアクターについてのリアルタイムの存在を指定することができる。アクターオブジェクトが個々人を表わす場合、アクターオブジェクトはオブジェクトによって表わされるアクターについてのリアルタイムのアクティビティを指定することができる。アクターオブジェクトは、それらのアクターオブジェクトの属性に基づいて、最適に、ペンディング中の指令に割当てることができる。
本発明の一実施形態においては、データクラス、知識クラスおよびアクタークラスはすべて同じベースクラスから導き出すことができる。
事実、情報、仮説および指令
本発明の一実施形態においては、3つの別個のオブジェクト指向クラスを上述のデータクラス、すなわち事実クラス、情報クラス、仮説クラスおよび指令クラス、から導き出すことができる。オブジェクトはこれらのクラスからインスタンス化することができる。オブジェクトは、利用できるようにデータベースに格納することができる。
事実オブジェクト(事実クラスのインスタンス)は、システムへの入力を表わし得る。このような入力は、たとえば、JVMにおけるガーベッジコレクタからのデータストリーム、周期的なスレッドダンプからのスタックトレース、メモリヒープダンプ、データベースAWRレポートなどを含み得る。事実オブジェクトは、デバイスから集められた非構造化された会話、形式入力または定量的測定を表わし得る。
情報オブジェクト(情報クラスのインスタンス)は、事実から得られる観察または予測の定性的解釈を表わし得る。本発明の一実施形態においては、3つの別個のオブジェクト指向のクラス、すなわち観察クラス、予測クラス、ノルマクラスおよび目標クラス(Objective class)、を情報クラスから導き出すことができる。各々のクラスのオブジェクトはインスタンス化することができる。観察オブジェクトは、離散値への事実の個別化を表わし得る。たとえば、データベース接続の事実についてブロックするスレッドの強度(数)が、正常、保護済み、厳密または重大などの定性値を有する観察オブジェクトに個別化されてもよい。予測オブジェクトは、変化する条件から予測される定性値を表わし得る。予測オブジェクトは、場合によってはシミュレーションによって、観察のモデルによって補間または外挿される定性値を表わし得る。ノルマオブジェクトは、履歴ベースラインの定性値を表わし得る。目標オブジェクトは目標定性値を表わし得るが、この目標定性値は、全体的な目標および解決を達成するために、観察オブジェクトおよび予測オブジェクトを得るよう要求されるべきものである。目標とおよび観察との差を分類することができる。目標と観察との差の程度は、指令の決定に影響を及ぼす可能性がある。
仮説オブジェクト(仮説クラスのインスタンス)は、観察および/または予測の診断または原因を表わし得る。たとえば、ロードバランサの障害は、2つのサーバのクラスタにおいて、スレッドのクラスのスレッド強度を第1のサーバでは(強度がノルマよりも著しく高い)ハイパーテンション状態として分類され、第2のサーバでは(強度がノルマよりも著しい低い)ハイポテンション状態として分類されるものであるが、仮説のドメイン特有例である。
指令オブジェクト(指令クラスのインスタンス)は、実行されるべきアクティビティを表わし得る。ヒープダンプを採用するかまたはメモリ管理ポリシーを構成するための命令は、指令のドメイン特有例である。
分類、査定、解決および規定
本発明の一実施形態においては、4つの別個のオブジェクト指向クラス、すなわち分類クラス、査定クラス、解決クラスおよび規定クラス、を上述の知識クラスから導き出すことができる。オブジェクトはこれらのクラスからインスタンス化することができる。オブジェクトは、利用できるようにデータベースに格納することができる。これらのオブジェクトは、制度上の知識の抽象的概念を集約的に表わすことができる。このような知識は、たとえば自動化ソフトウェアプログラムにおいて符号化することができるか、または、このような知識は人の知識であってもよい。知識は、アルゴリズム、技術、プロセスまたは方法の形を採ることもできる。知識は、他の種類のデータを導き出すためにデータに適用することができる。
分類オブジェクト(分類クラスのインスタンス)は、定量的な事実を定性的な観察に変換するための技術を表わし得る。分類技術を適用することにより、事実のプールから得られる重要な事実をコンパクトに表現することができる。
査定オブジェクト(査定クラスのインスタンス)は、観察の原因についての仮説を生成するための技術を表わし得る。これらの技術は、手動であっても、コンピュータ誘導型であっても、または完全に自動化されてもよい。
解決オブジェクト(解決クラスのインスタンス)は、仮説を処理するために指令のセットを生成するための技術を表わし得る。これらの技術は、手動であっても、コンピュータ誘導型であっても、または完全に自動化されてもよい。解決は、観察または予測がノルマからどれくらい逸脱しているかに基づいて指令を展開させようとし得る。
規定オブジェクト(規定クラスのインスタンス)は、指令の意図を解釈し、その意図を実行するための技術を表わし得る。規定は、仮説に応答することを要求し得る。規定は、付加的な事実を獲得することを要求し得る。
アクター
アクターオブジェクト(アクタークラスのインスタンス)は、人々、グループ、コミュニティおよび自動化エージェントを表わし得る。アクターオブジェクトは、プロファイルおよび存在コンテキストなどの属性を所有し得る。人はシステムと対話する個々人であり得る。人のプロファイルはその人の規律、役割および責任を表わし得る。人の暗黙知プロファイルは、その人によって投稿されたかまたは書かれたメッセージ、レポートおよび刊行物から自動的に抽出することができる。グループは個々のチームであり得る。グループのプロファイルは、そのグループの規律、役割および責任を表わし得る。グループの暗黙知プロファイルは、グループのメンバーによって投稿されたかまたは書かれたメッセージ、レポート、および刊行物から自動的に抽出することができる。コミュニティは組織、フォーラム、会議、ジャーナルなどであり得る。コミュニティの暗黙知プロファイルは、コミュニティの対話に基づいて自動的に生成することができる。自動化エージェントは、数例を挙げると、ワークフロー、シミュレーション、サポートベクトルマシン、ニューラルネットワークおよびベイズネットワークなどのアルゴリズム的プロセスをカプセル化するソフトウェアであってもよい。自動化エージェントは、そのエージェントの能力を示すプロファイルを所有することができる。
一実施形態においては、分類オブジェクト、査定オブジェクト、解決オブジェクトおよび規定オブジェクトによって表わされるような知識アクティビティは、アクターオブジェクトに、そのアクターオブジェクトが有する属性に少なくとも部分的に基づいて、割当てることができる。こうして、実行されるべきアクティビティは各々、大抵の場合、そのアクティビティを最も効率的に実行することができるアクターに割当てることができる。
一実施形態においては、アクターオブジェクトの少なくともいくつかの属性は、直接的または間接的に取り込むことができる。これらの属性はプロファイルを含み得る。アクターオブジェクトは優先度を所有し得る。自然言語処理を用いると、専門知識発見ツールは、メッセージ、レポートおよび刊行物などのアクターの投稿からそのアクターの専門知識および関心事項を抽出することができる。このような専門知識および関心事項は名詞およびトピックによって示すことができる。ツールは、各々の名詞句またはトピックを専門知識、関心事項、好き嫌い、推薦などと分類することができる。一実施形態においては、イベントサブスクリプションは、それらのアクターのプロファイルに基づいてアクターのために自動的に作成することができる。
一実施形態においては、アクターのプロファイルは時間とともに変化し得る。時間の経過に応じたさまざまなバージョンのこれらのプロファイルは各アクターごとに維持することができる。アクターの投稿を再評価することにより、そのアクターの専門知識を時間の経過とともに変化させることができる。アクターのプロファイルの履歴はバイテンポラル・データベースに格納され、照会することができる。
一実施形態においては、アクターについてのプロファイルは、そのアクターが従事したソーシャルインタラクションのコンテンツに基づいて自動的に構成することができる。これらのソーシャルインタラクションは、たとえば、対話形スレッドを含み得る。ソーシャルインタラクションはコンテナオブジェクトとして表わすことができる。このようなソーシャルインタラクションコンテナオブジェクトは会議、チャットルーム、電子メール受信ボックス、電子メール送信ボックス、カレンダー、タスクリストおよびフォーラムを表わし得る。これらのコンテナオブジェクトにおけるアクターのコンテンツ投稿はコンテキストにおいてプロファイリングすることができる。分類、査定、解決および規定などの知識関数(knowledge function)は、組織の制約を観察しつつ、パラメータを、各アクターの専門知識、優先度および社会的ネットワークプロファイルに可能な限りパーソナライズすることができるように、パラメータ化することができる。いくつかの実施形態においては、アクターは、状況、自身の優先度および制限的な組織的要因に基づいて、最良のチームメンバーを選択することができる。
アプリケーション進化
本発明の一実施形態に従うと、アプリケーションは、ユーザインターフェイスアプリケーションから知識を分離することで、絶えず進化し得る。一実施形態においては、知識は個別に維持することができ、実行エンジンは知識を適切に適用することができる。人が所有する暗黙知などのいくつかの種類の知識は、演算システム内では事前に知られてはいない。一実施形態においては、これらの種類の知識を獲得できるようにするために、システムはユーザ環境を提示することができるが、このユーザ環境は、このような種類の知識を表わすようにその環境のユーザを促進したり動機づけたりするものである。システムはまた、ユーザ環境を提示することができるが、このユーザ環境は、このような種類の知識を表わすためのその環境のユーザに報酬を与えるものである。システムは、さらに、たとえば分類、査定、解決および規定する目的で監視型機械学習のための知識を取り込んで用いることができる。
本発明の一実施形態に従うと、ユーザインターフェイスが提供される。このユーザインターフェイスを介して人のユーザがデータを入力することができる。このデータは、それらのユーザが判断を下した理由を記述するために用いることができる。システムは、このような記述を、ユーザが実行するかまたは実行させられるアクションを示すデータに関連付けて格納することができる。その後、格納された記録は、いかなるアクションの場合でも、それらのアクションが実行された理由を確認するために照会することができる。付加的には、このような記録は、アクションを実行するようにとの決定がなされた時点における事実を反映させることができる。こうして、システムにおいてプロセスを文書化することができる。
いくつかの分類アクティビティは、自動化プロセスによってではなく、人によって実行することができる。本発明の一実施形態においては、人の分類アクティビティが実行されたことに応じて、システムは、アクティビティが実行されている状況を記述するように人に依頼することができる。次いで、システムは、この記述を、分類アクティビティを表わす分類オブジェクトに関連付けて格納することができる。一実施形態においては、システムは、場合によっては誘導型のソーシャルタギングによって語彙のレパートリーを用いて注釈を規定するように人に依頼することができる。次いで、システムは、これらの注釈を分類オブジェクトに関連付けて格納することができる。本発明の一実施形態においては、システムは、分類アクティビティがベースとなった最少セットの事実を識別するようにユーザに依頼することができる。次いで、システムは、この事実のセットを分類オブジェクトに関連付けて格納することができる。
いくつかの査定アクティビティは、自動化プロセスによってではなく、人によって実行することができる。本発明の一実施形態においては、人の査定アクティビティが実行されたことに応じて、システムは、仮説に到達するために分類に基づいて行なわれるであろう査定を公表するように人に依頼することができる。システムは、誘導型ソーシャルタギングによって語彙のレパートリーを用いて査定に注釈を付けるように人に依頼することができる。システムは、分類のセットのうちどの観察、予測、ノルマおよび目標が査定に関連しているのかを、場合によっては誘導型ソーシャルタギングによって示すように人に依頼することができる。システムは、語彙のレパートリーを提供することによって査定結果を仮説の形式で、場合によっては誘導型ソーシャルタギングを用いて公表するように人に依頼することができる。システムは、仮説の査定に基づいて行なわれるであろう解決を公表するように人に依頼することができる。システムは、語彙のレパートリーを用いて、誘導型ソーシャルタギングによって解決に注釈を付けるように、人に依頼することができる。システムは、アクションプランを1つ以上の指令の形式で特定するように人に依頼することができる。システムは、全体としてアクションプランと、アクションプラン内の各々の指令とに注釈を付けるように人に依頼することができる。システムは、入力を、査定オブジェクトおよび解決オブジェクトに関連付けて、注釈とともに格納することができる。
本発明の一実施形態においては、システムが人に注釈を提供するように依頼する場合、システムは、人のアクターオブジェクトに関連付けられたプロファイルに少なくとも部分的に基づいて、人に語彙のレパートリーを推薦することができる。本発明の一実施形態においては、システムは、人に関連付けられるアクターオブジェクトが属する同じコミュニティに属するアクターオブジェクトに関連付けられた知識項目の類似性に基づいて、人にタグを推薦することができる。本発明の一実施形態においては、システムは、アクターのコミュニティにおける他のアクターによるそれらのタグの使用頻度に基づいて、人にタグを推薦することができる。いくつかの実施形態においては、システムは、普及しているソーシャルネットワーキング経験と同様の誘導型ソーシャルタギング経験を用いることができる。誘導型ソーシャルタギングにより、規格化された語彙を増やし、事例がより識別可能となり、プロセスがより反復可能となり得る。これにより、プロセスを、特別にその場限りで実施されるものから、より適切に規定および最適化して実施されるもの(たとえば、注意義務の実施)へと進化させる。さらに、ユーザ注釈は、アプリケーションを自動的に進化させることを可能にするために、パターン認識アルゴリズムのためのパターンとして、かつ、監視型機械学習アルゴリズムのための正例および負例として、用いることができる。
特定ドメインに対するデータ駆動型フレームワークの適用
健全性を監視するためのアプリケーションや、大規模データセンタのさまざまな箇所における問題に対応するアプリケーションなどのいくつかのアプリケーションドメインにおいては、所望のアプリケーション挙動は、事前には完全に規定、設計およびプログラミングされない可能性がある。これらのシステムの場合、アプリケーション挙動は、データおよび知識を集中的に進化させること応じてタイムリーに実現される必要がある。アプリケーションが実現された後、アプリケーション挙動は、データおよび知識において表わされる情報の変更に連続的に適合させる必要がある。このようなドメインにおいては、アプリケーション開発プロセスはデータ駆動型でなければならず、この場合、アプリケーション挙動は、データから導き出される知識をカプセル化する機能エレメントで構成されている。データおよび知識を変更しながら当該アプリケーションを有効に進化させるために、知識エレメントは、その由来(provenance)のトラッキングをサポートするシステム内の他のタイプのデータとともにデータの形として管理される必要がある。その由来がサポートされていれば、事実が変化した場合に、システムは、事実から導き出される知識を再度特徴付けることができ、知識が変化した場合に、システムは、事実内の情報を再査定することができる。この明細書中に開示される本発明の一実施形態においては、知識エレメントは、分類タイプ、査定タイプ、解決タイプおよび規定タイプによって分類される。知識エレメントのすべてが、自動化された機能または自動化されたプロセスとして符号化されるとは限らない。アクターの暗黙知によるインタラクションも、分類知識、査定知識、解決知識および規定知識の適用例として由来データベースに取り込まれる。データ駆動型のプロセス制御により、由来データベースにおいてトリプル(事実、分類、情報)として、符号化された知識またはアクターの暗黙知のいずれかによって実行される各分類アクションが追跡される。符号化された知識またはアクターの暗黙知のいずれかによって実行される査定アクションは各々、トリプル(情報、査定、仮説)として取り込まれる。符号化された知識またはアクターの暗黙知のいずれかによって実行される解決アクションは各々、トリプル(仮説、解決、指令)として取り込まれる。同様に、符号化された知識またはアクターの暗黙知のいずれかによって実行される規定アクションは各々、トリプル(指令、規定、事実)として取り込まれる。本発明のいくつかの実施形態においては、トリプルのこれらのインスタンスは、データベースにおけるリソース記述フレームワーク(RDF:Resource Description Framework)および具体化(Reification)トリプルとして表わされる。
本発明の一実施形態においては、システムは、エンジンを駆動する4タイプのアクティビティにちなんで命名された分類・査定・解決・規定(CARE:Classification-Assessment-Resolution-Enactment)プロセス制御エンジンとしての役割を果たす。エンジンは、アクターと、自動化された分類プロセス、査定プロセス、解決プロセスおよび規定プロセスとの間のインタラクションを積極的に開始する。エンジンは、プロセスサイクルの各段階で事実データ、情報データ、仮説データおよび指令データを生成するために分類段階、査定段階、解決段階および規定段階を循環する。一実施形態においては、分類、査定、解決、規定などの機能はプロセス局面を提供し、事実、情報、仮説および指令はデータ局面を提供する。機能は本質的に変形可能である。ある実施形態においては、CARE制御エンジンは、事実データ、情報データ、仮説データ、指令データ、および由来データを生成して維持するように完全に制御する権限が与えられている。これを行う場合、CARE制御エンジンは、どのデータがいつ使用可能であるのかを予想することができる。エンジンはまた、いずれかの知識カテゴリの正確な知識機能を適用するために十分なデータが使用可能になる時間を予想することができる。エンジンはデッドラインを施行することができる。
CARE制御エンジンは、アクターの暗黙知プロファイル、ならびに、符号化された分類機能、査定機能、解決機能および規定機能の能力プロファイルを生成および維持するように完全に制御する権限が与えられている。CARE制御エンジンは、アクターの暗黙知および優先度をプロファイリングし、各々の指令に関して最も資質のあるアクターを選択し、選択されたアクターにタスクを割当てるための権限が与えられている。このような実施モデルは、決定サポート自動化システムの進化的開発に適用可能である。いくつかの実施形態においては、由来データベース内の関連付けられた入力事実および出力情報でアクターによって実行される分類アクションの具体化は、自動分類についてサポートベクトルマシンまたはニューラルネットワークの監視型学習についてのトレーニングサンプルとして用いることができる。システムにおいて実行される査定アクションの具体化は、ベイズネットワークにおける条件付き確率を導き出すための事例として、かつ、自動査定のためのベイズネットワークを拡張するために新しいアソシエーションおよび因果的依存性を特定するための事例として、用いることができる。
この明細書中において開示されるフレームワークにおいては、事実の分類は、アクターもしくは分類マシンによって実行することができるか、または互いに関連付けて実行することができるいくつかの動作のうちの1つである。事実から分類された情報は、生データの概要であって、傾向、予測、ノルマ、目標および状態のベクトルを含み得る。分類に加えて、フレームワークは査定を含んでもよい。査定は、分類と同様に、事実から導き出される情報に対する知識の適用の一種である。査定は、アクターもしくは査定マシンによって、または互いにに関連付けて実行することができる。フレームワークは、分類および査定に加えて、解決を含んでもよい。解決は、分類および査定と同様に、情報から導き出される仮説への知識の適用の一種である。解決は、アクターもしくは解決マシンによって、または互いに関連付けて実行することができる。フレームワークは、分類、査定および解決に加えて、規定を含んでもよい。規定は、分類、査定および解決と同様に、指令に応じた知識の適用の一種である。規定は、アクターもしくは規定マシンによって、または互いに関連付けて実行することができる。
図12は、本発明の実施形態に従った、さまざまな機能を用いてデータのさまざまな状態を変換するフレームワークのブロック図である。フレームワーク1200は、事実データ1202、情報データ1204、仮説データ1206および指令データ1208を含む。フレームワーク1200はまた、事実データ1202を情報データ1204に変換する分類機能1210と、情報データ1204を仮説データ1206に変換する査定機能1212と、仮説データ1206を指令データ1208に変換する解決機能と、指令データ1208を事実データ1202に変換する規定機能とを含む。
健全性を監視してコンピュータシステムの健全性の問題に対応するための技術は、システムの「バイタルサイン」を規定することを必要とする。これらの技術は、時系列データ内のバイタルサインの監視を含み得る。時系列データはさまざまなセンサから生じ得る。時系列データ内に含まれる情報は特殊タイプの事実である。このようなバイタルサインは、たとえば、メモリ使用量、スレッドまたはスタックセグメントの強度を含み得る。季節的傾向把握技術では、コンピュータシステムの「バイタルサイン」についての時系列データを利用して傾向の分類を実行することができる。
季節的傾向把握、ならびにヒープ使用量の分類およびスレッドまたはスタックセグメントの強度は、この明細書中に開示されるフレームワークの実現可能な多くのさまざまな適用例のうちのいくつかに過ぎない。フレームワークを用いると、高レベルの情報を低レベルの事実から導き出すことができる。このような低レベルの事実は、たとえば、JVMの冗長なGCログおよびスタックトレースなどの生データであり得る。生データは、ますます高レベルになる分類情報を抽出するために変換することができる。たとえば、スタックトレースにおけるスレッドセグメントはより簡潔な情報に分類することができる。スタックセグメントおよびスレッドを分類した後、当該技術は、スレッドのクラス間の依存関係(dependency relations)を抽出することができ、分類情報のより高度な形式であるスレッドとスタックセグメントとの合成をドリルダウンすることができる。周期的なスレッドダンプについての時系列データは、スレッドおよびスタックセグメントの各クラスについての傾向把握情報を含む。季節的傾向把握は、時系列データをより高度な形式の情報、たとえば、周期的な季節サイクル、線形傾向、分散変動(variance change)、レベル変化、レベルドリフト、アウトライアおよびエンドポイント予測などに変換する。傾向データは、大量の時系列データをより簡潔なシーケンスのイベントへと変換することができる。この場合、イベントの数は、観察の時間窓にわたる本質的な傾向変化の回数に比例する。
一実施形態においては、システム状態は、傾向データから抽出された特徴のベクトルによって識別することができ、システム状態変化は、傾向における本質的な変化を表わすイベントによって区別することができる。ある実施形態においては、特徴ベクトルは、季節因子(seasonal factor)、線形傾向、分散変動、レベル変化、レベルドリフト、アウトライアおよびエンドポイント予測を含む傾向情報の各々の定性的状態で構成されるだろう。定量的データタイプの各タイプは、低レベル、通常レベルまたは高レベルなどの2または3ほどのわずかな別個のレベルに分類することができる。たとえば、スレッドまたはスタックセグメントのクラスの強度は、それが季節に応じて調整される予想強度の1シグマバンド内にあれば、正常と考えられるだろう。この例においては、観察の時間窓に関する高値または低値は、このクラスのスレッドのハイパーテンション状態またはハイポテンション状態についての定性的情報を提供する。別の例においては、季節因子は、週末から平日までの変化または平日から週末までの変化が不連続になる可能性がある。各季節内の(単調なパターンなどの)季節因子における傾向の形状と、異なる季節をつなぐ(鋸歯状パターンなどの)不連続度とは、特徴ベクトルで定性的な形式で記述することができる。
特徴ベクトルサブスペース(線形傾向、レベルドリフト、分散変動、エンドポイント予測)における特徴ベクトル、たとえば(高線形傾向、高レベルドリフト、高い分散変動、エンドポイント付近)は、JVMの冗長なGCログファイル内の時系列データから抽出することができる。一実施形態においては、一定の時間窓にわたるJVMにおいて持続する特徴ベクトル(高線形傾向、高レベルドリフト、高い分散変動、エンドポイント付近)を観察することによって、JVMのメモリ状態をメモリリークとして分類することができる。状態は、特徴ベクトルがJVMにおいて持続する場合に時間窓の開始時間t1および終了時間t2によって区別される一定の時間間隔の間だけ有効である。JVMの特徴ベクトルは、メモリリークサイトがいつ識別および修正されるかを変更してもよい。バグフィックスを適用することにより、後で観察されたJVMの状態は、たとえば、開始時間t2から終了時間t3までの期間にわたって持続し得る正規メモリ状態として分類される新しい特徴ベクトル、たとえば(低線形傾向、低レベルドリフト、低い分散変動、エンドポイント無)によって記述される可能性がある。したがって、情報は、システム健全性がメモリリーク状態から正規メモリ状態にまで進んだことを示す可能性がある。一実施形態においては、この状態変化は改善傾向として分類することができる。代替的には、メモリリークが修正された後、メモリ管理問題は、特徴ベクトルにおける大きな分散変動として現われる可能性がある(低線形傾向、低レベルドリフト、高い分散変動、エンドポイント無)。これは、解決すべき1つ以上のCARE制御サイクルを含んでいてもよく、この期間中、システムは、メモリリーク状態からメモリ管理問題状態を経て正常なメモリ状態に至る状態遷移を経験する可能性がある。代わりに、観察された特徴ベクトルが正常なメモリ状態からメモリリーク状態に変化した場合、一実施形態においては、CARE制御は、回帰傾向として情報を分類し、回帰の査定のためのアクターを呼出すことができる。メモリ特徴空間の状態を、スレッドまたはスタックセグメントの強度傾向などの他の特徴空間の状態と結合して、JVMの合成状態(正常なメモリ状態、正常なスレッド強度状態)を形成することができる。ある実施形態においては、特徴ベクトル状態の有効時間は、(バイテンポラル・データベーススキーマとしても公知である)マルチテンポラルデータベーススキーマの有効時間カラムを用いて、管理することができる。
一実施形態においては、第1のCARE制御サイクルは、シナリオ例における情報変化に応じて、メモリリーク状態を分類し、仮説を導き出す査定動作を呼び出し得る。情報変化の連鎖反応に応じて、第1のCARE制御サイクルは、ダンプ間における指定された時間経過に応じてターゲットJVMから2つのヒープダンプを集めるよう指令を発行する解決を呼び出し得る。この指令はアクターによって実行され、結果として、新しい事実の中に2つのヒープダンプファイルを発生させることができる。第2のCARE制御サイクルは、2つのヒープダンプにおけるオブジェクトのヒストグラムを比較することによってメモリリークサイトを識別するために分類動作を呼び出してもよい。コードバグについての仮説は、メモリリークサイトの査定後に発行されてもよい。バグを修正してパッチするようにとの指令はコードバグの解決後に発行されてもよい。バグを修正しパッチするようにとの指令の規定後、第3のCARE制御サイクルは、新しい事実をメモリ管理問題状態として分類し、査定動作を呼び出してもよい。次いで、アクターによる査定により、結果として、メモリ管理ポリシー(たとえば、ソフト基準LRUポリシー)の不良コンフィギュレーションについての仮説が得られるかもしれない。第3のCARE制御サイクルは、解決動作を呼び出すことにより、結果として、ソフト基準LRUポリシーを調整するようにとの指令が得られる可能性がある。メモリ管理ポリシーを調整するようにとのこの指令はアクターによって規定(enacted)されてもよい。第4のCARE制御サイクルは、最後の規定によって集められた新しい事実に基づいて正常なメモリ状態を分類し得る。次いで、第4のCARE制御サイクルは、メモリリーク状態からメモリ管理問題状態を経て正常なメモリ状態に至る状態変化を観察することによって、改善傾向を分類してもよい。
一実施形態においては、CARE制御は、JVMにおいてメモリ不足が起こるたびに、アクターを呼び出して、特徴ベクトル空間、たとえば、サブスペース(線形傾向、レベルドリフト、分散変動、エンドポイント予測)におけるすべての新しい事実を分類するだろう。十分な数のポジティブサンプルおよびネガティブサンプルが集められると、CARE制御は、監視型学習を適用して、サポートベクトルマシンを構築することにより、メモリリーク問題を分類することができる。たとえば、特徴ベクトル(高線形傾向、高レベルドリフト、高い分散変動、エンドポイント付近)は、サポートベクトルマシンによってメモリリークとして分類することができる。
一実施形態においては、CARE制御は、すべてがデータとして表わされている事実および情報エレメントにおける情報の変化についてのクエリをデータベースに登録することができる。事実の変化は規定によって引起こすことができる。事実における情報の変化は、情報を抽出または解釈する情報エレメントにおける規定および変化によって、引起こすことができる。知識エレメントの変化は、いくつかの実施形態においては、規定プロセスとしてモデル化されるオンラインまたはオフラインの機械学習プロセスによって引起こすことができる。CARE制御は、データの変化に応じて分類アクション、査定アクション、解決アクションおよび規定アクションを開始することができる。いくつかの実施形態においては、CARE制御エンジンは、バイテンポラル・データベースの上において、データベーストリガー、リアルタイムジャーナル分析および登録済みクエリを用いて実現することができる。いくつかの実施形態においては、CARE制御エンジンは、オブジェクト変更通知またはクエリ結果変更通知についてのクエリをデータベースに登録することができる。登録されたクエリによって参照されるオブジェクトは登録済みオブジェクトである。したがって、事実データ、情報データ、仮説データおよび指令データ中の各オブジェクトは、登録済みオブジェクトであり得る。同様に、分類エレメント、査定エレメント、解決エレメントおよび規定知識エレメント中の各オブジェクトは、登録済みオブジェクトであり得る。
フレームワークは、分類、査定、解決および規定のようなアクションを実行するのに用いることができる特化されたアルゴリズムの進化を可能にし得る。特化されたアルゴリズムは必ずしも一緒に直接的に機能しないかもしれない。スレッドまたはスタックセグメントの強度における季節的傾向を監視するアルゴリズムは、必ずしも、ヒープ使用量傾向の決定を含むアルゴリズムとともに直接的に作用するわけではない。CARE制御は、これらのさまざまなアルゴリズムを独立して発展させること、および、共通のアプリケーションとして進化可能な単一のシステムに一体化することを可能にするが、これは、正規化された事実、情報、仮説、および指令のデータモデルを介して相互作用する分類コンポーネント、査定コンポーネント、解決コンポーネントおよび規定コンポーネントとして、これらのアルゴリズムをカプセル化することによるものである。システムに新しいアルゴリズムを追加することにより、相加効果をもたらすことができる。システム内のアルゴリズムは互いに補完し合いかつ補強し合うことができる。アルゴリズムは、より優れた診断を実現するために互いに相互に関連し得る。CARE制御実行モデルは、連続的にデータの変化について照会を行い、依存(dependent)コンポーネントの実行を開始することによって、対話を駆動する。これらのコンポーネントのうちのいくつかは、人のアクターと対話するユーザインターフェイスおよびメッセージ通信システムを含んでもよい。
さまざまなバイタルサインに基づいて季節的傾向把握などのドメインに加えられるドメイン特有のアルゴリズムは、初めは、フレームワーク内における分類エレメントとして特徴付けることができる。しかしながら、フレームワークを用いると、このようなアルゴリズムをさらに改良し理解することができる。このように改良および理解を高めることにより、適用される特定の環境のためにさらにより特化され得るパターンを取り込む能力を導き出すことができる。これはさらに高い段階の分類である。このさらに高い段階の分類は、情報のさまざまな項目を互いに関連付けることによって生じる。たとえば、特定のドメインにおいては、スレッドまたはスタックセグメントの強度情報はメモリ使用量情報に関連付けることができる。このような情報は、システム内において発行された指令に関連付けることができる。システムはこのような発行済み指令を取り込んで、これら指令を情報項目に形式的に関連付けることにより、それらの間のつながりを示すことができる。これらの関係がシステム内において構築されると、関係のパターンが認識可能になり得る。システムが認識することのできるパターンの種類は時間の経過とともに進化する可能性がある。
CARE制御はまた、監視されているターゲットシステムのデータ、情報および状態の進化を視覚化するためのモデルとしての役割を果たす。たとえば、JAVA仮想マシン(JVM)のヒープ使用量に関する生データは経時的に監視することができる。このような生データは、フレームワークにおいては、知識を適用することによって分類することができる事実である。知識は、数例を挙げると、季節的傾向把握アルゴリズム、信号処理アルゴリズム、サポートベクトルマシン、ニューラルネットワークおよびベイズネットワークの形を採り得る。情報は生データから導き出すことができ、特徴ベクトルで表わすことができる。より高レベルの情報は、サポートベクトルマシンによって特徴ベクトルの分類で識別される状態の形を採ることができる。このような分類情報は、システムの局面が状態に関して永続的に観察されるときの時間間隔を示してもよい。このような状態情報は、たとえば、ある状態から別の状態に変化するシステムの局面が監視される時点、たとえば、バグフィックスがJVM上に適用される時点、を示すように構成されてもよい。これらの時点は、情報のパターンが変化する時系列プロットにおける時点を決定することによって明らかになり得る。しばしば、情報変化が生データにおいて明らかにはならない(肉眼では見ることができない)時点は、生データから情報を抽出するかまたは信号を検出することによってのみ明らかにされる。例示的なシナリオにおいては、時系列の生データまたは傾向情報は、第1の時間間隔中に、ヒープ使用量に高い変動が存在する場合でも、ベースラインJVMヒープ使用量が絶えずより高くドリフトすることを示し得る。JVMヒープ使用量におけるこのような安定したレベルドリフトはメモリリークの結果として起こり得る。次いで、生データは、連続的な第2の時間間隔中に、大きな変動が絶えず存在している際にベースラインJVMヒープ使用量が平らになったことを示し得る。第1の間隔と第2の間隔との間における時点での生データの情報変化は、メモリリークがシステムに対してなされたいくつかの変更によって修正されたことを示し得る。第2の間隔中、ヒープ使用量における大きな変動が継続するかもしれない。次いで、第2の間隔の後に生データの情報変化が起こっている第3の間隔中、ヒープ使用量の変動が著しく減少するかもしれず、これは、さらに別の変更が第2の時間間隔と第3の時間間隔との間にシステムに対してなされたことを示し得る。第2の間隔と第3の間隔との間における変更は、メモリLRUポリシーに対する調整動作に関連付けることができる。
この例においては、情報の複数の項目は生データから導き出すことができる。まず、ベースラインヒープ使用量におけるドリフトについての情報を導き出すことができる。第二に、ヒープ使用量の変動の変化についての情報を導き出すことができる。アルゴリズムはこのような情報を生データから導き出すことができる。生データをフィルタリングおよび変換することにより、対象となる情報だけを残しつつ、ノイズおよび外部の無関係な情報を生データから除去することができる。フィルタリングは、たとえば、データ中の季節的傾向の除去を含み得る。このようなフィルタリングされたデータ内では、パターンは、このようなパターンを発見しようと試みる自動システムにとってより明確になり得る。予測も、そこから導き出されるデータおよび情報に基づいて実行されてもよい。たとえば、データおよび導き出された情報に基づいて、システムが、メモリリークの作用を打ち消すシステム再始動のなされていない状態では、将来、特定の日付および時間にメモリ不足になりクラッシュするであろうという予測を行うことができる。このような予測は、データに生じる季節的(たとえば、日ごと、週ごと、3か月ごとの)傾向に合わせて調整することができる。
生データがシステムの変化を示すたびに、上述の特徴的な第1の間隔、第2の間隔、および第3の間隔を生成するが、その変化は、解決アクションの出力である何らかの指令を発行した結果、起こり得るものである。この明細書中に開示されるCARE制御フレームワークを適用することによっても、査定アクションを呼び出すことなく指令を生成することができる。時系列での季節的傾向把握に関連付けられる情報は、季節的傾向および非季節化された線形傾向および非線形傾向に基づいたものであって、この情報は、JVMのための同じシナリオ例を用いて、システムがその時間の終了前に再開されなければターゲットJVMがその時点から既知の期間内にクラッシュするであろうことを、一定の信頼水準で予測することができる。このような予測は、システム管理者が、予測されたクラッシュが起こるであろう瞬間よりも前の何らかの都合のよい時間(たとえば週末)中にJVMの再始動を含むシステムメンテナンスを実行するべきであることを、このシステム管理者に対して示唆してもよい。CARE制御は、短期毎に予想されるエンドポイントを分類した後、JVMを再開するなどの緊急のステアリング指令を発行してもよい。メモリリーク条件でJVMを作動させる第1の間隔内に傾向を監視する数日または数週間後に、CARE制御は、メモリリークサイトを識別しバグフィックスを査定するために、ヒープダンプを集めるようアクターに指令を課すこととなる査定および解決を呼び出すことができる。メモリリークのためのバグフィックスの規定は数週かかる可能性がある。バグフィックスをターゲットJVMに適用する準備ができるまでの平均時間内に、JVMはメモリリーク条件で動作してもよい。CARE制御は、バグフィックスについてのペンディング指令が実行されている間、動作範囲内でJVMのメモリ状態を操作するために、必要に応じて再始動指令を発行し続けるだろう。これらの短期的な操作指令は、エンドポイント予測についての情報を用いる分類によって発行されるものであって、査定アクションを含まない可能性がある。このような再始動が規定されると、これらの再始動がヒープ使用量に対してもたらした影響を示すことが可能になる前後に集められた生データの情報が変化する。JVM再始動によって引起こされる情報の変化は、短期的な傾向として監視することができ、システムに対して長期的な影響をもたらさない操作指令のインスタンスとしてCARE制御モデルにおいて、形式的に区別することができる。たとえば、JVMが毎週再始動されるにもかかわらず、上述の特徴ベクトルが、メモリリーク状態として識別される(高い線形傾向、高レベルドリフト、高い分散変動、エンドポイント付近)で持続するだろう。対照的に、メモリリークバグのための修正を適用する指令は、第1の間隔におけるメモリリーク状態から第2の間隔におけるメモリ管理問題状態までの変化によって示される永続的作用を有するだろう。同様に、上述のメモリLRUポリシーを調整するようにとの指令は、第2の間隔におけるメモリ管理問題状態から第3の間隔における正常なメモリ状態までの変化によって示される永続的作用を有するだろう。
以下の形式上の表記では、nタプルAは関数Fとみなすことができ、そのドメインはエレメントインデックスXのタプルの内在セットであり、そのコドメインYは、エレメントのタプルのセットである。形式的には、nタプル(a,a,…,a)はシステム(X,Y,F)であり、この場合、X={1,2,…,n},Y={a,a,…,a},およびF={(1,a),(2,a),…,(n,a)}である。順序対は2タプルであり、3つ組は3タプルである。πで示されるnタプルの予測は、関数π((a,a,…,a)=F(i)=aである。
N項関係Rはnタプルのセットである。関係の属性は、関数Gのコドメインがその関係の属性のセットとなるように、システム(X,Z,G)、X={1,2,…,n}、Z={α,α,…,α}、およびG={(1,α),(2,α),…,(n,α)}であるnタプル(α,α,…,α)内の原子である。παiによって示されるnタプルの予測は、関数παi((a,a,…,a))=F(G−1(α))=aである。N項関係Rの予測παi(R)は、R内のすべてのタプルを属性αに制限することによって得られるセットである。たとえば、πFeatureVector: FeatureVector × ValidTime × FigureOfMerit → FeatureVectorとなる。予測πFeatureVector(Observation)は、Observation内のすべてのタプルを属性FeatureVectorに制限することによって得られるセットである。N項関係における各々のnタプルは、nタプルが持続するかまたは回復可能になるトランザクション時間を表わすシステム変更回数(SCN:system change number)に暗黙的に関連付けられる。予測関数πSCNが存在し、そのドメインはnタプルのセットであり、そのコドメインは、システム変更回数(SCN)のセットである。SCNのためのDateTimeを計算する関数:SCN→DateTimeが存在する。
選択σproposition(R)(Rは関係であり、proposition(命題)はブール式である)は、命題を満たすRにおけるタプルを選択する。たとえば、AssessmentInputがFeatureType × Assessmentの関係であると想定すると、選択σFeatureType=MemoryState(AssessmentInput)は、MemoryStateと合致するFeatureTypeを有するAssessmentInput関係にあるタプルのセットである。クエリπAssessment(σFeatureType=MemoryState(AssessmentInput))は、入力としてMemoryState特徴を採用するAssessment関数のセットである。
本発明の一実施形態においては、KIDSシステムは、Actor(アクター)、Agent(エージェント)、Entity(エンティティ)、CARE、Metadata(メタデータ)、およびReification(具体化)の6タプルである。
KIDS=(Actor,Agent,Entity,CARE,Metadata,Reification)
Actorは、分類アクション、査定アクション、解決アクションおよび規定アクションを実行するようシステムと対話することができるアクターのセットである。
TacitKnowledgeProfile、SocialNetworkProfile、およびPreferenceProfileは、3つの異なる関数であって、その各々が、ActorのメンバーをProfileVectorにマッピングする。
TacitKnowledgeProfile: Actor → ProfileVector
SocialNetworkProfile: Actor → ProfileVector
PreferenceProfile: Actor → ProfileVector
ProfileVectorは、nタプル(n=1,2,3,…)のプロファイルのセットである。
ProfileVector = Profilen
Profileは、ValueとValidTimeとFigureOfMeritとProfileTypeとの間の関係である。
Profile = Value × ValidTime × FigureOfMerit × ProfileType
Personalization(パーソナル化)は、パーソナル化された関数を生成するようにパラメータ化された関数テンプレートにプロファイルベクトルを適用するカレー演算である:
Personalization : FunctionTemplate × ProfileVector → Function
たとえば、Classification関数、Assessment関数、Resolution関数およびEnactment関数などの知識関数は、アクターの暗黙知または優先度プロファイルから得られるProfileVectorを適用することによってパーソナル化することができる。
Personalization(ClassificationTemplate)(ProfileVector) = Classification
Personalization(AssessmentTemplate)(ProfileVector) = Assessment
Personalization(ResolutionTemplate)(ProfileVector) = Resolution
Personalization(EnactmentTemplate)(ProfileVector)= Enactment
Agentは、Userのために機能するコンピュータプログラムまたはハードウェアデバイスのセットである。
Entityは監視されているエンティティのセットである。Entityは、Java VM、Oracle VM、データベース、サーバ、サーバクラスタ、ドメイン、ポッド、ネットワークスイッチ、ファイアウォール、サーバにおける個々のクラスのスレッドおよびスレッドセグメントなどを含み得る。
CAREは、Data(データ)およびKnowledge(知識)の順序対である。
CARE = (Data, Knowledge)
Dataは、4タプルのFact(事実)、Information(情報)、Hypothesis(仮説)、およびDirective(指令)である。
Data = (Fact, Information, Hypothesis, Directive)
FactはFSDおよびFeature(特徴)の順序対である。
Fact = (FSD, Feature)
FSD(Flexible Schema Data:フレキシブルスキーマデータ)は、nタプルのValue(値)とValidTimeとEntity(エンティティ)とFSDTypeとの間の関係である。
FSD = Valuen × ValidTime × Entity × FSDType
FSDオブジェクトの一例として、XYZポッドにおけるCRMドメイン内のセールスサーバから一連のスレッドダンプを含むスレッド・ダンプ・ファイルがある。この場合、セールスサーバ、CRMドメインおよびXYZポッドは、Entityのメンバーであり、スレッド・ダンプ・ファイルはFSDTypeのメンバーである。
Featureは、ValueとValidTimeとFigureOfMeritとEntityとFeatureTypeとの間の関係である。Featureは、データの一連の観察の際に低、正常、高などの分類値を表わす。
Feature = Value × ValidTime × FigureOfMerit × Entity × FeatureType
Featureオブジェクトの一例として、XYZポッドにおけるCRMドメイン内のOrderCaptureサーバにおけるサブミット・オーダ・スレッドのハイパーテンション状態が挙げられる。この場合、サブミット・オーダ・スレッド、OrderCaptureサーバ、CRMドメインおよびXYZポッドはEntityのメンバーであり、ハイパーテンション状態は、スレッド・強度またはスタック・セグメント・強度のFeatureTypeによって指定される範囲の値である。
FeatureVectorは、nタプル(n=1,2,3,…)のFeatureのセットである。
FeatureVector = Featuren
一実施形態においては、FeatureVectorは、共通のValidTimeを有する一連のFeaturesである。
ValidTimeは、DateTimeの順序対のセットである。[t1、t2)によって表わされる時間間隔は、セット{t|t1<t2およびt>=t1およびt<t2(t, t1, t2 εDateTime)}である。たとえば、2つのValidTimeの[2013-08-31 12:00 AM PST, 2013-09-01 9:00 AM PST)および[2013-09-01 9:00 AM PST, ∞)は、1つのValidTime[2013-08-31 12:00 AM PST, ∞)に結合することができる。時間インスタンスt1は[t1,NA)によって表わすことができる。
ValidTime = [DateTime, DateTime ∪ {∞. NA})
FigureOfMeritは、信頼レベル、信頼間隔、確率、スコア、2乗平均平方根誤差などを表わす定量値または定性値である。FigureOfMeritは、図13に関連付けてさらに以下に説明される。
Information(情報)は、4タプルのObservation(観察)、Prediction(予測)、Norm(ノルマ)およびObjective(目標)である.
Information = (Observation, Prediction, Norm, Objective)
Observationは、FeatureVectorとValidTimeとFigureOfMeritとの間の関係である。
Observation = FeatureVector × ValidTime × FigureOfMerit
Predictionは、FeatureVectorとValidTimeとFigureOfMeritとの間の関係である。
Prediction = FeatureVector × ValidTime × FigureOfMerit
Normは、FeatureVectorとValidTimeとFigureOfMeritとの間の関係である。
Norm = FeatureVector × ValidTime × FigureOfMerit
Objectiveは、目標関数を最適化するFeatureVectorとValidTimeとFigureOfMeritとの間の関係である。
Objective = FeatureVector × ValidTime × FigureOfMerit
Hypothesis(仮説)は、FeatureVectorとValidTimeとFigureOfMeritとの間の関係である。
Hypothesis = FeatureVector × ValidTime × FigureOfMerit
Directive(指令)は、FeatureVectorとValidTimeとFigureOfMeritとの間の関係である。
Directive = FeatureVector × ValidTime × FigureOfMerit
Knowledge(知識)は、4タプルのClassification(分類)、Assessment(査定)、Resolution(解決)およびEnactment(規定)である。
Knowledge = (Classification, Assessment, Resolution, Enactment)
Classificationは関数のセットであり、その各々が、nタプルのFSDまたはmタプルのFeatureVectorをObservation、Prediction、NormまたはObjectiveにマッピングする。
Classification = {f|f:(FSDn ∪FeatureVectorm) → (Observation ∪ Prediction ∪ Norm ∪ Objective)(nおよびmは何らかの整数)}
Assessmentは関数のセットであり、その各々が、FeatureVectorをHypothesisにマッピングする。
Assessment = {f|f: FeatureVector → Hypothesis}
Resolutionは関数のセットであり、その各々がFeatureVectorをDirectiveにマッピングする。
Resolution = {f|f: FeatureVector → Directive}
SymptomResolutionはResolution関数のサブセットであり、そのドメインは、FactまたはInformation中のFeatureVectorに制限される。
SymptomResolution = {f|f: FeatureVector → Directiveであり、このため、FeatureVector = πFeatureVector(codomain(g))となる(関数gはEnactmentまたはClassificationのメンバーである)}
ClassificationResolutionはResolution関数のサブセットであり、そのドメインは、InformationにおけるObservation、Prediction、NormおよびObjective中のFeatureVectorに制限される。
ClassificationResolution = {f|f: FeatureVector → Directiveであり、このため、FeatureVector = πFeatureVector(codomain(g))となる(関数gはClassificationのメンバーである)}
AssessmentResolutionは、Resolution関数のサブセットであり、そのドメインは、Hypothesis中のFeatureVectorに制限される。
AssessmentResolution = {f|f: FeatureVector → Directiveであり、このため、FeatureVector = πFeatureVector(codomain(g))となる(関数gはAssessmentのメンバーである)}
ExpertResolutionは、Classification関数、Assessment関数およびResolution関数の合成であるResolution関数のサブセットである:
ExpertResolution = Classification ・ Assessment ・ Resolution
ExpertResolution : (FSD ∪ FeatureVector) →(Observation ∪ Prediction ∪ Norm) × Hypothesis × Directive
Enactmentは関数のセットであり、その各々は、DirectiveをFSDの集合またはFeatureVectorの集合にマッピングする。
Enactment = {f|f: Directive → (FSDn ∪ FeatureVectorm )(nおよびmは何らかの整数)}
MetaDataは、4タプルのProfileType、FSDType、FeatureTypeおよびInfluenceである。
MetaData = (ProfileType, FSDType, FeatureType, Influence)
ProfileTypeはオブジェクトのセットであり、その各々は、Name、データTypeおよびProfileについての値のRangeを規定する。ProfileTypeは、「役割」などのNameと、(現場監督、監督者、指導管理者、マネージャ)などの値のRangeを規定することができる。別の例においては、ProfileTypeは、「責任」などのNameと、(WebLogic管理、データベース管理、Linux管理、ネットワーク管理)などの値のRangeとを規定することができる。別の例として、「メモリ調整専門知識」というNameを有するProfileTypeに関して、Rangeは、「上級者」、「中級者」および「初心者」などの定性値を含み得る。別の例として、「アプリケーションソースコード知識」というNameを有するProfileTypeに関して、Rangeは、「デベロッパ」、「アーキテクト」および「テスタ」などの定性値を含み得る。このような値はProfileを規定するのに用いることができる。
ProfileType = Name × Type × Range × DefaultValue
FSDTypeは、冗長なGCログ、周期的なスレッドダンプ、ヒープダンプ、OSウォッチャーログ、データベースAWRスナップショット、データベーストレースファイル、クリックストリーム、REUIレコード、アクセスログ等々、さらには、季節因子、レベルドリフト、レベルシフト、レベルスパイク、分散変動、アウトライア、エンドポイント予測、再始動、メモリ不足イベント、スタックした(stuck)スレッドイベントなどの集合体にフィルタリングされた規則的または不規則的な時系列データ等々、のファイルのタイプを規定する分類値で構成されたセットである。
FSDType = Name × {Binary, Text} × Encoding × Language
FeatureTypeはオブジェクトのセットであり、その各々は、Name、データTypeおよびFeatureのための値のRangeを規定する。FeatureTypeは、「メモリ状態」などのNameと、(メモリリーク、メモリ管理問題、正常メモリ)などの値Rangeを規定することができる。別の例においては、FeatureTypeは、「スレッド強度状態」などのName、および(ハイパーテンション、ハイポテンション、コンボイ効果)などの値Rangeを規定することができる。別の例として、Name「変動」を有するFeatureTypeに関して、Rangeは、「高」、「正常」、「低」などの定性値を含み得る。別の例として、Name「エンドポイント」を有するFeatureTypeに関して、Rangeは、「近い」「遠い」、および「エンドポイント無」などの定性値を含み得る。このような値はFeatureを規定するために用いることができる。
FeatureType = Name × Type × Range × DefaultValue
Featureはデータから抽出することができる。Typeは定量的ではなく分類的であり得る。FeatureおよびFeatureTypeはともに、1セットの許容値に制限することができる名前−値の対を規定する。これらの値がデータから抽出されると、これらの値についての有効時間はFeatureとともに伝搬させることができる。有効時間についての説明を以下に記載する。
図13は、本発明の実施形態に従った傾向を示す図である。この明細書中に記載される技術を用いると、傾向に基づいて、エンドポイント1302は一定の時間および日に予測することができる。有効時間1304は、エンドポイント1302を予測するのに用いられた傾向データに関連付けられる。この場合、エンドポイントは、有効時間1304の数時間内に起こると予測される。エンドポイント1302を予測するのに用いられるデータは、有効時間1304の一部である。このようなデータは、たとえば、エンドポイント1302に達する前にJVMを再開させるために用いられてもよい。
一実施形態においては、有効時間1306は複数の間隔にわたり得る。この場合、各々の間隔の境界は、JVMの再開などの何らかのイベントによって規定される。各々の時間間隔またはセグメントは、それが何らかのエンドポイントに一時的に接近していることを示すことができる。エンドポイントへの接近は特徴の一例である。この場合、有効時間は、JVMのライフサイクルによって範囲が定められてもよい。別の例においては、有効時間はデータベースのライフサイクルによって範囲が定められてもよい。図13に示されるような繰返しパターンの後、何らかの状態が変化し得ると予想される。たとえば、バグフィックスは状態を変化させる可能性がある。このようなイベントの後に続く有効時間1308中には、傾向は上昇しないかもしれない。
上述のとおり、性能指数は、信頼間隔または確率を表わし得る。たとえば、性能指数が図13における信頼間隔1310を表わす場合、性能指数は、エンドポイント1302の予測用の信頼間隔1310がプラス5時間またはマイナス5時間であることを示し得る。いくつかの実施形態においては、性能指数を定量的に表わすことができるが、他の実施形態においては、性能指数は定性的に表わすことができる。たとえば、プラス5時間またはマイナス5時間などの定量的基準である信頼間隔1310ではなく、信頼間隔1310は、「かなり正確」などの定性的基準であってもよい。このような定性的基準は、客観的な概念ではなく、主観的な概念であってもよい。
複数の統計パラメータが同じマシンから観察されてもよい。安定した傾向に加えて、安定した傾向に近似する大きな変動分散が観察される可能性がある。大きな変動分散を表わす特徴は、エンドポイントを表わす特徴タイプとは異なる特徴タイプによって表わされてもよい。分散についての特徴タイプは、たとえば、「高」、「正常」または「低」などの一連の定性値を含み得る。しかしながら、特徴についての有効時間は部分的に重なる可能性がある。特徴は、同じシステムのさまざまな局面を表わし得る。各々の特徴についての有効時間はその特徴とともにシステム内に伝搬されてもよい。一実施形態においては、複数の特徴を含む特徴ベクトルについての有効時間は、それらの特徴すべてについての有効時間の交差である。
事実データの観察により、複数の異なる特徴が相関関係にあることが明らかになり得る。このような相関関係は、たとえば、特徴の有効時間が部分的に重なっているスパンがデータセット全体の有効時間よりも小さい場合に、明らかにされる可能性がある。
Influence(影響)は、FSDTypeとFeatureTypeとknowledgeのエレメントとの間の8タプルの入出力関係である。
Influence = (ClassificationInput, ClassificationOutput, AssessmentInput,
AssessmentOutput, ResolutionInput, ResolutionOutput, EnactmentInput,
EnactmentOutput)
ClassificationInputは、FSDTypeまたはFeatureTypeとClassificationとの間の関係である。
ClassificationInput = (FSDType ∪ FeatureType) × Classification × Mandatory
ClassificationOutputは、ClassificationとFeatureTypeとの間の関係である。
ClassificationOutput = Classification × FeatureType
AssessmentInputは、FeatureTypeとAssessmentとの間の関係である。
AssessmentInput = FeatureType × Assessment × Mandatory
AssessmentOutputは、AssessmentとFeatureTypeとの間の関係である。
AssessmentOutput = Assessment × FeatureType
ResolutionInputは、FeatureTypeとResolutionとの間の関係である。
ResolutionInput = FeatureType × Resolution × Mandatory
ResolutionOutputは、ResolutionとFeatureTypeとの間の関係である。
ResolutionOutput = Resolution × FeatureType
EnactmentInputは、FeatureTypeとEnactmentとの間の関係である。
EnactmentInput = FeatureType × Enactment × Mandatory
EnactmentOutputは、EnactmentとFSDTypeまたはFeatureTypeとの間の関係である。
EnactmentOutput = Enactment × (FSDType ∪ FeatureType)
Mandatoryは、入力されたFeatureTypeが関数を呼び出すのに必須であるかどうかを示すブール値である。
Reification(具体化)は、5タプルの(CARELoop,Classified(分類済み),Assessed(査定済み),Resolved(解決済み),Enacted(規定済み))である。
CARELoop = Classified × Assessed × Resolved × Enacted
Classified = (FSD ∪ FeatureVector) × Classification × (Observation ∪ Prediction ∪ Norm) × (Actor ∪ Agent) × TransactionTime
Assessed = FeatureVector × Assessment × Hypothesis × (Actor ∪ Agent) × TransactionTime
Resolved = SymptomResolved ∪ ClassificationResolved ∪ AssessmentResolved ∪ ExpertResolved
SymptomResolved = FeatureVector × SymptomResolution × Directive × (Actor ∪ Agent) × TransactionTime
ClassificationResolved = FeatureVector × ClassificationResolution × Directive × (Actor ∪Agent) × TransactionTime
AssessmentResolved = FeatureVector × AssessmentResolution × Directive × (Actor ∪ Agent) × TransactionTime
ExpertResolved = FeatureVector × ExpertResolution × Observation × Prediction × Norm × Hypothesis × Directive × (Actor ∪ Agent) × TransactionTime
Enacted = Directive × Enactment × (FSD ∪ FeatureVector) × (Actor ∪ Agent) × TransactionTime
TransactionTimeは、順序対のDateTimeのセットである。[t1、t2)によって表わされる時間間隔は、セット{t|t1<t2およびt>=t1およびt<t2(t, t1, t2 εDateTime)}である。たとえば、2つのTransactionTimeの[2013-08-31 12:00 AM PST, 2013-09-01 9:00 AM PST)および[2013-09-01 9:00 AM PST, ∞)は、1つのTransactionTime[2013-08-31 12:00 AM PST, ∞)に結合することができる。時間インスタンスt1は[t1、NA)によって表わすことができる。TransactionTimeは、情報が持続するかまたは回復可能になり、他の回復可能なトランザクションにとって認識できるようになる期間を記録する。
TransactionTime = [DateTime, DateTime ∪ {∞. NA})
たとえば、JVMについてのGCログが更新されたときにFSDに変化があると、CARE制御はFSDTypeを決定することができる。CARE制御はFSDTypeを用いて、ClassificationInput関係の中からそのFSDTypeのFSDによって影響を受けたClassification関数を選択することができる。CARE制御はまた、Classification関数についての入力を含むFeatureTypeのクロージャに照会を行うことができる。次いで、CARE制御は、Classificationを呼び出すために必要なFSDおよびFeatureVectorを構成することができる。Classification関数が季節フィルタ、決定ルール、サポートベクトルマシンなどによって表わされる場合、CARE制御は、関数の実行を開始するだろう。Classification関数が暗黙知プロファイルによって表わされる場合、CARE制御は、Classification関数の暗黙知プロファイルに最適に適合した暗黙知プロファイルを有する1つ以上のアクターを識別し、さらに、分類アクションを実行するためにアクターと対話を開始するだろう。マシンおよび暗黙知分類の両方の場合、このClassification関数の結果はObservation、PredictionまたはNormとなる。このステップの後、CARE制御は、入力されたFSDの集合、入力されたFeatureVectorの集合、Classification関数、およびObservationまたはPredictionまたはNormの間の関係を具体化することができる。CARE制御は、具体化の際に、任意の数のActor、任意の数のEntity、Classification関数を実現するプログラムのバージョン、Classification関数に適用されるパラメータ、および他の文脈情報を含み得る。
いくつかの実施形態においては、FSDのValidTimeは、時系列データのセグメントのValidTimeから導き出すことができる。同様に、FeatureVectorのValidTimeは、FeatureVectorにおけるFeatureの各々のValidTimeの共通部分(intersection)から導き出すことができる。Classification関数を呼出した後、情報変更通知を引起こす新しいFeatureVectorが生成されるだろう。CARE制御は、ClassificationInput、AssessmentInputおよびResolutionInputの関係の中から、新しいFeatureVectorにおけるFeatureのいずれかによって影響されるClassification関数、Assessment関数およびResolution関数のいずれかを選択することができる。Classification関数、Assessment関数およびResolution関数に影響を及ぼすFeatureTypeに対応する必要なすべてのFeatureのクロージャを獲得した後、CARE制御は、これらの選択された関数を順々にまたは並行に呼び出すことができる。例示的シナリオにおいては、新しいFeatureVector、たとえば(高レベルドリフト、高い分散変動、エンドポイント付近の予測)の変更通知がなされると、CARE制御は、このFeatureVectorを分類するようにより高レベルのClassification関数を選択することができる。サポートベクトルマシンなどのより高レベルのClassification関数は、メモリリーク、メモリ管理問題、正常メモリ、ハイパーテンション、ハイポテンション、コンボイ効果、デッドロックなどの分類的Featureに対して、Feature空間におけるFeatureVector(季節因子、レベルドリフト、レベルシフト、分散変動、アウトライア、エンドポイント予測、再始動、メモリ不足イベント)をマッピングすることができる。メモリリーク状態を分類した後、CARE制御は、情報変更についての別の通知を受信することができる。
サポートベクトルマシンを学習する監視型学習技術などの機械学習技術は、分類が関連付けられている1セットの特徴ベクトルを入力として受信することができ、その中の新しいデータポイントを別個の明確な分類に属するものとして分類することを自動的に学習することができる。図14は、本発明の実施形態に従った、自動的に分類されたデータポイントのセットの例を示す図である。クラスデバイダ1402の一方側のポイントはクラス1404に属するとみなされ、クラスデバイダ1402の反対側のポイントはクラス1406に属するとみなされる。たとえば、クラス1404は、「真」であるデータ項目を含んでいてもよく、クラス1406は、「偽」であるデータ項目を含んでいてもよい。この例においては、分類は2進数である。本発明のさまざまな実施形態においては、分類はN式であり得る。この場合、Nはクラスの数である。このため、サポートベクトルマシンは、特徴ベクトルを受取ることができ、そして、1セットの分類されたサンプルデータから監督下で事前に学習されたクラスデバイダ1402などの1つ以上のクラスデバイダを用いて、その特徴ベクトル内に含まれるデータに基づいて特徴ベクトルのクラスを決定することができる。一方のクラスにおけるデータポイントは、メモリリークがシステムに存在することを示す可能性があり、他方のクラスにおけるデータポイントは、メモリリークがシステムにないことを示す可能性がある。
Classification関数を呼出した後、CARE制御がResolution関数を選択した場合、このCARE制御は、Directiveを生成するようResolution関数を実行することができる。Assessment関数なしでClassification関数の後に生成されたこのようなDirectiveを用いて、所望の軌道に沿ってシステムを操作することにより、Factの新しいコンポーネントを集めるかまたは破滅的な故障を迅速に回避することができる。たとえば、JVMがメモリ不足になりそうであることをFeatureベクトルが示す場合、週末にJVMを再開するようDirectiveが発行されて、以降の平日における季節に応じたピーク時間中にクラッシュすることを回避することができる。発明の実施形態においては、CAREプロセスサイクルは、Directiveを発行することによってNormまたはObjectiveについての何らかの許容範囲内ですべてのObservationおよびPredictionを維持するように繰り返すことができる。
別の例示的シナリオにおいては、CARE制御は、新しいFeatureVectorにおける新しいFeatureのセットによって影響を受けるAssessment関数を選択することができる。CARE制御は、AssessmentInput関係の中からAssessment関数に影響を及ぼす所要のFeatureTypeに照会を行うことができる。次いで、CARE制御は、Assessment関数を満たすのに必要なFeatureのクロージャに照会を行うことができる。ある状況においては、Assessment関数は、Assessment関数の専門知識プロファイルに合致する暗黙知プロファイルを有するActorに割当てられてもよい。別の状況においては、Assessment関数はベイズネットワークによって表わすことができる。CARE制御は、ベイズネットワークを満たすのに必要なFeature空間にわたってFeatureVectorを構成することができる。ベイズネットワークについての入力FeatureVectorのValidTimeは、上述のとおりコンポーネントFeatureの各々のValidTimeから導き出すことができる。次いで、CARE制御は、ベイズネットワークの実行を開始することができる。ベイズネットワークの実行後、CARE制御は、FeatureVectorと、Assessment関数を表わすベイズネットワークと、Hypothesisとの間の関係を具体化することができる。
ベイズネットワークのHypothesisに関連付けられた新しいFeatureVectorの変更通知がなされると、CARE制御は、ResolutionInput関係の中から新しいFeatureVector内のFeatureによって影響を受けるいかなるResolution関数をも選択することができる。Resolution関数のために必要なFeatureTypeに対応するFeatureのクロージャを獲得した後、CARE制御は、Directiveを生成するためにResolution関数を呼び出すことができる。Resolution関数が暗黙知プロファイルによって表わされる場合、CARE制御は、Resolution関数の暗黙知プロファイルに最適に合致する暗黙知プロファイルを有する1つ以上のアクターを識別し、解決アクションを実行するためにアクターとの対話を開始するだろう。CARE制御は、FeatureVectorとResolution関数とDirectiveとの間の関係を具体化することができる。
いくつかの実施形態においては、CARE制御プロセスは、Enactment関数またはClassification関数によって生成される新しいFeatureVectorの変更通知がなされると、SymptomResolution関数またはClassificationResolution関数を選択することができる。CARE制御プロセスは、Hypothesisを作成することを目的とするAssessmentResolution関数で、選択されたSymptomResolution関数またはClassificationResolution関数をラップすることができる。このように選択されたSymptomResolution関数またはClassificationResolution関数が暗黙知プロファイルに関連付けられる場合、CARE制御プロセスは、SymptomResolution関数またはClassificationResolution関数に関連付けられた暗黙知プロファイルに合致する暗黙知プロファイルを有する1つ以上のActorを選択するだろう。CARE制御プロセスは、([0049]および[0050]において誘導型ソーシャルタギングとして記載された)適切なHypothesisを構成するための語彙を供給するAssessmentResolution関数を選択するだろう。CARE制御は、場合によっては誘導型ソーシャルタギングを用いて、語彙のレパートリーを供給することによってHypothesisを公表するようにActorに依頼することができる。CARE制御は、FeatureVectorと、SymptomResolution関数またはClassificationResolution関数と、Hypothesisと、Directiveとの間の関係を具体化することができる。CARE制御は、具体化する際にActorおよびAssessmentResolution関数を含み得る。FeatureVectorとHypothesisとの間、およびHypothesisとDirectiveとの間のこの具体化関係は、機械学習技術によって、自動Assessment関数およびAssessmentResolution関数を開発するためのサンプルケースとして用いることができる。
いくつかの実施形態においては、CARE制御プロセスは、Enactment関数によって生成された新しいFeatureVectorの変更通知がなされると、ExpertResolution関数を選択することができる。ExpertResolution関数は、典型的には、暗黙知プロファイルに関連付けられる。CARE制御は、ExpertResolution関数に関連付けられた暗黙知プロファイルに合致する暗黙知プロファイルを有する1つ以上のActorを選択するだろう。CARE制御は、ExpertResolution関数を実行するようにActorを割当てるだろう。Actorは、場合によっては誘導型ソーシャルタギングを用いて、Observation、Prediction、Norm、Objective、Hypothesis、およびDirectiveを含むExpertResolution関数の必要な出力をすべて供給することができる。次いで、CARE制御は、FeatureVectorと、ExpertResolution関数と、Observationと、Predictionと、Normと、Objectiveと、Hypothesisと、Directiveとの間の関係を具体化することができる。CARE制御は、具体化する際に1つ以上のActorを含み得る。このシナリオにおいては、Actorは、単一のステップで、Classification、AssessmentおよびResolutionの役割を果たすことができる。
Resolution関数に伴って新しいDirectiveの変更通知がなされると、CARE制御は、新しいDirectiveのFeatureVectorにおける新しいFeatureのセットによって影響を受けるEnactment関数を選択することができる。CARE制御は、EnactmentInput関係の中から、Enactment関数に影響を及ぼす所要のFeatureTypeに照会を行うことができる。次いで、CARE制御は、Enactment関数を満たすのに必要なFeatureのクロージャに照会を行うことができる。次いで、CARE制御は、Directiveによって影響を受けたEnactment関数を呼び出すことができる。ターゲットJVMのヒープダンプを集めるための命令などのDirectiveは、JVM専門知識を含むプロファイルを有するActorに割当てることができる。
カスタマサービスの要求、バグレポートまたはオンラインヘルプフォーラムをサポートするシステムは、典型的には、ユーザに自然言語テキストで問題を書込ませて、当該問題に関連するファイルのセットを提出させる。自然言語テキストおよびログファイルを含むこれらの非体系的なデータは、CAREにおける、FactデータおよびInformationデータの一部を含み得る。典型的には、分析者または他の参加者は、ユーザの書込みに対して自然言語テキストで応答することによって問題解決を示唆するだろう。いくつかの実施形態においては、自然言語処理(NLP:Natural Language Processing)ツールは、ユーザの問題記述テキストにおけるFeatureVectorと、分析者の応答テキストにおけるDirectiveとを抽出するために用いることができる。本発明の一実施形態においては、CARE制御は、外部リポジトリにおける非体系的な内容から抽出されたFeatureVectorおよびDirectiveを具体化する目的で、SymptomResolution関数を指定することができる。CARE制御は、サービス要求、バグレポートまたはオンラインヘルプフォーラムにおいて、各々の事例に応じたFeatureVectorとSymptomResolution関数とDirectiveとの間の関係を具体化することによって、外部バグレポート、サービス要求、ヘルプフォーラムリポジトリからサンプルケースをインポートすることができる。CARE制御は、システムにおけるClassification関数、Assessment関数およびResolution関数を呼び出すことによって、CARELoopをシミュレートするために、外部リポジトリにおける事例から抽出されたFSDおよびFeatureVectorを用いることができる。
例示的シナリオにおけるいくつかのCARE制御サイクルの後、Reificationは、(1)GCログのためのFSDのセットを含む。このGCログのためのFSDのセットは、(2)ヒープ傾向についての規則的な時系列データで構成されたFSDに関連し、このFSDは、(3)Classification関数に関連し、このClassification関数は、(4)季節因子、レベルドリフト、レベルシフト、レベルスパイク、分散変動、アウトライアなどの集合体から導き出されるFeatureVectorに関連し、このFeatureVectorは、(5)別のClassification関数に関連し、この別のClassification関数は、(6)メモリリーク状態を表わすFeatureVectorに関連し、このFeatureVectorは、(7)ベイズネットワークによって表わされるAssessment関数に関連し、このAssessment関数は、(8)Hypothesisの一部としてメモリリークコードバグを表わすFeatureVectorに関連し、このFeatureVectorは、(9)Resolution関数に関連し、このResolution関数は、(10)ヒープダンプを利用するDirectiveに関連し、このDirectiveは、(11)Actorを含むEnactment関数に関連し、このEnactment関数は、(12)ターゲットJVMのヒープダンプのためのFSDのセットに関連し、このFSDのセットは、(13)Classification関数に関連し、このClassification関数は、(14)ヒープにおけるオブジェクトのヒストグラムから導き出されるFeatureVectorに関連し、このFeatureVectorは、(15)Actorを含むAssessment関数に関連し、このAssessment関数は、(16)メモリリークを引起こすコードのサイトを表わすHypothesis FeatureVectorに関連する。季節的傾向把握フィルタ(seasonal trend filter)のバージョンおよびフィルタパラメータも、直接的または間接的に関連付けることができる。これらの関係は、永続的になるかまたは回復可能になって、他の回復可能なトランザクションにとって認識可能となり、バイテンポラルなValidTimeクエリおよびTransactionTimeクエリを用いて後でリコールされたときに、TransactionTimeが刻印された時間となり得る。これらのReification関係に基づき、ユーザは、2つの間隔の間に起こった情報変更などのデータに現われるいずれのイベントについても、その変更の原因が何であったかを判断することができる。関係は、たとえば、特定の間隔中のFactがメモリリークとして分類されたことと、バグフィックスがメモリリークを修復するための指令として発行されたこととを示し得る。一実施形態においては、データの変更がなぜ起こったのかを理解するために、ユーザは、発行されたすべてのDirectiveを示すようにシステムに命令することができる。
開示されたフレームワークは、項目が持続的になるかまたは回復可能になって、他の回復可能なトランザクションにとって認識可能となったときに、各々のInformation項目のValidTimeおよびTransactionTimeを追跡する。ValidTimeおよびTransactionTimeはともに、Directiveおよびそれらの理由が十分に文書化されることを可能にし得る。Directiveごとに、そのDirectiveの基となったInformationは、そのDirectiveに形式的に関連させることができる。結果として、ユーザは、Directiveが発行された瞬間に利用可能となったInformationを、Directiveごとに、遡及的に決定することができる。時間が経過するのに応じて、新しいInformationは、場合によっては事前にDirectiveが発行された結果、利用可能になるかもしれず、さらには、Informationが利用可能になった(たとえば、回復可能になって、他の回復可能なトランザクションにとって認識可能となった)ときに、さまざまなTransactionTimeで、過去におけるValidTimeの時点の状態に遡及的に適用されてもよい。しかしながら、Directiveの発行後に起こるInformationの変更は、Directiveにとって非因果的なものとして明確に分離され、TransactionTimeの変化を用いて詳細に描写されるので、これらの変更は、そのDirectiveに形式的に関連するValidTime属性の時点で遡及的に適用されてもよい。Directiveの選択に影響を及ぼした可能性のある後に取得されるInformationは、そのInformationが利用可能であった場合には、Directiveにとって非因果的なものとして明確に識別することができ、TransactionTimeを用いてビューからフィルタリングすることができるので、ユーザは、場合によっては別のDirectiveを発行させるべきであったInformationによって混乱させられることはない。いかなるときでも、システムは、いずれかの新しいInformationが後のTransactionTimeにおいて修正される前に、以前のTransactionTimeの時点での情報をリコールすることによって、特定のDirectiveがなぜ発行されるのかと、その特定のDirectiveの選択をサポートするためにそのDirectiveのValidTimeにおいて利用可能になった情報とを、ユーザに通知することができる。いくつかの実施形態においては、このバイテンポラルな由来特定性能(provenance capability)を用いることにより、一定の規制要件が満たされる。
バイタルサインのシステム傾向把握および予測
上述のフレームワークは、傾向を決定し、演算システムの「バイタルサイン」についての将来の挙動を予測するための技術において用いることができる。このようなバイタルサインは、たとえば、JAVA仮想マシン(JVM:JAVA virtual machine)のメモリヒープ使用量、およびプログラムのスレッドまたはスタックセグメントの強度を含み得る。これらのバイタルサインの傾向を決定することによって、演算システムがクラッシュする可能性があるかどうかを判断することができる。このような傾向に基づき、演算システムがいつクラッシュするかについて予測することができる。このような予測に応じて、システム管理者は、クラッシュを回避することができるように、予測されたクラッシュよりも前にシステムの再始動またはメンテナンスを予定することができる。
傾向を決定するタスクは、情報を生成するために事実の分類として概念化することができる。上述のフレームワークは、このような分類関数を系統的にサポートすることができる。この特定のドメインにおいては、事実は、JVMがさまざまな時点でどれだけのメモリを使用するのかについての事実、および/または、プログラムコードのさまざまなブロックが実行されるのに用いれられる強度についての事実を含み得る。分類において適用され得る自動化プロセスは、これらの事実を採用し、そして、メモリリークが明らかに存在するという情報、または、プログラムコードの特定のブロックが過度の「ホットスポット」であるという情報などの決定的な情報を生成する。
サービスレベルアグリーメント(SLA:service level agreement)に適合させるために性能メトリックを連続的に監視することは、クラウドサービスプロバイダのための重大な運用要件のうちの1つである。これは、差し迫ったSLA違反を検出してオペレーションにおいて大抵のSLA違反を回避できるようにするために、かつ、顧客が被る影響を最小限にする目的で、違反が起こったときに問題をより迅速に解決できるようにするために、予測的な診断能力を必要とする。予測的診断解決策の有効な手掛かりは、システムの比較的高レベルの状態空間モデルで表わされており、これは、低レベルのイベントおよび測定から状態を推定および更新するのに適用可能なものであり、重要な性能指標の軌道を有効に予測することができる。システム状態変数は、システム機能のバイタルサインを構成するさまざまなシステム統計の測定値(measurements)を含むはずである。患者の年齢、活動度および環境情況に応じた測定値の正常範囲および異常範囲によって特徴付けられる基本的な身体機能のバイタルサインを表わす心拍数、血圧、体温および呼吸数などのさまざまな生理学的統計の測定値との類似性を得ることができる。
クラウドサービス機能についてのバイタルサインは、規則的な時間間隔で得られる一連のスレッドダンプサンプルからのさまざまなクラスのスレッドおよびスタックセグメントについての強度統計の測定値に基づいて、規定することができる。このバイタルサインについての説明は、ポアソン過程および待合せ理論の数学的フレームワークにおいて策定されるスレッドまたはスタックセグメントの強度統計の分析的モデルによって通知することができる。強度駆動型の分類技術を適用することにより、スレッドおよびスタックセグメントを漸増的に分類することができる。システムの状態モデルは、ホルト・ウィンタース指数移動平均フィルタを用いて、スレッドおよびスレッドセグメントの各クラスの強度についての季節的傾向、線形傾向および一次非線形傾向に関して表わすことができる。状態モデルは、測定アウトライアを検出するためにベースラインを形成するシステムの通常の動作範囲を特徴とする。アウトライアのクラスタは、システム障害と相互に関連する可能性があり、SLA違反として顧客によって観察可能となる可能性のあるシステムのハイパーテンション状態またはハイポテンション状態を表わし得る。モデルは、スレッドセグメントの動的な分類と、分類階層をドリルダウンする能力とをサポートして、スレッドセグメントの特定のサブクラスの強度を観察することにより、SLA問題の先行指標である軽微な性能グリッチについての観測可能性および感度を向上させる。モデルはまた、季節変動調整型の長期性能傾向予測をサポートする。スレッドまたはスタックセグメントの強度は、システム関数のバイタルサインとして用いることができる。システム関数についてのバイタルサインの観測可能性、感度および予測はすべて、有効な予測的診断能力を可能にする。さらに、モデルは、スレッドのクラス間における依存情報をサポートして、スレッド間の通信とスレッド間におけるプロセス間通信とを把握して、スレッド間の通信チャンネルまたはリソースプールにおける待ち行列のトラフィック強度に対して観測可能性を提供する。
オラクル・パブリック・クラウドにおけるフュージョンアプリケーションの中間層におけるWebLogicサーバからのスレッドダンプは、中間層、オペレーティングシステム(OS:operating system)、ネットワークおよびデータベースにおけるシステム障害と相互に関連するパターンを示すことができる。WebLogicサーバは、デフォルトで10分とされる規定時間よりも長くスタックしているスレッドを検出するために装備され得る。本発明の実施形態は、スレッド強度についての長期にわたる季節的傾向の状態モデルを用いることができる。この状態モデルは、予想される応答時間よりも長くスタックしているスレッドを検出するための適応性のある方法を提供する。スタックしたスレッドからなる大きなクラスタは、バックエンドサーバおよびデータベースに向かって下流において輻輳が起こったことに起因するシステムのハイパーテンション状態を示す。モデルはまた、システムの上流で輻輳が起こって多くのスレッドがアイドルになることに起因するシステムのハイポテンション状態を検出することができる。高強度のアイドル状態のスレッドは、高強度のスタックしたスレッドを逆にしたものである。
スレッドセグメント分類シグネチャは、クラウドにわたるすべての顧客ポッドから集められたスレッドダンプアーカイブと、スレッドの各クラスの強度を増幅することができるストレステストシステムからのスレッドダンプアーカイブとから、学習することができる。スレッド分類シグネチャは、Hadoop分散型ファイルシステム(HDFS:Hadoop Distributed File System)クラスタに格納された大量のスレッドダンプからMapReduceアルゴリズムによって抽出することができる。これらの分類シグネチャは、製造システムにおける予測診断モニタ上にブートストラップすることができる。
スレッド強度またはスタックセグメント強度
スレッドまたはスタックセグメントの強度は、システム関数における性能ホットスポットの「熱さ(hotness)」の統計基準(statistical measure)を提供する。コードブロックの熱さは、コードブロックの呼出し回数×コードブロックの実行時間によって定量化することができる。ツールは、命令ポインタにおける命令の実行、方法、システムコール、同期の待機、ハードウェアカウンタオーバフローなどの、低レベルイベントの呼出しカウントおよび応答時間を測定することができる。イベントの正確な測定値を集めるためにアプリケーションプログラムを装備することができるが、このようなアプローチにおいては、この装備が測定に影響を及ぼす可能性がある。この問題は、方法についての測定コード(instrumentation code)の実行時間が方法自体の実行時間を特徴付けている場合には、呼出しカウントが増えるのに応じて、より顕著になり得る。イベントの統計的サンプリングによる熱さ基準の推定は、この点で、正確な測定よりも有効である。オラクル(Oracle)、インテル(Intel)およびAMDを含むCPUベンダーによって提供される性能分析ツールは、イベントをサンプリングするためにCPUに提供されるハードウェアカウンタを利用する。これらのツールは、イベントについての時間ベースまたはイベントベースの統計的サンプリングを提供する。時間ベースのサンプリングにおいては、ツールは、各々のタイマ割込イベントごとに、タイムスタンプ、命令ポインタ、カーネルミクロ状態、スレッドid、プロセスid、CPUコアid、およびコールスタックなどのイベント属性を記録する。イベントベースのサンプリングにおいては、ツールは、ハードウェアカウンタオーバフローイベントにおいて、イベント属性の類似集合を記録する。オラクル、インテルおよびAMDのCPUは、L1/L2キャッシュミス、分岐の誤予測、浮動小数点演算などをサンプリングするためにハードウェアカウンタのセットを提供する。プログラムにおける命令ポインタのサンプルカウントについてのヒストグラムは、典型的には、プログラムにおけるホットスポットの定性的プロファイルを伝える。GNUgprofは、サブルーチンの実行時間をサンプリングするが、呼出し回数を測定するためにコード測定(code instrumentation)を用いる。サンプリング誤差は、通常、2つ以上のサンプリング周期である。サブルーチンの予想される実行時間がnサンプリング周期である場合、実行時間推定値の予想誤差はnサンプリング周期の二乗根である。
プログラムのうちさまざまな部分のホットスポットプロファイルは、コールグラフ、コールツリーおよびコールスタックの観点で示すことができる。各々の観点では、呼出し回数統計を基本的な実行時間統計と組み合わせることにより、ロールアップおよびドリルダウンの観点から、発呼者および呼出し方法に起因して実行時間を設定することができる。プログラムにおける命令ポインタのサンプルカウントについてのヒストグラムは、典型的には、プログラムにおけるホットスポットの定性的プロファイルを表わす。
スレッドまたはスタックセグメントの強度統計の分析モデルから分かるように、サイトについての時間ベースおよびイベントベースのサンプリングは、命令ポインタであれ、スタックトレースであれ、計測技術によって測定されるような実行回数の正確なカウントの近似値として解釈されるべきではないカウンタを提供する。統計的サンプリングによって得られるカウンタ値は、サイトの実行頻度およびサイトの実行の応答時間の両方を考慮に入れている。サイトの実行回数の正確なカウントは、実行時間を考慮に入れていない。所与の命令ポインタサイトにおける命令の実行時間は、命令が必要とするCPUクロックサイクルの数に左右される。統計的サンプリング技術が原因としてもたらす余分な要因は、正確な実行カウントと命令ポインタサイトの統計的サンプリングとの間における、正規化された自乗平均値平方根の誤差、サンプルカバレッジおよびオーダー偏差メトリクスについての、観察された誤差の有意な要因となる。サイトの統計的サンプリングは、分析モデルにおける強度基準として処理することができる。
これらの分析技術を拡張すると、本発明の実施形態は、コールスタックの自動分類のために、かつ、システムバイタルサインの季節的傾向、線形傾向および一次非線形傾向を整列させる状態空間表現ベースのために、強度統計を用いることができる。本発明の実施形態は、スレッド間通信とプロセス間通信とのスレッドのクラス間における依存性を把握するために、単一クラスのスレッドのコールスタックモデルを拡張させることができる。このモデルは、遠隔メソッド呼出し(RMI:remote method invocation)、ウェブサービス、JAVAデータベースコネクティビティ(JDBC:JAVA Database Connectivity)接続、JAVA命名およびディレクトリインターフェイス(JNDI:JAVA Naming and Directory Interface)接続などを介して、クライアント・サーバ呼出しに関与する一連のコールスタックを表わし得る。これはまた、クリティカルな区域に入るために、または(JDBC接続プールなどの)リソースプールからリソースを得るために、2つ以上のコールスタックスレッド同士のインタラクションを表わし得る。2つの相互作用するコールスタックの強度統計間に差異がある場合、これは、それらの間の通信チャネルまたはリソースプールに輻輳があることを明らかにし得る。さらに、コールスタック依存モデルは、オペレータが複数のサーバから入ってくるレポートを相互に関連させることを可能にする。可診断性フレームワークによって呼出しチェーンに沿って伝搬される実行コンテキストID(ECID:Execution Context ID)を用いて、ミドルウェアおよびデータベースの層にわたって例外トレースを相互に関連付けることにより、個々の実行コンテキストにおける問題の根本原因分析を支援することができる。スレッドまたはスタックセグメントの強度統計などのシステムバイタルサインを用いて体系的な問題を診断するために、スレッドまたはスタックセグメントのクラス間の依存情報を用いて、ミドルウェア層およびデータベース層にわたってインシデンスを相互に関連させることにより、根本原因分析を支援することができる。
データベース層スレッドをドリルダウンするために、システムは、データベースサーバOS処理の低レベルスレッドダンプに加え、SQL自動作業負荷責任(AWR:Automatic Workload Responsibility)レポートなどの高レベルの構造化参照言語(SQL:Structured Query Language)ステートメント実行状態レポートについての統計を集めることができる。データベース動作のためにJDBC接続を介してブロックしている各々のスレッドクラスは、データベースサーバにおけるSQLステートメント実行プランと相互に関連付けることができる。2つのSQL AWRスナップショット間の間隔におけるSQLステートメント実行プランの実行カウントおよび実行時間などの統計は、定期的にサンプリングすることができる。SQLステートメント実行プランの実行強度は、実行カウントと平均実行時間との積として導き出すことができる。一実施形態では、問題を診断するために、中間層における高強度データベース動作スレッドから、データベース層における高強度SQLステートメントにまでドリルダウンすることができる。たとえば、準最適な実行プランは、不適切なデータベーススキーマ設計にまでドリルダウンすることができるか、または述語評価のための適切なインデックスが無くなるまでドリルダウンすることができる。こうして、スレッド依存情報モデルにより、モニタが、中間層スレッドとデータベース層スレッドとの強度を相互に関連付けて、完全なエンド・ツー・エンド画像を提供することを可能にする。
ミドルウェアおよびデータベースサービスの分類
フュージョンアプリケーション(FA:Fusion Application)は、財務管理、顧客関係管理(CRM:Customer Relationship Management)、人的資本管理(HCM:Human Capital Management)、サプライチェーン管理(SCM:Supply Chain Management)、プロジェクトポートフォリオ管理(PPM:Project Portfolio Management)、プロキュアメント、および管理リスクコンプライアンスを含む。フュージョンアプリケーションは、フュージョンアプリケーションのサブセットを表わす論理ピラーに編成される。たとえば、テナントシステムは、3つのピラーで構成することができる。3つのピラーとは、すなわち、金融サービス、SCMサービス、PPMサービスおよびプロキュアメントサービスを含む第1のピラーと、HCMサービスを含む第2のピラーと、CRMサービスを含む第3のピラーとを含む。ピラー構造は、大規模システムのグラニュラー・メンテナンス、パッチおよびアップグレードを可能にする。ピラーは、同じFAデータベースを共有し得るが、アプリケーションおよびデータスキーマのグラニュラー・メンテナンス、パッチおよびアップグレードを可能にし得る。各々のピラーは、データベース間にテーブルレプリケーションを有する別個のデータベースを有するはずである。オラクルデータインテグレータ(ODI:Oracle Data Integrator)は、さまざまなバージョンのテーブルを用いている場合、2つ以上のピラーのためにデータベース間でデータ変換を実行することができる。オラクル・パブリック・クラウド(OPC:Oracle Public Cloud)におけるFAテナントポッドは、ピラーを含むFAサービスのファミリーのセットによって分類される。たとえば、上述の例における3つのFAポッドは、それぞれ、(金融、SCM、PPMおよびプロキュアメントピラー)クラス、(HCMピラー)クラス、および(CRMピラー)クラスによって分類されるだろう。
オラクルフュージョンアプリケーションアーキテクチャは、(オラクルバーチャルアセンブリビルダによって作成されるアセンブリを編集することによって)いくつかの実現可能なオラクル仮想マシン(OVM:Oracle Virtual Machine)トポロジーにマッピングすることができるかまたは複数のポストにわたって分散される物理トポロジにマッピングすることができるサーバおよびドメインの論理トポロジへとアプリケーションを編成することによって、アプリケーションサービスの高利用可能性およびロードバランシングをサポートするフュージョンミドルウェアアーキテクチャの上において規定される。サーバは、アプリケーションサービスを実行するWebLogicサーバのインスタンスである。ドメインは、WebLogicサーバの1つ以上のインスタンスを含むWebLogicサーバドメインである。財務管理のための{総勘定元帳、受取勘定、支払勘定}などのFAサービスのファミリーは、金融ドメインにおけるサーバのセットに編成することができる。FAサービスは、たとえば、(金融ドメイン、管理サーバ)(金融ドメイン、総勘定元帳サーバ)、(金融ドメイン、受取勘定サーバ)、(金融ドメイン、支払勘定サーバ)、(CRMドメイン、管理サーバ)、(CRMドメイン、顧客サーバ)、(CRMドメイン、セールスサーバ)、(CRMドメイン、オーダキャプチャサーバ)などの、ドメイン×サーバのディメンションに沿って分類される。FAサービスの各クラスは、ロードバランシングおよび高利用可能性を得るためにクラスタにおいてデプロイすることができる。
ドメインおよびサーバクラスタ構造は、ポッドにおける適切なOVMトポロジにマッピングすることができる。たとえば、(CRMドメイン、管理サーバ)、(SCMドメイン、管理サーバ)、(HCMドメイン、管理サーバ)、(金融ドメイン、管理サーバ)などを含むフュージョンアプリケーションポッドにおけるすべてのドメインにわたる管理サービスは、同じ管理OVMにマッピングすることができる。CRMテナントの場合、2クラスのサービス(CRMドメイン、顧客サーバ)および(CRMドメイン、セールスサーバ)は、他のサービスよりも多くのCPUリソースおよびメモリリソースを要求するものであって、クラスタにおいて1対の一次OVMにマッピングすることができ、(CRMドメイン、…)クラス、(SCMドメイン、…)クラス、(HCMドメイン、…)クラス、(金融ドメイン、…)クラス、(プロキュアメントドメイン、…)クラス、および(プロジェクトドメイン、…)クラス間におけるサポートサービスは、別の対の二次OVMにおけるクラスタに統合することができる。ODI(Oracle Data Integrator:オラクルデータインテグレータ)サーバ、SOA(フュージョンミドルウェアSOA)サーバおよびESS(Enterprise Scheduler Service:エンタープライズ・スケジューラ・サービス)サーバなどのいくつかのフュージョンミドルウェアサービスは、作業負荷を分割するために各々のドメインにおいて再現することができる。
フュージョンアプリケーションポッドは、RACデータベースサーバのいくつかの異なるトポロジにマッピングすることができる3つの論理データベースサービス、すなわち、(オラクルアクセスマネージャのための)OAM DB、(オラクルアイデンティティ管理および承認ポリシーマネージャのための)OIM−APM DBおよび(アプリケーションスキーマのための)フュージョンDB、を含む。OAMリポジトリは、認証、シングルサインオン(SSO:Single-Sign-On)およびアイデンティティ表明のためのポリシーを含む。OIMリポジトリは、ユーザプロファイルを含み、メンバーシップをグループ化する。APMリポジトリは、RBAC承認ポリシーを含む。フュージョンDBは、FA、MDS、SOA、BI、UCMおよびWebCenterのためのさまざまなリポジトリを含む。オラクルアクセスマネージャ(OAM:Oracle Access Manager)および承認ポリシーマネージャ(APM:Authorization Policy Manager)は、WebLogicセキュリティサービスプロバイダインターフェイスを用いて、Java承認および認証サービス(JAAS:Java Authorization and Authentication Services)ならびにコンテナ用認証契約(JACC:Authorization Contract for Containers)のためのサービスを提供する。WebLogicサーバにおけるOAM WebGateコンポーネント、AccessGateコンポーネントおよびウェブサービス・マネージャ(OWSM:Web Services Manager)コンポーネントは、OAMリポジトリにおける認証ポリシーにアクセスする。WebLogicサーバにおけるオラクル・プラットフォーム・セキュリティ・サービス(OPSS:Oracle Platform Security Services)フレームワークは、OIMリポジトリにおけるユーザのグループメンバーシップ情報にアクセスし、この情報を用いて、APMリポジトリにおけるRBAC承認ポリシーにアクセスする。
FAサーバにおけるデータアクセスオペレーションは、それらが依存するデータベースサービス(データベース,OAM DB)、(データベース,OIM−APM DB)および(データベース,フュージョンDB)によって識別することができる。以下のデータベース依存情報はモデルに組込むことができる:
FAサーバにおけるOAM接続はアクセスサーバおよびOAM DBに依存し、
FAサーバにおけるJNDI接続はオラクルインターネットディレクトリサーバおよびOIM−APM DBに依存し、
FAサーバにおけるOPSSフレームワークからのJDBC接続はOIM−APM DBに依存し、
FAサーバにおけるADFビジネス・コンポーネント(ADF−BC)およびメタデータ・サービス(MDS)からのJDBC接続はフュージョンDBに依存し、
SOAサーバおよびBIサーバにおけるBPM、WebCenter、UCMおよびBIからのJDBC接続は、フュージョンDBに依存する。
SQLステートメントの分類
クラウド顧客の(テナントの)FAサービスは、サーバについての複数のピラー/ポッド、ドメインおよびクラスタにわたって分散させることができる。分散型サーバは、データベース接続をJDBC接続プールへと有効に分割する。サービス品質(QoS:quality of service)要件に応じて、システムは、さまざまな数のJDBC接続を各々のプールに割当てることができる。たとえば、セールスサーバ、オーダキャプチャサーバ、マーケティングサーバ、分析的なサーバなどにおける接続プールは、QoSを制御するためにさまざまな数のJDBC接続に割当てることができる。接続プールのサイジングは、JDBC接続プールにおける接続を待ってデータベース動作を実行する中間層データベース動作スレッドクラスと、アクティブなSQLステートメントクラスとを合致させるインピーダンスおよび季節的強度傾向によって誘導することができる。中間層接続プールによるデータベース接続の分割は、SQLステートメントの分類を支援し、問題を切離すことを可能にする。これにより、低優先アプリケーションでの調整不十分なSQLステートメントが、高強度の中間層スレッドのための高性能SQLステートメントをブロックしてしまうことを防止することができる。
スタックトレースによるスレッドおよびスレッド依存関係の分類
スタックしたスレッドのためのスタックトレースは、スレッドをブロックする動作を明らかにし得る。たとえば、以下のスタックトレースの冒頭付近におけるスタックフレーム「oracle jdbc driver OracleStatement doExecuteWithTimeout」により、干渉を引起すことができる。この場合、スレッドがデータベース動作のためにブロックされている。
oracle.jdbc.driver.T4CCallableStatement.executeForRows(T4CCallableStatement.java:991)
oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1285)

oracle.mds.core.MetadataObject.getBaseMO(MetadataObject.java:1048)
oracle.mds.core.MDSSession.getBaseMO(MDSSession.java:2769)
oracle.mds.core.MDSSession.getMetadataObject(MDSSession.java:1188)

oracle.adf.model.servlet.ADFBindingFilter.doFilter(ADFBindingFilter.java:150)

oracle.apps.setup.taskListManager.ui.customization.CustomizationFilter.doFilter(CustomizationFilter.java:46)

weblogic.servlet.internal.WebAppservletContext.securedExecute(WebAppservletContext.java:2209)
weblogic.servlet.internal.servletRequestImpl.run(servlet RequestImpl.java:1457)

weblogic.work.ExecuteThread.execute(ExecuteThread.java:250)
weblogic.work.ExecuteThread.run(ExecuteThread.java:213)
上述のスタックトレースにおいては、JDBCドライバスタックよりも下のスタックフレーム「oracle mds core MetadataObject getBaseMO」は、MDSライブラリがJDBC動作を発生させることを示す。MDSライブラリスタックよりも下のスタックフレーム「oracle adf model servlet ADFBindingFilter doFilter」は、MDSが、ハイパーテキスト転送プロトコル(HTTP:Hypertext Transfer Protocol)サーブレット要求によって呼び出されるADFアプリケーションによって呼び出されることを示す。このスレッドがCRMドメインにおける顧客サーバWeblogicインスタンスにおいて観察されるので、スタックしたスレッドは、(CRMドメイン,顧客サーバ,HTTPサーブレット,ADFアプリケーション,ADF−MDS,DATABASEオペレーション)として分類することができる。このスレッドは、(DATABASE,フュージョンDB)によって分類されたデータベースサーバスレッドに依存する。
以下は、別のスタックしたスレッドについてのスタックトレースである。
com.sun.jndi.ldap.LdapCtx.connect(LdapCtx.java:2640)
com.sun.jndi.ldap.LdapCtxFactory.getInitialContext(LdapCtxFactory.java:48)
javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:637)
javax.naming.InitialContext.init(InitialContext.java:219)

atoracle.adf.controller.internal.security.AuthorizationEnforcer.checkPermission
(AuthorizationEnforcer.java:114)

oracle.adf.model.servlet.ADFBindingFilter.doFilter(ADFBindingFilter.java:150)

oracle.apps.setup.taskListManager.ui.customization.CustomizationFilter.doF ilter(CustomizationFilter.java:46)

weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2209)
weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1457)

weblogic.work.ExecuteThread.execute(ExecuteThread.java:250)
weblogic.work.ExecuteThread.run(ExecuteThread.java:213)
このスタックしたスレッドは、ライトウェイト・ディレクトリ・アクセス・プロトコル(LDAP:Lightweight Directory Access Protocol)接続によってブロックされる。JNDIスタックよりも下のスタックフレーム「oracle adfinternal controller state ControllerState checkPermission」は、ADFコントローラが、場合によっては承認チェックのためにLDAPサーバから許可オブジェクトをロードするためにLDAP接続を用いていることを示す。第2のスレッドは、第1のスレッドとして、スタックフレーム「oracle adf model servlet ADFBindingFilter doFilter」よりも下にある同じスタックトレースを有する。したがって、これは、第1のスレッドと共通の分類(HTTPサーブレット,ADFアプリケーション)を共有する。第2のスレッドはまた、CRMドメインにおける顧客サーバWeblogicインスタンスにおいて観察される場合、(CRMドメイン,顧客サーバ,HTTPサーブレット,ADFアプリケーション,ADF−SECURITY,LDAPオペレーション)として分類されることとなる。第2のスレッドは、(DATABASE,OIM−APM DB)によって分類されるデータベースサーバスレッドに依存する(OID)によって分類されるOIDスレッドに依存する。
スレッド分類情報モデルは、1クラスのスレッドの互いに対する依存性を取り込む。たとえば、以下の依存性は、サブクラスの依存性を一般化するためにスーパークラスのスレッドに関して規定される:
(ADF ウェブサービス呼出し)→(ADFウェブサービス,ADF−BC)
(ADF−BC, DATABASEオペレーション)→(DATABASE,フュージョンDB)
(ADF−MDS, DATABASEオペレーション)→(DATABASE,フュージョンDB)
(ADF−SECURITY,DATABASEオペレーション)→(DATABASE(OIM−APM DB)
(ADF−SECURITY,LDAPオペレーション)→(OID)→(DATABASE(OIM−APM DB)
(SOA−BPEL,DATABASEオペレーション)→(DATABASE,フュージョンDB)
(ESS,DATABASEオペレーション)→(DATABASE,フュージョンDB)
依存関係(ADFウェブサービス呼出し)→(ADFウェブサービス,ADF−BC)は一般化されたものであって、ADFサービス間における多くのサブクラスの依存関係を含む。この依存関係のサブクラスのうち1つは、(CRMドメイン,セールスサーバ,ADFアプリケーション,ADFウェブサービス呼出し)→(CRMドメイン,オーダキャプチャサーバ,ADFウェブサービス,ADF−BC,DATABASEオペレーション)である。この関係のうちクライアント側およびサーバ側の両方におけるスレッドセグメントはドリルダウンすることができる。たとえば、依存関係のクライアント側(ADF−BC,DATABASEオペレーション)→(DATABASE,フュージョンDB)は、高強度関係(CRMドメイン,オーダキャプチャサーバ,ADFウェブサービス,ADF−BC,DATABASEオペレーション)→(DATABASE,フュージョンDB)にまでドリルダウンすることができる。サーバ側と同様に、データベースにおける(SQL実行プランおよび実行トレースを含む)コールグラフ、コールツリーまたはコールスタックモデルは、高強度サブクラスの(DATABASE、フュージョンDB)スレッドにまでドリルダウンすることができる。
サブサンプション階層
分類スキームのサブサンプション階層はタプル予測によって導き出される。たとえば、タプル(顧客サーバ,ADFアプリケーション)がタプル(CRMドメイン,顧客サーバ,HTTPサーブレット,ADFアプリケーション)の予測であるとすれば、分類(CRMドメイン、顧客サーバ、HTTPサーブレット、ADFアプリケーション)は、分類(顧客サーバ,ADFアプリケーション)の下に組込まれる。分類(CRMドメイン,顧客サーバ,HTTPサーブレット,ADFアプリケーション,ADF−MDS,DATABASEオペレーション)および(CRMドメイン,顧客サーバ,HTTPサーブレット,ADFアプリケーション,ADF−SECURITY,LDAPオペレーション)が、分類(CRMドメイン,顧客サーバ,HTTPサーブレット,ADFアプリケーション)の下に組込まれるので、上にあるサンプルスレッドがともに、(CRMドメイン,顧客サーバ,HTTPサーブレット,ADFアプリケーション)のいずれかの予測の下に組込まれる。したがって、2つのサンプルスレッドの統計が集められて、(CRMドメイン,顧客サーバ,HTTPサーブレット,ADFアプリケーション)およびそのスーパークラスの統計にされる。
ADFアプリケーションは、HTTPサーブレットに加えて、Outlookコネクタおよびウェブサービスによって呼び出すことができる。追加の分類は(チャネル×アプリケーション)ディメンションで規定することができる:
(HTTPサーブレット,ADFアプリケーション)
(Outlookコネクタ,ADFアプリケーション)
(ウェブサービス,ADFアプリケーション)
ADFアプリケーションは、さまざまなドメインにおけるさまざまなサーバにおいてデプロイされる。クロス積(ドメイン×サーバ×チャネル×アプリケーション)を採用することにより、それらを分類することができる。たとえば、分類(CRMドメイン,顧客サーバ,HTTPサーブレット,ADFアプリケーション)、(CRMドメイン,顧客サーバ,Outlookコネクタ,ADFアプリケーション)および(CRMドメイン,顧客サーバ,ウェブサービス,ADFアプリケーション)は、最も共通性の低いスーパークラス(CRMドメイン,顧客サーバ,ADFアプリケーション)を有する。
オペレーションディメンションは、数例を挙げると、分類データベース・オペレーション、LDAPオペレーション、ウェブサービス呼出しを含む。データアクセスライブラリは、数例を挙げると、分類ADF−MDS、ADF−SECURITY、ADF−BC、AQ−JMSを含む別のディメンションである。クラス階層は、クロス積(ドメイン×サーバ×チャネル×アプリケーション×ライブラリ×オペレーション)を採用することにより、ドリルダウンすることができる。
タプルは、LISP表現において、reverse(cdr(reverse(tuple))))から(tuple)へと状態が有効に変化しているスレッドの状態として処理することができる。この場合、car(reverse(tuple))は、スタックトレースの上にスタックフレームを与える。たとえば、状態(HTTPサーブレット,ADFアプリケーション)におけるスレッドは、ADFアプリケーションがADF−BCを呼び出すと、状態(HTTPサーブレット,ADFアプリケーション,ADF−BC)に移行することができる。
この明細書中に開示される強度駆動型の分類技術は、時間が経過するのに応じて各々のスタックフレームの強度を追跡し、スタックフレームの強度によって引起こされるスタックフレーム間の同等関係によってスタックトレースにおけるスタックセグメントの境界を定める。これにより、同じ強度を有する同じスタックセグメントにおいて発生するスタックフレームに同じ分類が与えられる。この分類技術により、セグメントにおける個々のスタックフレームの強度が時間に経つにつれて分岐するのに応じて、スタックセグメントが、絶えず、より小さなスタックセグメントに分割される。スタックセグメントが構成セグメントに分割されるたびに、この技術によって、構成セグメントごとに新しい分類が作成される。たとえば、当該技術は、(ADF−BC)セグメントの強度が(ADFアプリケーション)セグメントの強度から分岐したときに、(ADFアプリケーション)および(ADF−BC)に分割され得るスタックセグメントのための分類(ADFアプリケーション・ビジネス・コンポーネント)から始まってもよい。分類(ADFアプリケーション・ビジネス・コンポーネント)は、新しい分類(ADFアプリケーション)および(ADF−BC)の下に組込まれる(ADFアプリケーション,ADF−BC)のエイリアスである。
当該技術により、スタックセグメントを分類するために新しい分類が作成されるたびにグローバル一意識別子(GUID:globally unique identifier)が生成される。スタックセグメントが構成セグメントに分割され、それら構成セグメントの各々に新しい分類が割当てられると、アルゴリズムは、一体化セグメントの分類の識別子から新しい分類の識別子を導き出し得る。たとえば、一体化セグメントの識別子は546372819であってもよい。このセグメントが2つの構成要素セグメントに分割される場合、当該技術により、識別子546372819−1および546372819−2を構成セグメントに割当てることができる。セグメント546372819−1が2つの構成要素セグメントに再び分割される場合、当該技術では、識別子546372819−1−1および546372819−1−2を構成セグメントに割当てることができる。
暗黙知を適用することにより、(ADF−BC)、(ADF−MDS)または(ADF−VIEW)などの有意な名前を分類に割当てることができる。暗黙知はまた、分類を編成するために、チャネル、アプリケーションまたはオペレーションなどのディメンションを割当てることができる。分類およびディメンションの知識ベースを規定することにより、自動分類技術をブートストラップすることができる。後に構成セグメントに分割されるスタックセグメントの分類のために、知識ベースが名前、たとえば(ADF−VIEW)、を指定する場合、当該技術により、一体化セグメントの名前(ADF−VIEW)から構成セグメントのための分類名、たとえば(ADF−VIEW−1)、(ADF−VIEW−2)、(ADF−VIEW−1−1)など、を導き出すことができる。
暗黙知は、根本的原因の分析を支援するために、問題のあるサービスおよびサーバにわたって発生率を相互に関連付けるのに用いられるスレッド依存関係の知識ベースを作成および維持するのを支援することができる。[(ADF ウェブサービス呼出し,HTTPクライアント)→(ADFウェブサービス,ADF−BC)]および[(ADF−BC,DATABASEオペレーション)→(データベース,フュージョンDB)]などのスレッド依存関係が、暗黙知によって割当てられるスタックセグメント名の観点から規定される。
スレッドまたはスタックセグメントの強度統計のロールアップおよびドリルダウン
この分類スキームは、ロールアップおよびドリルダウン統計分析のために多くのディメンションを供給する。興味ある1統計として、スレッドまたはスタックセグメントのクラスの強度が挙げられる。到着に関するポアソン分布の場合、予想される強度ρ(予想される応答時間τに対応する、時間間隔中に予想される到着数)は、リトルの公式によって、予想される応答時間τおよび到着率λに関連付けられる。
ρ=λ・τ
スレッドまたはスタックセグメントのクラスの平均強度は、規則的に、たとえば1分ごとに、得られる一連のスレッドダンプサンプルから測定することができる。一定の到着率λを想定すると、スレッドまたはスタックセグメントρの平均強度は、スレッドまたはスタックセグメントの平均応答時間τに比例する。到着率は、季節指数については、短い時間間隔、たとえば15分の時間間隔、では変化しないように想定され得る。ホルト・ウィンタース予測および季節的傾向把握フィルタは、多くの季節サイクルにわたって季節指数ごとに季節因子を追跡することができる。季節指数に合わせて季節因子によって調整されるサンプルの強度は、平均強度を越えて急上昇する場合、スレッドが平均応答時間よりも長くスタックしていることを示す。アウトライアフィルタはこれを異常として検出することができる。
各々のスレッドダンプにおける(あるオペレーションを呼び出す)スレッドまたはスタックセグメントのクラスの強度は、サンプル時間窓の予想長さの範囲内におけるオペレーションの到着の数の基準であり得る。強度は、サンプル時間窓の予想長さの間接的測定値をもたらす。
スレッドまたはスタックセグメントの強度統計は、システムが、高い到着率と長い応答時間との組合せを有するスレッドまたはスタックセグメントについてのスタックトレースを確認する傾向があるだろうことを示唆する。1よりも小さい(0.05などの小数値の)強度を有するスレッドまたはスタックセグメントは、十分な数のスレッドダンプにわたって対応するスタックトレースの発生をカウントすることによって検出することができる。たとえば、到着率が毎秒0.5であり予想される応答時間が0.1秒であるスレッドまたはスタックセグメントのクラスは、予想されるスレッドまたはスタックセグメントの強度がスレッドダンプごとに0.05となるだろう。スレッドダンプごとに0.05の強度とは、このクラスのスレッドまたはスタックセグメントについてのスタックトレースの発生を、20のスレッドダンプにおいて平均して1回、検出できるはずであることを意味する。各々のスレッドダンプが予想長さτ=0.1秒のサンプル時間窓を表わす場合、20個のスレッドダンプでは、合計すると、予想長さ20・τ=2秒となる。これにより、このクラススレッドまたはスタックセグメントについての2秒窓での予想される発生回数が、20・γ・τ=1によって与えられる。
ポアソン過程の場合、サンプル時間窓が部分的に重なっていない限り、上述の推論は有効である。サンプル時間窓が部分的に重ならないことを確実にするために、サンプリング間隔は、所与のスレッドのクラスの予想応答時間τよりも著しく大きくなるはずである。この明細書中に開示されるアンチエイリアシング法は、システムが現在のサンプル時間窓内に到達するスレッドだけをカウントすることを確実にするために、先行のサンプル時間窓において既にカウントされているスタックしたスレッドを検出するものである。これにより、サンプル時間窓が部分的に重なっていない状態で維持される。スレッドがスタックしていない場合、依然として、残存するスレッド(lingering thread)が、連続的なスレッドダンプにおいてさまざまなサブクラスとして現われることが可能となる。たとえば、ADFアプリケーションスレッドは、あるスレッドダンプにおいては(ADFアプリケーション,ADF−MDS)として、別のスレッドダンプにおいては(ADFアプリケーション,ADF−BC)として複数回カウントされる可能性もある。本発明の実施形態は、サンプル時間窓を確実に独立させるために、残存するスレッドを二回以上カウントすることを回避する。残存するスレッドは、スレッドの実行コンテキストを設定するサーブレットフィルタなどのルートクラス中のアプリケーションがスレッド名にエポックカウンタを追加する場合に、アンチエイリアシングについて検出することができる。エポックカウンタは、スレッドの実行コンテキストのECIDに相互に関連付けることができる。
スレッドまたはスタックセグメントの強度統計のネスト化
ネスト化されたサブクラスは、ステートマシンでの状態として表わすことができる。たとえば、例示的なクラス(ADFアプリケーション)は、例示的なサブクラス(ADFアプリケーション,ADF−BC,データベース・オペレーション)を含み得る例示的なサブクラス(ADFアプリケーション,ADF−BC)を含み得る。これらのネスト化された3つのサブクラスの各々はステートマシンの状態として表わすことができる。
サブクラスの各々におけるスレッドは、さまざまな強度を有することができる。以下に説明する目的で、ρ(ADF)は、(ADFアプリケーション)スレッドの強度を表わし、ρ(ADF−BC)は、(ADFアプリケーション,ADF−BC)スレッドの強度を表わし、ρ(ADF−BC−JDBC)は、(ADFアプリケーション,ADF−BC,データベース・オペレーション)スレッドの強度を表わす。(ADFアプリケーション,ADF−BC,データベース・オペレーション)スレッドの強度は、(ADFアプリケーション)スレッドの強度に含まれる(ADFアプリケーション,ADF−BC)スレッドの強度に含まれる。
(ADFアプリケーション,ADF−BC,データベース・オペレーション)スレッドの強度は、間隔τ(ADF−BC−JDBC)内におけるデータベース・オペレーションの到着数を表わす。これらのデータベース・オペレーションの到着は、それらの出発前に得られたスレッドダンプにおけるJDBCスタックフレームとして観察することができる。データベース・オペレーションの到着および出発は、ステートマシンにおける「データベース・オペレーションを開始」および「データベース・オペレーションを終了」するための状態遷移として表わすことができる。強度、すなわち予想される到着数は、「データベース・オペレーションを開始」する状態と「データベース・オペレーションを終了する」状態との間で、到着点の密度および予想される時間間隔長さに依存する。到着点λの密度および/またはデータベース・オペレーションの予想される応答時間τ(ADF−BC−JDBC)が急上昇する場合、データベース・オペレーションの強度は急上昇するだろう。到着点λの密度が季節指数の範囲内で一定であると想定した場合、強度の急上昇は、データベース・オペレーションが予想されるよりも長くスタックしたままとなることが原因であると考えることができる。スレッドのうち3つのネスト化されたクラスの強度は以下の鎖に沿ってロールアップすることができる:
Figure 0006577455
スレッドまたはスタックセグメントの強度統計の分割
ADF−BCライブラリを呼び出すスレッドの一部は、JDBCを用いてデータアクセスを実行することを必要とする可能性がある一方で、スレッドの残りはキャッシュにおけるデータにアクセスしてもよい。このシナリオについての状態遷移図は、ポアソン過程を2つのポアソンのサブプロセスに分割することによって表わすことができる。λ(ADF−BC)がADF−BCスレッドの到着密度を表わし、λ(ADF−BC−JDBC)がADF−BC−JDBCスレッドの密度を表わし、λ(ADF−BC−キャッシュ)がJDBCオペレーションをスキップするADF−BCスレッドの密度を表わす場合、2つのポアソン過程ADF−BC−JDBCおよびADF−BC−キャッシュの合計は、
λ(ADF−BC)=λ(ADF−BC−JDBC)+λ(ADF−BC−キャッシュ)
ρ(ADF−BC)=ρ(ADF−BC−JDBC)+ρ(ADF−BC−キャッシュ)
によって与えられる密度および強度を有するポアソン過程ADF−BCとなる。
仮に、pがJDBCオペレーションを呼び出すλ(ADF−BC)の百分率を表わす場合、以下のとおりである。
λ(ADF−BC−JDBC)=p・λ(ADF−BC)
λ(ADF−BC−キャッシュ)=(1−p)・λ(ADF−BC)
対応する予想応答時間がτ(ADF−BC)、τ(ADF−BC−JDBC)およびτ(ADF−BC−キャッシュ)によって表わされる場合、以下のとおりである。
ρ(ADF−BC)=ρ(ADF−BC−JDBC)+ρ(ADF−BC−キャッシュ)
ρ(ADF−BC)=λ(ADF−BC−JDBC)・τ(ADF−BC−JDBC)+λ(ADF−BC−キャッシュ)・τ(ADF−BC−キャッシュ)
λ(ADF−BC)・τ(ADF−BC)=p・λ(ADF−BC)・τ(ADF−BC−JDBC)+(1−p)・λ(ADF−BC)・τ(ADF−BC−キャッシュ)
τ(ADF−BC)=p・τ(ADF−BC−JDBC)+(1−p)τ(ADF−BC−キャッシュ)
スレッドのネスト化されたクラスの強度は、方向付けられた鎖に沿ってロールアップすることができる:
Figure 0006577455
スレッドまたはスタックセグメントの強度統計のマージ
スレッドの2つの例示的クラス(顧客サーバ,HTTPサーブレット,ADFアプリケーション)および(顧客サーバ,Outlookコネクタ,ADFアプリケーション)は、例示的なスーパークラス(顧客サーバ,ADFアプリケーション)の下でマージすることができる。ADFアプリケーションの強度統計はHTTPサーブレットおよびOutlookコネクタを介する要求を含む。ADFアプリケーションの応答時間がHTTPサーブレットおよびOutlookコネクタ・チャネルの場合と同じであると想定されてもよい。
τ(ADF)=τ(HTTP−ADF)=τ(Outlook−ADF)
マージされたプロセスの到着率は以下のとおりである。
λ(ADF)=λ(HTTP−ADF)+λ(Outlook−ADF)
マージされたプロセスの強度は以下のとおりある。
ρ(ADF)=λ(ADF)・τ(ADF)
=(λ(HTTP−ADF)+λ(Outlook−ADF))・τ(ADF)
=λ(HTTP−ADF)・τ(HTTP−ADF)+λ(Outlook−ADF)・τ(Outlook−ADF)
=ρ(HTTP−ADF)+ρ(Outlook−ADF)
スレッドまたはスタックセグメントの強度統計のセグメント化
例示的なスレッドのクラス(ADFアプリケーション)は、スレッドの3つの例示的なサブクラス、すなわち(ADFアプリケーション,ADF−BC)、(ADFアプリケーション,ADF−MDS)および(ADFアプリケーション,ADF−SECURITY)を含み得る。スレッドのこれらの3つのサブクラスは、合成状態によってコンポーネント状態の呼出しのシーケンスを表わす。対応するスレッド強度は以下の態様で表わすことができる。ρ(ADF−BC)は、(ADFアプリケーション,ADF−BC)スレッドの強度を表わし、ρ(ADF−MDS)は、(ADFアプリケーション,ADF−MDS)スレッドの強度を表わし、ρ(ADF−SECURITY)は、(ADFアプリケーション,ADF−SECURITY)スレッドの強度を表わす。
ADFアプリケーションの予想応答時間は、ADF−BC呼出し、ADF−MDS呼出しおよびADF−SECURITY呼出しの応答時間にセグメント化することができる。
Figure 0006577455
ADFアプリケーションのスレッドまたはスタックセグメントの強度は、コンポーネント応答時間によってセグメント化することができる。
Figure 0006577455
到着密度λ(ADF)が3つのすべてのサブクラスに関して同じであるため、スーパークラスのスレッドまたはスタックセグメントの強度は、スレッドまたはスタックセグメントの3つのサブクラスの強度で構成される。
Figure 0006577455
したがって、合成状態の予想される強度は、比例的に、コンポーネント状態の予想強度に起因するものとみなすことができる。
スレッドまたはスタックセグメントの強度統計における到着率の乗算
ADF−JAASが、ADF−BC状態、ADF−MDS状態およびADF−SECURITY状態におけるいずれかのスタックフレームから複数回呼び出され得るアクセス制御チェックを表わすと仮定すると、予測(ADFアプリケーション,ADF−JAAS)は、アクセス制御チェックを実行するスレッドの状態を表わす。これにより、以下の3つのサブクラス(ADFアプリケーション,ADF−BC,ADF−JAAS)、(ADFアプリケーション,ADF−MDS,ADF−JAAS)、および(ADFアプリケーション,ADF−SECURITY,ADF−JAAS)の強度統計がマージされる。
各々のADFアプリケーションスレッドがアクセス制御チェックを呼び出し得る予想回数に応じて、状態(ADFアプリケーション,ADF−JAAS)の到着率λ(ADF−JAAS)は、ADFアプリケーションについての到着率λ(ADF)の倍数になり得る。以下の式においては、ωは倍数因子を表わす:
λ(ADF−JAA)=ω・λ(ADF)
ADFスレッドサンプルの到着過程はポアソン到着過程である。ADF−JAASスレッドサンプルの到着過程はポアソン到着過程ではない。なぜなら、ADF−JAASスレッドサンプルの複数回の到着が1つのADFスレッドサンプルの到着に依存し得るからである。しかしながら、依然として、いかなる平均エルゴード到着過程にも適用されるリトルの公式ρ=λ・τを適用することができる。ADF−JAASスレッドサンプルの到着過程が平均エルゴードであることが主張される。なぜなら、いずれかの2つのADF−JAASスレッドサンプルの到着も、これらの到着時間の間隔が十分に大きければ、独立したものになるからである。したがって、スレッドまたはスタックセグメント(ADFアプリケーション,ADF−JAAS)の強度が以下によって与えられる。
ρ(ADF−JAAS)=λ(ADF−JAAS)・τ(ADF−JAAS)
=ω・λ(ADF)・τ(ADF−JAAS)
λ(ADF)=ρ(ADF)/τ(ADF)が代入される場合、以下の式が生成される。
ρ(ADF−JAAS)=ω・[τ(ADF−JAAS)/τ(ADF)]・ρ(ADF)
スレッドまたはスタックセグメント(ADFアプリケーション,ADF−JAAS)の強度は、スレッドまたはスタックセグメント(ADFアプリケーション)の強度の因子ω・τ(ADF−JAAS)/τ(ADF)である。たとえば、ADFアプリケーションへの各々の要求により、5回のアクセス制御チェック(すなわちω=5)が実行され、ADF−JAASの予想される応答時間が、ADFアプリケーションの予想される応答時間の10パーセントを構成する場合、すなわちτ(ADF)=10・τ(ADF−JAAS)となる場合、ADF−JAASスレッドまたはスタックセグメントの平均強度は、ADFアプリケーションのスレッドまたはスタックセグメントの強度の50パーセントを構成することとなる。以下のとおり予想され得る。
Figure 0006577455
したがって、以下のとおりである。
ω・τ(ADF−JAAS)/τ(ADF)<1
スレッドまたはスタックセグメントの強度統計によるインピーダンス整合
2ノードCRMドメインセールスサーバクラスタと2ノードCRMドメインオーダキャプチャサーバクラスタとの間に通信チャネルが存在する例が検討されてもよい。これらのチャネルは、セールスサービスにおけるスレッドのクラスとオーダーキャプチャサービスにおけるスレッドのクラスとの間のクライアント・サーバ依存関係をサポートすることができる。
(CRMドメイン,セールスサーバ,ADFアプリケーション,ADFウェブサービス呼出し)→(CRMドメイン,オーダキャプチャサーバ,ADFウェブサービス,ADF−BC)
対応するスレッド強度は次のように表わすことができる:ρ(ADF−HTTPClient)は、セールスサーバクラスタにおける(CRMドメイン,セールスサーバ,ADFアプリケーション,ADFウェブサービス呼出し)スレッドの強度を表わし;ρ(ADF−HTTPClient(i))は、セールスサーバノードiにおける(CRMドメイン,オーダキャプチャサーバ,ADFウェブサービス,ADF−BC)スレッドの強度を表わし;ρ(WebService−ADF−BC)は、オーダキャプチャサーバクラスタにおける(CRMドメイン,オーダキャプチャサーバ,ADFウェブサービス,ADF−BC)スレッドの強度を表わし;ρ(WebService−ADF−BC(i))は、オーダキャプチャサーバノードiにおける(CRMドメイン,オーダキャプチャサーバ,ADFウェブサービス,ADF−BC)スレッドの強度を表わす。
セールスサーバクラスタおよびオーダキャプチャサーバクラスタにおいてn個およびm個のノードがあると想定すると、以下のとおりである。
Figure 0006577455
セールスサーバとオーダキャプチャサーバとの間の通信チャネルが、セールスサービスからオーダーキャプチャサービスへのウェブサービス呼出しに対して如何なるインピーダンス不整合も導入しない場合、以下のとおりである。
ρ(ADF−HTTPClient)=ρ(WebService−ADF−BC)
クライアントスレッドおよびサーバスレッドの強度の不一致が確認された場合、これは通信チャネルにおける輻輳に起因するものとみなすことができる。ρ(channel)がクライアントスレッドとサーバスレッドとの間の通信チャネルにおけるトラフィック強度を表わす場合、以下のとおりである。
ρ(ADF−HTTPClient)=ρ(WebService−ADF−BC)+ρ(channel)
到着率および出発率が平衡状態であれば、以下のとおりである。
λ(ADF−HTTPClient)=λ(WebService−ADF−BC)=λ(channel)
および
τ(ADF−HTTPClient)=τ(WebService−ADF−BC)+τ(channel)
通信チャネルの容量を増やすことにより、クライアントサービスと、レイテンシτ(channel)をクライアントの応答時間τ(ADF−HTTPClient)に付与するサーバサービスとの間のインピーダンス不整合を小さくすることができる。
強度の飽和
スレッドまたはスタックセグメントの強度は、スレッドダンプにおけるスレッドまたはスタックセグメントのクラスについての予想されるスタックトレース数の基準である。スレッド強度は、スレッドまたはスタックセグメントの所与のクラスの到着率および予想応答時間に応じて増大するだろう。
いくつかのシステムは、所与のクラスのスレッドを実行するのに利用可能なスレッドの最大数に制限を課している。この制限に達すると、たとえ、到着率または応答時間が増加し続ける可能性があったとしても、スレッドまたはスタックセグメントの強度が飽和し(最大限に達し)、統計はもはや関係ρ=λ・τを反映しなくなるだろう。本発明の実施形態は、いつ飽和点に達するのかを認識することができる。本発明の実施形態は、強度の成長傾向を推定するホルト・ウィンタース三重指数移動平均フィルタを含む。これらの実施形態は、強度が最大値で横ばいになり、予測された成長傾向の追従を中止すると、一連のアウトライアを検出したときにこれら飽和点を認識することができる。
システムが最大強度に制限を課していない場合、スレッドまたはスタックセグメントの強度が、その限界を超えて増大し、システムにおいてメモリ不足のエラーを引起こす可能性がある。この条件は、エンドポイントとしてホルト・ウィンタース三重指数移動平均フィルタによって予測することができる。
アンチエイリアシング
ポアソン・カウント過程は、サンプル窓が部分的に重なっておらず独立していることを必要とする。この場合、スタックしたスレッドおよび残存するスレッドを二回以上カウントする必要はなくなる。システムは、java.lang.management APIにおけるThreadInfo.getThreadId()およびThreadMXBean.getThreadCpuTime(long id)を用いて、各々のスレッドの中央処理装置(CPU:central processing unit)時間を監視する。当該技術では、スレッドのCPU時間が、先行のスレッドダンプから変化していない場合には、スレッドがスタックしていると推論する。この技術では、連続するスレッドダンプの数を追跡するが、この場合、このスレッドはスタックしているものとして検出される。これらの変数は、ThreadAntiAliasingInfoデータ構造において維持することができる。
スレッドが残存するがスタックしていない場合、CPU時間は変化するだろう。残存するスレッドを検出するために、アンチエイリアシング技術を、スタックトレースのルートフレーム間のサーブレットフィルタなどのクラスと協働させて、java.lang.ThreadsetNameアプリケーションプログラミングインターフェイス(API:application programming interface)を用いて、スレッドの名前にエポックカウンタを追加する。スレッド名がThreadAntiAliasingInfoに記録された先行するスレッド名と同じである場合、当該技術では、スレッドが既にカウントされたと推論される。スレッド名におけるエポック情報は、スレッドプールにおける同じスレッドが新しいエポックのための再使用されたときにエイリアスとして観察された場合、アンチエイリアシング解決策を提供する。
スタックしたスレッドまたは残存するスレッドがスレッドのあるクラスに関して一貫して検出される場合、当該技術は、スレッドのこのクラスについてのサンプル時間窓の予想長さが、NM(Mはサンプリング時間間隔である)分未満となるまで、(n番目ごとのスレッドダンプを用いることによって)サンプリング間隔を適合させることができる。
ハイパーテンション状態およびハイポテンション状態
JVMは、システムのハイパーテンション状態を表わし得るスタックしたスレッドを検出するために装備され得る。ハイパーテンション状態は、データベースサーバまたはバックエンドサーバに向かう下流経路における輻輳と診断することができる。しかしながら、本発明の実施形態はまた、上流経路に輻輳が起こっているせいで要求がサーバに通じていない場合、ハイポテンション状態(デハイドレーション)を検出することができる。後者の条件は、スタックしたスレッドを検出するための標準的なJVM計測によっては検出することができない。スレッドまたはスタックセグメントの強度を用いるアウトライア検出は、ハイパーテンション状態およびハイポテンション状態の両方を対称的に検出することができる。
スレッドの最大値がNであり、予想されるスレッドまたはスタックセグメントの強度がρである場合、ポアソン分布によって飽和の確率が与えられる。
Figure 0006577455
予想されるスレッドまたはスタックセグメントの強度が5であり、スレッドまたはスタックセグメントの最大数が10である場合、スレッドまたはスタックセグメントの強度を飽和させる確率は0.032であり、これは、スレッドダンプの3.2%が10で飽和した強度を示すであろうことを意味する。予想されるスレッドまたはスタックセグメントの強度が50であり、スレッドまたはスタックセグメントの最大数が100であると仮定するならば、100でのスレッドまたはスタックセグメントの強度を飽和させる確率は、3.2E−10である。この確率では、通常原因の飽和が起こる可能性は低く、スレッドまたはスタックセグメントの強度飽和が、サーバの下流における過度の輻輳などの異常原因に起因して発生するはずである。同様に、5.0E−10の確率では、サーバの上流における輻輳のせいでサーバが過度にデハイドレートしていない限り、スレッドまたはスタックセグメントの強度が14を下回る可能性は低くなるだろう。
スタックフレームの強度駆動型分類
一般に、スレッドダンプがいくらかの期間にわたって十分な回数だけサンプリングされた後、低強度のスレッドまたはスタックセグメントのスタックトレースが検出されることが予想され得る。しばしば、長期にわたるスレッドダンプの後でさえ低すぎて検出できない強度を有するスタックフレームを、ソフトウェアアップグレードのシステムグリッチまたは回帰のおかげで、検出することができる。それにもかかわらず、極めてまれに、スタックフレームが検出も分類もされないままとなる可能性がある。本発明の実施形態では、スタックフレームの新しいトレースは、これらが十分な数のスレッドダンプの後または強度の急上昇をもたらすシステムグリッチの後に検出された場合には、継続して分類することができる。この明細書中に開示される分類スキームは、スタックフレームの強度基準(intensity measures)によって駆動される。
システムは、個々のスタックフレームの強度だけでなく、スタックトレースにおけるスタックフレームに隣接して現われる先行処理スタックフレームおよび後続処理スタックフレームの強度も追跡する。システムは、同じ強度で現われる隣接するスタックフレーム、すなわち、スタックトレースにおいて順序付けられた配列で常に一緒に現われるスタックフレーム、に対して同じ分類を割当てる。たとえば、スキームは、順序付けられた配列で常に一緒に同じ強度で現われる以下のスタックフレームに(JDBC−実行)クラスを割当てるだろう:
oracle.jdbc.driver.T4CCallableStatement.executeForRows(T4CCallableStatement.java:991)
oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1285)
oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3449)
oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3550)
oracle.jdbc.driver.OracleCallableStatement.execute(OracleCallableStatement.java:4693)
oracle.jdbc.driver.OraclePreparedStatementWrapper.execute(OraclePreparedStatementWrapper.java:1086)
上述のとおり、ADFアプリケーションの強度ρ(ADF)は、3つのコンポーネントρ(ADF−BC)、ρ(ADF−MDS)およびρ(ADF−SECURITY)にセグメント化することによって近似させることができる:
Figure 0006577455
モデルを向上させるために、ADF−BC状態、ADF−MDS状態およびADF−SECURITY状態から分離された種々雑多なADFアプリケーション状態の強度は、(ADFアプリケーション,ADF−misc)クラスの下でロールアップすることができる。最後の状態の強度であるρ(ADF−misc)は、3つの主要なコンポーネントの強度と比べて無視できるほど些細なものであるかもしれない。
ρ(ADF)=ρ(ADF-BC)+ρ(ADF-MDS)+ρ(ADF-SECURITY)+ρ(ADF-misc)
(ADFアプリケーション,ADF−misc)クラスの下にあるスレッドまたはスタックセグメントのサブクラスの強度がシステムグリッチのせいで急上昇する可能性がある。たとえば、ファイルシステムグリッチは、いくつかのADFアプリケーションスレッドをファイル書込動作の際にスタックさせてしまう可能性がある。
java.io.FileOutputStream.writeBytes(Native Method)
java.io.FileOutputStream.write(FileOutputStream.java:260)

java.io.OutputStreamWriter.flush(OutputStreamWriter.java:213)
org.apache.log4j.helpers.QuietWriter.flush(QuietWriter.java:57)

org.apache.log4j.WriterAppender.append(WriterAppender.java:159)

at oracle.adf.View.process(View.java:632)
このスタックフレームの強度がしきい値を越えて急上昇すると想定した場合、ADFアプリケーションスレッドの新しい状態(ADFアプリケーション,ADF−View−misc)を分類することができる。急上昇している期間中、ADFアプリケーションの強度ρ(ADF)は4つのコンポーネントに分解することができる:
ρ(ADF)=ρ(ADF−BC)+ρ(ADF−MDS)+ρ(ADF−SECURITY)+ρ(ADF−View−misc)
ファイル書込動作を実行するスタックフレームが、ADF−View−miscスタックフレームならびにADF−BCスタックフレーム、ADF−MDSスタックフレームおよびADFセキュリティスタックフレームの上で発生する可能性がある。時間が経過するのに応じて、システムは、ADF−View−miscにおける他のスタックフレームの強度から分岐するファイル書込動作スタックフレームの強度を検出し得る。さまざまなグループのスタックフレームの強度を分離することにより、結果として、新しい分類(ファイル書込動作)が得られ、分類(ADF−View−misc)が(ADF−View,ファイル書込動作)にセグメント化されるだろう。先行する分類(ADF−View−misc)が新しい(ファイル書込動作)クラスおよび(ADF−View)クラスの下に組込まれる。新しい(ファイル書込動作)クラスはまた、(ADF−BC)クラス、(ADF−MDS)クラスおよび(ADF−セキュリティ)クラスと交差して、新しいサブクラス(ADF−BC,ファイル書込動作)、(ADF−MDS,ファイル書込動作)および(ADF−セキュリティ,ファイル書込動作)を形成する。これらの強度も急上昇している。こうして、強度によって(ファイル書込動作)クラスおよび(ADF−View)クラスの分類が駆動される。
システムは、スタックフレームを分類しこの分類を適切なディメンションに割当てるために、人の暗黙知を要求する可能性がある。本発明のいくつかの実施形態においては、帰納的学習プロセスにより、システムが既に規定したディメンションに新しいクラスを割当てることができる。たとえば、(ADF−BC,ファイル書込動作)スタックトレース、(ADF−MDS,ファイル書込動作)スタックトレース、(ADF−セキュリティ,ファイル書込動作)スタックトレース、および(ADF−View,ファイル書込動作)スタックトレースの強度および近接統計を分析することにより、帰納的学習プロセスでは、以下に示されるように、(ファイル書込動作)クラスをオペレーションディメンションに割当て、(ADF−View)クラスをライブラリディメンションに割当ててもよい:
オペレーション(データベース・オペレーション)|(LDAPオペレーション)|(ウェブサービス呼出し)|(ファイル書込動作)
ライブラリ=(ADF−BC)|(ADF−MDS)|(ADF−SECURITY)|(ADF−VIEW)
スタックトレースにおいて個々のスタックフレームを分類できるようにするために、システムは、StackFrameInfoデータ構造を用いて、現在のスレッドダンプ(numOfOccur)におけるスタックフレームの発生回数、すべてのスレッドダンプ(totalNumOfOccur)における合計発生回数、先行処理(predecessors)のリスト、後続処理(successors)のリスト、および一体化セグメントを維持する。StackFrameInfoデータ構造におけるclassMethodLineNumber変数は、スレッドダンプにおけるスタックフレームを表わす「weblogic.work.ExecuteThread run (ExecuteThread.java:213)」などのストリングを保持する。さらに、numOfOccurは、現在のスレッドダンプにおける「weblogic.work.ExecuteThread run (ExecuteThread.java:213)」の発生回数を保持する。強度基準は、強度=totalNumOfOccur/totalNumOfDumpsによって与えられる派生変数である。
(ADF−View−misc)などの既存の分類が、(ADF−View,ファイル書込動作)などの2つの新しい分類に分割される場合、新しい分類は、元の分類の第1のセグメントおよび第2のセグメントとして維持される。元の分類は、新しい分類の一体化セグメントとして設定される。分類に属するスタックフレームも、分類の際にエレメントとして維持される。分類の名前およびディメンションは任意であり、暗黙知によって規定することができる。一体化セグメント、第1の構成セグメント、第2の構成要素セグメント、およびスタックセグメント分類のエレメントは、StackSegmentInfoデータ構造を用いて維持される。
再帰的プログラム構造のおかげで回数を変えて繰り返すことのできるスタックセグメントも、StackSegmentInfoによって分類される。この再帰的なStackSegmentInfoは、さまざまなコンテキストに現われる可能性がある。すなわち、一体化セグメントまたはスレッドの2つ以上のクラスにおいて発生する可能性がある。RecursiveSegmentInfoデータ構造を用いて、各々のコンテキストにおけるStackSegmentInfoの再帰的な発生を表現し、RecursiveSegmentInfoデータ構造における再帰(numOfRecur)の深さを記録する。RecursiveSegmentInfoはまた、ツリー走査用のビジター設計パターンで相互回帰セグメントを構成することができる。たとえば、単純な相互回帰構造は、(A,B)のように見えるだろう。この場合、AおよびBは互いを呼び出している。相互回帰がさまざまなタイプのツリーノード{A1,A2,A3}およびさまざまなタイプのビジターノード{B1,B2,B3}を含んでいるビジター設計パターンは、((A1,B1),(A3,B3),(A2,B2),(A3,B3),…)のように見えるだろう。相互回帰セグメント、たとえばセグメント(A3,B3)は、スタックトレースにおけるさまざまな位置で何回も発生し得る。各々の位置はRecursiveSegmentInfoのインスタンスによって表わされる。
当該技術は、スレッドのスタックトレースを一連のリーフレベルスタックセグメントに分割し、さらに、リーフレベルスタックセグメントを、それが一連のトップレベルの一体化されたスタックセグメントになるまで一体化する。これら一連のトップレベルの一体化スタックセグメントは各々、構成セグメントの階層を表現するバイナリツリー構造を含み得る。この表現により、同等クラスのスレッドを分類するためのシグネチャが形成され、幅広いレパートリーのスレッドに対してスレッドをパターンマッチングさせる際の時間複雑性が低減される。スレッド分類情報はThreadClassificationInfoデータ構造を用いて維持される。
本発明の実施形態はまた、スタックフレームの分類のたびに、強度について季節的傾向をフィルタリングする。SeasonalTrendInfoデータ構造は、フィルタ変数のうちのいくつかを含む。SeasonalTrendInfoにおけるrawIntensity変数は、スタックフレーム、スタックセグメントまたはスレッドクラスの強度を現在のスレッドダンプに記録する。スタックセグメントがリーフレベルセグメントである(サブセグメントがない)場合、numOfOccurは、スタックセグメントにおける各々のStackFrameInfoエレメントのnumOfOccurと同じになるだろう。フィルタは、強度の成長傾向を予測するために、平滑化された強度および平滑化された強度成長率を更新する。予測された強度の正規化残差は、測定された強度が予想強度から逸脱している場合に表わすアウトライアを検出するためのフィルタとして用いることができる。この条件は、サービスのハイパーテンション状態またはハイポテンション状態を表現することができる。
強度駆動型分類の例示的シナリオ
システムがスタックトレースにおける一連のスタックフレームを分類したと想定すると、スタックフレームのリストは、スタックセグメント(A)のエレメントを構成することができる。各々のスタックフレームエレメントは、強度、発生回数、先行処理エレメントおよび後続処理エレメントの情報を維持する。このクラスにおけるスタックフレームは、たとえば、10個のスレッドダンプの後に1.3の同じ強度を有する可能性がある。
100のスレッドダンプの後、スタックセグメント(A)におけるスタックフレームの強度は、3つのグループに分岐してもよい。この場合、下部の3つのスタックフレームの強度が2.5まで増加し、上部の3つのスタックフレームの強度が1.33までわずかに増加し、接着フレームとしての役割を果たす中間のスタックフレームの強度が約1.3で留まっている。強度が分岐すると、システムは、スタックセグメント(A)を2つの構成スタックセグメント(A−1)および(A−2)に分割し、再びスタックセグメント(A−2)を(A−2−1)および(A−2−2)に分割する。中間のスタックフレーム(A−2−1)の強度はスタックセグメント(A)の強度を表わす。すなわち、A=(A−1,A−2−1,A−2−2)となる。(A−1)および(A−2−2)の強度は、これらがスタックトレース(A−1,AC,C)および(B,BA,A−2−2)において発生するために、分岐する。この場合、(AC)および(BA)は、それぞれ、(A−1)を(C)に接続し、(B)を(A−2−2)に接続する接着フレームを表わしている。特定のスタックフレームは、複数の後続処理および複数の先行処理を有し得る。
当該技術により、スタックセグメントのスタックフレームの中から強度の相違が検出されると、新しい構成スタックセグメント中のスタックフレームエレメントが分割される。たとえば、構成スタックセグメント(A−1)、(A−2)、(A−2−1)および(A−2−2)は、それら各々が直接的または間接的に一体化セグメントとしてスタックセグメント(A)を参照するものであるが、このような分割から生成することができる。この例においては、スタックセグメント(A)におけるエレメントは、スタックセグメント(A−1)におけるエレメントおよびスタックセグメント(A−2)におけるエレメントに分割することができる。スタックセグメント(A−2)は、次いで、スタックセグメント(A−2−1)におけるエレメントおよびスタックセグメント(A−2−2)におけるエレメントに分割することができる。スタックフレームは、対応するリーフレベル一体化セグメントを参照するために更新される。さまざまなエレメントのための一体化セグメントは、それらのエレメントが属する新しいスタックを反映させるように更新することができる。
構成セグメントが再帰する深さ分だけ異なっているスタックセグメントのばらつきを観察することができる。いくつかのセグメントの強度が同じままである一方で、任意の再帰深さのせいで他のセグメントの強度が異なっていると想定すると、システムは元のセグメントを構成セグメントに分割することができる。元のスタックセグメントのエレメントは、A−2−1によって分類される可変数のスタックセグメントを含み得る。結果として、元のスタックセグメントの構成セグメントは、可変数のセグメントA−2−1を含むこととなる。指定されたパターンと適合するいずれのスタックトレースも同じ分類シグネチャによって識別することができる。再帰セグメントは、一体化セグメントA−2の第1の構成セグメントの分類としてスタックセグメントA−2−1を指すことができる。
システムは、初期のフィルタ状態として用いるために、各々の新しいスタックセグメント(A−1)、(A−2)、(A−2−1)、および(A−2−2)についてスタックセグメント(A)におけるSeasonalTrendInfoデータのコピーを一部作成することができる。続いて、(A−1)、(A−2)、(A−2−1)、および(A−2−2)のためのSeasonalTrendInfoデータを独立して更新することができる。
スレッドクラス依存情報モデル
スレッド分類および強度測定アルゴリズムは、スレッドクラス間において依存情報を提供する知識ベースを用いてブートストラップすることができる。依存情報を用いることにより、スレッドクラス間の通信チャネルにおけるトラフィック強度を推定することができる。これらはまた、根本的原因分析のために、問題のあるコンテナにおけるFAサーバのさまざまな部品における2つ以上のスレッドクラスからイベントおよび発生率(incidences)を関連付けることができる。たとえば、スレッドクラス依存性(CRMドメイン,セールスサーバ,ADFアプリケーション,ADFウェブサービス呼出し)→(CRMドメイン,オーダキャプチャサーバ,ADFウェブサービス,ADF−BC)と想定すると、FAポッドおけるセールスサーバおよびオーダキャプチャサーバが、クライアントスレッドのハイポテンション状態およびサーバスレッドのハイパーテンション状態を同時に報告する場合、これらのイベントは発生中に集めることができる。これらのイベントが十分に頻繁に発生する場合、チケットが解放されてオーナーに割当てられて、セールスサーバクラスタとオーダキャプチャサーバクラスタとの間の通信チャネルにおける実現可能なインピーダンス不整合を分析することができる。オーナーは、インピーダンス整合の問題としてこれらの発生率を査定し、サービス要求を提出してもよい。
典型的には、依存情報はスーパークラスレベルで規定される。たとえば、依存性(ADFウェブサービス呼出し)→(ADFウェブサービス,ADF−BC)により、WebLogicドメインにわたって分散されるADFサービスとFAポッドにおけるサーバとの間における一般的なパターンのサービス呼出しが取り込まれる。この抽象的な依存性は、依存性(CRMドメイン,セールスサーバ,ADFアプリケーション,ADFウェブサービス呼出し)→(CRMドメイン,オーダキャプチャサーバ,ADFウェブサービス,ADF−BC)を含む。別の状況においては、抽象的な依存性パターン(ADF−BC,DATABASEオペレーション)→(DATABASE,フュージョンDB)および(ADF−SECURITY,DATABASEオペレーション)→(DATABASE,OIM−APM DB)では、JDBCスレッドのハイパーテンション問題の区別的診断により、データベースサーバのうちの1つにおける問題を切り離すことが可能となる。
情報モデルはスレッドクラスの間の依存性をマッピングすることができる。ThreadClassDependencyInfoは、クライアントスレッドクラスからサーバスレッドクラスへの多数対1のマッピングを表わすことができる。ThreadClassInfoは、スタックセグメントのタプルによってスレッドのクラスを指定することができる。たとえば、(ADF−BC,DATABASEオペレーション)は、スタックセグメント(ADF−BC)および(DATABASEオペレーション)のタプルである。クラス(CRMドメイン,オーダキャプチャサーバ,ADFウェブサービス,ADF−BC,DATABASEオペレーション)は、(ADF−BC,DATABASEオペレーション)のサブクラスである。ThreadClassificationInfoは、スレッドを分類するためのシグネチャを表わすスタックセグメントのリストを含む。当該技術は、(スタックフレームの下から上までの)バイナリツリーの深さを最初に1回走査して、訪問されたスタックセグメントオブジェクトのpartOfThreadClasses属性からスレッドクラスオブジェクトを抽出し、分類シグネチャにおけるスタックセグメントに対してThreadClassInfoにおけるスタックセグメントを適合させることができる。スレッドクラスが適合した場合、クライアントまたはサーバスレッドクラスはアラートまたは発生率レポートに含まれる。
スレッドまたはスタックセグメントの強度分析の適用
図1Aおよび図1Bは、本発明の実施形態に従った、スレッドまたはスタックセグメントの強度分析を適用するための技術の一例を示すフロー図である。当該技術は、スタックフレーム情報マップ、スタックセグメント情報マップ、スレッド分類マップおよびアンチエイリアシング情報マップを維持する。スタックフレーム情報マップ、スタックセグメント情報マップおよびスレッド分類マップは、ある一時点までに集められた(サンプリング時間よりも前の一連のサンプリング時間中に集められた)スレッドダンプサンプルから抽出されたスタックフレーム、スタックセグメントおよびスレッド分類から構成される。これらのマップは、任意には、履歴アーカイブにおけるスレッドダンプから抽出されたスタックフレーム、スタックセグメントおよびスレッド分類でブートストラップすることができる。アンチエイリアシング情報マップは、先行のスレッドダンプにおいてサンプリングされるスレッドを表わす。スレッドアンチエイリアシング情報マップを用いて、現在のサンプリング時間のスレッドダンプにあって先行のサンプリング時間のスレッドダンプにおいて既に発生しているスレッドを識別する。サンプリング時間におけるスレッドダンプのスタックトレースは、スタックフレーム情報マップ、スタックセグメント情報マップおよびスレッド分類マップを用いて分類することができる。これらのマップは、図1Aおよび図1Bのフロー図ならびに以降の図によって示されるプロセスについてのコンテキストの一部である。最初に図1Aを参照すると、ブロック102においては、現在のサンプリング時間に到達する。
ブロック104においては、現在のサンプリング時間は、サンプリング時間間隔が経過した時点で、次のサンプリング時間に設定される。ブロック106においては、現在のサンプリング時間におけるすべてのスレッドのスレッドダンプが得られる。たとえば、現在のサンプリング時間についてのスレッドダンプはjava.lang.management.ThreadMXBeanから得ることができる。ブロック108においては、スレッドダンプカウンタがインクリメントされる。
各々のサンプリング時間におけるスレッドダンプのために、スタックフレーム情報マップにおける各々のスタックフレーム情報項目の発生カウンタの数がゼロにリセットされ、これにより、このカウンタを用いて、現在のスレッドダンプにおけるスタックフレームの発生回数をカウントすることができるようになる。これを達成するために、ブロック110においては、スタックフレーム情報マップにおける未処理のスタックフレーム情報項目が、まだ処理されないまま残っているかどうかが判断される。そうであれば、制御が次にブロック112に進められる。そうでない場合、制御はブロック116に進められる。
ブロック112においては、現在のスタックフレーム情報項目は、スタックフレーム情報マップにおける次の未処理のスタックフレーム情報項目に設定される。ブロック114において、現在のスタックフレーム情報項目についての発生回数がゼロに設定される。制御がブロック110に戻される。
各々のサンプル時間におけるスレッドダンプのために、スタックセグメント情報マップにおける各々のスタックセグメント情報項目の発生回数カウンタがゼロに設定され、これにより、カウンタを用いて、現在のスレッドダンプにおけるスタックセグメントの発生回数をカウントすることができるようになる。これを達成するために、ブロック116においては、スタックセグメント情報マップにおける未処理のスタックセグメント情報項目がまだ処理されないまま残っているかどうかが判断される。そうであれば、制御が次にブロック118に進められる。そうでなければ、制御は図1Bのブロック122に進められる。
ブロック118においては、現在のスタックセグメント情報項目は、スタックセグメント情報マップにおける次の未処理のスタックセグメント情報項目に設定される。ブロック120においては、現在のスタックセグメント情報項目についての発生回数がゼロに設定される。制御がブロック116に戻される。
各々のサンプル時間におけるスレッドダンプのために、スレッド分類情報マップにおける各々のスレッド分類情報項目の発生回数カウンタがゼロに設定され、これにより、カウンタを用いて、現在のスレッドダンプにおけるスレッドの発生回数をカウントすることができるようになる。これを達成するために、ここで図1Bを参照すると、ブロック122においては、スレッド分類情報マップにおける未処理のスレッド分類情報項目が、まだ処理されないまま残っている。そうであれば、制御が次にブロック124に進められる。そうでない場合、制御はブロック128に進められる。
ブロック124においては、現在のスレッド分類情報項目が、スレッド分類情報マップにおける次の未処理のスレッド分類情報項目に設定される。ブロック126においては、現在のスレッド分類情報項目についての発生回数がゼロに設定される。制御がブロック122に戻される。
ブロック128においては、現在のサンプリング時間についてのスレッドダンプに関するスタックフレーム統計が更新される。現在の時間間隔にわたるスレッドダンプについてのスタックフレーム統計を更新するための技術が、図2Aおよび図2Bに関連付けて以下に開示される。ブロック130においては、スレッドクラスのセットは、現在のサンプリング時間中にスレッドダンプからスレッドおよびスタックセグメントを分類することによって決定される。現在のサンプリング時間中にスレッドダンプからスレッドおよびスタックセグメントを分類するための技術が、図3A〜図3Jに関連付けて以下に開示される。
各々のサンプル時間におけるスレッドダンプのために、スレッドアンチエイリアシング情報マップにおける各々のスレッドアンチエイリアシング情報項目中のフラグがチェックされて、分類されたスレッドが現在のスレッドダンプにおいて発生するかどうかが判断される。分類されたスレッドが現在のスレッドダンプにおいて発生していない場合、これは、スレッドアンチエイリアシング情報マップから除去される。これを達成するために、ブロック132においては、未処理のスレッドアンチエイリアシング情報項目がスレッドアンチエイリアシング情報マップに残っているかどうかが判断される。そうであれば、制御が次にブロック134に進められる。そうでない場合、制御はブロック142に進められる。
ブロック134においては、現在のスレッドアンチエイリアシング情報項目が、スレッドアンチエイリアシング情報マップにおける次の未処理のスレッドアンチエイリアシング情報項目に設定される。ブロック136においては、現在のスレッド情報項目が現在のサンプル時間中にスレッドダンプにおいて発生しているかどうかを示す現在のスレッドアンチエイリアシング情報項目についてのフラグが偽であるかどうかが判断される。そうであれば、制御が次にブロック138に進められる。そうでない場合、制御はブロック140に進められる。
ブロック138においては、現在のスレッドアンチエイリアシング情報項目がスレッドアンチエイリアシング情報マップから除去される。制御がブロック132に戻される。
ブロック140においては、現在のスレッドアンチエイリアシング情報項目についてのフラグが偽に設定される。制御がブロック132に戻される。
ブロック142においては、季節的傾向把握フィルタが、現在のサンプル時間についてのスタックセグメント情報マップに対して適用される。季節的傾向把握フィルタを適用するための技術を図4に関連付けて以下に開示する。制御が図1Aのブロック102に戻される。
スタックフレーム統計の更新
図2Aおよび図2Bは、本発明の実施形態に従った、スタックフレーム統計を更新するための技術の一例を示すフロー図である。当該技術は、図1Aおよび図1Bに関連付けて上述されたように、現在のサンプリング時間についてのスレッドダンプに対して実行することができる。まず図2Aを参照すると、ブロック202においては、スレッドダンプにおける未処理のスレッド情報項目がまだ処理されずに残っているかどうかが判断される。そうであれば、制御が次にブロック204に進められる。そうでなければ、図2Aおよび図2Bに示される技術が終了する。
ブロック204においては、現在のスレッド情報項目は、スレッドダンプにおける次の未処理のスレッド情報項目に設定される。ブロック206においては、現在のスタックトレースは、現在のスレッド情報項目におけるスタックトレースに設定される。ブロック208においては、スタックトレースエレメントインデックスがリセットされる。たとえば、インデックスは、当該インデックスを−1に設定することによってリセットすることができる。ブロック210においては、現在のスタックトレースエレメントは、現在のスタックトレースの一番下にあるスタックトレースエレメントに設定される。
ブロック212においては、スタックトレースエレメントインデックスがインクリメントされる。ブロック214においては、現在のスタックフレーム情報項目は、キーと適合させることによって、すなわち、現在のスタックトレースエレメントのキーと同じキーを有するスタックフレーム情報項目を得ることによって、現在のスタックトレースエレメントに対応する(スタックフレーム情報マップにあるか、または必要に応じて作成された)スタックフレーム情報項目に設定される。たとえば、キーはソースコードステートメント、行番号、オブジェクトコードアドレスまたはこれらの組合せで構成することができる。
ブロック216においては、現在のスタックトレースエレメントが現在のスタックトレースの一番下にあるかどうかが判断される。たとえば、スタックトレースエレメントインデックスがゼロに等しい場合、これは、現在のスタックトレースエレメントが現在のスタックトレースの一番下にあることを示し得る。現在のスタックトレースエレメントが現在のスタックトレースの一番下にある場合、制御はブロック218に進められる。そうでない場合、制御はブロック220に進められる。
ブロック218においては、現在のスタックフレーム情報項目は、スタックフレーム情報マップにおける一番下のフレームとしてマーク付けされる。これは、現在のスタックフレーム情報項目の先行処理リスト属性に「FRAME_FLOOR」などの何らかのスタックフレーム情報項目を追加することによって達成されてもよい。現在のスタックフレーム情報項目はまた、「FRAME_FLOOR」の後続処理リスト属性に追加することができる。制御が図2Bのブロック224に進められる。
ブロック220においては、現在のスタックトレースエレメントが現在のスタックトレースの一番上にあるかどうかが判断される。たとえば、スタックトレースエレメントインデックスが現在のスタックトレースのサイズよりも1だけ小さいものに等しい場合、これは、さらに、現在のスタックトレースエレメントが現在のスタックトレースの一番上にあることを示し得る。現在のスタックトレースエレメントが現在のスタックトレースの一番上にある場合、制御はさらにブロック222に進められる。そうでなければ、制御は図2Bのブロック224に進められる。
ブロック222においては、現在のスタックフレーム情報項目は、スタックフレーム情報マップにおける一番上のフレームとしてマーク付けされる。これは、現在のスタックフレーム情報項目の先行処理リスト属性に「FRAME_CEILING」などの何らかのスタックフレーム情報項目を追加することによって達成されてもよい。現在のスタックフレーム情報項目も、「FRAME_CEILING」の先行処理リスト属性に追加することができる。制御が図2Bのブロック224に進められる。
ここで図2Bを参照すると、ブロック224においては、現在のスタックフレーム情報項目の発生回数の属性がインクリメントされる。現在のスタックフレーム情報項目の合計発生回数の属性もインクリメントすることができる。ブロック226においては、先行のスタックフレーム情報項目が、ヌルでなければ、現在のスタックフレーム情報項目の先行処理リスト属性に追加される。ブロック228においては、いずれかのスタックトレースエレメントが現在のスタックトレースにおける現在のスタックトレースエレメントの上に存在するかどうかかが判断される。そうであれば、制御が次にブロック230に進められる。そうでなければ、制御はブロック236に進められる。
ブロック230においては、次のスタックトレースエレメントは、現在のスタックトレースエレメントの真上に存在するスタックトレースエレメントに設定される。ブロック232においては、次のスタックフレーム情報項目は、次のスタックトレースエレメントのキーと同じキーを有する(スタックフレーム情報マップにおける)スタックフレーム情報項目に設定される。たとえば、キーは、スタックフレームに対応するソースコードステートメント、行番号またはオブジェクトコードアドレスで構成することができる。ブロック234においては、次のスタックフレーム情報項目が、現在のスタックフレーム情報項目の後続処理リスト属性に追加される。制御がブロック236に進められる。
ブロック236においては、先行のスタックフレーム情報項目が、現在のスタックフレーム情報項目に設定される。ブロック238においては、いずれかのスタックトレースエレメントが現在のスタックトレースにおける現在のスタックトレースエレメントの上に存在するかどうかかが判断される。そうであれば、制御が次にブロック240に進められる。そうでなければ、制御が図2Aのブロック202に戻される。
ブロック240においては、現在のスタックトレースエレメントは、現在のスタックトレースにおける現在のスタックトレースエレメントの真上に存在するスタックトレースエレメントに設定される。制御は図2Aのブロック212に戻される。
スレッドおよびそれらのスタックセグメントの分類
図3A〜図3Jは、本発明の実施形態に従った、スレッドおよびそれらのスレッドのスタックセグメントを分類するための技術の一例を示すフロー図である。当該技術は、図1Aおよび図1Bに関連付けて上述された、現在のサンプリング時間中に、規定されたスレッドダンプに対して実行することができる。当該技術は、スレッド分類情報項目のセットとして表わされるスレッドクラスのセットを生成することができる。まず図3Aを参照すると、ブロック3002においては、スレッド分類情報項目の空のセットが作成され、このスレッド分類情報項目の空のセットは、スレッドダンプにおける各スレッドがセットにおける(潜在的に異なる)スレッド分類項目によって表わすことができるという特性を有しており、スレッドダンプにおける同等のスレッドが同じスレッド分類項目によって表わされるように作成される。これらの特性に従う新しいスレッド分類項目を作成し、以下に記載される動作によって当該セットに追加することができる。ブロック3004においては、スレッドダンプにおける未処理のスレッド情報項目が処理されずに残っているかどうかが判断される。そうであれば、制御がブロック3006に進められる。そうでない場合、制御はブロック3182に進められる。
ブロック3006においては、現在のスレッド情報項目は、スレッドダンプにおける次の未処理のスレッド情報項目に設定される。ブロック3008においては、スレッド名は、現在のスレッド情報項目の名前に設定される。ブロック3010においては、現在のスレッド情報項目のためのエイリアスが先行のスレッドダンプにおいて(すなわち先行のサンプリング時間中に)発見されたかどうかを示すフラグが偽に設定される。ブロック3012においては、スレッドアンチエイリアシング情報マップにおける未処理のスレッドアンチエイリアシング情報項目が処理されないまま残っているかどうかが判断される。そうであれば、制御が次にブロック3014に進められる。そうでなければ、制御は図3Bのブロック3024に進められる。
ブロック3014においては、現在のスレッドアンチエイリアシング情報項目は、スレッドアンチエイリアシング情報マップにおける次の未処理のスレッドアンチエイリアシング情報項目に設定される。ブロック3016においては、(ブロック3008において参照された)スレッド名が現在のスレッドアンチエイリアシング情報項目の名前と同じであるかどうかが判断される。そうであれば、制御が次にブロック3018に進められる。そうでなければ、制御はブロック3012に戻される。
ブロック3018においては、現在のスレッドアンチエイリアシング情報項目のダンプ回数属性がインクリメントされる。ブロック3020においては、現在のスレッドアンチエイリアシング情報項目のフラグ属性は、その項目のためのエイリアスが現在のスレッドダンプに(すなわち現在のサンプリング時間中に)発見されるかどうかを示すものであるが、このフラグ属性が真に設定される。ブロック3022においては、ブロック3010において参照されたフラグは、現在のスレッド情報項目についてのエイリアスが先行のスレッドダンプにおいて発見されたかどうかを示すものであるが、このフラグが真に設定される。制御はブロック3024に進められる。
ここで図3Bを参照すると、ブロック3024においては、ブロック3010および3022において参照されたフラグが真に等しいかどうかが判断される。そうであれば、制御が図3Aのブロック3004に戻される。そうでない場合、制御はブロック3026に進められる。
ブロック3026においては、現在のスレッド情報項目に対応する新しいスレッドアンチエイリアシング情報項目が作成される。ブロック3028においては、新しいスレッドアンチエイリアシング情報項目のフラグ属性は、その項目についてのエイリアスが現在のスレッドダンプにおいて(すなわち現在のサンプリング時間中に)発見されるかどうかを示すものであるが、このフラグ属性が真に設定される。ブロック3030においては、新しいスレッドアンチエイリアシング情報項目の名前が、(ブロック3008において参照された)スレッド名に設定される。ブロック3032においては、新しいスレッドアンチエイリアシング情報項目がスレッドアンチエイリアシング情報マップに追加される。ブロック3034においては、現在のスレッド情報項目のファイングレインセグメントを追跡するために新しいファイングレインセグメントリストが作成される。ブロック3036においては、現在のスタックトレースが、現在のスレッド情報項目のスタックトレースに設定される。ブロック3038においては、スタックトレースエレメントインデックスがリセットされる。たとえば、スタックトレースエレメントインデックスはインデックスの値を−1に設定することによってリセットすることができる。ブロック3040においては、現在のスタックトレースエレメントは、現在のスタックトレースの一番下にあるスタックトレースエレメントに設定される。
ブロック3042においては、スタックトレースエレメントインデックスがインクリメントされる。ブロック3044においては、現在のスタックフレーム情報項目は、現在のスタックトレースエレメントのキーと同じキーを有する(スタックフレーム情報マップにおける)スタックフレーム情報項目に設定される。たとえば、キーはスタックフレームに対応するソースコードステートメント、行番号またはオブジェクトコードアドレスから構成され得る。
ブロック3046においては、現在のスタックトレースエレメントが現在のスタックトレースの一番下にあるかどうかが判断される。たとえば、スタックトレースエレメントインデックスがゼロに等しい場合、これは、現在のスタックトレースエレメントが現在のスタックトレースの一番下にあることを示し得る。現在のスタックトレースエレメントが現在のスタックトレースの一番下にある場合、制御が図3Cのブロック3048に進められる。そうでなければ、制御が図3Dのブロック3066に進められる。
ここで図を3Cを参照すると、ブロック3048においては、現在のスタックフレーム情報項目が分類されたかどうかが判断される。たとえば、この判断は、現在のスタックフレーム情報項目の一体化セグメント属性がヌルに等しいかどうかを判断することによって行うことができる。この属性がヌルに等しい場合、現在のスタックフレーム情報項目はまだ分類されていない。現在のスタックフレーム情報が分類されていない場合、制御がブロック3050に進められる。そうでない場合、制御はブロック3062に進められる。
ブロック3050においては、新しいスタックセグメント情報項目が作成され、現在のスタックセグメント情報項目の値に割当てられる。ブロック3052においては、現在のスタックフレーム情報項目の(ブロック3048において参照された)一体化セグメント属性の値は、現在のスタックセグメント情報項目に設定される。ブロック3054においては、現在のスタックフレーム情報項目が、現在のスタックセグメント情報項目のエレメントリスト属性に追加される。ブロック3056においては、新しい季節的傾向情報項目が生成される。ブロック3058においては、現在のスタックセグメント情報項目の傾向属性の値は、新しい季節的傾向情報項目に設定される。ブロック3060においては、現在のスタックセグメント情報項目が(ブロック3034において参照された)ファイングレインセグメントリストに追加される。制御がブロック3064に進められる。
ブロック3062においては、現在のスタックセグメント情報項目は、現在のスタックフレーム情報項目の(ブロック3048において参照された)一体化セグメント属性の値に設定される。制御がブロック3064に進められる。
ブロック3064においては、現在のスタックセグメント情報項目は、現在のスタックトレースにおける一番下にあるセグメントとしてマーク付けされる。これは、現在のスタックセグメント情報項目の先行処理リスト属性に「SEGMENT_FLOOR」などの一定のスタックセグメント情報項目を追加することによって達成されてもよい。現在のスタックセグメント情報項目は、「SEGMENT_FLOOR」の後続処理リスト属性に追加することができる。制御が図3Jのブロック3162に進められる。
ここで図3Dを参照すると、ブロック3066においては、先行処理スタックトレースエレメントは、現在のスタックトレースエレメントインデックスの値よりも1だけ小さいインデックスを有する(現在のスタックトレースにおける)スタックトレースエレメントに設定される。ブロック3068において、先行処理スタックフレーム情報項目は、先行処理スタックトレースエレメントのキーと同じキーを有する(スタックフレーム情報マップにおける)スタックフレーム情報項目に設定される。たとえば、キーはスタックフレームに対応するソースコードステートメント、行番号またはオブジェクトコードアドレスで構成することができる。ブロック3070においては、先行処理スタックセグメント情報項目は、先行処理スタックフレーム情報項目の一体化セグメント属性の値に設定される。
ブロック3072においては、現在のスタックフレーム情報項目が分類されたかどうかが判断される。たとえば、この判断は、現在のスタックフレーム情報項目の一体化セグメント属性がヌルに等しいかどうかを判断することによって行うことができる。この属性がヌルに等しい場合、現在のスタックフレーム情報項目はまだ分類されていない。現在のスタックフレーム情報項目がまだ分類されていない場合、制御がブロック3074に進められる。そうでなければ、制御が図3Gのブロック3120に進められる。
ブロック3074においては、先行処理スタックフレーム情報項目が先行処理スタックセグメント情報項目のエレメントリスト属性における最後のスタックフレーム情報項目であるかどうかが判断される。そうであれば、制御が次にブロック3076に進められる。そうでなければ、制御が図3Fのブロック3098に進められる。
ブロック3076においては、先行処理スタックフレーム情報項目の後続処理リスト属性が、現在のスタックフレーム情報項目であるエントリを1つだけ有しているかどうかが判断される。そうであれば、制御が次にブロック3078に進められる。そうでない場合、制御はブロック3082に進められる。
ブロック3078においては、現在のスタックフレーム情報項目の先行処理リスト属性が、先行処理スタックフレーム情報項目であるエントリを1つだけ有しているかどうかが判断される。そうであれば、制御が図3Eのブロック3080に進められる。そうでない場合、制御はブロック3082に進められる。
ここで図3Eを参照すると、ブロック3080においては、現在のスタックフレーム情報項目の一体化セグメント属性の値が、先行処理スタックセグメント情報項目に設定される。ブロック3081においては、現在のスタックフレーム情報項目が先行処理スタックセグメント情報項目のエレメントリスト属性に追加される。制御が図3Jのブロック3162に進められる。
ブロック3082においては、新しいスタックセグメント情報項目が作成され、現在のスタックセグメント情報項目の値に割当てられる。ブロック3084においては、現在のスタックフレーム情報項目の(ブロック3048において参照された)一体化セグメント属性の値は、現在のスタックセグメント情報項目に設定される。ブロック3086においては、現在のスタックフレーム情報項目が、現在のスタックセグメント情報項目のエレメントリスト属性に追加される。ブロック3088においては、先行処理スタックセグメント情報項目が、現在のスタックセグメント情報項目の先行処理リスト属性に追加される。ブロック3090においては、現在のスタックセグメント情報項目が、先行処理スタックセグメント情報項目の後続処理リスト属性に追加される。ブロック3092においては、新しい季節的傾向情報項目が生成される。ブロック3094においては、現在のスタックセグメント情報項目の傾向属性の値は、新しい季節的傾向情報項目に設定される。ブロック3096においては、現在のスタックセグメント情報項目が(ブロック3034において参照された)ファイングレインセグメントリストに追加される。制御が図3Jのブロック3162に進められる。
ここで図3Fを参照すると、ブロック3098においては、先行処理スタックセグメント情報項目のトレースセグメントは、先行処理スタックフレーム情報項目が第1の新しいスタックセグメント情報項目の終わりにくるように、先行処理スタックフレーム情報項目のインデックスと後続処理スタックフレーム情報項目のインデックスとの間に発生する別個の第1および第2の新しいスタックセグメント情報項目に分割される。指定されたスタックフレームの前または後に分岐点を追加するためにスタックセグメントを分割するための技術が、図5A〜図5Cを参照して以下に開示される。このシナリオにおいては、そのスタックセグメント分割技術は、このシナリオにおいては先行処理スタックセグメント情報項目である指定されたスタックセグメント情報項目の(前ではなく)後に分割を実行するために呼び出すことができる。
ブロック3100においては、先行処理スタック情報項目は、ブロック3098の分割によって作成される第1の新しいスタックセグメント情報項目に設定される。ブロック3102においては、新しいスタックセグメント情報項目が作成され、現在のスタックセグメント情報項目の値に割当てられる。ブロック3104においては、現在のスタックフレーム情報項目の(ブロック3048において参照された)一体化セグメント属性の値は、現在のスタックセグメント情報項目に設定される。ブロック3106においては、現在のスタックフレーム情報項目が、現在のスタックセグメント情報項目のエレメントリスト属性に追加される。ブロック3108においては、先行処理スタックセグメント情報項目が、現在のスタックセグメント情報項目の先行処理リスト属性に追加される。ブロック3110においては、現在のスタックセグメント情報項目が、先行処理スタックセグメント情報項目の後続処理リスト属性に追加される。ブロック3112においては、新しい季節的傾向情報項目が生成される。ブロック3114においては、現在のスタックセグメント情報項目の傾向属性の値が、新しい季節的傾向情報項目に設定される。ブロック3116においては、(ブロック3034において参照された)ファイングレインセグメントリストにおける最後の既存エントリの値が、先行処理スタックセグメント情報項目の値と置換えられる。ブロック3118においては、現在のスタックセグメント情報項目がファイングレインセグメントリストに追加される。制御が図3Jのブロック3162に進められる。
ここで図3Gを参照すると、ブロック3120においては、現在のスタックセグメント情報項目が、現在のスタックフレーム情報項目の一体化セグメント属性の値に設定される。ブロック3122においては、現在のスタックセグメント情報項目が先行処理スタックセグメント情報項目に等しいかどうかが判断される。そうであれば、制御が次にブロック3124に進められる。そうでなければ、制御が図3Iのブロック3142に進められる。
ブロック3124においては、現在のスタックフレーム情報項目の先行処理属性リストが2つ以上のエントリを有するかどうかが判断される。そうであれば、制御が次にブロック3128に進められる。そうでない場合、制御はブロック3126に進められる。
ブロック3126においては、先行処理スタックフレーム情報項目の後続処理リスト属性が2つ以上のエントリを有するかどうかが判断される。そうであれば、制御が次にブロック3128に進められる。そうでなければ、制御が図3Jのブロック3162に進められる。
ブロック3128においては、現在のスタックセグメント情報項目のエレメントリスト属性における第1のエントリが、現在のスタックフレーム情報項目と同じであるかどうかが判断される。そうであれば、制御が次にブロック3130に進められる。そうでなければ、制御が図3Hのブロック3132に進められる。
ブロック3130においては、ファイングレインセグメントリストにおける先行処理スタックセグメント情報項目および現在のスタックセグメント情報項目を表わす再帰セグメントが更新される。一実施形態においては、この更新は、最後のセグメントが再帰セグメントである場合には、ファイングレインセグメントリストにおける最後のセグメントの再帰回数属性の値をインクリメントすることを含み得るか、または、最後のセグメントがスタックセグメントである場合には、ファイングレインセグメントリストの終わりに新しい再帰セグメントを追加することを含み得る。これらの変数についてのさらなる情報を図6A〜図6Eの説明において以下に記載する。制御は図3Jのブロック3162に進められる。
ここで図3Hを参照すると、ブロック3132においては、現在のスタックセグメント情報項目のトレースセグメントは、先行処理スタックフレーム情報項目が第1の新しいスタックセグメント情報項目の終わりにくるように、かつ、現在のスタックフレーム情報項目が第2の新しいスタックセグメント情報項目の初めにくるように、先行処理スタックフレーム情報項目のインデックスと現在のスタックフレーム情報項目のインデックスとの間に発生する別個の第1および第2の新しいスタックセグメント情報項目に分割される。指定されたスタックフレームの前または後の分岐点においてスタックセグメントを分割するための技術は、図5A〜図5Cに関連付けて以下に開示される。このシナリオにおいては、そのスタックセグメント分割技術は、このシナリオにおいて現在のスタックセグメント情報項目である指定されたスタックセグメント情報項目の(後ではなく)前に分割を実行するために呼び出すことができる。
ブロック3134においては、先行処理スタックセグメント情報項目は、ブロック3132の分割によって作成される第1の新しいスタックセグメント情報項目に設定される。ブロック3136においては、現在のスタックセグメント情報項目は、ブロック3132の分割によって作成される第2の新しいスタックセグメント情報項目に設定される。ブロック3138においては、(ブロック3034において参照された)ファイングレインセグメントリストにおける最後の既存エントリの値が、先行処理スタックセグメント情報項目の値と置換えられる。ブロック3140においては、現在のスタックセグメント情報項目がファイングレインセグメントリストに追加される。制御が図の3Jのブロック3162に進められる。
ここで図3Iを参照すると、ブロック3142においては、先行処理スタックセグメント情報項目のエレメントリスト属性の最後のエントリが、先行処理スタックフレーム情報項目と同じであるかどうかが判断される。そうであれば、制御が次にブロック3150に進められる。そうでない場合、制御はブロック3144に進められる。
ブロック3144においては、先行処理スタックセグメント情報項目のトレースセグメントは、先行処理スタックフレーム情報項目が第1の新しいスタックセグメント情報項目の終わりにくるように、先行処理スタックフレーム情報項目のインデックスと後続処理スタックフレーム情報項目のインデックスとの間に発生する別個の第1および第2の新しいスタックセグメント情報項目に分割される。指定されたスタックフレームの前または後における分岐点においてスタックセグメントを分割するための技術は、図5A〜図5Cに関連付けて以下に開示される。このシナリオにおいては、そのスタックセグメント分割技術は、このシナリオにおいて先行処理スタックセグメント情報項目である指定されたスタックセグメント情報項目の(前ではなく)後に分割を実行するために呼び出すことができる。
ブロック3146においては、先行処理スタックセグメント情報項目は、ブロック3144の分割によって作成された第1の新しいスタックセグメント情報項目に設定される。ブロック3148においては、(ブロック3034において参照された)ファイングレインセグメントリストにおける最後の既存エントリの値が、先行処理スタックセグメント情報項目の値と置換えられる。制御がブロック3150に進められる。
ブロック3150においては、現在のスタックセグメント情報項目のエレメントリスト属性の最後のエントリが現在のスタックフレーム情報項目と同じであるかどうかが判断される。そうであれば、制御が次にブロック3156に進められる。そうでない場合、制御はブロック3152に進められる。
ブロック3152においては、現在のスタックセグメント情報項目のトレースセグメントは、現在のスタックフレーム情報項目が第2の新しいスタックセグメント情報項目の初めにくるように、先行するスタックフレーム情報項目のインデックスと現在のスタックフレーム情報項目のインデックスとの間に発生する別個の第1および第2の新しいスタックセグメント情報項目に分割される。指定されたスタックフレームの前または後における分岐点においてスタックセグメントを分割するための技術は、図5A〜図5Cに関連付けて以下に開示される。このシナリオにおいては、そのスタックセグメント分割技術は、このシナリオにおいて現在のスタックセグメント情報項目である指定されたスタックセグメント情報項目の(後ではなく)前に分割を実行するために呼び出すことができる。
ブロック3154においては、現在のスタックセグメント情報項目は、ブロック3152の分割によって作成された第2の新しいスタックセグメント情報項目に設定される。制御がブロック3156に進められる。
ブロック3156においては、現在のスタックセグメント情報項目が(ブロック3034において参照された)ファイングレインセグメントリストに追加される。ブロック3158においては、先行処理スタックセグメント情報項目が、現在のスタックセグメント情報項目の先行処理リスト属性に追加される。ブロック3160においては、現在のスタックセグメント情報項目が、先行処理スタックセグメント情報項目の後続処理リストエレメントに追加される。制御が図3Jのブロック3162に進められる。
ここで図3Jを参照すると、ブロック3162においては、現在のスタックトレースエレメントが現在のスタックトレースの一番上にあるかどうかが判断される。この判断は、スタックトレースエレメントインデックスが現在のスタックトレースサイズよりも1だけ小さいものに等しいかどうかを判断することによって行なわれてもよい。スタックトレースエレメントインデックスが現在のスタックトレースサイズよりも1だけ小さいものに等しい場合、現在のスタックトレースエレメントは現在のスタックトレースの初めに位置する。現在のスタックトレースエレメントが現在のスタックトレースの初めに位置する場合、次いで、制御がブロック3164に進められる。そうでない場合、制御はブロック3166に進められる。
ブロック3164においては、現在のスタックセグメント情報項目は、現在のスタックトレースにおいて一番上にあるセグメントとしてマーク付けされる。これは、現在のスタックセグメント情報項目の後続処理リスト属性に「SEGMENT_CEILING」などの一定のスタックセグメント情報項目を追加することによって達成されてもよい。現在のスタックセグメント情報項目は、「SEGMENT_CEILING」の先行処理リスト属性に追加することができる。制御がブロック3166に進められる。
ブロック3166においては、いずれかのスタックトレースエレメントが現在のスタックトレースにおける現在のスタックトレースエレメントの上に存在しているかどうかが判断される。そうであれば、制御が次にブロック3168に進められる。そうでない場合、制御はブロック3170に進められる。
ブロック3168においては、現在のスタックトレースエレメントは、現在のスタックトレースにおける現在のスタックトレースエレメントの真上に存在するスタックトレースエレメントに設定される。制御が図3Bのブロック3042に進められる。
ブロック3170においては、現在のスレッド情報項目のファイングレインセグメントが一体化される。指定されたファイングレインセグメントリストにおいて与えられたファイングレインセグメントを一体化するための技術を、図6A〜図6Eに関連付けて以下に開示する。図6A〜図6Eに関連付けて開示される技術は、一体化されたセグメントのセットを生成する。ブロック3172においては、現在のスレッド情報項目のためにこのように作成された一体化されたセグメントにセットが格納される。
ブロック3174においては、(ブロック3002において参照された)スレッド分類情報項目が、現在のスタックトレースおよび(ブロック3172において格納された)1一体化されたセグメントのセットに関して登録される。指定されたスタックトレースおよび一体化されたセグメントの指定されたセットについてのスレッド分類項目を登録するための技術は、図7Aおよび図7Bに関連付けて以下に開示される。図7Aおよび図7Bに関連付けて開示された技術によって、スレッド分類情報項目を生成する。ブロック3176においては、現在のスタックトレースおよび(ブロック3172において格納された)一体化されたセグメントのセットのためにこのように作成されたスレッド分類情報項目が格納される。
ブロック3178においては、(ブロック3176において格納された)スレッド分類情報項目についてのスレッド分類統計が更新される。指定されたスレッド分類情報項目についてのスレッド分類統計を更新するための技術が、図8に関連付けて以下に開示される。
ブロック3180においては、スレッド分類情報項目が(ブロック3002において参照された)スレッド分類情報項目のセットに追加される。制御が図3Aのブロック3004に戻される。
図3Aを再び参照すると、ブロック3182においては、スレッド分類項目のセットが生成されると、図3A〜図3Jに例示される技術が完了する。
季節的傾向把握フィルタの適用
図4は、本発明の実施形態に従った、季節的傾向把握フィルタを適用するための技術の一例を示すフロー図である。ブロック402においては、スタックセグメント情報マップにおける未処理のスタックセグメント情報項目が処理されないまま残っているかどうかが判断される。そうであれば、制御が次にブロック404に進められる。そうでなければ、図4に例示される技術が終了する。
ブロック404においては、現在のスタックセグメント情報項目は、スタックセグメント情報マップにおける次の未処理のスタックセグメント情報項目に設定される。ブロック406においては、ホルト・ウィンタース三重指数フィルタが、現在のスタックセグメント情報項目の傾向属性の値である季節的傾向情報項目に適用される。ブロック408においては、Nステップ(この場合、Nは1,2,…)の予測が計算される。ブロック410においては、予測の正規化残差が計算される。ブロック412においては、通常の残差が指定されたカットオフを上回っているかどうかが判断される。そうであれば、制御が次にブロック414に進められる。そうでない場合、制御はブロック422に進められる。
ブロック414においては、測定されたスレッドまたはスタックセグメントの強度が指定されたマージンよりも大きなマージンだけ予測を上回っているかどうかが判断される。そうであれば、制御が次にブロック416に進められる。そうでない場合、制御はブロック418に進められる。
ブロック416においては、ハイパーテンション状態についての警告が発行される。制御がブロック422に進められる。
ブロック418においては、測定されたスレッドまたはスタックセグメントの強度が指定されたマージンよりも大きなマージンだけ予測を下回っているかどうかが判断される。そうであれば、制御が次にブロック420に進められる。そうでない場合、制御はブロック422に進められる。
ブロック420においては、ハイポテンション状態についての警告が発行される。制御がブロック422に進められる。
ブロック422においては、非季節化された傾向が計算される。ブロック424においては、傾向が季節指数に応じて調整される。ブロック426においては、予測された計画対象期間(time horizon)の信頼レベルが計算される。ブロック428においては、予測された計画対象期間の信頼レベルが指定されたしきい値を上回っているかどうかが判断される。そうであれば、制御が次にブロック430に進められる。そうでなければ、制御がブロック402に進められる。
ブロック430においては、計画対象期間における飽和またはエンドポイント状態についての警告が発行される。制御がブロック402に進められる。
スタックフレームの前または後における分岐点でのスタックセグメントの分割
図5A〜図5Cは、本発明の実施形態に従った、スタックフレームの前または後における分岐点でスタックセグメントを分割するための技術の一例を示すフロー図である。当該技術は、指定されたスタックセグメント情報項目および対応する指定されたスタックフレーム情報項目に対して実行することができる。当該技術は、指定されたスタックフレーム情報項目によって表わされるスタックフレームの前または後に分割を実行するための指示を呼び出すことができる。当該技術は、分割によってもたらされる1対(第1および第2)の新しいスタックセグメント情報項目を生成することができる。まず図5Aを参照すると、ブロック502において、現在のエレメントリストは、指定されたスタックセグメント情報項目のエレメントリスト属性の値に設定される。ブロック504においては、スタックフレーム情報インデックスは、現在のエレメントリストの範囲内における指定されたスタックフレーム情報項目のインデックスに設定される。ブロック506においては、指定されたスタックフレームの前に分割が実行されるよう指示されているかどうかが判断される。そうであれば、制御がブロック508に進められる。そうでない場合、制御はブロック512に進められる。
ブロック508においては、第1のセグメントは、現在のエレメントリストの初めから、スタックフレーム情報インデックスよりも1だけ小さいインデックスを有するエレメントにまでわたる現在のエレメントリストのサブリストに設定される。ブロック510においては、第2のセグメントは、スタックフレーム情報インデックスを有するエレメントから現在のエレメントリストの終わりにまでわたる現在のエレメントリストのサブリストに設定される。制御がブロック516に進められる。
ブロック512においては、第1のセグメントは、現在のエレメントリストの初めからスタックフレーム情報インデックスを有するエレメントにまでわたる現在のエレメントリストのサブリストに設定される。ブロック514においては、第2のセグメントは、スタックフレーム情報インデックスよりも1だけ大きいインデックスを有するエレメントから現在のエレメントリストの終わりにまでわたる現在のエレメントリストのサブリストに設定される。制御がブロック516に進められる。
ブロック516においては、新しい先行処理スタックセグメント情報項目が作成される。ブロック518においては、新しい先行処理スタックセグメント情報項目のエレメントリスト属性は第1のセグメントに設定される。ブロック520においては、第1のセグメントにおける先行処理スタックフレーム情報項目ごとに、先行処理スタックフレーム情報項目の一体化セグメント属性が、新しい先行処理スタックセグメント情報項目に設定される。その一体化セグメント属性の値が、分割されている指定されたスタックセグメント情報項目にそのときまで等しくなかった場合、例外とすることができる。制御が図5Bのブロック522に進められる。
ここで図5Bを参照すると、ブロック522においては、新しい後続処理スタックセグメント情報項目が作成される。ブロック524においては、新しい後続処理スタックセグメント情報項目のエレメントリスト属性が、第2のセグメントに設定される。ブロック526においては、第2のセグメントにおける後続処理スタックフレーム情報項目ごとに、後続処理スタックフレーム情報項目の一体化セグメント属性が、新しい後続処理スタックセグメント情報項目に設定される。その一体化セグメント属性の値が、分割されている指定されたスタックセグメント情報項目にそのときまで等しくなかった場合、例外とすることができる。
ブロック528においては、分割されている指定されたスタックセグメント情報項目の先行処理リスト属性におけるエレメントのすべてが、先行処理スタックセグメント情報項目の先行処理リスト属性に追加される。ブロック530においては、後続処理スタックセグメント情報項目が、先行処理スタックセグメント情報項目の後続処理リスト属性に追加される。ブロック532においては、先行処理スタック情報項目が、後続処理スタックセグメント情報項目の先行処理リスト属性に追加される。ブロック534においては、分割されている指定されたスタックセグメント情報項目の後続処理リスト属性におけるエレメントのすべてが、後続処理スタックセグメント情報項目の後続処理リスト属性に追加される。
ブロック536においては、季節的傾向情報項目は、分割されている指定されたスタックセグメント情報項目の季節的傾向情報属性のクローンに設定される。ブロック538においては、先行処理スタックセグメント情報項目の傾向属性は、季節的傾向情報項目のクローンに設定される。ブロック540においては、後続処理スタックセグメント情報項目の傾向属性は、季節的傾向情報項目に設定される。制御が図5Cのブロック542に進められる。
ここで図5Cを参照すると、ブロック542においては、先行処理スタックセグメント情報項目の発生回数属性は、分割されている指定されたスタックセグメント情報項目の発生回数属性の値に設定される。先行処理スタックセグメント情報項目の合計発生回数属性は、分割されている指定されたスタックセグメント情報項目の合計発生回数属性の値に設定される。ブロック544においては、後続処理スタックセグメント情報項目の発生回数属性は、分割されている指定されたスタックセグメント情報項目の発生回数属性の値に設定される。後続処理スタックセグメント情報項目の合計発生回数属性はまた、分割されている指定されたスタックセグメント情報項目の合計発生回数属性の値に設定され得る。
ブロック546においては、指定されたスタックセグメント情報項目の第1のセグメント属性は、先行処理スタックセグメント情報項目に設定される。ブロック548においては、指定されたスタックセグメント情報項目の第2のセグメント属性は、後続処理スタックセグメント情報項目に設定される。ブロック550においては、先行処理スタック情報項目の一体化セグメント属性は、指定されたスタックセグメント情報項目に設定される。ブロック552においては、後続処理スタック情報項目の一体化セグメント属性は、指定されたスタックセグメント情報項目に設定される。ブロック554においては、先行処理スタックセグメント情報項目および後続処理スタック情報項目が、分割によって生成される新しい第1および第2のスタックセグメント情報項目として生成されていれば、当該技術が終了する。
スレッドのスタックセグメントの一体化
図6A〜図6Eは、本発明の実施形態に従った、スレッドのスタックセグメントを一体化するための技術の一例を示すフロー図である。当該技術は、指定されたファイングレインセグメントリストに対して実行することができる。当該技術は、一体化されたセグメントのセットを生成することができる。まず図6Aを参照すると、ブロック602においては、セグメント情報項目の空の一体化されたセグメントリストが作成される。ブロック604においては、現在のインデックスの値は、指定されたファイングレインセグメントリストのサイズよりも1だけ小さいものに設定される。ブロック606においては、最後のセグメントは、指定されたファイングレインセグメントリストにおける現在のインデックスを有するセグメントに設定される。ブロック608においては、現在のインデックスの値がデクリメントされる。ブロック610においては、現在のインデックスが0未満であるかどうかが判断される。そうであれば、制御が次にブロック692に進められる。そうでない場合、制御はブロック612に進められる。
ブロック612においては、先行処理セグメントは、指定されたファイングレインセグメントリストにおける現在のインデックスを有するセグメントに設定される。ブロック614においては、最後のセグメントが先行処理セグメントと一体化されるかどうかを示すフラグは、真に設定される。ブロック616においては、最後のセグメントおよび先行処理セグメントの両方が再帰セグメントであるかどうかが判断される。そうであれば、先行処理再帰セグメントの分類属性が最後の再帰セグメントの分類属性と同じであるかどうかが比較される。再帰セグメントの分類属性はブロック634および670において参照される。一実施形態においては、この判断は、最後のセグメントおよび先行処理セグメントの両方が再帰セグメント情報クラスのインスタンスであるかどうかを判断することによって達成される。両方のセグメントが再帰セグメントであれば、先行処理再帰セグメントの分類属性を最後の再帰セグメントの分類属性と比較する。両方の属性値が同じであれば、制御がブロック618に進められる。そうでなければ、制御は図6Bのブロック620に進められる。
ブロック618においては、最後のセグメントの再帰回数属性の値を、先行処理セグメントの再帰回数属性の値だけ増大させる。制御が図6Cのブロック646に進められる。
ここで図6Bを参照すると、ブロック620においては、最後のセグメントが再帰セグメントであるかどうかと、先行処理セグメントがスタックセグメントであるかどうかとが判断される。そうであれば、次に、最後の再帰セグメントの分類属性を先行処理セグメントの値と比較する。再帰セグメントの分類属性は、図6Bのブロック634および図6Dのブロック670において参照される。最後のセグメントの分類属性の値が先行処理セグメントの値と同じである場合、制御がブロック622に進められる。そうでない場合、制御はブロック624に進められる。
ブロック622においては、最後のセグメントの再帰回数属性の値がインクリメントされる。制御が図6Cのブロック646に進められる。
ブロック624においては、先行処理セグメントが再帰セグメントであるかどうかと、最後のセグメントがスタックセグメントであるかどうかとが判断される。そうであれば、次いで、先行処理再帰セグメントの分類属性を最後のセグメントの値と比較する。再帰セグメントの分類属性が、図6Bのブロック634および図6Dのブロック670において参照される。先行処理セグメントの分類属性の値が最後のセグメントの値と同じである場合、制御がブロック626に進められる。そうでない場合、制御はブロック630に進められる。
ブロック626においては、最後のセグメントは先行処理セグメントに設定される。ブロック628においては、最後のセグメントの再帰回数属性の値がインクリメントされる。制御が図6Cのブロック646に進められる。
ブロック630においては、先行処理セグメントが最後のセグメントに等しいかどうかが判断される。そうであれば、制御が次にブロック632に進められる。そうでなければ、制御が図6Cのブロック640に進められる。
ブロック632においては、新しい再帰セグメント情報項目が作成される。ブロック634においては、新しい再帰セグメント情報項目の分類属性は、最後のセグメントに設定される。いくつかの実施形態においては、この分類属性は、2つの隣接する再帰セグメントが分類属性によって示される同じセグメントの再帰を表わすかどうかについての判断の一環としてチェックすることができ、結果として、隣接する再帰セグメントは、図6Aのブロック616および図6Bのブロック620および624において参照されるように、1つの再帰セグメントに一体化することができる。ブロック636においては、新しい再帰セグメント情報項目の再帰回数属性の値が2に設定される。ブロック638においては、最後のセグメントが、新しい再帰セグメント情報項目に設定される。制御が図6Cのブロック646に進められる。
ここで図6Cを参照すると、ブロック640においては、最後のセグメントおよび先行処理セグメントを一体化することができるかどうかが判断される。一実施形態においては、以下の(1)から(4)のすべてが真であれば、最後のセグメントおよび先行処理セグメントを一体化することができる。(1)各々の一体化セグメント属性の値が同じである;(2)各々の一体化セグメント属性の値が非ヌルである;(3)先行処理セグメントの一体化セグメント属性の第1のセグメント属性の値が先行処理セグメントである;および(4)最後のセグメントの一体化セグメント属性の第2のセグメント属性の値が最後のセグメントである。ある実施形態においては、2つの隣接するセグメントは、それらが図5Cのブロック546、548、550および552によって同じ一体化セグメントから分割されている場合、一体化することができる。言いかえれば、上述の条件(1)および(2)では、ブロック552および554の効果をテストし、条件(3)では、ブロック546の効果をテストし、条件(4)では、ブロック548の効果をテストする。最後のセグメントおよび先行処理セグメントを一体化することができれば、制御がブロック642に進められる。そうでない場合、制御はブロック644に進められる。
ブロック642においては、最後のセグメントは、最後のセグメントの一体化セグメント属性に設定される。制御がブロック646に進められる。
ブロック644においては、最後のセグメントが先行処理セグメントと一体化されるかどうかを示す(ブロック614において参照された)フラグが偽に設定される。制御がブロック646に進められる。
ブロック646においては、最後のセグメントが先行処理セグメントと一体化されているかどうかを示す(ブロック614において参照された)フラグが真であるかどうかが判断される。そうであれば、制御がブロック648に進められる。そうでなければ、制御は図6Eのブロック688に進められる。
ブロック648においては、後続処理セグメントは、(ブロック602において参照された)一体化されたセグメントリストにおける最後のセグメントの後続処理に設定される。ブロック650においては、最後のセグメントが後続処理セグメントと一体化されているかどうか示すフラグが真に設定される。ブロック652においては、最後のセグメントおよび後続処理セグメントがともに再帰セグメントであるかどうかが判断される。そうであれば、次いで、後続処理再帰セグメントの分類属性が最後の再帰セグメントの分類属性と同じであるかどうかを比較する。再帰セグメントの分類属性がブロック634および670において参照される。そうであれば、制御がブロック654に進められる。そうでなければ、制御が図6Dのブロック656に進められる。
ブロック654においては、最後のセグメントの再帰回数属性の値を、後続処理セグメントの再帰回数属性の値だけ増大させる。制御が図6Eのブロック682に進められる。
ここで図6Dを参照すると、ブロック656においては、最後のセグメントが再帰セグメントであるかどうかと、後続処理セグメントがスタックセグメントであるかどうかとが判断される。そうであれば、次いで、最後の再帰セグメントの分類属性を後続処理セグメントの値と比較する。再帰セグメントの分類属性は、図6Bのブロック634および図6Dのブロック670において参照される。最後のセグメントの分類属性の値が後続処理セグメントの値と同じである場合、制御はブロック658に進められる。そうでない場合、制御はブロック660に進められる。
ブロック658においては、最後のセグメントの再帰回数属性の値がインクリメントされる。制御が図6Eのブロック682に進められる。
ブロック660においては、後続処理セグメントが再帰セグメントであるかどうかと、最後のセグメントがスタックセグメントであるかどうかとが判断される。そうであれば、次いで、後続処理再帰セグメントの分類属性を最後のセグメントの値と比較する。再帰セグメントの分類属性は、図6Bのブロック634および図6Dのブロック670において参照される。後続処理セグメントの分類属性の値が最後のセグメントの値と同じである場合、制御がブロック662に進められる。そうでない場合、制御がブロック666に進められる。
ブロック662においては、最後のセグメントは後続処理セグメントに設定される。ブロック664においては、最後のセグメントの再帰回数属性の値がインクリメントされる。制御が図6Eのブロック682に進められる。
ブロック666においては、後続処理セグメントが最後のセグメントに等しいかどうかが判断される。そうであれば、制御がブロック668に進められる。そうでなければ、制御は図6Eのブロック676に進められる。
ブロック668においては、新しい再帰セグメント情報項目が作成される。ブロック670においては、新しい再帰セグメント情報項目の分類属性は、最後のセグメントに設定される。いくつかの実施形態においては、この分類属性は、2つの隣接する再帰セグメントが分類属性によって示されるのと同じセグメントの再帰を表わすかどうかを判断する一環としてチェックすることができ、結果として、図6Aのブロック616および図6Bのブロック620および624において参照されるように、隣接する再帰セグメントは1つの再帰セグメントに一体化することができる。ブロック672においては、新しい再帰セグメント情報項目の再帰回数属性の値が2に設定される。ブロック674においては、最後のセグメントは、新しい再帰セグメント情報項目に設定される。制御は、図6Eのブロック682に進められる。
ここで図6Eを参照すると、ブロック676においては、最後のセグメントおよび後続処理セグメントを一体化することができるかどうかが判断される。一実施形態においては、以下の(1)から(4)のすべてが真であれば、最後のセグメントおよび後続処理セグメントを一体化することができる。(1)各々の一体化セグメント属性の値が同じである;(2)各々の一体化セグメント属性の値が非ヌルである;(3)最後のセグメントの一体化セグメント属性の第1のセグメント属性の値が最後のセグメントである;および(4)後続処理セグメントの一体化セグメント属性の第2のセグメント属性の値が後続処理セグメントである。ある実施形態においては、2つの隣接するセグメントは、これらが図5Cのブロック546、548、550および552よって同じ一体化セグメントから分割されている場合、一体化することができる。言いかえれば、上述の条件(1)および(2)では、ブロック552および554の効果をテストし、条件(3)では、ブロック546の効果をテストし、条件(4)では、ブロック548の効果をテストする。最後のセグメントおよび後続処理セグメントを一体化することができれば、制御がさらにブロック678に進められる。そうでない場合、制御はブロック680に進められる。
ブロック678においては、最後のセグメントは、最後のセグメントの一体化セグメント属性の値に設定される。制御が図6Eのブロック682に進められる。
ブロック680においては、最後のセグメントが後続処理セグメントと一体化されるかどうか示す(ブロック650において参照された)フラグが偽に設定される。制御がブロック682に進められる。
ブロック682においては、最後のセグメントが後続処理セグメントと一体化されるかどうかを示す(ブロック650において参照された)フラグが真であるかどうかが判断される。そうであれば、制御がブロック684に進められる。そうでない場合、制御はブロック690に進められる。
ブロック684においては、後続処理セグメントが(ブロック602において参照された)一体化されたセグメントリストから除去される。ブロック686においては、後続処理セグメントは、一体化されたセグメントリストにおける最後のセグメントの後続処理に設定される。制御がブロック690に進められる。
ブロック688においては、最後のセグメントが(ブロック602において参照された)一体化されたセグメントリストの初めに追加される。制御がブロック690に進められる。
ブロック690においては、現在のインデックスの値がデクリメントされる。制御が図6Aのブロック610に進められる。
再び図6Aを参照すると、ブロック692においては、最後のセグメントが(ブロック602において参照された)一体化されたセグメントリストの一番下に追加される。ブロック694においては、一体化されたセグメントのセットが一体化されたセグメントリストの形で生成されていれば、当該技術が終了する。
スタックトレースおよびスレッドの一体化されたセグメントについてのスレッド分類シグネチャの登録
図7Aおよび図7Bは、本発明の実施形態に従った、指定されたスタックトレースおよび一体化されたセグメントの指定されたセットについてのスレッド分類項目を登録するための技術の一例を示すフロー図である。当該技術は、指定されたスタックトレースおよび一体化されたセグメントの指定されたセットに対して実行することができる。当該技術ではスレッド分類情報項目を生成することができる。まず図7Aを参照すると、ブロック702において、スタックフレームの数が、指定されたスタックトレースのサイズに設定される。ブロック704においては、一体化されたセグメントの数は、一体化されたセグメントの指定されたセットのサイズに設定される。ブロック706においては、指定されたスタックトレースに対応するスレッドを表わすためにスレッド分類情報項目が登録されたかどうかを示すフラグが偽に設定される。ブロック708においては、いずれかの未処理の登録されたスレッド分類情報項目がスレッド分類情報マップに残っているかどうかが判断される。そうであれば、制御がブロック710に進められる。そうでなければ、制御は図7Bのブロック720に進められる。
ブロック710においては、現在の登録されたスレッド分類情報項目は、スレッド分類情報マップにおける次の未処理の登録されたスレッド分類情報項目に設定される。ブロック712においては、(1)スタックフレームの数が現在の登録されたスレッド分類情報項目のスタックフレーム属性の数に等しいかどうかと、(2)一体化されたセグメントの数が、現在の登録されたスレッド分類情報項目の一体化されたセグメント属性の数に等しいかどうかとが判断される。そうであれば、制御がブロック714に進められる。そうでなければ、制御は図7Bのブロック720に進められる。
ブロック714においては、インデックス値ごとに、そのインデックス値を有する一体化されたセグメントのセグメントが、現在の登録されたスレッド分類情報項目におけるそのインデックス値を有するセグメント属性に等しいかどうかが判断される。そうであれば、制御がブロック716に進められる。そうでなければ、制御はブロック708に戻される。
ブロック716においては、スレッド分類情報項目は、現在の登録されたスレッド分類情報項目に設定される。ブロック718においては、指定されたスタックトレースに対応するスレッドを表わすためにスレッド分類情報項目が登録されたかどうかを示す(ブロック706において参照された)フラグが真に設定される。制御がブロック720に進められる。
ここで図7Bを参照すると、ブロック720においては、指定されたスタックトレースに対応するスレッドを表わすためにスレッド分類情報項目が登録されたかどうか示す(ブロック706において参照された)フラグが真であるかどうかが判断される。そうであれば、制御がブロック734に進められる。そうでない場合、制御はブロック722に進められる。
ブロック722においては、新しいスレッド分類情報項目が作成される。ブロック724においては、新しいスレッド分類情報項目のセグメント属性が、一体化されたセグメントの指定されたセットに設定される。ブロック726においては、新しいスレッド分類情報項目の傾向属性が新しい季節的傾向情報項目に設定される。ブロック728においては、新しいスレッド分類情報項目のスタックフレーム数の属性は、スタックフレームの数に設定される。ブロック730においては、新しいスレッド分類情報項目の一体化されたセグメント数の属性は、一体化されたセグメントの数に設定される。ブロック732においては、新しいスレッド分類情報項目がスレッド分類情報マップに追加される。この追加により、指定されたスタックトレースに対応するスレッドによって表わされるスレッドの同等クラスについてのシグネチャを表わすために、新しいスレッド分類情報項目が登録される。制御がブロック734に進められる。
ブロック734においては、スレッド分類情報項目が生成されていれば、当該技術は終了する。
スタック分類統計の更新
図8は、本発明の実施形態に従った、指定されたスレッド分類情報項目についてのスレッド分類統計を更新するための技術の一例を示すフロー図である。当該技術は、指定されたスレッド分類情報項目に対して実行することができる。ブロック802においては、指定されたスレッド分類情報項目の発生回数属性の値がインクリメントされる。指定されたスレッド分類情報項目の合計発生回数属性の値もインクリメントすることができる。ブロック804においては、いずれかの未処理のセグメント情報項目が指定されたスレッド分類情報項目に残っているかどうかが判断される。そうであれば、制御が次にブロック806に進められる。そうでなければ、当該技術は終了する。
ブロック806においては、現在のセグメント情報項目は、指定されたスレッド分類情報項目における次の未処理のセグメント情報項目に設定される。ブロック808においては、現在のセグメント情報項目についてのスタックセグメント統計が更新される。指定されたセグメント情報項目についてのスタックセグメント統計を更新するための技術が、図9に関連付けて以下に開示される。制御がブロック804に戻される。
スタックセグメント統計の更新
図9は、本発明の実施形態に従った、指定されたセグメント情報項目についてのスタックセグメント統計を更新するための技術の一例を示すフロー図である。当該技術は、指定されたセグメント情報項目に対して実行することができる。ブロック902においては、指定されたセグメント情報項目の発生回数属性の値がインクリメントされる。指定されたセグメント情報項目の合計発生回数属性の値もインクリメントすることができる。ブロック904においては、いずれかの未処理のセグメント情報項目が指定されたセグメント情報項目に残っているかどうかが判断される。そうであれば、制御が次にブロック906に進められる。そうでなければ、当該技術が終了する。
ブロック906においては、現在のセグメント情報項目は、指定されたセグメント情報項目における次の未処理のセグメント情報項目に設定される。ブロック908においては、現在のセグメント情報項目についてのスタックセグメント統計が図9のこの技術を用いて更新される。制御がブロック904に進められる。
Javaヒープサイズ、スレッド強度およびスタックセグメント強度測定値に基づいた季節的傾向把握および予測
JAVAプラットフォームサービスのためのクラウド制御システムは、傾向を推定し、かつメモリ容量要件を予測するために、JAVAヒープ割当てについての時系列データを監視することができる。季節的傾向を検出し、メモリ容量要件を予測することによって、システムは、リソース割当ての融通性を可能にするように、共有されるシステムメモリを動的にJVM間で再割当てることができる。容量要件の予測は、JAVAヒープ成長率の推定を含む。Javaヒープ割当ては、不規則な時間間隔で実行されるフルガーベッジコレクションサイクルによって測定される。JAVAヒープ成長率の推定は、断続的に任意に0付近になる不規則な時間間隔によって複雑になる、ランダム時間間隔による分割を含む。成長率測定中のノイズは2つのガウス分布の比であって、これがコーシー分布をもたらしてフィルタリングを困難にしてしまう可能性がある。コーシー分布の平均および標準偏差は規定されていないが、これは、多数のデータポイントにより、単一のデータポイントの場合よりも正確に平均および標準偏差が推定されるわけではないからである。サンプルのプールを増加させることにより、時間近接間隔による分割に対応する大きな絶対値を有するサンプルポイントに遭遇する可能性が高くなるかもしれない。フルガーベッジコレクションサイクルが不規則なために不規則になってしまうサンプリング間隔を有するJAVAヒープサイズ測定とは異なり、スレッドまたはスタックセグメントの強度測定値は、時間近接間隔を回避するために一定間隔でサンプリングすることができる。そうであっても、JAVAヒープ割当ての傾向把握のためのこの明細書中に記載された同じ技術は、スレッドおよびスタックセグメントの強度測定値についての季節的傾向把握および予測に適用することができる。当該技術は、スレッドのCPUスケジューリングおよびフルGCサイクルの干渉により可変レイテンシに合わせて調整することができる。これにより、サンプリングスレッドのレイテンシに付加的なばらつきが加わる。当該技術はまた、スタックセグメントを分類するのに必要な可変計算時間により可変サンプリング間隔に合わせて調整することができる。
1957年および1960年に公開されたホルト・ウィンタース三重指数フィルタは、季節的傾向把握および予測のために用いることができる。C.C.ホルト(C.C.Holt)による「指数加重平均による傾向および季節の予測(Forecasting Trends and Seasonal by Exponentially Weighted Averages)」(海軍研究事務所の備忘録(Office of Naval Research Memorandum)、第52号、1957年)がこの明細書中に引用によって援用されている。P.R.ウィンタース(P.R.Winters)による「指数加重移動平均による販売予測(Forecasting Sales by Exponentially Weighted Moving Averages)」(マネジメントサイエンス(Management Science)、第6巻、第3号324頁〜342頁、1960年)が、引用によりこの明細書中に援用されている。ライト(Wright)は、不規則な時間間隔をサポートするために1986年にホルト・ウィンタース法を拡張させた。D.J.ライト(D.J.Wright)による「ホルト法の拡張を用いた不規則な時間間隔で公開されたデータの予測(Forecasting data published at irregular time intervals using an extension of Holt's method)」(マネジメントサイエンス;第32巻;第4号499頁〜510頁;1986年))が引用によりこの明細書中に援用される。2008年に、ハンザック(Hanzak)が時間近接間隔のための調整因子を提案した。T.Hanzakは、「不規則な時系列のためのホルト法の改善(Improved Holt Method for Irregular Time Series)」(WDS’08議事録(WDS'08 Proceedings)、第1部、62頁〜67頁、2008年)が引用によりこの明細書中に援用される。
時間近接間隔についての調整因子は、率推定の際にランダムな時間近接間隔に起因するノイズの相対強度の上昇分を補償するよう意図されたものであるが、時間間隔がメモリリークまたはデッドロックによって引起こされた輻輳中に単調に減少する場合、不注意に変化推定率を減衰させることができる。フルガーベッジコレクションアルゴリズムのヒープの合計サイズに対する多項式時間複雑性により、結果として、輻輳が悪化するのに応じて、JVM実行時間間隔が短くなり得る。JAVAメモリリークの場合、時間間隔が短くなるのに応じて、実行時間が短くなる可能性があるが、測定時間は長くなる可能性がある。なぜなら、JVMがフルガーベッジコレクションのためにより長く固定され得る(frozen)からである。JVMがフルガーベッジコレクション中に固定される場合、新しい要求をJVMの外部で列に並べることができ、いくらかの部分が他のJVMに再配分され得る。バックログは、後の実行時間中にヒープ使用量の変化率を加速させることができる。一実施形態においては、時間近接間隔のためのHanzakの調整が、JAVAヒープ割当ての傾向把握および予測のために用いられ、加速するヒープ成長率を追跡するために用いられる。
一実施形態においては、指数移動平均を適用して、フルガーベッジコレクションサイクルから時系列データを平滑化することにより、成長率、成長率の加速、季節的傾向、予測の誤差残差および予測の絶対偏差を推定して、JAVAメモリヒープ割当てのアウトライア検出および予測を可能にし得る。本発明の実施形態は、輻輳による成長率の加速を追跡することができる。この明細書中に開示される新しい調整因子は、測定時間が長くなると、より多くの重みをより新しいサンプルポイントに与える。これらの調整因子は、測定時間が無視できる些細な定数であり、時間間隔がほとんど実行時間に含まれる場合、Hanzakの調整因子に変換することができる。本発明の実施形態は、数値安定性のために、すなわち、倍精度浮動小数点表現のアンダフローを回避するために、時間の適応的スケーリングを含み得る。時間間隔は、平均時間間隔が1付近にまでスケーリングされるように、比例的に適応的にスケーリングされ得る。推定は、さまざまな時間スケールで実行される3つ以上の独立したフィルタによって並列に追跡することができる。時間スケールに応じて、これらの平行なフィルタは、季節的傾向、長期的な容量需要、短期のエンドポイント(メモリー不足誤差)などを予測するための複数のポリシーとしての役割を果たすことができる。本発明の実施形態は、季節指標化のための改善された方法を利用して、隣接するインデックスの中から、正規化された誤差残差を最小限にする季節指数を選択する。本発明の実施形態は監視制御ループを適用して、(テナント、アプリケーション、ユーザなどの動作特徴を取り込んだ)JVMインスタンスごとに非線形回帰によってモデルを適合させて、さまざまなフィルタパラメータおよび季節因子を推定することができる。本発明の実施形態は、(ホットスポットまたはJRockitが備わったMBeanを用いて)各々のJVMに埋め込まれたフィルタを更新するために監視コントローラからフィルタパラメータおよび季節因子を推進することができる。
本発明の一実施形態においては、ホルト・ウィンタース三重指数フィルタに加えて、第4のおよび第5の指数フィルタを用いて、予測誤差残差の平均および偏差傾向を把握することにより、正規化された誤差残差を計算する。予測誤差残差の平均は、フィルタにおける識別されたモデルのバイアスとして解釈することができる。このようなバイアスは、レベルスパイク、一時的なレベルシフト、永久的なレベルシフトまたはレベルドリフトの存在を示し得る。予測誤差残差のずれは、時系列データにおける分散変動を示し得る。一実施形態においては、分散変動の大きさにより、アウトライアを検出するためのフィルタの許容差が生じる可能性がある。測定値は、その予測誤差残差が予測誤差残留偏差の移動平均の百分率よりも大きい場合には、アウトライアとして検出される。概念的には、アウトライアは、フィルタにおいて識別された傾向モデルによって説明されない測定値であり、このため、アウトライアのクラスタは、何らかの外部からの原因によってのみ説明することができる異常を示すことができる。本発明の実施形態は、測定値における分散変動に応じたアウトライア検出のためにフィルタの許容差を適合させる。この技術は、高い分散変動がシステムに残存したときにアウトライアラートの数を減らすことによって、アラートによる疲労を減少させる。
本発明の一実施形態においては、ホルト・ウィンタース三重指数フィルタは、JVMメモリ割当て時の融通性を効率的に達成するためにJVMヒープ使用量を季節に応じて傾向を把握し、かつ予測するために適用することができる。標準的なホルト・ウィンタース三重指数フィルタは、規則的な時系列からの予測を要求するために適用することができるものであって、特に、時間近接間隔が不規則であるランダムな時間間隔で機能するよう調整することができる。本発明の実施形態は、JAVAヒープ割当ての傾向把握および予測のために、不規則な時間間隔に対してライトの方法と、時間近接間隔に対してHanzak調整とを適用することができる。JVMフルガーベッジコレクションにおいて見出されるランダムな時間間隔に適したフィルタの構造の非自明的な選択を実行することができる。ホルト・ウィンタース・ライト・ハンザックフィルタの構造は、JVMフルガーベッジコレクションサイクルによって生成される時系列と一致させるように、系統的に適合させるための第1の原則から導き出すことができる。JVMメモリ使用量傾向を予測するのに有用なフィルタの拡張を非自明的に選択することができる。選択された拡張は、たとえば、(輻輳を追跡するために)成長率の加速をフィルタリングするための拡張と、(不規則な時間間隔が季節に対して何らかの相関関係を有するので)さまざまな時間スケールで並列に実行するための拡張と、(ソフト参照によってもたらされる不連続性に反応させるために用いることができる)正規化された誤差残差を最小限にすることによって(ファジイ論理に類似した)季節指数を選択するための拡張と、を含み得る。本発明の実施形態は、埋込まれたフィルタを調整するためにパラメータ推定用の非線形回帰を適用する非自明的な監視コントローラおよびフレームワークを用いて、組込まれたシステムを補完および増強することができる。
季節的傾向把握、予報、異常検出およびエンドポイント予測についてこの明細書中に記載された技術は、上述のCARE制御フレームワークなどの既存の監視制御フレームワークに追加することができる。監視コントローラによるモデル識別は、アウトライアを検出するためにベースラインを提供することができる。アウトライアのクラスタは、システムにおける異常を示すことができる。これらの異常のうちのいくつかは、システム障害および機能停止についての主要なインデックスを表わし得る。重大な異常が検出されるかまたはプロセスエンドポイントが予測されると、システムは、アプリケーション、構成およびシステムグリッチのデバッグを支援するために、スレッドダンプおよびヒープダンプを含む自動診断リポジトリ(ADR:automatic diagnostic repository)インシデントレポートを生成することができる。システムはまた、エンタープライズ・マネージャ(EM:enterprise manager)クラウド制御に重大な警告を報告することができる。
一実施形態においては、指数移動平均のための公式は、メモリヒープ使用量およびスレッドまたはスタックセグメントの強度などのリソース利用基準を監視および予測するために、時系列データ、局所線形傾向、季節的傾向、予測の誤差残差、および予測の絶対偏差を平滑化するために適用される。一実施形態においては、公式は、1956年に提案されたブラウン(Brown)の指数フィルタ、1957年に提案されたホルトの二重指数フィルタ、1960年に提案されたウィンタースの三重指数フィルタ、1986年に提案されたライトによる不規則な時間間隔のための拡張、2008年に提案されたハンザックによる時間近接間隔のための調整因子、ならびに、アウトライア検出およびクリッピングに基づいてもよい。以下の刊行物が引用によりこの明細書中に含まれる:アール・ジー・ブラウン(R.G.Brown)による「需要を予測するための指数平滑化(Exponential Smoothing for Predicting Demand)」(ケンブリッジ(Cambridge)、Arthur D. Little Inc.(1956年;15頁);シー・シー・ホルト(C.C.Holt)による「指数加重平均による傾向および季節の予測(Forecasting Trends and Seasonal by Exponentially Weighted Averages)」(海軍研究事務所備忘録、第52号、1957年);P.R.Wintersによる「指数加重移動平均による販売の予測(Forecasting Sales by Exponentially Weighted Moving Averages)」(マネジメントサイエンス、第6巻第3号324頁〜342頁);ディー・ジェイ・ライト(D.J.Wright)による「ホルト法の拡張を用いて不規則な時間間隔で公開される予測データ(Forecasting data published at irregular time intervals using an extension of Holt's method)」(マネジメントサイエンス、第32巻、第4号499頁〜510頁、1986年);T.Hanzakによる「不規則な時系列のための改善されたホルト法(Improved Holt Method for Irregular Time Series)」(WDS’08議事録、第I部、62〜67頁、2008年);ならびに、S.Maung、S.W.ButlerおよびS.A.Henckによる「実際の厚さ測定値に基づいたプロセスエンドポイント予測のための方法および装置(Method and Apparatus for process Endpoint Prediction based on Actual Thickness Measurements)」(米国特許5503707、1996年)。
指数加重移動平均
時系列データは、データポイントの正規化された加重和によって平滑化することができる。この場合、重みは、(自己回帰移動平均モデルにおける)時系列の自己相関、時間間隔の長さおよび他の因子に応じて適切に選択されている。
Figure 0006577455
Figure 0006577455
上述の式は、規則的な時間間隔のためにデータ列の正規化された指数加重和(exponentially weighted sum)を与える。パラメータαは正規化因子であって、n→∞とする:
Figure 0006577455
この列は、連続形式で等しく表わされる:
Figure 0006577455
これは、正規化された指数加重和に等しい連続的な形式を再帰的に拡張することによって示すことができる:
Figure 0006577455
WRIGHTによる不規則な時間間隔のための拡張
(上述の)Wrightは、不規則な時間間隔のために正規化された指数加重和についての式を拡張させた:
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
以下が見いだされ得る。
Figure 0006577455
したがって、以下のとおりである。
Figure 0006577455
連続式が以下のとおり得られる:
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
以下の式が見いだされ得る。
Figure 0006577455
したがって、以下のとおり連続式を得ることができる:
Figure 0006577455
Figure 0006577455
Figure 0006577455
したがって、以下のとおり連続式が得られる:
Figure 0006577455
時間間隔が平均時間間隔qで固定される場合、連続式は固定点に集中する:
Figure 0006577455
シーケンスの固定点は、以下のとおりである:
Figure 0006577455
Figure 0006577455
固定点uは初期値として用いることができる:
Figure 0006577455
時間近接間隔のためのハンザックの調整因子
Figure 0006577455
以下の列を拡張させる。
Figure 0006577455
Figure 0006577455
連続式を以下のとおり得ることができる:
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
同様に、以下の列を拡張させる。
Figure 0006577455
連続式が以下のとおり得られる:
Figure 0006577455
Figure 0006577455
Figure 0006577455
したがって、連続式が以下のとおり得られる:
Figure 0006577455
Figure 0006577455
平均時間間隔qが1付近にスケーリングされている初期値が用いられる:
Figure 0006577455
測定時間および実行時間間隔のための調整因子
Figure 0006577455
ヒープ割当てアクティビティが固定されている場合にプロセスが測定時間間隔を除外すると想定される場合、ヒープ使用量基準の変化率は以下のとおり規定されていてもよい。すなわち、分母は測定時間を除いたプロセス実行時間間隔である:
Figure 0006577455
Figure 0006577455
(コーシー分布を回避する)レートフィルタにおける調整因子の使用
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
Wrightによる不規則な時間間隔のための拡張は、単独では、場合によっては、周期的パターンを検出するには十分でないかもしれない。Hanzakによる時間近接間隔のための調整因子は、不規則な時間間隔によって引き起こされるノイズをガウス雑音レベルにまで低減させるために用いることができる。アウトライアのクリッピングは、さらに、単一(成長率のみ)または二重(成長率および加速)フィルタの性能を向上させる。
調整因子
時間近接間隔のための調整因子は、率推定の際にランダムな時間近接間隔に起因するノイズのより高い相対強度を補償するよう意図されたものであって、時間間隔がメモリリークまたはデッドロックによって引き起こされる輻輳中に単調に減少する場合に、意図せずに変化率推定値を減衰させることができる。メモリリークの場合、時間間隔が減少するのに応じて、実行時間が減少するが、測定時間は増大する。なぜなら、JAVA仮想マシン(JVM)がフルガーベッジコレクション(GC)のためにより長く固定されるからである。JVMがフルGC中に固定される場合、(いくつかの部分が他のJVMに再分配されている)JVMの外部で新しい要求を列に並べる。バックログは、後続の実行時間中にヒープ使用量の変化率を加速させることができる。
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
測定時間が単調に減少している場合、以下の調整因子を用いることができる:
Figure 0006577455
ホルト法の適用
Figure 0006577455
Figure 0006577455
Figure 0006577455
平滑化された基準
Figure 0006577455
Figure 0006577455
局所線形傾向
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
リソース基準の成長率および加速
二重指数移動平均を、リソース基準の一次導関数および二次導関数に適用して、(メモリリークまたはスレッドデッドロックによる)加速するリソース輻輳を監視することができる。
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
アウトライア検出およびクリッピング
Figure 0006577455
予測されたリソース基準の残余誤差を以下のとおり計算することができる:
Figure 0006577455
Figure 0006577455
正規化残差が以下のとおり与えられる。
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
これらの条件は以下のように要約される:
Figure 0006577455
Figure 0006577455
Figure 0006577455
バイアスはレベル変化を表わす。バイアスの短期間のスパイクまたはディップは永続的なレベルシフトを表わす。連続的にスパイクおよびディップが起こるバイアスはレベルスパイクまたは一時的なレベルシフトを表わす。永続的な負バイアスは上方へのレベルドリフトを表わし、永続的な正バイアスは下方へのレベルドリフトを表わす。永続的な大きな絶対偏差は高い分散変動を表わす。バイアス、(1シグマおよび2シグマを表わす)絶対偏差ならびにアウトライアは、シューハート(Sewhart)管理図としてプロットすることができる。永続的なレベルドリフト、高い分散変動およびアウトライアのクラスタは、シューハート管理図において明確に視認することができ、単純なルールベースの分類スキームによって検出することができるものであるが、通常、システムにおける異常を表わしている。異常を識別して目立たせることによって、より高レベルの分類および査定スキームによる診断ができるようになる。
季節的傾向
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
第二に、各々の季節指数についての日ごとの平均でサンプル平均を割る。
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
多変数回帰
h−ステップ予測の平均二乗誤差(MSE:mean square error)残差および平均絶対偏差(MAD:mean absolute deviation)は、所望の時系列xについての独立変数α、β、κ、γ、δ、およびtzの関数として規定することができる。パラメータtz、−12<tz<12は、東海岸標準時(EST:east coast standard time)からオフセットされたタイムゾーンである。タイムゾーンオフセットによる変更の後、週末の始まりは、土曜の午前12時に対応し、週末の終わりは月曜の午前12時に対応するものとする。複数のタイムゾーンにわたる平日アクティビティのピークと底とが重なり、週末中頃のレベルを週末期に集中させる必要がある場合、タイムゾーンオフセットを最適化することができる。
非線形の多変数回帰を適用することにより、連続する9日間以上にわたるデータに関するMSEまたはMADを最小限にする値α、β、κ、γ、δ、およびtzを決定することができる。
Figure 0006577455
すべての式においては、タイムスタンプはtzオフセットによってシフトされ、比例的にスケーリングされる。スケーリング因子は、平均時間間隔qが1付近にスケーリングされるように決定される。
Figure 0006577455
単純な拡張型ホルト・ウィンタース季節フィルタ
Figure 0006577455
Figure 0006577455
観察された基準についての(先の段落において導き出されたような)第1の指数移動平均について設定された式は以下のとおり与えられる。
Figure 0006577455
Figure 0006577455
時間tがスケーリング前にオフセットされたtzだけシフトされることに留意されたい。仮にtが土曜午前12時と月曜午前12時との間にあれば、週末の式が用いられる。
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
週末の季節因子および平日の季節因子についての第3の指数移動平均のために設定された式は以下のとおりである。
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
正規化残差がQよりも大きい場合、アウトライアを検出するための式は以下のとおりである:
Figure 0006577455
Figure 0006577455
サンプルがアウトライアである場合、時間が週末の範囲内に収まるかまたは平日の範囲内に収まるかどうかに応じて、以下の式のうち1つを用いて平均を更新するために、アウトライア値の代わりに、クリッピングされた値が用いられるべきである:
Figure 0006577455
基準の変化の加速を含む拡張型ホルト・ウィンタース季節フィルタ
メモリリークおよびデッドロックなどの輻輳監視のために、(先の段落で導き出された)以下の式のセットを用いることができる。
残余誤差列は以下のとおりである。
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
生の基準は成長率(一次導関数)である:
Figure 0006577455
測定された成長率についての第1の指数移動平均のために設定された式は、季節的傾向付け因子に依存する。季節的傾向が付与されていない元の式は、以下のとおりである:
Figure 0006577455
(週末および平日のための)2つの季節的傾向が導入される場合、季節tn−1およびtのうちどちらが範囲内に収まるのかに応じて、非季節化された測定値を用いることができる。
Figure 0006577455
非季節化された生の成長率が以下によって与えられる:
Figure 0006577455
Figure 0006577455
フィルタパラメータは以下の式によって調整される:
Figure 0006577455
季節的傾向把握が用いられない場合、平滑化された成長率の初期値は、以下のとおりである:
Figure 0006577455
Figure 0006577455
成長率の加速についての第2の指数移動平均のために設定された式は、以下のとおりである:
Figure 0006577455
季節的傾向把握が用いられない場合、平滑化された成長加速の初期値は以下のとおりである:
Figure 0006577455
Figure 0006577455
変化率の線形傾向に基づいた非季節化された予測変化率は以下のとおりである:
Figure 0006577455
週末の季節因子および平日の季節因子についての第3の指数移動平均のために設定された式は以下のとおりである。
季節の乗法的因子は週末に更新される:
Figure 0006577455
季節の乗法的因子は平日に更新される:
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
Figure 0006577455
季節的傾向把握が用いられる場合、時間が週末の範囲内に収まるかどうかまたは平日の範囲内に収まるかどうかに応じて、以下の式のうちの1つを用いる:
Figure 0006577455
Figure 0006577455
Figure 0006577455
ハードウェア概要
図10は、この発明の一実施形態に従って使用され得るシステム環境1000のコンポーネントを示す簡略化されたブロック図である。図示されているように、システム環境1000は1つ以上のクライアントコンピューティング装置1002、1004、1006、1008を含み、それらは、ネイティブクライアントアプリケーションを含むクライアントアプリケーションや、場合によってはウェブブラウザなどの他のアプリケーションを動作させるように構成されている。さまざまな実施形態では、クライアントコンピューティング装置1002、1004、1006および1008は、サーバ1012とやり取りしてもよい。
クライアントコンピューティング装置1002、1004、1006、1008は、汎用パーソナルコンピュータ(たとえば、マイクロソフトウィンドウズ(登録商標)および/またはアップルマッキントッシュ(登録商標)オペレーティングシステムのさまざまなバージョンを作動させるパーソナルコンピュータおよび/またはラップトップコンピュータを含む)、携帯電話またはPDA(マイクロソフトウィンドウズモバイルなどのソフトウェアを作動させ、インターネット、eメール、SMS、ブラックベリー(登録商標)、または他の通信プロトコルに対応)、および/または、商業的に入手可能なさまざまなUNIX(登録商標)またはUNIX系オペレーティングシステムのうちのいずれかを作動させるワークステーションコンピュータ(さまざまなGNU/Linux(登録商標)オペレーティングシステムを限定なしで含む)であってもよい。また、これに代えて、クライアントコンピューティング装置1002、1004、1006および1008は、ネットワーク(たとえば、以下に説明するネットワーク1010)を通して通信可能な、シンクライアントコンピュータ、インターネット対応ゲームシステム、および/または個人用メッセージング装置といった任意の他の電子装置であってもよい。例示的なシステム環境1000は4つのクライアントコンピューティング装置を有して図示されているが、任意の数のクライアントコンピューティング装置がサポートされてもよい。センサ付き装置などの他の装置が、サーバ1012とやり取りしてもよい。
システム環境1000は、ネットワーク1010を含んでいてもよい。ネットワーク1010は、TCP/IP、SNA、IPX、AppleTalkなどを限定なしで含む商業的に入手可能なさまざまなプロトコルのうちのいずれかを使用してデータ通信をサポート可能な、当業者によく知られているあらゆるタイプのネットワークであってもよい。ほんの一例として、ネットワーク1010は、イーサネット(登録商標)ネットワーク、トークンリングネットワークなどのローカルエリアネットワーク(local area network:LAN);ワイドエリアネットワーク;仮想プライベートネットワーク(virtual private network:VPN)を限定なしで含む仮想ネットワーク;インターネット;イントラネット;エクストラネット;公衆交換電話網(public switched telephone network:PSTN);赤外線ネットワーク;無線ネットワーク(たとえば、プロトコルのIEEE802.11スイートのいずれか、当該技術分野で公知のBluetooth(登録商標)プロトコル、および/または任意の他の無線プロトコルの下で動作するネットワーク);ならびに/または、これらのおよび/もしくは他のネットワークの組合せであってもよい。
システム環境1000はまた、1つ以上のサーバコンピュータ1012を含み、それは、汎用コンピュータ、特化サーバコンピュータ(たとえば、PCサーバ、UNIXサーバ、ミッドレンジサーバ、メインフレームコンピュータ、ラック搭載サーバなどを含む)、サーバファーム、サーバクラスタ、もしくは任意の他の適切な構成および/または組合せであってもよい。さまざまな実施形態では、サーバ1012は、1つ以上のサービスまたはソフトウェアアプリケーションを作動させるように適合されてもよい。
サーバ1012は、上述のいずれかを含むオペレーティングシステム、および商業的に入手可能なあらゆるサーバオペレーティングシステムを作動させてもよい。サーバ1012はまた、HTTPサーバ、FTPサーバ、CGIサーバ、JAVA(登録商標)サーバ、データベースサーバなどを含む、さまざまな追加のサーバアプリケーションおよび/または中間層アプリケーションのうちのいずれかを作動させてもよい。例示的なデータベースサーバは、オラクル、マイクロソフト、サイベース(Sybase)、IBMなどから商業的に入手可能なものを限定なしで含む。
システム環境1000はまた、1つ以上のデータベース1014、1016を含んでいてもよい。データベース1014、1016は、さまざまな場所に存在していてもよい。たとえば、データベース1014、1016のうちの1つ以上は、サーバ1012にとってローカルな(および/またはサーバ1012に常駐する)非一時的な記憶媒体上に存在していてもよい。また、これに代えて、データベース1014、1016は、サーバ1012からリモートであってもよく、ネットワークベースのまたは専用の接続を介してサーバ1012と通信していてもよい。一組の実施形態では、データベース1014、1016は、当業者にはよく知られているストレージエリアネットワーク(storage area network:SAN)に存在していてもよい。同様に、サーバ1012に起因する機能を行うためのあらゆる必要なファイルが、サーバ1012上にローカルにおよび/またはリモートで、適宜格納されてもよい。一組の実施形態では、データベース1014、1016は、SQLフォーマットのコマンドに応答してデータを格納し、更新し、検索するように適合された、オラクルによって提供されるデータベースなどのリレーショナルデータベースを含んでいてもよい。
図11は、この発明の実施形態に従って使用され得るコンピュータシステム1100の簡略化されたブロック図である。たとえば、サーバ1012またはクライアント1002、1004、1006および1008は、システム1100などのシステムを用いて実現されてもよい。コンピュータシステム1100は、バス1124を介して電気的に連結され得るハードウェア要素を含んで図示されている。ハードウェア要素は、1つ以上の中央処理装置(CPU)1102と、1つ以上の入力装置1104(たとえば、マウス、キーボードなど)と、1つ以上の出力装置1106(たとえば、表示装置、プリンタなど)とを含んでいてもよい。コンピュータシステム1100はまた、1つ以上の記憶装置1108を含んでいてもよい。たとえば、記憶装置1108は、ディスクドライブ、光学記憶装置、ならびに、ランダムアクセスメモリ(random access memory:RAM)および/または読出し専用メモリ(read only memory:ROM)などのソリッドステート記憶装置などの装置を含んでいてもよく、それらはプログラム可能、フラッシュ更新可能なものなどであってもよい。
コンピュータシステム1100は加えて、コンピュータ読取可能記憶媒体リーダ1112と、通信サブシステム1114(たとえば、モデム、ネットワークカード(無線または有線)、赤外線通信装置など)と、上述のようなRAM装置およびROM装置を含み得る作業メモリ1118とを含んでいてもよい。いくつかの実施形態では、コンピュータシステム1100はまた、処理加速ユニット1116を含んでいてもよく、それは、デジタル信号プロセッサ(digital signal processor:DSP)、専用プロセッサなどを含んでいてもよい。
コンピュータ読取可能記憶媒体リーダ1112はさらにコンピュータ読取可能記憶媒体1110に接続可能であり、コンピュータ読取可能な情報を一時的におよび/またはより永続的に含むためのリモートの、ローカルの、固定された、および/またはリムーバブルの記憶装置プラス記憶媒体を、ともに(および、オプションで記憶装置1108と組合されて)包括的に表わす。通信システム1114は、データが、システム環境1000に対して、ネットワークおよび/または上述した任意の他のコンピュータと交換されることを許可してもよい。
コンピュータシステム1100はまた、オペレーティングシステム1120および/またはアプリケーションプログラム(クライアントアプリケーション、ウェブブラウザ、中間層アプリケーション、RDBMSなどであってもよい)などの他のコード1122を含む、作業メモリ1118内に現在位置するものとして図示されたソフトウェア要素を含んでいてもよい。例示的な一実施形態では、作業メモリ1118は、上述のように傾向予測のために使用される実行可能コードおよび関連付けられたデータ構造を含んでいてもよい。コンピュータシステム1100の代替的な実施形態は、上述のものからの多数の変形を有していてもよい、ということが理解されるべきである。たとえば、カスタマイズされたハードウェアも使用されてもよく、および/または、特定の要素がハードウェア、ソフトウェア(アプレットなどのポータブルソフトウェアを含む)、またはそれら双方で実現されてもよい。また、ネットワーク入力/出力装置などの他のコンピューティング装置への接続が採用されてもよい。
コードまたはコードの一部を含むための記憶媒体およびコンピュータ読取可能媒体は、当該技術分野で公知のまたは使用されるあらゆる適切な媒体を含んでいてもよく、コンピュータ読取可能な命令、データ構造、プログラムモジュール、もしくは他のデータといった情報の格納および/または送信のための任意の方法あるいは技術で実現される、揮発性および不揮発性、リムーバブルおよび非リムーバブル媒体を含むもののそれらに限定されない記憶媒体および通信媒体を含み、RAM、ROM、EEPROM、フラッシュメモリまたは他のメモリ技術、CD−ROM、デジタル多用途ディスク(digital versatile disk:DVD)または他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶装置、データ信号、データ伝送、もしくは所望の情報を格納または送信するために使用可能であり、コンピュータによってアクセス可能な任意の他の媒体を含む。
この発明の特定の実施形態を説明してきたが、さまざまな修正、変更、代替的構成、および同等物もこの発明の範囲内に包含される。この発明の実施形態は、ある特定のデータ処理環境内での演算に制限されず、複数のデータ処理環境内で自由に演算できる。加えて、この発明の実施形態は、ある特定の一連のトランザクションおよびステップを使用して説明されてきたが、この発明の範囲が上述の一連のトランザクションおよびステップに限定されないことは、当業者には明らかなはずである。
また、この発明の実施形態はハードウェアとソフトウェアとのある特定の組合せを用いて説明されてきたが、ハードウェアとソフトウェアとの他の組合せもこの発明の範囲内にあることが認識されるべきである。この発明の実施形態は、ハードウェアのみで、またはソフトウェアのみで、またはそれらの組合せを用いて実現されてもよい。
したがって、明細書および添付の図面は、限定的ではなく例示的な意味であると考えられるべきである。しかしながら、より広い精神および範囲から逸脱することなく、追加、削減、削除、ならびに他の修正および変更がそれに行なわれてもよいことは、明らかであろう。

Claims (24)

  1. コンピュータによって実現される方法であって、
    一連の時間間隔における各々の特定の時間間隔中に別個のスレッドダンプを生成することにより、一連のスレッドダンプサンプルを得るステップと、
    前記一連のスレッドダンプサンプルに基づいて、前記スレッドダンプサンプルに示されたスタックセグメント内のスタックフレームの強度の相違に基づいたスタックセグメント分類のセットを自動的に生成するステップと、を含み、
    前記セットにおける各スタックセグメント分類は、同じ強度を有するスタックフレームを含むスタックセグメントの別個のクラスを表し、前記強度は、コードブロックの実行時間を乗じたコードブロックの呼出し回数を統計基準として提供し、
    前記一連のスレッドダンプサンプルにおいて表わされる特定のスレッドごとに、コードブロックの実行時間を乗じた特定のスタックセグメントにおけるコードブロックの呼出し回数に少なくとも部分的に基づいて、前記スタックセグメント分類のセットから、前記特定のスレッドについての特定のスタックセグメント分類を自動的に選択するステップと、
    前記スタックセグメント分類のセットにおける各スタックセグメント分類について、前記強度の変化率を計測することで傾向を決定することにより、傾向のセットを生成するステップと、を含み、
    前記傾向のセットにおける各傾向は、前記強度の変化率を表し、
    前記傾向のセットに少なくとも部分的に基づいて異常のセットを決定するステップと、
    前記異常のセットに少なくとも部分的に基づいて出力を生成するステップとを含む、コンピュータによって実現される方法。
  2. 前記スタックセグメント分類のセットを自動的に生成するステップは、
    前記一連のスレッドダンプサンプルにおいて表わされるスタックセグメント内におけるスタックフレームの前記強度が、時間の経過に応じて、指定されたしきい値を超えて逸脱し、
    前記スタックセグメント内における前記スタックフレームの強度が、時間の経過に応じて、前記指定されたしきい値を超えて逸脱するとの判断に応じて、前記スタックセグメントを複数の構成スタックセグメントに自動的に分割するステップと、
    前記複数の構成スタックセグメントの各々のために新しいスタックセグメント分類を生成するステップとを含む、請求項1に記載の方法。
  3. 第1のスレッドダンプにおいて表わされるスレッドのスレッド名、実行コンテキストID(ECID:ExecutionContextID)または当該スレッドがスタックされたスレッドとして既にカウントされたかを示すエポックカウンタが、それぞれ、第2のスレッドダンプにおいて表わされるスレッドのスレッド名、実行コンテキストID(ECID)または当該スレッドがスタックされたスレッドとして既にカウントされたかを示すエポックカウンタと同じであるかどうかを判断するステップと、
    前記第1のスレッドダンプにおいて表わされる前記スレッドのスレッド名、実行コンテキストID(ECID)またはエポックカウンタが、それぞれ、前記第2のスレッドダンプにおいて表わされる前記スレッドのスレッド名、実行コンテキストID(ECID)またはエポックカウンタと同じであるとの判断に応じて、前記第2のスレッドダンプにおいて表わされる前記スレッドが、前記第2のスレッドダンプにおけるスレッドの応答時間の統計である強度統計のためにカウントされるのを防止するステップとをさらに含む、請求項1または2に記載の方法。
  4. 前記第1のスレッドダンプにおいて表わされる前記スレッドのCPU時間が前記第2のスレッドダンプにおいて表わされるスレッドのCPU時間と同じであると判断するステップと、
    前記第1のスレッドダンプにおいて表わされる前記スレッドのスレッド名、実行コンテキストID(ECID)またはエポックカウンタが、それぞれ、前記第2のスレッドダンプにおいて表わされる前記スレッドのスレッド名、実行コンテキストID(ECID)またはエポックカウンタと同じであるとの判断と、前記第1のスレッドダンプにおいて表わされる前記スレッドのCPU時間が前記第2のスレッドダンプにおいて表わされるスレッドのCPU時間と同じであるとの判断とに応じて、前記第1のスレッドダンプおよび前記第2のスレッドダンプにおいて表わされる同じスレッドをスタックしたスレッドとして識別するステップとをさらに含む、請求項3に記載の方法。
  5. 前記一連のスレッドダンプサンプルにおける別個のスレッドダンプサンプル内にある第1のスレッドの複数のCPU時間に変化がないことに少なくとも部分的に基づいて、前記第1のスレッドがスタックしていると判断するステップをさらに含む、請求項4に記載の方法。
  6. 前記第1のスレッドダンプにおいて表わされるスレッドのCPU時間が前記第2のスレッドダンプにおいて表わされる前記スレッドのCPU時間とは異なると判断するステップと、
    前記第1のスレッドダンプにおいて表わされる前記スレッドのスレッド名、実行コンテキストID(ECID)またはエポックカウンタが、それぞれ、前記第2のスレッドダンプにおいて表わされる前記スレッドのスレッド名、実行コンテキストID(ECID)またはエポックカウンタと同じであるとの判断と、前記第1のスレッドダンプにおいて表わされる前記スレッドの前記CPU時間が前記第2のスレッドダンプにおいて表わされるスレッドのCPU時間とは異なるとの判断とに応じて、前記第1のスレッドダンプおよび前記第2のスレッドダンプにおいて表わされる同じスレッドを残存するスレッドとして識別するステップとを含む、請求項3または4に記載の方法。
  7. 前記一連のスレッドダンプサンプルにおける別個のスレッドダンプサンプル内における第1のスレッドの複数のスレッド名、実行コンテキストID(ECID)またはエポックカウンタに変化がないことに少なくとも部分的に基づいて、第1のスレッドが残存していると判断するステップをさらに含む、請求項6に記載の方法。
  8. 前記一連のスレッドダンプにおけるスレッドダンプについての第1のサンプリング間隔による当該一連のスレッドダンプにおけるスレッドの応答時間の統計である第1の強度統計を維持するステップと、
    特定のスレッドが、第1のサンプリング間隔および第2のサンプリング間隔にわたってスタックするかまたは残存するように決定されたとの判断に応じて、前記一連のスレッドダンプにおけるスレッドダンプについての第2のサンプリング間隔による当該一連のスレッドダンプにおけるスレッドの応答時間の統計である第2の強度統計を調整するステップとをさらに含み、第2のサンプリング間隔は、スタックしているスレッドまたは残存するスレッドを繰り返しカウントすることを防止する、請求項1〜7のいずれか1項に記載の方法。
  9. 前記特定のスレッドのための特定のスタックセグメント分類を前記スタックセグメント分類のセットから選択するステップは、
    特定のスタックトレースにおける特定のスタックフレームについての前記強度を決定するステップと、
    前記特定のスタックトレースにおける前記特定のスタックフレームの直前に発生する先行処理スタックフレームについての前記強度を決定するステップと、
    前記特定のスタックトレースにおける前記特定のスタックフレームの直後に発生する後続処理スタックフレームについての前記強度を決定するステップと、
    前記特定のスタックフレームについての前記強度が前記先行処理スタックフレームについての前記強度と全く同じであるかまたはほぼ同じであるとの判断に応じて、前記特定のスタックフレームおよび前記先行処理スタックフレームの両方に特定の分類を割当てるステップと、
    前記特定のスタックフレームについての前記強度が前記後続処理スタックフレームについての前記強度と同じであるとの判断に応じて、前記特定のスタックフレームおよび前記後続処理スタックフレームの両方に前記特定の分類を割当てるステップとを含む、請求項1〜8のいずれか1項に記載の方法。
  10. 新しいスタックセグメント情報項目を作成するステップと、
    現在のスタックセグメント情報項目の値に前記新しいスタックセグメント情報項目を割当てるステップと、
    前記新しいスタックセグメント情報項目の分類に応じて新しい季節的傾向情報項目を生成するステップと、
    前記現在のスタックセグメント情報項目の傾向属性の値を前記新しい季節的傾向情報項目に設定するステップとをさらに含む、請求項1〜9のいずれか1項に記載の方法。
  11. 一体化されたスタックセグメントを第1の新しいスタックセグメントおよび第2の新しいスタックセグメントに分割するステップと、
    前記一体化されたスタックセグメントの季節的傾向情報項目の第1のクローンを作成するステップと、
    前記一体化されたスタックセグメントの前記季節的傾向情報項目の第2のクローンを作成するステップと、
    前記第1の新しいスタックセグメントの傾向属性の値を前記第1のクローンに設定するステップと、
    前記第2の新しいスタックセグメントの傾向属性の値を前記第2のクローンに設定するステップとをさらに含む、請求項1〜10のいずれか1項に記載の方法。
  12. スタックセグメント分類のセットを生成するステップと、
    一続きのスタックセグメント分類に少なくとも部分的に基づいてスレッド分類を生成するステップとをさらに含む、請求項1〜11のいずれか1項に記載の方法。
  13. スレッド分類のセットを生成するステップと、
    スレッド間における呼出しチェーン、依存チェーンおよびクライアント・サーバチェーンのうちの1つに少なくとも部分的に基づいて一続きのスレッドの分類を生成するステップとをさらに含む、請求項12に記載の方法。
  14. 1つ以上のスタックセグメント分類をいずれかのディメンションに割当てることによって、前記1つ以上のスタックセグメント分類を前記スタックセグメント分類のセットに編成するステップと、
    前記特定のスタックセグメント分類の名前を設定するステップと、
    特定のディメンションの名前を設定するステップとをさらに含む、請求項1〜13のいずれか1項に記載の方法。
  15. 前記特定のスタックセグメント分類が割当てられているディメンションのクロス積を採用することによって、前記特定のスタックセグメント分類のクラス階層にまでドリルダウンするステップをさらに含む、請求項14に記載の方法。
  16. 黙知に少なくとも部分的に基づいて前記特定のスタックセグメント分類の名前を設定するステップと、
    前記暗黙知に少なくとも部分的に基づいて特定のディメンションの名前を設定するステップと、
    ディメンションに対する前記1つ以上のスタックセグメント分類を、前記暗黙知に少なくとも部分的に基づいて、ドメインディメンション、サーバディメンション、チャネルディメンション、アプリケーションディメンション、ライブラリディメンションおよびオペレーションディメンションのうち少なくとも1つに割当てるステップと、を含み、
    前記暗黙知に少なくとも部分的に基づいたディメンションへの割当てを、前記ドメインディメンション、前記サーバディメンション、前記チャネルディメンション、前記アプリケーションディメンション、前記ライブラリディメンションおよび前記オペレーションディメンションのうち少なくとも1つに対して行う、請求項14または15に記載の方法。
  17. 人の暗黙知に基づいて1つ以上のスタックセグメントを分類するステップと、
    前記人の暗黙知に少なくとも部分的に基づいて1つ以上のディメンションに1つ以上の分類を割当てるステップとをさらに含む、請求項1〜16のいずれか1項に記載の方法。
  18. 帰納学習プロセスに少なくとも部分的に基づいて、前記スタックセグメント分類のセットにおける前記スタックセグメント分類の1つ以上を、前記スタックセグメント分類の1つ以上を生成する前に規定された1つ以上のディメンションに割当てるステップをさらに含む、請求項1〜17のいずれか1項に記載の方法。
  19. 各々がクライアント部分およびサーバ部分を含む依存関係の複数のサブクラスを含む一般化された依存関係を格納するステップと、
    特定のサブクラス依存関係の一般化されたクライアント部分を、前記特定のサブクラスの一般化されたサーバ部分よりも依存強度が高いクライアント部分にまでドリルダウンするステップと、
    前記特定のサブクラス依存関係の一般化されたサーバ部分を、前記特定のサブクラスの一般化されたクライアント部分よりも依存強度が高いサーバ部分にまでドリルダウンするステップとをさらに含む、請求項1〜18のいずれか1項に記載の方法。
  20. 暗黙知に少なくとも部分的に基づいてスレッド依存関係の知識ベースを生成するステップと、
    前記スレッド依存関係に少なくとも部分的に基づいて、1対のサービングエンティティにわたる少なくとも1つの発生率を、問題の根本的原因を分析する部分として相互に関連付けるステップとをさらに含み、
    前記1対のサービングエンティティは、1対のクライアントおよびサーバ、1対のサーバまたは1対のクライアントのうち少なくとも1つである、請求項1〜19のいずれか1項に記載の方法。
  21. 前記1対のサービングエンティティ間におけるチャネルに少なくとも部分的に基づいてインピーダンス整合を実行するステップをさらに含み、
    前記チャネルは、前記対における第1のサービングエンティティのためのスタックセグメントのクラスと前記対における第2のサービングエンティティのためのスタックセグメントのクラスとの間のクライアント・サーバ依存関係をサポートする、請求項20に記載の方法。
  22. スタックセグメントのサブ分類のスタックセグメントの応答時間に比例するスタックセグメント強度の合成に基づいて、前記特定のスタックセグメント分類のスタックセグメント強度を決定するステップと、
    前記特定のスタックセグメント分類のスタックセグメントの予想される応答時間を、スタックセグメントの前記サブ分類のスタックセグメントの応答時間にセグメント化するステップとをさらに含み、
    予想される応答時間をセグメント化する前記ステップは、スタックセグメント強度の合成に少なくとも部分的に基づいている、請求項1〜21のいずれか1項に記載の方法。
  23. コンピュータ読取可能プログラムであって、1つ以上のプロセッサによって実行されると、前記1つ以上のプロセッサに、
    一連の時間間隔における各々の特定の時間間隔中に別個のスレッドダンプを生成することにより、一連のスレッドダンプサンプルを得る動作と、
    前記一連のスレッドダンプサンプルに基づいて、前記スレッドダンプサンプルに示されたスタックセグメント内のスタックフレームの強度の相違に基づいたスタックセグメント分類のセットを自動的に生成する動作と、を実行させ、
    前記セットにおける各スタックセグメント分類は、同じ強度を有するスタックフレームを含むスタックセグメントの別個のクラスを表し、前記強度は、コードブロックの実行時間を乗じたコードブロックの呼出し回数を統計基準として提供し、
    前記一連のスレッドダンプサンプルにおいて表わされる特定のスレッドごとに、コードブロックの実行時間を乗じた特定のスタックセグメントにおけるコードブロックの呼出し回数に少なくとも部分的に基づいて、前記スタックセグメント分類のセットから、前記特定のスレッドについての特定のスタックセグメント分類を自動的に選択する動作と、
    前記スタックセグメント分類のセットにおける各スタックセグメント分類について、前記強度の変化率を計測することで傾向を決定することにより、傾向のセットを生成する動作とを実行させ、
    前記傾向のセットにおける各傾向は、前記強度の変化率を表し、
    前記傾向のセットに少なくとも部分的に基づいて異常のセットを決定する動作と、
    前記異常のセットに少なくとも部分的に基づいて出力を生成する動作とを実行させる、コンピュータ読取可能プログラム。
  24. 一連の時間間隔における各々の特定の時間間隔中に別個のスレッドダンプを生成することにより、一連のスレッドダンプサンプルを得るための手段と、
    前記一連のスレッドダンプサンプルに基づいて、前記スレッドダンプサンプルに示されたスタックセグメント内のスタックフレームの強度の相違に基づいたスタックセグメント分類のセットを自動的に生成するための手段と、を含み、
    前記セットにおける各スタックセグメント分類は、同じ強度を有するスタックフレームを含むスタックセグメントの別個のクラスを表し、前記強度は、コードブロックの実行時間を乗じたコードブロックの呼出し回数を統計基準として提供し、
    前記一連のスレッドダンプサンプルにおいて表わされる特定のスレッドごとに、コードブロックの実行時間を乗じた特定のスタックセグメントにおけるコードブロックの呼出し回数に少なくとも部分的に基づいて、前記スタックセグメント分類のセットから、前記特定のスレッドについての特定のスタックセグメント分類を自動的に選択する手段と、
    前記スタックセグメント分類のセットにおける各スタックセグメント分類について、前記強度の変化率を計測することで傾向を決定することにより、傾向のセットを生成するための手段と、を含み、
    前記傾向のセットにおける各傾向は、前記強度の変化率を表し、
    前記傾向のセットに少なくとも部分的に基づいて異常のセットを決定するための手段と、
    前記異常のセットに少なくとも部分的に基づいて出力を生成するための手段とを備える、コンピュータシステム。
JP2016507640A 2013-04-11 2014-04-09 スレッド強度分析を用いた季節的傾向把握および予測によるクラウドサービスにおけるsla違反の予測的診断 Active JP6577455B2 (ja)

Applications Claiming Priority (13)

Application Number Priority Date Filing Date Title
US201361811106P 2013-04-11 2013-04-11
US201361811102P 2013-04-11 2013-04-11
US61/811,106 2013-04-11
US61/811,102 2013-04-11
US201361885424P 2013-10-01 2013-10-01
US61/885,424 2013-10-01
US14/109,546 US10205640B2 (en) 2013-04-11 2013-12-17 Seasonal trending, forecasting, anomaly detection, and endpoint prediction of java heap usage
US14/109,651 2013-12-17
US14/109,578 2013-12-17
US14/109,651 US9330119B2 (en) 2013-04-11 2013-12-17 Knowledge intensive data management system for business process and case management
US14/109,578 US9495395B2 (en) 2013-04-11 2013-12-17 Predictive diagnosis of SLA violations in cloud services by seasonal trending and forecasting with thread intensity analytics
US14/109,546 2013-12-17
PCT/US2014/033530 WO2014169056A1 (en) 2013-04-11 2014-04-09 Predictive diagnosis of sla violations in cloud services by seasonal trending and forecasting with thread intensity analytics

Publications (3)

Publication Number Publication Date
JP2016518660A JP2016518660A (ja) 2016-06-23
JP2016518660A5 JP2016518660A5 (ja) 2017-05-18
JP6577455B2 true JP6577455B2 (ja) 2019-09-18

Family

ID=51687491

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2016507618A Active JP6457489B2 (ja) 2013-04-11 2014-04-08 Javaヒープ使用量の季節的傾向把握、予想、異常検出、エンドポイント予測
JP2016507640A Active JP6577455B2 (ja) 2013-04-11 2014-04-09 スレッド強度分析を用いた季節的傾向把握および予測によるクラウドサービスにおけるsla違反の予測的診断

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2016507618A Active JP6457489B2 (ja) 2013-04-11 2014-04-08 Javaヒープ使用量の季節的傾向把握、予想、異常検出、エンドポイント予測

Country Status (5)

Country Link
US (5) US10205640B2 (ja)
EP (2) EP2984567B1 (ja)
JP (2) JP6457489B2 (ja)
CN (2) CN105144112B (ja)
WO (2) WO2014168981A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11468098B2 (en) 2013-04-11 2022-10-11 Oracle International Corporation Knowledge-intensive data processing system

Families Citing this family (224)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10205640B2 (en) 2013-04-11 2019-02-12 Oracle International Corporation Seasonal trending, forecasting, anomaly detection, and endpoint prediction of java heap usage
US20140344450A1 (en) * 2013-05-08 2014-11-20 Connectloud, Inc. Method and Apparatus for Deterministic Cloud User Service Impact Reporting
US20140358626A1 (en) * 2013-06-04 2014-12-04 Hewlett-Packard Development Company, L.P. Assessing the impact of an incident in a service level agreement
GB2517195A (en) * 2013-08-15 2015-02-18 Ibm Computer system productivity monitoring
US9336138B2 (en) * 2013-08-30 2016-05-10 Verizon Patent And Licensing Inc. Method and apparatus for implementing garbage collection within a computing environment
US9317349B2 (en) 2013-09-11 2016-04-19 Dell Products, Lp SAN vulnerability assessment tool
US10223230B2 (en) 2013-09-11 2019-03-05 Dell Products, Lp Method and system for predicting storage device failures
US9720758B2 (en) 2013-09-11 2017-08-01 Dell Products, Lp Diagnostic analysis tool for disk storage engineering and technical support
US9454423B2 (en) * 2013-09-11 2016-09-27 Dell Products, Lp SAN performance analysis tool
US9390269B2 (en) * 2013-09-30 2016-07-12 Globalfoundries Inc. Security testing using semantic modeling
US11657109B2 (en) 2013-11-28 2023-05-23 Patrick Faulwetter Platform device for providing quantitative collective knowledge
DE112014005455A5 (de) 2013-11-28 2016-08-11 Patrick Faulwetter Plattform-Vorrichtung zur Bereitstellung qualitativen Schwarm-Wissens
CN104144202B (zh) * 2013-12-11 2016-05-04 腾讯科技(深圳)有限公司 Hadoop分布式文件系统的访问方法、系统和装置
CN104809051B (zh) * 2014-01-28 2017-11-14 国际商业机器公司 用于预测计算机应用中的异常和故障的方法和装置
US10325032B2 (en) * 2014-02-19 2019-06-18 Snowflake Inc. Resource provisioning systems and methods
US9791485B2 (en) 2014-03-10 2017-10-17 Silver Spring Networks, Inc. Determining electric grid topology via a zero crossing technique
US9401851B2 (en) * 2014-03-28 2016-07-26 Verizon Patent And Licensing Inc. Network management system
US9436411B2 (en) 2014-03-28 2016-09-06 Dell Products, Lp SAN IP validation tool
US9612878B2 (en) * 2014-03-31 2017-04-04 International Business Machines Corporation Resource allocation in job scheduling environment
US20150347212A1 (en) * 2014-05-28 2015-12-03 International Business Machines Corporation Error classification in a computing system
US9602462B2 (en) * 2014-09-11 2017-03-21 Infoblox Inc. Exponential moving maximum (EMM) filter for predictive analytics in network reporting
US9430355B2 (en) * 2014-09-18 2016-08-30 Sap Se System diagnostics with thread dump analysis
US9350732B1 (en) * 2014-11-07 2016-05-24 Elliptic Technologies Inc. Integrity protection for data storage
CN104506514A (zh) * 2014-12-18 2015-04-08 华东师范大学 一种基于hdfs的云存储访问控制方法
US11093845B2 (en) 2015-05-22 2021-08-17 Fair Isaac Corporation Tree pathway analysis for signature inference
US9917738B2 (en) * 2015-01-13 2018-03-13 Accenture Global Services Limited Intelligent device data router
US20160225652A1 (en) 2015-02-03 2016-08-04 Applied Materials, Inc. Low temperature chuck for plasma processing systems
US9836599B2 (en) * 2015-03-13 2017-12-05 Microsoft Technology Licensing, Llc Implicit process detection and automation from unstructured activity
JP6578685B2 (ja) * 2015-03-16 2019-09-25 富士通株式会社 関係推定方法、関係推定プログラムおよび情報処理装置
US10452450B2 (en) 2015-03-20 2019-10-22 International Business Machines Corporation Optimizing allocation of multi-tasking servers
WO2016153790A1 (en) * 2015-03-23 2016-09-29 Oracle International Corporation Knowledge-intensive data processing system
US11443206B2 (en) 2015-03-23 2022-09-13 Tibco Software Inc. Adaptive filtering and modeling via adaptive experimental designs to identify emerging data patterns from large volume, high dimensional, high velocity streaming data
US10467226B2 (en) * 2016-04-27 2019-11-05 Tibco Software Inc Method for in-database feature selection for high-dimensional inputs
US9774694B2 (en) * 2015-06-02 2017-09-26 Facebook, Inc. Server-side control of client-side data sampling
US10713140B2 (en) 2015-06-10 2020-07-14 Fair Isaac Corporation Identifying latent states of machines based on machine logs
US10248561B2 (en) 2015-06-18 2019-04-02 Oracle International Corporation Stateless detection of out-of-memory events in virtual machines
US11068827B1 (en) 2015-06-22 2021-07-20 Wells Fargo Bank, N.A. Master performance indicator
US9710321B2 (en) * 2015-06-23 2017-07-18 Microsoft Technology Licensing, Llc Atypical reboot data collection and analysis
US10650325B2 (en) * 2015-07-31 2020-05-12 Microsoft Technology Licensing, Llc Deterministic message distribution
US10616370B2 (en) 2015-08-21 2020-04-07 Hewlett Packard Enterprise Development Lp Adjusting cloud-based execution environment by neural network
US10776357B2 (en) * 2015-08-26 2020-09-15 Infosys Limited System and method of data join and metadata configuration
US10284453B2 (en) * 2015-09-08 2019-05-07 Uber Technologies, Inc. System event analyzer and outlier visualization
US10664777B2 (en) * 2015-09-11 2020-05-26 Workfusion, Inc. Automated recommendations for task automation
US20170083920A1 (en) * 2015-09-21 2017-03-23 Fair Isaac Corporation Hybrid method of decision tree and clustering technology
US10437651B2 (en) * 2015-09-22 2019-10-08 International Business Machines Corporation Intelligent mapping of empirical data
US10187310B2 (en) * 2015-10-13 2019-01-22 Oracle International Corporation System and method for efficient network isolation and load balancing in a multi-tenant cluster environment
US9983933B2 (en) * 2015-10-15 2018-05-29 International Business Machines Corporation Accelerating system dump capturing
US10229368B2 (en) 2015-10-19 2019-03-12 International Business Machines Corporation Machine learning of predictive models using partial regression trends
US10360093B2 (en) * 2015-11-18 2019-07-23 Fair Isaac Corporation Detecting anomalous states of machines
US9612945B1 (en) * 2015-11-23 2017-04-04 Sap Se Call count profiling for estimation of relative hotness of function call frequency
US9537720B1 (en) * 2015-12-10 2017-01-03 International Business Machines Corporation Topology discovery for fault finding in virtual computing environments
US11715025B2 (en) 2015-12-30 2023-08-01 Nutanix, Inc. Method for forecasting distributed resource utilization in a virtualization environment
US10970891B2 (en) 2016-02-29 2021-04-06 Oracle International Corporation Systems and methods for detecting and accommodating state changes in modelling
US10331802B2 (en) * 2016-02-29 2019-06-25 Oracle International Corporation System for detecting and characterizing seasons
US10699211B2 (en) 2016-02-29 2020-06-30 Oracle International Corporation Supervised method for classifying seasonal patterns
US10885461B2 (en) 2016-02-29 2021-01-05 Oracle International Corporation Unsupervised method for classifying seasonal patterns
US10530714B2 (en) * 2016-02-29 2020-01-07 Oracle International Corporation Conditional automatic social posts
CN107239377B (zh) * 2016-03-29 2021-02-26 阿里巴巴集团控股有限公司 获取Java虚拟机运行状态的方法和装置
US10289347B2 (en) * 2016-04-26 2019-05-14 Servicenow, Inc. Detection and remediation of memory leaks
US10073906B2 (en) 2016-04-27 2018-09-11 Oracle International Corporation Scalable tri-point arbitration and clustering
US11327797B2 (en) 2016-05-09 2022-05-10 Oracle International Corporation Memory usage determination techniques
WO2017196746A1 (en) * 2016-05-09 2017-11-16 Oracle International Corporation Memory usage determination techniques
US10198339B2 (en) 2016-05-16 2019-02-05 Oracle International Corporation Correlation-based analytic for time-series data
US10168953B1 (en) 2016-05-20 2019-01-01 Nutanix, Inc. Dynamic scheduling of distributed storage management tasks using predicted system characteristics
US10902324B2 (en) 2016-06-13 2021-01-26 Nutanix, Inc. Dynamic data snapshot management using predictive modeling
US10361925B1 (en) 2016-06-23 2019-07-23 Nutanix, Inc. Storage infrastructure scenario planning
US10353910B2 (en) * 2016-07-15 2019-07-16 Ebay Inc. Preemptive connection pool adjustments
US10223191B2 (en) * 2016-07-20 2019-03-05 International Business Machines Corporation Anomaly detection in performance management
CN106354627A (zh) * 2016-07-21 2017-01-25 努比亚技术有限公司 一种应用程序内存泄漏的检测方法及系统
CN106250302B (zh) * 2016-07-27 2018-10-23 北京合力思腾科技股份有限公司 数据预测分析方法及装置
US11120106B2 (en) 2016-07-30 2021-09-14 Endgame, Inc. Hardware—assisted system and method for detecting and analyzing system calls made to an operating system kernel
US11082439B2 (en) 2016-08-04 2021-08-03 Oracle International Corporation Unsupervised method for baselining and anomaly detection in time-series data for enterprise systems
US10635563B2 (en) 2016-08-04 2020-04-28 Oracle International Corporation Unsupervised method for baselining and anomaly detection in time-series data for enterprise systems
US10318405B2 (en) * 2016-08-24 2019-06-11 International Business Machines Corporation Applying consistent log levels to application log messages
WO2018045545A1 (en) * 2016-09-09 2018-03-15 Microsoft Technology Licensing, Llc Automated performance debugging of production applications
US10326646B2 (en) 2016-09-15 2019-06-18 Oracle International Corporation Architectural design to enable bidirectional service registration and interaction among clusters
GB2556196A (en) * 2016-09-28 2018-05-23 Zensar Tech Limited An adaptive methodology framework system and method thereof
US10484301B1 (en) * 2016-09-30 2019-11-19 Nutanix, Inc. Dynamic resource distribution using periodicity-aware predictive modeling
CN107967265B (zh) * 2016-10-18 2022-02-11 华为技术有限公司 文件的访问方法、数据服务器和文件访问系统
US10691491B2 (en) 2016-10-19 2020-06-23 Nutanix, Inc. Adapting a pre-trained distributed resource predictive model to a target distributed computing environment
CN106776788B (zh) * 2016-11-24 2019-10-29 厦门普杰信息科技有限公司 一种基于dss框架的数据库子系统设计方法
US10885451B2 (en) * 2016-12-07 2021-01-05 Wipro Limited Methods and systems for identifying and projecting recurrent event patterns in information technology infrastructure
US10503805B2 (en) 2016-12-19 2019-12-10 Oracle International Corporation Generating feedback for a target content item based on published content items
US20180173526A1 (en) * 2016-12-20 2018-06-21 Invensys Systems, Inc. Application lifecycle management system
US10380610B2 (en) * 2016-12-20 2019-08-13 Oracle International Corporation Social media enrichment framework
US11010260B1 (en) * 2016-12-30 2021-05-18 EMC IP Holding Company LLC Generating a data protection risk assessment score for a backup and recovery storage system
US10389612B1 (en) * 2017-01-25 2019-08-20 Amazon Technologies, Inc. Product agnostic pattern detection and management
US10235734B2 (en) 2017-01-27 2019-03-19 International Business Machines Corporation Translation of artificial intelligence representations
US10831629B2 (en) * 2017-01-27 2020-11-10 International Business Machines Corporation Multi-agent plan recognition
US11023840B2 (en) 2017-01-27 2021-06-01 International Business Machines Corporation Scenario planning and risk management
US10375098B2 (en) * 2017-01-31 2019-08-06 Splunk Inc. Anomaly detection based on relationships between multiple time series
US10572181B2 (en) * 2017-02-01 2020-02-25 Microsoft Technology Licensing, Llc Multiple stage garbage collector
CN106885576B (zh) * 2017-02-22 2020-02-14 哈尔滨工程大学 一种基于多点地形匹配定位的auv航迹偏差估计方法
US10949436B2 (en) 2017-02-24 2021-03-16 Oracle International Corporation Optimization for scalable analytics using time series models
US10915830B2 (en) 2017-02-24 2021-02-09 Oracle International Corporation Multiscale method for predictive alerting
WO2018158906A1 (ja) * 2017-03-02 2018-09-07 三菱電機株式会社 プロセスデータ記録装置及びプロセスデータ記録プログラム
CN106991042A (zh) * 2017-03-07 2017-07-28 南京航空航天大学 一种Web应用的内存泄漏定位方法
US10762452B2 (en) * 2017-03-09 2020-09-01 At&T Intellectual Property I, L.P. System and method for designing and executing control loops in a cloud environment
US10803080B2 (en) * 2017-03-21 2020-10-13 Salesforce.Com, Inc. Thread record provider
US10810230B2 (en) * 2017-03-21 2020-10-20 Salesforce.Com, Inc. Thread record provider
US10397259B2 (en) * 2017-03-23 2019-08-27 International Business Machines Corporation Cyber security event detection
US11055631B2 (en) * 2017-03-27 2021-07-06 Nec Corporation Automated meta parameter search for invariant based anomaly detectors in log analytics
JP6780576B2 (ja) * 2017-04-27 2020-11-04 トヨタ自動車株式会社 解析手法提示システム、方法及びプログラム
US11216744B2 (en) 2017-04-28 2022-01-04 Cisco Technology, Inc. Feature-specific adaptive models for support tools
US10747568B2 (en) * 2017-05-30 2020-08-18 Magalix Corporation Systems and methods for managing a cloud computing environment
CN107392220B (zh) 2017-05-31 2020-05-05 创新先进技术有限公司 数据流的聚类方法和装置
US10817803B2 (en) 2017-06-02 2020-10-27 Oracle International Corporation Data driven methods and systems for what if analysis
US11057284B2 (en) 2017-06-06 2021-07-06 International Business Machines Corporation Cognitive quality of service monitoring
CN107148041B (zh) * 2017-06-20 2020-12-18 义乌市智享通讯设备有限公司 无线接入设备异常运行的检测方法及无线接入设备
US11151247B2 (en) 2017-07-13 2021-10-19 Endgame, Inc. System and method for detecting malware injected into memory of a computing device
US11151251B2 (en) 2017-07-13 2021-10-19 Endgame, Inc. System and method for validating in-memory integrity of executable files to identify malicious activity
CN107484189B (zh) * 2017-07-27 2020-10-16 北京市天元网络技术股份有限公司 Lte数据处理系统
US10474667B2 (en) * 2017-07-29 2019-11-12 Vmware, Inc Methods and systems to detect and correct outliers in a dataset stored in a data-storage device
US10621005B2 (en) 2017-08-31 2020-04-14 Oracle International Corporation Systems and methods for providing zero down time and scalability in orchestration cloud services
US11023280B2 (en) 2017-09-15 2021-06-01 Splunk Inc. Processing data streams received from instrumented software using incremental finite window double exponential smoothing
US10839351B1 (en) * 2017-09-18 2020-11-17 Amazon Technologies, Inc. Automated workflow validation using rule-based output mapping
US10719521B2 (en) * 2017-09-18 2020-07-21 Google Llc Evaluating models that rely on aggregate historical data
US10496396B2 (en) 2017-09-29 2019-12-03 Oracle International Corporation Scalable artificial intelligence driven configuration management
US10635565B2 (en) * 2017-10-04 2020-04-28 Servicenow, Inc. Systems and methods for robust anomaly detection
US10628435B2 (en) * 2017-11-06 2020-04-21 Adobe Inc. Extracting seasonal, level, and spike components from a time series of metrics data
US10698884B2 (en) * 2017-11-06 2020-06-30 Bank Of America Corporation Dynamic lineage validation system
US10862988B2 (en) 2017-12-18 2020-12-08 The Chinese University Of Hong Kong On-demand real-time sensor data distribution system
US20190197413A1 (en) * 2017-12-27 2019-06-27 Elasticsearch B.V. Forecasting for Resource Allocation
WO2019130840A1 (ja) * 2017-12-28 2019-07-04 日本電気株式会社 信号処理装置、解析システム、信号処理方法および信号処理プログラム
US11036715B2 (en) 2018-01-29 2021-06-15 Microsoft Technology Licensing, Llc Combination of techniques to detect anomalies in multi-dimensional time series
EP3756413B1 (en) * 2018-02-25 2023-04-12 Nokia Solutions and Networks Oy Method and system for controlling an operation of a communication network to reduce latency
JP6586184B2 (ja) * 2018-03-13 2019-10-02 株式会社日立製作所 データ分析支援装置、及びデータ分析支援方法
US10972491B1 (en) * 2018-05-11 2021-04-06 Amazon Technologies, Inc. Anomaly detection with missing values and forecasting data streams
US10721256B2 (en) 2018-05-21 2020-07-21 Oracle International Corporation Anomaly detection based on events composed through unsupervised clustering of log messages
US10997517B2 (en) 2018-06-05 2021-05-04 Oracle International Corporation Methods and systems for aggregating distribution approximations
US10963346B2 (en) 2018-06-05 2021-03-30 Oracle International Corporation Scalable methods and systems for approximating statistical distributions
CN108829524A (zh) * 2018-06-20 2018-11-16 中国联合网络通信集团有限公司 Bpel流程图形化设计中检测死锁的方法和装置
US10860712B2 (en) * 2018-07-11 2020-12-08 Vmware, Inc. Entropy based security detection system
CN108959039A (zh) * 2018-07-18 2018-12-07 郑州云海信息技术有限公司 一种虚拟机故障预测的方法及装置
US10809987B2 (en) * 2018-08-14 2020-10-20 Hyperblox Inc. Software acceleration platform for supporting decomposed, on-demand network services
CN109143983B (zh) * 2018-08-15 2019-12-24 杭州电子科技大学 嵌入式可编程控制器的运动控制方法及装置
US10613894B1 (en) * 2018-08-15 2020-04-07 Lendingclub Corporation State analysis for one or more virtual machines
CN108696448B (zh) * 2018-08-16 2021-07-23 安徽云才信息技术有限公司 一种基于网关soa架构的服务限流降级方法
US10970055B2 (en) * 2018-08-21 2021-04-06 International Business Machines Corporation Identifying software and hardware bottlenecks
US11467803B2 (en) 2019-09-13 2022-10-11 Oracle International Corporation Identifying regulator and driver signals in data systems
US11367034B2 (en) 2018-09-27 2022-06-21 Oracle International Corporation Techniques for data-driven correlation of metrics
CN109299610B (zh) * 2018-10-02 2021-03-30 复旦大学 安卓系统中不安全敏感输入验证识别方法
DK3633468T3 (da) * 2018-10-04 2022-02-07 Univ Muenchen Tech Fordelt automatiseret syntese af konstruktions-ledsagende korrektur-styreapparater (controllere)
US11068375B2 (en) * 2018-10-17 2021-07-20 Oracle International Corporation System and method for providing machine learning based memory resiliency
US12001926B2 (en) 2018-10-23 2024-06-04 Oracle International Corporation Systems and methods for detecting long term seasons
US11138090B2 (en) 2018-10-23 2021-10-05 Oracle International Corporation Systems and methods for forecasting time series with variable seasonality
US10445170B1 (en) * 2018-11-21 2019-10-15 Fmr Llc Data lineage identification and change impact prediction in a distributed computing environment
US10341491B1 (en) * 2018-11-26 2019-07-02 Capital One Services, Llc Identifying unreported issues through customer service interactions and website analytics
US10984028B2 (en) * 2018-11-28 2021-04-20 International Business Machines Corporation Temporal sensitive cognitive interface
US11620180B2 (en) 2018-11-29 2023-04-04 Vmware, Inc. Holo-entropy adaptive boosting based anomaly detection
US10715391B2 (en) 2018-12-03 2020-07-14 At&T Intellectual Property I, L.P. Cloud zone network analytics platform
NO20210525A1 (en) * 2018-12-04 2021-04-28 Halliburton Energy Services Inc Determination of mud-filtrate contamination and clean formation fluid properties
US11258655B2 (en) 2018-12-06 2022-02-22 Vmware, Inc. Holo-entropy based alarm scoring approach
US11182362B2 (en) 2019-01-16 2021-11-23 Kabushiki Kaisha Toshiba Calculating device, data base system, calculation system, calculation method, and storage medium
US10855548B2 (en) 2019-02-15 2020-12-01 Oracle International Corporation Systems and methods for automatically detecting, summarizing, and responding to anomalies
JP7234702B2 (ja) * 2019-03-07 2023-03-08 日本電気株式会社 情報処理装置、コンテナ配置方法及びコンテナ配置プログラム
US11550634B2 (en) * 2019-03-08 2023-01-10 Microsoft Technology Licensing, Llc Capacity management in a cloud computing system using virtual machine series modeling
US10880186B2 (en) 2019-04-01 2020-12-29 Cisco Technology, Inc. Root cause analysis of seasonal service level agreement (SLA) violations in SD-WAN tunnels
US11178161B2 (en) 2019-04-18 2021-11-16 Oracle International Corporation Detecting anomalies during operation of a computer system based on multimodal data
US11416285B1 (en) * 2019-04-30 2022-08-16 Splunk Inc. Efficient and secure scalable-two-stage data collection
US11533326B2 (en) 2019-05-01 2022-12-20 Oracle International Corporation Systems and methods for multivariate anomaly detection in software monitoring
US11537940B2 (en) 2019-05-13 2022-12-27 Oracle International Corporation Systems and methods for unsupervised anomaly detection using non-parametric tolerance intervals over a sliding window of t-digests
US10942837B2 (en) * 2019-05-13 2021-03-09 Sauce Labs Inc. Analyzing time-series data in an automated application testing system
US11411838B2 (en) 2019-05-29 2022-08-09 Cisco Technology, Inc. Adaptive stress testing of SD-WAN tunnels for what-if scenario model training
US11615271B2 (en) 2019-06-03 2023-03-28 Cerebri AI Inc. Machine learning pipeline optimization
US11018953B2 (en) * 2019-06-19 2021-05-25 International Business Machines Corporation Data center cartography bootstrapping from process table data
US11610126B1 (en) * 2019-06-20 2023-03-21 Amazon Technologies, Inc. Temporal-clustering invariance in irregular time series data
CN110347736A (zh) * 2019-06-21 2019-10-18 厦门美域中央信息科技有限公司 一种面向rdf三元组的数据自定义映射方法
US11340924B2 (en) 2019-06-27 2022-05-24 International Business Machines Corporation Machine-learning based heap memory tuning
US11256719B1 (en) * 2019-06-27 2022-02-22 Amazon Technologies, Inc. Ingestion partition auto-scaling in a time-series database
US11310126B2 (en) 2019-08-05 2022-04-19 International Business Machines Corporation Automated operational data management dictated by quality of service criteria
US11277317B2 (en) 2019-08-05 2022-03-15 International Business Machines Corporation Machine learning to predict quality-of-service needs in an operational data management system
CN110516355B (zh) * 2019-08-27 2020-06-12 上海交通大学 基于预估函数模型的泄漏测试曲线趋势预测方法及系统
US11861463B2 (en) * 2019-09-06 2024-01-02 International Business Machines Corporation Identifying related messages in a natural language interaction
US11681873B2 (en) * 2019-09-11 2023-06-20 International Business Machines Corporation Creating an executable process from a text description written in a natural language
US11887015B2 (en) 2019-09-13 2024-01-30 Oracle International Corporation Automatically-generated labels for time series data and numerical lists to use in analytic and machine learning systems
US11520783B2 (en) 2019-09-19 2022-12-06 International Business Machines Corporation Automated validity evaluation for dynamic amendment
US11748260B1 (en) 2019-09-23 2023-09-05 Amazon Technologies, Inc. Service performance enhancement using advance notifications of reduced-capacity phases of operations
EP3809220B1 (en) * 2019-10-14 2023-01-18 Honda Research Institute Europe GmbH Method and system for semi-supervised deep anomaly detection for large-scale industrial monitoring systems based on time-series data utilizing digital twin simulation data
CN110781392B (zh) * 2019-10-22 2022-08-12 深圳墨世科技有限公司 可动态伸缩的过滤方法、装置、计算机设备及存储介质
US12088473B2 (en) 2019-10-23 2024-09-10 Aryaka Networks, Inc. Method, device and system for enhancing predictive classification of anomalous events in a cloud-based application acceleration as a service environment
US11146445B2 (en) * 2019-12-02 2021-10-12 Alibaba Group Holding Limited Time series decomposition
US11144369B2 (en) 2019-12-30 2021-10-12 Bank Of America Corporation Preemptive self-healing of application server hanging threads
US11018991B1 (en) * 2020-02-07 2021-05-25 EMC IP Holding Company LLC System and method for autonomous and dynamic resource allocation in storage systems
WO2021165933A1 (en) * 2020-02-20 2021-08-26 Celestya Ltd. Method and system for online user behavior management
CN111309928A (zh) * 2020-02-21 2020-06-19 广东电网有限责任公司 一种基于贝叶斯和语义分析的运维知识库构建方法
US11422920B2 (en) * 2020-03-12 2022-08-23 Micro Focus Llc Debugging multiple instances of code using thread patterns
US11269748B2 (en) * 2020-04-22 2022-03-08 Microsoft Technology Licensing, Llc Diagnosing and mitigating memory leak in computing nodes
US11954129B2 (en) 2020-05-19 2024-04-09 Hewlett Packard Enterprise Development Lp Updating data models to manage data drift and outliers
US11095544B1 (en) * 2020-06-17 2021-08-17 Adobe Inc. Robust anomaly and change detection utilizing sparse decomposition
US20210406254A1 (en) 2020-06-26 2021-12-30 Smart Information Flow Technologies, LLC Provenance analysis systems and methods
CN112149951B (zh) * 2020-08-11 2024-07-12 招联消费金融股份有限公司 风险控制方法、装置、计算机设备和存储介质
US12039031B2 (en) * 2020-09-16 2024-07-16 Cisco Technology, Inc. Security policies for software call stacks
US11409453B2 (en) * 2020-09-22 2022-08-09 Dell Products L.P. Storage capacity forecasting for storage systems in an active tier of a storage environment
US11900248B2 (en) * 2020-10-14 2024-02-13 Dell Products L.P. Correlating data center resources in a multi-tenant execution environment using machine learning techniques
WO2022093003A1 (en) * 2020-10-28 2022-05-05 Mimos Berhad Method and system to provide visualization interpretation through establishing relationship between internal and external trending data influences
US11573894B2 (en) 2020-10-29 2023-02-07 Oracle International Corporation Tracking garbage collection states of references
US11656850B2 (en) * 2020-10-30 2023-05-23 Oracle International Corporation System and method for bounded recursion with a microservices or other computing environment
CN112445642B (zh) * 2020-11-09 2023-05-16 浙江吉利控股集团有限公司 异常处理方法、远程泊车辅助系统及计算机存储介质
US11947558B2 (en) 2020-11-12 2024-04-02 Kyndryl, Inc. Built-in analytics for database management
CN112464165B (zh) * 2020-11-25 2023-10-20 西安西热电站信息技术有限公司 一种测点统计效率的提升方法、存储介质及计算设备
CN112380044B (zh) * 2020-12-04 2024-05-28 腾讯科技(深圳)有限公司 数据异常检测方法、装置、计算机设备和存储介质
CN114626660A (zh) * 2020-12-11 2022-06-14 沃尔玛阿波罗有限责任公司 用于激增调整预报的方法和装置
US11573794B2 (en) 2021-03-25 2023-02-07 Oracle International Corporation Implementing state-based frame barriers to process colorless roots during concurrent execution
US11875193B2 (en) 2021-03-25 2024-01-16 Oracle International Corporation Tracking frame states of call stack frames including colorless roots
US11513954B2 (en) * 2021-03-25 2022-11-29 Oracle International Corporation Consolidated and concurrent remapping and identification for colorless roots
CN112988391B (zh) * 2021-03-30 2023-08-01 北京字跳网络技术有限公司 数据处理方法、装置、设备和存储介质
US11681672B2 (en) * 2021-03-30 2023-06-20 International Business Machines Corporation Virtual database resource usage
US11762934B2 (en) 2021-05-11 2023-09-19 Oracle International Corporation Target web and social media messaging based on event signals
US11507503B1 (en) 2021-05-19 2022-11-22 Oracle International Corporation Write barrier for remembered set maintenance in generational Z garbage collector
US20220383341A1 (en) * 2021-05-28 2022-12-01 Microsoft Technology Licensing, Llc Entity health evaluation microservice for a product
US11388210B1 (en) * 2021-06-30 2022-07-12 Amazon Technologies, Inc. Streaming analytics using a serverless compute system
US11411805B1 (en) 2021-07-12 2022-08-09 Bank Of America Corporation System and method for detecting root cause of an exception error in a task flow in a distributed network
US12056469B2 (en) 2021-07-16 2024-08-06 International Business Machines Corporation Autonomous generation of GRC programs
US11886453B2 (en) * 2021-10-29 2024-01-30 Splunk Inc. Quantization of data streams of instrumented software and handling of delayed or late data
US12086049B2 (en) 2021-12-30 2024-09-10 Microsoft Technology Licensing, Llc Resource capacity management in computing systems
US11438251B1 (en) 2022-02-28 2022-09-06 Bank Of America Corporation System and method for automatic self-resolution of an exception error in a distributed network
US11892937B2 (en) 2022-02-28 2024-02-06 Bank Of America Corporation Developer test environment with containerization of tightly coupled systems
US12028203B2 (en) 2022-02-28 2024-07-02 Bank Of America Corporation Self-resolution of exception errors in a distributed network
CN115328978B (zh) * 2022-06-27 2023-11-17 光大环境科技(中国)有限公司 一种连接池的连接方法和服务器
US12019541B2 (en) 2022-10-17 2024-06-25 Oracle International Corporation Lazy compaction in garbage collection
CN115796294B (zh) * 2023-02-07 2023-04-07 江苏微知量子科技有限公司 一种面向量子计算的大规模数据调用系统
CN115827988B (zh) * 2023-02-10 2023-04-25 成都桉尼维尔信息科技有限公司 一种自媒体内容热度预测方法
CN117939506B (zh) * 2024-03-25 2024-06-18 云南大学 一种基于近似依赖规则的无线通信网络异常检测方法

Family Cites Families (141)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3726192A1 (de) 1987-08-06 1989-02-16 Otto Mueller Stacksteuerung
US5503707A (en) 1993-09-22 1996-04-02 Texas Instruments Incorporated Method and apparatus for process endpoint prediction based on actual thickness measurements
US5928369A (en) 1996-06-28 1999-07-27 Synopsys, Inc. Automatic support system and method based on user submitted stack trace
US6167535A (en) 1997-12-09 2000-12-26 Sun Microsystems, Inc. Object heap analysis techniques for discovering memory leaks and other run-time information
US6751789B1 (en) 1997-12-12 2004-06-15 International Business Machines Corporation Method and system for periodic trace sampling for real-time generation of segments of call stack trees augmented with call stack position determination
US6560773B1 (en) 1997-12-12 2003-05-06 International Business Machines Corporation Method and system for memory leak detection in an object-oriented environment during real-time trace processing
US6839725B2 (en) * 2000-05-16 2005-01-04 Sun Microsystems, Inc. Dynamic adaptive tenuring of objects
US6968557B1 (en) * 2000-12-18 2005-11-22 Stratum8 Corporation Reducing stack memory resources in a threaded computer system
US7320125B2 (en) 2001-05-24 2008-01-15 Techtracker, Inc. Program execution stack signatures
US6898737B2 (en) * 2001-05-24 2005-05-24 Microsoft Corporation Automatic classification of event data
US6754796B2 (en) * 2001-07-31 2004-06-22 Sun Microsystems, Inc. Frameworks for implementation of java heaps
US6934942B1 (en) 2001-08-24 2005-08-23 Microsoft Corporation System and method for using data address sequences of a program in a software development tool
US7802236B2 (en) 2002-09-09 2010-09-21 The Regents Of The University Of California Method and apparatus for identifying similar regions of a program's execution
US20040054991A1 (en) 2002-09-17 2004-03-18 Harres John M. Debugging tool and method for tracking code execution paths
US7035846B2 (en) 2002-09-23 2006-04-25 International Business Machines Corporation Methods, computer programs and apparatus for caching directory queries
US6670897B1 (en) 2002-10-03 2003-12-30 Motorola, Inc. Compression/decompression techniques based on tokens and Huffman coding
US7100079B2 (en) * 2002-10-22 2006-08-29 Sun Microsystems, Inc. Method and apparatus for using pattern-recognition to trigger software rejuvenation
US7072918B2 (en) * 2003-03-24 2006-07-04 Sun Microsystems, Inc. Remembered-set scrubbing to remove stale entries in an incremental garbage collector
WO2004099985A1 (ja) * 2003-05-09 2004-11-18 Fujitsu Limited 実行環境の危険予測/回避方法,システム,プログラムおよびその記録媒体
US7529786B2 (en) * 2003-07-30 2009-05-05 Bea Systems, Inc. System and method for adaptive garbage collection in a virtual machine environment
US7412694B2 (en) 2003-09-18 2008-08-12 International Business Machines Corporation Detecting program phases with periodic call-stack sampling during garbage collection
US7257657B2 (en) * 2003-11-06 2007-08-14 International Business Machines Corporation Method and apparatus for counting instruction execution and data accesses for specific types of instructions
US7149870B2 (en) 2004-06-04 2006-12-12 International Business Machines Corporation Assigning sections within a memory heap for efficient garbage collection of large objects
US7685575B1 (en) * 2004-06-08 2010-03-23 Sun Microsystems, Inc. Method and apparatus for analyzing an application
US7480648B2 (en) 2004-12-06 2009-01-20 International Business Machines Corporation Research rapidity and efficiency improvement by analysis of research artifact similarity
US7703087B1 (en) 2004-12-10 2010-04-20 Oracle America, Inc. Reducing layout conflicts among code units with caller-callee relationships
US20060173877A1 (en) 2005-01-10 2006-08-03 Piotr Findeisen Automated alerts for resource retention problems
DK1688842T3 (da) * 2005-01-26 2008-06-16 Oce Tech Bv Automatiseret ydelsesanalyse og fejludbedring
US7747556B2 (en) * 2005-02-28 2010-06-29 Microsoft Corporation Query-based notification architecture
US7434206B2 (en) 2005-03-10 2008-10-07 Hewlett-Packard Development Company, L.P. Identifying memory leaks in computer systems
US7509632B2 (en) * 2005-03-24 2009-03-24 International Business Machines Corporation Method and apparatus for analyzing call history data derived from execution of a computer program
EP2998894B1 (en) 2005-07-11 2021-09-08 Brooks Automation, Inc. Intelligent condition monitoring and fault diagnostic system
GB0515405D0 (en) * 2005-07-27 2005-08-31 Ibm Memory leak detection
US7702966B2 (en) 2005-09-07 2010-04-20 Intel Corporation Method and apparatus for managing software errors in a computer system
US7765528B2 (en) * 2005-09-21 2010-07-27 Hewlett-Packard Development Company, L.P. Identifying sources of memory retention
US7779054B1 (en) * 2005-09-30 2010-08-17 Oracle America, Inc. Heuristic-based resumption of fully-young garbage collection intervals
US7735074B2 (en) 2005-10-17 2010-06-08 Oracle International Corporation Code outlining without trampolines
US8234378B2 (en) 2005-10-20 2012-07-31 Microsoft Corporation Load balancing in a managed execution environment
US7926071B2 (en) 2005-10-20 2011-04-12 Microsoft Corporation Load balancing interfaces
US20070168915A1 (en) * 2005-11-15 2007-07-19 Cesura, Inc. Methods and systems to detect business disruptions, determine potential causes of those business disruptions, or both
US20070136402A1 (en) * 2005-11-30 2007-06-14 International Business Machines Corporation Automatic prediction of future out of memory exceptions in a garbage collected virtual machine
US20070220513A1 (en) * 2006-03-15 2007-09-20 International Business Machines Corporation Automatic detection of hang, bottleneck and deadlock
US20070234296A1 (en) * 2006-03-31 2007-10-04 Microsoft Corporation Software variation for robustness through randomized execution contexts
JP2007286811A (ja) 2006-04-14 2007-11-01 Konica Minolta Holdings Inc 情報処理システム
US7475214B2 (en) 2006-08-16 2009-01-06 International Business Machines Corporation Method and system to optimize java virtual machine performance
US8949295B2 (en) * 2006-09-21 2015-02-03 Vmware, Inc. Cooperative memory resource management via application-level balloon
CN201000563Y (zh) 2006-11-27 2008-01-02 哈尔滨工业大学 毫秒级实时计算机系统监控装置
US7788198B2 (en) * 2006-12-14 2010-08-31 Microsoft Corporation Method for detecting anomalies in server behavior using operational performance and failure mode monitoring counters
US9223622B2 (en) 2007-03-09 2015-12-29 Hewlett-Packard Development Company, L.P. Capacity planning of multi-tiered applications from application logs
US8108874B2 (en) 2007-05-24 2012-01-31 International Business Machines Corporation Minimizing variations of waiting times of requests for services handled by a processor
US7823006B2 (en) 2007-05-29 2010-10-26 Microsoft Corporation Analyzing problem signatures
US7793161B2 (en) 2007-05-29 2010-09-07 International Business Machines Corporation Method and apparatus to anticipate memory exhaustion in an open services gateway initiative environment
US8156378B1 (en) * 2010-10-15 2012-04-10 Red Hat, Inc. System and method for determination of the root cause of an overall failure of a business application service
CN101339533B (zh) * 2007-07-04 2012-10-10 国际商业机器公司 基于分区的诊断Java系统的内存泄漏的方法及装置
US8156492B2 (en) * 2007-09-07 2012-04-10 Oracle International Corporation System and method to improve memory usage in virtual machines running as hypervisor guests
US8266190B2 (en) * 2007-09-25 2012-09-11 International Business Machines Corporation Memory management for garbage collection of critical real time threads
US7991961B1 (en) 2007-10-15 2011-08-02 Oracle America, Inc. Low-overhead run-time memory leak detection and recovery
US10248483B2 (en) * 2007-10-19 2019-04-02 Oracle International Corporation Data recovery advisor
US8214308B2 (en) 2007-10-23 2012-07-03 Sas Institute Inc. Computer-implemented systems and methods for updating predictive models
US9354890B1 (en) 2007-10-23 2016-05-31 Marvell International Ltd. Call stack structure for enabling execution of code outside of a subroutine and between call stack frames
US7962437B2 (en) * 2007-11-16 2011-06-14 International Business Machines Corporation Data comparison using different time periods in data sequences
US20090177692A1 (en) 2008-01-04 2009-07-09 Byran Christopher Chagoly Dynamic correlation of service oriented architecture resource relationship and metrics to isolate problem sources
US8738652B2 (en) * 2008-03-11 2014-05-27 Paragon Science, Inc. Systems and methods for dynamic anomaly detection
US8683483B2 (en) 2008-03-25 2014-03-25 Oracle America, Inc. Resource utilization monitor
US8224624B2 (en) 2008-04-25 2012-07-17 Hewlett-Packard Development Company, L.P. Using application performance signatures for characterizing application updates
US8990792B2 (en) 2008-05-26 2015-03-24 Samsung Electronics Co., Ltd. Method for constructing dynamic call graph of application
US8230269B2 (en) * 2008-06-17 2012-07-24 Microsoft Corporation Monitoring data categorization and module-based health correlations
US20090320021A1 (en) * 2008-06-19 2009-12-24 Microsoft Corporation Diagnosis of application performance problems via analysis of thread dependencies
US7526682B1 (en) * 2008-06-20 2009-04-28 International Business Machines Corporation Effective diagnosis of software hangs
US8566795B2 (en) 2008-07-15 2013-10-22 International Business Machines Corporation Selectively obtaining call stack information based on criteria
JP5310094B2 (ja) 2009-02-27 2013-10-09 日本電気株式会社 異常検出システム、異常検出方法および異常検出用プログラム
US8595702B2 (en) * 2009-03-13 2013-11-26 Microsoft Corporation Simultaneously displaying multiple call stacks in an interactive debugger
US8185781B2 (en) * 2009-04-09 2012-05-22 Nec Laboratories America, Inc. Invariants-based learning method and system for failure diagnosis in large scale computing systems
US8375251B2 (en) * 2009-06-11 2013-02-12 Microsoft Corporation Monitoring and healing a computing system
US9058421B2 (en) 2009-06-16 2015-06-16 Freescale Semiconductor, Inc. Trace correlation for profiling subroutines
US9280436B2 (en) 2009-06-17 2016-03-08 Hewlett Packard Enterprise Development Lp Modeling a computing entity
US8099631B2 (en) 2009-07-17 2012-01-17 Sap Ag Call-stacks representation for easier analysis of thread dump
CN101630285A (zh) 2009-08-07 2010-01-20 华南理工大学 一种应用于嵌入式系统的软件性能测试方法
US8103769B1 (en) 2009-09-03 2012-01-24 Amazon Technologies, Inc. Dynamic isolation of shared resources
US20110067007A1 (en) * 2009-09-14 2011-03-17 Red Hat, Inc. Automatic thread dumping
US8166269B2 (en) * 2009-11-05 2012-04-24 Oracle America, Inc. Adaptive triggering of garbage collection
US20110161048A1 (en) * 2009-12-31 2011-06-30 Bmc Software, Inc. Method to Optimize Prediction of Threshold Violations Using Baselines
US9003377B2 (en) 2010-01-07 2015-04-07 Microsoft Technology Licensing, Llc Efficient resumption of co-routines on a linear stack
JP5418250B2 (ja) 2010-01-26 2014-02-19 富士通株式会社 異常検出装置、プログラム、及び異常検出方法
US8464255B2 (en) 2010-03-12 2013-06-11 Microsoft Corporation Managing performance interference effects on cloud computing servers
JP2011192097A (ja) 2010-03-16 2011-09-29 Hitachi Ltd 異常検知方法およびそれを用いた情報処理システム
US9053234B2 (en) 2010-04-19 2015-06-09 Apple Inc. Collapsible stack trace
US8712950B2 (en) * 2010-04-29 2014-04-29 Microsoft Corporation Resource capacity monitoring and reporting
US8522216B2 (en) 2010-05-04 2013-08-27 Oracle International Corporation Memory leak detection
US8839209B2 (en) * 2010-05-12 2014-09-16 Salesforce.Com, Inc. Software performance profiling in a multi-tenant environment
US8726240B2 (en) * 2010-05-12 2014-05-13 Salesforce.Com, Inc. Capturing replayable information at software defect locations in a multi-tenant environment
US9274842B2 (en) 2010-06-29 2016-03-01 Microsoft Technology Licensing, Llc Flexible and safe monitoring of computers
US9122784B2 (en) * 2010-08-26 2015-09-01 Hewlett-Packard Development Company, L.P. Isolation of problems in a virtual environment
US8667334B2 (en) * 2010-08-27 2014-03-04 Hewlett-Packard Development Company, L.P. Problem isolation in a virtual environment
US9459942B2 (en) * 2010-08-27 2016-10-04 Hewlett Packard Enterprise Development Lp Correlation of metrics monitored from a virtual environment
US8499066B1 (en) 2010-11-19 2013-07-30 Amazon Technologies, Inc. Predicting long-term computing resource usage
US20120159449A1 (en) * 2010-12-15 2012-06-21 International Business Machines Corporation Call Stack Inspection For A Thread Of Execution
US8627150B2 (en) 2011-01-19 2014-01-07 Oracle International Corporation System and method for using dependency in a dynamic model to relate performance problems in a complex middleware environment
US8892960B2 (en) 2011-01-19 2014-11-18 Oracle International Corporation System and method for determining causes of performance problems within middleware systems
US8631280B2 (en) * 2011-01-19 2014-01-14 Oracle International Corporation Method of measuring and diagnosing misbehaviors of software components and resources
US20120197733A1 (en) 2011-01-27 2012-08-02 Linkedln Corporation Skill customization system
US8818787B2 (en) * 2011-01-31 2014-08-26 Yahoo! Inc. Method and system for predicting performance of software applications on prospective hardware architecture
US8856767B2 (en) 2011-04-29 2014-10-07 Yahoo! Inc. System and method for analyzing dynamic performance of complex applications
US8713378B2 (en) 2011-07-07 2014-04-29 Microsoft Corporation Health monitoring of applications in a guest partition
US9727441B2 (en) 2011-08-12 2017-08-08 Microsoft Technology Licensing, Llc Generating dependency graphs for analyzing program behavior
US9122602B1 (en) * 2011-08-31 2015-09-01 Amazon Technologies, Inc. Root cause detection service
US8965889B2 (en) 2011-09-08 2015-02-24 Oracle International Corporation Bi-temporal user profiles for information brokering in collaboration systems
US8990546B2 (en) 2011-10-31 2015-03-24 Freescale Semiconductor, Inc. Data processing system with safe call and return
US8739172B2 (en) 2012-01-16 2014-05-27 Hewlett-Packard Development Company, L.P. Generating a virtual machine placement plan for an identified seasonality of segments of an aggregated resource usage
US9172608B2 (en) * 2012-02-07 2015-10-27 Cloudera, Inc. Centralized configuration and monitoring of a distributed computing cluster
US8984344B2 (en) 2012-02-09 2015-03-17 Freescale Semiconductor, Inc. Stack-based trace message generation for debug and device thereof
US9104563B2 (en) 2012-02-09 2015-08-11 Microsoft Technology Licensing, Llc Self-tuning statistical resource leak detection
US8943290B2 (en) 2012-03-27 2015-01-27 Oracle International Corporation Automatic management of heterogeneous memory resources
US8892965B2 (en) 2012-05-11 2014-11-18 Unisys Corporation Automated trouble ticket generation
US8719791B1 (en) 2012-05-31 2014-05-06 Google Inc. Display of aggregated stack traces in a source code viewer
US9697102B2 (en) 2012-11-21 2017-07-04 Sap Se Compare concurrent threads executions
US8978022B2 (en) 2013-01-10 2015-03-10 Oracle International Corporation Reducing instruction miss penalties in applications
US9396030B2 (en) 2013-03-13 2016-07-19 Samsung Electronics Co., Ltd. Quota-based adaptive resource balancing in a scalable heap allocator for multithreaded applications
US9015689B2 (en) 2013-03-14 2015-04-21 Board of Regents on Behalf of Arizona State University Stack data management for software managed multi-core processors
US10205640B2 (en) 2013-04-11 2019-02-12 Oracle International Corporation Seasonal trending, forecasting, anomaly detection, and endpoint prediction of java heap usage
US10740358B2 (en) 2013-04-11 2020-08-11 Oracle International Corporation Knowledge-intensive data processing system
CN104182332B (zh) 2013-05-21 2017-09-29 华为技术有限公司 判断资源泄漏、预测资源使用情况的方法及装置
US9146862B2 (en) 2013-07-18 2015-09-29 International Business Machines Corporation Optimizing memory usage across multiple garbage collected computer environments
US9176869B2 (en) 2013-07-18 2015-11-03 Globalfoundries Inc Memory use for garbage collected computer environments
US9442725B2 (en) 2013-08-21 2016-09-13 Airwatch Llc Branch trace compression
US9009539B1 (en) 2014-03-18 2015-04-14 Splunk Inc Identifying and grouping program run time errors
US9210181B1 (en) 2014-05-26 2015-12-08 Solana Networks Inc. Detection of anomaly in network flow data
US9459894B2 (en) 2014-06-17 2016-10-04 International Business Machines Corporation Active control of memory for java virtual machines and other application runtime environments
US10241901B2 (en) 2014-10-06 2019-03-26 Oracle International Corporation Web application performance testing
GB2546205B (en) 2014-10-24 2021-07-21 Google Llc Methods and systems for automated tagging based on software execution traces
US9678868B2 (en) 2014-10-31 2017-06-13 Xiaomi Inc. Method and device for optimizing memory
US9557917B2 (en) 2014-11-10 2017-01-31 International Business Machines Corporation Conditional stack frame allocation
EP3225010B1 (en) 2014-11-25 2018-09-26 Ensilo Ltd. Systems and methods for malicious code detection accuracy assurance
WO2016153790A1 (en) 2015-03-23 2016-09-29 Oracle International Corporation Knowledge-intensive data processing system
US10248561B2 (en) 2015-06-18 2019-04-02 Oracle International Corporation Stateless detection of out-of-memory events in virtual machines
US9720823B2 (en) 2015-06-18 2017-08-01 Oracle International Corporation Free memory trending for detecting out-of-memory events in virtual machines
US9600394B2 (en) 2015-06-18 2017-03-21 Oracle International Corporation Stateful detection of anomalous events in virtual machines
US10025650B2 (en) 2015-09-17 2018-07-17 International Business Machines Corporation Determining a trace of a system dump
US9792200B2 (en) 2016-03-01 2017-10-17 Sap Se Assessing vulnerability impact using call graphs
WO2017196746A1 (en) 2016-05-09 2017-11-16 Oracle International Corporation Memory usage determination techniques
US11327797B2 (en) 2016-05-09 2022-05-10 Oracle International Corporation Memory usage determination techniques

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11468098B2 (en) 2013-04-11 2022-10-11 Oracle International Corporation Knowledge-intensive data processing system

Also Published As

Publication number Publication date
CN105190564A (zh) 2015-12-23
CN105190564B (zh) 2018-03-23
CN105144112A (zh) 2015-12-09
US10205640B2 (en) 2019-02-12
US20150234869A1 (en) 2015-08-20
US20140310235A1 (en) 2014-10-16
JP2016518660A (ja) 2016-06-23
WO2014169056A1 (en) 2014-10-16
EP2984567A1 (en) 2016-02-17
US20140310285A1 (en) 2014-10-16
US9495395B2 (en) 2016-11-15
US20170012834A1 (en) 2017-01-12
WO2014168981A1 (en) 2014-10-16
EP2984568A1 (en) 2016-02-17
EP2984567B1 (en) 2021-08-18
US20140310714A1 (en) 2014-10-16
EP2984568B1 (en) 2017-09-06
US10333798B2 (en) 2019-06-25
CN105144112B (zh) 2018-03-30
US9692662B2 (en) 2017-06-27
US9330119B2 (en) 2016-05-03
JP2016517984A (ja) 2016-06-20
JP6457489B2 (ja) 2019-01-23

Similar Documents

Publication Publication Date Title
JP6577455B2 (ja) スレッド強度分析を用いた季節的傾向把握および予測によるクラウドサービスにおけるsla違反の予測的診断
Li et al. Multivariate time series anomaly detection and interpretation using hierarchical inter-metric and temporal embedding
US11468098B2 (en) Knowledge-intensive data processing system
JP7142116B2 (ja) 知識集約型データ処理システム
US20210334139A1 (en) Compression techniques for encoding stack trace information
US7870550B1 (en) Systems and methods for automated management of software application deployments
US20220172004A1 (en) Monitoring bias metrics and feature attribution for trained machine learning models
US20220171991A1 (en) Generating views for bias metrics and feature attribution captured in machine learning pipelines
US20200356894A1 (en) Visit prediction
Cappiello et al. Improving health monitoring with adaptive data movement in fog computing
Grummitt Automated Performance Management Advice Using Computational Intelligence

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170327

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170327

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180410

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20180710

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180809

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190129

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190214

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190730

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190822

R150 Certificate of patent or registration of utility model

Ref document number: 6577455

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250