JP4879782B2 - プログラムプロファイリング方法、及びプログラム - Google Patents
プログラムプロファイリング方法、及びプログラム Download PDFInfo
- 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
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Description
また、特許文献2は、メソッド間の呼出関係をログへ出力するための技術を開示している。
また、この計測結果の精度の低下を防ぐために、計測対象にする処理(メソッド)を複数回に分けてプロファイリングしてもよいが、複数回に分けてプロファイリングをするためには、各回毎にプログラムに埋め込むプローブを変更する必要があり、面倒である。
本発明は、実行負荷の小さいプロファイリングを行うことができるプログラムプロファイリング方法、及びプログラムを提供することを目的とする。
複数のメソッドから構成されたプログラムを実行し、該複数のメソッドのうちの特定の各メソッドの処理時間とメソッド間の呼出関係とを求め、
求めた処理時間と呼出関係に基づいて、処理時間が所定の基準を満たすメソッド、および、該所定の基準を満たすメソッドを起点として所定の範囲内でメソッド間の呼出関係を辿ったメソッドを主要メソッドとして特定し、
前記プログラムを再度実行して、特定した主要メソッドが開始又は終了する毎に、該主要メソッドが開始か終了かを表す情報とそのときの時刻と該主要メソッドが属するスレッドと該主要メソッドの識別情報とを対応付けて記憶する、
ことを特徴とする。
コンピュータに、
複数のメソッドから構成されたプログラムを実行し、該複数のメソッドのうちの特定の各メソッドの処理時間とメソッド間の呼出関係とを求め、
求めた処理時間と呼出関係に基づいて、処理時間が所定の基準を満たすメソッド、および、該所定の基準を満たすメソッドを起点として所定の範囲内でメソッド間の呼出関係を辿ったメソッドを主要メソッドとして特定し、
前記プログラムを再度実行して、特定した主要メソッドが開始又は終了する毎に、該主要メソッドが開始か終了かを表す情報とそのときの時刻と該主要メソッドが属するスレッドと該主要メソッドの識別情報とを対応付けて記憶する、
処理を実行させる。
プログラムプロファイリング装置1は、図1に示すように、通信部11と、入力部12と、出力部13と、記憶部14と、入出力I/F部15と、制御部16と、を備え、各部はバス17を介して互いに接続されている。
なお、本実施形態でプロファイリングの対象とする実行プログラムは複数のクラスから構成され、各クラスは1つ以上のメソッドを備えているものとする。
また、記憶部は、図2に示すように、プローブ挿入対象記憶テーブル141と、メソッド統計情報記憶テーブル142と、コールグラフ情報記憶テーブル143と、メソッド情報記憶テーブル144と、メソッド詳細性能ログテーブル145と、を記憶する。
メソッド統計情報記憶テーブル142は、図5に示すように、統計モードでのプロファイリングで測定された、メソッド毎の総実行時間と、実行回数と、平均実行時間とを記憶する。なお、平均実行時間は、総実行時間/実行回数で算出できる時間である。
コールグラフ情報記憶テーブル143は、図6(A)に示すように、統計モードでのプロファイリングで求められた処理(メソッド)間の呼出関係を記憶する。なお、コールグラフ情報記憶テーブル143に図6(A)に示すような情報が記憶されている場合、この記憶情報から図6(B)に示すような呼出間系を表したグラフ(コールグラフ)を作成することができる。
プログラムプロファイリング装置1は、機能的には、図示するように、プローブ挿入部21と、プログラム実行部22と、計測部23と、計測モード切替部24と、計測対象設定部25と、シーケンス解析部26と、シーケンス表示部27と、を備える。なお、これらの各構成要素は、図1に示した制御部16が、同じく図1に示した通信部11、入力部12、出力部13、記憶部14、又は入出力I/F部15を制御することにより、実現することができる。
また、詳細モードで計測を行うときには、計測対象設定部25は、メソッド統計情報記憶テーブル142とコールグラフ情報記憶テーブル143とに記憶されている記憶情報に基づいて、計測対象を絞り込む処理を行う。そして、計測対象設定部25は、この絞り込み処理で絞り込まれたメソッドのメソッド情報記憶テーブル144に記憶されている計測可否情報を「可」に、絞り込まれたメソッド以外のメソッド情報記憶テーブル144に記憶されている計測可否情報を「否」に設定することにより、絞り込まれたメソッドのみがプロファイルの対象となるようにする。なお、該処理の詳細については後述する。
まず、プローブ挿入部21は、計測対象の実行プログラムを構成するクラスを1つRAM163に読み込む(図10、ステップS201)。
プローブ挿入対象のクラスであると判断した場合(ステップS202;Yes)、プローブ挿入部21は、クラスに含まれるメソッドに対して識別情報(メソッドID)を発行する(ステップS203)。
なお、メソッドの処理の前に挿入されたプローブを実行開始(検出用の)プローブ、メソッドの後に挿入されたプローブを実行終了(検出用の)プローブとして、以下説明する。
なお、図11に記載されているプログラムは、理解を容易にするため、バイナリデータである実行プログラムをJAVA(登録商標)の言語形式で表したものである。
図11(A)が示す実行プログラムには、クラス「A」が含まれており、クラス「A」には、引数が無いメソッド「sayHello」と、ストリング型の引数を持つメソッド「sayHello」とが含まれている。
この目的プログラムにプローブが挿入された場合、クラス「A」には図11(B)に示すように、クラス「A」内の処理の先頭に、プローブの処理を実行させるか否かを示すフラグ「flag_1」、「flag_2」と、各メソッドの処理の開始時点に挿入される実行開始プローブ「enterMethod」と、各メソッドの処理の終了時点に挿入される実行終了プローブ「exitMethod」とが挿入される。
読み込んでいない他のクラスが有ると判別した場合は(ステップS206;Yes)、プローブ挿入部21は、ステップS201〜ステップS205の処理を繰り返す。
読み込んでいない他のクラスがない判別した場合は(ステップS206;No)、プローブ挿入処理は終了する。
(2)図9ステップS103の統計モード計測処理:
まず、計測モード切替部24は、計測部23で計測するモードを統計モードに切り換える。
その後、プログラム実行部22が、プローブ挿入済みの実行プログラムを実行すると、実行プログラムのメソッドに埋め込まれているプローブの処理により、統計モードでのメソッドの計測がなされる。
まず、メソッドの実行が開始されると、プログラム実行部22は、該メソッドが計測の対象となっているか否かを判断する(ステップS301)。具体的には、プログラム実行部22は、メソッド情報記憶テーブル144の計測可否情報に基づいて、この判断を行う。
メソッドが計測の対象となっていないと判断した場合(ステップS305;No)、プログラム実行部22はメソッドの実行を終了する。
メソッドが計測の対象となっていると判断した場合(ステップS305;Yes)、プログラム実行部22は、統計モード計測部231に該メソッドのメソッドIDを含んだ計測終了通知を送信する(ステップS306)。
例えば、図13(A)に示すような情報がRAM163に記憶されている場合には、メソッドID「01」を有するメソッドの処理時間が4秒加算され、またその実行回数が1プラスされる。
例えば、ステップS303とステップS307との処理により、図13(B)に示すような情報がRAM163に記憶されている場合には、呼出先をメソッド「01」、呼出先をメソッド「02」とする対応関係がコールグラフ情報記憶テーブル143に記録される。
なお、コールグラフ情報記憶テーブル143に既に記憶されている対応関係である場合には、その対応関係を記憶する必要はない。また、この呼出先の対応関係は、実行プログラムを実行するための仮想マシン等が提供するAPI(Application Program Interface)を利用することにより求めてもよい。
まず、計測対象設定部25は、メソッド統計情報記憶テーブル142に記憶されている記憶情報から、最大の総実行時間を有するメソッドを特定し、特定したメソッドのメソッドIDとその最大の総実行時間とをRAM163に記憶し(図14、ステップS401)、ステップS402へ処理を移す。
以上で、計測対象絞り込み処理は終了する。
このように、この計測対象絞り込み処理により、実行プログラムを実行した際の処理時間の主要な要因となるメソッドが特定され、この特定されたメソッドのみが詳細モードでの計測対象に設定される。
まず、計測モード切替部24は、計測部23で計測するモードを詳細モードに切り換える。
そして、その後、プログラム実行部22が、プローブ挿入済み実行プログラムを実行すると、実行プログラムのメソッドに埋め込まれているプローブの処理により、詳細モードでの計測がなされる。
まず、メソッドの実行が開始されると、プログラム実行部22は、該メソッドが計測の対象となっているか否かを判断する(図15、ステップS501)。具体的には、メソッド情報記憶テーブル144の計測可否情報により、この判断を行えばよい。
なお、この実行開始プローブの実行により、そのときの時刻、種類「開始」、該メソッドの処理のスレッド、呼出元のメソッド名(ID)、および、当該メソッド名(ID)が対応付けられてメソッド詳細性能ログテーブル145に記憶される。
なお、上記の情報は、実行プログラムを実行するための仮想マシン等が提供するAPIを利用することで取得すればよい。
メソッドが計測の対象となっていないと判断した場合(ステップS505;No)、プログラム実行部22はメソッドの実行を終了する。
メソッドが計測の対象となっていると判断した場合(ステップS505;Yes)、プログラム実行部22は、詳細モード計測部232に該メソッドのメソッドIDを含んだ計測終了通知を送信する(ステップS506)。
そして、この実行終了プローブの実行により、そのときの時刻、種類「終了」、該メソッドの処理のスレッド、呼出元のメソッド名(ID)、および、当該メソッド名(ID)等の情報がメソッド詳細性能ログテーブル145に記憶される。
なお、上記の情報の取得は、実行プログラムを実行するための仮想マシン等が提供するAPIを利用することで取得すればよい
まず、シーケンス解析部26は、メソッド詳細性能ログテーブル145に記憶されているレコードのうち、同一のスレッドに関するレコードを取得する(図16、ステップS601)。
まず、シーケンス解析部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」が終了してシーケンスが終了したことを判断し、以上でシーケンスは解析される。
なお、先程具体例を挙げて、解析したシーケンスは、このステップ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以外の部分のみを媒体に格納して配布してもよく、また、コンピュータにダウンロード等してもよい。
142 メソッド統計情報記憶テーブル
143 コールグラフ情報記憶テーブル
144 メソッド情報記憶テーブル
145 メソッド詳細性能ログテーブル
146 シーケンス記憶テーブル
21 プローブ挿入部
22 プログラム実行部
23 計測部
231 統計モード計測部
232 詳細モード計測部
24 計測対象設定部
25 計測モード切替部
26 シーケンス解析部
27 シーケンス表示部
Claims (2)
- 複数のメソッドから構成されたプログラムを実行し、該複数のメソッドのうちの特定の各メソッドの処理時間とメソッド間の呼出関係とを求め、
求めた処理時間と呼出関係に基づいて、処理時間が所定の基準を満たすメソッド、および、該所定の基準を満たすメソッドを起点として所定の範囲内でメソッド間の呼出関係を辿ったメソッドを主要メソッドとして特定し、
前記プログラムを再度実行して、特定した主要メソッドが開始又は終了する毎に、該主要メソッドが開始か終了かを表す情報とそのときの時刻と該主要メソッドが属するスレッドと該主要メソッドの識別情報とを対応付けて記憶する、
ことを特徴とするプログラムプロファイリング方法。 - コンピュータに、
複数のメソッドから構成されたプログラムを実行し、該複数のメソッドのうちの特定の各メソッドの処理時間とメソッド間の呼出関係とを求め、
求めた処理時間と呼出関係に基づいて、処理時間が所定の基準を満たすメソッド、および、該所定の基準を満たすメソッドを起点として所定の範囲内でメソッド間の呼出関係を辿ったメソッドを主要メソッドとして特定し、
前記プログラムを再度実行して、特定した主要メソッドが開始又は終了する毎に、該主要メソッドが開始か終了かを表す情報とそのときの時刻と該主要メソッドが属するスレッドと該主要メソッドの識別情報とを対応付けて記憶する、
処理を実行させるプログラム。
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)
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)
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 | シーケンス情報生成装置およびシーケンス情報生成方法およびプログラムおよび記録媒体 |
-
2007
- 2007-03-07 JP JP2007057896A patent/JP4879782B2/ja not_active Expired - Fee Related
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 |