JP4681491B2 - プロファイリングプログラムおよびプロファイリング方法 - Google Patents

プロファイリングプログラムおよびプロファイリング方法 Download PDF

Info

Publication number
JP4681491B2
JP4681491B2 JP2006099350A JP2006099350A JP4681491B2 JP 4681491 B2 JP4681491 B2 JP 4681491B2 JP 2006099350 A JP2006099350 A JP 2006099350A JP 2006099350 A JP2006099350 A JP 2006099350A JP 4681491 B2 JP4681491 B2 JP 4681491B2
Authority
JP
Japan
Prior art keywords
target range
target
information
address
transition
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
Application number
JP2006099350A
Other languages
English (en)
Other versions
JP2007272692A (ja
Inventor
聡 平井
耕一 久門
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2006099350A priority Critical patent/JP4681491B2/ja
Priority to US11/493,564 priority patent/US8032869B2/en
Publication of JP2007272692A publication Critical patent/JP2007272692A/ja
Application granted granted Critical
Publication of JP4681491B2 publication Critical patent/JP4681491B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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

Description

この発明は、所定の条件が満たされた際に発生する割込みにより起動される割込みハンドラによってプログラムの実行状況に関する情報を収集するプロファイリングプログラムおよびプロファイリング方法に関し、特に、少ないオーバヘッドで詳細な情報の収集を可能とするプロファイリングプログラムおよびプロファイリング方法に関するものである。
コンピュータシステムにおいて、性能分析、最適化を行う手段として、プロファイリング手法が広く用いられている。プロファイリングは、ターゲットとするプログラムコードの走行頻度、時間分布、またプログラム内部の呼出し関係頻度などの分析に有効であり、一般的なプロファイリング手法として以下の2つがある。
一つはコンパイラにプロファイリング用コードを挿入させ、実行情報を採取する方法である(図10−1参照)。本手法は、最も広範囲に使用されているプロファイリング手法であり、コンパイラ製品に標準機能として実装されている。また、本手法に対するいくつかのデータ採取効率化方法も提案されている(例えば、特許文献1および2参照)。
もう一つの手法は、ハードウェアタイマ、またはCPUの性能モニタリング機構を利用したサンプリングによるプロファイリング方法である(図10−2参照)。本手法では、一定の時間毎に、あるいはプロセッサや周辺回路で計測可能な実行命令数やキャッシュミス数等が一定の回数に到達する毎にサンプリング割込みを発生させ、割り込み処理として登録したプロファイリング処理プログラムで割込み発生時の実行命令アドレス等を記録することで、統計的に最も時間を費やしたコード範囲や最も頻繁に実行されたコード範囲などを抽出する(例えば、非特許文献1および2参照)。
特開平11−212837号公報 特開2003−140928号公報 「OProfile − A System Profiler for Linux」、[平成18年3月18日検索]、インターネット<URL: http://sourceforge.net/projects/oprofile/> 「インテル VTune パフォーマンス・アナライザ」、[平成18年3月18日検索]、インターネット<URL:http://www.intel.com/cd/software/products/ijkk/jpn/vtune/index.htm>
しかしながら、前者のコンパイラによるプロファイリングコード挿入方式には、対象とするコード全般にプロファイリング用処理が付加されるために時間的オーバヘッドが生じる、あるいは、コード挿入のために本来のプログラムバイナリと動作的、メモリ配置的に差異が生じるといった問題がある。特に、通信等のタイミングが重要なプログラムでは本来の動作と異なる場合が多く、必要精度により使用が制限される場合がある。
また、後者のサンプリングによるプロファイリング方式においては、対象とするコードに対する改変は必要ないためオーバヘッドの問題やメモリ配置の問題は極小化可能であるが、サンプリングされる際の実行命令アドレスに至る経路やその呼出し関係が採取できないという問題がある。例えば、あるライブラリ関数Aが最も実行時間が多かったとした場合、通常そのライブラリ関数Aを呼出すコードは複数存在し得るし、さらにそのコード部分も複数から呼出されうる。この方式では、こういった呼出し元や依存関係等の詳細動作情報を効率良く採取する手法がなかった。
この発明は、上述した従来技術による問題点を解消するためになされたものであり、少ないオーバヘッドで詳細な情報の収集を可能とするプロファイリングプログラムおよびプロファイリング方法を提供することを目的とする。
上述した課題を解決し、目的を達成するため、本発明は、所定の条件が満たされた際に発生する割込みにより起動される割込みハンドラを含み、当該割込みハンドラによって情報収集対象プログラムの実行状況に関する情報を収集するプロファイリングプログラムであって、前記割込みハンドラによって前記実行状況に関する情報の収集を行う対象範囲である、該対象範囲を識別する番号であるターゲット番号と、該対象範囲の開始アドレスと、該対象範囲の終了アドレスと、該対象範囲内で発生した関数の呼び出し経路を特定するフラグ値とを、前記情報収集対象プログラムによって呼び出されたインタフェースを介して受け付ける対象範囲指定手順と、前記対象範囲ごとに、該対象範囲を識別する番号であるターゲット番号と、該対象範囲の開始アドレスと、該対象範囲の終了アドレスと、該対象範囲内で発生した関数の呼び出し経路を特定するフラグ値とを対応づけて記憶するフラグ管理テーブルに、前記対象範囲指定手順により指定されたターゲット番号、開始アドレス及び終了アドレスを登録する対象範囲登録手順と、前記対象範囲内で発生した関数の呼び出し経路を特定するためのフラグ値を、前記情報収集対象プログラムによって呼び出されたインタフェースを介して受け付ける情報設定手順と、前記対象範囲指定手順により指定されたターゲット番号に対応付けて前記情報設定手順により設定されたフラグ値を前記フラグ管理テーブルに登録する情報登録手順と、前記対象範囲で割込みが発生した際に、該割込みが発生した時点での前記情報収集対象プログラムの実行アドレスである割込み時実行アドレスと、前記割込みハンドラによって収集された前記フラグ値とを対応付けて割込みハンドラ記録テーブルに記録する記録手順と、をコンピュータに実行させる。
発明によれば、割込みハンドラによって情報収集を行う対象範囲を指定し、指定した対象範囲で割込みが発生した際に割込みハンドラによって収集される情報を設定するよう構成したので、経路情報や変数情報などを設定することによってこれらの情報を収集することができる。
また、明は上記の発明において、前記所定の条件の設定および割込みハンドラの登録をオペレーティングシステムに依頼する初期処理手順をさらにコンピュータに実行させることを特徴とする。
発明によれば、所定の条件の設定および割込みハンドラの登録をオペレーティングシステムに依頼するよう構成したので、必要な初期化処理を行うことができる。
また、明は上記の発明において、前記対象範囲に遷移する関数呼出しを情報収集対象プログラムから検出し、該検出した関数呼出しを前記情報設定手順の呼出しに置き換えるとともに、該関数呼出しによる実行の遷移に関する情報を記録する関数置換手順をさらにコンピュータに実行させ、前記情報設定手順は、前記関数置換手順により記録された実行の遷移に関する情報の一部を前記収集される情報として設定することを特徴とする。
発明によれば、情報収集対象範囲に遷移する関数呼出しを情報収集対象プログラムから検出し、検出した関数呼出しを情報設定手順の呼出しに置き換えるとともに、関数呼出しによる実行の遷移に関する情報を記録し、記録した実行の遷移に関する情報の一部を収集される情報として設定するよう構成したので、実行の遷移に関する情報を自動的に収集することができる。
また、明は上記の発明において、前記関数置換手順は、前記実行の遷移に関する情報の一部として各遷移を識別する遷移識別子を記録し、前記情報設定手順は、前記関数置換手順により記録された遷移識別子を前記収集される情報として設定することを特徴とする。
発明によれば、実行の遷移に関する情報の一部として各遷移を識別する遷移識別子を記録し、記録した遷移識別子を収集される情報として設定するよう構成したので、遷移識別子を用いて実行の遷移に関する情報を収集することができる。
また、明は上記の発明において、前記関数置換手順は、前記実行の遷移に関する情報として遷移元アドレスおよび遷移先アドレスを含む情報を記録することを特徴とする。
発明によれば、実行の遷移に関する情報として遷移元アドレスおよび遷移先アドレスを含む情報を記録するよう構成したので、情報収集対象範囲に遷移してくる遷移元を特定することができる。
また、明は上記の発明において、前記関数置換手順は、前記対象範囲に遷移するまでの関数呼出しの段数指定に基づいて前記関数呼出しを検出することを特徴とする。
発明によれば、情報収集対象範囲に遷移するまでの関数呼出しの段数指定に基づいて関数呼出しを検出するよう構成したので、段数指定を変えることによって様々な経路情報を収集することができる。
また、明は上記の発明において、前記情報設定手順により設定される情報は、割込みが発生した際の実行アドレスとともに収集されることを特徴とする。
発明によれば、設定される情報は、割込みが発生した際の実行アドレスとともに収集されるよう構成したので、設定した情報と実行位置の関係を把握することができる。
また、明は上記の発明において、前記対象範囲指定手順による対象範囲の指定には、関数名による指定が含まれることを特徴とする。
発明によれば、情報収集対象範囲の指定には、関数名による指定が含まれるよう構成したので、関数の呼出し関係に関する情報を収集することができる。
また、明は上記の発明において、前記情報設定手順により設定される情報は複数の値から構成され、前記割込みハンドラは複数の値を収集することを特徴とする。
発明によれば、設定する情報は複数の値から構成され、割込みハンドラは複数の値を収集するよう構成したので、様々な情報を収集することができる。
また、本発明は、所定の条件が満たされた際に発生する割込みにより起動される割込みハンドラを含み、当該割込みハンドラによって情報収集対象プログラムの実行状況に関する情報を収集する処理をコンピュータが実行するプロファイリング方法であって、前記コンピュータが、前記割込みハンドラによって前記実行状況に関する情報の収集を行う対象範囲である、該対象範囲を識別する番号であるターゲット番号と、該対象範囲の開始アドレスと、該対象範囲の終了アドレスと、該対象範囲内で発生した関数の呼び出し経路を特定するフラグ値とを、前記情報収集対象プログラムによって呼び出されたインタフェースを介して受け付ける対象範囲指定工程と、前記対象範囲ごとに、該対象範囲を識別する番号であるターゲット番号と、該対象範囲の開始アドレスと、該対象範囲の終了アドレスと、該対象範囲内で発生した関数の呼び出し経路を特定するフラグ値とを対応づけて記憶するフラグ管理テーブルに、前記対象範囲指定工程により指定されたターゲット番号、開始アドレス及び終了アドレスを登録する対象範囲登録工程と、前記対象範囲内で発生した関数の呼び出し経路を特定するためのフラグ値を、前記情報収集対象プログラムによって呼び出されたインタフェースを介して受け付ける情報設定工程と、前記対象範囲指定工程により指定されたターゲット番号に対応付けて前記情報設定工程により設定されたフラグ値を前記フラグ管理テーブルに登録する情報登録工程と、前記対象範囲で割込みが発生した際に、該割込みが発生した時点での前記情報収集対象プログラムの実行アドレスである割込み時実行アドレスと、前記割込みハンドラによって収集された前記フラグ値とを対応付けて割込みハンドラ記録テーブルに記録する記録工程と、を実行する。
発明によれば、割込みハンドラによって情報収集を行う対象範囲を指定し、指定した対象範囲で割込みが発生した際に割込みハンドラによって収集される情報を設定するよう構成したので、経路情報や変数情報などを設定することによってこれらの情報を収集することができる。
発明によれば、経路情報や変数情報などを設定することによってこれらの情報を収集するので、経路情報や変数情報などの詳細情報を少ないオーバヘッドで収集することができるという効果を奏する。
また、発明によれば、必要な初期化処理を行うので、プロファイリングを容易に行うことができるという効果を奏する。
また、発明によれば、実行の遷移に関する情報を自動的に収集するので、ユーザの負担を軽減することができるという効果を奏する。
また、発明によれば、遷移識別子を用いて実行の遷移に関する情報を収集するので、割込みハンドラによる情報の収集を高速に行うことができるという効果を奏する。
また、発明によれば、情報収集対象範囲に遷移してくる遷移元を特定することができるので、分析を容易にすることができるという効果を奏する。
また、発明によれば、段数指定を変えることによって様々な経路情報を収集するので、分析を容易にすることができるという効果を奏する。
また、発明によれば、設定した情報と実行位置の関係を把握することができるので、分析を容易にすることができるという効果を奏する。
また、発明によれば、関数の呼出し関係に関する情報を収集するので、関数の呼出関係に関する分析を容易にすることができるという効果を奏する。
また、発明によれば、様々な情報を収集することができるので、分析を容易にすることができるという効果を奏する。
以下に添付図面を参照して、この発明に係るプロファイリングプログラムおよびプロファイリング方法の好適な実施例を詳細に説明する。
まず、本実施例1に係るプロファイリングシステムの構成について説明する。図1は、本実施例1に係るプロファイリングシステムの構成を示す図である。同図に示すように、このプロファイリングシステムでは、コンピュータハードウェア10と、オペレーティングシステム20と、アプリケーションプログラム30と、プロファイリングプログラム100とが連携して情報を収集する。
コンピュータハードウェア10は、プロファイリングプログラム100を含めてプログラムを実行する装置であり、オペレーティングシステム20によって設定された条件が満たされた場合、すなわち、オペレーティングシステム20によって指定された事象が発生した場合に割込みを発生して予め登録された割込み処理プログラムを実行する。
オペレーティングシステム20は、コンピュータハードウェア10のリソースを管理し、アプリケーションプログラム30の実行制御などを行う制御プログラムであり、コンピュータハードウェア10に対して割込み発生事象の設定などを行う。
アプリケーションプログラム30は、情報が収集される対象プログラムであり、プロファイリングプログラム100が提供するAPIを用いてライブラリ関数を呼出すことによって情報収集に必要な処理を実行する。
プロファイリングプログラム100は、アプリケーションプログラム30の情報収集を行うプログラムであり、初期処理ルーチン110と、ターゲット範囲指定インタフェース120と、フラグ設定インタフェース130と、割込みハンドラ140と、フラグ管理テーブル150と、割込みハンドラ記録テーブル160とを有する。
初期処理ルーチン110は、オペレーティングシステム20に対して、サンプリング割込みを発生するタイマの設定や、サンプリング割込みが発生した際に起動される割込みハンドラ140の登録などを依頼する処理部である。なお、サンプリング割込み発生事象としては、タイマによる一定時間の経過の他に、一定回数の命令実行や一定回数の特定アドレスへのアクセスなどCPU性能モニタリング機構が割込みを発生する事象を設定することができる。
ターゲット範囲指定インタフェース120は、アプリケーションプログラム30から対象アドレス、関数名または実行コードに付されたラベルを引数として受け取り、情報収集の対象範囲をフラグ管理テーブル150に登録するライブラリ関数であり、アプリケーションプログラム30が対象範囲の指定に使用するAPIを提供する。
なお、情報収集の対象範囲として関数名あるいは実行コードに付されたラベルが指定された場合は、ターゲット範囲指定インタフェース120は、該当関数(あるいはラベルを含む関数)の開始アドレスと終了アドレスを、オペレーティングシステム20およびアプリケーションプログラム30より取得してフラグ管理テーブル150に登録する。
フラグ設定インタフェース130は、アプリケーションプログラム30からフラグ値を引数として受け取り、情報収集の対象範囲に対するフラグ値を設定するライブラリ関数であり、アプリケーションプログラム30がフラグ値の指定に使用するAPIを提供する。
ここで、フラグとは、情報収集対象範囲内で割込みハンドラ140が起動された場合に割込みハンドラ140によって値が収集される変数である。また、フラグ値としては複数の値を設定することができる。
このフラグ設定インタフェース130が、アプリケーションプログラム30からフラグ値を引数として受け取り、情報収集の対象範囲に対するフラグ値を設定することによって、アプリケーションプログラム30の実行状況に関する様々な情報を収集することができる。
割込みハンドラ140は、タイマによるサンプリング割込みやCPU性能モニタリング機構によるサンプリング割込みによって起動され、割込み発生時の実行アドレスを割込みハンドラ記録テーブル160に記録する割込み処理プログラムであり、フラグ管理テーブル150に登録された情報収集対象範囲内で起動されると、割込み発生時の実行アドレスに加えてフラグ値を割込みハンドラ記録テーブル160に記録する。
フラグ管理テーブル150は、アプリケーションプログラム30の情報収集に関する情報を記憶するテーブルである。図2は、フラグ管理テーブル150の一例を示す図である。
同図に示すように、このフラグ管理テーブル150は、アプリケーションプログラム30の情報収集対象範囲ごとに、対象範囲を識別する番号であるターゲット番号と、対象範囲の開始アドレスと、対象範囲の終了アドレスと、フラグ値とを対応させて記憶する。
例えば、ターゲット番号が「0」である情報収集対象範囲は、開始アドレスが「1000」であり、終了アドレスが「2000」であり、対象範囲内で割込みハンドラ140が起動されると「1」が割込みハンドラ140によって実行状況を示す情報として収集される。
割込みハンドラ記録テーブル160は、サンプリング割込みによって割込みハンドラ140が起動された場合に割込みハンドラ140によって収集された情報が記録されるテーブルである。
図3は、割込みハンドラ記録テーブル160の一例を示す図である。同図に示すように、この割込みハンドラ記録テーブル160には、サンプリング割込みが発生した時点でのアプリケーションプログラム30の実行アドレスである割込み時実行アドレスと、割込み時実行アドレスが情報収集対象範囲内である場合に記録されるフラグ値とが記録される。
例えば、サンプリング割込みが発生した時点でのアプリケーションプログラム30の実行アドレスが「1200」である場合には、図2に示した情報収集対象範囲がフラグ管理テーブル150に登録されているとすると、割込み時実行アドレスが情報収集対象範囲となるので、実行アドレス「1200」とフラグ値「1」が記録される。
次に、本実施例1に係るプロファイリングシステムの処理手順について説明する。図4は、本実施例1に係るプロファイリングシステムの処理手順を示すフローチャートである。同図に示すように、このプロファイリングシステムは、プロファイリングプログラム100の初期処理ルーチン110がタイマ設定などサンプリング割込み発生事象に関する設定および割込みハンドラ140の登録をオペレーティングシステム20に対して依頼する(ステップS101)。
すると、オペレーティングシステム20が、タイマ設定などサンプリング割込み発生に必要な設定をコンピュータハードウェア10に対して行う(ステップS102)。これにより一定の時間毎に、あるいはCPU事象の一定回数毎などにサンプリング割込みが発生し、割込みハンドラ140が呼ばれる。
そして、アプリケーションプログラム30がユーザによって埋め込まれたターゲット範囲指定インタフェース120の呼出しを行うと、ターゲット範囲指定インタフェース120は、情報収集対象範囲に関する情報をフラグ管理テーブル150に登録し、ターゲット番号を返す(ステップS103)。
そして、アプリケーションプログラム30がユーザによって経路情報、変数状態等のフラグへの設定のために埋め込まれたフラグ設定インタフェース130の呼出しを行うと、フラグ設定インタフェース130は、フラグ値をフラグ管理テーブル150に記録する(ステップS104)。なお、ユーザは、ターゲット番号によってフラグ値の対象となる情報収集範囲を指定する。
そして、タイマ割込みなどによって割込みハンドラ140が起動されると、割込みハンドラ140は、割込み時実行アドレスを割込みハンドラ記録テーブル160に記録し、そのアドレスが情報収集対象範囲内であればフラグ値を併せて記録する(ステップS105)。
このように、フラグ設定インタフェース130がフラグ値をフラグ管理テーブル150に記録し、割込みハンドラ140が割込み時実行アドレスが情報収集対象範囲内であればフラグ値を割込みハンドラ記録テーブル160に記録することによって、フラグ値に設定された経路情報や変数状態等の詳細な情報を収集することができる。
次に、具体例を用いてプロファイリングプログラム100の動作を説明する。図5は、本実施例1に係る具体例を示す図である。同図に示すように、アプリケーションプログラム30が、関数Aを実行する際にターゲット範囲指定インタフェース120が提供するAPIを用いて情報収集対象範囲を指定すると、ターゲット範囲指定インタフェース120は、フラグ管理テーブル150に開始アドレス、終了アドレスを設定する(1)。
具体的には、ターゲット範囲指定インタフェース120は、図5に示すように、ターゲット番号は「0」から昇順に付与した番号を、開始アドレスおよび終了アドレスには対象範囲(target関数()のアドレス)を開始アドレス「1000」、終了アドレス「2000」を設定する。
そして、アプリケーションプログラム30が関数Bを実行する際に、フラグ設定インタフェース130が提供するAPIを用いてフラグ値「1」を指定すると、フラグ設定インタフェース130は、フラグ管理テーブル150にフラグ値「1」を記録する(2)。
そして、アプリケーションプログラム30が、関数Cを呼出し(3)、関数Cからtarget関数を呼出し(4)、情報収集対象範囲であるtarget関数を実行する。このtarget関数実行中に、サンプリング割込みが発生すると(5)、プロファイリングプログラム100の割込みハンドラ140が呼出される。
そして、割り込みハンドラ140は、割込みハンドラ記録テーブル160に割込み時実行アドレスを記録し、かつそのアドレスがフラグ管理テーブル150に設定されているアドレス範囲内であるか否かを判断する。すると、ここでは、フラグ管理テーブル150に設定されているアドレス範囲内であるので、対応するフラグ値を併せて記録する(6)。
この例では、割込み時の実行アドレスが「1200」であり、割り込みハンドラ140は、割込みハンドラ記録テーブル160の割込み時実行アドレスに「1200」を記録し、そのアドレスがフラグ管理テーブル150の開始アドレス−終了アドレスの範囲に含まれるかを判断する。その結果、割込み時の実行アドレス「1200」が開始アドレス「1000」と終了アドレス「2000」の範囲に含まれるため、割込みハンドラ記録テーブル160のフラグ値に、フラグ管理テーブル150のフラグ値にその時点で記録されている値「1」を記録する。
このように、割込みハンドラ140が割込みハンドラ記録テーブル160に、その時点でフラグ管理テーブル150に記録されているフラグ値を記録することによって、実行アドレスに加えて他の情報を収集することができる。
上述してきたように、本実施例1では、ターゲット範囲指定インタフェース120が情報収集対象範囲の指定をアプリケーションプログラム30から受け取ってフラグ管理テーブル150に登録し、フラグ設定インタフェース130がフラグ値をアプリケーションプログラム30から受け取ってフラグ管理テーブル150に設定し、割込みハンドラ140が割込み発生時の実行アドレスがフラグ管理テーブル150に登録された情報収集対象範囲のいずれかに該当する場合には実行アドレスとともにフラグ管理テーブル150のその時点のフラグ値を割込みハンドラ記録テーブル160に記録することとしたので、フラグ値として経路情報や変数値を設定することによって、実行状況に関する詳細な情報を収集することができる。
ところで、上記実施例1では、フラグ設定インタフェース130が提供するAPIを用いてユーザがアプリケーションプログラム30でフラグ値を設定する場合について説明した。しかしながら、ユーザがアプリケーションプログラム30でフラグ値を設定することがユーザにとって負担となる場合もある。そこで、本実施例2では、ユーザがフラグ値を設定することなく経路情報を収集することができるプロファイリングプログラムについて説明する。
まず、本実施例2に係るプロファイリングシステムの構成について説明する。図6は、本実施例2に係るプロファイリングシステムの構成を示す図である。同図に示すように、このプロファイリングシステムでは、図1に示したプロファイリングシステムと比較して、プロファイリングプログラム100の代わりにプロファイリングプログラム200が、アプリケーションプログラム30の代わりにアプリケーションプログラム40が連携して情報を収集する。なお、ここでは説明の便宜上、図1に示した各部と同様の役割を果たす機能部については同一符号を付すこととしてその詳細な説明を省略する。
アプリケーションプログラム40は、アプリケーションプログラム30と同様に、情報収集の対象となるプログラムであるが、このアプリケーションプログラム40では、フラグ設定インタフェースが提供するAPIは使用されていない。すなわち、ユーザは、情報収集のためにフラグ値を設定する必要がない。
プロファイリングプログラム200は、アプリケーションプログラム40の実行状況に関する情報を収集するプログラムであり、初期処理ルーチン110と、ターゲット範囲指定インタフェース220と、フラグ設定インタフェース230と、割込みハンドラ140と、フラグ管理テーブル150と、割込みハンドラ記録テーブル160と、命令書換ルーチン270と、遷移管理テーブル280とを有する。
命令書換ルーチン270は、ターゲット範囲指定インタフェース220によって新たな情報収集対象範囲がフラグ管理テーブル150に登録されると、アプリケーションプログラム40を解析し、情報収集対象範囲に遷移してくる命令を抽出してフラグ設定インタフェース130を呼出すように命令の書換を行う処理部である。
また、この命令書換ルーチン270は、実行の遷移に関する情報として遷移管理テーブル280に遷移元アドレス、遷移先アドレス、遷移を識別する遷移識別値、フラグ管理テーブル150の対応するターゲット番号を設定する。なお、この遷移命令の抽出と書換えは、情報収集対象範囲に遷移してくる段数を指定できるものとする。
遷移管理テーブル280は、アプリケーションプログラム40における実行の遷移に関する情報を記憶するテーブルである。図7は、遷移管理テーブル280の一例を示す図である。同図に示すように、この遷移管理テーブル280は、遷移元アドレス、遷移先アドレス、ターゲット番号、遷移識別値を記憶する。
例えば、遷移識別値が「0」である遷移は、対応する情報収集対象範囲のターゲット番号は「0」であり、遷移元アドレスは「500」であり、遷移先アドレスは「100」である。
ターゲット範囲指定インタフェース220は、ターゲット範囲指定インタフェース120と同様に、情報収集対象範囲をフラグ管理テーブル150に登録するライブラリ関数であるが、情報収集対象範囲の登録後に命令書換ルーチン270を呼び出す。
フラグ設定インタフェース230は、遷移管理テーブル280より呼出し元アドレス(遷移元アドレス)からターゲット番号を得て、フラグ管理テーブル150の該当ターゲット番号のフラグ値に遷移識別値を記録する処理部である。また、このフラグ設定インタフェース230は、フラグ値の設定後、遷移先アドレスに実行アドレスを移す。
次に、具体例を用いてプロファイリングプログラム200の動作を説明する。図8は、本実施例2に係る具体例を示す図である。同図に示すように、アプリケーションプログラム40が、関数Aを実行する際にターゲット範囲指定インタフェース220が提供するAPIを用いて情報収集対象範囲を指定すると、ターゲット範囲指定インタフェース220は、フラグ管理テーブル150に開始アドレス、終了アドレスを設定する(1)。
具体的には、ターゲット範囲指定インタフェース220は、図8に示すように、ターゲット番号は「0」から昇順に付与した番号を、開始アドレスおよび終了アドレスには対象範囲(target関数()のアドレス)を開始アドレス「1000」、終了アドレス「2000」を設定する。
そして、命令書換ルーチン270がアプリケーションプログラム40を解析し、情報収集対象範囲に遷移してくる命令を抽出し、プロファイリングプログラム200のフラグ設定インタフェース230を呼出すように命令の書換えを行う。また、命令書換ルーチン270が遷移管理テーブル280に遷移元アドレス、遷移先アドレス、遷移識別値、フラグ管理テーブル150に設定された情報収集対象範囲のターゲット番号を設定する(2)。なお、図8の例では、情報収集対象範囲への2段前の遷移を対象として書換えを行う場合を示している。この段数としては、任意の段数を指定することが可能である。
具体的には、遷移元アドレスは"call 関数C"の命令アドレス「500」であり、遷移先アドレスは"関数C"の先頭命令アドレス「100」であり、ターゲット番号はフラグ管理テーブル150で相当する該当範囲「0」である。また、遷移識別子は「0」から昇順に付与した番号である。
そして、アプリケーションプログラム40は、関数Bを実行する際、書換えられた命令によりフラグ設定インタフェース230を呼出す(3)。すると、フラグ設定インタフェース230は、遷移管理テーブル280より呼出し元アドレス(遷移元アドレス)からターゲット番号を得て、フラグ管理テーブル150の該当ターゲット番号のフラグ値に遷移識別値を記録する。その後、遷移先アドレスに実行アドレスを移す(4)。
この例では呼出し元アドレスは「500」であるので、遷移管理テーブル280より遷移元アドレス「500」に対応するターゲット番号「0」を得て、フラグ管理テーブル150の該当ターゲット番号「0」のフラグ値に遷移識別値「0」を記録する。その後、遷移管理テーブル280より遷移先アドレス「100」を得て実行アドレスを移す。
そして、アプリケーションプログラム40は、情報収集対象範囲であるtarget関数に遷移する(5)。このtarget関数実行中に、サンプリング割込みが発生すると(6)、プロファイリングプログラム200の割込みハンドラ140が呼出される(7)。
そして、割り込みハンドラ140は、割込みハンドラ記録テーブル160に割込み時実行アドレスを記録し、かつそのアドレスがフラグ管理テーブル150に設定されているアドレス範囲であれば対応するフラグ値を併せて記録する。この例では、割込み時の実行時のアドレスが「1200」であった場合を示す。
この場合、まず、割込みハンドラ記録テーブル160の割込み時実行アドレスに「1200」を記録し、そのアドレスがフラグ管理テーブル150の開始アドレス−終了アドレスの範囲に含まれるかを判断する。この例では開始アドレス「1000」、終了アドレス「2000」であり該当し、割込みハンドラ記録テーブル160のフラグ値にフラグ管理テーブル150のフラグ値にその時点で記録されている「0」を記録する。
上述してきたように、本実施例2では、命令書換ルーチン270が、ターゲット範囲指定インタフェース220によって新たな情報収集対象範囲がフラグ管理テーブル150に登録されると、アプリケーションプログラム40を解析し、情報収集対象範囲に遷移してくる命令を抽出してフラグ設定インタフェース230を呼出すように命令の書換を行うとともに、遷移管理テーブル280に遷移元アドレス、遷移先アドレス、遷移を識別する遷移識別値、フラグ管理テーブル150の対応するターゲット番号を設定する。
そして、フラグ設定インタフェース230は、呼出されると、遷移管理テーブル280より呼出し元アドレス(遷移元アドレス)からターゲット番号を得て、フラグ管理テーブル150の該当ターゲット番号のフラグ値に遷移識別値を記録する。
したがって、ユーザは、アプリケーションプログラム40を修正してフラグ値を設定する必要がなくなり、ユーザの負担を軽減することができる。
次に、本実施例1および2に係るプロファイリングプログラムを実行するコンピュータについて説明する。図9は、本実施例1および2に係るプロファイリングプログラムを実行するコンピュータの構成を示す機能ブロック図である。
なお、プロファイリングプログラムのうち、割込みハンドラを除く部分はライブラリ関数としてアプリケーションプログラムの一部として実行されるため、ここでは、コンピュータはアプリケーションプログラム311と割込みハンドラ312を実行するものとする。また、このコンピュータ300は、図1に示したコンピュータハードウェア10に対応するものである。
図9に示すように、このコンピュータ300は、RAM310と、CPU320と、HDD330と、LANインタフェース340と、入出力インタフェース350と、DVDドライブ360とを有する。
RAM310は、プログラムやプログラムの実行途中結果などを記憶するメモリであり、CPU320は、RAM310からプログラムを読み出して実行する中央処理装置である。
HDD330は、プログラムやデータを格納するディスク装置であり、LANインタフェース340は、コンピュータ300をLAN経由で他のコンピュータに接続するためのインタフェースである。
入出力インタフェース350は、マウスやキーボードなどの入力装置および表示装置を接続するためのインタフェースであり、DVDドライブ360は、DVDの読み書きを行う装置である。
そして、このコンピュータ300において実行されるアプリケーションプログラム311は、コンパイル後HDD330に記憶され、RAM310に読み出されてCPU320によってアプリケーションプロセス321として実行される。また、割込みハンドラ312は、割込み処理プログラムとして登録されるとRAM310に記憶され、サンプリング割込みが発生するとCPU320によって実行される。
(付記1)所定の条件が満たされた際に発生する割込みにより起動される割込みハンドラによって情報収集対象プログラムの実行状況に関する情報を収集するプロファイリングプログラムであって、
前記割込みハンドラによって情報収集を行う対象範囲を指定する対象範囲指定手順と、
前記対象範囲指定手順により指定された対象範囲で前記割込みが発生した際に割込みハンドラによって収集される情報を設定する情報設定手順と、
をコンピュータに実行させることを特徴とするプロファイリングプログラム。
(付記2)前記所定の条件の設定および割込みハンドラの登録をオペレーティングシステムに依頼する初期処理手順をさらにコンピュータに実行させることを特徴とする付記1に記載のプロファイリングプログラム。
(付記3)前記対象範囲に遷移する関数呼出しを情報収集対象プログラムから検出し、該検出した関数呼出しを前記情報設定手順の呼出しに置き換えるとともに、該関数呼出しによる実行の遷移に関する情報を記録する関数置換手順をさらにコンピュータに実行させ、
前記情報設定手順は、前記関数置換手順により記録された実行の遷移に関する情報の一部を前記収集される情報として設定することを特徴とする付記1または2に記載のプロファイリングプログラム。
(付記4)前記関数置換手順は、前記実行の遷移に関する情報の一部として各遷移を識別する遷移識別子を記録し、
前記情報設定手順は、前記関数置換手順により記録された遷移識別子を前記収集される情報として設定することを特徴とする付記3に記載のプロファイリングプログラム。
(付記5)前記関数置換手順は、前記実行の遷移に関する情報として遷移元アドレスおよび遷移先アドレスを含む情報を記録することを特徴とする付記3または4に記載のプロファイリングプログラム。
(付記6)前記関数置換手順は、前記対象範囲に遷移するまでの関数呼出しの段数指定に基づいて前記関数呼出しを検出することを特徴とする付記3、4または5に記載のプロファイリングプログラム。
(付記7)前記情報設定手順により設定される情報は、割込みが発生した際の実行アドレスとともに収集されることを特徴とする付記1〜6のいずれか一つに記載のプロファイリングプログラム。
(付記8)前記対象範囲指定手順による対象範囲の指定には、関数名による指定が含まれることを特徴とする付記1〜7のいずれか一つに記載のプロファイリングプログラム。
(付記9)前記情報設定手順により設定される情報は複数の値から構成され、前記割込みハンドラは複数の値を収集することを特徴とする付記1〜8のいずれか一つに記載のプロファイリングプログラム。
(付記10)前記対象範囲指定手順および前記情報設定手順は、情報収集対象プログラムからAPIを用いて呼出されるライブラリ関数によって行われることを特徴とする付記1〜9のいずれか一つに記載のプロファイリングプログラム。
(付記11)所定の条件が満たされた際に発生する割込みにより起動される割込みハンドラによって情報収集対象プログラムの実行状況に関する情報を収集するプロファイリング方法であって、
前記割込みハンドラによって情報収集を行う対象範囲を指定する対象範囲指定工程と、
前記対象範囲指定工程により指定された対象範囲で前記割込みが発生した際に割込みハンドラによって収集される情報を設定する情報設定工程と、
を含んだことを特徴とするプロファイリング方法。
(付記12)前記所定の条件の設定および割込みハンドラの登録をオペレーティングシステムに依頼する初期処理工程をさらに含んだことを特徴とする付記11に記載のプロファイリング方法。
(付記13)前記対象範囲に遷移する関数呼出しを情報収集対象プログラムから検出し、該検出した関数呼出しを前記情報設定工程の呼出しに置き換えるとともに、該関数呼出しによる実行の遷移に関する情報を記録する関数置換工程をさらに含み、
前記情報設定工程は、前記関数置換工程により記録された実行の遷移に関する情報の一部を前記収集される情報として設定することを特徴とする付記11または12に記載のプロファイリング方法。
(付記14)前記関数置換工程は、前記実行の遷移に関する情報の一部として各遷移を識別する遷移識別子を記録し、
前記情報設定工程は、前記関数置換工程により記録された遷移識別子を前記収集される情報として設定することを特徴とする付記13に記載のプロファイリング方法。
(付記15)前記関数置換工程は、前記実行の遷移に関する情報として遷移元アドレスおよび遷移先アドレスを含む情報を記録することを特徴とする付記13または14に記載のプロファイリング方法。
(付記16)前記関数置換工程は、前記対象範囲に遷移するまでの関数呼出しの段数指定に基づいて前記関数呼出しを検出することを特徴とする付記13、14または15に記載のプロファイリング方法。
(付記17)前記情報設定工程により設定される情報は、割込みが発生した際の実行アドレスとともに収集されることを特徴とする付記11〜16のいずれか一つに記載のプロファイリング方法。
(付記18)前記対象範囲指定工程による対象範囲の指定には、関数名による指定が含まれることを特徴とする付記11〜17のいずれか一つに記載のプロファイリング方法。
(付記19)前記情報設定工程により設定される情報は複数の値から構成され、前記割込みハンドラは複数の値を収集することを特徴とする付記11〜18のいずれか一つに記載のプロファイリング方法。
(付記20)前記対象範囲指定工程および前記情報設定工程は、情報収集対象プログラムからAPIを用いて呼出されるライブラリ関数によって行われることを特徴とする付記11〜19のいずれか一つに記載のプロファイリング方法。
以上のように、本発明に係るプロファイリングプログラムおよびプロファイリング方法は、コンピュータシステムの性能分析や最適化に有用であり、特に、通信等のタイミングが重要なプログラムを対象とする場合に適している。
本実施例1に係るプロファイリングシステムの構成を示す図である。 フラグ管理テーブルの一例を示す図である。 割込みハンドラ記録テーブルの一例を示す図である。 本実施例1に係るプロファイリングシステムの処理手順を示すフローチャートである。 本実施例1に係る具体例を示す図である。 本実施例2に係るプロファイリングシステムの構成を示す図である。 遷移管理テーブルの一例を示す図である。 本実施例2に係る具体例を示す図である。 本実施例1および2に係るプロファイリングプログラムを実行するコンピュータの構成を示す機能ブロック図である。 従来のプロファイリング手法を説明するための説明図(1)である。 従来のプロファイリング手法を説明するための説明図(2)である。
符号の説明
10 コンピュータハードウェア
20 オペレーティングシステム
30,40 アプリケーションプログラム
100,200 プロファイリングプログラム
110 初期処理ルーチン
120 ターゲット範囲指定インタフェース
130,230 フラグ設定インタフェース
140 割込みハンドラ
150 フラグ管理テーブル
160 割込みハンドラ記録テーブル
270 命令書換ルーチン
280 遷移管理テーブル
300 コンピュータ
310 RAM
311 アプリケーションプログラム
312 割込みハンドラ
320 CPU
321 アプリケーションプロセス
330 HDD
340 LANインタフェース
350 入出力インタフェース
360 DVDドライブ

Claims (3)

  1. 所定の条件が満たされた際に発生する割込みにより起動される割込みハンドラを含み、当該割込みハンドラによって情報収集対象プログラムの実行状況に関する情報を収集するプロファイリングプログラムであって、
    前記割込みハンドラによって前記実行状況に関する情報の収集を行う対象範囲である、該対象範囲を識別する番号であるターゲット番号と、該対象範囲の開始アドレスと、該対象範囲の終了アドレスと、該対象範囲内で発生した関数の呼び出し経路を特定するフラグ値とを、前記情報収集対象プログラムによって呼び出されたインタフェースを介して受け付ける対象範囲指定手順と、
    前記対象範囲ごとに、該対象範囲を識別する番号であるターゲット番号と、該対象範囲の開始アドレスと、該対象範囲の終了アドレスと、該対象範囲内で発生した関数の呼び出し経路を特定するフラグ値とを対応づけて記憶するフラグ管理テーブルに、前記対象範囲指定手順により指定されたターゲット番号、開始アドレス及び終了アドレスを登録する対象範囲登録手順と、
    前記対象範囲内で発生した関数の呼び出し経路を特定するためのフラグ値を、前記情報収集対象プログラムによって呼び出されたインタフェースを介して受け付ける情報設定手順と、
    前記対象範囲指定手順により指定されたターゲット番号に対応付けて前記情報設定手順により設定されたフラグ値を前記フラグ管理テーブルに登録する情報登録手順と、
    前記対象範囲で割込みが発生した際に、該割込みが発生した時点での前記情報収集対象プログラムの実行アドレスである割込み時実行アドレスと、前記割込みハンドラによって収集された前記フラグ値とを対応付けて割込みハンドラ記録テーブルに記録する記録手順と、
    をコンピュータに実行させることを特徴とするプロファイリングプログラム。
  2. 前記対象範囲に遷移してくる関数の呼出しを行う呼出し元の関数を情報収集対象プログラムから検出し、該検出した呼出し元の関数の関数呼出しを前記情報設定手順の呼出しに置き換えるとともに、該関数呼出しによる実行の遷移に関する情報として、各遷移のそれぞれ識別する遷移識別子、該対象範囲に遷移する関数呼出しの命令アドレスである遷移元アドレス、該対象範囲に遷移する関数呼出しの先頭命令アドレスである遷移先アドレス、および該対象範囲のターゲット番号を遷移管理テーブルに設定する関数置換手順をさらにコンピュータに実行させ、
    前記情報設定手順は、前記置き換えによる呼出しに応じて、前記遷移元アドレスに対応するターゲット番号を前記遷移管理テーブルから取得し、該取得した遷移識別子を該ターゲット番号に対応付けて前記フラグ値として前記フラグ管理テーブルに設定した後、前記遷移管理テーブルから前記遷移先アドレスを取得し、実行アドレスを該遷移先アドレスに移すことを特徴とする請求項1に記載のプロファイリングプログラム。
  3. 所定の条件が満たされた際に発生する割込みにより起動される割込みハンドラを含み、当該割込みハンドラによって情報収集対象プログラムの実行状況に関する情報を収集する処理をコンピュータが実行するプロファイリング方法であって、
    前記コンピュータが、
    前記割込みハンドラによって前記実行状況に関する情報の収集を行う対象範囲である、該対象範囲を識別する番号であるターゲット番号と、該対象範囲の開始アドレスと、該対象範囲の終了アドレスと、該対象範囲内で発生した関数の呼び出し経路を特定するフラグ値とを、前記情報収集対象プログラムによって呼び出されたインタフェースを介して受け付ける対象範囲指定工程と、
    前記対象範囲ごとに、該対象範囲を識別する番号であるターゲット番号と、該対象範囲の開始アドレスと、該対象範囲の終了アドレスと、該対象範囲内で発生した関数の呼び出し経路を特定するフラグ値とを対応づけて記憶するフラグ管理テーブルに、前記対象範囲指定工程により指定されたターゲット番号、開始アドレス及び終了アドレスを登録する対象範囲登録工程と、
    前記対象範囲内で発生した関数の呼び出し経路を特定するためのフラグ値を、前記情報収集対象プログラムによって呼び出されたインタフェースを介して受け付ける情報設定工程と、
    前記対象範囲指定工程により指定されたターゲット番号に対応付けて前記情報設定工程により設定されたフラグ値を前記フラグ管理テーブルに登録する情報登録工程と、
    前記対象範囲で割込みが発生した際に、該割込みが発生した時点での前記情報収集対象プログラムの実行アドレスである割込み時実行アドレスと、前記割込みハンドラによって収集された前記フラグ値とを対応付けて割込みハンドラ記録テーブルに記録する記録工程と、
    を実行することを特徴とするプロファイリング方法。
JP2006099350A 2006-03-31 2006-03-31 プロファイリングプログラムおよびプロファイリング方法 Expired - Fee Related JP4681491B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006099350A JP4681491B2 (ja) 2006-03-31 2006-03-31 プロファイリングプログラムおよびプロファイリング方法
US11/493,564 US8032869B2 (en) 2006-03-31 2006-07-27 Profiling method and computer product

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006099350A JP4681491B2 (ja) 2006-03-31 2006-03-31 プロファイリングプログラムおよびプロファイリング方法

Publications (2)

Publication Number Publication Date
JP2007272692A JP2007272692A (ja) 2007-10-18
JP4681491B2 true JP4681491B2 (ja) 2011-05-11

Family

ID=38561034

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006099350A Expired - Fee Related JP4681491B2 (ja) 2006-03-31 2006-03-31 プロファイリングプログラムおよびプロファイリング方法

Country Status (2)

Country Link
US (1) US8032869B2 (ja)
JP (1) JP4681491B2 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8429613B2 (en) 2006-10-31 2013-04-23 Microsoft Corporation Stepping and application state viewing between points
JP5029245B2 (ja) * 2007-09-20 2012-09-19 富士通セミコンダクター株式会社 プロファイリング方法及びプログラム
US20090113400A1 (en) * 2007-10-24 2009-04-30 Dan Pelleg Device, System and method of Profiling Computer Programs
US8990792B2 (en) * 2008-05-26 2015-03-24 Samsung Electronics Co., Ltd. Method for constructing dynamic call graph of application
US7917677B2 (en) * 2008-09-15 2011-03-29 International Business Machines Corporation Smart profiler
JP5386905B2 (ja) 2008-09-25 2014-01-15 富士通セミコンダクター株式会社 プロファイリング方法およびプロファイリングプログラム
JP5326708B2 (ja) 2009-03-18 2013-10-30 富士通株式会社 演算処理装置および演算処理装置の制御方法
JP5423232B2 (ja) * 2009-08-17 2014-02-19 富士通株式会社 プロセス状態検知プログラム、情報処理装置、プロセス状態検知方法
JP5045787B2 (ja) * 2010-06-07 2012-10-10 コニカミノルタビジネステクノロジーズ株式会社 情報処理装置、情報処理方法およびプログラム
US8601194B2 (en) * 2011-02-08 2013-12-03 Red Hat Israel, Ltd. On-demand interrupt vector allocation based on activity detection
US9213641B2 (en) 2012-06-14 2015-12-15 International Business Machines Corporation Cache line history tracking using an instruction address register file
JP6693308B2 (ja) * 2016-07-05 2020-05-13 富士通株式会社 負荷推定プログラム、負荷推定方法及び負荷推定装置
US20220100860A1 (en) * 2020-09-25 2022-03-31 Ati Technologies Ulc Secure collection and communication of computing device working data

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01270153A (ja) * 1988-04-21 1989-10-27 Nec Corp プログラム割込情報収集方式
JPH0358144A (ja) * 1989-07-26 1991-03-13 Nec Corp プログラム走行覆歴情報収集方式
JPH11212837A (ja) * 1998-01-26 1999-08-06 Nec Corp 言語処理方法及び言語処理装置並びに言語処理プログラムを記録した記憶媒体

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003140928A (ja) 2001-11-02 2003-05-16 Fujitsu Ltd 仮想マシン内部情報自動取得システム
US7159144B2 (en) * 2003-06-20 2007-01-02 Broadcom Corporation Firmware code profiling
US7721268B2 (en) * 2004-10-01 2010-05-18 Microsoft Corporation Method and system for a call stack capture
JP4899511B2 (ja) * 2006-02-08 2012-03-21 富士通株式会社 システム分析プログラム、システム分析装置、およびシステム分析方法
JP4957017B2 (ja) * 2006-03-02 2012-06-20 富士通セミコンダクター株式会社 性能チューニング方法及び装置、プログラム及び記憶媒体
JP5386905B2 (ja) * 2008-09-25 2014-01-15 富士通セミコンダクター株式会社 プロファイリング方法およびプロファイリングプログラム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01270153A (ja) * 1988-04-21 1989-10-27 Nec Corp プログラム割込情報収集方式
JPH0358144A (ja) * 1989-07-26 1991-03-13 Nec Corp プログラム走行覆歴情報収集方式
JPH11212837A (ja) * 1998-01-26 1999-08-06 Nec Corp 言語処理方法及び言語処理装置並びに言語処理プログラムを記録した記憶媒体

Also Published As

Publication number Publication date
US20070234298A1 (en) 2007-10-04
JP2007272692A (ja) 2007-10-18
US8032869B2 (en) 2011-10-04

Similar Documents

Publication Publication Date Title
JP4681491B2 (ja) プロファイリングプログラムおよびプロファイリング方法
JP5520371B2 (ja) 多重仮想マシンのためのサポートを有する、トレース・データの時間ベース・コンテキスト・サンプリング
JP4003830B2 (ja) マルチプロセッシング環境における透過動的最適化のための方法およびシステム
US7620938B2 (en) Compressed program recording
US6233678B1 (en) Method and apparatus for profiling of non-instrumented programs and dynamic processing of profile data
CN101957773B (zh) 用于多轮次动态概要分析的方法及其系统
JP3731887B2 (ja) 繰返し命令の追跡許可
JP2005018760A (ja) アプリケーションのプロファイリングを容易にするシステムおよび方法
US20040117760A1 (en) Reality-based optimization
US20030135720A1 (en) Method and system using hardware assistance for instruction tracing with secondary set of interruption resources
JP5029245B2 (ja) プロファイリング方法及びプログラム
US11748072B2 (en) Apparatus and method for source code optimisation
JP2013533553A (ja) システムテスト方法
EP3391224B1 (en) Method and apparatus for data mining from core traces
JP4940996B2 (ja) プロファイリング装置およびプロファイリングプログラム
US8065665B1 (en) Method and apparatus for correlating profile data
JP2014038408A (ja) 同時マルチスレッディング機能をもったプロセッサのパイプラインにおけるストール削減方法、削減装置及び削減プログラム
US7735073B1 (en) Method and apparatus for data object profiling
JP6544054B2 (ja) 情報処理装置、実行情報記録プログラムおよび実行情報記録方法
US20040193395A1 (en) Program analyzer for a cycle accurate simulator
US20090187890A1 (en) Method and System for Associating Profiler Data With a Reference Clock
CN114780409A (zh) 基于程序运行进程的断点设置方法、电子设备和存储介质
US7827543B1 (en) Method and apparatus for profiling data addresses
CN110297639B (zh) 用于检测代码的方法和装置
JP2018097817A (ja) 情報処理装置、情報処理方法及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080818

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100726

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100803

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101001

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101102

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101228

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110201

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110204

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140210

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees