(57)【要約】  【課題】  階層構成をもつ複数のプログラムから構成される多階層システムにおいて、各プログラムの最適な動作パラメータを求める。  【解決手段】  パラメータ設定部１０４は、各プログラム１１２の動作のパラメータ１１１を設定する。プログラム起動・停止部１０５は、各プログラム１１２を起動、停止する。性能情報計測部１０６は、多階層システム１１０の性能情報を計測する。実験制御部１０２は、パラメータ設定部１０４、プログラム起動・停止部１０５および性能情報計測部１０６を起動し、多階層システム１１０を稼動させる実験を行う。次パラメータセット決定部１０３は、性能情報の計測結果に対して次の実験に使用するパラメータの組合せを決定する。チューニング制御部１０１は、所定の終了条件を満たすまで実験制御部１０２および次パラメータセット決定部１０３を起動し、実験を繰り返す。【選択図】  図１
2005222343.tif 000002
【特許請求の範囲】
【請求項１】
階層構成をもつ複数のプログラムから構成される多階層システムの性能のチューニング制御システムであって、前記チューニング制御システムは、計算機によって実行されるプログラムの構成要素として、
前記多階層システムを構成する各プログラムの動作のパラメータを設定するパラメータ設定部と、前記各プログラムを起動、停止するプログラム起動・停止部と、前記多階層システムの性能情報を計測する性能情報計測部と、前記パラメータ設定部、前記プログラム起動・停止部および前記性能情報計測部を起動し、前記多階層システムを稼動させることによって実験する実験制御部と、前記性能情報の計測結果に対して次の実験に使用する前記パラメータの組合せである次パラメータセットを決定する次パラメータセット決定部と、所定の終了条件を満たすまで前記次パラメータセットを決定し前記実験を繰り返すように前記実験制御部および前記次パラメータセット決定部を制御するチューニング制御部とを有し、
前記次パラメータセット決定部は、前記性能情報が最適化されるように前記パラメータセットを決定することを特徴とするチューニング制御システム。
【請求項２】
前記多階層システムは、Ｗｅｂサーバ、アプリケーションサーバ及びデータベースサーバの各プログラムを有するＷｅｂシステムであることを特徴とする請求項１記載のチューニング制御システム。
【請求項３】
前記チューニング制御システムは、前記性能情報計測部を含み前記多階層システムに対して同時に複数のリクエストを発行することによって負荷をかけるプログラム構成要素として負荷かけツールを有することを特徴とする請求項１記載のチューニング制御システム。
【請求項４】
前記チューニング制御部がパラメータ数＋１個の初期パラメータセットを用いて初期実験を行うよう制御して各初期パラメータセットに対応する性能情報を取得した後に、前記次パラメータセット決定部は、取得した前記性能情報に滑降シンプレックス法を適用して前記性能情報を最適化するようなパラメータ空間上の１点に向かってパラメータセットを収束させることを特徴とする請求項１記載のチューニング制御システム。
【請求項５】
所定回数の前記実験によって最良のパラメータセットが変更されないとき、前記チューニング制御部は、前記最良のパラメータセットについてもう一度実験を行い、計測された性能情報と以前に計測された前記最良のパラメータセットに対応する性能情報との平均値を、前記最良のパラメータセットの性能情報として前記次パラメータセット決定部に制御を渡すことを特徴とする請求項１記載のチューニング制御システム。
【請求項６】
前記チューニング制御部は、前記パラメータ数＋１個より多い個数の前記初期パラメータセットを用いて前記初期実験を行うよう制御した後に、前記性能情報の良い順に前記パラメータ数＋１個の初期パラメータセットを選択して前記次パラメータセット決定部に制御を渡すことを特徴とする請求項４記載のチューニング制御システム。
【請求項７】
前記チューニング制御システムは、さらに前記多階層システムを構成するプログラム実行中に発生する不定期の処理が実行される時間帯を監視するプログラムを設け、前記実験制御部は、当該監視プログラムが報告する前記時間帯にかかる前記性能情報を性能計測の対象から除外することを特徴とする請求項１記載のチューニング制御システム。
【請求項８】
前記次パラメータセット決定部は、算出された前記次パラメータセットの各パラメータの値を所定の整数倍することによって前記次パラメータセットを補正することを特徴とする請求項４記載のチューニング制御システム。
【請求項９】
前記次パラメータセット決定部は、同一の最良点のパラメータセットが連続したとき、当該パラメータセットの各パラメータをパラメータ値に比べて小量だけランダムに増減するような補正をすることを特徴とする請求項４記載のチューニング制御システム。
【請求項１０】
階層構成をもつ複数のプログラムから構成される多階層システムの性能のチューニング制御方法であって、前記チューニング制御方法は、計算機によるプログラム実行によって実現され、
前記多階層システムを構成する各プログラムの動作のパラメータを設定するステップと、
前記各プログラムを起動するステップと、
前記多階層システムの性能情報を計測するステップと、
前記各プログラムを停止するステップと、
前記性能情報の計測結果に対して次の前記多階層システムの稼動に用いる前記パラメータの組合せである次パラメータセットを決定するステップとを有し、前記次パラメータセットを決定するステップは、前記性能情報が最適化されるように前記パラメータセットを決定するものとし、
所定の終了条件を満たすまで前記ステップを順に繰り返すことを特徴とするチューニング制御方法。
【請求項１１】
前記多階層システムは、Ｗｅｂサーバ、アプリケーションサーバ及びデータベースサーバの各プログラムを有するＷｅｂシステムであることを特徴とする請求項１０記載のチューニング制御方法。
【請求項１２】
前記多階層システムを構成する各プログラムが起動された後に、前記多階層システムに対して同時に複数のリクエストを発行することによって負荷をかけることを特徴とする請求項１０記載のチューニング制御方法。
【請求項１３】
前記パラメータを設定するステップは、最初にはパラメータ数＋１個の初期パラメータセットの各々を設定し、前記初期パラメータセットについて前記性能情報を計測し、前記初期パラメータセットについての前記性能情報を取得した後に、前記次パラメータセットを決定するステップは、取得した前記性能情報に滑降シンプレックス法を適用して前記性能情報を最適化するようなパラメータ空間上の１点に向かってパラメータセットを収束させるように前記次パラメータセットを決定することを特徴とする請求項１０記載のチューニング制御方法。
【請求項１４】
前記ステップを順に繰り返し実行している間に所定回数の前記多階層システムの稼動によって最良のパラメータセットが変更されないことを検出したとき、前記最良のパラメータセットについてもう一度前記多階層システムを稼動させ、計測された性能情報と以前に計測された前記最良のパラメータセットに対応する性能情報との平均値を、前記最良のパラメータセットの性能情報として前記次パラメータセットを決定するステップを実行することを特徴とする請求項１０記載のチューニング制御方法。
【請求項１５】
前記次パラメータセットを決定するステップは、最初にはパラメータ数＋１個より多い個数の前記初期パラメータセットの各々を設定し、前記初期パラメータセットについて前記性能情報を計測し、前記初期パラメータセットについての前記性能情報を取得した後に、前記性能情報の良い順に前記パラメータ数＋１個の初期パラメータセットを選択して前記次パラメータセットを決定するステップを実行することを特徴とする請求項１３記載のチューニング制御方法。
【請求項１６】
前記性能情報を計測するステップにおいて、前記多階層システムを構成するプログラム実行中に発生する不定期の処理が実行される時間帯を監視し、前記時間帯にかかる前記性能情報を性能計測の対象から除外することを特徴とする請求項１０記載のチューニング制御方法。
【請求項１７】
前記次パラメータセットを決定するステップは、算出された前記次パラメータセットの各パラメータの値を所定の整数倍することによって前記次パラメータセットを補正することを特徴とする請求項１３記載のチューニング制御方法。
【請求項１８】
前記次パラメータセットを決定するステップは、同一の最良点のパラメータセットが連続したとき、当該パラメータセットの各パラメータをパラメータ値に比べて小量だけランダムに増減するように補正をすることを特徴とする請求項１３記載のチューニング制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、階層構成をもつ複数のプログラムから構成される多階層システムの動作パラメータを最適化するチューニング方式に関するものである。
【背景技術】
【０００２】
企業の統廃合や様々な事業展開の積み重ねにより、それを支える企業情報システムは複雑になってきている。このような環境にあって、少ないコストで高いパフォーマンスを実現するためには、連携して動作する複数のプログラムがバランス良く動作するようにパフォーマンスチューニングを実施することが重要である。
【０００３】
プログラムの動作やハードウェアの動作を詳細に熟知したエキスパートであれば、システムを稼動させたときに計測可能な情報と、その計測情報にある特徴があったときに設定すべきパラメータのルールを予めファジィ推論ベースとして構築することでチューニングを実施することは可能である。例えば特許文献１は、このようなパフォーマンスチューニング方式を開示する。
【０００４】
しかし複雑化したシステム全体を熟知するようなエキスパートはなかなか存在しないし、存在したとしても、チューニングに必要な全てのルールを定義することは非常に困難である。
【０００５】
【特許文献１】特開平１１−２４９９３４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
複数のプログラムから構成される多階層システムに対して、各プログラムの最適な動作パラメータを見つけることは困難である。
【課題を解決するための手段】
【０００７】
本発明は、階層構成をもつ複数のプログラムから構成される多階層システムの性能のチューニング制御技術であって、この技術は、計算機によるプログラム実行によって実現され、多階層システムを構成する各プログラムの動作のパラメータを設定し、各プログラムを起動し、多階層システムの性能情報を計測し、各プログラムを停止した後に、性能情報の計測結果に対して次の多階層システムの稼動に用いるパラメータの組合せである次パラメータセットを決定し、この次パラメータセットを決定するステップは、性能情報が最適化されるようにパラメータセットを決定するものとし、所定の終了条件を満たすまで上記のステップを順に繰り返すチューニング制御技術を特徴とする。
【発明の効果】
【０００８】
本発明によれば、最適な動作パラメータを求めるのが困難な複数のプログラムから構成される多階層システムであっても、誰でも容易に最適なパラメータセットを求めることができる。
【発明を実施するための最良の形態】
【０００９】
図１は、本実施形態のチューニングシステムの構成図である。多階層システム１１０は、チューニングの対象とするシステムであり、そのシステムの構成要素であるプログラム１１２−１，１１２−２，…１１２−ｎが稼動する。各プログラム１１２−１〜１１２−ｎは、そのプログラムの動作を設定するための動作パラメータであるパラメータ１１１−１〜１１１−ｎを有する。
【００１０】
これらパラメータをチューニングするためのチューニング制御システムは、チューニング制御部１０１、実験制御部１０２、次パラメータセット決定部１０３、パラメータ設定部１０４、プログラム起動・停止部１０５および性能情報計測部１０６の各プログラムを含む。パラメータ設定部１０４は、各パラメータ１１１−１〜１１１−ｎに値を設定する。プログラム起動・停止部１０５は、多階層システム１１０のプログラム１１２−１〜１１２−ｎを起動、停止するプログラムである。性能情報計測部１０６は、多階層システム１１０に対してリクエストを送出するなどして稼動させ、その性能情報を計測する。実験制御部１０２は、パラメータ設定部１０４、プログラム起動・停止部１０５および性能情報計測部１０６を動作させて、実験を実施するプログラムである。次パラメータセット決定部１０３は、最適化アルゴリズムを利用し、計測した性能情報に基いて次に実験すべきパラメータを求めるプログラムである。チューニング制御部１０１は、実験制御部１０２及び次パラメータセット決定部１０３を制御してチューニングのための実験を遂行するプログラムである。以下プログラム１１２−１〜１１２−ｎのいずれかを指すときには、プログラム１１２のように表記することがある。他の構成要素についても同様である。
【００１１】
プログラム１１２−１〜１１２−ｎ及びチューニング制御システム側の１０１から１０６までの構成要素は、計算機で稼動可能なプログラムであり、１つ又は複数の計算機に配置することができる。図２は、使用される計算機２００のハードウェア構成を示す図である。ハードディスク２０３は、各プログラム又はパラメータなどの各種データを保存する。中央処理装置２０２は、これらハードディスク２０３に蓄えた各種データを必要に応じてメモリ２０１に読み込む。プログラムを実行する場合も、プログラムをまずメモリ２０１に読み込み、中央処理装置２０２により実行する。ビデオメモリ２０４は、表示に用いられるデータを格納するメモリであり、ビデオメモリ２０４上のデータの変更は、表示装置２０５に反映される。
【００１２】
図３にチューニングシステムのシーケンス図を示す。チューニング制御部１０１は、実験制御部１０２に実験要求を行う。実験制御部１０２は、パラメータ設定部１０４にパラメータ設定要求を行う。パラメータ設定部１０４は、各構成要素のプログラム１１２−１〜１１２−ｎが管理する設定ファイルなどにパラメータを設定する。次に実験制御部１０２は、プログラム起動・停止部１０５に対してプログラム起動要求を行い、構成要素のプログラム１１２−１〜１１２−ｎを起動する。次に実験制御部１０２は、性能情報計測部１０６に性能情報計測要求を発行する。性能情報計測部１０６は、プログラム１１２−１〜１１２−ｎを稼動させることによって多階層システム１１０の性能情報を計測する。ここで多階層システム１１０は、プログラム１１２−１〜１１２−ｎが実行される１台またはそれ以上の計算機２００を稼動させ実際の処理を行う。実験制御部１０２は、計測した性能情報を取得する。次に実験制御部１０２は、プログラム起動・停止部１０５に対してプログラム停止要求を行い、プログラム起動・停止部１０５は、構成要素のプログラムを停止する。チューニング制御部１０１は、次パラメータ決定部１０３に対して次パラメータを要求する。次パラメータセット決定部１０３は、計測した性能情報を用いて次に実験すべきパラメータセットを求めてチューニング制御部１０１に返す。チューニング制御部１０１は、このパラメータを用いて再度実験要求からの処理を繰り返す。チューニング制御部１０１は、終了条件を満たすまで実験を繰り返すことによって性能計測値が最も良くなるパラメータセットを求める。
【実施例１】
【００１３】
図４は、Ｗｅｂシステムに対して性能のチューニングを実施するシステムの構成図である。システムは、Ｗｅｂシステム４４０、チューニング制御プログラム４０２を稼動させる計算機４０１および負荷かけ計算機群４２０から構成される。Ｗｅｂシステム４４０は、計算機４５０、計算機４６０および計算機４７０から構成され、これらの計算機はそれぞれネットワークで接続される。計算機４５０上ではＷｅｂサーバ４５１が稼動し、計算機４６０上ではＡＰ（アプリケーション）サーバ４６１が稼動し、計算機４７０上ではＤＢ（データベース）サーバ４７１が稼動する。この例では、Ｗｅｂシステム４４０が３階層の多階層システム１１０に相当し、Ｗｅｂサーバ４５１がプログラム１１２−１に、ＡＰサーバ４６１がプログラム１１２−２に、ＤＢサーバ４７１がプログラム１１２−３に各々相当する。これらのプログラムが連携して動作するＷｅｂシステム４４０がチューニング対象である。負荷かけ計算機群４２０は、計算機４２１−１〜４２１−３から構成される。計算機４２１−１〜４２１−３は、各々負荷かけツール４３１−１〜４３１−３の各プログラムを稼動させる。負荷かけツール４３１−１〜４３１−３の各々は、Ｗｅｂシステム４４０のＷｅｂサーバ４５１へ同時に多数のリクエストを発行してＷｅｂシステム４４０の各プログラムに負荷をかけ、レスポンスを受け取るまでのレスポンスの状況から性能情報を計測する。すなわち負荷かけツール４３１−１〜４３１−３の各々は、性能情報計測部１０６を含む。チューニング制御プログラム４０２は、負荷かけ計算機群４２０およびＷｅｂシステム４４０を制御する。チューニング制御プログラム４０２は、チューニング制御部１０１、実験制御部１０２、次パラメータセット決定部１０３、パラメータ設定部１０４およびプログラム起動・停止部１０５を含む。
【００１４】
実施例１では、チューニングの対象とするパラメータとして、Ｗｅｂサーバ４５１の最大同時処理数、ＡＰサーバ４６１の最大同時処理数、およびＡＰサーバ４６１がＤＢサーバ４７１とのコネクションを保持する最大プール数の3つとする。最大同時処理数は、リクエスト発行に対応してそのプログラムで同時に実行されるプロセス、スレッドまたはタスクの最大数である。チューニング制御プログラム４０２は、Ｗｅｂシステム４４０の性能を最適にするようなパラメータの組合せ（パラメータセット）を求める。本実施例は、最適化アルゴリズムとして、滑降シンプレックス法を用いる。
【００１５】
図５は、チューニング制御プログラム４０２の動作を設定する設定ファイルのデータ例を示す図である。最大実験回数(max_experiment_times)は、実験を打切るときの最大実施回数である。パラメータセットは、本実施例では３次元のパラメータ空間上の点によって表現できる。距離(distance)は、最良点のパラメータセットと他の３つのパラメータセットの各々との間の最適化されたときの距離を設定する。この３つの距離がすべてdistanceの設定値以内になったとき、性能情報が最適値に収束したと判断される。初期パラメータセット(init_param.1〜4)は、実験開始時に与えられるパラメータであり、ここではパラメータ数＋１だけ用意される。パラメータセットの値は、上記の３つのパラメータを順に設定する。設定ファイルは、計算機４０１の記憶装置に格納される。
【００１６】
図６は、チューニング制御プログラム４０２の処理手順を示すＰＡＤ（problem analysis diagram
）である。チューニング制御プログラム４０２のチューニング制御部１０１は、まず設定ファイルから初期パラメータセットを読み込む（ステップ６０１）。次にチューニング制御部１０１は、ステップ６０３の処理をすべての初期パラメータセットについて繰り返し、性能情報を取得する（ステップ６０２）。ここでは４つの初期パラメータセットがあるからステップ６０３を４回繰り返す。性能情報は、スループット又は平均レスポンスタイムである。スループットは、単位時間に実行できるリクエストの数である。平均レスポンスタイムは、負荷かけツール４３１がリクエストを発行してからレスポンスを受け取るまでの所要時間の平均値である。ステップ６０３では、チューニング制御部１０１は、実験制御部１０２を呼び出す。実験制御部１０２は、パラメータ設定部１０４を起動し、Ｗｅｂシステム４４０に初期パラメータセットを設定し、Ｗｅｂシステム４４０を稼動して性能情報を取得する実験を行う。
【００１７】
次にチューニング制御部１０１は、終了条件に達するまでステップ６０５とステップ６０６の処理を繰り返し実行するよう制御する（ステップ６０４）。ここで終了条件とは、上記の距離の条件を満足するか、または実験回数が最大実験回数に達することである。ステップ６０５では、チューニング制御部１０１は、次パラメータセット決定部１０３を起動する。次パラメータセット決定部１０３は、先の実験結果から次の実験のためのパラメータセットを決定する。パラメータセットの決定には滑降シンプレックス法が適用される。ステップ６０６では、ステップ６０３と同様に、チューニング制御部１０１は、実験制御部１０２を呼び出す。実験制御部１０２は、パラメータ設定部１０４を起動し、決定された次パラメータセットをＷｅｂシステム４４０に設定し、Ｗｅｂシステム４４０を稼動して性能情報を取得する実験を行う。終了条件に達したとき、チューニング制御部１０１は、こまで計測した中で性能情報が最良であったパラメータセットを最適なパラメータセットとして表示装置２０５に出力する（ステップ６０７）。
【００１８】
図７は、ステップ６０３およびステップ６０６の処理のシーケンスを示す図である。実験制御部１０２は、パラメータ設定部１０４を介してＷｅｂサーバ４５１、ＡＰサーバ４６１およびＤＢサーバ４７１に各々パラメータを設定する。次に実験制御部１０２は、プログラム起動・停止部１０５を介してＤＢサーバ４７１、ＡＰサーバ４６１およびＷｅｂサーバ４５１の順で各プログラムを起動する。次に実験制御部１０２は、負荷かけツール４３１−１〜４３１−３に対して負荷かけを要求する。負荷かけツール４３１−１〜４３１−３は、Ｗｅｂシステム４４０に繰り返しリクエストを発行する。各負荷かけツール４３１は、複数スレッドを用いてほぼ同時に複数のリクエストを発行する。性能情報計測部１０６は、返ってきたレスポンスの時刻から性能情報を算出し、算出された性能情報を実験制御部１０２に報告する。次に実験制御部１０２は、プログラム起動・停止部１０５を介してＷｅｂサーバ４５１、ＡＰサーバ４６１およびＤＢサーバ４７１の各プログラムを停止する。後述するようにステップ６０５で複数の次パラメータセットが決定された場合には、次パラメータセットの数だけ実験を繰り返す。
【００１９】
図８は、ステップ６０５の次パラメータセットを決定する処理の手順を示すＰＡＤである。次パラメータセット決定部１０３は、実験に用いたパラメータセット及び計測した性能情報を取得する（ステップ８０１）。以下に述べるように収縮の場合には、複数のパラメータセットと各々に対応する性能情報を取得する。次に次パラメータセット決定部１０３は、パラメータセット群の各パラメータセットを性能情報が良い順に配列に格納する（ステップ８０２）。従って配列の先頭には最良点のパラメータセットが配置される。性能情報がより良いとは、スループットの場合にはスループットがより大きいことである。レスポンスタイムの場合にはレスポンスタイムがより小さいことである。ここでパラメータセット群とは、滑降シンプレックス法で用いるパラメータ数＋１個のパラメータセットのことである。今の例ではパラメータセット群は４個のパラメータセットから成る。すでに配列にパラメータセット群が格納されている場合には、この例では既存のパラメータセット群とステップ８０１で取得したパラメータセットのうち性能情報が良いもの４個を選択してこの配列に再格納する。次に次パラメータセットを保持するバッファを作成する（ステップ８０３）。次に次パラメータセット決定部１０３は、実験の種類を取得し、そのバッファに格納する（ステップ８０４）。初期状態における実験の種類は、「null」が格納される。
【００２０】
実験の種類が「null」であった場合（ステップ８１０）、次パラメータセット決定部１０３は、実験の種類を「反射」に変更し（ステップ８１１）、後述の手順によってパラメータ空間上の今対象としている点の２倍反射の点を求める（ステップ８１２）。このときの引数は−１．０である。次に次パラメータセットのバッファに反射の位置を格納する（ステップ８１３）。次に次パラメータセット決定部１０３は、チューニング制御部１０１に次パラメータセットを返す（ステップ８６０）。
【００２１】
実験の種類が「反射」であった場合（ステップ８２０）、反射の位置の性能情報が最悪点よりも良い場合（ステップ８２１ＹＥＳ）、次パラメータセット決定部１０３は、最悪点を反射の位置の点に置き換える（ステップ８２３）。反射の位置の性能情報が最良点よりも良い場合（ステップ８２３ＹＥＳ）、次パラメータセット決定部１０３は、実験の種類を「２倍反射」に変更する（ステップ８２４）。次に後述の手順によってパラメータ空間上の４点のうちの最悪点の２倍反射の位置を求める（ステップ８１２）。このときの引数は−２．０である。次に次パラメータセット決定部１０３は、次パラメータセットのバッファに２倍反射の位置を格納する（ステップ８２５）。
【００２２】
反射の位置の性能情報が最良点よりも悪い場合（ステップ８２３ＮＯ）で、反射の位置の性能情報が２番目に悪い点より悪い場合（ステップ８２６ＹＥＳ）、次パラメータセット決定部１０３は、実験の種類を「内側反射」に変更する（ステップ８２７）。次に後述の手順によってパラメータ空間上の４点のうちの最悪点の内側反射の位置を求める（ステップ８１２）。このときの引数は０．５である。次に次パラメータセット決定部１０３は、次パラメータセットのバッファに内側反射の位置を格納する（ステップ８２８）。反射の位置の性能情報が２番目に悪い点と同じかより良い場合（ステップ８２６ＮＯ）、実験の種類を「null」に変更し、もう一度、次パラメータセットの決定（ステップ６０５）を実行する。
【００２３】
実験の種類が「２倍反射」であった場合（ステップ８３０）、２倍反射の位置の性能情報が最悪点よりも良いならば（ステップ８３１）、次パラメータセット決定部１０３は、最悪点を２倍反射の位置の点に置き換える（ステップ８３３）。次に次パラメータセット決定部１０３は、実験の種類を「null」に変更し、もう一度、次パラメータセットの決定（ステップ６０５）を実行する。
【００２４】
実験の種類が「内側反射」であった場合（ステップ８４０）、内側反射の位置の性能情報が最悪点より良いならば（ステップ８４１ＹＥＳ）、次パラメータセット決定部１０３は、最悪点を内部反射の位置の点に置き換える（ステップ８４２）。次に次パラメータセット決定部１０３は、実験の種類を「null」に変更し（ステップ８４３）、もう一度、次パラメータセットの決定（ステップ６０５）を実行する。内側反射の位置の性能情報が最悪点よりも悪ければ（ステップ８４１ＮＯ）、次パラメータセット決定部１０３は、実験の種類を「収縮」に変更する（ステップ８４４）。次に後述の手順によってパラメータ空間上の４点から収縮の位置を求める（ステップ８４５）。このときの引数は０．５である。次に次パラメータセット決定部１０３は、次パラメータセットのバッファに収縮の点の位置(複数)を格納する（ステップ８４６）。
【００２５】
実験の種類が「収縮」であった場合（ステップ８５０）、次パラメータセット決定部１０３は、最良点以外の点を収縮の位置の点に置き換える（ステップ８５１）。次に次パラメータセット決定部１０３は、実験の種類を「null」に変更し（ステップ８５２）、もう一度、次パラメータセットの決定（ステップ６０５）を実行する。
【００２６】
各処理ステップから最後のステップ８６０に達したとき、次パラメータセット決定部１０３は、チューニング制御部１０１に次パラメータセットを返す。
【００２７】
図９は、ステップ８１２の反射の位置を求める処理の手順を示すＰＡＤである。ここでは、簡単のためにパラメータセット群が(a1,b1,c1) (a2,b2,c2) (a3,b3,c3) (a4,b4,c4)で、この中の最悪点が(a2,b2,c2)であった場合について説明する。引数としてfacを取る。これは反射の距離を表す引数であり、「反射」の位置の場合は−１．０、「２倍反射」の場合は−２．０、「内側反射」の場合は０．５を取る。以下の手順で計算する。
【００２８】
a=a1+a2+a3+a4                                    （数１）
b=b1+b2+b3+b4                                    （数２）
c=c1+c2+c3+c4                                    （数３）
fac1=(1.0-fac)/3      (3はパラメータ数)          （数４）
fac2=fac1-fac                                    （数５）
ar=a×ac1-a2×fac2                                （数６）
br=b×fac1-b2×fac2                                （数７）
cr=c×fac1-c2×fac2                                （数８）
(ar,br,cr)が反射の位置の点になる。
【００２９】
図１０は、ステップ８４５の収縮の位置を求める処理の手順を示すＰＡＤである。ここでは、簡単のためにパラメータセット群が(a1,b1,c1) (a2,b2,c2) (a3,b3,c3) (a4,b4,c4)で、この中の最良点が(a1,b1,c1)であった場合について説明する。引数として、facを取る。「収縮」の場合は、facは0.5となる。
【００３０】
ar1=fac×(a2+a1)                                    （数９）
br1=fac×(b2+b1)                                    （数１０）
cr1=fac×(c2+c1)                                  （数１１）
ar2=fac×(a3+a1)                                    （数１２）
br2=fac×(b3+b1)                                    （数１３）
cr2=fac×(c3+c1)                                    （数１４）
ar3=fac×(a4+a1)                                    （数１５）
br3=fac×(b4+b1)                                    （数１６）
cr3=fac×(c4+c1)                                    （数１７）
以上から求まった(ar1,br1,cr1) (ar2,br2,cr2) (ar3,br3,cr3)の３点が収縮の位置となる。
【実施例２】
【００３１】
実施例１において、複数回の実験に亘って最良点が同じ点であった場合、最良点が本当の最良点か、実験の結果として偶然良い結果が出てしまったのか不明というケースがある。実施例２は、その最良点のパラメータセットを用いてもう一度実験し、計測した性能情報と前回の最良点の性能情報の平均を、その点の最良点とするものである。
【００３２】
図１１は、実施例２のチューニング制御プログラム４０２の動作を設定する設定ファイルのデータ例を示す図である。実施例１の設定ファイルの例と比べて最良点であり続けた回数(top_times)という設定項目が加わっている。
【００３３】
図１２は、実施例２のチューニング制御プログラム４０２の処理手順を示すＰＡＤである。ステップ６０１〜６０３の処理の後に、チューニング制御部１０１は、前回最良点のパラメータセット及び前回性能情報を格納するバッファを用意する（ステップ１２０１）。次にチューニング制御部１０１は、最良点であり続けた回数を計数するカウンタを用意する（ステップ１２０２）。カウンタの初期値は０である。次にチューニング制御部１０１は、終了条件に達するまでステップ１２０３〜１２０７（ステップ６０６も含む）の処理を繰り返し実行するよう制御する（ステップ６０４）。
【００３４】
前回の最良点がある場合に、前回の最良点と今回の最良点が同じであれば（ステップ１２０３ＹＥＳ）、チューニング制御部１０１は、カウンタに1を加算する（ステップ１２０４）。次にカウンタが回数（top_times）より大きければ（ステップ１２０５）、次パラメータセットとして最良点のパラメータセットを再び次の実験に採用する（ステップ１２０６）。ステップ６０６では、チューニング制御部１０１は、次パラメータセット決定部１０３を起動し、同一パラメータセットの実験をもう一度行う。実験の結果として性能情報が前回と同じとは限らない。次にチューニング制御部１０１は、前回の性能情報と今回の性能情報の平均を取り、今回実験したパラメータセットの性能情報とする（ステップ１２０７）。前回の最良点がないか、前回の最良点と今回の最良点が異なれば（ステップ１２０３ＮＯ）、チューニング制御部１０１は、バッファ中の前回の最良点のパラメータセット及び前回の性能情報を今回の最良点のパラメータセット及び性能情報に置き換える（ステップ１２０８）。前回の最良点がなければ、単にバッファに今回の最良点のパラメータセットとその性能情報を格納するだけである。次にチューニング制御部１０１は、カウンタを０に初期化する（ステップ１２０９）。
【００３５】
実施例２によって滞留していた一時的な最良点から脱出し、本当の最良点に向かうことができる場合がある。
【実施例３】
【００３６】
実施例３は、初期実験をパラメータ数＋１回より多く行うことによって、最適解への収束を速くすることを目指すチューニング方法の実施例である。
【００３７】
図１３は、実施例３のチューニング制御プログラム４０２の動作を設定する設定ファイルのデータ例を示す図である。この例は、初期パラメータセットとして、init_param.1〜init_param.10までの１０個のパラメータセットを設定する。
【００３８】
図１４は、実施例３のチューニング制御プログラム４０２の処理手順を示すＰＡＤである。チューニング制御部１０１は、ステップ６０３の処理をすべての初期パラメータセットについて繰り返し、性能情報を取得する（ステップ６０２）。ここでは１０個の初期パラメータセットがあるからステップ６０３を１０回繰り返す。次にチューニング制御部１０１は、性能情報が良い順にパラメータ数＋１個のパラメータセットを抜き出し、これらをパラメータセット群とする。以下、ステップ６０４〜６０７は、実施例１と同様である。
【実施例４】
【００３９】
JavaVMのような実行基盤の下で多階層システム１１０のプログラム１１２が実行される場合に、不要部分の整理（Garbage Collection（ＧＣ））のような不定期の処理が実行されることがある。実施例４は、このような不定期の処理が実行される時間帯にかかる性能計測結果をサンプリング対象から除外する実施例である。（注）Javaは、米国Sun Microsystems社の登録商標である。
【００４０】
実施例４は、チューニング対象のＷｅｂシステム４４０のうち、ＡＰサーバ４６１がJavaVMを利用し、不定期にＧＣが発生する場合を例にとる。Ｗｅｂシステム４４０は、ＧＣ監視機能をもつプログラムを設け、JavaVMからＧＣが発生した時刻、終了した時刻を計測し、その情報を記憶装置に保持する。
【００４１】
図１５は、実施例４のステップ６０３およびステップ６０６の処理のシーケンスを示す図である。ＧＣ監視プログラム１５００は、ＧＣの発生時刻および終了時刻を計測し、その情報を保持する。負荷かけツール４３１は、リクエストの送出の繰り返し実行が終ったとき、実験制御部１０２に各リクエストの実行情報を返す。この実行情報は、各リクエストの発生時刻および返ってきたレスポンスの時刻を含んでいる。次に実験制御部１０２は、各リクエストの実行情報とＧＣの発生時刻、終了時刻からＧＣの発生していない時間帯のリクエストの実行情報のみから性能情報を作成する。
【実施例５】
【００４２】
実施例５は、次パラメータセット決定部１０３が導き出すパラメータの値を２の倍数、３の倍数というように特定の数の倍数となるように補正する実施例である。これによってパラメータセットは早く最適解付近の解に収束することが可能となる。
【００４３】
図１６は、実施例５のチューニング制御プログラム４０２の動作を設定する設定ファイルのデータ例を示す図である。この例は、実施例１のデータ例にパラメータの取り得る値の粒度(param_step)を追加する。この例は粒度を３とするので、パラメータは３の倍数のみを取り得る。ただしこの例では初期パラメータは、実施例１と同じデータを用いており、３の倍数に限定していない。
【００４４】
次パラメータセット決定部１０３は、チューニング制御部１０１に次のパラメータセットを返す前に、パラメータがparam_stepで指定された値の倍数となるように補正する。その補正方法は、例えば算出されたパラメータセットの各パラメータの値をparam_stepで割った後に四捨五入又は小数点以下切捨てなどをして整数にした後、その値にparam_stepを掛けることによって次パラメータの値を求めるものである。あるいはその他の例として、算出されたパラメータセットの各パラメータの値をparam_stepで割って得られた余りを元の値から引くという方法もある。
【実施例６】
【００４５】
実施例６は、次パラメータセット決定部１０３が導き出すパラメータセットが最良点のパラメータセットと同じであったとき、そのパラメータセットの各パラメータの値をランダムに微小量だけ増減するように補正する実施例である。微小量は例えば＋１もしくは−１などである。これによって最良点付近を詳細に探索することが可能となる。
【００４６】
図１７は、実施例６の次パラメータセットを決定する処理（ステップ６０５）の手順を示すＰＡＤである。次パラメータセット決定部１０３は、ステップ８６０の処理の前に、次パラメータセットと最良点のパラメータセットが同じ場合（ステップ１７０１）、次パラメータセットのすべての点のパラメータ値をランダムに＋１もしくは−１増減する処理を行う（ステップ１７０２）。
【００４７】
本実施形態によれば、多階層システムの運用を開始する前、ハードウェアのリプレースなどの構成変更時、稼動するアプリケーションの変更時などに、誰でも容易に最適なチューニングを行うことが可能となる。本発明は、最近、重要度が増してきているＷｅｂシステムのチューニングにも適用できる。チューニングの対象とするパラメータとして、Ｗｅｂサーバ、ＡＰサーバ、ＤＢサーバの最大同時処理数のほかに、各サーバの保持するキューに関して最大キュー数をチューニングすることも可能である。
【図面の簡単な説明】
【００４８】
【図１】実施形態のチューニングシステムの構成図である。
【図２】計算機のハードウェア構成を示す図である。
【図３】チューニングのシーケンスを示す図である。
【図４】Ｗｅｂシステムをチューニングする場合のシステム構成図である。
【図５】チューニング制御プログラムが用いる設定ファイルの例を示す図である。
【図６】実施例１のチューニング制御プログラムの処理手順を示すＰＡＤである。
【図７】実施例１の実験制御部による処理のシーケンスを示す図である。
【図８】実施例１の次パラメータセットを決定する処理の手順を示すＰＡＤである。
【図９】反射の位置を求める処理の手順を示すＰＡＤである。
【図１０】収縮の位置を求める処理の手順を示すＰＡＤである。
【図１１】実施例２のチューニング制御プログラムの設定ファイルの例を示す図である。
【図１２】実施例２のチューニング制御プログラムの処理手順を示すＰＡＤである。
【図１３】実施例３のチューニング制御プログラムの設定ファイルの例を示す図である。
【図１４】実施例３のチューニング制御プログラムの処理手順を示すＰＡＤである。
【図１５】実施例４の実験制御部による処理のシーケンスを示す図である。
【図１６】実施例５のチューニング制御プログラムの設定ファイルの例を示す図である。
【図１７】実施例６の次パラメータセットを決定する処理の手順を示すＰＡＤである。
【符号の説明】
【００４９】
１０１：チューニング制御部、１０２：実験制御部、１０３：次パラメータセット決定部、１０４：パラメータ設定部、１０５：プログラム起動・停止部、１０６：性能情報計測部、１１０：多階層システム、１１１−１〜１１１−ｎ：パラメータ、１１２−１〜１１２−ｎ：プログラム、４０２：チューニング制御プログラム、４４０：Ｗｅｂシステム、４３１−１〜４３１−３：負荷かけツール。
【図１】
2005222343.tif 000003
【図２】
2005222343.tif 000004
【図３】
2005222343.tif 000005
【図４】
2005222343.tif 000006
【図５】
2005222343.tif 000007
【図６】
2005222343.tif 000008
【図７】
2005222343.tif 000009
【図８】
2005222343.tif 000010
【図９】
2005222343.tif 000011
【図１０】
2005222343.tif 000012
【図１１】
2005222343.tif 000013
【図１２】
2005222343.tif 000014
【図１３】
2005222343.tif 000015
【図１４】
2005222343.tif 000016
【図１５】
2005222343.tif 000017
【図１６】
2005222343.tif 000018
【図１７】
2005222343.tif 000019