(57)【要約】【課題】単体のCPUで実行されているアプリケーションの応答時間を推定する。【解決手段】学習用計算機で実行するアプリケーションに対して外部からリクエストを送信し、その結果を受信するまでの応答時間を計測すると共に、学習用計算機の動作状態を示すデータ系列を複数の動作状態について取得する。学習用計算機は応答時間を目的変数としデータ系列を説明変数とする回帰分析を行い、回帰関数、推定誤差を求める。運用系計算機はその動作状態を示すデータ系列を取得し、そのデータ系列を回帰関数に適用して応答時間を推定する。推定した応答時間に応じて推定の際に用いるデータ系列、回帰関数等を変更する。【選択図】図１
2018010562.tif 000002
【特許請求の範囲】
【請求項１】
応答時間測定用計算機、学習用計算機、運用系計算機を備え、
前記学習用計算機及び前記運用系計算機はコンピュータプログラムである監視対象プログラムを実行可能であり、
前記応答時間測定用計算機は、
前記学習用計算機上で実行中の前記監視対象プログラムが処理するための、複数のリクエストを発生するための手段である疑似負荷発生手段、及び、
前記学習用計算機上で前記監視対象プログラムが前記複数のリクエストを処理するために要した時間である応答時間を、リクエスト毎に測定するための手段である応答時間計測手段を備え、
前記学習用計算機は、
前記学習用計算機上で実行中の前記監視対象プログラムが前記複数のリクエストを処理する際の前記学習用計算機の一の動作状態に係る測定値を、リクエスト毎に測定するための手段である学習用モニタリング手段、及び、
前記応答時間を目的変数とし、前記測定値を説明変数に含む回帰分析を実行して、回帰関数の係数と、回帰関数の推定誤差とを含む回帰分析結果を算出するための手段である回帰分析手段を備え、
前記運用系計算機は、
前記運用系計算機上で前記監視対象プログラムを実行しているときの、前記運用系計算機の一の動作状態に係る測定値を、リクエスト毎に測定するための手段である運用系モニタリング手段、及び、
前記運用系モニタリング手段が測定した、前記運用系計算機の一の動作状態に係る測定値を、前記回帰分析手段が求めた、当該一の動作状態に係る回帰分析結果に適用して、前記運用系計算機の応答時間の推定値を算出するための手段である応答時間推定手段を備え、
前記運用系計算機は、前記推定値に基づいて、前記応答時間推定手段が用いる測定値、回帰分析結果を変更する
コンピュータシステム。
【請求項２】
前記学習用モニタリング手段は、前記測定値として、互いに異なる第１及び第２の動作状態に係る第１及び第２の測定値を測定し、
前記回帰分析手段は、前記応答時間を目的変数とし、前記第１の測定値を説明変数に含む回帰分析を実行して、第１の回帰分析結果を算出し、前記応答時間を目的変数とし、前記第２の測定値を説明変数に含む回帰分析を実行して、第２の回帰分析結果を算出し、
前記運用系モニタリング手段は、前記第１の測定値及び前記第２の測定値を前記運用系計算機について測定し、
前記応答時間推定手段は、前記運用系計算機の前記第１の測定値を前記第１の回帰分析結果に適用して行う第１の推定方法と、前記運用系計算機の前記第２の測定値を前記第２の回帰分析結果に適用して行う第２の推定方法とのいずれかを用いて、前記推定値を算出し、
前記運用系計算機は切り替え手段を備え、前記切り替え手段は、前記運用系計算機の負荷状態に応じて、前記応答時間推定手段が用いる推定方法を、前記第１の推定方法と前記第２の推定方法の間で切り替える
請求項１に記載のコンピュータシステム。
【請求項３】
前記学習用計算機は、
前記学習用計算機の一の動作状態と、当該一の動作状態を測定するためのコストであるデータ取得コストとの関連付けを、複数の動作状態について記憶するための手段であるデータ取得コスト記憶手段、及び、
前記回帰分析手段が算出した回帰分析結果と、前記データ取得コスト記憶手段が記憶する前記データ取得コストとを、動作状態に基づいて関連付けたモニタリングパターン候補を作成して、その一部乃至全部をモニタリングパターンとして出力するための手段であるモニタリングパターン作成手段を備え、
前記運用系計算機は前記モニタリングパターンを記憶するための手段であるモニタリングパターン記憶手段を備え、
前記切り替え手段は、前記運用系計算機の負荷状態と前記データ取得コストとに基づいて、前記モニタリングパターン記憶手段が記憶する前記モニタリングパターンのいずれかを選択することにより、前記応答時間推定手段が用いる推定方法を切り替える
請求項２に記載のコンピュータシステム。
【請求項４】
前記モニタリングパターン作成手段は、前記モニタリングパターン候補の中からパレート最適解集合を選択する手段を備える請求項３に記載のコンピュータシステム。
【請求項５】
前記切り替え手段は、現に用いている推定方法によって算出した前記推定値を、前記運用系計算機の負荷状態を示す指標として用いる、請求項２乃至請求項４のいずれかに記載のコンピュータシステム。
【請求項６】
前記学習用計算機は、前記学習用モニタリング手段が出力する測定値の一部を選択して前記回帰分析手段に渡すための手段である推定元データ選択手段を備える、請求項１乃至請求項５のいずれかに記載のコンピュータシステム。
【請求項７】
応答時間測定用計算機、学習用計算機、運用系計算機を備えるコンピュータシステムで行う方法であって、
前記学習用計算機及び前記運用系計算機はコンピュータプログラムである監視対象プログラムを実行可能であり、
前記応答時間測定用計算機によって、
前記学習用計算機上で実行中の前記監視対象プログラムが処理するための、複数のリクエストを発生する段階である疑似負荷発生段階、及び、
前記学習用計算機上で前記監視対象プログラムが前記複数のリクエストを処理するために要した時間である応答時間を、リクエスト毎に測定する段階である応答時間計測段階
を実行し、
前記学習用計算機によって、
前記学習用計算機上で実行中の前記監視対象プログラムが前記複数のリクエストを処理する際の前記学習用計算機の一の動作状態に係る測定値を、リクエスト毎に測定する段階である学習用モニタリング段階、及び、
前記応答時間を目的変数とし、前記測定値を説明変数に含む回帰分析を実行して、回帰関数の係数と、回帰関数の推定誤差とを含む回帰分析結果を算出する段階である回帰分析段階
を実行し、
前記運用系計算機によって、
前記運用系計算機上で前記監視対象プログラムを実行しているときの、前記運用系計算機の一の動作状態に係る測定値を、リクエスト毎に測定する段階である運用系モニタリング段階、及び、
前記運用系モニタリング段階で測定した、前記運用系計算機の一の動作状態に係る測定値を、前記回帰分析段階で求めた、当該一の動作状態に係る回帰分析結果に適用して、前記運用系計算機の応答時間の推定値を算出する段階である応答時間推定段階
を実行し、
前記運用系計算機は、前記推定値に基づいて、前記応答時間推定段階で用いる測定値、回帰分析結果を変更する
プログラムの応答時間の推定方法。
【請求項８】
自計算機が実行中の監視対象プログラムが複数のリクエストを処理する際の、自計算機の一の動作状態に係る測定値を、リクエスト毎に測定するための手段である学習用モニタリング手段、及び、
自計算機上で前記監視対象プログラムが前記複数のリクエストを処理するために要した時間である応答時間を目的変数とし、前記測定値を説明変数に含む回帰分析を実行して、回帰関数の係数と、回帰関数の推定誤差とを含む回帰分析結果を算出するための手段である回帰分析手段
を備える計算機。
【請求項９】
自計算機上で監視対象プログラムを実行しているときの、自計算機の一の動作状態に係る測定値を、リクエスト毎に測定するための手段である運用系モニタリング手段、及び、
前記運用系モニタリング手段が測定した、自計算機の一の動作状態に係る測定値を、他の計算機が求めた、当該一の動作状態に係る回帰分析結果に適用して、自計算機の応答時間の推定値を算出するための手段である応答時間推定手段を備え、
前記推定値に基づいて、前記応答時間推定手段が用いる測定値、回帰分析結果を変更する計算機。
【請求項１０】
請求項８または請求項９に記載の計算機としてコンピュータを動作させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ上で実行中のプログラムが外部からのリクエストに応答するために要する時間の推定に関する。本発明は、特に、コンピュータの負荷状態に応じて、より負荷の低い手法、或いは、より精度の高い手法を用いて応答時間を推定する技術に関する。
【背景技術】
【０００２】
インターネットには様々な情報システムが接続されている。このような情報システムの中には、例えばオンライン株取引システムや、飛行体の遠隔操作システム等のように、応答時間の増加に非常に敏感なアプリケーションプログラム（以下、単にアプリケーションと記す）を実行するものがある。このような情報システムでは、応答時間が延びた場合、サーバを追加してクライアントのリクエストを負荷分散するといった対応を速やかに行う必要がある。このため、この種の情報システムでは応答時間を継続的に監視する必要がある。
【０００３】
応答時間を測定するためにはアプリケーション毎に測定装置を用意する必要がある。これは、一般にアプリケーションの応答時間の定義はアプリケーション毎に異なるためである。しかしながら、アプリケーション毎に測定装置を用意すると、作成・設置のためのコストが大きくなる。コストの上昇を避けるため、応答時間を直接的に測定する代わりに、応答時間の推定値を算出する手法が代替手段として用いられることが多い。
【０００４】
こうした手法では、一般的なモニタリング手段によって得られるデータ系列、例えばCPU(Central Processing Unit)使用率やネットワーク使用量に基づいて、現在の応答時間を算出する。一般的なモニタリング手段には例えばLinux（登録商標）のsysstat(http://sebastien.godard.pagesperso-orange.fr/)がある。sysstatを用いて、CPU(Central Processing Unit)使用率や、ネットワーク使用量等を測定し、これらの測定値に基づいて現在の応答時間を推定する手法が、応答時間を実測する代わりに用いられている。
【０００５】
このような手法のひとつが特許文献１に記載されている。図２４に示すように、特許文献１に記載のシステムは、性能データ収集装置１００１と性能データ処理装置１００２と性能測定部１００３と表示装置１０１１から構成されている。性能データ収集装置１００１は性能データ収集手段１００４、グルーピング手段１００５、グルーピング情報記憶手段１００６、性能データ送信手段１００７から構成されている。性能データ処理装置１００２は、性能データ受信手段１００８、性能データDB(Data Base)１００９、性能データ復元手段１０１０から構成されている。このシステムは次のように動作する。
【０００６】
性能データ収集手段１００１は、管理対象のCPUの性能データを性能測定部１００３から収集する。グルーピング手段１００５は、収集した性能データを比較し、性能データが近似するCPUを同じグループに分類し、グループ毎に代表CPUを決める。性能データ送信手段１００７は性能データ処理装置１００２に対し収集した性能データを送信する。性能データ処理装置１００２は受信した性能データの蓄積と管理を行う。
【０００７】
性能データを送信する際、グループの代表CPUの性能データは、規定の送信間隔で送信する。一方で、その際、グループの代表CPU以外のCPUの性能データは、規定の送信間隔よりも長い送信間隔で送信する。
【０００８】
また、特許文献２には、「情報システム上で動作する一つまたは複数のアプリケーションについて、種々の利用状況下での各アプリケーションの応答性能を、限られた実験回数で効果的に評価する統計的手法」に関する技術が記載されている。
【０００９】
特許文献２では、「アプリケーションの種々の利用状況に対応した負荷投入実験を複数回行う際、アプリケーションの利用状況に関する数量と、アプリケーションの応答性能に関する数量と、ハードウェア・リソースの利用状況に関する数量と、ハードウェア・リソースの応答性能に関する数量を取得し、数量間の依存関係を記述する推定式群を作成する事により、推定式群を用いたアプリケーションの応答性能の評価を可能にする」。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特許第５２６７６８１号公報
【特許文献２】特開２００４−０２１７５６号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
特許文献１のシステムは、性能を指標として複数のＣＰＵをいくつかのグループに分類することを前提としている。このため、特許文献１のシステムによれば、単体のＣＰＵで実行されているシステムの応答時間の推定に適用することはできない。
【００１２】
また、特許文献１のシステムは、グループの代表ＣＰＵの応答時間に基づいて、同じグループの他のＣＰＵの応答時間を推定する。このため、あるＣＰＵの応答時間を推定するためには、他のＣＰＵの応答時間を実際に計測する必要がある。応答時間の計測を完全に回避するものではない。
【００１３】
また、特許文献１のシステムによれば、計算負荷の増加に伴って、モニタリングが困難になる恐れがある。これは特許文献１のシステムではモニタリングにかかる負荷が常に一定だからである。
【００１４】
特に、特許文献１のシステムはモニタリングに次の２つの処理を必要とする。第１の処理は、各計算機からCPU使用率を収集し、増減傾向が似ている計算機のグループを作成する処理である。第２の処理は、グループの代表計算機を決定し、当該計算機からCPU使用率を取得する処理である。これら２つの処理は、他の処理に起因する計算機の負荷状態にかかわらず、常に一定の処理負荷を生む。
【００１５】
第２の処理について例を挙げる。あるアプリケーションを実行中の計算機のCPU使用率が、モニタリングを行っていない状態で80％であるとする。また、その計算機でモニタリングに必要なCPU使用率が30％であるとする。この場合、そのアプリケーションと同時にモニタリングを行うとすれば、CPU使用率は80%+30%=110%となり、100％を超える。このため、そのアプリケーションの処理が遅れる、或いは、モニタリングが正常に実行できないといった不具合が発生する。
【００１６】
また、特許文献１のシステムによればCPU使用率に基づいて応答時間を推定する。しかし、アプリケーションの応答時間を推定する際に参照すべきデータは、必ずしもCPU使用率が適しているとは限らない。例えば、メモリアクセスが頻繁に発生するアプリケーションにおいて応答時間に最も大きく影響するのは、CPU使用率ではなく、メモリ使用量である場合がある。また、ネットワークアクセスが頻繁に発生するアプリケーションにおいて応答時間に最も大きく影響するのは、ネットワーク転送量である場合がある。このため、CPU使用率にのみ基づいて応答時間を推定すると、精度の高い推定値を得ることができない恐れがある。
【００１７】
特許文献２には、ネットワークアプリケーションの応答時間を推定する方法が記載されている。しかし、状況に応じて推定方法を変更することについては特に言及していない。このため、応答時間を推定するプログラムを実行する計算機において処理負荷の変動が生じた場合であっても、同じ推定方法を用い続けることになる。その結果、特許文献１のシステムと同様に、計算負荷の増加に伴ってモニタリングが困難になる恐れがある。
【００１８】
また、特許文献２は、応答時間の推定の基礎となる動作状態の測定値を取得するためにも、計算機負荷が発生すること、また、発生する負荷の大きさが測定値の種類によって異なることについて特に言及していない。
【００１９】
例えば、CPU使用率は、CPUが使用されれば（nop以外の何らかの命令が実行されれば）、使用されたことを示すカウンターを１つ増やし、一定時間ごとにカウンターを当該時間内に実行できる全命令数で割ることにより求める。現在のカウンターが50で、1秒間で実行できる全命令数が100であれば、現在から一秒前までのCPU使用率は50％となる。このように、CPU使用率を求めるためには、カウンターをひとつ増やす処理と、一定間隔で除算する処理という二つの処理を一定間隔で実行する必要となる。
【００２０】
一方、メモリ使用量は、メモリの割り当て・解放要求があった時だけ現在のメモリ使用量を計算（加算もしくは減算）するだけで求めることができる。このため、メモリの割り当て・解放頻度が低ければ、CPU使用率よりメモリ使用量のデータ取得がモニタリングにかかる負荷が軽くなるということになる。
【００２１】
このような状況に鑑みて、本発明が解決しようとする課題は、単体のCPUで実行されているプログラムの応答時間を推定する技術を提供することである。
【００２２】
また、本発明が解決しようとする他の課題は、CPU使用率以外の動作状態に基づいて応答時間を推定する技術を提供することである。
【００２３】
また、本発明が解決しようとする他の課題は、応答時間を推定するプログラムを実行する計算機の負荷の増減に応じた推定方法を用いて推定する技術を提供することである。
【課題を解決するための手段】
【００２４】
上述の課題を解決するため、本発明は、その一態様として、応答時間測定用計算機、学習用計算機、運用系計算機を備え、学習用計算機及び運用系計算機はコンピュータプログラムである監視対象プログラムを実行可能であり、応答時間測定用計算機は、学習用計算機上で実行中の監視対象プログラムが処理するための、複数のリクエストを発生するための手段である疑似負荷発生手段、及び、学習用計算機上で監視対象プログラムが複数のリクエストを処理するために要した時間である応答時間を、リクエスト毎に測定するための手段である応答時間計測手段を備え、学習用計算機は、学習用計算機上で実行中の監視対象プログラムが複数のリクエストを処理する際の学習用計算機の一の動作状態に係る測定値を、リクエスト毎に測定するための手段である学習用モニタリング手段、及び、応答時間を目的変数とし、測定値を説明変数に含む回帰分析を実行して、回帰関数の係数と、回帰関数の推定誤差とを含む回帰分析結果を算出するための手段である回帰分析手段を備え、運用系計算機は、運用系計算機上で監視対象プログラムを実行しているときの、運用系計算機の一の動作状態に係る測定値を、リクエスト毎に測定するための手段である運用系モニタリング手段、及び、運用系モニタリング手段が測定した、運用系計算機の一の動作状態に係る測定値を、回帰分析手段が求めた、当該一の動作状態に係る回帰分析結果に適用して、運用系計算機の応答時間の推定値を算出するための手段である応答時間推定手段を備え、運用系計算機は、応答時間の推定値に基づいて、応答時間推定手段が用いる測定値、回帰分析結果を変更するコンピュータシステムを提供する。
【００２５】
また、本発明は、他の一態様として、応答時間測定用計算機、学習用計算機、運用系計算機を備えるコンピュータシステムで行う方法であって、学習用計算機及び運用系計算機はコンピュータプログラムである監視対象プログラムを実行可能であり、応答時間測定用計算機によって、学習用計算機上で実行中の監視対象プログラムが処理するための、複数のリクエストを発生する段階である疑似負荷発生段階、及び、学習用計算機上で監視対象プログラムが複数のリクエストを処理するために要した時間である応答時間を、リクエスト毎に測定する段階である応答時間計測段階を実行し、学習用計算機によって、学習用計算機上で実行中の監視対象プログラムが複数のリクエストを処理する際の学習用計算機の一の動作状態に係る測定値を、リクエスト毎に測定する段階である学習用モニタリング段階、及び、応答時間を目的変数とし、測定値を説明変数に含む回帰分析を実行して、回帰関数の係数と、回帰関数の推定誤差とを含む回帰分析結果を算出する段階である回帰分析段階を実行し、運用系計算機によって、運用系計算機上で監視対象プログラムを実行しているときの、運用系計算機の一の動作状態に係る測定値を、リクエスト毎に測定する段階である運用系モニタリング段階、及び、運用系モニタリング段階で測定した、運用系計算機の一の動作状態に係る測定値を、回帰分析段階で求めた、当該一の動作状態に係る回帰分析結果に適用して、運用系計算機の応答時間の推定値を算出する段階である応答時間推定段階を実行し、運用系計算機は、応答時間の推定値に基づいて、応答時間推定段階で用いる測定値、回帰分析結果を変更するプログラムの応答時間の推定方法を提供する。
【００２６】
また、本発明は、他の一態様として、応答時間測定用計算機、学習用計算機、運用系計算機を備えるコンピュータシステムの学習用計算機であって、学習用計算機及び運用系計算機はコンピュータプログラムである監視対象プログラムを実行可能であり、応答時間測定用計算機は、学習用計算機上で実行中の監視対象プログラムが処理するための、複数のリクエストを発生するための手段である疑似負荷発生手段、及び、学習用計算機上で監視対象プログラムが複数のリクエストを処理するために要した時間である応答時間を、リクエスト毎に測定するための手段である応答時間計測手段を備え、学習用計算機は、学習用計算機上で実行中の監視対象プログラムが複数のリクエストを処理する際の学習用計算機の一の動作状態に係る測定値を、リクエスト毎に測定するための手段である学習用モニタリング手段、及び、応答時間を目的変数とし、測定値を説明変数に含む回帰分析を実行して、回帰関数の係数と、回帰関数の推定誤差とを含む回帰分析結果を算出するための手段である回帰分析手段を備え、運用系計算機は、運用系計算機上で監視対象プログラムを実行しているときの、運用系計算機の一の動作状態に係る測定値を、リクエスト毎に測定するための手段である運用系モニタリング手段、及び、運用系モニタリング手段が測定した、運用系計算機の一の動作状態に係る測定値を、回帰分析手段が求めた、当該一の動作状態に係る回帰分析結果に適用して、運用系計算機の応答時間の推定値を算出するための手段である応答時間推定手段を備え、運用系計算機は、応答時間の推定値に基づいて、応答時間推定手段が用いる測定値、回帰分析結果を変更するコンピュータシステムの学習用計算機を提供する。
【００２７】
また、本発明は、他の一態様として、応答時間測定用計算機、学習用計算機、運用系計算機を備えるコンピュータシステムの運用系計算機であって、学習用計算機及び運用系計算機はコンピュータプログラムである監視対象プログラムを実行可能であり、応答時間測定用計算機は、学習用計算機上で実行中の監視対象プログラムが処理するための、複数のリクエストを発生するための手段である疑似負荷発生手段、及び、学習用計算機上で監視対象プログラムが複数のリクエストを処理するために要した時間である応答時間を、リクエスト毎に測定するための手段である応答時間計測手段を備え、学習用計算機は、学習用計算機上で実行中の監視対象プログラムが複数のリクエストを処理する際の学習用計算機の一の動作状態に係る測定値を、リクエスト毎に測定するための手段である学習用モニタリング手段、及び、応答時間を目的変数とし、測定値を説明変数に含む回帰分析を実行して、回帰関数の係数と、回帰関数の推定誤差とを含む回帰分析結果を算出するための手段である回帰分析手段を備え、運用系計算機は、運用系計算機上で監視対象プログラムを実行しているときの、運用系計算機の一の動作状態に係る測定値を、リクエスト毎に測定するための手段である運用系モニタリング手段、及び、運用系モニタリング手段が測定した、運用系計算機の一の動作状態に係る測定値を、回帰分析手段が求めた、当該一の動作状態に係る回帰分析結果に適用して、運用系計算機の応答時間の推定値を算出するための手段である応答時間推定手段を備え、運用系計算機は、応答時間の推定値に基づいて、応答時間推定手段が用いる測定値、回帰分析結果を変更するコンピュータシステムの運用系計算機を提供する。
【００２８】
また、本発明は、他の一態様として、上述のコンピュータシステムの学習用計算機及び運用系計算機のいずれかとしてコンピュータを動作させるプログラムを提供する。
【発明の効果】
【００２９】
本発明によれば、単体のCPUで実行されているプログラムの応答時間を推定することができる。
【００３０】
また、本発明によれば、CPU使用率以外の動作状態に基づいても応答時間を推定することができる。
【００３１】
また、本発明によれば、応答時間を推定するプログラムを実行する計算機の負荷の増減に応じた推定方法を用いて推定することができる。
【図面の簡単な説明】
【００３２】
【図１】本発明の第１の実施の形態であるコンピュータシステム１について説明するためのブロック図である。
【図２】コンピュータシステム１の学習用計算機２００が備えるデータ取得コスト表２３０の例であり、データ構造について説明するための図である。
【図３】パレート最適解集合を説明するためのグラフである。
【図４】コンピュータシステム１のモニタリングパターン格納部３１０の例であり、データ構造について説明するための図である。
【図５】コンピュータシステム１の学習フェーズの動作について説明するためのフローチャートである。
【図６】コンピュータシステム１の学習フェーズの動作について説明するためのフローチャートである。
【図７】コンピュータシステム１の運用フェーズの動作について説明するためのフローチャートである。
【図８】本発明の第２の実施の形態であるコンピュータシステム２について説明するためのブロック図である。
【図９】データ優先度設定情報２６０の例であり、データ構造を説明するための図である。
【図１０】コンピュータシステム２のモニタリングパターン格納部３１０の例であり、データ構造を説明するための図である。
【図１１】推定元データ選択部２６０の動作を説明するためのフローチャートである。
【図１２】本発明の第３の実施の形態であるコンピュータシステム３について説明するためのブロック図である。
【図１３】近似多項式リスト２９０の例であり、データ構造を説明するための図である。
【図１４】コンピュータシステム３のモニタリングパターン格納部３１０の例であり、データ構造を説明するための図である。
【図１５】コンピュータシステム３の動作について説明するためのフローチャートである。
【図１６】コンピュータシステム３の動作のうち、ステップS27について説明するためのフローチャートである。
【図１７】本発明の第４の実施の形態であるコンピュータシステム４について説明するためのブロック図である。
【図１８】学習用モニタリング部２１０について説明するためのブロック図である。
【図１９】運用系モニタリング部３５０について説明するためのブロック図である。
【図２０】コンピュータシステム４の学習フェーズのうちモニタリングフェーズについて説明するための図である。
【図２１】コンピュータシステム４の学習フェーズのうち回帰分析フェーズについて説明するための図である。
【図２２】コンピュータシステム４の運用フェーズについて説明するための図である。
【図２３】本発明の一実施例であるコンピュータシステム５について説明するためのブロック図である。
【図２４】特許文献１について説明するためのブロック図である。
【発明を実施するための形態】
【００３３】
[第1の実施の形態]
[概要]
次に、発明を実施するための形態について図面を参照して詳細に説明する。
【００３４】
図１を参照すると、本発明の第１の実施の形態であるコンピュータシステム１は、応答時間測定用計算機１００、学習用計算機２００、運用系計算機３００を備える。学習用計算機２００は、学習用モニタリング部２１０、応答時間推定誤差計算部２２０、データ取得コスト表２３０、モニタリングパターン作成部２４０とを備える。応答時間測定用計算機１００は、応答時間計測部１２０、疑似負荷発生部１１０を備える。運用系計算機３００は、モニタリングパターン格納部３１０、モニタリングパターン切り替え部３２０、応答時間推定部３３０、アプリケーション３４０、運用系モニタリング部３５０を備える。
【００３５】
応答時間測定用計算機１００、学習用計算機２００、運用系計算機３００は、具体的には、パーソナルコンピュータ、ワークステーション等であり、それぞれ、ハードウェアとしては、不図示のCPU(Central Processing Unit)、主記憶装置、補助記憶装置、入力装置、出力装置、通信インタフェース装置、内部バスを備える。
【００３６】
主記憶装置はROM(Read Only Memory)、RAM(Read Only Memory)からなる。補助記憶装置はHDD(Hard Disk Drive)、SSD(Solid State Drive)等からなる。入力装置は例えばキーボード、マウス等である。出力装置は例えばCRT(Cathode Ray Tube)、液晶ディスプレイである。通信インタフェース装置は他コンピュータとデータ通信を行うためのインタフェース装置であり、例えば有線乃至無線のLAN(Local Area Network)カード、USB(Universal Serial Bus)、Bluetooth（登録商標）等のインタフェース装置である。内部バスはこれらのハードウェアを互いに接続する。応答時間測定用計算機１００と学習用計算機２００の間、学習用計算機２００と運用系計算機３００の間は、ＬＡＮ回線等のデータ通信回線を介して接続されている。
【００３７】
また、応答時間測定用計算機１００、学習用計算機２００、運用系計算機３００は、不図示のOS(Operating System)を備え、そのOS上で実行される様々なプログラムを備える。
【００３８】
応答時間測定用計算機１００、学習用計算機２００、運用系計算機３００のうち、学習用計算機２００、運用系計算機３００は、少なくとも同じアプリケーション２５０、３４０（監視対象プログラム）が実行可能なOSで動作するコンピュータである。基本的には、学習用計算機２００、運用系計算機３００は、同一アーキテクチャを有し、同一OSで動作するコンピュータである。ハードウェアの各部の仕様、例えば、CPUのメーカー、型番、RAMの種類、容量、HDDの回転数、容量、インタフェース、内部バスの帯域、通信インタフェース装置の通信規格は必ずしも同じである必要はない。最も単純な例としては、同一メーカー、同一型番のコンピュータを２台購入し、一方を学習用計算機２００として用い、他方を運用系計算機３００として用いることが考えられる。
【００３９】
更に、コンピュータシステム１は、アプリケーション３４０の制御対象となるハードウェア、そのハードウェアを制御するためのドライバプログラム等のソフトウェアを備える。制御対象のハードウェアを介したネットワーク接続を行う場合、学習用計算機２００、運用系計算機３００はどちらもそれらのハードウェア、ソフトウェア、ネットワーク接続を備える。例えば、アプリケーション３４０がインターネット上にウェブページを公開するためのウェブサーバプログラムである場合、学習用計算機２００、運用系計算機３００は、どちらも、インターネット接続のための通信インタフェース装置、その通信インタフェース装置のドライバプログラム、その通信インタフェース装置に接続されたインターネット接続回線を有する。
【００４０】
以下に各計算機の機能ブロックについて説明するが、これら機能ブロックは、いずれも、上述のハードウェア及びソフトウェアを適宜組み合わせることにより実現される。
【００４１】
［各部の説明］
各部はそれぞれ概略つぎのように動作する。
【００４２】
疑似負荷発生部１１０は、モニタリング対象となるアプリケーション３４０に対して疑似的に負荷をかけるためのリクエストを生成して、学習用計算機２００に送信する。疑似負荷発生部１１０は、疑似負荷発生シナリオを入力として、アプリケーション３４０に対するリクエスト生成を出力とする。疑似負荷発生シナリオとは、時間間隔毎に送出するリクエスト数とリクエストの内容が記載されたテキストを指す。例えば、1秒ごとに10個のhttpリクエスト（URL）を記載するなどが考えうる。生成したリクエストはひとつずつ順番に学習用計算機２００に送信されるものとし、複数のリクエストが同時に送信されることはないものとする。学習用計算機２００では運用系計算機３００で動作するアプリケーション３４０と同じアプリケーション２５０がデータ取得のために実行されており、当該リクエストを処理して結果を疑似負荷発生部１１０に返信する。
【００４３】
応答時間計測部１２０は、疑似負荷発生部１１０により生成したリクエストの処理時間を計測する。応答時間測定用計算機１００から学習用計算機２００上で動作するアプリケーション２５０に対して、リクエストが送出された時刻を送出時刻とする。当該アプリケーション２５０上での処理結果が疑似負荷発生部１１０に返された時刻を返信時刻とする。このとき、応答時間計測部１２０は、送出時刻と返信時刻の差分を応答時間として出力する。具体的には、疑似負荷発生部１１０によって生成されたリクエストが学習用計算機２００に送信された時刻を応答時間計測部１２０に一時的に記録し、当該リクエストが学習用計算機２００内のアプリケーション２５０によって処理されて結果が疑似負荷発生部１１０に到着した時刻を記録する。そして、リクエスト送信時刻とリクエスト処理結果受信時刻の差分を当該リクエストの応答時間として出力する。
【００４４】
学習用モニタリング部２１０は、当該部が実行されている計算機の動作状態を測定、記録する。学習用モニタリング部２１０は、入力が無く、モニタリング情報を出力とする。モニタリング情報とは、計算機（ここでは学習用計算機２００）の内部情報、特に、動作状態を示す値であり、具体的には、CPU使用率や、メモリ使用量、ネットワーク転送量やディスク使用量などが該当する。学習用モニタリング部２１０はこうした複数の種類の状態値を測定する。
【００４５】
応答時間推定誤差計算部２２０は、応答時間計測部１２０によって得られたモニタリング対象となるアプリケーション２５０の応答時間と、学習用モニタリング部２１０によって得られた各データ系列を使って、応答時間の推定誤差を計算する。応答時間推定誤差計算部２２０は、学習用モニタリング部２１０によって取得したモニタリング情報と、応答時間計測部１２０によって取得した応答時間を入力として、モニタリング情報から応答時間を推定するための推定関数、推定誤差ならびに必要なモニタリング情報の系列名を出力とする。
【００４６】
具体的には、応答時間推定誤差計算部２２０は、応答時間と各データ系列のそれぞれについて線形単回帰分析を実施する。次に線形単回帰結果に対する残差平方和を計算し、それを応答時間の推定誤差とする。
【００４７】
例えば、疑似負荷発生部１１０が１０個のリクエストR1, R2, …, R10を生成してアプリケーション２５０に送信し、学習用モニタリング部２１０は、リクエスト毎に状態値をひとつ測定して状態値D1, D2, …, D10からなるデータ系列を取得し、応答時間計測部１２０は、リクエスト毎に応答時間を測定して応答時間T1, T2, …, T10を取得するものとする。このとき、応答時間推定誤差計算部２２０は、応答時間T1, T2, …, T10を目的変数とし、データ系列D1, D2, …, D10を説明変数とする線形単回帰分析を行う。これにより、残差平方和が最小となるデータ系列D1, D2, …, D10の回帰式を求める。
【００４８】
線形単回帰分析とは、推定目的となるデータ系列と、推定元となるデータ系列の二つのデータ系列の関係について近似直線を計算することである。今、応答時間とCPU使用率について線形単回帰分析を実施すると仮定する。目的変数、即ち、推定目的となるデータ系列として応答時間測定部から得られる応答時間を入力する。説明変数、即ち、推定元となるデータ系列としてCPU使用率を使用する。ある時刻ｔにおける応答時間aとCPU使用率bの組み合わせに対して、時刻t+1に、応答時間がa+１、CPU使用率がb+2になる場合は、応答時間とCPU使用率の関係は、a=2bという線形の関係が成り立つ。
【００４９】
当該線形式は、最小二乗法によって計算することができる。線形単回帰分析における最小二乗法の計算式を式１、式２、式３に示す。式１は求められる線形式の一般系である。式２は、線形式の傾きaを計算する式である。式３は線形式の切片bを計算する式である。残差平方和とは、上記線形式によって求められる値と実際の値の差を２乗してすべてを足し合わせた値のことを指している。式４は残差平方和の計算式を表している。残差平方和は、求めた線形式の推定誤差として一般的に用いられている。この推定誤差を応答時間推定誤差３１１として利用する。
【００５０】
【数１】
2018010562.tif 000003
【数２】
2018010562.tif 000004
【数３】
2018010562.tif 000005
【数４】
2018010562.tif 000006
【００５１】
データ取得コスト表２３０は、学習用モニタリング部２１０によって得られる各データ系列の取得コストを示している。図２に示すように、データ取得コスト表２３０は取得データ名２３１と取得データコスト２３２から構成されている。データ取得コスト表２３０は予め与えられているものとする。
【００５２】
取得データコスト２３２に格納される値は、対応する取得データ名２３１が示すデータを、学習用モニタリング部２１０、運用系モニタリング部３５０が取得する際に必要となるコストの大きさを表す値である。取得データコスト２３２の値は、そのデータを取得するために必要なコンピュータリソースを考慮してユーザが設定する。コストの値は学習用モニタリング部２１０、運用系モニタリング部３５０に共通である。
【００５３】
モニタリングパターン作成部２４０は、応答時間推定誤差計算部２２０で得られた各データ系列の応答時間推定誤差３１１とデータ取得コスト表２３０に記載の各データ系列の取得コストからモニタリングパターンを作成する。
【００５４】
モニタリングパターン作成部２４０は、応答時間推定誤差計算部２２０によって作成された組み合わせリスト（応答時間推定誤差計算部２２０の構成に記載の応答時間を推定するための推定関数、推定誤差ならびに必要なモニタリング情報の系列名）とデータ取得コスト表の取得データ名２３１と取得データコスト２３２を入力として、モニタリングパターンを出力とする。
【００５５】
具体的には、最初に各データ系列の応答時間推定誤差３１１のパレート最適解集合を全データ系列から選別し、選別された各データ系列のデータ系列名、当該データ系列の応答時間推定誤差３１１、線形回帰関数のa値３１２、線形回帰関数のb値３１３を一組としてモニタリングパターンを作成する。
【００５６】
パレート最適解集合とは、２つの目的関数が互いにトレードオフの関係にある場合、一方の改善が他方の悪化になるような状態集合のことを指す。本発明では、後述する応答時間推定誤差３１１と取得データコスト２３２が「２つの目的関数」に相当する。図３を参照すると、縦軸が応答時間推定誤差３１１、横軸が取得データコスト２３２となる。
【００５７】
応答時間推定誤差３１１と取得データコスト２３２を持つデータ系列をグラフ上にプロットすると、すべての点集合のうち、応答時間推定誤差３１１と取得データコスト２３２の組み合わせについて最も優れている点集合が存在することがわかる。つまり、応答時間推定誤差３１１を低く、取得データコスト２３２を低くしたい場合、取得データコスト２３２を下げてしまうと応答時間推定誤差３１１が高くなってしまう点の集合、言い換えると、応答時間推定誤差３１１を低くしようとすると取得データコスト２３２が増加してしまうような点の集合が存在する。これをパレート最適解集合と呼び、パレート最適解集合を超えて、低い応答時間推定誤差３１１と低い取得データコスト２３２を持つデータ系列が存在しない。一方、パレート最適解集合に属さない点集合（当該点集合よりも応答時間推定誤差３１１が高く、取得データコスト２３２が低い点が他に存在するような点）を劣解と呼ぶ。モニタリングパターン作成部２４０は、モニタリングによって得られる全データ系列から劣解に相当するデータ系列を取り除いたのち、モニタリングパターンを作成する。
【００５８】
アプリケーション２５０は、運用系計算機３００にて実行されるアプリケーション３４０と同じアプリケーションプログラムであり、同一バージョンであることが好ましい。後述するように、アプリケーション３４０は運用系計算機３００で動作し、クライアントからのリクエストを処理するためのプログラムである。具体的には、例えばApache HTTP server project (https://httpd.apache.org/)のApache HTTP server、マイクロソフト社のIIS(Internet Information Service)7等のウェブサーバが考えられるが、クライアントからのリクエストを処理するためのプログラムであればどのようなものであってもよい。アプリケーション３４０がApache HTTP serverならばアプリケーション２５０もApache HTTP serverである。更に、アプリケーション２５０とアプリケーション３４０はバージョンが同じであることが好ましい。
【００５９】
モニタリングパターン格納部３１０は、運用系計算機３００でモニタリングするデータ系列のリスト或いはテーブルを記憶する記憶装置である。図４に示す通り、モニタリングパターン格納部３１０は、取得データ名２３１、取得データコスト２３２、応答時間推定誤差３１１、回帰関数a値３１２、回帰関数b値３１３を互いに関連付けて記憶する。取得データ名２３１、取得データコスト２３２は、データ取得コスト表２３０から、応答時間推定誤差３１１、回帰関数a値３１２、回帰関数b値３１３は、応答時間推定誤差計算部２２０によって得られた値である。モニタリングパターン格納部３１０に格納されているモニタリングパターンは複数あり、モニタリングパターン切り替え部３２０によって使用されるモニタリングパターンが選択される。
【００６０】
モニタリングパターン切り替え部３２０は、応答時間推定部３３０からの切り替え命令を入力として、次にモニタリングすべきデータ系列名を出力とする。現在モニタリングに使われているデータ系列を他のデータ系列に切り替える。モニタリングに使うデータ系列はモニタリングパターン格納部３１０から取り出して使用する。具体的には、モニタリングパターン格納部３１０の中の取得データ名２３１に該当するデータ系列のモニタリングを実施する。モニタリングされるデータ系列の切り替えは、応答時間推定部３３０からの入力を契機に実施される。
【００６１】
応答時間推定部３３０は、モニタリングされているデータ系列と回帰関数を使用して、現在の応答時間を推定する。応答時間推定部３３０は、モニタリングされたデータ系列を入力として、モニタリングパターン切り替え部３２０への切り替え命令を出力する。また、応答時間推定部３３０は、求めた推定値をユーザに出力する。ユーザ出力は例えば運用系計算機３００の不図示の表示装置で行う。
【００６２】
応答時間推定部３３０がモニタリングパターン切り替え部３２０に発する切り替え命令は、切り替えを要求する命令（コマンド）と、現在モニタリングしているデータ系列名、切り替え方向を示すフラグから構成されている。切り替え方向を示すフラグは、「現在モニタリングしているデータ系列より取得データコスト２３２が高いもの」か「現在モニタリングしているデータ系列より取得データコスト２３２が低いもの」のどちらかが判断できれば、どのようなフラグを用いてもよい。
【００６３】
応答時間推定部３３０は、まず、モニタリングされているデータ系列の情報と応答時間推定誤差計算部２２０から得られた回帰関数を使って、現在の応答時間を推定する。次に、応答時間推定部３３０に予め供えられている閾値を先ほど推定した応答時間が超過した場合に、モニタリングパターン切り替え部３２０に対して、モニタリングするデータ系列の切り替えを要求する。閾値を超過した場合は、取得するデータコストが現在モニタリングしているデータ系列よりも低いものに切り替えるように要求し、一旦閾値を超えた応答時間が、再び閾値を下回った場合は、取得するデータコストが現在モニタリングしているデータ系列よりも高いものに切り替えるように要求する。
【００６４】
モニタリングパターン作成部２４０は、モニタリングパターン候補のうち、応答時間推定誤差３１１と取得データコスト２３２とがトレードオフの関係にあるものだけをモニタリングパターンとして出力する。このため、取得データコストが大きいものに切り替えることは、応答時間推定誤差が小さいものに切り替えることになる。
【００６５】
運用系モニタリング部３５０は、運用系計算機４の動作状態を測定、記録する。運用系モニタリング部３５０は、モニタリングパターン切り替え部３２０からのモニタリング対象となるデータ系列名を入力とし、モニタリング情報を出力とする。具体的には、CPU使用率や、メモリ使用量、ネットワーク転送量やディスク使用量などが入力に該当する。運用系モニタリング部３５０は測定した情報を応答時間推定部３３０に出力する。
【００６６】
アプリケーション３４０は、コンピュータシステム１にて応答時間を推定する対象となるプログラム（監視対象プログラム）である。アプリケーション３４０は運用系計算機３００で動作し、クライアントからのリクエストを処理するためのプログラムである。上述のように、アプリケーション３４０としては、例えばApache HTTP server project (https://httpd.apache.org/)のApache HTTP server、マイクロソフト社のIIS(Internet Information Service)7等のウェブサーバが考えられるが、クライアントからのリクエストを処理するためのプログラムであればどのようなものであってもよい。
【００６７】
このように、コンピュータシステム１では、応答時間推定誤差計算部２２０において、アプリケーション２５０の応答時間とモニタリング情報とに基づいて、応答時間推定に最適なデータ系列の集合を抽出する。また、当該データ系列のモニタリングを運用系計算機３００で実行する。モニタリングの過程で運用計算機の負荷が高まった場合は、モニタリングするデータ系列を取得データコスト２３２の低いものに切り替えていく。これにより、運用系計算機３００の負荷が高くなった状態においても、応答時間の推定誤差をできるだけ高く維持しつつモニタリングを継続することができる。
【００６８】
[動作の説明]
次に、図５、図６及び図７のフローチャートを参照して、コンピュータシステム１の動作について詳細に説明する。コンピュータシステム１の動作は、大きく「学習フェーズ」と「運用フェーズ」に分かれる。図５、図６は学習フェーズの動作を表している。図７は運用フェーズの動作を表している。学習フェーズは運用フェーズが実行される前に実行されなければならない。学習フェーズは運用フェーズの実行前なら、いつ実行されても構わない。学習フェーズでは学習用計算機２００と応答時間測定用計算機１００が動作する。運用フェーズでは運用系計算機３００のみが動作する。
【００６９】
［学習フェーズの動作１］
図５は、応答時間測定用計算機１００と学習用計算機２００を使って、応答時間とモニタリングデータを収集し、応答時間推定誤差計算部２２０によって応答時間推定誤差３１１を作成するまでの動作を説明するためのフローチャートである。
【００７０】
まず、学習用計算機２００はアプリケーション２５０を起動している（ステップS1）。この状態で、応答時間測定用計算機１００と学習用計算機２００は互いに連携して、所定数のリクエストに対応する、所定数のモニタリング情報と、所定数の応答時間とを取得する（ステップS2）。ステップS2について以下に詳しく説明する。
【００７１】
応答時間測定用計算機１００は、疑似負荷発生部１１０を用いてリクエストを生成し、学習用計算機２００のアプリケーション２５０に送信する。また、応答時間測定用計算機１００は、応答時間計測部１２０を用いてリクエスト送信時刻を記録しておく。
【００７２】
学習用計算機２００において、リクエストを受信したアプリケーション２５０は、リクエストの処理を開始する。アプリケーション２５０がリクエストを処理している間に、学習用モニタリング部２１０は学習用計算機２００の動作状態を測定し、応答時間推定誤差計算部２２０に出力する。
【００７３】
このとき、学習用モニタリング部２１０は複数の動作状態について状態値を測定する。例えば、図４の取得データ名２３１に記載されているように、CPU使用率、メモリ使用量、CPU温度をそれぞれ測定する。同一の動作状態に係る所定数の状態値のセットをデータ系列と呼ぶ。学習用モニタリング部２１０は所定数のデータ系列を出力する。先の例にならうと、学習用モニタリング部２１０は、CPU使用率、メモリ使用量、CPU温度のそれぞれについてデータ系列を出力する。
【００７４】
アプリケーション２５０はリクエストの処理を終了し、リクエスト処理結果を疑似負荷発生部１１０に返信する。応答時間計測部１２０は、リクエスト処理結果の受信時刻を測定し、予め記録したリクエスト送信時刻との差分を求めて、応答時間を求める。応答時間計測部１２０は、求めた応答時間を、学習用計算機２００の応答時間推定誤差計算部２２０に送信する。
【００７５】
ステップS2では以上の処理を所定数繰り返すことにより、所定数のモニタリング情報と、所定数の応答時間とを取得する。
【００７６】
図５に戻って、応答時間推定誤差計算部２２０は、応答時間計測部１２０で求めた応答時間を目的変数とし、学習用モニタリング部２１０で求めたモニタリング情報を説明変数として、回帰分析を行う。応答時間推定誤差計算部２２０は次のように動作する。
【００７７】
まず、学習用モニタリング部２１０から取得した複数のデータ系列のうち、回帰分析を行っていないものをひとつ選択する（ステップS3）。回帰分析をまだ行っていないデータ系列がある場合（ステップS4のNO）、選択したデータ系列と応答時間の線形回帰関数を計算する（ステップS5）。次に、求めた回帰関数と応答時間の残差平方和を計算し推定誤差とする（ステップS6）。
【００７８】
次に当該データ系列、回帰関数a値３１２、b値３１３、推定誤差の組み合わせを作成する（ステップS7）。線形回帰関数の計算方法は、応答時間推定誤差計算部２２０で説明した通りであり、a値は式１の線形式一般形の傾き、b値は式１の線形式一般形の切片を表す。ａ値及びｂ値は数２、数３から計算することができる。
【００７９】
すべてのデータ系列について回帰関数と推定誤差の計算が終わったら（ステップS4のYES）、データ系列、回帰関数a値３１２、回帰関数b値３１３、推定誤差の組み合わせリストをモニタリングパターン作成部２４０に入力する（ステップS8）。
【００８０】
［学習フェーズの動作２］
次に、図１０を参照して、学習用計算機２００のモニタリングパターン作成部２４０の動作について説明する。
【００８１】
最初に、応答時間推定誤差計算部２２０によって、モニタリングパターン作成部２４０に入力された組み合わせリストのうち、データ系列、回帰関数a値３１２、b値３１３、推定誤差の組み合わせを一つ取り出す（ステップS9）、
それらの組み合わせに対して（ステップS10のNO）、当該データ系列の取得データコスト２３２を取り出した組み合わせに追加する（ステップS11）。これを、応答時間推定誤差計算部２２０から入力されたすべての組み合わせに対して実施する。
【００８２】
例えば、応答時間推定誤差計算部２２０が入力した組み合わせリストのひとつが、データ系列「CPU使用率」、応答時間推定誤差=0.22、回帰関数a値=2.221、回帰関数b値=1.235であるとする。このとき、モニタリングパターン作成部２４０は、図２のデータ取得コスト表から、データ系列「CPU使用率」に対応する取得データコスト２３２の値である１０を取得して、この組み合わせに関連付ける。
【００８３】
すべての組み合わせに対して、取得コストの追加が終了する（ステップS10のYES）と、すべての組み合わせのうち、パレート最適解となる組み合わせをモニタリングパターンとして、運用系計算機３００のモニタリングパターン格納部３１０に格納する（ステップS12）。パレート最適解については[構成の説明]においてモニタリングパターン作成部２４０と共に説明した通りである。パレート最適解集合の計算は既存の多目的最適化手法を用いて行うことができる。学習フェーズの説明は以上である。
【００８４】
［運用フェーズの動作］
次に、コンピュータシステム１の運用フェーズの動作について説明する。運用フェーズでは、運用系計算機３００のみが動作するので、運用フェーズで説明する動作は運用系計算機３００の動作である。運用フェーズでは応答時間測定用計算機１００、学習用計算機２００は動作しない。監視対象プログラム、即ち、アプリケーション３４０は既に動作しているものとする。
【００８５】
最初に、モニタリングパターン切り替え部３２０は、モニタリングパターン格納部３１０に格納されているデータ系列のうち、推定誤差が最も低いものを選択して、運用系モニタリング部３５０に対し、そのデータ系列に対応する動作状態のモニタリングを指示する（ステップS13）。運用系モニタリング部３５０がモニタリングした値は応答時間推定部３３０に渡される。
【００８６】
例えば、モニタリングパターン格納手段３１０が図４の値を格納している場合、応答時間推定誤差３１１のうち最も低いのはCPU使用率の0.22なので、運用系モニタリング部３５０はCPU使用率をモニタリングする。
【００８７】
学習用モニタリング部２１０はモニタリング可能な全ての動作状態について状態値を取得した。これに対して、運用系モニタリング部３５０は、選択したデータ系列以外についてはモニタリングを行わない。例えば、ステップS13にてCPU使用率のデータ系列を選択した場合、メモリ使用量、CPU温度等の他の動作状態についてはモニタリングを行わない。
【００８８】
上述したように、モニタリングパターン作成部２４０は、応答時間推定誤差３１１と取得データコスト２３２のパレート最適解集合となるデータ系列のみをモニタリングパターン格納部３１０に格納する。結果として、推定誤差が最も低いデータ系列を選択することは、取得データコスト２３２が最も高いデータ系列を選択することを意味する。
【００８９】
次に、応答時間推定部３３０は、渡されたモニタリング情報に基づいて応答時間を推定する（ステップS14）。応答時間の推定には、モニタリングパターン格納部３１０に格納されているデータのうち、現在モニタリングしているデータ系列の回帰関数a値３１２、回帰関数b値３１３を利用する。これらを線形式の一般形（Y=aX+b）に当てはめる。そして、得られたモニタリングデータをXに入力し、Yの値として応答時間の推定値を得る。応答時間推定部３３０は、例えば運用系計算機３００の不図示の表示装置にて推定値を表示する。
【００９０】
例えば、運用系モニタリング部３５０はCPU使用率をモニタリングしていて、モニタリング格納部３１０には図４の値が格納されているものとする。このとき、応答時間推定部３３０は図４の表からCPU使用率に対応する応答時間推定誤差３１１、回帰関数a値３１２、回帰関数b値３１３の値を読み出す。応答時間推定誤差３１１は0.22、回帰関数a値３１２は2.221、回帰関数b値３１３は1.235である。これらの値を式１の線形式の一般形に当てはめる。その上で、ステップS13にて取得したCPU使用率を式１のXに代入してYを求める。求めたYが応答時間の推定値となる。今、運用系モニタリング部３５０はCPU使用率のみをモニタリングしているので、他のデータ系列、例えばCPU温度やメモリ使用量等をモニタリングするための負荷は発生していない。
【００９１】
次に、応答時間推定部３３０は、推定値に基づいて応答時間が増加中かどうかを判定する（ステップS15）。応答時間が増加しているか否かについては、応答時間推定部３３０から前回受け取った推定値を保存しておいて、今回受け取った推定値との差分を求め、差分の正負に基づいて判定するのが簡単な方法である。他にも、移動平均を用いるなど、増加中かどうかが判別するような手法であれば、どのようなものを用いても良い。
【００９２】
増加中でなければ（S16のNO）、運用系モニタリング部３５０は現在モニタリングしているデータ系列のモニタリングを継続する。
【００９３】
増加中であれば（S16のYES）、応答時間推定部３３０は、モニタリングパターン切り替え部３２０に対し、モニタリングパターンを推定誤差が次に低いデータ系列に切り替えるように指示する。この指示を受けて、モニタリングパターン切り替え部３２０はモニタリングパターン格納部３１０から推定誤差が次に低いデータ系列を選択する。以後、応答時間推定部３３０は新たに選択されたモニタリングパターンで推定を行う。また、モニタリングパターン切り替え部３２０は、運用系モニタリング部３５０に対し、モニタリングするデータ系列を、切り替えたモニタリングパターンで必要なデータ系列に切り替えるように指示する（ステップS17）。
【００９４】
このようにデータ系列を切り替えた後は、ステップS14に戻り、切り替えたデータ系列に基づいて、応答時間の推定値を求める。
【００９５】
尚、推定誤差が次に低いデータ系列への切り替えとは、現在モニタリングしているデータ系列の推定誤差の次に低い推定誤差を持つデータ系列をモニタリングパターン格納部３１０から取り出して、当該データ系列のモニタリングを実施することを指す。
【００９６】
上述のように、モニタリングパターン格納部３１０はパレート最適解集合を格納している。このため、推定誤差が次に低いデータ系列への切替、即ち、推定誤差が高いデータ系列への切替は、データ取得コストが低いデータ系列への切替を意味する。
【００９７】
図７のフローチャートは、運用系計算機３００の開始時の動作に沿ったものである。あるデータ系列のモニタリング中は、ステップS14からステップS17を繰り替えし実行して、応答時間が増加中であることがわかれば、推定誤差が低いデータ系列への切り替えを実施するよう動作するものとする。
【００９８】
[効果の説明]
次に、本実施の形態の効果について説明する。
【００９９】
本実施の形態では、アプリケーション２５０の応答時間とモニタリング情報から、応答時間推定に最適なデータ系列の集合を抽出する。また、当該データ系列のモニタリングを運用系計算機３００で実施し、運用計算機の負荷が高まった場合は、モニタリングするデータ系列を取得データコスト２３２の低いものに切り替える。これにより、運用系計算機３００の負荷が高くなった状態においても、応答時間の推定誤差をできるだけ高く維持しつつモニタリングを継続できる。
【０１００】
[第２の実施の形態] 
[概要]
次に、本発明の第２の発明を実施するための形態であるコンピュータシステム２について説明する。
【０１０１】
コンピュータシステム１では、応答時間を目的変数とし、ひとつの動作状態の状態値からなるデータ列を説明変数として線形単回帰分析を行った。これに対して、コンピュータシステム２では、応答時間を目的変数とする点では同じだが、複数の動作状態の状態値からなるデータ列を説明変数として線形重回帰分析を行う。即ち、コンピュータシステム２では、応答時間推定誤差計算部２２０が、学習用モニタリング部２１０によって得られた各データ系列のうち、複数データ系列の組み合わせを入力として、線形重回帰分析を行う。
【０１０２】
また、コンピュータシステム１では、学習用モニタリング部２１０が出力するモニタリング情報をすべて応答時間推定誤差計算部２２０に渡していたが、コンピュータシステム２は、モニタリング情報の一部を応答時間推定誤差計算部２２０に渡す。このため、上述のコンピュータシステム１の構成に加えて、コンピュータシステム２は図８に示すように推定元データ選択部２６０、データ優先度設定情報２７０を備える。応答時間推定誤差計算部２２０の動作が一部異なる。また、モニタリングパターン格納部３１０に格納するデータの構造が異なる。
【０１０３】
[各部の説明]
コンピュータシステム２の各部について説明する。尚、コンピュータシステム１の同名の要素と違いがない場合には説明を省略する。必要に応じてコンピュータシステム１の説明を参照されたい。
【０１０４】
推定元データ選択部２６０は、学習用モニタリング部２１０によって得られた各データ系列について、データ優先度設定情報２７０を元に、応答時間推定誤差計算部２２０に入力するデータ系列を取捨選択する。
【０１０５】
後述するように、データ優先度設定情報２７０には、取得データ数２７４、優先度設定式２７５、除外データ２７６という項目がある。推定元データ選択部２６０は、学習用モニタリング部２１０が出力したデータ系列の中から、除外データ２７６にて指定されたデータ系列を除外する。また、推定元データ選択部２６０は、除外データ２７６を除外した残りのデータ系列のそれぞれに対して、優先度設定式２７５に設定された設定式を適用して、各データ系列の優先度を計算する。また、推定元データ選択部２６０は、優先度の高いものから順に、取得データ数２７４に設定された数のデータ系列を抽出する。更に、推定元データ選択部２６０は、抽出したデータ系列の組み合わせを計算し、応答時間推定誤差計算部２２０に渡す。
【０１０６】
データ優先度設定情報２７０は、推定元データ選択部２６０が、データ系列の取捨選択を実施するための条件を与えるための情報である。図９に示す通り、データ優先度設定情報２７０は、アプリケーション名２７１と優先度設定項目２７２、設定値２７３から構成されている。優先度設定項目２７２は、取得データ数２７４、優先度設定式２７５、除外データ２７６から構成されている。
【０１０７】
アプリケーション名２７１は、応答時間の測定対象となるアプリケーションの名称を指す。図９では、AP1という名称のアプリケーションの優先度設定項目として、取得データ数、優先度設定式、除外データの設定値が設定されている。
【０１０８】
優先度設定項目２７２は、推定元データ選択部２６０が、学習用モニタリング部２１０によって得られた各データ系列について、応答時間推定誤差計算部２２０に入力するデータ系列を取捨選択するための条件名が記載さている。図９の優先度設定項目２７２には、アプリケーションAP1の優先度設定項目として、「取得データ数」、「優先度設定式」、「除外データ」が記載されている。
【０１０９】
設定値２７３は、優先度設定項目２７２の具体的な値が記載さている。優先度設定項目２７２のうち、取得データ数２７４とは、学習用モニタリング部２１０によって得られた各データ系列のうち、応答時間推定誤差計算部２２０に入力するデータ系列数を指す。
【０１１０】
優先度設定式２７５とは、各データ系列に与える優先度を計算するための計算式である。優先度設定式２７５に記載される計算式は、各データ系列に対して一意に優先度が設定できる式であればよい。図９において優先度設定式２７５に設定されている式「IF(X.avg > 60) THEN X.優先度=PRIO; PRIO++」は、あるひとつのデータ系列Xをなす値の平均値X.avgが60を超える場合、そのデータ系列Xの優先度X.優先度を変数PRIOの値に設定し、変数PRIOに１を加算することを意味している。変数PRIOに１を加算するため、次に平均値が60を超えるデータ系列が見つかった場合には、その優先度はデータ系列Xよりも１大きくなる。
【０１１１】
除外データ２７６とは、応答時間推定誤算計算部に入力しないデータ系列の系列名を指している。図９の例では、設定値として「fs:Mbfsfree」、「fs:fsused」が記載されている。これは、学習用モニタリング部２１０が出力するデータ系列のうち、データ系列「fs:Mbfsfree」と、データ系列「fs:fsused」を除外することを意味する。
【０１１２】
尚、図９の設定内容はあくまで一例である。図９ではひとつのアプリケーションAP1に関する設定のみ記載されているが、２つ以上のアプリケーションに関する設定をデータ優先度設定情報２７０に記載することとしてもよい。その際、優先度設定項目２７２にて設定する項目は、アプリケーション毎に別々に設定してもよい。例えば、アプリケーションAP1の優先度設定項目としては、図９と同様に、取得データ数、優先度設定式、除外データを設定する一方、アプリケーションAP2の優先度設定項目として取得データ数、優先度設定式を設定し、除外データについては設定しないこととしてもよい。また、別のアプリケーションAP3の優先度設定項目として、除外データのみを設定することとしてもよい。
【０１１３】
第２の実施の形態では、除外データ２７６にて指定したデータ系列を、学習用モニタリング部２１０が出力したデータ系列から除外することとした。その代わりに、除外データ２７６にて指定したデータ系列については、取得をしないように学習用モニタリング部２１０に指示し、この指示に応じて、学習用モニタリング部２１０が指示を受けたデータ系列の取得を中止することとしてもよい。
【０１１４】
応答時間推定誤差計算部２２０は、応答時間計測部１２０によって得られたモニタリング対象となるアプリケーション２５０の応答時間と、推定元データ選択部２６０にて選択されたデータ系列の組み合わせとを使って、応答時間の推定誤差を計算する。応答時間推定誤差計算部２２０は、応答時間計測部１２０によって取得した応答時間を目的変数とし、推定元データ選択部２６０にて選択されたデータ系列の組み合わせを説明変数とする線形重回帰分析を行う。また、応答時間推定誤差計算部２２０は、その線形重回帰分析の結果（線形回帰結果）に対する残差平方和を計算して、それを応答時間の推定誤差とする。応答時間推定誤差計算部２２０の出力は、モニタリング情報から応答時間を推定するための推定関数、推定誤差、必要なモニタリング情報の系列名（組み合わせをなすデータ系列それぞれの名称）である。応答時間推定誤差計算部２２０の出力を組み合わせリストとも呼ぶものとする。
【０１１５】
線形重回帰分析とは、目的となるデータ系列の推定に複数のデータ系列を使用して線形近似関数の係数を計算することを指す。本発明では、応答時間の推定が目的なので、目的となるデータ系列として、応答時間計測部１２０によって得られた応答時間を選択し、推定に利用するデータとして、学習用モニタリング部２１０によって得られたデータ系列のうち、推定元データ選択部２６０によって得られたデータ系列の組み合わせを使用する。
【０１１６】
線形重回帰分析は、線形単回帰分析と異なり、傾きが複数のデータ系列から構成される。線形重回帰の線形式一般形を式５に示す。Yは推定したい目的変数である。x1 および x2は説明変数であり、推定に使用するデータ系列となる。b0、b1、b2は当該線形式の係数である。式５は、推定元データ系列が2つの場合の線形式一般形を示している。推定元データ系列がn個（ｎは自然数）の場合は、b0および、b1〜bnとx1〜xnの積をn個足し合わせた式となる。式５のような2変数の場合、b0〜b2を計算することによって、求めたい線形近似関数を得ることができる。b0〜b2の計算方法についての説明はここでは割愛する（回帰モデルに関する文献を参考のこと）。
【０１１７】
【数５】
2018010562.tif 000007
【０１１８】
モニタリングパターン作成部２４０は、応答時間推定誤差計算部２２０で得られた各データ系列の応答時間推定誤差と、データ取得コスト表２３０に記載の各データ系列の取得コストとからモニタリングパターンを作成する。
【０１１９】
モニタリングパターン作成部２４０は、応答時間推定誤差計算部２２０によって作成された組み合わせリスト、データ取得コスト表２３０の取得データ名２３１、取得データコスト２３２を入力として、モニタリングパターンを出力とする。具体的には、最初にデータ系列の組み合わせに対する応答時間推定誤差３１１のパレート最適解集合を全データ系列の組み合わせから選別し、選別された各データ系列のデータ系列名、当該データ系列の応答時間推定誤差３１１、線形回帰関数のb0値３１４、線形回帰関数のb1値３１５、線形回帰関数のb2値３１６を一組としてモニタリングパターンを作成する。
【０１２０】
モニタリングパターン格納部３１０は、運用系計算機３００でモニタリングするデータ系列のリストを格納する。図１０に示す通り、モニタリングパターン格納手段３１０は、取得データ名２３１、取得データコスト２３２、応答時間推定誤差３１１、回帰関数b0値３１４、回帰関数b1値３１５、回帰関数b2値３１６から構成される。図１０は、説明変数が2変数で、推定する係数がb0〜b2の場合のモニタリングパターン格納部３１０のデータ構造と値の例を示している。
【０１２１】
応答時間推定誤差計算部２２０の説明でも言及した通り、推定元データ系列がn個の場合には、b0〜bnまでの推定係数が存在する。このため、推定係数の個数に応じてモニタリングパターン格納部３１０が格納する推定係数の数は増減する。例えば、説明変数が４変数であれば、回帰関数b0値３１４、回帰関数b1値３１５、回帰関数b2値３１６に加えて、不図示の回帰関数b3値、回帰関数b4値をモニタリングパターン格納部３１０に格納する。応答時間推定誤差３１１、回帰関数b0値３１４、回帰関数b1値３１５、回帰関数b2値３１６は、応答時間推定誤差計算部２２０の出力として得られる。
【０１２２】
取得データ名２３１、取得データコスト２３２は、データ取得コスト表２３０から読み出す値である。ただし、取得データ名２３１に２つのデータ系列名が記載されていること、取得データコスト２３２に２つの値の和が記載されている点で、コンピュータシステム１と異なる。
【０１２３】
コンピュータシステム１では、単回帰分析を行うため説明変数はひとつであり、応答時間推定部３３０が応答時間を推定する際に必要なデータ系列はひとつである。このため、運用系計算機３にて応答時間を推定する際、必要となる取得データコストは、そのデータ系列ひとつを取得するためのコストである。
【０１２４】
これに対して、コンピュータシステム２では、重回帰分析を行い、説明変数は２つであり、応答時間推定部３３０が応答時間を推定する際に必要なデータ系列も２つである。このため、運用系計算機３にて応答時間を推定する際、必要となる取得データコストは、それら２つのデータ系列それぞれを取得するためのコストの合計である。
【０１２５】
このため、図１０の取得データコストには、２つのデータ系列の取得データコストの和が格納されている。例えば、取得データ名２３１「CPU使用率  メモリ使用量」のモニタリングパターンを適用して応答時間を推定する場合、CPU使用率の取得データコストである１０と、メモリ使用量の取得データコストである４との合計として、「１０＋４」の取得データコストが必要であり、この値が対応する取得データコスト２３２の欄に格納されている。図２のデータ取得コスト表２３０を合わせて参照されたい。
【０１２６】
モニタリングパターン格納部３１０は複数のモニタリングパターンを格納する。これら複数のモニタリングパターンのいずれかをモニタリングパターン切り替え部３２０が選択して、その選択したモニタリングパターンを適用して応答時間推定部３３０が応答時間を推定する。
【０１２７】
運用系モニタリング部３５０は、モニタリングパターン切り替え部３２０が選択したモニタリングパターンに対応するデータ系列を取得するためのモニタリングを行う。例えば、取得データ名２３１が「CPU使用率  メモリ使用量」のモニタリングパターンを選択した場合、運用系モニタリング部３５０はCPU使用率とメモリ使用量を取得する。このとき、運用系モニタリング部３５０は、他の動作状態、例えばネットワーク使用率、CPU温度等を取得しない。このため、このときに運用系モニタリング３５０で発生する負荷は、CPU使用率及びメモリ使用量をモニタリングするために要する負荷のみである。ネットワーク使用率、CPU温度等、応答時間推定誤差計算部２２０が回帰分析を行うために必要としない他のデータ系列を取得するための負荷は発生しない。
【０１２８】
応答時間推定部３３０は、モニタリングパターン切り替え部３２０が選択したモニタリングパターンの回帰関数に対して、同じくモニタリングパターン切り替え部３２０の選択に基づいて運用系モニタリング部３５０がモニタリングする動作状態のデータ系列を適用することにより、現在の応答時間を推定し、その推定値を例えば運用系計算機３００の不図示の表示装置に出力する。
【０１２９】
また、応答時間推定部３３０は求めた推定値と予め設定された閾値とを比較し、その比較結果に応じて、モニタリングパターン切り替え部３２０に対してモニタリングするデータ系列の切り替えを要求する。閾値を超過した場合は、取得するデータコストが現在モニタリングしているデータ系列よりも低いものに切り替えるように要求する。一旦閾値を超えた応答時間が、再び閾値を下回った場合は、取得するデータコストが現在モニタリングしているデータ系列よりも高いものに切り替えるように要求する。
【０１３０】
推定には、回帰関数b0値３１４、回帰関数b1値３１５、回帰関数b2値３１６を使用する。応答時間推定誤差３１１、推定関数３１７、係数値３１８を使用する。また、応答時間推定部３３０に予め供えられている閾値を推定した応答時間が超過した場合に、モニタリングパターン切り替え部３２０に対して、モニタリングするデータ系列の切り替えを要求する。閾値を超過した場合は、取得するデータコストが現在モニタリングしているデータ系列よりも低いものに切り替えるように要求し、一旦閾値を超えた応答時間が、再び閾値を下回った場合は、取得するデータコストが現在モニタリングしているデータ系列よりも高いものに切り替えるように要求する。
【０１３１】
運用系モニタリング部３５０は、運用系計算機４の動作状態を測定、記録する。運用系モニタリング部３５０は、モニタリングパターン切り替え部３２０からのモニタリング対象となるデータ系列名を入力とし、モニタリング情報を出力とする。具体的には、CPU使用率や、メモリ使用量、ネットワーク転送量やディスク使用量などが該当する。運用系モニタリング部３５０で得た情報は、応答時間推定部３３０に入力される。
【０１３２】
アプリケーション３４０は、コンピュータシステム１にて応答時間を推定する対象となるプログラム（監視対象プログラム）である。アプリケーション３４０は運用系計算機３００で動作し、クライアントからのリクエストを処理するためのプログラムである。上述のように、アプリケーション３４０としては、例えばApache HTTP server project (https://httpd.apache.org/)のApache HTTP server、マイクロソフト社のIIS(Internet Information Service)7等のウェブサーバが考えられるが、クライアントからのリクエストを処理するためのプログラムであればどのようなものであってもよい。
【０１３３】
[動作の説明]
次に、図１１を参照して推定元データ選択部２６０の動作について説明する。最初に、推定元データ選択部２６０は、データ優先度設定情報２７０から、応答時間の推定対象となるアプリケーション３４０の優先度設定を取得する（ステップS18）。次に、学習用モニタリング部２１０が出力するモニタリング情報から「除外データ２７６」に該当するデータ系列を除外する（ステップS19）。次に、除外データ２７６に記載のデータ系列を除外した残りのデータ系列に対して、優先度設定式２７５を適用して、各データに優先度を設定する（ステップS20）。
【０１３４】
次に、推定元データ選択部２６０は、優先度を設定したデータ系列の中から、優先度の高い順に取得データ数２７４の値分だけデータ系列を取り出す（ステップS21）。図１０のモニタリングパターン格納部３１０の値では、アプリケーションＡＰ１の取得データ数２７４は10である。この場合、ステップS20にて優先度を設定されたデータ系列のうち、優先度の高いものから順に10個のデータ系列を取り出すことになる。
【０１３５】
最後に、推定元データ選択部２６０は取り出したデータ系列の組み合わせリストを作成する（ステップS22）。本実施形態では目的変数が２つの線形重回帰分析を行う。また、図１０のモニタリングパターン格納部３１０では取得データ数２７４は１０である。この場合、取得データ数２７４に対応する１０個のデータ系列から、２つの目的変数に対応する２個のデータ系列を選んでなる組み合わせのリストを作成する。
【０１３６】
取得データ数２７４がｎ個のとき、組み合わせのリストに格納される組み合わせは、２つの目的変数に対応する組み合わせ、３つの目的変数に対応する組み合わせ、…、ｎ個の目的変数に対応する組み合わせからなる。これらの組み合わせ全体の数は式６、式７から求めることができる。式６は、ｎ個のデータ系列の中から２個を取り出す組み合わせ数nC2、ｎ個のデータ系列の中から３個を取り出す組み合わせ数nC3、…、ｎ個のデータ系列の中からｎ個を取り出す組み合わせ数nCnの総和を表す。式７は、ｎ個のデータ系列の中からｒ個を取り出す組わせ数nCrを計算する式である。ｎ、ｒは自然数である。
【０１３７】
【数６】
2018010562.tif 000008
【数７】
2018010562.tif 000009
【０１３８】
[効果の説明]
第２の実施の形態では、データ系列の組み合わせについて取捨選択した後に、応答時間推定誤差計算部２２０によって重回帰分析を実施する。このため、本実施の形態によれば、複数のデータ系列を使って重回帰分析を実施する場合であっても、データ系列の組み合わせ回数が肥大化するのを抑制することができる。その結果、重回帰分析の所要時間を短縮することができる。
【０１３９】
[第３の実施の形態]
[概要]
本発明の第３の実施の形態であるコンピュータシステム３について説明する。図１２を参照すると、コンピュータシステム３は、近似多項式推定部２８０と、近似多項式リスト２９０を備える点でコンピュータシステム１の構成と異なる。また、応答時間推定誤差計算部２２０の動作が一部異なる。また、モニタリングパターン格納部３１０のデータ構造が一部異なる。コンピュータシステム３の大きな特徴は、応答時間推定誤差計算部２２０が、応答時間測定部によって得られた応答時間と、学習用モニタリング部２１０によって得られた各データ系列について、非線形単回帰分析を実施することである。
【０１４０】
[各部の説明]
これらの各部はそれぞれ概略つぎのように動作する。
【０１４１】
近似多項式推定部２８０は、近似多項式リスト２９０に記載の近似多項式モデルのひとつに基づく非線形単回帰分析の結果（回帰分析結果）を、応答時間推定誤差計算部２２０から受け取る。ここで、目的変数は応答時間計測部１２０で計測した応答時間であり、説明変数は学習用モニタリング部２１０で取得したデータ系列のいずれかひとつである。回帰分析結果はモデル式２９２の各係数の値と推定誤差（残差平方和）を含む。
【０１４２】
これにより、近似多項式推定部２８０は、ひとつのデータ系列について、近似多項式モデルが異なる複数の回帰分析結果を受け取る。例えば、データ系列「CPU使用率」について、累乗モデル、指数モデル、…、３次関数の各モデル式で回帰分析をした結果を受け取る。
【０１４３】
また、近似多項式推定部２８０は、ひとつのデータ系列についてのこれら複数の回帰分析結果に含まれる推定誤差を互いに比較し、推定誤差が最も低い回帰分析結果に対応する近似多項式モデルを、そのデータ系列に基づいて応答時間を推定する際に用いる近似多項式モデルとして選択する。
【０１４４】
例えば、データ系列「CPU使用率」について、累乗モデル、指数モデル、…、３次関数の各モデル式で回帰分析をして得られた推定誤差を互いに比較する。そして、推定誤差が最も低いモデル式を、CPU使用率に基づいて応答時間を推定する際に用いる近似多項式モデルとして選択する。
【０１４５】
そして、近似多項式推定部２８０は選択結果をモニタリングパターン格納部３１０に格納する。選択した近似多項式モデルのモデル式２９２を推定関数３１７に格納する。その回帰分析結果の各係数の値を係数値３１８に格納する。その回帰分析結果の推定誤差を応答時間推定誤差３１１に格納する。
【０１４６】
近似多項式リスト２９０は、近似多項式推定部２８０に入力するモデル式２９２のリストである。図１３に示す通り、近似多項式リスト２９０は、モデル名称２９１、モデル式２９２、未知係数リスト２９３を含む。モデル名称２９１は近似多項式の名称である。モデル式２９２は近似多項式の一般形を表している。未知係数リスト２９３は、モデル式２９２の一般形のうち、決定されていない係数のリストを表している。例えば、図１３の上から一番目の近似多項式のモデル名称２９１は累乗モデルであり、そのモデル式２９２はY=aX^bであり、モデル式２９２のうち、まだ決定していない係数はaとbである。
【０１４７】
応答時間推定誤差計算部２２０は、近似多項式推定部２８０から、応答時間測定部１２０で計測した応答時間、学習用モニタリング部２１０で取得したデータ系列、近似多項式リスト２９０に記載のモデル式２９２を受け取る。これら受け取った応答時間、データ系列、モデル式２９２に基づいて、応答時間推定誤差計算部２２０は非線形単回帰分析を実施する。
【０１４８】
応答時間推定誤差計算部２２０は、学習用モニタリング部２１０によって取得したモニタリング情報と、応答時間計測部１２０によって取得した応答時間を入力とする。また、応答時間推定誤差計算部２２０は、モニタリング情報から応答時間を推定するための推定関数、推定誤差ならびに必要なモニタリング情報の系列名を出力とする。
【０１４９】
非線形単回帰分析とは、目的となるデータ系列の推定（以下、目的変数と呼ぶ）にひとつのデータ系列（以下、説明変数と呼ぶ）を使用して非線形近似関数の係数を計算する回帰分析である。線形回帰分析では、近似式が線形式であることが決まっていたが、非線形回帰では、近似式が線形ではないということしか決定していない。このため、本実施の形態では、近似式のモデルを予め入力して、当該モデル式２９２が目的変数と説明変数の関係を「どの程度」うまく表しているかどうかを評価する。
【０１５０】
評価の基準とする定量的な値として残差平方和を利用する。非線形回帰分析における未知係数の算出には最小二乗法を用いる。非線形回帰分析における最小二乗法の計算式としては、第１の実施の形態で用いた式２、式３ではなく、最急降下法、ニュートン法、ガウスニュートン法などを用いる。応答時間、モニタリングによって得られたデータ系列、モデル式２９２から、モデル式２９２の係数、残差平方和を出力することができれば、どの方法を用いてもよい。
【０１５１】
モニタリングパターン格納部３１０は、運用系計算機３００でモニタリングするデータ系列のリストを格納する。図１４に示す通り、モニタリングパターン格納部３１０は、取得データ名２３１、取得データコスト２３２、応答時間推定誤差３１１、推定関数３１７、係数値３１８を互いに関連付けて記憶する。取得データ名２３１、取得データコスト２３２、応答時間推定誤差３１１は第１の実施の形態と同様である。推定関数３１７は、取得データ名２９１が示すデータ系列を推定するために使用するモデル式である。係数値３１８は、推定関数３１７の未知係数の値である。
【０１５２】
上述の第１、２の実施の形態では、説明変数とするデータ系列に関係なく、常に同じモデル式を用いて応答時間の推定値を計算する。このため、第１、２の実施形態では、モニタリングパターン格納部３１０に推定関数３１７の項目はない。これに対して、第３の実施の形態では、近似多項式推定部２８０によって、説明変数とするデータ系列毎にモデル式を定める。このため、第３の実施の形態ではモニタリングパターン格納部３１０に推定関数の項目を追加している。
【０１５３】
データ系列がCPU使用率の場合を例に挙げて説明する。モニタリングパターン格納部３１０に図１４の値が格納されているとき、取得データ名２３１「CPU使用率」に対応する値として、推定関数３１７にはY=aX^bが格納されている。係数値３１８にはa=1.22、b=2.565が格納されている。これは、CPU使用率に基づいて応答時間を推定する場合、CPU使用率をXとして、応答時間の推定値YをY=1.22X^2.565で求めることを示している。
【０１５４】
モニタリングパターン作成部２４０は、応答時間推定誤差計算部２２０で得られた各データ系列の応答時間推定誤差３１１と、データ取得コスト表２３０に記載の各データ系列の取得コストとからモニタリングパターンを作成する。モニタリングパターン作成部２４０は、応答時間推定誤差計算部２２０によって作成された組み合わせリスト（応答時間推定誤差計算部２２０の構成に記載の応答時間を推定するための推定関数、推定誤差ならびに必要なモニタリング情報の系列名）とデータ取得コスト表の取得データ名２３１と取得データコスト２３２を入力として、モニタリングパターンを出力とする。具体的には、最初に、あるデータ系列に対する応答時間推定誤差３１１のパレート最適解集合を全データ系列から選別し、選別された各データ系列のデータ系列名、当該データ系列の応答時間推定誤差３１１、推定関数３１７、係数値３１８、取得データコスト２３２を一組としてモニタリングパターンを作成する。
【０１５５】
応答時間推定部３３０は、運用系モニタリング部３５０にてモニタリングしているデータ系列と、モニタリングパターン切り替え部３２０が選択したモニタリングパターンに基づいて、アプリケーション３４０の現在の応答時間を推定する。応答時間推定部３３０の入力は運用系モニタリング部３５０にてモニタリングしているデータ系列である。応答時間推定部３３０の出力は応答時間の推定値である。
【０１５６】
推定値を求める際、応答時間推定部３３０は、推定に用いるデータ系列に対応する推定関数３１７に、同じく推定に用いるデータ系列に対応する係数値３１８を適用することにより、推定関数３１７の係数を特定した上で、そのデータ系列を当てはめる。
【０１５７】
応答時間推定部３３０は予め閾値を格納している。応答時間推定部３３０は、求めた推定値と閾値との大小を比較する。比較結果に応じて、応答時間推定部３３０はモニタリングパターン切り替え部３２０に対してモニタリングするデータ系列の切り替えを要求する。
【０１５８】
推定値が閾値を超過した場合、応答時間推定部３３０は、取得するデータコストが現在モニタリングしているデータ系列よりも低くなるものに切り替えるようにモニタリングパターン切り替え部３２０に要求する。
【０１５９】
いま、コンピュータシステム３は次のようにして応答時間を推定しているものとする。モニタリングパターン格納部３１０が図１４の値を格納している。運用系モニタリング部３５０はCPU使用率をモニタリングし、応答時間推定部３３０はCPU使用率に基づいて応答時間を推定している。ここで、推定値が閾値を超えた場合は次のようになる。
【０１６０】
応答時間推定部３３０は、取得データコストが今よりも低くなるようなモニタリングパターンへの切り替えを、モニタリングパターン切り替え部３２０に要求する。この要求を受けて、モニタリングパターン切り替え部３２０は、CPU使用率の次に取得データコストが高いデータ系列のモニタリングパターンをモニタリングパターン格納部３１０の中から探す。該当するのは取得データコストが４のメモリ使用量である。このため、モニタリングパターン切り替え部３２０は、応答時間推定部３３０に対してメモリ使用量に基づくモニタリングパターンへの切り替えを要求する。
【０１６１】
また、モニタリングパターン切り替え部３２０は、運用系モニタリング部３５０に対して、以後はCPU使用率ではなくメモリ使用量をモニタリングするように要求する。この要求を受けて、運用系モニタリング部３５０は、CPU使用率のモニタリングを終了し、メモリ使用量のモニタリングを開始する。
【０１６２】
一方、一旦閾値を超えた応答時間が、再び閾値を下回った場合、応答時間推定部３３０は、取得データコストが今よりも高くなるようなモニタリングパターンへの切り替えを、モニタリングパターン切り替え部３２０に要求する。
【０１６３】
[動作の説明]
次に、図１５を参照してコンピュータシステム３における応答時間測定用計算機１００と学習用計算機２００の動作について説明する。ここでは、疑似負荷発生部１１０によって疑似負荷を発生させ、応答時間測定部によって応答時間を測定し、学習用モニタリング部２１０によって各データ系列を取得し、近似多項式推定部２８０によって、近似多項式として用いるモデル式２９２、モデル式２９２の係数、推定誤差を決定するまでの動作について説明する。
【０１６４】
学習用計算機２００にてアプリケーション２５０を予め起動しておく。疑似負荷発生部１１０は疑似負荷となる複数のリクエストを発生し、アプリケーション２５０に送信する。応答時間計測部１２０は、リクエスト毎に、リクエスト送信時刻と、そのリクエストの処理結果の受信時刻とを測定し、その差分を応答時間として求める（ステップS23）。
【０１６５】
次に、学習用モニタリング部２１０は疑似負荷発生時のモニタリング情報を取得する（ステップS24）。
【０１６６】
次に、近似多項式推定部２８０は、取得したモニタリング情報の中から、近似多項式の設定と推定誤差の計算が終了していないデータ系列をひとつ取り出す（ステップS25）。
【０１６７】
該当するデータ系列が存在する間は（ステップS26のNO）、近似多項式推定部２８０と応答時間推定誤差計算部２２０は連携して、そのデータ系列に対し、近似多項式を設定（モデル式２９２の指定、当該モデル式２９２の未知係数計算）して、推定誤差を計算する（ステップS27）。
【０１６８】
すべてのデータ系列に対して、近似多項式の設定と推定誤差の計算が終了する（ステップS26のYES）と、応答時間推定誤差計算部２２０及び近似多項式推定部２８０は、データ系列、近似多項式、推定誤差の組み合わせリストをモニタリングパターン作成部２４０に入力する（ステップS28）。
【０１６９】
図１６を参照してステップS27について更に説明する。あらかじめ、疑似負荷発生部１１０が発生した一連のリクエストに関し、応答時間計測部１２０は応答時間を計測し、学習用モニタリング部２１０は例えばCPU使用率等のひとつのデータ系列を取得しているものとし、これら応答時間、データ系列が近似多項式推定部２８０に入力されているものとする。
【０１７０】
最初に、近似多項式推定部２８０は、近似多項式リスト２９０の中から、未選択の近似多項式を一つ選択する（ステップS29）。
【０１７１】
該当する近似多項式が存在する場合（ステップS30のNO）、応答時間推定誤差計算部２２０は、当該近似多項式を使って、当該データ系列と応答時間の非線形回帰関数を計算する（ステップS31）。
【０１７２】
次に、応答時間推定誤差計算部２２０は、当該回帰関数と応答時間の残差平方和を計算し、推定誤差とする（ステップS32）。
【０１７３】
すべての近似多項式についてステップS31とステップS32の処理を実施する（ステップS30のYES）と、近似多項式推定部２８０は、各近似多項式の推定誤差のうち、推定誤差が最も低くなる近似多項式を選択する（ステップS33）。
【０１７４】
最後に、近似多項式推定部２８０は、そのデータ系列に基づいて応答時間を推定する場合に用いる組み合わせとして、そのデータ系列の名称、ステップS33でそのデータ系列に選択した近似多項式（モデル式、係数）、その近似多項式の推定誤差の組み合わせを選択する（ステップS34）。近似多項式推定部２８０は、選択した組み合わせをなすデータ系列名、モデル式、係数、推定誤差を、それぞれ順に、モニタリングパターン格納手段３１０の取得データ名２３１、推定関数３１７、係数値３１８、応答時間推定誤差３１１に格納する。尚、取得データコスト２３２については、モニタリングパターン作成部２４０が該当する値をデータ取得コスト表２３０から読み出して格納する。
【０１７５】
[効果の説明]
コンピュータシステム３では、主に近似多項式推定部２８０、応答時間推定誤差計算部２２０により、非線形式による近似を行うことができるようになる。このため、本実施の形態によれば、線形単回帰分析を行う第１の実施の形態よりも高い精度で応答時間を推定することができる。
【０１７６】
［第４の実施の形態］
本発明の一実施の形態であるコンピュータシステム４について説明する。コンピュータシステム４は、応答時間測定用計算機１００、学習用計算機２００、運用系計算機３００からなる。応答時間測定用計算機１００、学習用計算機２００、運用系計算機３００はいずれもコンピュータである。
【０１７７】
応答時間測定用計算機１００、学習用計算機２００、運用系計算機３００は、具体的には、パーソナルコンピュータ、ワークステーション等であり、それぞれ、ハードウェアとしては、不図示の主記憶装置、補助記憶装置、入力装置、出力装置、通信インタフェース装置、内部バスを備える。
【０１７８】
主記憶装置は一乃至複数のCPU(Central Processing Unit)、RAM(Read Only Memory)からなる。補助記憶装置はHDD(Hard Disk Drive)、SSD(Solid State Drive)等からなる。入力装置は例えばキーボード、マウス等である。出力装置は例えばCRT(Cathode Ray Tube)、液晶ディスプレイである。通信インタフェース装置は他コンピュータとデータ通信を行うためのインタフェース装置であり、例えば有線乃至無線のLAN(Local Area Network)カード、USB(Universal Serial Bus)、Bluetooth等のインタフェース装置である。内部バスはこれらのハードウェアを互いに接続する。応答時間測定用計算機１００と学習用計算機２００の間、学習用計算機２と運用系計算機３００の間は、データ通信回線を介して接続されている。
【０１７９】
また、応答時間測定用計算機１００、学習用計算機２００、運用系計算機３００は、不図示のOS(Operating System)を備え、そのOS上で実行される様々なプログラムを備える。
【０１８０】
応答時間測定用計算機１００、学習用計算機２００、運用系計算機３００のうち、学習用計算機２００、運用系計算機３００は、少なくとも同じ監視対象プログラム３４０が実行可能なOSで動作するコンピュータである。基本的には、学習用計算機２００、運用系計算機３００は、同一アーキテクチャ、同一ハードウェア構成を有し、同一OSで動作するコンピュータである。最も単純な例は、同一メーカー、同一型番のコンピュータを２台購入し、一方を学習用計算機２００として用い、他方を運用系計算機３００として用いるものがある。
【０１８１】
更に、コンピュータシステム４は、後述する監視対象プログラムの制御対象となるハードウェア、そのハードウェアを制御するためのドライバプログラム等のソフトウェアを備える。制御対象のハードウェアを介したネットワーク接続を行う場合、学習用計算機２００、運用系計算機３００はどちらもそれらのハードウェア、ソフトウェア、ネットワーク接続を備える。例えば、監視対象プログラムがインターネット上にウェブページを公開するためのウェブサーバプログラムである場合、学習用計算機２００、運用系計算機３００は、どちらも、インターネット接続のための通信インタフェース装置、その通信インタフェース装置のドライバプログラム、その通信インタフェース装置に接続されたインターネット接続回線を有する。
【０１８２】
以下に各計算機の機能ブロックについて説明するが、これら機能ブロックは、いずれも、上述のハードウェア及びソフトウェアを適宜組み合わせることにより実現される。
【０１８３】
応答時間測定用計算機１００は、疑似負荷発生部１１０、応答時間計測部１２０を備える。
【０１８４】
疑似負荷発生部１１０は、後述する監視対象プログラム２５０に疑似的な負荷をかけるためのリクエストを生成する。例えば、監視対象プログラム２５０がウェブサーバプログラムの場合、リクエストとしてはhttpリクエストを生成することが考えられる。生成したリクエストは応答時間測定用計算機１００から学習用計算機２００に送信され、学習用計算機２００上で実行中の監視対象プログラム２５０に入力される。
【０１８５】
応答時間計測部１２０は、疑似負荷発生部１１０が監視対象プログラム２５０にリクエストを送信した時刻と、疑似負荷発生部１１０がリクエストの処理結果を監視対象プログラム２５０から受信した時刻の差分、即ち、応答時間を測定する。
【０１８６】
学習用計算機２００は、監視対象プログラム２５０、学習用モニタリング部２１０、回帰分析部２２０を備える。
【０１８７】
監視対象プログラム２５０は、後述するように運用系計算機３００にて実行される、監視対象プログラム３４０と同じバージョンの同じコンピュータプログラムであり、学習用計算機２００にて実行される。
【０１８８】
学習用モニタリング部２１０は、疑似負荷の処理中を含む、監視対象プログラム２５０を実行中の学習用計算機２００の動作状態を示す様々な値を測定する。学習用モニタリング部２１０は、応答時間計測部１２０にて計測する応答時間に対応する測定値が得られるように測定を行う。このため、学習用モニタリング部２１０は、監視対象プログラム２５０の実行前から実行後まで一定時間毎に各動作状態の測定値を測定した上で、応答時間計測部１２０での計測に対応する測定値を抽出することが考えられる。或いは、応答時間計測部１２０での計測と同期して測定することとしてもよい。
【０１８９】
学習用モニタリング部２１０は、例えばsysstat(http://sebastien.godard.pagesperso-orange.fr/)のようなコンピュータのパフォーマンス監視ツールである。学習用モニタリング部２１０が測定する動作状態は、例えば、学習用計算機２００のCPU(Central Processing Unit)使用率、CPU温度、メモリ使用量、ネットワーク使用量が考えられるが、これらはあくまで例であり、学習用計算機２００の動作状態を示す測定値であればどのようなものであってもよい。
【０１９０】
以下、学習用モニタリング部２１０が測定する、学習用計算機２００の一の動作状態の測定値からなる測定値群を、一の学習用測定値群と呼ぶものとする。ある学習用測定値群をなす測定値のひとつを学習用測定値と呼ぶものとする。学習用モニタリング部２１０が測定する全ての動作状態の全ての測定値群を総称して、学習用モニタリング情報と呼ぶものとする。
【０１９１】
回帰分析部２２０は、学習用モニタリング情報に含まれる、一乃至複数の学習用測定値群を説明変数とし、応答時間測定用計算機１００２にて測定した応答時間を目的変数とする回帰分析を行って、その結果を回帰分析結果として出力する。回帰分析結果は回帰関数と推定誤差を含む。回帰関数を求めるとは、予めモデル式が定められている場合にはそのモデル式の各係数を特定することである。一方、モデル式が未定の場合には、モデル式を特定すると共に、そのモデル式の各係数を特定することである。回帰分析部２２０は、例えば、R言語で記述した統計処理用のコンピュータプログラムである。
【０１９２】
回帰分析部２２０にて行う回帰分析の手法には様々なものを用いることができる。例えば、単一の学習用測定値群を説明変数とする単回帰分析であってもよいし、複数の学習用測定値群を説明変数とする重回帰分析であってもよい。また、回帰分析部２２０にて行う回帰分析は、線形回帰分析であっても非線形回帰分析であってもよい。非線形回帰分析を行う場合のモデル式の例としては、累乗モデル（Y=aX^b）、指数モデル(Y=ab^X)、漸近指数モデル(Y=ab^X+c)、ゴンペルツ成長モデル(Y=ab^(exp(-c*X))、3次関数(Y=aX+bX^2+cX^3+d)等が考えられるが、他のモデル式であってもよい。尚、Xは説明変数であり、Yを目的変数であり、a,b,c,dは係数である。
【０１９３】
運用系計算機３００は、監視対象プログラム３４０、運用系モニタリング部３５０、応答時間推定部３３０を備える。
【０１９４】
監視対象プログラム３４０は、上述のように、学習用計算機２００にて実行される監視対象プログラム２５０と同じバージョンの同じコンピュータプログラムである。
【０１９５】
運用系モニタリング部３５０は、監視対象プログラム３４０を実行中の運用系計算機３００の動作状態を示す様々な値を測定する。学習用モニタリング部２１０と同様に、運用系モニタリング部３５０は、例えばsysstat(http://sebastien.godard.pagesperso-orange.fr/)のようなコンピュータのパフォーマンス監視ツールである。運用系モニタリング部３５０が測定する動作状態は、例えば、運用系計算機３００のCPU(Central Processing Unit)使用率、CPU温度、メモリ使用量、ネットワーク使用量が考えられるが、これらはあくまで例であり、運用系計算機３００の動作状態を示す測定値であればどのようなものであってもよい。運用系モニタリング部３５０は、学習用モニタリング部２１０と同じ動作状態を測定する機能を有するものとする。
【０１９６】
例えば、図１８に示すように、学習用モニタリング部２１０がＣＰＵ温度測定部２１０Ａ、ＣＰＵ使用率測定部２１０Ｂ、メモリ使用量測定部２１０Ｃ、ディスク使用量測定部２１０Ｄ、ネットワーク転送量測定部２１０Ｅを備えるものとする。
【０１９７】
ＣＰＵ温度測定部２１０Ａは学習用計算機２００のＣＰＵ温度を測定し、その測定値を示す信号を出力する。ＣＰＵ使用率測定部２１０Ｂは学習用計算機２００のＣＰＵ使用率を測定し、その測定値を示す信号を出力する。メモリ使用量測定部２１０Ｃは学習用計算機２００で使用されているメモリの量を測定し、その測定量を出力する。ディスク使用量測定部２１０Ｄは学習用計算機２００の補助記憶装置のうち、既に使用済みの領域の大きさを測定し、その測定量を出力する。ネットワーク転送量測定部２１０Ｅは学習用計算機２００のネットワーク転送に係る量、例えば測定時点における転送速度を測定し、その測定値を出力する。
【０１９８】
このとき、図１９に示すように、運用系モニタリング部３５０は、学習用モニタンリング部２１０と同様に、ＣＰＵ温度測定部３５０Ａ、ＣＰＵ使用率測定部３５０Ｂ、メモリ使用量測定部３５０Ｃ、ディスク使用量測定部３５０Ｄ、ネットワーク転送量測定部３５０Ｅを備える。測定部２１０Ａ〜２１０Ｅはそれぞれ同名の測定部３５０Ａ〜３５０Ｅに対応する。
【０１９９】
以下、運用系モニタリング部３５０が測定する、一の動作状態の測定値からなる測定値群を運用系測定値群と呼ぶものとする。ある運用系測定値群をなす測定値のひとつを運用系測定値と呼ぶものとする。運用系モニタリング部３５０が測定する全ての動作状態の全ての測定値群を総称して、運用系モニタリング情報と呼ぶものとする。
【０２００】
学習用モニタリング部２１０と運用系モニタリング部３５０とは、測定可能な動作状態は同じだが、実際に測定する動作状態は異なる。学習用モニタリング部２１０は測定可能な動作状態を全て測定する。一方、運用系モニタリング部３５０は、後述する応答時間推定部３３０が、応答時間を推定する際に用いる動作状態のみを測定する。このため、運用系モニタリング部３５０では、そのときに動作状態を測定している測定部を動作させる分の負荷だけが発生し、それ以外の測定部を動作させる分の負荷は発生しない。
【０２０１】
応答時間推定部３３０は、回帰分析部２２０が出力する回帰分析結果と、運用系モニタリング部３５０が出力する運用系モニタリング情報（一乃至複数の運用系測定値群）に基づいて、運用系計算機３００上で実行中の監視対象プログラム３４０の応答時間の推定値を求める。学習用計算機２００上の監視対象プログラム２５０の応答時間については、応答時間計測部１２０によって直接的に計測した。これに対して、運用系計算機３００の監視対象プログラム３４０の応答時間については、そうした直接的な計測を行わない。
【０２０２】
次に、コンピュータシステム４の動作について説明する。コンピュータシステム４の動作は、学習フェーズと運用フェーズに分かれる。まず、応答時間測定用計算機１００及び学習用計算機２００を用いて学習フェーズを行う。学習フェーズでは運用系計算機３００は動作する必要がない。学習フェーズが終了した後で運用フェーズを行う。運用フェーズでは主に運用系計算機３００が動作し、応答時間測定用計算機１００及び学習用計算機２００は、回帰分析部２２０が応答時間推定部３３０に回帰関数、推定誤差を渡す以外の動作はしない。
【０２０３】
学習フェーズについて説明する。学習フェーズはモニタリングフェーズと回帰分析フェーズとからなる。
【０２０４】
図２０に示すように、モニタリングフェーズでは、学習用計算機２００にて監視対象プログラム２５０を実行する（ステップＡ１）。また、学習用計算機２００にて学習用モニタリング部２１０を起動し、学習用モニタリング情報を取得する準備をする。回帰分析部２２０は動作していないことが好ましい。
【０２０５】
まず、応答時間測手用計算機２では、疑似負荷発生部１１０が監視対象プログラム２５０に疑似負荷を与えるためのリクエストを学習用計算機２００に送信する（ステップＡ２）。リクエスト送出と共に、応答時間測定用計算機１００では、送信時刻を応答時間計測部１２０が計測し、記録する（ステップＡ３）。
【０２０６】
学習用計算機２００では、監視対象プログラム２５０が、疑似負荷発生部１１０から受信したリクエストの処理を開始する（ステップＡ４）。
【０２０７】
監視対象プログラム２５０の実行、監視対象プログラム２５０によるリクエスト処理の実行と並行して、学習用計算機２００は、学習用モニタリング部２１０によって、各リクエストに対応する一乃至複数の動作状態の値を測定する。測定対象となる動作状態の種類と数は、回帰分析部２２０が行う回帰分析の手法によって決定される。
【０２０８】
監視対象プログラム２５０がリクエストの処理を終了し、その結果であるリクエスト処理結果を疑似負荷発生部１１０に送信する（ステップＡ５）。
【０２０９】
応答時間測定用計算機１００に戻って、応答時間計測部１２０はリクエスト処理結果の受信時刻を計測（ステップＡ６）し、送信時刻と受信時刻の差分から応答時間を算出する（ステップＡ７）。
【０２１０】
ステップＡ１からＡ７を複数回繰り返し、学習用計算機２００での動作状態の測定と、応答時間測定用計算機１００での応答時間の算出とを、複数回のリクエストそれぞれについて実行する。学習用モニタリング部２１０が単一の動作状態を測定する場合には、一の応答時間と一種類の学習用測定値からなる組が、リクエストの回数だけ得られる。学習用モニタリング部２１０が複数の動作状態を測定する場合には、一の応答時間と複数種類の学習用測定値からなる組が、リクエストの回数だけ得られる。以上でモニタリングフェーズを終了する。
【０２１１】
例えば、監視対象プログラム２５０がウェブサーバプログラムであり、リクエストが１０回のhttpリクエストであり、学習用測定値としてＣＰＵ使用率とメモリ使用量を測定する場合を考える。この場合、ステップＡ１からＡ７を１０回繰り返す。その結果、応答時間計測部１２０は１０個の応答時間を算出する。学習用モニタリング部２１０は１０個のＣＰＵ使用率と、１０個のメモリ使用量とからなる学習用測定値群を得る。結果として、一の応答時間と二の学習用測定値からなる組が１０組得られる。尚、学習用モニタリング部２１０がリクエストの送出タイミングと独立したタイミングで学習用測定値を測定する場合には、測定した学習用測定値の中からリクエストに対応するものを予め抽出する。
【０２１２】
図２１を参照して回帰分析フェーズについて説明する。まず学習用計算機２００にて回帰分析部２２０を起動する（ステップＢ１）。回帰分析部２２０は応答時間計測部１２０から応答時間を受け取る。また、回帰分析部２２０は学習用モニタリング部２１０から学習用測定値群を受け取る（ステップＢ２）。回帰分析部２２０は、学習用測定値群を説明変数とし、応答時間を目的変数として回帰分析を行い、回帰関数と推定誤差を求める（ステップＢ４）。以上で回帰分析フェーズを終了する。
【０２１３】
次に、運用系計算機３００による運用フェーズについて図２２を参照して説明する。最初に、回帰分析部２２０から回帰関数と推定誤差を受け取る（ステップＣ１）。次に、監視対象プログラム３４０と運用系モニタリング部３５０を起動する（ステップＣ２）。監視対象プログラム３４０の現在の応答時間の推定値が必要なとき、運用系モニタリング部３５０は、回帰分析部２２０から受け取った回帰関数の説明変数にあたる運用系測定値を測定し、応答時間推定部３３０に渡す（ステップＣ３）。応答時間推定部３３０は、回帰分析部２２０から受け取った回帰関数に、同じく回帰分析部２２０から受け取った推定誤差と、運用系モニタリング部３５０から受け取った運用系測定値とを当てはめることにより、応答時間の推定値を算出する（ステップＣ４）。
【実施例】
【０２１４】
次に、本発明の一実施例であるコンピュータシステム５について図２３を参照して説明する。
【０２１５】
コンピュータシステム５では各部の具体例として次のようなものを用いる。コンピュータシステム５では、応答時間測定用計算機１００、学習用計算機２００、運用系計算機３００のOSはいずれもLinuxである。疑似負荷発生部１１０としてJmeter４００を用いる。学習用モニタリング部２１０としてsysstat(sar)５００を用いる。応答時間推定誤差計算部２２０としてR６００を用いる。アプリケーション３４０として”apache2”７００を用いる。運用系モニタリング部３５０としてsysstat(sar)８００を用いる。
【０２１６】
Jmeter４００はウェブサイトに対して負荷をかけることができるプログラムである。Sysstat５００はCPU使用率やメモリ使用量など計算機の状態をモニタリングするLinuxコマンドである。R６００は、The R Project for Statistical Computing(https://www.r-project.org/)が提供する、R言語で記述した統計処理プログラムであり、線形単回帰分析、線形重回帰分析、非線形単回帰分析を実施できる。”apache2”７００は、ウェブサーバプログラムである。学習用計算機２００では、”apache2”７００が実行されているものとする。
【０２１７】
まず、学習用計算機２００上で動作している”apache2”７００に対し、Jmeter４００が疑似負荷を送信し、その応答時間を測定する。応答時間の測定は応答時間計測部１２０が行う。学習用計算機２００上にて”apache2”７００がJmeter４００からのリクエストを処理している一方で、sysstat５００が学習用計算機２００内をモニタリングし、CPU使用率やメモリ使用量などのデータ系列を取得する。応答時間の測定、データ系列の取得が終了した後、R６００は線形単回帰分析を実施する。線形単回帰分析の結果、応答時間と各データ系列の線形式係数と残差平方和の値を得るので、それぞれを回帰関数a値３１２、回帰関数b値３１３、応答時間推定誤差３１１として、モニタリングパターン作成部２４０に入力する。
【０２１８】
以上、本発明を実施形態及び実施例に即して説明したが、本発明はこれらに限定されるものではない。
【０２１９】
例えば、上述の説明では、学習用モニタリング部２１０、運用系モニタリング部３５０がモニタリングする動作状態として、主にCPU使用率を挙げて説明したが、応答時間を推定する際に用いることができるデータ系列はCPU使用率のものだけではない。第４の実施の形態にて列挙したように、CPU温度、メモリ使用量、ネットワーク使用量を用いてもよいし、これら以外の動作状態を示す値をモニタリングして、回帰分析の説明変数としてよい。
【０２２０】
たとえば、メモリアクセスの多いアプリケーションでは、応答時間の変化がメモリ使用量の増減に依存する可能性がある。このため、モニタリングの対象にメモリ使用量を含めることが好ましい。また、ネットワークアクセスの多いアプリケーションでは、応答時間の変化がネットワーク転送量の増減に依存する可能性がある。したがって、モニタリングの対象にネットワーク転送量を含めることが好ましい。
【０２２１】
また、上述の実施形態及び実施例では、アプリケーション（監視対象プログラム）の他の例としてウェブサーバを挙げたが、クライアントからのリクエストを処理し、なんらかのレスポンスをクライアントに返すプログラムであればどのようなものであってもよい。例えば、クライアントサーバシステムのサーバとして動作するプログラム一般、例えばメールサーバ、アプリケーションサーバ、ファイルサーバ、プリントサーバ、SIP(Session Initiation Protocol)サーバ、ストリーミングサーバであってもよい。また、RDBMS(Relational Data Base Management System)であってもよい。
【０２２２】
第１の実施の形態では、ステップS16、S17において、応答時間の推定値が増加したとき、推定誤差が高く、データ取得コストが低いデータ系列に切り替える動作について説明した。しかし、こうした動作の代わりに、或いは、こうした動作の前または後に、逆向きの切替動作を行うこととしてもよい。即ち、応答時間の推定値が減少したとき、推定誤差が低いデータ系列に切り替える動作を行うこととしてもよい。第１の実施の形態では、モニタリングパターンはパレート最適解集合なので、推定誤差が低いデータ系列に切り替えることは、必然的にデータ取得コストが高いデータ系列に切り替えることになる。
【０２２３】
第２の実施形態では、モニタリングしたデータ系列を取捨選択して、それらの一部のみについて回帰分析を行う手法と、線形重回帰分析とを組み合わせた。しかし、本発明はこの組み合わせに限定されるものではなく、データ系列を取捨選択する手法を、第１の実施の形態の線形単回帰分析と組み合わせてもよい。或いは、データ系列の取捨選択を、第３の実施の形態の非線形単回帰分析と組み合わせてもよい。
【０２２４】
第２の実施形態では、応答時間推定誤差計算部２２０で線形重回帰分析を行うものを説明した。ここでは、２つの変数を説明変数とする重回帰分析を挙げて説明したが、３つ以上の変数を説明変数にすることもできる。
【０２２５】
第３の実施形態では、応答時間推定誤差計算部２２０は非線形単回帰分析を行うものを説明したが、非線形回帰分析を行う場合に単回帰分析に限定されるものではなく、重回帰分析を行う場合にも適用可能である。
【０２２６】
第３の実施の形態では、近似多項式リストに様々な非線形式を格納したが、この中に線形式を含めてもよい。
【産業上の利用可能性】
【０２２７】
本発明によれば、例えば、インターネット商取引サイトの運用監視サービスといった用途に適用できる。また、通話サービスや動画配信サービスを扱うクラウド環境における運用監視サービスといった用途にも適用可能である。
【符号の説明】
【０２２８】
１、２、３、４、５  コンピュータシステム
１００  応答時間測定用計算機
１１０  疑似負荷発生部
１２０  応答時間計測部
２００  学習用計算機
２１０  モニタリング部
２２０  応答時間推定誤差計算部、回帰解析部
２３０  データ取得コスト表
２３１  取得データ名
２３２  取得データコスト
２４０  モニタリングパターン作成部
２５０、３４０  アプリケーション、監視対象プログラム
２６０  推定元データ選択部
２７０  データ優先度設定情報
２７１  アプリケーション名
２７２  優先度設定項目
２７３  設定値
２７４  取得データ数
２７５  優先度設定式
２７６  除外データ
２８０  近似多項式推定部
２９０  近似多項式リスト
２９１  モデル名称
２９２  モデル式
２９３  未知係数リスト
３００  運用系計算機
３１０  モニタリングパターン格納部
３１１  応答時間推定誤差
３１２  回帰関数a値
３１３  回帰関数b値
３１４  回帰関数b0値
３１５  回帰関数b1値
３１６  回帰関数b2値
３１７  推定関数
３１８  係数値
３２０  モニタリングパターン切り替え部
３３０  応答時間推定部
３４０  アプリケーション
３５０  モニタリング部
４００  Jmeter
５００  sysstat(sar)
６００  R
７００  apache2
８００  sysstat(sar)
１００１  性能データ収集装置
１００２  性能データ処理装置
１００３  性能測定部
１００４  性能データ収集部
１００５  グルーピング部
１００６  グルーピング情報記憶部
１００７  性能データ送信部
１００８  性能データ受信部
１００９  性能データＤＢ
１０１０  性能データ復元部
１０１１  表示装置
【図１】
2018010562.tif 000010
【図２】
2018010562.tif 000011
【図３】
2018010562.tif 000012
【図４】
2018010562.tif 000013
【図５】
2018010562.tif 000014
【図６】
2018010562.tif 000015
【図７】
2018010562.tif 000016
【図８】
2018010562.tif 000017
【図９】
2018010562.tif 000018
【図１０】
2018010562.tif 000019
【図１１】
2018010562.tif 000020
【図１２】
2018010562.tif 000021
【図１３】
2018010562.tif 000022
【図１４】
2018010562.tif 000023
【図１５】
2018010562.tif 000024
【図１６】
2018010562.tif 000025
【図１７】
2018010562.tif 000026
【図１８】
2018010562.tif 000027
【図１９】
2018010562.tif 000028
【図２０】
2018010562.tif 000029
【図２１】
2018010562.tif 000030
【図２２】
2018010562.tif 000031
【図２３】
2018010562.tif 000032
【図２４】
2018010562.tif 000033