JP2010102525A - Method for estimating frequently occurring event - Google Patents
Method for estimating frequently occurring event Download PDFInfo
- Publication number
- JP2010102525A JP2010102525A JP2008273732A JP2008273732A JP2010102525A JP 2010102525 A JP2010102525 A JP 2010102525A JP 2008273732 A JP2008273732 A JP 2008273732A JP 2008273732 A JP2008273732 A JP 2008273732A JP 2010102525 A JP2010102525 A JP 2010102525A
- Authority
- JP
- Japan
- Prior art keywords
- events
- event
- grouping
- combination
- occurs
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
Description
本発明は、プロセッサ内のイベント配置を最適化する方法に関し、特にコンピュータを用いて離散的なイベントサンプルに基づいて時間的に連続して頻繁に発生するイベントを推定する方法に関する。 The present invention relates to a method for optimizing an event arrangement in a processor, and more particularly, to a method for estimating an event that frequently occurs continuously in time based on discrete event samples using a computer.
従来、Java(登録商標)等のオブジェクト指向言語においては、一般に小さなオブジェクトを多数生成するために、これらのうち同時にアクセスされる複数のオブジェクトを同じキャッシュラインに入るように配置する、もしくはメモリのプリフェッチ命令を用いることで性能を向上することが知られている(非特許文献1−3)。最近のプロセッサの多くは、メモリアクセスやキャッシュミス等のプロセッサ内のイベントが発生した際に、例えば1000回ごと等の一定の頻度でサンプルを取るパフォーマンスモニタ機能を備えている。該機能を用いることにより、動的な情報を低いオーバーヘッドで取得することが可能になる。 Conventionally, in an object-oriented language such as Java (registered trademark), generally, in order to generate a large number of small objects, a plurality of objects that are accessed simultaneously are arranged so as to enter the same cache line, or memory prefetch It is known to improve performance by using instructions (Non-Patent Documents 1-3). Many recent processors have a performance monitor function that takes a sample at a certain frequency, for example, every 1000 times when an event in the processor such as a memory access or a cache miss occurs. By using this function, it is possible to acquire dynamic information with low overhead.
また、従来、特徴的なイベントの発生回数等を発生後にカウントして記憶する装置が知られている(特許文献1)。この装置によれば、情報処理装置等はプログラム性能に影響を及ぼすイベントを効率的に記憶できるとしている。
しかし、従来技術に係るパフォーマンスモニタ機能においては、集めた情報は連続したメモリアクセス履歴ではなく離散的なサンプルであり、同時にアクセスされるオブジェクトの検出のためにはそのままでは使用できない。例えば、パフォーマンスモニタ機能により集めたサンプルを使用してプリフェッチ命令の挿入やオブジェクトの配置の最適化を行うには、短時間の内に連続してアクセスされるオブジェクトを判別する必要がある。従って、従来は、ソースコードの静的解析による手法や、コンパイラを用いてメモリアクセスの履歴を取得するコードを生成し、動的に情報を得ていた。しかし、これらの方法は処理時間、メモリ容量の点でオーバーヘッドが大きい点が課題である。特に、コンパイラを用いる方法では、イベントが起きた命令アドレスからソースコード又はバイトコードの該当位置を見つけるために、コンパイル時に追加のデバッグ情報が必要になるという課題がある。また、イベント発生後に回数等をカウントする装置等では、事前にキャッシュミス等のイベント発生を推定するための方法は示されていない。 However, in the performance monitor function according to the prior art, the collected information is not a continuous memory access history but a discrete sample, and cannot be used as it is for detection of simultaneously accessed objects. For example, in order to insert a prefetch instruction and optimize an object arrangement using samples collected by the performance monitor function, it is necessary to determine objects that are continuously accessed within a short time. Therefore, conventionally, a method for static analysis of source code and a code for acquiring a memory access history using a compiler are generated to obtain information dynamically. However, these methods have a problem that overhead is large in terms of processing time and memory capacity. In particular, the method using a compiler has a problem that additional debugging information is required at the time of compilation in order to find the corresponding position of the source code or bytecode from the instruction address where the event occurred. In addition, in a device that counts the number of times after an event occurs, a method for estimating the occurrence of an event such as a cache miss in advance is not shown.
本発明は、プロセッサのパフォーマンスモニタ機能により収集されたイベントの離散的なサンプルから、キャッシュミス等の短時間の間に頻繁に連続して発生する複数のイベントの組み合わせを、静的解析によらずに特定することにより、推定して検出することを可能にする方法を提供することを目的とする。 In the present invention, a combination of a plurality of events that occur frequently and continuously in a short period of time such as a cache miss from a discrete sample of events collected by a processor performance monitor function is not dependent on static analysis. It is an object of the present invention to provide a method that makes it possible to detect by estimation.
本発明は、上記課題に鑑み、以下のような解決手段を提供する。 In view of the above problems, the present invention provides the following solutions.
本発明に係る、頻繁に発生するイベントを推定する方法においては、パフォーマンスモニタを使用してイベントの起こった命令アドレスの情報、及び必要な場合にはイベントの詳細についての付加情報についてサンプルを集め、そこから頻繁に短時間で連続して発生するイベントの組み合わせを以下の手順により特定し、短時間に連続して発生しているイベントの組み合わせであることを推定する。
手順1:イベントを、メソッドやベーシックブロック等の特定の命令アドレスの範囲ごとにグループ分けする。
手順2:グループごとにイベントの統計処理を行い、一定の閾値以上の頻度で発生するイベント(以下、頻出イベントと表記)を抽出する。
手順3:手順2で抽出された頻出イベント同士は短時間に連続して発生しているものとして特定される。
In the method for estimating frequently occurring events according to the present invention, a sample is collected using the performance monitor for information on the instruction address at which the event occurred, and if necessary, additional information about the event details, Then, a combination of events that frequently occur continuously in a short time is specified by the following procedure, and it is estimated that the combination is an event that occurs continuously in a short time.
Procedure 1: Events are grouped into specific instruction address ranges such as methods and basic blocks.
Procedure 2: Statistical processing of events is performed for each group, and events that occur with a frequency equal to or higher than a certain threshold (hereinafter referred to as frequent events) are extracted.
Procedure 3: The frequent events extracted in Procedure 2 are identified as occurring continuously in a short time.
さらに、本発明に係る方法においては、より詳細にイベントの組み合わせを推定するために、次のような動作を追加し得る。これらにより、短時間で連続してキャッシュミスを起こすオブジェクトの組み合わせを推定し得る。
手順4:イベント又はオブジェクトの組み合わせを推定する方法だけからでは、複数のイベントが偶然に同じ範囲で発生している場合を誤って見つけてしまう場合があるため、このような誤判定を減らすために、さらにオブジェクト間の参照関係の情報を使用する。
手順5:イベント又はオブジェクトの組み合わせの推定において、命令アドレスの範囲に加えてヒープの種類によりグループ分けを実施し、これにより実際にオブジェクト配置の最適化等が可能な組み合わせだけに制限して推定する。ヒープの種類としては、例えば新世代領域(nursery)と旧世代領域(tenure)との区別等を用い得る。
Furthermore, in the method according to the present invention, the following operations can be added to estimate the combination of events in more detail. Thus, it is possible to estimate a combination of objects that cause a cache miss continuously in a short time.
Step 4: To reduce such misjudgment, it is possible to mistakenly find a case in which multiple events occur in the same range from the method of estimating the combination of events or objects alone. In addition, information on the reference relationship between objects is used.
Step 5: In estimating the combinations of events or objects, grouping is performed according to the type of heap in addition to the range of instruction addresses, thereby limiting to only combinations that can actually optimize object placement, etc. . As the type of heap, for example, a distinction between a new generation area (nursery) and an old generation area (tenure) can be used.
本発明に係る方法は、オブジェクト指向言語を用いるプログラミング、プログラム開発環境、又はこれらの関連技術等の、既存の技術と組み合わせることができ、そのように組み合わせた技術もまた、本発明の技術範囲に含まれる。同様に、本発明の技法を含む方法又はプログラミング環境等を含む開発システム等も、本発明の技術範囲に含まれる。さらに、本発明の技法は、頻出イベントを推定するための方法の諸段階を、FPGA(現場でプログラム可能なゲートアレイ)、ASIC(特定用途向け集積回路)、これらと同等のハードウェアロジック素子、プログラム可能な集積回路、又はこれらの組み合わせが記憶し得るプログラムの形態、すなわちプログラム製品として提供し得る。具体的には、データ入出力、データバス、メモリバス、システムバス等を備えるカスタムLSI(大規模集積回路)の形態として、本発明に係る頻出イベントを推定する方法の実施手段、デバイス、組み込み装置等を提供でき、そのように集積回路に記憶されたプログラム製品の形態も、本発明の技術範囲に含まれる。 The method according to the present invention can be combined with existing technologies such as programming using an object-oriented language, a program development environment, or related technologies thereof, and such combined technologies are also within the technical scope of the present invention. included. Similarly, a development system including a method or a programming environment including the technique of the present invention is also included in the technical scope of the present invention. In addition, the techniques of the present invention include steps in a method for estimating frequent events, including FPGA (field programmable gate array), ASIC (application specific integrated circuit), and equivalent hardware logic elements, A programmable integrated circuit, or a combination thereof, can be provided as a program form that can be stored, that is, as a program product. Specifically, as a form of a custom LSI (Large Scale Integrated Circuit) having a data input / output, a data bus, a memory bus, a system bus, etc., means for implementing a frequent event according to the present invention, a device, and an embedded device The form of the program product stored in the integrated circuit is also included in the technical scope of the present invention.
本発明によれば、プロセッサのパフォーマンスモニタ機能により収集されたイベントの離散的なサンプルから、キャッシュミス等の頻繁に短時間で連続して発生する複数のイベントの組み合わせを、静的解析によらずに検出することが可能になる。 According to the present invention, a combination of a plurality of events that occur frequently and continuously in a short time, such as cache misses, from a discrete sample of events collected by the performance monitor function of the processor can be obtained without using static analysis. Can be detected.
以下、本発明の実施形態について図を参照しながら説明する。なお、これらはあくまでも一例であって、本発明の技術的範囲はこれらに限られるものではない。 Hereinafter, embodiments of the present invention will be described with reference to the drawings. These are merely examples, and the technical scope of the present invention is not limited to these.
図1に、本発明の一実施形態に係る、頻繁に発生するイベントを推定する方法の全体のフロー図を示す。一実施形態において、本発明に係る方法は、次の手順を用いる。
S100:パフォーマンスモニタを使用してイベントの起こった命令アドレスの情報、及び必要な場合にはイベントの詳細についての付加情報についてサンプルを集める。
S110:イベントを、メソッドやベーシックブロック等の特定の命令アドレスの範囲ごとにグループ分けする。
S120:グループごとにイベントの統計処理を行い、一定の閾値以上の頻度で発生するイベント(頻出イベント)を抽出する。
S130:抽出された頻出イベントは短時間に連続して発生しているイベントとして特定される。
FIG. 1 shows an overall flow diagram of a method for estimating frequently occurring events according to one embodiment of the present invention. In one embodiment, the method according to the invention uses the following procedure.
S100: Collect a sample using the performance monitor for information on the instruction address where the event occurred and, if necessary, additional information about the event details.
S110: The events are grouped according to a specific instruction address range such as a method or a basic block.
S120: Event statistical processing is performed for each group, and events (frequent events) occurring at a frequency equal to or higher than a certain threshold are extracted.
S130: The extracted frequent event is specified as an event occurring continuously in a short time.
すなわち、本発明に係る方法は、ステップ(S110)からステップ(S130)を用いて、頻繁に短時間で連続して発生するイベントの組み合わせを特定し、特定したイベントの組み合わせは短時間に連続して発生していることを推定し得る。 That is, the method according to the present invention uses steps (S110) to (S130) to identify combinations of events that frequently occur continuously in a short time, and the identified event combinations continue in a short time. Can be estimated.
図2に、本発明の一実施形態に係る、短時間で連続してキャッシュミスを起こすオブジェクトの組み合わせを推定する手順のフロー図を示す。一実施形態において、本発明に係る方法は、次の手順を用いる。
S200:パフォーマンスモニタを使用してキャッシュミスの起こった命令アドレス及びその際にアクセスしようとした参照先のオブジェクト及びフィールドについてのサンプルを集める。
S210:キャッシュミスイベントを特定の命令アドレスの範囲(例えば、メソッド)ごとにグループ分けする。
S220:グループごとにイベントの統計処理を行い、一定の閾値以上のキャッシュミスを起こすフィールド(以下、頻出フィールドと表記)及びオブジェクトのクラス(以下、頻出クラスと表記)を抽出する。
S230:複数の頻出クラスがある場合には、それらのオブジェクトの組み合わせは連続してキャッシュミスを起こすものであると特定される。同様に、頻出フィールドを複数含むクラスがある場合には、これらのフィールドは連続してキャッシュミスを起こすものであると特定される。
FIG. 2 shows a flowchart of a procedure for estimating a combination of objects that cause a cache miss continuously in a short time according to an embodiment of the present invention. In one embodiment, the method according to the invention uses the following procedure.
S200: Collect a sample of the instruction address where the cache miss occurred and the reference object and field to be accessed at that time using the performance monitor.
S210: Group cache miss events by specific instruction address range (for example, method).
S220: Event statistical processing is performed for each group, and a field causing a cache miss exceeding a certain threshold (hereinafter referred to as a frequent field) and an object class (hereinafter referred to as a frequent class) are extracted.
S230: When there are a plurality of frequently appearing classes, the combination of these objects is specified to cause consecutive cache misses. Similarly, when there is a class including a plurality of frequently appearing fields, these fields are specified to cause consecutive cache misses.
すなわち、本発明に係る方法においては、図1を用いて示した頻繁に発生するイベントを推定する方法に加えて、図2に示したオブジェクトの組み合わせを推定する方法を用い得る。これにより、本発明に係る方法は、より詳細にイベントの組み合わせを推定するための動作を実施し得る。 That is, in the method according to the present invention, the method for estimating the combination of objects shown in FIG. 2 can be used in addition to the method for estimating frequently occurring events shown in FIG. Thereby, the method according to the present invention can perform an operation for estimating a combination of events in more detail.
図2に示す手順によれば、連続してキャッシュミスを起こすオブジェクトの組み合わせ及び連続してキャッシュミスを起こすフィールドを特定し得る。これらの情報に従って、本発明に係る方法においては、連続してキャッシュミスを起こすものとして特定されたオブジェクトの組はメモリ内で同じキャッシュラインに入るように、アロケーション又はガベージコレクション(GCと略称)の際に配置したり、頻出フィールドを複数含むクラスのオブジェクトはキャッシュラインの境界をまたがないように配置することが望ましいという情報を、統計処理を用いて自動的に生成することが可能になる。従って、本発明に係る方法を用いることにより、離散的なイベントサンプルに基づいて、頻繁に発生するイベントを推定し、当該推定の情報を用いてメモリ内でのオブジェクトの配置を最適化することで、プログラム性能の向上が計れる。 According to the procedure shown in FIG. 2, it is possible to specify a combination of objects that cause successive cache misses and a field that causes successive cache misses. According to this information, in the method according to the present invention, allocation or garbage collection (abbreviated as GC) is performed so that a set of objects identified as consecutively causing a cache miss enters the same cache line in the memory. It is possible to automatically generate, using statistical processing, information indicating that it is desirable to arrange an object of a class including a plurality of frequently appearing fields so as not to cross the boundary of the cache line. Therefore, by using the method according to the present invention, it is possible to estimate frequently occurring events based on discrete event samples and optimize the arrangement of objects in the memory using the estimated information. Program performance can be improved.
本発明に係る方法においては、上述のステップ(S210)に示したように、イベントサンプルの統計処理の前に、命令アドレスの範囲(例えばメソッド)ごとに分割し、それぞれを独立に統計処理することに特徴がある。これにより短い命令アドレスの範囲で発生するイベントは、時間的にも近いタイミングで発生していると判定し得る。換言すれば、本発明に係る方法においては、命令アドレスの空間的に限られた範囲において特定のイベントが発生することの情報を用い、当該情報に基づいて、特定のイベントが短時間で連続して発生しているイベントであると推測する。この理由は、離散的なサンプルからは、論理的には、特定のイベント発生が短時間で連続しているという時間的な情報が得られないためである。 In the method according to the present invention, as shown in the above-mentioned step (S210), before the statistical processing of the event samples, each instruction address range (for example, method) is divided, and each is statistically processed independently. There is a feature. As a result, it can be determined that an event that occurs in a short instruction address range occurs at a timing close in time. In other words, in the method according to the present invention, information that a specific event occurs in a spatially limited range of instruction addresses is used, and based on the information, the specific event continues in a short time. It is estimated that the event has occurred. This is because, from a discrete sample, it is logically impossible to obtain temporal information that a specific event occurrence is continuous in a short time.
本発明に係る方法における、このような推測は、プログラム全体の実行時間の内、ある命令アドレスの範囲(メソッド)の実行は時間的に連続しているという仮定に基づいている。しかしながら、この仮定は、あるメソッドが多数のコンテキストで呼び出される状況(単純なsetter/getter等)においては成り立たなくなる場合がある。ただし、そのような単純なメソッドはインライン展開される場合がほとんどであるため、インライン展開の最適化が行われた後でサンプリングを行うことで解決可能である。 Such estimation in the method according to the present invention is based on the assumption that the execution of a certain instruction address range (method) is continuous in time within the execution time of the entire program. However, this assumption may not hold in situations where a method is called in multiple contexts (simple setter / getter, etc.). However, since such simple methods are mostly expanded inline, it can be solved by performing sampling after optimization of inline expansion is performed.
前述のステップ(S110)において命令アドレスの範囲ごとに区分けを行うために、命令アドレスと範囲(例えばメソッド)の対応関係のマップが必要になる場合がある。しかし、これは既存技術で必要になる命令アドレスからソースコードやバイトコードへの情報に比べれば非常に小さくて済む。 In order to perform classification for each instruction address range in the above-described step (S110), there may be a need to map the correspondence between the instruction address and the range (for example, method). However, this is much smaller than the information from the instruction address required for the existing technology to the source code or byte code.
上述の処理手順の処理量を減らすために、ステップ(S120)以降の処理を行う際に、範囲内のサンプル数が一定の閾値を超えたものだけを対象とすることで、それ以外の範囲でのサンプルについての処理を省略することができる。 In order to reduce the amount of processing of the above-described processing procedure, when performing the processing after step (S120), by targeting only samples whose number in the range exceeds a certain threshold, in other ranges The processing for the sample can be omitted.
上述の記載はキャッシュミスを例として使用したが、本発明に係る方法は他のイベントに対しても適用可能である。 Although the above description uses a cache miss as an example, the method according to the present invention is applicable to other events.
図3に、本発明の一実施形態に係る、オブジェクト間の参照関係の情報を使用する手順のフロー図を示す。キャッシュミスイベントを例として、本発明に係る方法は、次のような手順を用いる。
S310:キャッシュミスイベントを特定の命令アドレスの範囲(例えばメソッドやベーシックブロック)ごとにグループ分けする。
S320:グループごとにイベントの統計処理を行い、その範囲内で一定の閾値以上の回数のキャッシュミスを起こすクラス(以下、頻出クラスと表記)を抽出する。
S330:キャッシュミスを起こしたオブジェクトの内、頻出クラスのインスタンスであるものについて、そこから参照されているオブジェクトを調べ、頻出クラスのオブジェクトが存在した場合には、参照元クラスと参照先クラスの組み合わせごとに出現した回数を記録する。
S340:ここで生成した参照元クラスと参照先クラスの組み合わせの内、出現回数がある閾値を越えたものは、短時間で連続してアクセスされるオブジェクトであると特定される。
FIG. 3 shows a flow chart of a procedure for using the reference relationship information between objects according to an embodiment of the present invention. Taking the cache miss event as an example, the method according to the present invention uses the following procedure.
S310: The cache miss events are grouped for each specific instruction address range (for example, method or basic block).
S320: Statistical processing of events is performed for each group, and classes (hereinafter referred to as frequent classes) that cause cache misses more than a certain threshold value within the range are extracted.
S330: Among objects having a cache miss, an object that is an instance of a frequent class is examined, and if an object of the frequent class exists, a combination of a reference source class and a reference destination class is found. Record the number of occurrences for each.
S340: Among the combinations of the reference source class and the reference destination class generated here, an object whose appearance count exceeds a certain threshold is identified as an object that is continuously accessed in a short time.
図3に示した手順は、上述の図1及び図2に示した方法において、複数のイベントが偶然に同じ範囲で発生している場合を誤って見つけてしまう場合等の、誤判定を減らすために用い得る。この手順においては、ステップ(S310)において命令アドレスの範囲を区切り、範囲ごとにサンプルの統計処理を行うことに加え、オブジェクト同士が参照関係で結ばれているという情報を使用する。このようにすることにより、推定の精度を上げることが可能である。 The procedure shown in FIG. 3 is to reduce erroneous determinations in the method shown in FIGS. 1 and 2 described above, such as when a plurality of events are accidentally found in the same range. Can be used. In this procedure, in addition to performing the statistical processing of the sample for each range by dividing the instruction address range in step (S310), information that the objects are connected in a reference relationship is used. By doing so, it is possible to improve the accuracy of estimation.
本発明に係る方法においては、ステップ(S310)においてグループ分けを行う際、及びステップ(S330)においてオブジェクト間の参照関係を調べる際に、命令アドレスの範囲に加えてヒープの種類に基づいてグループ分けを行うことにより、実際にオブジェクト配置の最適化等が可能な組み合わせだけに参照関係の分析を制限することができる。例えば、ヒープとしては、新世代領域(nursery)と旧世代領域(tenure)の区別等を用いることができる。従って、例えば、nursery領域にあるオブジェクトとtenure領域にあるオブジェクトとは、既存のGCの処理の中では同じキャッシュライン上に乗るように移動することが容易ではないため、ヒープの種類に基づいてサンプルを分類して処理することで、このような組み合わせが検出されないようにすることが可能である。 In the method according to the present invention, when grouping is performed in step (S310) and when the reference relationship between objects is examined in step (S330), grouping is performed based on the heap type in addition to the instruction address range. By performing the above, it is possible to limit the analysis of the reference relationship to only combinations that can actually optimize the object arrangement. For example, as a heap, a distinction between a new generation area (nursery) and an old generation area (tenure) can be used. Therefore, for example, an object in the nursery area and an object in the tenure area are not easily moved so as to ride on the same cache line in the existing GC processing, so a sample based on the type of heap By classifying and processing, it is possible to prevent such a combination from being detected.
同様に、本発明に係る方法においては、ステップ(S320)において参照先クラスによってグループ分けを行う際に、さらに参照先アドレスのオブジェクト内でのオフセットやキャッシュミスを起こした命令アドレスを用いて、さらに細かく分類してもよい。 Similarly, in the method according to the present invention, when grouping by reference destination class in step (S320), an offset in the object of the reference destination address or an instruction address causing a cache miss is further used. You may classify it finely.
(実施例1)
本発明に係る方法を用い、キャッシュミスを連続で起こす複数オブジェクトの組み合わせを推定する例を示す。例えば、パフォーマンスモニタでのキャッシュミスのサンプリング結果が、次の表のようになった場合について説明する。
The example which estimates the combination of the several object which causes a cache miss continuously using the method which concerns on this invention is shown. For example, a case where the cache miss sampling result in the performance monitor is as shown in the following table will be described.
この例を処理すると、まずmethod1については、4種類のクラスへのアクセスでキャッシュミスを起こしているが、前述のステップ(S120)で使う閾値を10%とすると、classA、classB、classDが頻出クラスとなる。ここで、実際にキャッシュミスを起こしたこれらのクラスのオブジェクトの中で参照しているオブジェクトについて調べる。例えば、サンプリングされたclassAのオブジェクトからはclassB、classCのオブジェクトが多く参照されていたとすると、classBも頻出クラスであるため、classAとclassBの組み合わせが、同時にアクセスされるオブジェクトとして特定される。method2やmethod3についても同様に処理を行うが、頻出クラスが複数含まれないので候補は存在しない。 When this example is processed, for method1, first, a cache miss is caused by accessing four types of classes. However, if the threshold used in the above step (S120) is 10%, class A, class B, and class D are frequent classes. It becomes. Here, the objects referred to in the objects of these classes that actually cause the cache miss are examined. For example, if many objects of class B and class C are referenced from the sampled objects of class A, since class B is also a frequent class, the combination of class A and class B is specified as an object to be accessed simultaneously. The same processing is performed for method2 and method3, but there are no candidates because a plurality of frequent classes are not included.
これらの処理のために、上記のような表を作る前に、キャッシュミスの起きたメソッドだけをまず調査し、その時点でメソッドごとのキャッシュミスがある閾値に達していない場合には、参照先オブジェクトのクラスを調べる処理や、それによるクラスごとのミス数の統計処理を省略してもよい。特に参照先アドレスからオブジェクトヘッダを発見しクラスに解決するためには無視できない処理量が必要であるため、これを省略できることは計測のオーバーヘッド削減に効果がある。上の例では例えば、method1では45%、method2では5%、method3では20%のキャッシュミスが起きている。ここで閾値を15%とすると、method2は処理対象から除外され、このmethod2及びothersの中で起きたキャッシュミスについては、参照先オブジェクトの調査は行わなくてよい。 For these processes, before creating the table as above, only the method that caused the cache miss is first examined, and if the cache miss for each method does not reach the threshold, the reference The processing for checking the object class and the statistical processing for the number of mistakes for each class may be omitted. In particular, in order to find an object header from a reference destination address and resolve it to a class, a processing amount that cannot be ignored is necessary. Therefore, omitting this has an effect of reducing measurement overhead. In the above example, for example, a cache miss of 45% occurs in method 1, 5% in method 2, and 20% in method 3. Here, when the threshold value is 15%, method 2 is excluded from the processing target, and for the cache miss that occurs in method 2 and others, the reference destination object need not be investigated.
上記の例で、範囲(ここではメソッド)ごとに分けて処理を行わない場合を考える。例えば、classAはclassBのオブジェクト又はclassCのオブジェクトを参照する事があるとする。すると、classA、classB、classCは、平均的には多くキャッシュミスを起こすので、メソッドごとに分けずに全体を平均して扱うと、連続してキャッシュミスを起こさないため効果が期待できないclassAとclassCとの組み合わせを最適化の候補としてしまう事があり得る。 In the above example, let us consider a case where processing is not performed separately for each range (here, method). For example, classA may refer to an object of classB or an object of classC. Then, since class A, class B, and class C cause many cache misses on average, if they are handled as an average without dividing each method, the effect is not expected because cache misses do not occur continuously. Can be a candidate for optimization.
(実施例2)
本発明に係る方法を用い、キャッシュミスを連続で起こす複数フィールドを推定する場合について説明する。例えば、パフォーマンスモニタでのキャッシュミスのサンプリング結果が、次の表のようになったとする。
A case where a plurality of fields that cause consecutive cache misses is estimated using the method according to the present invention will be described. For example, assume that the cache miss sampling result in the performance monitor is as shown in the following table.
複数のオブジェクトの場合と同様に、methodごとに分けて処理を行う。例えば、classAではオフセットが8バイトと32バイトの二カ所で多くキャッシュミスが起きている。このような場合には、頻繁にアクセスされるclassAのオブジェクトがキャッシュライン境界をまたいでしまっているために、1つのオブジェクトへのアクセスが複数のキャッシュミスを起こしている可能性がある。そこで、classAのオブジェクトがキャッシュライン境界をまたがないように配置することにより、キャッシュミスを削減することができる。ただし、同じクラスの異なるオブジェクトがmethod1の中でキャッシュミスを起こしている場合にもこのようなサンプルが得られるが、この場合には効果がない。 As in the case of a plurality of objects, processing is performed separately for each method. For example, in class A, there are many cache misses at two offsets of 8 bytes and 32 bytes. In such a case, since the frequently accessed class A object crosses the cache line boundary, there is a possibility that access to one object causes a plurality of cache misses. Therefore, by arranging the objects of class A so as not to cross the cache line boundary, cache misses can be reduced. However, such a sample can be obtained even when different objects of the same class cause a cache miss in method1, but this case has no effect.
[頻出イベントを推定するためのハードウェア構成]
図4は、本発明の一実施形態に係る、頻出イベント推定装置のハードウェア構成を示す図である。図4においては、頻出イベント推定装置を情報処理装置1000とし、そのハードウェア構成を例示する。以下は、コンピュータを典型とする情報処理装置として全般的な構成を説明するが、その環境に応じて必要最小限な構成を選択できることはいうまでもない。
[Hardware configuration for estimating frequent events]
FIG. 4 is a diagram showing a hardware configuration of a frequent event estimation device according to an embodiment of the present invention. In FIG. 4, the frequent event estimation device is an
情報処理装置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等の記憶手段を接続することができる。
The
音声プロセッサ1030には、マイクロホン1036、増幅回路1032、及びスピーカ1034が接続される。また、グラフィック・コントローラ1020には、表示装置1022が接続されている。
A microphone 1036, an
BIOS1060は、情報処理装置1000の起動時にCPU1010が実行するブートプログラムや、情報処理装置1000のハードウェアに依存するプログラム等を格納する。FD(フレキシブル・ディスク)ドライブ1072は、フレキシブル・ディスク1071からプログラム又はデータを読み取り、I/Oコントローラ1070を介してメインメモリ1050又はハードディスク1074に提供する。図4には、情報処理装置1000の内部にハードディスク1074が含まれる例を示したが、バスライン1005又はI/Oコントローラ1070に外部機器接続用インタフェース(図示せず)を接続し、情報処理装置1000の外部にハードディスクを接続又は増設してもよい。
The
光ディスク・ドライブ1076としては、例えば、DVD−ROMドライブ、CD−ROMドライブ、DVD−RAMドライブ、CD−RAMドライブを使用することができる。この際は各ドライブに対応した光ディスク1077を使用する必要がある。光ディスク・ドライブ1076は光ディスク1077からプログラム又はデータを読み取り、I/Oコントローラ1070を介してメインメモリ1050又はハードディスク1074に提供することもできる。
As the
情報処理装置1000に提供されるコンピュータ・プログラムは、フレキシブル・ディスク1071、光ディスク1077、又はメモリーカード等の記録媒体に格納されて利用者によって提供される。このコンピュータ・プログラムは、I/Oコントローラ1070を介して、記録媒体から読み出され、又は通信I/F1040を介してダウンロードされることによって、情報処理装置1000にインストールされ実行される。コンピュータ・プログラムが情報処理装置に働きかけて行わせる動作は、既に説明した装置における動作と同一であるので省略する。
The computer program provided to the
前述のコンピュータ・プログラムは、外部の記憶媒体に格納されてもよい。記憶媒体としてはフレキシブル・ディスク1071、光ディスク1077、又はメモリーカードの他に、MD等の光磁気記録媒体、テープ媒体を用いることができる。また、専用通信回線やインターネットに接続されたサーバシステムに設けたハードディスク又は光ディスク・ライブラリ等の記憶装置を記録媒体として使用し、通信回線を介してコンピュータ・プログラムを情報処理装置1000に提供してもよい。
The aforementioned computer program may be stored in an external storage medium. As the storage medium, in addition to the
以上の例は、情報処理装置1000について主に説明したが、コンピュータに、情報処理装置で説明した機能を有するプログラムをインストールして、そのコンピュータを情報処理装置として動作させることにより上記で説明した情報処理装置と同様な機能を実現することができる。
In the above example, the
本装置は、ハードウェア、ソフトウェア、又はハードウェア及びソフトウェアの組み合わせとして実現可能である。ハードウェアとソフトウェアの組み合わせによる実施では、所定のプログラムを有するコンピュータ・システムでの実施が典型的な例として挙げられる。かかる場合、該所定のプログラムが該コンピュータ・システムにロードされ実行されることにより、該プログラムは、コンピュータ・システムに本発明にかかる処理を実行させる。このプログラムは、任意の言語、コード、又は表記によって表現可能な命令群から構成される。そのような命令群は、システムが特定の機能を直接実行すること、又は(1)他の言語、コード、もしくは表記への変換、(2)他の媒体への複製、のいずれか一方もしくは双方が行われた後に、実行することを可能にするものである。もちろん、本発明は、そのようなプログラム自体のみならず、プログラムを記録した媒体を含むプログラム製品もその範囲に含むものである。本発明の機能を実行するためのプログラムは、フレキシブル・ディスク、MO、CD−ROM、DVD、ハードディスク装置、ROM、MRAM、RAM等の任意のコンピュータ可読媒体に格納することができる。かかるプログラムは、コンピュータ可読媒体への格納のために、通信回線で接続する他のコンピュータ・システムからダウンロードしたり、他の媒体から複製したりすることができる。また、かかるプログラムは、圧縮し、又は複数に分割して、単一又は複数の記録媒体に格納することもできる。 This apparatus can be realized as hardware, software, or a combination of hardware and software. A typical example of implementation using a combination of hardware and software is implementation on a computer system having a predetermined program. In such a case, the predetermined program is loaded into the computer system and executed, whereby the program causes the computer system to execute the processing according to the present invention. This program is composed of a group of instructions that can be expressed in any language, code, or notation. Such instructions can be either or both of the following: (1) conversion to another language, code, or notation; (2) replication to other media; Can be executed after the Of course, the present invention includes not only such a program itself but also a program product including a medium on which the program is recorded. The program for executing the functions of the present invention can be stored in any computer-readable medium such as a flexible disk, MO, CD-ROM, DVD, hard disk device, ROM, MRAM, and RAM. Such a program can be downloaded from another computer system connected via a communication line or copied from another medium for storage on a computer-readable medium. Further, such a program can be compressed or divided into a plurality of parts and stored in a single or a plurality of recording media.
以上、本発明を実施形態に則して説明したが、本発明は上述した実施形態に限るものではない。また、本発明の実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、本発明の実施形態又は実施例に記載されたものに限定されるものではない。 Although the present invention has been described based on the embodiment, the present invention is not limited to the above-described embodiment. The effects described in the embodiments of the present invention are only the most preferable effects resulting from the present invention, and the effects of the present invention are limited to those described in the embodiments or examples of the present invention. Is not to be done.
1000 情報処理装置 1000 Information processing equipment
Claims (10)
前記イベントを特定の命令アドレスの範囲ごとにグループ分けするステップと、
前記グループ分けしたグループごとに所定の閾値以上の頻度で発生するイベントを抽出するステップと、
前記抽出したイベント同士を時間的に連続して発生するイベントとして分類するステップと、を含む
方法。 A method for identifying events that occur continuously in time based on discrete event samples in time,
Grouping the events into specific instruction address ranges;
Extracting an event that occurs at a frequency equal to or greater than a predetermined threshold for each of the grouped groups;
Classifying the extracted events as events that occur continuously in time.
前記イベントを特定の命令アドレスの範囲ごとにグループ分けするステップと、
前記グループ分けしたグループごとに所定の閾値以上の頻度で前記イベントが発生するフィールド及び前記オブジェクトのクラスを抽出するステップと、
前記抽出した前記オブジェクトのクラスが複数存在するならば、前記オブジェクトの組み合わせを、連続して前記イベントを発生する組み合わせとして分類するステップと、を含む、
請求項1に記載の方法。 Further, the step of specifying the instruction address where the event has occurred, the referenced object and field to be accessed, and
Grouping the events into specific instruction address ranges;
Extracting a field in which the event occurs and a class of the object at a frequency equal to or higher than a predetermined threshold for each of the grouped groups;
If there are a plurality of classes of the extracted object, the combination of the objects is classified as a combination that continuously generates the event, and
The method of claim 1.
前記イベントを特定の命令アドレスの範囲ごとにグループ分けするグループ分け手段と、
前記グループ分けしたグループごとに所定の閾値以上の頻度で発生するイベントを抽出する抽出手段と、
前記抽出したイベント同士を時間的に連続して発生するイベントとして分類する分類手段と、を含む
システム。 A system for identifying events that occur continuously in time based on discrete event samples in time,
Grouping means for grouping the events into specific instruction address ranges;
An extracting means for extracting an event that occurs at a frequency equal to or higher than a predetermined threshold for each of the grouped groups;
And a classifying unit that classifies the extracted events as events that occur continuously in time.
前記イベントをメソッド又はベーシックブロックと関連付けられる特定の命令アドレスの範囲ごとにグループ分けするステップと、
前記グループ分けしたグループごとに所定の閾値以上の頻度で発生するイベントを抽出するステップと、
前記抽出したイベント同士を時間的に連続して発生するイベントとして分類するステップと、
前記イベントが発生した命令アドレス、アクセスしようとした参照先のオブジェクト及びフィールドを特定するステップと、
前記グループ分けしたグループごとに所定の閾値以上の頻度で前記イベントが発生するフィールド及びオブジェクトのクラスを抽出するステップと、
前記抽出した前記オブジェクトのクラスが複数存在するならば、前記オブジェクトの組み合わせを、連続して前記イベントを発生する組み合わせとして分類するステップと、を含む、
方法。 A method for identifying events that occur continuously in time based on discrete event samples in time using a performance monitor,
Grouping the events by a range of specific instruction addresses associated with a method or basic block;
Extracting an event that occurs at a frequency equal to or greater than a predetermined threshold for each of the grouped groups;
Classifying the extracted events as events that occur continuously in time;
Identifying the instruction address where the event occurred, the referenced object and field to be accessed;
Extracting a field and an object class in which the event occurs with a frequency equal to or higher than a predetermined threshold for each of the grouped groups;
If there are a plurality of classes of the extracted object, the combination of the objects is classified as a combination that continuously generates the event, and
Method.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008273732A JP5278901B2 (en) | 2008-10-24 | 2008-10-24 | How to estimate frequently occurring events |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008273732A JP5278901B2 (en) | 2008-10-24 | 2008-10-24 | How to estimate frequently occurring events |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2010102525A true JP2010102525A (en) | 2010-05-06 |
JP5278901B2 JP5278901B2 (en) | 2013-09-04 |
Family
ID=42293119
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008273732A Expired - Fee Related JP5278901B2 (en) | 2008-10-24 | 2008-10-24 | How to estimate frequently occurring events |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5278901B2 (en) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000322315A (en) * | 1999-04-23 | 2000-11-24 | Internatl Business Mach Corp <Ibm> | Method and device for managing data |
JP2001282547A (en) * | 2000-03-28 | 2001-10-12 | Nec Microsystems Ltd | Function allocation/optimization device to instruction cache, function allocation/optimization method and recording medium recording function allocation/ optimization procedure |
JP2007513437A (en) * | 2003-12-31 | 2007-05-24 | インテル・コーポレーション | Dynamic performance monitoring based approach to memory management |
JP2007213205A (en) * | 2006-02-08 | 2007-08-23 | Fujitsu Ltd | System analysis program, device, and method |
JP2007293424A (en) * | 2006-04-21 | 2007-11-08 | Toshiba Corp | Performance monitor device, data collection method and its program |
-
2008
- 2008-10-24 JP JP2008273732A patent/JP5278901B2/en not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000322315A (en) * | 1999-04-23 | 2000-11-24 | Internatl Business Mach Corp <Ibm> | Method and device for managing data |
JP2001282547A (en) * | 2000-03-28 | 2001-10-12 | Nec Microsystems Ltd | Function allocation/optimization device to instruction cache, function allocation/optimization method and recording medium recording function allocation/ optimization procedure |
JP2007513437A (en) * | 2003-12-31 | 2007-05-24 | インテル・コーポレーション | Dynamic performance monitoring based approach to memory management |
JP2007213205A (en) * | 2006-02-08 | 2007-08-23 | Fujitsu Ltd | System analysis program, device, and method |
JP2007293424A (en) * | 2006-04-21 | 2007-11-08 | Toshiba Corp | Performance monitor device, data collection method and its program |
Non-Patent Citations (3)
Title |
---|
CSNG200100216004; 橋本敬介 外2名: '命令キャッシュミス削減のための基本ブロック単位でのコード再配置手法' 1999年並列処理シンポジウム JSPP '99 第99巻,第6号, 19990609, p.31-38, 社団法人情報処理学会 * |
JPN6013002146; 吉岡弘隆: 'OLTP性能向上を目的としたメモリプロファイリングツール' 第14回データ工学ワークショップ(DEWS2003)論文集[online] , 20030516, 電子情報通信学会データ工学研究専門委員会 * |
JPN6013002147; 橋本敬介 外2名: '命令キャッシュミス削減のための基本ブロック単位でのコード再配置手法' 1999年並列処理シンポジウム JSPP '99 第99巻,第6号, 19990609, p.31-38, 社団法人情報処理学会 * |
Also Published As
Publication number | Publication date |
---|---|
JP5278901B2 (en) | 2013-09-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8032869B2 (en) | Profiling method and computer product | |
JP5523872B2 (en) | Program dynamic analysis method and apparatus | |
US8990792B2 (en) | Method for constructing dynamic call graph of application | |
US8793672B2 (en) | Optimizing program by reusing execution result of subclass test function | |
US7698690B2 (en) | Identifying code that wastes time performing redundant computation | |
US10558569B2 (en) | Cache controller for non-volatile memory | |
US20080148241A1 (en) | Method and apparatus for profiling heap objects | |
US8959400B2 (en) | System, program, and method for collecting errors which occur while a user uses a computer | |
JP6447348B2 (en) | Dump data management program, dump data management method, and dump data management device | |
JP2013033412A (en) | Memory management method, program, and system | |
US20090083716A1 (en) | Profiling method and program | |
CN109344017A (en) | A method of memory failure, equipment and readable storage medium storing program for executing are predicted based on machine learning | |
US9250939B2 (en) | Information processing device, profile target determining program, and method | |
US9996447B2 (en) | Automated identification of redundant method calls | |
US20190129822A1 (en) | Methods and apparatus to detect memory leaks in computing systems | |
EP3001312B1 (en) | Method, device and computer program product for detecting data dependencies within a program | |
JP5278901B2 (en) | How to estimate frequently occurring events | |
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 (en) | Method for constructing dynamic call graph of applications | |
US20230333987A1 (en) | Computer-readable recording medium, information processing method, and information processing device | |
Li et al. | Dynamic and adaptive calling context encoding | |
JP5682109B2 (en) | Coverage information generation program, coverage information generation apparatus, and coverage information generation method | |
JP2014056539A (en) | Probe insertion device and probe insertion method |
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 |