JP5278901B2 - 頻繁に発生するイベントを推定する方法 - Google Patents

頻繁に発生するイベントを推定する方法 Download PDF

Info

Publication number
JP5278901B2
JP5278901B2 JP2008273732A JP2008273732A JP5278901B2 JP 5278901 B2 JP5278901 B2 JP 5278901B2 JP 2008273732 A JP2008273732 A JP 2008273732A JP 2008273732 A JP2008273732 A JP 2008273732A JP 5278901 B2 JP5278901 B2 JP 5278901B2
Authority
JP
Japan
Prior art keywords
events
event
grouping
objects
class
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
JP2008273732A
Other languages
English (en)
Other versions
JP2010102525A (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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2008273732A priority Critical patent/JP5278901B2/ja
Publication of JP2010102525A publication Critical patent/JP2010102525A/ja
Application granted granted Critical
Publication of JP5278901B2 publication Critical patent/JP5278901B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Description

本発明は、プロセッサ内のイベント配置を最適化する方法に関し、特にコンピュータを用いて離散的なイベントサンプルに基づいて時間的に連続して頻繁に発生するイベントを推定する方法に関する。
従来、Java(登録商標)等のオブジェクト指向言語においては、一般に小さなオブジェクトを多数生成するために、これらのうち同時にアクセスされる複数のオブジェクトを同じキャッシュラインに入るように配置する、もしくはメモリのプリフェッチ命令を用いることで性能を向上することが知られている(非特許文献1−3)。最近のプロセッサの多くは、メモリアクセスやキャッシュミス等のプロセッサ内のイベントが発生した際に、例えば1000回ごと等の一定の頻度でサンプルを取るパフォーマンスモニタ機能を備えている。該機能を用いることにより、動的な情報を低いオーバーヘッドで取得することが可能になる。
また、従来、特徴的なイベントの発生回数等を発生後にカウントして記憶する装置が知られている(特許文献1)。この装置によれば、情報処理装置等はプログラム性能に影響を及ぼすイベントを効率的に記憶できるとしている。
特開2008−186080号公報 Wen-Ke Chenら、"Profile-guided Proactive Garbage Collection for Locality Optimization"、Programming Language Design and Implementation(PLDI) 2006 Ottawa Canada、June 10-16、2006 Ali-Reza Adl-Tabatabaiら、"Prefetch Injection Based on Hardware Monitoring and Object Metadata"、PLDI 2004 Washington D.C. USA、June 9-11、2004 Florian T. Schneiderら、"Online Optimizations Driven by Hardware Performance Monitoring"、PLDI 2007、San Diego CA USA、June 10-13、2007
しかし、従来技術に係るパフォーマンスモニタ機能においては、集めた情報は連続したメモリアクセス履歴ではなく離散的なサンプルであり、同時にアクセスされるオブジェクトの検出のためにはそのままでは使用できない。例えば、パフォーマンスモニタ機能により集めたサンプルを使用してプリフェッチ命令の挿入やオブジェクトの配置の最適化を行うには、短時間の内に連続してアクセスされるオブジェクトを判別する必要がある。従って、従来は、ソースコードの静的解析による手法や、コンパイラを用いてメモリアクセスの履歴を取得するコードを生成し、動的に情報を得ていた。しかし、これらの方法は処理時間、メモリ容量の点でオーバーヘッドが大きい点が課題である。特に、コンパイラを用いる方法では、イベントが起きた命令アドレスからソースコード又はバイトコードの該当位置を見つけるために、コンパイル時に追加のデバッグ情報が必要になるという課題がある。また、イベント発生後に回数等をカウントする装置等では、事前にキャッシュミス等のイベント発生を推定するための方法は示されていない。
本発明は、プロセッサのパフォーマンスモニタ機能により収集されたイベントの離散的なサンプルから、キャッシュミス等の短時間の間に頻繁に連続して発生する複数のイベントの組み合わせを、静的解析によらずに特定することにより、推定して検出することを可能にする方法を提供することを目的とする。
本発明は、上記課題に鑑み、以下のような解決手段を提供する。
本発明に係る、頻繁に発生するイベントを推定する方法においては、パフォーマンスモニタを使用してイベントの起こった命令アドレスの情報、及び必要な場合にはイベントの詳細についての付加情報についてサンプルを集め、そこから頻繁に短時間で連続して発生するイベントの組み合わせを以下の手順により特定し、短時間に連続して発生しているイベントの組み合わせであることを推定する。
手順1:イベントを、メソッドやベーシックブロック等の特定の命令アドレスの範囲ごとにグループ分けする。
手順2:グループごとにイベントの統計処理を行い、一定の閾値以上の頻度で発生するイベント(以下、頻出イベントと表記)を抽出する。
手順3:手順2で抽出された頻出イベント同士は短時間に連続して発生しているものとして特定される。
さらに、本発明に係る方法においては、より詳細にイベントの組み合わせを推定するために、次のような動作を追加し得る。これらにより、短時間で連続してキャッシュミスを起こすオブジェクトの組み合わせを推定し得る。
手順4:イベント又はオブジェクトの組み合わせを推定する方法だけからでは、複数のイベントが偶然に同じ範囲で発生している場合を誤って見つけてしまう場合があるため、このような誤判定を減らすために、さらにオブジェクト間の参照関係の情報を使用する。
手順5:イベント又はオブジェクトの組み合わせの推定において、命令アドレスの範囲に加えてヒープの種類によりグループ分けを実施し、これにより実際にオブジェクト配置の最適化等が可能な組み合わせだけに制限して推定する。ヒープの種類としては、例えば新世代領域(nursery)と旧世代領域(tenure)との区別等を用い得る。
本発明に係る方法は、オブジェクト指向言語を用いるプログラミング、プログラム開発環境、又はこれらの関連技術等の、既存の技術と組み合わせることができ、そのように組み合わせた技術もまた、本発明の技術範囲に含まれる。同様に、本発明の技法を含む方法又はプログラミング環境等を含む開発システム等も、本発明の技術範囲に含まれる。さらに、本発明の技法は、頻出イベントを推定するための方法の諸段階を、FPGA(現場でプログラム可能なゲートアレイ)、ASIC(特定用途向け集積回路)、これらと同等のハードウェアロジック素子、プログラム可能な集積回路、又はこれらの組み合わせが記憶し得るプログラムの形態、すなわちプログラム製品として提供し得る。具体的には、データ入出力、データバス、メモリバス、システムバス等を備えるカスタムLSI(大規模集積回路)の形態として、本発明に係る頻出イベントを推定する方法の実施手段、デバイス、組み込み装置等を提供でき、そのように集積回路に記憶されたプログラム製品の形態も、本発明の技術範囲に含まれる。
本発明によれば、プロセッサのパフォーマンスモニタ機能により収集されたイベントの離散的なサンプルから、キャッシュミス等の頻繁に短時間で連続して発生する複数のイベントの組み合わせを、静的解析によらずに検出することが可能になる。
以下、本発明の実施形態について図を参照しながら説明する。なお、これらはあくまでも一例であって、本発明の技術的範囲はこれらに限られるものではない。
図1に、本発明の一実施形態に係る、頻繁に発生するイベントを推定する方法の全体のフロー図を示す。一実施形態において、本発明に係る方法は、次の手順を用いる。
S100:パフォーマンスモニタを使用してイベントの起こった命令アドレスの情報、及び必要な場合にはイベントの詳細についての付加情報についてサンプルを集める。
S110:イベントを、メソッドやベーシックブロック等の特定の命令アドレスの範囲ごとにグループ分けする。
S120:グループごとにイベントの統計処理を行い、一定の閾値以上の頻度で発生するイベント(頻出イベント)を抽出する。
S130:抽出された頻出イベントは短時間に連続して発生しているイベントとして特定される。
すなわち、本発明に係る方法は、ステップ(S110)からステップ(S130)を用いて、頻繁に短時間で連続して発生するイベントの組み合わせを特定し、特定したイベントの組み合わせは短時間に連続して発生していることを推定し得る。
図2に、本発明の一実施形態に係る、短時間で連続してキャッシュミスを起こすオブジェクトの組み合わせを推定する手順のフロー図を示す。一実施形態において、本発明に係る方法は、次の手順を用いる。
S200:パフォーマンスモニタを使用してキャッシュミスの起こった命令アドレス及びその際にアクセスしようとした参照先のオブジェクト及びフィールドについてのサンプルを集める。
S210:キャッシュミスイベントを特定の命令アドレスの範囲(例えば、メソッド)ごとにグループ分けする。
S220:グループごとにイベントの統計処理を行い、一定の閾値以上のキャッシュミスを起こすフィールド(以下、頻出フィールドと表記)及びオブジェクトのクラス(以下、頻出クラスと表記)を抽出する。
S230:複数の頻出クラスがある場合には、それらのオブジェクトの組み合わせは連続してキャッシュミスを起こすものであると特定される。同様に、頻出フィールドを複数含むクラスがある場合には、これらのフィールドは連続してキャッシュミスを起こすものであると特定される。
すなわち、本発明に係る方法においては、図1を用いて示した頻繁に発生するイベントを推定する方法に加えて、図2に示したオブジェクトの組み合わせを推定する方法を用い得る。これにより、本発明に係る方法は、より詳細にイベントの組み合わせを推定するための動作を実施し得る。
図2に示す手順によれば、連続してキャッシュミスを起こすオブジェクトの組み合わせ及び連続してキャッシュミスを起こすフィールドを特定し得る。これらの情報に従って、本発明に係る方法においては、連続してキャッシュミスを起こすものとして特定されたオブジェクトの組はメモリ内で同じキャッシュラインに入るように、アロケーション又はガベージコレクション(GCと略称)の際に配置したり、頻出フィールドを複数含むクラスのオブジェクトはキャッシュラインの境界をまたがないように配置することが望ましいという情報を、統計処理を用いて自動的に生成することが可能になる。従って、本発明に係る方法を用いることにより、離散的なイベントサンプルに基づいて、頻繁に発生するイベントを推定し、当該推定の情報を用いてメモリ内でのオブジェクトの配置を最適化することで、プログラム性能の向上が計れる。
本発明に係る方法においては、上述のステップ(S210)に示したように、イベントサンプルの統計処理の前に、命令アドレスの範囲(例えばメソッド)ごとに分割し、それぞれを独立に統計処理することに特徴がある。これにより短い命令アドレスの範囲で発生するイベントは、時間的にも近いタイミングで発生していると判定し得る。換言すれば、本発明に係る方法においては、命令アドレスの空間的に限られた範囲において特定のイベントが発生することの情報を用い、当該情報に基づいて、特定のイベントが短時間で連続して発生しているイベントであると推測する。この理由は、離散的なサンプルからは、論理的には、特定のイベント発生が短時間で連続しているという時間的な情報が得られないためである。
本発明に係る方法における、このような推測は、プログラム全体の実行時間の内、ある命令アドレスの範囲(メソッド)の実行は時間的に連続しているという仮定に基づいている。しかしながら、この仮定は、あるメソッドが多数のコンテキストで呼び出される状況(単純なsetter/getter等)においては成り立たなくなる場合がある。ただし、そのような単純なメソッドはインライン展開される場合がほとんどであるため、インライン展開の最適化が行われた後でサンプリングを行うことで解決可能である。
前述のステップ(S110)において命令アドレスの範囲ごとに区分けを行うために、命令アドレスと範囲(例えばメソッド)の対応関係のマップが必要になる場合がある。しかし、これは既存技術で必要になる命令アドレスからソースコードやバイトコードへの情報に比べれば非常に小さくて済む。
上述の処理手順の処理量を減らすために、ステップ(S120)以降の処理を行う際に、範囲内のサンプル数が一定の閾値を超えたものだけを対象とすることで、それ以外の範囲でのサンプルについての処理を省略することができる。
上述の記載はキャッシュミスを例として使用したが、本発明に係る方法は他のイベントに対しても適用可能である。
図3に、本発明の一実施形態に係る、オブジェクト間の参照関係の情報を使用する手順のフロー図を示す。キャッシュミスイベントを例として、本発明に係る方法は、次のような手順を用いる。
S310:キャッシュミスイベントを特定の命令アドレスの範囲(例えばメソッドやベーシックブロック)ごとにグループ分けする。
S320:グループごとにイベントの統計処理を行い、その範囲内で一定の閾値以上の回数のキャッシュミスを起こすクラス(以下、頻出クラスと表記)を抽出する。
S330:キャッシュミスを起こしたオブジェクトの内、頻出クラスのインスタンスであるものについて、そこから参照されているオブジェクトを調べ、頻出クラスのオブジェクトが存在した場合には、参照元クラスと参照先クラスの組み合わせごとに出現した回数を記録する。
S340:ここで生成した参照元クラスと参照先クラスの組み合わせの内、出現回数がある閾値を越えたものは、短時間で連続してアクセスされるオブジェクトであると特定される。
図3に示した手順は、上述の図1及び図2に示した方法において、複数のイベントが偶然に同じ範囲で発生している場合を誤って見つけてしまう場合等の、誤判定を減らすために用い得る。この手順においては、ステップ(S310)において命令アドレスの範囲を区切り、範囲ごとにサンプルの統計処理を行うことに加え、オブジェクト同士が参照関係で結ばれているという情報を使用する。このようにすることにより、推定の精度を上げることが可能である。
本発明に係る方法においては、ステップ(S310)においてグループ分けを行う際、及びステップ(S330)においてオブジェクト間の参照関係を調べる際に、命令アドレスの範囲に加えてヒープの種類に基づいてグループ分けを行うことにより、実際にオブジェクト配置の最適化等が可能な組み合わせだけに参照関係の分析を制限することができる。例えば、ヒープとしては、新世代領域(nursery)と旧世代領域(tenure)の区別等を用いることができる。従って、例えば、nursery領域にあるオブジェクトとtenure領域にあるオブジェクトとは、既存のGCの処理の中では同じキャッシュライン上に乗るように移動することが容易ではないため、ヒープの種類に基づいてサンプルを分類して処理することで、このような組み合わせが検出されないようにすることが可能である。
同様に、本発明に係る方法においては、ステップ(S320)において参照先クラスによってグループ分けを行う際に、さらに参照先アドレスのオブジェクト内でのオフセットやキャッシュミスを起こした命令アドレスを用いて、さらに細かく分類してもよい。
(実施例1)
本発明に係る方法を用い、キャッシュミスを連続で起こす複数オブジェクトの組み合わせを推定する例を示す。例えば、パフォーマンスモニタでのキャッシュミスのサンプリング結果が、次の表のようになった場合について説明する。
Figure 0005278901
この例を処理すると、まずmethod1については、4種類のクラスへのアクセスでキャッシュミスを起こしているが、前述のステップ(S120)で使う閾値を10%とすると、classA、classB、classDが頻出クラスとなる。ここで、実際にキャッシュミスを起こしたこれらのクラスのオブジェクトの中で参照しているオブジェクトについて調べる。例えば、サンプリングされたclassAのオブジェクトからはclassB、classCのオブジェクトが多く参照されていたとすると、classBも頻出クラスであるため、classAとclassBの組み合わせが、同時にアクセスされるオブジェクトとして特定される。method2やmethod3についても同様に処理を行うが、頻出クラスが複数含まれないので候補は存在しない。
これらの処理のために、上記のような表を作る前に、キャッシュミスの起きたメソッドだけをまず調査し、その時点でメソッドごとのキャッシュミスがある閾値に達していない場合には、参照先オブジェクトのクラスを調べる処理や、それによるクラスごとのミス数の統計処理を省略してもよい。特に参照先アドレスからオブジェクトヘッダを発見しクラスに解決するためには無視できない処理量が必要であるため、これを省略できることは計測のオーバーヘッド削減に効果がある。上の例では例えば、method1では45%、method2では5%、method3では20%のキャッシュミスが起きている。ここで閾値を15%とすると、method2は処理対象から除外され、このmethod2及びothersの中で起きたキャッシュミスについては、参照先オブジェクトの調査は行わなくてよい。
上記の例で、範囲(ここではメソッド)ごとに分けて処理を行わない場合を考える。例えば、classAはclassBのオブジェクト又はclassCのオブジェクトを参照する事があるとする。すると、classA、classB、classCは、平均的には多くキャッシュミスを起こすので、メソッドごとに分けずに全体を平均して扱うと、連続してキャッシュミスを起こさないため効果が期待できないclassAとclassCとの組み合わせを最適化の候補としてしまう事があり得る。
(実施例2)
本発明に係る方法を用い、キャッシュミスを連続で起こす複数フィールドを推定する場合について説明する。例えば、パフォーマンスモニタでのキャッシュミスのサンプリング結果が、次の表のようになったとする。
Figure 0005278901
複数のオブジェクトの場合と同様に、methodごとに分けて処理を行う。例えば、classAではオフセットが8バイトと32バイトの二カ所で多くキャッシュミスが起きている。このような場合には、頻繁にアクセスされるclassAのオブジェクトがキャッシュライン境界をまたいでしまっているために、1つのオブジェクトへのアクセスが複数のキャッシュミスを起こしている可能性がある。そこで、classAのオブジェクトがキャッシュライン境界をまたがないように配置することにより、キャッシュミスを削減することができる。ただし、同じクラスの異なるオブジェクトがmethod1の中でキャッシュミスを起こしている場合にもこのようなサンプルが得られるが、この場合には効果がない。
[頻出イベントを推定するためのハードウェア構成]
図4は、本発明の一実施形態に係る、頻出イベント推定装置のハードウェア構成を示す図である。図4においては、頻出イベント推定装置を情報処理装置1000とし、そのハードウェア構成を例示する。以下は、コンピュータを典型とする情報処理装置として全般的な構成を説明するが、その環境に応じて必要最小限な構成を選択できることはいうまでもない。
情報処理装置1000は、CPU(Central Processing Unit)1010、バスライン1005、通信I/F1040、メインメモリ1050、BIOS(Basic Input Output System)1060、パラレルポート1080、USBポート1090、グラフィック・コントローラ1020、VRAM1024、音声プロセッサ1030、I/Oコントローラ1070、ならびにキーボード及びマウス・アダプタ1100等の入力手段を備える。I/Oコントローラ1070には、フレキシブル・ディスク(FD)ドライブ1072、ハードディスク1074、光ディスク・ドライブ1076、半導体メモリ1078等の記憶手段を接続することができる。
音声プロセッサ1030には、マイクロホン1036、増幅回路1032、及びスピーカ1034が接続される。また、グラフィック・コントローラ1020には、表示装置1022が接続されている。
BIOS1060は、情報処理装置1000の起動時にCPU1010が実行するブートプログラムや、情報処理装置1000のハードウェアに依存するプログラム等を格納する。FD(フレキシブル・ディスク)ドライブ1072は、フレキシブル・ディスク1071からプログラム又はデータを読み取り、I/Oコントローラ1070を介してメインメモリ1050又はハードディスク1074に提供する。図4には、情報処理装置1000の内部にハードディスク1074が含まれる例を示したが、バスライン1005又はI/Oコントローラ1070に外部機器接続用インタフェース(図示せず)を接続し、情報処理装置1000の外部にハードディスクを接続又は増設してもよい。
光ディスク・ドライブ1076としては、例えば、DVD−ROMドライブ、CD−ROMドライブ、DVD−RAMドライブ、CD−RAMドライブを使用することができる。この際は各ドライブに対応した光ディスク1077を使用する必要がある。光ディスク・ドライブ1076は光ディスク1077からプログラム又はデータを読み取り、I/Oコントローラ1070を介してメインメモリ1050又はハードディスク1074に提供することもできる。
情報処理装置1000に提供されるコンピュータ・プログラムは、フレキシブル・ディスク1071、光ディスク1077、又はメモリーカード等の記録媒体に格納されて利用者によって提供される。このコンピュータ・プログラムは、I/Oコントローラ1070を介して、記録媒体から読み出され、又は通信I/F1040を介してダウンロードされることによって、情報処理装置1000にインストールされ実行される。コンピュータ・プログラムが情報処理装置に働きかけて行わせる動作は、既に説明した装置における動作と同一であるので省略する。
前述のコンピュータ・プログラムは、外部の記憶媒体に格納されてもよい。記憶媒体としてはフレキシブル・ディスク1071、光ディスク1077、又はメモリーカードの他に、MD等の光磁気記録媒体、テープ媒体を用いることができる。また、専用通信回線やインターネットに接続されたサーバシステムに設けたハードディスク又は光ディスク・ライブラリ等の記憶装置を記録媒体として使用し、通信回線を介してコンピュータ・プログラムを情報処理装置1000に提供してもよい。
以上の例は、情報処理装置1000について主に説明したが、コンピュータに、情報処理装置で説明した機能を有するプログラムをインストールして、そのコンピュータを情報処理装置として動作させることにより上記で説明した情報処理装置と同様な機能を実現することができる。
本装置は、ハードウェア、ソフトウェア、又はハードウェア及びソフトウェアの組み合わせとして実現可能である。ハードウェアとソフトウェアの組み合わせによる実施では、所定のプログラムを有するコンピュータ・システムでの実施が典型的な例として挙げられる。かかる場合、該所定のプログラムが該コンピュータ・システムにロードされ実行されることにより、該プログラムは、コンピュータ・システムに本発明にかかる処理を実行させる。このプログラムは、任意の言語、コード、又は表記によって表現可能な命令群から構成される。そのような命令群は、システムが特定の機能を直接実行すること、又は(1)他の言語、コード、もしくは表記への変換、(2)他の媒体への複製、のいずれか一方もしくは双方が行われた後に、実行することを可能にするものである。もちろん、本発明は、そのようなプログラム自体のみならず、プログラムを記録した媒体を含むプログラム製品もその範囲に含むものである。本発明の機能を実行するためのプログラムは、フレキシブル・ディスク、MO、CD−ROM、DVD、ハードディスク装置、ROM、MRAM、RAM等の任意のコンピュータ可読媒体に格納することができる。かかるプログラムは、コンピュータ可読媒体への格納のために、通信回線で接続する他のコンピュータ・システムからダウンロードしたり、他の媒体から複製したりすることができる。また、かかるプログラムは、圧縮し、又は複数に分割して、単一又は複数の記録媒体に格納することもできる。
以上、本発明を実施形態に則して説明したが、本発明は上述した実施形態に限るものではない。また、本発明の実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、本発明の実施形態又は実施例に記載されたものに限定されるものではない。
本発明の一実施形態に係る、頻繁に発生するイベントを推定する方法の全体のフロー図である。 本発明の一実施形態に係る、短時間で連続してキャッシュミスを起こすオブジェクトの組み合わせを推定する手順のフロー図である。 本発明の一実施形態に係る、オブジェクト間の参照関係の情報を使用する手順のフロー図である。 本発明の一実施形態に係る、頻出イベント推定装置のハードウェア構成を示す図である。
符号の説明
1000 情報処理装置

Claims (10)

  1. 時間において離散的なイベントサンプルに基づいて時間的に連続して発生するイベントを特定する方法であって、
    前記イベントを特定の命令アドレスの範囲ごとにグループ分けするステップと、
    前記グループ分けしたグループごとに所定の閾値以上の頻度で発生するイベントを抽出するステップと、
    同一グループ内において抽出されたイベント同士を時間的に連続して発生するイベントとして分類するステップと、
    を含む方法。
  2. 前記離散的なイベントサンプルは、パフォーマンスモニタを用いるイベントサンプルである、請求項1に記載の方法。
  3. 前記グループ分けするステップは、さらに前記イベントをメソッド又はベーシックブロックと関連付けられる特定の命令アドレスの範囲ごとにグループ分けする、請求項1又は2に記載の方法。
  4. さらに、前記イベントが発生した命令アドレス、アクセスしようとした参照先のオブジェクト及びフィールドを特定するステップと、
    前記イベントを特定の命令アドレスの範囲ごとにグループ分けするステップと、
    前記グループ分けしたグループごとに所定の閾値以上の頻度で前記イベントが発生する前記フィールド及び前記オブジェクトのクラスを抽出するステップと、
    同一グループ内において抽出された前記オブジェクトのクラスが複数存在するならば、前記オブジェクトの組み合わせを、連続して前記イベントを発生する組み合わせとして分類するステップと、
    を含む、請求項1から3のいずれか一項に記載の方法。
  5. 前記イベントを発生する組み合わせとして分類するステップは、さらに、ヒープの種類に基づくグループ分けを用い、オブジェクト配置の最適化が可能な組み合わせのみを分類する、請求項4に記載の方法。
  6. 前記連続して前記イベントを発生する組み合わせとして分類された前記オブジェクトを、メモリ内で同じキャッシュラインに入るように配置するステップを含む、請求項4又は5に記載の方法。
  7. 前記所定の閾値以上の頻度で前記イベントが発生する前記フィールドを複数含むクラスのオブジェクトが、異なるキャッシュラインに配置されないよう制限するステップを含む、請求項4から6のいずれか一項に記載の方法。
  8. コンピュータを用いて、請求項1から7に記載のいずれかの方法のステップを実行させるためのコンピュータ・プログラム。
  9. 時間において離散的なイベントサンプルに基づいて時間的に連続して発生するイベントを特定するシステムであって、
    前記イベントを特定の命令アドレスの範囲ごとにグループ分けするグループ分け手段と、
    前記グループ分けしたグループごとに所定の閾値以上の頻度で発生するイベントを抽出する抽出手段と、
    同一グループ内において抽出されたイベント同士を時間的に連続して発生するイベントとして分類する分類手段と、
    を含むシステム。
  10. パフォーマンスモニタを用いて時間において離散的なイベントサンプルに基づいて時間的に連続して発生するイベントを特定する方法であって、
    前記イベントをメソッド又はベーシックブロックと関連付けられる特定の命令アドレスの範囲ごとにグループ分けするステップと、
    前記グループ分けしたグループごとに所定の閾値以上の頻度で発生するイベントを抽出するステップと、
    同一グループ内において抽出されたイベント同士を時間的に連続して発生するイベントとして分類するステップと、
    前記イベントが発生した命令アドレス、アクセスしようとした参照先のオブジェクト及びフィールドを特定するステップと、
    前記グループ分けしたグループごとに所定の閾値以上の頻度で前記イベントが発生する前記フィールド及び前記オブジェクトのクラスを抽出するステップと、
    同一グループ内において抽出された前記オブジェクトのクラスが複数存在するならば、前記オブジェクトの組み合わせを、連続して前記イベントを発生する組み合わせとして分類するステップと、
    を含む方法。
JP2008273732A 2008-10-24 2008-10-24 頻繁に発生するイベントを推定する方法 Expired - Fee Related JP5278901B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008273732A JP5278901B2 (ja) 2008-10-24 2008-10-24 頻繁に発生するイベントを推定する方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008273732A JP5278901B2 (ja) 2008-10-24 2008-10-24 頻繁に発生するイベントを推定する方法

Publications (2)

Publication Number Publication Date
JP2010102525A JP2010102525A (ja) 2010-05-06
JP5278901B2 true JP5278901B2 (ja) 2013-09-04

Family

ID=42293119

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008273732A Expired - Fee Related JP5278901B2 (ja) 2008-10-24 2008-10-24 頻繁に発生するイベントを推定する方法

Country Status (1)

Country Link
JP (1) JP5278901B2 (ja)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6480862B1 (en) * 1999-04-23 2002-11-12 International Business Machines Corporation Relation-based ordering of objects in an object heap
JP3698949B2 (ja) * 2000-03-28 2005-09-21 Necマイクロシステム株式会社 命令キャッシュへの関数割付最適化装置、関数割付最適化方法及び関数割付最適化手順を記録した記録媒体
US7490117B2 (en) * 2003-12-31 2009-02-10 Intel Corporation Dynamic performance monitoring-based approach to memory management
JP4899511B2 (ja) * 2006-02-08 2012-03-21 富士通株式会社 システム分析プログラム、システム分析装置、およびシステム分析方法
JP4284332B2 (ja) * 2006-04-21 2009-06-24 株式会社東芝 パフォーマンスモニタ装置、データ収集方法及びそのプログラム

Also Published As

Publication number Publication date
JP2010102525A (ja) 2010-05-06

Similar Documents

Publication Publication Date Title
US8032869B2 (en) Profiling method and computer product
US8793672B2 (en) Optimizing program by reusing execution result of subclass test function
JP5523872B2 (ja) プログラムの動的分析方法及びその装置
US10558569B2 (en) Cache controller for non-volatile memory
US7698690B2 (en) Identifying code that wastes time performing redundant computation
US8990792B2 (en) Method for constructing dynamic call graph of application
US20080148241A1 (en) Method and apparatus for profiling heap objects
US8122439B2 (en) Method and computer program product for dynamically and precisely discovering deliquent memory operations
JP6447348B2 (ja) ダンプデータ管理プログラム、ダンプデータ管理方法、およびダンプデータ管理装置
JP2013033412A (ja) メモリ管理方法、プログラム及びシステム
US20090083716A1 (en) Profiling method and program
US9250939B2 (en) Information processing device, profile target determining program, and method
US9996447B2 (en) Automated identification of redundant method calls
US20110239197A1 (en) Instance-based field affinity optimization
EP3001312B1 (en) Method, device and computer program product for detecting data dependencies within a program
JP5278901B2 (ja) 頻繁に発生するイベントを推定する方法
US8261245B2 (en) Method and system for associating profiler data with a reference clock
US11010158B2 (en) Determining the availability of memory optimizations by analyzing a running binary
US10241884B2 (en) Information processing apparatus and method for collecting performance data
KR101577771B1 (ko) 애플리케이션의 동적 콜 그래프 생성 방법
US20230333987A1 (en) Computer-readable recording medium, information processing method, and information processing device
JP7564447B2 (ja) 異常要因判定方法および異常要因判定プログラム
JP5682109B2 (ja) カバレッジ情報生成プログラム、カバレッジ情報生成装置およびカバレッジ情報生成方法
JP2014056539A (ja) プローブ挿入装置及びプローブ挿入方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110816

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130116

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130122

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130405

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

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20130424

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130514

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees