JP2018005546A - 情報処理装置、プログラム実行状態表示方法およびプログラム実行状態表示プログラム - Google Patents
情報処理装置、プログラム実行状態表示方法およびプログラム実行状態表示プログラム Download PDFInfo
- Publication number
- JP2018005546A JP2018005546A JP2016131474A JP2016131474A JP2018005546A JP 2018005546 A JP2018005546 A JP 2018005546A JP 2016131474 A JP2016131474 A JP 2016131474A JP 2016131474 A JP2016131474 A JP 2016131474A JP 2018005546 A JP2018005546 A JP 2018005546A
- Authority
- JP
- Japan
- Prior art keywords
- time
- sampling
- program
- execution
- time difference
- 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.)
- Granted
Links
Images
Classifications
-
- 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/3409—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 for performance assessment
- G06F11/3419—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 for performance assessment by assessing time
-
- 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/88—Monitoring involving counting
Abstract
【解決手段】複数の関数13b,13c,13dを用いた処理を繰り返すループ13aを含む対象プログラム13を実行したときに算出された先頭時刻14a,14b,14c,14dを示す先頭時刻情報14を取得する。また、間欠的なサンプリングによって生成されたサンプリングログ15a,15b,15cを取得する。サンプリング時刻16a,16b,16cを、直前の先頭時刻からの時刻差分17a,17b,17cに変換する。サンプリングログ15a,15b,15cを時刻差分区間18a,18b,18cに分類し、各時刻差分区間について関数13b,13c,13dそれぞれの実行が検出された回数をカウントする。カウントした回数を用いて、時刻差分区間18a,18b,18cと関数13b,13c,13dの実行との対応関係を示す時系列情報18を表示させる。
【選択図】図1
Description
[第1の実施の形態]
第1の実施の形態を説明する。
第1の実施の形態の情報処理装置10は、対象プログラム13の挙動を分析する。情報処理装置10は、例えば、対象プログラム13のデバッグや運用保守の際に使用される。情報処理装置10は、ユーザが操作するクライアントコンピュータでもよいし、クライアントコンピュータからアクセスされるサーバコンピュータでもよい。
次に、第2の実施の形態を説明する。
図2は、情報処理装置のハードウェア例を示すブロック図である。
CPU101は、命令アドレスレジスタ121、タイムスタンプレジスタ122、割り込み制御レジスタ123、カウントアップレジスタ124、割り込み発行部125および命令実行部126を有する。なお、図3では、CPU101が有する種々の回路のうち、主にタイムベースサンプリングに関連する回路を示している。
図4は、サンプリング情報の第1の可視化例を示す図である。
グラフ21は、タイムスタンプの昇順にサンプリング情報を並べた場合のグラフである。グラフ21に用いられているタイムスタンプは、CPU101のタイムスタンプレジスタ122に記憶されたタイムスタンプである。ここでは、対象プログラムに含まれるループのループ内処理が16回以上繰り返し実行されたものとする。
情報処理装置100は、各サンプリング情報のサンプリング時刻を、その直前の先頭時刻からの時刻オフセットに変換する。サンプリング時刻の直前の先頭時刻は、サンプリング時点で実行されていたループ内処理の先頭の実行時刻である。サンプリング時点でN回目(Nは1以上の整数)のループ内処理が実行されていた場合、時刻オフセットは、サンプリング時刻とN回目のループ内処理の先頭時刻との差になる。
ここでは、図4,5とは異なるサンプリング情報が取得され、そのサンプリング情報に基づいて図5の方法に従ってグラフが生成される場合を考える。図6に示すグラフ23は、図4,5とは異なるサンプリング情報に基づいて生成されたものである。
図7は、情報処理装置のソフトウェア例を示すブロック図である。
情報処理装置100のRAM102には、情報を一時的に記憶するバッファメモリ領域として先頭時刻バッファ131およびサンプリングバッファ132が確保される。情報処理装置100のHDD103には、対象プログラム133,134、関数判定テーブル135、先頭時刻テーブル136、サンプリングテーブル137、ループ実行テーブル138および可視化テーブル139が記憶される。また、HDD103には、プログラム編集プログラム141、サンプリング制御プログラム142、割り込みハンドラプログラム143および分析プログラム144が記憶される。HDD103に記憶されたプログラムおよびテーブルは、使用されるときに一時的にRAM102にロードされることがある。
情報処理装置100は、プログラム編集部151、サンプリング制御部152、割り込みハンドラ153および分析部154を有する。
例えば、プログラム編集部151は、ソースコードである対象プログラム133をディスプレイ111に表示させ、ユーザからソースコードを編集する入力を受け付けると、入力に従って対象プログラム133を更新する。プログラム編集部151は、ユーザにより編集された対象プログラム133をコンパイルして、オブジェクトコードである対象プログラム134を生成してもよい。編集された対象プログラム133に特殊な定義命令文が含まれる場合、プログラム編集部151は、プリプロセッサ機能などを用いて特殊な定義命令文を展開してもよい。また、プログラム編集部151は、コンパイル時に所定のデバッグオプションが指定された場合のみ、当該特殊な定義命令文を展開してもよい。
また、プログラム編集部151は、関数判定テーブル135を生成する。例えば、プログラム編集部151は、ユーザからの入力に従って関数判定テーブル135を生成する。例えば、命令アドレスの範囲に対して、ユーザが関数名を指定する。または、プログラム編集部151は、対象プログラム134を分析して、自動的に関数判定テーブル135を生成する。例えば、プログラム編集部151は、オブジェクトコードである対象プログラム134から関数を検出し、検出した関数の名称と当該関数に含まれる命令群のアドレス範囲を関数判定テーブル135に登録する。
ここでは、理解を容易にするため、ソースコードである対象プログラム133を編集する場合を考える。このような対象プログラム133をコンパイルすることで、先頭時刻を出力する対象プログラム134を生成することができる。図9に示す命令文の挿入は、ユーザ入力によって行われてもよいし、プログラム編集部151が自動で行ってもよい。
サンプリングテーブル137は、プロセスID、タイムスタンプおよび命令アドレスの項目を含む。プロセスIDの項目には、割り込みの直前に実行されていたプロセスの識別情報が登録される。第2の実施の形態では、プロセスIDとして主に、対象プログラム134から起動されたプロセスのプロセスIDを想定している。タイムスタンプの項目には、サンプリング時刻を示すタイムスタンプが登録される。命令アドレスの項目には、割り込みの直前に実行されていた命令の命令アドレスが登録される。
先頭時刻テーブル136は、プロセスIDと複数のタイムスタンプを列挙した配列である。先頭時刻テーブル136のプロセスIDは、先頭時刻テーブル136のタイムスタンプを出力したプロセスの識別情報、すなわち、対象プログラム134から起動されたプロセスの識別情報である。先頭時刻テーブル136のタイムスタンプは、対象プログラム134によって出力された、ループ内処理の先頭における先頭時刻を示す。
関数判定テーブル135は、プログラムID、関数名およびアドレス範囲の項目を有する。プログラムIDの項目には、対象プログラム134の識別情報が登録される。プログラムIDは、プロセスIDと同じでもよいし異なってもよい。後者の場合、例えば、情報処理装置100で実行されているOSからプログラムIDとプロセスIDの対応関係を取得することで、プログラムIDとプロセスIDを紐付けることができる。
ループ実行テーブル138には、サンプリングテーブル137のレコード(サンプリング情報)に対応するレコードが登録される。ループ実行テーブル138は、プロセスID、時刻オフセットおよび関数名の項目を有する。プロセスIDの項目には、サンプリングテーブル137と同様のプロセスIDが登録される。時刻オフセットの項目には、サンプリング情報のタイムスタンプから変換された時刻オフセットが登録される。関数名の項目には、サンプリング情報の命令アドレスが属する関数の関数名が登録される。
可視化テーブル139は、プロセスID、オフセット区間および関数割合の項目を有する。プロセスIDの項目には、対象プログラム134から起動されたプロセスのプロセスIDが登録される。オフセット区間の項目には、時刻オフセットの範囲、すなわち、オフセット区間の始点の時刻オフセットと終点の時刻オフセットが登録される。図14の例では、0以上10未満の時刻オフセットが、0以上2未満、2以上4未満、4以上6未満、6以上8未満、8以上10未満の5個のオフセット区間に分割されている。関数割合の項目には、実行が検出された関数の関数名と当該関数の検出割合とが登録される。関数割合は、ループ実行テーブル138の関数名をカウントすることで算出できる。なお、可視化テーブル139に含まれる複数のレコードは、オフセット区間の昇順にソートされる。
図15は、サンプリング制御の手順例を示すフローチャートである。
サンプリング制御の処理は、プログラム編集プログラム141およびサンプリング制御プログラム142を実行することで実現される。
(S14)プログラム編集部151は、対象プログラム134を分析し、対象プログラム134に含まれる複数の関数を検出する。ただし、対象プログラム134の中から、分析対象の関数をユーザが選択するようにしてもよい。
(S19)サンプリング制御部152は、対象プログラム134の終了を検出する。対象プログラム134の終了は、例えば、対象プログラム134から生成されたプロセスが消滅したことによって検出することができる。
割り込み発行部125が割り込みを発行する毎に、図16の処理が実行される。割り込み処理は、割り込みハンドラプログラム143を実行することで実現される。
(S31)割り込みハンドラ153は、情報処理装置100で実行されているOSから、割り込みの直前に実行されていたプロセスのプロセスIDを取得する。
(S34)割り込みハンドラ153は、CPU101のカウントアップレジスタ124を初期化する。すなわち、割り込みハンドラ153は、初期値をカウントアップレジスタ124に書き込む。書き込む初期値は、前述のステップS16と同じでよい。
CPU101が対象プログラム134を起動することで、図17の処理が実行される。ループ処理は、対象プログラム134を実行することで実現される。
(S44)命令実行部126は、対象プログラム134に従い、ステップS43で取得したタイムスタンプを先頭時刻バッファ131に追記する。
(S46)命令実行部126は、対象プログラム134に従い、先頭時刻バッファ131に記憶されているデータを、HDD103上のファイルに書き出す。出力先ファイルは、先頭時刻テーブル136である。
上記の図15のサンプリング制御が終わった後、図18の処理が実行される。ループ分析は、分析プログラム144を実行することで実現される。
なお、分析部154は、プロセスIDやプログラムIDを用いて、関数判定テーブル135、先頭時刻テーブル136およびサンプリングテーブル137から不要なレコードをフィルタリングしてもよい。これにより、CPU101が複数のプロセスを並行に実行する場合であっても、着目するループに限定して分析することができる。
(S59)分析部154は、時刻オフセットを複数のオフセット区間に分割する。サンプリング間隔やオフセット区間は、予め決めておく。例えば、サンプリング間隔を50ミリ秒、オフセット区間の幅を1ミリ秒とする。
(S61)分析部154は、ループ実行テーブル138から、ステップS60で選択したオフセット区間に時刻オフセットが入っているレコードを検索する。分析部154は、検索されたレコードの中で各関数名の出現回数をカウントする。
11 記憶部
12 表示制御部
13 対象プログラム
13a ループ
13b,13c,13d 関数
14 先頭時刻情報
14a,14b,14c,14d 先頭時刻
15a,15b,15c サンプリングログ
16a,16b,16c サンプリング時刻
17a,17b,17c 時刻差分
18 時系列情報
18a,18b,18c 時刻差分区間
Claims (6)
- 複数の関数を用いた処理を繰り返すループを含む対象プログラムを実行したときに算出された複数の先頭時刻を示す情報であって、前記複数の先頭時刻は前記処理の繰り返し毎における前記処理の先頭の実行時刻を示している先頭時刻情報と、
前記対象プログラムを実行したときに間欠的なサンプリングによって生成されたログであって、それぞれがサンプリング時刻と前記複数の関数のうち実行中の関数の特定に用いられる状態情報とを含む複数のサンプリングログと、
を記憶する記憶部と、
前記複数のサンプリングログそれぞれの前記サンプリング時刻を、前記複数の先頭時刻のうち当該サンプリング時刻の直前の先頭時刻からの時刻差分に変換し、
前記時刻差分に基づいて前記複数のサンプリングログを複数の時刻差分区間に分類し、各時刻差分区間について、当該時刻差分区間に属するサンプリングログの前記状態情報に基づいて前記複数の関数それぞれの実行が検出された回数をカウントし、
カウントした前記回数を用いて、前記時刻差分に従って並べた前記複数の時刻差分区間と前記複数の関数の実行との対応関係を示す時系列情報を表示させる、
表示制御部と、
を有する情報処理装置。 - 前記表示制御部は、前記複数の時刻差分区間それぞれについて前記複数の関数の実行割合を算出し、前記時系列情報として前記実行割合の時系列変化を表示させる、
請求項1記載の情報処理装置。 - 前記表示制御部は、前記処理の繰り返し毎に前記処理の先頭の実行時刻を出力する命令が挿入された前記対象プログラムを起動させることで、前記先頭時刻情報を生成する、
請求項1記載の情報処理装置。 - 前記表示制御部は、前記対象プログラムを起動させ、前記対象プログラムの実行中に前記間欠的なサンプリングを行うことで前記複数のサンプリングログを生成する、
請求項1記載の情報処理装置。 - 情報処理装置が実行するプログラム実行状態表示方法であって、
複数の関数を用いた処理を繰り返すループを含む対象プログラムを実行したときに算出された複数の先頭時刻を示す情報であって、前記複数の先頭時刻は前記処理の繰り返し毎における前記処理の先頭の実行時刻を示している先頭時刻情報を取得し、
前記対象プログラムを実行したときに間欠的なサンプリングによって生成されたログであって、それぞれがサンプリング時刻と前記複数の関数のうち実行中の関数の特定に用いられる状態情報とを含む複数のサンプリングログを取得し、
前記複数のサンプリングログそれぞれの前記サンプリング時刻を、前記複数の先頭時刻のうち当該サンプリング時刻の直前の先頭時刻からの時刻差分に変換し、
前記時刻差分に基づいて前記複数のサンプリングログを複数の時刻差分区間に分類し、各時刻差分区間について、当該時刻差分区間に属するサンプリングログの前記状態情報に基づいて前記複数の関数それぞれの実行が検出された回数をカウントし、
カウントした前記回数を用いて、前記時刻差分に従って並べた前記複数の時刻差分区間と前記複数の関数の実行との対応関係を示す時系列情報を表示させる、
プログラム実行状態表示方法。 - コンピュータに、
複数の関数を用いた処理を繰り返すループを含む対象プログラムを実行したときに算出された複数の先頭時刻を示す情報であって、前記複数の先頭時刻は前記処理の繰り返し毎における前記処理の先頭の実行時刻を示している先頭時刻情報を取得し、
前記対象プログラムを実行したときに間欠的なサンプリングによって生成されたログであって、それぞれがサンプリング時刻と前記複数の関数のうち実行中の関数の特定に用いられる状態情報とを含む複数のサンプリングログを取得し、
前記複数のサンプリングログそれぞれの前記サンプリング時刻を、前記複数の先頭時刻のうち当該サンプリング時刻の直前の先頭時刻からの時刻差分に変換し、
前記時刻差分に基づいて前記複数のサンプリングログを複数の時刻差分区間に分類し、各時刻差分区間について、当該時刻差分区間に属するサンプリングログの前記状態情報に基づいて前記複数の関数それぞれの実行が検出された回数をカウントし、
カウントした前記回数を用いて、前記時刻差分に従って並べた前記複数の時刻差分区間と前記複数の関数の実行との対応関係を示す時系列情報を表示させる、
処理を実行させるプログラム実行状態表示プログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016131474A JP6691295B2 (ja) | 2016-07-01 | 2016-07-01 | 情報処理装置、プログラム実行状態表示方法およびプログラム実行状態表示プログラム |
US15/607,711 US10331538B2 (en) | 2016-07-01 | 2017-05-30 | Information processing apparatus and program execution status display method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016131474A JP6691295B2 (ja) | 2016-07-01 | 2016-07-01 | 情報処理装置、プログラム実行状態表示方法およびプログラム実行状態表示プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2018005546A true JP2018005546A (ja) | 2018-01-11 |
JP6691295B2 JP6691295B2 (ja) | 2020-04-28 |
Family
ID=60807425
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016131474A Active JP6691295B2 (ja) | 2016-07-01 | 2016-07-01 | 情報処理装置、プログラム実行状態表示方法およびプログラム実行状態表示プログラム |
Country Status (2)
Country | Link |
---|---|
US (1) | US10331538B2 (ja) |
JP (1) | JP6691295B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113515448A (zh) * | 2021-05-18 | 2021-10-19 | 中国工商银行股份有限公司 | 应用程序启动时间信息的获取方法及装置 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10067533B1 (en) * | 2018-03-27 | 2018-09-04 | Precision Mounting Technologies Ltd. | Locking dock for portable electronic device |
US10715882B2 (en) * | 2018-06-29 | 2020-07-14 | Intel Corporation | Timing synchronization between a content source and a display panel |
JP6871218B2 (ja) * | 2018-10-12 | 2021-05-12 | ファナック株式会社 | 加工情報記録装置、加工情報記録方法及びプログラム |
US10915437B1 (en) * | 2019-06-26 | 2021-02-09 | Amazon Technologies, Inc. | Framework for performing load testing and profiling of services |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3838804B2 (ja) | 1999-03-01 | 2006-10-25 | 富士通株式会社 | 解析装置および記録媒体 |
JP2005242559A (ja) | 2004-02-25 | 2005-09-08 | Nec Corp | 性能解析用プログラム及び記録媒体 |
JP5974856B2 (ja) | 2012-11-27 | 2016-08-23 | 富士通株式会社 | サンプリングプログラム、サンプリング方法及び情報処理装置 |
JP6079317B2 (ja) * | 2013-03-05 | 2017-02-15 | 富士通株式会社 | 仮想計算機システム及びその管理方法並びに仮想計算機システムの管理プログラム |
JP6544054B2 (ja) * | 2015-06-02 | 2019-07-17 | 富士通株式会社 | 情報処理装置、実行情報記録プログラムおよび実行情報記録方法 |
JP6672808B2 (ja) * | 2016-01-13 | 2020-03-25 | 富士通株式会社 | 情報処理装置、実行時間補正方法、および実行時間補正プログラム |
-
2016
- 2016-07-01 JP JP2016131474A patent/JP6691295B2/ja active Active
-
2017
- 2017-05-30 US US15/607,711 patent/US10331538B2/en active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113515448A (zh) * | 2021-05-18 | 2021-10-19 | 中国工商银行股份有限公司 | 应用程序启动时间信息的获取方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
US10331538B2 (en) | 2019-06-25 |
US20180004621A1 (en) | 2018-01-04 |
JP6691295B2 (ja) | 2020-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6691295B2 (ja) | 情報処理装置、プログラム実行状態表示方法およびプログラム実行状態表示プログラム | |
US7739662B2 (en) | Methods and apparatus to analyze processor systems | |
JP5648584B2 (ja) | ソフトウェアアプリケーションのプロファイリング方法及び装置 | |
US20230281104A1 (en) | Methods and apparatus to perform instruction-level graphics processing unit (gpu) profiling based on binary instrumentation | |
JP5520371B2 (ja) | 多重仮想マシンのためのサポートを有する、トレース・データの時間ベース・コンテキスト・サンプリング | |
CN106227671B (zh) | 程序运行性能分析方法及装置 | |
US20150347268A1 (en) | Bottleneck Detector Application Programming Interface | |
US20100017583A1 (en) | Call Stack Sampling for a Multi-Processor System | |
JP2015507303A (ja) | コード網羅率決定方法およびシステム | |
US20150169435A1 (en) | Method and apparatus for mining test coverage data | |
US20150033233A1 (en) | Job delay detection method and information processing apparatus | |
US10867362B2 (en) | Methods and apparatus to improve operation of a graphics processing unit | |
US20150220420A1 (en) | Performance evaluation and tuning systems and methods | |
US20070150870A1 (en) | Method and apparatus for context oriented computer program tracing and visualization | |
KR102161192B1 (ko) | 코어 트레이스로부터 데이터 마이닝을 하기 위한 방법 및 장치 | |
Schulz | Extracting critical path graphs from MPI applications | |
CN111104104A (zh) | 函数调用时间和统计结果可视化的方法、装置及可读介质 | |
US20090083716A1 (en) | Profiling method and program | |
US9292296B2 (en) | Code optimization based on information of readably converted executed instruction groups represented in address file | |
CN112988544A (zh) | 操作系统性能瓶颈的分析方法、系统、设备和存储介质 | |
CN107451038B (zh) | 硬件事件采集方法、处理器和计算系统 | |
JP6544054B2 (ja) | 情報処理装置、実行情報記録プログラムおよび実行情報記録方法 | |
JP6075204B2 (ja) | 性能情報収集プログラム、情報処理装置及び性能情報収集方法 | |
JP2016224814A (ja) | 性能情報生成プログラム、性能情報生成方法及び情報処理装置 | |
US20170192878A1 (en) | Separating Test Coverage In Software Processes Using Shared Memory |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20190409 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20190416 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20190416 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20200228 |
|
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: 20200310 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20200323 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6691295 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |