JP2010079508A - プロファイリング方法およびプロファイリングプログラム - Google Patents

プロファイリング方法およびプロファイリングプログラム Download PDF

Info

Publication number
JP2010079508A
JP2010079508A JP2008245787A JP2008245787A JP2010079508A JP 2010079508 A JP2010079508 A JP 2010079508A JP 2008245787 A JP2008245787 A JP 2008245787A JP 2008245787 A JP2008245787 A JP 2008245787A JP 2010079508 A JP2010079508 A JP 2010079508A
Authority
JP
Japan
Prior art keywords
profiling
program
profile acquisition
executed
target
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
Application number
JP2008245787A
Other languages
English (en)
Other versions
JP5386905B2 (ja
Inventor
Shigeru Kimura
茂 木村
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 Semiconductor Ltd
Original Assignee
Fujitsu Semiconductor 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 Semiconductor Ltd filed Critical Fujitsu Semiconductor Ltd
Priority to JP2008245787A priority Critical patent/JP5386905B2/ja
Priority to US12/542,325 priority patent/US8549505B2/en
Publication of JP2010079508A publication Critical patent/JP2010079508A/ja
Application granted granted Critical
Publication of JP5386905B2 publication Critical patent/JP5386905B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording 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/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

【課題】OS環境下で命令単位での細かいプロファイル情報を取得すること。仮想記憶機構を備えたOS環境下でプロファイリング対象プログラム(共用ライブラリを含む)のプロファイル情報のみを取得すること。
【解決手段】コンピュータシステムは、プロファイリング対象プログラム1、OS2およびプロセッサ3を備えている。プロファイリング対象のアプリケーションプログラム11と、サンプリング情報を収集するプロファイル取得関数ライブラリ12とを同一プロセスで起動する。プロセッサ3の内蔵タイマ15から割り込みが発生するたびに、OS2に予め組み込まれたプロファイル取得ドライバ13により、プログラムカウンタ16の値やハードウェアカウンタ17の値を収集する。仮想記憶システム上で複数のプロセスが実行される場合には、割り込みの発生時にプロファイリング対象プロセスが実行されているときにサンプリング情報を収集する。
【選択図】図1

Description

この発明は、コンピュータシステムにおいてプログラムの実行状況に関するプロファイル情報を取得するプロファイリング方法およびプロファイリングプログラムに関する。
コンピュータシステムにおいて、プロファイリング手法が用いられている。例えば、ターゲット範囲指定インタフェースが情報収集対象範囲の指定をアプリケーションプログラムから受け取ってフラグ管理テーブルに登録し、フラグ設定インタフェースがフラグ値をアプリケーションプログラムから受け取ってフラグ管理テーブルに設定し、割り込みハンドラが割り込み発生時の実行アドレスがフラグ管理テーブルに登録された情報収集対象範囲のいずれかに該当する場合には、実行アドレスとともにフラグ管理テーブルのその時点のフラグ値を割り込みハンドラ記録テーブルに記録するプロファイリング手法が知られている(例えば、特許文献1参照。)。
特開2007−272692号公報
しかしながら、従来のプロファイリング手法では、次のような問題点がある。オペレーティングシステム(以下、OSとする。OS:Operating System)環境下では、プロファイリング対象プログラムと、プロファイリング対象プログラムをプロファイルするためのプログラムとを別のプロセスとして起動し、プロセス監視用のシステムコールによりシステム割り込みを発生させてプログラムカウンタの値を採取する。その際、システム割り込みの間隔は、システムタイマの最小割り込み時間となる。この最小割り込み時間は、UNIX(The Open Groupの登録商標)やLinux(Linus Torvalds氏の登録商標)では10msである。システムタイマでは、システム処理のための時間がかかる。そのため、システムタイマの最小割り込み時間でプロファイリングをしても、関数単位でのプロファイル情報を得ることはできるが、命令単位での細かいプロファイル情報を得ることができない。
また、仮想記憶機構を備えたOS環境下で複数のプロセスが同時に実行されている場合、プログラムカウンタの値を採取する際に、プロファイリング対象プロセスとそうでない他のプロセスとの区別をすることができない。そのため、取得されたプロファイル情報には、プロファイリング対象プログラムのプロファイル情報だけでなく、プロファイリング対象でないプログラムのプロファイル情報も含まれてしまう。つまり、プロファイリング対象プログラムのプロファイル情報のみを取得することはできない。このことは、複数のプロセス間で共通に実行される共用ライブラリについても同様であり、プロファイリング対象プロセスで実行される共用ライブラリのプロファイル情報のみを取得することはできない。
OS環境下で命令単位での細かいプロファイル情報を取得することができるプロファイリング方法およびプロファイリングプログラムを提供することを目的とする。また、仮想記憶機構を備えたOS環境下でプロファイリング対象プログラム(共用ライブラリを含む)のプロファイル情報のみを取得することができるプロファイリング方法およびプロファイリングプログラムを提供することを目的とする。
このプロファイリング方法およびプロファイリングプログラムは、アプリケーションのソースプログラムにプロファイル取得関数の呼び出し命令を追加したソースコードを生成し、そのソースコードにプロファイル取得関数ライブラリを結合して実行形式のプロファイリング対象プログラムを生成する。このプロファイリング対象プログラムを、ターゲットシステムのOS環境下で実行する。その実行中に、プロファイル取得関数の呼び出し命令からプロファイル取得関数ライブラリ経由で、予めターゲットシステムに組み込んでおいたプロファイル取得ドライバを呼び出す。このプロファイル取得ドライバにより、ターゲットシステムのプロセッサの内蔵タイマに基づいて、OSのシステムタイマの単位時間よりも短い時間で割り込みを発生させて、プロファイリング対象プログラムの実行状況に関するサンプリング情報を収集する。仮想記憶システム上で複数のプロセスが実行される場合には、割り込みの発生時にプロファイリング対象プロセスが実行されているときにのみ、プロファイリング対象プログラムの実行状況に関するサンプリング情報、またはプロファイリング対象プログラムが利用している共用ライブラリの実行状況に関するサンプリング情報を収集する。
このプロファイリング方法およびプロファイリングプログラムによれば、アプリケーションプログラムとこれに対してサンプリング情報の収集処理を実行するプロファイル用プログラムとが同一プロセスで起動されるので、OSの最小割り込み時間よりも短い間隔でサンプリング情報が収集される。また、プロファイリング対象プロセスが実行されているときにのみ、サンプリング情報が収集される。
このプロファイリング方法およびプロファイリングプログラムによれば、OS環境下で命令単位での細かいプロファイル情報を取得することができる。また、仮想記憶機構を備えたOS環境下でプロファイリング対象プログラム(共用ライブラリを含む)のプロファイル情報のみを取得することができる。
以下に添付図面を参照して、このプロファイリング方法およびプロファイリングプログラムの好適な実施の形態を詳細に説明する。以下の例では、OSとしてLinuxを使用した場合について説明するが、これに限定されるものではなく、プロファイリング方法およびプロファイリングプログラムは、Windows(米国Microsoft社の登録商標)やその他のリアルタイムOSにも適用することができる。
(概略)
図1は、実施の形態にかかるプロファイリング方法を適用したコンピュータシステムの構成を示す説明図である。図1に示すように、このコンピュータシステムは、プロファイリング対象プログラム1、OS2およびプロセッサ3を備えている。OS環境下で、プロファイリング対象のアプリケーションプログラムと、これに対してサンプリング情報を収集するプロファイル用のプログラムとを同一プロセスで起動する。予め、OS2にプロファイル取得ドライバ13を組み込んでおき、プロセッサ3の内蔵タイマ15から割り込みが発生するたびに、プロファイル取得ドライバ13によりプロセッサ3のプログラムカウンタ16の値やハードウェアカウンタ17の値を収集する。仮想記憶システム上で複数のプロセスが実行される場合には、割り込み発生時に実行しているプロセスがプロファイリング対象プロセスであるときにのみサンプリング情報を収集する。
(システムの構成)
プロファイリング対象プログラム1は、実行形式のプログラムであり、プロファイリング対象のアプリケーションプログラム11にプロファイル取得関数ライブラリ12が結合されている。アプリケーションプログラム11には、プロファイル取得関数の呼び出し命令が埋め込まれている。プロファイル取得関数の呼び出し命令は、例えばプロファイルの測定開始を指示する「Call start()」や測定終了を指示する「Call stop()」などである。プロファイル取得関数ライブラリ12は、プロファイル情報の取得に必要な機能を提供する種々のプロファイル取得関数をまとめたものである。プロファイル取得関数は、プロファイルを取得するための命令群であり、例えばプロファイルの測定を開始する「start」や測定を終了する「stop」などである。プロファイル取得関数は、対応するプロファイル取得関数の呼び出し命令により呼び出される。
OS2には、プロファイル取得ドライバ13が組み込まれている。また、OS2には、サンプリング情報を格納するメモリ領域14が設けられている。プロファイル取得ドライバ13は、「start」と「stop」のプロファイル取得関数により指定されたプロファイリング対象範囲で、プロセッサ3の内蔵タイマ15から割り込みが発生されるたびに、割り込みハンドラを呼び出し、プロセッサ3のプログラムカウンタ16の値やイベントカウンタなどのハードウェアカウンタ17の値をサンプリング情報としてメモリ領域14に格納する。その際、プロファイル取得ドライバ13は、仮想記憶システム上で実行されている複数のプロセスのうち、プロファイリング対象プロセスのプログラムまたはプロファイリング対象プロセスで利用されている共用ライブラリに対して、サンプリング情報を収集する。
プロセッサ3は、内蔵タイマ15、プログラムカウンタ16およびハードウェアカウンタ17を備えている。ハードウェアカウンタ17は、プロセッサ3内部のイベントの発生回数や、プロセッサ3が外部とやり取りする際のイベントの発生回数をカウントする。イベントとしては、例えば、実行サイクル数、キャッシュミス数、TLB(Translation Look−aside Buffer)ミス数、実行命令数、実行命令並列度、分岐命令実行数、特定命令の実行数、パイプラインストール要因、レジスタ干渉サイクル数またはバスアクセス情報などである。
また、コンピュータシステムは、解析ツール4を備えている。解析ツール4は、プロファイル情報ファイル18および実行ファイル19に基づいて、プロファイル情報の解析を行い、その結果20を出力する。プロファイル情報ファイル18は、前記メモリ領域14に格納されたサンプリング情報に基づいて作成される。実行ファイル19は、プロファイリング対象プログラム1と同じものである。
(プロファイリング方法の処理手順)
図2は、実施の形態にかかるプロファイリング方法の処理手順を示す説明図である。図2に示すように、プロファイリング対象のアプリケーションプログラムに対してプロファイリング処理を行うにあたって、まず、アプリケーションのソースプログラムにプロファイル取得関数の呼び出し命令を追加し、プロファイル取得関数の呼び出し命令が埋め込まれたソースコードを作成する(ステップS1)。次いで、作成されたソースコードを翻訳してオブジェクトプログラムを作成する(ステップS2)。次いで、作成されたオブジェクトプログラムにプロファイル取得関数ライブラリを結合(リンク)して、プロファイリング対象プログラムを作成する(ステップS3)。一方、プロファイル取得ドライバを作成し、ターゲットシステムのOSにプロファイル取得ドライバを組み込む(ステップS4)。プロファイル取得ドライバを、ターゲットシステムを作成する際にターゲットシステムに組み込んでもよいし、プロファイリング処理を実行する際に例えば「insmod」コマンドを使用してターゲットシステムに組み込んでもよい。
次いで、ターゲットシステムで前記プロファイリング対象プログラムを実行する(ステップS5)。その実行中にプロファイリング対象範囲の開始点に達すると、プロファイル取得関数ライブラリからプロファイルの測定を開始する関数を呼び出し、その関数によってプロファイル取得ドライバを呼び出す(ステップS6)。プロファイル取得ドライバは、プロセッサの内蔵タイマによる割り込みが発生するたびに、割り込みハンドラを呼び出し、プロセッサのプログラムカウンタの値やハードウェアカウンタの値をサンプリング情報として収集する(ステップS7)。
収集されたサンプリング情報は、OSのメモリ領域に格納される。メモリ領域には、プロファイリング対象範囲のコードサイズに対応したサンプリング情報を格納可能な領域が予め確保されている。プロファイリング対象範囲のコードサイズは、前記ステップS3での結合時に、セクション情報を定義するリンカスクリプトで定義されているシンボル名アドレスをプロファイルツールから参照し、プログラム終了シンボル(例えば「_finit」)から開始シンボル(例えば「_start」)を減算することによって、求められる。従って、プロファイルツールのユーザは、プログラムコードサイズを明示的に指定しなくてよい。ここで、サンプリング情報を格納するファイルやサンプリングの割り込み指定方法を、例えば「FJSAMP」などの環境変数で指定してもよいし、プロファイル取得関数のパラメータで指定してもよい。
前記ステップS7において、仮想記憶システム上で複数のプロセスが実行されている場合、実行中の全てのプロセスに対して割り込みが発生する。その場合、プロファイル取得ドライバは、図3に示すような処理を行い、プロファイリング対象プロセスのみのプログラムカウンタの値やハードウェアカウンタの値を収集する。
図3は、プロファイリング対象プロセスのみのサンプリング情報を収集する手順を示す説明図である。図3に示すように、プロファイリング対象範囲の実行中に割り込みが発生すると、プロファイル取得ドライバは、プログラムカウンタの値を取得する(ステップS11)。このときのプログラムカウンタの値を、サンプリングアドレスとする。そして、プロファイル取得ドライバは、割り込み発生時に実行していたプロセスの識別子であるプロセスidとプロファイリング対象プロセスのプロセスidとを比較し、実行中のプロセスがプロファイリング対象プロセスであるか否かを判断する(ステップS12)。プロセスidは、プロファイル取得関数によって取得され、プロファイル取得ドライバに渡される。プロセスidが等しければ、実行中のプロセスは、プロファイリング対象プロセスであり、プロセスidが異なっていれば、プロファイリング対象プロセスでない。
実行中のプロセスがプロファイリング対象プロセスである場合(ステップS12:Yes)、メモリ領域の、前記サンプリングアドレスに対応する割り込み発生回数に1を足して、割り込み発生回数を更新する。あるサンプリングアドレスでの最初の割り込みである場合には、該当するサンプリングアドレスがメモリ領域にないので、メモリ領域に、そのサンプリングアドレスとそのサンプリングアドレスでの割り込み発生回数とを対応付けて格納する領域を設定してから、割り込み発生回数を1にする(ステップS13)。そして、呼び出し元に復帰する。一方、実行中のプロセスがプロファイリング対象プロセスでない場合(ステップS12:No)、割り込み発生回数を更新しないで呼び出し元に復帰する。仮想記憶システム上の複数のプロセスで共用ライブラリを実行している場合も同様であり、プロセスidが一致する場合にのみ共用ライブラリのサンプリング情報を取得する。
図4は、メモリ領域のデータ構成を示す説明図である。図4に示すように、メモリ領域14には、割り込みが発生したときのサンプリングアドレス(割り込みアドレス)と、そのサンプリングアドレスで割り込みが発生した回数(割り込み回数)とが、命令ごとに対応付けられて格納される。
図2に戻り、前記プロファイリング対象プログラムの実行中にプロファイリング対象範囲の終了点に達すると、プロファイル取得関数ライブラリからプロファイルの測定を終了する関数を呼び出す。その関数は、メモリ領域に格納されているサンプリング情報を出力し、プロファイル情報ファイルを作成する(ステップS8)。その際、プロファイル取得関数は、図5に示すように、サンプリングアドレスがどのモジュール(共用ライブラリ含む)に属するアドレスであるかを判断する。そして、対応するモジュール先頭アドレスおよびモジュール先頭からの相対オフセットアドレスを求め、それらをモジュール単位でプロファイル情報ファイルに格納する。
図5は、サンプリングアドレスと対応するモジュールとの関係を示す説明図である。図5において、サンプリングアドレスに対応するモジュールのモジュール先頭アドレスは、システムロードマップ情報21から得られる。システムロードマップ情報21は、ロードモジュール管理情報にあり、システムがロードモジュール単位にメモリマップを行うときに作成される。図5に示す例では、実行形式ファイル(「a.out」)がシステムにロードされると、システムは、ロードしたモジュールのメモリ22内の配置アドレスを管理する。そして、この実行形式ファイル(「a.out」)の実行中に、プログラムカウンタの値がpc1であるときに割り込みが発生した場合、プロファイル情報ファイル18には、モジュール名「a.out」、メモリ22上のロードアドレス(モジュール先頭アドレスmap)、モジュール先頭からの相対アドレスmpc1(=pc1−map)および割り込み発生回数が格納される。共用ライブラリの場合も同様である。
また、同一のプロファイリング対象プログラムに対してプロファイリング処理を複数回、実行した場合、各回で取得した個々のプロファイル情報ファイルの、同一割り込みアドレスのサンプリング結果同士を加算して、複数のプロファイル情報ファイルを結合した新たなプロファイル情報ファイルを作成することができるようになっていてもよい。その場合には、例えば、結合用のコマンド(例えば、「frvprof−merge」とする)を用意しておけばよい。このコマンドを用いて、例えばプロファイル情報ファイルAとプロファイル情報ファイルBとを結合してプロファイル情報ファイルCを作成する場合には、「Frvprof−merge a b −o c」のように記述すればよい。
図2に戻り、ステップS8でプロファイル情報ファイルが作成されると、解析ツールは、図6に示すように、サンプリングアドレスがどのモジュール(共用ライブラリ含む)のどの関数に属するアドレスであるかを判断し、実行形式ファイルのシンボル情報と照らし合わせることによって、解析結果として、対応するモジュール名、関数名およびサンプリング情報を、高コスト関数、高コスト処理または高コスト命令ごとに表示する(ステップS9)。解析ツールは、プロファイル情報ファイルに格納されているサンプリングアドレスと関数との対応付けを、専用コマンド(例えば、「frvprof」コマンドと称する)によって行う。「frvprof」コマンドでは、コストを算出する対象であるロードモジュール名を明示的に指定できるようになっている。
図6は、解析ツールによる解析手順を示す説明図である。また、図7は、解析ツールによる解析処理を示す説明図である。図6および図7に示すように、解析処理が開始されると、解析ツール4は、例えばシンボル表示コマンド(「nm」コマンド)を内部的に起動するか、またはロードモジュールのシンボル参照用の関数(UNIXでは、elfアクセスライブラリ)を使用して、モジュール内のシンボル情報(例えば、関数Func1に対応するアドレスα)を取得する(ステップS21)。次いで、プロファイル情報ファイル18からモジュール内相対アドレス(例えば、mpc1)とそれに対応する割り込み回数を取得する(ステップS22)。次いで、モジュール内相対アドレス(例えば、mpc1)とモジュール内のシンボル情報(例えば、関数Func1に対応するアドレスα)とを照合し、対応する関数内での割り込み発生時のオフセットアドレス(プログラム位置)を求める。そして、プログラム位置とそれに対応する割り込み回数を2次元的または3次元的に表示し(ステップS23)、呼び出し元に復帰する。
解析ツール4は、関数ごとのコストや関数内の命令ごとの実行コストを、コスト順や定義順などの任意の順序で、コンピュータシステムのディスプレイに表示したり、プリンタにより印刷して出力することができる。以下に、解析結果の出力例を示すが、解析結果の出力形態はこれらの例に限られるものではない。
図8〜図10は、解析結果をテキスト形式で2次元的に表示した出力例を示す説明図である。図8に示す解析結果23は、共通ロードモジュール(「lib_sub.so」)の関数ごとのサンプリングカウント(割り込み回数)を、例えば降順で表示した例である。図8に示す例では、関数「FuncS」が全体のサンプリングカウントの10%を占めており、最も実行コストが高いことがわかる。図9に示す解析結果24は、プログラム全体でのロードモジュールごとのサンプリングカウント(割り込み回数)を表示した例である。図9に示す例では、「lib_sub.so」モジュールの実行コストがプログラム全体の90.3%を占めていることがわかる。図10に示す解析結果25は、指定した関数内での命令レベルの実行コストを表示した例である。図10に示す例では、関数「FuncT」内のアドレス2C命令の実行コストが関数全体の69.5%を占めることがわかる。なお、テキスト形式での出力に限らず、GUI(Graphical User Interface)を使用し、操作性を改善した手法で解析結果を出力するようにしてもよい。
図11は、解析結果をGUIで2次元的に表示した出力例を示す説明図である。図11に示す解析結果26は、GUIを使用して、図8に示す解析結果23と同様に、関数ごとのサンプリングカウント(割り込み回数)を、例えば降順で表示した例である。表示されたいずれかの関数を、例えばマウスのダブルクリック等の操作により選択すると、解析ツールは、その選択された関数内の命令について、さらに詳細な解析結果27を表示する。図11に示す解析結果27は、選択された関数内の命令ごとに実行コストを表示した例である。この解析結果27において、「関数内実行頻度グラフ」とある領域の横軸は関数内オフセットであり、縦軸はサンプリングカウント(割り込み回数)である。例えば、「関数内実行頻度グラフ」を見れば、黒帯線が表示されたアドレス近辺でアクセスコストが高いことがわかる。解析結果27に表示されたいずれかの命令位置を、例えばマウスのダブルクリック等の操作により照合すると、例えば、対応するCソースやアセンブラソースを処理するためのデバッガやエディタやツール等が起動する。これにより、ボトルネック箇所を特定することができるので、アプリケーションプログラムのチューニングを施すことが可能となる。また、上述した構成のターゲットシステムに上述したプロファイリング方法を適用して、データアクセス回数やデータ定義位置などのデータアクセスコストの情報を取得することができる。
図12は、データアクセスのサンプリング情報を収集する手順を示す説明図である。図12に示すように、プロファイリング対象範囲の実行中に割り込みが発生すると、プロファイル取得ドライバは、以下の処理を行う。まず、プログラムカウンタの値(サンプリングアドレス)を取得する(ステップS31)。次いで、プロファイル取得ドライバは、サンプリングアドレスに対応する命令を読み込み、その命令を解析する(ステップS32)。その命令がロード命令またはストア命令であるか否かを判断する(ステップS33)。ロード命令またはストア命令である場合(ステップS33:Yes)、その命令を逆アセンブルし、データの参照先またはデータの格納先に関する情報として、データの参照先またはデータの格納先を示すレジスタ番号と即値を取得する(ステップS34)。次いで、レジスタ番号に格納されているレジスタ値と、OSに格納されている割り込み発生時のレジスタ値とを参照して、データの参照先またはデータの格納先のメモリアドレスを求める。サンプリング情報が格納されるメモリ領域に、プロファイリング対象のデータ域相対オフセット(データアドレス)と、それに対応する割り込み回数の累積値を登録する(ステップS35)。そして、呼び出し元に復帰する。一方、ロード命令またはストア命令でない場合(ステップS33:No)、そのまま呼び出し元に復帰する。
図13は、メモリ領域に格納されたデータアクセスのサンプリング情報のデータ構成を示す説明図である。図13に示すように、メモリ領域14には、割り込みが発生したときのデータアドレスと、そのデータアドレスで割り込みが発生した回数(割り込み回数)とが対応付けられて格納される。データアクセスのサンプリング情報に基づいてプロファイル情報ファイルが作成される。解析ツールは、そのプロファイル情報ファイルに基づいて、図6に示す解析処理と同様の処理を行い、解析結果を出力する。図14に、データアクセスのサンプリング情報を含めた解析結果の一例を示す。
図14は、解析結果をグラフで3次元的に表示した出力例を示す説明図である。図14に示す解析結果28は、プログラムの実行コストを示す割り込みアドレス回数、関数単位や処理単位や命令単位でのプログラム位置、およびデータ定義位置やアクセスコスト等の割り込みデータアクセスに関する情報を3次元的に表示した例である。図14に示す例より、どのプログラム位置で、またどのデータアクセス位置で実行コストがかかっているか、ということがわかるので、性能向上や省電力を図るためのチューニングを適用することができる。
以上説明したように、本実施の形態によれば、OSの最小割り込み時間よりも短い間隔でサンプリング情報を収集することができるので、命令単位での細かいプロファイル情報を取得することができる。従って、命令単位でプログラムチューニングを行うことができるという効果を奏する。また、仮想記憶機構を備えたOS環境下で、プロファイリング対象プロセスが実行されているときにのみ、サンプリング情報を収集することができるので、プロファイリング対象プログラム(共用ライブラリを含む)のプロファイル情報のみを取得することができる。さらに、共用ライブラリに着目したプロファイル情報を取得することができるので、共用ライブラリに着目したプログラムチューニングを行うことができるという効果を奏する。また、OSの最小割り込み時間よりも短い間隔で、ハードウェアイベントに着目したプロファイル情報を取得することができる。また、OSの最小割り込み時間よりも短い間隔で、データアクセスのプロファイル情報を取得することができるので、例えば、高コスト変数のみを抽出して、CPU(Central Processing Unit)に内蔵されたRAM(Random Access Memory)などの高速メモリ領域に優先的にデータ配置するなど、メモリ階層を意識した配置を適用することが可能となる。
コンピュータシステムの性能向上や省電力化を図るため、得られたプロファイル情報に基づいて、次のようなチューニングを行うことができる。例えば、あるセクションをROM(Read Only Memory)からRAMへ配置することができる。データ域やスタック域やヒープ域などの特定の作業域をCPU内蔵RAMなどの高速域メモリ領域に配置することができる。特定の作業域をSDRAM(Synchronous Dynamic Random Access Memory)の別バンクへ配置することができる。特定の変数をレジスタ割り当てへ配置することができる。高コスト変数をCPUに常駐させてキャッシュロックすることができる。
なお、ハードウェアカウンタの任意のイベント発生時の状態をトリガとして、サンプリング情報を収集するようにしてもよい。例えば、ハードウェアカウンタのデータキャッシュミス発生イベントに着目すれば、キャッシュミスの発生した命令で割り込みが発生するので、キャッシュミスの命令を解析してキャッシュミスのアクセス先を解析することができる。その際、キャッシュミスが発生するたびに割り込みを発生させてサンプリング情報を収集してもよいし、キャッシュミスの発生回数が所定回数に達するたびに割り込みを発生させてサンプリング情報を収集するようにしてもよい。
また、本実施の形態で説明したプロファイリング方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、インターネット等のネットワークを介して配布することが可能な伝送媒体であってもよい。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)アプリケーションのソースプログラムにプロファイル取得関数の呼び出し命令を追加したソースコードを生成する第1ステップと、前記ソースコードにプロファイル取得関数ライブラリを結合して実行形式のプロファイリング対象プログラムを生成する第2ステップと、ターゲットシステムのオペレーティングシステム環境下で前記プロファイリング対象プログラムを実行し、前記プロファイル取得関数の呼び出し命令の実行によって前記プロファイル取得関数ライブラリ経由でプロファイル取得ドライバを呼び出し、割り込みの発生に基づいて前記プロファイル取得ドライバにより前記プロファイリング対象プログラムの実行状況に関するサンプリング情報を収集する第3ステップと、をコンピュータに実行させることを特徴とするプロファイリング方法。
(付記2)前記第3ステップの前に、前記ターゲットシステムに前記プロファイル取得ドライバを組み込むことを特徴とする付記1に記載のプロファイリング方法。
(付記3)前記第3ステップでは、仮想記憶システム上で複数のプロセスが実行される場合、前記割り込みの発生時にプロファイリング対象プロセスが実行されているときに前記サンプリング情報を収集することを特徴とする付記1または2に記載のプロファイリング方法。
(付記4)前記第3ステップでは、仮想記憶システム上で複数のプロセスが実行され、かつ共用ライブラリが実行される場合、前記割り込みの発生時にプロファイリング対象プロセスが実行されているときに共用ライブラリの実行状況に関する前記サンプリング情報を収集することを特徴とする付記1または2に記載のプロファイリング方法。
(付記5)前記第3ステップでは、前記プロファイル取得関数により指定されたプロファイリング対象範囲で、前記ターゲットシステムのプロセッサの内蔵タイマに基づいて、前記オペレーティングシステムのシステムタイマの単位時間よりも短い時間で前記割り込みを発生し、前記割り込みによって前記サンプリング情報を収集することを特徴とする付記1〜4のいずれか一つに記載のプロファイリング方法。
(付記6)前記第3ステップでは、前記プロファイル取得関数により指定されたプロファイリング対象範囲で、前記ターゲットシステムのプロセッサのハードウェアカウンタに基づいて前記割り込みを発生し、前記割り込みによって前記サンプリング情報を収集することを特徴とする付記1〜4のいずれか一つに記載のプロファイリング方法。
(付記7)収集された前記サンプリング情報およびハードウェアイベント情報を、命令ごとに対応付けた領域に実行回数として設定することを特徴とする付記1〜6のいずれか一つに記載のプロファイリング方法。
(付記8)収集された前記サンプリング情報およびデータアクセスに関する情報を、命令ごとに対応付けた領域に実行回数として設定することを特徴とする付記1〜6のいずれか一つに記載のプロファイリング方法。
(付記9)前記サンプリング情報として収集された割り込みアドレス、前記割り込みアドレスの割り込み発生回数、およびオペレーティングシステム情報から収集したモジュールのロードアドレス情報と、前記プロファイリング対象プログラムまたは共用ライブラリのシンボル情報とを照合することを特徴とする付記1〜8のいずれか一つに記載のプロファイリング方法。
(付記10)前記サンプリング情報として収集された割り込みアドレス、ハードウェアイベント発生回数、およびオペレーティングシステム情報から収集したモジュールのロードアドレス情報と、前記プロファイリング対象プログラムまたは共用ライブラリのシンボル情報とを照合することを特徴とする付記1〜8のいずれか一つに記載のプロファイリング方法。
(付記11)前記サンプリング情報として収集された割り込みアドレス、データアクセスに関する情報、およびオペレーティングシステム情報から収集したモジュールのロードアドレス情報と、前記プロファイリング対象プログラムまたは共用ライブラリのシンボル情報とを照合することを特徴とする付記1〜8のいずれか一つに記載のプロファイリング方法。
(付記12)前記サンプリング情報、ハードウェアイベント情報およびデータアクセスに関する情報をマージすることを特徴とする付記1〜11のいずれか一つに記載のプロファイリング方法。
(付記13)プロファイル取得関数の呼び出し命令が埋め込まれ、かつプロファイル取得関数ライブラリが結合された実行形式のプロファイリング対象プログラムを、ターゲットシステムのオペレーティングシステム環境下で実行する第1ステップと、前記プロファイル取得関数の呼び出し命令の実行によって前記プロファイル取得関数ライブラリ経由でプロファイル取得ドライバを呼び出す第2ステップと、割り込みの発生に基づいて前記プロファイル取得ドライバを介して前記プロファイリング対象プログラムの実行状況に関するサンプリング情報を収集する第3ステップと、をコンピュータに実行させることを特徴とするプロファイリングプログラム。
(付記14)前記第3ステップでは、仮想記憶システム上で複数のプロセスが実行される場合、前記割り込みの発生時にプロファイリング対象プロセスが実行されているときに前記サンプリング情報を収集することを特徴とする付記13に記載のプロファイリングプログラム。
(付記15)前記第3ステップでは、仮想記憶システム上で複数のプロセスが実行され、かつ共用ライブラリが実行される場合、前記割り込みの発生時にプロファイリング対象プロセスが実行されているときに共用ライブラリの実行状況に関する前記サンプリング情報を収集することを特徴とする付記13に記載のプロファイリングプログラム。
(付記16)前記第3ステップでは、前記プロファイル取得関数により指定されたプロファイリング対象範囲で、前記ターゲットシステムのプロセッサの内蔵タイマに基づいて、前記オペレーティングシステムのシステムタイマの単位時間よりも短い時間で前記割り込みを発生し、前記割り込みによって前記サンプリング情報を収集することを特徴とする付記13〜15のいずれか一つに記載のプロファイリングプログラム。
(付記17)前記第3ステップでは、前記プロファイル取得関数により指定されたプロファイリング対象範囲で、前記ターゲットシステムのプロセッサのハードウェアカウンタに基づいて前記割り込みを発生し、前記割り込みによって前記サンプリング情報を収集することを特徴とする付記13〜15のいずれか一つに記載のプロファイリングプログラム。
実施の形態にかかるプロファイリング方法を適用したコンピュータシステムの構成を示す説明図である。 実施の形態にかかるプロファイリング方法の処理手順を示す説明図である。 プロファイリング対象プロセスのみのサンプリング情報を収集する手順を示す説明図である。 メモリ領域に格納されたサンプリング情報のデータ構成を示す説明図である。 サンプリングアドレスと対応するモジュールとの関係を示す説明図である。 解析ツールによる解析手順を示す説明図である。 解析ツールによる処理を示す説明図である。 解析結果をテキスト形式で2次元的に表示した出力例を示す説明図である。 解析結果をテキスト形式で2次元的に表示した別の出力例を示す説明図である。 解析結果をテキスト形式で2次元的に表示したさらに別の出力例を示す説明図である。 解析結果をGUIで2次元的に表示した出力例を示す説明図である。 データアクセスのサンプリング情報を収集する手順を示す説明図である。 メモリ領域に格納されたデータアクセスのサンプリング情報のデータ構成を示す説明図である。 解析結果をグラフで3次元的に表示した出力例を示す説明図である。
符号の説明
1 プロファイリング対象プログラム
2 OS
3 プロセッサ
12 プロファイル取得関数ライブラリ
13 プロファイル取得ドライバ
15 内蔵タイマ
17 ハードウェアカウンタ

Claims (9)

  1. アプリケーションのソースプログラムにプロファイル取得関数の呼び出し命令を追加したソースコードを生成する第1ステップと、
    前記ソースコードにプロファイル取得関数ライブラリを結合して実行形式のプロファイリング対象プログラムを生成する第2ステップと、
    ターゲットシステムのオペレーティングシステム環境下で前記プロファイリング対象プログラムを実行し、前記プロファイル取得関数の呼び出し命令の実行によって前記プロファイル取得関数ライブラリ経由でプロファイル取得ドライバを呼び出し、割り込みの発生に基づいて前記プロファイル取得ドライバにより前記プロファイリング対象プログラムの実行状況に関するサンプリング情報を収集する第3ステップと、
    をコンピュータに実行させることを特徴とするプロファイリング方法。
  2. 前記第3ステップの前に、前記ターゲットシステムに前記プロファイル取得ドライバを組み込むことを特徴とする請求項1に記載のプロファイリング方法。
  3. 前記第3ステップでは、仮想記憶システム上で複数のプロセスが実行される場合、前記割り込みの発生時にプロファイリング対象プロセスが実行されているときに前記サンプリング情報を収集することを特徴とする請求項1または2に記載のプロファイリング方法。
  4. 前記第3ステップでは、仮想記憶システム上で複数のプロセスが実行され、かつ共用ライブラリが実行される場合、前記割り込みの発生時にプロファイリング対象プロセスが実行されているときに共用ライブラリの実行状況に関する前記サンプリング情報を収集することを特徴とする請求項1または2に記載のプロファイリング方法。
  5. 前記第3ステップでは、前記プロファイル取得関数により指定されたプロファイリング対象範囲で、前記ターゲットシステムのプロセッサの内蔵タイマに基づいて、前記オペレーティングシステムのシステムタイマの単位時間よりも短い時間で前記割り込みを発生し、前記割り込みによって前記サンプリング情報を収集することを特徴とする請求項1〜4のいずれか一つに記載のプロファイリング方法。
  6. プロファイル取得関数の呼び出し命令が埋め込まれ、かつプロファイル取得関数ライブラリが結合された実行形式のプロファイリング対象プログラムを、ターゲットシステムのオペレーティングシステム環境下で実行する第1ステップと、
    前記プロファイル取得関数の呼び出し命令の実行によって前記プロファイル取得関数ライブラリ経由でプロファイル取得ドライバを呼び出す第2ステップと、
    割り込みの発生に基づいて前記プロファイル取得ドライバを介して前記プロファイリング対象プログラムの実行状況に関するサンプリング情報を収集する第3ステップと、
    をコンピュータに実行させることを特徴とするプロファイリングプログラム。
  7. 前記第3ステップでは、仮想記憶システム上で複数のプロセスが実行される場合、前記割り込みの発生時にプロファイリング対象プロセスが実行されているときに前記サンプリング情報を収集することを特徴とする請求項6に記載のプロファイリングプログラム。
  8. 前記第3ステップでは、仮想記憶システム上で複数のプロセスが実行され、かつ共用ライブラリが実行される場合、前記割り込みの発生時にプロファイリング対象プロセスが実行されているときに共用ライブラリの実行状況に関する前記サンプリング情報を収集することを特徴とする請求項6に記載のプロファイリングプログラム。
  9. 前記第3ステップでは、前記プロファイル取得関数により指定されたプロファイリング対象範囲で、前記ターゲットシステムのプロセッサの内蔵タイマに基づいて、前記オペレーティングシステムのシステムタイマの単位時間よりも短い時間で前記割り込みを発生し、前記割り込みによって前記サンプリング情報を収集することを特徴とする請求項6〜8のいずれか一つに記載のプロファイリングプログラム。
JP2008245787A 2008-09-25 2008-09-25 プロファイリング方法およびプロファイリングプログラム Expired - Fee Related JP5386905B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008245787A JP5386905B2 (ja) 2008-09-25 2008-09-25 プロファイリング方法およびプロファイリングプログラム
US12/542,325 US8549505B2 (en) 2008-09-25 2009-08-17 Profiling method, system, and recording medium having a profiling program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008245787A JP5386905B2 (ja) 2008-09-25 2008-09-25 プロファイリング方法およびプロファイリングプログラム

Publications (2)

Publication Number Publication Date
JP2010079508A true JP2010079508A (ja) 2010-04-08
JP5386905B2 JP5386905B2 (ja) 2014-01-15

Family

ID=42038918

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008245787A Expired - Fee Related JP5386905B2 (ja) 2008-09-25 2008-09-25 プロファイリング方法およびプロファイリングプログラム

Country Status (2)

Country Link
US (1) US8549505B2 (ja)
JP (1) JP5386905B2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102722432A (zh) * 2011-03-29 2012-10-10 国际商业机器公司 追踪内存访问的方法和装置
KR101569142B1 (ko) * 2014-11-18 2015-11-13 성균관대학교산학협력단 프로그램의 최적화 실행을 위한 장치 및 방법
KR20160066291A (ko) * 2014-12-02 2016-06-10 한국전자통신연구원 프로세스 행위 프로파일 생성 장치 및 방법
JP2016224814A (ja) * 2015-06-02 2016-12-28 富士通株式会社 性能情報生成プログラム、性能情報生成方法及び情報処理装置

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4681491B2 (ja) * 2006-03-31 2011-05-11 富士通株式会社 プロファイリングプログラムおよびプロファイリング方法
US8726258B2 (en) * 2011-04-14 2014-05-13 Phoenix Technologies Ltd. Supporting multiple hardware components in UEFI
US9880916B2 (en) * 2012-09-25 2018-01-30 International Business Machines Corporation Management of system events using one or more event attributes
US8954546B2 (en) * 2013-01-25 2015-02-10 Concurix Corporation Tracing with a workload distributor
US9323863B2 (en) 2013-02-01 2016-04-26 Microsoft Technology Licensing, Llc Highlighting of time series data on force directed graph
US9256969B2 (en) 2013-02-01 2016-02-09 Microsoft Technology Licensing, Llc Transformation function insertion for dynamically displayed tracer data
US20130283281A1 (en) 2013-02-12 2013-10-24 Concurix Corporation Deploying Trace Objectives using Cost Analyses
US8997063B2 (en) 2013-02-12 2015-03-31 Concurix Corporation Periodicity optimization in an automated tracing system
US8843901B2 (en) 2013-02-12 2014-09-23 Concurix Corporation Cost analysis for selecting trace objectives
US9021447B2 (en) 2013-02-12 2015-04-28 Concurix Corporation Application tracing by distributed objectives
US8924941B2 (en) 2013-02-12 2014-12-30 Concurix Corporation Optimization analysis using similar frequencies
US20130227529A1 (en) 2013-03-15 2013-08-29 Concurix Corporation Runtime Memory Settings Derived from Trace Data
US9575874B2 (en) 2013-04-20 2017-02-21 Microsoft Technology Licensing, Llc Error list and bug report analysis for configuring an application tracer
US8990777B2 (en) 2013-05-21 2015-03-24 Concurix Corporation Interactive graph for navigating and monitoring execution of application code
US9734040B2 (en) 2013-05-21 2017-08-15 Microsoft Technology Licensing, Llc Animated highlights in a graph representing an application
US9280841B2 (en) 2013-07-24 2016-03-08 Microsoft Technology Licensing, Llc Event chain visualization of performance data
US9292415B2 (en) 2013-09-04 2016-03-22 Microsoft Technology Licensing, Llc Module specific tracing in a shared module environment
EP3069267A4 (en) 2013-11-13 2017-09-27 Microsoft Technology Licensing, LLC Software component recommendation based on multiple trace runs
CN105765528B (zh) 2013-11-13 2019-09-24 微软技术许可有限责任公司 具有可配置原点定义的应用执行路径跟踪的方法、系统和介质
US9342283B2 (en) * 2014-02-12 2016-05-17 Facebook, Inc. Profiling binary code based on density
JP6693308B2 (ja) * 2016-07-05 2020-05-13 富士通株式会社 負荷推定プログラム、負荷推定方法及び負荷推定装置
US10809985B2 (en) 2017-03-09 2020-10-20 Microsoft Technology Licensing, Llc Instrumenting program code
US10853041B2 (en) * 2017-03-09 2020-12-01 Microsoft Technology Licensing, Llc Extensible instrumentation
CN111881210B (zh) * 2020-06-29 2022-08-26 平安国际智慧城市科技股份有限公司 数据同步方法、装置、内网服务器及介质
CN114020607B (zh) * 2021-10-26 2024-02-13 苏州浪潮智能科技有限公司 Bmc调试方法、装置及计算机设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08147199A (ja) * 1994-11-18 1996-06-07 Fujitsu Ltd プロセス実行情報採取装置
JP2007233855A (ja) * 2006-03-02 2007-09-13 Fujitsu Ltd 性能チューニング方法及び装置、プログラム及び記憶媒体
JP2007272692A (ja) * 2006-03-31 2007-10-18 Fujitsu Ltd プロファイリングプログラムおよびプロファイリング方法
JP2008210011A (ja) * 2007-02-23 2008-09-11 Fujitsu Ltd プロファイリング装置およびプロファイリングプログラム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6026234A (en) * 1997-03-19 2000-02-15 International Business Machines Corporation Method and apparatus for profiling indirect procedure calls in a computer program
US6202205B1 (en) * 1998-07-21 2001-03-13 Hewlett-Packard Company System and method for profile-based, on-the-fly optimization of library code
US7194732B2 (en) * 2003-06-26 2007-03-20 Hewlett-Packard Development Company, L.P. System and method for facilitating profiling an application
US8214806B2 (en) * 2007-05-09 2012-07-03 International Business Machines Corporation Iterative, non-uniform profiling method for automatically refining performance bottleneck regions in scientific code

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08147199A (ja) * 1994-11-18 1996-06-07 Fujitsu Ltd プロセス実行情報採取装置
JP2007233855A (ja) * 2006-03-02 2007-09-13 Fujitsu Ltd 性能チューニング方法及び装置、プログラム及び記憶媒体
JP2007272692A (ja) * 2006-03-31 2007-10-18 Fujitsu Ltd プロファイリングプログラムおよびプロファイリング方法
JP2008210011A (ja) * 2007-02-23 2008-09-11 Fujitsu Ltd プロファイリング装置およびプロファイリングプログラム

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102722432A (zh) * 2011-03-29 2012-10-10 国际商业机器公司 追踪内存访问的方法和装置
KR101569142B1 (ko) * 2014-11-18 2015-11-13 성균관대학교산학협력단 프로그램의 최적화 실행을 위한 장치 및 방법
KR20160066291A (ko) * 2014-12-02 2016-06-10 한국전자통신연구원 프로세스 행위 프로파일 생성 장치 및 방법
KR102128047B1 (ko) 2014-12-02 2020-06-29 한국전자통신연구원 프로세스 행위 프로파일 생성 장치 및 방법
JP2016224814A (ja) * 2015-06-02 2016-12-28 富士通株式会社 性能情報生成プログラム、性能情報生成方法及び情報処理装置

Also Published As

Publication number Publication date
JP5386905B2 (ja) 2014-01-15
US20100077388A1 (en) 2010-03-25
US8549505B2 (en) 2013-10-01

Similar Documents

Publication Publication Date Title
JP5386905B2 (ja) プロファイリング方法およびプロファイリングプログラム
EP1702269B1 (en) Dynamic performance monitoring-based approach to memory management
Ottoni et al. Optimizing function placement for large-scale data-center applications
US8490061B2 (en) Profiling application performance according to data structure
US7661035B2 (en) Method and system for instruction tracing with enhanced interrupt avoidance
US8191049B2 (en) Method and apparatus for maintaining performance monitoring structures in a page table for use in monitoring performance of a computer program
JP2749528B2 (ja) エラー解析用のトレーサシステム
CA2672337C (en) Compiler instrumentation infrastructure to facilitate multiple pass and multiple purpose dynamic analysis
US8196116B2 (en) Tracing objects in object-oriented programming model
JP5326374B2 (ja) プロセッサ、性能プロファイリング装置、性能プロファイリングプログラムおよび性能プロファイリング方法
JP2013033412A (ja) メモリ管理方法、プログラム及びシステム
JP2015519646A (ja) マルチテナント型アプリケーション・ドメイン及びメモリの管理を伴う修正されたjvm
Zheng et al. Accurate profiling in the presence of dynamic compilation
JP5719278B2 (ja) 情報処理装置、プロファイル対象決定プログラム及び方法
US9959191B2 (en) Dynamic library profiling method and dynamic library profiling system
Itzkowitz et al. Hpc profiling with the sun studio™ performance tools
US20080040407A1 (en) Identification of a cause of an allocation failure in a java virtual machine
Szegedi et al. Dynamic slicing of Java bytecode programs
EP3635561B1 (en) Asynchronous operation query
US8261245B2 (en) Method and system for associating profiler data with a reference clock
Bergel et al. Visualizing dynamic metrics with profiling blueprints
JP5525658B2 (ja) 計算機、リソース使用量計算方法及びリソース使用量計算プログラム
JP2009064125A (ja) サーバ装置、そのプログラム
JP2008123438A (ja) コンピュータシステム、プログラム情報収集方法、およびコンピュータプログラム
JP2009223841A (ja) 命令ログ取得プログラム及び仮想計算機システム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110502

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20121017

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121106

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121227

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20130521

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130816

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20130826

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130923

R150 Certificate of patent or registration of utility model

Ref document number: 5386905

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees