(57)【要約】【課題】精度の高い実行時間の算出を可能とする。【解決手段】解析対象プログラムにおける複数の分岐情報に基づき、前記解析対象プログラムに含まれる複数の関数の実行割合情報を集計する集計部２３と、分岐トレース支援機能２６によって採取された複数の分岐情報に対し、集計部２３が集計した各関数の実行割合情報を用いて各関数の出現間隔を算出するとともに、複数の分岐情報の採取を開始した採取開始時刻と算出した各関数の出現間隔とに基づき、各関数の採取時刻を解析する解析部２４とを有する。【選択図】図１
2015210575.tif 000002
【特許請求の範囲】
【請求項１】
解析対象プログラムにおける複数の分岐情報に基づき、前記解析対象プログラムに含まれる複数の関数の実行割合情報を集計する集計部と、
分岐トレース支援機能によって採取された複数の分岐情報に対し、前記集計部が集計した各関数の実行割合情報を用いて各関数の出現間隔を算出するとともに、前記複数の分岐情報の採取を開始した採取開始時刻と算出した各関数の出現間隔とに基づき、各関数の採取時刻を解析する解析部と
を有することを特徴とする、情報処理装置。
【請求項２】
実行中の前記解析対象プログラムの実行状況を示す実行情報を採取する第１の採取部と、
前記第１の採取部による採取と同時に、前記解析対象プログラムにおける複数の分岐情報を採取する第２の採取部とを有し、
前記解析部が、前記第１の採取部が、前記実行情報の採取時刻を前記複数の分岐情報の採取を開始した採取開始時刻として前記各関数の採取時刻の解析を行なう
ことを特徴とする、請求項１記載の情報処理装置。
【請求項３】
前記解析部が、前記第１の採取部により連続して行なわれる２回の実行情報の採取間隔を、複数の関数の実行時間で均等に配分することにより、前記各関数の出現間隔を算出し、前記各関数の採取時刻の解析を行なうことを特徴とする、請求項２記載の情報処理装置。
【請求項４】
前記解析部が、前記第１の採取部により連続して行なわれる２回の実行情報の採取間隔に基づき、関数の各実行割合に応じた前記関数の出現間隔を算出し、前記各関数の採取時刻の解析を行なうことを特徴とする、請求項２又は３に記載の情報処理装置。
【請求項５】
前記解析部が、前記第１の採取部により連続して行なわれる２回の実行情報の採取間隔を、複数の関数実行時間の各実行割合に応じて配分することにより、前記各関数の出現間隔を算出し、前記各関数の採取時刻の解析を行なうことを特徴とする、請求項２〜４のいずれか１項に記載の情報処理装置。
【請求項６】
解析対象プログラムにおける複数の分岐情報に基づき、前記解析対象プログラムに含まれる複数の関数の実行割合情報を集計する処理と、
分岐トレース支援機能によって採取された複数の分岐情報に対し、前記集計部が集計した各関数の実行割合情報を用いて各関数の出現間隔を算出するとともに、前記複数の分岐情報の採取を開始した採取開始時刻と算出した各関数の出現間隔とに基づき、各関数の採取時刻を解析する処理と
を有することを特徴とする、処理方法。
【請求項７】
解析対象プログラムにおける複数の分岐情報に基づき、前記解析対象プログラムに含まれる複数の関数の実行割合情報を集計し、
分岐トレース支援機能によって採取された複数の分岐情報に対し、前記集計部が集計した各関数の実行割合情報を用いて各関数の出現間隔を算出するとともに、前記複数の分岐情報の採取を開始した採取開始時刻と算出した各関数の出現間隔とに基づき、各関数の採取時刻を解析する
処理をコンピュータに実行させることを特徴とする、処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置，処理方法及び処理プログラムに関する。
【背景技術】
【０００２】
計算機上で実行されるプログラムの性能を評価するプログラム性能解析方法として、例えば、性能プロファイラが知られている。性能プロファイラは、プログラムの実行を通して情報を収集することでプログラムの性能を解析する性能解析プログラムである。
性能プロファイラは、プログラム実行時の各種情報を収集し、特に、関数呼び出しの頻度やそれにかかる時間を計測する。
【０００３】
図１１は性能プロファイラの機能構成を模式的に示す図、図１２はその測定フェーズを説明する図、図１３は解析結果を例示する図である。
性能プロファイラは、図１１に示すように、ＰＭＣ（Performance Monitoring Counter）とサンプリングドライバ（Sampling Driver）とを備える。例えば、ＰＭＣとしての機能はＣＰＵ（Central Processing Unit）によって実現され、また、サンプリングドライバはカーネルの機能として実装される。
【０００４】
ＰＭＣは、一定間隔サンプリングドライバに対して割り込み（overflow割り込み，sampling割り込み）を発生させる。ＰＭＣは、レジスタのカウンタオーバーフロー割り込みを用いて、前述した割り込みを発生させる。図１１に示す例においては、ＰＭＣが１ｍｓ毎にオーバーフロー割り込みを発生させている。
サンプリングドライバは、ＰＭＣから割り込みが入力されると、解析対象である動作プログラムの情報を採取する。採取するプログラムの情報としては、例えば、実行中のプログラムのプロセスＩＤ（identification）や命令アドレスである。
【０００５】
図１２においては、３種類のプログラムＡ，Ｂ，Ｃが、Ａ，Ｃ，Ｂ，Ａの順に実行された状態を例示している。そして、１ｍｓ毎（1ms rate）に発生されるオーバーフロー割り込みに応じて、サンプリングドライバがその時点でＣＰＵ（Central Processing Unit）により実行されているプログラムの情報を採取する。
採取されたプログラムの情報に対しては統計的解析が行なわれる。図１３に示す例においては、各動作プログラムをＣＰＵ使用率でソートして示している。これにより、例えば、各プログラムの処理に要した時間をそれぞれ知ることができる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平１１−１４３７３５号公報
【特許文献２】特開平７−２１０６１号公報
【特許文献３】特開２００４−３０５１４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、近年においては、計算機の性能向上に伴い、解析対象のプログラムの実行時間が短くなってきており、例えば、そのレスポンスが１ｍｓ以内に行なわれることが求められる場合もある。すなわち、図１２に示す例において、図中に横軸方向に示す各動作プログラムの実行時間が短くなり、ＰＭＣからのオーバーフロー割り込みでは時系列解析に必要な情報を十分に採取できない場合があるという課題がある。
【０００８】
本発明の目的の一つは、精度の高い実行時間の算出を可能とすることである。
なお、前記目的に限らず、後述する発明を実施するための形態に示す各構成により導かれる作用効果であって、従来の技術によっては得られない作用効果を奏することも本発明の他の目的の１つとして位置付けることができる。
【課題を解決するための手段】
【０００９】
このため、この情報処理装置は、解析対象プログラムにおける複数の分岐情報に基づき、前記解析対象プログラムに含まれる複数の関数の実行割合情報を集計する集計部と、分岐トレース支援機能によって採取された複数の分岐情報に対し、前記集計部が集計した各関数の実行割合情報を用いて各関数の出現間隔を算出するとともに、前記複数の分岐情報の採取を開始した採取開始時刻と算出した各関数の出現間隔とに基づき、各関数の採取時刻を解析する解析部とを有する。
【発明の効果】
【００１０】
一実施形態によれば、精度の高い実行時間の算出を可能とする。
【図面の簡単な説明】
【００１１】
【図１】実施形態の一例としての情報処理装置の性能解析部の機能構成を示す図である。
【図２】実施形態の一例としての情報処理装置のハードウェア構成を示す図である。
【図３】（ａ），（ｂ）は実施形態の一例としての情報処理装置における分岐トレース機能部によって作成されるＬＢＲの分岐情報を例示する図である。
【図４】（ａ），（ｂ）は実施形態の一例としての情報処理装置における分岐トレース機能部によって作成されるＢＴＳの分岐情報を例示する図である。
【図５】（ａ），（ｂ）は実施形態の一例としての情報処理装置の集計部による集計方法を説明するための図である。
【図６】実施形態の一例としての情報処理装置の分岐データ解析部による分岐データの使用方法を説明するための図である。
【図７】実施形態の一例としての情報処理装置におけるサンプリング間隔への関数の実行割合の対応付けパターンを例示する図である。
【図８】（ａ），（ｂ）は実施形態の一例としての情報処理装置におけるサンプリング間隔への複数の関数の配分方法による相違を説明するための図である。
【図９】実施形態の一例としての情報処理装置におけるプログラム性能解析方法を説明するフローチャートである。
【図１０】実施形態の一例としての情報処理装置の分岐データ解析部による分岐データの採取時刻の解析方法を説明するフローチャートである。
【図１１】性能プロファイラの機能構成を模式的に示す図である。
【図１２】性能プロファイラの測定フェーズを説明する図である。
【図１３】解析結果を例示する図である。
【発明を実施するための形態】
【００１２】
以下、図面を参照して本情報処理装置，処理方法及び処理プログラムに係る実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。又、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
【００１３】
図１は実施形態の一例としての情報処理装置の性能解析部１１の機能構成を示す図、図２は実施形態の一例としての情報処理装置のハードウェア構成を示す図である。
本実施形態の情報処理装置１は、プログラムを実行することにより各種機能を実現する計算機である。
本情報処理装置１は、図２に示すように、ＣＰＵ２０１，メモリ２０２，ディスプレイ２０５，キーボード２０６，マウス２０７，媒体読取装置２０８及び記憶装置２０９を備える。
【００１４】
ディスプレイ２０５は種々の情報を表示する表示装置であり、例えば、液晶ディスプレイ装置やＣＲＴ（Cathode Ray Tube）ディスプレイ装置である。
マウス２０７及びキーボード２０６はオペレータが種々の入力を行なうために操作する入力装置である。
メモリ２０２はＲＯＭ（Read Only Memory）及びＲＡＭ（Random Access Memory）を含む記憶装置である。メモリ２０２のＲＯＭには、プログラム性能解析に係るソフトウェアプログラムやこのプログラム用のデータ類が書き込まれている。メモリ２０２上のソフトウェアプログラムは、ＣＰＵ２０１に適宜読み込まれて実行される。
【００１５】
また、メモリ２０２のＲＡＭは、一次記憶メモリあるいはワーキングメモリとして利用される。このメモリ２０２のＲＡＭは、種々のデータやプログラムを一時的に格納する記憶装置であり図示しないメモリ領域をそなえる。
メモリ領域には、ＣＰＵ２０１がプログラムを実行する際に、データやプログラムを一時的に格納・展開して用いる。例えば、メモリ領域には、後述する、性能データ採取部２１や分岐データ採取部２２によって採取されるデータ（採取データ）や、集計部２３や分岐データ解析部２４による解析結果等が格納される。
【００１６】
記憶装置２０９は、ハードディスクドライブ（Hard disk drive：ＨＤＤ）、ＳＳＤ（Solid State Drive）等の記憶装置であって、種々のデータを格納するものである。また、記憶装置２０９には、ＯＳ（Operating System）や解析対象のプログラム等も格納される。
媒体読取装置２０８は、記録媒体ＲＭが装着可能に構成される。媒体読取装置２０８は、記憶媒体ＲＭが装着された状態において、記録媒体ＲＭに記録されている情報を読み取り可能に構成される。本例では、記録媒体ＲＭは可搬性を有する。記録媒体ＲＭは、コンピュータ読取可能な記録媒体であって、例えば、フレキシブルディスク，ＣＤ（ＣＤ−ＲＯＭ，ＣＤ−Ｒ，ＣＤ−ＲＷ等），ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−ＲＡＭ，ＤＶＤ−Ｒ，ＤＶＤ＋Ｒ，ＤＶＤ−ＲＷ，ＤＶＤ＋ＲＷ，ＨＤ  ＤＶＤ等），ブルーレイディスク，磁気ディスク，光ディスク，光磁気ディスク、又は、半導体メモリである。
【００１７】
ＣＰＵ２０１は、種々の制御や演算を行なう処理装置であり、メモリ２０２に格納されたＯＳやプログラムを実行することにより、種々の機能を実現する。例えば、ＣＰＵ２０１は、図１に示すように、性能解析部２１１としての機能を実現する。
すなわち、ＣＰＵ２０１が、性能解析プログラム（処理プログラム）を実行することにより、性能解析部２１１として機能する。
【００１８】
なお、この性能解析部２１１としての機能を実現するためのプログラム（処理プログラム）は、例えば前述した記録媒体ＲＭに記録された形態で提供される。そして、コンピュータはその記録媒体ＲＭからプログラムを読み取って内部記憶装置または外部記憶装置に転送し格納して用いる。又、そのプログラムを、例えば磁気ディスク，光ディスク，光磁気ディスク等の記憶装置（記録媒体）に記録しておき、その記憶装置から通信経路を介してコンピュータに提供するようにしてもよい。
【００１９】
性能解析部２１１としての機能を実現する際には、内部記憶装置（本実施形態ではメモリ２０２のＲＡＭやＲＯＭ）に格納されたプログラムがコンピュータのマイクロプロセッサ（本実施形態ではＣＰＵ２０１）によって実行される。このとき、記録媒体に記録されたプログラムをコンピュータが読み取って実行するようにしてもよい。
性能解析部２１１は、本情報処理装置１において実行されるプログラムの性能を解析する。
【００２０】
この性能解析部２１１は、図１に示すように、性能データ採取部２１，分岐データ採取部２２，集計部２３，分岐データ解析部２４，ＰＭＣ２５及び分岐トレース機能部２６としての機能を備える。
ＰＭＣ２５は、所定のイベントを監視して計数するカウンタ（性能イベント監視カウンタ）であり、レジスタのカウンタオーバーフロー割り込みを用いて、割り込みを発生させる。この割り込みをオーバーフロー（overflow）割り込み、もしくは、サンプリング（sampling）割り込みという場合がある。
【００２１】
ＰＭＣ２５は固定サイクル数を計数し、例えば、ＣＰＵ２０１のクロック周波数に基づき、所定時間経過毎（例えば、１ｍｓ毎）にオーバーフロー割り込みが出力されるように設定されている。このＰＭＣ２５から出力されるオーバーフロー割り込みが、性能データ採取部２１に入力されサンプリング契機として用いられる。また、性能データ採取部２１は、ＰＭＣ２５からオーバーフロー割り込みが入力されると、分岐データ採取部２２に対して分岐データの採取指示を入力する。
【００２２】
すなわち、ＰＭＣ２５から所定間隔（指定サンプリング間隔）で出力されるオーバーフロー割り込み通知（サンプリング割り込み）が、性能データ採取部２１及び分岐トレース機能部２６による情報取得のトリガ通知として用いられる。
分岐トレース機能部２６は、解析対象のプログラム（実行プログラム）について、プログラム中の分岐アドレスを採取する。例えば、分岐トレース機能部２６は、プログラム中の分岐コマンド（例えば、jumpやcall，return）を検知することで分岐アドレスを特定する。以下、本実施形態においては、分岐コマンドがcall及びreturnである例について示す。
【００２３】
また、分岐トレース機能部２６は、例えば、ＬＢＲ（Last Branch Record）やＢＴＳ（Branch Trace Store）等の分岐トレース支援機能を実行することで、プログラムの実行に伴う分岐情報（分岐データ）を採取する。具体的には、分岐トレース機能部２６は、分岐トレース支援機能により、実行された分岐のソース（分岐元となる分岐命令アドレス）と、ターゲット（分岐先の命令アドレス）とを取得し、所定の記憶領域に保存する。
【００２４】
分岐トレース機能部２６は、ＣＰＵ２０１によって実行されたプログラム中で発生した分岐について、そのソース（分岐元となる分岐命令アドレス）とターゲット（分岐先の命令アドレス）とを取得し、所定の記憶領域に記録する。具体的には、分岐トレース機能部２６は、分岐について取得したソース（From）とターゲット（Ｔｏ）の各命令アドレス（ＩＰ：Instruction Pointer）とを、ペア（分岐ペア）で所定の記憶領域に記録する。
【００２５】
以下、分岐トレース機能部２６により採取されるソースの命令アドレスとターゲットの命令アドレスとの組み合わせである分岐ペアを分岐情報もしくは分岐データという場合がある。また、分岐トレース機能部２６により分岐データが記録される領域を分岐データ記録領域という。
ＬＢＲの場合には専用のサイクリック・レジスタ・スタックが分岐データ記録領域であり、ＢＴＳの場合にはメモリ２０２上の所定の記憶領域（メモリバッファ）が分岐データ記録領域である。
【００２６】
また、解析対象プログラムにおいては、callやreturnのコマンドによる分岐は、何らかの関数の実行中に生じる。従って、分岐データ（分岐ペア）にはいずれかの関数が対応付けられる。
この分岐トレース支援部２２による分岐トレース支援機能は既知の手法で実現することができるものであるが、以下に簡単に説明する。
【００２７】
図３（ａ），（ｂ）は実施形態の一例としての情報処理装置１における分岐トレース機能部２６によって作成されるＬＢＲの分岐情報を例示する図であり、（ａ）はＬＢＲの構成を示す図、（ｂ）はその元になるプログラムを例示する図である。
例えば、Ｉｎｔｅｌ（登録商標）のＣＰＵでは、図３（ａ）に示すように、１６ペア分の分岐アドレス（From_IP，To_IP）が、ＬＢＲと呼ばれるレジスタ・スタックに記録され、最後の記録位置を示すＴＯＳ（Top Of Stack）と呼ばれるインデックス（index）レジスタも同時に更新される。ＴＯＳにはインデックスとして、サイクリック・レジスタ・スタックに登録される１６ペア分の分岐アドレスに対応する０〜１５のいずれかの数字が記録される。
【００２８】
例えば、図３（ｂ）に示すプログラム（アセンブルリスト）において、関数（Function）Ａから関数Ｂがコールされる場合には、図３（ａ）に示すＬＢＲの分岐１に対応付けて、関数Ａのコマンド“call B”のアドレスがソース１として、また、関数Ｂの先頭アドレスがターゲット１として、それぞれ登録される。
また、ＬＢＲにおいては、最後に採取された（最新の）データについては、その採取時刻を知ることができるが、それ以外のデータ、すなわち、最も古い分岐データ及び中間の分岐データについては、その採取時刻は不明である。
【００２９】
なお、分岐トレース支援機能においては、例えば、採取対象とする分岐命令の種類（無条件分岐／条件分岐／call／return等）や特権レベル（ＯＳモード、userモード）のフィルタリング設定、および採取開始・停止指示等を操作することができる。
図４（ａ），（ｂ）は実施形態の一例としての情報処理装置１における分岐トレース機能部２６によって作成されるＢＴＳの分岐情報を例示する図であり、（ａ）はＢＴＳの構成を示す図、（ｂ）はその元になるプログラムを例示する図である。
【００３０】
例えば、ＩｎｔｅｌのＣＰＵでは、図４（ａ）に示すように、予めソフト側でメモリ２０２等に確保した任意のメモリバッファ領域上に、ソース（From）とターゲット（Ｔｏ）の各命令アドレス（ＩＰ：Instruction Pointer）とを、ペアで記録していく。なお、ＬＢＲと異なり、メモリバッファ領域上でサイクリックはしない。
例えば、図４（ｂ）に示すプログラム（アセンブルリスト）において、関数（Function）Ａから関数Ｂがコールされる場合には、図４（ａ）に示すＢＴＳの分岐１に対応付けて、関数Ａのコマンド“call B”のアドレスがソース１として、また、関数Ｂの先頭アドレスがターゲット１として、それぞれ登録される。
【００３１】
このようなＢＴＳのデータの回収のタイミングは、任意の一定間隔（サンプリング時）または、バッファオーバーフロー割り込み時である。
なお、ＢＴＳの最初と最後、すなわちメモリバッファ上の先頭と最後尾のデータについては、そのおおよその採取時刻を知ることができるが、その間の各分岐データの採取時刻は不明である。
【００３２】
また、ＢＴＳにおいては、分岐データの格納用に予め確保した領域がいっぱい（領域がフル）になった場合になると、分岐データ採取部２２割り込みを発生させる。
なお、上述したＰＭＣ２５及び分岐トレース機能部２６としての機能はＣＰＵの既知の機能によって実現されるものであり、その詳細な説明は省略する。
性能データ採取部２１は、実行中のプログラム（解析対象プログラム）の実行状況を示す性能情報（実行情報）を採取する。採取する性能情報としては、例えば、実行中のプログラムのプロセスＩＤや命令アドレスである。以下、採取する性能情報をサンプリングデータという場合がある。
【００３３】
性能データ採取部２１は、ＰＭＣ２５から一定時間間隔で入力されるサンプリング割り込みを契機として、サンプリングデータを採取（サンプリング）する。従って、性能データ採取部２１は、実行中の解析対象プログラムの実行状況を示す実行情報（性能情報）を採取する第１の採取部として機能する。
また、性能データ採取部２１は、サンプリングデータの採取時に、分岐データ採取部２２に対して複数の分岐データの一括採取を指示する。なお、採取したサンプリングデータは、後述する分岐データ採取部２２によって採取される分岐データと対応付けられ、１組のデータとして、記憶装置２０９等に保存される。
【００３４】
分岐データ採取部２２は、分岐トレース支援機能を用いて、解析対象のプログラムにおける複数の分岐データを一括採取する。
分岐データ採取部２２は、性能データ採取部２１からの分岐データの採取指示を受信すると、分岐トレース機能部２６によってレジスタやメモリ２０２等に記録された分岐データ（各分岐アドレス）を採取する。すなわち、分岐トレース採取部２４は、本情報処理装置１におけるプログラムの実行履歴を採取するものであり、解析対象プログラムにおける複数の分岐情報を採取する第２の採取部として機能する。
【００３５】
例えば、分岐トレース機能部２６がＢＴＳを用いる場合には、分岐データ採取部２２は、トレース機能部２６によって分岐データ記憶領域に新規に記録された分岐データを読み出し、性能データ採取部２１に渡す。
また、分岐データ採取部２２は、新規データ判断のため、最後の記録位置を保存する。例えば、分岐トレース支援機能としてＢＴＳを用いる場合には、メモリ２０２等の図示しない記憶領域に分岐データ記憶領域における最後の記録位置を示す値を記録する。また、分岐トレース支援機能としてＬＢＲを用いる場合には、ＴＯＳにレジスタ・スタックにおける最後の記録位置を示す値を記録する。
【００３６】
さらに、分岐データ採取部２２は、分岐トレース支援機能としてＢＴＳを用いる場合に、分岐トレース機能部２６から、分岐データ記憶領域がフルになると発生する割り込みを受け取る。この際、分岐データ採取部２２は、前回データ読込み後に記録された分岐データをメモリ２０２等の所定の記憶領域に保存し、性能データ採取部２１からの要求に応じて渡す。分岐データ採取部２２は、ＢＴＳ使用のための初期設定を行ない、これにより分岐トレース機能部２６が再度ＢＴＳに分岐データを記録する。
【００３７】
集計部２３は、性能データ採取部２１によって採取されたサンプリングデータを集計し、解析対象のプログラム中の各関数の実行割合を計算する。
図５（ａ），（ｂ）は実施形態の一例としての情報処理装置１の集計部２３による集計方法を説明するための図であり、（ａ）はサンプリングデータを例示する図、（ｂ）は集計結果を例示する図である。
【００３８】
集計部２３は、図５（ａ）に示すように、サンプリングデータとして、サンプリング時に動作していたプロセスＩＤ，命令アドレス，時刻情報等を採取する。
例えば、ＯＳがＬｉｎｕｘ（登録商標）である場合には、以下のように各種情報を取得することができる。
（i）“/proc/kallsyms”ファイルに関数名とアドレスの一覧が格納されているので、当該ファイルを参照することにより、関数名の獲得を行なうことができる。
【００３９】
（ii）“/proc/PID/exe”ファイルに実行したプログラム名が出力されるので、当該ファイルを参照することにより、プロセスＩＤからプログラム名を獲得することができる。
（iii）プロセスＩＤから得たプログラムの実行ファイルに対して“nmコマンド”を実行することにより、実行ファイルに定義されている関数とそのアドレス範囲がわかる。これにより、命令アドレスから関数名を獲得することができる。
【００４０】
図５（ａ）においては、ＣＰＵＩＤ“１”で示されるＣＰＵ２０１における２つのサンプリングデータ（１），（２）が示されている。
集計部２３は、プロセスＩＤと命令アドレスとから、サンプリングされた関数名を獲得する。図５（ａ）に示す例においては、プロセスＩＤと命令アドレスとから、サンプリングデータ（２）はプログラム名“test”の関数名“test1”であると特定されている。
【００４１】
また、性能データ採取部２１においては、必ずしも指定サンプリング間隔でサンプリングされるとは限らず、何らかの理由で遅延が発生する場合がある。そこで、集計部２３は、サンプリング毎の実測サンプリング間隔（前回からの経過時間；実サンプリング間隔）を指定サンプリング間隔で割った値をサンプル数として、関数毎にサンプル数を集計する。また、全サンプル数も集計する。
【００４２】
図５（ａ）に示す例においては、指定サンプリング間隔が100μsであるが、２つのサンプリング（１），（２）の時刻の差分から、実サンプリング間隔が120μsとなっている。このような場合に、集計部２３は、後に採取されたサンプリングデータ（２）のサンプル数を、120/100=1.2として集計を行なう。
すなわち、集計部２３は、実際のサンプリング間隔に応じて、対応する関数のサンプル数を補正する。
【００４３】
集計部２３は、集計した各関数のサンプル数を全サンプル数で除算することで、図５（ｂ）に示すように、関数の実行割合を算出する。
分岐データ解析部２４は、分岐データ採取部２２によって採取された分岐データに基づき、集計部２３で計算された各関数の実行割合を利用して、各関数が実行された時間である実行時間を解析する。
【００４４】
図６は実施形態の一例としての情報処理装置１の分岐データ解析部２４による分岐データの使用方法を説明するための図である。
分岐データ解析部２４は、性能データ採取部２１により連続して採取された（図６に示す例では、時刻ｔ１，ｔ２）２つのサンプリングデータの間（サンプリング間隔）を、分岐データに基づいて実行が確認された関数（図６に示す例ではｆ１〜ｆ３）の実行時間で補完する。すなわち、分岐データ解析部２４は、サンプリング間隔を、分岐データに基づいて実行が確認された１つ以上の関数に配分して割り当てる。
【００４５】
分岐データ解析部２４が、前後する２つのサンプリングデータの間（サンプリング間隔）を、分岐データに基づいて実行が確認された関数で補完することを、関数に時間を割り当てるという場合がある。
以下に、分岐データ解析部２４による、集計部２３で計算された各関数の実行割合を利用して、各関数に実行時間を配分する手法を説明する。
【００４６】
分岐データ解析部２４は、性能データ採取部２１によるサンプリングデータ採取と同時に、分岐トレース機能部２６が採取した分岐データ群を採取する。
前述の如く、分岐データにおける分岐元（ソース）及び分岐先（ターゲット）の命令アドレスから、解析対象プログラムにおける当該分岐データに対応する関数が判明する。
そして、分岐データ解析部２４は、分岐データに出現する各関数の実行時間を、集計部２３の計算結果から求める。
【００４７】
具体的には、分岐データ解析部２４は、サンプリング間隔において、当該間隔に実行された関数の実行時間を、集計部２３によって算出された各関数の実行割合に合わせて案分（比例配分）する。
この関数の実行時間の計算方法としては、後述する如く複数種類あり、予め、使用する計算方法を選択することが望ましい。この計算方法の選択は、ユーザが任意に行なってもよく、また、システムが事前に行なわれた設定に従って自動で選択してもよい。
【００４８】
分岐データ解析部２４は、例えば、分岐データを参照し、また、前述したnmコマンドを実行すること等により、実行された関数を把握する。
なお、実行時間が短時間であったため、実際は実行されたがサンプリングデータには出現しない関数もあり得る。分岐データを参照することで、このように性能データ採取部２１によるサンプリングでは検知されない関数も把握することができる。なお、このような関数については、出現間隔（実行時間）を０として扱われる。
【００４９】
分岐データ解析部２４は、サンプリングデータの採取時刻を基点とし、算出した個々の関数の実行時間をサンプリング間隔として分岐データによって特定される関数が検知されたとみなして解析を行なう。
すなわち、分岐データ解析部２４が算出した各関数の実行時間をサンプリング間隔とし、各関数の検知をサンプリングデータとして扱うことで、時系列解析やプロファイル解析を行なうことが可能となる。プロファイル解析を行なう場合には、集計部２３で、関数の検知もサンプリングデータとしてみなして、各関数の実行割合を再計算する。
【００５０】
また、分岐データ解析部２４は、性能データ採取部２１によって連続して行なったサンプリングの間隔（サンプリング間隔）に、サンプリングと同時に分岐データ採取部２２が採取した複数の分岐データの各関数を対応付けることで、このサンプリング間隔に関数（分岐データ）を割り当てる。
次に、分岐データ解析部２４による、サンプリング間隔への関数の対応付け方法について説明する。
【００５１】
図７は実施形態の一例としての情報処理装置１におけるサンプリング間隔への関数の実行割合の対応付けパターンを例示する図である。
図７に示す例においては、時刻ｔ１において行なったサンプリングによりサンプリングデータＳ１が採取され、時刻ｔ２において行なったサンプリングによりサンプリングデータＳ２が採取されたものとする。また、ｔ２−ｔ１で求められるサンプリング間隔Ｔが100μsであるとする。
【００５２】
分岐データ解析部２４は、例えば、時刻ｔ２において分岐データ採取部２２が採取した複数の分岐データが示す各関数が連続して、サンプリング間隔Ｔにおいて実行されるものとみなして解析を行なう。以下、複数の関数が連続して実行される状態を関数の連続体という。例えば、後述する図８（ａ）には、関数Ｆ１〜Ｆ３によって構成される関数の連続体が示されている（符号ｃ４，ｃ５参照）。
【００５３】
分岐データ解析部２４は、分岐データ採取部２２が１度に採取した複数の分岐データによって特定される各関数の連続体が、サンプリング間隔Ｔにおいて実行されるものとみなす。
分岐データ解析部２４は、サンプリング間隔に複数の関数の連続体を対応付けるに際して、サンプリング間隔への関数の連続体の対応付け方としては、例えば以下の（Ｐ１）〜（Ｐ３）に示す３通りのパターンが考えられ、いずれを用いてもよい。なお、図７中における白抜き矢印（ａ１）〜（ａ３）は、それぞれ関数の連続体を示す。
【００５４】
（Ｐ１）サンプリング間隔全体に対応付ける
図７中の白抜き矢印（ａ１）に示すように、サンプリング間隔Ｔにわたって関数の連続体が実行されていたとみなす。
（Ｐ２）サンプリング間隔から現サンプリングデータの関数の実行割合に相当する時間を引いた時間帯に対応付ける
例えば、図７に示す例においては、サンプリングデータＳ２の採取時（現時刻）に実行されていた関数の実行割合が２５％であるとする。この場合に、白抜き矢印（ａ２）に示すように、サンプリング間隔Ｔから、この関数の実行割合に相当する時間（100μs×0.25）を減算した時間帯で、関数の連続体が実行されていたとみなす。
【００５５】
（Ｐ３）サンプリング間隔から１つ前のサンプリングデータの関数の実行割合に相当する時間を引いた時間帯に対応付ける
例えば、図７に示す例においては、サンプリングデータＳ１の採取時（１つ前のサンプリングデータ取得時）に実行されていた関数の実行割合が１０％であるとする。この場合に、白抜き矢印（ａ３）に示すように、サンプリング間隔Ｔから、この関数の実行割合に相当する時間（100μs×0.1）を減算した時間帯で、関数の連続体が実行されていたとみなす。
【００５６】
次に、上述の如くサンプリング間隔に対応付けた、関数の連続体における各関数の実行時間の配分方法について説明する。
分岐データ解析部２４は、上述したサンプリング間隔において、関数の連続体に対応付けた時間帯、すなわち、関数の連続体の実行に要した時間を、更に、当該連続体を構成する複数の関数に配分する。
【００５７】
ここで、関数の連続体の実行に要した時間を、更に、当該連続体を構成する複数の関数に配分する配分方法には、例えば以下の（ｂ１）〜（ｂ３）に示す３つのパターンが考えられる。なお、以下、サンプリング間隔が、関数の連続体に対応付けた時間帯、すなわち、関数の連続体の実行に要した時間と一致する場合（図７に示すパターンＰ１参照）を例に説明する。
【００５８】
（ｂ１）均等割
関数の連続体に対応付けられた時間（=サンプリング間隔）を、連続体を構成する複数の関数で均等に分割して割り当てる。
すなわち、以下の式（１）に示すように、個々の関数への割り当て時間を、「サンプリング間隔Ｔ」を「分岐データ数（連続体を構成する関数の数）」で除算することにより求める。これにより、分岐データあたりの出現間隔は一定となる。
【００５９】
サンプリング間隔Ｔ／分岐データ数  ・・・（１）
例えば、サンプリング間隔Ｔが100μsであり、１度に採取された分岐データ（関数）の数が10（10データ）の場合には、サンプリング間隔Ｔにおける個々の関数の割り当て時間は、100μs/10=10μsとして求められる。
（ｂ２）関数の実行割合に応じて決定
すなわち、以下の式（２）を用いて  サンプリング間隔Ｔにおいて、連続体を構成する複数の関数のそれぞれに対して、各関数の実行割合を反映させた割り当て時間を算出する
サンプリング間隔Ｔ×関数の実行割合／関数の出現回数  ・・・（２）
すなわち、個々の関数の割り当て時間は、関数の出現間隔／回として求められる。
【００６０】
例えば、サンプリング間隔Ｔが100μsであり、対象の関数の実行割合が10%，１度に採取された分岐データにおいて当該関数の出現数が2回であった場合には、個々の関数の割り当て時間は、100μs×0.1/2＝5μsとして求められる。
（ｂ３）関数の実行割合の和を求め、その中の割合に応じて配分
すなわち、以下の式（３）を用いて  サンプリング間隔Ｔを、連続体を構成する複数の関数のそれぞれに対して、各関数の実行割合を反映させた割り当て時間で配分する
サンプリング間隔×（関数の実行割合／関数の実行割合の和）  ・・・（３）
例えば、サンプリング間隔Ｔが100μsであり、対象の関数の実行割合が10%，関数の実行割合の和が50％であった場合には、個々の関数の割り当て時間は、100μs×(0.1/0.5)＝２０μsとして求められる。
【００６１】
なお、上述した（ｂ２）及び（ｂ３）のパターンにおいては、関数の実行割合は、測定全体を集計単位とする場合と、サンプリング時のプロセスを集計単位とする場合との２通りが考えられる。
また、上述した（ｂ１）及び（ｂ３）のパターンにおいては、分岐データが対応付けられた時間帯を全て各データに配分するので、全分岐データを採取可能なＢＴＳ使用時に適用することが望ましい。また、分岐データのみならずサンプリングデータを含めて処理してもよい。
【００６２】
さらに、上述した（ｂ２）のパターンにおいては、残時間が発生した場合にサンプリングデータに時間を割り当てることが望ましい。
図８（ａ），（ｂ）は実施形態の一例としての情報処理装置１におけるサンプリング間隔への複数の関数の配分方法による相違を説明するための図であり、（ａ）はサンプリング間隔へ関数を配分する複数例を示す図、（ｂ）はその分岐データを例示する図である。
【００６３】
図８（ａ）には、時刻ｔ３と時刻ｔ４との間（サンプリング間隔）に、３つの関数Ｆ１，Ｆ２，Ｆ３が順番に読み出されて実行された例を示している。
なお、これらの関数Ｆ１，Ｆ２，Ｆ３の各実行割合は１０％，３０％，１０％とする。
時刻ｔ３において採取されたサンプリングデータにおいて関数Ｆ３が得られ（符号ｃ１参照）、また、このサンプリングと同時に、図８（ｂ）に示すような分岐データが分岐データ採取部２２によって採取される。
【００６４】
すなわち、図８（ｂ）に示すように、関数Ｆ１から関数Ｆ２がコールされた後、この関数Ｆ２から関数Ｆ３がコールされることで、図８（ａ）の符号ｃ１に示すように、３つの関数Ｆ１，Ｆ２，Ｆ３が順番に実行される。
なお、サンプリング間隔全体に分岐データを対応付けるものとする。すなわち、サンプリング間隔全体に、関数Ｆ１〜Ｆ３の連続体が割り当てられる。また、分岐を生じさせる関数としてcallとreturnを想定し、分岐データとして分岐元の関数を用いる。また、サンプリングにより得られたサンプリングデータも用いる。
【００６５】
ここで、時刻ｔ３において採取されたサンプリングデータだけでは、このサンプリングされた１つの関数Ｆ３しか見えないが（図８（ａ）の符号ｃ２参照）、分岐データを参照することで、図８（ａ）の符号ｃ２に示すように、サンプリング間隔における関数の実行順序がわかる。
この場合においても、サンプリング間隔に対して、複数の関数の実行時間を各実行割合に応じて配分する（割り当てる）ことで（図８（ａ）の符号ｃ５参照）、単純に複数の関数に均等に実行時間を割り当てる（図８（ａ）の符号ｃ４参照）場合に比べて、実際に実行された関数の動作に近くなり（図８（ａ）の符号ｃ１参照）、妥当である。
【００６６】
次に、分岐データ採取部２２によるＬＢＲとＢＴＳとの使い分けについて説明する。
前述の如く、分岐トレース機能部２６は、例えば、ＬＢＲやＢＴＳ等の分岐トレース支援機能を実行することで、プログラムの実行に伴う分岐情報を採取する。
ここで、低負荷で効率的な採取が可能なＬＢＲと、ＬＢＲよりも多くのデータ採取と採取時刻の把握がしやすく高負荷なＢＴＳとを使い分けることが望ましい。
【００６７】
以下に、ＬＢＲとＢＴＳとを併用する場合について説明する。
分岐データ採取部２２は、まず、ＬＢＲから分岐データを読み出す。新規にＬＢＲに記録されたデータ数が、ＬＢＲへの最大登録個数である１６個未満の場合は、そのままデータ採取は終了する。
一方、ＬＢＲに新規に１６個のデータが記録されていた場合には、ＬＢＲにおいてサイクリックが行なわれ１６個より多くのデータが記録（上書き）された可能性がある。そこで、ＢＴＳの分岐データを参照し、ＬＢＲで上書きされたデータの有無を調べる。上書きされたデータがあれば、その分を分岐データとして保存する。
【００６８】
このようにＬＢＲとＢＴＳとを併用することにより、効率的に、漏れのない分岐データ採取を実現できる。
また、ＬＢＲとＢＴＳとの他の併用方法を適用してもよい。
すなわち、先ず、ＬＢＲの非採取対象を指定して、不要な分岐を排除して分岐データを採取し、時系列挙動解析などを行なう。
【００６９】
ＬＢＲで採取したデータを利用した性能解析では、挙動がわからない、あるいは性能問題が解決しない場合に、ＢＴＳで分岐データを採取し、より詳細に性能解析を行なってもよい。
上述の如く構成された実施形態の一例としての情報処理装置１におけるプログラム性能解析方法を、図９に示すフローチャート（ステップＡ１〜Ａ７）に従って説明する。
【００７０】
本処理は、測定フェーズ（ステップＡ１〜Ａ５）と、解析フェーズ（ステップＡ６〜Ａ７）とを有する。
まず、ステップＡ１において、ＰＭＣ２５からサンプリング間隔毎に行なわれるオーバーフロー割り込みを、性能データ採取部２１が受信（キャッチ）する。
ステップＡ２において、性能データ採取部２１は、サンプリングデータとして実行中のプログラム（解析対象プログラム）の実行状況を示す実行情報（性能情報）を採取する。また、性能データ採取部２１は、分岐データ採取部２２に対して分岐データの採取指示を通知する。
【００７１】
ステップＡ３において、分岐データ採取部２２は、分岐トレース機能部２６によって分岐データ記録領域に記録された分岐データを採取する。
ステップＡ４において、ステップＡ２において採取した性能情報と、ステップＡ３において採取した分岐データとを対応付けて、１組のデータとして記憶装置２０９等に保存する。
【００７２】
ステップＡ５において、測定時間が終了したか否かを確認し、終了していない場合には（ステップＡ５のＮｏルート参照）、ステップＡ１に戻る。
測定時間が終了した場合には（ステップＡ５のＹｅｓルート参照）、解析フェーズに移行する。すなわち、先ず、ステップＡ６において、集計部２３が、性能データ採取部２１によって採取されたサンプリングデータから、関数毎の実行割合を算出する。
【００７３】
ステップＡ７において、分岐データ解析部２４が、各関数の実行割合に基づき、各サンプリング間隔において複数の関数の実行時間を配分する。ここで、サンプリング間隔において、連続体を構成する各関数が、当該関数の実行時間をサンプリング間隔として検知（サンプリング）されたとみなして各関数の採取時刻の解析を行ない、処理を終了する。
次に、実施形態の一例としての情報処理装置１の分岐データ解析部２４による分岐データの採取時刻の解析方法を、図１０に示すフローチャート（ステップＢ１〜Ｂ６）に従って説明する。
【００７４】
ステップＢ１において、分岐データ解析部２４は、集計部２３から各関数の実行割合を受け取る。
ステップＢ２において、分岐データ解析部２４は、性能データ採取部２１によって採取したサンプリングデータと、分岐データ採取部２２によって採取した分岐データとを１組読み込む。
【００７５】
ステップＢ３において、分岐データ採取部２２は、分岐データに含まれる各アドレスから関数名を獲得する。
ステップＢ４において、分岐データ採取部２２は、集計部２３によって算出された各関数の実行割合に基づき、各関数に実行時間を割り当てる。すなわち、分岐データ採取部２２は、サンプリング間隔において複数の関数の実行時間を配分する。
【００７６】
ステップＢ５において、分岐データ採取部２２は、割り当てた実行時間に基づき、関数（分岐データ）を出現順に並べえ、解析したサンプリング間隔において行なわれた関数の検知をサンプリングデータとして記憶装置２０９等に保存する。
ステップＢ６において、全ての分岐データについての処理が終了したか否かを確認し、終了していない場合には（ステップＢ６のＮｏルート参照）、ステップＢ２に戻る。また、全ての分岐データについての処理が終了した場合には（ステップＢ６のＹｅｓルート参照）、処理を終了する。
【００７７】
このように、実施形態の一例としての情報処理装置１によれば、測定フェーズにおいて、性能データ採取部２１が性能データ（サンプリングデータ）を採取するとともに、分岐データ採取部２２が分岐トレース支援機能から分岐データを採取する。そして、解析フェーズにおいて、集計部２３が、性能データ採取部２１によって採取されたサンプリングデータを集計し、解析対象のプログラム中の各関数の実行割合を計算する。また、分岐データ解析部２４が、分岐データに基づいて特定した関数に対して、算出された実行割合を適用することで、サンプリング間隔において複数の関数の実行時間を配分する。
【００７８】
これにより、性能データ採取部２１による性能データのサンプリングの間に実行された各関数についても実行された時刻等の時間情報を取得することができる。すなわち、本来は時刻情報を持たない分岐データを、サンプリングデータとして処理することが可能になる。
従って、解析した関数の実行時間を用いて、分岐データをサンプリングデータとして扱い、時系列解析やプロファイル解析を行なうことが可能となり、精度の高い実行時間の算出が可能となる。
【００７９】
また、性能データ採取部２１によるサンプリング間隔を狭くすることなく、データ数を増やすことができ、低負荷で高精度な時系列解析およびプロファイルを実現することができる。
例えば、分岐データ採取部２２が分岐トレース機能部２６からＬＢＲを用いた分岐データを採取する場合には、１６個の分岐データを採取して用いることができる。これにより、従来の性能プロファイラによる時系列解析に比べて、採取負荷はそのままで、解像度を最大１７倍に向上させることができる。
【００８０】
ＬＢＲやＢＴＳ等の分岐トレース支援機能においては、一度のサンプリングで採取される分岐情報に含まれる各分岐ペアの採取時刻が不明であるが、本情報処理装置１によれば、各分岐ペアによって特定される関数の実行時間を知ることができ利便性が高い。
また、短時間で処理され、性能データ採取部２１によるサンプリングでは検出されないようなプロセスについても、分岐データを参照することでその実行を把握し、対応する関数の実行時間を知ることができる。これによっても精度の高い実行時間の算出を可能とし、また、性能解析に必要な情報を収集することができる。
【００８１】
分岐データを用いることで、関数毎に処理に要した時間を把握することができるので、例えば、どのプロセスにおいて待ち（遅延）が発生したか等を容易に知ることができ利便性が高い。
ＰＭＣ２５からのオーバーフロー割り込みを契機として、性能データ採取部２１による性能データのサンプリングと、分岐データ採取部２２による分岐データの採取とを実現することができる。
【００８２】
そして、開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成及び各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
例えば、上述した実施形態においては、情報処理装置１が性能データ採取部２１，分岐データ採取部２２，集計部２３及び分岐データ解析部２４としての機能を備えているが、これに限定されるものではない。
【００８３】
例えば、性能データ採取部２１及び分岐データ採取部２２と、集計部２３及び分岐データ解析部２４とを異なる装置に備えてもよい。例えば、解析対象のプログラムを実行する情報処理装置の処理性能を低下させることが望ましくない場合には、集計部２３及び分岐データ解析部２４としての機能（解析ツール）を他の演算装置にそなえてもよい。
また、上述した開示により本実施形態を当業者によって実施・製造することが可能である。
【００８４】
以上の実施形態に関し、更に以下の付記を開示する。
（付記１）
解析対象プログラムにおける複数の分岐情報に基づき、前記解析対象プログラムに含まれる複数の関数の実行割合情報を集計する集計部と、
分岐トレース支援機能によって採取された複数の分岐情報に対し、前記集計部が集計した各関数の実行割合情報を用いて各関数の出現間隔を算出するとともに、前記複数の分岐情報の採取を開始した採取開始時刻と算出した各関数の出現間隔とに基づき、各関数の採取時刻を解析する解析部と
を有することを特徴とする、情報処理装置。
【００８５】
（付記２）
実行中の前記解析対象プログラムの実行状況を示す実行情報を採取する第１の採取部と、
前記第１の採取部による採取と同時に、前記解析対象プログラムにおける複数の分岐情報を採取する第２の採取部とを有し、
前記解析部が、前記第１の採取部が、前記実行情報の採取時刻を前記複数の分岐情報の採取を開始した採取開始時刻として前記各関数の採取時刻の解析を行なう
ことを特徴とする、付記１記載の情報処理装置。
【００８６】
（付記３）
前記解析部が、前記第１の採取部により連続して行なわれる２回の実行情報の採取間隔を、複数の関数の実行時間で均等に配分することにより、前記各関数の出現間隔を算出し、前記各関数の採取時刻の解析を行なうことを特徴とする、付記２記載の情報処理装置。
（付記４）
前記解析部が、前記第１の採取部により連続して行なわれる２回の実行情報の採取間隔に基づき、関数の各実行割合に応じた前記関数の出現間隔を算出し、前記各関数の採取時刻の解析を行なうことを特徴とする、付記２又は３に記載の情報処理装置。
【００８７】
（付記５）
前記解析部が、前記第１の採取部により連続して行なわれる２回の実行情報の採取間隔を、複数の関数実行時間の各実行割合に応じて配分することにより、前記各関数の出現間隔を算出し、前記各関数の採取時刻の解析を行なうことを特徴とする、付記２〜４のいずれか１項に記載の情報処理装置。
【００８８】
（付記６）
採取された前記複数の分岐情報の記憶先の容量オーバ発生時に、前記第２の採取部が前記解析対象プログラムにおける複数の分岐情報を採取することを特徴とする、付記２〜５のいずれか１項に記載の情報処理装置。
（付記７）
有限数のレジスタに分岐情報を格納する第１分岐トレース支援機能と、主記憶装置の所定領域に分岐情報を格納する第２分岐トレース支援機能とを備え、
前記集計部が、前記前記第１分岐データトレース支援機能の分岐情報を、前記第２分岐トレース支援機能の分岐情報より優先して用いることを特徴とする、付記１〜６のいずれか１項に記載の情報処理装置。
【００８９】
（付記８）
解析対象プログラムにおける複数の分岐情報に基づき、前記解析対象プログラムに含まれる複数の関数の実行割合情報を集計する処理と、
分岐トレース支援機能によって採取された複数の分岐情報に対し、前記集計部が集計した各関数の実行割合情報を用いて各関数の出現間隔を算出するとともに、前記複数の分岐情報の採取を開始した採取開始時刻と算出した各関数の出現間隔とに基づき、各関数の採取時刻を解析する処理と
を有することを特徴とする、処理方法。
【００９０】
（付記９）
実行中の前記解析対象プログラムの実行状況を示す実行情報を採取する処理と、
前記採取と同時に、前記解析対象プログラムにおける複数の分岐情報を採取する処理とを有し、
前記実行情報の採取時刻を前記複数の分岐情報の採取を開始した採取開始時刻として前記各関数の採取時刻の解析を行なう
ことを特徴とする、付記８記載の処理方法。
【００９１】
（付記１０）
連続して行なわれる２回の実行情報の採取間隔を、複数の関数の実行時間で均等に配分することにより、前記各関数の出現間隔を算出し、前記各関数の採取時刻の解析を行なうことを特徴とする、付記９記載の処理方法。
（付記１１）
連続して行なわれる２回の実行情報の採取間隔に基づき、関数の各実行割合に応じた前記関数の出現間隔を算出し、前記各関数の採取時刻の解析を行なうことを特徴とする、付記９又は１０に記載の処理方法。
【００９２】
（付記１２）
連続して行なわれる２回の実行情報の採取間隔を、複数の関数実行時間の各実行割合に応じて配分することにより、前記各関数の出現間隔を算出し、前記各関数の採取時刻の解析を行なうことを特徴とする、付記９〜１１のいずれか１項に記載の処理方法。
（付記１３）
採取された前記複数の分岐情報の記憶先の容量オーバ発生時に、前記解析対象プログラムにおける複数の分岐情報を採取することを特徴とする、付記９〜１２のいずれか１項に記載の処理方法。
【００９３】
（付記１４）
有限数のレジスタに分岐情報を格納する第１分岐トレース支援機能と、主記憶装置の所定領域に分岐情報を格納する第２分岐トレース支援機能とを備え、
前記前記第１分岐データトレース支援機能の分岐情報を、前記第２分岐トレース支援機能の分岐情報より優先して用いることを特徴とする、付記８〜１３のいずれか１項に記載の処理方法。
【００９４】
（付記１５）
解析対象プログラムにおける複数の分岐情報に基づき、前記解析対象プログラムに含まれる複数の関数の実行割合情報を集計し、
分岐トレース支援機能によって採取された複数の分岐情報に対し、前記集計部が集計した各関数の実行割合情報を用いて各関数の出現間隔を算出するとともに、前記複数の分岐情報の採取を開始した採取開始時刻と算出した各関数の出現間隔とに基づき、各関数の採取時刻を解析する
処理をコンピュータに実行させることを特徴とする、処理プログラム。
【００９５】
（付記１６）
実行中の前記解析対象プログラムの実行状況を示す実行情報を採取し、
前記採取と同時に、前記解析対象プログラムにおける複数の分岐情報を採取し、
前記実行情報の採取時刻を前記複数の分岐情報の採取を開始した採取開始時刻として前記各関数の採取時刻の解析を行なう
処理をコンピュータに実行させることを特徴とする、付記１５記載の処理プログラム。
【００９６】
（付記１７）
連続して行なわれる２回の実行情報の採取間隔を、複数の関数の実行時間で均等に配分することにより、前記各関数の出現間隔を算出し、前記各関数の採取時刻の解析を行なう
処理を前記コンピュータに実行させることを特徴とする、付記１６記載の処理プログラム。
【００９７】
（付記１８）
連続して行なわれる２回の実行情報の採取間隔に基づき、関数の各実行割合に応じた前記関数の出現間隔を算出し、前記各関数の採取時刻の解析を行なう
処理を前記コンピュータに実行させることを特徴とする、付記１６又は１７に記載の処理プログラム。
【００９８】
（付記１９）
連続して行なわれる２回の実行情報の採取間隔を、複数の関数実行時間の各実行割合に応じて配分することにより、前記各関数の出現間隔を算出し、前記各関数の採取時刻の解析を行なう
処理を前記コンピュータに実行させることを特徴とする、付記１６〜１８のいずれか１項に記載の処理プログラム。
【００９９】
（付記２０）
採取された前記複数の分岐情報の記憶先の容量オーバ発生時に、前記解析対象プログラムにおける複数の分岐情報を採取する
処理を前記コンピュータに実行させることを特徴とする、付記１６〜１９のいずれか１項に記載の処理プログラム。
【符号の説明】
【０１００】
１    情報処理装置
２１    性能データ採取部
２２    分岐データ採取部
２３    集計部
２４    分岐データ解析部
２５    ＰＭＣ
２６    分岐トレース機能部
２０１    ＣＰＵ
２０２    メモリ
２０５    ディスプレイ
２０６    キーボード
２０７    マウス
２０９    記憶装置
【図１】
2015210575.tif 000003
【図２】
2015210575.tif 000004
【図３】
2015210575.tif 000005
【図４】
2015210575.tif 000006
【図５】
2015210575.tif 000007
【図６】
2015210575.tif 000008
【図７】
2015210575.tif 000009
【図８】
2015210575.tif 000010
【図９】
2015210575.tif 000011
【図１０】
2015210575.tif 000012
【図１１】
2015210575.tif 000013
【図１２】
2015210575.tif 000014
【図１３】
2015210575.tif 000015