JP3419916B2 - プロセス実行情報採取装置 - Google Patents

プロセス実行情報採取装置

Info

Publication number
JP3419916B2
JP3419916B2 JP28465794A JP28465794A JP3419916B2 JP 3419916 B2 JP3419916 B2 JP 3419916B2 JP 28465794 A JP28465794 A JP 28465794A JP 28465794 A JP28465794 A JP 28465794A JP 3419916 B2 JP3419916 B2 JP 3419916B2
Authority
JP
Japan
Prior art keywords
information
unit
dynamic
execution
measurement
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
JP28465794A
Other languages
English (en)
Other versions
JPH08147199A (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 JP28465794A priority Critical patent/JP3419916B2/ja
Publication of JPH08147199A publication Critical patent/JPH08147199A/ja
Application granted granted Critical
Publication of JP3419916B2 publication Critical patent/JP3419916B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は,特に動的ライブラリ関
数の実行回数や実行時間等のプロセス実行情報を採取し
出力するプロセス実行情報採取装置に関するものであ
る。
【0002】近年,さまざまなプログラムに性能上の問
題が生じており,その原因を探るための情報をできる限
り採取したいという要求がある。特に,動的ライブラリ
関数に関する実行情報は得にくい状態であり,ソフトウ
ェアの品質向上,性能向上を図るために,プログラムの
解析をより容易に行うための一つの情報として,動的ラ
イブラリ関数に関する情報を得ることは有用である。
【0003】
【従来の技術】従来の技術は,以下のようなものであっ
た。 ライブラリ関数に関する情報を採取しようとする場
合,例えばUNIXオペレーティング・システムにおい
ては,prof等のUNIXコマンドを利用して採取す
ることができるが,その場合,図11に示すように,ロ
ードモジュール内に測定用の命令を埋め込まなければな
らない。そのため,測定対象プログラムを関数情報採取
用のオプションを指定して再翻訳(コンパイル)/再結
合(リンク)する必要があった。
【0004】 上記の方法によりライブラリ関数の
実行情報を採取する場合に,動的ライブラリの情報は採
取できないため,動的ライブラリに対応する静的なライ
ブラリを使ってプログラムを再翻訳/再結合しなければ
ならなかった。
【0005】 また,従来の技術では,一般に1つの
プロセスを起動して終了するまでの情報を必ず採取して
いた。 再翻訳なしにライブラリ関数に関する情報を採取す
る方法として,デバッガで関数の入口点にブレイク・ポ
イントを設定し,プロセスを実行させ,デバッガによっ
て情報を採取する方法もある。この場合,ブレイク・ポ
イントを設定する作業が必要であり,また,ブレイク・
ポイントまで着いたら,再実行させる操作が必要であっ
た。
【0006】この場合は,個々のプロセスのみの情報し
か得ることができないので,それぞれのプロセスの情報
を画面や記録媒体に出力した後,それぞれのプロセスの
関数情報をマージする作業が必要であった。また,個々
のプロセスが記録媒体や画面へ出力することは個々のプ
ロセス自体に負荷がかかっていた。
【0007】 その他の従来技術では,命令コードを
解析し,それによって実行時間を計算するというような
方法等もあった。
【0008】
【発明が解決しようとする課題】例えば前記のprof
コマンドを使用する場合には,以下のような問題点が生
じていた。
【0009】 ソースプログラムファイルがある場合
には,関数実行時間取得用に対象となるソースプログラ
ムファイルを再翻訳しなければならないという手間が生
じていた。また,ソースプログラムファイルがない場合
には,関数の実行時間情報の取得を諦めなければならな
かった。
【0010】 動的リンクにより動的ライブラリを呼
び出す主プログラムに対しても使用することはできる
が,動的ライブラリ関数の実行時間情報は採取できない
ため,実際にはプログラムのどの部分で時問が多く掛か
っているのかという判断を誤らせる原因となることがあ
った。
【0011】 動的ライブラリ関数に対しての実行時
間情報を取得したい場合には,動的ライブラリに対応す
る静的ライブラリを用意して,再結合しなければなら
ず,時間と手間がかかっていた。また,動的ライブラリ
に対応する静的ライブラリがない場合には,そのライブ
ラリ関数の実行時間情報の取得を断念せざるをえなかっ
た。
【0012】 要求する部分の情報だけを得ることが
できず,1プロセス全体の情報しか得られないので,実
行時間の長いプロセスの場合には情報採取にそれだけ多
くの時間がかかり,また,通常止まることなく動作し続
けるようなプロセスの場合,関数実行時間情報を取得す
ることができなかった。
【0013】また,デバッガを利用してライブラリ関数
に関する情報を採取しようとする場合,関数の入口を調
べてブレイク・ポイントをはり,ブレイク・ポイントま
で到着したら,再実行という作業をしなければならない
という問題点があった。特に,運用時における実行情報
の取得は困難であった。
【0014】同時に起動しているプロセスの情報を採取
しようとする場合,個々のプロセスごとに画面や記録媒
体に出力するため,個々のプロセスに負荷がかかるとい
う問題点が生じていた。また,出力した個々のプロセス
の情報をマージする作業が必要であるという問題点が生
じていた。
【0015】命令コードを解析して実行時間を計算する
という方法の場合には,情報を採取し出力するまでに長
い時間がかかっていた。本発明は上記問題点の解決を図
り,再翻訳/再結合を行うことなく,実行モジュールの
関数,および動的ライブラリ関数の実行情報について要
求する部分の情報のみ取得することができ,また測定を
行わない場合に同じモジュールを使用しても性能劣化を
最小にする手段を提供することを目的とする。
【0016】
【課題を解決するための手段】図1は本発明の構成例を
示す図である。図中,1は測定対象のプロセス,10は
測定用に改良された動的リンカ,11は測定対象の判定
を行う測定対象判定部,12はリンク用テーブル(以
下,PLT(Procedure Linkage Table)という)のエン
トリを書き換えるPLTエントリ書き換え部,20は情
報採取用ライブラリ,21は測定時の初期化を行う初期
処理部,22は一定時間ごとに起動される実行情報採取
部,23は動的ライブラリ関数の呼び出し時に起動され
る関数実行トレース部,24は採取した情報を出力する
採取情報出力部,25はエラー発生時に採取情報出力部
24または,共有メモリ情報出力部42を呼び出すエラ
ー処理部,30は測定対象となる主ロードモジュール,
31は命令テキスト部,32は動的リンク時に制御移行
先のアドレス情報が設定されて用いられるリンク用テー
ブル(PLT),33a,33bはそれぞれ動的リンク
対象となる1以上の関数が格納された動的ライブラリ,
40は測定に関するコマンドを受け付けて処理する測定
監視処理部,41は測定するかしないかのフラグを設定
するフラグ設定部,42は採取した測定情報を所定の記
憶装置または出力装置に出力する共有メモリ情報出力
部,45はオペレーティングシステムの中枢部分である
カーネル,46は測定するかしないかを示すカーネル内
フラグ,51はキーボード等の入力装置,52はディス
プレイ装置等の出力装置,53はディスク装置等の記憶
装置,60はプロセス間で共有される共有メモリ,63
はプロセス内メモリを表す。
【0017】本発明では,一定時間ごとにプログラムカ
ウンタの値を得て関数等の実行情報を採取する機能(以
下,これをプロファイル機能という)と,動的ライブラ
リ関数が呼び出されたときにその情報を採取する機能
(以下,これをトレース機能という)を有している。こ
れらの機能を,以下の手段により,主ロードモジュール
30および動的ライブラリ33a,33b,…に手を加
えることなく,通常のロードモジュールの状態で実現す
る。
【0018】まず,プロファイル機能について説明す
る。入力装置51からのコマンド入力によりプロファイ
ル機能の実行指示があると,測定監視処理部40は,フ
ラグ設定部41によりその旨をカーネル内フラグ46に
設定する。カーネル45は,測定対象プロセス1の実行
開始時に,動的リンカ10に対しカーネル内フラグ46
の状態を通知する。
【0019】動的リンカ10は,通知されたフラグ情報
によりプロファイル機能の実行指示があることを知る
と,情報採取用ライブラリ20をマップし,まず初期処
理部21を呼び出す。初期処理部21は,実行情報採取
部22を所定の時間ごとに起動する設定を行う。その
後,主ロードモジュール30に実行制御を移すと,タイ
マのシグナル信号により一定時間ごとに実行情報採取部
22が起動される。
【0020】実行情報採取部22は,実行が中断された
主ロードモジュール30または動的ライブラリ33a,
33b等のプログラムカウンタの値を採取し,プログラ
ムカウンタの値に応じてそれが示すアドレスが何回採取
されたかをカウントし,そのカウント情報をプロセス内
メモリ63または共有メモリ60に記録する。主ロード
モジュール30の実行終了時または測定の終了時に,採
取情報出力部24は,プロセス内メモリ63または共有
メモリ60に格納された情報および測定対象に関する主
ロードモジュール30および動的ライブラリ33a,3
3bの命令テキスト部の先頭アドレス,最終アドレスを
所定の記憶装置53または出力装置52に出力する。ま
たは,カウント情報を共有メモリ60に出力した場合に
は測定監視処理部40内に設けられた共有メモリ情報出
力部42により,共有メモリ60内の測定情報を所定量
ごとに記憶装置53または出力装置52に出力する。
【0021】上記処理開始前または処理開始時に,測定
監視処理部40は,入力装置51からのコマンド入力に
より,測定時期または測定対象プロセスに関する情報が
指定された場合,その情報を共有メモリ60に設定す
る。測定対象判定部11は,その情報を参照して,初期
処理部21による処理または実行情報採取部22による
処理を行うか否かを判定する。
【0022】トレース機能は次のように実現される。入
力装置51からのコマンド入力によりトレース機能の実
行指示があると,測定監視処理部40は,フラグ設定部
41によりその旨をカーネル内フラグ46に設定する。
カーネル45は,測定対象プロセス1の実行開始時に,
動的リンカ10に対しカーネル内フラグ46の状態を通
知する。
【0023】動的リンカ10は,動的ライブラリ33a
等をマップし,また通知されたフラグ情報によりトレー
ス機能の実行指示があることを知ると,情報採取用ライ
ブラリ20もマップし,関数実行トレース部23のアド
レスを得る。その後,主ロードモジュール30に実行制
御を移すと,動的ライブラリ33a等の各関数の最初の
呼び出し時に,動的リンク(結合)のため動的リンカ1
0が呼び出される。動的リンカ10は,PLTエントリ
書き換え部12により,リンク用テーブル32の該当エ
ントリの書き換えを行う。通常の場合にはリンク用テー
ブル32の該当エントリに,呼び出された動的ライブラ
リ関数のアドレス情報を設定するが,トレース機能の実
行が指示されていれば,動的ライブラリ関数のアドレス
情報を設定する代わりに,関数実行トレース部23のア
ドレス情報を設定し,関数実行トレース部23を呼び出
す。
【0024】関数実行トレース部23は,現時刻,プロ
セスID,動的ライブラリ関数の関数名などの実行情報
を共有メモリ60に採取した後,呼び出された動的ライ
ブラリ33a等の関数に制御を渡す。リンク用テーブル
32の該当エントリが書き換えられているため,以後,
その動的ライブラリ関数が呼び出されるたびに,関数実
行トレース部23が関数の呼び出し元からダイレクトに
呼び出されることになる。主ロードモジュール30の実
行終了時または測定の終了時に,採取情報出力部24
は,共有メモリ60に格納された情報を所定の記憶装置
53または出力装置52に出力する。または,測定監視
処理部40内に設けられた共有メモリ情報出力部42に
より,共有メモリ60内の測定情報を所定量ごとに記憶
装置53または出力装置52に出力する。
【0025】上記処理に関して,測定監視処理部40
は,入力装置51からのコマンド入力により,測定対象
となるプロセス,動的ライブラリまたは動的ライブラリ
内の関数に関する情報が指定された場合,その情報を共
有メモリ60に設定する。測定対象判定部11は,共有
メモリ60に設定された測定対象の情報に基づいて,P
LTエントリ書き換え部12によるリンク用テーブルの
エントリ書き換え対象を選別し,トレースの必要なプロ
セス,動的ライブラリまたは動的ライブラリ内の関数の
み関数実行トレース部23に制御が移行するようにPL
Tエントリ書き換え部12に指示する。
【0026】以上のプロファイル機能またはトレース機
能の実行時に,エラーが発生すると,エラー処理部25
が呼び出されるようになっており,エラー処理部25
は,採取情報出力部24を呼び出すようになっている。
採取情報出力部24は,共有メモリ60またはプロセス
内メモリ63に記録されたエラーが発生するまでの採取
情報を,記憶装置53または出力装置52に出力する。
または,プロファイル機能,トレース機能共に共有メモ
リ60に情報を出力している場合にはエラー処理部25
は共有メモリ情報出力部42を呼び出し,共有メモリ情
報出力部42により共有メモリ60内の測定情報を記憶
装置53または出力装置52に出力する。
【0027】
【作用】請求項1記載の発明では,動的リンカ10の先
頭で初期処理部21を呼び出し,一定時間ごとに実行情
報採取部22に制御が移されるように設定するので,そ
の後,設定した一定時間ごとに実行情報採取部22によ
って,どの命令を実行しようとしていたかをカウントす
ることができる。アドレスごとに何回実行したかの情報
を得ることにより,実行回数の比率に応じた各関数ごと
の実行時間情報を算出することができる。また,実行情
報採取部22は動的ライブラリのアドレスについてもカ
ウントするため,動的ライブラリ関数の実行時間情報に
ついても算出できる。
【0028】従来技術の場合には,情報採取を開始する
ための命令を命令テキスト部31の先頭に書き込むため
に,プログラムを実行時間測定用に翻訳/結合する必要
があったが,本発明では情報採取を開始するための命令
を事前に主ロードモジュール30に書き込む必要はな
く,測定用の動的リンカ10内で対処するため,情報採
取をするための翻訳/結合をする必要がない。
【0029】請求項2および請求項3記載の発明では,
測定監視処理部40が測定をするか否かの情報をカーネ
ル45内に設定し,動的リンカ10では,カーネル45
からの通知により測定/非測定を判断して,非測定の場
合には,従来の動的リンカと同様に通常の処理だけを行
う。したがって,主ロードモジュール30および動的リ
ンカ10におけるオーバーヘッドは少なく,測定を行わ
ない時の性能劣化を非常に小さなものにすることが可能
となる。
【0030】請求項4記載の発明では,測定監視処理部
40と測定用の動的リンカ10を持つ各プロセスとの間
で共有される共有メモリ60を用い,共有メモリ60に
測定対象の情報を持たせることにより,各プロセスの初
期処理部21および実行情報採取部22から呼び出され
る測定対象判定部11で各プロセスが測定対象なのかど
うかをそれぞれ判定し,測定対象である場合には測定を
し,測定対象でない場合には測定をしないという処理が
できる。また,共有メモリ60内に,いつ実行情報の採
取を行うかというフラグ等を持たせることにより,情報
を取りたいときにだけ採取し,それ以外のときには採取
しないという処理ができる。
【0031】したがって,各プロセスに対して,要求す
るプロセスのみの情報を,要求する部分だけ採取すると
いうことが可能となる。請求項5記載の発明では,関数
トレースのために,リンク用テーブル32のエントリを
書き換え,関数実行トレース部23に制御が渡るように
し,関数実行トレース部23は,動的ライブラリ関数に
入る直前で関数の情報(関数名,プロセス名,プロセス
ID,ライブラリ名,時刻等)を獲得するので,主ロー
ドモジュール30および動的ライブラリ33a等のソー
スプログラムの再翻訳/再結合を行うことなく,随時必
要な情報を取得することができる。特に,測定監視処理
部40が測定をするか否かの情報をカーネル45内に設
定し,動的リンカ10では,カーネル45からの通知に
より測定/非測定を判断して,非測定の場合には,従来
の動的リンカと同様に通常の処理だけを行うので,主ロ
ードモジュール30および動的リンカ10におけるオー
バーヘッドは少なく,測定を行わない時の性能劣化を非
常に小さなものにすることが可能となる。
【0032】請求項6記載の発明では,動的リンカ10
は,測定監視処理部40によって設定された指示情報に
より情報採取用ライブラリ20を制御移行可能となるよ
うにマップするので,主ロードモジュール30および動
的リンカ10におけるオーバーヘッドは少なく,測定を
行わない時の性能劣化を非常に小さなものにすることが
可能となる。
【0033】請求項7記載の発明では,測定監視処理部
40と測定用の動的リンカ10を持つ各プロセスとの間
で共有される共有メモリ60を用い,共有メモリ60に
測定対象の情報を持たせることにより,それによって測
定/非測定を判定し,動的リンカ10におけるPLTエ
ントリ書き換え部12による書き換え内容を,測定対象
の場合には関数実行トレース部23のアドレス情報と
し,測定対象でない場合には動的ライブラリ関数のアド
レス情報とするので,測定対象でない場合の動的ライブ
ラリ関数の呼び出しを従来と同様な通常の呼び出しイン
タフェースとすることができ,測定しない動的ライブラ
リ関数を呼び出す際のオーバーヘッドをなくすことがで
きる。
【0034】請求項8記載の発明では,情報採取中にエ
ラーが発生した場合,エラー処理部25を呼び出し,エ
ラー処理部25で採取情報出力部24を呼び出すことに
より,それまでに採取した情報を出力する。したがっ
て,情報採取中にエラーが発生した場合でも,それまで
に採取した情報が失われることなく,エラーが発生する
までの情報の出力が可能となる。
【0035】請求項9記載の発明では,実行情報採取部
22または関数実行トレース部23は,採取情報を共有
メモリ60に記録し,共有メモリ情報出力部42は,そ
れを所定量ごとに記憶装置53または出力装置52に出
力するので,情報採取時のオーバーヘッドを小さくする
ことができ,特に複数のプロセスの測定情報を収集する
場合などに,個々のプロセスに大きな負荷をかけない
で,必要な情報の収集を行うことが可能になる。
【0036】
【実施例】以下に本発明の一実施例を図を用いて説明す
る。 〔第1の実施例〕図2は,本発明の一実施例構成図であ
る。
【0037】図2において,図1と同符号のものは図1
に示すものに対応し,34はカーネル45が動的リンカ
10へ測定に関するフラグ情報(測定/非測定)を通知
するためのレジスタ,61は測定対象プロセス1と測定
監視処理部40とで共有する測定対象設定用共有メモ
リ,62は採取した情報を記録する採取情報記録用共有
メモリ,70は採取情報出力部24によって出力される
情報を記憶しておく採取情報ファイル,71は主ロード
モジュールのシンボルテーブル,72a,72bはそれ
ぞれ動的ライブラリ33a,33bのシンボルテーブ
ル,80は採取情報ファイル70の情報を編集して出力
する情報表示処理部を表す。
【0038】トレースまたはプロファイルに関する測定
開始(または測定準備)のコマンドが入力されると,測
定監視処理部40のフラグ設定部41は,カーネル内フ
ラグ46をON(測定)に設定する。また,測定終了の
コマンドを入力した場合には,フラグ設定部41は,カ
ーネル内フラグ46をOFF(非測定)に戻す。
【0039】プロセス1の起動時には,カーネル45が
このカーネル内フラグ46を判別して,動的リンカ10
に実行情報の測定/非測定を通知する。この通知には,
予め動的リンカ10とのインタフェースとして定めた未
使用のレジスタ34を用いる。
【0040】また,測定監視処理部40は,測定指示の
コマンドで指定された情報に基づき,測定対象設定用共
有メモリ61にプロセス名,プロセスID,もしくはユ
ーザID,ユーザ名などのプロセスの測定を行うかどう
かを識別する判定条件,および,各時点で測定を行うの
かどうかというフラグを設定する。各時点で測定を行う
かどうかというフラグの設定処理は,例えばコマンドに
よって10分後に測定を開始すると指定された場合,1
0分経過時に測定開始のフラグを測定対象設定用共有メ
モリ61に設定するというような処理である。
【0041】最初にプロセス1が起動されると,測定用
に改良された動的リンカ10に制御が渡される。動的リ
ンカ10は,プロセス1の最初でレジスタ34を判定す
る。レジスタ34が測定を行わないように設定されてい
る場合には,以後通常時(測定を行わない時)の処理を
行う。この通常時の処理は,従来の動的リンカとまった
く同様な処理である。また,測定を行うように設定され
ていた場合には,動的リンカ10は,情報採取用ライブ
ラリ20をマップし,さらにプロファイルに関する測定
の指示があった場合には,初期処理部21を呼出す。
【0042】初期処理部21では,まず測定対象判定部
11を呼出し,自プロセス1が測定対象であるかどうか
を判定する。測定対象でないプロセスの場合には,その
まま何もせずに制御を動的リンカ10に戻し,以後通常
のプロセスの処理(測定を行わない場合の処理)を行
う。
【0043】また,測定対象である場合には,次にシグ
ナルの出口関数として実行情報採取部22を設定し,そ
のシグナルを定期的に発生させるようにタイマの設定を
行う。制御はこのあと動的リンカ10に戻す。
【0044】初期処理部21での設定により一定時間ご
とに指定したシグナルがプロセスに対して発行され,実
行情報採取部22に制御が移される。ここではまず,そ
の時点で測定を行うのかどうかを測定対象判定部11で
判定し,測定を行う状態であれば,実行情報採取部22
から戻る主ロードモジュールや動的ライブラリの命令テ
キスト部のアドレスを採取し,そのアドレスが何回呼ば
れたかを示すカウンタを1増やす。
【0045】一方,プロセス1の命令テキスト部31に
おいて動的ライブラリ関数が呼ばれると,リンク用テー
ブル(PLT)32の該当するエントリに制御が渡され
る。その動的ライブラリ関数の呼び出しが第1回目であ
れば,従来と同様な制御移行方法により動的リンカ10
に制御が移る。動的リンカ10は,PLTエントリ書き
換え部12によって以下の処理を行う。
【0046】トレースの指示によって情報採取用ライブ
ラリ20をマップしている場合,まず測定対象判定部1
1を呼び出し,測定対象判定部11は,測定対象設定用
共有メモリ61を参照し,プロセス,ライブラリまたは
関数が測定対象になっているかどうかを判断する。も
し,測定対象でない場合は,PLTエントリ書き換え部
12において,通常のPLT32の書き換えを行う。
【0047】測定対象である場合には,PLTエントリ
書き換え部12において,動的ライブラリ関数が2回目
以降呼ばれる時に直接関数実行トレース部23に制御が
渡るように,PLT32のエントリを,関数実行トレー
ス部23のアドレスとなるように書き換える。その後,
関数実行トレース部23を呼び出し,採取情報記録用共
有メモリ62に関数の実行情報を記録し,本来の動的ラ
イブラリ関数へ制御を移す。関数実行トレース部23の
処理では,採取情報記録用共有メモリ62の管理情報か
らレコードの出力先の要素番号を得,配列の要素を一つ
進めて,管理情報の要素番号を更新するとともに,最初
に獲得した要素番号の配列に,呼び出された関数名,呼
び出したプロセス名,プロセスID,時刻情報などの実
行情報をログ情報として格納する。
【0048】実行情報採取部22または関数実行トレー
ス部23にてエラーが起きず,プロセスの処理が終了し
たなら,最後に動的リンカ10で終了処理が行われる
が,ここで採取情報出力部24を呼び出し,実行情報採
取部22からの命令テキスト部への戻りアドレスに対応
したカウンタの情報,情報採取した実行モジュールもし
くは動的ライブラリに関するアドレス情報(それぞれの
テキスト部の先頭アドレスおよび最終アドレス),およ
び,関数実行トレース部23にて採取した関数実行情報
を採取情報ファイル70に出力する。
【0049】実行情報採取部22または関数実行トレー
ス部23での情報採取の処理中にエラーが発生した場合
には,エラー処理部25を呼び出して,必要なエラー処
理を行った後,採取情報出力部24を呼び出して,それ
までに採取した各アドレスに対応したカウント情報,実
行モジュールのファイル(主ロードモジュールおよび動
的ライブラリ)に対応するアドレス情報(各テキスト部
の先頭アドレスおよび最終アドレス),および,関数実
行に関するトレース情報を出力する。
【0050】また,測定の終了指示に対する処理では,
一定時間ごとに発生させていたシグナルを発生しないよ
うに設定し,以後,通常のプロセスの動作を行うように
する。
【0051】図3は,実行情報採取部による実行情報の
採取方法およびその出力を説明する図である。プロファ
イル情報の測定が設定されている場合,動的リンカ10
は図3に示すような情報採取領域100を確保する。こ
の情報採取領域100は,主ロードモジュール30およ
び動的に結合される動的ライブラリ33の命令テキスト
部のアドレスに対応して,各アドレスごとのカウント用
領域(初期値はオール0)を持つ。
【0052】実行情報採取部22は,一定時間ごとにタ
イマからのシグナルにより呼び出される。実行情報採取
部22は,復帰先のプログラムカウンタの値から,次に
主ロードモジュール30もしくは動的ライブラリ33の
どのアドレスを実行するかを知り,そのアドレスに対応
する情報採取領域100のカウント用領域Cを1カウン
トアップする。この処理を,定期的に呼び出されるごと
に繰り返す。
【0053】採取情報出力部24は,この情報採取領域
100の情報と主ロードモジュールのアドレス情報(テ
キスト部の先頭アドレスと終了アドレス)101,各動
的ライブラリのアドレス情報(テキスト部の先頭アドレ
スと終了アドレス)102,103,…を採取情報ファ
イル70に格納する。
【0054】採取した情報を表示する場合には,コマン
ド等により情報を採取した実行モジュール名(主ロード
モジュール名)を指定して情報表示処理部80を起動す
る。情報表示処理部80は,指定された実行モジュール
の中の実行時に必要な動的ライブラリ33のリストを取
得する。また,そこで得られた各動的ライブラリ33に
関しても同様にその動的ライブラリ33が実行時に必要
とする動的ライブラリのリストを取得する。以下同様に
して,測定対象となるプロセスが実行時に必要とするす
べての動的ライブラリ名を取得する。次に,こうして得
られた主ロードモジュールのシンボルテーブル71およ
び動的ライブラリすべてのシンボルテーブル72a,7
2b,…を取得する。
【0055】次に,情報表示処理部80は,採取情報出
力部24が出力した情報を採取情報ファイル70から読
み込む。採取情報ファイル70から読み込んだ情報に書
かれてある関数のアドレス情報(各テキスト部の先頭ア
ドレスおよび最終アドレス)を使って,実行情報採取部
22が採取した情報のどこからどこまでが主ロードモジ
ュール30に対する情報か,どこからどこまでがそれぞ
れ各動的ライブラリ33の情報かを調べる。そして,そ
れぞれ(主ロードモジュール,各動的ライブラリ)に対
して,シンボルテーブルの関数の先頭アドレスを使って
どこからどこまでがどの関数の情報かを調べ,その後,
各関数ごとにその情報を計算して実行時間を求める。最
後に,求めた結果を出力装置52もしくは記憶装置53
に出力する。
【0056】その結果,図3に示すように,各関数ごと
の実行比率,時間などの情報が得られることになる。す
なわち,アドレスごとのカウント情報と情報を採取した
一定時間をかけることにより,各関数の実行時間が分か
り,各関数の実行時間をそれらの総計で割ることによ
り,各関数の実行比率が求まる。また,図3では図示を
省略しているが,関数実行トレース部23によって得ら
れた各関数ごとの実行回数情報を利用すれば,各関数の
1回当りの実行時間についても情報を得ることができ
る。
【0057】図4および図5は,本発明の実施例におけ
る動的リンカの動作例を説明する図であって,図4は通
常時(測定しない場合)の動作例,図5はトレース時
(測定する場合)の動作例を示す。
【0058】まず,通常時の動的ライブラリ関数の呼び
出しについて図4に示す〜に従って説明する。通常
時の場合の動作は,従来の動的リンカの動作と全く同様
である。
【0059】 主ロードモジュールの命令テキスト部
31から初めて動的ライブラリ関数fを呼び出した場
合,まずPLT32の該当エントリへ飛ぶ。 PLT32のエントリは,最初に動的リンカ10の
関数を呼び出すように設定されており,動的リンカ10
に制御が移る。
【0060】 動的リンカ10は,PLT32の該当
エントリを動的ライブラリ関数fのアドレスへジャンプ
するように書き換えた後,その関数fを呼び出す。 〜 その後(2回目以降)に,命令テキスト部31
から動的ライブラリ関数fが呼び出されると,PLT3
2’の該当エントリが呼び出され,PLT32’の該当
エントリから直接,動的ライブラリ33の関数fに制御
が渡される。
【0061】これに対し,関数実行トレース時の動作
は,図5に示す〜のようになる。図5の〜は1
回目の関数呼び出し時の動作,〜は2回目以降の関
数呼び出し時の動作を示している。
【0062】 主ロードモジュールの命令テキスト部
31から初めて動的ライブラリ関数fを呼び出した場
合,まずPLT32の該当エントリへ飛ぶ。 PLT32のエントリは,最初に動的リンカ10の
関数を呼び出すように設定されており,動的リンカ10
に制御が移る。
【0063】 動的リンカ10は,PLT32の該当
エントリを,動的ライブラリ関数fではなく,関数実行
トレース部(トレース用関数)23を呼び出すように書
き換える。その後,関数実行トレース部(トレース用関
数)23を呼び出す。
【0064】 トレース用関数は,動的ライブラリ関
数fに関する情報を採取し,記録した後,動的ライブラ
リ関数fのアドレスへジャンプする。〜 その後
(2回目以降)に,命令テキスト部31から動的ライブ
ラリ関数fが呼び出されると,PLT32’の該当エン
トリが呼び出され,PLT32’の該当エントリから,
関数実行トレース部(トレース用関数)23が呼び出さ
れる。関数実行トレース部(トレース用関数)23で情
報の採取・記録が行われた後,目的とする動的ライブラ
リ33の関数fに制御が渡される。
【0065】なお,図示省略するが,動的リンカ10で
は,トレース用関数から目的とする動的ライブラリ関数
への制御を移行できるようにするため,PLTエントリ
の書き換え時に,各エントリごとに目的とする動的ライ
ブラリ関数のアドレスを所定の作業域に退避する処理を
行う。
【0066】図6は,測定監視処理部の処理フローチャ
ートである。本実施例では,測定用としてトレース,プ
ロファイル,およびその双方について開始/準備/終了
を指示するコマンドが用意されている。これらのコマン
ドが投入されると,測定監視処理部40が起動される。
測定監視処理部40は,まずステップS11の処理にお
いて,測定対象設定用共有メモリ61を獲得する。次に
ステップS12により,指示情報に応じて測定対象設定
用共有メモリ61の測定指示フラグの設定を行う。測定
指示フラグとしては例えばトレース/プロファイル/ト
レースおよびプロファイルを行うか否かのフラグがあ
る。ステップS13では,カーネル内フラグ46に測定
/非測定の設定を行う。
【0067】図7は,カーネルの処理フローチャートで
ある。プロセスのコマンド起動に対して,カーネル45
は,まずステップS21により,カーネル内フラグ46
がON(測定)かOFF(非測定)かを判定する。OF
Fの場合,ステップS23によって通常のプロセス起動
を行う。カーネル内フラグ46がONであれば,ステッ
プS22により,所定のレジスタ34にカーネル内フラ
グ46がONであることを示す情報を設定し,その後に
ステップS23を実行する。
【0068】図8は,動的リンカを含むプロセス内の処
理フローチャートである。プロセスが起動されると,ま
ず動的リンカ10へ制御が渡る。動的リンカ10では,
最初にステップS31により,所定のレジスタ34を参
照し,ON(測定)/OFF(非測定)を判定する。レ
ジスタがONであればステップS33の処理へ進み,O
FFであれば,ステップS32へ移って,従来と同様な
通常の動的リンカの処理を行う。
【0069】ステップS33では,まず関数実行情報を
採取するための情報採取用ライブラリ20をマップし,
それらの処理部を呼び出すことができるようにする。次
に,ステップS34によって,測定に必要な作業領域の
確保などの動的リンカの初期化処理を行う。ステップS
35では,測定対象設定用共有メモリ61内の測定指示
フラグを参照して,プロファイルを行うかどうかを判定
する。プロファイルを行う場合は,ステップS36の処
理を行い,プロファイルを行わない場合は,ステップS
37の処理へ進む。
【0070】ステップS36では,初期処理部21を呼
び出し,実行情報採取部22を定期的に起動するための
初期化処理として,タイマの起動等の設定を行う。ステ
ップS37の処理において,主ロードモジュール30の
命令テキスト部31へ制御を移す。これにより,ユーザ
プログラムが実行されることになる(ステップS3
8)。命令テキスト部31において,1回目の動的ライ
ブラリ関数の呼び出しがあると(ステップS39),ス
テップS40で,PLT32を経由して動的リンカ10
を呼び出し,ステップS41で動的リンカ10へ制御を
移す。
【0071】動的リンカ10では,ステップS42の処
理で測定指示フラグを参照し,トレース準備/トレース
開始/トレースしないのいずれかを判定する。トレース
準備またはトレース開始であればステップS43の処理
を行い,トレースをしない場合には,ステップS45の
処理により,通常のPLT32のエントリの書き換えを
行う。
【0072】ステップS43では,PLT32の該当エ
ントリをログ採取用(関数実行トレース部23のアドレ
ス)に書き替える。さらにトレース開始の場合には,ス
テップS42によって,関数実行トレース部23を呼び
出し,関数実行情報の採取を行う。その後,ステップS
37へ戻り,呼び出された動的ライブラリ関数の命令テ
キスト部へ制御を移す。
【0073】図9は,実行情報採取部の処理フローチャ
ートである。実行情報採取部22は,初期処理部21の
設定によってタイマ割り込みが発生したことを契機に呼
び出される。実行情報採取部22は,まずステップS5
1によって測定指示フラグを参照し,プロファイル準備
/プロファイル開始/プロファイルしないのいずれかを
判定する。プロファイル準備であればステップS54に
より何もしないでタイマ割込み時の呼び出し元へ戻る。
プロファイル開始であれば,ステップS52の処理によ
って,プログラムカウンタに関する実行情報のサンプリ
ング処理を行い,ステップS54によって呼び出し元へ
戻る。プロファイルしない(プロファイル終了)であれ
ば,ステップS53によってタイマによる実行情報採取
部22の起動を停止し,ステップS54によって復帰す
る。
【0074】図10は,関数実行トレース部の処理フロ
ーチャートである。既に一度,PLT32をトレース用
に書き換えてある関数の呼び出しを契機に関数実行トレ
ース部23が呼び出されると,ステップS61の処理に
より,測定指示フラグを参照し,トレースを開始するか
どうかを判定する。トレースを開始する場合はステップ
S62の処理を行い,関数実行情報の収集(ログ採取)
を行う。その後,ステップS63によって,動的ライブ
ラリ関数の命令テキスト部へ制御を移行する。測定指示
フラグがトレース準備中もしくはトレース終了でトレー
スを開始しない場合にはステップS62の処理を行わず
に,動的ライブラリ関数の命令テキスト部へ制御を移行
する。
【0075】〔第2の実施例〕第1の実施例では,採取
情報出力部24を呼び出すのはプロセスが終了した時と
実行情報採取部22でエラーが発生した場合だけである
が,実行情報採取部22で測定対象判定部11を呼び出
してその時点で測定を行うかを判定するときに,一度開
始していた測定の終了指示を検出した場合には採取情報
出力部24を呼び出し,それまでの情報を出力するとい
うように処理することもできる。
【0076】〔第3の実施例〕図2に示す採取情報ファ
イル70への書き込みを,動的リンカ10ではなく,測
定監視処理部40の共有メモリ情報出力部42が,ログ
量を監視することにより,または測定対象プロセスから
の通知により行うようにしてもよい。
【0077】
【発明の効果】以上説明したように,本発明によれば,
測定対象の再翻訳/再結合をしないで,通常のロードモ
ジュールの状態のまま,実行情報を採取することがで
き,かつ動的ライブラリの実行情報をも得ることができ
る。また,要求するプロセスや要求する部分の情報のみ
を採取することができる。さらに,複数プロセスの情報
を同時に採取することができ,かつそれらの情報をまと
めることにより,マージ作業なしに測定対象プロセス全
体の情報を得ることができる。加えて,動的リンカは,
測定を行わない場合には,カーネルから通知されたフラ
グを判定するだけのオーバーヘッドで従来と同様の処理
を実行するので,性能劣化を極めて小さくすることがで
きる。
【図面の簡単な説明】
【図1】本発明の構成例を示す図である。
【図2】本発明の一実施例構成図である。
【図3】実行情報採取部による実行情報の採取方法およ
びその出力を説明する図である。
【図4】本発明の実施例における通常時の動的リンカの
動作例を説明する図である。
【図5】本発明の実施例におけるトレース時の動的リン
カの動作例を説明する図である。
【図6】測定監視処理部の処理フローチャートである。
【図7】カーネルの処理フローチャートである。
【図8】動的リンカを含むプロセス内の処理フローチャ
ートである。
【図9】実行情報採取部の処理フローチャートである。
【図10】関数実行トレース部の処理フローチャートで
ある。
【図11】従来の技術の説明図である。
【符号の説明】
1 プロセス 10 動的リンカ 11 測定対象判定部 12 PLTエントリ書き換え部 20 情報採取用ライブラリ 21 初期処理部 22 実行情報採取部 23 関数実行トレース部 24 採取情報出力部 25 エラー処理部 30 主ロードモジュール 31 命令テキスト部 32 リンク用テーブル(PLT) 33a,33b 動的ライブラリ 40 測定監視処理部 41 フラグ設定部 42 共有メモリ情報出力部 45 カーネル 46 カーネル内フラグ 51 入力装置 52 出力装置 53 記憶装置 60 共有メモリ 63 プロセス内メモリ
フロントページの続き (56)参考文献 特開 平5−313948(JP,A) 特開 昭63−106843(JP,A) 特開 平4−320548(JP,A) 特開 昭62−79540(JP,A) 特開 平6−95869(JP,A) 特開 平4−107644(JP,A) 特開 平5−94312(JP,A) 特開 平2−163843(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 11/34

Claims (9)

    (57)【特許請求の範囲】
  1. 【請求項1】 主ロードモジュールと,動的ライブラリ
    と,プロセス実行時に動的ライブラリの結合処理を行う
    動的リンカとを備えた情報処理システムにおけるプロセ
    ス実行情報採取装置において, プログラムカウンタの値を採取し,プログラムカウンタ
    の値に応じてそれが示すアドレスが何回採取されたかを
    カウントする実行情報採取部と, 前記動的リンカにより呼び出され,前記実行情報採取部
    を所定の時間ごとに起動する設定を行う初期処理部と, 前記実行情報採取部で採取した情報に基づき,測定対象
    に関する主ロードモジュールおよび動的ライブラリ中の
    命令の実行回数の比率に応じた実行時間情報を出力する
    採取情報出力部とを備えたことを特徴とするプロセス実
    行情報採取装置。
  2. 【請求項2】 請求項1記載のプロセス実行情報採取装
    置において, 外部からの指示入力によりプログラムカウンタ情報の採
    取を行うか否かの指示情報をカーネル内に設定する測定
    監視処理部を備え, 前記動的リンカは,カーネルから得た前記指示情報によ
    り通常の動的結合処理のみを行うか前記初期処理部の呼
    び出しを行うかを決定する手段を持つことを特徴とする
    プロセス実行情報採取装置。
  3. 【請求項3】 請求項2記載のプロセス実行情報採取装
    置において, 前記初期処理部,前記実行情報採取部またはその双方
    は,情報採取用ライブラリとして前記動的ライブラリと
    は別のモジュールで構成され, 前記動的リンカは,前記測定監視処理部によって設定さ
    れた指示情報により前記情報採取用ライブラリを制御移
    行可能となるようにマップする手段を持つことを特徴と
    するプロセス実行情報採取装置。
  4. 【請求項4】 請求項2または請求項3記載のプロセス
    実行情報採取装置において, 前記測定監視処理部は,外部からの指示入力によりプロ
    グラムカウンタ情報の採取を行う時期または測定対象プ
    ロセスに関する情報を共有メモリに設定する手段を持
    ち, 前記共有メモリに設定された測定時期または測定対象の
    情報に基づいて,前記初期処理部による処理または前記
    実行情報採取部による処理を行うか否かを判定する測定
    対象判定部を備えたことを特徴とするプロセス実行情報
    採取装置。
  5. 【請求項5】 主ロードモジュールと,動的ライブラリ
    と,プロセス実行時に動的ライブラリの結合処理を行う
    動的リンカとを備えた情報処理システムにおけるプロセ
    ス実行情報採取装置において,外部からの指示入力により動的ライブラリ関数実行情報
    の採取を行うか否かの指示情報をカーネル内に設定する
    測定監視処理部と, 動的ライブラリ関数への制御移行時に呼び出され,その
    動的ライブラリ関数の実行情報を採取する関数実行トレ
    ース部と, 前記動的リンカ内において,カーネルから得た前記動的
    ライブラリ関数実行情報の採取を行うか否かの指示情報
    により通常の動的結合処理を行うか前記関数実行トレー
    ス部を経由する動的結合処理を行うかを決定し,前記関
    数実行トレース部を経由する場合には,測定対象である
    動的ライブラリ関数への最初の制御移行時に前記動的ラ
    イブラリ関数へのアドレス情報が設定されるリンク用テ
    ーブルの該当エントリを書き換え,前記関数実行トレー
    ス部に制御が移行するようにアドレス情報を設定するP
    LTエントリ書き換え部と, 前記関数実行トレース部で採取した情報を所定のメモ
    リ,記憶装置または出力装置に出力する採取情報出力部
    とを備えたことを特徴とするプロセス実行情報採取装
    置。
  6. 【請求項6】 請求項5記載のプロセス実行情報採取装
    置において, 前記関数実行トレース部は,情報採取用ライブラリとし
    て前記動的ライブラリとは別のモジュールで構成され, 前記動的リンカは,前記測定監視処理部によって設定さ
    れた指示情報により前記情報採取用ライブラリを制御移
    行可能となるようにマップする手段を持つことを特徴と
    するプロセス実行情報採取装置。
  7. 【請求項7】 請求項5または請求項6記載のプロセス
    実行情報採取装置において, 前記測定監視処理部は,外部からの指示入力により測定
    対象となるプロセス,動的ライブラリまたは動的ライブ
    ラリ内の関数に関する情報を共有メモリに設定する手段
    を持ち, 前記共有メモリに設定された測定対象の情報に基づい
    て,前記PLTエントリ書き換え部によるリンク用テー
    ブルのエントリ書き換え対象を選別する測定対象判定部
    を備えたことを特徴とするプロセス実行情報採取装置。
  8. 【請求項8】 請求項1または請求項5記載のプロセス
    実行情報採取装置において, 前記実行情報採取部または前記関数実行トレース部によ
    る情報採取中においてエラーが発生した場合に呼び出さ
    れるエラー処理部を有し, 前記エラー処理部は前記採取情報出力部を呼び出すこと
    により,エラーが発生するまでに採取した情報を,前記
    採取情報出力部によって出力するようにしたことを特徴
    とするプロセス実行情報採取装置。
  9. 【請求項9】 請求項1または請求項5記載のプロセス
    実行情報採取装置において, 前記実行情報採取部または前記関数実行トレース部は,
    採取した測定情報を共有メモリに記録するように構成さ
    れ, 測定対象プロセスとは別のプロセス内に,共有メモリ内
    における測定情報の蓄積状態に応じて,その測定情報を
    所定の記憶装置または出力装置に出力する共有メモリ情
    報出力部を備えたことを特徴とするプロセス実行情報採
    取装置。
JP28465794A 1994-11-18 1994-11-18 プロセス実行情報採取装置 Expired - Fee Related JP3419916B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP28465794A JP3419916B2 (ja) 1994-11-18 1994-11-18 プロセス実行情報採取装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP28465794A JP3419916B2 (ja) 1994-11-18 1994-11-18 プロセス実行情報採取装置

Publications (2)

Publication Number Publication Date
JPH08147199A JPH08147199A (ja) 1996-06-07
JP3419916B2 true JP3419916B2 (ja) 2003-06-23

Family

ID=17681300

Family Applications (1)

Application Number Title Priority Date Filing Date
JP28465794A Expired - Fee Related JP3419916B2 (ja) 1994-11-18 1994-11-18 プロセス実行情報採取装置

Country Status (1)

Country Link
JP (1) JP3419916B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19938084B4 (de) * 1998-12-11 2005-11-24 Daimlerchrysler Ag Führungslager im Zusammenhang mit einem Druckzylinder, insbesondere Dämpfungselement für Kraftfahrzeuge
JP5386905B2 (ja) * 2008-09-25 2014-01-15 富士通セミコンダクター株式会社 プロファイリング方法およびプロファイリングプログラム
KR101991687B1 (ko) 2012-11-23 2019-06-24 삼성전자 주식회사 동적 라이브러리 프로파일링 방법, 이를 기록한 컴퓨터로 읽을 수 있는 기록 매체 및 동적 라이브러리 프로파일링 시스템

Also Published As

Publication number Publication date
JPH08147199A (ja) 1996-06-07

Similar Documents

Publication Publication Date Title
US5528753A (en) System and method for enabling stripped object software monitoring in a computer system
CN100538656C (zh) 在分布式调试器中调试计算机程序的方法和装置
EP0444315B1 (en) System and method for software application event collection
KR100337748B1 (ko) 데이터 처리 시스템 및 애플리케이션의 구조화된 메모리 분석 방법 및 장치
EP1130518B1 (en) Software analysis system having an apparatus for selectively collecting analysis data from a target system executing software instrumented with tag statements and method for use thereof
US8627302B2 (en) Sampling based runtime optimizer for efficient debugging of applications
US20040268315A1 (en) System and method for processing breakpoint events in a child process generated by a parent process
US6754891B1 (en) Debugger system using tracepoints for computer software
JPH05197594A (ja) データ処理システム用資源データの実時間捕獲及び減縮方法及びシステム
US7089535B2 (en) Code coverage with an integrated development environment
JPH09259011A (ja) ログ情報採取解析装置
JP2000132424A (ja) ソフトウェアインスツルメンテ―ション方法
US20040194114A1 (en) Method and system for managing the contents of an event log stored within a computer
US7086034B2 (en) Method, program, and storage medium for acquiring logs
JP3419916B2 (ja) プロセス実行情報採取装置
AU2005200513B2 (en) Data processing system
JP3389745B2 (ja) プログラムの性能測定装置と方法
JP2798364B2 (ja) アプリケーションの評価方法及びシステム
JP3152178B2 (ja) ロック動作測定方法
JPH05257720A (ja) 仮想計算機システム
JPS60252959A (ja) オンライン・トレ−ス制御方式
US7584480B1 (en) Method of monitoring multiple computer system calls using one routine and non-executable configuration file
JP3399741B2 (ja) ダンプデータの表示方法及び障害解析システム
CN116594750A (zh) 一种函数调用收集方法、装置、设备、存储介质及产品
JPH05274190A (ja) ワークステーション稼働情報分析システム

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20030401

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

Free format text: PAYMENT UNTIL: 20080418

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20090418

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees