JPH10240581A - Cpu時間測定装置 - Google Patents
Cpu時間測定装置Info
- Publication number
- JPH10240581A JPH10240581A JP9045877A JP4587797A JPH10240581A JP H10240581 A JPH10240581 A JP H10240581A JP 9045877 A JP9045877 A JP 9045877A JP 4587797 A JP4587797 A JP 4587797A JP H10240581 A JPH10240581 A JP H10240581A
- Authority
- JP
- Japan
- Prior art keywords
- program
- information
- cpu
- file
- time
- 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.)
- Pending
Links
Landscapes
- Debugging And Monitoring (AREA)
Abstract
(57)【要約】
【課題】プログラムを構成する構成単位毎のCPU使用
時間を、プログラムの再翻訳/再結合を行うことなく可
能にする。 【解決手段】 プログラムカウンタ情報を所定の時間間
隔で出力するプログラムカウンタ出力部と、プログラム
を構成する構成単位のアドレス情報と、前記プログラム
カウンタ出力部の出力した情報に基づいて、構成単位別
のCPU時間を算出するCPU時間算出部とにより、プ
ログラムを構成する構成単位毎のCPU使用時間を測定
する。
時間を、プログラムの再翻訳/再結合を行うことなく可
能にする。 【解決手段】 プログラムカウンタ情報を所定の時間間
隔で出力するプログラムカウンタ出力部と、プログラム
を構成する構成単位のアドレス情報と、前記プログラム
カウンタ出力部の出力した情報に基づいて、構成単位別
のCPU時間を算出するCPU時間算出部とにより、プ
ログラムを構成する構成単位毎のCPU使用時間を測定
する。
Description
【0001】
【産業上の利用分野】本発明は電子計算機で実行される
プログラムの性能解析に関するものであって、特に、プ
ログラムを構成する構成単位(手続き、サブルーチン、
関数等)毎のCPU使用時間の測定に関する。
プログラムの性能解析に関するものであって、特に、プ
ログラムを構成する構成単位(手続き、サブルーチン、
関数等)毎のCPU使用時間の測定に関する。
【0002】
【従来の技術】計算機で実行されるプログラムの処理効
率を向上させるために、どのプログラムが多く実行さ
れ、どのプログラムがあまり実行されないかを知ること
は非常に有益である。多く実行されるプログラムはあま
り実行されないプログラムよりも実行効率の改善が要求
される。
率を向上させるために、どのプログラムが多く実行さ
れ、どのプログラムがあまり実行されないかを知ること
は非常に有益である。多く実行されるプログラムはあま
り実行されないプログラムよりも実行効率の改善が要求
される。
【0003】一つのプログラムは、手続き、サブルーチ
ン、関数等と呼ばれる構成単位を複数組み合わせて構成
される。構成単位同士を比較しても、多く実行されるも
のとあまり実行されないものがある。そこで、従来は計
測対象のプログラムを再翻訳/再結合することで、構成
単位毎の情報を計測するプログラムを付加することで、
プログラムを構成する構成単位別の情報を計測してい
た。
ン、関数等と呼ばれる構成単位を複数組み合わせて構成
される。構成単位同士を比較しても、多く実行されるも
のとあまり実行されないものがある。そこで、従来は計
測対象のプログラムを再翻訳/再結合することで、構成
単位毎の情報を計測するプログラムを付加することで、
プログラムを構成する構成単位別の情報を計測してい
た。
【0004】
【発明が解決しようとする課題】ところが、従来の技術
では、再翻訳/再結合の作業が必要となり、本来の作業
とは別の作業を行なう必要があるという問題があった。
また、再翻訳/再結合の作業ができないプログラムに関
しては、そのプログラムを構成する構成単位毎に情報を
計測することは不可能であった。
では、再翻訳/再結合の作業が必要となり、本来の作業
とは別の作業を行なう必要があるという問題があった。
また、再翻訳/再結合の作業ができないプログラムに関
しては、そのプログラムを構成する構成単位毎に情報を
計測することは不可能であった。
【0005】そこで、本発明では、再翻訳/再結合の作
業を行なうことなく、プログラムを構成する構成単位毎
のCPU使用時間を計測することを課題とする。
業を行なうことなく、プログラムを構成する構成単位毎
のCPU使用時間を計測することを課題とする。
【0006】
【問題を解決するための手段】そこで、本発明において
は、プログラムカウンタを所定の時間間隔で出力するプ
ログラムカウンタ出力部と、プログラムを構成する構成
単位のアドレス情報と、前記プログラムカウンタ出力部
の出力した情報に基づいて、構成単位別のCPU時間を
算出するCPU時間算出部とから構成されるCPU時間
測定装置によって、上記課題を解決する。
は、プログラムカウンタを所定の時間間隔で出力するプ
ログラムカウンタ出力部と、プログラムを構成する構成
単位のアドレス情報と、前記プログラムカウンタ出力部
の出力した情報に基づいて、構成単位別のCPU時間を
算出するCPU時間算出部とから構成されるCPU時間
測定装置によって、上記課題を解決する。
【0007】
【発明の実施の形態】図1は本発明の実施の形態の構成
を示す図である。図中200は、計算機であって、図示
されない複数のCPUとメモリを有する。206は補助
記憶装置であって、データファイルやプログラムファイ
ルを格納するものである。207はキーボードであっ
て、これを用いてオペレータがデータを入力するもので
ある。208はディスプレイ装置であって、計算機によ
る処理の結果等を出力するものである。
を示す図である。図中200は、計算機であって、図示
されない複数のCPUとメモリを有する。206は補助
記憶装置であって、データファイルやプログラムファイ
ルを格納するものである。207はキーボードであっ
て、これを用いてオペレータがデータを入力するもので
ある。208はディスプレイ装置であって、計算機によ
る処理の結果等を出力するものである。
【0008】計算機システムにおけるプログラムの制御
はオペレーティングシステム201によって行なわれ
る。プログラムを実行する際にはプログラムに対して仮
想メモリ空間が割り当てられる。仮想メモリ空間の割り
当ての単位をプロセスと呼ぶ。一つのプロセスはそれぞ
れがCPUの実行権の割り当ての単位となるライトウエ
イトプロセス(Light Weight Process 、スレッドとも呼
ばれる)を一つまたは複数有する。
はオペレーティングシステム201によって行なわれ
る。プログラムを実行する際にはプログラムに対して仮
想メモリ空間が割り当てられる。仮想メモリ空間の割り
当ての単位をプロセスと呼ぶ。一つのプロセスはそれぞ
れがCPUの実行権の割り当ての単位となるライトウエ
イトプロセス(Light Weight Process 、スレッドとも呼
ばれる)を一つまたは複数有する。
【0009】また、各プロセスの仮想メモリ空間はお互
いに独立しているが、同一プロセスに属するライトウエ
イトプロセスは仮想メモリ空間を共有する。ライトウエ
イトプロセスは個々に独立したプログラムカウンタやレ
ジスタを管理する。オペレーティングシステムは、CP
U毎にある一つのプロセスの一つのライトウエイトプロ
セスに対して所定のCPU時間の間の実行権を与え、そ
のライトウエイトプロセスを走行させ、そのライトウエ
イトプロセスが与えられたCPU時間を使い果たした時
点で、そのライトウエイトプロセスから実行権を取り上
げ、そのライトウエイトプロセスの走行を停止させ、別
のライトウエイトプロセスに対して同様の処理を繰り返
す。これにより、一つのCPU上で複数のプロセス及び
複数のライトウエイトプロセスの疑似的な並列実行を可
能にする。
いに独立しているが、同一プロセスに属するライトウエ
イトプロセスは仮想メモリ空間を共有する。ライトウエ
イトプロセスは個々に独立したプログラムカウンタやレ
ジスタを管理する。オペレーティングシステムは、CP
U毎にある一つのプロセスの一つのライトウエイトプロ
セスに対して所定のCPU時間の間の実行権を与え、そ
のライトウエイトプロセスを走行させ、そのライトウエ
イトプロセスが与えられたCPU時間を使い果たした時
点で、そのライトウエイトプロセスから実行権を取り上
げ、そのライトウエイトプロセスの走行を停止させ、別
のライトウエイトプロセスに対して同様の処理を繰り返
す。これにより、一つのCPU上で複数のプロセス及び
複数のライトウエイトプロセスの疑似的な並列実行を可
能にする。
【0010】プログラムは良く知られたプログラミング
言語であるC言語でソースプログラムが記述され、コン
パイラで翻訳され、リンカで結合され実行形式のプログ
ラム(ロードモジュール)としてファイルに格納され
る。C言語で記述されるソースプログラムは関数が個々
の構成単位となる。複数のプログラムで共通して頻繁に
実行される処理は、ライブラリとして提供さる。ライブ
ラリはリンカによる結合の際にロードモジュール内に組
み込まれるスタティックライブラリと、ロードモジュー
ルには組み込まれず、実行時にプロセスの仮想メモリ空
間にロードされ、動的に結合されるダイナミックライブ
ラリとがある。
言語であるC言語でソースプログラムが記述され、コン
パイラで翻訳され、リンカで結合され実行形式のプログ
ラム(ロードモジュール)としてファイルに格納され
る。C言語で記述されるソースプログラムは関数が個々
の構成単位となる。複数のプログラムで共通して頻繁に
実行される処理は、ライブラリとして提供さる。ライブ
ラリはリンカによる結合の際にロードモジュール内に組
み込まれるスタティックライブラリと、ロードモジュー
ルには組み込まれず、実行時にプロセスの仮想メモリ空
間にロードされ、動的に結合されるダイナミックライブ
ラリとがある。
【0011】オペレーティングシステム201はPC
(プログラムカウンタ)情報採取プログラム209を有
する。実行中のライトウエイトプロセスは定期的(例え
ば10マイクロ秒毎)に割り込まれ、割り込み処理とし
てPC情報採取プログラムが実行される。PC情報採取
プログラムは、ライトウエイトプロセスが実行されてい
るCPUのCPU−IDと、ライトウエイトプロセスの
属するプロセスのプロセスIDと、ライトウエイトプロ
セスのID(LWP−ID)と、割り込み発生時のプロ
グラムカウンタをメモリ上のバッファに出力する。
(プログラムカウンタ)情報採取プログラム209を有
する。実行中のライトウエイトプロセスは定期的(例え
ば10マイクロ秒毎)に割り込まれ、割り込み処理とし
てPC情報採取プログラムが実行される。PC情報採取
プログラムは、ライトウエイトプロセスが実行されてい
るCPUのCPU−IDと、ライトウエイトプロセスの
属するプロセスのプロセスIDと、ライトウエイトプロ
セスのID(LWP−ID)と、割り込み発生時のプロ
グラムカウンタをメモリ上のバッファに出力する。
【0012】203はPC情報出力プログラムであっ
て、前述のPC情報採取プログラムが出力した情報をバ
ッファから読み込んで、PC情報ファイルとして、補助
記憶装置206に格納する。PC情報出力プログラム2
03は計算機システムの中で、一つのプロセスとして実
行される。204はプロセス監視プログラムであって、
監視対象のプロセスを監視し、監視対象プロセスのプロ
セス情報をプロセス情報ファイルとして補助記憶装置2
06に格納するものである。プロセス監視プログラムは
計算機システム中で一つのプロセスとして実行される。
て、前述のPC情報採取プログラムが出力した情報をバ
ッファから読み込んで、PC情報ファイルとして、補助
記憶装置206に格納する。PC情報出力プログラム2
03は計算機システムの中で、一つのプロセスとして実
行される。204はプロセス監視プログラムであって、
監視対象のプロセスを監視し、監視対象プロセスのプロ
セス情報をプロセス情報ファイルとして補助記憶装置2
06に格納するものである。プロセス監視プログラムは
計算機システム中で一つのプロセスとして実行される。
【0013】205は関数情報出力プログラムであっ
て、PC情報出力プログラム203が出力したPC情報
ファイルに記憶されている除法と、プロセス監視プログ
ラム204が出力したプロセス情報ファイルに記憶され
ている情報と、予め用意されるシンボルテーブル情報と
に基づいて、監視対象のプロセスによって実行されたプ
ログラムを構成する構成単位す毎、即ち関数のCPU使
用時間を計算し、出力する。プロセス監視プログラムも
計算機システムの中で一つのプロセスとして実行され
る。
て、PC情報出力プログラム203が出力したPC情報
ファイルに記憶されている除法と、プロセス監視プログ
ラム204が出力したプロセス情報ファイルに記憶され
ている情報と、予め用意されるシンボルテーブル情報と
に基づいて、監視対象のプロセスによって実行されたプ
ログラムを構成する構成単位す毎、即ち関数のCPU使
用時間を計算し、出力する。プロセス監視プログラムも
計算機システムの中で一つのプロセスとして実行され
る。
【0014】CPU時間の測定に関する全体の処理を図
2を用いて説明する。ステップ301において、PC情
報出力プログラムを起動し、ステップ302において、
プロセス情報出力プログラムを起動することで、監視を
開始する。監視を終る際には、ステップ303におい
て、プロセス情報出力プログラムに対して終了を指示
し、ステップ304において、PC情報出力プログラム
に対して終了を指示する。監視が終了すると、ステップ
305において、関数毎のCPU使用時間を計算し、出
力する。
2を用いて説明する。ステップ301において、PC情
報出力プログラムを起動し、ステップ302において、
プロセス情報出力プログラムを起動することで、監視を
開始する。監視を終る際には、ステップ303におい
て、プロセス情報出力プログラムに対して終了を指示
し、ステップ304において、PC情報出力プログラム
に対して終了を指示する。監視が終了すると、ステップ
305において、関数毎のCPU使用時間を計算し、出
力する。
【0015】次に、図3を用いてプロセス情報出力プロ
グラムの出力するプロセス情報ファイルについて説明す
る。プロセス情報出力プログラムは処理中は図示のプロ
セス情報テーブルをメモリ上で管理し、処理の終了時に
プロセス情報ファイルとしてファイルに出力する。論理
アドレスは、プロセスにマップされたファイルがそのプ
ロセスの仮想メモリ空間のどのアドレスにマップされた
かを示す。サイズは、マップされたファイルのサイズを
示す。ファイルオフセットは、ファイルがマップされた
仮想メモリ空間のアドレスを基準として、実際にファイ
ルの中身が位置付けられるアドレスへのオフセットを示
す。名前欄のオフセットは名前欄に格納されているファ
イル名の相対アドレスを示す。
グラムの出力するプロセス情報ファイルについて説明す
る。プロセス情報出力プログラムは処理中は図示のプロ
セス情報テーブルをメモリ上で管理し、処理の終了時に
プロセス情報ファイルとしてファイルに出力する。論理
アドレスは、プロセスにマップされたファイルがそのプ
ロセスの仮想メモリ空間のどのアドレスにマップされた
かを示す。サイズは、マップされたファイルのサイズを
示す。ファイルオフセットは、ファイルがマップされた
仮想メモリ空間のアドレスを基準として、実際にファイ
ルの中身が位置付けられるアドレスへのオフセットを示
す。名前欄のオフセットは名前欄に格納されているファ
イル名の相対アドレスを示す。
【0016】図5を用いてプロセス監視プログラムの処
理を説明する。まず、プロセス情報の採取を行なうきっ
かけとなる処理に対してブレークポイントの設定を行な
う(ステップ601)。ブレークポイントは、プロセス
の生成処理、プログラムの実行処理、ファイルのマップ
処理に対して設定される。プロセスの生成は、新たな仮
想メモリ空間を生成し、新たなプロセスの生成を行なう
プロセスの仮想メモリ空間の内容をコピーし、新しいプ
ロセスに対して新しいプロセスIDを割り当てる処理で
ある。
理を説明する。まず、プロセス情報の採取を行なうきっ
かけとなる処理に対してブレークポイントの設定を行な
う(ステップ601)。ブレークポイントは、プロセス
の生成処理、プログラムの実行処理、ファイルのマップ
処理に対して設定される。プロセスの生成は、新たな仮
想メモリ空間を生成し、新たなプロセスの生成を行なう
プロセスの仮想メモリ空間の内容をコピーし、新しいプ
ロセスに対して新しいプロセスIDを割り当てる処理で
ある。
【0017】プログラムの実行は、ファイルに格納され
ている実行形式のプログラムを仮想メモリ空間内にロー
ドし、実行する処理である。プログラムを実行する際に
はプログラムに対してパラメタを与えることが可能であ
る。ファイルのマップは、ファイルに格納されているデ
ータを仮想メモリ空間内に対応付ける処理である。通常
ファイルのオープン処理によりファイルがマップされ、
クローズ処理によりアンマップされる。ファイルをオー
プンしただけではファイルの内容は仮想メモリ空間にロ
ードされないが、ファイルに対するリード/ライト等の
アクセスに応じて仮想メモリ空間にロードされる。
ている実行形式のプログラムを仮想メモリ空間内にロー
ドし、実行する処理である。プログラムを実行する際に
はプログラムに対してパラメタを与えることが可能であ
る。ファイルのマップは、ファイルに格納されているデ
ータを仮想メモリ空間内に対応付ける処理である。通常
ファイルのオープン処理によりファイルがマップされ、
クローズ処理によりアンマップされる。ファイルをオー
プンしただけではファイルの内容は仮想メモリ空間にロ
ードされないが、ファイルに対するリード/ライト等の
アクセスに応じて仮想メモリ空間にロードされる。
【0018】通常の実行形式のプログラムは、プログラ
ムの実行によりファイルから仮想メモリ空間にロードさ
れる。スタティックリンクライブラリはロードモジュー
ルに結合されているので、プログラムの実行の際にロー
ドされる。一方、ダイナミックリンクライブラリはロー
ドモジュールとは別のファイルに格納されているため、
マップ処理によって仮想メモリ空間にマップされる。ダ
イナミックリンクライブラリを構成する複数の構成単位
は、ダイナミックリンクライブラリを使用するプログラ
ムの指定により、マップされた時点で全ての構成単位が
仮想メモリ空間上にロードされる場合と、個々の構成単
位毎に初回の呼び出しの際に仮想メモリ空間に呼び出さ
れる場合とがある。
ムの実行によりファイルから仮想メモリ空間にロードさ
れる。スタティックリンクライブラリはロードモジュー
ルに結合されているので、プログラムの実行の際にロー
ドされる。一方、ダイナミックリンクライブラリはロー
ドモジュールとは別のファイルに格納されているため、
マップ処理によって仮想メモリ空間にマップされる。ダ
イナミックリンクライブラリを構成する複数の構成単位
は、ダイナミックリンクライブラリを使用するプログラ
ムの指定により、マップされた時点で全ての構成単位が
仮想メモリ空間上にロードされる場合と、個々の構成単
位毎に初回の呼び出しの際に仮想メモリ空間に呼び出さ
れる場合とがある。
【0019】プログラムの実行がブレークポイントにさ
しかかると、プロセス情報を獲得し(ステップ60
2)、以下に示す処理を行なう。即ち、プロセスの生成
処理に設定されたブレークポイントでは、新たに生成さ
れたプロセスのためにプロセス情報テーブルを作成し、
生成されたプロセスのプロセスIDをプロセス情報テー
ブルに登録する(ステップ603)。プロセスの生成は
プロセスのコピーを作ることであるため、新たなプロセ
スを生成したプロセスも作成された新たなプロセスも同
一のプログラムを実行することになる。そのため、監視
対象のプロセスによって生成されたプロセスも監視対象
にする必要があるので、新たに作成されたプロセスに関
してもプロセス情報テーブルを作成する。
しかかると、プロセス情報を獲得し(ステップ60
2)、以下に示す処理を行なう。即ち、プロセスの生成
処理に設定されたブレークポイントでは、新たに生成さ
れたプロセスのためにプロセス情報テーブルを作成し、
生成されたプロセスのプロセスIDをプロセス情報テー
ブルに登録する(ステップ603)。プロセスの生成は
プロセスのコピーを作ることであるため、新たなプロセ
スを生成したプロセスも作成された新たなプロセスも同
一のプログラムを実行することになる。そのため、監視
対象のプロセスによって生成されたプロセスも監視対象
にする必要があるので、新たに作成されたプロセスに関
してもプロセス情報テーブルを作成する。
【0020】プログラムの実行処理に設定されたブレー
クポイントでは、実行されるプログラムを格納している
ファイルのファイル名をプロセス名として獲得し、指定
された引数とともにプロセス情報テーブルの名前欄に格
納する(ステップ604)。別々のプロセスで別々のプ
ログラムを実行する場合、仮想メモリ空間の同じアドレ
スに別のプログラムがロードされることになるので、プ
ロセス毎にどのプログラムがロードされているのかをプ
ロセス名としてプロセス情報テーブルに格納する必要が
ある。
クポイントでは、実行されるプログラムを格納している
ファイルのファイル名をプロセス名として獲得し、指定
された引数とともにプロセス情報テーブルの名前欄に格
納する(ステップ604)。別々のプロセスで別々のプ
ログラムを実行する場合、仮想メモリ空間の同じアドレ
スに別のプログラムがロードされることになるので、プ
ロセス毎にどのプログラムがロードされているのかをプ
ロセス名としてプロセス情報テーブルに格納する必要が
ある。
【0021】ファイルのマップ処理に設定されたブレー
クポイントでは、ファイルをマップした仮想メモリ空間
内のアドレスと、ファイルのサイズ、ファイルのオフセ
ット、ファイル名のオフセット、マップ時刻、アンマッ
プ時刻をプロセス情報テーブルに格納する(ステップ6
05)。ファイル名は名前欄に記憶し、名前欄へのオフ
セットを記憶する。同じダイナミックリンクライブラリ
であっても異なるプロセスでは仮想メモリ空間の別のア
ドレスにマップされることがあるため、マップした仮想
メモリ空間内のアドレスを記録する必要がある。
クポイントでは、ファイルをマップした仮想メモリ空間
内のアドレスと、ファイルのサイズ、ファイルのオフセ
ット、ファイル名のオフセット、マップ時刻、アンマッ
プ時刻をプロセス情報テーブルに格納する(ステップ6
05)。ファイル名は名前欄に記憶し、名前欄へのオフ
セットを記憶する。同じダイナミックリンクライブラリ
であっても異なるプロセスでは仮想メモリ空間の別のア
ドレスにマップされることがあるため、マップした仮想
メモリ空間内のアドレスを記録する必要がある。
【0022】以上の処理は、プロセスの監視の終了の指
示があるまで繰り返し行なわれる(ステップ606)。
プロセスの監視の終了が指示されると、プロセス情報テ
ーブルをファイルに出力し(ステップ607)、監視処
理を終了する。次に図4を用いて、PC情報採取の処
理、即ちPC情報出力プログラム203及びPC情報採
取プログラム209の処理を説明する。
示があるまで繰り返し行なわれる(ステップ606)。
プロセスの監視の終了が指示されると、プロセス情報テ
ーブルをファイルに出力し(ステップ607)、監視処
理を終了する。次に図4を用いて、PC情報採取の処
理、即ちPC情報出力プログラム203及びPC情報採
取プログラム209の処理を説明する。
【0023】PC情報出力プログラム203は起動され
るとPC情報採取プログラム209の初期化処理を呼び
出す(ステップ501)。初期化処理が呼び出されると
PC情報採取プログラム209はPC情報を一時的に記
憶するためのバッファをメモリ上に確保し、所定時間毎
(ここでは、10マイクロ秒毎とする)に実行中のプロ
グラムに割り込みがかかって、PC情報採取プログラム
209が実行されるように設定する(ステップ50
3)。PC情報採取プログラム209が所定時間毎の割
り込みを契機に実行されると、CPU−ID、LWP−
IP、PC(プログラムカウンタ)、プロセスIDをバ
ッファに追記する(ステップ503)。
るとPC情報採取プログラム209の初期化処理を呼び
出す(ステップ501)。初期化処理が呼び出されると
PC情報採取プログラム209はPC情報を一時的に記
憶するためのバッファをメモリ上に確保し、所定時間毎
(ここでは、10マイクロ秒毎とする)に実行中のプロ
グラムに割り込みがかかって、PC情報採取プログラム
209が実行されるように設定する(ステップ50
3)。PC情報採取プログラム209が所定時間毎の割
り込みを契機に実行されると、CPU−ID、LWP−
IP、PC(プログラムカウンタ)、プロセスIDをバ
ッファに追記する(ステップ503)。
【0024】バッファへの追記により、バッファフルに
なると、その旨をPC情報出力プログラム203に通知
する(ステップ505)。PC情報出力プログラム20
3はPC情報採取プログラム209からバッファフルが
通知されるのを待ち、バッファフルが通知されるとバッ
ファの内容を読み込み(ステップ504)、PC情報フ
ァイルに出力する(ステップ506)。
なると、その旨をPC情報出力プログラム203に通知
する(ステップ505)。PC情報出力プログラム20
3はPC情報採取プログラム209からバッファフルが
通知されるのを待ち、バッファフルが通知されるとバッ
ファの内容を読み込み(ステップ504)、PC情報フ
ァイルに出力する(ステップ506)。
【0025】PC情報出力プログラム203の終了が指
示されるまで、以上の処理を繰り返し実行する。次に図
7を用いてシンボルテーブルについて説明する。シンボ
ルテーブルは事前にロードモジュールファイル毎、ダイ
ナミックリンクファイル毎に、図示の構造で、シンボル
テーブルファイルに格納して準備される。シンボルテー
ブルは、シンボル名、種別、アドレス、サイズの情報を
記憶する。シンボルとは、プログラムで扱われる対象
(オブジェクト)に対して付与された名前である。種別
は、オブジェクトの種別であって、例えば、変数、関
数、手続き等である。アドレスは仮想メモリ空間内にお
いてオブジェクトが配置されたアドレスを示す。サイズ
はオブジェクトのサイズを示す。
示されるまで、以上の処理を繰り返し実行する。次に図
7を用いてシンボルテーブルについて説明する。シンボ
ルテーブルは事前にロードモジュールファイル毎、ダイ
ナミックリンクファイル毎に、図示の構造で、シンボル
テーブルファイルに格納して準備される。シンボルテー
ブルは、シンボル名、種別、アドレス、サイズの情報を
記憶する。シンボルとは、プログラムで扱われる対象
(オブジェクト)に対して付与された名前である。種別
は、オブジェクトの種別であって、例えば、変数、関
数、手続き等である。アドレスは仮想メモリ空間内にお
いてオブジェクトが配置されたアドレスを示す。サイズ
はオブジェクトのサイズを示す。
【0026】図6を用いて関数情報出力プログラムの処
理を説明する。まず、PC情報ファイルを読み込み、P
C情報をメモリ上に記憶する(ステップ701)。次に
プロセス情報ファイルを読み込み、プロセス情報をメモ
リ上に記憶する(ステップ702)。さらに、シンボル
テーブルファイルを読み込みシンボルテーブルをメモリ
上に記憶し、これらの情報に基づいて関数毎のCPU使
用時間を計算する(ステップ703)。
理を説明する。まず、PC情報ファイルを読み込み、P
C情報をメモリ上に記憶する(ステップ701)。次に
プロセス情報ファイルを読み込み、プロセス情報をメモ
リ上に記憶する(ステップ702)。さらに、シンボル
テーブルファイルを読み込みシンボルテーブルをメモリ
上に記憶し、これらの情報に基づいて関数毎のCPU使
用時間を計算する(ステップ703)。
【0027】より詳細には、個々のPC情報毎即ち、1
セットのCPU−ID、LPW−ID、プロセスID、
PC毎に、以下の処理を行なう。 (1)プロセスIDに基づいて、測定対象のプロセスで
あるか否かを判断する。 (2)測定対象のプロセスではない場合はこのPC情報
を無視し次のPC情報について処理を行ない、測定対象
のプロセスの場合はステップ(3)に進む。
セットのCPU−ID、LPW−ID、プロセスID、
PC毎に、以下の処理を行なう。 (1)プロセスIDに基づいて、測定対象のプロセスで
あるか否かを判断する。 (2)測定対象のプロセスではない場合はこのPC情報
を無視し次のPC情報について処理を行ない、測定対象
のプロセスの場合はステップ(3)に進む。
【0028】(3)プロセスで実行されたプログラムに
対応するシンボルテーブルに格納されているアドレスと
サイズに基づいて、プログラムカウンタがどのシンボル
名と対応しているかを求める。求めたシンボル名が、関
数名となる。なお、ダイナミックリンクライブラリの中
の関数等のように、プログラムに対応するシンボル情報
テーブルの中にプログラムカウンタの値に対応するアド
レスが存在しない場合には、プロセス情報テーブルを検
索して、そのアドレス上にマップされたファイルを特定
し、特定されたファイルに対応するシンボルテーブルを
参照し、対応する関数名を特定する。
対応するシンボルテーブルに格納されているアドレスと
サイズに基づいて、プログラムカウンタがどのシンボル
名と対応しているかを求める。求めたシンボル名が、関
数名となる。なお、ダイナミックリンクライブラリの中
の関数等のように、プログラムに対応するシンボル情報
テーブルの中にプログラムカウンタの値に対応するアド
レスが存在しない場合には、プロセス情報テーブルを検
索して、そのアドレス上にマップされたファイルを特定
し、特定されたファイルに対応するシンボルテーブルを
参照し、対応する関数名を特定する。
【0029】(4)図8に示す集計テーブルに関数名が
登録されている場合は、回数を1増やし、登録されてい
ない場合は、関数名を登録し回数を1に設定する。 (5)PC情報が残っている場合は次のPC情報につい
ての処理を行ない、残っていない場合は(6)に進む。 (6)集計テーブルの各エントリ毎に、PC情報を採取
した際の割り込みの間隔の時間(本実施形態においては
10マイクロ秒)と回数とを掛け合わせ、関数のCPU
使用時間を計算する。
登録されている場合は、回数を1増やし、登録されてい
ない場合は、関数名を登録し回数を1に設定する。 (5)PC情報が残っている場合は次のPC情報につい
ての処理を行ない、残っていない場合は(6)に進む。 (6)集計テーブルの各エントリ毎に、PC情報を採取
した際の割り込みの間隔の時間(本実施形態においては
10マイクロ秒)と回数とを掛け合わせ、関数のCPU
使用時間を計算する。
【0030】最後に、計算したCPU時間を関数毎にデ
ィスプレイ装置208に出力し(ステップ704)、処
理を終了する。以上に示した構成及び処理により、プロ
グラムを構成する関数毎のCPUの使用時間を計測する
ことが可能となる。なお、シンボルテーブルにアドレス
とサイズを格納する例を示したが、この情報は仮想メモ
リ空間ないのどの範囲がオブジェクトによって占められ
るかを特定することが出来る情報であれば何を用いても
よい。
ィスプレイ装置208に出力し(ステップ704)、処
理を終了する。以上に示した構成及び処理により、プロ
グラムを構成する関数毎のCPUの使用時間を計測する
ことが可能となる。なお、シンボルテーブルにアドレス
とサイズを格納する例を示したが、この情報は仮想メモ
リ空間ないのどの範囲がオブジェクトによって占められ
るかを特定することが出来る情報であれば何を用いても
よい。
【0031】また、構成単位として、サブルーチン、手
続き、関数等のようにソースプログラムの中、または、
計算機システムの中での取扱の単位を示したが、シンボ
ル情報テーブルに任意のアドレス情報を設定して、任意
のアドレス範囲内毎のCPU使用時間を求めることも可
能である。また、関数情報出力プログラムの出力先はデ
ィスプレイ装置に限らず、プリンタ装置やファイルに対
して行なってもよい。
続き、関数等のようにソースプログラムの中、または、
計算機システムの中での取扱の単位を示したが、シンボ
ル情報テーブルに任意のアドレス情報を設定して、任意
のアドレス範囲内毎のCPU使用時間を求めることも可
能である。また、関数情報出力プログラムの出力先はデ
ィスプレイ装置に限らず、プリンタ装置やファイルに対
して行なってもよい。
【0032】
【効果】本発明により、CPU使用時間の測定のための
本来の作業とは別の、再翻訳/再結合といった作業を必
要とせず、関数等のプログラムの構成単位毎のCPU使
用時間を求めることが可能になる。また、スタティック
リンクライブラリやダイナミックリンクライブラリ等の
ライブラリを構成する構成単位についても同様にCPU
使用時間を求めることが可能になる。
本来の作業とは別の、再翻訳/再結合といった作業を必
要とせず、関数等のプログラムの構成単位毎のCPU使
用時間を求めることが可能になる。また、スタティック
リンクライブラリやダイナミックリンクライブラリ等の
ライブラリを構成する構成単位についても同様にCPU
使用時間を求めることが可能になる。
【図1】本発明の実施の形態の構成を示す図。
【図2】実施の形態の全体の処理のフローを示す図。
【図3】プロセス情報テーブルの構成を示す図。
【図4】PC情報採取のフローを示す図。
【図5】プロセス監視処理のフローを示す図。
【図6】結果表示処理のフローを示す図。
【図7】シンボルテーブルの構成を示す図。
【図8】集計テーブルの構成を示す図。
200...計算機 201...オペレーティングシステム(OS) 202...監視対象プロセス 203...PC情報出力プログラム 204...プロセス監視プログラム 205...関数情報出力プログラム 206...補助記憶装置(ディスク装置) 207...入力装置(キーボード) 208...ディスプレイ装置(画面) 209...PC情報採取プログラム
Claims (2)
- 【請求項1】 複数の構成単位で構成されるプログラム
を実行させた際の構成単位毎のCPU時間を測定するC
PU時間測定装置であって、 プログラムカウンタ情報を所定の時間間隔で出力するプ
ログラムカウンタ出力部と、 プログラムを構成する構成単位のアドレス情報と、前記
プログラムカウンタ出力部の出力した情報に基づいて、
構成単位別のCPU時間を算出するCPU時間算出部と
から構成されるCPU時間測定装置。 - 【請求項2】 複数の構成単位で構成されるプログラム
を実行させた際の構成単位毎のCPU時間を測定するC
PU時間測定プログラムを格納したコンピュータ読み取
り可能な記憶媒体であって、 プログラムカウンタ情報を所定の時間間隔で出力するプ
ログラムカウンタ出力機能と、 プログラムを構成する構成単位のアドレス情報と、前記
プログラムカウンタ出力部の出力した情報に基づいて、
構成単位別のCPU時間を算出するCPU時間算出機能
とを有するコンピュータプログラムを格納したコンピュ
ータ読み取り可能な記憶媒体。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP9045877A JPH10240581A (ja) | 1997-02-28 | 1997-02-28 | Cpu時間測定装置 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP9045877A JPH10240581A (ja) | 1997-02-28 | 1997-02-28 | Cpu時間測定装置 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH10240581A true JPH10240581A (ja) | 1998-09-11 |
Family
ID=12731462
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP9045877A Pending JPH10240581A (ja) | 1997-02-28 | 1997-02-28 | Cpu時間測定装置 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH10240581A (ja) |
Cited By (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2003526135A (ja) * | 1998-11-16 | 2003-09-02 | インシグニア・ソリューションズ・ピーエルシー | コンピュータ・システム、コンピュータ読取り可能な記憶媒体および同媒体を動作させる方法、およびコンピュータ・システムを動作させる方法 |
| JP2007213205A (ja) * | 2006-02-08 | 2007-08-23 | Fujitsu Ltd | システム分析プログラム、システム分析装置、およびシステム分析方法 |
| JP2012168660A (ja) * | 2011-02-10 | 2012-09-06 | Fujitsu Ltd | 情報抽出プログラム、情報抽出方法、および情報抽出装置 |
| JP2014170482A (ja) * | 2013-03-05 | 2014-09-18 | Fujitsu Ltd | 仮想計算機システム及びその管理方法並びに仮想計算機システムの管理プログラム |
-
1997
- 1997-02-28 JP JP9045877A patent/JPH10240581A/ja active Pending
Cited By (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2003526135A (ja) * | 1998-11-16 | 2003-09-02 | インシグニア・ソリューションズ・ピーエルシー | コンピュータ・システム、コンピュータ読取り可能な記憶媒体および同媒体を動作させる方法、およびコンピュータ・システムを動作させる方法 |
| JP2007213205A (ja) * | 2006-02-08 | 2007-08-23 | Fujitsu Ltd | システム分析プログラム、システム分析装置、およびシステム分析方法 |
| JP2012168660A (ja) * | 2011-02-10 | 2012-09-06 | Fujitsu Ltd | 情報抽出プログラム、情報抽出方法、および情報抽出装置 |
| JP2014170482A (ja) * | 2013-03-05 | 2014-09-18 | Fujitsu Ltd | 仮想計算機システム及びその管理方法並びに仮想計算機システムの管理プログラム |
| US9524180B2 (en) | 2013-03-05 | 2016-12-20 | Fujitsu Limited | Managing virtual machines using tracing information |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US9965324B2 (en) | Process grouping for improved cache and memory affinity | |
| US6862729B1 (en) | Profile-driven data layout optimization | |
| US7467271B2 (en) | Operating system permitting limited access to a system page | |
| US4812981A (en) | Memory management system improving the efficiency of fork operations | |
| US7328429B2 (en) | Instruction operand tracing for software debug | |
| US8677322B2 (en) | Debugging in a multiple address space environment | |
| US20090248721A1 (en) | System And Method for Stack Crawl Testing and Caching | |
| US9003146B2 (en) | Managing memory of a computer | |
| JPH113269A (ja) | スタックの内容をサブスタックに分離することによる正確なガーベイジ・コレクションを補助するシステムと方法 | |
| EP1369787A2 (en) | Processor device and information processing device, compiling device, and compiling method using said processor device | |
| JPH10240581A (ja) | Cpu時間測定装置 | |
| US10452534B2 (en) | Asynchronous operation query | |
| US6141635A (en) | Method of diagnosing faults in an emulated computer system via a heterogeneous diagnostic program | |
| JPH06103158A (ja) | メモリデバイスの用途決定方法及びシステム | |
| US20040073907A1 (en) | Method and system of determining attributes of a functional unit in a multiple processor computer system | |
| JP5891963B2 (ja) | アドレス管理装置、及びプログラム | |
| JP3085309B2 (ja) | デバッグシステム | |
| Yang et al. | A RISC-V On-chip Operating System Based on Rust | |
| JP2008310487A (ja) | プログラム、例外処理方法、コンピュータ、携帯電話およびテレビ受像装置 | |
| JP3106989B2 (ja) | シミュレーションデバッガのシミュレーション方式 | |
| JP5208706B2 (ja) | コード実行システム、方法及びプログラム | |
| JP2591818B2 (ja) | 補助機能の選択制御方法 | |
| CN120406948A (zh) | 一种支持多种编程语言环境的热点符号解析方法、系统及应用 | |
| JPH0658647B2 (ja) | 計算機におけるページフォルトテスト方式 | |
| JPH1185531A (ja) | 言語処理装置およびその言語処理装置を実現するプログラムが記録された記憶媒体 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050621 |
|
| A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20051018 |