(57)【要約】【課題】プログラムの微小な測定区間の実行の所要時間を高い精度で測定するプログラム性能測定装置を提供する。【解決手段】ベンチマークプログラム１１は、所定の命令を実行する複数のトレイス文を埋め込まれる。乱数発生部１３は、ランダムにトレイス文の実行を指示する。トレイス出力部１４は、ベンチマークプログラム１１を連続して繰り返し実行すると共に、前記指示に基づいてトレイス文を選択して実行し、その結果をトレイスデータとして出力する。分析サーバ２は、トレイスデータに基づいて、複数のトレイス文により定まる複数の測定区間の実行の所要時間を算出する。【選択図】図１
2010092201.tif 000002
【特許請求の範囲】
【請求項１】
所定の命令を実行する複数のトレイス文を埋め込まれた被測定プログラムの性能を測定するプログラム性能測定装置であって、
ランダムに前記トレイスデータの出力を指示する出力指示手段と、
所定の命令を実行する複数のトレイス文が埋め込まれた被測定プログラムを繰り返し駆動すると共に、前記出力指示手段の前記指示に基づいてトレイスデータを出力し、当該出力の結果をトレイスデータの集合として出力する出力手段と、
前記トレイスデータの集合に基づいて、前記複数のトレイス文により定まる複数の測定区間の実行の所要時間を算出する分析手段とを備える
ことを特徴とするプログラム性能測定装置。
【請求項２】
前記テスト用プログラムが、その先頭に位置する測定区間と、前記測定区間に続く測定されない区間とを含み、前記測定区間に前記複数のトレイス文が埋め込まれる
ことを特徴とする請求項１に記載のプログラム性能測定装置。
【請求項３】
前記出力指示手段が、前記トレイスデータの出力を指定するための乱数を発生する乱数発生部である
ことを特徴とする請求項１に記載のプログラム性能測定装置。
【請求項４】
前記出力手段が、前記トレイスデータとして、当該トレイス文を特定する情報と、当該トレイス文の実行された時刻とを出力する
ことを特徴とする請求項１に記載のプログラム性能測定装置。
【請求項５】
前記出力手段が、前記トレイスデータとして、当該トレイス文を特定する情報と、当該トレイス文の実行された時刻と、トレイス文を実行した回数とを出力する
ことを特徴とする請求項１に記載のプログラム性能測定装置。
【請求項６】
前記分析手段が、前記トレイスデータの集合に基づいて前記トレイスデータの間の時間差を表す学習データの集合を生成し、前記学習データの集合から当該トレイス文の位置が予め定められた関係にある２個の学習データを選択することによりペアデータの集合を生成し、前記ペアデータの集合を用いて前記統計処理を実行する
ことを特徴とする請求項４に記載のプログラム性能測定装置。
【請求項７】
前記分析手段が、前記トレイスデータの集合に基づいて前記トレイスデータの間の時間差と、前記トレイス文を実行した回数の差とを表す学習データの集合を生成し、前記学習データの集合を用いて前記統計処理を実行する
ことを特徴とする請求項５に記載のプログラム性能測定装置。
【請求項８】
出力指示手段が、前記被測定プログラムの動作中に、ランダムに前記トレイスデータの出力を指示する処理と、
前記出力手段が、前記指示に基づいてトレイスデータを出力し、その結果をトレイスデータとして出力する処理と、
分析手段が、前記トレイスデータに基づいて、前記複数のトレイス文により定まる複数の測定区間の実行の所要時間を算出する処理とを備える
ことを特徴とするプログラム性能測定方法。
【請求項９】
出力手段と出力指示手段と分析手段とを備えるプログラム性能測定装置を実現するプログラム性能測定プログラムであって、
前記プログラム性能測定プログラムは、コンピュータに、
前記出力指示手段が、前記被測定プログラムの動作中に、ランダムに前記トレイスデータの出力を指示する処理と、
前記出力手段が、前記指示に基づいてトレイスデータを出力し、その結果をトレイスデータとして出力する処理と、
前記分析手段が、前記トレイスデータに基づいて、前記複数のトレイス文により定まる複数の測定区間の実行の所要時間を算出する処理とを実行させる
ことを特徴とするプログラム性能測定プログラム。
【請求項１０】
出力手段と出力指示手段と分析手段とを備えるプログラム性能測定装置を実現するプログラム性能測定プログラムを記録する記録媒体であって、
前記プログラム性能測定プログラムは、コンピュータに、
前記出力指示手段が、前記被測定プログラムの実行中に、ランダムに前記トレイスデータの出力を指示する処理と、
前記出力手段が、前記指示に基づいてトレイスデータを出力し、その結果をトレイスデータとして出力する処理と、
前記分析手段が、前記トレイスデータに基づいて、前記複数のトレイス文により定まる複数の測定区間の実行の所要時間を算出する処理とを実行させるプログラム性能測定プログラムである
ことを特徴とするプログラム記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム性能測定装置、方法、プログラム、プログラム記録媒体に関するものである。
【背景技術】
【０００２】
コンピュータ又はプログラムの性能を測定する場合において、コンピュータへの負荷の与え方として、トレイス方式と、プロファイラ方式とが知られている。
【０００３】
トレイス方式は、当該プログラムにおけるユーザが測定したい区間（以下、測定区間）の前後に、トレイス文（ｐｒｉｎｔ文）を埋め込む。当該トレイス文の実行により、実行された時刻を取得し、各々のトレイス文の実行時刻の時間差を算出する。
【０００４】
プロファイラ方式は、当該プログラムの実行中に定期的にイベント割り込みを発生させる。当該割り込みにより、その時点でのプログラムカウンタの値を取得し、測定区間に含まれるプログラムカウンタの値の割合を算出する。
【０００５】
なお、プログラムの性能を評価するファームウェアに１命令毎に割り込みを発生させ、ファームウェアでその命令の実行状態をシミュレートして、性能情報を収集する技術が提案されている。
【０００６】
また、処理されるべきトランザクションを選択し、これが機能ユニットにより処理される間に状態情報を記憶する技術が提案されている。
【０００７】
また、測定開始及び終了の命令アドレスを設定し、当該区間の１命令毎に実行時間から割り出し時間を減じた値を積算して、プログラムの実行時間を測定する技術が提案されている。
【特許文献１】特開平１−１４５７３６号公報
【特許文献２】特開平１１−２７２５１９号公報
【特許文献３】特許３３８９７４５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明者の検討によれば、トレイス方式及びプロファイラ方式には、各々、以下のような問題がある。
【０００９】
トレイス方式においては、トレイス文自体の実行に要する時間が、測定の誤差となる。この誤差は、測定区間が短い場合、相対的に大きな値となるので、誤差が大きくなってしまう。
【００１０】
プロファイラ方式においては、イベント割り込みの発生間隔（割込み間隔）よりも短い測定区間については、測定することができない。そこで、イベント割り込み間隔を短くすると、このイベント割り込み処理に要する時間が相対的に大きな値となるので、誤差が大きくなってしまう。
【００１１】
本発明は、プログラムの微小な測定区間の実行の所要時間を高い精度で測定するプログラム性能測定装置を提供することを目的とする。
【００１２】
また、本発明は、プログラムの微小な測定区間の実行の所要時間を高い精度で測定するプログラム性能測定方法を提供することを目的とする。
【００１３】
また、本発明は、プログラムの微小な測定区間の実行の所要時間を高い精度で測定するプログラム性能測定プログラムを提供することを目的とする。
【００１４】
また、本発明は、プログラムの微小な測定区間の実行の所要時間を高い精度で測定するプログラム性能測定プログラムを記録したプログラム記録媒体を提供することを目的とする。
【課題を解決するための手段】
【００１５】
本発明によるプログラム性能測定装置は、被測定プログラムと、出力指示手段と、出力手段と、分析手段とを備える。被測定プログラムには、所定の命令を実行する複数のトレイス文があらかじめ埋め込まれている。出力指示手段は、ランダムにトレイスデータの出力を指示する。出力手段は、前記指示に基づいてトレイスデータを出力し、その結果をトレイスデータとして出力する。分析手段は、トレイスデータに基づいて、複数のトレイス文により定まる複数の測定区間の実行の所要時間を算出する。
【発明の効果】
【００１６】
本発明によるプログラム性能測定装置、方法、プログラム、プログラム記録媒体によれば、全てのトレイスデータではなく、ランダムに選択したトレイスデータのみを出力するので、トレイスデータの出力に要する時間が測定の誤差となる回数を減らすことができる。この結果、測定時間に占める誤差の割合を減らして、高い精度で測定区間の実行の所要時間を算出することができる。また、トレイスデータの出力に要する時間よりも測定区間がそれ程長くない場合でも、この微小な測定区間における所要時間を高い精度で測定することができる。更に、トレイスを採ることにより、システムの動作が変化する場合があるが、このような問題に対しても効果がある。
【発明を実施するための最良の形態】
【００１７】
図１は、本発明の一実施態様によるプログラム性能測定装置の一例を示す構成図である。
【００１８】
本実施態様のプログラム性能測定装置は、測定対象サーバ１と、分析サーバ２とを備える。測定対象サーバ１は、測定対象のコンピュータ又は測定対象のプログラムが実行されるコンピュータである。分析サーバ２は、測定対象サーバ１についての測定結果を分析するコンピュータである。
【００１９】
測定対象サーバ１は、ベンチマークプログラム１１、被測定プログラム１２、ファイルシステム１５、乱数発生部１３、トレイス出力部１４を備える。ファイルシステム１５はトレイスデータ蓄積部１６を備える。なお、被測定プログラムの具体例としては、ＯＳ(オペレーティングシステム)や、ミドルウェアや、アプリケーションプログラムなどの場合がある。
【００２０】
分析サーバ２は、パラメタ推定部２１、学習データ生成部２２、学習データ蓄積部２３を備える。パラメタ推定部２１は、隠れトレイス推定部２４、区間時間推定部２５を備える。
【００２１】
なお、隠れトレイス推定部２４は、トレイス文の実行回数を計測する場合、省略することができる。
【００２２】
また、測定対象サーバ１と分析サーバ２とを１個のサーバ又はコンピュータとして設けるようにしても良い。
【００２３】
測定対象サーバ１は、トレイスデータの集合を生成する生成手段である。測定対象サーバ１は、ベンチマークプログラム１１を実行することにより、トレイスデータの集合を生成する。
【００２４】
ベンチマークプログラム１１は、性能測定用の負荷を与える手段であり、当該負荷を与えるために実行されるプログラムである。例えば、ベンチマークプログラム１１は、当該プログラムの実行の指示（実行＃１）が入力されると、実行を開始する。
【００２５】
被測定プログラム１２には、後述するように、あらかじめ複数のトレイス文が埋め込まれている。トレイス文を実行することにより、被測定プログラム１２の実行により得られるトレイスデータがファイルシステム１５に出力される。
【００２６】
乱数発生部１３は、ランダムにトレイスデータの出力をトレイス出力部１４に指示する出力指示手段である。乱数発生部１３は、トレイス文の実行のたびに乱数を発生して、発生した乱数をトレイス出力部１４に入力する。乱数については、図２及び図３を参照して後述する。
【００２７】
トレイス出力部１４は、乱数発生部１３の出力に応じてトレイスデータをファイルシステム１５に出力する出力手段である。トレイス出力部１４は、トレイスデータの出力が必要な場合、トレイスデータを一旦メモリ上に書き込み、後にまとめてファイルシステム１５に出力することにより、できるだけファイルシステム１５への出力が測定結果に影響を与えないようにする。トレイスデータについては、図４（Ａ）及び図５（Ａ）を参照して後述する。
【００２８】
ファイルシステム１５において、トレイスデータはトレイスデータ蓄積部１６に格納され、分析サーバ２の学習データ生成部２２に送られる。なお、実際には、学習データ生成部２２に学習データの生成の指示（実行＃２）が入力されると、これに応じて、学習データ生成部２２がトレイスデータ蓄積部１６からトレイスデータを読み出す。
【００２９】
分析サーバ２は、測定対象サーバ１からのトレイスデータの集合に基づいて、複数の測定区間の実行の所要時間を算出する分析手段である。測定区間は、後述するように、複数のトレイス文により定まる。分析サーバ２は、トレイスデータの集合について、予め定められた統計処理を実行することにより、所要時間を算出する。
【００３０】
このために、学習データ生成部２２は、トレイスデータ蓄積部１６から読み出したトレイスデータの集合に基づいて、学習データの集合を生成して、学習データ蓄積部２３に格納する。学習データについては、図４（Ｂ）及び図５（Ｂ）を参照して後述する。
【００３１】
また、学習データ生成部２２は、生成した学習データの集合からペアデータの集合を生成して、学習データ蓄積部２３に格納する。ペアデータは、図４（Ｃ）を参照して後述するように、学習データの集合から、対応するトレイス文の位置が予め定められた関係にある２個の学習データを選択することにより、生成される。なお、トレイスカウンタを用いる場合、ペアデータの生成は不要である。
【００３２】
学習データ及びペアデータは、後述する統計処理により処理時間を算出するためのデータである。学習データ蓄積部２３の学習データ及びペアデータは、パラメタ推定部２１により読み出される。
【００３３】
パラメタ推定部２１は、統計処理による処理時間の算出の指示（実行＃３）が入力されると、これに応じて、ペアデータの集合を用いて、隠れトレイス推定部２４に所定の統計処理を行わせる。即ち、隠れトレイス推定部２４は、学習データ蓄積部２３から学習データ及びペアデータを読み出して、統計処理によって隠れトレイスを推定し、推定した隠れトレイスを区間時間推定部２５に送る。この統計処理は、後述するように、トレイスデータを連続して出力しない確率を用いて実行される。なお、トレイスカウンタを用いる場合、この隠れトレイス推定部２４の処理は不要である。
【００３４】
区間時間推定部２５は、学習データに基づいて、測定対象の被測定プログラム１２における処理区間について、その処理時間を推定する。トレイスカウンタを用いない場合、学習データに加えて、前段の隠れトレイス推定部２４の出力である、全測定区間の処理時間合計が利用される。トレイスカウンタを用いる場合、学習データのみが利用される。
【００３５】
図２及び図３は、図１のプログラム性能測定装置において実行されるプログラム性能測定処理の説明図である。
【００３６】
今、例えば、被測定プログラム１２に、図２に示すように、トレイス文が埋め込まれているとする。また、ベンチマークプログラム１１の実行により、被測定プログラム１２において、関数ｆｏｏ（）が、繰り返し呼び出されるものとする。関数ｆｏｏ（）が呼び出されると、関数ｂａｒ（）および関数ｂａｚ（）が呼び出される。このとき、関数ｂａｒ（）の実行に要する時間を計測し、さらに関数ｂａｒ（）内から呼び出される関数ｂａｚ（）の実行に要する時間も測定する。そのために、図２にＭ０，Ｍ１，Ｍ２，Ｍ３のラベルで示した箇所に、トレイス文を予め埋め込んでおく。この場合、ラベルによって区別されているトレイス文は、関数ｆｏｏ（）が呼び出されるたびに、Ｍ０、Ｍ１、Ｍ２、Ｍ３の順に実行される。この時、測定区間Ｗ１をラベルＭ０とラベルＭ１の間のプログラムをプロセッサが通過する区間と定め、これをＷ１←（Ｍ０，Ｍ１）と書くことにすると、同様に測定区間Ｗ２←（Ｍ１，Ｍ２）、測定区間Ｗ３←（Ｍ２，Ｍ３）となる。さらに、測定区間Ｗ０は、最後のラベルＭ３から、続く関数ｆｏｏ（）の呼び出しにより、２回目に現れるＭ０までとなる。すなわち、測定区間Ｗ０←（Ｍ３，Ｍ０）である。
【００３７】
以上のことを形式的に定義する。被測定プログラム１２の任意の位置を、ラベルＭｓ（ｓは０からＳの整数）で表すこととする。ただし、ベンチマークプログラム１１を実行したとき、被測定プログラム１２では、プロセッサがラベルＭｓを添え字ｓの順に通過するものとする。このとき、測定区間をＷｓ←（Ｍ（ｓ−１），Ｍｓ）（１≦ｓ≦Ｓのとき）および、Ｗ０←（ＭＳ，Ｍ０）と定める。また、２つのラベルｕ＝Ｍｉ，ｖ＝Ｍｊが昇順であるとは、ｉ＜ｊなることであり、降順であるとは、ｉ＞ｊなることと定める。
【００３８】
図３（Ａ）及び図３（Ｂ）は、ベンチマークプログラム１１を実行することにより、被測定プログラム１２が繰り返し駆動された際に、プロセッサが通過したプログラム上のラベルを、時間軸上にプロットしたものである。今、関数ｂａｒ（）の実行に要する時間を計測することが目的であるから、測定区間Ｗ１，Ｗ２，Ｗ３を連結した測定区間Ｗと、それ以外の区間Ｗ０とが、被測定プログラム１２の駆動１回分を構成する。各ラベルの箇所にトレイス文を埋め込んだので、各トレイス文を、ラベルを用いて表すこととする。この例では、測定区間Ｗにおいて、ラベルＭ０〜Ｍ３の位置に４個のトレイス文が実行される。なお、ラベルＭ０〜Ｍ３（即ち、当該位置のトレイス文）は、三角形で表すことにする。
【００３９】
例えば、図３（Ａ）において、被測定プログラム１２が駆動され、トレイス文を実行すると、乱数発生部１３は、乱数ｒを発生させ、これをトレイス出力部１４に入力する。
【００４０】
乱数ｒの値は、例えば非負整数Ｎ−１の範囲とする。例えば、トレイス出力部１４は、乱数ｒの値が０の場合、トレイスデータを出力し、０以外の場合、トレイスデータを出力しない。乱数ｒが一様乱数であり、各非負整数の生起が同様に確からしい場合、Ｎ回に１回だけ、ランダムにトレイスデータが出力されることになる。
【００４１】
図３（Ａ）において、トレイス文の実行時には、常に乱数ｒを発生させる。最初の測定区間Ｗにおける各トレイス文実行時（つまりラベルの箇所）に発生させた乱数のうち、ラベルＭ２のトレイス文についてのみ「０」で、他のラベルＭ０等については０以外の値「非０」であったとする。この場合、トレイス出力部１４は、最初の測定区間Ｗにおいて、ラベルＭ２のトレイスデータのみを出力し、他のトレイスデータは出力しない。図３（Ａ）及び図３（Ｂ）において、トレイスデータを出力したトレイス文（出力トレイス）を黒い三角形で表し、トレイスデータを出力しなかったトレイス文（欠損トレイス又は隠れトレイス）を白い三角形で表す。トレイスカウンタを用いない場合、このラベルＭ２のトレイス文を実行した結果、トレイス出力部１４は、このラベルＭ２と共に、トレイス文実行の時刻ｔ１を取得して、これを出力＃１として出力する。トレイスカウンタを用いた場合、トレイス出力部１４は、更にトレイスカウンタのカウント値ｈ１（図３（Ｂ）においてはトレイスカウンタｈ１と表す、ｈ２についても同じ）も取得して、これも出力＃１に含める。
【００４２】
この後、２番目の測定区間Ｗにおいて、いずれのトレイス文についても、乱数が０以外の値「非０」であったとする。この場合、この測定区間Ｗにおいては、いずれのトレイスデータも出力されず、出力＃２は得られない（又は、空とされる）。
【００４３】
更に、この後、３番目の測定区間Ｗにおける各トレイス文実行時に発生させた乱数のうち、ラベルＭ１のトレイス文についてのみ「０」で、他のラベルＭ０等については０以外の値「非０」であったとする。この場合、トレイス出力部１４は、この測定区間Ｗにおいては、ラベルＭ１のトレイスデータのみを出力する。トレイスカウンタを用いない場合、トレイス出力部１４は、このラベルＭ１と共に、トレイス文実行の時刻ｔ２を取得して、これを出力＃３として出力する。トレイスカウンタを用いた場合、トレイス出力部１４は、更にトレイスカウンタのカウント値ｈ２も取得して、これも出力＃３に含める。
【００４４】
ここで、トレイスカウンタについて説明する。トレイスカウンタは、トレイス文を実行するたびに＋１ずつそのカウント値が増加するカウンタである。例えば、図３（Ｂ）では、出力＃１と出力３の間に７回トレイス文を実行しているので、カウント値の増加は、ｈ２−ｈ１＝７である。
【００４５】
なお、以上は、１つの測定区間Ｗにおいて、トレイスデータが出力されない場合や１個のトレイスデータが出力される場合について説明した。しかし、１つの測定区間Ｗにおいて、複数のトレイスデータが出力される場合もある。
【００４６】
１回の被測定プログラム１２の駆動に限れば、得られたトレイスデータは不完全なものである。例えば、図３（Ａ）及び図３（Ｂ）において、１番目の測定区間ＷについてはラベルＭ２のトレイスデータしか採取されていない。しかし、被測定プログラム１２を繰り返し駆動すると共に、その過程で、乱数ｒに従って出力されるトレイスデータが、ランダムに選択される。そして、不完全なトレイスデータを統計処理することにより、トレイスデータの欠損を補うことができる。
【００４７】
なお、トレイスデータを出力するためには、図３（Ｃ）に示すように、ある程度の時間を必要とする。従って、真の測定区間の処理時間に誤差時間εが付加されることは避けられない。しかし、本実施態様の方式によれば、トレイス文の実行による誤差が測定区間の処理時間に付加される割合を小さくすることができる。例えば、図３（Ａ）に示すように、４個のトレイス文を含む測定区間Ｗを３回実行した場合において、２回のトレイスデータの出力があったとすると、誤差εの影響を２／１２とすることができる。
【００４８】
これにより、細分化された測定区間Ｗ１等が微小であっても、その実行の所要時間を高い精度で測定することができる。従って、例えばプロセスの切り替えやユーザアプリケーションとカーネルとの切り替え等のように、微小な（高速な）処理の所要時間を高い精度で測定することができる。また、トレイス文実行に対して、いつもトレイスデータを出力せずともよいことから、低速な外部デバイスを用いて、高速なプロセッサ内の処理の所要時間を測定することができる。
【００４９】
図４（Ａ）は、トレイスカウンタを用いない場合において、トレイス出力部１４から出力されてトレイスデータ蓄積部１６に蓄積されたトレイスデータの集合の一例を示す。図５（Ａ）は、トレイスカウンタを用いる場合において、同様にして、蓄積されたトレイスデータの集合の一例を示す。
【００５０】
トレイスデータの集合は、複数のトレイスデータを含む。トレイスデータは、図４（Ａ）及び図５（Ａ）に示すように、トレイス文が実行された時刻と、実行されたトレイス文の位置を示すラベルとを含む。時刻は、ある時点を基点（時刻０）として、基点からの経過時間（例えば、ナノ秒単位）により表される。学習データでは時間差だけに関心があるので、時刻の基点がいつであるかは問題とならない。ラベルは、実行されたトレイス文を特定する情報である。
【００５１】
トレイスカウンタを用いる場合は、図５（Ａ）に示すように前記時刻及びラベルに加えて、トレイスカウンタによるカウンタ値（図では単に「トレイスカウンタ」と称す）を含む。トレイスカウンタ値は、ある時点を基点として、基点からのトレイス文の実行回数により表される。学習データでは隠れトレイス数だけに関心があるので、トレイスカウンタ値の基点がいつであるかは問題とならない。
【００５２】
例えば、図４（Ａ）に示すように、時刻「１２００」において、ラベルＭ２のトレイス文が実行されたことが判る。トレイスカウンタを用いる場合は、図５（Ａ）に示すように、このときのトレイスカウンタ値が「１０００」であったことが判る。他についても、同様である。
【００５３】
図４（Ｂ）は、トレイスカウンタを用いない場合において、学習データ生成部２２から出力されて学習データ蓄積部２３に蓄積された学習データの集合の一例を示す。図５（Ｂ）は、トレイスカウンタを用いる場合において、同様にして、蓄積された学習データの集合の一例を示す。
【００５４】
学習データの集合は、複数の学習データを含む。学習データは、トレイスデータの間の時間差を表す。即ち、学習データは、トレイスカウンタを用いない場合は、図４（Ｂ）に示すように、時間差Ｔｉ、開始ラベルＢｉ、終了ラベルＥｉを含む。トレイスカウンタを用いる場合は、図５（Ｂ）に示すように、更に隠れトレイス数ｋｉを含む。時間差Ｔｉは、学習データを生成する基礎となった２個のトレイスデータの間の時間差である。開始ラベルＢｉは、２個のトレイスデータの中の先に実行された（実行時刻の古い）ラベルである。終了ラベルＥｉは、２個のトレイスデータの中の後に実行された（実行時刻の新しい）ラベルである。なお、番号ｉは、任意に付与される。隠れトレイス数ｋｉは、学習データを生成する基礎となった２個のトレイスデータの間のトレイスカウンタ値の差である。
【００５５】
例えば、番号１の学習データは、図４（Ａ）及び図５（Ａ）のトレイスデータの集合の１番目と２番目のトレイスデータから生成される。従って、その時間差Ｔｉは「１２０」であり、開始ラベルＢｉはＭ２であり、終了ラベルＥｉはＭ３であり、隠れトレイス数ｋｉは「４９」である。他についても、同様である。
【００５６】
図４（Ｃ）は、トレイスカウンタを用いない場合において、学習データ生成部２２から出力されて学習データ蓄積部２３に蓄積されたペアデータの集合の一例を示す。なお、トレイスカウンタを用いる場合、ペアデータは蓄積されない。
【００５７】
ペアデータは、図４（Ｂ）の学習データの集合において、開始ラベルＢｉと終了ラベルＥｉとが相互に逆になっている学習データがペアになって構成するデータである。例えば、図４（Ｂ）の学習データの集合において、ｉ＝１の学習データとｉ＝５の学習データ、あるいはｉ＝６の学習データとｉ＝７の学習データは、各々、ペアデータである。なお、開始ラベルＢｉと終了ラベルＥｉとが同一の場合は、この学習データが単独でペアデータを構成する。例えば、ｉ＝３の学習データは、それ単独でペアデータとされる。
【００５８】
ペアデータの集合は、複数のペアデータを含む。ペアデータは、図４（Ｃ）に示すように、索引＋、索引−、時間差Ｔｉ±、ラベルｖ、ラベルｕを含む。なお、番号ｉ±は、任意に付与される。ラベルｖとラベルｕは、学習データのペアが共有する２つのラベルであり、ラベルｖとラベルｕは昇順とする。索引＋は、ラベルｕを開始ラベルとし、ラベルｖを終了ラベルとする学習データの図４（Ｂ）あるいは図５（Ｂ）の番号を示し、同様に索引−は、ラベルｖを開始ラベルとし、ラベルｕを終了ラベルとする学習データの番号を示す。番号ｉ±のペアデータを（ｉ＋，ｉ−）と表記し、索引＋をｉ＋、索引−をｉ−と表記することとする。
【００５９】
なお、学習データが単独でペアを構成する場合、索引−は空欄（ｎｉｌ）と定める。また、開始ラベルＢｉと終了ラベルＥｉは降順として扱っても一般性を失わない。換言すると、索引＋は空欄（ｎｉｌ）と定め、開始ラベルＢｉと終了ラベルＥｉは昇順として扱っても結果は同じである。図４（Ｂ）の番号ｉと、図４（Ｃ）の番号ｉ±は任意に付与したものなので、索引＋及び索引−は説明の便宜のために導入したものであり、作り出さなくともよい。時間差（Ｔｉ±）は、ペアを構成する２個の学習データの時間差Ｔｉの和である。隠れトレイス数（ｋｉ±）は、ペアを構成する２個の学習データの隠れトレイス数ｋｉである。
【００６０】
例えば、番号４±のペアデータは、ｉ＝６の学習データとｉ＝７の学習データとで構成され、その時間差Ｔｉ±は「２２０」であり、ラベルｖとラベルｕはそれぞれＭ０とＭ２であり、索引＋はラベルｕ（Ｍ２）を開始ラベルとし、ラベルｖ（Ｍ０）を終了ラベルとする学習データの番号６であり、索引−はラベルｖ（Ｍ０）を開始ラベルとし、ラベルｕ（Ｍ２）を終了ラベルとする学習データの番号７である。
【００６１】
以下、図６〜図１０に示す処理フローに従って、図１のプログラム性能測定装置におけるプログラム性能測定処理について、詳細に説明する。
【００６２】
図６は、図１のプログラム性能測定装置において実行されるプログラム性能測定処理フローである。
【００６３】
ユーザにより実行＃１が入力されると、ベンチマークプログラム１１の実行が開始され、これにより被測定プログラム１２が繰り返し駆動される。この過程で、トレイスが採取され、トレイス出力部１４が、乱数の値に応じてトレイスデータをトレイスデータ蓄積部１６に蓄積する（ステップＳ１１）。これにより、図４（Ａ）又は図５（Ａ）に示すトレイスデータの集合が得られる。ステップＳ１１については、図７を参照して詳細に説明する。
【００６４】
ユーザにより実行＃２が入力されると、学習データ生成部２２が、トレイスデータ蓄積部１６からトレイスデータの集合を読み出して、採取したトレイスデータのうち、連続するトレイスデータ間の時間差Ｔｉ、開始ラベルＢｉ、終了ラベルＥｉを有する学習データを生成して、学習データ蓄積部２３に蓄積する（ステップＳ１２）。これにより、図４（Ｂ）又は図５（Ｂ）に示す学習データの集合が得られる。ステップＳ１２については、図８を参照して詳細に説明する。
【００６５】
次に、トレイスカウンタを用いない場合、学習データ生成部２２が、学習データからペアデータを作り出す（ステップＳ１３）。これにより、図４（Ｃ）に示すペアデータの集合が得られる。ステップＳ１３については、図９を参照して詳細に説明する。なお、トレイスカウンタを用いる場合、ステップＳ１３は省略される。
【００６６】
ユーザにより実行＃３が入力されると、区間時間推定部２５が、隠れトレイス推定部２４を呼び出して、所定の処理を実行させる。即ち、トレイスカウンタを用いない場合、隠れトレイス推定部２４が、学習データ蓄積部２３からペアデータの集合を読み出して、これらのペアデータから、測定区間に要する処理時間と、それ以外の区間に要する処理時間との和を算出する（ステップＳ１４）。この和は、乱数を用いたことにより出力されなかった連続するトレイスの長さの期待値を用いて算出することができる。
【００６７】
トレイスカウンタを用いない場合におけるステップＳ１４については、図１０を参照して詳細に説明する。
【００６８】
この後、区間時間推定部２５が、学習データ蓄積部２３から学習データの集合を読み出して、これらの学習データを用いて、測定区間とそれ以外の区間を推定する（ステップＳ１５）。ステップＳ１５については、図１０及び図１５を参照して詳細に説明する。
【００６９】
図７は、図６のステップＳ１１において実行されるトレイスデータ出力処理フローである。
【００７０】
乱数発生部１３が、乱数ｒ（以下、一様乱数ｒ）を発生させる（ステップＳ２１）。この時、一様乱数ｒの値は、０以上で１／ｑ未満の整数とする。ここで、ｑは［０，１）の区間内の定数である。例えば、ｑ＝０．２５であったとすると、１／ｑ＝４である。つまり、乱数ｒは｛０，１，２，３｝のいずれかを、等しい確率ｑ＝０．２５で発生することになる。このような一様乱数ｒを用いれば、４回に１回の確率でトレイスを出力させることができる。
【００７１】
トレイス出力部１４が、一様乱数ｒ＝０か否かを調べる（ステップＳ２２）。一様乱数ｒ＝０である場合、トレイス出力部１４が、トレイスデータを出力する。即ち、トレイスカウンタを用いない場合、トレイス出力部１４が、トレイスデータ蓄積部１６に、図４（Ａ）に示すように、現在の時刻と、実行されたトレイス文のラベルＭとを追加記録する。一方、トレイスカウンタを用いる場合、トレイス出力部１４が、これらに加えて、トレイスカウンタのカウント値も記録する（ステップＳ２３）。ステップＳ２２において一様乱数ｒ＝０でない場合、ステップＳ２３を省略する。
【００７２】
トレイスカウンタを用いる場合、パラメタ推定部２１が、トレイスカウンタをインクリメントする（ステップＳ２４）。トレイスカウンタを用いない場合、Ｓ２４は実行しない。
【００７３】
図８は、図６のステップＳ１２において実行される学習データ生成処理フローである。
【００７４】
図８において、学習データ生成部２２が、連番ｉ、つまり図４（Ｂ）に示す学習データにおける番号（ｉ）を初期化する（ステップＳ３１）。即ち、ｉ＝１とする。
【００７５】
この後、学習データ生成部２２が、図４（Ａ）及び図５（Ａ）に示すトレイスデータの集合から最初（０番）のレコード（トレイスデータ）を取り出し、これをＲ１とする（ステップＳ３２）。トレイスカウンタを用いない場合、Ｒ１＝（ｔ１，ｍ１）であり、トレイスカウンタを用いる場合、Ｒ１＝（ｔ１，ｍ１，ｈ１）である。更に、学習データ生成部２２が、トレイスデータの集合から次（１番）のレコードを取り出し、これをＲ２とする（ステップＳ３３）。トレイスカウンタを用いない場合、Ｒ２＝（ｔ２，ｍ２）であり、トレイスカウンタを用いる場合、Ｒ２＝（ｔ２，ｍ２，ｈ２）である。ここで、ｔ１及びｔ２は時刻、ｍ１及びｍ２はラベルＭ、ｈ１及びｈ２はトレイスカウンタのカウント値である。
【００７６】
この後、学習データ生成部２２が、トレイスデータの集合に残りのレコードが無いか否かを調べる（ステップＳ３４）。
【００７７】
残りのレコードが有る場合（Ｓ３４  Ｎｏ）、学習データ生成部２２が、取り出したレコードＲ１とレコードＲ２について、その時間差Ｔｉ＝ｔ２−ｔ１及び隠れトレイス数ｋｉ＝ｈ２−ｈ１を求め（ステップＳ３５）、生成した学習データを、図４（Ｂ）及び図５（Ｂ）に示すように、学習データ蓄積部２３に書き込む（ステップＳ３６）。生成した学習データは、トレイスカウンタを用いない場合、（ｉ，Ｔｉ，ｍ１，ｍ２）であり、トレイスカウンタを用いる場合、（ｉ，Ｔｉ，ｍ１，ｍ２，ｋｉ）である。なお、ｍ１は図４（Ｂ）及び図５（Ｂ）におけるＢｉであり、ｍ２はＥｉである。
【００７８】
この後、学習データ生成部２２が、連番ｉをｉ＋１とし、レコードＲ２を新たなレコードＲ１とする（ステップＳ３７）。この後、ステップＳ３３以下を繰り返す。
【００７９】
以上のステップＳ３３〜Ｓ３７の処理は、学習データの生成処理であるので、トレイスカウンタを用いない場合、及び、トレイスカウンタを用いる場合の双方に共通する処理である。
【００８０】
図９は、図６のステップＳ１３において実行されるペアデータ生成処理フローであり、トレイスカウンタを用いない場合のみに実行され、トレイスカウンタを用いる場合には実行されない処理である。
【００８１】
ステップＳ３４において残りのレコードが無い場合（Ｓ３４  Ｙｅｓ）、学習データ生成部２２が、学習データ（ｉ，Ｔｉ，Ｂｉ，Ｅｉ）を１つ取出す。但し、図９の例ではＢｉ、Ｅｉが降順なものに限る（ステップＳ３８）。この後、学習データ生成部２２が、そのような学習データが無いか否かを調べる（ステップＳ３９）。そのような学習データが無い場合（Ｓ３９  Ｙｅｓ）、処理を終了する。
【００８２】
残りの学習データが有る場合（Ｓ３９  Ｎｏ）、学習データ生成部２２が、取り出した学習データｉについて、Ｂｉ＝Ｅｉか否かを調べる（ステップＳ３１０）。
【００８３】
Ｂｉ＝Ｅｉである場合（Ｓ３１０  Ｙｅｓ）、学習データ生成部２２が、取り出した学習データｉを、図４（Ｃ）に示すペアデータ（ｉ，ｎｉｌ）として、学習データ蓄積部２３のぺアデータの集合に登録する（ステップＳ３１１）。これは、図４（Ｃ）の例において、ペア（３，ｎｉｌ）であるペアデータに相当する。
【００８４】
Ｂｉ＝Ｅｉでない場合（Ｓ３１０  Ｎｏ）、学習データ生成部２２が、取り出した学習データのＢｉ及びＥｉを用いて図４（Ｂ）の学習データの集合を検索して、この中から、Ｂｉ＝ＥｊかつＥｉ＝Ｂｊを満たす学習データ（ｊ，Ｔｊ，Ｂｊ，Ｅｊ）を探す（ステップＳ３１２）。
【００８５】
この後、学習データ生成部２２が、ステップＳ３１２の条件に合う学習データｊが見つかったか否かを調べる（ステップＳ３１３）。見つからない場合（Ｓ３１３  Ｎｏ）、ステップＳ３８以下を繰り返す。一方、Ｓ３１２の条件に合う学習データが見つかった場合（Ｓ３１３  Ｙｅｓ）、学習データ生成部２２が、学習データｉと見つけた学習データｊとを、図４（Ｃ）に示すペアデータ（ｉ，ｊ）として、学習データ蓄積部２３のぺアデータの集合に登録する（ステップＳ３１４）。登録されたペアデータは、図４（Ｃ）の例において、ペア（３，ｎｉｌ）であるペアデータ以外のペアデータに相当する。
【００８６】
図１０は、トレイスカウンタを用いない場合において、図６のステップＳ１３において実行される隠れトレイス推定処理、ステップＳ１４において実行される処理時間の和の算出処理、及び、ステップＳ１５において実行される測定区間の処理時間の推定処理の処理フローである。
【００８７】
図１０を説明する前に、図１１〜図１３を用いて、トレイスカウンタを用いない場合において、測定区間の処理時間を算出する方法を説明する。
【００８８】
まず、図１１について説明する。被測定プログラム１２において、｛Ｍ０，Ｍ１，…，ＭＳ｝の（Ｓ＋１）種類のラベルＭｓ（但しｓは０〜Ｓの整数）があるとする。ラベルＭ（ｓ−１）とラベルＭｓの間の測定区間の処理時間（区間時間）をＷｓ（１≦ｓ≦Ｓの場合）、ラベルＭＳとラベルＭ０の間の区間時間をＷ０とする。従って、図１０で説明する隠れトレイス推定処理及び測定区間の処理時間の推定処理の目的は、この処理時間Ｗｓを推定することである。
【００８９】
番号ｉ±のペアデータの索引＋と索引−が指し示す学習データは（ｉ＋，Ｔｉ＋，Ｂｉ＋，Ｅｉ＋）と（ｉ−，Ｔｉ−，Ｂｉ−，Ｅｉ−）である。なお、索引の定義から、ｕ＝Ｂｉ＋＝Ｅｉ−かつｖ＝Ｅｉ＋＝Ｂｉ−の関係がある。ここで、時間差Ｔｉ＋及びＴｉ−は、測定区間の処理時間Ｗｓを使って、図１１のように記述することができる。但し、トレイスカウンタを利用しない場合、隠れトレイス数ｋ＋及びｋ−は未知である。
【００９０】
隠れトレイス数ｋ＋及びｋ−が未知なので、これを用いることなく測定区間の処理時間Ｗｓを求める工夫が必要となる。そこで、図１１の演算（ｉ）及び演算（ｉｉ）のように、ペアデータ中の時間差の和Ｔｉ±＝（Ｔｉ＋）＋（Ｔｉ−）を全てのペアデータの集合πについて加算することにより、全測定区間の処理時間合計であるＺ＝Ｗ０＋Ｗ１＋．．．＋ＷＳを推定する。詳細な方法は図１１に示したとおりであるが、結論だけいえば、全測定区間の処理時間合計Ｚを算出するためには、ラベルの種類の数（Ｓ＋１）、ペアデータ集合のサイズσ、全ペアデータの時間差の和ΣＴｉ±、隠れトレイス数の期待値Ｅ［ｋ］が必要である。これらのうち、隠れトレイス数の期待値Ｅ［ｋ］以外は、ペアデータから容易に算出することができる。
【００９１】
図１２は、乱数発生部で一様乱数ｒを使った場合の、隠れトレイス数の期待値Ｅ［ｋ］の算出例である。
【００９２】
例えば、図１２（Ａ）及び図１２（Ｂ）に示すように、連続してｋ個のトレイスを出力しない確率ｐ（ｋ）を用いて、図１２（Ｃ）に示すように、トレイス数の期待値Ｅ［ｋ］を理論的に算出できる。このように、トレイス数の期待値Ｅ［ｋ］は、トレイスを出力する確率ｑをパラメタとする。図１２（Ｄ）は、具体的なｑの値に応じたＥ［ｋ］の結果を示す。ｑは０以上１未満である。
【００９３】
以上により、隠れトレイス数の期待値Ｅ［ｋ］が算出できたので、全測定区間の処理時間合計Ｚを推定できたことになる。ここで、再び、図１１の時間差Ｔｉ＋及びＴｉ−の定義に戻る。
【００９４】
図１３は、図１１に示すこれらの定義式を再掲する。以下、図１３に従って、説明する。図１３に示すように、これらの右辺を整理し、全測定区間の処理時間合計Ｚの整数倍の定数項と、変数Ｗｓを含む項に分割して記述することができる。この結果として重要なことは、この式の中には、もはや隠れトレイス数ｋ＋及びｋ−は含まれていないことである。この右辺中の変数Ｗｓの項の出現の有無を表す、要素を０又は１とする行ベクトルｘｉ＋及びｘｉ−は、全ての学習データから１つずつ作り出すことができる。これにより、学習データ数分の回帰式が得られ、これを解くことによって測定区間の処理時間であるＷｓを算出することができる。
【００９５】
図１０において、隠れトレイス推定部２４が、値Ｓを初期化してＳ＝０とした後、全てのペア（ｉ＋，ｉ−）について、ＳにＴｉ±を加算する（ステップＳ４１）。更に、隠れトレイス推定部２４が、Ｚ＝Ｓ／Ｅ［ｋ］とする（ステップＳ４２）。これらの処理は、図１１及び図１２で説明した、全測定区間の処理時間合計であるＺを推定する処理である。
【００９６】
区間時間推定部２５が、学習データ（ｉ，Ｔｉ，Ｂｉ，Ｅｉ）を取り出し（ステップＳ４３）、学習データ蓄積部２３の学習データの集合に未処理の学習データが無いか否かを調べる（ステップＳ４４）。
【００９７】
未処理の学習データが有る場合（Ｓ４４  Ｎｏ）、区間時間推定部２５が、取出した学習データについて、前述の値Ｚに基づいて、値ｘｉ、ｙｉ、ｂｉを求め（ステップＳ４５）、この後、ステップＳ４３以下を繰り返す。これらの処理は、図１３で説明した、回帰式を導出する処理である。
【００９８】
未処理の学習データが無い場合（Ｓ４４  Ｙｅｓ）、区間時間推定部２５が、ｙｉ±＝（ｘｉ・ｗ）＋ｂｉを重回帰分析して、測定区間における所要時間を算出する（ステップＳ４６）。これにより、連続してトレイスデータを出力しない回数の期待値に基づいて、被測定プログラム１２の全測定区間の処理時間合計を求め、測定区間ごとの所要時間を算出することができる。
【００９９】
図１４は、図１０に示す処理の実際について示す説明図である。なお、図１４は、図４に示すデータについての処理の例を示す。
【０１００】
図１４（Ａ）に示すように、ｑ＝１／２４の場合、Ｅ［ｋ］＝１２０である（図１２（Ｃ）より算出）。この後、ステップＳ４１により、図１４（Ｂ）に示すように、図４（Ｃ）に示す４個のペアデータについての時間差の和Ｓが求まる。また、ステップＳ４２により、図１４（Ｂ）に示すように、全測定区間の処理時間合計Ｚが求まる。
【０１０１】
この後、ステップＳ４５において、例えば、区間時間推定部２５は、図１４（Ｃ）に示すように、番号１の学習データについて、回帰式ｙ１＝（ｘ１・ｗ）＋ｂ１を求める。同様に、図１４（Ｄ）に示すように、番号２の学習データについての回帰式ｙ２＝（ｘ２・ｗ）＋ｂ２が求まり、図１４（Ｅ）に示すように、番号３の学習データについての回帰式ｙ３＝（ｘ３・ｗ）＋ｂ３が求まる。他のペアデータについても、同様である。
【０１０２】
そして、区間時間推定部２５は、図１４（Ｃ）〜（Ｅ）に示す処理の結果に基づいて、図１４（Ｆ）に示すような結果を得る。なお、図１４（Ｆ）においては、値ｙと図４（Ｂ）との比較から判るように、学習データの順に並べ直して表示している。
【０１０３】
この後、最終的に、区間時間推定部２５は、図１４（Ｆ）に示す結果を重回帰分析する。これにより、例えば、Ｗ０＝６（単位時間、以下同じ）、Ｗ１＝１、Ｗ２＝５、Ｗ３＝２のような結果が得られる。
【０１０４】
図１５は、トレイスカウンタを用いる場合において、ステップＳ１５において実行される測定区間の処理時間の推定処理の処理フローである。なお、前述したように、トレイスカウンタを用いる場合、図６のステップＳ１３（隠れトレイス推定処理）は省略される。
【０１０５】
図１５を説明する前に、図１６を用いて、トレイスカウンタを用いる場合において、測定区間の処理時間を算出する方法を説明する。
【０１０６】
図１６において、測定区間の処理時間Ｗｓの定義は図１１及び図１３と同じである。トレイスカウンタを利用する場合も、図１５で説明する測定区間の処理時間の推定処理の目的は、この処理時間Ｗｓを推定することである。
【０１０７】
学習データ（ｉ＋，Ｔｉ＋，Ｂｉ＋，Ｅｉ＋，ｋ＋）及び（ｉ−，Ｔｉ−，Ｂｉ−，Ｅｉ−，ｋ−）における時間差Ｔｉ＋及びＴｉを測定区間の処理時間Ｗｓを使って記述する点も、図１１と同様である。但し、トレイスカウンタを利用する場合、隠れトレイス数ｋ＋及びｋ−は既知である。
【０１０８】
隠れトレイスが既知なので、これを用いて回帰式を作ることができる。前式の右辺中の変数Ｗｓの出現回数を表す行ベクトルｘｉ＋及びｘｉ−は、図１１に示すとおり、隠れトレイス数ｋｉ＋及びｋｉ−を用いて、全ての学習データから１つずつ作り出すことができる。これにより、学習データ数分の回帰式が獲られ、これを解くことによって測定区間の処理時間Ｗｓを算出することができる。
【０１０９】
図１５において、区間時間推定部２５が、学習データ（ｉ，Ｔｉ，Ｂｉ，Ｅｉ,ｋｉ）を取り出し（ステップＳ５１）、学習データ蓄積部２３の学習データの集合に未処理の学習データが無いか否かを調べる（ステップＳ５２）。
【０１１０】
未処理の学習データが有る場合、区間時間推定部２５が、取出した学習データについて、前述の値Ｚに基づいて、値ｘｉ、ｙｉ、ｂｉを求め（ステップＳ５３）、この後、ステップＳ５１以下を繰り返す。
【０１１１】
未処理の学習データが無い場合、区間時間推定部２５が、ｙｉ＝（ｘｉ・ｗ）を重回帰分析して、測定区間における所要時間を算出する（ステップＳ５４）。これにより、連続してトレイスデータを出力しない回数である隠れトレイス数に基づいて、被測定プログラム１２の、測定区間ごとの所要時間を算出することができる。
【０１１２】
図１７は、図１５に示す処理の実際について示す説明図である。なお、図１７は、図５に示すデータについての処理の例を示す。
【０１１３】
図１５のステップＳ５３において、区間時間推定部２５は、図１７（Ａ）に示すように、番号１の学習データについて、回帰式ｙ１＝（ｘ１・ｗ）を求める。同様に、図１７（Ｂ）に示すように、番号２の学習データについての値回帰式ｙ２＝（ｘ２・ｗ）が求まり、図１７（Ｃ）に示すように、番号３の学習データについての値ｙ３＝（ｘ３・ｗ）が求まる。他のペアデータについても、同様である。
【０１１４】
この後、最終的に、区間時間推定部２５は、図１７（Ｄ）に示す結果を重回帰分析することにより、例えばＷ０＝６、Ｗ１＝１、Ｗ２＝５、Ｗ３＝２のような結果を得る。
【図面の簡単な説明】
【０１１５】
【図１】本発明の一実施態様によるプログラム性能測定装置の一例を示す構成図である。
【図２】図１のプログラム性能測定装置において実行されるプログラム性能測定処理の説明図である。
【図３】図１のプログラム性能測定装置において実行されるプログラム性能測定処理の説明図である。
【図４】プログラム性能測定処理の説明図である。
【図５】トレイスカウンタを利用する場合の、プログラム性能測定処理の説明図である。
【図６】図１のプログラム性能測定装置において実行されるプログラム性能測定処理フローである。
【図７】図６のステップＳ１１において実行されるトレイスデータ出力処理フローである。
【図８】図６のステップＳ１２において実行される学習データ生成処理フローである。
【図９】図６のステップＳ１２において実行される学習データ生成処理フローである。
【図１０】図６のステップＳ１３において実行される隠れトレイス推定処理及びステップＳ１４において実行される測定区間の処理時間の推定処理の処理フローである。
【図１１】図１０のプログラム性能測定処理の説明図である。
【図１２】図１０のプログラム性能測定処理の説明図である。
【図１３】図１０のプログラム性能測定処理の説明図である。
【図１４】図１０のプログラム性能測定処理の説明図である。
【図１５】トレイスカウンタを利用する場合の、図６のステップＳ１４において実行される測定区間の処理時間の推定処理の処理フローである。
【図１６】図１５のプログラム性能測定処理の説明図である。
【図１７】図１５のプログラム性能測定処理の説明図である。
【符号の説明】
【０１１６】
１  測定対象サーバ
２  分析サーバ
１１  ベンチマークプログラム
１２  ＯＳ（オペレーティングシステム）
１３  乱数発生部
１４  トレイス出力部
１５  ファイルシステム
１６  トレイスデータ蓄積部
２１  パラメタ推定部
２２  学習データ生成部
２３  学習データ蓄積部
２４  隠れトレイス推定部
２５  区間時間推定部
【図１】
2010092201.tif 000003
【図２】
2010092201.tif 000004
【図３】
2010092201.tif 000005
【図４】
2010092201.tif 000006
【図５】
2010092201.tif 000007
【図６】
2010092201.tif 000008
【図７】
2010092201.tif 000009
【図８】
2010092201.tif 000010
【図９】
2010092201.tif 000011
【図１０】
2010092201.tif 000012
【図１１】
2010092201.tif 000013
【図１２】
2010092201.tif 000014
【図１３】
2010092201.tif 000015
【図１４】
2010092201.tif 000016
【図１５】
2010092201.tif 000017
【図１６】
2010092201.tif 000018
【図１７】
2010092201.tif 000019