(57)【要約】【課題】  計算機システムのシステム異常を監視するについて、システム異常を検出した場合にそのシステム異常の原因を容易に特定可能とする計算機システムの異常監視方法の提供。【解決手段】  異常監視方法を実行するための異常監視システム１は、入力データ１１の入力量に応じて演算処理装置に通常的に生じる負荷の実績を入力データ量対応実績負荷として収集する実績負荷収集部５を備え、また実績負荷収集部が収集した入力データ量対応実績負荷を格納する実績負荷格納部６を備え、さらに実績負荷格納部から取り出した入力データ量対応実績負荷で演算処理装置の現在負荷を評価することでシステム異常の有無を判定する負荷監視部７を備えている。【選択図】  図２
2008310470.tif 000002
【特許請求の範囲】
【請求項１】
入力データを処理して出力データを生成する演算処理装置を備えた計算機システムについて、前記入力データの処理に際し前記演算処理装置に生じる負荷に基づいてシステム異常を監視する計算機システムの異常監視方法において、
前記演算処理装置で前記入力データの入力量に応じて通常的に生じる負荷の実績を測定することで入力データ量対応実績負荷を収集する過程、前記演算処理装置における現在の負荷を測定して現在負荷を取得する過程、および前記現在負荷が前記入力データ量対応実績負荷よりも一定以上大きいか否かとしてシステム異常の有無を判定する過程を含むことを特徴とする計算機システムの異常監視方法。
【請求項２】
前記入力データに種別がある場合に、前記入力データ種別とその種別ごとの入力データの入力数により前記入力データをクラスに分けるクラス分けを行い、そして前記入力データ量対応実績負荷を前記クラス分けに対応させて管理し、前記現在負荷と前記入力データ量対応実績負荷の比較に際しては、前記入力データ量対応実績負荷として、前記現在負荷の測定時における入力データのクラスと対応するクラスの入力データ量対応実績負荷を用いるようにしたことを特徴とする請求項１に記載の計算機システムの異常監視方法。
【請求項３】
任意の時間間隔で順次的に入力する前記入力データについて、所定の入力時間間隔を条件として前記入力データ量対応実績負荷の収集のための連続受信を行い、その連続受信により前記入力データ量対応実績負荷の収集における単位の収集サイクルとするものとし、そして前記入力データに関するダミーデータを作成することで前記収集サイクルの終了を区切れるようにしたことを特徴とする請求項１または請求項２に記載の計算機システムの異常監視方法。
【請求項４】
システム異常を検出した場合に、その時点で動作しているアプリケーションプログラムの動作をトレースするようにしたことを特徴とする請求項１〜請求項３のいずれか１項に記載の計算機システムの異常監視方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、様々な分野でのシステムの制御や運用あるいは監視などに用いられる計算機システムについて、それに発生する可能性のあるシステム異常を監視する技術に関する。
【背景技術】
【０００２】
例えば列車運行などのように規模が大きく公共性も高い分野での各種システムの制御や運用あるいは監視などに用いられる計算機システムは、それにシステム異常を生じてシステムダウンを来たした場合の影響がきわめて大きなものとなる。このため、システムダウンにつながるようなシステム異常を事前に検出し、システムダウンが実際に発生するのを防止できるようにすることが望まれる。
【０００３】
こうした要望について、例えば特許文献１や特許文献２に開示のような技術が知られている。特許文献１の技術では、ＣＰＵ負荷を定常負荷とイベント負荷から求め、最も高い負荷がかかる事象を想定して負荷管理を行なうことを可能としている。また、イベント負荷をイベント数×イベント毎の該当プログラム処理時間から求めることを提案している。一方、特許文献２の技術では、ＣＰＵやメモリなどのリソースの使用量、使用率およびトランザクションデータとスループットを取得して相関関係を求め、複数の計算機の障害発生を検知または予測する性能監視について提案している。
【０００４】
【特許文献１】特開２００１−３４５９０号公報
【特許文献２】特開２００５−３２７２６１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
計算機システムのシステム異常には、入力データが過剰となることにより負荷が計算機システムの許容負荷を超えることになること、つまり入力データ量による負荷の過剰化が大きなものとしてあるが、この他に入力データやプログラムの異常でもたらされるシステム異常もある。
【０００６】
入力データやプログラムに異常が発生すると、それに起因して計算機システムの負荷が異常に増大するのが一般的である。したがって上記のような従来技術でも入力データやプログラムの異常に起因するシステム異常を検出することは可能である。すなわち上記従来技術は、計算機システムの許容負荷と現在における計算機システムの負荷の関係でシステム異常を監視する手法であるといえるが、入力データやプログラムの異常によりもたらされる負荷の過剰化を通じて入力データやプログラムの異常に起因するシステム異常も検出することができる。
【０００７】
ところで、計算機システムにシステム異常が発生した場合には、それへの対処が必要となる。この場合、システム異常をもたらした原因を特定できるか否かは、システム異常の対処への迅速性に大きく影響する。つまりシステム異常が入力データの増大に起因する負荷の過剰化なのか、それとも入力データやプログラムの異常に起因するものなのかを特定できれば、より迅速な対処が可能になるということである。
【０００８】
こうしたことから計算機システムのシステム異常監視については、システム異常を検出した場合にシステム異常の原因を特定できることが望まれる。しかるに、従来技術では、許容負荷と現在負荷の関係だけでシステム異常を監視するため、システム異常の原因を特定することが容易でない。
【０００９】
本発明は以上のような事情を背景になされたものであり、その課題は、計算機システムのシステム異常を監視するについて、システム異常を検出した場合にそのシステム異常の原因を容易に特定可能とする計算機システムの異常監視方法の提供にある。
【課題を解決するための手段】
【００１０】
上述のように計算機システムのシステム異常には、入力データの増大に起因する負荷の過剰化があり、また入力データやプログラムの異常に起因するシステム異常がある。そしてこれら各システム異常ではいずれの場合にも負荷の過剰化を生じる。ただ、その負荷の過剰化の原因は、各システム異常により異なる。すなわちシステム異常が入力データ量による負荷の過剰化であれば、入力データの異常増大が原因としてあり、一方、システム異常の原因が入力データやプログラムの異常にある場合には、入力データやプログラムの異常に起因して負荷が異常に増大することになることから、入力データの異常増大を伴うことなく負荷の過剰化がもたらされる。
【００１１】
こうした負荷の過剰化原因の特性に着目すると、入力データの入力量に応じて通常的に生じる負荷の実績に関する情報として入力データ量対応実績負荷を取得し、この入力データ量対応実績負荷に基づいて現在の負荷を評価してシステム異常を判定するようにすることで、システム異常の原因が入力データの異常な増大にあるのか、それとも入力データやプログラムの異常にあるのかを容易に特定することが可能となる。つまり、入力データが或る入力量での状態における現在の負荷がその入力データ量に対応する実績負荷に比べて一定以上に大きく、そのために負荷過剰としてシステム異常を生じている場合には、その負荷過剰つまりシステム異常が入力データ量によるものでなく、入力データやプログラムの異常に起因すると判定することが容易である。
【００１２】
本発明は以上のような考え方で上記課題を解決する。具体的には、入力データを処理して出力データを生成する演算処理装置を備えた計算機システムについて、前記入力データの処理に際し前記演算処理装置に生じる負荷に基づいてシステム異常を監視する計算機システムの異常監視方法において、前記演算処理装置で前記入力データの入力量に応じて通常的に生じる負荷の実績を測定することで入力データ量対応実績負荷を収集する過程、前記演算処理装置における現在の負荷を測定して現在負荷を取得する過程、および前記現在負荷が前記入力データ量対応実績負荷よりも一定以上大きいか否かとしてシステム異常の有無を判定する過程を含むことを特徴としている。
【００１３】
以上のような計算機システムの異常監視方法については、前記入力データに種別がある場合に、前記入力データ種別とその種別ごとの入力データの入力数により前記入力データをクラスに分けるクラス分けを行い、そして前記入力データ量対応実績負荷を前記クラス分けに対応させて管理し、前記現在負荷と前記入力データ量対応実績負荷の比較に際しては、前記入力データ量対応実績負荷として、前記現在負荷の測定時における入力データのクラスと対応するクラスの入力データ量対応実績負荷を用いるようにするのが好ましい。このような入力データのクラス分けを行うことにより、入力データ量対応実績負荷による現在負荷の評価をより効果的に行うことができるようになる。
【００１４】
また以上のような計算機システムの異常監視方法については、任意の時間間隔で順次的に入力する前記入力データについて、所定の入力時間間隔を条件として前記入力データ量対応実績負荷の収集のための連続受信を行い、その連続受信により前記入力データ量対応実績負荷の収集における単位の収集サイクルとするものとし、そして前記入力データに関するダミーデータを作成することで前記収集サイクルの終了を区切れるようにするのが好ましい。
【００１５】
このようにダミーデータで入力データ量対応実績負荷の収集における単位収集サイクルの終了を区切れるようにすることにより、入力データ量対応実績負荷の収集処理をより容易に行えるようになる。
【００１６】
以上のような計算機システムの異常監視方法は、上述のように、システム異常の原因が入力データ量による負荷過剰にあるのか、それとも入力データやプログラムの異常にあるのかを容易に特定できるという特徴がある。したがって、以上のような計算機システムの異常監視方法については、システム異常を検出した場合に、その時点で動作しているアプリケーションプログラムの動作をトレースするようにするのが好ましい。
【００１７】
このようにすることにより上記のような特徴をより効果的に活用することができる。つまり、演算処理装置の現在負荷が入力データ量対応実績負荷よりも一定以上大きいとして検出されるシステム異常は、入力データの異常かプログラムの異常のいずれかによると高い確度をもって判定できるので、行わせたトレースが無駄になることが少なく、その実効性をより高めることができるということである。
【発明の効果】
【００１８】
以上のような本発明によれば、計算機システムのシステム異常を監視するについて、システム異常を検出した場合にそのシステム異常の原因を容易に特定することが可能となる。
【発明を実施するための最良の形態】
【００１９】
以下、本発明を実施するための形態について説明する。図１に示すのは、本発明を適用した計算機システムで構成した監視システムの例である。本例の監視システムは、それぞれ複数で設けられる監視対象Ｋ（Ｋ１〜Ｋｎ）、サーバ用計算機システムＳ（Ｓ１〜Ｓｍ）、およびクライアント用計算機システムＴ（Ｔ１〜Ｔｍ）を含んでいる。監視対象Ｋ１〜Ｋｎは、例えば数百〜数万に及ぶ数で設けられており、それぞれ所定の監視データを収集して出力する。サーバ用計算機システムＳ１〜Ｓｍは、監視対象Ｋ１〜ＫｎからＬＡＮなどの通信ネットワークを介して送信されてくる監視データを入力データとして監視のための処理を行い、その処理で監視結果としての出力データを生成して出力する。クライアント用計算機システムＴ１〜Ｔｍは、サーバ用計算機システムＳ１〜Ｓｍそれぞれが出力する監視結果を監視員などによる視認のためにそれぞれのディスプレイＤ１〜Ｄｍに表示する処理を行う。またサーバ用計算機システムＳとクライアント用計算機システムＴは、それぞれ異常監視システムを備え、それぞれに発生する可能性のあるシステム異常をその異常監視システムで常時的に監視できるようにされ、この異常監視により、システムダウンにつながるようなシステム異常を事前に検出し、システムダウンが実際に発生するのを防止できるようにされている。
【００２０】
図２に、サーバ用計算機システムＳやクライアント用計算機システムＴが備える異常監視システムの一実施形態における基本的な構成を示す。本実施形態の異常監視システム１は、サーバ用計算機システムＳやクライアント用計算機システムＴで発生する可能性のあるシステム異常を監視するのに機能する。その異常監視は、入力データの入力量に応じてサーバ用計算機システムＳやクライアント用計算機システムＴにおけるＣＰＵ（演算処理装置：図示を省略）に通常的に生じる負荷の実績に関する情報として入力データ量対応実績負荷（以下実績負荷と略称する）を収集し、その収集した実績負荷に基づいて現在のＣＰＵ負荷を評価してシステム異常を判定するようにしてなされる。
【００２１】
また異常監視システム１は、システム異常を検出した場合のアプリケーションプログラムトレースデータ取得機能も有する。すなわち異常監視システム１は、システム異常を検出した場合に、そのシステム異常時に動作しているアプリケーションプログラムの動作を後のシステム異常解析に際してトレースできるようにするためのトレースデータを取得できるようにされている。
【００２２】
以上のように機能する異常監視システム１は、それぞれコンピュータプログラムとして構成される入力部２、出力部３、ＣＰＵ負荷測定部（演算処理装置負荷測定部）４、実績負荷収集部５、実績負荷格納部６、負荷監視部７、動作タスク検出部８、およびトレースデータ格納部９を備えている。
【００２３】
入力部２は、図１の監視対象Ｋから送信されてくる監視データを入力データ１１として取り込む。入力データ１１には、Ａ１入力データやＡ２入力データなどとして種別がある。この入力データ種別は、データの種類（監視データの場合であれば監視内容など）や１つの入力データにおけるデータ長（データ量）などに基づいて決められる。入力データ１１は、任意の時間間隔で順次的に入力部２に入力する。入力部２は、この任意の時間間隔で順次的に入力する入力データ１１について所定の入力時間間隔を条件として連続受信を行う。
【００２４】
具体的には、１つの入力データを受信するごとに一定の連続受信用の入力時間間隔Ｔmaxをタイマ（図示を省略）で設定し、その入力時間間隔Ｔmaxの間に次の入力データが入力することを条件にその次入力データを連続受信の入力データとする。このような連続受信は、実績負荷収集における収集サイクルを与えることになる。つまり実績負荷収集は、入力データの種別と入力数に応じた実績負荷の収集としてなされ、あるサイクルを単位として実績負荷を繰返し的に収集することでなされるが、その収集サイクルは、入力データの連続受信範囲とされる。
【００２５】
こうした連続受信ないし収集サイクルについては、その終了を区切るためにダミーデータを用いる。具体的には、入力時間間隔Ｔmaxの間に次ぎの入力データの入力がなかった場合に、当該の連続受信における入力データの種別と同じ種別のダミーデータを作成し、このダミーデータにより連続受信ないし収集サイクルの終了を区切るようにする。
【００２６】
出力部３は、ＣＰＵでの入力データ１１の処理で生成される出力データ１２の外部への出力を行う。また出力部３は、上記のダミーデータを受け取ることで現在の収集サイクルの終了を判定する。つまり出力部３は、ダミーデータを受け取った際に、その時刻を現在の収集サイクルの終了時刻とし、それを実績負荷収集部５に提供する。
【００２７】
ＣＰＵ負荷測定部４は、単位時間当たりのＣＰＵの動作率としてＣＰＵ負荷を測定する。ＣＰＵ負荷の測定は、実績負荷収集と負荷監視それぞれのために行われる。実績負荷収集のためのＣＰＵ負荷測定は、収集サイクルを単位として行われ、実績負荷収集部５からの負荷測定開始指令で開始され、実績負荷収集部５からの負荷測定終了指令で終了する。負荷監視のためのＣＰＵ負荷測定は、所定の監視周期で繰り返すようにしてなされる。
【００２８】
実績負荷収集部５は、実績負荷収集開始部１５、実績負荷収集終了部１６、および実績負荷編集部１７を含んでいる。
【００２９】
実績負荷収集開始部１５は、実績負荷編集部１７でなされる後述のような実績負荷編集に必要な入力データの管理的処理などを行い、またＣＰＵ負荷測定部４に負荷測定開始を指令する。その負荷測定開始指令は、１つの収集サイクルが終了した後の新たな入力データの入力があることを条件にしてなされる。こうした実績負荷収集開始部１５での処理の詳細については後述する。
【００３０】
実績負荷収集終了部１６は、収集サイクルの終了を管理し、ＣＰＵ負荷測定部４に負荷測定終了を指令する。その負荷測定終了指令は、出力データがダミーデータとなることを条件にしてなされる。こうした実績負荷収集終了部１６での処理の詳細については後述する。
【００３１】
実績負荷編集部１７は、ＣＰＵ負荷測定部４から渡されるＣＰＵ負荷データを編集して実績負荷格納部６に格納する。その編集処理には、クラス分け処理と統計処理が含まれる。
【００３２】
クラス分けは、入力データについてなされるものであり、実績負荷収集にあっては、実績負荷収集時の入力データについてなされる。すなわち１つの収集サイクルにおける連続受信の入力データを入力データ種別と連続受信での入力数により実績負荷収集時の入力データをクラスに分けるということである。こうした実績負荷収集におけるクラス分けのための処理は、実績負荷格納部６が有している実績負荷記録テーブル１８にクラスごとに実績負荷を記録することでなされる。実績負荷格納部６の実績負荷記録テーブル１８は、入力データの種別ごとに作成されており、これにより入力データ種別についてのクラス分けがなされている。また実績負荷記録テーブル１８には、所定の入力数単位（図２の例では、ある数Ｎ１〜Ｎｎについて０〜Ｎ１、Ｎ１〜Ｎ２、…Ｎｎ−１〜Ｎｎとして入力数単位が区切られている）ごとに作成された実績負荷記録欄１９が設けられており、この入力数単位ごとの実績負荷記録欄１９により入力数によるクラス分けがなされている。つまり１つの収集サイクルで収集された実績負荷のデータは、その収集サイクルでの入力データの種別に対応する実績負荷記録テーブル１８で、かつその収集サイクルでの入力数に対応した実績負荷記録欄１９に記録される。
【００３３】
統計処理では、負荷平均を求める。負荷平均は、繰り返される収集サイクルについてクラスごとに求める平均値である。また統計処理では、負荷平均について負荷標準偏差を求める。したがって実績負荷格納部６における実績負荷記録テーブル１８の実績負荷記録欄１９には、負荷平均、負荷標準偏差、および負荷平均の基礎となる収集サイクル数、つまり１つの実績負荷記録欄１９への実績負荷の格納回数が実績負荷に関するデータとして記録されることになる。以上のような実績負荷編集部１７での処理の詳細については後述する。
【００３４】
実績負荷格納部６は、実績負荷収集部５が収集・編集した実績負荷データを格納保存し、またその実績負荷データを必要に応じて負荷監視部７に提供する。そのため実績負荷格納部６は、上述のように、入力データの種別ごとに作成された実績負荷記録テーブル１８を有し、また実績負荷記録テーブル１８に入力数のクラスによる実績負荷記録欄１９が設けられている。
【００３５】
負荷監視部７は、ＣＰＵに生じている現在の負荷を監視することを通じてシステム異常を監視する。その異常監視は、上述のように、常時的に収集されて蓄えてある実績負荷に基づいてＣＰＵの現在の負荷状態を判定することでシステム異常を検出するようにしてなされる。また負荷監視部７は、動作タスク検出部８とトレースデータ格納部９を用いたアプリケーションプログラムトレースデータの取得処理にも機能する。すなわち動作タスク検出部８は、ＣＰＵで動作中のアプリケーションプログラムを常時検出しており、負荷監視部７がシステム異常を検出した場合に、その時点で動作しているアプリケーションプログラムについての情報、つまりシステム異常検出時タスク情報を負荷監視部７に提供する。そしてシステム異常検出時タスク情報を受け取った負荷監視部７は、該当のアプリケーションプログラムについてトレース出力指示を行い、これを受けて、例えばアプリケーションプログラムに組み込まれているトレース機能により、該当のアプリケーションプログラムのトレースがなされてトレースデータがトレースデータ格納部９に格納される。より具体的にいうと、トレースデータ格納部９は、計算機システムで作動する複数のアプリケーションプログラムＣ１〜Ｃｎのそれぞれごとに出力指定エリア（トレースデータ格納エリア）２１を設けた構成とされており、該当のアプリケーションプログラムの出力指定エリア２１を指定することで当該アプリケーションプログラムについてのトレース出力指示がなされ、それを受けてなされるトレースのトレースデータが当該出力指定エリア２１に記録される。以上のような負荷監視部７での処理についてはさらに後述する。
【００３６】
次ぎに、異常監視システム１における実績負荷収集処理について図３を参照して全般的に説明する。入力データの入力が上述の入力時間間隔Ｔmax以上にわたって途切れた後、例えば入力データ種別がＡ１である入力データ（Ａ１入力データ）１１が入力部２に入力してきたとする。すると、入力部２は、入力データ情報として入力データ１１の種別、その入力時刻（図の例ではＴＳ１）、および入力データの入力数＝１を実績負荷収集開始部１５に提供するとともに、次の入力データが連続受信条件で入力するかをチェックするために入力時間間隔Ｔmaxをタイマにセットする。
【００３７】
連続受信用の入力時間間隔Ｔmaxの間に次の入力データが入力した場合には、入力部２は、実績負荷収集開始部１５に入力数をプラス１でカウントアップするように連絡するとともに、タイマに再度、入力時間間隔Ｔmaxをセットする。こうした処理は、後述のタイムアウト処理がなされるまで繰り返される。
【００３８】
一方、入力時間間隔Ｔmaxの間に次の入力データが入力しなかった場合、つまりにタイムアウトとなった場合には、入力部２は、タイムアウト処理として、連続受信（ないし収集サイクル）の終了を区切るためのダミーデータ２２をタイムアウト前に入力の入力データと同じ種別で作成し、そのダミーデータ２２を次に動作するアプリケーションプログラムに渡す。こうしたタイムアウト処理がなされると１つの収集サイクルの終了となる。ここで、アプリケーションプログラムは、ダミーデータ２２に対しては通常の入力データ１１に対するような処理をなさないように設計されているものとする。つまり、ダミーデータ２２は、その作成タイミングでのデータ入力順番だけを守った状態でＣＰＵをいわば素通りするようになっており、アプリケーションプログラムによる処理を受けずに出力部３に出力されることになるということである。
【００３９】
以上のようにして入力データの連続受信がなされている間、実績負荷収集開始部１５は、入力部２から受け取る入力データ情報（入力データ種別、入力時刻、入力数）を現在負荷格納部２３におけるデータ種別格納欄２４、負荷測定開始時刻格納欄２５、入力数格納欄２６のそれぞれに格納する。ただ、入力時刻については、１つの収集サイクルの最初の入力データの入力時刻だけを負荷測定開始時刻として負荷測定開始時刻格納欄２５に格納する。また実績負荷収集開始部１５は、受け取った入力データ情報が入力数＝１を含む場合、その入力データ情報の受取りタイミングで負荷測定開始指令を発してＣＰＵ負荷測定部４を起動する。これにより起動してＣＰＵ負荷の測定を開始したＣＰＵ負荷測定部４は、実績負荷収集終了部１６からの負荷測定終了指令があるまでＣＰＵ負荷の測定を継続する。
【００４０】
また以上のようにして入力部２を通じて入力してくる入力データ１１はＣＰＵにおいて所定のアプリケーションプログラムで処理され、その処理で生成された出力データ１２が出力部３により外部に出力される。この間、上述のようにダミーデータ２２はそのまま出力部３に到達する。出力部３にダミーデータ２２が到達すると、出力部３は、実績負荷収集終了部１６に負荷測定終了時刻（図の例ではダミーデータ２２が到達した時刻ＴＥ３）を提供し、またダミーデータ２２を廃棄する。負荷測定終了時刻を受け取った実績負荷収集終了部１６は、その負荷測定終了時刻を現在負荷格納部２３における負荷測定終了時刻格納欄２７に格納するとともに、ＣＰＵ負荷測定部４に負荷測定終了指令を発する。
【００４１】
負荷測定終了指令を受けたＣＰＵ負荷測定部４は、負荷測定開始指令から負荷測定終了指令までの間に測定したＣＰＵ負荷、より具体的には、負荷測定開始指令から負荷測定終了指令までの測定で得られるＣＰＵにおける平均負荷を実績負荷編集部１７に提供する。ＣＰＵ負荷を受け取った実績負荷編集部１７は、そのＣＰＵ負荷を現在負荷格納部２３における実績負荷格納欄２８に格納するとともに、ＣＰＵ負荷に所定の編集を施して得られる実績負荷データを実績負荷格納部６に格納する。
【００４２】
次に、実績負荷収集開始部１５でなされる処理の詳細について説明する。実績負荷収集開始部１５における処理は、図４にその流れを示すように、ステップ１０１〜ステップ１１３の各処理過程を含む。ステップ１０１では、実績負荷収集開始部１５の起動要因を判定する。具体的には、起動要因が上述のタイムアウトであるかを判定する。起動要因がタイムアウトであれば、上述のように出力部３によりダミーデータの作成がなされ、実績負荷収集開始部１５での処理は終了となる。一方、起動要因がタイムアウトでなければ、ステップ１０２に進んで入力データの取込みを行う。続くステップ１０３では、新しい入力データが存在するかを判定する。ステップ１０３の判定結果が否定的な場合は処理終了となる。一方、ステップ１０３の判定結果が肯定的な場合はステップ１０４に進む。
【００４３】
ステップ１０４では、その時点で既にＣＰＵ負荷測定中となっているかを判定する。この判定は、図３の現在負荷格納部２３に入力データ情報などが格納されているか否かで行われる。つまり、現在負荷格納部２３に入力データ情報などが既に格納されていれば、「現在、ＣＰＵ負荷測定中」となり、そうでなければ、「現在、ＣＰＵ負荷非測定中」となる。
【００４４】
ステップ１０４の判定結果が肯定的な場合はステップ１０５に進む。ステップ１０５では、現在実行中の負荷測定における入力データの種別がステップ１０３における入力データの種別と同じかを判定する。ステップ１０５の判定結果が肯定的な場合はステップ１０６に進み、ダミーデータが作成済みかを判定する。ダミーデータ作成済みの場合は処理終了とし、ダミーデータ未作成の場合はステップ１０７に進んで現在負荷格納部２３の入力数格納欄２６における入力数を１つカウントアップし、ステップ１０１に戻る。
【００４５】
一方、ステップ１０５の判定結果が否定的な場合は、異なる種別の入力データが１つの収集サイクル中に混在することになる。そこで、ステップ１０８の処理を行った後に処理終了とする。ステップ１０８では、種別混在処理を行う。具体的には、現在負荷格納部２３のデータ種別格納欄２４、負荷測定開始時刻格納欄２５、入力数格納欄２６、実績負荷格納欄２８、負荷測定終了時刻格納欄２７の全てをクリアした後、入力データ種別混在記録欄２９に「種別混在中」を記録するとともに、種別混在により収集サイクルを終了とするために新しい入力種別のダミーデータを作成してアプリケーションプログラムを起動する。
【００４６】
ここで、現在実行中の負荷測定における入力データの種別と異なる種別の入力データが連続受信された場合は、１つの収集サイクルに種別の異なる入力データが混在することになる。このような場合には、上述のクラス分けとの関係で有効な実績負荷収集をなすことができない。そこで、入力データ種別が混在している収集サイクルについては「種別混在中」とし、その収集サイクルにおける連続受信入力データが全て処理される、つまり連続受信入力データの処理でえられた出力データの全てが出力部３に到着するまで、ＣＰＵ負荷の測定結果を採用しないようにする。つまり、実績負荷の収集は、１つの収集サイクルにおける連続受信入力データが全て同一種別であることを条件にして行うということである。
【００４７】
ステップ１０４の判定結果が否定的な場合はステップ１０９に進む。ステップ１０９では「種別混在中」であるかを判定する。「種別混在中」であれば処理終了とし、「種別混在中」でなければ、入力データ種別、負荷測定開始時刻、入力数＝１の各入力データ情報の現在負荷格納部２３への格納をステップ１１０、１１１、１１２として順次行い、さらにステップ１１３で負荷測定開始指令を発してＣＰＵ負荷測定部４を起動し、処理終了となる。
【００４８】
次に、実績負荷収集終了部１６でなされる処理の詳細について説明する。実績負荷収集終了部１６における処理は、図５にその流れを示すように、ステップ２０１〜ステップ２０８の各処理過程を含む。実績負荷収集終了部１６は、１つの収集サイクルにおける連続受信入力データの計算機システム内での処理が全て終了して最後のダミーデータが出力部３に到達することで実効的に起動する。つまり実績負荷収集終了部１６は、出力部３にダミーデータが到達することで起動した場合にのみ実績負荷収集終了についての実効的な処理を実行する。
【００４９】
ステップ２０１では、出力部３からの起動かを判定する。出力部３からの起動でなければ処理終了となり、出力部３からの起動であればステップ２０２に進む。ステップ２０２では入力データを取り込み、ステップ２０３でその入力データがダミーデータであるかを判定する。ダミーデータでなければ処理終了とし、ダミーデータであればステップ２０４に進む。
【００５０】
ステップ２０４では、そのダミーデータがそれまでの入力データと同じ種別かを判定する。ステップ２０４の判定結果が否定的な場合は、連続受信入力データについて異なる種別の混在が終了することになるので、ステップ２０５において現在負荷格納部２３の入力データ種別混在記録欄２９に格納されている「種別混在中」の記録をリセットし、ステップ１０８に進む。
【００５１】
一方、ステップ２０４の判定結果が肯定的な場合はステップ２０６に進み、その時点でＣＰＵ負荷測定中となっているかを判定する。ステップ２０６の判定結果が否定的であれば処理終了となり、肯定的であれば、ステップ２０７に進んで図３の現在負荷格納部２３における負荷測定終了時刻格納欄２７に負荷測定終了時刻を格納し、さらにステップ２０８でＣＰＵ負荷測定部４に負荷測定終了指令を発して処理終了となる。
【００５２】
ここで、ステップ２０５を経た場合には、ステップ２０７の処理がなされない。つまり現在負荷格納部２３に負荷測定終了時刻が格納されない。このため、それまでにＣＰＵ負荷測定部４が取得した実績負荷は、実績負荷編集部１７による後述するような処理において採用されないことになる。
【００５３】
次に、実績負荷編集部１７でなされる処理の詳細について説明する。実績負荷編集部１７における処理は、図６にその流れを示すように、ステップ３０１〜ステップ３０７の各処理過程を含む。上述のようにＣＰＵ負荷測定部４は、実績負荷収集終了部１６から負荷測定終了指令を受け取ると、それまでに測定して得られた実績負荷（これは、上述のように、負荷測定開始指令から負荷測定終了指令までの測定で得られるＣＰＵにおける平均負荷）を実績負荷編集部１７に渡す。実績負荷編集部１７は、このＣＰＵ負荷測定部４からの実績負荷のデータの提供を受けて実効的に起動する。
【００５４】
ステップ３０１では、ＣＰＵ負荷測定部４からの起動かを判定する。ＣＰＵ負荷測定部４からの起動でなければ処理終了となり、ＣＰＵ負荷測定部４からの起動であればステップ３０２に進む。ステップ３０２ではＣＰＵ負荷測定部４から提供された実績負荷を取り込み、ステップ３０３でその実績負荷について判定する。具体的には、実績負荷が０〜１００％の間にあるかを判定する。ステップ３０３の判定結果が否定的であれば処理終了となる。
【００５５】
一方、ステップ３０３の判定結果が肯定的な場合は、ステップ３０４に進む。ステップ３０４では、負荷測定終了時刻が設定済みかを判定する。この判定は、図３の現在負荷格納部２３における負荷測定終了時刻格納欄２７をチェックすることで行われる。ステップ３０４の判定結果が否定的であれば、つまり負荷測定終了時刻が設定されていない場合は、上述のように、１つの収集サイクルにおける連続受信入力データに異なる種別が混在する「種別混在中」となるので処理終了とする。
【００５６】
一方、ステップ３０４の判定結果が肯定的な場合は、ステップ３０５に進む。ステップ３０５では、ステップ３０２で取り込んだ実績負荷を現在負荷格納部２３の実績負荷格納欄２８に格納する。続くステップ３０６では、現在負荷格納部２３に格納した実績負荷を編集して実績負荷格納部６に格納する。実績負荷の編集には、上述のようなクラス分け処理と統計処理が含まれる。ステップ３０６に続くステップ３０７では、現在負荷格納部２３の各格納欄を全てクリアすることで次ぎの収集サイクルのための準備がなされ、これにより処理終了となる。
【００５７】
次に、図６のステップ３０６で実績負荷編集部１７が行う実績負荷の編集処理における統計処理の詳細について説明する。実績負荷統計処理は、図７にその流れを示すように、ステップ４０１〜ステップ４１０の各処理過程を含む。
【００５８】
上述のように、図２の実績負荷格納部６には、入力データの種別ごとに作成され実績負荷記録テーブル１８が設けられており、その実績負荷記録テーブル１８の実績負荷記録欄１９に負荷平均、負荷標準偏差、および実績負荷の格納回数（これは負荷平均の基礎となる収集サイクル数でもある）が実績負荷についての編集済みデータとして記録されている。そしてこれらのデータは、１つの収集サイクルごとになされる編集での統計処理により順次更新される。
【００５９】
まずステップ４０１で、それまでの実績負荷収集で実績負荷格納部６に格納されている負荷平均Ｐave、負荷標準偏差Ｐdiv、格納回数Ｐnを取り込む。ここで、図２の実績負荷格納部６では、上述のように、入力データの種別ごとに実績負荷記録テーブル１８が設けられ、これにより入力データ種別についてのクラス分けがなされ、また実績負荷記録テーブル１８に所定の入力数単位で作成された実績負荷記録欄１９が設けられ、これにより入力数によるクラス分けがなされている。したがって、ステップ４０１で取り込む負荷平均Ｐave、負荷標準偏差Ｐdiv、格納回数Ｐnは、今回の収集サイクルにおける入力データの種別に対応する実績負荷記録テーブル１８で、かつ今回の収集サイクルにおける連続受信の入力データ数に対応する「入力数」の実績負荷記録欄１９に記録されているデータとなる。
【００６０】
続くステップ４０２では、今回の収集サイクルにおける実績負荷Ｐnewを取り込む。それからステップ４０３で、格納回数Ｐｎが所定の下限基準格納回数Ｐnmin以上であるかを判定する。格納回数が下限基準格納数Ｐnminに達している場合は、ステップ４０４において今までの統計処理結果の有効性を判定する。具体的には、今までの負荷平均と負荷標準偏差から「Ｐave＋β・Ｐdiv」として求められる値について今回の負荷実績Ｐnewを「Ｐnew≦Ｐave＋β・Ｐdiv」として比較する。ただし、βは調整値であり、１〜３の値が通常使用される。このステップ４０４の判定結果が否定的な場合は統計処理を行わず、処理終了とする。
【００６１】
一方、格納回数が下限基準格納数Ｐnminに達していない場合は、ステップ４０４を省略してステップ４０５に進む。ステップ４０５では、新しい負荷平均Ｐnaveを「Ｐnave＝（Ｐnew＋Ｐn×Ｐave）／（Ｐn＋１）」として求める。新しい負荷平均Ｐnaveが求めたらステップ４０６に進む。ステップ４０６では、新しい負荷標準偏差Ｐndivを「Ｐndiv＝〔Ｐn／（Ｐn＋１）×｛Ｐdiv２＋（Ｐave−Ｐnave）２／（Ｐn＋１）｝〕１／２」として求める。続くステップ４０７では、それまでの格納回数Ｐnに今回の格納による１を加えることで新しい格納数Ｐnnを求め、さらにステップ４０８で、新たな格納数Ｐnnがオーバーフローとならないようにするために格納数Ｐnnが所定の上限基準格納数Ｐnmaxより大きいかを判定する。ここで、Ｐnmaxは統計処理上で必要とする充分な大きさの値として設定されるものとする。
【００６２】
格納数Ｐnnが上限基準格納数Ｐnmax以下であればすぐにステップ４１０に進み、格納数Ｐnnが上限基準格納数Ｐnmaxより大きければステップ４０９でＰnn＝Ｐnmaxとしてからステップ４１０に進む。ステップ４１０では、以上で求めた新しい負荷平均Ｐnave、負荷標準偏差Ｐndiv、格納数Ｐnnを今回の収集サイクルにおける入力データのクラスに対応させて実績負荷格納部６に格納し、これで処理終了となる。ステップ４１０での格納は、それまでの負荷平均Ｐave、負荷標準偏差Ｐdiv、格納回数Ｐnに新しい負荷平均Ｐnave、負荷標準偏差Ｐndiv、格納数Ｐnnを上書きすることで行う。
【００６３】
次に、負荷監視部７でなされる処理の詳細について説明する。負荷監視部７における処理は、図８にその流れを示すように、ステップ５０１〜ステップ５１３の各処理過程を含む。
【００６４】
負荷監視部７は、上述のように、ＣＰＵに現在生じている負荷を監視することを通じてシステム異常を監視し、その異常監視は、上述のような常時的な収集で実績負荷格納部６に蓄えてある実績負荷に基づいてＣＰＵの現在負荷を評価することでシステム異常を検出するようにしてなされる。したがって、負荷監視部７は、ＣＰＵ負荷測定部４により定周期で起動され、その都度ＣＰＵ負荷測定部４から渡されるＣＰＵの現在負荷を当該ＣＰＵ現在負荷の測定時点での入力データのクラスについての実績負荷で評価することによりシステム異常を検出する。
【００６５】
まずステップ５０１で、ＣＰＵ負荷測定部４からの起動かを判定する。ＣＰＵ負荷測定部４からの起動でなければ処理終了となり、ＣＰＵ負荷測定部４からの起動であればステップ５０２に進む。ステップ５０２では、ＣＰＵ負荷測定部４からＣＰＵ現在負荷Ｐaを取り込み、ステップ５０３で、そのＣＰＵ現在負荷Ｐaについて判定する。具体的には、ＣＰＵ現在負荷Ｐaが０〜１００％の間にあるかを判定する。ステップ５０３の判定結果が否定的であれば処理終了となる。一方、ステップ５０３の判定結果が肯定的であればステップ５０４に進む。
【００６６】
ステップ５０４では、ＣＰＵ現在負荷Ｐaの表示を行う。この表示は、計算機システムの利用者がＣＰＵ現在負荷Ｐaを視認できるようになされるものであり、図１の監視システムの場合であれば、クライアント用計算機システムＴのディスプレイＤに、例えば図９の例のようにしてＣＰＵ現在負荷Ｐaを表示することでなされる。
【００６７】
ステップ５０４に続くステップ５０５では、ＣＰＵ現在負荷Ｐaの測定時における入力データに種別の混在があるかを判定する。入力データ種別混在中であれば、上述のような実績負荷によるＣＰＵ現在負荷Ｐaの評価を有効に行うことができないので、処理終了とする。一方、入力データ種別混在がなければ、ステップ５０６に進む。
【００６８】
ステップ５０６では、ＣＰＵ現在負荷Ｐaの測定時における入力データについてクラスを取得する。ここで、入力データのクラスは、上述した実績負荷収集でのクラス分けにおけるクラスに対応するものである。すなわち負荷監視のためのＣＰＵ現在負荷測定における入力データのクラスは、ＣＰＵ現在負荷Ｐaの測定時に入力した入力データの種別と入力数で与えられる。入力数に関しては、図２の例での実績負荷の格納における０〜Ｎ１、Ｎ１〜Ｎ２、…Ｎｎ−１〜Ｎｎという入力数単位の区切りとの対応でいえば、ＣＰＵ現在負荷Ｐaの測定時の入力データの入力数が０〜Ｎ１、Ｎ１〜Ｎ２、…Ｎｎ−１〜Ｎｎのいずれかとしてクラスが取得される。なお、負荷監視は入力データの入力がない状態でもなされる。したがってステップ５０６の入力データクラス取得では、入力数＝０というクラスが取得されることもある。
【００６９】
ステップ５０６で入力データのクラスを取得したら、ステップ５０７に進む。ステップ５０７では、ステップ５０６で取得のクラスに対応する実績負荷データから格納回数Ｐnを取り出す。具体的には、図２の実績負荷格納部６に入力データ種別ごとで設けられている実績負荷記録テーブル１８からステップ５０６で取得のクラスにおける入力データ種別に対応するものを選択し、さらにその選択した実績負荷記録テーブル１８からステップ５０６で取得のクラスにおける入力数に対応する実績負荷記録欄１９を選択し、その選択した実績負荷記録欄１９から格納回数Ｐnを取り出す。
【００７０】
格納回数Ｐnを取り出したら、ステップ５０８でその格納回数Ｐnについて判定する。具体的には、格納回数Ｐnが所定の有効格納回数Ｐnef以上かを判定する。格納回数Ｐnが有効格納回数Ｐnefより小さい場合には、当該の実績負荷記録欄１９に記録されている負荷平均Ｐaveや負荷標準偏差Ｐdivが負荷監視に有効でないので、処理終了とする。一方、格納回数Ｐnが有効格納回数Ｐnef以上の場合にはステップ５０９に進む。
【００７１】
ステップ５０９では、格納回数Ｐnを取り出したのと同じ実績負荷記録欄１９から負荷平均Ｐaveと負荷標準偏差Ｐdivを取り出す。続くステップ５１０では、負荷平均Ｐaveと負荷標準偏差Ｐdivを用いてＣＰＵ現在負荷Ｐaを判定する。具体的には、Ｐa＞Ｐave＋αＰdivであるかについて判定する。ただし、αは調整値であり、１〜３の値が通常使用される。なお、入力数＝０のクラスの場合は、負荷平均Ｐaveには予め用意してあるアプリケーションプログラム非動作時定常負荷を用いる。ここで、アプリケーションプログラム非動作時定常負荷とは、アプリケーションプログラムが動作していない状態でＣＰＵに通常的に生じる負荷である。
【００７２】
ステップ５１０の判定結果が否定的な場合は、システム異常なしであるので処理終了とする。一方、ステップ５１０の判定結果が肯定的な場合は、システム異常ありとなる。この場合には、まずステップ５１１とステップ５１２でアプリケーションプログラムのトレース処理を行う。具体的には、システム異常検出時に動作しているアプリケーションプログラムを図２の動作タスク検出部８からの情報で特定し（ステップ５１１）、それから該当のアプリケーションプログラムについて上述のようにしてトレース出力指示を行う（ステップ５１２）。このトレース出力指示がなされると、該当のアプリケーションプログラムについてトレースがなされ、そのトレースデータが図２のトレースデータ格納部９に格納される。
【００７３】
こうしたトレース処理に続いて、ステップ５１３でシステム異常について表示を行う。この表示は、計算機システムの利用者にシステム異常の発生を警報するためになされるものであり、図１の監視システムの場合であれば、例えば図９の例のようにしてクライアント用計算機システムＴのディスプレイＤに表示されているＣＰＵ現在負荷の欄の表示色を変えたり点滅したりするなどして、「システム異常あり」を警報することができるようにしてなされる。
【００７４】
以上、本発明を実施するための形態について説明したが、これは代表的な例に過ぎず、本発明は、その趣旨を逸脱することのない範囲で様々な形態で実施することができる。例えば以上の実施形態における異常監視システムは、上述したような実績負荷による異常監視の他に、計算機システムにおけるＣＰＵの許容負荷との関係で現在負荷を評価することでシステム異常を監視する機能を組み込むことも可能である。また以上の実施形態は、監視システムで用いる計算機システムに本発明を適用する場合であったが、これに限られず、様々な分野でのシステムの制御や運用で用いられる計算機システムについても適用可能である。
【図面の簡単な説明】
【００７５】
【図１】本発明による異常監視方法を適用する計算機システムで構成した監視システムの構成例を示す図である。
【図２】一実施形態による異常監視システムの構成を示す図である。
【図３】図２の異常監視システムにおける実績負荷収集処理を説明する図である。
【図４】実績負荷収集開始部における処理の流れを示す図である。
【図５】実績負荷収集終了部における処理の流れを示す図である。
【図６】実績負荷編集部における処理の流れを示す図である。
【図７】実績負荷統計処理の流れを示す図である。
【図８】負荷監視部における処理の流れを示す図である。
【図９】負荷監視結果の表示例を示す図である。
【符号の説明】
【００７６】
１      異常監視システム
２      入力部
３      出力部
４      ＣＰＵ負荷測定部（演算処理装置負荷測定部）
５      実績負荷収集部
６      実績負荷格納部
７      負荷監視部
９      トレースデータ格納部
１１    入力データ
１２    出力データ
１５    実績負荷収集開始部
１６    実績負荷収集終了部
１７    実績負荷編集部
Ｓ      計算機システム
Ｔ      計算機システム
【図１】
2008310470.tif 000003
【図２】
2008310470.tif 000004
【図３】
2008310470.tif 000005
【図４】
2008310470.tif 000006
【図５】
2008310470.tif 000007
【図６】
2008310470.tif 000008
【図７】
2008310470.tif 000009
【図８】
2008310470.tif 000010
【図９】
2008310470.tif 000011