JP4879782B2 - プログラムプロファイリング方法、及びプログラム - Google Patents

プログラムプロファイリング方法、及びプログラム Download PDF

Info

Publication number
JP4879782B2
JP4879782B2 JP2007057896A JP2007057896A JP4879782B2 JP 4879782 B2 JP4879782 B2 JP 4879782B2 JP 2007057896 A JP2007057896 A JP 2007057896A JP 2007057896 A JP2007057896 A JP 2007057896A JP 4879782 B2 JP4879782 B2 JP 4879782B2
Authority
JP
Japan
Prior art keywords
program
unit
measurement
execution
processing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2007057896A
Other languages
English (en)
Other versions
JP2008217721A (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.)
NTT Data Corp
Original Assignee
NTT Data Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NTT Data Corp filed Critical NTT Data Corp
Priority to JP2007057896A priority Critical patent/JP4879782B2/ja
Publication of JP2008217721A publication Critical patent/JP2008217721A/ja
Application granted granted Critical
Publication of JP4879782B2 publication Critical patent/JP4879782B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Description

本発明は、複数のメソッドで構成されたプログラムを実行したときに、各メソッドの処理時間を測定したり、メソッド間の呼出関係を解析する、プログラムプロファイリング方法、及びプログラムに関する。
複数のメソッドで構成されたプログラムの処理性能の改善を目的として、プログラム全体の性能の低下に大きな影響を与えるメソッド(ボトルネック)等を特定するために、プログラム実行時の各メソッドの処理時間を計測したり、メソッド間の呼出関係を解析したりすること(以下プロファイリングという)が行われている。
例えば、特許文献1は、ソースプログラムや実行プログラムを加工し、計測対象とするメソッドの前後にプローブを挿入し、このプローブの処理によってプロファイリングを行う技術を開示している。
また、特許文献2は、メソッド間の呼出関係をログへ出力するための技術を開示している。
特開2004−94374号公報 特開2004−259154号公報
しかし、特許文献1に開示されている技術では、プロファイリングの際、全ての計測対象のメソッドに挿入されているプローブが実行されるため、高い負荷がかかってしまう。そのため、実際の実行条件とは大きくかけ離れた環境でプロファイリングをすることになり、プロファイリングの計測結果の精度が低下してしまうという問題を有する。
また、この計測結果の精度の低下を防ぐために、計測対象にする処理(メソッド)を複数回に分けてプロファイリングしてもよいが、複数回に分けてプロファイリングをするためには、各回毎にプログラムに埋め込むプローブを変更する必要があり、面倒である。
また、特許文献2に開示されている技術でも、処理間の呼出関係が複雑な場合には、ログに書き込む処理が膨大になり、やはりこのログに書き込む処理自体に高い負荷がかかることになる。そのため、実際の実行条件とは異なる環境でプロファイリングをすることになってしまい、計測結果の精度が低下してしまうという問題を有する。
本発明は、上記実状に鑑みてなされたものであり、精度の高いプロファイリングが可能なプログラムプロファイリング方法、及びプログラムを提供することを目的とする。
本発明は、実行負荷の小さいプロファイリングを行うことができるプログラムプロファイリング方法、及びプログラムを提供することを目的とする。
上記目的を達成するため、この発明のプログラムプロファイリング方法は、
複数のメソッドから構成されたプログラムを実行し、該複数のメソッドのうちの特定の各メソッドの処理時間とメソッド間の呼出関係とを求め、
求めた処理時間と呼出関係に基づいて、処理時間が所定の基準を満たすメソッド、および、該所定の基準を満たすメソッドを起点として所定の範囲内でメソッド間の呼出関係を辿ったメソッドを主要メソッドとして特定し、
前記プログラムを再度実行して、特定した主要メソッドが開始又は終了する毎に、該主要メソッドが開始か終了かを表す情報とそのときの時刻と該主要メソッドが属するスレッドと該主要メソッドの識別情報とを対応付けて記憶する、
ことを特徴とする。
また、この発明のプログラムは、
コンピュータに、
複数のメソッドから構成されたプログラムを実行し、該複数のメソッドのうちの特定の各メソッドの処理時間とメソッド間の呼出関係とを求め、
求めた処理時間と呼出関係に基づいて、処理時間が所定の基準を満たすメソッド、および、該所定の基準を満たすメソッドを起点として所定の範囲内でメソッド間の呼出関係を辿ったメソッドを主要メソッドとして特定し、
前記プログラムを再度実行して、特定した主要メソッドが開始又は終了する毎に、該主要メソッドが開始か終了かを表す情報とそのときの時刻と該主要メソッドが属するスレッドと該主要メソッドの識別情報とを対応付けて記憶する、
処理を実行させる。
本発明によれば、メソッドを主要なものに絞り込んで処理を行うので、実行環境にかける負荷の小さいプロファイリングが可能となる。
以下、本発明の実施形態に係るプログラムプロファイリング装置について、図面を参照して説明する。
プログラムプロファイリング装置1は、図1に示すように、通信部11と、入力部12と、出力部13と、記憶部14と、入出力I/F部15と、制御部16と、を備え、各部はバス17を介して互いに接続されている。
通信部11は、通信ネットワーク2を介して、ネットワーク上の情報処理装置等と通信を行うものであり、通信インタフェース等を備える。例えば、通信部11が、プロファイリングの対象となる実行プログラムを受信することにより、プログラムプロファイリング装置1はプロファイリングの対象を取り込む。
なお、本実施形態でプロファイリングの対象とする実行プログラムは複数のクラスから構成され、各クラスは1つ以上のメソッドを備えているものとする。
入力部12は、プログラムプロファイリング装置1に様々な情報を入力するために使用するものであり、ボタン、キー等の入力装置を備える。例えば、入力部12には、後述する分析処理の開始指示情報等が入力される。
出力部13は、様々な情報を出力するものであり、ディスプレイ等の表示装置を備える。例えば、出力部13には、後述する分析処理において測定されたメソッド毎の処理時間の一覧画面等が表示される。
記憶部14は、様々な情報やプログラム等を記憶するものであり、ハードディスク等の補助記憶装置を備える。例えば、記憶部14は、分析処理を行う前に、予め、通信部11等を介して取り込んだ実行プログラム等を記憶しておく。
また、記憶部は、図2に示すように、プローブ挿入対象記憶テーブル141と、メソッド統計情報記憶テーブル142と、コールグラフ情報記憶テーブル143と、メソッド情報記憶テーブル144と、メソッド詳細性能ログテーブル145と、を記憶する。
プローブ挿入対象記憶テーブル141は図4に示すように、プロファイリング対象の実行プログラムを構成するクラス毎に、該クラスにプローブを挿入するか否かを示す情報を記憶する。
メソッド統計情報記憶テーブル142および、コールグラフ情報記憶テーブル143は、後述する統計モードでのプロファイリングの結果を記憶するテーブルである。
メソッド統計情報記憶テーブル142は、図5に示すように、統計モードでのプロファイリングで測定された、メソッド毎の総実行時間と、実行回数と、平均実行時間とを記憶する。なお、平均実行時間は、総実行時間/実行回数で算出できる時間である。
コールグラフ情報記憶テーブル143は、図6(A)に示すように、統計モードでのプロファイリングで求められた処理(メソッド)間の呼出関係を記憶する。なお、コールグラフ情報記憶テーブル143に図6(A)に示すような情報が記憶されている場合、この記憶情報から図6(B)に示すような呼出間系を表したグラフ(コールグラフ)を作成することができる。
メソッド情報記憶テーブル144は、図7に示すように、実行プログラムに含まれるメソッド毎に、識別情報(メソッドID)と、メソッド名と、該メソッドが属するクラスの名称と、計測可否情報とを記憶する。計測可否情報は、該メソッドを計測部が行うプロファイルの対象とするか否かを示す情報である。
メソッド詳細性能ログテーブル145は、後述する詳細モードでのプロファイリングの結果を記憶するテーブルである。メソッド詳細性能ログテーブル145は、図8に示すように、詳細モードでのプロファイリングによって実行されたメソッドの処理毎に、処理が実行された時刻(コンピュータあるいはプログラム固有の時刻でも、現在日時等でもよい)と、その時刻に処理が開始したのか終了したのかを示す処理の種類情報と、対象スレッドの識別情報(図では名称)と、呼出元のメソッドの識別情報(図では名称)と、その処理で実行されたメソッドの識別情報(図では名称)とを対応付けて時刻順に記憶する。
図1に戻り、入出力I/F部15は、入出力機器3を接続するためのインタフェースである。例えば、プロファイリング対象となる実行プログラム等を、通信部11ではなく、入出力I/F部15を介して、CD−ROMドライブ等の入出力機器3から取り込むこともできる。
制御部16は、データの演算処理を行うと共に、バス17を介して通信部11、入力部12、出力部13、記憶部14、入出力I/F部15を制御するものであり、CPU(Central Processing Unit)161、ROM(Read Only Memory)162、RAM(Random Access Memory)163等を備える。制御部16における演算処理及び制御処理は、具体的には、CPU161が、RAM163を作業領域として使用して各種データを一時的に記憶させながら、ROM162fcに記憶されている制御プログラムを実行することにより行われる。
例えば、制御部16が、ROM162や記憶部14に記憶されている制御プログラムに従って上記各部を制御することにより、プログラムプロファイリング装置1において、プロファイリング処理等が行われる。
図3は、本実施の形態に係るプログラムプロファイリング装置の機能構成例を示すブロック図である。
プログラムプロファイリング装置1は、機能的には、図示するように、プローブ挿入部21と、プログラム実行部22と、計測部23と、計測モード切替部24と、計測対象設定部25と、シーケンス解析部26と、シーケンス表示部27と、を備える。なお、これらの各構成要素は、図1に示した制御部16が、同じく図1に示した通信部11、入力部12、出力部13、記憶部14、又は入出力I/F部15を制御することにより、実現することができる。
プローブ挿入部21は、プローブ挿入対象記憶テーブル141で挿入対象であると設定されている(可と設定されている)クラスのメソッドに対して、計測用のプローブを挿入するとともに、該メソッドをメソッド情報記憶テーブル144に登録する。なお、該処理の詳細については後述する。
プログラム実行部22は、プローブが挿入された実行プログラムを実行する。
計測部23は、プログラム実行部22によって実行された実行プログラムの処理(メソッド)に関する情報を計測する。なお、この計測処理は統計モードと詳細モードの2種類のモードを有する。統計モードによる計測処理は統計モード計測部231が行う。詳細モードによる計測処理は詳細モード計測部232が行う。なお、各モードの計測処理の詳細については後述する。
計測モード切替部24は、上述した計測処理の統計モードと詳細モードとを切り換える処理を行う。
計測対象設定部25は、計測部23で計測の対象とするメソッドを設定する。具体的には、統計モードで計測を行うときには、計測対象設定部25は、メソッド情報記憶テーブル144に記憶されているメソッドの計測可否情報を全て「可」に設定して、全メソッドを計測対象とするように設定する。なお、該処理の詳細については後述する。
また、詳細モードで計測を行うときには、計測対象設定部25は、メソッド統計情報記憶テーブル142とコールグラフ情報記憶テーブル143とに記憶されている記憶情報に基づいて、計測対象を絞り込む処理を行う。そして、計測対象設定部25は、この絞り込み処理で絞り込まれたメソッドのメソッド情報記憶テーブル144に記憶されている計測可否情報を「可」に、絞り込まれたメソッド以外のメソッド情報記憶テーブル144に記憶されている計測可否情報を「否」に設定することにより、絞り込まれたメソッドのみがプロファイルの対象となるようにする。なお、該処理の詳細については後述する。
シーケンス解析26は、メソッド詳細性能ログテーブル145に記憶されている記憶情報から、処理の流れ(シーケンス)を解析する。なお、該処理の詳細については後述する。
シーケンス表示部27は、シーケンス解析26が解析したシーケンスを図示したシーケンス図を作成して、出力部13に表示させる。なお、該処理の詳細については後述する。
次に、プログラム計測装置1で、プログラムを実行した際の処理のボトルネックを見つけるために、プログラム(実行プログラム)をプロファイリングする処理について説明する。
なお、前提として、予め計測の対象となる実行プログラムは、記憶部14に格納されており、該実行プログラムを構成するクラスのうち、どのクラスをプローブの挿入対象とするかを示すための情報も、ユーザの準備作業等によりプローブ挿入対象記憶テーブル141に予め記憶されているものとする。
ユーザから、実行プログラムを計測するための指示入力が入力部12よりなされ、その入力情報が制御部16に送信されると、図9に示す計測処理が開始される。
まず、プローブ挿入部21は、実行プログラムにメソッド計測用のプローブを挿入する(ステップS101)。なお、該処理の詳細については後述する。
次に、統計モード計測部231はプローブを挿入したメソッドを全て測定対象としてメソッド毎の処理時間と呼出関係とを計測する統計モード計測処理を行う(ステップS102)。なお、該処理の詳細については後述する。
次に、計測対象設定部25は、ステップS102で行った統計モード計測処理の結果から、詳細モードで計測処理を行うためのメソッドを絞り込む(ステップS103)。なお、該処理の詳細については後述する。
そして、詳細モード計測部232は、ステップS103で絞り込まれたメソッドが処理される毎に、該処理に関する各種の情報を計測する詳細モード計測処理を行う(ステップS104)。なお、該処理の詳細については後述する。
そして、シーケンス解析部26は、詳細モード計測処理の結果から処理の流れ(シーケンス)を解析し、シーケンス表示部27がシーケンスを図示して表示し(ステップS105)、プロファイル処理は終了する。
次に、図9のフローチャートに示した計測処理を、図10〜図17を参照してより詳細に説明する。
(1)図9ステップS101のプローブ挿入処理:
まず、プローブ挿入部21は、計測対象の実行プログラムを構成するクラスを1つRAM163に読み込む(図10、ステップS201)。
続いて、プローブ挿入部21は、プローブ挿入対象記憶テーブル141に記憶されている情報に基づいて、ステップS201で読み込んだクラスが、プローブ挿入対象になっているか否かを判断する(ステップS202)。
プローブ挿入対象のクラスでないと判断した場合(ステップS202;No)、プローブ挿入部21は、処理をステップS206に移す。
プローブ挿入対象のクラスであると判断した場合(ステップS202;Yes)、プローブ挿入部21は、クラスに含まれるメソッドに対して識別情報(メソッドID)を発行する(ステップS203)。
そして、プローブ挿入部21は、メソッドIDを発行したメソッドの前後(実行段階でそのメソッドの実行の前後となる部分)に、計測用のプローブを挿入する(ステップS204)。
なお、メソッドの処理の前に挿入されたプローブを実行開始(検出用の)プローブ、メソッドの後に挿入されたプローブを実行終了(検出用の)プローブとして、以下説明する。
図11は、このプローブの挿入を説明するための図である。
なお、図11に記載されているプログラムは、理解を容易にするため、バイナリデータである実行プログラムをJAVA(登録商標)の言語形式で表したものである。
図11(A)が示す実行プログラムには、クラス「A」が含まれており、クラス「A」には、引数が無いメソッド「sayHello」と、ストリング型の引数を持つメソッド「sayHello」とが含まれている。
この目的プログラムにプローブが挿入された場合、クラス「A」には図11(B)に示すように、クラス「A」内の処理の先頭に、プローブの処理を実行させるか否かを示すフラグ「flag_1」、「flag_2」と、各メソッドの処理の開始時点に挿入される実行開始プローブ「enterMethod」と、各メソッドの処理の終了時点に挿入される実行終了プローブ「exitMethod」とが挿入される。
続いて、プローブ挿入部21は、メソッド情報記憶テーブル144にステップS204で挿入したメソッドのメソッドID、クラス名、メソッド名を対応付けて1つのレコードとして登録する(図10,ステップS205)。また、この登録の際、登録したレコードに設定されている計測可否フラグは、「可」に設定する。すなわち、この処理により、プローブが挿入されたメソッドが全て計測可否フラグ「可」と設定されて、メソッド情報記憶テーブル144に登録されることになる。
続いて、ステップS206で、プローブ挿入部21は、読み込んでいない他のクラスが有るか否かを判別する。
読み込んでいない他のクラスが有ると判別した場合は(ステップS206;Yes)、プローブ挿入部21は、ステップS201〜ステップS205の処理を繰り返す。
読み込んでいない他のクラスがない判別した場合は(ステップS206;No)、プローブ挿入処理は終了する。
(2)図9ステップS103の統計モード計測処理:
まず、計測モード切替部24は、計測部23で計測するモードを統計モードに切り換える。
その後、プログラム実行部22が、プローブ挿入済みの実行プログラムを実行すると、実行プログラムのメソッドに埋め込まれているプローブの処理により、統計モードでのメソッドの計測がなされる。
ここで、この実行プログラムの実行によって行われる、プローブが挿入されているメソッドの動作について、図12を参照して説明する。
まず、メソッドの実行が開始されると、プログラム実行部22は、該メソッドが計測の対象となっているか否かを判断する(ステップS301)。具体的には、プログラム実行部22は、メソッド情報記憶テーブル144の計測可否情報に基づいて、この判断を行う。
メソッドが計測の対象となっていないと判断した場合(ステップS301;No)、プログラム実行部22は処理をステップS304に移す。
メソッドが計測の対象となっていると判断した場合(ステップS301;Yes)、プログラム実行部22は、統計モード計測部231に、該メソッドのメソッドIDを含んだ計測開始通知を送信する(ステップS302)。
統計モード計測部231は、計測開始通知を受信すると、該メソッドに挿入されている実行開始プローブを実行して(ステップS303)、プログラム実行部22のステップS304に処理を移す。なお、この実行開始プローブの実行により、該メソッドが開始されたことを示す情報がそのときの時刻とともに図13(A)のL1に示すように、RAM163に記録される。
図12に戻り、ステップS304で、プログラム実行部22は、該メソッドに挿入されているプローブ以外のメソッドの処理を実行する。
次に、プログラム実行部22は、当該メソッドが計測の対象となっているか否かを判別する(ステップS305)。
メソッドが計測の対象となっていないと判断した場合(ステップS305;No)、プログラム実行部22はメソッドの実行を終了する。
メソッドが計測の対象となっていると判断した場合(ステップS305;Yes)、プログラム実行部22は、統計モード計測部231に該メソッドのメソッドIDを含んだ計測終了通知を送信する(ステップS306)。
統計モード計測部231は、計測終了通知を受信すると、該メソッドに挿入されている実行終了プローブを実行する(ステップS307)。この実行終了プローブの実行により、該メソッドが終了したことを示す情報がそのときの時刻とともに図13(A)のL2に示すように、RAM163に記録される。
そして、統計モード計測部231は、ステップS303とステップS307とでRAM163に記録した情報から、該メソッドの処理時間を算出し、算出した処理時間をメソッド統計情報記憶テーブル142の当該メソッドの総実行時間に加算すると共に、実行回数を1プラスする(ステップS308)。
例えば、図13(A)に示すような情報がRAM163に記憶されている場合には、メソッドID「01」を有するメソッドの処理時間が4秒加算され、またその実行回数が1プラスされる。
続いて、統計モード計測部231は、当該メソッドが、別のメソッドから呼び出されて実行されている場合には、その呼出元、呼出先の対応関係をコールグラフ情報記憶テーブル143に記憶する(ステップS309)。
例えば、ステップS303とステップS307との処理により、図13(B)に示すような情報がRAM163に記憶されている場合には、呼出先をメソッド「01」、呼出先をメソッド「02」とする対応関係がコールグラフ情報記憶テーブル143に記録される。
なお、コールグラフ情報記憶テーブル143に既に記憶されている対応関係である場合には、その対応関係を記憶する必要はない。また、この呼出先の対応関係は、実行プログラムを実行するための仮想マシン等が提供するAPI(Application Program Interface)を利用することにより求めてもよい。
以上で、プローブが挿入されたメソッドが実行された場合の処理は終了する。そして、実行プログラムを実行したときに実行される全てのプローブが挿入されているメソッドに対して、前述の処理が実行され、統計モードでの計測がなされ、メソッド統計情報記憶テーブル142および、コールグラフ情報記憶テーブル143に、計測の結果が記憶される。
(3)図9ステップS103の計測対象絞り込み処理:
まず、計測対象設定部25は、メソッド統計情報記憶テーブル142に記憶されている記憶情報から、最大の総実行時間を有するメソッドを特定し、特定したメソッドのメソッドIDとその最大の総実行時間とをRAM163に記憶し(図14、ステップS401)、ステップS402へ処理を移す。
ステップS402で、計測対象設定部25は、コールグラフ情報記憶テーブル143に記憶されている記憶情報に基づいて、ステップS401又はステップS405でRAM163に記憶したメソッドIDを有するメソッドを起点としたコールグラフの幅優先探索を行い、起点としたメソッドから所定の距離N(例えば2)以内のメソッドを特定する。例えば、図6(B)に示すようなコールグラフを表示するための情報がコールグラフ情報記憶テーブル143に記憶されており、起点を処理Aとして幅優先探索を行った場合、距離2以内のメソッドとして、処理Eと処理Dとが検出される。
続いて、計測対象設定部25は、ステップS402で特定したメソッドのメソッドIDをRAM163に記憶するとともに、それらのメソッドの総実行時間をメソッド情報記憶テーブル144より取得し、RAM163に記録した総実行時間に累計する(ステップS403)。
続いて、計測対象設定部25は、RAM163に累計して記憶した総実行時間が、メソッド統計情報記憶テーブル142に記憶されている全てのメソッドで合計した総実行時間に対して、所定の割合以上(例えば10%以上)に達したか否かを判断する(ステップS404)。
所定の割合以上に達していないと判断した場合(ステップS404;No)、計測対象設定部25は、次に長い総実行時間を有するメソッドのメソッドIDをメソッド統計情報記憶テーブル142より取得してRAM163に記憶するとともに、そのメソッドの総実行時間をRAM163に記憶した総実行時間に累計して(ステップS405)、処理をステップS402に移す。
特定の割合に達したと判断した場合(ステップS404;Yes)、計測対象設定部25は、RAM163に記憶したメソッドIDを有するメソッドのメソッド情報記憶テーブル144の計測可否フラグを「計測可」に、それ以外のメソッドの計測可否フラグを「計測不可」に設定する(ステップS406)。
以上で、計測対象絞り込み処理は終了する。
このように、この計測対象絞り込み処理により、実行プログラムを実行した際の処理時間の主要な要因となるメソッドが特定され、この特定されたメソッドのみが詳細モードでの計測対象に設定される。
(4)図9ステップS104の詳細モード計測処理:
まず、計測モード切替部24は、計測部23で計測するモードを詳細モードに切り換える。
そして、その後、プログラム実行部22が、プローブ挿入済み実行プログラムを実行すると、実行プログラムのメソッドに埋め込まれているプローブの処理により、詳細モードでの計測がなされる。
ここで、この実行プログラムの実行による、プローブが挿入されているメソッドの動作について、図15を参照して説明する。
まず、メソッドの実行が開始されると、プログラム実行部22は、該メソッドが計測の対象となっているか否かを判断する(図15、ステップS501)。具体的には、メソッド情報記憶テーブル144の計測可否情報により、この判断を行えばよい。
メソッドが計測の対象となっていないと判断した場合(ステップS501;No)、プログラム実行部22は処理をステップS504に移す。
メソッドが計測の対象となっていると判断した場合(ステップS501;Yes)、プログラム実行部22は、詳細モード計測部232に、該メソッドのメソッドIDを含んだ計測開始通知を送信する(ステップS502)。
詳細モード計測部232は、計測開始通知を受信すると、該メソッドに挿入されている実行開始プローブを実行して(ステップS503)、プログラム実行部22によるステップS504に処理を移す。
なお、この実行開始プローブの実行により、そのときの時刻、種類「開始」、該メソッドの処理のスレッド、呼出元のメソッド名(ID)、および、当該メソッド名(ID)が対応付けられてメソッド詳細性能ログテーブル145に記憶される。
なお、上記の情報は、実行プログラムを実行するための仮想マシン等が提供するAPIを利用することで取得すればよい。
ステップS504で、プログラム実行部22は、該メソッドに挿入されているプローブ以外のメソッドの処理を実行する。
次に、プログラム実行部22は、当該メソッドが計測の対象となっているか否かを判別する(ステップS505)。
メソッドが計測の対象となっていないと判断した場合(ステップS505;No)、プログラム実行部22はメソッドの実行を終了する。
メソッドが計測の対象となっていると判断した場合(ステップS505;Yes)、プログラム実行部22は、詳細モード計測部232に該メソッドのメソッドIDを含んだ計測終了通知を送信する(ステップS506)。
詳細モード計測部232は、計測終了通知を受信すると、該メソッドに挿入されている実行終了プローブを実行する(ステップS507)。
そして、この実行終了プローブの実行により、そのときの時刻、種類「終了」、該メソッドの処理のスレッド、呼出元のメソッド名(ID)、および、当該メソッド名(ID)等の情報がメソッド詳細性能ログテーブル145に記憶される。
なお、上記の情報の取得は、実行プログラムを実行するための仮想マシン等が提供するAPIを利用することで取得すればよい
以上で、プローブが挿入されたメソッドが実行された場合の処理は終了する。そして、実行プログラムを実行したときに実行される全てのプローブが挿入されているメソッドに対して、前述の処理が実行され、詳細モードでの計測がなされ、計測対象のメソッドが開始又は終了する毎に、計測結果がメソッド詳細性能ログテーブル145に記憶される。
(4)図9ステップS105のシーケンス表示処理:
まず、シーケンス解析部26は、メソッド詳細性能ログテーブル145に記憶されているレコードのうち、同一のスレッドに関するレコードを取得する(図16、ステップS601)。
そして、シーケンス解析部26は、ステップS601で取得したレコードを解析して、一連の処理の流れ(シーケンス)を解析する(ステップS602)。
ここで、このシーケンスの解析について具体例を挙げて説明する。なお、前提として、ステップS601の処理により、同一のスレッド「#1」に関するレコードがメソッド詳細性能ログテーブル145から図17(A)に示すように取得されているものとする。
まず、シーケンス解析部26は、ステップS601で取得した図17(A)に示すレコードのうちの最初のレコード(時刻「0」のレコード)において、呼出元が「なし」となっているメソッド「処理A」を、シーケンスの起点と判断する。
そして、シーケンス解析部26は、次のレコード(時刻「300」のレコード)から、このメソッド「処理A」がメソッド「処理E」を呼び出すことを判断する。
続いて、シーケンス解析部26は、その次のレコード(時刻「600」のレコード)から、このメソッド「処理E」がメソッド「処理D」を呼び出すことを判断する。
そして、シーケンス解析部26は、その次のレコード(時刻「800」のレコード)から、メソッド「処理D」が終了し、メソッド「処理D」の呼出元であるメソッド「処理E」に処理が戻ることを判断する。
そして、シーケンス解析部26は、その次のレコード(時刻「1200」のレコード)から、メソッド「処理E」が終了し、メソッド「処理E」の呼出元であるメソッド「処理A」に処理が戻ることを判断する。
そして、シーケンス解析部26は、その次のレコード(時刻「2000」のレコード)から、シーケンスの起点と判断したメソッド「処理A」が終了してシーケンスが終了したことを判断し、以上でシーケンスは解析される。
そして、シーケンス表示部27は、ステップS602で解析したシーケンスを、出力部13に表示する(ステップS603)。
なお、先程具体例を挙げて、解析したシーケンスは、このステップS603の処理により、例えば図17(B)に示すように表示される。なお、この図には、メソッド「処理A」「処理E」「処理D」が属するクラス名も表示されているが、このクラス名はメソッド情報記憶テーブル144を参照して取得すればよい。
以上で、シーケンス表示処理は終了し、図9に示すプロファイル処理は終了する。
以上説明したように、この実施の形態によれば、ほぼ全てのメソッドを計測対象としたメソッドの計測(統計モード計測)をまず行い、そのプロファイル結果から処理に比較的時間を有するメソッドのみを計測対象とする絞り込み処理を行い、絞り込んだメソッドに対して、より詳細な計測(詳細モード計測)を行う。
従って、詳細なプロファイルを行う際には、計測対象を絞って行うため、プロファイル処理による実行環境への負荷は小さくなり、より実際の実行環境に近い条件で計測を行うことができる。
なお、この発明は上記実施の形態に限定されず、様々な応用が可能である。
例えば、図14に示した計測対象絞込み処理において、コールグラフを幅優先探索して詳細モードで絞り込むためのメソッドを特定したが、幅優先探索以外の深さ優先探索等の他の探索方法を用いてコールグラフを辿ってもよい。
また、探索処理を行わずに、総実行時間が大きい順に累算していくことで、絞り込むメソッドを特定してもよい。
なお、本発明のプログラムプロファイリング装置は、専用のハードウェアに限られるものではなく、通常のコンピュータシステムによっても実現することができる。
具体的には、上記実施の形態では、プログラムプロファイリング装置のプログラムが、メモリ等に予め記憶されているものとして説明した。しかし、上述の処理動作を実行させるためのプログラムを、フレキシブルディスク、CD−ROM(Compact Disk Read-Only Memory)、DVD(Digital Versatile Disk)、MO(Magneto-Optical disk)等のコンピュータ読み取り可能な記録媒体に格納して配布し、そのプログラムをコンピュータにインストールすることにより、上述の処理を実行をするプログラムプロファイリング装置を構成してもよい。
また、プログラムをインターネット等の通信ネットワーク上のサーバ装置が有するディスク装置等に格納しておき、例えば、搬送波に重畳させて、コンピュータにダウンロード等するようにしてもよい。さらに、通信ネットワークを介してプログラムを転送しながら起動実行することによっても、上述の処理を達成することができる。
また、上述の機能を、OS(Operating System)が分担又はOSとアプリケーションの協働により実現する場合等には、OS以外の部分のみを媒体に格納して配布してもよく、また、コンピュータにダウンロード等してもよい。
本発明の実施の形態に係るプログラムプロファイリング装置の構成例を示すブロック図である。 図1に示したプログラムプロファイリング装置の記憶部の構成を示す図である。 本発明の実施の形態に係るプログラムプロファイリング装置の機能構成例を示すブロック図である。 プローブ挿入対象記憶テーブルの構成を示す図である。 メソッド統計情報記憶テーブルの構成を示す図である。 (A)は、コールグラフ情報記憶テーブルの構成を示す図である。(B)は、コールグラフの例を示す図である。 メソッド情報記憶テーブルの構成を示す図である。 メソッド詳細性能ログテーブルの構成を示す図である。 プロファイル処理の動作を説明するためのフローチャートである。 プローブ挿入処理の動作を説明するためのフローチャートである。 プローブの挿入を説明するための図である。 統計モード時に実行されるプローブ挿入済みのメソッドの動作を説明するためのフローチャートである。 プローブの処理によってRAMに記憶される情報の例を示した図である。 プロファイリング対象絞り込み処理の動作を説明するためのフローチャートである。 詳細モード時に実行されるプローブ挿入済みのメソッドの動作を説明するためのフローチャートである。 シーケンス表示処理の動作を説明するためのフローチャートである。 シーケンス表示処理を具体的に説明するための図である。
符号の説明
141 プローブ挿入対象記憶テーブル
142 メソッド統計情報記憶テーブル
143 コールグラフ情報記憶テーブル
144 メソッド情報記憶テーブル
145 メソッド詳細性能ログテーブル
146 シーケンス記憶テーブル
21 プローブ挿入部
22 プログラム実行部
23 計測部
231 統計モード計測部
232 詳細モード計測部
24 計測対象設定部
25 計測モード切替部
26 シーケンス解析部
27 シーケンス表示部

Claims (2)

  1. 複数のメソッドから構成されたプログラムを実行し、該複数のメソッドのうちの特定の各メソッドの処理時間とメソッド間の呼出関係とを求め、
    求めた処理時間と呼出関係に基づいて、処理時間が所定の基準を満たすメソッド、および、該所定の基準を満たすメソッドを起点として所定の範囲内でメソッド間の呼出関係を辿ったメソッドを主要メソッドとして特定し、
    前記プログラムを再度実行して、特定した主要メソッドが開始又は終了する毎に、該主要メソッドが開始か終了かを表す情報とそのときの時刻と該主要メソッドが属するスレッドと該主要メソッドの識別情報とを対応付けて記憶する、
    ことを特徴とするプログラムプロファイリング方法。
  2. コンピュータに、
    複数のメソッドから構成されたプログラムを実行し、該複数のメソッドのうちの特定の各メソッドの処理時間とメソッド間の呼出関係とを求め、
    求めた処理時間と呼出関係に基づいて、処理時間が所定の基準を満たすメソッド、および、該所定の基準を満たすメソッドを起点として所定の範囲内でメソッド間の呼出関係を辿ったメソッドを主要メソッドとして特定し、
    前記プログラムを再度実行して、特定した主要メソッドが開始又は終了する毎に、該主要メソッドが開始か終了かを表す情報とそのときの時刻と該主要メソッドが属するスレッドと該主要メソッドの識別情報とを対応付けて記憶する、
    処理を実行させるプログラム。
JP2007057896A 2007-03-07 2007-03-07 プログラムプロファイリング方法、及びプログラム Expired - Fee Related JP4879782B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007057896A JP4879782B2 (ja) 2007-03-07 2007-03-07 プログラムプロファイリング方法、及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007057896A JP4879782B2 (ja) 2007-03-07 2007-03-07 プログラムプロファイリング方法、及びプログラム

Publications (2)

Publication Number Publication Date
JP2008217721A JP2008217721A (ja) 2008-09-18
JP4879782B2 true JP4879782B2 (ja) 2012-02-22

Family

ID=39837646

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007057896A Expired - Fee Related JP4879782B2 (ja) 2007-03-07 2007-03-07 プログラムプロファイリング方法、及びプログラム

Country Status (1)

Country Link
JP (1) JP4879782B2 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5174648B2 (ja) * 2008-12-24 2013-04-03 株式会社日立製作所 プログラム開発支援機器、方法およびプログラム
JP4833326B2 (ja) 2009-09-28 2011-12-07 株式会社三菱東京Ufj銀行 コード編集用プログラム及びコード編集装置
US8473925B2 (en) * 2010-05-11 2013-06-25 Ca, Inc. Conditional dynamic instrumentation of software in a specified transaction context
US8938729B2 (en) * 2010-10-12 2015-01-20 Ca, Inc. Two pass automated application instrumentation
WO2012056569A1 (ja) * 2010-10-29 2012-05-03 株式会社日立製作所 性能測定方法、性能測定装置、及び、性能測定プログラム
US9411616B2 (en) 2011-12-09 2016-08-09 Ca, Inc. Classloader/instrumentation approach for invoking non-bound libraries
JP6405972B2 (ja) * 2014-12-11 2018-10-17 株式会社リコー 動作検証装置、動作検証方法及び動作検証プログラム

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001325238A (ja) * 2000-05-16 2001-11-22 Hitachi Ltd 分散オブジェクトシステムにおける処理進捗状況表示方法
JP2002297416A (ja) * 2001-03-28 2002-10-11 Matsushita Electric Ind Co Ltd プロファイル情報取得装置及びプロファイル情報取得プログラム
JP2003140928A (ja) * 2001-11-02 2003-05-16 Fujitsu Ltd 仮想マシン内部情報自動取得システム
JP2004094374A (ja) * 2002-08-29 2004-03-25 Ntt Comware Corp ロギングシステム
JP2004259154A (ja) * 2003-02-27 2004-09-16 Nippon Telegr & Teleph Corp <Ntt> ソフトウェア・コンポーネントの呼出関係トレース方法及びシステム
JP2006018477A (ja) * 2004-06-30 2006-01-19 Canon Software Inc シーケンス情報生成装置およびシーケンス情報生成方法およびプログラムおよび記録媒体

Also Published As

Publication number Publication date
JP2008217721A (ja) 2008-09-18

Similar Documents

Publication Publication Date Title
JP4879782B2 (ja) プログラムプロファイリング方法、及びプログラム
JP4905974B2 (ja) プログラムプロファイリング装置、プログラムプロファイリング方法、及びプログラム
CN108388514B (zh) 接口自动化测试方法、装置、设备及计算机可读存储介质
US7376549B2 (en) System performance prediction mechanism and method based on software component performance measurements
CN108521353B (zh) 定位性能瓶颈的处理方法、设备及可读存储介质
JP4681491B2 (ja) プロファイリングプログラムおよびプロファイリング方法
US20080209443A1 (en) Apparatus and method for displaying process operation
CN109165152B (zh) Web系统的性能监控方法、系统和存储介质
US11709756B2 (en) Dynamic distributed tracing instrumentation in a microservice architecture
US20060188174A1 (en) Quantitative measure of a video interface
US8732323B2 (en) Recording medium storing transaction model generation support program, transaction model generation support computer, and transaction model generation support method
EP3748528A1 (en) Information processing device, information processing method, and recording medium
US11422916B2 (en) Usage amount monitoring method and monitoring unit of electronic control unit for vehicle
KR101851330B1 (ko) 코드 재사용 공격 탐지 장치 및 그 방법
US7475386B1 (en) Mechanism for disjoint instrumentation providers in a tracing framework
US10114725B2 (en) Information processing apparatus, method, and computer readable medium
CN111382017A (zh) 故障查询方法、装置,服务器及存储介质
JP2011258058A (ja) 性能予測装置及びコンピュータプログラム及び性能予測方法
CN114020813A (zh) 基于哈希算法的数据比对方法、装置、设备及存储介质
JP4322763B2 (ja) 文書ファイルコピー移動監視システム、方法及びプログラム
WO2012056569A1 (ja) 性能測定方法、性能測定装置、及び、性能測定プログラム
CN112800303A (zh) 一种浏览器数据的存储、读取方法及相关装置
JP2009211588A (ja) データベース・アクセス遅延の解析情報採取装置、解析情報採取方法およびプログラム
JP4869581B2 (ja) カバレッジ計測システム及びそのプログラム
CN114116291B (zh) 日志检测方法、日志检测装置、计算机设备及存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100226

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110516

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110524

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110725

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110906

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111107

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: 20111129

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: 20111130

R150 Certificate of patent or registration of utility model

Ref document number: 4879782

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20141209

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees