(57)【特許請求の範囲】
【請求項１】
ターゲットマシン上で動作するソフトウェアを実装したテストマシンを用いて、前記ターゲットマシンの設定パラメータを決定するプログラムであって、
前記テストマシンの設定パラメータの値の変化に対する前記テストマシンの挙動を測定し、
前記設定パラメータの前記変化と、測定された前記挙動とから、前記テストマシンの挙動モデルを生成し、
前記設定パラメータの第１の値での前記ターゲットマシンの挙動と、前記設定パラメータの前記第１の値での前記挙動モデルによる挙動の推定値とから、前記ターゲットマシンの挙動と前記挙動モデルによる挙動の推定値との間の関係を特定し、
前記挙動モデルと前記関係とから、前記ターゲットマシンのための前記設定パラメータの第２の値を算出する、
処理をコンピュータに実行させるプログラム。
【請求項２】
前記挙動モデルは、設定パラメータの値を入力とし、前記テストマシンの挙動の推定値を出力する、請求項１記載のプログラム。
【請求項３】
前記挙動は、前記ソフトウェアに含まれる１つ以上の関数の実行時間である、請求項１又は２記載のプログラム。
【請求項４】
前記設定パラメータは、ターゲットマシンのＣＰＵ又は前記テストマシンのＣＰＵの動作環境を設定するパラメータである、請求項１ないし３のうちいずれか１項記載のプログラム。
【請求項５】
前記第２の値を算出する処理は、前記ターゲットマシン上でのソフトウェアを実行する時間の予測値を最小とするための、前記ターゲットマシンの前記設定パラメータの値を求める処理を含む、請求項１ないし４のうちいずれか１項記載のプログラム。
【請求項６】
ターゲットマシン上で動作するソフトウェアを実装したテストマシンを用いて、前記ターゲットマシンの設定パラメータを決定する方法であって、
前記テストマシンの設定パラメータの値の変化に対する前記テストマシンの挙動を測定し、
前記設定パラメータの前記変化と、測定された前記挙動とから、前記テストマシンの挙動モデルを生成し、
前記設定パラメータの第１の値での前記ターゲットマシンの挙動と、前記設定パラメータの前記第１の値での前記挙動モデルによる挙動の推定値とから、前記ターゲットマシンの挙動と前記挙動モデルによる挙動の推定値との間の関係を特定し、
前記挙動モデルと前記関係とから、前記ターゲットマシンのための前記設定パラメータの第２の値を算出する、
処理を有する方法。
【請求項７】
ターゲットマシン上で動作するソフトウェアを実装したテストマシンを用いて、前記ターゲットマシンの設定パラメータを決定する装置であって、
前記テストマシンの設定パラメータの値の変化に対する前記テストマシンの挙動を測定する挙動測定部と、
前記設定パラメータの前記変化と、測定された前記挙動とから、前記テストマシンの挙動モデルを生成する挙動モデル生成部と、
前記設定パラメータの第１の値での前記ターゲットマシンの挙動と、前記設定パラメータの前記第１の値での前記挙動モデルによる挙動の推定値とから、前記ターゲットマシンの挙動と前記挙動モデルによる挙動の推定値との間の関係を特定する関係特定部と、
前記挙動モデルと前記関係とから、前記ターゲットマシンのための前記設定パラメータの第２の値を算出するパラメータ値算出部、
を有する装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータパラメータのチューニングのためのプログラム、方法、及び装置に関する。
【背景技術】
【０００２】
アプリケーションプログラムを実行するコンピュータを使用して業務環境を最適化するためには、コンピュータの性能が十分に引き出せるように、コンピュータ内部のパラメータが適切に設定されていることが必要となる。
【０００３】
コンピュータの性能を動的に分析する手法として、動的プログラム解析が知られている。動的プログラム解析では、アプリケーションプログラムの実行を通じて、コンピュータ（例えば、種々の関数に対するＣＰＵの実行時間）に係る情報を収集する。この収集された情報を解析し、コンピュータの設定パラメータの調整（特にＣＰＵに係るパラメータチューニング）を行い、アプリケーションプログラムに対してコンピュータの性能を最大限に引き出せるようにする。
【０００４】
コンピュータの実行情報を収集するツールとして、ＣＰＵプロファイラ（Profiler）が用いられる。ＣＰＵプロファイラとは、性能解析ツールの１つであり、アプリケーションプログラムの実行時の各種情報（各関数の実行時間等）を収集するものである。このプロファイラを利用することによって、各種関数の呼出しの頻度や、それらに係るＣＰＵの実行時間等のコンピュータの実行情報を統計的に取得することができる。コンピュータの実行情報を解析することにより、コンピュータに含まれるＣＰＵ等の実行にかかる各種のパラメータのチューニングをどのように行えばよいかが分かる。このパラメータチューニングにより、各パラメータが最適化されれば、アプリケーションプログラムを実行するコンピュータの能力をより有効に活用することができる。本明細書では、コンピュータの実行情報を統計的に収集することをプロファイリングと呼ぶ。また、プロファイリングにより取得された情報をプロファイリングデータと呼ぶ。
【０００５】
なお、アプリケーションプログラムの動作環境は、動的に変化する。このため、この変化に対応して、各種パラメータ値の適切な値も変化することが知られている。したがって、例えば、アプリケーションプログラムの稼働中に、コンピュータのレスポンスが遅延するような状況（トラブル）が発生した場合には、この状況に対応してパラメータの再チューニング作業が必要となる場合がある。このパラメータの再チューニングにより、コンピュータのレスポンス遅延等を解消できる場合が多い。
【０００６】
この場合、レスポンス遅延等のトラブルが発生しているコンピュータ（ターゲットマシン）は、実際に業務運用に利用されている場合がほとんどである。したがって、現在利用中のターゲットマシンにおいて自由にパラメータを動かして試行錯誤を繰り返して、最適なパラメータを見つけることは現実的では無い。なぜなら、業務運用に対して思わぬトラブルを併発する可能性があるからである。したがって、業務運用に利用されているターゲットマシンのパラメータのチューニングを行うには、例えば、ターゲットマシンのコンピュータの環境を持つテストマシンを用いることが必要となる場合が多い。この場合、例えば、以下の手順が必要である。
（１）まず、アプリケーションプログラムを実行している稼働中のコンピュータ（ターゲットマシン）のプロファイリングを実施する。このプロファイリングの実施によって、その時点のパラメータにおけるプロファイリングデータが取得される。
（２）このプロファイリングデータを解析する。
（３）併せてターゲットマシンの環境の情報（パラメータ値、利用ＤＢ環境等）を取得する。
（４）テストマシンにおいて、ターゲットマシンの環境を構築する。
（５）テストマシンの環境において、パラメータ値を変更し、適切なパラメータの値を試行錯誤によって決定する。
（６）ターゲットマシンに、上記（５）で得られた適切なパラメータ値を設定する。
（７）ターゲットマシンで、トラブルが改善されたかを確認する。
【０００７】
上記（３）においては、アプリケーションプログラムやオペレーティングシステムの関数レベルの分析を行う必要がある。この解析は、高度の知識が要求される。すなわち、関数の特性（関数の役割や、関数がシステムに及ぼす影響度等）を理解する必要があり、トラブルの要因を認識することは非常に難しい。
【０００８】
また、ターゲットマシンを利用する主体は、パラメータのチューニングを実施する主体（例えばシステムベンダ）とは異なる顧客である場合が多い。このため、上記（４）において、顧客のセキュリティ等を考慮すると、顧客の使用しているターゲットマシンの環境の情報をシステムベンダが取得することが事実上困難な場合（あるいは限定される場合）が多い。加えて、環境に関する情報がある程度入手できても、その環境を構築することが事実上困難である場合も多い（全く同一のマシン環境をテストマシンに構築することは非常に困難である）。また、レスポンス遅延等のトラブルの再現を行うことも難しい場合が多い。
【０００９】
加えて、パラメータをどのように設定すれば、トラブルの解消や、改善がなされるのかを見つけることも、試行錯誤を繰り返す等の時間を要するため非常に難しい。
【００１０】
なお、以下の説明において、実際に利用されているパラメータチューニングの対象のコンピュータを「ターゲットマシン」と呼び、ターゲットマシンの環境を備えたコンピュータを「テストマシン」と呼ぶ。
【００１１】
なお、コンピュータに係るパラメータには種々のものが存在する。その一例として、sched_migration_costというパラメータがある。このパラメータは、マルチＣＰＵ又はマルチコアを前提としたパラメータである。タスクがスリープ状態からウェイクアップするとき、タスクスケジューラは、そのタスクの前回実行時に使用された同じＣＰＵ又はコアでタスクをウェイクアップさせようとする。その理由は、同じＣＰＵ又はコアであれば、ＣＰＵの使用しているキャッシュに、そのタスクが前回実行時に使用していたデータが残っている確率が高いからである。このようにタスクが前回使用したＣＰＵで再度ウェイクアップできる状態を「キャッシュホット」と呼ぶ。パラメータsched_migration_costは、ウェイクアップしようとするタスクが「キャッシュホット」になるのを待つことができる時間の最大値（最長時間）を設定するパラメータである。パラメータsched_migration_costの値が大きければ大きいほど、タスクのＣＰＵ間移動によるキャッシュミスを抑えることができ、キャッシュヒット率が向上し、スループット性能の向上が期待できる。ただし、キャッシュホット判定の待ち時間が増加するため、レスポンスは低下する。逆に、sched_migration_costの値が小さければ小さいほど、タスクは積極的にアイドルＣＰＵに移動するようになるため、レスポンスの向上が見込まれる。ただし、この場合キャッシュミスが多くなるためスループットは低下する。
【００１２】
このsched_migration_costは、アプリケーションソフトウエアが動作しているターゲットマシンの実行待ちタスクの数や、その他の動作環境に応じて、適切な値に設定することが必要である。このため、環境変化に応じて、このようなパラメータ値を簡便に設定できる技術の確立が望まれている。また、アプリケーションプログラムなどに、パラメータ調整用のための命令を埋め込む等の煩雑な作業を必要としないパラメータ調整技術が望まれている。
【００１３】
従来、アプリケーションとそのアプリケーションモデルを作成する技術が知られている。すなわち、アプリケーションモデル調整用のログ出力命令が埋め込まれたプログラムソースと、それに対応する性能シミュレーション用のソース、アプリケーションモデル調整用のパラメータ初期値があらかじめ含まれ、調整後のパラメータ値の履歴を蓄積できるようにしたソフトウェア部品を組み合わせて、アプリケーションおよびアプリケーションモデルを作成し、それらを実行することで得られるログを比較してアプリケーションの実測結果にあわせてアプリケーションモデルのパラメータを自動的に調整し、調整結果をアプリケーションモデルに反映させ、元となったソフトウェア部品の履歴に加え、必要があればパラメータ初期値を変更する技術が知られている（特許文献１）。
【００１４】
また、コンピュータ・システムのプログラム動作履歴に基づいて性能評価により高く寄与する関数を自動的に選択する技術が知られている。すなわち、動作履歴を受け付け、受け付けた動作履歴に含まれる関数の呼び出し関係を用いて関数を木構造のノードに割り当て、実行時間又はメモリ使用量を定量的情報として扱い、関数に付随する定量的情報の合計が全体に付随する定量的情報と所定の比率との積を超える条件で関数を抽出する技術が知られている（特許文献２）。
【先行技術文献】
【特許文献】
【００１５】
【特許文献１】特開２００２−２１５４２３号公報
【特許文献２】特開２０１０−１９８１３３号公報
【発明の概要】
【発明が解決しようとする課題】
【００１６】
１つの側面では、本発明は、コンピュータパラメータのチューニングを簡便に行うことができるようにすることを目的とする。
【課題を解決するための手段】
【００１７】
一実施形態によれば、ターゲットマシン上で動作するソフトウェアを実装したテストマシンを用いて、前記ターゲットマシンの設定パラメータを決定するプログラムであって、  前記テストマシンの設定パラメータの値の変化に対する前記テストマシンの挙動を測定し、前記設定パラメータの前記変化と、測定された前記挙動とから、前記テストマシンの挙動モデルを生成し、前記設定パラメータの第１の値での前記ターゲットマシンの挙動と、前記設定パラメータの前記第１の値での前記挙動モデルの挙動とから、前記ターゲットマシンの挙動と前記挙動モデルの挙動との間の関係を特定し、前記挙動モデルと前記関係とから、前記ターゲットマシンのための前記設定パラメータの第２の値を算出する、処理をコンピュータに実行させるプログラムが提供される。
【発明の効果】
【００１８】
実施形態によれば、コンピュータパラメータのチューニングを簡便に行うことができるようにすることができる。
【図面の簡単な説明】
【００１９】
【図１】本発明の一実施形態におけるパラメータチューニング装置の機能ブロック図である。
【図２】本発明の一実施形態における処理フローを示す図である。
【図３】一実施形態におけるテストマシンのプロファイリングデータを示す図である。
【図４】一実施形態における関数に対する依存パラメータと関数時間予測係数を示す図である。
【図５】一実施形態における環境補正係数を算出する処理を示す図である。
【図６】一実施形態におけるターゲットマシンのプロファイリングデータの予測値を示す図である。
【図７】一実施形態のハードウエア構成を示す図である。
【発明を実施するための形態】
【００２０】
以下、図面に基づいて本発明の実施の形態を説明する。
【００２１】
図１は、本発明の実施形態におけるパラメータチューニング装置の機能ブロック図を示している。ターゲットマシン１０２は、アプリケーションプログラムが動作しており、そのアプリケーションプログラムのサービスを提供している物理マシン又は仮想マシンである。このターゲットマシン１０２は、特定のパラメータ値（現在パラメータ値１０４）で動作しているものとする。
【００２２】
テストマシン１１２は、ターゲットマシン１０２上で動作するアプリケーションが実装され、更に、オペレーティングシステム、ハードウエア構成、周辺装置、必要なデータベース等の動作環境は、理想的にはターゲットマシン１０２と同一のものである。なお、上述のように現実的には、動作環境は同一にすることが不可能な場合もある。このため、なるべく同一の環境を整備することが望ましい。パラメータチューニング装置１５０は、テストマシン１１２の挙動を基に、ターゲットマシン１０２のための適正パラメータ値を出力することを主たる目的とする装置である。このパラメータチューニング装置１５０は、コンピュータ上で動作するプログラムとして実現されてもよい。このプログラムは、テストマシン１１２上で動作してもよく、又は他のコンピュータ上で動作してもよい。また、パラメータチューニング装置は、ターゲットマシン１０２のアプリケーションプログラムの実行時間予測値１８６を出力してもよい。
【００２３】
更に図１を用いて、パラメータチューニング装置１５０の機能構成を説明する。パラメータチューニング装置１５０は、挙動測定部１６２、挙動モデル生成部１６４、関係特定部１７２、パラメータ値算出部１８２を有することが望ましい。挙動測定部１６２は、テストマシン１１２に対して、各種のパラメータを変化させ（１６３）、その都度ＣＰＵプロファイリングを実行し、ＣＰＵの挙動１１４をプロファイリングデータとして取得してもよい。このＣＰＵの挙動１１４（プロファイリングデータ）と、パラメータ値とは、挙動モデル生成部１６４に送られる。挙動モデル生成部１６４は、パラメータの変化に対するテストマシン１１２の挙動（ＣＰＵプロファイリングデータ）をモデル化する。このモデルの一例として関数時間予測係数１６６を生成してもよい。関数時間予測係数１６６の詳細は後述する。
【００２４】
なお、このモデルは、テストマシン１１２をモデル化したものである。しかしながら、テストマシン１１２は、ターゲットマシン１０２のアプリケーションソフトウエア及びその他の環境を極力一致させたマシンである。したがって、このモデルは、ターゲットマシン１０２の挙動をモデル化したものと捉えることもできる点に留意すべきである。
【００２５】
そして、このモデルに対して、ターゲットマシン１０２の現在のパラメータ値１０４を適用した場合のモデルの挙動の推定値１６５が算出され、関係特定部１７２に送られる。関係特定部１７２では、ターゲットマシン１０２のＣＰＵプロファイリングを実行し、ターゲットマシン１０２の挙動１０６すなわちターゲットマシン１０２のプロファイリングデータを取得する。関係特定部１７２は、モデルの挙動の推定値１６５と、ターゲットマシン１０２の挙動１０６すなわちターゲットマシン１０２のプロファイリングデータとから、両者の関係を特定する。この関係の一例として、環境補正係数１７４が算出される。なお、環境補正係数１７４の詳細は後述する。なお、ターゲットマシン１０２の環境は、常に変化している。このため、上述の関係特定部１７２の役割は、挙動モデル生成部１６４で生成されたモデルを現状のターゲットマシン１０２が置かれた環境に更に近づける役割を含むものと捉えることができる点に留意すべきである。
【００２６】
関数時間予測係数１６６と環境補正係数１７４とは、パラメータ値算出部１８２に送られる。パラメータ値算出部１８２は、パラメータ最適化部１８４を有することが望ましい。パラメータ最適化部は、入力された関数時間予測係数１６６と環境補正係数１７４とその他の情報から、ターゲットマシン１０２のための適正パラメータ値１８３を算出し、ターゲットマシン１０２に提供する。また、パラメータ最適化部は、適正パラメータをターゲットマシン１０２に適用した場合のターゲットマシン１０２におけるアプリケーションプログラムの実行時間予測値を出力してもよい。適正パラメータ値１８３の算出の手法の詳細については、後述する。
【実施例】
【００２７】
図２は、本発明の一実施形態における処理フローを示す図である。なお、本フローの前提として、テストマシン１１２には、ターゲットマシン１０２で動作するアプリケーションプログラムが実装されており、オペレーティングシステム、ハードウエア、周辺機器、利用されるデータベース等の環境が実装されているものとする。なお、既に述べたように、テストマシン１１２の環境は、ターゲットマシン１０２の環境と同一であることが望ましいが、異なる部分が存在してもよい。
【００２８】
ステップ２０２において、テストマシン１１２の設定パラメータの値を変化させて、テストマシン１１２のプロファイリングデータ(挙動)を測定し取得する。
【００２９】
ステップ２０４において、テストマシン１１２の挙動モデル（関数時間予測係数）が生成される。挙動モデルの一例としての関数時間予測係数については後述する。
【００３０】
ステップ２０６において、現在のパラメータの値におけるターゲットマシン１０２のプロファイリングデータ（挙動）が取得される。
【００３１】
ステップ２０８において、ターゲットマシン１０２の現在の設定パラメータを用いて、テストマシン１１２の挙動モデルのプロファイリングデータが算出される。
【００３２】
ステップ２１０において、取得されたターゲットマシン１０２のプロファイリングデータと、算出されたテストマシン１１２の挙動モデルのプロファイリングデータ推定値との関係（環境補正係数）が算出される。上述のように、テストマシン１１２は、ターゲットマシン１０２のアプリケーションが実装されており、諸環境もターゲットマシン１０２に非常に近似したものであるため、テストマシン１１２の挙動モデルは、ターゲットマシン１０２をモデル化したものであるとも捉えられる。したがって、ターゲットマシン１０２の現時点における設定パラメータをモデルに適用して算出したプロファイリングデータ推定値は、ターゲットマシン１０２から取得したプロファイリングデータと近似したものになることが推測される。しかしながら、既に述べたように、ターゲットマシン１０２の挙動は、種々の要因により動的にある程度変化し得るものでもある。このため、本ステップ２１０においては、モデルを、より現状のターゲットマシン１０２の挙動に近づけるため、ターゲットマシン１０２の現時点における設定パラメータをモデルに適用して算出したプロファイリングデータ推定値と、ターゲットマシン１０２から取得したプロファイリングデータとの関係を求める。この関係の具体例として、環境補正係数を求めてもよい。なお、環境補正係数の詳細は後述する。
【００３３】
ステップ２１２において、テストマシン１１２の挙動モデル（関数時間予測係数）と、関係（環境補正係数）とを含む情報を用いて、ターゲットマシン１０２の適正パラメータを算出する。テストマシン１１２の挙動モデル（関数時間予測係数）と、関係（環境補正係数）とを含む情報によって、現時点におけるターゲットマシン１０２がモデル化されると理解してもよい。そして、これらの情報を用いることによって、パラメータを変更した場合の、ターゲットマシン１０２の挙動（プロファイリングデータ）をシミュレートすることができる。このシミュレーションによりターゲットマシン１０２の適正なパラメータを算出する。適正なパラメータの算出手法としては、プロファイリングデータによって取得された各関数の実行時間の合計値を最小とするようなパラメータを、最適化問題の解法を用いて決定してもよい。なお、パラメータの算出に関する詳細は後述する。
【００３４】
ステップ２１４において、得られた適正パラメータ値を用いて、ターゲットマシン１０２におけるアプリケーションプログラムの実行時間の予測を算出し出力してもよい。この予測を検討することによって、レスポンス遅延等のトラブルがどの程度改善するかを予測することができる。そして、得られた適正パラメータ値をターゲットマシン１０２に適用する。
【００３５】
なお、上述の実施形態では、テストマシン１１２の挙動モデルを生成したが、挙動モデルではなくテストマシン１１２そのものを利用してもよい。
【００３６】
図３（Ａ）ないし（Ｄ）は、一実施形態におけるテストマシン１１２のプロファイリングデータを示す図である。より具体的には、図１における挙動測定部１６２が取得するテストマシン１１２のプロファイリングデータの内容を示している。また、図２におけるステップ２０２の処理の内容を示している。
【００３７】
図３（Ａ）は、テストマシン１１２におけるパラメータＡ、Ｂ、及びＣのそれぞれの値が１０，１５，及び０であるときの関数Ｘ，Ｙ，Ｚ，及びＵのプロファイリングデータを表している。
【００３８】
プロファイリングデータは、それぞれの関数のＣＰＵ実行時間で表される。この場合、関数Ｘ、関数Ｙ、関数Ｚ、及び関数Ｕの実行時間が、それぞれ２００ｍｓ，４００ｍｓ，６０ｍｓ，及び１００ｍｓとしてプロファイリングデータが取得されたことを示している。図３（Ａ）のパラメータ値は、デフォルト値であるとする。デフォルトのパラメータは、テストマシン１１２内の記憶部（図７のメモリ７１５）に記憶されていてもよい。
【００３９】
以下、関数の実行時間を関数時間と呼ぶ。
【００４０】
図３（Ｂ）は、テストマシン１１２において、パラメータＡのみを１０から０に変更したプロファイリングデータを示している。この場合、関数Ｚのみが６０ｍｓから１６０ｍｓに変化していることが分かる。
【００４１】
図３（Ｃ）は、パラメータＢを１５から３０に変更したプロファイリングデータを示している。この場合、関数Ｘ及びＹがそれぞれ、２００ｍｓから３２０ｍｓ、４００ｍｓから１００ｍｓに変化していることが分かる。
【００４２】
図３（Ｄ）は、パラメータＣのみを０から１０に変更したプロファイリングデータを示している。この場合、関数Ｘ及びＺがそれぞれ、２００ｍｓから２５０ｍｓ、６０ｍｓから３０ｍｓに変化していることが分かる。
【００４３】
図４は、一実施形態における関数に対する依存パラメータと関数時間予測係数を示している。すなわち図４は、図３に示された結果をまとめたものである。図４から、パラメータの値を入力として各関数に係るプロファイリングデータの推定値を出力とする線型モデルを生成することができる。図４において、関数時間予測係数とは、線型モデルの傾きである。プロファイリングデータを（ｔＸ，ｔＹ，ｔＺ，ｔＵ）Ｔとし、パラメータ値を（Ａ，Ｂ，Ｃ）Ｔとすれば、図４は、以下の式（１）によって表せる。なお、Ｔは行列の転置を意味する。
【００４４】
【数１】
0005906844.tif 000002
と表すことができる。式（１）は、テストマシン１１２の線形モデルである。すなわちパラメータ値（Ａ，Ｂ，Ｃ）Ｔに、具体的な値を代入することにより、線形モデルに基づくテストマシン１１２のプロファイリングデータ（ｔＸ，ｔＹ，ｔＺ，ｔＵ）Ｔの推定値が取得できる。
【００４５】
図３及び図４においては、２点間のサンプリングにより、線型モデルの各々の傾き（関数時間予測係数）を求めたが、複数のパラメータをテストマシン１１２に与え、複数のプロファイリングデータを取得し、最小二乗法等により傾き（関数時間予測係数）を求めてもよい。
【００４６】
また、上述の例では、線型モデルを用いたが、二次関数、三次関数等の非線形モデルを用いて、テストマシン１１２をモデリングしてもよい。プロファイリングデータのベクトルをｔとし、パラメータのベクトルをαとすれば、パラメータのベクトルαを入力としてプロファイリングデータのベクトルｔを出力するテストマシン１１２のモデルｆ（＊）は、下記の一般式（２）で表現できる。
【００４７】
【数２】
0005906844.tif 000003
【００４８】
図５は、一実施形態における環境補正係数を算出する処理を示している。この処理は、図１における関係特定部１７２の処理の具体例である。また、図２におけるステップ２１０の処理の具体例である。すなわち、ターゲットマシン１０２のプロファイリングデータと、算出されたテストマシン１１２の挙動モデルのプロファイリングデータ推定値との関係を環境補正係数として算出している。
【００４９】
図５において、５０２は、ターゲットマシン１０２における現在のパラメータ値（Ａ，Ｂ，Ｃ）Ｔ＝（１０，２０，１０）Ｔにおけるプロファイリングデータである。５０４は、ターゲットマシン１０２と同一の上記パラメータ値を用いた際のテストマシン１１２の挙動モデルのプロファイリングデータの推定値を示している。両プロファイリングデータは、環境の変化等の要因により、差が存在する場合が発生する。この差を吸収し、テストマシン１１２の挙動モデルをターゲットマシン１０２の挙動に近づけるために、環境補正係数５０６を導入してもよい。環境補正係数５０８の計算式は、環境補正係数の算出手法とその値を示している。すなわち、プロファイリングデータの対応する関数の値の比を算出している。テストマシン１１２の挙動モデルから得られたプロファイリングデータの推定値に環境補正係数を掛けることにより、ターゲットマシン１０２のプロファイリングデータの推定値を、より適切に算出することができる。
【００５０】
式（１）と図５の環境補正係数５０８とを用いれば、パラメータ値から、ターゲットマシン１０２のプロファイリングデータの推定値（ｔＸ’，ｔＹ’，ｔＺ’，ｔＵ’）Ｔは、以下の式（３）によって表すことができる。
【００５１】
【数３】
0005906844.tif 000004
【００５２】
また、環境補正係数のベクトルをＲとすれば、ターゲットマシン１０２のプロファイリングデータのベクトルの予測値ｔ’は、一般式（２）を用いて、以下の一般式（４）で表される。
【００５３】
【数４】
0005906844.tif 000005
【００５４】
図６は、一実施例におけるターゲットマシン１０２のプロファイリングデータの予測値を示している。具体的には、式（３）を用いて、パラメータ値Ｐ（Ａ，Ｂ，Ｃ）を様々に変化させた場合のプロファイリングデータの合計値が示されている。例えば、ターゲットマシン１０２のレスポンス遅延のトラブルを改善するためには、プロファイリングデータの予測値の合計値が最小となるパラメータ値を求めることが有効であろう。図６においては、パラメータ値が、Ｐ（１０，１５，０）のときの合計値が１８１９であり、最小値になっている。したがって、パラメータ値（１０，１５，０）を、ターゲットマシン１０２のパラメータの適正値として選択してもよい。
【００５５】
なお、プロファイリングデータの合計の最小値を求めるための一般的な算出式は、式（４）を用いて以下の一般式（５）を満たすパラメータのベクトルα＝α’を求めればよい。
【００５６】
【数５】
0005906844.tif 000006
そして、式（５）によって表される最小値が、ターゲットマシン１０２のアプリケーションプログラムの実行時間予測値としても利用することができる。
【００５７】
なお、式（５）は、プロファイリングデータの合計値の最小値を求める式であるが、プロファイリングデータの各々に重みを掛けた合計値を最小とする評価関数を用いてもよい。また、特定の１以上のプロファイリングデータのみに着目して、その値を最小にするようパラメータを求めてもよい。
【００５８】
なお、パラメータを求める手法としては、各パラメータのとり得る範囲（パラメータの制約条件）を予め定めておくことが望ましい。これによって、非現実的なパラメータ値が選択されてしまうことを避けることができる。
【００５９】
そして、各パラメータを所定の増分で変化させ、変化した各パラメータの組合せを網羅的に式（５）に与え、合計値が最小値となるパラメータのベクトル値を探索してもよい。また、この網羅的な探索で見つかったパラメータ値から出発（あるいは、任意のパラメータ値から出発）して、線形計画法や非線形の最適化手法を用いて最小値をとり得るパラメータのベクトル値を探索してもよい。
【００６０】
なお、本実施形態におけるパラメータは、コンピュータ上の種々のパラメータを含み、ＣＰＵに対するパラメータに限られるものではない。
【００６１】
図７は、一実施形態のハードウエア構成を示している。ターゲットマシン、テストマシン、及びパラメータチューニング装置は、ＣＰＵ７１０、メモリ７１５、入力装置７２０、出力装置７２５、外部記憶装置７３０、可搬記録媒体駆動装置７３５、ネットワーク接続装置７４５が含まれる。そして、それぞれの機器は、バス７５０によって接続されている。また、可搬記録媒体駆動装置７３５は、可搬記録媒体７４０を読み書きすることができる。そして、ネットワーク接続装置７４５には、インターネット７６０及び/又は専用線７６１が接続されてもよい。
【００６２】
なお、本実施形態のプログラムは、可搬記録媒体７４０に格納することができる。可搬記録媒体７４０とは、構造（structure）を有する１つ以上の非一時的（non-transitory）な、有形（tangible）な、記憶媒体を言う。例示として、可搬記録媒体７４０としては、磁気記録媒体、光ディスク、光磁気記録媒体、不揮発性メモリなどがある。磁気記録媒体には、ＨＤＤ、フレキシブルディスク（ＦＤ）、磁気テープ（ＭＴ）などがある。光ディスクには、ＤＶＤ（Digital  Versatile  Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact  Disc-Read  Only  Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。また、光磁気記録媒体には、ＭＯ（Magneto-Optical  disk）などがある。
【００６３】
なお、請求項に記載された方法やプログラムに係る発明は、矛盾のない限り処理の順番を入れ替えてもよく、あるいは、複数の処理を同時に実施してもよい。そして、これらの実施形態も、請求項に記載された発明の技術的範囲に包含されることは言うまでもない。
【００６４】
上記実施形態に関し、以下の付記を開示する。
（付記１）
ターゲットマシン上で動作するソフトウェアを実装したテストマシンを用いて、前記ターゲットマシンの設定パラメータを決定するプログラムであって、
前記テストマシンの設定パラメータの値の変化に対する前記テストマシンの挙動を測定し、
前記設定パラメータの前記変化と、測定された前記挙動とから、前記テストマシンの挙動モデルを生成し、
前記設定パラメータの第１の値での前記ターゲットマシンの挙動と、前記設定パラメータの前記第１の値での前記挙動モデルの挙動とから、前記ターゲットマシンの挙動と前記挙動モデルの挙動との間の関係を特定し、
前記挙動モデルと前記関係とから、前記ターゲットマシンのための前記設定パラメータの第２の値を算出する、
処理をコンピュータに実行させるプログラム。
（付記２）
前記挙動モデルは、設定パラメータの値を入力とし、前記テストマシンの挙動の推定値を出力する、付記１記載のプログラム。
（付記３）
前記挙動は、前記ソフトウェアに含まれる１つ以上の関数の実行時間である、付記１又は２記載のプログラム。
（付記４）
前記設定パラメータは、ターゲットマシンのＣＰＵ又は前記テストマシンのＣＰＵの動作環境を設定するパラメータである、付記１ないし３のうちいずれか１項記載のプログラム。
（付記５）
前記第２の値を算出する処理は、前記ターゲットマシン上でのソフトウェアを実行する時間の予測値を最小とするための、前記ターゲットマシンの前記設定パラメータの値を求める処理を含む、付記１ないし４のうちいずれか１項記載のプログラム。
（付記６）
ターゲットマシン上で動作するソフトウェアを実装したテストマシンを用いて、前記ターゲットマシンの設定パラメータを決定する方法であって、
前記テストマシンの設定パラメータの値の変化に対する前記テストマシンの挙動を測定し、
前記設定パラメータの前記変化と、測定された前記挙動とから、前記テストマシンの挙動モデルを生成し、
前記設定パラメータの第１の値での前記ターゲットマシンの挙動と、前記設定パラメータの前記第１の値での前記挙動モデルの挙動とから、前記ターゲットマシンの挙動と前記挙動モデルの挙動との間の関係を特定し、
前記挙動モデルと前記関係とから、前記ターゲットマシンのための前記設定パラメータの第２の値を算出する、
処理を有する方法。
（付記７）
前記挙動モデルは、設定パラメータの値を入力とし、前記テストマシンの挙動の推定値を出力する、付記６記載の方法。
（付記８）
前記挙動は、前記ソフトウェアに含まれる１つ以上の関数の実行時間である、付記６又は７記載の方法。
（付記９）
前記設定パラメータは、ターゲットマシンのＣＰＵ又は前記テストマシンのＣＰＵの動作環境を設定するパラメータである、付記６ないし８のうちいずれか１項記載の方法。
（付記１０）
前記第２の値を算出する処理は、前記ターゲットマシン上でのソフトウェアを実行する時間の予測値を最小とするための、前記ターゲットマシンの前記設定パラメータの値を求める処理を含む、付記６ないし９のうちいずれか１項記載の方法。
（付記１１）
ターゲットマシン上で動作するソフトウェアを実装したテストマシンを用いて、前記ターゲットマシンの設定パラメータを決定する装置であって、
前記テストマシンの設定パラメータの値の変化に対する前記テストマシンの挙動を測定する挙動測定部と、
前記設定パラメータの前記変化と、測定された前記挙動とから、前記テストマシンの挙動モデルを生成する挙動モデル生成部と、
前記設定パラメータの第１の値での前記ターゲットマシンの挙動と、前記設定パラメータの前記第１の値での前記挙動モデルの挙動とから、前記ターゲットマシンの挙動と前記挙動モデルの挙動との間の関係を特定する関係特定部と、
前記挙動モデルと前記関係とから、前記ターゲットマシンのための前記設定パラメータの第２の値を算出するパラメータ値算出部、
を有する装置。
（付記１２）
前記挙動モデルは、設定パラメータの値を入力とし、前記テストマシンの挙動の推定値を出力する、付記１１記載の装置。
（付記１３）
前記挙動は、前記ソフトウェアに含まれる１つ以上の関数の実行時間である、付記１１又は１２記載の装置。
（付記１４）
前記設定パラメータは、ターゲットマシンのＣＰＵ又は前記テストマシンのＣＰＵの動作環境を設定するパラメータである、付記１１ないし１３のうちいずれか１項記載の装置。
（付記１５）
前記設定パラメータ値算出部は、前記ターゲットマシン上でのソフトウェアを実行する時間の予測値を最小とするための、前記ターゲットマシンの前記設定パラメータの値を求めるパラメータ最適化部を含む、付記１１ないし１４のうちいずれか１項記載の装置。
【符号の説明】
【００６５】
１０２  ターゲットマシン
１１２  テストマシン
１５０  パラメータチューニング装置
１６２  挙動測定部
１６４  挙動モデル生成部
１７２  関係特定部
１８２  パラメータ値算出部
【図１】
0005906844.tif 000007
【図２】
0005906844.tif 000008
【図３】
0005906844.tif 000009
【図４】
0005906844.tif 000010
【図５】
0005906844.tif 000011
【図６】
0005906844.tif 000012
【図７】
0005906844.tif 000013