(57)【要約】【課題】複数の使用方法を持つシステムにおいて、最適化処理により得られたカーネルパラメータを含む探索履歴を有効に利用することができる情報処理装置を提供することを目的とする。【解決手段】使用方法２（２０２）から使用方法１（２０３）に使用方法変更を検出したら、最適化処理を停止して、それまでの最適化処理により得られたカーネルパラメータと探索履歴を古い使用方法に対応するものとして保存する（Ｓ２２７）。そして、新しい使用方法の使用方法１（２０３）に対応するカーネルパラメータと最適化処理の探索履歴を読み出して（Ｓ２２８）、最適化処理を再開する（Ｓ２２９）。【選択図】図２
2009032110.tif 000002
【特許請求の範囲】
【請求項１】
カーネルパラメータの最適化処理を行なう情報処理装置において、
稼働しているプロセスのプロセスリストを作成し、稼働している前記プロセスリストの状態を監視するプロセス監視部と、
前記プロセスリストと前記カーネルパラメータの最適化処理の探索履歴とを関連付ける探索履歴情報を管理する管理部とを備え、
前記プロセス監視部が稼働している前記プロセスリストの状態の変更を検知したとき、前記管理部は、状態の変更前のプロセスリストに対応する探索履歴情報を保存し、状態の変更後のプロセスリストに対応する探索履歴情報を読み出す
ことを特徴とする情報処理装置。
【請求項２】
前記管理部は、過去の所定時間において、ＣＰＵ使用率、ネットワーク使用率、およびディスクアクセス使用率のうち少なくともいずれかの使用率が所定の閾値を超えたときに、初期設定の探索履歴を読み出す
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記管理部は、
過去の第１の所定時間において、ＣＰＵ使用率、ネットワーク使用率、およびディスクアクセス使用率のうち少なくともいずれかの使用率が所定の第１の閾値を超えたときに、バッチ処理に対応する初期設定の探索履歴を読み出し、
過去の第２の所定時間において、ＣＰＵ使用率、ネットワーク使用率、およびディスクアクセス使用率のうち少なくともいずれかの使用率が所定の第２の閾値を超えたときに、オンライン・トランザクション処理に対応する初期設定の探索履歴を読み出す
ことを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記管理部は、前記探索履歴情報を読み出したのち、前記カーネルパラメータの最適化処理をする
ことを特徴とする請求項１から請求項３のうちいずれか１項に記載の情報処理装置。
【請求項５】
カーネルパラメータの最適化処理部と、稼働しているプロセスのプロセスリストを作成し稼働している前記プロセスリストの状態を監視するプロセス監視部と、前記プロセスリストと前記カーネルパラメータの最適化処理の探索履歴を関連付ける探索履歴情報を管理する管理部と、を用いるカーネルパラメータの最適化方法において、
前記プロセス監視部が稼働している前記プロセスリストの状態の変更を検知したとき、前記管理部は、状態の変更前のプロセスリストの探索履歴情報を保存し、状態の変更後のプロセスリストに対応する探索履歴情報を読み出し、前記最適化処理部が、前記カーネルパラメータの最適化処理をする
ことを特徴とするカーネルパラメータの最適化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、カーネルパラメータの最適化処理を行なうことができる情報処理装置に関する。
【背景技術】
【０００２】
コンピュータシステムの処理性能を発揮させる方法としては、主に二つの方法がある。ひとつ（前者）は、ＣＰＵ、メモリなどのハードウェアリソースをアプリケーションに最適に割り当てる方法である。もうひとつ（後者）は、カーネルパラメータの最適値を設定する方法である。ここで、処理性能とは、バッチ処理、オンライン・トランザクション処理とを考慮して、単位時間あたりに処理したバッチの個数に係数を乗じたものと、単位時間あたりに処理したオンライン・トランザクションの個数に別の係数を乗じたものの和である。それぞれの係数は、バッチ処理、オンライン・トランザクション処理のどちらを優先するかにより決定する。バッチ処理を優先するならば、バッチの個数に乗ずる係数を大きくし、オンライン・トランザクション処理を優先するならば、オンライン・トランザクションの個数に乗ずる係数を大きくする。
【０００３】
ここで、カーネル（Ｋｅｒｎｅｌ）とは、階層型に設計されたＯＳ（オペレーティングシステム）の中核となる部分である。コンピュータ（情報処理装置）システムのリソースを管理し、ハードウェアとソフトウェアコンポーネントのやりとりを管理する。カーネルパラメータは、ＯＳの動作条件を指定するパラメータである。
【０００４】
カーネルパラメータには、例えば、Ｈｙｐｅｒ−Ｔｈｒｅａｄｉｎｇ機能（マイクロプロセッサの高速化技術であり、プロセッサの空き時間を有効利用して一つのプロセッサを二つのプロセッサであるかのように見せる技術）のオン・オフを指定するカーネルパラメータ、システム全体で同時に存在できる共有メモリの最大数を指定するカーネルパラメータ、システム全体で同時に存在できるプロセスの最大数を指定するカーネルパラメータ、入出力を行なうためのバッファをメインメモリの何パーセントまで拡張できるか指定するカーネルパラメータなどがある。
【０００５】
前者の従来技術として、情報処理装置のプロセス制御において、情報処理装置で所定のプロセスが起動したことを検知し、このプロセスが予め定められた制御対象プロセスか否かを判断し、システム全体のＣＰＵ使用率を取得し、予め定められたシステム全体のＣＰＵ使用率の目標値と比較して制御対象プロセスの停止・実行再開を制御することにより、ＣＰＵ使用率を効果的かつ迅速に制御し、ユーザアクセスやファイルアクセスにおけるレスポンスの悪化を抑制する方法が開示されている（例えば、特許文献１参照）。
【０００６】
また、後者の従来技術として、現在のシステム構成を認識して記憶し、各種システム状態をチェックし、現状のシステムパラメータから新しく再設定するシステムパラメータを算出、記録、設定することにより、システムパラメータ再設定を自動化することで、システム変更時のシステムパラメータ再設定の作業をなくし、さらに設定誤りをなくすことで、処理性能を発揮する方法が開示されている（例えば、特許文献２参照）。
【特許文献１】特開２００７−１８２８２号公報
【特許文献２】特開平１１−１３４２２３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
特許文献１においては、システム全体のＣＰＵ使用率に応じて制御対象プロセスの停止・実行再開を制御するものであるが、カーネルパラメータの最適化処理については述べられていない。
【０００８】
特許文献２においては、ネットワークファイルシステムを例にして、システム構成が変更になった際のカーネルパラメータの最適化方法について述べている。しかしながら、システムの使用方法が変更されるたびに、それまでに行なった最適化処理により得られたカーネルパラメータを含む探索履歴が無駄となることへの対処については述べられていない。
【０００９】
このカーネルパラメータの最適値を設定する方法には、主に三つの方法がある。（１）アプリケーションごとに公開されている推奨値を設定する。（２）ユーザが経験に基づいて最適なカーネルパラメータを設定する。（３）カーネルパラメータの最適化処理を行なうことである。従来（１），（２）の方法では、処理する内容によっては、十分に処理性能が発揮できない問題があった。
【００１０】
また、（３）の方法も検討はされているが、一般に、ＯＳには２００個以上のカーネルパラメータがあり、これらのカーネルパラメータに対して最適な値に設定することは煩雑である問題があった。
【００１１】
さらに、昼間はオンライン・トランザクション処理のために使用し、夜はバッチ処理に使用するなど、複数の使用方法で運用するコンピュータシステムがある。カーネルパラメータの最適化処理を、このような使用方法が変わるシステムで行なうと、システムの使用方法に応じて、カーネルパラメータの最適値が異なるため、システムの使用方法が変わるたびに、それまでに行なった最適化処理により得られたカーネルパラメータを含む探索履歴が無駄となる問題があった。
【００１２】
本発明は、前記の課題を解決するための発明であって、複数の使用方法を持つシステムにおいて最適化処理により得られたカーネルパラメータを含む探索履歴を有効に利用することができる情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１３】
前記目的を達成するため、情報処理装置は、使用方法の変更を検出したとき、最適化処理を停止して、それまでの最適化処理により得られたカーネルパラメータを含む探索履歴を、使用方法の変更の検出前の探索履歴として保存する。そして、使用方法の変更の検出後の使用方法について、以前保存したカーネルパラメータを含む探索履歴を読み出して、最適化処理を再開する。
【発明の効果】
【００１４】
本発明によれば、使用方法毎に最適化処理の探索履歴を保存することにより、システムの使用方法が変更されても、それまでに行なってきた最適化処理により得られた探索履歴を有効に利用（無駄とならないように）することができる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明の実施形態について、図面を参照して説明する。
図１は、情報処理装置のハードウェア構成の例を示すブロック図である。情報処理装置（サーバ）１００は、プロセッサ（ＣＰＵ）１１０、メモリ１２０、入出力インタフェース１４０、通信インタフェース１５０、およびこれらを接続するバス１５１などから構成される。サーバ１００は、通信インタフェース１５０を介してＬＡＮ、ＷＡＮなどのネットワーク１７０に接続される。また、サーバ１００の記憶装置１６０は、ハードディスクドライブなどで構成され、入出力インタフェース１４０を介して接続される。プロセッサ１１０は、メモリ１２０に格納される各種プログラムを実行する。記憶装置１６０は、サーバ１００が処理を実行するための各種データを保存する。メモリ１２０は、プロセッサ１１０が処理を実行する各種プログラムおよび一時的なデータを保持する。
【００１６】
メモリ１２０に格納されたプログラム１３０は、初期化部１３１、監視部１３２、稼働中プロセスリスト作成部１３３、最適化管理部１３４、および探索履歴管理部１３５から構成される。初期化部１３１、監視部１３２、稼働中プロセスリスト作成部１３３、最適化管理部１３４、および探索履歴管理部１３５は、プログラム１３０をプロセッサ１１０が実行することで、初期化、監視、稼働中プロセスリスト作成、最適化管理、探索履歴管理の各処理を行なう。
【００１７】
記憶装置１６０に格納された、プロセステーブル１６１、稼働中プロセスリスト１６２、前回の稼働中プロセスリスト１６３、稼働中プロセス判定テーブル１６４、探索履歴テーブル１６５、最適化中フラグ１６６、１分フラグ１６７、５分フラグ１６８、１５分フラグ１６９は、プログラム１３０が初期化、監視、稼働中プロセスリスト作成、最適化管理、探索履歴管理の各処理を行なう際に利用する。
【００１８】
最適化中フラグ１６６は、カーネルパラメータの最適化処理を開始する直前にオンにし、最適化処理を終了する直前にオフにしている。このため、最適化中フラグのオン、オフを判定することにより、最適を実施中か否かを判定できる。
【００１９】
１分フラグ１６７、５分フラグ１６８、１５分フラグ１６９は、それぞれ、後記する判定のステップＳ５２１、ステップＳ５２３、ステップＳ５２５（図５参照）の判定結果を保存するために使用する。
【００２０】
初期化、監視、稼働中プロセスリスト作成、最適化管理、探索履歴管理などの各処理は、プログラム１３０をプロセッサ１１０で実行することにより実現するが、これらは初期化部１３１、監視部１３２、稼働中プロセスリスト作成部１３３、最適化管理部１３４、探索履歴管理部１３５など、各処理を行なう処理部として集積回路化するなどしてハードウェアで実現することもできる。
【００２１】
以下説明を簡略化するため、プログラム１３０をプロセッサ１１０が実行することで実現される各処理部を各処理の主体として説明する。なお各処理部をハードウェアで実現した場合にはその各処理部が主体となって各処理を行なう。
【００２２】
図２は、本発明の使用方法と効果を示す説明図である。グラフはある情報処理システム（以下、システムという。）の経過時間と処理性能の関係を示している。横軸に時間をとり、縦軸に処理性能を示す。実線２１１〜２１６が処理性能の時間変化を示す。ここでは例として、システムの使用方法が、使用方法１（２０１）、使用方法２（２０２）、使用方法１（２０３）と変化する場合を示しているが、必ずしもこのような順序で動作する必要はない。
【００２３】
例えば、昼間はオンライン・トランザクション処理のために使用し、夜はバッチ処理に使用するなど、複数の使用方法で運用する場合を考慮した場合のシステムを考えると、使用方法１（２０１または２０３）は、オンライン・トランザクション処理に対応し、使用方法２（２０２）は、バッチ処理に対応する。必ずしもこの処理に限定されるものではない。
【００２４】
まず、本発明の使用方法について説明する。
システムは、使用方法１（２０１）の開始を検知すると、それまでの最適化処理の探索履歴を保存する（ステップＳ２２１）。次に、使用方法１の最適化処理の探索履歴を読み出す（ステップＳ２２２）。そして最適化処理を行なう（ステップＳ２２３）。
【００２５】
システムは、使用方法２（２０２）の開始を検知すると、使用方法１の最適化処理の探索履歴を保存する（ステップＳ２２４）。次に、使用方法２の最適化処理の探索履歴を読み出す（ステップＳ２２５）。そして最適化処理を行なう（ステップＳ２２６）。
【００２６】
システムは、使用方法１（２０３）の開始を検知すると、使用方法２の最適化処理の探索履歴を保存する（ステップＳ２２７）。次に、使用方法１の最適化処理の探索履歴を読み出す（ステップＳ２２８）。そして最適化処理を行なう（ステップＳ２２９）。
【００２７】
処理性能をみてみると、実線２１１では、最適化処理を行なっていないため、性能は低いレベルで一定である。実線２１２では、使用方法１（２０１）で行なった最適化処理によって性能が向上している。実線２１３では、使用方法が変わったため、性能が実線２１２の最後の性能よりも下がった。その後、最適化処理を行なっていないため、性能は低いレベルで一定である。このように、使用方法が、使用方法１（２０１）から使用方法２（２０２）に変わったため、性能が下がっている。このため、システムは、使用方法２（２０２）に適した最適化処理を行なう。実線２１４では、最適化処理により性能が向上している。実線２１５では、使用方法が変わったため、処理性能が、実線２１４の最後の性能よりも下がった。使用方法１に最適なカーネルパラメータに変更していないため、実線２１２の最後の性能よりも下がっている。その後、最適化処理を行なっていないので、性能は一定である。実線２１６では、使用方法１（２０１）の時に行なった最適化処理の探索履歴を読み出している（ステップＳ２２８）ため、前回の使用方法１（２０１）での最適化処理終了時の性能と同等の性能から最適化処理を再開することができる。最適化処理により性能が向上している。
【００２８】
ここで、使用方法１（２０１）、使用方法２（２０２）は、例えば、以下のようなソフトウェアを一つあるいは複数同時に使用している状態を意味する。
・ジョブ管理ソフトウェア
・バックアップソフトウェア
・オンライン・トランザクション処理ソフトウェア
・データベースソフトウェア
【００２９】
ステップＳ２２３、ステップＳ２２６、およびステップＳ２２９の最適化方法には、山登り法（ＨＣ：Ｈｉｌｌ  Ｃｌｉｍｂｉｎｇ）、焼きなまし法（ＳＡ：Ｓｉｍｕｌａｔｅｄ  Ａｎｎｅａｌｉｎｇ）、遺伝的アルゴリズム（ＧＡ：Ｇｅｎｅｔｉｃ  Ａｌｇｏｒｉｔｈｍ）などが考えられる。
【００３０】
それぞれの最適化アルゴリズムの概要について、以下に説明する。
山登り法とは、現在の状態の近傍において、最も処理性能が高くなる状態へ変化することを繰り返し、最適化を進める方法である。焼きなまし法とは、山登り法に近いが、別途「温度」というパラメータを用意し、「温度」が高い間は、処理性能が低くなる状態への変化を許し、「温度」が０になったら、山登り法に移行する方法である。遺伝的アルゴリズムとは、複数の状態を用意し、個々の状態に対して、処理性能に基いて、選択、交叉、突然変異のいずれかを実施し最適値を探索する方法である。
【００３１】
以下、カーネルパラメータの最適化処理における各方法の利用方法について説明する。
山登り法では、複数のカーネルパラメータの組み合わせを少しずつ変えながら性能が最も向上するカーネルパラメータの組み合わせを探索する。
【００３２】
焼きなまし法では、「温度」が高い間は、処理性能が低くなるカーネルパラメータの組み合わせへの変化を許し、「温度」が０になったら、山登り法に移行する方法である。
【００３３】
遺伝的アルゴリズムでは、現世代として「カーネルパラメータの組み合わせ」の集団を用意し、それぞれの「カーネルパラメータの組み合わせ」について性能を評価し、その性能に基づいて以下の三つのいずれかの処理をおこなって、次世代の集団を形成していく。
・選択（現世代の「カーネルパラメータの組み合わせ」を次世代にそのまま残す。）
・交叉（個々のカーネルパラメータを、現世代の二つ「カーネルパラメータの組み合わせ」のそれぞれからランダムに取得し「カーネルパラメータの組み合わせ」をつくり、次世代に移す。）
・突然変異（カーネルパラメータの一部をランダムに変更した新しい「カーネルパラメータの組み合わせ」を作り、次世代に移す。）
この世代交代を繰り返し、最適化処理を進める。
【００３４】
本実施形態では山登り法を例にとり説明する。山登り法では、探索履歴は、「カーネルパラメータの組み合わせ」と同じになる。
【００３５】
図１１は、プロセステーブルの一例を示す説明図である。記憶装置１６０に格納されたプロセステーブル１６１には、プロセス（１１１０）、ＣＰＵ１１０の平均負荷（１１２０）、ネットワークの平均負荷（１１３０）、ディスクアクセスの平均負荷（１１４０）が格納されている。プロセス毎とプロセス合計の、ＣＰＵ１１０の平均負荷１分／５分／１５分とネットワークの平均負荷１分／５分／１５分と、ディスクアクセスの平均負荷１分／５分／１５分が格納されている。行１１５０には、全てのプロセスの平均負荷の合計が格納されている。なお、平均負荷１分／５分／１５分は、１分間の平均負荷、５分間の平均負荷、１５分間の平均負荷を意味する。
【００３６】
このプロセステーブル１６１は、ＵＮＩＸ（登録商標）ではコマンドｓａｒ（１Ｍ）などで得た情報を基に作成する。ネットワークアクセス負荷は、得られたネットワーク転送速度を、その情報処理装置の最大ネットワーク転送速度で割って得る。ディスクアクセス負荷は、得られたディスクアクセス転送速度を、その情報処理装置の最大ディスクアクセス転送速度で割って得る。これにより、稼働中プロセス判定テーブル１６４において、最大ネットワークアクセス転送速度、最大ディスクアクセス転送速度に依存しない閾値を設定できる。
【００３７】
図１２は、稼働中プロセスリストの一例を示す説明図である。記憶装置１６０に格納された稼働中プロセスリスト１６２には、稼働していると稼働中プロセスリスト作成部１３３が判断したプロセスが格納されている。本実施形態において、システムの使用方法は、稼働中プロセスリスト１６２によって区別する。具体的には、稼働中プロセスリスト１６２によって、稼働中プロセスは、プロセスＡ、プロセスＣ、およびプロセスＥであることがわかる。
【００３８】
図１３は、前回の稼働中プロセスリストの一例を示す説明図である。記憶装置１６０に格納された「前回の稼働中プロセスリスト１６３」には、最適化管理部１３４が保存した前回の「稼働中プロセスリスト１６２」が格納されている。この「前回の稼働中プロセスリスト１６３」は、稼働中プロセスリスト１６２と比較することにより、稼働中プロセスリスト１６２が更新されたか否か、つまり使用方法が変わったか否かを判定するために使用する。具体的には、前回の稼働中プロセスリスト１６３によって、前回の稼働中プロセスは、プロセスＡおよびプロセスＣであることがわかる。
【００３９】
図１４は、稼働中プロセス判定テーブルの一例を示す説明図である。記憶装置１６０に格納された稼働中プロセス判定テーブル１６４は、プロセスが稼働中か否かを判定するために使用する。稼働中プロセス判定テーブル１６４には、１分／５分／１５分に対する、ＣＰＵの平均負荷１４１０、ネットワークの平均負荷１４２０、ディスクアクセスの平均負荷１４３０に対する各々の閾値１４４０が格納されている。プロセステーブル１６１の合計１１５０が閾値１４４０を超えた場合に、プロセスが稼働していると判定する。
【００４０】
稼働中プロセス判定テーブル１６４への閾値の設定方針について以下に記す。具体的には、ＣＰＵの平均負荷１４１０の１分に対する閾値は、バッチ処理を検出することを想定しているため、９０％のような高い閾値を設定することが望ましい。一方、１５分に対する閾値は、オンライン・トランザクション処理を検出することを想定しているため、３０％のような低い閾値を設定することが望ましい。５分に対する閾値は、バッチ処理、オンライン・トランザクション処理の中間的な処理を検出することを想定しているため、中間的な６０％のような閾値を設定するのが望ましい。
【００４１】
図１５は、探索履歴テーブルの一例を示す説明図である。記憶装置１６０に格納された探索履歴テーブル１６５には、各種のプロセスリストに対応する探索履歴１５２０が格納されている。各種のプロセスリストには、稼働中プロセスリスト１６２に対応するプロセスリスト１５１０、他の使用方法のプロセスリスト１５１２，１５１４、オンライン・トランザクション処理のデフォルト１５３０、バッチ処理のデフォルト１５４０、その他の処理のデフォルト１５５０が格納されている。
【００４２】
探索履歴テーブル１６５へのデフォルトの設定方針について以下に記す。オンライン・トランザクション処理のデフォルト１５３０としてはオンライン・トランザクション処理に対するカーネルパラメータの推奨値を設定する。バッチ処理のデフォルト１５４０としてはバッチ処理に対するカーネルパラメータの推奨値を設定する。その他の処理のデフォルト１５５０としてはオンライン・トランザクション処理とバッチ処理のそれぞれ対するカーネルパラメータの推奨値の中間的な値をデフォルトとして設定する。
【００４３】
山登り法では、探索履歴はカーネルパラメータの組み合わせで表されている。焼きなまし法では、探索履歴として、前記のカーネルパラメータに加えて温度が格納される。遺伝的アルゴリズムでは、探索履歴として「カーネルパラメータの組み合わせ」の集合が格納される。このように、探索履歴１５２０とは最適化方法に依存する。
【００４４】
ここで、プロセスリスト１５１０とは、稼働中プロセスリスト１６２と同じものであり、本テーブルには、各種のプロセスリスト毎の最適化処理の探索履歴１５２０のカーネルパラメータを保存する。最適化処理を中断するときに、探索履歴テーブル１６５に探索履歴１５２０を保存し、最適化処理を再開するときに、探索履歴テーブル１６５から探索履歴１５２０を読み出す。山登り法では、この探索履歴は、再開する最適化処理が最適なカーネルパラメータを探索する際の初期値となる。
【００４５】
図３は、初期化部の処理を示すフローチャートである。適宜図１を参照して説明する。初期化部１３１では、プログラム１３０が使用するテーブル、リスト、フラグの初期化を行なう。初期化部１３１の起動は、システムの開始時である。
【００４６】
初期化部１３１は、まず、前回の稼働中プロセスリスト１６３を空にする（ステップＳ３１０）。次に、稼働中プロセス判定テーブル１６４を作成する（ステップＳ３２０）。次に、探索履歴テーブル１６５に、オンライン・トランザクション処理のデフォルト１５３０、バッチ処理のデフォルト１５４０、その他の処理のデフォルト１５５０を登録する（ステップＳ３３０）。そして、最適化中フラグ１６６をオフにする（ステップＳ３４０）。そして監視部１３２（図４参照）を起動し（ステップＳ３５０）、一連の処理を終了する。
【００４７】
図４は、監視部の処理を示すフローチャートである。適宜図１を参照して説明する。監視部１３２では、稼働中プロセスリスト１６２が更新されたか否かを判定することにより、システムの使用方法が変更されたか否かを監視する。
【００４８】
監視部１３２は、所定の時間を待つ（ステップＳ４１０）。ステップＳ４１０は、所定の時間、次の処理に移るまで待ち、次の処理に移るまでのタイマーの役割を果たす。次に、プロセステーブル１６１を作成する（ステップＳ４２０）。次に、稼働中プロセスリスト作成部１３３（図５参照）を起動して（ステップＳ４３０）、稼働中プロセスリストを作成する。そして、使用方法が変更されたか確認するために、稼働中プロセスリスト１６２と前回の稼働中プロセスリスト１６３と比較し、比較結果が等しいか否かを判定する（ステップＳ４５０）。比較結果が等しいならば（ステップＳ４５０，Ｙｅｓ）、ステップＳ４１０へ戻る。比較結果が等しくないならば（ステップＳ４５０，Ｎｏ）、稼働中プロセスリスト１６２を前回の稼働中プロセスリスト１６３として保存し（ステップＳ４６０）、最適化管理部１３４（図６参照）を起動する（ステップＳ４７０）。そして、ステップＳ４１０へ戻る。
【００４９】
図５は、稼働中プロセスリスト作成部の処理を示すフローチャートである。適宜図１を参照して説明する。稼働中プロセスリスト作成部１３３では稼働中プロセスリスト１６２を作成する。
【００５０】
稼働中プロセスリスト作成部１３３は、最初に、稼働中プロセスリスト１６２を空にし、１分フラグ１６７、５分フラグ１６８、１５分フラグ１６９をオフにする（ステップＳ５１０）。次に、全プロセス合計での、過去１分／５分／１５分のＣＰＵ、ネットワーク、およびディスクアクセスの平均負荷をプロセステーブル１６１から得る（ステップＳ５１５）。次に、過去１分／５分／１５分のＣＰＵ、ネットワーク、ディスクアクセスの平均負荷の閾値１４４０を稼働中プロセス判定テーブル１６４から得る（ステップＳ５２０）。
【００５１】
ＣＰＵ、ネットワーク、およびディスクアクセスのいずれかにおいて、過去１分の合計１１５０が、閾値１４４０を超えたか否かを判定する（ステップＳ５２１）。閾値を越えている場合（ステップＳ５２１，Ｙｅｓ）、１分フラグ１６７をオンにし（ステップＳ５２２）、ステップＳ５２３へ進む。閾値を超えていない場合（ステップＳ５２１，Ｎｏ）、ステップＳ５２３へ進む。
【００５２】
ＣＰＵ、ネットワーク、およびディスクアクセスのいずれかにおいて、過去５分の合計１１５０が、閾値１４４０を超えたか否かを判定する（ステップＳ５２３）。閾値を超えている場合（ステップＳ５２３，Ｙｅｓ）、５分フラグ１６８をオンにし（ステップＳ５２４）、ステップＳ５２５へ進む。閾値を超えていない場合（ステップＳ５２３，Ｎｏ）、ステップＳ５２５へ進む。
【００５３】
ＣＰＵ、ネットワーク、およびディスクアクセスのいずれかにおいて、過去１５分の合計１１５０が、閾値１４４０を超えたか否かを判定する（ステップＳ５２５）。閾値を超えている場合（ステップＳ５２５，Ｙｅｓ）、１５分フラグ１６９をオンし（ステップＳ５２６）、ステップＳ５３０へ進む。閾値を超えていない場合（ステップＳ５２５，Ｎｏ）、ステップＳ５３０へ進む。
【００５４】
ステップＳ５３０において、稼働中プロセスリスト作成部１３３は、１分フラグ１６７、５分フラグ１６８、および１５分フラグ１６９の全てがオフであるか否かを判定する。
全てのフラグがオフであれば（ステップＳ５３０，Ｙｅｓ）、一連の処理を終了する。
【００５５】
１分フラグ１６７、５分フラグ１６８、および１５分フラグ１６９の全てがオフでなければ（ステップＳ５３０，Ｎｏ）、ＣＰＵ、ネットワーク、およびディスクアクセスの全てにおける、過去１分／５分／１５分の全てにおいて、平均負荷の高い順にプロセスを選択し、それらのプロセスの平均負荷の合計値が閾値の８０％を超えるまで先頭からプロセスを選択し、稼働中プロセスリスト１６２に追加する（ステップＳ５４０）。最後に、稼働中プロセスリスト作成部１３３は、重複するプロセスを削除し、プロセス名をアルファベット順で整列して稼働中プロセスリスト１６２を完成させ（ステップＳ５４５）、一連の処理を終了する。
【００５６】
図６は、最適化管理部の処理を示すフローチャートである。最適化管理部１３４では、探索履歴の保存、読み出し、最適化処理の開始、終了を行なう。
【００５７】
最適化管理部１３４は、最適化中フラグ１６６がオンか否かを判定する（ステップＳ６１０）。最適化中フラグ１６６がオンならば（ステップＳ６１０，Ｙｅｓ）、探索履歴を保存する（ステップＳ６２０、図８参照）。そして、最適化中フラグ１６６をオフにして（ステップＳ６３０）、最適化処理を終了し（ステップＳ６４０）、ステップＳ６５０へ進む。
【００５８】
最適化中フラグ１６６がオフならば（ステップＳ６１０，Ｎｏ）、最適化処理が行なわれていないため、探索履歴を保存する必要がないので、ステップＳ６５０へ進む。稼働中プロセスリスト１６２が空か否かを判定する（ステップＳ６５０）。稼働中プロセスリスト１６２が空でないならば（ステップＳ６５０，Ｎｏ）、つまり稼働しているプロセスが存在するならば、探索履歴を読み出す（ステップＳ６６０、図７参照）。そして、最適化中フラグ１６６をオンにして（ステップＳ６７０）、読み出した探索履歴を初期として最適化処理を開始する（ステップＳ６８０）。最後に、最適化管理を終了する。
【００５９】
稼働中プロセスリストが空である場合（ステップＳ６５０，Ｙｅｓ）、稼働しているプロセスが存在しないため、最適化処理は行なわずに、最適化管理を終了する。
【００６０】
図７は、探索履歴管理部の探索履歴読み出し処理を示すフローチャートである。探索履歴管理部１３５は、探索履歴テーブル１６５から該当するプロセスに対応する探索履歴を読み出す処理をする。
【００６１】
探索履歴管理部１３５は、稼働中プロセスリスト１６２に対応する探索履歴が探索履歴テーブル１６５にあるか否かを判定する（ステップＳ７２０）。判定結果がＹｅｓならば（ステップＳ７２０，Ｙｅｓ）、探索履歴テーブル１６５から稼働中プロセスリスト１６２に対応する探索履歴１５２０を読み出す（ステップＳ７３０）。そして、一連の処理を終了する。判定結果がＮｏならば（ステップＳ７２０，Ｎｏ）、ステップＳ７４０へ進む。
【００６２】
ステップＳ７４０において、１５分フラグ１６９がオンで、かつ、１分フラグ１６７と５分フラグ１６８が両方オフであるか否かを判定する。判定結果がＹｅｓならば（ステップＳ７４０，Ｙｅｓ）、オンライン・トランザクション処理が開始したと判断し、探索履歴テーブル１６５からオンライン・トランザクション処理のデフォルト１５３０の探索履歴１５２０を読み出す（ステップＳ７５０）。そして、一連の処理を終了する。判定結果がＮｏならば（ステップＳ７４０，Ｎｏ）、ステップＳ７６０へ進む。
【００６３】
ステップＳ７６０において、１分フラグ１６７がオンで、かつ、５分フラグ１６８と１５分フラグ１６９が両方オフであるか否かを判定する。判定結果がＹｅｓならば（判定７６０、Ｙｅｓ）、バッチ処理が開始したと判断し、探索履歴テーブル１６５からバッチ処理のデフォルト１５４０の探索履歴１５２０を読み出す（ステップＳ７７０）。そして、一連の処理を終了する。判定結果がＮｏならば（ステップＳ７６０，Ｎｏ）、ステップＳ７８０へ進む。
【００６４】
ステップＳ７８０において、すなわち、ステップＳ７２０、ステップＳ７４０、ステップＳ７６０に当てはまらない場合には、探索履歴管理部１３５は、探索履歴テーブル１６５からその他の処理のデフォルト１５５０の探索履歴１５２０を読み出し、一連の処理を終了する。
【００６５】
ここで読み出された探索履歴は、中断していたカーネルパラメータの最適化処理を再開するために使用する。
【００６６】
図８は、探索履歴管理部の探索履歴保存処理を示すフローチャートである。探索履歴管理部１３５は、稼働中プロセスリスト１６２と探索履歴の対応関係を探索履歴テーブル１６５に保存し、（ステップＳ８１０）。探索履歴読み出し処理を終了する。
【００６７】
次に、稼働中プロセスの判定方法について説明する。
図９は、オンライン・トランザクション処理のＣＰＵ使用率の変化を示す時系列図である。図１０は、バッチ処理のＣＰＵ使用率の変化を示す時系列図である。図９および図１０を参照して、稼働中プロセスの判定方法について説明する。ここでは、オンライン・トランザクション処理とバッチ処理のＣＰＵ使用率を例にとり、なぜ過去１分／５分／１５分の平均負荷が必要かについて説明する。
【００６８】
情報処理装置のデータ処理方法は、大別すると、以下の二つに分類できる。
バッチ処理：  データを一定期間あるいは一定量をまとめてから一括して処理を行う方式
オンライン・トランザクション処理：  データが発生するごとに順次データをホストに送り処理を行う方式
【００６９】
図９に示すように、オンライン・トランザクション処理が稼働している場合、ＣＰＵ使用率は、常に１００％となるわけではなく頻繁に上下動を繰り返す。このため、過去１５分間のＣＰＵ使用率の平均値では、オンライン・トランザクション処理が稼働したか否かは判定できるが、過去１分間のＣＰＵ使用率の平均値では、稼働しているか否かは判定できない。
【００７０】
一方、図１０に示すように、バッチ処理では、ＣＰＵ使用率は、１００％近くになる。このため、過去１５分間でのＣＰＵ使用率の平均値だけでなく、過去１分間のＣＰＵ使用率の平均値でも、バッチ処理が稼働中か判断できる。
【００７１】
１５分など長い時間間隔で得られたＣＰＵ使用率の平均値を閾値と比較すれば、オンライン・トランザクション処理が稼働中か否かを判定できる。一方、１分など短い時間間隔でＣＰＵ使用率の平均値を閾値と比較すれば、バッチ処理が稼働中か否かを判定できる。
【００７２】
そこで、オンライン・トランザクション処理とバッチ処理の両方に対応するために、１分間、５分間、１５分間の平均値の閾値を設定して処理が稼働中か否か判定する。これにより、プロセスの種類に依存せず稼働中プロセスを判定することができる。
【００７３】
なお、図９および図１０においては、ＣＰＵの使用率について説明したが、ネットワークディスクアクセスを考慮すると、ディスクの使用率、ネットワークの使用率についても同様に考えられる。
【００７４】
具体的な適用例として、昼はＪａｖａ（登録商標）の処理を行ない、夜はＩ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）の処理を行なうシステムを考える。Ｊａｖａ（登録商標）の性能を向上させるカーネルパラメータとＩ／Ｏ処理の性能を向上させるカーネルパラメータは異なる。このようなシステムにおいて、昼はＪａｖａ（登録商標）の性能を向上させるカーネルパラメータを中心に、最適化処理を行ない、夜は、Ｉ／Ｏの性能を向上させるカーネルパラメータを中心に最適化処理を行なう。もし、それらの二つの使用方法を区別しないならば、最適値は、Ｊａｖａ（登録商標）とＩ／Ｏの最適値の間を振動する。あるいは真の最適値が得られない可能性がある。本実施形態によれば、使用方法の変更があった際に、使用方法毎の探索履歴を有効に利用（無駄とならないように）することができる。
【００７５】
本実施形態によれば、カーネルパラメータの最適化処理を行なう情報処理装置において、稼働しているプロセスのプロセスリストを作成し、稼働しているプロセスリストの状態を監視するプロセス監視部（例えば、稼働中プロセスリスト作成部１３３と監視部１３２）と、プロセスリストとカーネルパラメータの最適化処理の探索履歴とを関連付ける探索履歴情報（例えば、探索履歴テーブル１６５）を管理する管理部（例えば、探索履歴管理部１３５）とを備え、プロセス監視部が稼働しているプロセスリストの状態の変更を検知したとき、管理部は、状態の変更前のプロセスリストに対応する探索履歴情報を保存し、状態の変更後のプロセスリストに対応する探索履歴情報を読み出し、管理部は、探索履歴情報を読み出したのち、カーネルパラメータの最適化処理をすることができる。
【００７６】
また、管理部は、過去の所定時間において、ＣＰＵ使用率、ネットワーク使用率、およびディスクアクセス使用率のうち少なくともいずれかの使用率が所定の閾値を超えたときに、初期設定の探索履歴を読み出すことができる。
【００７７】
管理部は、過去の第１の所定時間（例えば、過去１分間）において、ＣＰＵ使用率、ネットワーク使用率、およびディスクアクセス使用率のうち少なくともいずれかの使用率が所定の第１の閾値を超えたときに、バッチ処理に対応する初期設定の探索履歴を読み出し、過去の第２の所定時間（例えば、過去１５分間）において、ＣＰＵ使用率、ネットワーク使用率、およびディスクアクセス使用率のうち少なくともいずれかの使用率が所定の第２の閾値を超えたときに、オンライン・トランザクション処理に対応する初期設定の探索履歴を読み出すことができる。
【図面の簡単な説明】
【００７８】
【図１】情報処理装置のハードウェア構成の例を示すブロック図である。
【図２】本発明の使用方法と効果を示す説明図である。
【図３】初期化部の処理を示すフローチャートである。
【図４】監視部の処理を示すフローチャートである。
【図５】稼働中プロセスリスト作成部の処理を示すフローチャートである。
【図６】最適化管理部の処理を示すフローチャートである。
【図７】探索履歴管理部の探索履歴読み出し処理を示すフローチャートである。
【図８】探索履歴管理部の探索履歴保存処理を示すフローチャートである。
【図９】オンライン・トランザクション処理のＣＰＵ使用率の変化を示す時系列図である。
【図１０】バッチ処理のＣＰＵ使用率の変化を示す時系列図である。
【図１１】プロセステーブルの一例を示す説明図である。
【図１２】稼働中プロセスリストの一例を示す説明図である。
【図１３】前回の稼働中プロセスリストの一例を示す説明図である。
【図１４】稼働中プロセス判定テーブルの一例を示す説明図である。
【図１５】探索履歴テーブルの一例を示す説明図である。
【符号の説明】
【００７９】
１００    サーバ
１１０    プロセッサ
１２０    メモリ
１３０    プログラム
１３１    初期化部
１３２    監視部
１３３    稼働中プロセスリスト作成部
１３４    最適化管理部
１３５    探索履歴管理部
１４０    入出力インタフェース
１５０    通信インタフェース
１６０    記憶装置
１６１    プロセステーブル
１６２    稼働中プロセスリスト
１６３    前回の稼働中プロセスリスト
１６４    稼働中プロセス判定テーブル
１６５    探索履歴テーブル
１６６    最適化中フラグ
１６７    １分フラグ
１６８    ５分フラグ
１６９    １５分フラグ
１７０    ネットワーク
【図１】
2009032110.tif 000003
【図２】
2009032110.tif 000004
【図３】
2009032110.tif 000005
【図４】
2009032110.tif 000006
【図５】
2009032110.tif 000007
【図６】
2009032110.tif 000008
【図７】
2009032110.tif 000009
【図８】
2009032110.tif 000010
【図９】
2009032110.tif 000011
【図１０】
2009032110.tif 000012
【図１１】
2009032110.tif 000013
【図１２】
2009032110.tif 000014
【図１３】
2009032110.tif 000015
【図１４】
2009032110.tif 000016
【図１５】
2009032110.tif 000017