JP3357621B2 - メモリ使用を分析するための方法及び装置 - Google Patents
メモリ使用を分析するための方法及び装置Info
- Publication number
- JP3357621B2 JP3357621B2 JP06397499A JP6397499A JP3357621B2 JP 3357621 B2 JP3357621 B2 JP 3357621B2 JP 06397499 A JP06397499 A JP 06397499A JP 6397499 A JP6397499 A JP 6397499A JP 3357621 B2 JP3357621 B2 JP 3357621B2
- Authority
- JP
- Japan
- Prior art keywords
- page fault
- fault
- identifying
- processing system
- address
- 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.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording 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/3466—Performance evaluation by tracing or monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0706—Error 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/073—Error 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 memory management context, e.g. virtual memory or cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0751—Error or fault detection not based on redundancy
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/079—Root cause analysis, i.e. error or fault diagnosis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/86—Event-based monitoring
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)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Debugging And Monitoring (AREA)
Description
【0001】
【発明の属する技術分野】本発明は一般に、改善された
データ処理システムに関して、特に、データ処理システ
ムの性能をモニタする改善された方法及び装置に関す
る。より詳細には、本発明は、データ処理システム及び
データ処理システム内で実行されるアプリケーションの
構造化プロファイリングのための、改善された方法及び
装置を提供する。
データ処理システムに関して、特に、データ処理システ
ムの性能をモニタする改善された方法及び装置に関す
る。より詳細には、本発明は、データ処理システム及び
データ処理システム内で実行されるアプリケーションの
構造化プロファイリングのための、改善された方法及び
装置を提供する。
【0002】
【従来の技術】データ処理システム及びデータ処理シス
テム内で実行されるアプリケーションの性能を分析及び
向上するために、データ処理システム内でシステム資源
を使用しているソフトウェア・モジュールを知ることが
有用である。データ処理システムの効果的な管理及び改
良のためには、様々なシステム資源がどのように、また
いつ使用されているかを知ることが必要である。データ
処理システムをモニタ及び調査し、様々なソフトウェア
・アプリケーションがデータ処理システム内で実行され
ているときの、資源の消費を判断するために性能ツール
が使用される。例えば、性能ツールは、データ処理シス
テム内で最も頻繁に実行されるモジュール及び命令を識
別したり、或いは大量のメモリを割当てたり、大部分の
I/O要求を実行するモジュールを識別したりする。ハ
ードウェア性能ツールはシステム内に組み込まれたり、
或いは後に追加されたりする。ソフトウェア性能ツール
は、パーソナル・コンピュータ・システムなどの、通
常、組み込みハードウェア性能ツールを含まないデータ
処理システム内において有用である。
テム内で実行されるアプリケーションの性能を分析及び
向上するために、データ処理システム内でシステム資源
を使用しているソフトウェア・モジュールを知ることが
有用である。データ処理システムの効果的な管理及び改
良のためには、様々なシステム資源がどのように、また
いつ使用されているかを知ることが必要である。データ
処理システムをモニタ及び調査し、様々なソフトウェア
・アプリケーションがデータ処理システム内で実行され
ているときの、資源の消費を判断するために性能ツール
が使用される。例えば、性能ツールは、データ処理シス
テム内で最も頻繁に実行されるモジュール及び命令を識
別したり、或いは大量のメモリを割当てたり、大部分の
I/O要求を実行するモジュールを識別したりする。ハ
ードウェア性能ツールはシステム内に組み込まれたり、
或いは後に追加されたりする。ソフトウェア性能ツール
は、パーソナル・コンピュータ・システムなどの、通
常、組み込みハードウェア性能ツールを含まないデータ
処理システム内において有用である。
【0003】1つの既知のソフトウェア性能ツールは、
トレース・ツールであり、これは特定の事象が発生する
とき、それらをログに記録することにより、特定の命令
シーケンスを追跡する。例えば、トレース・ツールは、
モジュール、サブルーチン、メソッド、ファンクショ
ン、またはシステム構成要素へのあらゆる入口(entr
y)、及びそれらからのあらゆる出口(exit)を記録で
きる。或いは、トレース・ツールはリクエスタや、各メ
モリ割当て要求に対して割当てられるメモリ量を記録で
きる。通常、こうした各事象に対して、タイムスタンプ
付きレコードが生成される。また、入口−出口レコード
に類似のレコード対が、任意のコード・セグメントの実
行をトレースしたり、ロックの要求及び解除を記録した
り、I/Oまたはデータ伝送を開始及び完了したり、或
いは他の多くの関心となる事象のために使用される。
トレース・ツールであり、これは特定の事象が発生する
とき、それらをログに記録することにより、特定の命令
シーケンスを追跡する。例えば、トレース・ツールは、
モジュール、サブルーチン、メソッド、ファンクショ
ン、またはシステム構成要素へのあらゆる入口(entr
y)、及びそれらからのあらゆる出口(exit)を記録で
きる。或いは、トレース・ツールはリクエスタや、各メ
モリ割当て要求に対して割当てられるメモリ量を記録で
きる。通常、こうした各事象に対して、タイムスタンプ
付きレコードが生成される。また、入口−出口レコード
に類似のレコード対が、任意のコード・セグメントの実
行をトレースしたり、ロックの要求及び解除を記録した
り、I/Oまたはデータ伝送を開始及び完了したり、或
いは他の多くの関心となる事象のために使用される。
【0004】使用される別のツールには、プログラム・
ホット・スポットなどの事象を識別するためのプログラ
ム・サンプリングが含まれる。この技術は、アプリケー
ションまたはデータ処理システムの実行を、定期的に中
断する考え方にもとづく。各中断において、現在実行さ
れているスレッド、すなわち大きなプロセスまたはプロ
グラムの一部に相当するプロセスのプログラム・カウン
タが記録される。通常、事後処理時に、これらのツール
はデータ処理システムのロード・マップ及び記号テーブ
ル情報に対して分析される値を獲得し、どこで時間が消
費されているかに関するプロファイルがこの分析から獲
得される。
ホット・スポットなどの事象を識別するためのプログラ
ム・サンプリングが含まれる。この技術は、アプリケー
ションまたはデータ処理システムの実行を、定期的に中
断する考え方にもとづく。各中断において、現在実行さ
れているスレッド、すなわち大きなプロセスまたはプロ
グラムの一部に相当するプロセスのプログラム・カウン
タが記録される。通常、事後処理時に、これらのツール
はデータ処理システムのロード・マップ及び記号テーブ
ル情報に対して分析される値を獲得し、どこで時間が消
費されているかに関するプロファイルがこの分析から獲
得される。
【0005】事象ベースのプロファイリングは、欠点を
有する。例えば、事象ベースのプロファイリングは、性
能の点から高価であり(1入口、1出口につき1事
象)、結果の性能ビューをしばしば混乱させる。更にこ
の技術は、常に使用可能な訳でない。なぜなら、これは
コードへの入口事象または出口事象の静的挿入または動
的挿入を要求するからである。事象のこの挿入は、時に
可能でなかったり、少なくとも困難であったりする。例
えば、原始コードが計測コード(to-be-instrumented c
ode)に対して使用不能な場合、事象ベースのプロファ
イリングが可能でないかも知れない。
有する。例えば、事象ベースのプロファイリングは、性
能の点から高価であり(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に示されるハードウェアに
追加して、或いはその代わりに使用され得る。図示の例
は、本発明に関するアーキテクチャ的な制限を意味する
ものではない。例えば、本発明はメインフレーム・コン
ピュータ上でも実現され得る。
され得るデータ処理システム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である。
処理システム上で実行されるアプリケーションの構造化
プロファイリングのための、システム、方法及びコンピ
ュータ読出し可能媒体を提供する。本発明の1実施例で
は、多くのオペレーティング・システム内で現在使用可
能なタイマ割込みにより、スレッドが中断される状況に
おいて、中断されたスレッドのスタックから情報を獲得
する。このタイマ割込みは、呼び出しスタックから情報
をサンプリングするために使用される。呼び出しスタッ
クを前後に移動することにより、完全な呼び出しスタッ
クが分析のために獲得される。この呼び出しスタック
は、割込み時にファンクション呼び出しまたはメソッド
呼び出しのシーケンスを記録する。呼び出しスタック
は、プログラムの実行の間に入力されたルーチン(すな
わちモジュール、ファンクション、メソッドなど)と、
ルーチン内のオフセットの順序リストである。例えば、
ルーチンAがルーチンBを呼び出し、次にルーチンBが
ルーチンCを呼び出し、プロセッサがルーチンC内の命
令を実行している場合、呼び出しスタックはABCであ
る。制御がルーチンCからルーチンBに戻るとき、呼び
出しスタックはABである。
【0017】従って、処理の間または事後処理時に、生
成されたプロファイルが、現在既知のプログラム・カウ
ンタ・サンプリング技術の場合のように、単に可能な呼
び出しスタックのリーフ(leaf)だけでなく、全ての可
能な呼び出しスタックのサンプリングを反映する。リー
フは、呼び出しスタック・ツリー構造内において、基本
ノードと呼ばれるルート・ノードから最も遠い距離にあ
るノードである。換言すると、リーフは分岐の末端の、
もはや子孫を有さないノードである。ここで子孫は親ノ
ードの子であり、リーフは子を有さないノードである。
成されたプロファイルが、現在既知のプログラム・カウ
ンタ・サンプリング技術の場合のように、単に可能な呼
び出しスタックのリーフ(leaf)だけでなく、全ての可
能な呼び出しスタックのサンプリングを反映する。リー
フは、呼び出しスタック・ツリー構造内において、基本
ノードと呼ばれるルート・ノードから最も遠い距離にあ
るノードである。換言すると、リーフは分岐の末端の、
もはや子孫を有さないノードである。ここで子孫は親ノ
ードの子であり、リーフは子を有さないノードである。
【0018】図2を参照すると、本発明の好適な実施例
に従う呼び出しスタック200が示される。ここで"ス
タック"は、プログラムがステータス・データを記憶す
るための予約されたメモリの領域であり、こうしたステ
ータス・データには、プロシージャ及びファンクション
呼び出しアドレス、渡されたパラメータ、及び時にロー
カル変数などが含まれる。"スタック・フレーム"は、ス
レッドのスタックの一部であり、1つのファンクション
呼び出しに対するローカル記憶(引数、戻りアドレス、
返却値、ローカル変数)を表す。あらゆる活動スレッド
が、システム・メモリの一部をそのスタック空間として
割当てられる。スレッドのスタックは、スタック・フレ
ームのシーケンスを含む。スレッドのスタック上のフレ
ームのセットは、任意の時点におけるそのスレッドの実
行状態を表す。スタック・フレームは通常、相互にリン
クされるので(例えば、各スタック・フレームが以前の
スタック・フレームを指し示す)、しばしば、スタック
・フレームのシーケンスを前後にトレースし、"呼び出
しスタック"を生成することが可能である。呼び出しス
タックは全ての未完のファンクション呼び出しを表す。
換言すると、呼び出しスタックは、任意の時点における
ファンクション呼び出しシーケンスを反映する。
に従う呼び出しスタック200が示される。ここで"ス
タック"は、プログラムがステータス・データを記憶す
るための予約されたメモリの領域であり、こうしたステ
ータス・データには、プロシージャ及びファンクション
呼び出しアドレス、渡されたパラメータ、及び時にロー
カル変数などが含まれる。"スタック・フレーム"は、ス
レッドのスタックの一部であり、1つのファンクション
呼び出しに対するローカル記憶(引数、戻りアドレス、
返却値、ローカル変数)を表す。あらゆる活動スレッド
が、システム・メモリの一部をそのスタック空間として
割当てられる。スレッドのスタックは、スタック・フレ
ームのシーケンスを含む。スレッドのスタック上のフレ
ームのセットは、任意の時点におけるそのスレッドの実
行状態を表す。スタック・フレームは通常、相互にリン
クされるので(例えば、各スタック・フレームが以前の
スタック・フレームを指し示す)、しばしば、スタック
・フレームのシーケンスを前後にトレースし、"呼び出
しスタック"を生成することが可能である。呼び出しス
タックは全ての未完のファンクション呼び出しを表す。
換言すると、呼び出しスタックは、任意の時点における
ファンクション呼び出しシーケンスを反映する。
【0019】呼び出しスタック200は、現在実行中の
ルーチン、及びそれを呼び出したルーチン、従って主プ
ログラムまでの途中の全てのルーチンを識別する情報を
含む。呼び出しスタック200は、たくさんのスタック
・フレーム202、204、206及び208を含む。
図示の例では、スタック・フレーム202が呼び出しス
タック200の最上部にあり、スタック・フレーム20
8が呼び出しスタック200の最下部に配置される。呼
び出しスタックの最上部は"ルート"とも呼ばれる。タイ
マ割込み(ほとんどのオペレーティング・システムで見
い出される)が、中断されたスレッドの現在活動状態の
スタック・フレームを指し示すポインタと共に、そのス
レッドのプログラム・カウンタ値(PCV)を獲得する
ように変更される。インテル・アーキテクチャでは、こ
れは通常、レジスタすなわちEIP(プログラム・カウ
ンタ)及びEBP(スタック・フレームを指し示すポイ
ンタ)の内容により表される。現在活動状態のスタック
・フレームをアクセスすることにより、(典型的な)ス
タック・フレーム・リンケージ規約を利用し、全てのフ
レームを一緒に連鎖することが可能である。標準のリン
ケージ規約の一部は、ファンクション戻りアドレスが、
呼び出されたファンクションのスタック・フレームのす
ぐ上に配置されるように規定する。そしてこれは、呼び
出されたファンクションのアドレスを確認するために使
用され得る。この議論ではインテル・ベースのアーキテ
クチャを使用したが、この例に限られるものではない。
ほとんどのアーキテクチャは、変更されたプロファイリ
ング割込みハンドラにより、同様に移動され得るリンケ
ージ規約を使用する。
ルーチン、及びそれを呼び出したルーチン、従って主プ
ログラムまでの途中の全てのルーチンを識別する情報を
含む。呼び出しスタック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が存
在し、これらは呼び出しルーチンの戻りアドレスを識別
する。ルーチンはこれらのアドレスから識別され得る。
従って、ルーチンは、スタックを通じて前方または後方
に移動し、全ての戻りアドレスを収集することにより定
義される。
1のパラメータは、プログラム・カウンタ値である。次
の値は、中断されたスレッドに対する現スタック・フレ
ームの最上部を指し示すポインタである。図示の例で
は、この値はスタック・フレーム208内のEBP20
8aを指し示す。EBP208aはスタック・フレーム
206内のEBP206aを指し示し、EBP206a
はスタック・フレーム204内のEBP204aを指し
示す。このEBP204aはスタック・フレーム202
内のEBP202aを指し示す。スタック・フレーム2
02乃至208内にはEIP202b乃至208bが存
在し、これらは呼び出しルーチンの戻りアドレスを識別
する。ルーチンはこれらのアドレスから識別され得る。
従って、ルーチンは、スタックを通じて前方または後方
に移動し、全ての戻りアドレスを収集することにより定
義される。
【0021】図3を参照すると、本発明の好適な実施例
に従う呼び出しスタックのサンプルが示される。呼び出
しスタックのサンプル300は、呼び出しスタックを移
動することにより獲得される。サンプルは、例えばタイ
マ割込みなどの周期的事象が発生する度に獲得される。
これらのサンプルは、後の処理のために記憶されるか、
プログラムが実行され続ける間に処理され得る。
に従う呼び出しスタックのサンプルが示される。呼び出
しスタックのサンプル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である。
ル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"で述べられている。しかしなが
ら、このタイプの計測は高価であり、偏りをもたらし、
一部の場合では適用が困難である。本発明の目的は、プ
ログラムの呼び出しスタックをサンプリングすることに
より、入口フック/出口フックが生成する性能の偏り
(及び他の複雑な状況)を軽減することである。
ーケンスが、各ファンクション入口/出口ポイントにお
ける呼び出しスタックの状態と共に示される。図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回)により、ほとんどの時間が消費され
る呼び出しスタックが識別されるということである。た
とえ一部が除外されても、それらがほとんど時間を消費
しない組み合わせであるなら、実際に問題とならないと
判断する。
行されるが、この場合には定期的にサンプリングされる
(この例では、割込みが2つのタイムスタンプ値に等価
な周波数で発生する)。各サンプルは、中断されたスレ
ッドの呼び出しスタックのスナップショットを含む。こ
の技法では、全ての呼び出しスタックの組み合わせを見
ることはできない(図5の呼び出しスタック・サンプル
のセットでは、ルーチンXが出現しない)。これはサン
プリングの受け入れ可能な制限である。基本的な考え方
は、適切なサンプリング・レート(例えば1秒当たり3
0回乃至100回)により、ほとんどの時間が消費され
る呼び出しスタックが識別されるということである。た
とえ一部が除外されても、それらがほとんど時間を消費
しない組み合わせであるなら、実際に問題とならないと
判断する。
【0025】図4及び図5に示される詳細なトレース及
び呼び出しスタック・データに関連付けられる性能デー
タは、ツリー形式で表現され得る。図5に示されるよう
な、サンプリングされた呼び出しスタック・データから
獲得される性能データを、同一種類のツリー構造にマッ
プすることも可能である。
び呼び出しスタック・データに関連付けられる性能デー
タは、ツリー形式で表現され得る。図5に示されるよう
な、サンプリングされた呼び出しスタック・データから
獲得される性能データを、同一種類のツリー構造にマッ
プすることも可能である。
【0026】図6を参照すると、本発明の好適な実施例
に従い、呼び出しスタックのサンプリングから生成され
るツリー構造が示される。図6は呼び出しスタック・ツ
リー500を表し、ツリー構造500内の各ノードが、
ファンクション入口ポイントを表す。更に、ツリー構造
500内の各ノード内に、たくさんの統計が記録され
る。図示の例では、ノード502乃至508の各ノード
は、アドレス(addr)、基準時間(BASE)、累
積時間(CUM)、及び親ポインタ及び子ポインタを含
む。アドレスはファンクション入口ポイントを表す。基
準時間は、このスレッドがこのファンクションを実行す
るために直接消費する時間量を表す。累積時間は、この
スレッドがこのファンクション、及び呼び出しスタック
上のその下流の全てのファンクションを実行するために
消費する時間量である。図示の例では、ポインタが各ノ
ードに対して含まれる。1つのポインタは親ポインタ、
すなわちノードの親を指し示すポインタである。各ノー
ドは更に、そのノードの各子を指し示すポインタも含
む。
に従い、呼び出しスタックのサンプリングから生成され
るツリー構造が示される。図6は呼び出しスタック・ツ
リー500を表し、ツリー構造500内の各ノードが、
ファンクション入口ポイントを表す。更に、ツリー構造
500内の各ノード内に、たくさんの統計が記録され
る。図示の例では、ノード502乃至508の各ノード
は、アドレス(addr)、基準時間(BASE)、累
積時間(CUM)、及び親ポインタ及び子ポインタを含
む。アドレスはファンクション入口ポイントを表す。基
準時間は、このスレッドがこのファンクションを実行す
るために直接消費する時間量を表す。累積時間は、この
スレッドがこのファンクション、及び呼び出しスタック
上のその下流の全てのファンクションを実行するために
消費する時間量である。図示の例では、ポインタが各ノ
ードに対して含まれる。1つのポインタは親ポインタ、
すなわちノードの親を指し示すポインタである。各ノー
ドは更に、そのノードの各子を指し示すポインタも含
む。
【0027】当業者であれば、ツリー構造500が様々
な態様で実現され、多くの異なるタイプの統計が、図示
の例で示される以外のノードで保持され得ることが理解
できよう。更に、続く分析を支援するために、他のポイ
ンタがノード内に記憶され得る。更に、例えばルーチン
の名前などの、ルーチンの特性を含むテーブルなどの他
の構造要素が、ノード内に記憶され得る。更に、ツリー
構造内のノードが、ファンクション、更にオフセットに
関連付けられ得る。呼び出しスタックは、全ての戻りア
ドレスを振り返ることにより生成される。これらの戻り
アドレスは、特定のオフセットのファンクションの本体
内で決定する。この情報は、同一のファンクションの異
なる呼び出しの間のアカウンティングの区別を可能にす
る。換言すると、ファンクションXがファンクションA
の2つの異なる呼び出しを有する場合、それらの呼び出
しに関連付けられる時間が別々にアカウントされる。
な態様で実現され、多くの異なるタイプの統計が、図示
の例で示される以外のノードで保持され得ることが理解
できよう。更に、続く分析を支援するために、他のポイ
ンタがノード内に記憶され得る。更に、例えばルーチン
の名前などの、ルーチンの特性を含むテーブルなどの他
の構造要素が、ノード内に記憶され得る。更に、ツリー
構造内のノードが、ファンクション、更にオフセットに
関連付けられ得る。呼び出しスタックは、全ての戻りア
ドレスを振り返ることにより生成される。これらの戻り
アドレスは、特定のオフセットのファンクションの本体
内で決定する。この情報は、同一のファンクションの異
なる呼び出しの間のアカウンティングの区別を可能にす
る。換言すると、ファンクションXがファンクションA
の2つの異なる呼び出しを有する場合、それらの呼び出
しに関連付けられる時間が別々にアカウントされる。
【0028】図7を参照すると、本発明の好適な実施例
に従い、呼び出しスタック・ツリー構造を作成するプロ
セスのフローチャートが示される。プロセスは呼び出し
スタック・サンプルを読出すことにより開始する(ステ
ップ600)。このステップは呼び出しスタックをサン
プリングし、タイマ割込みが発生するとき実行されてい
るルーチンを決定する。入口フック及び出口フックを要
求するシステムと異なり、本発明は、性能及びルーチン
内で消費される時間に影響する追加の命令を、プログラ
ムに加える必要性を呼び出しスタックを通じて回避す
る。次に、このプロセスまたはスレッド(PID、TI
D)が、ツリー構造内で突き止められる(ステップ60
2)。次に、PTR=root(pid、tid)にセ
ットすることにより、ポインタ(PTR)がこのツリー
構造のルートにセットされる(ステップ604)。この
指標は、呼び出しスタック・サンプル内のエントリの数
Nに等しくセットされる(ステップ606)。
に従い、呼び出しスタック・ツリー構造を作成するプロ
セスのフローチャートが示される。プロセスは呼び出し
スタック・サンプルを読出すことにより開始する(ステ
ップ600)。このステップは呼び出しスタックをサン
プリングし、タイマ割込みが発生するとき実行されてい
るルーチンを決定する。入口フック及び出口フックを要
求するシステムと異なり、本発明は、性能及びルーチン
内で消費される時間に影響する追加の命令を、プログラ
ムに加える必要性を呼び出しスタックを通じて回避す
る。次に、このプロセスまたはスレッド(PID、TI
D)が、ツリー構造内で突き止められる(ステップ60
2)。次に、PTR=root(pid、tid)にセ
ットすることにより、ポインタ(PTR)がこのツリー
構造のルートにセットされる(ステップ604)。この
指標は、呼び出しスタック・サンプル内のエントリの数
Nに等しくセットされる(ステップ606)。
【0029】指標が0に等しいか否かが判断される(ス
テップ608)。指標が0に等しい場合、プロセスは処
理すべき追加の呼び出しスタック・サンプルが存在する
か否かを判断する(ステップ610)。追加の呼び出し
スタック・サンプルが存在する場合、プロセスはステッ
プ600に戻り、別の呼び出しスタック・サンプルを読
出す。それ以外では、プロセスは終了する。
テップ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に移行す
る。
スはサンプル・アドレス(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に移行する。
ss)が、呼び出しスタック・サンプル内の最後のアドレ
ス(call stack address[1])に等しいか否かが判断さ
れる(ステップ620)。サンプル・アドレスが処理さ
れているアドレスに等しい場合、変数PTR. child. BASE
を増分することにより、ノードの基準時間が増分される
(ステップ622)。次にポインタPTRが子にセット
され(ステップ624)、指標が減分されて(ステップ
626)、プロセスは前述のステップ608に戻る。ス
テップ620を再度参照し、サンプル・アドレスが処理
されているアドレスに等しくない場合、プロセスはステ
ップ624に移行する。
【0032】図7の例では、プロセスはプログラムの実
行の間に記録される呼び出しスタック・サンプルを処理
するために使用される。図示のプロセスはまた、プログ
ラムの実行の間に、呼び出しスタック・サンプルを動的
に処理するために実行され得る。例えば、ステップ61
0が次のタイマ割込みの発生まで待機するように変更さ
れ、次の割込みで、ステップ600にループして戻るよ
うにしてもよい。
行の間に記録される呼び出しスタック・サンプルを処理
するために使用される。図示のプロセスはまた、プログ
ラムの実行の間に、呼び出しスタック・サンプルを動的
に処理するために実行され得る。例えば、ステップ61
0が次のタイマ割込みの発生まで待機するように変更さ
れ、次の割込みで、ステップ600にループして戻るよ
うにしてもよい。
【0033】サンプリングの間に獲得されるアドレス
は、ファンクションを識別するために使用される。ファ
ンクションは、これらのアドレスをファンクション及び
オフセットにマップすることにより識別される。図8を
参照すると、本発明の好適な実施例に従い、サンプリン
グの間に獲得されるアドレスから、ファンクションを識
別するプロセスのフローチャートが示される。プロセス
は、呼び出しスタックのサンプリングの間に獲得される
プログラム・カウンタ値を読出すことにより開始する
(ステップ700)。ファイルの終りに達したか否かが
判断される(ステップ702)。ファイルの終りに達し
ていない場合、プログラム・カウンタ値が大域マップ内
で検索される(ステップ704)。図示の例の大域マッ
プは、システム及び1プロセス毎の記号のマップであ
り、これはシステム・ローダ情報及びアプリケーショ
ン、ライブラリ、及びシステム記号テーブルから生成さ
れる。プロセスIDに加え、ファンクションID(及び
オフセット)が、プログラム・カウンタ値の検索に応答
して、大域マップから獲得される(ステップ706)。
その後、プロセスはステップ700に戻る。このよう
に、ファンクション及びオフセットの対が、アドレスか
ら導出され得る。
は、ファンクションを識別するために使用される。ファ
ンクションは、これらのアドレスをファンクション及び
オフセットにマップすることにより識別される。図8を
参照すると、本発明の好適な実施例に従い、サンプリン
グの間に獲得されるアドレスから、ファンクションを識
別するプロセスのフローチャートが示される。プロセス
は、呼び出しスタックのサンプリングの間に獲得される
プログラム・カウンタ値を読出すことにより開始する
(ステップ700)。ファイルの終りに達したか否かが
判断される(ステップ702)。ファイルの終りに達し
ていない場合、プログラム・カウンタ値が大域マップ内
で検索される(ステップ704)。図示の例の大域マッ
プは、システム及び1プロセス毎の記号のマップであ
り、これはシステム・ローダ情報及びアプリケーショ
ン、ライブラリ、及びシステム記号テーブルから生成さ
れる。プロセスIDに加え、ファンクションID(及び
オフセット)が、プログラム・カウンタ値の検索に応答
して、大域マップから獲得される(ステップ706)。
その後、プロセスはステップ700に戻る。このよう
に、ファンクション及びオフセットの対が、アドレスか
ら導出され得る。
【0034】ファンクション及びオフセット対の情報
が、後述のレポートの作成において使用される。図8に
示されるプロセスは、サンプリングされるプログラムの
実行の間にも使用され得る。
が、後述のレポートの作成において使用される。図8に
示されるプロセスは、サンプリングされるプログラムの
実行の間にも使用され得る。
【0035】図9を参照すると、本発明のプロセスを用
いて獲得される構造化プロファイルが示される。プロフ
ァイル800は、カラム802にサンプル番号を示す。
カラム804は呼び出しスタックを示す。カラム804
は、呼び出しスタックと、異なるサンプリング時刻にそ
の呼び出しスタック内に存在するファンクションの識別
とを示す。
いて獲得される構造化プロファイルが示される。プロフ
ァイル800は、カラム802にサンプル番号を示す。
カラム804は呼び出しスタックを示す。カラム804
は、呼び出しスタックと、異なるサンプリング時刻にそ
の呼び出しスタック内に存在するファンクションの識別
とを示す。
【0036】次に図10を参照すると、本発明のプロセ
スを用いて作成されるレコードの図が示される。レコー
ド900内の各ルーチンが、図10のルーチンに関する
情報と一緒に、別々にリストされる。例えば、サンプル
・カラム902はサンプル番号を識別する。次に、呼び
出しカラム904が、各ルーチンが呼び出された回数を
表す。基準カラム906は、ルーチン内で消費された総
時間を含み、累積カラム908は、ルーチン及びそのル
ーチンにより呼び出された全てのルーチン内で消費され
た累積時間を含む。名前カラム910はルーチンの名前
を含む。
スを用いて作成されるレコードの図が示される。レコー
ド900内の各ルーチンが、図10のルーチンに関する
情報と一緒に、別々にリストされる。例えば、サンプル
・カラム902はサンプル番号を識別する。次に、呼び
出しカラム904が、各ルーチンが呼び出された回数を
表す。基準カラム906は、ルーチン内で消費された総
時間を含み、累積カラム908は、ルーチン及びそのル
ーチンにより呼び出された全てのルーチン内で消費され
た累積時間を含む。名前カラム910はルーチンの名前
を含む。
【0037】図11を参照すると、本発明の好適な実施
例に従い生成される別のタイプのレポートが示される。
図11に示されるレポートは、図10に示されるのと同
一の多くの情報を表すが、多少異なる形式である。図1
0と同様、レポート1000は呼び出し、基準時間、及
び累積時間に関する情報を含む。
例に従い生成される別のタイプのレポートが示される。
図11に示されるレポートは、図10に示されるのと同
一の多くの情報を表すが、多少異なる形式である。図1
0と同様、レポート1000は呼び出し、基準時間、及
び累積時間に関する情報を含む。
【0038】図2乃至図11に示される例は、データ処
理システム及びデータ処理システム上で実行されるアプ
リケーションの構造化プロファイリングのためのプロセ
スを示す。これらの図で示される例は、タイマ割込みの
発生に応答し、スタックから情報を獲得することを目的
とする。本発明のプロセスは、データ処理システムまた
はアプリケーション内で発生する他のタイプの事象にも
適用可能である。例えば、本発明の別の実施例では、前
述のプロセスがメモリ分析に適用される。タイマ割込み
を使用する代わりに、ページ・フォルト割込みがスタッ
クからデータを収集する信号として使用され得る。図示
の例では、データ処理システム内でメモリ・アクセスが
発生する度にページ・フォルトが強要される。ページ・
フォルトはまた、処理資源に応じて選択的にトリガされ
得る。例えば、ページ・フォルトは、新たなページまた
は異なるページがアクセスされる度に、或いは新たなデ
ータ・ページがアクセスされる度に、または命令ページ
がアクセスされる度にトリガされ得る。すなわち、ペー
ジ・フォルトは、選択されたタイプのメモリ・アクセス
が発生する度に開始され得る。ここでは、選択されるメ
モリ・アクセスのタイプが、あらゆるメモリ・アクセス
から、例えば新たなページ・アクセスまたは異なるペー
ジ・アクセスなどの選択されたアクセスに及ぶ。ページ
・フォルトの強要は、様々な既知の機構により達成さ
れ、それらには物理ページ・フレームの数をより小さな
数に低減する機構などが含まれる。例えば、ページ・フ
レームの数は、データ処理システムのアーキテクチャに
より要求される最小値より大きな、特定の数に低減され
る。ページ・フォルトが発生するとき、ページ・フォル
ト・アドレス及びページ・フォルト命令アドレスが獲得
される。この情報から、前述の本発明のプロセス、及び
後述の追加のプロセスがメモリ使用を分析するために使
用される。
理システム及びデータ処理システム上で実行されるアプ
リケーションの構造化プロファイリングのためのプロセ
スを示す。これらの図で示される例は、タイマ割込みの
発生に応答し、スタックから情報を獲得することを目的
とする。本発明のプロセスは、データ処理システムまた
はアプリケーション内で発生する他のタイプの事象にも
適用可能である。例えば、本発明の別の実施例では、前
述のプロセスがメモリ分析に適用される。タイマ割込み
を使用する代わりに、ページ・フォルト割込みがスタッ
クからデータを収集する信号として使用され得る。図示
の例では、データ処理システム内でメモリ・アクセスが
発生する度にページ・フォルトが強要される。ページ・
フォルトはまた、処理資源に応じて選択的にトリガされ
得る。例えば、ページ・フォルトは、新たなページまた
は異なるページがアクセスされる度に、或いは新たなデ
ータ・ページがアクセスされる度に、または命令ページ
がアクセスされる度にトリガされ得る。すなわち、ペー
ジ・フォルトは、選択されたタイプのメモリ・アクセス
が発生する度に開始され得る。ここでは、選択されるメ
モリ・アクセスのタイプが、あらゆるメモリ・アクセス
から、例えば新たなページ・アクセスまたは異なるペー
ジ・アクセスなどの選択されたアクセスに及ぶ。ページ
・フォルトの強要は、様々な既知の機構により達成さ
れ、それらには物理ページ・フレームの数をより小さな
数に低減する機構などが含まれる。例えば、ページ・フ
レームの数は、データ処理システムのアーキテクチャに
より要求される最小値より大きな、特定の数に低減され
る。ページ・フォルトが発生するとき、ページ・フォル
ト・アドレス及びページ・フォルト命令アドレスが獲得
される。この情報から、前述の本発明のプロセス、及び
後述の追加のプロセスがメモリ使用を分析するために使
用される。
【0039】特に、図2の呼び出しスタック200など
の呼び出しスタックが調査され、図6のツリー構造50
0などのツリー構造が、図7に示されるプロセスを用い
て作成される。基準時間及び累積時間の代わりに、メモ
リ・アクセスの基数及びアクセスの累積数が、メモリ分
析において追跡される。その結果、基準(BASE)は、特
定のファンクションを実行する特定のスレッドにより直
接引き起こされたメモリ・アクセスの回数であり、累積
(CUM)は、特定のファンクション及び呼び出しスタッ
ク上のその下流の全てのファンクションを実行するスレ
ッドによる、メモリ・アクセスの累積数である。
の呼び出しスタックが調査され、図6のツリー構造50
0などのツリー構造が、図7に示されるプロセスを用い
て作成される。基準時間及び累積時間の代わりに、メモ
リ・アクセスの基数及びアクセスの累積数が、メモリ分
析において追跡される。その結果、基準(BASE)は、特
定のファンクションを実行する特定のスレッドにより直
接引き起こされたメモリ・アクセスの回数であり、累積
(CUM)は、特定のファンクション及び呼び出しスタッ
ク上のその下流の全てのファンクションを実行するスレ
ッドによる、メモリ・アクセスの累積数である。
【0040】図12を参照すると、本発明の好適な実施
例に従い、メモリ・アクセスを分析するプロセスのフロ
ーチャートが示される。プロセスは、ページ・フォルト
・アドレス及びページ・フォルト命令アドレスを収集す
ることにより開始し(ステップ1100)、情報が呼び
出しスタックから収集される(ステップ1102)。次
に、アドレスが命令アドレスかデータ・アドレスかを判
断することにより、ページ・フォルトが命令フォルトか
データ・フォルトかが判断される(ステップ110
4)。ページ・フォルト・アドレス及びページ・フォル
ト命令アドレスが同一であると、ページ・フォルトは命
令フォルトである。それ以外では、ページ・フォルトは
データ・フォルトである。アドレスが命令アドレスの場
合、プロセスは終了する。
例に従い、メモリ・アクセスを分析するプロセスのフロ
ーチャートが示される。プロセスは、ページ・フォルト
・アドレス及びページ・フォルト命令アドレスを収集す
ることにより開始し(ステップ1100)、情報が呼び
出しスタックから収集される(ステップ1102)。次
に、アドレスが命令アドレスかデータ・アドレスかを判
断することにより、ページ・フォルトが命令フォルトか
データ・フォルトかが判断される(ステップ110
4)。ページ・フォルト・アドレス及びページ・フォル
ト命令アドレスが同一であると、ページ・フォルトは命
令フォルトである。それ以外では、ページ・フォルトは
データ・フォルトである。アドレスが命令アドレスの場
合、プロセスは終了する。
【0041】ページ・フォルトがデータ・フォルトの場
合、プロセスは次にデータ・アドレスを、モジュール・
アドレス、スタック・アドレスまたはヒープ・アドレス
に分類する(ステップ1106)。データ・アドレスが
モジュール・アドレスの場合、特定のモジュール識別情
報がオフセットと共に、モジュールの開始から収集され
(ステップ1108)、その後プロセスは終了する。デ
ータ・アドレスがスタック・アドレスとして分類される
と、スタック・フレームからオフセットが収集され(ス
テップ1110)、その後プロセスは終了する。データ
・アドレスがヒープ・アドレスとして分類されると、ヒ
ープの開始からオフセットが収集され(ステップ111
2)、その後プロセスは終了する。
合、プロセスは次にデータ・アドレスを、モジュール・
アドレス、スタック・アドレスまたはヒープ・アドレス
に分類する(ステップ1106)。データ・アドレスが
モジュール・アドレスの場合、特定のモジュール識別情
報がオフセットと共に、モジュールの開始から収集され
(ステップ1108)、その後プロセスは終了する。デ
ータ・アドレスがスタック・アドレスとして分類される
と、スタック・フレームからオフセットが収集され(ス
テップ1110)、その後プロセスは終了する。データ
・アドレスがヒープ・アドレスとして分類されると、ヒ
ープの開始からオフセットが収集され(ステップ111
2)、その後プロセスは終了する。
【0042】図13を参照すると、本発明の好適な実施
例に従い、ページ・フォルトに応答して獲得されるアド
レスから、ファンクションを識別するプロセスのフロー
チャートが示される。図13に示されるプロセスは、事
後処理式に実行され得るプロセスである。これらのプロ
セスは、図8に示されるプロセスと一緒に、メモリ分析
のための情報を獲得するために使用される。図13のプ
ロセスは、様々なタイプのデータ・アドレスを分析する
ために使用され、図8のプロセスは、ページ・フォルト
の発生に応答して、呼び出しスタックから情報を獲得す
るためのメモリ分析において使用される。
例に従い、ページ・フォルトに応答して獲得されるアド
レスから、ファンクションを識別するプロセスのフロー
チャートが示される。図13に示されるプロセスは、事
後処理式に実行され得るプロセスである。これらのプロ
セスは、図8に示されるプロセスと一緒に、メモリ分析
のための情報を獲得するために使用される。図13のプ
ロセスは、様々なタイプのデータ・アドレスを分析する
ために使用され、図8のプロセスは、ページ・フォルト
の発生に応答して、呼び出しスタックから情報を獲得す
るためのメモリ分析において使用される。
【0043】図13において、プロセスはファイルから
データ情報を獲得するためのデータを読出すことにより
開始する(ステップ1200)。次に、ファイルの終り
に達したか否かが判断される(ステップ1202)。フ
ァイルの終りに達した場合、プロセスは終了する。それ
以外では、データのタイプが識別される(ステップ12
04)。データがスタックに由来する場合、データ名が
記号ファイルから検索され(ステップ1206)、その
後プロセスはステップ1200に戻る。データがモジュ
ールに由来する場合、データ名が同様に記号ファイルか
ら検索され(ステップ1208)、その後プロセスはス
テップ1200に戻る。データがヒープに由来する場合
には、ヒープ及びオフセットが印刷されるか、或いはレ
ポートに記録され(ステップ1210)、その後プロセ
スはステップ1200に戻る。
データ情報を獲得するためのデータを読出すことにより
開始する(ステップ1200)。次に、ファイルの終り
に達したか否かが判断される(ステップ1202)。フ
ァイルの終りに達した場合、プロセスは終了する。それ
以外では、データのタイプが識別される(ステップ12
04)。データがスタックに由来する場合、データ名が
記号ファイルから検索され(ステップ1206)、その
後プロセスはステップ1200に戻る。データがモジュ
ールに由来する場合、データ名が同様に記号ファイルか
ら検索され(ステップ1208)、その後プロセスはス
テップ1200に戻る。データがヒープに由来する場合
には、ヒープ及びオフセットが印刷されるか、或いはレ
ポートに記録され(ステップ1210)、その後プロセ
スはステップ1200に戻る。
【0044】メモリ分析において、図8及び図13に示
されるプロセスが、事後処理においてではなく、図7に
示される処理の間に実行され得る。図7のプロセスの実
行の間に、図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は、ヒープ内のオフセットである。
用いて獲得されるメモリ・プロファイルの図が示され
る。メモリ・プロファイル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()の子である。
例に従う、命令フォルトに対する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がリーフ・ノードである。
実施例に従う、データ・フォルトの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プログラムの立場から、呼び出しシーケン
スを獲得するために使用され得る。
びそれらのデータ処理システム上で実行されるアプリケ
ーションの構造化データ・プロファイリングのための、
改善された方法及び装置を提供する。この利点は、呼び
出しスタックからの情報を含み、単にリーフだけでな
く、呼び出しスタック全体のサンプリングを反映するプ
ロファイルを提供するプログラム・サンプリングにより
提供される。更に、本発明は他のタイプのスタックにも
適用され得る。例えば、Javaプログラムでは、大量
の時間が"インタプリタ"と呼ばれるサブルーチン内で消
費される。呼び出しスタックが調査された場合、プロフ
ァイルはたくさんの有用な情報を明らかにしない。イン
タプリタが(それ自身のリンケージ規約に従い)それ自
身のスタック、例えばJavaスタック内の情報を追跡
するので、プロセスがJavaスタックを遡り、解釈さ
れたJavaプログラムの立場から、呼び出しシーケン
スを獲得するために使用され得る。
【0049】本発明は全機能型のデータ処理システムの
状況において述べられてきたが、当業者であれば、本発
明のプロセスが、命令のコンピュータ読出し可能媒体の
形態や、多様な形態で配布可能であり、また本発明が配
布を実行するために実際に使用される特定タイプの信号
担持媒体に関係無しに、同様に適用可能であることが理
解できよう。コンピュータ読出し可能媒体の例には、フ
ロッピー・ディスク、ハード・ディスク・ドライブ、R
AM、及びCD−ROMなどの記録式媒体、及びデジタ
ル通信リンク及びアナログ通信リンクなどの伝送式媒体
が含まれる。
状況において述べられてきたが、当業者であれば、本発
明のプロセスが、命令のコンピュータ読出し可能媒体の
形態や、多様な形態で配布可能であり、また本発明が配
布を実行するために実際に使用される特定タイプの信号
担持媒体に関係無しに、同様に適用可能であることが理
解できよう。コンピュータ読出し可能媒体の例には、フ
ロッピー・ディスク、ハード・ディスク・ドライブ、R
AM、及びCD−ROMなどの記録式媒体、及びデジタ
ル通信リンク及びアナログ通信リンクなどの伝送式媒体
が含まれる。
【0050】本発明は、ここで開示された形態に限られ
るものではない。多くの変更及び変形が可能なことは、
当業者であれば明らかであろう。例えば、前述の例はタ
イマ割込みを使用したが、前述のサンプリング機構をト
リガするために他の割込みが使用され得る。前述の実施
例は本発明の原理を最良に説明するために選択された
が、当業者であれば、特定の使用に適するような様々な
変更を有する様々な実施例により、本発明を実際に適用
することが可能であろう。
るものではない。多くの変更及び変形が可能なことは、
当業者であれば明らかであろう。例えば、前述の例はタ
イマ割込みを使用したが、前述のサンプリング機構をト
リガするために他の割込みが使用され得る。前述の実施
例は本発明の原理を最良に説明するために選択された
が、当業者であれば、特定の使用に適するような様々な
変更を有する様々な実施例により、本発明を実際に適用
することが可能であろう。
【0051】まとめとして、本発明の構成に関して以下
の事項を開示する。
の事項を開示する。
【0052】(1)データ処理システムにおいて、メモ
リ使用を分析する方法であって、選択されたタイプのメ
モリ・アクセスが発生する度に、ページ・フォルトを開
始するステップと、前記データ処理システム内におい
て、前記ページ・フォルトをモニタするステップと、前
記ページ・フォルトの検出に応答して、前記ページ・フ
ォルトに関連付けられる呼び出しスタックを識別するス
テップと、前記呼び出しスタックを調査し、前記ページ
・フォルトが検出されたときに実行されていた各ルーチ
ンを識別するステップと、前記の各ルーチンをツリー構
造内のノードとして表すステップとを含む、方法。 (2)前記ページ・フォルトの検出に応答して、ページ
・フォルト・タイプを識別するステップを含む、前記
(1)記載の方法。 (3)前記ページ・フォルトが、前記ページ・フォルト
・タイプを識別するために使用されるアドレスを含み、
前記ページ・フォルトがデータ・フォルトであるとの識
別に応答して、データのタイプを識別するステップを含
む、前記(2)記載の方法。 (4)前記の各ルーチンに関連する情報を、当該ルーチ
ンを表すために使用される前記ノードに関連付けるステ
ップを含む、前記(1)記載の方法。 (5)前記呼び出しスタックを調査するステップが、前
記ページ・フォルトが発生するとき実行されているルー
チンのリストを含む、前記呼び出しスタックを読出すス
テップと、選択されたルーチンが前記ツリー構造内で見
い出されるか否かを判断するステップと、前記選択され
たルーチンが前記ツリー構造内に不在との判断に応じ
て、親ノードから派生する子ノードである新たなノード
を、前記ツリー構造に追加するステップとを含む、前記
(1)記載の方法。 (6)前記データ・フォルトが呼び出しスタックに対す
るものである、前記(3)記載の方法。 (7)前記データ・フォルトがヒープに対するものであ
る、前記(3)記載の方法。 (8)前記データ・フォルトがモジュールに対するもの
である、前記(3)記載の方法。 (9)データ・アドレスに関連付けられる変数を識別す
るステップをさらに含む、前記(3)記載の方法。 (10)データ処理システムにおいて、メモリ使用を分
析する方法であって、前記データ処理システム内におけ
る、選択されたタイプのメモリ・アクセスの発生を検出
するステップと、前記メモリ・アクセスに関連付けられ
る呼び出しスタックを識別するステップと、前記呼び出
しスタックを調査し、前記メモリ・アクセスが発生した
とき実行されていた各ルーチンを識別するステップと、
前記の各ルーチンをツリー構造内のノードとして表すス
テップとを含む、方法。 (11)前記メモリ・アクセスの発生がページ・フォル
ト割込みを検出することにより検出される、前記(1
0)記載の方法。 (12)前記ページ・フォルト割込みが、前記メモリ・
アクセスが発生する度に開始される、前記(11)記載
の方法。 (13)前記ページ・フォルトがデータ・フォルトか否
かを判断するステップを含む、前記(11)記載の方
法。 (14)前記ページ・フォルトのタイプを識別するステ
ップを含む、前記(13)記載の方法。 (15)前記ページ・フォルトのタイプを識別するステ
ップが、前記ページ・フォルトのページ・フォルト・ア
ドレス及びページ・フォルト命令アドレスを獲得するス
テップと、前記ページ・フォルト・アドレスを前記ペー
ジ・フォルト命令アドレスと比較するステップと、前記
ページ・フォルト・アドレスが前記ページ・フォルト命
令アドレスと等しいとの判断に応じて、前記ページ・フ
ォルトのタイプを命令フォルトと識別するステップと、
前記ページ・フォルト・アドレスが前記ページ・フォル
ト命令アドレスと等しくないとの判断に応じて、前記ペ
ージ・フォルトのタイプをデータ・フォルトと識別する
ステップとを含む、前記(14)記載の方法。 (16)データ処理システムにおいて、メモリ使用を分
析するシステムであって、メモリ・アクセスが発生する
度に、ページ・フォルトを選択的に開始する開始手段
と、前記データ処理システム内において、ページ・フォ
ルトをモニタするモニタ手段と、前記ページ・フォルト
の検出に応答して、前記ページ・フォルトに関連付けら
れる呼び出しスタックを識別する識別手段と、前記呼び
出しスタックを調査し、前記ページ・フォルトが検出さ
れたときに実行されていた各ルーチンを識別する調査手
段と、前記の各ルーチンをツリー構造内のノードとして
表す表現手段とを含む、データ処理システム。 (17)前記ページ・フォルトの検出に応答して、ペー
ジ・フォルト・タイプを識別する第2の識別手段を含
む、前記(16)記載のデータ処理システム。 (18)前記ページ・フォルトが、前記ページ・フォル
ト・タイプを識別するために使用されるアドレスを含
み、前記ページ・フォルトがデータ・フォルトであると
の識別に応答して、データのタイプを識別する識別手段
を含む、前記(17)記載のデータ処理システム。 (19)前記の各ルーチンに関連する情報を、当該ルー
チンを表すために使用される前記ノードに関連付ける関
連付け手段を含む、前記(16)記載のデータ処理シス
テム。 (20)前記調査手段が、前記ページ・フォルトが発生
するとき実行されているルーチンのリストを含む、前記
呼び出しスタックを読出す読出し手段と、選択されたル
ーチンが前記ツリー構造内で見い出されるか否かを判断
する判断手段と、前記選択されたルーチンが前記ツリー
構造内に不在との判断に応じて、親ノードから派生する
子ノードである新たなノードを、前記ツリー構造に追加
する追加手段とを含む、前記(16)記載のデータ処理
システム。 (21)データ処理システムにおいて使用されるメモリ
を分析するシステムであって、前記データ処理システム
内における、選択されたタイプのメモリ・アクセスの発
生を検出する検出手段と、前記メモリ・アクセスに関連
付けられる呼び出しスタックを識別する識別手段と、前
記呼び出しスタックを調査し、前記メモリ・アクセスが
発生したとき実行されていた各ルーチンを識別する調査
手段と、前記の各ルーチンをツリー構造内のノードとし
て表す表現手段とを含む、データ処理システム。 (22)前記メモリ・アクセスの発生がページ・フォル
ト割込みを検出することにより検出される、前記(2
1)記載のデータ処理システム。 (23)前記ページ・フォルト割込みが、前記メモリ・
アクセスが発生する度に開始される、前記(22)記載
のデータ処理システム。 (24)前記ページ・フォルトがデータ・フォルトか否
かを判断する第2の判断手段を含む、前記(22)記載
のデータ処理システム。 (25)前記ページ・フォルトのタイプを識別する識別
手段を含む、前記(24)記載のデータ処理システム。 (26)前記識別手段が、前記ページ・フォルトのペー
ジ・フォルト・アドレス及びページ・フォルト命令アド
レスを獲得する第1の手段と、前記ページ・フォルト・
アドレスを前記ページ・フォルト命令アドレスと比較す
る第2の手段と、前記ページ・フォルト・アドレスが前
記ページ・フォルト命令アドレスと等しいとの判断に応
じて、前記ページ・フォルトのタイプを命令フォルトと
識別する第3の手段と、前記ページ・フォルト・アドレ
スが前記ページ・フォルト命令アドレスと等しくないと
の判断に応じて、前記ページ・フォルトのタイプをデー
タ・フォルトと識別する第4の手段とを含む、前記(2
5)記載のデータ処理システム。 (27)データ処理システムにおいて、構造化メモリ分
析のために使用されるコンピュータ・プログラム製品で
あって、選択されたタイプのメモリ・アクセスが発生す
る度に、ページ・フォルトを開始する第1の命令と、前
記データ処理システム内において、前記ページ・フォル
トをモニタする第2の命令と、前記ページ・フォルトの
検出に応答して、前記ページ・フォルトに関連付けられ
る呼び出しスタックを識別する第3の命令と、前記呼び
出しスタックを調査し、前記ページ・フォルトが検出さ
れたときに実行されていた各ルーチンを識別する第4の
命令と、前記の各ルーチンをツリー構造内のノードとし
て表す第5の命令とを含む、コンピュータ・プログラム
製品。 (28)前記ページ・フォルトの検出に応答して、ペー
ジ・フォルト・タイプを識別する第6の命令を含む、前
記(27)記載のコンピュータ・プログラム製品。 (29)前記ページ・フォルトが、前記ページ・フォル
ト・タイプを識別するために使用されるアドレスを含
み、前記ページ・フォルトがデータ・フォルトであると
の識別に応答して、データのタイプを識別する第7の命
令を含む、前記(28)記載のコンピュータ・プログラ
ム製品。 (30)前記の各ルーチンに関連する情報を、当該ルー
チンを表すために使用される前記ノードに関連付ける前
記第5の命令を含む、前記(27)記載のコンピュータ
・プログラム製品。 (31)前記呼び出しスタックを調査する前記第4の命
令が、前記ページ・フォルトが発生するとき実行されて
いるルーチンのリストを含む、前記呼び出しスタックを
読出す命令と、選択されたルーチンが前記ツリー構造内
で見い出されるか否かを判断する命令と、前記選択され
たルーチンが前記ツリー構造内に不在との判断に応じ
て、親ノードから派生する子ノードである新たなノード
を、前記ツリー構造に追加する命令とを含む、前記(2
7)記載のコンピュータ・プログラム製品。
リ使用を分析する方法であって、選択されたタイプのメ
モリ・アクセスが発生する度に、ページ・フォルトを開
始するステップと、前記データ処理システム内におい
て、前記ページ・フォルトをモニタするステップと、前
記ページ・フォルトの検出に応答して、前記ページ・フ
ォルトに関連付けられる呼び出しスタックを識別するス
テップと、前記呼び出しスタックを調査し、前記ページ
・フォルトが検出されたときに実行されていた各ルーチ
ンを識別するステップと、前記の各ルーチンをツリー構
造内のノードとして表すステップとを含む、方法。 (2)前記ページ・フォルトの検出に応答して、ページ
・フォルト・タイプを識別するステップを含む、前記
(1)記載の方法。 (3)前記ページ・フォルトが、前記ページ・フォルト
・タイプを識別するために使用されるアドレスを含み、
前記ページ・フォルトがデータ・フォルトであるとの識
別に応答して、データのタイプを識別するステップを含
む、前記(2)記載の方法。 (4)前記の各ルーチンに関連する情報を、当該ルーチ
ンを表すために使用される前記ノードに関連付けるステ
ップを含む、前記(1)記載の方法。 (5)前記呼び出しスタックを調査するステップが、前
記ページ・フォルトが発生するとき実行されているルー
チンのリストを含む、前記呼び出しスタックを読出すス
テップと、選択されたルーチンが前記ツリー構造内で見
い出されるか否かを判断するステップと、前記選択され
たルーチンが前記ツリー構造内に不在との判断に応じ
て、親ノードから派生する子ノードである新たなノード
を、前記ツリー構造に追加するステップとを含む、前記
(1)記載の方法。 (6)前記データ・フォルトが呼び出しスタックに対す
るものである、前記(3)記載の方法。 (7)前記データ・フォルトがヒープに対するものであ
る、前記(3)記載の方法。 (8)前記データ・フォルトがモジュールに対するもの
である、前記(3)記載の方法。 (9)データ・アドレスに関連付けられる変数を識別す
るステップをさらに含む、前記(3)記載の方法。 (10)データ処理システムにおいて、メモリ使用を分
析する方法であって、前記データ処理システム内におけ
る、選択されたタイプのメモリ・アクセスの発生を検出
するステップと、前記メモリ・アクセスに関連付けられ
る呼び出しスタックを識別するステップと、前記呼び出
しスタックを調査し、前記メモリ・アクセスが発生した
とき実行されていた各ルーチンを識別するステップと、
前記の各ルーチンをツリー構造内のノードとして表すス
テップとを含む、方法。 (11)前記メモリ・アクセスの発生がページ・フォル
ト割込みを検出することにより検出される、前記(1
0)記載の方法。 (12)前記ページ・フォルト割込みが、前記メモリ・
アクセスが発生する度に開始される、前記(11)記載
の方法。 (13)前記ページ・フォルトがデータ・フォルトか否
かを判断するステップを含む、前記(11)記載の方
法。 (14)前記ページ・フォルトのタイプを識別するステ
ップを含む、前記(13)記載の方法。 (15)前記ページ・フォルトのタイプを識別するステ
ップが、前記ページ・フォルトのページ・フォルト・ア
ドレス及びページ・フォルト命令アドレスを獲得するス
テップと、前記ページ・フォルト・アドレスを前記ペー
ジ・フォルト命令アドレスと比較するステップと、前記
ページ・フォルト・アドレスが前記ページ・フォルト命
令アドレスと等しいとの判断に応じて、前記ページ・フ
ォルトのタイプを命令フォルトと識別するステップと、
前記ページ・フォルト・アドレスが前記ページ・フォル
ト命令アドレスと等しくないとの判断に応じて、前記ペ
ージ・フォルトのタイプをデータ・フォルトと識別する
ステップとを含む、前記(14)記載の方法。 (16)データ処理システムにおいて、メモリ使用を分
析するシステムであって、メモリ・アクセスが発生する
度に、ページ・フォルトを選択的に開始する開始手段
と、前記データ処理システム内において、ページ・フォ
ルトをモニタするモニタ手段と、前記ページ・フォルト
の検出に応答して、前記ページ・フォルトに関連付けら
れる呼び出しスタックを識別する識別手段と、前記呼び
出しスタックを調査し、前記ページ・フォルトが検出さ
れたときに実行されていた各ルーチンを識別する調査手
段と、前記の各ルーチンをツリー構造内のノードとして
表す表現手段とを含む、データ処理システム。 (17)前記ページ・フォルトの検出に応答して、ペー
ジ・フォルト・タイプを識別する第2の識別手段を含
む、前記(16)記載のデータ処理システム。 (18)前記ページ・フォルトが、前記ページ・フォル
ト・タイプを識別するために使用されるアドレスを含
み、前記ページ・フォルトがデータ・フォルトであると
の識別に応答して、データのタイプを識別する識別手段
を含む、前記(17)記載のデータ処理システム。 (19)前記の各ルーチンに関連する情報を、当該ルー
チンを表すために使用される前記ノードに関連付ける関
連付け手段を含む、前記(16)記載のデータ処理シス
テム。 (20)前記調査手段が、前記ページ・フォルトが発生
するとき実行されているルーチンのリストを含む、前記
呼び出しスタックを読出す読出し手段と、選択されたル
ーチンが前記ツリー構造内で見い出されるか否かを判断
する判断手段と、前記選択されたルーチンが前記ツリー
構造内に不在との判断に応じて、親ノードから派生する
子ノードである新たなノードを、前記ツリー構造に追加
する追加手段とを含む、前記(16)記載のデータ処理
システム。 (21)データ処理システムにおいて使用されるメモリ
を分析するシステムであって、前記データ処理システム
内における、選択されたタイプのメモリ・アクセスの発
生を検出する検出手段と、前記メモリ・アクセスに関連
付けられる呼び出しスタックを識別する識別手段と、前
記呼び出しスタックを調査し、前記メモリ・アクセスが
発生したとき実行されていた各ルーチンを識別する調査
手段と、前記の各ルーチンをツリー構造内のノードとし
て表す表現手段とを含む、データ処理システム。 (22)前記メモリ・アクセスの発生がページ・フォル
ト割込みを検出することにより検出される、前記(2
1)記載のデータ処理システム。 (23)前記ページ・フォルト割込みが、前記メモリ・
アクセスが発生する度に開始される、前記(22)記載
のデータ処理システム。 (24)前記ページ・フォルトがデータ・フォルトか否
かを判断する第2の判断手段を含む、前記(22)記載
のデータ処理システム。 (25)前記ページ・フォルトのタイプを識別する識別
手段を含む、前記(24)記載のデータ処理システム。 (26)前記識別手段が、前記ページ・フォルトのペー
ジ・フォルト・アドレス及びページ・フォルト命令アド
レスを獲得する第1の手段と、前記ページ・フォルト・
アドレスを前記ページ・フォルト命令アドレスと比較す
る第2の手段と、前記ページ・フォルト・アドレスが前
記ページ・フォルト命令アドレスと等しいとの判断に応
じて、前記ページ・フォルトのタイプを命令フォルトと
識別する第3の手段と、前記ページ・フォルト・アドレ
スが前記ページ・フォルト命令アドレスと等しくないと
の判断に応じて、前記ページ・フォルトのタイプをデー
タ・フォルトと識別する第4の手段とを含む、前記(2
5)記載のデータ処理システム。 (27)データ処理システムにおいて、構造化メモリ分
析のために使用されるコンピュータ・プログラム製品で
あって、選択されたタイプのメモリ・アクセスが発生す
る度に、ページ・フォルトを開始する第1の命令と、前
記データ処理システム内において、前記ページ・フォル
トをモニタする第2の命令と、前記ページ・フォルトの
検出に応答して、前記ページ・フォルトに関連付けられ
る呼び出しスタックを識別する第3の命令と、前記呼び
出しスタックを調査し、前記ページ・フォルトが検出さ
れたときに実行されていた各ルーチンを識別する第4の
命令と、前記の各ルーチンをツリー構造内のノードとし
て表す第5の命令とを含む、コンピュータ・プログラム
製品。 (28)前記ページ・フォルトの検出に応答して、ペー
ジ・フォルト・タイプを識別する第6の命令を含む、前
記(27)記載のコンピュータ・プログラム製品。 (29)前記ページ・フォルトが、前記ページ・フォル
ト・タイプを識別するために使用されるアドレスを含
み、前記ページ・フォルトがデータ・フォルトであると
の識別に応答して、データのタイプを識別する第7の命
令を含む、前記(28)記載のコンピュータ・プログラ
ム製品。 (30)前記の各ルーチンに関連する情報を、当該ルー
チンを表すために使用される前記ノードに関連付ける前
記第5の命令を含む、前記(27)記載のコンピュータ
・プログラム製品。 (31)前記呼び出しスタックを調査する前記第4の命
令が、前記ページ・フォルトが発生するとき実行されて
いるルーチンのリストを含む、前記呼び出しスタックを
読出す命令と、選択されたルーチンが前記ツリー構造内
で見い出されるか否かを判断する命令と、前記選択され
たルーチンが前記ツリー構造内に不在との判断に応じ
て、親ノードから派生する子ノードである新たなノード
を、前記ツリー構造に追加する命令とを含む、前記(2
7)記載のコンピュータ・プログラム製品。
【図1】本発明が実現され得るデータ処理システムのブ
ロック図である。
ロック図である。
【図2】本発明の好適な実施例に従う呼び出しスタック
を示す図である。
を示す図である。
【図3】本発明の好適な実施例に従う呼び出しスタック
・サンプルを示す図である。
・サンプルを示す図である。
【図4】全ての呼び出しのトレースを示す図である。
【図5】本発明の好適な実施例に従い、図4に示される
実行フローの特定のタイマ・ベースのサンプリングを示
す図である。
実行フローの特定のタイマ・ベースのサンプリングを示
す図である。
【図6】本発明の好適な実施例に従うツリーを示す図で
ある。
ある。
【図7】本発明の好適な実施例に従い、呼び出しスタッ
ク・ツリーを作成するプロセスのフローチャートであ
る。
ク・ツリーを作成するプロセスのフローチャートであ
る。
【図8】本発明の好適な実施例に従い、サンプリングの
間に獲得されるアドレスからファンクションを識別する
プロセスのフローチャートである。
間に獲得されるアドレスからファンクションを識別する
プロセスのフローチャートである。
【図9】本発明のプロセスを使用することにより獲得さ
れる、構造化プロファイルを示す図である。
れる、構造化プロファイルを示す図である。
【図10】本発明のプロセスを使用し生成されるレコー
ドを示す図である。
ドを示す図である。
【図11】本発明のプロセスを使用し生成され得る、別
のタイプのレポートを示す図である。
のタイプのレポートを示す図である。
【図12】本発明の好適な実施例に従い、メモリ・アク
セスを分析するプロセスのフローチャートである。
セスを分析するプロセスのフローチャートである。
【図13】本発明の好適な実施例に従い、ページ・フォ
ルトに応答して獲得されるアドレスから、ファンクショ
ンを識別するプロセスのフローチャートである。
ルトに応答して獲得されるアドレスから、ファンクショ
ンを識別するプロセスのフローチャートである。
【図14】本発明のプロセスを使用し獲得されるメモリ
・プロファイルを示す図である。
・プロファイルを示す図である。
【図15】本発明の好適な実施例に従う命令フォルトの
xツリー・レポート・サンプルを示す図である。
xツリー・レポート・サンプルを示す図である。
【図16】本発明の好適な実施例に従うデータ・フォル
トのxツリー・レポート・サンプルを示す図である。
トの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 レポート
アダプタ 112 SCSIホスト・バス・アダプタ 114 拡張バス・インタフェース 116 オーディオ・アダプタ 118 グラフィックス・アダプタ 119 オーディオ/ビデオ・アダプタ(A/V) 120 キーボード及びマウス・アダプタ 122 モデム 124 追加メモリ 126 ハード・ディスク・ドライブ 128 テープ・ドライブ 130 CD−ROM 200 呼び出しスタック 202、204、206、208 スタック・フレーム 500 スタック・ツリー 1000 レポート
───────────────────────────────────────────────────── フロントページの続き (56)参考文献 特開 平9−26898(JP,A) 特開 平6−89233(JP,A) 特開 平5−289891(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 11/28 - 11/34
Claims (31)
- 【請求項1】データ処理システムにおいて、メモリ使用
を分析する方法であって、 選択されたタイプのメモリ・アクセスが発生する度に、
ページ・フォルトを開始するステップと、 前記データ処理システム内において、前記ページ・フォ
ルトをモニタするステップと、 前記ページ・フォルトの検出に応答して、前記ページ・
フォルトに関連付けられる呼び出しスタックを識別する
ステップと、 前記呼び出しスタックを調査し、前記ページ・フォルト
が検出されたときに実行されていた各ルーチンを識別す
るステップと、 前記の各ルーチンをツリー構造内のノードとして表すス
テップとを含む、方法。 - 【請求項2】前記ページ・フォルトの検出に応答して、
ページ・フォルト・タイプを識別するステップを含む、
請求項1記載の方法。 - 【請求項3】前記ページ・フォルトが、前記ページ・フ
ォルト・タイプを識別するために使用されるアドレスを
含み、前記ページ・フォルトがデータ・フォルトである
との識別に応答して、データのタイプを識別するステッ
プを含む、請求項2記載の方法。 - 【請求項4】前記の各ルーチンに関連する情報を、当該
ルーチンを表すために使用される前記ノードに関連付け
るステップを含む、請求項1記載の方法。 - 【請求項5】前記呼び出しスタックを調査するステップ
が、 前記ページ・フォルトが発生するとき実行されているル
ーチンのリストを含む、前記呼び出しスタックを読出す
ステップと、 選択されたルーチンが前記ツリー構造内で見い出される
か否かを判断するステップと、 前記選択されたルーチンが前記ツリー構造内に不在との
判断に応じて、親ノードから派生する子ノードである新
たなノードを、前記ツリー構造に追加するステップとを
含む、請求項1記載の方法。 - 【請求項6】前記データ・フォルトが呼び出しスタック
に対するものである、請求項3記載の方法。 - 【請求項7】前記データ・フォルトがヒープに対するも
のである、請求項3記載の方法。 - 【請求項8】前記データ・フォルトがモジュールに対す
るものである、請求項3記載の方法。 - 【請求項9】データ・アドレスに関連付けられる変数を
識別するステップをさらに含む、請求項3記載の方法。 - 【請求項10】データ処理システムにおいて、メモリ使
用を分析する方法であって、 前記データ処理システム内における、選択されたタイプ
のメモリ・アクセスの発生を検出するステップと、 前記メモリ・アクセスに関連付けられる呼び出しスタッ
クを識別するステップと、 前記呼び出しスタックを調査し、前記メモリ・アクセス
が発生したとき実行されていた各ルーチンを識別するス
テップと、 前記の各ルーチンをツリー構造内のノードとして表すス
テップとを含む、方法。 - 【請求項11】前記メモリ・アクセスの発生がページ・
フォルト割込みを検出することにより検出される、請求
項10記載の方法。 - 【請求項12】前記ページ・フォルト割込みが、前記メ
モリ・アクセスが発生する度に開始される、請求項11
記載の方法。 - 【請求項13】前記ページ・フォルトがデータ・フォル
トか否かを判断するステップを含む、請求項11記載の
方法。 - 【請求項14】前記ページ・フォルトのタイプを識別す
るステップを含む、請求項13記載の方法。 - 【請求項15】前記ページ・フォルトのタイプを識別す
るステップが、 前記ページ・フォルトのページ・フォルト・アドレス及
びページ・フォルト命令アドレスを獲得するステップ
と、 前記ページ・フォルト・アドレスを前記ページ・フォル
ト命令アドレスと比較するステップと、 前記ページ・フォルト・アドレスが前記ページ・フォル
ト命令アドレスと等しいとの判断に応じて、前記ページ
・フォルトのタイプを命令フォルトと識別するステップ
と、 前記ページ・フォルト・アドレスが前記ページ・フォル
ト命令アドレスと等しくないとの判断に応じて、前記ペ
ージ・フォルトのタイプをデータ・フォルトと識別する
ステップとを含む、請求項14記載の方法。 - 【請求項16】データ処理システムにおいて、メモリ使
用を分析するシステムであって、 メモリ・アクセスが発生する度に、ページ・フォルトを
選択的に開始する開始手段と、 前記データ処理システム内において、ページ・フォルト
をモニタするモニタ手段と、 前記ページ・フォルトの検出に応答して、前記ページ・
フォルトに関連付けられる呼び出しスタックを識別する
識別手段と、 前記呼び出しスタックを調査し、前記ページ・フォルト
が検出されたときに実行されていた各ルーチンを識別す
る調査手段と、 前記の各ルーチンをツリー構造内のノードとして表す表
現手段とを含む、データ処理システム。 - 【請求項17】前記ページ・フォルトの検出に応答し
て、ページ・フォルト・タイプを識別する第2の識別手
段を含む、請求項16記載のデータ処理システム。 - 【請求項18】前記ページ・フォルトが、前記ページ・
フォルト・タイプを識別するために使用されるアドレス
を含み、前記ページ・フォルトがデータ・フォルトであ
るとの識別に応答して、データのタイプを識別する識別
手段を含む、請求項17記載のデータ処理システム。 - 【請求項19】前記の各ルーチンに関連する情報を、当
該ルーチンを表すために使用される前記ノードに関連付
ける関連付け手段を含む、請求項16記載のデータ処理
システム。 - 【請求項20】前記調査手段が、 前記ページ・フォルトが発生するとき実行されているル
ーチンのリストを含む、前記呼び出しスタックを読出す
読出し手段と、 選択されたルーチンが前記ツリー構造内で見い出される
か否かを判断する判断手段と、 前記選択されたルーチンが前記ツリー構造内に不在との
判断に応じて、親ノードから派生する子ノードである新
たなノードを、前記ツリー構造に追加する追加手段とを
含む、請求項16記載のデータ処理システム。 - 【請求項21】データ処理システムにおいて使用される
メモリを分析するシステムであって、 前記データ処理システム内における、選択されたタイプ
のメモリ・アクセスの発生を検出する検出手段と、 前記メモリ・アクセスに関連付けられる呼び出しスタッ
クを識別する識別手段と、 前記呼び出しスタックを調査し、前記メモリ・アクセス
が発生したとき実行されていた各ルーチンを識別する調
査手段と、 前記の各ルーチンをツリー構造内のノードとして表す表
現手段とを含む、データ処理システム。 - 【請求項22】前記メモリ・アクセスの発生がページ・
フォルト割込みを検出することにより検出される、請求
項21記載のデータ処理システム。 - 【請求項23】前記ページ・フォルト割込みが、前記メ
モリ・アクセスが発生する度に開始される、請求項22
記載のデータ処理システム。 - 【請求項24】前記ページ・フォルトがデータ・フォル
トか否かを判断する第2の判断手段を含む、請求項22
記載のデータ処理システム。 - 【請求項25】前記ページ・フォルトのタイプを識別す
る識別手段を含む、請求項24記載のデータ処理システ
ム。 - 【請求項26】前記識別手段が、 前記ページ・フォルトのページ・フォルト・アドレス及
びページ・フォルト命令アドレスを獲得する第1の手段
と、 前記ページ・フォルト・アドレスを前記ページ・フォル
ト命令アドレスと比較する第2の手段と、 前記ページ・フォルト・アドレスが前記ページ・フォル
ト命令アドレスと等しいとの判断に応じて、前記ページ
・フォルトのタイプを命令フォルトと識別する第3の手
段と、 前記ページ・フォルト・アドレスが前記ページ・フォル
ト命令アドレスと等しくないとの判断に応じて、前記ペ
ージ・フォルトのタイプをデータ・フォルトと識別する
第4の手段とを含む、請求項25記載のデータ処理シス
テム。 - 【請求項27】データ処理システムにおいて、構造化メ
モリ分析を行なうプログラムを含むコンピュータ読み取
り可能な記録媒体であって、コンピュータに、 選択されたタイプのメモリ・アクセスが発生する度に、
ページ・フォルトを開始するステップと、 前記データ処理システム内において、前記ページ・フォ
ルトをモニタするステップと、 前記ページ・フォルトの検出に応答して、前記ページ・
フォルトに関連付けられる呼び出しスタックを識別する
ステップと、 前記呼び出しスタックを調査し、前記ページ・フォルト
が検出されたときに実行されていた各ルーチンを識別す
るステップと、 前記の各ルーチンをツリー構造内のノードとして表すス
テップとを実行させるためのプログラムを記録したコン
ピュータ読み取り可能な記録媒体。 - 【請求項28】請求項27に記載の記録媒体において、
更に、前記コンピュータに前記ページ・フォルトの検出
に応答して、ページ・フォルト・タイプを識別するステ
ップを実行させるためのプログラムを記録したコンピュ
ータ読み取り可能な記録媒体。 - 【請求項29】請求項28に記載の記録媒体において、
更に、前記ページ・フォルトが、前記ページ・フォルト
・タイプを識別するために使用されるアドレスを含み、
前記コンピュータに、前記ページ・フォルトがデータ・
フォルトであるとの識別に応答して、データのタイプを
識別するステップを実行させるためのプログラムを記録
したコンピュータ読み取り可能な記録媒体。 - 【請求項30】請求項27に記載の記録媒体において、
更に、前記コンピュータに、前記の各ルーチンに関連す
る情報を、当該ルーチンを表すために使用される前記ノ
ードに関連付けるステップを実行させるためのプログラ
ムを記録したコンピュータ読み取り可能な記録媒体。 - 【請求項31】請求項27に記載の記録媒体において、
前記呼び出しスタックを調査するステップが、更に、 前記ページ・フォルトが発生するとき実行されているル
ーチンのリストを含む、前記呼び出しスタックを読出す
ステップと、 選択されたルーチンが前記ツリー構造内で見い出される
か否かを判断するステップと、 前記選択されたルーチンが前記ツリー構造内に不在との
判断に応じて、親ノードから派生する子ノードである新
たなノードを、前記ツリー構造に追加するステップとを
含むプログラムを記録したコンピュータ読み取り可能な
記録媒体。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/052,331 US6158024A (en) | 1998-03-31 | 1998-03-31 | Method and apparatus for structured memory analysis of data processing systems and applications |
US09/052331 | 1998-03-31 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH11327953A JPH11327953A (ja) | 1999-11-30 |
JP3357621B2 true JP3357621B2 (ja) | 2002-12-16 |
Family
ID=21976914
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP06397499A Expired - Fee Related JP3357621B2 (ja) | 1998-03-31 | 1999-03-10 | メモリ使用を分析するための方法及び装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US6158024A (ja) |
EP (1) | EP0947928A3 (ja) |
JP (1) | JP3357621B2 (ja) |
KR (1) | KR100337748B1 (ja) |
Families Citing this family (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6507805B1 (en) * | 1997-12-12 | 2003-01-14 | International Business Machines Corporation | Method and system for compensating for instrumentation overhead in trace data by detecting minimum event times |
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 |
US6662358B1 (en) * | 1997-12-12 | 2003-12-09 | International Business Machines Corporation | Minimizing profiling-related perturbation using periodic contextual information |
US6954922B2 (en) * | 1998-04-29 | 2005-10-11 | Sun Microsystems, Inc. | Method apparatus and article of manufacture for time profiling multi-threaded programs |
US6636905B1 (en) * | 1999-03-26 | 2003-10-21 | Unisys Corporation | Method for analyzing input/output performance of a data processing system |
US6604210B1 (en) * | 1999-09-09 | 2003-08-05 | International Business Machines Corporation | Method and system for detecting and recovering from in trace data |
DE10054542A1 (de) * | 2000-11-03 | 2002-06-20 | Siemens Ag | Prüfverfahren und Prüfvorrichtung zur Inbetriebnahme von mittels einer Programmlogik gesteuerten Systemen |
US6738932B1 (en) * | 2000-12-22 | 2004-05-18 | Sun Microsystems, Inc. | Method and system for identifying software revisions from memory images |
US7120901B2 (en) * | 2001-10-26 | 2006-10-10 | International Business Machines Corporation | Method and system for tracing and displaying execution of nested functions |
US20030083849A1 (en) * | 2001-10-31 | 2003-05-01 | Cabot Mason B. | Statistical sampling process |
US20030117971A1 (en) * | 2001-12-21 | 2003-06-26 | Celoxica Ltd. | System, method, and article of manufacture for profiling an executable hardware model using calls to profiling functions |
US20030140337A1 (en) * | 2001-12-21 | 2003-07-24 | Celoxica Ltd. | System, method, and article of manufacture for data transfer reporting for an application |
US20030145255A1 (en) * | 2002-01-15 | 2003-07-31 | Harty Anthony Walter | Hierarchical multi-component trace facility using multiple buffers per component |
US7669189B1 (en) * | 2002-06-26 | 2010-02-23 | Oracle International Corporation | Monitoring memory accesses for computer programs |
JP2004127383A (ja) * | 2002-09-30 | 2004-04-22 | Mitsumi Electric Co Ltd | 光ディスク装置 |
US20040111706A1 (en) * | 2002-12-07 | 2004-06-10 | Mogul Jeffrey Clifford | Analysis of latencies in a multi-node system |
US7114150B2 (en) * | 2003-02-13 | 2006-09-26 | International Business Machines Corporation | Apparatus and method for dynamic instrumenting of code to minimize system perturbation |
US20060130001A1 (en) * | 2004-11-30 | 2006-06-15 | International Business Machines Corporation | Apparatus and method for call stack profiling for a software application |
US7607122B2 (en) * | 2005-06-17 | 2009-10-20 | Microsoft Corporation | Post build process to record stack and call tree information |
US8117600B1 (en) * | 2005-12-29 | 2012-02-14 | Symantec Operating Corporation | System and method for detecting in-line synchronization primitives in binary applications |
US8108839B2 (en) * | 2006-11-30 | 2012-01-31 | International Business Machines Corporation | Method and apparatus for tracing execution of computer programming code using dynamic trace enablement |
US8578347B1 (en) * | 2006-12-28 | 2013-11-05 | The Mathworks, Inc. | Determining stack usage of generated code from a model |
US7512522B2 (en) | 2007-02-28 | 2009-03-31 | International Business Machines Corporation | Methods and apparatus for assessing health of memory utilization of a program |
US20080243970A1 (en) * | 2007-03-30 | 2008-10-02 | Sap Ag | Method and system for providing loitering trace in virtual machines |
US8356286B2 (en) * | 2007-03-30 | 2013-01-15 | Sap Ag | Method and system for providing on-demand profiling infrastructure for profiling at virtual machines |
US8601469B2 (en) * | 2007-03-30 | 2013-12-03 | Sap Ag | Method and system for customizing allocation statistics |
US8522209B2 (en) * | 2007-03-30 | 2013-08-27 | Sap Ag | Method and system for integrating profiling and debugging |
US8667471B2 (en) | 2007-03-30 | 2014-03-04 | Sap Ag | Method and system for customizing profiling sessions |
US8336033B2 (en) * | 2007-03-30 | 2012-12-18 | Sap Ag | Method and system for generating a hierarchical tree representing stack traces |
US20100017583A1 (en) * | 2008-07-15 | 2010-01-21 | International Business Machines Corporation | Call Stack Sampling for a Multi-Processor System |
US9418005B2 (en) | 2008-07-15 | 2016-08-16 | International Business Machines Corporation | Managing garbage collection in a data processing system |
US8566795B2 (en) * | 2008-07-15 | 2013-10-22 | International Business Machines Corporation | Selectively obtaining call stack information based on criteria |
US8938533B1 (en) * | 2009-09-10 | 2015-01-20 | AppDynamics Inc. | Automatic capture of diagnostic data based on transaction behavior learning |
US8516450B2 (en) * | 2010-03-19 | 2013-08-20 | Oracle International Corporation | Detecting real-time invalid memory references |
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 |
US8799872B2 (en) | 2010-06-27 | 2014-08-05 | International Business Machines Corporation | Sampling with sample pacing |
US8799904B2 (en) | 2011-01-21 | 2014-08-05 | International Business Machines Corporation | Scalable system call stack sampling |
US9311598B1 (en) | 2012-02-02 | 2016-04-12 | AppDynamics, Inc. | Automatic capture of detailed analysis information for web application outliers with very low overhead |
KR102015053B1 (ko) | 2013-02-20 | 2019-08-27 | 삼성전자주식회사 | 불휘발성 메모리 장치 및 그것의 데이터 처리 방법 |
JP5936241B2 (ja) | 2014-09-26 | 2016-06-22 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | 解析システム、解析方法およびプログラム |
JP6651974B2 (ja) * | 2016-05-10 | 2020-02-19 | 富士通株式会社 | 情報処理装置、コンパイル方法及びコンパイラプログラム |
US11875193B2 (en) * | 2021-03-25 | 2024-01-16 | Oracle International Corporation | Tracking frame states of call stack frames including colorless roots |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4520441A (en) * | 1980-12-15 | 1985-05-28 | Hitachi, Ltd. | Data processing system |
US4703417A (en) * | 1985-06-27 | 1987-10-27 | Honeywell Information Systems Inc. | Call instruction for ring crossing architecture |
US4866599A (en) * | 1985-06-27 | 1989-09-12 | Bull Hn Information Systems Inc. | Call instruction, return instruction and trap procedure for ring crossing architecture |
US4868738A (en) * | 1985-08-15 | 1989-09-19 | Lanier Business Products, Inc. | Operating system independent virtual memory computer system |
JPH0727462B2 (ja) * | 1985-10-11 | 1995-03-29 | 株式会社日立製作所 | データ処理装置におけるページフォールト実行再開方法 |
DE3735828C2 (de) * | 1986-10-24 | 1994-11-10 | Hitachi Ltd | Verfahren zur Wiederaufnahme der Ausführung von Anweisungen nach einer Unterbrechung in einer mikroprogrammgesteuerten Datenverarbeitungsvorrichtung |
JPH0437927A (ja) * | 1990-06-01 | 1992-02-07 | Sony Corp | プロセッサの処理方法 |
US5408650A (en) * | 1993-06-29 | 1995-04-18 | Digital Equipment Corporation | Memory analysis system for dynamically displaying memory allocation and de-allocation events associated with an application program |
US5721917A (en) * | 1995-01-30 | 1998-02-24 | Hewlett-Packard Company | System and method for determining a process's actual working set and relating same to high level data structures |
US5764944A (en) * | 1995-09-08 | 1998-06-09 | United Microelectronics Corp. | Method and apparatus for TLB invalidation mechanism for protective page fault |
JP3072048B2 (ja) * | 1996-03-19 | 2000-07-31 | 株式会社東芝 | 計算機システムおよび計算機システムのソフトウェア故障回復方法 |
US5940871A (en) * | 1996-10-28 | 1999-08-17 | International Business Machines Corporation | Computer system and method for selectively decompressing operating system ROM image code using a page fault |
US6002872A (en) * | 1998-03-31 | 1999-12-14 | International Machines Corporation | Method and apparatus for structured profiling of data processing systems and applications |
-
1998
- 1998-03-31 US US09/052,331 patent/US6158024A/en not_active Expired - Fee Related
-
1999
- 1999-02-25 KR KR1019990006339A patent/KR100337748B1/ko not_active IP Right Cessation
- 1999-03-10 JP JP06397499A patent/JP3357621B2/ja not_active Expired - Fee Related
- 1999-03-23 EP EP99302225A patent/EP0947928A3/en not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
EP0947928A3 (en) | 2004-04-21 |
EP0947928A2 (en) | 1999-10-06 |
KR19990077480A (ko) | 1999-10-25 |
JPH11327953A (ja) | 1999-11-30 |
KR100337748B1 (ko) | 2002-05-24 |
US6158024A (en) | 2000-12-05 |
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 | |
US6728955B1 (en) | Processing events during profiling of an instrumented program | |
US8255880B2 (en) | Counting instruction and memory location ranges | |
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 | |
US6539339B1 (en) | Method and system for maintaining thread-relative metrics for trace data adjusted for thread switches | |
US6598012B1 (en) | Method and system for compensating for output overhead in trace date using trace record information | |
US7395527B2 (en) | Method and apparatus for counting instruction execution and data accesses | |
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 | |
US6546548B1 (en) | Method and system for compensating for output overhead in trace data using initial calibration information | |
US7458078B2 (en) | Apparatus and method for autonomic hardware assisted thread stack tracking | |
US6507805B1 (en) | Method and system for compensating for instrumentation overhead in trace data by detecting minimum event times | |
US6732357B1 (en) | Determining and compensating for temporal overhead in trace record generation and processing | |
US7716647B2 (en) | Method and system for a system call profiler | |
US20060130001A1 (en) | Apparatus and method for call stack profiling for a software application | |
US20090178036A1 (en) | Method and Apparatus for Call Stack Sampling Using a Virtual Machine | |
US20070089094A1 (en) | Temporal sample-based profiling | |
JPH05197594A (ja) | データ処理システム用資源データの実時間捕獲及び減縮方法及びシステム | |
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 | |
US20050071816A1 (en) | Method and apparatus to autonomically count instruction execution for applications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |