(57)【特許請求の範囲】
【請求項１】
プロセッサ負荷量を推定するための負荷係数を生成する負荷係数生成システムであって、
所定の情報処理端末及び前記負荷係数生成システム内に構築される各仮想機械上で動作し且つ少なくとも一種類のバイトコードを繰り返し実行する試験プログラムを供給するプログラム供給手段と、
前記プログラム供給手段によって供給される前記試験プログラムを前記情報処理端末又は前記負荷係数生成システム内に構築される前記仮想機械に実行させる第一のプログラム実行手段と、
前記第一のプログラム実行手段によって前記試験プログラムを実行した前記仮想機械から出力される前記バイトコード及び／又は前記バイトコードの組のトレースログを取得し、当該取得したトレースログから前記バイトコード及び／又は前記バイトコードの組の実行回数を抽出するトレースログ加工手段と、
前記プログラム供給手段によって供給される前記試験プログラムを前記情報処理端末内に構築される前記仮想機械に実行させる第二のプログラム実行手段と、
前記第二のプログラム実行手段によって前記試験プログラムを実行した際の前記情報処理端末のプロセッサ負荷量を示す負荷量ログを取得する負荷量ログ取得手段と、
前記トレースログ加工手段によって抽出された前記バイトコード及び／又は前記バイトコードの組の前記実行回数を説明変数とし且つ前記負荷量ログ取得手段によって取得された前記プロセッサ負荷量を目的変数とした算出式に基づいて、前記バイトコード及び／又は前記バイトコードの組に対する前記負荷係数を算出する係数算出手段と、
を備える負荷係数生成システム。
【請求項２】
前記試験プログラムは、単一種類からなる前記バイトコードを繰り返し実行するプログラムであり、
前記トレースログ加工手段は、前記単一種類からなるバイトコードの前記実行回数を取得し、
前記係数算出手段は、前記単一種類からなるバイトコードの前記実行回数を説明変数とした前記算出式に基づいて、前記単一種類からなるバイトコードに応じた前記負荷係数を算出することを特徴とする請求項１に記載の負荷係数生成システム。
【請求項３】
前記トレースログ加工手段は、前記単一種類からなるバイトコードの前記実行回数を、前記単一種類からなるバイトコードが取り得る引数値毎に取得し、
前記係数算出手段は、前記引数値毎に取得された前記単一種類からなるバイトコードの前記実行回数を説明変数とした前記算出式に基づいて、前記単一種類からなるバイトコードに応じた前記負荷係数を前記引数値毎に算出することを特徴とする請求項２に記載の負荷係数生成システム。
【請求項４】
前記試験プログラムは、二種類以上の前記バイトコードの組を繰り返し実行するプログラムであり、
前記トレースログ加工手段は、前記二種類以上のバイトコードの組の前記実行回数を取得し、
前記係数算出手段は、前記二種類以上のバイトコードの組の前記実行回数を説明変数とした前記算出式に基づいて、前記二種類以上のバイトコードの組に応じた前記負荷係数を算出することを特徴とする請求項１に記載の負荷係数生成システム。
【請求項５】
前記トレースログ加工手段は、前記二種類以上のバイトコードの組の前記実行回数を、前記二種類以上のバイトコードの組が取り得る引数値毎に取得し、
前記係数算出手段は、前記引数値毎に取得された前記二種類以上のバイトコードの組の前記実行回数を説明変数とした前記算出式に基づいて、前記二種類以上のバイトコードの組に応じた前記負荷係数を前記引数値毎に算出することを特徴とする請求項４に記載の負荷係数生成システム。
【請求項６】
少なくとも二種類のバイトコードの組から構成されるアプリケーションプログラムを前記負荷係数生成システム内に構築される前記仮想機械に実行させた際のバイトコード列からなる実行履歴ログを取得する履歴ログ取得手段を備え、
前記プログラム供給手段は、前記履歴ログ取得手段で取得された前記実行履歴ログから、連続実行される二種類以上のバイトコードの組を使用頻度に応じて抽出し、当該抽出されたバイトコードの組を繰り返し実行する前記試験プログラムを生成することを特徴とする請求項２〜５の何れか一項に記載の負荷係数生成システム。
【請求項７】
プロセッサ負荷量を推定するための負荷係数を生成する負荷係数生成方法であって、
プログラム供給手段が、所定の情報処理端末及びプロセッサ負荷量を推定するための負荷係数を生成する負荷係数生成システム内に構築される各仮想機械上で動作し且つ少なくとも一種類のバイトコードを繰り返し実行する試験プログラムを供給するプログラム供給ステップと、
第一のプログラム実行手段が、前記プログラム供給ステップで供給される前記試験プログラムを前記情報処理端末又は前記負荷係数生成システム内に構築される前記仮想機械に実行させる第一のプログラム実行ステップと、
トレースログ加工手段が、前記第一のプログラム実行ステップで前記試験プログラムを実行した前記仮想機械から出力される前記バイトコード及び／又は前記バイトコードの組のトレースログを取得し、当該取得したトレースログから前記バイトコード及び／又は前記バイトコードの組の実行回数を抽出するトレースログ加工ステップと、
第二のプログラム実行手段が、前記プログラム供給ステップで供給される前記試験プログラムを前記情報処理端末内に構築される前記仮想機械に実行させる第二のプログラム実行ステップと、
負荷量ログ取得手段が、前記第二のプログラム実行ステップで前記試験プログラムを実行した際の前記情報処理端末のプロセッサ負荷量を示す負荷量ログを取得する負荷量ログ取得ステップと、
係数算出手段が、前記トレースログ加工ステップで抽出された前記バイトコード及び／又は前記バイトコードの組の前記実行回数を説明変数とし且つ前記負荷量ログ取得ステップで取得された前記プロセッサ負荷量を目的変数とした算出式に基づいて、前記バイトコード及び／又は前記バイトコードの組に対する前記負荷係数を算出する係数算出ステップと、
を含む負荷係数生成方法。
【請求項８】
コンピュータに、プロセッサ負荷量を推定するための負荷係数を生成させる負荷係数生成プログラムであって、
所定の情報処理端末及び負荷係数生成システム内に構築される各仮想機械上で動作し且つ少なくとも一種類のバイトコードを繰り返し実行する試験プログラムを供給するプログラム供給機能と、
前記プログラム供給機能によって供給される前記試験プログラムを前記情報処理端末又は前記負荷係数生成システム内に構築される前記仮想機械に実行させる第一のプログラム実行機能と、
前記第一のプログラム実行機能によって前記試験プログラムを実行した前記仮想機械から出力される前記バイトコード及び／又は前記バイトコードの組のトレースログを取得し、当該取得したトレースログから前記バイトコード及び／又は前記バイトコードの組の実行回数を抽出するトレースログ加工機能と、
前記プログラム供給機能によって供給される前記試験プログラムを前記情報処理端末内に構築される前記仮想機械に実行させる第二のプログラム実行機能と、
前記第二のプログラム実行機能によって前記試験プログラムを実行した際の前記情報処理端末のプロセッサ負荷量を示す負荷量ログを取得する負荷量ログ取得機能と、
前記トレースログ加工機能によって抽出された前記バイトコード及び／又は前記バイトコードの組の前記実行回数を説明変数とし且つ前記負荷量ログ取得機能によって取得された前記プロセッサ負荷量を目的変数とした算出式に基づいて、前記バイトコード及び／又は前記バイトコードの組に対する前記負荷係数を算出する係数算出機能と、
をコンピュータに実行させる負荷係数生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、所定の情報処理端末のプロセッサ（ＣＰＵ（CentralProcessing Unit）など）の負荷量を仮想環境で推定する負荷量推定システム、負荷量推定方法及び負荷量推定プログラムに関する。また、本発明は、これら負荷量推定システム等においてプロセッサの負荷量を推定するための負荷係数αを生成する負荷係数生成システム、負荷係数生成方法及び負荷係数生成プログラムに関する。特に、本発明では、重要度が高位なＪａｖａ（登録商標）バイトコードの組み合わせ等を特定し、これらＪａｖａ（登録商標）バイトコードの組み合わせ等がＪａｖａ（登録商標）仮想機械を有する情報処理端末上でＣＰＵ負荷の推移に与える影響を、Ｊａｖａ（登録商標）仮想機械が実行可能なホスト上で予測する。
【背景技術】
【０００２】
従来、携帯電話やスマートフォン等の情報処理端末向けのアプリケーションプログラムを開発する際、実際の端末ハードウェアを用いてアプリケーションプログラムの動作を検証することによりＣＰＵなどのプロセッサ負荷を確認し、アプリケーションプログラムの実行性能を確認していた。しかし、実際の端末ハードウェアを用いた動作検証では、開発工程の増加を招いたり、また、測定対象となる情報処理端末の機種が多い場合には実機環境を構築するコストが増加したりするといった問題があった。そこで、ＰＣ（Personal Computer）を用いたアプリ開発ツール上に測定対象となる情報処理端末の仮想実行環境を用意して、アプリケーションプログラムのテスト実行やプロセッサ負荷の検証といった性能検証を行うことが提案されている。これらの方法としては、例えば、ハードウェア・シミュレーションや命令セット・シミュレーション等が用いられている（非特許文献１〜４参照）。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Brooks,David; Tiwari, Vivek; Martonosi, Margaret. Wattch: A Framework for Architectural-Level Power Analysisand Optimizations. SIGARCH Comput. Archit. News. 2000, Vol. 28, Issue 2, p. 83-94.
【非特許文献２】Burger,Doug; Austin, Todd M. The SimpleScalar Tool Set, Version 2.0. SIGARCH Comput.Archit. News. 1997, Vol. 25, Issue 3, p. 13-25
【非特許文献３】Sinha,Amit; Chandrakasan, Anantha P. JouleTrack: ” A Web Based Tool for Software EnergyProfiling”. Proceeding of the 38th annual Design AutomationConference. Las Vegas, Nevada, United States, 2001-06-18/22, ACM, 2001, p. 220-225.
【非特許文献４】Sinha,Amit; Ickes, Nathan; Chandrakasan, Anatha P. Instruction Level and Operating SystemProfiling for Energy Exposed Software. IEEE Transactions on Very Large ScaleIntegration (VLSI) Systems. 2003, Vol. 11, No. 6, p. 1044-1057.
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述したハードウェア・シミュレーションや命令セット・シミュレーションといった方法では、シミュレーション時のオーバヘッドが大きかったり、ハードウェア仕様への依存度が高かったりといった問題があり、プロセッサの負荷等の検証にそのまま導入することは難しかった。言い換えると、例えば、測定対象となる情報処理端末などの実機は、大量の負荷推定テストやＣＰＵのシミュレーションを行えるような計算資源を備えていないことが多く、また、ＣＰＵを含むシステムの設計段階ではそもそもシミュレーションを行うことができず、その結果、情報処理端末のプロセッサの負荷量を推定することが現実的には困難であった。さらに、従来の方法では、ハードウェアに依存しているため、各ＩＳＡや各プロセッサに対してシミュレータを作成する必要があり、システム毎にシミュレータを取得しなければならなかったが、その取得は容易ではなかった。
【０００５】
一方、情報処理端末の一種である情報通信端末において仮想機械を用いることが多くなってきており、仮想機械を使用している環境下でプロセッサの負荷を求めたいといった要望が出てきている。ところで、ＲＩＳＣプロセッサでは個々の命令間にＣＰＵ負荷のバラツキがなかったが、Ｊａｖａ（登録商標）仮想機械言語（ＪＶＭＬ）やマイクロソフトのコモン・ランゲージ・インフラストラクチャ（ＣＬＩ）のようなＣＩＳＣ型の中間言語が仮想機械上で実行される場合には、命令間でＣＰＵ負荷にバラツキが生じてしまうといった問題があった。このため、従来の方法では、仮想機械が実装されるような情報通信端末のプロセッサ負荷量を推定することは一層、困難であった。
【０００６】
そこで、本発明は、十分な計算資源を備えておらず、しかも仮想機械が実装されるような情報処理端末のプロセッサ負荷量を効果的に推定する負荷量推定システム、負荷量推定方法及び負荷量推定プログラムを提供することを目的とする。また、本発明では、これら負荷量推定システム等で負荷量を推定するための負荷係数を簡易な手段で生成する負荷係数生成システム、負荷係数生成方法及び負荷係数生成プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１４】
また、上記の課題を解決するために、本発明に係る負荷係数生成システムは、プロセッサ負荷量を推定するための負荷係数を生成する負荷係数生成システムであって、所定の情報処理端末及び負荷係数生成システム内に構築される各仮想機械上で動作し且つ少なくとも一種類のバイトコードを繰り返し実行する試験プログラムを供給するプログラム供給手段と、プログラム供給手段によって供給される試験プログラムを情報処理端末又は負荷係数生成システム内に構築される仮想機械に実行させる第一のプログラム実行手段と、第一のプログラム実行手段によって試験プログラムを実行した仮想機械から出力されるバイトコード及び／又はバイトコードの組のトレースログを取得し、当該取得したトレースログからバイトコード及び／又はバイトコードの組の実行回数を抽出するトレースログ加工手段と、プログラム供給手段によって供給される試験プログラムを情報処理端末内に構築される仮想機械に実行させる第二のプログラム実行手段と、第二のプログラム実行手段によって試験プログラムを実行した際の情報処理端末のプロセッサ負荷量を示す負荷量ログを取得する負荷量ログ取得手段と、トレースログ加工手段によって抽出されたバイトコード及び／又はバイトコードの組の実行回数を説明変数とし且つ負荷量ログ取得手段によって取得されたプロセッサ負荷量を目的変数とした算出式に基づいて、バイトコード及び／又はバイトコードの組に対する負荷係数を算出する係数算出手段と、を備えている。
【００１５】
この負荷係数生成システムでは、少なくとも一種類以上のバイトコードを繰り返し実行する試験プログラムを実行した仮想機械から出力抽出されたバイトコードの実行回数を説明変数とし、同様の試験プログラムを情報処理端末の仮想機械で実行した際のプロセッサ負荷量を目的変数とした算出式に基づいて、所定の情報処理端末のプロセッサ負荷量を推定するための負荷係数を算出している。この場合、実機端末及びホスト端末の何れの仮想機械においても共通的に用いられるバイトコードに応じて負荷係数を算出しているので、このような負荷係数を用いることにより、大量の負荷推定テスト等を行えるような計算資源を十分に備えておらず、しかも仮想機械が実装されるような情報処理端末（実機）であっても、そのプロセッサ負荷量をホスト上で効果的に推定することができる。また、この場合、バイトコードの実行回数とプロセッサ負荷量とから負荷係数を算出しているので、かかる負荷係数を簡易な手段で生成することができる。
【００１６】
上記負荷係数生成システムにおいて、試験プログラムは、単一種類からなるバイトコードを繰り返し実行するプログラムであり、トレースログ加工手段は、単一種類からなるバイトコードの実行回数を取得し、係数算出手段は、単一種類からなるバイトコードの実行回数を説明変数とした算出式に基づいて、単一種類からなるバイトコードに応じた負荷係数を算出するようにしてもよい。単一種類のバイトコードからなるプログラムを用いることで、異なるバイトコード間の相互作用による負荷量への影響を排除することができ、個々のバイトコードの負荷量への影響のみを解析することができる。また、このように、単一種類からなるバイトコードを実行する試験プログラムを用いた場合において、トレースログ加工手段は、単一種類からなるバイトコードの実行回数を、単一種類からなるバイトコードが取り得る引数値毎に取得し、係数算出手段は、引数値毎に取得された単一種類からなるバイトコードの実行回数を説明変数とした算出式に基づいて、単一種類からなるバイトコードに応じた負荷係数を引数値毎に算出するようにしてももちろんよい。
【００１７】
また、上記負荷係数生成システムにおいて、試験プログラムは、二種類以上のバイトコードの組を繰り返し実行するプログラムであり、トレースログ加工手段は、二種類以上のバイトコードの組の実行回数を取得し、係数算出手段は、二種類以上のバイトコードの組の実行回数を説明変数とした算出式に基づいて、二種類以上のバイトコードの組に応じた負荷係数を算出するようにしてもよい。二種類以上のバイトコードの組を実行した場合の負荷量は、単純にそれぞれを単独で実行したときの負荷量の和とはならない。特に実行時に最適化が行われた場合、その傾向が顕著である。二種類以上のバイトコードの組からなるプログラムを用いることで、こういったバイトコード間の相互作用が与える負荷量への影響を解析することができる。また、この場合において、トレースログ加工手段は、二種類以上のバイトコードの組の実行回数を、二種類以上のバイトコードの組が取り得る引数値毎に取得し、係数算出手段は、引数値毎に取得された二種類以上のバイトコードの組の実行回数を説明変数とした算出式に基づいて、二種類以上のバイトコードの組に応じた負荷係数を引数値毎に算出するようにしてももちろんよい。
【００１８】
また、上記負荷係数生成システムにおいて、少なくとも二種類のバイトコードの組から構成されるアプリケーションプログラムを負荷係数生成システム内に構築される仮想機械に実行させた際のバイトコード列からなる実行履歴ログを取得する履歴ログ取得手段を備え、プログラム供給手段は、履歴ログ取得手段で取得された実行履歴ログから、連続実行される二種類以上のバイトコードの組を使用頻度に応じて抽出し、当該抽出されたバイトコードの組を繰り返し実行する試験プログラムを生成するようにしてもよい。この場合、試験プログラムを容易に生成でき、しかも、実際に使用される頻度の高いバイトコードの組からなる試験プログラムを容易に得ることができる。
【００１９】
ところで、本発明は、上記のように負荷係数生成システムの発明として記述できる他に、以下のように負荷係数生成方法及び負荷係数生成プログラムの発明としても記述することができる。これらはカテゴリ等が異なるだけで、実質的に同一の発明であり、同様の作用及び効果を奏する。
【００２０】
即ち、本発明に係る負荷係数生成方法は、プロセッサ負荷量を推定するための負荷係数を生成する負荷係数生成方法であって、プログラム供給手段が、所定の情報処理端末及びプロセッサ負荷量を推定するための負荷係数を生成する負荷係数生成システム内に構築される各仮想機械上で動作し且つ少なくとも一種類のバイトコードを繰り返し実行する試験プログラムを供給するプログラム供給ステップと、第一のプログラム実行手段が、プログラム供給ステップで供給される試験プログラムを情報処理端末又は負荷係数生成システム内に構築される仮想機械に実行させる第一のプログラム実行ステップと、トレースログ加工手段が、第一のプログラム実行ステップで試験プログラムを実行した仮想機械から出力されるバイトコード及び／又はバイトコードの組のトレースログを取得し、当該取得したトレースログからバイトコード及び／又はバイトコードの組の実行回数を抽出するトレースログ加工ステップと、第二のプログラム実行手段が、プログラム供給ステップで供給される試験プログラムを情報処理端末内に構築される仮想機械に実行させる第二のプログラム実行ステップと、負荷量ログ取得手段が、第二のプログラム実行ステップで試験プログラムを実行した際の情報処理端末のプロセッサ負荷量を示す負荷量ログを取得する負荷量ログ取得ステップと、係数算出手段が、トレースログ加工ステップで抽出されたバイトコード及び／又はバイトコードの組の実行回数を説明変数とし且つ負荷量ログ取得ステップで取得されたプロセッサ負荷量を目的変数とした算出式に基づいて、バイトコード及び／又はバイトコードの組に対する負荷係数を算出する係数算出ステップと、を含む。
【００２１】
また、本発明に係る負荷係数生成プログラムは、コンピュータに、プロセッサ負荷量を推定するための負荷係数を生成させる負荷係数生成プログラムであって、所定の情報処理端末及び負荷係数生成システム内に構築される各仮想機械上で動作し且つ少なくとも一種類のバイトコードを繰り返し実行する試験プログラムを供給するプログラム供給機能と、プログラム供給機能によって供給される試験プログラムを情報処理端末又は負荷係数生成システム内に構築される仮想機械に実行させる第一のプログラム実行機能と、第一のプログラム実行機能によって試験プログラムを実行した仮想機械から出力されるバイトコード及び／又はバイトコードの組のトレースログを取得し、当該取得したトレースログからバイトコード及び／又はバイトコードの組の実行回数を抽出するトレースログ加工機能と、プログラム供給機能によって供給される試験プログラムを情報処理端末内に構築される仮想機械に実行させる第二のプログラム実行機能と、第二のプログラム実行機能によって試験プログラムを実行した際の情報処理端末のプロセッサ負荷量を示す負荷量ログを取得する負荷量ログ取得機能と、トレースログ加工機能によって抽出されたバイトコード及び／又はバイトコードの組の実行回数を説明変数とし且つ負荷量ログ取得機能によって取得されたプロセッサ負荷量を目的変数とした算出式に基づいて、バイトコード及び／又はバイトコードの組に対する負荷係数を算出する係数算出機能と、をコンピュータに実行させる。
【発明の効果】
【００２２】
本発明によれば、大量の負荷推定テスト等を行えるような計算資源を十分に備えておらず、しかも仮想機械が実装されるような情報処理端末のプロセッサ負荷量を効果的に推定することができる。
【図面の簡単な説明】
【００２３】
【図１】本実施形態に係る負荷量推定システムの一例を示す図である。
【図２】負荷量推定システム等を構成する情報処理端末のハードウェア構成を示す図である。
【図３】単一種類からなるバイトコードとそのバイトコードに応じた負荷係数とが紐付けられたデータベースの一例を示す図である。
【図４】図１に示す負荷量推定システムでＣＰＵ負荷量を算出する動作を示すフローチャートである。
【図５】本実施形態に係る負荷係数生成システムの一例を示す図である。
【図６】本実施形態に係る負荷係数生成システムで用いる試験プログラムの一例である。
【図７】図５に示す負荷係数生成システムで負荷係数αを算出する動作を示すフローチャートである。
【図８】二種類のバイトコードの組とそのバイトコードの組に応じた負荷係数とが紐付けられたデータベースの一例を示す図である。
【図９】本実施形態に係る負荷係数生成システムの変形例を示す図である。
【図１０】図９に示す負荷係数生成システムで試験プログラムＴＰを生成する動作を示すフローチャートである。
【図１１】バイトコードの組合せ抽出の擬似コード例を示す図である。
【図１２】本実施形態に係る負荷量推定プログラムの構成を示す図である。
【図１３】本実施形態に係る負荷係数生成プログラムの構成を示す図である。
【発明を実施するための形態】
【００２４】
以下、図面を参照して、本発明に係る好適な実施形態について詳細に説明する。なお、図面の説明において、可能な場合には、同一要素には同一符号を付し、重複する説明を省略する。
【００２５】
まず、図１を参照して、あるアプリケーションプログラムＡＰを所定の情報処理端末Ｍにおいて実行した際のＣＰＵ負荷量ＬＭを推定する負荷量推定システム１０について説明する。負荷量推定システム１０は、情報処理端末ｍにおけるＣＰＵ負荷量Ｌｍの推定用に下記のＣＰＵ負荷予測式（１）を備えており、システム１０内に構築されるＪａｖａ（登録商標）仮想機械１１で実行されるアプリケーションプログラムＡＰのトレースログから、そのアプリケーションプログラムＡＰを構成する各バイトコードｉ（１〜ｎ）の実行回数ＮＢＣｉを抽出し、この実行回数ＮＢＣｉをＣＰＵ負荷予測式（１）にパラメータ入力することで、ＣＰＵ負荷量ＬＭを求めるものである。ここで、“ｉ”はバイトコードの種類を、“ｎ”は注目するバイトコードの種類の総数を示す。なお、所定の情報処理端末Ｍは、Ｊａｖａ（登録商標）仮想機械Ｍ１１をＣＰＵ上に構築可能な通信端末（例えば携帯電話やスマートフォンなど）からなる（図５参照）。
【数１】
0005553351.tif 000002
【００２６】
また、負荷係数αｍ，ｉ（以下、単に「αｉ」と記す場合もある）は、所定の情報処理端末ｍの仮想機械でバイトコードｉ１つを１回実行した際の実行時間を示すものである。この負荷係数αｉは、後述する負荷係数生成システム２０等により、バイトコードの種類毎に予め算出されており、各バイトコードに紐付けられたデータとしてシステム１０内に格納されている（図３参照）。負荷量推定システム１０は、例えば計算資源が比較的豊富なＰＣ等の情報処理端末からなり、図２に示されるように、ＣＰＵ１０１、ＲＡＭ（Random Access Memory）１０２、ＲＯＭ（Read OnlyMemory）１０３、操作部１０４、ディスプレイ１０５及び通信モジュール１０６等のハードウェアから構成される。これらの各構成要素が動作することにより、後述する各機能が発揮される。
【００２７】
負荷量推定システム１０は、図１に示されるように、アプリケーションプログラム格納部１２、プログラム実行部１３（プログラム実行手段）、トレースログ出力部１４（トレースログ出力手段）、トレースログ加工部１５（トレースログ加工手段）、負荷係数格納部１６及び負荷量算出部１７（負荷量算出手段）を備えている。アプリケーションプログラム格納部１２は、実行することによって生じるＣＰＵ負荷量ＬＭを推定したい各種アプリケーションプログラムＡＰ…を格納する部分である。アプリケーションプログラム格納部１２に格納されているアプリケーションプログラムＡＰ…それぞれは、少なくとも一種類のバイトコードから構成されている。
【００２８】
プログラム実行部１３は、少なくとも一種類のバイトコードから構成されるアプリケーションプログラムＡＰを負荷量推定システム１０内に構築されるＪａｖａ（登録商標）仮想機械１１に実行させる部分である。プログラム実行部１３は、あるアプリケーションプログラムＡＰを実行した際のＣＰＵ負荷量ＬＭを推定したい旨の指示を、操作部１０４等を介して受け付けると、推定したいアプリケーションプログラムＡＰをアプリケーションプログラム格納部１２から呼び出し、呼び出したアプリケーションプログラムＡＰを仮想機械１１上で実行させる。
【００２９】
トレースログ出力部１４は、プログラム実行部１３で実行されたアプリケーションプログラムＡＰを構成するバイトコードのトレースログを出力する部分である。トレースログ出力部１４は、実行した際のＣＰＵ負荷量ＬＭを推定したいアプリケーションプログラムＡＰをプログラム実行部１３が仮想機械１１に実行させると、そのアプリケーションプログラムＡＰを構成する各バイトコードのトレースログをトレースログ加工部１５に順次、出力する。
【００３０】
トレースログ加工部１５は、トレースログ出力部１４から出力されたトレースログを取得し、取得したトレースログから各バイトコードｉの実行回数ＮＢＣｉを抽出する部分である。トレースログ加工部１５は、アプリケーションプログラムＡＰを仮想機械１１で実行することによりトレースログ出力部１４から出力される各トレースログを取得すると、トレースログに含まれるバイトコードの種類を示す情報に基づいて、バイトコードの種類毎に各トレースログを分類する。トレースログ加工部１５は、バイトコードの種類毎に分類されたトレースログの各ログ数から、アプリケーションプログラムＡＰを仮想機械１１で実行した際の各バイトコードの実行回数ＮＢＣｉを抽出する。トレースログ加工部１５は、これら抽出した各バイトコードの実行回数ＮＢＣｉを負荷量算出部１７に出力する。
【００３１】
負荷係数格納部１６は、単一種類からなるバイトコードの種類に応じて予め設定されている負荷係数αｉを格納する部分である。負荷係数格納部１６には、例えば図３に示されるように、バイトコードの種類１〜ｎと各バイトコードの種類１〜ｎに対応する負荷係数α１〜αｎとが紐付けられた係数データが格納されている。負荷係数格納部１６は、負荷量算出部１７からの呼び出しに応じて、所定の負荷係数αｉを負荷量算出部１７に出力する。
【００３２】
負荷量算出部１７は、トレースログ加工部１５によって抽出された各バイトコードｉの実行回数ＮＢＣｉと、各バイトコードｉに予め設定されている負荷係数αｉとに基づいて、情報処理端末ＭのＣＰＵ負荷量ＬＭを算出する部分である。負荷量算出部１７には、上述したＣＰＵ負荷予測式（１）が格納されており、トレースログ加工部１５から各バイトコードの実行回数ＮＢＣｉが入力されると、入力されたバイトコードｉに対応する負荷係数αｉそれぞれを負荷係数格納部１６から呼び出す。負荷係数αｉを呼び出した負荷量算出部１７は、各バイトコードの実行回数ＮＢＣｉをＣＰＵ負荷予測式（１）にパラメータとして入力し、負荷係数αｉと実行回数ＮＢＣｉとを乗算することでバイトコード毎の負荷量をそれぞれ算出し、その合計負荷量をＣＰＵ負荷量ＬＭとして算出する。負荷量算出部１７は、算出したＣＰＵ負荷量ＬＭを出力し、ディスプレイ１０５等に表示させる。
【００３３】
続いて、上述した構成を備えた負荷量推定システム１０によって、所定の情報処理端末ＭのＣＰＵ負荷量ＬＭを推定する負荷量推定方法について、図４を参照して説明する。
【００３４】
まず、プログラム実行部１３は、アプリケーションプログラム格納部１２に格納されているアプリケーションプログラムＡＰ…の内、あるアプリケーションプログラムＡＰを実行した際のＣＰＵ負荷量ＬＭを推定したい旨の指示を外部より受け付ける。そして、推定指示を受け付けたプログラム実行部１３は、その指示に係るアプリケーションプログラムＡＰをアプリケーションプログラム格納部１２から呼び出し（ステップＳ１１）、呼び出したアプリケーションプログラムＡＰを、ホストである負荷量推定システム１０上のＪａｖａ（登録商標）仮想機械１１で実行させる（ステップＳ１２）。
【００３５】
続いて、ステップＳ１２において、ＣＰＵ負荷量ＬＭを推定したいアプリケーションプログラムＡＰをプログラム実行部１３が実行させると、トレースログ出力部１４は、そのアプリケーションプログラムＡＰを構成するバイトコードのトレースログをトレースログ加工部１５に順次、出力する（ステップＳ１３）。
【００３６】
続いて、ステップＳ１３において、アプリケーションプログラムＡＰを仮想機械１１で実行することによりトレースログ出力部１４から各バイトコードのトレースログが出力されると、トレースログ加工部１５は、ＣＰＵ負荷量ＬＭを推定したい区間を切り取り、これらトレースログを取得する（ステップＳ１４）。トレースログ加工部１５は、トレースログを取得すると、取得したトレースログに含まれるバイトコードの種類を示す情報に基づいて、バイトコードの種類毎に各トレースログを分類する。そして、トレースログ加工部１５は、バイトコードの種類毎に分類されたトレースログの各ログ数から、あるアプリケーションプログラムＡＰを仮想機械１１で実行した際の各バイトコードｉの実行回数ＮＢＣｉそれぞれを抽出する（ステップＳ１５）。
【００３７】
続いて、ステップＳ１５において、各バイトコードの実行回数ＮＢＣｉが抽出されると、負荷量算出部１７は、抽出されたバイトコードの種類に対応する負荷係数αｉそれぞれを負荷係数格納部１６から呼び出し、負荷量算出部１７に出力させる（ステップＳ１６）。そして、負荷係数αｉを呼び出した負荷量算出部１７は、各バイトコードの実行回数ＮＢＣｉをＣＰＵ負荷予測式（１）にパラメータとして入力し、バイトコード毎の負荷量それぞれを算出し、その合計負荷量をＣＰＵ負荷量ＬＭとして算出する（ステップＳ１７）。なお、バイトコードは各種のアプリケーションプログラムＡＰに共通なものであるので、ＣＰＵ負荷量ＬＭを推定したい他のアプリケーションプログラムＡＰに対して、上述したのと同様の処理（ステップＳ１１〜Ｓ１７）を繰り返し、各アプリケーションプログラムＡＰ…を実行することによるＣＰＵ負荷量ＬＭを算出する。
【００３８】
次に、上述した負荷量推定システム１０等でＣＰＵ負荷量ＬＭを推定する際に用いる負荷係数αｉを生成する負荷係数生成システム２０について説明する。
【００３９】
負荷係数生成システム２０は、負荷量推定システム１０と同様、推定対象となる情報処理端末ＭのＣＰＵ負荷量ＬＭを算出により求めるＣＰＵ負荷予測式（１）を回帰式として備えている。負荷係数生成システム２０は、詳細については後述するが、負荷係数αｉを求めるための試験プログラムＴＰの実行により得られるトレースログの加工データ（各バイトコードｉの実行回数ＮＢＣｉ）と、その実行時のプロセッサの負荷量ログとから得られたデータ（ＣＰＵ負荷量ＬＭ）とを、予測式（１）を用いて回帰分析することにより、負荷係数αｉを生成する。
【００４０】
このような負荷係数生成システム２０は、例えば計算資源が比較的豊富なＰＣ（PersonalComputer）等の情報処理端末からなり、負荷量推定システム１０と同様、ＣＰＵ２０１、ＲＡＭ２０２、ＲＯＭ２０３、操作部２０４、ディスプレイ２０５及び通信モジュール２０６等のハードウェアから構成される（図２参照）。これらの各構成要素が動作することにより、負荷係数生成システム２０の後述する各機能が発揮される。
【００４１】
負荷係数生成システム２０は、図５に示されるように、試験プログラム格納部２１（プログラム供給手段）、試験プログラム実行部２２（第一のプログラム実行手段）、トレースログ加工部２３（トレースログ加工手段）、試験プログラム実行部２４（第二のプログラム実行手段）、負荷量ログ取得部２５（負荷量ログ取得手段）及び負荷係数算出部２６（係数算出手段）を備えている。この負荷係数生成システム２０には、推定対象となる情報処理端末Ｍが接続される。なお、負荷係数生成システム２０に接続される情報処理端末は、情報処理端末Ｍと同様の仮想機械Ｍ１１を構築できるものであれば、他の情報処理端末であってもよい。
【００４２】
試験プログラム格納部２１は、負荷係数生成システム２０及び情報処理端末Ｍ内に構築されるＪａｖａ（登録商標）仮想機械２８，Ｍ１１上で動作する試験プログラムＴＰを格納する部分である。試験プログラムＴＰは、例えば、図６に示されるように、単一種類からなるバイトコード（例えば“div-double”）をループで繰り返し実行するためのプログラムＰｉを含んで構成される。このプログラムＰｉは、単一種類からなるバイトコードｉをループで繰り返すループ部分Ｐ２と、その他の部分Ｐ３，Ｐ４とから構成される。また、試験プログラムＴＰは、後述する負荷係数αｉの算出に用いるため、プログラムＰｉのループ部分Ｐ２から試験対象のバイトコードを取り除いたプログラムＰＮｉ（不図示）も含むように構成される。例えば、図６のＰｉから、Ｐ２中に出現するdiv-double v2, v4, v6を取り除くことでプログラムＰＮｉが得られる。
【００４３】
プログラムＰｉ，ＰＮｉを含んで構成される試験プログラムＴＰは、手動で作成するなどして予め試験プログラム格納部２１に格納されており、所定の係数算出タイミングで、試験プログラム格納部２１から各試験プログラム実行部２２，２４へ提供される。試験プログラムＴＰは、例えば、バイトコードの種類ｉ毎に構成されており、バイトコードの種類に応じた複数の試験プログラムＴＰ…が試験プログラム格納部２１に格納されている。なお、試験プログラムＴＰのサイズは、任意でも構わないが、仮想機械２８等や実機械の制約から測定するＣＰＵ負荷量の精度及び確度、並びにトレースログ取得に必要な時間などのトレードオフを考慮し最適なものを選び出すことが好ましい。
【００４４】
また、単一ループ中のバイトコード数は、取得したい実行時間に応じ、メモリの影響を考慮して作成することが好ましい。例えば、Ｌ１キャッシュのミスが起こらない場合の実行時間を取得したい場合には、すべての命令がＬ１キャッシュに収まるように作成し、一方、Ｌ１キャッシュのミスが起こる場合の実行時間を取得したい場合には、すべての命令がキャッシュに収まらないように作成するようにしてもよい。また、さらに下層のメモリからデータを読み込む必要がある実行時間を測定したい場合にも同様にバイトコード数を調整してもよい。
【００４５】
試験プログラム実行部２２は、試験プログラム格納部２１に格納されており所定のタイミングで供給される試験プログラムＴＰ（Ｐｉ及びＰＮｉ）を負荷係数生成システム２０内に構築されるＪａｖａ（登録商標）仮想機械２８に実行させる部分である。試験プログラム実行部２２は、Ｊａｖａ（登録商標）仮想機械２８に試験プログラムＴＰを実行させることにより生成されるバイトコードのトレースログをトレースログ加工部２３へ出力する。このトレースログには、試験プログラムＴＰに含まれるバイトコードの種類、そのバイトコードのループ回数、そのループ内におけるバイトコード数といった情報が含まれる。なお、試験プログラム実行部２２の機能の全部又はその一部を情報処理端末Ｍ内に設け、情報処理端末Ｍの仮想機械Ｍ１１に試験プログラムＴＰを実行させ、そのトレースログを出力するようにしてもよい。
【００４６】
トレースログ加工部２３は、試験プログラム実行部２２によって試験プログラムＴＰ（Ｐｉ及びＰＮｉ）を実行したＪａｖａ（登録商標）仮想機械２８から出力されるバイトコードのトレースログを取得し、取得したトレースログから各バイトコードｉの実行回数ＮＢＣｉを抽出する部分である。ここで用いるバイトコードの実行回数ＮＢＣｉは、バイトコードの実行単位であるバイトコードの種類毎にカウントされるものであり、本実施形態では、単一種類からなるバイトコード１回の実行を１実行単位とみなして実行回数ＮＢＣｉを取得する。つまり、トレースログ加工部２３は、試験プログラム実行部２２からトレースログを取得すると、そのトレースログに含まれるバイトコードの種類、ループ数及びループ内のバイトコード数等の情報から、試験プログラムＴＰにおける所定のバイトコード１回の実行数を実行回数ＮＢＣｉとして取得する。トレースログ加工部２３は、取得したバイトコードの実行回数ＮＢＣｉをバイトコードの種類に紐付けたデータとして、負荷係数算出部２６に出力する。
【００４７】
試験プログラム実行部２４は、試験プログラム格納部２１に格納されており所定のタイミングで供給される試験プログラムＴＰ（Ｐｉ及びＰＮｉ）を情報処理端末Ｍ内に構築される仮想機械Ｍ１１に実行させる部分である。試験プログラム実行部２４は、試験プログラム実行部２２が試験プログラムＴＰをＪａｖａ（登録商標）仮想機械２８で実行させるのに併せて、同じ試験プログラムＴＰを情報処理端末ＭのＪａｖａ（登録商標）仮想機械Ｍ１１に実行させる。試験プログラム実行部２４によって試験プログラムＴＰを実行させられた情報処理端末Ｍは、仮想機械Ｍ１１で試験プログラムＴＰを実行した際の情報処理端末ＭのＣＰＵ負荷量を示す負荷量ログを、負荷量ログ取得部２５に出力する。この負荷量ログは、試験プログラムＴＰのＰｉを実行させた際の負荷量ログＬｉと試験プログラムＴＰのＰＮｉを実行させた際の負荷量ログＬＮｉとを含む。なお、試験プログラム実行部２４の機能の全部又はその一部を情報処理端末Ｍ内に設けるようにしてもよい。
【００４８】
負荷量ログ取得部２５は、仮想機械Ｍ１１で試験プログラムＴＰ（Ｐｉ及びＰＮｉ）を実行させた際の情報処理端末ＭのＣＰＵ負荷量を示す負荷量ログＬｉ，ＬＮｉを取得する部分である。負荷量ログ取得部２５は、試験プログラム実行部２４によって情報処理端末Ｍの仮想機械Ｍ１１で試験プログラムＴＰが実行させられると、試験プログラムＴＰを構成するバイトコードの種類やプログラムＰｉ，ＰＮｉ実行の際の情報処理端末Ｍの各ＣＰＵ負荷量を示す情報を含む負荷量ログＬｉ，ＬＮｉを、情報処理端末Ｍから取得する。ＣＰＵ負荷量は、例えば、試験プログラムＰｉ，ＰＮｉそれぞれの実行にかかった時間（実行時間）として表される。以下、ＣＰＵ負荷量を実行時間と記す場合もある。負荷量ログ取得部２５は、取得した負荷量ログＬｉ，ＬＮｉを負荷係数算出部２６に出力する。
【００４９】
負荷係数算出部２６は、トレースログ加工部２３によって抽出されたバイトコードの実行回数ＮＢＣｉを説明変数とし、負荷量ログ取得部２５によって取得されたＣＰＵ負荷量を目的変数とし、ＣＰＵ負荷予測式（１）に基づいて、バイトコードに対する負荷係数αｉを算出する部分である。負荷係数算出部２６は、あるバイトコードから構成される試験プログラムＴＰ（Ｐｉ及びＰＮｉ）を仮想機械Ｍ１１で実行した際の実行時間を含む負荷量ログＬｉ，ＬＮｉを負荷量ログ取得部２５から取得すると、試験プログラムＴＰのうち、試験対象のバイトコードｉをループに含むＰｉの実行時間（ＣＰＵ負荷量）と含まないＰＮｉの実行時間（ＣＰＵ負荷量）との差を求め、これを真正実行時間とする。
【００５０】
負荷係数算出部２６は、この真正実行時間を、ＣＰＵ負荷予測式（１）におけるＣＰＵ負荷量ＬＭとし、このＣＰＵ負荷量ＬＭをトレースログ加工部２３からのバイトコードの実行回数ＮＢＣｉで割り、単一バイトコードに必要な実行時間（ＣＰＵ負荷量）、即ち、そのバイトコードに対する負荷係数αｉを得る。このように、試験プログラムＴＰがＰｉ及びＰＮｉを含むように構成し、両プログラムＰｉ，ＰＮｉを仮想機械Ｍ１１等で実行させるのは、試験プログラムＴＰに、その構造上、どうしてもバイトコードのループＰ２以外の部分Ｐ３，Ｐ４が含まれてしまうため、ループ部分Ｐ２のみを仮想的に抽出する処理を行う必要があるからである。負荷係数算出部２６は、このようにして取得した負荷係数αｉをバイトコードの種類に紐付けた形のデータとして出力し、例えば、負荷量推定システム１０の負荷係数格納部１６等に、図３に示すようなデータとして格納させる。
【００５１】
続いて、上述した構成を備えた負荷係数生成システム２０における負荷係数生成方法について、図７を参照して説明する。
【００５２】
まず、試験プログラム格納部２１が、負荷係数生成システム２０及び情報処理端末Ｍ内に構築される各Ｊａｖａ（登録商標）仮想機械２８，Ｍ１１上で動作する試験プログラムＴＰ（Ｐｉ及びＰＮｉ）を試験プログラム実行部２２，２４に供給する（ステップＳ２１）。この試験プログラムＴＰは、上述したように、単一種類からなるバイトコードを繰り返し実行するプログラム（図６参照）である。
【００５３】
続いて、試験プログラム実行部２２が、ステップＳ１で供給された試験プログラムＴＰをホストとなる負荷係数生成システム２０のＪａｖａ（登録商標）仮想機械２８に実行させる（ステップＳ２２）。ステップＳ２２で試験プログラムＴＰを実行させた試験プログラム実行部２２は、試験プログラムＴＰの実行に伴って生成されるバイトコードのトレースログをトレースログ加工部２３へ出力する。このトレースログには、試験プログラムＴＰに含まれるバイトコードの種類、そのバイトコードのループ数、そのループ内におけるバイトコード数といった情報が含まれる。
【００５４】
続いて、トレースログ加工部２３が、ステップＳ２２で試験プログラムを実行した仮想機械２８から出力されるバイトコードのトレースログを取得する（ステップＳ２３）。そして、トレースログ加工部２３は、取得したトレースログに含まれるバイトコードの種類、ループ数及びループ内のバイトコード数等の情報から、試験プログラムＴＰにおける所定のバイトコード１回の実行数を抽出して実行回数ＮＢＣｉとして取得する（ステップＳ２４）。その後、ステップＳ２５に進む。
【００５５】
一方、試験プログラム実行部２４は、ステップＳ２２と同様に、ステップＳ２１で供給された試験プログラムＴＰを情報処理端末Ｍの仮想機械Ｍ１１に実行させる（ステップＳ２６）。そして、ステップＳ２６で試験プログラムＴＰを実行させられた情報処理端末Ｍは、仮想機械Ｍ１１で試験プログラムＴＰを実行した際の情報処理端末ＭのＣＰＵ負荷量を示す負荷量ログを、負荷量ログ取得部２５に出力する。この負荷量ログは、試験プログラムＴＰのＰｉを実行させた際の負荷量ログＬｉと試験プログラムＴＰのＰＮｉを実行させた際の負荷量ログＬＮｉとを含む。
【００５６】
続いて、ステップＳ２６において、仮想機械Ｍ１１で試験プログラムＴＰが実行させられると、負荷量ログ取得部２５が、試験プログラムＴＰを構成するバイトコードの種類やプログラムＰｉ，ＰＮｉ実行の際の情報処理端末Ｍの各ＣＰＵ負荷量を示す情報を含む負荷量ログＬｉ，ＬＮｉを、情報処理端末Ｍから取得する（ステップＳ２７）。その後、ステップＳ２５に進む。
【００５７】
ステップＳ２５では、負荷係数算出部２６が、ステップＳ２４で抽出されたバイトコードの実行回数ＮＢＣｉと、ステップＳ２７で取得されたＣＰＵ負荷量とのデータを統合する。そして、負荷係数算出部２６が、バイトコードの実行回数ＮＢＣｉを説明変数とし、ＣＰＵ負荷量を目的変数とし、ＣＰＵ負荷予測式（１）に基づいて、バイトコードに対する負荷係数αｉを算出する（ステップＳ２８）。
【００５８】
ステップＳ２８では、具体的には、あるバイトコードから構成される試験プログラムＴＰ（Ｐｉ，及びＰＮｉ）を仮想機械Ｍ１１で実行した際の実行時間を含む負荷量ログＬｉ，ＬＮｉを取得すると、負荷係数算出部２６が、試験プログラムＴＰのうち、試験対象のバイトコードをループに含むＰｉの実行時間と含まないＰＮｉの実行時間との差を求め、これを真正実行時間とする。そして、負荷係数算出部２６が、この真正実行時間を、ＣＰＵ負荷予測式（１）におけるＣＰＵ負荷量ＬＭとし、このＣＰＵ負荷量ＬＭをトレースログ加工部２３からのバイトコードｉの実行回数ＮＢＣｉで割り、単一バイトコードに必要な実行時間、即ち、そのバイトコードｉに対する負荷係数αｉを得る。
【００５９】
ところで、上述した負荷量推定システム１０や負荷係数生成システム２０では、単一種類からなるバイトコード１回の実行を１実行単位とみなして実行回数ＮＢＣｉを取得していたが、バイトコードの種類によっては、単独で実行できずに異なる種類のバイトコードと組にして連続して実行したり、異なる種類のバイトコードを補助的に用いたりしなければならない場合がある。このようなバイトコード列を含むアプリケーションプログラムＡＰ’を仮想機械Ｍ１１で実行させた際のＣＰＵ負荷量ＬＭを推定する場合には、上述した実施形態に加え、負荷量推定システム１０の負荷係数格納部１６に、図８に示されるように、連続して実行する必要のある二種類のバイトコード列からなる組に対応する負荷係数αｍ、（ｉ，ｊ）（以下、単に「αｉ，ｊ」と記す）を格納しておく。なお、このアプリケーションプログラムＡＰ’には、単独で実行できるバイトコードが含まれていてもよい。
【００６０】
そして、プログラム実行部１３は、まず、これら連続して実行する必要のある二種類のバイトコード列を含んで構成されるアプリケーションプログラムＡＰ’を仮想機械１１に実行させる。トレースログ出力部１４は、このアプリケーションプログラムＡＰ’に含まれる二種類のバイトコード列を一組としたトレースログを出力する。このようなバイトコード列の組に対するトレースログが出力されると、トレースログ加工部１５は、トレースログ出力部１４から出力されるトレースログを取得し、トレースログに含まれる二種類のバイトコード列の組を示す情報に基づいて、バイトコード列の組毎に各トレースログを分類する。
【００６１】
トレースログ加工部１５は、バイトコード列の組毎に分類されたトレースログの各ログ数から、アプリケーションプログラムＡＰ’をＪａｖａ（登録商標）仮想機械１１で実行した際のバイトコード列の組の実行回数ＮＢＣｉを抽出する。負荷量算出部１７は、トレースログ加工部１５によって抽出されたバイトコード列の組の実行回数ＮＢＣｉと、バイトコード列の組に応じて予め設定されている負荷係数αｉ，ｊ（図８参照）とに基づいて、上述した方法と同様の手法により、情報処理端末ＭのＣＰＵ負荷量ＬＭを算出する。
【００６２】
また、このような二種類のバイトコード列の組に対応する負荷係数αｉ，ｊを負荷係数生成システム２０で生成するためには、試験プログラムＴＰとして、連続実行する二種類のバイトコード列を繰り返し実行するプログラムを用意する。二種類のバイトコード列からなる試験プログラムＴＰの場合、用いるバイトコードが複数の種類である点を除けば、単一種類からなるバイトコードの試験プログラムＴＰと基本的な構成は同様であり、例えば、試験対象のバイトコードｉをループ中で繰り返し実行するＰｉの実行時間と試験対象のバイトコードｉが繰り返し実行される部分をループから取り除いたものＰＮｉの実行時間との差を求め、これを真正実行時間とする。そして、負荷係数算出部２６が、この真正実行時間を、ＣＰＵ負荷予測式（１）におけるＣＰＵ負荷量ＬＭとし、このＣＰＵ負荷量ＬＭをバイトコード列の実行回数ＮＢＣｉで割り、回帰分析を用いるなどして、バイトコード列に必要な実行時間、即ち、バイトコード列に対する負荷係数αｉ，ｊを得る。
【００６３】
なお、上述した、連続して実行するバイトコード列は二種類に限定される必要はなく、二種類以上であってももちろんよい。また、試験対象のバイトコードが単独で連続実行できる場合や単独で連続実行できない場合のいずれにおいても、対象のバイトコード（列）を繰り返し実行できる方法であれば、ループの代わりに再帰などを用いてもよい。また、試験プログラムＴＰの作成方法とタイミング解析は上述したような方法以外であってもよく、例えば、ハードウェアモニタなどの高解像度のタイマで実行時間が解析できる場合は、ループ回数を減らしたり、ループを行わなかったりしてもよい。実行時間の計測の解像度より試験プログラムの実行時間が小さい場合でも、以下の参考文献１にあるような統計的手法を用いることでタイミング解析を行えばよい。
（参考文献１）Lilja, David J. MeasuringComputer Performance, 2000, 261p.
【００６４】
また、バイトコードの中には実行時にバイトコード引数をとり、この引数値の違いがＣＰＵ負荷量ＬＭに大きな影響を与える場合がある。このため、ＣＰＵ負荷量ＬＭをより正確に推定するには、バイトコード又はバイトコード列の組の種類に加え、バイトコードの引数の値の違いも考慮することが好ましい。この場合、試験プログラムＴＰとして、バイトコードの種類やバイトコード列の組の種類に加え、バイトコードの引数値の違いを考慮した試験プログラムＴＰを用意してもよい。但し、引数値のすべてのレジスタ値のパターンを試す試験プログラムＴＰを作成しようとすると、例えば６４ビットのレジスタの場合、２の６４乗通りの試験プログラムＴＰを作成して実行する必要があり現実的でなくなるので、ＣＰＵ負荷量ＬＭの傾向が顕著に表れる引数（レジスタ値）のみを試す試験プログラムＴＰとすることが好ましい。例えば、絶対値で最小値・最大値付近、＋ｉｎｆ，−ｉｎｆ，Ｎａｎ，ランダム値などを試すものである。
【００６５】
ここで、このように、多数のバイトコードと引数（レジスタ値）の組み合わせを、計算機で処理可能な数の、ＣＰＵ負荷量Ｌの似通った集合に分類することもできる。例えば、あるバイトコードにおいて、第１引数のレジスタ値が０又はそれ以外の２通り、第２引数のレジスタ値が０，２の倍数、２の倍数以外の３の倍数、前記以外の正数、前記以外の負数の５通りの計１０の集合に分けて、それぞれを試験プログラムＴＰとする。このような分類は、例えば、従来技術であるデータマイニングを用いて実現できる。また、対象としているバイトコードの実行を行っている仮想機械のソースコードを解析することによっても実現できる。なお、このような方法で集合ごとに分けられたバイトコードを、例えば、抽象バイトコードと定義される。このような抽象バイトコードを用いた負荷量の推定方法は、従来技術を用いて、上述した推定方法等を適宜修正することで実行できる。このように、いろいろな種類の試験プログラムＴＰを試験プログラム格納部２１に格納しておくことにより、ターゲット端末のＣＰＵ負荷量ＬＭをより正確に予測することができる。
【００６６】
[変形例]
続いて、負荷係数生成システム２０の変形例について図９を参照して説明する。上述した負荷係数生成システム２０では、予め作成した試験プログラムＴＰを試験プログラム格納部２１に格納しておき、その試験プログラムＴＰを試験プログラム実行部２２，２４で実行させることにより、バイトコードやバイトコード列の種類、さらには引数等に応じた負荷係数αｉ，αｉ，ｊ等を算出していた。しかしながら、考慮すべきバイトコードの種類や引数などのバリエーションが多くなると必要な試験プログラムＴＰの数が多くなり、手動で用意することが困難となる場合が想定される。そこで、負荷係数生成システム２０の変形例として、以下に示すような、試験プログラムＴＰを自動生成する機能を備えた負荷係数生成システム３０を用いてもよい。なお、負荷係数生成システム３０は、負荷係数生成システム２０の試験プログラム格納部２１を更に備える構成であってもよい。
【００６７】
負荷係数生成システム３０は、図９に示されるように、試験プログラム実行部２２，２４、トレースログ加工部２３、負荷量ログ取得部２５及び負荷係数算出部２６を備え、更に、アプリケーションプログラム格納部３１、実行履歴ログ取得部３２（履歴ログ取得手段）及び試験プログラム生成部３３（プログラム供給手段）を備えている。アプリケーションプログラム格納部３１は、試験プログラムＴＰを生成するための元となるアプリケーションプログラムＴＡＰを格納する部分である。アプリケーションプログラムＴＡＰは、例えば、多数（少なくとも二種類以上）のバイトコードから構成される任意のプログラムである。
【００６８】
試験プログラム実行部２２は、上述したような試験プログラムＴＰを実行させる機能に加え、アプリケーションプログラムＴＡＰを仮想機械２８に実行させる機能を更に有する。試験プログラム実行部２２は、Ｊａｖａ（登録商標）仮想機械２８にアプリケーションプログラムＴＡＰを実行させることにより生成される各バイトコードの実行履歴ログを実行履歴ログ取得部３２へ順に出力する。各実行履歴ログには、アプリケーションプログラムＴＡＰを構成する各バイトコード列の種類を示す情報などが含まれる。
【００６９】
実行履歴ログ取得部３２は、アプリケーションプログラムＴＡＰをＪａｖａ（登録商標）仮想機械２８に実行させた際のバイトコード列からなる実行履歴ログを取得する部分である。実行履歴ログ取得部３２は、仮想機械２８でアプリケーションプログラムＴＡＰを実行したことに伴って発生する実行履歴ログを試験プログラム実行部２２から受け取ると、実行履歴ログに含まれる各バイトコード列の組の種類を示す情報に基づいて、バイトコード列の組の種類毎に各実行履歴ログを分類する。実行履歴ログ取得部３２は、このように分類したログデータを試験プログラム生成部３３に出力する。
【００７０】
試験プログラム生成部３３は、連続実行される二種類以上のバイトコード列の組を使用頻度が高い順に抽出し、当該抽出されたバイトコード列の組を繰り返し実行する試験プログラムＴＰを生成する部分である。試験プログラム生成部３３は、履歴ログ取得部３２で取得された実行履歴ログを受け取ると、バイトコード列の組の種類毎に分類された実行履歴ログに基づいて、連続実行される二種類以上のバイトコード列の組を、アプリケーションプログラムＴＡＰにおける使用頻度の高い順に抽出する。つまり、試験プログラム生成部３３は、使用頻度の高い組から低い組へと、連続実行される二種類以上のバイトコード列の組を並べる。
【００７１】
そして、試験プログラム生成部３３は、使用頻度の一番高いバイトコード列の組から順に所定数のバイトコード列の組を選別する。この所定数は、試験プログラムＴＰに必要な数を考慮して適宜、設定される。そして、所定数のバイトコード列の組を選別した試験プログラム生成部３３は、使用頻度の高い順に抽出された各バイトコード列の組を繰り返し実行する複数の試験プログラムＴＰ…を生成し、保持する。試験プログラムＴＰを生成した試験プログラム生成部３３は、上記実施形態と同様、所定のタイミングで、これら生成した試験プログラムＴＰを試験プログラム実行部２２，２４に供給して実行させ、これにより、負荷係数αｉ，ｊ等を得る。なお、引数等を考慮した場合でも同様な処理で所定の負荷係数を得ることができる。
【００７２】
続いて、上述した構成を備えた負荷係数生成システム３０における試験プログラムＴＰの自動生成方法について、図１０を参照しながら説明する。
【００７３】
まず、アプリケーションプログラム格納部３１が、試験プログラム実行部２２に対し、複数のバイトコードから構成されるアプリケーションプログラムＴＡＰを供給する（ステップＳ３１）。そして、ステップＳ３１でアプリケーションプログラムＴＡＰを受け取った試験プログラム実行部２２は、Ｊａｖａ（登録商標）仮想機械２８にこのアプリケーションプログラムＴＡＰを実行させる（ステップＳ３２）。試験プログラム実行部２２は、アプリケーションプログラムＴＡＰを実行させることにより生成される各バイトコードの実行履歴ログを、実行履歴ログ取得部３２へ出力する。
【００７４】
続いて、実行履歴ログ取得部３２は、仮想機械２８でアプリケーションプログラムＴＡＰを実行したことに伴って発生する実行履歴ログを試験プログラム実行部２２から取得すると（ステップＳ３３）、実行履歴ログに含まれる各バイトコード列の組の種類を示す情報に基づいて、バイトコード列の組の種類毎に各実行履歴ログを分類する。そして、実行履歴ログ取得部３２は、このように分類したログデータを試験プログラム生成部３３に出力する。
【００７５】
続いて、試験プログラム生成部３３は、履歴ログ取得部３２で取得された実行履歴ログを受け取ると、バイトコード列の種類毎に分類された実行履歴ログに基づいて、連続実行される二種類以上のバイトコード列の組を、アプリケーションプログラムＴＡＰにおける使用頻度の高い順に抽出する。そして、試験プログラム生成部３３は、使用頻度の一番高いバイトコード列の組から順に所定数のバイトコード列の組を選別し、使用頻度の高い順に抽出された各バイトコード列の組を繰り返し実行する複数の試験プログラムＴＰ…を生成し、保持する（ステップＳ３４）。これにより、負荷係数生成システム３０では、多数の試験プログラムＴＰ…を自動生成することができる。
【００７６】
なお、上述した変形例において、アプリケーションプログラムＴＡＰを情報処理端末Ｍの仮想機械Ｍ１１で実行させてその負荷量ログを取得し、ＣＰＵ負荷量への影響の少ないバイトコード列の組を、試験プログラムＴＰの対象から除外し、ＣＰＵ負荷量への影響の大きいバイトコード列の組を中心とした試験プログラムＴＰ…を得るようにしてもよい。また、上記したようにバイトコード列の組を抽出するための擬似コード例としては、例えば図１１に示されるような擬似コード例があり、アプリケーションプログラムＴＡＰのトレースログを格納した長さhmaxの配列Ｈと繰り返しを行うバイトコードの組の最大サイズkmaxを入力として受け取ると、どのような順でバイトコードが出現したかを行列Ｇに記憶し、この行列Ｇを重み付きの有向グラフの隣接行列と見なして、ノードの大きさの和が大きく、長さが短くなるような閉路群Ｃを求め、その中の閉路Ｂごとに経路するノードの順に対応するバイトコードを繰り返し実行するようなプログラムを作成し、出現頻度の高いバイトコード列の試験を行うプログラムを試験プログラムＴＰに追加するといったことができる。
【００７７】
引き続いて、上述した情報処理端末ＭのＣＰＵ負荷量ＬＭの推定をコンピュータに実行させるための負荷量推定プログラム１１０ｂを説明する。図１２に示すように、負荷量推定プログラム１１０ｂは、コンピュータが備える記録媒体１１０に形成されたプログラム格納領域１１０ａ内に格納される。
【００７８】
負荷量推定プログラム１１０ｂは、ＣＰＵ負荷量ＬＭの推定処理を統括的に制御するメインモジュール１１１と、プログラム格納モジュール１１２と、プログラム実行モジュール１１３と、トレースログ出力モジュール１１４と、トレースログ加工モジュール１１５と、負荷係数格納モジュール１１６と、負荷量算出モジュール１１７とを備えて構成される。プログラム格納モジュール１１２、プログラム実行モジュール１１３、トレースログ出力モジュール１１４、トレースログ加工モジュール１１５、負荷係数格納モジュール１１６及び負荷量算出モジュール１１７を実行させることにより実現される機能は、上述した負荷量推定システム１０のアプリケーションプログラム格納部１２、プログラム実行部１３、トレースログ出力部１４、トレースログ加工部１５、負荷係数格納部１６及び負荷量算出部１７の機能とそれぞれ同様である。
【００７９】
また、上述した情報処理端末ＭのＣＰＵ負荷量ＬＭを推定するための負荷係数αｉの生成をコンピュータに実行させるための負荷係数生成プログラム１２０ｂを説明する。図１３に示すように、負荷係数生成プログラム１２０ｂは、コンピュータが備える記録媒体１２０に形成されたプログラム格納領域１２０ａ内に格納される。
【００８０】
負荷係数生成プログラム１２０ｂは、負荷係数αｉの生成処理を統括的に制御するメインモジュール１２７と、試験プログラム格納モジュール１２１と、試験プログラム実行モジュール１２２と、トレースログ加工モジュール１２３、試験プログラム実行モジュール１２４と、負荷量ログ取得モジュール１２５と、負荷係数算出モジュール１２６とを備えて構成される。試験プログラム格納モジュール１２１、試験プログラム実行モジュール１２２、トレースログ加工モジュール１２３、試験プログラム実行モジュール１２４、負荷量ログ取得モジュール１２５及び負荷係数算出モジュール１２６を実行させることにより実現される機能は、上述した負荷係数生成システム２０の試験プログラム格納部２１、試験プログラム実行部２２、トレースログ加工部２３、試験プログラム実行部２４、負荷量ログ取得部２５及び負荷係数算出部２６の機能とそれぞれ同様である。
【００８１】
以上、本実施形態に係る負荷量推定システム１０では、少なくとも一種類以上のバイトコードから構成されるアプリケーションプログラムＡＰを実行した仮想機械１１から出力抽出されるバイトコードの実行回数と、バイトコードに応じて予め設定されている負荷係数とに基づいて、情報処理端末ＭのＣＰＵ推定負荷量を算出している。このように、実機端末Ｍ及びホスト端末１０の何れの仮想機械Ｍ１１，１１において共通的に用いられるバイトコードの実行回数とバイトコードに応じた負荷係数とに基づいて推定負荷量を算出しているので、大量の負荷推定テスト等を行えるような計算資源を十分に備えておらず、しかも仮想機械が実装されるような情報処理端末Ｍであっても、そのＣＰＵ負荷量をホストであるシステム１０上で効果的に推定することができる。
【００８２】
また、負荷量推定システム１０では、トレースログ加工部１５は、単一種類からなるバイトコード毎に実行回数を抽出し、負荷量算出部１７は、トレースログ加工部１５によって抽出された単一種類からなるバイトコードの実行回数と単一種類からなるバイトコードに応じて予め設定されている負荷係数とに基づいて、推定負荷量を算出している。そして、このように、単一種類からなるバイトコード毎に実行回数を抽出する場合において、トレースログ加工部１５は、単一種類からなるバイトコード毎の実行回数を、更に、単一種類からなるバイトコードが取り得る引数値毎に抽出し、負荷量算出部１７は、トレースログ加工部１５によって引数値毎に抽出された実行回数と、単一種類からなるバイトコードに応じて引数値毎に予め設定されている負荷係数とに基づいて、推定負荷量を算出することもできるようになっている。このため、負荷量推定システム１０では、より正確にＣＰＵ負荷量を推定することができる。
【００８３】
また、負荷量推定システム１０では、トレースログ加工部１５は、連続して実行される二種類以上のバイトコードの組毎に実行回数を抽出し、負荷量算出部１７は、トレースログ加工部１５によって抽出された二種類以上のバイトコードの組の実行回数と二種類以上のバイトコードの組に応じて予め設定されている負荷係数とに基づいて、推定負荷量を算出している。そして、このように、二種類以上のバイトコードの組毎に実行回数を抽出する場合において、トレースログ加工部１５は、二種類以上のバイトコードの組毎の実行回数を、更に、二種類以上のバイトコードの組が取り得る引数値毎に抽出し、負荷量算出部１７は、トレースログ加工部１５によって引数値毎に抽出された実行回数と、二種類以上のバイトコードの組に応じて引数値毎に予め設定されている負荷係数とに基づいて、推定負荷量を算出することもできるようになっている。このため、負荷量推定システム１０では、更に正確にＣＰＵ負荷量を推定することができる。
【００８４】
また、本実施形態に係る負荷係数生成システム２０では、少なくとも一種類以上のバイトコードを繰り返し実行する試験プログラムＴＰを実行した仮想機械２８（又はＭ１１）から出力抽出されたバイトコードの実行回数を説明変数とし、同様の試験プログラムＴＰを情報処理端末Ｍの仮想機械Ｍ１１で実行した際のプロセッサ負荷量を目的変数としたＣＰＵ負荷予測式（１）に基づいて、所定の情報処理端末ＭのＣＰＵ負荷量を推定するための負荷係数αを算出している。このように、実機端末Ｍ及びホスト端末２０の何れの仮想機械Ｍ１１，２８においても共通的に用いられるバイトコードに応じて負荷係数αを算出しているので、このような負荷係数αを用いることにより、大量の負荷推定テスト等を行えるような計算資源を十分に備えておらず、しかも仮想機械Ｍ１１が実装されるような情報処理端末（実機）Ｍであっても、そのＣＰＵ負荷量をホストであるシステム２０上で効果的に推定することができる。また、この場合、バイトコードの実行回数とＣＰＵ負荷量とから負荷係数αを算出しているので、かかる負荷係数αを簡易な手段で生成することができる。
【００８５】
また、負荷係数生成システム２０では、試験プログラムＴＰは、単一種類からなるバイトコードを繰り返し実行するプログラムであり、トレースログ加工部２３は、単一種類からなるバイトコードの実行回数を取得し、負荷係数算出部２６は、単一種類からなるバイトコードの実行回数を説明変数としたＣＰＵ負荷予測式（１）に基づいて、単一種類からなるバイトコードに応じた負荷係数を算出している。このように、単一種類からなるバイトコードを実行する試験プログラムＴＰを用いた場合において、トレースログ加工部２３は、単一種類からなるバイトコードの実行回数を、単一種類からなるバイトコードが取り得る引数値毎に取得し、負荷係数算出部２６は、引数値毎に取得された単一種類からなるバイトコードの実行回数を説明変数としたＣＰＵ負荷予測式（１）に基づいて、単一種類からなるバイトコードに応じた負荷係数を引数値毎に算出することもできるようになっている。このため、負荷係数生成システム２０では、より正確にＣＰＵ負荷量を推定するための負荷係数を所得することができる。
【００８６】
また、負荷係数生成システム２０では、試験プログラムＴＰは、二種類以上のバイトコードを繰り返し実行するプログラムであり、トレースログ加工部２３は、二種類以上のバイトコードの組の実行回数を取得し、係数算出部２６は、二種類以上のバイトコードの組の実行回数を説明変数としたＣＰＵ負荷予測式（１）に基づいて、二種類以上のバイトコードの組に応じた負荷係数を算出している。この場合において、トレースログ加工部２３は、二種類以上のバイトコードの組の実行回数を、二種類以上のバイトコードの組が取り得る引数値毎に取得し、係数算出部２６は、引数値毎に取得された二種類以上のバイトコードの組の実行回数を説明変数としたＣＰＵ負荷予測式（１）に基づいて、二種類以上のバイトコードの組に応じた負荷係数を引数値毎に算出することもできるようになっている。このため、負荷係数生成システム２０では、より正確にＣＰＵ負荷量を推定するための負荷係数を所得することができる。
【００８７】
また、負荷係数生成システム３０では、少なくとも二種類のバイトコードから構成されるアプリケーションプログラムＴＡＰを負荷係数生成システム３０内に構築される仮想機械２８に実行させた際のバイトコード列からなる実行履歴ログを取得する履歴ログ取得部３２を備え、プログラム生成部３３は、履歴ログ取得部３２で取得された実行履歴ログから、連続実行される二種類以上のバイトコードの組を使用頻度に応じて抽出し、当該抽出されたバイトコードの組を繰り返し実行する試験プログラムを生成する。この場合、試験プログラムを容易に生成でき、しかも、実際に使用される傾向に応じたバイトコードの組からなる試験プログラムを得ることができる。
【００８８】
以上、本発明をその実施形態に基づき具体的に説明したが、本発明は、上記実施形態に限定されるものではない。例えば、上記実施形態では、バイトコードは、Ｊａｖａ（登録商標）仮想機械１１，Ｍ１１，２８で使用されるコードであったが、Ｊａｖａ（登録商標）仮想機械以外の仮想機械で使用されるコードであってもよく、特定のＯＳやハードウェアに依存しないように定義された命令でもよい。また、バイトコードは、各プロセッサの命令としたり、高級言語における１ステップに対応する命令としたりすることもできる。また、これに対応し、アプリケーションプログラムＡＰや試験プログラムＴＰ等は、Ｊａｖａ（登録商標）プログラム以外のプログラムでもよく、Ｊａｖａ（登録商標）仮想機械１１，Ｍ１１，２８がＪａｖａ（登録商標）仮想機械以外の仮想機械であってもよい。なお、仮想機械は実機械と置き換えてもよい。また、仮想化の方法は特に限定されるものではない。
【００８９】
また、ＣＰＵ負荷は、ＣＰＵ負荷量、ユーザもしくはシステムのＣＰＵ時間、ウォール・クロック、電力量、エネルギー使用量などの単位時間あたり又は各バイトコードに対応することが可能な統計量としてもよい。また、トレースログには、バイトコードの種類のみならず、メソッドの呼び出されたときのコンテキストと引数、ネイティブメソッドの呼出し、Ｊａｖａ（登録商標）ネイティブインターフェイス（ＪＮＩ）などのネイティブからバイトコード、バイトコードからネイティブの呼出し、ネイティブコードの情報などが含まれていてもよい。
【００９０】
なお、上述した各種のシステム、方法等は、計算精度とＣＰＵ計算精度とＣＰＵ負荷量のトレードオフを考慮し、例えば、採用するデータ型を決定するような大局的判断に活用することができる。例えば、Android Dev Phone 1において、ベンチマークSciMark2.0の中でdouble型に関するバイトコードのＣＰＵ負荷量の貢献度が、ＣＰＵ負荷予想式（１）式を用いて約２５%であると予測された場合において、同一のハードウェア端末上で、演算をdouble型からfloat型にしたときのＣＰＵ負荷削減量は約３０〜９０％であった。もし、すべてのdouble型演算をfloat型に置換するとＣＰＵ負荷削減量は約８〜２５％であると概算される。実測では１５％のＣＰＵ負荷量が削減され、この概算の正しさを裏付けた。なお、double型に関するバイトコードの種類や引数レジスタ値を考慮することで予測の精度は上がる。
【００９１】
この方法は、コードの一部が与えられたときのＣＰＵ負荷量を局所的に判断することにも活用できる。例えば、Ｊａｖａ（登録商標）言語において、ｌｏｎｇ型の変数ｘに対し、丸め誤差の影響を除けば同一の計算を行う２式：
１）２で除算後、doubleにキャスト： (double)(x / 2)
２）doubleにキャスト後、２で除算： (double)x / 2
が与えられたとする。この２者がコンパイルされて得られたバイトコードのＣＰＵ負荷量を比較する場合を考える。どちらの式でもキャストに必要なＣＰＵ負荷量は同じである。しかし、この方法を用いると対象としているハードウェア端末でdouble型とlong型の２除算のいずれがより効率的であるか、およびに前後のソースコードを考慮した多次元のＣＰＵ負荷量の解析によりどちらがより効率的であるかを予測することが可能である。この方法を用いることで、以上のような判断に基づいて、アプリケーション開発者にＣＰＵ負荷量の改善を提示することが可能である。
【００９２】
複数回の見積もりを高速化するためにトレースログを予め加工しておくことが考えられる。ＣＰＵ負荷に影響が似通ったＪａｖａ（登録商標）バイトコードの集合を同等のものとして扱ったり、プログラム中の意味の単位とＣＰＵ負荷の対応を予め求めたりしておく方法である。使用するαは理論的なものでも構わないので、開発途上にある情報処理端末における予測値でも構わない。したがって、ソフトウェアの制約から必要とされる性能を割り出し、仮想機械の設計に指針を与えることが可能になる。その指針は、特定のベンチマークに対して得られるＣＰＵ負荷量の削減量を定量的に求めることで実現されているため、ソフトウェア開発の上流工程においてもより詳細に提供したいサービスに特化した情報処理端末を設計することが可能になる。
【符号の説明】
【００９３】
１０…負荷量推定システム、１１，Ｍ１１，２８…Ｊａｖａ（登録商標）仮想機械、１３…プログラム実行部（プログラム実行手段）、１４…トレースログ出力部（トレースログ出力手段）、１５…トレースログ加工部（トレースログ加工手段）、１７…負荷量算出部（負荷量算出手段）、２０，３０…負荷係数生成システム、２１…試験プログラム格納部（プログラム供給手段）、２２…試験プログラム実行部（第一のプログラム実行手段）、２３…トレースログ加工部（トレースログ加工手段）、２４…試験プログラム実行部（第二のプログラム実行手段）、２５…負荷量ログ取得部（負荷量ログ取得手段）、２６…負荷係数算出部（係数算出手段）、３２…実行履歴ログ取得部（履歴ログ取得手段）、３３…試験プログラム生成部（プログラム供給手段）、Ｍ…対象の情報処理端末。
【図１】
0005553351.tif 000003
【図２】
0005553351.tif 000004
【図３】
0005553351.tif 000005
【図４】
0005553351.tif 000006
【図５】
0005553351.tif 000007
【図６】
0005553351.tif 000008
【図７】
0005553351.tif 000009
【図８】
0005553351.tif 000010
【図９】
0005553351.tif 000011
【図１０】
0005553351.tif 000012
【図１１】
0005553351.tif 000013
【図１２】
0005553351.tif 000014
【図１３】
0005553351.tif 000015