JP2013105256A - 情報処理装置、プロファイル対象決定プログラム及び方法 - Google Patents
情報処理装置、プロファイル対象決定プログラム及び方法 Download PDFInfo
- Publication number
- JP2013105256A JP2013105256A JP2011247635A JP2011247635A JP2013105256A JP 2013105256 A JP2013105256 A JP 2013105256A JP 2011247635 A JP2011247635 A JP 2011247635A JP 2011247635 A JP2011247635 A JP 2011247635A JP 2013105256 A JP2013105256 A JP 2013105256A
- Authority
- JP
- Japan
- Prior art keywords
- profile
- program
- access
- class
- unit
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
- G06F9/4552—Involving translation to a different instruction set architecture, e.g. just-in-time translation in a JVM
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Debugging And Monitoring (AREA)
Abstract
【解決手段】本発明の情報処理システムは、プログラムの実行中に、クラス又はオブジェクトの割り付け場所毎のサンプリング頻度に基づきプロファイル対象に設定されたオブジェクトへのアクセスを検出することに応答して、該アクセスに関するプロファイル情報を格納するプロファイル情報収集部と、
プロファイル情報に基づいて、クラス又はオブジェクトの割り付け場所ごとに、プログラムの最適化に利用する性質を有するオブジェクトを割り付けられた割合を算出し、算出した割合が所定の閾値以下であるクラス又はオブジェクトの割り付け場所についてのサンプリング頻度を下げるサンプリング頻度更新部とを含む。
【選択図】図2
Description
(d)前記プロファイル対象に設定されたオブジェクトへのアクセスを検出することに応答して、該オブジェクトが前記プログラムの最適化に利用する性質を満たすか否かを判定するステップと、(e)前記オブジェクトが前記プログラムの最適化に利用する性質を満たさなくなったことを条件に、前記オブジェクトにプロファイル不要のマークを付すステップと、(f)前記プログラムの実行中に開始されたガーベジ・コレクション処理において、前記プロファイル不要のマークを付されたオブジェクトを指すポインタに付された前記プロファイル対象のマークを外すステップとを更に実行させる。
(1)初期化の後は書込みがない又は書きこみ頻度が低いという性質を持った不変オブジェクトが複数見つかった場合、内容が同じであればこれらのオブジェクトを単一のオブジェクトにまとめる。
(2)読み込みがない又は読み込み頻度が低いという性質を持つ書き込み専用オブジェクトが見つかった場合、該オブジェクトを圧縮する。
(3)配列要素の一部がアクセスされない非アクセスオブジェクトが見つかった場合、アクセスのない要素を削除する。
上記最適化処理により、メモリの節約によるGC頻度の低下や、キャッシュ使用効率の向上が図られていた。
オブジェクトは、典型的には、ヘッダ及び少なくとも1のフィールドを含む。ヘッダは、オブジェクト内に埋め込まれた、オブジェクト自体の情報を保持する部分であり、例えばオブジェクトのクラスID及びオブジェクトのサイズを含む。フィールドは、オブジェクトの利用者がアクセス可能な部分であり、例えばポインタと非ポインタの2種類のデータを有する。ポインタは、メモリ領域上のある場所を参照する値であり、多くの言語処理系では,オブジェクトへのポインタはオブジェクトの先頭アドレスを参照する。非ポインタは、プログラミングにおいて、値そのものを利用するものであり、数値、文字、及び/又は真偽値を包含する。そこで、上記プロファイル不要のマーク付けはオブジェクトのヘッダ内の1ビットをフラグとして使用してよい。
・図7Aに示す動作フローにおけるステップ704及びステップ708を含まない。
・図7Aに示す動作フローにおけるステップ710に対応するステップ757では、エイリアス解析を利用せずに単にベースレジスタの値がポインタの比較命令のオペランドとして用いられるか否かを判定する。
・図7Aに示す動作フローにおけるステップ702、706、710にそれぞれ対応するステップ752、754、757、及びステップ756として新たに追加したメモリに書き込まれるか否かの判定
のいずれか1つにでも該当すると、ベースレジスタの値がポインタの比較命令に用いられる可能性があると保守的に判定し、直ちに現在のベースレジスタについての一連の処理を終了する。
1.実装
動作周波数最大4.7GHzのRISCプロセッサ(クアッドコア、2スレッドのSMTエンジン搭載のPOWER6(商標))と32GBのメイン・メモリをハードウエアとして備え、オペレーティング・システムとしてLinux(商標)2.6.18を用いるIBM社のJava(登録商標)仮想マシンに、本発明の実施形態に係るプロファイル対象決定プログラムを実装した。なお、実装したプロファイル対象決定プログラムは、オブジェクトの不変性、書き込み専用性、及び非アクセス性に基づく3つの最適化を同時に行うためにそれぞれの最適化についてプロファイル対象を決定するプログラムである。また、SPECjvm2008の中からオブジェクトを多く割り付ける6つのベンチマークプログラム(compiler.compiler、derby、serial、Ssunflow、xml.transform、xml.validation)を選択した。
実験は、以下に示す3つのサンプリング手法について行った。
1MB/NoOpt(従来手法):オブジェクトを1MB割り付ける毎に1つサンプリングする(サンプリング頻度は1種類かつ固定)。
64MB/NoOpt(従来手法):オブジェクトを64MB割り付ける毎に1つサンプリングする(サンプリング頻度は1種類かつ固定、サンプリング頻度を単純に下げる手法)。
1MB/Opt(本発明):クラス/オブジェクト割り付け場所ごとの可変のサンプリング頻度に初期値として、オブジェクトを1MB割り付ける毎に1つサンプリングするサンプリング頻度を設定する。
実験は、速度オーバーヘッドと、プロファイル精度の2つを評価基準として行った。速度オーバーヘッドについては、アクセス・プロファイルを全く取らない場合をベースラインとした。プロファイル精度については、オブジェクトの不変性に基づく最適化のためのプロファイリングを例に説明すると、次のような計算を行った。まず、オブジェクトの割り付け場所毎に、そこに割り付けられた全オブジェクトの合計バイト数に対する不変オブジェクトの合計バイト数の推定割合をプロファイル情報に基づいて算出する。それとは別に全オブジェクトの全アクセスをプロファイルすることで割り付け場所毎に真の割合を求める。推定割合と真の割合の差の絶対値(=誤差)を各割付場所で割り付けられた全オブジェクトの合計バイト数で加重平均する。残りの2つの最適化についても同様にして求めた。
図8は、速度オーバーヘッドについての実験結果を示す。また、図9Aから図9Cは、順に、オブジェクトの不変性に基づく最適化のためのプロファイリングにおけるプロファイ精度、オブジェクトの書き込み専用性に基づく最適化のためのプロファイリングにおけるプロファイ精度、オブジェクトの非アクセス性に基づく最適化のためのプロファイリングにおけるプロファイル精度についての実験結果を示す。図8に示されるように、1MB/NoOpt(従来手法)では、最大40%以上の速度オーバーヘッドがあった。また、図9Aから図9Cに示されるように、64MB/NoOpt(従来手法)では、プロファイル誤差が非常に大きかった。また、1MB/Opt(本発明)は、オブジェクトの非アクセス性に基づく最適化のためのプロファイリングにおけるプロファイル精度が最も高く、上記3つの最適化の中ではオブジェクトの非アクセス性に基づく最適化に対して最も効果を発揮することが分かった。
Claims (13)
- サンプリング型プロファイラのためにプロファイル対象を決定するプログラムであって、該プログラムはコンピュータに、
(a)プログラムの実行中に、クラス又はオブジェクトの割り付け場所ごとのサンプリング頻度に基づきプロファイル対象に設定されたオブジェクトへのアクセスを検出することに応答して、該アクセスに関するプロファイル情報を格納するステップと、
(b)格納された前記プロファイル情報に基づいて、クラス又はオブジェクトの割り付け場所ごとに、前記プログラムの最適化に利用する性質を有するオブジェクトを割り付けられた割合を算出するステップと、
(c)算出した前記割合が所定の閾値以下であるクラス又はオブジェクトの割り付け場所についての前記サンプリング頻度を下げるステップと、
を実行させる前記プロファイル対象決定プログラム。 - ステップ(b)において、前記プログラムの最適化に利用する性質を有するオブジェクトとは、初期化の後に書き込みがない又は書き込み頻度が低い不変オブジェクトである、請求項1に記載のプロファイル対象決定プログラム。
- ステップ(b)において、前記プログラムの最適化に利用する性質を有するオブジェクトとは、読み込みがない又は読み込み頻度が低い書き込み専用オブジェクトである、請求項1に記載のプロファイル対象決定プログラム。
- ステップ(b)において、前記プログラムの最適化に利用する性質を有するオブジェクトとは、アクセスされないフィールドを有する非アクセス・オブジェクトである、請求項1に記載のプロファイル対象決定プログラム。
- 前記プロファイル対象に設定されたオブジェクトは、該オブジェクトを指すポインタに付されたプロファイル対象のマークによって識別され、
(d)前記プロファイル対象に設定されたオブジェクトへのアクセスを検出することに応答して、該オブジェクトが前記プログラムの最適化に利用する性質を満たすか否かを判定するステップと、
(e)前記オブジェクトが前記プログラムの最適化に利用する性質を満たさなくなったことを条件に、前記オブジェクトにプロファイル不要のマークを付すステップと、
(f)前記プログラムの実行中に開始されたガーベッジ・コレクション処理において、前記プロファイル不要のマークを付されたオブジェクトを指すポインタに付された前記プロファイル対象のマークを外すステップとを更に前記コンピュータに実行させる、請求項1に記載のプロファイル対象決定プログラム。 - ステップ(d)において、検出した前記オブジェクトへのアクセスが、該オブジェクトの初期化後になされる書き込みのためのアクセスである場合に、前記オブジェクトが前記プログラムの最適化に利用する性質を満たさなくなったと判定する、請求項5に記載のプロファイル対象決定プログラム。
- ステップ(d)において、検出した前記オブジェクトへのアクセスが、該オブジェクトに対する読み込みのためのアクセスである場合に、前記オブジェクトが前記プログラムの最適化に利用する性質を満たさなくなったと判定する、請求項5に記載のプロファイル対象決定プログラム。
- ステップ(d)において、検出した前記オブジェクトへのアクセスが、該アクセス以前にアクセスのない最後の前記オブジェクトのフィールドへのアクセスである場合に、前記オブジェクトが前記プログラムの最適化に利用する性質を満たさなくなったと判定する、請求項5に記載のプロファイル対象決定プログラム。
- (g)前記プロファイル対象に設定されたオブジェクトへのアクセスを検出することに応答して、該オブジェクトに前記プロファイル不要のマークが付されているか否かを判定するステップと、
(h)前記プロファイル不要のマークが付されているとの判定に応答して、アクセスされる前記オブジェクトを指すポインタを格納するレジスタの値が、該アクセス以降に比較命令のオペランドとして用いられるか否かを判定するステップと、
(i)前記比較命令のオペランドとして用いられないとの判定に応答して、前記プロファイル不要のマークを付されたオブジェクトを指すポインタに付された前記プロファイル対象のマークを外して前記レジスタに書き戻すステップとを更に前記コンピュータに実行させる、請求項5に記載のプロファイル対象決定プログラム。 - (j)前記プログラムの最適化処理において、前記プログラムに含まれる全てのオブジェクトへのアクセス命令に対し、該オブジェクトを指すポインタを格納するレジスタの値が、前記アクセス命令以降に比較命令のオペランドとして用いられるか否かを判定し、比較命令のオペランドとして用いられないとの判定に対し前記アクセス命令のアドレスを記録するステップを更に前記コンピュータに実行させ、前記ステップ(h)は、ステップ(j)において記録されたアドレスの中からステップ(g)において検出した前記アクセスを指示したアクセス命令のアドレスを検索することにより行われる、請求項9に記載のプロファイル対象決定プログラム。
- ステップ(j)は、手続き呼び出しへの引数、手続きの返り値、ポインタの比較命令のオペランド、及びメモリに書き込まれる値のいずれかとして前記レジスタの値が利用されることを条件に、前記レジスタの値が前記比較命令のオペランドとして用いられるとの判定を行うステップを含む、請求項10に記載のプロファイル対象決定プログラム。
- 情報処理装置おいてサンプリング型プロファイラのためにプロファイル対象を決定する方法であって、 (a)前記情報処理装置が、プログラムの実行中に、クラス又はオブジェクトの割り付け場所ごとのサンプリング頻度に基づきプロファイル対象に設定されたオブジェクトへのアクセスを検出することに応答して、該アクセスに関するプロファイル情報を格納するステップと、
(b)前記情報処理装置が、格納された前記プロファイル情報に基づいて、クラス又はオブジェクトの割り付け場所ごとに、前記プログラムの最適化に利用する性質を有するオブジェクトを割り付けられた割合を算出するステップと、
(c)前記情報処理装置が、算出した前記割合が所定の閾値以下であるクラス又はオブジェクトの割り付け場所についての前記サンプリング頻度を下げるステップと、
を含むプロファイル対象決定方法。 - サンプリング型プロファイラのためにプロファイル対象を決定する情報処理装置であって、
プログラムの実行中に、クラス又はオブジェクトの割り付け場所ごとのサンプリング頻度に基づきプロファイル対象に設定されたオブジェクトへのアクセスを検出することに応答して、該アクセスに関するプロファイル情報を格納するプロファイル情報収集部と、
前記プロファイル情報に基づいて、クラス又はオブジェクトの割り付け場所ごとに、前記プログラムの最適化に利用する性質を有するオブジェクトを割り付けられた割合を算出し、算出した前記割合が所定の閾値以下であるクラス又はオブジェクトの割り付け場所についての前記サンプリング頻度を下げるサンプリング頻度更新部と、
を含むプロファイル対象決定装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011247635A JP5719278B2 (ja) | 2011-11-11 | 2011-11-11 | 情報処理装置、プロファイル対象決定プログラム及び方法 |
US13/672,789 US9250939B2 (en) | 2011-11-11 | 2012-11-09 | Information processing device, profile target determining program, and method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011247635A JP5719278B2 (ja) | 2011-11-11 | 2011-11-11 | 情報処理装置、プロファイル対象決定プログラム及び方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2013105256A true JP2013105256A (ja) | 2013-05-30 |
JP5719278B2 JP5719278B2 (ja) | 2015-05-13 |
Family
ID=48281927
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011247635A Active JP5719278B2 (ja) | 2011-11-11 | 2011-11-11 | 情報処理装置、プロファイル対象決定プログラム及び方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9250939B2 (ja) |
JP (1) | JP5719278B2 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10241884B2 (en) | 2016-02-09 | 2019-03-26 | Fujitsu Limited | Information processing apparatus and method for collecting performance data |
US11314640B2 (en) | 2013-12-13 | 2022-04-26 | International Business Machines Corporation | Method, program, and system for reducing the cost of stack scanning |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8813041B2 (en) * | 2008-02-14 | 2014-08-19 | Yahoo! Inc. | Efficient compression of applications |
US9495138B1 (en) * | 2016-01-04 | 2016-11-15 | International Business Machines Corporation | Scheme for verifying the effects of program optimizations |
US10552185B2 (en) | 2018-05-24 | 2020-02-04 | International Business Machines Corporation | Lightweight and precise value profiling |
CN111092845B (zh) * | 2018-10-24 | 2021-02-26 | 珠海格力电器股份有限公司 | 一种访问涉密文件的预警评估方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11316711A (ja) * | 1997-11-26 | 1999-11-16 | Digital Equip Corp <Dec> | メモリシステムトランザクションの特性の統計値を推定する方法 |
US20020019716A1 (en) * | 2000-05-16 | 2002-02-14 | Sun Microsystems, Inc. | Object sampling technique for runtime observations of representative instances thereof |
US20070162896A1 (en) * | 2006-01-10 | 2007-07-12 | Intel Corporation | Method and apparatus for generating run time profiles for program compilation |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3220055B2 (ja) | 1997-07-17 | 2001-10-22 | 松下電器産業株式会社 | 機械語命令列またはアセンブリ言語命令列を最適化する最適化装置、及び、高級言語で記載されたソースプログラムを機械語またはアセンブリ言語の命令列に変換するコンパイラ装置。 |
US6513155B1 (en) * | 1997-12-12 | 2003-01-28 | International Business Machines Corporation | Method and system for merging event-based data and sampled data into postprocessed trace output |
US7100155B1 (en) * | 2000-03-10 | 2006-08-29 | Intel Corporation | Software set-value profiling and code reuse |
JP3758984B2 (ja) | 2001-04-03 | 2006-03-22 | Necマイクロシステム株式会社 | マイクロプロセッサ用目的コードの最適化装置、最適化方法及び最適化プログラムを記録した記録媒体 |
JP2004102597A (ja) | 2002-09-09 | 2004-04-02 | Fujitsu Ltd | コンパイル処理プログラム、コンパイル処理方法、およびコンパイル処理プログラム記録媒体 |
JP4184900B2 (ja) | 2003-08-26 | 2008-11-19 | 富士通株式会社 | 変数の統計処理を行うコンパイル処理プログラム、およびその記録媒体、およびその処理方法ならびにその処理装置 |
US7779238B2 (en) * | 2004-06-30 | 2010-08-17 | Oracle America, Inc. | Method and apparatus for precisely identifying effective addresses associated with hardware events |
US8176475B2 (en) * | 2006-10-31 | 2012-05-08 | Oracle America, Inc. | Method and apparatus for identifying instructions associated with execution events in a data space profiler |
-
2011
- 2011-11-11 JP JP2011247635A patent/JP5719278B2/ja active Active
-
2012
- 2012-11-09 US US13/672,789 patent/US9250939B2/en not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11316711A (ja) * | 1997-11-26 | 1999-11-16 | Digital Equip Corp <Dec> | メモリシステムトランザクションの特性の統計値を推定する方法 |
US20020019716A1 (en) * | 2000-05-16 | 2002-02-14 | Sun Microsystems, Inc. | Object sampling technique for runtime observations of representative instances thereof |
US20070162896A1 (en) * | 2006-01-10 | 2007-07-12 | Intel Corporation | Method and apparatus for generating run time profiles for program compilation |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11314640B2 (en) | 2013-12-13 | 2022-04-26 | International Business Machines Corporation | Method, program, and system for reducing the cost of stack scanning |
US10241884B2 (en) | 2016-02-09 | 2019-03-26 | Fujitsu Limited | Information processing apparatus and method for collecting performance data |
Also Published As
Publication number | Publication date |
---|---|
JP5719278B2 (ja) | 2015-05-13 |
US9250939B2 (en) | 2016-02-02 |
US20130125103A1 (en) | 2013-05-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109478217B (zh) | 使用基于偏移的虚拟地址映射对目标应用功能的基于内核的检测 | |
US5815720A (en) | Use of dynamic translation to collect and exploit run-time information in an optimizing compilation system | |
US8024719B2 (en) | Bounded hash table sorting in a dynamic program profiling system | |
CA2672337C (en) | Compiler instrumentation infrastructure to facilitate multiple pass and multiple purpose dynamic analysis | |
Zhao et al. | Umbra: Efficient and scalable memory shadowing | |
JP5719278B2 (ja) | 情報処理装置、プロファイル対象決定プログラム及び方法 | |
US20070240137A1 (en) | Method of compiling source code | |
US20100115494A1 (en) | System for dynamic program profiling | |
JP5583514B2 (ja) | バイナリコードを最適化するコンパイル方法、及びそのコンパイラシステム、並びにコンピュータ・プログラム | |
US8677322B2 (en) | Debugging in a multiple address space environment | |
US10684835B1 (en) | Improving emulation and tracing performance using compiler-generated emulation optimization metadata | |
US8056061B2 (en) | Data processing device and method using predesignated register | |
US20060277371A1 (en) | System and method to instrument references to shared memory | |
US6317876B1 (en) | Method and apparatus for determining a maximum number of live registers | |
KR20220113372A (ko) | 통합된 참조물 및 2차 객체 표시 | |
CN116830080A (zh) | 经合并的机器级中间表示优化 | |
US20120023307A1 (en) | Methods, systems, and computer program products for excluding an addressable entity from a translation of source code | |
JP5871589B2 (ja) | 情報処理装置、配列の初期サイズ調整プログラム及び方法 | |
US20120005460A1 (en) | Instruction execution apparatus, instruction execution method, and instruction execution program | |
US20120023488A1 (en) | Methods, systems, and computer program products for processing an excludable addressable entity | |
US20200241857A1 (en) | Methods, systems, and computer program products for processing an excludable addressable entity | |
Wright | Dynamic Binary Translation on the. NET Platform | |
US20160266879A1 (en) | Methods, systems, and computer program products for processing an excludable addressable entity | |
Perarnau et al. | Discovering Cache Partitioning Optimizations for the K Computer | |
JP2005100240A (ja) | コンパイラ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20140529 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20150219 |
|
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: 20150303 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20150320 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5719278 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |