JPH11327951A - プログラムの性能をモニタするための方法及び装置 - Google Patents

プログラムの性能をモニタするための方法及び装置

Info

Publication number
JPH11327951A
JPH11327951A JP11063958A JP6395899A JPH11327951A JP H11327951 A JPH11327951 A JP H11327951A JP 11063958 A JP11063958 A JP 11063958A JP 6395899 A JP6395899 A JP 6395899A JP H11327951 A JPH11327951 A JP H11327951A
Authority
JP
Japan
Prior art keywords
routine
call stack
tree structure
program
data processing
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.)
Pending
Application number
JP11063958A
Other languages
English (en)
Inventor
Iii William Preston Alexander
ウィリアム・プレストン・アレキサンダー、3世
Robert Francis Berry
ロバート・フランシス・ベリー
Donald L Mulvey
ドナルド・エル・ムルベイ
Robert John Urquhart
ロバート・ジョン・ユークハート
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH11327951A publication Critical patent/JPH11327951A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/28Error detection; Error correction; Monitoring by checking the correct order of processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3612Software analysis for verifying properties of programs by runtime 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 【課題】 データ処理システムの性能をモニタする改善
された方法及び装置を提供することである。 【解決手段】 タイマ割込みなどの周期的に発生する事
象が検出され、そうした事象の検出に応答して、プログ
ラムに関連付けられるスタックが識別される。スタック
が調査され、プログラムに関連して現在実行されている
各ルーチン(及び特定の呼び出しポイントまたはオフセ
ット)が識別される。各ルーチン(及びオフセット)
が、ツリー構造内のノードとして表される。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は一般に、改善された
データ処理システムに関して、特に、データ処理システ
ムの性能をモニタする改善された方法及び装置に関す
る。より詳細には、本発明は、データ処理システム及び
データ処理システム内で実行されるアプリケーションの
構造化プロファイリングのための、改善された方法及び
装置を提供する。
【0002】
【従来の技術】データ処理システム及びデータ処理シス
テム内で実行されるアプリケーションの性能を分析及び
向上するために、データ処理システム内でシステム資源
を使用しているソフトウェア・モジュールを知ることが
有用である。データ処理システムの効果的な管理及び改
良のためには、様々なシステム資源がどのように、また
いつ使用されているかを知ることが必要である。データ
処理システムをモニタ及び調査し、様々なソフトウェア
・アプリケーションがデータ処理システム内で実行され
ているときの、資源の消費を判断するために性能ツール
が使用される。例えば、性能ツールは、データ処理シス
テム内で最も頻繁に実行されるモジュール及び命令を識
別したり、或いは大量のメモリを割当てたり、大部分の
I/O要求を実行するモジュールを識別したりする。ハ
ードウェア性能ツールはシステム内に組み込まれたり、
或いは後に追加されたりする。ソフトウェア性能ツール
は、パーソナル・コンピュータ・システムなどの、通
常、組み込みハードウェア性能ツールを含まないデータ
処理システム内において有用である。
【0003】1つの既知のソフトウェア性能ツールは、
トレース・ツールであり、これは特定の事象が発生する
とき、それらをログに記録することにより、特定の命令
シーケンスを追跡する。例えば、トレース・ツールは、
モジュール、サブルーチン、メソッド、ファンクショ
ン、またはシステム構成要素へのあらゆる入口(entr
y)、及びそれらからのあらゆる出口(exit)を記録で
きる。或いは、トレース・ツールはリクエスタや、各メ
モリ割当て要求に対して割当てられるメモリ量を記録で
きる。通常、こうした各事象に対して、タイムスタンプ
付きレコードが生成される。また、入口−出口レコード
に類似のレコード対が、任意のコード・セグメントの実
行をトレースしたり、ロックの要求及び解除を記録した
り、I/Oまたはデータ伝送を開始及び完了したり、或
いは他の多くの関心となる事象のために使用される。
【0004】使用される別のツールには、プログラム・
ホット・スポットなどの事象を識別するためのプログラ
ム・サンプリングが含まれる。この技術は、アプリケー
ションまたはデータ処理システムの実行を、定期的に中
断する考え方にもとづく。各中断において、現在実行さ
れているスレッド、すなわち大きなプロセスまたはプロ
グラムの一部に相当するプロセスのプログラム・カウン
タが記録される。通常、事後処理時に、これらのツール
はデータ処理システムのロード・マップ及び記号テーブ
ル情報に対して分析される値を獲得し、どこで時間が消
費されているかに関するプロファイルがこの分析から獲
得される。
【0005】事象ベースのプロファイリングは、欠点を
有する。例えば、事象ベースのプロファイリングは、性
能の点から高価であり(1入口、1出口につき1事
象)、結果の性能ビューをしばしば混乱させる。更にこ
の技術は、常に使用可能な訳でない。なぜなら、これは
コードへの入口事象または出口事象の静的挿入または動
的挿入を要求するからである。事象のこの挿入は、時に
可能でなかったり、少なくとも困難であったりする。例
えば、原始コードが計測コード(to-be-instrumented c
ode)に対して使用不能な場合、事象ベースのプロファ
イリングが可能でないかも知れない。
【0006】他方、サンプル・ベースのプロファイリン
グは、システム性能ビュー("フラット・ビュー")を提
供するが、コスト低減やフック能力に対する依存度の低
減の利点を提供しない。
【0007】更に、サンプル・ベースの技術は、多くの
小さな且つ一見無関係なファンクションにおいて、また
は明確なホット・スポットが明らかでない状況におい
て、どこで時間が消費されているかを識別することがで
きない。プログラム構造の理解無しでは、こうした"フ
ラット"・プロファイルにより、性能改善が達成され得
る箇所を判断する方法は明らかでない。
【0008】従って、データ処理システム及びデータ処
理システム内で実行されるアプリケーションのプロファ
イリングのための、改善された方法及び装置を有するこ
とが有利である。
【0009】
【発明が解決しようとする課題】本発明の目的は、改善
されたデータ処理システムを提供することである。
【0010】本発明の別の目的は、データ処理システム
の性能をモニタする改善された方法及び装置を提供する
ことである。
【0011】更に本発明の別の目的は、データ処理シス
テム及びデータ処理システム内で実行されるアプリケー
ションの構造化プロファイリングのための、改善された
方法及び装置を提供することである。
【0012】
【課題を解決するための手段】本発明は、1つ以上の活
動プログラムを有するシステム全体の性能をモニタする
方法を提供する。周期的に発生する事象が識別され、そ
の事象(例えばタイマ割込み)の時に、活動スレッドに
関連付けられる呼び出しスタックが獲得される。スレッ
ドに対する呼び出しスタックが調査され、現在実行され
ている各ルーチンが識別される。呼び出しスタック内の
各ルーチンが、ツリー構造を有するアカウンティング・
データ構造内のノードとして表される。
【0013】更に、各スレッドの実行に関連する情報
が、ルーチンまたはルーチン内の特定のオフセットを表
すために使用されるノードに関連付けられる。現在実行
されている各スレッドを識別するレポートが作成され
る。
【0014】本発明はまた、データ処理システム内にお
けるメモリ使用を分析するための、データ処理システム
内の方法を提供する。メモリ・アクセスが発生する度
に、ページ・フォルトが開始される。データ処理システ
ム内でページ・フォルトを検出するために、モニタリン
グが実行される。ページ・フォルトの検出に応答して、
ページ・フォルトに関連付けられる呼び出しスタックが
識別される。呼び出しスタックが調査され、ページ・フ
ォルトが検出されたときに実行されていた各ルーチンが
識別される。また、各ルーチンがツリー構造内のノード
として表される。
【0015】
【発明の実施の形態】図1を参照すると、本発明が実現
され得るデータ処理システム100のブロック図が示さ
れる。データ処理システム100は、周辺装置相互接続
(PCI)ローカル・バス・アーキテクチャを使用す
る。図示の例はPCIバスを使用するが、マイクロ・チ
ャネル及びISAなどの他のバス・アーキテクチャも使
用され得る。プロセッサ102及び主メモリ104が、
PCIブリッジ108を介して、PCIローカル・バス
106に接続される。PCIブリッジ108は更に、プ
ロセッサ102のための統合メモリ制御装置及びキャッ
シュ・メモリを含み得る。PCIローカル・バス106
への追加の接続が、直接装置相互接続を介して、または
増設ボードを介して形成される。図示の例では、ローカ
ル・エリア・ネットワーク(LAN)・アダプタ11
0、SCSIホスト・バス・アダプタ112、及び拡張
バス・インタフェース114が、直接装置接続によりP
CIローカル・バス106に接続される。それに対し
て、オーディオ・アダプタ116、グラフィックス・ア
ダプタ118、及びオーディオ/ビデオ・アダプタ(A
/V)119は、拡張スロットに挿入される増設ボード
により、PCIローカル・バス106に接続される。拡
張バス・インタフェース114は、キーボード及びマウ
ス・アダプタ120、モデム122、及び追加メモリ1
24のための接続を提供する。SCSIホスト・バス・
アダプタ112は、図示の例では、ハード・ディスク・
ドライブ126、テープ・ドライブ128、及びCD−
ROM130のための接続を提供する。典型的なPCI
ローカル・バスは、3つまたは4つのPCI拡張スロッ
トまたは増設コネクタをサポートする。図示の例はマザ
ーボード上に4つのロード、及び3つの拡張スロットを
含む。当業者であれば、図1のハードウェアが変化し得
ることが理解できよう。例えば、光ディスク・ドライブ
などの他の周辺装置が、図1に示されるハードウェアに
追加して、或いはその代わりに使用され得る。図示の例
は、本発明に関するアーキテクチャ的な制限を意味する
ものではない。例えば、本発明はメインフレーム・コン
ピュータ上でも実現され得る。
【0016】本発明は、データ処理システム及びデータ
処理システム上で実行されるアプリケーションの構造化
プロファイリングのための、システム、方法及びコンピ
ュータ読出し可能媒体を提供する。本発明の1実施例で
は、多くのオペレーティング・システム内で現在使用可
能なタイマ割込みにより、スレッドが中断される状況に
おいて、中断されたスレッドのスタックから情報を獲得
する。このタイマ割込みは、呼び出しスタックから情報
をサンプリングするために使用される。呼び出しスタッ
クを前後に移動することにより、完全な呼び出しスタッ
クが分析のために獲得される。この呼び出しスタック
は、割込み時にファンクション呼び出しまたはメソッド
呼び出しのシーケンスを記録する。呼び出しスタック
は、プログラムの実行の間に入力されたルーチン(すな
わちモジュール、ファンクション、メソッドなど)と、
ルーチン内のオフセットの順序リストである。例えば、
ルーチンAがルーチンBを呼び出し、次にルーチンBが
ルーチンCを呼び出し、プロセッサがルーチンC内の命
令を実行している場合、呼び出しスタックはABCであ
る。制御がルーチンCからルーチンBに戻るとき、呼び
出しスタックはABである。
【0017】従って、処理の間または事後処理時に、生
成されたプロファイルが、現在既知のプログラム・カウ
ンタ・サンプリング技術の場合のように、単に可能な呼
び出しスタックのリーフ(leaf)だけでなく、全ての可
能な呼び出しスタックのサンプリングを反映する。リー
フは、呼び出しスタック・ツリー構造内において、基本
ノードと呼ばれるルート・ノードから最も遠い距離にあ
るノードである。換言すると、リーフは分岐の末端の、
もはや子孫を有さないノードである。ここで子孫は親ノ
ードの子であり、リーフは子を有さないノードである。
【0018】図2を参照すると、本発明の好適な実施例
に従う呼び出しスタック200が示される。ここで"ス
タック"は、プログラムがステータス・データを記憶す
るための予約されたメモリの領域であり、こうしたステ
ータス・データには、プロシージャ及びファンクション
呼び出しアドレス、渡されたパラメータ、及び時にロー
カル変数などが含まれる。"スタック・フレーム"は、ス
レッドのスタックの一部であり、1つのファンクション
呼び出しに対するローカル記憶(引数、戻りアドレス、
返却値、ローカル変数)を表す。あらゆる活動スレッド
が、システム・メモリの一部をそのスタック空間として
割当てられる。スレッドのスタックは、スタック・フレ
ームのシーケンスを含む。スレッドのスタック上のフレ
ームのセットは、任意の時点におけるそのスレッドの実
行状態を表す。スタック・フレームは通常、相互にリン
クされるので(例えば、各スタック・フレームが以前の
スタック・フレームを指し示す)、しばしば、スタック
・フレームのシーケンスを前後にトレースし、"呼び出
しスタック"を生成することが可能である。呼び出しス
タックは全ての未完のファンクション呼び出しを表す。
換言すると、呼び出しスタックは、任意の時点における
ファンクション呼び出しシーケンスを反映する。
【0019】呼び出しスタック200は、現在実行中の
ルーチン、及びそれを呼び出したルーチン、従って主プ
ログラムまでの途中の全てのルーチンを識別する情報を
含む。呼び出しスタック200は、たくさんのスタック
・フレーム202、204、206及び208を含む。
図示の例では、スタック・フレーム202が呼び出しス
タック200の最上部にあり、スタック・フレーム20
8が呼び出しスタック200の最下部に配置される。呼
び出しスタックの最上部は"ルート"とも呼ばれる。タイ
マ割込み(ほとんどのオペレーティング・システムで見
い出される)が、中断されたスレッドの現在活動状態の
スタック・フレームを指し示すポインタと共に、そのス
レッドのプログラム・カウンタ値(PCV)を獲得する
ように変更される。インテル・アーキテクチャでは、こ
れは通常、レジスタすなわちEIP(プログラム・カウ
ンタ)及びEBP(スタック・フレームを指し示すポイ
ンタ)の内容により表される。現在活動状態のスタック
・フレームをアクセスすることにより、(典型的な)ス
タック・フレーム・リンケージ規約を利用し、全てのフ
レームを一緒に連鎖することが可能である。標準のリン
ケージ規約の一部は、ファンクション戻りアドレスが、
呼び出されたファンクションのスタック・フレームのす
ぐ上に配置されるように規定する。そしてこれは、呼び
出されたファンクションのアドレスを確認するために使
用され得る。この議論ではインテル・ベースのアーキテ
クチャを使用したが、この例に限られるものではない。
ほとんどのアーキテクチャは、変更されたプロファイリ
ング割込みハンドラにより、同様に移動され得るリンケ
ージ規約を使用する。
【0020】タイマ割込みが発生すると、獲得される第
1のパラメータは、プログラム・カウンタ値である。次
の値は、中断されたスレッドに対する現スタック・フレ
ームの最上部を指し示すポインタである。図示の例で
は、この値はスタック・フレーム208内のEBP20
8aを指し示す。EBP208aはスタック・フレーム
206内のEBP206aを指し示し、EBP206a
はスタック・フレーム204内のEBP204aを指し
示す。このEBP204aはスタック・フレーム202
内のEBP202aを指し示す。スタック・フレーム2
02乃至208内にはEIP202b乃至208bが存
在し、これらは呼び出しルーチンの戻りアドレスを識別
する。ルーチンはこれらのアドレスから識別され得る。
従って、ルーチンは、スタックを通じて前方または後方
に移動し、全ての戻りアドレスを収集することにより定
義される。
【0021】図3を参照すると、本発明の好適な実施例
に従う呼び出しスタックのサンプルが示される。呼び出
しスタックのサンプル300は、呼び出しスタックを移
動することにより獲得される。サンプルは、例えばタイ
マ割込みなどの周期的事象が発生する度に獲得される。
これらのサンプルは、後の処理のために記憶されるか、
プログラムが実行され続ける間に処理され得る。
【0022】図示の例では、呼び出しスタック・サンプ
ル300が、プロセス識別子であるPID302と、ス
レッド識別子であるTID304とを含む。呼び出しス
タック・サンプル300はまた、アドレスaddr1
306、addr2 308、...、addrN 3
10を含む。この例では、addr1 306は、割込
み時のプログラム・カウンタの値を表す。このアドレス
は、中断されたファンクションの範囲内のどこかで発生
する。addr2 308は、中断されたファンクショ
ンを呼び出したファンクション内のアドレスを表す。イ
ンテル・プロセッサ・ベースのデータ処理システムで
は、これはその呼び出しの戻りアドレスを表し、その値
から4を減じると、呼び出しサイト(call-site)とし
ても知られる実際の呼び出しのアドレスが得られる。こ
れは図2のEIP208bに相当する。addrN 3
10は、呼び出しスタックの最上部(EIP202b)
である。タイマ割込みが図2に示される呼び出しスタッ
ク状態を有するスレッドを中断した場合に返却される、
呼び出しスタック・サンプルは、中断されたスレッドの
プロセスIDを示すPIDと、中断されたスレッドのス
レッドIDを示すTIDと、中断されたスレッドに対す
るプログラム・カウンタ値を示すPCV(図2では示さ
れていない)と、EIP208b、EIP206b、E
IP204b、及びEIP202bとを含む。図3にお
いて、PCV=addr1、EIP208b=addr
2、EIP206b=addr3、EIP204b=a
ddr4、EIP202b=addr5である。
【0023】次に図4を参照すると、プログラム実行シ
ーケンスが、各ファンクション入口/出口ポイントにお
ける呼び出しスタックの状態と共に示される。図4は入
口及び出口が一定時間間隔で発生するように示すが、こ
れは単に説明の単純化のためだけである。各ファンクシ
ョン(図ではA、B、C及びX)が入口事象フック/出
口事象フックにより計測された場合、各ファンクション
内及びその下流で消費された時間の完全なアカウンティ
ングが、容易に獲得される。図4において、時刻0で
は、実行スレッドはルーチンC内にある。時刻0におけ
る呼び出しスタックはCである。時刻1で、ルーチンC
がルーチンAを呼び出し、呼び出しスタックがCAとな
る。このタイプの計測により、完全なアカウンティング
を可能にするアカウンティング技術及びデータ構造が、
1997年12月12日付けの、係属中の米国特許出願
第989725号(出願人整理番号:AT9−97−3
18)、"System and Method for Providing Trace Inf
ormation Reduction"で述べられている。しかしなが
ら、このタイプの計測は高価であり、偏りをもたらし、
一部の場合では適用が困難である。本発明の目的は、プ
ログラムの呼び出しスタックをサンプリングすることに
より、入口フック/出口フックが生成する性能の偏り
(及び他の複雑な状況)を軽減することである。
【0024】図5を参照すると、同一のプログラムが実
行されるが、この場合には定期的にサンプリングされる
(この例では、割込みが2つのタイムスタンプ値に等価
な周波数で発生する)。各サンプルは、中断されたスレ
ッドの呼び出しスタックのスナップショットを含む。こ
の技法では、全ての呼び出しスタックの組み合わせを見
ることはできない(図5の呼び出しスタック・サンプル
のセットでは、ルーチンXが出現しない)。これはサン
プリングの受け入れ可能な制限である。基本的な考え方
は、適切なサンプリング・レート(例えば1秒当たり3
0回乃至100回)により、ほとんどの時間が消費され
る呼び出しスタックが識別されるということである。た
とえ一部が除外されても、それらがほとんど時間を消費
しない組み合わせであるなら、実際に問題とならないと
判断する。
【0025】図4及び図5に示される詳細なトレース及
び呼び出しスタック・データに関連付けられる性能デー
タは、ツリー形式で表現され得る。図5に示されるよう
な、サンプリングされた呼び出しスタック・データから
獲得される性能データを、同一種類のツリー構造にマッ
プすることも可能である。
【0026】図6を参照すると、本発明の好適な実施例
に従い、呼び出しスタックのサンプリングから生成され
るツリー構造が示される。図6は呼び出しスタック・ツ
リー500を表し、ツリー構造500内の各ノードが、
ファンクション入口ポイントを表す。更に、ツリー構造
500内の各ノード内に、たくさんの統計が記録され
る。図示の例では、ノード502乃至508の各ノード
は、アドレス(addr)、基準時間(BASE)、累
積時間(CUM)、及び親ポインタ及び子ポインタを含
む。アドレスはファンクション入口ポイントを表す。基
準時間は、このスレッドがこのファンクションを実行す
るために直接消費する時間量を表す。累積時間は、この
スレッドがこのファンクション、及び呼び出しスタック
上のその下流の全てのファンクションを実行するために
消費する時間量である。図示の例では、ポインタが各ノ
ードに対して含まれる。1つのポインタは親ポインタ、
すなわちノードの親を指し示すポインタである。各ノー
ドは更に、そのノードの各子を指し示すポインタも含
む。
【0027】当業者であれば、ツリー構造500が様々
な態様で実現され、多くの異なるタイプの統計が、図示
の例で示される以外のノードで保持され得ることが理解
できよう。更に、続く分析を支援するために、他のポイ
ンタがノード内に記憶され得る。更に、例えばルーチン
の名前などの、ルーチンの特性を含むテーブルなどの他
の構造要素が、ノード内に記憶され得る。更に、ツリー
構造内のノードが、ファンクション、更にオフセットに
関連付けられ得る。呼び出しスタックは、全ての戻りア
ドレスを振り返ることにより生成される。これらの戻り
アドレスは、特定のオフセットのファンクションの本体
内で決定する。この情報は、同一のファンクションの異
なる呼び出しの間のアカウンティングの区別を可能にす
る。換言すると、ファンクションXがファンクションA
の2つの異なる呼び出しを有する場合、それらの呼び出
しに関連付けられる時間が別々にアカウントされる。
【0028】図7を参照すると、本発明の好適な実施例
に従い、呼び出しスタック・ツリー構造を作成するプロ
セスのフローチャートが示される。プロセスは呼び出し
スタック・サンプルを読出すことにより開始する(ステ
ップ600)。このステップは呼び出しスタックをサン
プリングし、タイマ割込みが発生するとき実行されてい
るルーチンを決定する。入口フック及び出口フックを要
求するシステムと異なり、本発明は、性能及びルーチン
内で消費される時間に影響する追加の命令を、プログラ
ムに加える必要性を呼び出しスタックを通じて回避す
る。次に、このプロセスまたはスレッド(PID、TI
D)が、ツリー構造内で突き止められる(ステップ60
2)。次に、PTR=root(pid、tid)にセ
ットすることにより、ポインタ(PTR)がこのツリー
構造のルートにセットされる(ステップ604)。この
指標は、呼び出しスタック・サンプル内のエントリの数
Nに等しくセットされる(ステップ606)。
【0029】指標が0に等しいか否かが判断される(ス
テップ608)。指標が0に等しい場合、プロセスは処
理すべき追加の呼び出しスタック・サンプルが存在する
か否かを判断する(ステップ610)。追加の呼び出し
スタック・サンプルが存在する場合、プロセスはステッ
プ600に戻り、別の呼び出しスタック・サンプルを読
出す。それ以外では、プロセスは終了する。
【0030】他方、指標が0に等しくない場合、プロセ
スはサンプル・アドレス(sample_address)を呼び出し
スタック・アドレス(call stack address[index])に
等しくセットする(ステップ612)。次に、PTRの
任意の子に対して、PTR. child. addr=sample_address
か否かが判断される(ステップ614)。換言すると、
このステップは、サンプル・アドレスがツリー構造内の
このレベルにおいて調査されたか否かを判断する。アド
レスがツリー構造内のこのレベルにおいて調査されなか
った場合、PTRの新たな子が生成され、PTR. child.
addrがサンプル・アドレス(sample_address)に等しく
セットされ、ノードの変数PTR. child.BASEが0に等し
くセットされ、ノードの変数PTR. child. CUMが0に等
しくセットされる(ステップ616)。その後、変数PT
R. child. CUMを増分することにより、ノードの累積時
間が増分される(ステップ618)。またステップ61
4において、サンプル・アドレスがこのレベルにおいて
調査された場合、プロセスはステップ618に移行す
る。
【0031】次に、サンプル・アドレス(sample_addre
ss)が、呼び出しスタック・サンプル内の最後のアドレ
ス(call stack address[1])に等しいか否かが判断さ
れる(ステップ620)。サンプル・アドレスが処理さ
れているアドレスに等しい場合、変数PTR. child. BASE
を増分することにより、ノードの基準時間が増分される
(ステップ622)。次にポインタPTRが子にセット
され(ステップ624)、指標が減分されて(ステップ
626)、プロセスは前述のステップ608に戻る。ス
テップ620を再度参照し、サンプル・アドレスが処理
されているアドレスに等しくない場合、プロセスはステ
ップ624に移行する。
【0032】図7の例では、プロセスはプログラムの実
行の間に記録される呼び出しスタック・サンプルを処理
するために使用される。図示のプロセスはまた、プログ
ラムの実行の間に、呼び出しスタック・サンプルを動的
に処理するために実行され得る。例えば、ステップ61
0が次のタイマ割込みの発生まで待機するように変更さ
れ、次の割込みで、ステップ600にループして戻るよ
うにしてもよい。
【0033】サンプリングの間に獲得されるアドレス
は、ファンクションを識別するために使用される。ファ
ンクションは、これらのアドレスをファンクション及び
オフセットにマップすることにより識別される。図8を
参照すると、本発明の好適な実施例に従い、サンプリン
グの間に獲得されるアドレスから、ファンクションを識
別するプロセスのフローチャートが示される。プロセス
は、呼び出しスタックのサンプリングの間に獲得される
プログラム・カウンタ値を読出すことにより開始する
(ステップ700)。ファイルの終りに達したか否かが
判断される(ステップ702)。ファイルの終りに達し
ていない場合、プログラム・カウンタ値が大域マップ内
で検索される(ステップ704)。図示の例の大域マッ
プは、システム及び1プロセス毎の記号のマップであ
り、これはシステム・ローダ情報及びアプリケーショ
ン、ライブラリ、及びシステム記号テーブルから生成さ
れる。プロセスIDに加え、ファンクションID(及び
オフセット)が、プログラム・カウンタ値の検索に応答
して、大域マップから獲得される(ステップ706)。
その後、プロセスはステップ700に戻る。このよう
に、ファンクション及びオフセットの対が、アドレスか
ら導出され得る。
【0034】ファンクション及びオフセット対の情報
が、後述のレポートの作成において使用される。図8に
示されるプロセスは、サンプリングされるプログラムの
実行の間にも使用され得る。
【0035】図9を参照すると、本発明のプロセスを用
いて獲得される構造化プロファイルが示される。プロフ
ァイル800は、カラム802にサンプル番号を示す。
カラム804は呼び出しスタックを示す。カラム804
は、呼び出しスタックと、異なるサンプリング時刻にそ
の呼び出しスタック内に存在するファンクションの識別
とを示す。
【0036】次に図10を参照すると、本発明のプロセ
スを用いて作成されるレコードの図が示される。レコー
ド900内の各ルーチンが、図10のルーチンに関する
情報と一緒に、別々にリストされる。例えば、サンプル
・カラム902はサンプル番号を識別する。次に、呼び
出しカラム904が、各ルーチンが呼び出された回数を
表す。基準カラム906は、ルーチン内で消費された総
時間を含み、累積カラム908は、ルーチン及びそのル
ーチンにより呼び出された全てのルーチン内で消費され
た累積時間を含む。名前カラム910はルーチンの名前
を含む。
【0037】図11を参照すると、本発明の好適な実施
例に従い生成される別のタイプのレポートが示される。
図11に示されるレポートは、図10に示されるのと同
一の多くの情報を表すが、多少異なる形式である。図1
0と同様、レポート1000は呼び出し、基準時間、及
び累積時間に関する情報を含む。
【0038】図2乃至図11に示される例は、データ処
理システム及びデータ処理システム上で実行されるアプ
リケーションの構造化プロファイリングのためのプロセ
スを示す。これらの図で示される例は、タイマ割込みの
発生に応答し、スタックから情報を獲得することを目的
とする。本発明のプロセスは、データ処理システムまた
はアプリケーション内で発生する他のタイプの事象にも
適用可能である。例えば、本発明の別の実施例では、前
述のプロセスがメモリ分析に適用される。タイマ割込み
を使用する代わりに、ページ・フォルト割込みがスタッ
クからデータを収集する信号として使用され得る。図示
の例では、データ処理システム内でメモリ・アクセスが
発生する度にページ・フォルトが強要される。ページ・
フォルトはまた、処理資源に応じて選択的にトリガされ
得る。例えば、ページ・フォルトは、新たなページまた
は異なるページがアクセスされる度に、或いは新たなデ
ータ・ページがアクセスされる度に、または命令ページ
がアクセスされる度にトリガされ得る。すなわち、ペー
ジ・フォルトは、選択されたタイプのメモリ・アクセス
が発生する度に開始され得る。ここでは、選択されるメ
モリ・アクセスのタイプが、あらゆるメモリ・アクセス
から、例えば新たなページ・アクセスまたは異なるペー
ジ・アクセスなどの選択されたアクセスに及ぶ。ページ
・フォルトの強要は、様々な既知の機構により達成さ
れ、それらには物理ページ・フレームの数をより小さな
数に低減する機構などが含まれる。例えば、ページ・フ
レームの数は、データ処理システムのアーキテクチャに
より要求される最小値より大きな、特定の数に低減され
る。ページ・フォルトが発生するとき、ページ・フォル
ト・アドレス及びページ・フォルト命令アドレスが獲得
される。この情報から、前述の本発明のプロセス、及び
後述の追加のプロセスがメモリ使用を分析するために使
用される。
【0039】特に、図2の呼び出しスタック200など
の呼び出しスタックが調査され、図6のツリー構造50
0などのツリー構造が、図7に示されるプロセスを用い
て作成される。基準時間及び累積時間の代わりに、メモ
リ・アクセスの基数及びアクセスの累積数が、メモリ分
析において追跡される。その結果、基準(BASE)は、特
定のファンクションを実行する特定のスレッドにより直
接引き起こされたメモリ・アクセスの回数であり、累積
(CUM)は、特定のファンクション及び呼び出しスタッ
ク上のその下流の全てのファンクションを実行するスレ
ッドによる、メモリ・アクセスの累積数である。
【0040】図12を参照すると、本発明の好適な実施
例に従い、メモリ・アクセスを分析するプロセスのフロ
ーチャートが示される。プロセスは、ページ・フォルト
・アドレス及びページ・フォルト命令アドレスを収集す
ることにより開始し(ステップ1100)、情報が呼び
出しスタックから収集される(ステップ1102)。次
に、アドレスが命令アドレスかデータ・アドレスかを判
断することにより、ページ・フォルトが命令フォルトか
データ・フォルトかが判断される(ステップ110
4)。ページ・フォルト・アドレス及びページ・フォル
ト命令アドレスが同一であると、ページ・フォルトは命
令フォルトである。それ以外では、ページ・フォルトは
データ・フォルトである。アドレスが命令アドレスの場
合、プロセスは終了する。
【0041】ページ・フォルトがデータ・フォルトの場
合、プロセスは次にデータ・アドレスを、モジュール・
アドレス、スタック・アドレスまたはヒープ・アドレス
に分類する(ステップ1106)。データ・アドレスが
モジュール・アドレスの場合、特定のモジュール識別情
報がオフセットと共に、モジュールの開始から収集され
(ステップ1108)、その後プロセスは終了する。デ
ータ・アドレスがスタック・アドレスとして分類される
と、スタック・フレームからオフセットが収集され(ス
テップ1110)、その後プロセスは終了する。データ
・アドレスがヒープ・アドレスとして分類されると、ヒ
ープの開始からオフセットが収集され(ステップ111
2)、その後プロセスは終了する。
【0042】図13を参照すると、本発明の好適な実施
例に従い、ページ・フォルトに応答して獲得されるアド
レスから、ファンクションを識別するプロセスのフロー
チャートが示される。図13に示されるプロセスは、事
後処理式に実行され得るプロセスである。これらのプロ
セスは、図8に示されるプロセスと一緒に、メモリ分析
のための情報を獲得するために使用される。図13のプ
ロセスは、様々なタイプのデータ・アドレスを分析する
ために使用され、図8のプロセスは、ページ・フォルト
の発生に応答して、呼び出しスタックから情報を獲得す
るためのメモリ分析において使用される。
【0043】図13において、プロセスはファイルから
データ情報を獲得するためのデータを読出すことにより
開始する(ステップ1200)。次に、ファイルの終り
に達したか否かが判断される(ステップ1202)。フ
ァイルの終りに達した場合、プロセスは終了する。それ
以外では、データのタイプが識別される(ステップ12
04)。データがスタックに由来する場合、データ名が
記号ファイルから検索され(ステップ1206)、その
後プロセスはステップ1200に戻る。データがモジュ
ールに由来する場合、データ名が同様に記号ファイルか
ら検索され(ステップ1208)、その後プロセスはス
テップ1200に戻る。データがヒープに由来する場合
には、ヒープ及びオフセットが印刷されるか、或いはレ
ポートに記録され(ステップ1210)、その後プロセ
スはステップ1200に戻る。
【0044】メモリ分析において、図8及び図13に示
されるプロセスが、事後処理においてではなく、図7に
示される処理の間に実行され得る。図7のプロセスの実
行の間に、図8及び図13のプロセスを実行する時間コ
ストが並行処理の利点を超えない限り、通常、並行処理
が実行される。
【0045】図14を参照すると、本発明のプロセスを
用いて獲得されるメモリ・プロファイルの図が示され
る。メモリ・プロファイル1300は、プログラムまた
はデータ処理システムの分析の間に収集されたサンプル
の一部を示す。サンプル番号カラム1302は、ページ
・フォルトにより示されたメモリ・アクセスを表すサン
プル番号を示す。データ・カラム1304は、ページ・
フォルトに応答して収集されたデータを表す。メモリ・
プロファイル1300内で、サンプル1及び3は命令フ
ォルトである。サンプル2はモジュールからのデータ・
フォルトである。サンプル2のデータ・カラム1304
において、0x0005はモジュール情報であり、0x
00000008はオフセットである。メモリ・プロフ
ァイル内のサンプル4は、スタックからのデータ・フォ
ルトである。サンプル4において、0x0000000
4はスタック内のオフセットである。ファンクションf
4()に関する情報が、オフセットに対応するファンク
ション名の識別を可能にする。メモリ・プロファイル1
300内のサンプル5は、ヒープからのデータ・フォル
トである。データ・カラム1304内の0x00000
100は、ヒープ内のオフセットである。
【0046】図15を参照すると、本発明の好適な実施
例に従う、命令フォルトに対するxツリー(xtree)・
レポートのサンプルが示される。xツリー・レポート
は、例えば図11に示されるレポートなどの、レポート
のツリー・ビューである。xツリー・レポート1400
において、ライン1402、1404、1406及び1
408は、図14のメモリ・プロファイル1300内の
サンプル1を表す。各ラインはファンクションの識別
子、及びそのファンクションによるアクセスの回数を含
む。例えば、ライン1408では、ファンクションがf
3()であり、アクセスの回数が4である。またライン
1406では、ファンクション名がaであり、アクセス
回数が2である。ライン1410は、図14のメモリ・
プロファイル1300内のサンプル3を表す。図15
で、ライン1404内のX()、及びライン1410内
のY()は、ライン1402内のmain()の子であ
る。ライン1406で、a()はX()の子であり、ラ
イン1408内のf3()はa()の子である。
【0047】次に図16を参照すると、本発明の好適な
実施例に従う、データ・フォルトのxツリー・レポート
のサンプルが示される。xツリー・レポート1500に
おいて、ライン1502、1504、1506、150
8及び1510は、図14のメモリ・プロファイル13
00からのサンプル2を表す。ライン1510におい
て、(m)は変数var_xがモジュール変数であり、
数字4はこのモジュール変数が4回アクセスされたこと
を示す。ライン1512では、(s)がparam_y
が(渡されたパラメータまたはローカル変数として)ス
タック上に存在し、数字2は、この変数が2回アクセス
されたことを示す。ライン1514では、(h)はこの
情報がヒープに由来することを示し、数字3は、オフセ
ット0x000100が3回アクセスされたことを示
す。図示の例では、ファンクションはタイマ・サンプリ
ングによれば、もはやリーフ・ノードではない。代わり
に、変数がリーフ・ノードを形成する。例えば、ライン
1510では、ファンクションf3()の代わりに、v
ar_xがリーフ・ノードである。
【0048】従って、本発明は、データ処理システム及
びそれらのデータ処理システム上で実行されるアプリケ
ーションの構造化データ・プロファイリングのための、
改善された方法及び装置を提供する。この利点は、呼び
出しスタックからの情報を含み、単にリーフだけでな
く、呼び出しスタック全体のサンプリングを反映するプ
ロファイルを提供するプログラム・サンプリングにより
提供される。更に、本発明は他のタイプのスタックにも
適用され得る。例えば、Javaプログラムでは、大量
の時間が"インタプリタ"と呼ばれるサブルーチン内で消
費される。呼び出しスタックが調査された場合、プロフ
ァイルはたくさんの有用な情報を明らかにしない。イン
タプリタが(それ自身のリンケージ規約に従い)それ自
身のスタック、例えばJavaスタック内の情報を追跡
するので、プロセスがJavaスタックを遡り、解釈さ
れたJavaプログラムの立場から、呼び出しシーケン
スを獲得するために使用され得る。
【0049】本発明は全機能型のデータ処理システムの
状況において述べられてきたが、当業者であれば、本発
明のプロセスが、命令のコンピュータ読出し可能媒体の
形態や、多様な形態で配布可能であり、また本発明が配
布を実行するために実際に使用される特定タイプの信号
担持媒体に関係無しに、同様に適用可能であることが理
解できよう。コンピュータ読出し可能媒体の例には、フ
ロッピー・ディスク、ハード・ディスク・ドライブ、R
AM、及びCD−ROMなどの記録式媒体、及びデジタ
ル通信リンク及びアナログ通信リンクなどの伝送式媒体
が含まれる。
【0050】本発明は、ここで開示された形態に限られ
るものではない。多くの変更及び変形が可能なことは、
当業者であれば明らかであろう。例えば、前述の例はタ
イマ割込みを使用したが、前述のサンプリング機構をト
リガするために他の割込みが使用され得る。前述の実施
例は本発明の原理を最良に説明するために選択された
が、当業者であれば、特定の使用に適するような様々な
変更を有する様々な実施例により、本発明を実際に適用
することが可能であろう。
【0051】まとめとして、本発明の構成に関して以下
の事項を開示する。
【0052】(1)プログラムの性能をモニタする方法
であって、選択された事象の発生を検出するステップ
と、前記選択された事象の検出に応答して、前記プログ
ラムに関連付けられる呼び出しスタックを識別するステ
ップと、前記呼び出しスタックを調査し、前記プログラ
ムに関連して現在実行されている各ルーチンを識別する
ステップと、前記の各ルーチンをツリー構造内のノード
として表すステップとを含む、方法。 (2)前記の各ルーチンの実行に関連する情報を、当該
ルーチンを表すために使用される前記ノードに関連付け
るステップを含む、前記(1)記載の方法。 (3)前記の各ルーチンの実行に関連する情報が、ファ
ンクション名及びオフセットを含む、前記(2)記載の
方法。 (4)現在実行されている前記の各ルーチンを識別する
レポートを作成するステップを含む、前記(1)記載の
方法。 (5)前記レポートを作成するステップが、前記呼び出
しスタックが調査される度に発生する、前記(4)記載
の方法。 (6)前記レポートを作成するステップが、前記プログ
ラムの実行の終了後に発生する、前記(4)記載の方
法。 (7)前記レポートがツリー構造の形式である、前記
(4)記載の方法。 (8)前記選択された事象がイベント・タイマである、
前記(1)記載の方法。 (9)前記呼び出しスタックを調査するステップが、周
期的に発生する事象が発生するときに実行されているル
ーチンのリストである、前記呼び出しスタックを読出す
ステップと、選択されたルーチンが前記ツリー構造内で
見い出されるか否かを判断するステップと、前記選択さ
れたルーチンが前記ツリー構造内に不在との判断に応じ
て、別のアドレスを表す親ノードから派生する子ノード
である新たなノードを、前記ツリー構造に追加するステ
ップとを含む、前記(1)記載の方法。 (10)前記リストが、前記ルーチン内の入口ポイント
またはオフセットを識別する複数のアドレスを含む、前
記(9)記載の方法。 (11)プログラムの性能をモニタするデータ処理シス
テムであって、選択された事象を検出する検出手段と、
前記選択された事象の検出に応答して、前記プログラム
に関連付けられる呼び出しスタックを識別する識別手段
と、前記呼び出しスタックを調査し、前記プログラムに
関連して現在実行されている各ルーチンを識別する調査
手段と、前記の各ルーチンをツリー構造内のノードとし
て表す表現手段とを含む、データ処理システム。 (12)前記の各ルーチンの実行に関連する情報を、当
該ルーチンを表すために使用される前記ノードに関連付
ける関連付け手段を含む、前記(11)記載のデータ処
理システム。 (13)現在実行されている前記の各ルーチンを識別す
るレポートを作成する作成手段を含む、前記(11)記
載のデータ処理システム。 (14)前記作成手段が、前記呼び出しスタックが調査
される度に活動化される、前記(13)記載のデータ処
理システム。 (15)前記作成手段が、前記プログラムの実行の終了
後に活動化される、前記(13)記載のデータ処理シス
テム。 (16)前記レポートがツリー構造の形式である、前記
(13)記載のデータ処理システム。 (17)前記選択された事象がイベント・タイマであ
る、前記(11)記載のデータ処理システム。 (18)前記調査手段が、周期的に発生する事象が発生
するときに実行されているルーチンのリストである、前
記呼び出しスタックを読出す読出し手段と、選択された
ルーチンが前記ツリー構造内で見い出されるか否かを判
断する判断手段と、前記選択されたルーチンが前記ツリ
ー構造内に不在との判断に応じて、別のアドレスを表す
親ノードから派生する子ノードである新たなノードを、
前記ツリー構造に追加する追加手段とを含む、前記(1
1)記載のデータ処理システム。 (19)前記リストが、前記ルーチンの入口ポイントを
識別する複数のアドレスを含む、前記(18)記載のデ
ータ処理システム。 (20)プログラムの性能をモニタするために、データ
処理システムにおいて使用されるコンピュータ・プログ
ラム製品であって、周期的に発生する事象を検出する第
1の命令と、前記周期的に発生する事象の検出に応答し
て、前記プログラムに関連付けられる呼び出しスタック
を識別する第2の命令と、前記呼び出しスタックを調査
し、前記プログラムに関連して現在実行されている各ル
ーチンを識別する第3の命令と、前記の各ルーチンをツ
リー構造内のノードとして表す第4の命令とを含む、コ
ンピュータ・プログラム製品。 (21)前記の各ルーチンの実行に関連する情報を、当
該ルーチンを表すために使用される前記ノードに関連付
ける第5の命令を含む、前記(20)記載のコンピュー
タ・プログラム製品。 (22)現在実行されている前記の各ルーチンを識別す
るレポートを作成する第6の命令を含む、前記(20)
記載のコンピュータ・プログラム製品。 (23)前記呼び出しスタックを調査する前記第3の命
令が、前記周期的に発生する事象が発生するときに実行
されているルーチンのリストである、前記呼び出しスタ
ックを読出す命令と、選択されたルーチンが前記ツリー
構造内で見い出されるか否かを判断する命令と、前記選
択されたルーチンが前記ツリー構造内に不在との判断に
応じて、別のアドレスを表す親ノードから派生する子ノ
ードである新たなノードを、前記ツリー構造に追加する
命令とを含む、前記(20)記載のコンピュータ・プロ
グラム製品。
【図面の簡単な説明】
【図1】本発明が実現され得るデータ処理システムのブ
ロック図である。
【図2】本発明の好適な実施例に従う呼び出しスタック
を示す図である。
【図3】本発明の好適な実施例に従う呼び出しスタック
・サンプルを示す図である。
【図4】全ての呼び出しのトレースを示す図である。
【図5】本発明の好適な実施例に従い、図4に示される
実行フローの特定のタイマ・ベースのサンプリングを示
す図である。
【図6】本発明の好適な実施例に従うツリーを示す図で
ある。
【図7】本発明の好適な実施例に従い、呼び出しスタッ
ク・ツリーを作成するプロセスのフローチャートであ
る。
【図8】本発明の好適な実施例に従い、サンプリングの
間に獲得されるアドレスからファンクションを識別する
プロセスのフローチャートである。
【図9】本発明のプロセスを使用することにより獲得さ
れる、構造化プロファイルを示す図である。
【図10】本発明のプロセスを使用し生成されるレコー
ドを示す図である。
【図11】本発明のプロセスを使用し生成され得る、別
のタイプのレポートを示す図である。
【図12】本発明の好適な実施例に従い、メモリ・アク
セスを分析するプロセスのフローチャートである。
【図13】本発明の好適な実施例に従い、ページ・フォ
ルトに応答して獲得されるアドレスから、ファンクショ
ンを識別するプロセスのフローチャートである。
【図14】本発明のプロセスを使用し獲得されるメモリ
・プロファイルを示す図である。
【図15】本発明の好適な実施例に従う命令フォルトの
xツリー・レポート・サンプルを示す図である。
【図16】本発明の好適な実施例に従うデータ・フォル
トのxツリー・レポート・サンプルを示す図である。
【符号の説明】
100 データ処理システム 102 プロセッサ 104 主メモリ 106 PCIローカル・バス 108 PCIブリッジ 110 ローカル・エリア・ネットワーク(LAN)・
アダプタ 112 SCSIホスト・バス・アダプタ 114 拡張バス・インタフェース 116 オーディオ・アダプタ 118 グラフィックス・アダプタ 119 オーディオ/ビデオ・アダプタ(A/V) 120 キーボード及びマウス・アダプタ 122 モデム 124 追加メモリ 126 ハード・ディスク・ドライブ 128 テープ・ドライブ 130 CD−ROM 200 呼び出しスタック 202、204、206、208 スタック・フレーム 500 スタック・ツリー 1000 レポート
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ロバート・フランシス・ベリー アメリカ合衆国78759、テキサス州オース ティン、カーディン・ドライブ 8107 (72)発明者 ドナルド・エル・ムルベイ アメリカ合衆国78664、テキサス州ラウン ド・ロック、ワイルダーネス・ウェイ 31 (72)発明者 ロバート・ジョン・ユークハート アメリカ合衆国、テキサス州オースティ ン、ミスティック・オークス・トレイル 9210

Claims (23)

    【特許請求の範囲】
  1. 【請求項1】プログラムの性能をモニタする方法であっ
    て、 選択された事象の発生を検出するステップと、 前記選択された事象の検出に応答して、前記プログラム
    に関連付けられる呼び出しスタックを識別するステップ
    と、 前記呼び出しスタックを調査し、前記プログラムに関連
    して現在実行されている各ルーチンを識別するステップ
    と、 前記の各ルーチンをツリー構造内のノードとして表すス
    テップとを含む、方法。
  2. 【請求項2】前記の各ルーチンの実行に関連する情報
    を、当該ルーチンを表すために使用される前記ノードに
    関連付けるステップを含む、請求項1記載の方法。
  3. 【請求項3】前記の各ルーチンの実行に関連する情報
    が、ファンクション名及びオフセットを含む、請求項2
    記載の方法。
  4. 【請求項4】現在実行されている前記の各ルーチンを識
    別するレポートを作成するステップを含む、請求項1記
    載の方法。
  5. 【請求項5】前記レポートを作成するステップが、前記
    呼び出しスタックが調査される度に発生する、請求項4
    記載の方法。
  6. 【請求項6】前記レポートを作成するステップが、前記
    プログラムの実行の終了後に発生する、請求項4記載の
    方法。
  7. 【請求項7】前記レポートがツリー構造の形式である、
    請求項4記載の方法。
  8. 【請求項8】前記選択された事象がイベント・タイマで
    ある、請求項1記載の方法。
  9. 【請求項9】前記呼び出しスタックを調査するステップ
    が、 周期的に発生する事象が発生するときに実行されている
    ルーチンのリストである、前記呼び出しスタックを読出
    すステップと、 選択されたルーチンが前記ツリー構造内で見い出される
    か否かを判断するステップと、 前記選択されたルーチンが前記ツリー構造内に不在との
    判断に応じて、別のアドレスを表す親ノードから派生す
    る子ノードである新たなノードを、前記ツリー構造に追
    加するステップとを含む、請求項1記載の方法。
  10. 【請求項10】前記リストが、前記ルーチン内の入口ポ
    イントまたはオフセットを識別する複数のアドレスを含
    む、請求項9記載の方法。
  11. 【請求項11】プログラムの性能をモニタするデータ処
    理システムであって、 選択された事象を検出する検出手段と、 前記選択された事象の検出に応答して、前記プログラム
    に関連付けられる呼び出しスタックを識別する識別手段
    と、 前記呼び出しスタックを調査し、前記プログラムに関連
    して現在実行されている各ルーチンを識別する調査手段
    と、 前記の各ルーチンをツリー構造内のノードとして表す表
    現手段とを含む、データ処理システム。
  12. 【請求項12】前記の各ルーチンの実行に関連する情報
    を、当該ルーチンを表すために使用される前記ノードに
    関連付ける関連付け手段を含む、請求項11記載のデー
    タ処理システム。
  13. 【請求項13】現在実行されている前記の各ルーチンを
    識別するレポートを作成する作成手段を含む、請求項1
    1記載のデータ処理システム。
  14. 【請求項14】前記作成手段が、前記呼び出しスタック
    が調査される度に活動化される、請求項13記載のデー
    タ処理システム。
  15. 【請求項15】前記作成手段が、前記プログラムの実行
    の終了後に活動化される、請求項13記載のデータ処理
    システム。
  16. 【請求項16】前記レポートがツリー構造の形式であ
    る、請求項13記載のデータ処理システム。
  17. 【請求項17】前記選択された事象がイベント・タイマ
    である、請求項11記載のデータ処理システム。
  18. 【請求項18】前記調査手段が、 周期的に発生する事象が発生するときに実行されている
    ルーチンのリストである、前記呼び出しスタックを読出
    す読出し手段と、 選択されたルーチンが前記ツリー構造内で見い出される
    か否かを判断する判断手段と、 前記選択されたルーチンが前記ツリー構造内に不在との
    判断に応じて、別のアドレスを表す親ノードから派生す
    る子ノードである新たなノードを、前記ツリー構造に追
    加する追加手段とを含む、請求項11記載のデータ処理
    システム。
  19. 【請求項19】前記リストが、前記ルーチンの入口ポイ
    ントを識別する複数のアドレスを含む、請求項18記載
    のデータ処理システム。
  20. 【請求項20】プログラムの性能をモニタするために、
    データ処理システムにおいて使用されるコンピュータ・
    プログラム製品であって、 周期的に発生する事象を検出する第1の命令と、 前記周期的に発生する事象の検出に応答して、前記プロ
    グラムに関連付けられる呼び出しスタックを識別する第
    2の命令と、 前記呼び出しスタックを調査し、前記プログラムに関連
    して現在実行されている各ルーチンを識別する第3の命
    令と、 前記の各ルーチンをツリー構造内のノードとして表す第
    4の命令とを含む、コンピュータ・プログラム製品。
  21. 【請求項21】前記の各ルーチンの実行に関連する情報
    を、当該ルーチンを表すために使用される前記ノードに
    関連付ける第5の命令を含む、請求項20記載のコンピ
    ュータ・プログラム製品。
  22. 【請求項22】現在実行されている前記の各ルーチンを
    識別するレポートを作成する第6の命令を含む、請求項
    20記載のコンピュータ・プログラム製品。
  23. 【請求項23】前記呼び出しスタックを調査する前記第
    3の命令が、 前記周期的に発生する事象が発生するときに実行されて
    いるルーチンのリストである、前記呼び出しスタックを
    読出す命令と、 選択されたルーチンが前記ツリー構造内で見い出される
    か否かを判断する命令と、 前記選択されたルーチンが前記ツリー構造内に不在との
    判断に応じて、別のアドレスを表す親ノードから派生す
    る子ノードである新たなノードを、前記ツリー構造に追
    加する命令とを含む、請求項20記載のコンピュータ・
    プログラム製品。
JP11063958A 1998-03-31 1999-03-10 プログラムの性能をモニタするための方法及び装置 Pending JPH11327951A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/052,329 US6002872A (en) 1998-03-31 1998-03-31 Method and apparatus for structured profiling of data processing systems and applications
US09/052329 1998-03-31

Publications (1)

Publication Number Publication Date
JPH11327951A true JPH11327951A (ja) 1999-11-30

Family

ID=21976900

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11063958A Pending JPH11327951A (ja) 1998-03-31 1999-03-10 プログラムの性能をモニタするための方法及び装置

Country Status (4)

Country Link
US (1) US6002872A (ja)
EP (1) EP0947927A3 (ja)
JP (1) JPH11327951A (ja)
KR (1) KR100338223B1 (ja)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002215420A (ja) * 2000-10-10 2002-08-02 Ricoh Co Ltd 画像形成装置、プロセス監視方法、デバッグ方法およびこれらの方法をコンピュータに実行させるプログラム
JP2010198133A (ja) * 2009-02-23 2010-09-09 Internatl Business Mach Corp <Ibm> 性能評価モデリングのための関数選択手法
JP2014505294A (ja) * 2011-01-10 2014-02-27 インターナショナル・ビジネス・マシーンズ・コーポレーション 並行ソフトウェア環境のためのアクティビティ記録システム
US8843684B2 (en) 2010-06-11 2014-09-23 International Business Machines Corporation Performing call stack sampling by setting affinity of target thread to a current process to prevent target thread migration
US9176783B2 (en) 2010-05-24 2015-11-03 International Business Machines Corporation Idle transitions sampling with execution context
US9418005B2 (en) 2008-07-15 2016-08-16 International Business Machines Corporation Managing garbage collection in a data processing system
US9471458B2 (en) 2012-01-05 2016-10-18 International Business Machines Corporation Synchronization activity recording system for a concurrent software environment
JP2017126146A (ja) * 2016-01-13 2017-07-20 富士通株式会社 情報処理装置、実行時間補正方法、および実行時間補正プログラム
JP2019520630A (ja) * 2016-05-09 2019-07-18 オラクル・インターナショナル・コーポレイション 出現した関係におけるスタックセグメント強度の相関

Families Citing this family (93)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6701519B1 (en) * 2000-04-12 2004-03-02 Compuware Corporation Managing hardware and software configuration information of systems being tested
US6145121A (en) * 1997-04-17 2000-11-07 University Of Washington Trace based method for the analysis, benchmarking and tuning of object oriented databases and applications
US6338159B1 (en) * 1997-12-12 2002-01-08 International Business Machines Corporation System and method for providing trace information
US6311325B1 (en) * 1998-10-22 2001-10-30 International Business Machines Corporation Method and apparatus for profiling processes in a data processing system background of the invention
US6662358B1 (en) 1997-12-12 2003-12-09 International Business Machines Corporation Minimizing profiling-related perturbation using periodic contextual 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
US6513155B1 (en) 1997-12-12 2003-01-28 International Business Machines Corporation Method and system for merging event-based data and sampled data into postprocessed trace output
US6158024A (en) * 1998-03-31 2000-12-05 International Business Machines Corporation Method and apparatus for structured memory analysis of data processing systems and applications
US6954922B2 (en) * 1998-04-29 2005-10-11 Sun Microsystems, Inc. Method apparatus and article of manufacture for time profiling multi-threaded programs
US6079032A (en) * 1998-05-19 2000-06-20 Lucent Technologies, Inc. Performance analysis of computer systems
US6952827B1 (en) 1998-11-13 2005-10-04 Cray Inc. User program and operating system interface in a multithreaded environment
US6314471B1 (en) * 1998-11-13 2001-11-06 Cray Inc. Techniques for an interrupt free operating system
US6480818B1 (en) 1998-11-13 2002-11-12 Cray Inc. Debugging techniques in a multithreaded environment
US6862635B1 (en) * 1998-11-13 2005-03-01 Cray Inc. Synchronization techniques in a multithreaded environment
US6763370B1 (en) 1998-11-16 2004-07-13 Softricity, Inc. Method and apparatus for content protection in a secure content delivery system
US7017188B1 (en) 1998-11-16 2006-03-21 Softricity, Inc. Method and apparatus for secure content delivery over broadband access networks
US7225264B2 (en) 1998-11-16 2007-05-29 Softricity, Inc. Systems and methods for delivering content over a computer network
US6430676B1 (en) 1998-12-23 2002-08-06 Cray Inc. Method and system for calculating instruction lookahead
US6230313B1 (en) 1998-12-23 2001-05-08 Cray Inc. Parallelism performance analysis based on execution trace information
US6415433B1 (en) 1998-12-23 2002-07-02 Cray Inc. Method and system for identifying locations to move portions of the computer program
US6321379B1 (en) 1998-12-23 2001-11-20 Cray Inc. Method and system for target register allocation
US6665688B1 (en) 1998-12-23 2003-12-16 Cray Inc. Method and system for automatically regenerating data on-demand
US6353829B1 (en) 1998-12-23 2002-03-05 Cray Inc. Method and system for memory allocation in a multiprocessing environment
US7065717B1 (en) * 1999-01-19 2006-06-20 International Business Machines Corporation Tree-based interface apparatus for display of call dependencies and method therefor
US7941647B2 (en) 1999-01-28 2011-05-10 Ati Technologies Ulc Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination
US7013456B1 (en) 1999-01-28 2006-03-14 Ati International Srl Profiling execution of computer programs
US8074055B1 (en) 1999-01-28 2011-12-06 Ati Technologies Ulc Altering data storage conventions of a processor when execution flows from first architecture code to second architecture code
US8121828B2 (en) 1999-01-28 2012-02-21 Ati Technologies Ulc Detecting conditions for transfer of execution from one computer instruction stream to another and executing transfer on satisfaction of the conditions
US8127121B2 (en) 1999-01-28 2012-02-28 Ati Technologies Ulc Apparatus for executing programs for a first computer architechture on a computer of a second architechture
US6826748B1 (en) 1999-01-28 2004-11-30 Ati International Srl Profiling program execution into registers of a computer
US6954923B1 (en) 1999-01-28 2005-10-11 Ati International Srl Recording classification of instructions executed by a computer
US7111290B1 (en) 1999-01-28 2006-09-19 Ati International Srl Profiling program execution to identify frequently-executed portions and to assist binary translation
US7392431B2 (en) * 1999-02-19 2008-06-24 Texas Instruments Incorporated Emulation system with peripherals recording emulation frame when stop generated
US7370071B2 (en) 2000-03-17 2008-05-06 Microsoft Corporation Method for serving third party software applications from servers to client computers
US7730169B1 (en) 1999-04-12 2010-06-01 Softricity, Inc. Business method and system for serving third party software applications
US8099758B2 (en) 1999-05-12 2012-01-17 Microsoft Corporation Policy based composite file system and method
US6374369B1 (en) * 1999-05-21 2002-04-16 Philips Electronics North America Corporation Stochastic performance analysis method and apparatus therefor
US6247170B1 (en) * 1999-05-21 2001-06-12 Bull Hn Information Systems Inc. Method and data processing system for providing subroutine level instrumentation statistics
US6779107B1 (en) 1999-05-28 2004-08-17 Ati International Srl Computer execution by opportunistic adaptation
US6327700B1 (en) * 1999-06-08 2001-12-04 Appliant Corporation Method and system for identifying instrumentation targets in computer programs related to logical transactions
US6418442B1 (en) * 1999-06-29 2002-07-09 Sun Microsystems, Inc. Method and apparatus for providing thread-specific computer system parameters
US6604210B1 (en) * 1999-09-09 2003-08-05 International Business Machines Corporation Method and system for detecting and recovering from in trace data
US7080359B2 (en) * 2002-01-16 2006-07-18 International Business Machines Corporation Stack unique signatures for program procedures and methods
US20020059562A1 (en) * 2000-09-26 2002-05-16 Yutaka Haga Apparatus for collecting profiles of programs
US6654850B2 (en) 2001-03-26 2003-11-25 Seagate Technology Llc Parametric optimization of a disc drive through I/O command sequence analysis
US7120901B2 (en) * 2001-10-26 2006-10-10 International Business Machines Corporation Method and system for tracing and displaying execution of nested functions
US7669189B1 (en) * 2002-06-26 2010-02-23 Oracle International Corporation Monitoring memory accesses for computer programs
US20040013250A1 (en) * 2002-07-22 2004-01-22 Sreekrishna Kotnur System and method of tracking component object requests
US7114150B2 (en) * 2003-02-13 2006-09-26 International Business Machines Corporation Apparatus and method for dynamic instrumenting of code to minimize system perturbation
GB0312886D0 (en) * 2003-06-05 2003-07-09 Ibm A method system and computer program product for tracing software methods
US7493622B2 (en) * 2003-08-12 2009-02-17 Hewlett-Packard Development Company, L.P. Use of thread-local storage to propagate application context in Java 2 enterprise edition (J2EE) applications
US6925928B2 (en) * 2003-09-18 2005-08-09 Anthony Fox Trash compactor for fast food restaurant waste
US8640114B2 (en) 2006-09-07 2014-01-28 Oracle America, Inc. Method and apparatus for specification and application of a user-specified filter in a data space profiler
US20060031837A1 (en) * 2004-08-05 2006-02-09 International Business Machines Corporation Thread starvation profiler
US7506320B2 (en) * 2004-09-09 2009-03-17 International Business Machines Corporation Generating sequence diagrams using call trees
US20060130001A1 (en) * 2004-11-30 2006-06-15 International Business Machines Corporation Apparatus and method for call stack profiling for a software application
US7788644B2 (en) * 2005-03-24 2010-08-31 Sap Ag Method and system for monitoring performance on a mobile device
US7607122B2 (en) * 2005-06-17 2009-10-20 Microsoft Corporation Post build process to record stack and call tree information
US20070038896A1 (en) * 2005-08-12 2007-02-15 International Business Machines Corporation Call-stack pattern matching for problem resolution within software
US8813055B2 (en) * 2006-11-08 2014-08-19 Oracle America, Inc. Method and apparatus for associating user-specified data with events in a data space profiler
US8032875B2 (en) * 2006-11-28 2011-10-04 Oracle America, Inc. Method and apparatus for computing user-specified cost metrics in a data space profiler
JP4940996B2 (ja) * 2007-02-23 2012-05-30 富士通セミコンダクター株式会社 プロファイリング装置およびプロファイリングプログラム
US8762951B1 (en) 2007-03-21 2014-06-24 Oracle America, Inc. Apparatus and method for profiling system events in a fine grain multi-threaded multi-core processor
US8601469B2 (en) * 2007-03-30 2013-12-03 Sap Ag Method and system for customizing allocation statistics
US8336033B2 (en) * 2007-03-30 2012-12-18 Sap Ag Method and system for generating a hierarchical tree representing stack traces
US8356286B2 (en) * 2007-03-30 2013-01-15 Sap Ag Method and system for providing on-demand profiling infrastructure for profiling at virtual machines
US8667471B2 (en) 2007-03-30 2014-03-04 Sap Ag Method and system for customizing profiling sessions
US8522209B2 (en) * 2007-03-30 2013-08-27 Sap Ag Method and system for integrating profiling and debugging
US20080243970A1 (en) * 2007-03-30 2008-10-02 Sap Ag Method and system for providing loitering trace in virtual machines
JP5299272B2 (ja) * 2007-04-12 2013-09-25 富士通株式会社 分析プログラムおよび分析装置
US8074207B1 (en) * 2007-05-31 2011-12-06 Adobe Systems Incorporated Application profiling
US20090228875A1 (en) * 2008-03-04 2009-09-10 Devries Alex Method and System for Reducing Disk Allocation by Profiling Symbol Usage
US8271959B2 (en) * 2008-04-27 2012-09-18 International Business Machines Corporation Detecting irregular performing code within computer programs
US8990792B2 (en) * 2008-05-26 2015-03-24 Samsung Electronics Co., Ltd. Method for constructing dynamic call graph of application
US9201793B2 (en) * 2008-05-30 2015-12-01 Red Hat, Inc. Facilitating profiling of applications for efficient loading
US9167028B1 (en) * 2009-09-10 2015-10-20 AppDynamics, Inc. Monitoring distributed web application transactions
US8938533B1 (en) * 2009-09-10 2015-01-20 AppDynamics Inc. Automatic capture of diagnostic data based on transaction behavior learning
US8555259B2 (en) * 2009-12-04 2013-10-08 International Business Machines Corporation Verifying function performance based on predefined count ranges
US8516450B2 (en) * 2010-03-19 2013-08-20 Oracle International Corporation Detecting real-time invalid memory references
US8612952B2 (en) * 2010-04-07 2013-12-17 International Business Machines Corporation Performance optimization based on data accesses during critical sections
US8799872B2 (en) 2010-06-27 2014-08-05 International Business Machines Corporation Sampling with sample pacing
US9026862B2 (en) * 2010-12-02 2015-05-05 Robert W. Dreyfoos Performance monitoring for applications without explicit instrumentation
KR101027971B1 (ko) 2010-12-10 2011-04-13 (주)헬릭스테크 애플리케이션 검사 가능한 이동통신 단말기 및 그 검사 방법
US8799904B2 (en) 2011-01-21 2014-08-05 International Business Machines Corporation Scalable system call stack sampling
US20120227033A1 (en) * 2011-03-02 2012-09-06 Lei Yu Method and apparatus for evaluating software performance
US20130007769A1 (en) * 2011-06-29 2013-01-03 International Business Machines Corporation Tracking File-Centric Events
US9311598B1 (en) 2012-02-02 2016-04-12 AppDynamics, Inc. Automatic capture of detailed analysis information for web application outliers with very low overhead
US10062135B2 (en) * 2013-07-31 2018-08-28 National Technology & Engineering Solutions Of Sandia, Llc Graphics processing unit management system for computed tomography
DE112014007090T5 (de) 2014-10-24 2017-07-13 Google Inc. Verfahren und systeme zum automatischen tagging anhand von software-ausführungs-traces
US10091076B2 (en) 2015-08-25 2018-10-02 Google Llc Systems and methods for configuring a resource for network traffic analysis
US10171596B2 (en) 2016-10-06 2019-01-01 Bmc Software, Inc. Automatic server cluster discovery
US10180894B2 (en) 2017-06-13 2019-01-15 Microsoft Technology Licensing, Llc Identifying a stack frame responsible for resource usage
CN110908860B (zh) * 2019-10-28 2023-06-09 北京字节跳动网络技术有限公司 一种Java线程的获取方法、装置、介质和电子设备

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3916387A (en) * 1971-04-23 1975-10-28 Ibm Directory searching method and means
JP2777496B2 (ja) * 1991-02-28 1998-07-16 インターナショナル・ビジネス・マシーンズ・コーポレイション コンピュータシステムにおいてマルチプロセスをプロファイリングする際の使用方法
JPH05233326A (ja) * 1991-12-19 1993-09-10 Internatl Business Mach Corp <Ibm> コンピュータシステムにおいて事象を取り扱う方法及びシステム
US5828883A (en) * 1994-03-31 1998-10-27 Lucent Technologies, Inc. Call path refinement profiles
US5732272A (en) * 1995-07-31 1998-03-24 Apple Computer, Inc. Subroutine execution time tracer
US5696701A (en) * 1996-07-12 1997-12-09 Electronic Data Systems Corporation Method and system for monitoring the performance of computers in computer networks using modular extensions
US5889993A (en) * 1996-10-15 1999-03-30 The Regents Of The University Of California Predictive event tracking method
US5911060A (en) * 1997-09-26 1999-06-08 Symantec Corporation Computer method and apparatus for unfreezing an apparently frozen application program being executed under control of an operating system

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002215420A (ja) * 2000-10-10 2002-08-02 Ricoh Co Ltd 画像形成装置、プロセス監視方法、デバッグ方法およびこれらの方法をコンピュータに実行させるプログラム
US9418005B2 (en) 2008-07-15 2016-08-16 International Business Machines Corporation Managing garbage collection in a data processing system
JP2010198133A (ja) * 2009-02-23 2010-09-09 Internatl Business Mach Corp <Ibm> 性能評価モデリングのための関数選択手法
US9176783B2 (en) 2010-05-24 2015-11-03 International Business Machines Corporation Idle transitions sampling with execution context
US8843684B2 (en) 2010-06-11 2014-09-23 International Business Machines Corporation Performing call stack sampling by setting affinity of target thread to a current process to prevent target thread migration
JP2014505294A (ja) * 2011-01-10 2014-02-27 インターナショナル・ビジネス・マシーンズ・コーポレーション 並行ソフトウェア環境のためのアクティビティ記録システム
US9600348B2 (en) 2011-01-10 2017-03-21 International Business Machines Corporation Recording activity of software threads in a concurrent software environment
US9471458B2 (en) 2012-01-05 2016-10-18 International Business Machines Corporation Synchronization activity recording system for a concurrent software environment
JP2017126146A (ja) * 2016-01-13 2017-07-20 富士通株式会社 情報処理装置、実行時間補正方法、および実行時間補正プログラム
JP2019520630A (ja) * 2016-05-09 2019-07-18 オラクル・インターナショナル・コーポレイション 出現した関係におけるスタックセグメント強度の相関
US11093285B2 (en) 2016-05-09 2021-08-17 Oracle International Corporation Compression techniques for encoding stack trace information
US11144352B2 (en) 2016-05-09 2021-10-12 Oracle International Corporation Correlation of thread intensity and heap usage to identify heap-hoarding stack traces
JP2022008497A (ja) * 2016-05-09 2022-01-13 オラクル・インターナショナル・コーポレイション 出現した関係におけるスタックセグメント強度の相関
US11327797B2 (en) 2016-05-09 2022-05-10 Oracle International Corporation Memory usage determination techniques
US11614969B2 (en) 2016-05-09 2023-03-28 Oracle International Corporation Compression techniques for encoding stack trace information
US11640320B2 (en) 2016-05-09 2023-05-02 Oracle International Corporation Correlation of thread intensity and heap usage to identify heap-hoarding stack traces

Also Published As

Publication number Publication date
US6002872A (en) 1999-12-14
KR19990077479A (ko) 1999-10-25
KR100338223B1 (ko) 2002-05-27
EP0947927A2 (en) 1999-10-06
EP0947927A3 (en) 2004-04-14

Similar Documents

Publication Publication Date Title
JP3357621B2 (ja) メモリ使用を分析するための方法及び装置
JPH11327951A (ja) プログラムの性能をモニタするための方法及び装置
US6658654B1 (en) Method and system for low-overhead measurement of per-thread performance information in a multithreaded environment
US8839271B2 (en) Call stack sampling to obtain information for analyzing idle states in a data processing system
US6728949B1 (en) Method and system for periodic trace sampling using a mask to qualify trace data
US6598012B1 (en) Method and system for compensating for output overhead in trace date using trace record information
US6539339B1 (en) Method and system for maintaining thread-relative metrics for trace data adjusted for thread switches
US8255880B2 (en) Counting instruction and memory location ranges
US6546548B1 (en) Method and system for compensating for output overhead in trace data using initial calibration information
US6507805B1 (en) Method and system for compensating for instrumentation overhead in trace data by detecting minimum event times
US7389497B1 (en) Method and system for tracing profiling information using per thread metric variables with reused kernel threads
US6735758B1 (en) Method and system for SMP profiling using synchronized or nonsynchronized metric variables with support across multiple systems
US6662358B1 (en) Minimizing profiling-related perturbation using periodic contextual information
US7257657B2 (en) Method and apparatus for counting instruction execution and data accesses for specific types of instructions
US8689190B2 (en) Counting instruction execution and data accesses
US6732357B1 (en) Determining and compensating for temporal overhead in trace record generation and processing
US20060130001A1 (en) Apparatus and method for call stack profiling for a software application
JPH05197594A (ja) データ処理システム用資源データの実時間捕獲及び減縮方法及びシステム
US20090044198A1 (en) Method and Apparatus for Call Stack Sampling in a Data Processing System
US20070089094A1 (en) Temporal sample-based profiling
US7937691B2 (en) Method and apparatus for counting execution of specific instructions and accesses to specific data locations
US20050071516A1 (en) Method and apparatus to autonomically profile applications
US20050071611A1 (en) Method and apparatus for counting data accesses and instruction executions that exceed a threshold
US6332117B1 (en) General event stamping scheme
US20050071608A1 (en) Method and apparatus for selectively counting instructions and data accesses

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040225

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20040406