(57)【要約】【課題】  コンピュータウィルス等によりメモリリーク量が急激に増える場合に素早く対処する。【解決手段】  メモリリーク監視タイミングになると（ステップ１０）、現期間におけるメモリ使用量の平均値を求め（ステップ１１）、この現期間の平均値から過去期間の平均値を引き、この値をメモリリーク量の増加量とする（ステップ１２）。次に、メモリリーク増加量を現期間と過去期間との時間差で割って、メモリリーク増加率を求め（ステップ１３）、このメモリリーク増加率が上限増加率を超える場合には（ステップ１６，１８）、メモリリーク対策要求を出力する。【選択図】  図４
2005250751.tif 000002
【特許請求の範囲】
【請求項１】
プロセスが使用するメモリのメモリリーク監視方法において、
現時点を含む所定期間（以下、現期間とする）中の前記メモリの使用量の統計処理による代表値と、該現期間より過去の所定期間（以下、過去期間とする）の前記メモリの使用量の統計処理による代表値とをそれぞれ求める代表値算出工程と、
前記現期間の前記メモリ使用量の代表値と、前記過去期間の前記メモリ使用量の代表値との差をメモリリークの増加量として推定する増加量推定工程と、
前記メモリリークの増加量と、前記現期間と前記過去期間との時間差とからリーク増加率を求める増加率算出工程と、
前記リーク増加率が予め定めた上限増加率を超えると、警告を発する、及び／又はメモリリーク対処を指示するリーク対策工程と、
を含むことを特徴とするメモリリーク監視方法。
【請求項２】
請求項１に記載のメモリリーク監視方法において、
前記現期間中及び前記過去期間中の前記メモリ使用量の代表値は、当該期間における該メモリ使用量の平均値である、
ことを特徴とするメモリリーク監視方法。
【請求項３】
請求項１及び２のいずれか一項に記載のメモリリーク監視方法において、
前記予め定めた上限増加率は、第１の上限増加率と、該第１の上限増加率より大きな第２の上限増加率とを有し、
前記リーク対策工程では、前記リーク増加率が前記第１の上限増加率を超えると、メモリリークが発生している旨の警告を発し、前記リーク増加率が前記第２の上限増加率を超えると、コンピュータウィルスに起因する緊急性の高いメモリリークが発生している旨の警告を発する、
ことを特徴とするメモリリーク監視方法。
【請求項４】
請求項１から３のいずれか一項に記載のメモリリーク監視方法において、
前記リーク対策工程では、前記プロセスが使用する前記メモリの使用量が予め定めた上限量を超えたときも、警告を発する、及び／又はメモリリーク対処を指示する
ことを特徴とするメモリリーク監視方法。
【請求項５】
請求項１から４のいずれか一項に記載のメモリリーク監視方法において、
前記プセスが使用する前記メモリの記憶内容を、所定期間毎に他の記憶媒体に記憶しておくバックアップ工程と、
前記リーク対策工程で前記メモリリーク対処の指示が発せられると、前記他の記憶媒体に記憶されている複数の時刻毎の前記メモリの記憶内容のうち、所定の条件を満たす時刻の記憶内容を抽出し、該記憶内容を前記メモリに記憶させるメモリ回復工程と、
を含むことを特徴とするメモリリーク監視方法。
【請求項６】
請求項５に記載のメモリリーク監視方法において、
前記所定の条件を満たす時刻は、前記プロセスの起動開始時点での前記メモリの記憶内容と同じ内容が記憶されている時刻と、前記増加率が予め定められた値以上に変化したときよりも前の時刻と、予め設定された又は外部から指示された時刻とのうち、いずれか１つである、
ことを特徴とするメモリリーク監視方法。
【請求項７】
プロセスが使用するメモリのメモリリーク監視プログラムにおいて、
現時点を含む所定期間（以下、現期間とする）中の前記メモリの使用量の統計処理による代表値と、該現期間より過去の所定期間（以下、過去期間とする）の前記メモリの使用量の統計処理による代表値とをそれぞれ求める代表値算出ステップと、
前記現期間の前記メモリ使用量の代表値と、前記過去期間の前記メモリ使用量の代表値との差をメモリリークの増加量として推定する増加量推定ステップと、
前記メモリリークの増加量と、前記現期間と前記過去期間との時間差とからリーク増加率を求める増加率算出ステップと、
前記リーク増加率が予め定めた上限増加率を超えると、警告を発する、及び／又はメモリリーク対処を指示するリーク対策ステップと、
をコンピュータに実行させることを特徴とするメモリリーク監視プログラム。
【請求項８】
請求項７に記載のメモリリーク監視プログラムにおいて、
前記リーク対策ステップでは、前記プロセスが使用する前記メモリの使用量が予め定めた上限量を超えたときも、警告を発する、及び／又はメモリリーク対処を指示する、
ことを特徴とするメモリリーク監視プログラム。
【請求項９】
プロセスが使用するメモリのメモリリーク監視装置において、
現時点を含む所定期間（以下、現期間とする）中の前記メモリの使用量の統計処理による代表値と、該現期間より過去の所定期間（以下、過去期間とする）の前記メモリの使用量の統計処理による代表値とをそれぞれ求める代表値算出手段と、
前記現期間の前記メモリ使用量の代表値と、前記過去期間の前記メモリ使用量の代表値との差をメモリリークの増加量として推定する増加量推定手段と、
前記メモリリークの増加量と、前記現期間と前記過去期間との時間差とからリーク増加率を求める増加率算出手段と、
前記リーク増加率が予め定めた上限増加率を超えると、警告を発する、及び／又はメモリリーク対処を指示するリーク対策手段と、
を備えていることを特徴とするメモリリーク監視装置。
【請求項１０】
請求項１１に記載のメモリリーク監視装置において、
前記リーク対策手段は、前記プロセスが使用する前記メモリの使用量が予め定めた上限量を超えたときも、警告を発する、及び／又はメモリリーク対処を指示する、
ことを特徴とするメモリリーク監視装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータにおいて、プロセスが使用するメモリのリーク監視方法、これを実行するプログラム及び装置に関する。
【背景技術】
【０００２】
オペレーティングシステム（以下、ＯＳとする）の機能として、アプリケーションプログラム（以下、ＡＰとする）からのメモリ確保要求に従って、装置の主記憶部であるメモリの領域を割り当てるメモリ管理機能がある。ＡＰの実行単位であるプロセスは、一般的に、処理開始前にＯＳによりメモリ領域が割り当てられ、処理終了後に該当メモリ領域をＯＳに開放する、という手順をとる。しかし、プロセスは、プログラムのバグやコンピュータウィルス等の何らかの要因により、処理が終了したにも関わらず、該当メモリ領域をＯＳに返還しないことがある。このような不良現象は、一般的に、メモリリークと呼ばれている。
【０００３】
連続稼動中のプロセスにおいて、メモリリークが繰り返し発生した場合、このプロセスが使用するメモリ領域が増加する一方で、ＯＳや他のプロセスが使用できるメモリ用域が減少してしまう。このため、このような現象を長期間放置すると、装置全体の処理能力が低下する上に、最悪の場合、装置やプロセスが異常停止する虞がある。
【０００４】
そこで、以下の特許文献１では、以上のようなメモリリークによる不具合を解決するための技術が提案されている。
【０００５】
この技術は、プロセスに対するメモリ使用量の上限値を予め定めておき、この上限値を超えたときには、このプロセスを初期化し、このプロセスによるメモリ使用領域を強制解放する、というものである。
【０００６】
【特許文献１】特開２０００−２２２２２７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、前述の特許文献１に記載の技術は、リーク量が徐々に増えるプログラムのバグに起因するメモリリークに対しては、効果的であるものの、リーク量が急激に増えるコンピュータウィルスに起因するメモリリークに対しては、緊急を要するにも関わらず、メモリ使用量の上限値に達するまで待たなければならず、素早く対処できないという問題点がある。
【０００８】
本発明は、このような従来の問題点に着目し、コンピュータウィルス等によりリーク量が急激に増える場合に素早く対処することができるメモリリークの監視方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
前記問題点を解決するための発明に係るメモリリーク監視方法は、
現時点を含む所定期間（以下、現期間とする）中の前記メモリの使用量の統計処理による代表値と、該現期間より過去の所定期間（以下、過去期間とする）の前記メモリの使用量の統計処理による代表値とをそれぞれ求める代表値算出工程と、
前記現期間の前記メモリ使用量の代表値と、前記過去期間の前記メモリ使用量の代表値との差をメモリリークの増加量として推定する増加量推定工程と、
前記メモリリークの増加量と、前記現期間と前記過去期間との時間差とからリーク増加率を求める増加率算出工程と、
前記リーク増加率が予め定めた上限増加率を超えると、警告を発する、及び／又はメモリリーク対処を指示するリーク対策工程と、
を含むことを特徴とする。
【００１０】
ここで、前記現期間中及び前記過去期間中の前記メモリ使用量の代表値は、当該期間における該メモリ使用量の平均値であってもよい。
【００１１】
また、前記予め定めた上限増加率は、第１の上限増加率と、該第１の上限増加率より大きな第２の上限増加率とを有し、前記リーク対策工程では、前記リーク増加率が前記第１の上限増加率を超えると、メモリリークが発生している旨の警告を発し、前記リーク増加率が前記第２の上限増加率を超えると、コンピュータウィルスに起因する緊急性の高いメモリリークが発生している旨の警告を発するようにしてもよい。
【００１２】
また、前記リーク対策工程では、前記プロセスが使用する前記メモリの使用量が予め定めた上限量を超えたときも、警告を発する、及び／又はメモリリーク対処を指示することが好ましい。
【００１３】
さらに、以上のメモリリーク監視方法は、
前記プセスが使用する前記メモリの記憶内容を、所定期間毎に他の記憶媒体に記憶しておくバックアップ工程と、
前記リーク対策工程で前記メモリリーク対処の指示が発せられると、前記他の記憶媒体に記憶されている複数の時刻毎の前記メモリの記憶内容のうち、所定の条件を満たす時刻の記憶内容を抽出し、該記憶内容を前記メモリに記憶させるメモリ回復工程と、
を含んでいてもよい。
【００１４】
この場合、前記所定の条件を満たす時刻は、前記プロセスの起動開始時点での前記メモリの記憶内容と同じ内容が記憶されている時刻と、前記増加率が予め定められた値以上に変化したときよりも前の時刻と、予め設定された又は外部から指示された時刻とのうち、いずれか１つであるってもよい。
【００１５】
また、前記問題点を解決するための発明に係るメモリリーク監視プログラムは、
現時点を含む所定期間（以下、現期間とする）中の前記メモリの使用量の統計処理による代表値と、該現期間より過去の所定期間（以下、過去期間とする）の前記メモリの使用量の統計処理による代表値とをそれぞれ求める代表値算出ステップと、
前記現期間の前記メモリ使用量の代表値と、前記過去期間の前記メモリ使用量の代表値との差をメモリリークの増加量として推定する増加量推定ステップと、
前記メモリリークの増加量と、前記現期間と前記過去期間との時間差とからリーク増加率を求める増加率算出ステップと、
前記リーク増加率が予め定めた上限増加率を超えると、警告を発する、及び／又はメモリリーク対処を指示するリーク対策ステップと、
をコンピュータに実行させることを特徴とするものである。
【００１６】
また、プロセスが使用するメモリにメモリリークが発生した際に、該メモリの記憶内容を回復させるメモリ回復プログラムは、
前記プセスが使用する前記メモリの記憶内容を、所定期間毎に他の記憶媒体に記憶しておくバックアップステップと、
メモリリーク対策要求を受け付ける要求受付ステップと、
前記メモリリーク対策要求を受け付けると、前記他の記憶媒体に記憶されている複数の時刻毎の前記メモリの記憶内容のうち、所定の条件を満たす時刻の記憶内容を抽出し、該記憶内容を前記メモリに記憶させるメモリ回復ステップと、
をコンピュータに実行させることを特徴とする。
【００１７】
また、前記問題点を解決するための発明に係るメモリリーク監視装置は、
現時点を含む所定期間（以下、現期間とする）中の前記メモリの使用量の統計処理による代表値と、該現期間より過去の所定期間（以下、過去期間とする）の前記メモリの使用量の統計処理による代表値とをそれぞれ求める代表値算出手段と、
前記現期間の前記メモリ使用量の代表値と、前記過去期間の前記メモリ使用量の代表値との差をメモリリークの増加量として推定する増加量推定手段と、
前記メモリリークの増加量と、前記現期間と前記過去期間との時間差とからリーク増加率を求める増加率算出手段と、
前記リーク増加率が予め定めた上限増加率を超えると、警告を発する、及び／又はメモリリーク対処を指示するリーク対策手段と、
を備えていることを特徴とする。
【００１８】
また、プロセスが使用するメモリにメモリリークが発生した際に、該メモリの記憶内容を回復させるコンピュータシステムは、
前記プロセスが使用する前記メモリの記憶内容を、所定期間毎に前記他の記憶媒体に記憶しておくバックアップ手段と、
メモリリーク対策要求を受け付ける要求受付手段と、
前記メモリリーク対策要求を受け付けると、前記他の記憶媒体に記憶されている複数の時刻毎の前記メモリの記憶内容のうち、所定の条件を満たす時刻の記憶内容を抽出し、該記憶内容を前記メモリに記憶させるメモリ回復手段と、
を備えていることを特徴とする。
【発明の効果】
【００１９】
本発明によれば、メモリリーク増加量を推定し、このメモリリーク増加量に基づくリーク増加率を求めて、このリーク増加率を監視しているので、コンピュータウィルス等によりリーク量が急激に増える場合に素早く対処することができる。
【発明を実施するための最良の形態】
【００２０】
以下、本発明に係るコンピュータシステムについて、図面を用いて説明する。
【００２１】
本実施形態のコンピュータシステムは、図１に示すように、ネットワーク１に接続されている端末２，２，…に情報を提供するサーバ１００と、このサーバ１００のメモリ１０２の状況等を監視する監視装置２００と、を備えている。
【００２２】
サーバ１００は、各種プログラムに従って処理を実行するＣＰＵ１０１と、このＣＰＵ１０１が実行するプログラムや各種データが記憶される主記憶装置としてのメモリ１０２と、外部記憶装置である複数のハードディスク装置１０３と、ネットワーク１を介して端末２と通信するための第１の通信インタフェース回路１０４と、監視装置２００と通信するための第２の通信インタフェース回路１０５と、を備えている。
【００２３】
監視装置２００は、各種プログラムに従って処理を実行するＣＰＵ２０１と、このＣＰＵ２０１が実行するプログラムや各種データが記憶されるメモリ２０２と、ハードディスク装置２０３と、サーバ１００と通信するための通信インタフェース回路２０４と、ＣＤ-ＲＯＭやＤＶＤ等の記憶媒体に記憶されている情報を再生する再生装置２０５と、キーボード等の入力装置２０７と、入力装置２０７からの情報を受け付けるための入力制御インタフェース回路２０６と、各種情報を表示する表示装置２０９と、ＣＰＵ２０１からの指示に従って表示装置２０９を駆動する表示制御インタフェース回路２０８と、を備えている。
【００２４】
サーバ１００は、機能的には、図２に示すように、ＯＳ１１０と、ＡＰである被監視プロセス１３０と、を有している。サーバ１００のＯＳ１１０は、被監視プロセス１３０を管理するプロセス管理部１２１と、被監視プロセス１３０からのメモリ確保要求に応じてメモリ１０２内の使用領域を定めるメモリ管理部１１１と、を有している。以上の被監視プロセス１３０及びＯＳ１１０の機能は、いずれも、図１において、メモリ１０２に記憶されたプログラムをＣＰＵ１０１が実行することで達成される。また、メモリ１０２上には、被監視プロセス１３０を管理するために必要なデータが記憶されるプロセス管理テーブル１２２と、メモリ１０２を管理するために必要なデータが記憶されるメモリ管理テーブル１１２が展開される。なお、図２においては、プロセス管理テーブル１２２及びメモリ管理テーブル１１２は、それぞれ、ＯＳ１１０のプロセス管理部１２１及びメモリ管理部１１１の管理下にあるため、これらのテーブル１１１，１２１をＯＳ１１０内に描いている。また、サーバ１００は、以上の機能のほか、図示されていないが、外部と通信するための通信部も有している。
【００２５】
また、監視装置２００は、機能的には、各種データを入力するための入力部２２７と、各種データを表示する表示部２２９と、サーバ１００内のメモリ１０２の状況を監視するための監視プロセス２１１と、を有している。監視プロセス２１１の機能は、メモリ２０２に記憶されたプログラムをＣＰＵ２０１が実行することで達成される。また、表示部２２９は、表示装置２０９及び表示制御インタフェース回路２０８を有して構成され、入力部２２７は、入力装置２０７及び入力制御インタフェース回路２０６を有して構成される。また、メモリ１０２上には、監視プロセス２１１が使用する監視用パラメータが記憶されるパラメータテーブルが展開される。なお、監視装置２００も、以上の機能のほか、図示されていないが、外部と通信するための通信部も有している。
【００２６】
サーバ１００のメモリ管理テーブル１１２は、図３に示すように、被監視プロセス２１１３０の識別子が記憶されるプロセス識別子欄１１３と、プロセス識別子欄１１３に記憶された識別子が示すプロセスの起動からの経過時間が記憶される経過時間欄１１４と、経過時間欄に記憶された時間が経過した時刻におけるメモリ使用量が記憶されるメモリ使用量欄１１５と、経過時間欄１１４に記憶された時間が経過した時刻から一定時間前迄の期間におけるメモリ使用量の平均値が記憶される平均値欄１１６と、この一定時間のメモリ使用量の増加率が記憶される増加率欄１１７と、を有している。メモリ使用量は、後述するように、一定時間毎に計測されるため、１つの被監視プロセスに対して、経過時間欄１１４には、一定時間間隔の複数の経過時間が記憶され、メモリ使用量欄１１５には、各経過時間が経過した時刻における使用量が記憶される。
【００２７】
サーバ１００のプロセス管理テーブル１２２は、図４に示すように、被監視プロセス１３０の識別子が記憶されるプロセス識別子欄１２３と、プロセス識別子欄１２３に記憶された識別子が示すプロセスの起動からの経過時間が記憶される経過時間欄１２４と、メモリ１０２上のデータをハードディスク装置１０３に記憶させたときのハードディスク装置１０３内の記憶場所、言い換えるとアドレスが記憶される記憶場所欄１２６と、ハードディスク装置１２５への記憶の形態を示すフラグが記憶されるフラグ欄１２５と、を有する。メモリ１０２上のデータは、後述するように、一定時間毎にハードディスク装置１０３に記憶されるため、１つの被監視プロセス１３０に対して、経過時間欄１２４には、一定時間間隔の複数の経過時間が記憶され、記憶場所欄１２６には、各経過時間が経過した際にハードディスク装置１０３にメモリ１０２上のデータを記憶させたときのハードディスク装置１０３内の記憶場所が記憶される。フラグ欄１２５には、被監視プロセス１３０による明示的な指示による記憶か、仮想記憶の全て或いは一部をハードディスク装置１０３に一時的に退避するスワップアウト等による記憶かを区別するためのフラグが記憶される。
【００２８】
監視装置２００のパラメータテーブル２１２は、図５に示すように、被監視プロセス１３０の識別子が記憶されるプロセス識別子欄２１３と、プロセス識別子欄２１３に記憶された識別子が示す被監視プロセス１３０の使用メモリ１０２の上限量が記憶される上限量欄２１４と、その被監視プロセス１３０の使用によるメモリ１０２の第１の上限増加率及び第２の上限増加率がそれぞれ記憶される第１及び第２上限増加率欄２１５，２１６と、を有する。上限量、第１及び第２上限増加量は、いずれも、実際に、被監視プロセス１３０を稼動させる前に、予め決めておき、各対応欄に記憶させておく値である。これらの値は、好ましくは各被監視プロセスの内容に応じて定めるべきである。このため、上限量に関しては、例えば、被監視プロセスを一日間稼動させたときの１日間の平均使用量を求め、この平均使用量の一定倍率の量を上限量にしてもよい。また、各上限増加量に関しては、例えば、一律に一定の値を固定的に決めておいてもよい。なお、第２の上限増加率は、第１の上限増加率より大きい値である。
【００２９】
次に、図６及び図７に示すフローチャートに従って、サーバ１００のメモリ管理部１１１の動作について説明する。
【００３０】
メモリ管理部１１１は、図６のフローチャートに示すように、被監視プロセス１３０からメモリ確保要求があると（ステップ１）、監視装置２００の監視プロセス２１１から、この被監視プロセス１３０が使用しているメモリ１０２に対するリーク対策要求があるか否かを判断し（ステップ２）、リーク対策要求がなければ、メモリ１０２の記憶領域中に、被監視プロセス１３０の使用領域を割り当てて（ステップ３）終了する。なお、メモリ使用領域の割り当ては、ここではページ単位、例えば、４ＫＢ単位で行われる。また、リーク対策要求があれば（ステップ２）、被監視プロセス１３０の使用領域を割り当てずに終了する。
【００３１】
また、メモリ管理部１１１は、図７のフローチャートに示すように、被監視プロセス１３０が起動中の際には、以上の処理と並行して、メモリ使用量記憶タイミングになると（ステップ５）、被監視プロセス１３０が使用しているメモリ使用量をメモリ管理テーブル１１２のメモリ使用量欄１１５に記憶する（ステップ６）。なお、メモリ使用量記憶タイミングは、ここでは、例えば、１０分間隔で訪れるように設定されている。メモリ使用量を記憶すると、被監視プロセス１３０が終了したか否かを判断し（ステップ７）、終了していなければステップ５に戻り、終了していればそのまま終了する。
【００３２】
次に、図８に示すフローチャートに従って、監視プロセス２１１の動作について説明する。この監視プロセス２１１は、被監視プロセス２１１１３０の起動に伴って起動する。そして、リーク監視タイミングになると（ステップ１０）、次のステップ１１を実行する。リーク監視タイミングは、ここでは、例えば、１０分間隔で訪れるように設定されている。
【００３３】
ステップ１１では、メモリ管理テーブル１１２のメモリ使用量欄１１５を参照して、被監視プロセス１３０によるメモリ使用量の現時点から一定時間前迄の期間（現期間）の平均値を求め、これを現時点の平均値として、メモリ管理テーブル１１２の平均値欄１１６に記憶する。続いて、現期間の平均値と、現期間の開始時刻から一定時間前迄の期間（過去期間）の平均値との差を求め、これを被監視プロセス１３０によるメモリ使用で発生した現期間中のメモリリーク増加量とする（ステップ１２）。なお、ここでの一定時間は、例えば、１日、つまり２４時間である。また、過去期間の平均値は、メモリ管理テーブル１１２の平均値欄１１６に記憶されている平均値を用いる。具体的には、平均値欄１１６に記憶されている各平均値のうち、現期間の開始時刻、つまり現時点から２４時間前の時刻に相当する経過時間のときの平均値を用いる。
【００３４】
ところで、被監視プロセス１３０によるメモリ使用量は、前述したように、この被監視プロセス１３０からのメモリ確保要求により、ＯＳ１１０のメモリ管理部１１１がメモリ１０２の使用領域を割り当てているので、簡単に取得することができる。一方、メモリリークは、プログラムのバグやコンピュータウィルス等により起こるものの、ＯＳ１１０は、バグを含む不良なＡＰ又はコンピュータウィルスである不正なプログラムを含むＡＰであっても、これらのＡＰからのメモリ確保要求自体は正式なものであるため、メモリリーク量を把握することは難しい。
【００３５】
そこで、本実施形態では、メモリリークが繰り返されることで、時間経過に伴ってメモリ使用量が増加することに着目し、ある期間中の使用量の増加量を、この期間中のメモリリーク増加量にすることにしている。但し、メモリ使用量には、メモリリーク量以外であっても、負荷集中などの偶然よよる短期的な変動や、日中や夜間などに見られる周期的な変動が含まれるため、メモリリーク増加量を求める際には、これらの変動を排除する必要がある。このため、本実施形態では、２４時間という期間を設けて、この期間中の平均値を求めて前述の変動等を排除した上で、現期間のメモリ使用量の平均値から過去期間のメモリ使用量の平均値を減算して、現期間のメモリリーク増加量を求めている。
【００３６】
ここで、以上の説明を図１１を用いて、具体的に説明する。なお、同図において、横軸は被監視プログラム１３０の起動ｔ０からの経過時間で、縦軸は被監視プログラム１３０のメモリ使用量である。また、同図中の実線Ｍは、プログラムのバグに起因してメモリリーク量が増加している場合のメモリ使用量曲線を示し、同図中の点線Ｍ’は、コンピュータウィルスに起因してメモリリーク量が増加している場合のメモリ使用量曲線を示している。
【００３７】
メモリリークがある場合、前述したように、メモリ使用量曲線Ｍ，Ｍ’が示すように、被監視プログラム１３０の経過時間の増加に伴って、メモリ使用量は増加する。この増加量が、基本的にメモリリーク増加量になるわけであるが、メモリ使用量は、メモリリークとは関係なしに、短期的に増減変化する。そこで、現時点ｔ３から２４時間前ｔ２迄の現期間Ｔ３のメモリ使用量の平均値ａ３，ａ３’を求めて、このような変動を削除している。さらに、この現期間Ｔ３のメモリ使用量の平均値ａ３，ａ３’から、現期間Ｔ３の開始時刻ｔ２から２４時間前ｔ１迄の過去期間Ｔ２の平均値ａ２を引いて、現期間Ｔ３のメモリリーク増加量r３，ｒ３’を求めている。
【００３８】
なお、ここでは、期間中のメモリ使用量の代表値として、期間中のメモリ使用量の平均値を用いているが、本発明は、これに限定されるものではなく、例えば、期間中のメモリ最大使用量と最小使用量との中間値等を代表値にしてもよく、要は、使用量を統計処理することにより、短期的な使用量の変動の影響が現われないようにすればよい。
【００３９】
再び、図８に示すフローチャートに従って、監視プロセス２１１の動作について説明する。
【００４０】
ステップ１２で、現期間中のメモリリーク増加量を推定すると、このメモリリーク増加量を現期間の時間、つまり２４時間で割って、現期間のメモリリーク増加率を求め、これをメモリ管理テーブル１１２の増加率欄１１７に記憶する（ステップ１３）。
【００４１】
次に、現時点のメモリ使用量がパラメータテーブル２１２に記憶されている上限量を超えているか否かを判断し（ステップ１４）、上限値を超えていれば、表示部２２９に「メモリリークが発生しています。」等の警告を表示させると共に、ＯＳ１１０のメモリ管理部１１１へメモリリーク対策要求を出力する（ステップ１５）。この場合のメモリリーク対策要求では、被監視プロセス１３０が使用するメモリ１０２の初期状態の時刻（図１１における時刻ｔ０）を通知する。なお、このメモリ１０２の初期状態化とは、監視プロセス２１１が使用するメモリ１０２に対して、監視プロセス２１１の起動開始時点ｔ０でのメモリ１０２の記憶内容と同じ内容にすることである。
【００４２】
また、現時点のメモリ使用量が上限量を超えていなければ、現期間のメモリ１０２リーク増加率が第１の上限増加率を超えているか否かを判断し（ステップ１６）、第１の上限増加率を超えていなければ、監視を継続する（ステップ１７）。また、現期間のメモリリーク増加率が第１の上限増加率を超えている場合には、現期間のメモリリーク増加率が第２の上限増加率を超えているか否かを判断し（ステップ１８）、第２の上限増加率を超えていない場合には、表示部２２９に「メモリリークが発生しています。」等の警告を表示させると共に、ＯＳ１１０のメモリ管理部１１１へメモリリーク対策要求を出力する（ステップ１９）。この場合のメモリリーク対策要求では、被監視プロセス１３０が使用するメモリ１０２で、メモリリーク増加率が予め定めた値以上に増加した時点、つまり遷移時点に至る直前の時刻を通知する。また、現期間のメモリリーク増加率が第２の上限増加率を超えている場合には、表示部２２９に「コンピュータウィルスに起因したメモリ１０２リークが発生しています。メモリ１０２リークが発生し始めた時刻はＸＸ：ＸＸ頃であると思われます。メモリ内容の変更時刻を入力してください。」等の警告を表示させる（ステップ２０）。この場合、表示部２２９に表示させる時刻は、前述の遷移時点に至る直前時刻とする。そして、監視プロセス２１１は、ユーザが監視装置２００の入力部２２７を操作して、時刻が入力されるのを待ち、時刻が入力されると（ステップ２１）、ＯＳ１１０のメモリ管理部１１１へメモリリーク対策要求を出力する（ステップ２２）。この場合のメモリリーク対策要求では、ユーザが指定した時刻を通知する。なお、時刻を入力する欄の時刻の初期値として、例えば、遷移時点の直前時刻や現時点から３時間前の時刻等を予め設定しておくことが好ましい。
【００４３】
以上のように、本実施形態では、メモリ使用量の変化に応じて、以下のような処理をＯＳ１１０に実行させている。
【００４４】
ａ）メモリ使用量が上限量を超えたとき、
メモリ１０２の記憶内容を初期化状態にさせる。
【００４５】
ｂ）メモリ１０２使用量が上限量を超えていないが、リーク増加率が第１の上限増加
率より大きく第２の上限増加率以下のとき、
メモリ１０２の記憶内容を遷移時点に至る直前の時刻の状態にさせる。
【００４６】
ｃ）メモリ１０２使用量が上限量を超えていないが、リーク増加率が第１の上限増加
率及び第２の上限増加率より大きいとき、
メモリ１０２の記憶内容をユーザの指定時刻の状態にさせる。
【００４７】
本実施形態において、ａ）のときに、メモリ１０２の記憶内容を初期化状態にさせるのは、このときには、メモリリーク量が急激に増えていないが、徐々に確実に増えている状態なので、被監視プロセス１３０にバグが存在する可能性が高いと推定できるため、バグの影響のない状態、つまり、初期化状態が最も好ましいと考えられるからである。
【００４８】
また、ｃ）のときに、メモリ１０２の記憶内容をユーザの指定時刻の状態にさせるのは、このときには、メモリリーク量が極めて急激に増えており、コンピュータウィルスに犯されている可能性が極めて高いと推定できるため、その旨と共に、メモリリーク量が急激に増え始めた遷移時点を参考データとしてユーザに知らせ、コンピュータウィルスに犯されていない状態がどの時点であるかをユーザに試行錯誤させて、メモリ１０２の記憶内容をコンピュータウィルスに犯されていない状態に確実にするためである。
【００４９】
また、ｂ）のときに、メモリ１０２の記憶内容を遷移時点の状態にさせるのは、このときには、ａ）とｃ）の中間的の現象を起こしているため、ａ）のときのように被監視プロセス１３０にバグが存在する可能性が高いとも言い切れないので、メモリ１０２の記憶内容を初期化状態に戻すのは戻し過ぎになる可能性がある一方で、コンピュータウィルスに犯されている可能性もあるので、このコンピュータウィルスを除去でき得る状態にするためのである。
【００５０】
なお、以上では、ａ）ｂ）ｃ）のそれぞれのときに、予め設定された独自のメモリリーク対策を要求するようにしているが、いずれのメモリリーク対策をＯＳ１１０に要求するかをユーザに選択させるようにしてもよい。
【００５１】
ここで、遷移時点の定め方について、図１２を用いて説明する。なお、同図において、横軸は被監視プログラム１３０の起動ｔ０からの経過時間で、縦軸は被監視プログラム１３０のメモリ使用量及び増加率である。また、同図中の実線Ｍ”は、図１１で点線で示したメモリ使用量曲線をモデル化したもので、被監視プログラムの起動後にコンピュータウィルスに感染してメモリリーク量が増加している場合のメモリ使用量のモデル曲線を示している。また、破線Ｒは、この使用量モデル曲線で示される使用量の増加率を示す増加率モデル曲線を示し、点線Ｒ’は、本実施形態の計算による増加率を示す増加率モデル曲線を示している。
【００５２】
この使用量のモデルでは、メモリ１０２の使用量が、被監視プログラム１３０の起動ｔ０から時刻ｔ２迄、一定の増加率で増加し、時刻ｔ２からの使用量が、起動ｔ０から時刻ｔ２の間の増加率よりも大きな増加率で増加する。このため、増加率は、起動ｔ０から時刻ｔ２の間が一定の増加率ｓ１で、時刻ｔ２で、増加率ｓ１から増加率ｓ３に急激に変わり、以降、この増加率ｓ３が維持する。従って、この使用量のモデルでは、遷移時点は、簡単に時刻ｔ２であることが分かる。
【００５３】
ところで、本来、現時点ｔ３の増加率ｓ３と、時点ｔｍ３（現時点ｔ３と遷移時点ｔ２との間の時刻）の増加率とが同じであるはずであるから、現時点ｔ３の増加率ｓ３の算出に用いる現時点ｔ３の増加量ｒ３’と、時点ｔｍ３の増加率の算出に用いる増加量ｒｍ３’とも同じであるはずである。しかながら、本実施形態では、増加率の算出に用いる増加量の値として、一定期間内における使用量の平均的な増加量を用いているため、現時点ｔ３の増加量ｒ３’よりも時点ｔｍ３の増加量ｒｍ３’の方が小さな値になってしまい、結果として、現時点ｔ３の増加率よりも時点ｔｍ３の増加率の方が小さな値になってしまう。すなわち、本実施形態の計算で求められる増加率は、同図中の点線で示す増加率モデル曲線Ｒ’のように、遷移時点ｔ２で、増加率ｓ１から増加率ｓ２に急激に変わることがなく、遷移時点ｔ２から徐々に増加し、時刻ｔ３で増加率ｓ３になる。このように、本実施形態の計算で増加率を求める場合、本来、増加率が急激に変わるはずが、増加率が徐々に変わるため、メモリ管理テーブル１１２の増加率欄１１７を参照しただけでは、遷移時点を求めることが難しい。
【００５４】
そこで、本実施形態では、現時点の増加率と現時点のメモリ使用量とから、経過時間に対する増加率の関数Ｓ（ｔ）を求め、メモリ管理テーブル１１２の増加率欄１１７に記憶されている過去の増加率のうち、関数Ｓ（ｔ）が示す増加率とほぼ一致する増加率を抽出し、この増加率を示す時点、又はこの時点より一定のマージン分過去の時点を遷移時点とする。
【００５５】
次に、サーバ１００のプロセス管理部１２１の動作について、図９及び図１０に示すフローチャートに従って説明する。
【００５６】
プロセス管理部１２１は、図９のフローチャートに示すように、被監視プロセス２１１１３０が被稼動状態においてシステムコール（登録要求）を発するか、又は、被監視プロセス１３０が起動してからバックアップタイミング（例えば、１０分間隔）になる迄待って、被監視プロセス１３０が使用しているメモリ１０２の使用領域の内容をハードディスク装置１０３に記憶する（ステップ３２）。この記憶方法に関しては、例えば、スワップアウトと呼ばれる方法を用いてもよい。続いて、プロセス管理テーブル１２２の経過時間欄１１４に、ハードディスク装置１０３に記憶した時点での、被管理プロセス１３０の起動開始からの経過時間を記憶すると共に、記憶場所欄１２６に、ハードディス装置１０３内の記憶場所を記憶する（ステップ３３）。そして、被監視プロセス１３０が終了したか否かを判断し（ステップ３４）、被監視プロセス１３０が終了していればそのまま終了し、被監視プロセス１３０が終了していなければ、ステップ３１に戻る。
【００５７】
また、プロセス管理部１２１は、以上の処理と並行して、図１０のフローチャートに示す処理も実行する。
【００５８】
プロセス管理部１２１は、まず、監視装置２００からメモリリーク対策要求があったか否かを判断し（ステップ３５）、要求があれば、プロセス管理テーブル１２２を参照して、その要求に含まれているメモリ１０２の記憶内容を変更する時刻、言い換えると、被監視プロセス１３０が起動してからの経過時間、でのハードディスク装置１０３内の記憶場所の情報を得て（ステップ３６）、この記憶場所からデータを読み込んで、このデータをメモリ１０２に記憶する（ステップ３７）。すなわち、メモリ１０２の記憶内容は、メモリリーク対策要求に含まれている時刻の記憶内容に戻る。具体的に、メモリ１０２の記憶内容は、前述したように、この時刻に応じて、ａ）メモリ１０２の記憶内容が初期化状態になる、ｂ）メモリ１０２の記憶内容が遷移時点の直前の状態なる、ｃ）メモリ１０２の記憶内容がユーザの指定時刻の状態になる、のいずれかなる。
【００５９】
以上のように、本実施形態では、メモリリーク増加量を推定し、このメモリリーク増加量に基づくリーク増加率を求めて、このリーク増加率を監視しているので、コンピュータウィルス等によりリーク量が急激に増える場合に素早く対処することができる。また、本実施形態では、メモリリーク対策として、複数の対処法を準備しておき、メモリリーク増加量に応じて、複数の対処法のうちの一つを選択しているので、好ましいメモリリーク対策を行うことができる。
【００６０】
なお、以上の実施形態において、メモリ使用量の平均値と使用量の増加率とを、サーバ１００内のメモリ管理テーブル１１２で管理しているが、これらの値は、監視装置２００で求めているので、監視装置２００内に別途テーブルを設定して、このテーブルで管理するようにしてもよい。また、本実施形態では、メモリ使用量の平均値を求める際の期間が２４時間であるが、この期間は、例えば、３日間等に長くしても、逆に、１２時間等に短くしてもよい。さらに、監視タイミング等を１０分間隔に定めているが、この間隔を、例えば、３０分間隔等に長くしても、逆に、５分間隔等に短くしてもよい。
【００６１】
また、本実施形態では、サーバ１００と監視装置２００とが別体であるが、監視装置２００の監視プロセス２１１をサーバ１００のＯＳ１１０に設定すると共に、監視装置２００の他の機能、具体的には、表示機能や入力機能等をサーバ１００に設けて、サーバ内で，以上の処理を実行するようにしてもよい。
【図面の簡単な説明】
【００６２】
【図１】本発明に係る一実施形態におけるコンピュータシステムの回路ブロック図である。
【図２】本発明に係る一実施形態におけるコンピュータシステムの機能ブロック図である。
【図３】本発明に係る一実施形態におけるメモリ管理テーブルの構成を示す説明図である。
【図４】本発明に係る一実施形態におけるプロセス管理テーブルの構成を示す説明図である。
【図５】本発明に係る一実施形態におけるパラメータテーブルの構成を示す説明図である。
【図６】本発明に係る一実施形態におけるメモリ管理部の動作を示すフローチャート（その１）である。
【図７】本発明に係る一実施形態におけるメモリ管理部の動作を示すフローチャート（その２）である。
【図８】本発明に係る一実施形態における監視プロセスの動作を示すフローチャートである。
【図９】本発明に係る一実施形態におけるプロセス管理部の動作を示すフローチャート（その１）である。
【図１０】本発明に係る一実施形態におけるプロセス管理部の動作を示すフローチャート（その２）である。
【図１１】本発明に係る一実施形態における被監視プロセスの起動からの経過時間の変化に伴うメモリ使用量の変化を示す説明図である。
【図１２】本発明に係る一実施形態における被監視プロセスの起動からの経過時間の変化に伴うメモリ使用量の変化モデル及び増加率の変化モデルを示す説明図である。
【符号の説明】
【００６３】
１００：サーバ、１０２：メモリ、１０３：ハードディスク装置、１１０：ＯＳ、１１１：メモリ管理部、１１２：メモリ管理テーブル、１２１：プロセス管理部、１２２：プロセス管理テーブル、１３０：被監視プロセス、２００：監視装置、２１１：監視プロセス、２１２：パラメータテーブル、２２７：入力部、２２９：表示部
【図１】
2005250751.tif 000003
【図２】
2005250751.tif 000004
【図３】
2005250751.tif 000005
【図４】
2005250751.tif 000006
【図５】
2005250751.tif 000007
【図６】
2005250751.tif 000008
【図７】
2005250751.tif 000009
【図８】
2005250751.tif 000010
【図９】
2005250751.tif 000011
【図１０】
2005250751.tif 000012
【図１１】
2005250751.tif 000013
【図１２】
2005250751.tif 000014