JP2016224814A - 性能情報生成プログラム、性能情報生成方法及び情報処理装置 - Google Patents

性能情報生成プログラム、性能情報生成方法及び情報処理装置 Download PDF

Info

Publication number
JP2016224814A
JP2016224814A JP2015112422A JP2015112422A JP2016224814A JP 2016224814 A JP2016224814 A JP 2016224814A JP 2015112422 A JP2015112422 A JP 2015112422A JP 2015112422 A JP2015112422 A JP 2015112422A JP 2016224814 A JP2016224814 A JP 2016224814A
Authority
JP
Japan
Prior art keywords
information
context
performance profile
profile information
performance
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
JP2015112422A
Other languages
English (en)
Other versions
JP6471615B2 (ja
Inventor
優太 向井
Yuta Mukai
優太 向井
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 Ltd
Original Assignee
Fujitsu 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 Ltd filed Critical Fujitsu Ltd
Priority to JP2015112422A priority Critical patent/JP6471615B2/ja
Priority to US15/083,342 priority patent/US10102099B2/en
Publication of JP2016224814A publication Critical patent/JP2016224814A/ja
Application granted granted Critical
Publication of JP6471615B2 publication Critical patent/JP6471615B2/ja
Active 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
    • 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/3409Recording 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 for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3089Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
    • G06F11/3093Configuration details thereof, e.g. installation, enabling, spatial arrangement of the probes
    • 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
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • 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/3409Recording 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 for performance assessment
    • G06F11/3419Recording 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 for performance assessment by assessing time
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】コンテキスト情報採取に起因する性能プロファイル情報の精度の悪化を抑えること。
【解決手段】性能プロファイル採取コード4が性能プロファイル情報8を作成し、コンテキスト採取コード5がコンテキスト情報9を作成する。そして、プロファイル情報作成部14の読込部15が性能プロファイル情報8とコンテキスト情報9を読み込み、集計部16がコンテキスト別に性能プロファイル情報8を集計し、コンテキスト別性能プロファイル情報10を作成する。そして、出力部17がコンテキスト別性能プロファイル情報10を出力する。
【選択図】図2

Description

本発明は、性能情報生成プログラム、性能情報生成方法及び情報処理装置に関する。
プログラムを実行してプログラムのある部分の実行時間、キャッシュミス数等の性能プロファイル情報を採取する際、ソースコード上では同じ部分でも、コンテキスト別に性能プロファイル情報を採取したい場合がある。ここで、コンテキストとは、プロファイル情報が採取される性能に関わり、かつ、実行時に決まる計算機の状態のことである。
コンテキストの例としては、性能プロファイル情報が採取される部分への呼び出し元のルーチンを辿ったコールパス、計算に使用する配列の値の特性値等がある。コンテキスト別に性能プロファイル情報を採取することによって、より有効な性能チューニングが行える、あるいは、性能調査時間が短縮する等の利点が得られる。
図20は、コンテキスト別の性能プロファイル情報の従来の採取方法を説明するための図である。図20に示すように、性能プロファイル情報の採取対象のソースコード2には、採取対象の範囲のコードと採取対象範囲外のコードが含まれる。採取対象のコードは採取対象範囲外のコードに挟まれる。
また、性能プロファイル情報の採取機能の付加後の採取機能付加コード90には、採取対象の範囲のコードと採取対象範囲外のコードに加えて、採取用のコードが含まれる。採取用のコードには、採取開始時点でのコンテキスト情報採取コード、採取開始時点での性能プロファイル情報採取コード、採取終了時点での性能プロファイル情報採取コード及び採取終了時点でのコンテキスト情報採取コードがある。
採取対象の範囲のコードが実行される直前に、採取開始時点でのコンテキスト情報採取コードと採取開始時点での性能プロファイル情報採取コードが実行される。そして、採取対象の範囲のコードが実行された直後に、採取終了時点での性能プロファイル情報採取コードと採取終了時点でのコンテキスト情報採取コードが実行される。
なお、性能チューニングに関する技術として、性能情報及び測定条件と次回の測定条件がリンク可能に管理された情報に基づいて次回の測定環境を自動的に設定することで、性能チューニングを効率良く行う従来技術がある。
また、並列実行プログラムの並列実行単位ごとに実行回数を計測し、計測結果を解析して並列実行における負荷の分散を示す解析結果を出力することで、並列実行プログラムのチューニングを支援する従来技術がある。
また、プログラムに対して性能解析コードを埋め込み、プロセッサバスの状態を観測してプログラム動作との関連づけを行い、処理終了後に結果をホスト計算機に転送して性能解析を行うことで、特別なハードウェアを用いることなく性能解析を行う従来技術がある。
特開2007−233855号公報 特開2004−102594号公報 特開2007−304946号公報
性能プロファイル情報に関して図20に示した従来の採取方法には、コンテキスト情報と性能プロファイル情報を同時に採取するため、コンテキスト情報を採取しない場合と比較して性能が変化し、性能プロファイル情報の精度が悪くなるという問題がある。
本発明は、1つの側面では、性能プロファイル情報の精度の悪化を抑えることを目的とする。
本願の開示する性能情報生成プログラムは、1つの態様において、コンピュータに、コンテキスト情報と性能プロファイル情報を読み込ませる処理を実行させる。前記コンテキスト情報は、コンテキスト情報を収集しながら処理を行うコンテキスト情報収集プログラムが出力する。前記性能プロファイル情報は、性能プロファイル情報を収集しながら処理を行う性能プロファイル情報収集プログラムが出力する。そして、前記性能情報生成プログラムは、読み込んだコンテキスト情報及び性能プロファイル情報に基づいてコンテキスト別に性能プロファイル情報を集計し、コンテキスト別に集計した性能プロファイル情報を出力する処理をコンピュータに実行させる。
1実施態様によれば、性能プロファイル情報の精度の悪化を抑えることができる。
図1は、実施例に係る情報処理装置によるコンテキスト別の性能プロファイル情報の採取方法を説明するための図である。 図2は、実施例に係る情報処理装置の機能構成を示す図である。 図3は、ソースコードの一例を示す図である。 図4は、範囲指定の一例を示す図である。 図5は、性能プロファイル採取コードの一例を示す図である。 図6は、コンテキスト採取コードの一例を示す図である。 図7は、性能プロファイル採取コードの他の例を示す図である。 図8は、コンテキスト採取コードの他の例を示す図である。 図9は、図5に示した性能プロファイル採取コードが実行されて採取された性能プロファイル情報を示す図である。 図10は、図6に示したコンテキスト採取コードが実行されて採取されたコンテキスト情報を示す図である。 図11は、図7に示した性能プロファイル採取コードが実行されて採取された性能プロファイル情報を示す図である。 図12は、図8に示したコンテキスト採取コードが実行されて採取されたコンテキスト情報を示す図である。 図13は、実施例に係る情報処理装置によるコンテキスト別性能プロファイル情報の採取処理のフローを示すフローチャートである。 図14は、コンテキスト別性能プロファイル情報を作成する処理のフローを示すフローチャートである。 図15は、コールパス毎のキャッシュミス数を集計する処理のフローを示すフローチャートである。 図16は、コールパス別のキャッシュミス数を示す図である。 図17は、配列の特性値を4区間に分けてそれぞれの合計実行時間を集計する処理のフローを示すフローチャートである。 図18は、特性値区間別の実行時間を示す図である。 図19は、実施例に係る性能情報生成プログラムを実行するコンピュータの構成を示す図である。 図20は、コンテキスト別の性能プロファイル情報の従来の採取方法を説明するための図である。
以下に、本願の開示する性能情報生成プログラム、性能情報生成方法及び情報処理装置の実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。
まず、実施例に係る情報処理装置によるコンテキスト別の性能プロファイル情報の採取方法について説明する。図1は、実施例に係る情報処理装置によるコンテキスト別の性能プロファイル情報の採取方法を説明するための図である。図1に示すように、実施例に係る情報処理装置は、対象のソースコード2から、性能プロファイル採取コード4とコンテキスト採取コード5を作成する。性能プロファイル採取コード4は、順序付けて性能プロファイル情報のみを採取する機能が付加されたコードである。コンテキスト採取コード5は、順序付けてコンテキスト情報のみを採取する機能が付加されたコードである。
性能プロファイル採取コード4には、採取対象の範囲のコードと採取対象範囲外のコードに加えて、性能プロファイル情報の採取用コードが含まれる。性能プロファイル情報の採取用コードには、採取開始時点での性能プロファイル情報を実行順序と対応付けて採取するコードと、採取終了時点での性能プロファイル情報を実行順序と対応付けて採取するコードがある。
性能プロファイル採取コード4の実行では、採取対象の範囲のコードが実行される直前に、採取開始時点での性能プロファイル情報を実行順序と対応付けて採取するコードが実行される。そして、採取対象の範囲のコードが実行された直後に、採取終了時点での性能プロファイル情報を実行順序と対応付けて採取するコードが実行される。
コンテキスト採取コード5には、採取対象の範囲のコードと採取対象範囲外のコードに加えてコンテキスト情報の採取用コードが含まれる。コンテキスト情報の採取用コードには、採取開始時点でのコンテキスト情報を実行順序と対応付けて採取するコードと、採取終了時点でのコンテキスト情報を実行順序と対応付けて採取するコードがある。
コンテキスト採取コード5の実行では、採取対象の範囲のコードが実行される直前に、採取開始時点でのコンテキスト情報を実行順序と対応付けて採取するコードが実行される。そして、採取対象の範囲のコードが実行された直後に、採取終了時点でのコンテキスト情報を実行順序と対応付けて採取するコードが実行される。
そして、実施例に係る情報処理装置は、順序付けて性能プロファイル情報のみを採取した結果と、順序付けてコンテキスト情報のみを採取した結果を基に、コンテキスト別に性能プロファイル情報を集計する。実施例に係る情報処理装置は、測定対象の範囲が実行された順序毎の性能プロファイル情報とコンテキスト情報から順序に基づいて集計を行う。
このように、実施例に係る情報処理装置は、性能プロファイル情報を採取する動作のみが追加された状態で性能プロファイル情報を測定するので、高精度な性能プロファイル情報をコンテキスト別に得ることができる。
例えば、採取する性能プロファイル情報がキャッシュミス数であり、コンテキスト情報がコールパスであるとする。従来の方法では、キャッシュミス数を採取するときにコールパスの採取も行うため、コールパス採取に伴いキャッシュから追い出された要素を測定範囲内で再度キャッシュに読み直すこと、すなわちキャッシュミスが発生する場合がある。そのため、性能プロファイル情報を採取しない通常の実行方法で発生するキャッシュミス数より過剰な値が測定される可能性がある。
コールパスの採取では、各呼び出し元のアドレスなどを読む必要があるが、これらのメモリ上の格納場所は連続していない場合が多いため、採取に伴い少なくともコールパスの長さと同じ数の要素をキャッシュから追い出す可能性がある。その結果、キャッシュミス数は、コールパスの長さと同じ数の分、過剰に測定される場合がある。
実施例に係る採取方法で得られるキャッシュミス数は、キャッシュミス数のみを採取するというオーバヘッドの少ない方法で得られたものであるため、性能プロファイル情報を採取しない通常の実行方法で発生するキャッシュミス数に最も近い値となる。
別の例として、採取する性能プロファイル情報が実行時間であり、コンテキスト情報が計算に使用する配列の特性値であるとする。性能分析に有用な特性値としては、ループ中の分岐について、反復毎にどの方向に分岐するかを決める配列について、ある方向に分岐させる値の割合などが考えられる。このような特性値を計算するためには、全ての配列要素にアクセスする必要があるため、通常の実行時と比べてキャッシュメモリの使用状況が変化し、実行時間が大きく影響を受ける。このため、実施例に係る情報処理装置は、実行時間と配列の特性値を別個に採取した結果を集計することで、通常の実行時に近い実行時間を得ることができる。
次に、実施例に係る情報処理装置の機能構成について説明する。図2は、実施例に係る情報処理装置の機能構成を示す図である。図2に示すように、実施例に係る情報処理装置1は、性能情報生成部1aを有する。性能情報生成部1aは、コンテキスト別の性能プロファイル情報を生成する。性能情報生成部1aは、コード作成部11と、コンパイル部12と、実行部13と、プロファイル情報作成部14とを有する。
コード作成部11は、ソースコード2と範囲指定3を入力し、性能プロファイル採取コード4とコンテキスト採取コード5を作成して出力する。図3は、ソースコード2の一例を示す図である。図3は、ソースコード2の一例として関数(Function)Aを示す。
範囲指定3は、ソースコード2の中で性能プロファイル情報を採取する範囲を指定する。図4は、範囲指定3の一例を示す図である。図4は、範囲指定3の一例として関数Aの始めから終わりまでの指定を示す。
図5は、性能プロファイル採取コード4の一例を示す図である。図5は、順序付けてキャッシュミス数を採取するためのコードが関数Aの処理の前後に埋め込まれた場合を示す。図5において、「順序番号=順序番号+1」は、関数Aが実行される毎に順序付けのための番号である順序番号を更新するために埋め込まれたコードである。
「整数配列[順序番号]=この時点の総キャッシュミス数」は、キャッシュミス数を記憶する配列である整数配列に順序番号をインデクスとして採取開始時点でのキャッシュミス数を格納するために埋め込まれたコードである。「整数配列[順序番号]=この時点の総キャッシュミス数−整数配列[順序番号]」は、関数Aの始めから終わりまでのキャッシュミス数を整数配列に順序番号をインデクスとして格納するために埋め込まれたコードである。
図6は、コンテキスト採取コード5の一例を示す図である。図6は、順序付けてコールパスを採取するためのコードが関数Aの処理の前に埋め込まれた場合を示す。図6では、コールパスは関数Aの処理の前後で変化しないため、関数Aの処理の後へのコールパスを採取するコードの埋め込みは省略されている。図6において、「この時点のコールパスを計算して文字列の形式で出力」は、コールパスを表す文字列を作成するために埋め込まれたコードである。「文字列配列[順序番号]=この時点のコールパスの文字列」は、コールパスを表す文字列をコールパスを記憶する配列である文字列配列に順序番号をインデクスとして格納するために埋め込まれたコードである。
図7は、性能プロファイル採取コード4の他の例を示す図である。図7は、順序付けて実行時間を採取するためのコードが関数Aの処理の前後に埋め込まれた場合を示す。図7において、「実数配列[順序番号]=この時点の時刻」は、実行時間を記憶する配列である実数配列に順序番号をインデクスとして採取開始時点での実行時間を格納するために埋め込まれたコードである。「実数配列[順序番号]=この時点の時刻−実数配列[順序番号]」は、関数Aの始めから終わりまでの実行時間を実数配列に順序番号をインデクスとして格納するために埋め込まれたコードである。
図8は、コンテキスト採取コード5の他の例を示す図である。図8は、順序付けて配列の特性値を採取するためのコードが関数Aの処理の前に埋め込まれた場合を示す。図8では、配列の特性値は関数Aの処理の前後で変化しないため、関数Aの処理の後への配列の特性値を採取するコードの埋め込みは省略されている。図8において、「計算に使用する配列の特性値を計算」は、計算に使用する配列の特性値を計算するために埋め込まれたコードである。「実数配列[順序番号]=計算に使用する配列の特性値」は、計算に使用する配列の特性値を記憶する配列である実数配列に順序番号をインデクスとして格納するために埋め込まれたコードである。なお、ここでは、特性値は0から1の実数であり、0から1を4つに等分した区間それぞれの実行時間が必要であるとする。
図2に戻って、コンパイル部12は、性能プロファイル採取コード4を入力してコンパイルを行い、性能プロファイル採取バイナリ6を出力する。また、コンパイル部12は、コンテキスト採取コード5を入力してコンパイルを行い、コンテキスト採取バイナリ7を出力する。
実行部13は、性能プロファイル採取バイナリ6を入力して実行し、性能プロファイル情報8を出力する。また、実行部13は、コンテキスト採取バイナリ7を入力して実行し、コンテキスト情報9を出力する。図9は、図5に示した性能プロファイル採取コード4が実行されて採取された性能プロファイル情報8を示す図である。図9に示すように、性能プロファイル情報8は、順序番号とキャッシュミス数とが対応付けられた情報である。例えば、順序番号が1のとき、関数Aの始めから終わりまでのキャッシュミス数は10である。
図10は、図6に示したコンテキスト採取コード5が実行されて採取されたコンテキスト情報9を示す図である。図10に示すように、コンテキスト情報9は、順序番号とコールパスとが対応付けられた情報である。例えば、順序番号が1のとき、関数Dが関数Bを呼び出し、関数Bが関数Aを呼び出す。
図11は、図7に示した性能プロファイル採取コード4が実行されて採取された性能プロファイル情報8を示す図である。図11に示すように、性能プロファイル情報8は、順序番号と実行時間とが対応付けられた情報である。実行時間の単位はμ(マイクロ)秒である。例えば、順序番号が1のとき、関数Aの始めから終わりまでの実行時間は10μ秒である。
図12は、図8に示したコンテキスト採取コード5が実行されて採取されたコンテキスト情報9を示す図である。図12に示すように、コンテキスト情報9は、順序番号と配列の特性値とが対応付けられた情報である。図12では、特性値は%表示されている。例えば、順序番号が1のとき、配列の特性値は10%である。
図2に戻って、プロファイル情報作成部14は、性能プロファイル情報8及びコンテキスト情報9を入力してコンテキスト別性能プロファイル情報10を作成して出力する。プロファイル情報作成部14は、読込部15と、集計部16と、出力部17とを有する。
読込部15は、性能プロファイル情報8及びコンテキスト情報9を読み込む。集計部16は、性能プロファイル情報8とコンテキスト情報9に基づいてコンテキスト別性能プロファイル情報10を作成する。出力部17は、コンテキスト別性能プロファイル情報10をファイルに出力する。
次に、実施例に係る情報処理装置1によるコンテキスト別性能プロファイル情報10の採取処理のフローについて説明する。図13は、実施例に係る情報処理装置1によるコンテキスト別性能プロファイル情報10の採取処理のフローを示すフローチャートである。図13に示すように、コード作成部11が、ソースコード2と範囲指定3に基づいて、性能プロファイル採取コード4とコンテキスト採取コード5を作成する(ステップS1)。
そして、コンパイル部12が、性能プロファイル採取コード4とコンテキスト採取コード5をコンパイルし、性能プロファイル採取バイナリ6とコンテキスト採取バイナリ7を作成する(ステップS2)。そして、実行部13が、性能プロファイル採取バイナリ6及びコンテキスト採取バイナリ7をそれぞれ実行し、順序付けされた性能プロファイル情報8と順序付けされたコンテキスト情報9を作成する(ステップS3)。
そして、プロファイル情報作成部14が、順序付けされた性能プロファイル情報8と順序付けされたコンテキスト情報9を組合せて、コンテキスト別性能プロファイル情報10を作成する(ステップS4)。
このように、情報処理装置1は、順序付けされた性能プロファイル情報8と順序付けされたコンテキスト情報9を別に採取することによって、性能プロファイル情報8の精度の悪化を抑えることができる。
次に、ステップS4に示した処理のフロー、すなわちコンテキスト別性能プロファイル情報10を作成する処理のフローについて説明する。図14は、コンテキスト別性能プロファイル情報10を作成する処理のフローを示すフローチャートである。
図14に示すように、プロファイル情報作成部14は、処理中の順序番号を示すsを1で初期化し(ステップS11)、sが順序番号の最大値以下であるか否かを判定する(ステップS12)。
その結果、sが順序番号の最大値以下である場合には、プロファイル情報作成部14は、順序番号sに対応する性能プロファイル情報をpとし、順序番号sに対応するコンテキスト情報をcとする(ステップS13)。
そして、プロファイル情報作成部14は、c_nをcの値が属するカテゴリ番号とし、arr[c_n][num[c_n]]にpを格納し、num[c_n]に1を加え、sに1を加える(ステップS14)。ここで、arrは、カテゴリ毎に性能プロファイル情報8を記憶する配列である。また、num[c_n]は、カテゴリ毎の性能プロファイル情報8のインデクスであり、初期値は1である。すなわち、プロファイル情報作成部14は、cをカテゴリに分けて、カテゴリ毎に順に性能プロファイル情報8を保存する。そして、プロファイル情報作成部14は、ステップS12に戻る。
一方、sが順序番号の最大値以下でない場合には、プロファイル情報作成部14は、全てのc_nについて、c_nと、arr[c_n][1]〜arr[c_n][num[c_n]−1]の統計量を対応させて出力する(ステップS15)。ここで、統計量は、例えば、合計値、平均値等である。
このように、プロファイル情報作成部14は、順序付けされた性能プロファイル情報8と順序付けされたコンテキスト情報9を組合せることで、コンテキスト別性能プロファイル情報10を作成することができる。
次に、コンテキスト別性能プロファイル情報10を作成する処理の具体例について図15〜図18を用いて説明する。図15は、コールパス毎のキャッシュミス数を集計する処理のフローを示すフローチャートである。
図15に示すように、プロファイル情報作成部14は、処理中の順序番号を示すsを1で初期化し(ステップS21)、sが順序番号の最大値以下であるか否かを判定する(ステップS22)。
その結果、sが順序番号の最大値以下である場合には、プロファイル情報作成部14は、順序番号sに対応するキャッシュミス数をnとし、順序番号sに対応するコールパスをcallpathとする(ステップS23)。
そして、プロファイル情報作成部14は、cachemiss[callpath]が定義済であるか否かを判定し(ステップS24)、定義済でない場合には、cachemiss[callpath]を0に初期化する(ステップS25)。ここで、cachemissは、キャッシュミス数の配列であり、callpathをインデクスとする。
そして、プロファイル情報作成部14は、cachemiss[callpath]にnを加え、sに1を加え(ステップS26)、ステップS22に戻る。なお、「x+=n」は、xにnを加えることを表す。
一方、ステップS22において、sが順序番号の最大値以下でない場合には、プロファイル情報作成部14は、全てのcallpathについて、callpathとcachemiss[callpath]を対応させて出力する(ステップS27)。
図16は、図9に示した順序番号毎のキャッシュミス数及び図10に示した順序番号毎のコールパスに基づいて、プロファイル情報作成部14により作成されたコールパス別のキャッシュミス数を示す図である。図16に示すように、2つのコールパスについて、キャッシュミス数が集計されている。例えば、関数Dが関数Bを呼び出し、関数Bが関数Aを呼び出す場合のキャッシュミス数は、順序番号が1、3及び5のキャッシュミス数の合計であり、10+0+10=20である。
このように、プロファイル情報作成部14は、順序番号に対応するキャッシュミス数をコールパス毎に合計することによって、コールパス別のキャッシュミス数の情報を作成することができる。
図17は、配列の特性値を4区間に分けてそれぞれの合計実行時間を集計する処理のフローを示すフローチャートである。図17に示すように、プロファイル情報作成部14は、処理中の順序番号を示すsを1で初期化し、配列の特性値の4つの区間の実行時間を記憶する配列であるtimeの各要素を0に初期化する(ステップS31)。iは、区間を示すインデクスである。そして、プロファイル情報作成部14は、sが順序番号の最大値以下であるか否かを判定する(ステップS32)。
その結果、sが順序番号の最大値以下である場合には、プロファイル情報作成部14は、順序番号sに対応する実行時間をtとし、順序番号sに対応する特性値をcとする(ステップS33)。
そして、プロファイル情報作成部14は、cに対応する区間のtimeの値にtを加え、sに1を加える(ステップS34)。なお、「floor(x)」は、実数xに対してx以下の最大の整数を計算する床関数である。そして、プロファイル情報作成部14は、ステップS32に戻る。
一方、ステップS32において、sが順序番号の最大値以下でない場合には、プロファイル情報作成部14は、4つの区間それぞれについて、区間と実行時間を対応させて出力する(ステップS35)。
図18は、図11に示した順序番号毎の実行時間及び図12に示した順序番号毎の配列特性値に基づいて、プロファイル情報作成部14により作成された特性値区間別の実行時間を示す図である。図18に示すように、4つの区間について、実行時間が集計されている。例えば、特性値の区間が0以上25%未満の場合には、順序番号が1と6の実行時間の合計であり、10+20=30である。
このように、プロファイル情報作成部14は、順序番号に対応する実行時間を特性値の区間毎に合計することによって、特性値の区間別の実行時間の情報を作成することができる。
上述してきたように、実施例では、プロファイル情報作成部14の読込部15が性能プロファイル情報8とコンテキスト情報9を読み込み、集計部16がコンテキスト別に性能プロファイル情報8を集計し、コンテキスト別性能プロファイル情報10を作成する。そして、出力部17がコンテキスト別性能プロファイル情報10を出力する。したがって、性能情報生成部1aは、性能プロファイル情報8とコンテキスト情報9を別々に作成することでコンテキスト別性能プロファイル情報10を作成することができ、性能プロファイル情報の精度の悪化を抑えることができる。
また、実施例では、実行部13は、順序番号に対応付けて性能プロファイル情報8及びコンテキスト情報9を作成し、集計部16は、順序番号に基づいて性能プロファイル情報8とコンテキスト情報9を組合せることでコンテキスト別性能プロファイル情報10を作成する。したがって、性能情報生成部1aは、性能プロファイル情報8とコンテキスト情報9を別々に作成することができる。
また、実施例では、読込部15は、性能プロファイル情報8としてキャッシュミス数の情報を読み込み、コンテキスト情報9としてコールパスの情報を読み込む。したがって、性能情報生成部1aは、コンテキスト別性能プロファイル情報10の例として、コールパス別のキャッシュミス数の情報を作成することができる。
また、実施例では、読込部15は、性能プロファイル情報8として実行時間の情報を読み込み、コンテキスト情報9として配列の特性値を読み込む。したがって、性能情報生成部1aは、コンテキスト別性能プロファイル情報10の例として、特性値の区間別の実行時間の情報を作成することができる。
また、実施例では、コード作成部11は、ソースコード2を入力して性能プロファイル採取コード4及びコンテキスト採取コード5を作成する。そして、性能プロファイル採取コード4及びコンテキスト採取コード5が実行部13により実行されることにより、それぞれ性能プロファイル情報8及びコンテキスト情報9が作成される。したがって、性能チューニングを行う技術者は、簡単にコンテキスト別性能プロファイル情報10を得ることができる。
なお、実施例では、性能情報生成部1aについて説明したが、性能情報生成部1aが有する構成をソフトウェアによって実現することで、同様の機能を有する性能情報生成プログラムを得ることができる。そこで、性能情報生成プログラムを実行するコンピュータについて説明する。
図19は、実施例に係る性能情報生成プログラムを実行するコンピュータの構成を示す図である。図19に示すように、コンピュータ20は、メインメモリ21と、CPU(Central Processing Unit)22と、LAN(Local Area Network)インタフェース23と、HDD(Hard Disk Drive)24とを有する。また、コンピュータ20は、スーパーIO(Input Output)25と、DVI(Digital Visual Interface)26と、ODD(Optical Disk Drive)27とを有する。
メインメモリ21は、プログラムやプログラムの実行途中結果などを記憶するメモリである。CPU22は、メインメモリ21からプログラムを読み出して実行する中央処理装置である。CPU22は、メモリコントローラを有するチップセットを含む。
LANインタフェース23は、コンピュータ20をLAN経由で他のコンピュータに接続するためのインタフェースである。HDD24は、プログラムやデータを格納するディスク装置であり、スーパーIO25は、マウスやキーボードなどの入力装置を接続するためのインタフェースである。DVI26は、液晶表示装置を接続するインタフェースであり、ODD27は、DVDの読み書きを行う装置である。
LANインタフェース23は、PCIエクスプレス(PCIe)によりCPU22に接続され、HDD24及びODD27は、SATA(Serial Advanced Technology Attachment)によりCPU22に接続される。スーパーIO25は、LPC(Low Pin Count)によりCPU22に接続される。
そして、コンピュータ20において実行される性能情報生成プログラムは、DVDに記憶され、ODD27によってDVDから読み出されてコンピュータ20にインストールされる。あるいは、性能情報生成プログラムは、LANインタフェース23を介して接続された他のコンピュータシステムのデータベースなどに記憶され、これらのデータベースから読み出されてコンピュータ20にインストールされる。そして、インストールされた性能情報生成プログラムは、HDD24に記憶され、メインメモリ21に読み出されてCPU22によって実行される。
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)コンピュータに、
コンテキスト情報を収集しながら処理を行うコンテキスト情報収集プログラムが出力するコンテキスト情報と、性能プロファイル情報を収集しながら処理を行う性能プロファイル情報収集プログラムが出力する性能プロファイル情報を読み込み、
読み込んだコンテキスト情報及び性能プロファイル情報に基づいてコンテキスト別に性能プロファイル情報を集計し、
コンテキスト別に集計した性能プロファイル情報を出力する
処理を実行させることを特徴とする性能情報生成プログラム。
(付記2)前記コンテキスト情報収集プログラムは、実行順序に対応付けて前記コンテキスト情報を収集し、
前記性能プロファイル情報収集プログラムは、実行順序に対応付けて前記性能プロファイル情報を収集し、
前記集計する処理は、実行順序に基づいて前記コンテキスト情報と前記性能プロファイル情報とを組合せることによってコンテキスト別に性能プロファイル情報を集計することを特徴とする付記1に記載の性能情報生成プログラム。
(付記3)前記コンテキスト情報はコールパス情報であり、前記性能プロファイル情報はキャッシュミス数であることを特徴とする付記1又は2に記載の性能情報生成プログラム。
(付記4)前記コンテキスト情報は所定の特性値に関する情報であり、前記性能プロファイル情報は実行時間であることを特徴とする付記1又は2に記載の性能情報生成プログラム。
(付記5)ソースプログラムから前記コンテキスト情報収集プログラム及び前記性能プロファイル情報収集プログラムを作成する処理をさらにコンピュータに実行させることを特徴とする付記1〜4のいずれか1つに記載の性能情報生成プログラム。
(付記6)コンピュータが、
コンテキスト情報を収集しながら処理を行うコンテキスト情報収集プログラムが出力するコンテキスト情報と、性能プロファイル情報を収集しながら処理を行う性能プロファイル情報収集プログラムが出力する性能プロファイル情報を読み込み、
読み込んだコンテキスト情報及び性能プロファイル情報に基づいてコンテキスト別に性能プロファイル情報を集計し、
コンテキスト別に集計した性能プロファイル情報を出力する
処理を実行することを特徴とする性能情報生成方法。
(付記7)コンテキスト情報を収集しながら処理を行うコンテキスト情報収集プログラムが出力するコンテキスト情報と、性能プロファイル情報を収集しながら処理を行う性能プロファイル情報収集プログラムが出力する性能プロファイル情報を読み込む読込部と、
前記読込部により読み込まれたコンテキスト情報及び性能プロファイル情報に基づいてコンテキスト別に性能プロファイル情報を集計する集計部と、
前記集計部によりコンテキスト別に集計された性能プロファイル情報を出力する出力部と
を有することを特徴とする情報処理装置。
(付記8)コンピュータに、
コンテキスト情報を収集しながら処理を行うコンテキスト情報収集プログラムが出力するコンテキスト情報と、性能プロファイル情報を収集しながら処理を行う性能プロファイル情報収集プログラムが出力する性能プロファイル情報を読み込み、
読み込んだコンテキスト情報及び性能プロファイル情報に基づいてコンテキスト別に性能プロファイル情報を集計し、
コンテキスト別に集計した性能プロファイル情報を出力する
処理を実行させることを特徴とする性能情報生成プログラムを記憶したコンピュータ読み取り可能記憶媒体。
(付記9)メモリと該メモリに接続されたプロセッサとを有する情報処理装置において、
前記プロセッサに、
コンテキスト情報を収集しながら処理を行うコンテキスト情報収集プログラムが出力するコンテキスト情報と、性能プロファイル情報を収集しながら処理を行う性能プロファイル情報収集プログラムが出力する性能プロファイル情報を読み込み、
読み込んだコンテキスト情報及び性能プロファイル情報に基づいてコンテキスト別に性能プロファイル情報を集計し、
コンテキスト別に集計した性能プロファイル情報を出力する
処理を実行させることを特徴とする情報処理装置。
1 情報処理装置
1a 性能情報生成部
2 ソースコード
3 範囲指定
4 性能プロファイル採取コード
5 コンテキスト採取コード
6 性能プロファイル採取バイナリ
7 コンテキスト採取バイナリ
8 性能プロファイル情報
9 コンテキスト情報
10 コンテキスト別性能プロファイル情報
11 コード作成部
12 コンパイル部
13 実行部
14 プロファイル情報作成部
15 読込部
16 集計部
17 出力部
20 コンピュータ
21 メインメモリ
22 CPU
23 LANインタフェース
24 HDD
25 スーパーIO
26 DVI
27 ODD
90 採取機能付加コード

Claims (7)

  1. コンピュータに、
    コンテキスト情報を収集しながら処理を行うコンテキスト情報収集プログラムが出力するコンテキスト情報と、性能プロファイル情報を収集しながら処理を行う性能プロファイル情報収集プログラムが出力する性能プロファイル情報を読み込み、
    読み込んだコンテキスト情報及び性能プロファイル情報に基づいてコンテキスト別に性能プロファイル情報を集計し、
    コンテキスト別に集計した性能プロファイル情報を出力する
    処理を実行させることを特徴とする性能情報生成プログラム。
  2. 前記コンテキスト情報収集プログラムは、実行順序に対応付けて前記コンテキスト情報を収集し、
    前記性能プロファイル情報収集プログラムは、実行順序に対応付けて前記性能プロファイル情報を収集し、
    前記集計する処理は、実行順序に基づいて前記コンテキスト情報と前記性能プロファイル情報とを組合せることによってコンテキスト別に性能プロファイル情報を集計することを特徴とする請求項1に記載の性能情報生成プログラム。
  3. 前記コンテキスト情報はコールパス情報であり、前記性能プロファイル情報はキャッシュミス数であることを特徴とする請求項1又は2に記載の性能情報生成プログラム。
  4. 前記コンテキスト情報は所定の特性値に関する情報であり、前記性能プロファイル情報は実行時間であることを特徴とする請求項1又は2に記載の性能情報生成プログラム。
  5. ソースプログラムから前記コンテキスト情報収集プログラム及び前記性能プロファイル情報収集プログラムを作成する処理をさらにコンピュータに実行させることを特徴とする請求項1〜4のいずれか1つに記載の性能情報生成プログラム。
  6. コンピュータが、
    コンテキスト情報を収集しながら処理を行うコンテキスト情報収集プログラムが出力するコンテキスト情報と、性能プロファイル情報を収集しながら処理を行う性能プロファイル情報収集プログラムが出力する性能プロファイル情報を読み込み、
    読み込んだコンテキスト情報及び性能プロファイル情報に基づいてコンテキスト別に性能プロファイル情報を集計し、
    コンテキスト別に集計した性能プロファイル情報を出力する
    処理を実行することを特徴とする性能情報生成方法。
  7. コンテキスト情報を収集しながら処理を行うコンテキスト情報収集プログラムが出力するコンテキスト情報と、性能プロファイル情報を収集しながら処理を行う性能プロファイル情報収集プログラムが出力する性能プロファイル情報を読み込む読込部と、
    前記読込部により読み込まれたコンテキスト情報及び性能プロファイル情報に基づいてコンテキスト別に性能プロファイル情報を集計する集計部と、
    前記集計部によりコンテキスト別に集計された性能プロファイル情報を出力する出力部と
    を有することを特徴とする情報処理装置。
JP2015112422A 2015-06-02 2015-06-02 性能情報生成プログラム、性能情報生成方法及び情報処理装置 Active JP6471615B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015112422A JP6471615B2 (ja) 2015-06-02 2015-06-02 性能情報生成プログラム、性能情報生成方法及び情報処理装置
US15/083,342 US10102099B2 (en) 2015-06-02 2016-03-29 Performance information generating method, information processing apparatus and computer-readable storage medium storing performance information generation program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015112422A JP6471615B2 (ja) 2015-06-02 2015-06-02 性能情報生成プログラム、性能情報生成方法及び情報処理装置

Publications (2)

Publication Number Publication Date
JP2016224814A true JP2016224814A (ja) 2016-12-28
JP6471615B2 JP6471615B2 (ja) 2019-02-20

Family

ID=57451774

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015112422A Active JP6471615B2 (ja) 2015-06-02 2015-06-02 性能情報生成プログラム、性能情報生成方法及び情報処理装置

Country Status (2)

Country Link
US (1) US10102099B2 (ja)
JP (1) JP6471615B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
GB2589900B (en) * 2019-12-12 2022-06-01 Sony Interactive Entertainment Inc Apparatus and method for source code optimisation

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11212837A (ja) * 1998-01-26 1999-08-06 Nec Corp 言語処理方法及び言語処理装置並びに言語処理プログラムを記録した記憶媒体
JP2008257287A (ja) * 2007-03-30 2008-10-23 Ntt Data Corp プログラムプロファイリング装置、プログラムプロファイリング方法、及びプログラム
JP2009211424A (ja) * 2008-03-04 2009-09-17 Mitsubishi Electric Corp 最適化箇所判定装置及び最適化箇所判定システム及びコンピュータプログラム及び最適化箇所判定方法
JP2010079508A (ja) * 2008-09-25 2010-04-08 Fujitsu Microelectronics Ltd プロファイリング方法およびプロファイリングプログラム
JP2011013867A (ja) * 2009-06-30 2011-01-20 Panasonic Corp データ処理装置、性能評価解析システム
JP2011022993A (ja) * 2009-07-15 2011-02-03 Internatl Business Mach Corp <Ibm> マルチパス動的プロファイリングのためのコンピュータに実行させる方法、システム及びコンピュータ・プログラム

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6327699B1 (en) * 1999-04-30 2001-12-04 Microsoft Corporation Whole program path profiling
JP2004102594A (ja) 2002-09-09 2004-04-02 Fujitsu Ltd 並列実行プログラムの実行回数解析方法および並列実行プログラムの実行回数解析プログラム
US20050273310A1 (en) * 2004-06-03 2005-12-08 Newburn Chris J Enhancements to performance monitoring architecture for critical path-based analysis
US7644397B2 (en) * 2004-06-19 2010-01-05 Apple Inc. Software performance analysis using data mining
US8301868B2 (en) * 2005-09-23 2012-10-30 Intel Corporation System to profile and optimize user software in a managed run-time environment
US8266605B2 (en) * 2006-02-22 2012-09-11 Wind River Systems, Inc. Method and system for optimizing performance based on cache analysis
JP4957017B2 (ja) 2006-03-02 2012-06-20 富士通セミコンダクター株式会社 性能チューニング方法及び装置、プログラム及び記憶媒体
JP2007304946A (ja) 2006-05-12 2007-11-22 Nec Corp 性能評価システム、および性能評価方法、性能評価プログラム
US8136124B2 (en) * 2007-01-18 2012-03-13 Oracle America, Inc. Method and apparatus for synthesizing hardware counters from performance sampling
US7865669B2 (en) * 2007-08-02 2011-01-04 International Machines Business Corporation System and method for dynamically selecting the fetch path of data for improving processor performance
US8370821B2 (en) * 2007-08-21 2013-02-05 International Business Machines Corporation Method for enabling profile-based call site tailor-ing using profile gathering of cloned functions
US20100115494A1 (en) * 2008-11-03 2010-05-06 Gorton Jr Richard C System for dynamic program profiling
US8661415B2 (en) * 2011-06-06 2014-02-25 Microsoft Corporation Path-sensitive visualizations of aggregated profiling and trace date

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11212837A (ja) * 1998-01-26 1999-08-06 Nec Corp 言語処理方法及び言語処理装置並びに言語処理プログラムを記録した記憶媒体
JP2008257287A (ja) * 2007-03-30 2008-10-23 Ntt Data Corp プログラムプロファイリング装置、プログラムプロファイリング方法、及びプログラム
JP2009211424A (ja) * 2008-03-04 2009-09-17 Mitsubishi Electric Corp 最適化箇所判定装置及び最適化箇所判定システム及びコンピュータプログラム及び最適化箇所判定方法
JP2010079508A (ja) * 2008-09-25 2010-04-08 Fujitsu Microelectronics Ltd プロファイリング方法およびプロファイリングプログラム
JP2011013867A (ja) * 2009-06-30 2011-01-20 Panasonic Corp データ処理装置、性能評価解析システム
JP2011022993A (ja) * 2009-07-15 2011-02-03 Internatl Business Mach Corp <Ibm> マルチパス動的プロファイリングのためのコンピュータに実行させる方法、システム及びコンピュータ・プログラム

Also Published As

Publication number Publication date
US20160357655A1 (en) 2016-12-08
US10102099B2 (en) 2018-10-16
JP6471615B2 (ja) 2019-02-20

Similar Documents

Publication Publication Date Title
JP5648584B2 (ja) ソフトウェアアプリケーションのプロファイリング方法及び装置
CN101957773B (zh) 用于多轮次动态概要分析的方法及其系统
US7844928B2 (en) Method and apparatus for evaluating integrated circuit design performance using enhanced basic block vectors that include data dependent information
US7904870B2 (en) Method and apparatus for integrated circuit design model performance evaluation using basic block vector clustering and fly-by vector clustering
US7779393B1 (en) System and method for efficient verification of memory consistency model compliance
JP6303749B2 (ja) ソフトウェアプログラムを解析する方法及びシステム並びに非一時的なコンピュータ可読媒体
US8359291B2 (en) Architecture-aware field affinity estimation
US20140215483A1 (en) Resource-usage totalizing method, and resource-usage totalizing device
US9195730B2 (en) Verifying correctness of a database system via extended access paths
JP6471615B2 (ja) 性能情報生成プログラム、性能情報生成方法及び情報処理装置
US9292296B2 (en) Code optimization based on information of readably converted executed instruction groups represented in address file
US9182960B2 (en) Loop distribution detection program and loop distribution detection method
US9934006B2 (en) Scalable code division and workflow chart
US8756580B2 (en) Instance-based field affinity optimization
US20080162108A1 (en) Analyzing Software Performance Without Requiring Hardware
JP2007323299A (ja) レビュー実施順序決定装置、レビュー実施順序決定プログラム、レビュー実施順序決定プログラムが格納された記録媒体およびレビュー実施順序決定方法
JP2018084973A (ja) テストドライバ生成装置、テストドライバ生成方法及びテストドライバ生成プログラム
JP6473023B2 (ja) 性能評価モジュール及びこれを組み込んだ半導体集積回路
JP2020087087A (ja) 修正候補特定プログラム
JP6926921B2 (ja) コンパイルプログラム、コンパイル方法及び並列処理装置
JP2014194746A (ja) シミュレーション装置及びシミュレーション方法及びプログラム
US11989537B2 (en) Dataflow-based computer program visualization and refactoring
JP7091726B2 (ja) 情報処理装置,プログラム及び情報処理方法
US10534691B2 (en) Apparatus and method to improve accuracy of performance measurement for loop processing in a program code
US11126532B1 (en) Method and apparatus for a parallel, metadata-based trace analytics processor

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180306

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181114

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190107

R150 Certificate of patent or registration of utility model

Ref document number: 6471615

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150