(57)【要約】【課題】装置性能に影響を与えずに異常発生原因の調査のための情報を収集する。【解決手段】情報処理装置１は、揮発性メモリ１１および不揮発性メモリ１２を備える。領域設定部１３は、情報処理装置１において処理の異常が発生したことを検知すると、揮発性メモリ１１の記憶領域のうち、異常発生原因の調査のために使用される調査情報２１の収集対象領域を除く記憶領域に、作業領域１１ａを設定する。情報収集部１４は、調査情報２１を揮発性メモリ１１から収集して不揮発性メモリ１２へ格納する処理を、設定された作業領域１１ａを用いて実行する。【選択図】図１
2015082279.tif 000002
【特許請求の範囲】
【請求項１】
揮発性メモリと不揮発性メモリとを備える情報処理装置において、
処理の異常が発生したことを検知すると、前記揮発性メモリの記憶領域のうち、異常発生原因の調査のために使用される調査情報の収集対象領域を除く記憶領域に、作業領域を設定する領域設定部と、
前記調査情報を前記揮発性メモリから収集して前記不揮発性メモリへ格納する処理を、設定された前記作業領域を用いて実行する情報収集部と、
を有することを特徴とする情報処理装置。
【請求項２】
前記領域設定部は、前記揮発性メモリにおける前記収集対象領域を除く記憶領域から、所定数以上連続して所定値が記憶された連続領域を探索し、探索された前記連続領域に前記作業領域を設定し、前記情報収集部による前記調査情報の前記不揮発性メモリへの格納処理が完了すると、前記連続領域の全領域に前記所定値を書き戻すことを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記連続領域の全領域に前記所定値が書き戻された後、前記揮発性メモリにおける前記収集対象領域を除く記憶領域に記憶された情報を用いて、前記情報処理装置の電源をオフにした後オンにする処理を実行するリブート制御部をさらに有することを特徴とする請求項２記載の情報処理装置。
【請求項４】
前記領域設定部は、探索された複数の前記連続領域を結合した記憶領域を、前記作業領域に設定することを特徴とする請求項２または３記載の情報処理装置。
【請求項５】
前記情報収集部は、収集すべき前記調査情報を、探索された複数の前記連続領域を結合した記憶領域のデータ容量分ごとに、前記揮発性メモリから収集して前記作業領域に一時的に格納し、当該作業領域に格納したデータを前記不揮発性メモリへ格納することを特徴とする請求項４記載の情報処理装置。
【請求項６】
前記揮発性メモリから収集される複数の前記調査情報のそれぞれにあらかじめ優先度が付与され、
前記情報処理装置の動作モードごとに、どの優先度の前記調査情報まで収集すべきかを示す情報が管理情報に登録されており、
前記情報収集部は、前記処理の異常が発生したとき、その時点での前記情報処理装置の動作モードと前記管理情報とに基づいて、前記揮発性メモリから収集すべき前記調査情報を決定する、
ことを特徴とする請求項１〜５のいずれか１項に記載の情報処理装置。
【請求項７】
前記領域設定部は、前記処理の異常としてメモリリークが発生したことを検知すると、前記揮発性メモリの記憶領域のうち、メモリリークが発生した領域を除く記憶領域に、前記作業領域を設定し、
前記情報収集部は、前記揮発性メモリの記憶領域のうち、メモリリークが発生した領域から前記調査情報を収集する、
ことを特徴とする請求項１〜６のいずれか１項に記載の情報処理装置。
【請求項８】
揮発性メモリと不揮発性メモリとを備えるコンピュータが、
処理の異常が発生したことを検知すると、前記揮発性メモリの記憶領域のうち、異常発生原因の調査のために使用される調査情報の収集対象領域を除く記憶領域に、作業領域を設定し、
前記調査情報を前記揮発性メモリから収集して前記不揮発性メモリへ格納する処理を、設定された前記作業領域を用いて実行する、
ことを特徴とする情報収集方法。
【請求項９】
揮発性メモリと不揮発性メモリとを備えるコンピュータに、
処理の異常が発生したことを検知すると、前記揮発性メモリの記憶領域のうち、異常発生原因の調査のために使用される調査情報の収集対象領域を除く記憶領域に、作業領域を設定し、
前記調査情報を前記揮発性メモリから収集して前記不揮発性メモリへ格納する処理を、設定された前記作業領域を用いて実行する、
処理を実行させることを特徴とする情報収集プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報収集方法および情報収集プログラムに関する。
【背景技術】
【０００２】
コンピュータで発生する処理の異常の１つとして、メモリリークがある。メモリリークは、プログラムが処理のために占有したメモリ領域が、何らかの理由で解放されないままになって、使用可能なメモリ領域が減ってしまう現象である。また、メモリリークの発生原因を調査するためには、メモリリークが発生した状態でのメモリダンプ情報を採取することが有用であるが、一般的にメモリリークの発生原因の調査の難易度は高いと言われている。
【０００３】
また、メモリダンプに関する技術の例としては、メモリ空間を区切った各メモリ領域の優先度を決定し、決定した優先度の順番にメモリ領域に記憶されている情報を圧縮して、ダンプファイルに出力するものがある。また、他の例として、メモリ領域のデータに連続した同一のコードが存在すれば、あらかじめ決められた規則によりデータを圧縮して採取するものがある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−２０５２５４号公報
【特許文献２】特開平５−２３３８３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、メモリリークなどの処理の異常が発生した場合、一般的に、コンピュータの電源オフおよび電源オンが行われ、異常状態が解消される。また、コンピュータの電源がオフされる前に、異常発生原因の調査のために使用される調査情報が収集されて、コンピュータ内の不揮発性記憶媒体に記録される。
【０００６】
ここで、調査情報の収集処理を実行する際にも、作業領域としてある程度のメモリ領域が必要となる。しかしながら、調査情報の収集のための作業領域を、異常が発生していない正常動作時にメモリ内にあらかじめ確保しておいた場合、その作業領域の分だけ使用可能なメモリ容量が小さくなり、正常動作時のコンピュータの性能に影響を与える可能性がある。
【０００７】
１つの側面では、本発明は、装置性能に影響を与えずに異常発生原因の調査のための情報を収集可能な情報処理装置、情報収集方法および情報収集プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
１つの案では、次のような情報処理装置が提供される。この情報処理装置は、揮発性メモリおよび不揮発性メモリを有するとともに、領域設定部および情報収集部を有する。領域設定部は、処理の異常が発生したことを検知すると、揮発性メモリの記憶領域のうち、異常発生原因の調査のために使用される調査情報の収集対象領域を除く記憶領域に、作業領域を設定する。情報収集部は、調査情報を揮発性メモリから収集して不揮発性メモリへ格納する処理を、設定された作業領域を用いて実行する。
【０００９】
また、１つの案では、上記の情報処理装置と同様の処理がコンピュータによって実行される情報収集方法が提供される。
さらに、１つの案では、上記の情報処理装置と同様の処理をコンピュータに実行させる情報収集プログラムが提供される。
【発明の効果】
【００１０】
１態様によれば、装置性能に影響を与えずに異常発生原因の調査のための情報を収集できる。
【図面の簡単な説明】
【００１１】
【図１】第１の実施の形態に係る情報処理装置の構成例および処理例を示す図である。
【図２】第２の実施の形態に係るストレージシステムの構成例を示す図である。
【図３】ストレージ制御装置の処理機能の構成例を示すブロック図である。
【図４】調査情報収集部の処理について説明するための図である。
【図５】作業領域管理テーブルに登録される情報の例を示す図である。
【図６】調査情報管理テーブルに登録される情報の例を示す図である。
【図７】確保された作業領域のサイズに応じた調査情報の収集および格納処理について説明するための図である。
【図８】ストレージ制御装置の処理手順の例を示すフローチャート（その１）である。
【図９】ストレージ制御装置の処理手順の例を示すフローチャート（その２）である。
【発明を実施するための形態】
【００１２】
以下、本発明の実施の形態について図面を参照して説明する。
〔第１の実施の形態〕
図１は、第１の実施の形態に係る情報処理装置の構成例および処理例を示す図である。情報処理装置１は、揮発性メモリ１１、不揮発性メモリ１２、領域設定部１３および情報収集部１４を有する。
【００１３】
揮発性メモリ１１は、情報処理装置１の処理の際に各種のデータが一時的に記憶される。例えば、不揮発性メモリ１２には、情報処理装置１が実行するプログラムの一部や、プログラムの実行に必要なデータが記憶される。不揮発性メモリ１２には、情報処理装置１の電源がオフになった場合にも保持されるべき情報が記憶される。
【００１４】
領域設定部１３および情報収集部１４の処理は、例えば、情報処理装置１が備えるプロセッサが所定のプログラムを実行することで実現される。領域設定部１３および情報収集部１４は、情報処理装置１で処理の異常が発生した場合に、次のような処理を実行する。
【００１５】
領域設定部１３は、処理の異常が発生したことを検知すると、揮発性メモリ１１の記憶領域のうち、調査情報２１の収集対象領域を除く記憶領域に、情報収集部１４の処理で使用される作業領域１１ａを設定する（図１中のステップＳ１）。調査情報２１とは、異常発生原因の調査のために使用される情報である。調査情報２１の収集対象領域には作業領域１１ａを設定しないように制御されることで、調査情報２１を確実に収集することができ、異常発生原因を究明できる可能性が高まる。
【００１６】
例えば、処理の異常としてメモリリークが発生した場合には、メモリリークが発生した領域が調査情報２１の収集対象領域となる。メモリリークは、揮発性メモリ１１上の所定領域において使用可能なメモリ容量が枯渇する現象である。メモリリークの発生原因の調査のためには、メモリリークが発生した領域（すなわち、使用可能なメモリ容量が枯渇した一定の領域）から調査情報２１を収集することが有用である。このため、メモリリークが発生した領域は、作業領域１１ａが設定され得る領域から除外される。
【００１７】
メモリリークに対応する調査情報２１としては、例えば、メモリリークが発生した領域のメモリリソースが割り当てられたタスクやプログラムを示す管理情報が考えられる。なお、このような管理情報の一部が、揮発性メモリ１１の記憶領域のうち、メモリリークが発生した領域とは異なる領域にも格納されている場合には、その領域も調査情報２１の収集対象領域となり、作業領域１１ａが設定され得る領域から除外される。また、メモリリークが発生した領域全体の情報（メモリダンプ情報）を、調査情報２１とすることもできる。
【００１８】
情報収集部１４は、調査情報２１を揮発性メモリ１１から収集して、不揮発性メモリ１２へ格納する。情報収集部１４は、このような処理を、領域設定部１３によって設定された作業領域１１ａを用いて実行する。
【００１９】
例えば、情報収集部１４は、揮発性メモリ１１から収集した調査情報２１を作業領域１１ａに一時的に記録し（図１中のステップＳ２）、その後にそれらの調査情報２１を作業領域１１ａから読み出して不揮発性メモリ１２に格納する（図１中のステップＳ３）。あるいは、情報収集部１４は、揮発性メモリ１１から収集した調査情報２１を、作業領域１１ａを用いて編集し、編集後の調査情報を不揮発性メモリ１２に格納してもよい。あるいは、情報収集部１４の処理を実現するプログラムの一部が、作業領域１１ａに格納されてもよい。
【００２０】
以上の処理により、収集された調査情報２１が不揮発性メモリ１２に格納される。これにより、情報処理装置１の電源がオフになった場合でも、調査情報２１を保持しておくことができる。例えば、情報処理装置１において処理の異常が発生した場合に、情報処理装置１の電源をオフにした後オンにすることで、異常状態を解消することができる。この場合に、情報処理装置１の電源をオフにする前に、領域設定部１３および情報収集部１４による上記処理が実行されて、収集された調査情報２１が不揮発性メモリ１２に格納される。これにより、管理者は、情報処理装置１の電源が再度オンになったときに調査情報２１を不揮発性メモリ１２から取得して、異常の発生原因を解析することが可能になる。
【００２１】
ここで、上記のように、調査情報２１を収集するためには、収集された調査情報２１の一時的な記憶や、その編集処理などのために、揮発性メモリ１１上に作業領域を確保する必要がある。このような作業領域が、異常が発生する前から揮発性メモリ１１に確保されていると、その分だけ揮発性メモリ１１における使用可能な容量が小さくなり、正常動作時の情報処理装置１の性能が低下する可能性がある。
【００２２】
このような問題に対して、処理の異常が発生した後に、領域設定部１３により調査情報２１の収集のための作業領域１１ａが揮発性メモリ１１に確保されることで、正常動作時の情報処理装置１の性能低下を招くことなく、調査情報２１を収集できるようになる。また、作業領域１１ａが、揮発性メモリ１１の記憶領域のうち、調査情報２１の収集対象領域を除く領域に設定されることで、異常発生原因の究明に必要な調査情報２１を確実に収集できるようになる。
【００２３】
〔第２の実施の形態〕
次に、処理の異常の例としてメモリリークを挙げて説明する。また、図１の情報処理装置１に対応する装置を含むシステムとして、ストレージシステムを例示する。
【００２４】
図２は、第２の実施の形態に係るストレージシステムの構成例を示す図である。図２に示すストレージシステムは、ストレージ制御装置１００とディスクアレイ２００とを有する。
【００２５】
ディスクアレイ２００は、ストレージ制御装置１００からのアクセス制御の対象となる複数の記憶装置を備えている。本実施の形態では、ディスクアレイ２００は、ストレージ制御装置１００からのアクセス制御の対象となる記憶装置としてＨＤＤ２００ａを備える。ただし、ストレージ制御装置１００からのアクセス制御の対象となる記憶装置としては、例えば、ＳＳＤ（Solid State Drive）などの他の種類の不揮発性記憶装置であってもよい。また、ストレージ制御装置１００には、複数のディスクアレイ２００が接続されていてもよい。
【００２６】
ストレージ制御装置１００は、図１に示した情報処理装置１の一例である。ストレージ制御装置１００は、図示しないホスト装置からの要求に応じて、ディスクアレイ２００内のＨＤＤ２００ａに対してデータの読み書きを行う。ストレージ制御装置１００は、例えば、次のようなハードウェア構成を有する。
【００２７】
ストレージ制御装置１００は、プロセッサ１０１によって装置全体が制御されている。プロセッサ１０１は、マルチプロセッサであってもよい。プロセッサ１０１は、例えばＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、またはＰＬＤ（Programmable Logic Device）である。またプロセッサ１０１は、ＣＰＵ、ＭＰＵ、ＤＳＰ、ＡＳＩＣ、ＰＬＤのうちの２以上の要素の組み合わせであってもよい。
【００２８】
プロセッサ１０１には、バス１１１を介して、ＲＡＭ（Random Access Memory）１０２と複数の周辺機器が接続されている。
ＲＡＭ１０２は、ストレージ制御装置１００の主記憶装置として使用される。ＲＡＭ１０２には、プロセッサ１０１に実行させるＯＳ（Operating System）プログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、プロセッサ１０１による処理に必要な各種データが格納される。
【００２９】
バス１１１に接続されている周辺機器としては、ＨＤＤ１０３、不揮発性メモリ１０４、表示装置１０５、入力装置１０６、読み取り装置１０７、管理端末インタフェース１０８、ホストインタフェース１０９およびディスクインタフェース１１０がある。
【００３０】
ＨＤＤ１０３は、ストレージ制御装置１００の補助記憶装置として使用される。ＨＤＤ１０３には、ＯＳプログラム、アプリケーションプログラム、および各種データが格納される。なお、補助記憶装置としては、ＳＳＤなどの他の種類の不揮発性記憶装置を使用することもできる。
【００３１】
不揮発性メモリ１０４は、例えば、フラッシュメモリ、ＥＥＰＲＯＭ（Electrically Erasable and Programmable Read Only Memory）などによって実現される。不揮発性メモリ１０４には、例えば、障害が発生した際に装置内部から収集される、障害発生原因を調査するための調査情報など、ストレージ制御装置１００の電源がオフになっても保持されるべき情報が記録される。
【００３２】
表示装置１０５は、プロセッサ１０１からの命令に従って画像を表示する。表示装置１０５としては、液晶表示装置、有機ＥＬ（ElectroLuminescence）表示装置などがある。入力装置１０６は、ユーザによる操作入力を受け付け、操作入力に応じた信号をプロセッサ１０１に送信する。入力装置１０６としては、操作キー、タッチパネルなどがある。なお、表示装置１０５および入力装置１０６の少なくとも一方は、ストレージ制御装置１００の外部に配置されて、ストレージ制御装置１００とケーブルなどによって接続されていてもよい。
【００３３】
読み取り装置１０７には、可搬型記録媒体１０７ａが脱着される。読み取り装置１０７は、可搬型記録媒体１０７ａに記録されたデータを読み取ってプロセッサ１０１に送信する。可搬型記録媒体１０７ａとしては、光ディスク、光磁気ディスク、半導体メモリなどがある。
【００３４】
管理端末インタフェース１０８、ホストインタフェース１０９およびディスクインタフェース１１０は、ストレージ制御装置１００の外部の装置と通信するための通信インタフェースである。
【００３５】
管理端末インタフェース１０８は、管理者によって操作される管理端末に接続し、管理端末との間でデータの送受信を行う。なお、管理者は、管理端末を用いて、例えば、ストレージ制御装置１００の動作モードの設定や、不揮発性メモリ１０４に記録された調査情報の読み出しおよび解析などを行うことができる。
【００３６】
ホストインタフェース１０９は、図示しないネットワークを介してホスト装置に接続し、ホスト装置との間でデータの送受信を行う。ディスクインタフェース１１０は、ディスクアレイ２００と接続し、プロセッサ１０１からの命令に応じて、ディスクアレイ２００内のＨＤＤ２００ａに対するアクセスを制御する。
【００３７】
図３は、ストレージ制御装置の処理機能の構成例を示すブロック図である。ストレージ制御装置１００は、処理部１０１ａを有する。処理部１０１ａは、プロセッサによって実現される。また、処理部１０１ａは、メモリ割り当て部１２０、メモリリーク検出部１３０、調査情報収集部１４０およびリブート制御部１５０を有する。
【００３８】
メモリ割り当て部１２０、メモリリーク検出部１３０、調査情報収集部１４０およびリブート制御部１５０の処理は、例えば、ストレージ制御装置１００が備えるプロセッサ１０１が所定のプログラムを実行することによって実現される。例えば、メモリ割り当て部１２０の処理は、ＯＳプログラムの実行により実現され、メモリリーク検出部１３０の処理は、メモリリーク検出プログラムの実行により実現され、調査情報収集部１４０の処理は、調査情報収集プログラムの実行により実現され、リブート制御部１５０の処理は、ＢＩＯＳ（Basic Input / Output System）プログラムの実行により実現される。また、メモリリーク検出プログラムおよび調査情報収集プログラムはそれぞれ、例えば、ＯＳプログラムまたはＢＩＯＳプログラムの一部であってもよい。
【００３９】
メモリ割り当て部１２０は、ＲＡＭ１０２の記憶領域を、実行されるプログラムに割り当てる処理や、実行が終了したプログラムに割り当てていた記憶領域を解放する処理を行う。メモリ割り当て部１２０は、ＲＡＭ１０２の記憶領域を、その用途に応じて複数の分割領域に分割し、それぞれ個別のメモリリソースプールとして管理する。そして、メモリ割り当て部１２０は、それぞれの分割領域から、一定サイズの部分領域を単位として、プログラムへの割り当てを行う。
【００４０】
本実施の形態では、例として、ＲＡＭ１０２の記憶領域は、システム域２０１およびユーザ域２０２，２０３という３つの分割領域に分割される。
システム域２０１には、主に、実行されるプログラムのプログラムコードが格納される。また、システム域２０１には、プログラムの実行に必要な制御データの一部も格納される。ユーザ域２０２には、ストレージ制御装置１００に搭載または接続されているデバイスの構成情報、プログラムの実行時に使用される変数などの制御情報などが格納される。ユーザ域２０３は、プログラムの実行によって入出力されるデータ（ユーザデータ）のキャッシュ領域などとして使用される。
【００４１】
メモリ割り当て部１２０は、例えば、ユーザ域２０２，２０３のそれぞれに管理データ域２０２ａ，２０３ａを確保し、管理データ域２０２ａ，２０３ａのそれぞれに、対応する部分領域の割り当てを管理するための管理情報を格納する。そして、メモリ割り当て部１２０は、例えば、ユーザ域２０２の部分領域の割り当て要求を受けると、ユーザ域２０２の未割り当て領域から部分領域を選択し、選択した部分領域を実行されるプログラムに割り当てる。その際、メモリ割り当て部１２０は、部分領域とその割り当て先のプログラムとの対応関係などを示す管理情報を、管理データ域２０２ａに書き込む。ユーザ域２０３についても同様に、メモリ割り当て部１２０は、ユーザ域２０３の部分領域とその割り当て先のプログラムとの対応関係などを示す管理情報を、管理データ域２０３ａに書き込む。
【００４２】
なお、これらの管理情報の一部は、例えば、システム域２０１に格納されてもよい。
メモリ割り当て部１２０によって割り当てられた部分領域は、通常、対応するプログラムの実行が完了すると、解放されて未割り当て領域に戻る。しかし、プログラムに内在するバグなどの何らかの異常により、割り当て済みの部分領域が解放されない場合がある。そして、同じプログラムが繰り返し実行されることなどにより、部分領域が解放されない事態が繰り返し発生すると、分割領域における未割り当て領域の容量が枯渇してしまい、新たな部分領域の割り当ての要求に対して、割り当ての失敗が発生する場合がある。この場合、ストレージ制御装置１００の運用を正常に継続することはできない。
【００４３】
メモリリーク検出部１３０は、メモリ割り当て部１２０が部分領域の割り当てに失敗したことを検出すると、その部分領域が属する分割領域においてメモリリークが発生したと判定する。メモリリーク検出部１３０は、メモリリークが発生した分割領域を示す情報を、調査情報収集部１４０に通知する。
【００４４】
調査情報収集部１４０は、メモリリークが発生した分割領域から、メモリリークの発生原因を調査するために用いる調査情報を収集し、不揮発性メモリ１０４へ格納する。後述するように、調査情報収集部１４０は、メモリリークが発生した分割領域以外の分割領域に、作業領域を設定し、設定した作業領域を用いて調査情報の収集処理および不揮発性メモリ１０４への格納処理を実行する。なお、調査情報収集部１４０の処理の詳細については後述する。
【００４５】
リブート制御部１５０は、調査情報の収集処理および不揮発性メモリ１０４への格納処理が完了した後に、ストレージ制御装置１００の電源をオフにし、その後に電源をオンにする。これにより、メモリリークの発生状態が解消される。
【００４６】
ここで、ユーザ域２０２には、制御データ域２０２ｂが確保されている。制御データ域２０２ｂには、ストレージ制御装置１００に搭載または接続されているデバイスの構成情報や、それらのデバイスのステータス情報が格納されている。リブート制御部１５０は、ストレージ制御装置１００の電源をオフにする前に、制御データ域２０２ｂに格納された構成情報およびステータス情報を、不揮発性メモリ１０４に書き込む。そして、リブート制御部１５０は、電源をオンにしてストレージ制御装置１００が再起動する際に、不揮発性メモリ１０４に格納された構成情報およびステータス情報を読み出す。リブート制御部１５０は、構成情報に記述されたデバイスごとに必要な起動処理を行うことで、ストレージ制御装置１００を正常に起動させることができる。
【００４７】
以上のストレージ制御装置１００では、リブート制御部１５０によってストレージ制御装置１００が再起動される前に、調査情報収集部１４０によって、メモリリークの発生原因の調査に使用される調査情報が収集されて、不揮発性メモリ１０４へ格納される。これにより、ストレージ制御装置１００が再起動された後も、再起動前に収集された調査情報が不揮発性メモリ１０４に保持される。従って、ストレージ制御装置１００の管理者は、ストレージ制御装置１００が再起動した後に、不揮発性メモリ１０４に格納された調査情報を取得して、メモリリークの発生原因を解析することができる。
【００４８】
ところで、調査情報収集部１４０による調査情報の収集および不揮発性メモリ１０４への格納処理の実行のためには、ＲＡＭ１０２の記憶領域にその実行のための作業領域を確保する必要がある。しかし、上記のように、調査情報収集部１４０の処理は、メモリリークが発生した後にのみ実行されるものであり、メモリリーク発生前の正常動作時には実行されない。このため、調査情報収集部１４０の処理のために必要なすべての作業領域を、正常動作時にＲＡＭ１０２上にあらかじめ確保しておいた場合、その分だけＲＡＭ１０２における使用可能な容量が小さくなり、正常動作時のストレージ制御装置１００の性能が低下する可能性がある。
【００４９】
また、ストレージ制御装置１００のようなコンピュータは、一般的に、プログラムによる処理結果などをログ情報として随時保存する。そして、コンピュータは、処理の異常が発生すると、電源がオフされる前に、保存されていたログ情報を収集し、異常発生原因の調査のために使用されるトレースログ情報として不揮発性メモリに格納する。
【００５０】
しかしながら、メモリリークの発生原因の調査は一般的に難易度が高く、トレースログ情報から発生原因を特定することは難しい。このため、トレースログ情報の収集処理とは別に、メモリリークの調査専用の調査情報の収集処理が実行される。このことは、ＲＡＭ１０２上に、トレースログ情報の収集のための作業領域とは別に、メモリリーク用調査情報の収集のための作業領域が必要になることを意味する。従って、メモリリーク用調査情報の収集のためのすべての作業領域をＲＡＭ１０２上にあらかじめ確保した場合、ＲＡＭ１０２上の使用可能な容量は一層圧迫されることになる。
【００５１】
そこで、本実施の形態のストレージ制御装置１００では、メモリリーク用調査情報の収集のための作業領域の一部を、ＲＡＭ１０２上にあらかじめ確保しておかずに、メモリリークが発生した後に、調査情報収集部１４０に確保させる。このとき、調査情報収集部１４０は、調査情報の収集対象領域以外、具体的にはメモリリークが発生した分割領域以外の領域に、作業領域を確保する。これにより、メモリリークが発生した分割領域のデータを保全し、保全されたデータの中から、メモリリークの発生原因を特定するために有用な情報を確実に収集することを可能にする。
【００５２】
図４は、調査情報収集部の処理について説明するための図である。図４に示すように、調査情報収集部１４０は、領域設定部１４１および収集処理部１４２を有する。
領域設定部１４１は、ＲＡＭ１０２の記憶領域のうち、調査情報の収集対象領域以外の領域に、作業領域を確保する。領域設定部１４１は、確保した作業領域に関する情報を、作業領域管理テーブル１４３に登録して管理する。
【００５３】
収集処理部１４２は、領域設定部１４１によって確保された作業領域を用いて、ＲＡＭ１０２から調査情報を収集し、収集した調査情報を不揮発性メモリ１０４へ格納する。収集処理部１４２は、このような調査情報の収集および格納の処理の際に、調査情報管理テーブル１４４の管理情報を参照して、収集すべき調査情報を決定する。後述するように、調査情報管理テーブル１４４は、ＲＡＭ１０２上の分割領域ごとにあらかじめ用意される。
【００５４】
ここで、領域設定部１４１は、ＲＡＭ１０２の記憶領域のうち、調査情報の収集対象領域以外の記憶領域から、値“０”が所定数連続する「連続ゼロ領域」を複数探索する。そして、領域設定部１４１は、探索された複数の連続ゼロ領域を論理的に結合した記憶領域を、作業領域に設定する。連続ゼロ領域のそれぞれは、調査情報の収集および格納の処理で使用された後、値“０”が書き戻されることで元の状態に戻る。このため、作業領域として設定される前後で、その領域に本来記録されていたデータを保全することができる。
【００５５】
以下、例として、ユーザ域２０３でメモリリークが発生した場合を挙げて説明する。ユーザ域２０３でメモリリークが発生した場合、少なくとも、ユーザ域２０３は調査情報の収集対象領域となる。例えば、ユーザ域２０３の管理データ域２０３ａに格納された、部分領域の割り当てに関する管理情報から、調査情報が収集される。なお、管理データ域２０３ａは、ユーザ域２０３において複数の領域に分散して確保されている場合もある。また、ユーザ域２０３全体の記憶内容を示すメモリダンプ情報が、調査情報として収集される場合もある。
【００５６】
一方、ユーザ域２０２は、調査情報の収集対象領域とはならない。従って、領域設定部１４１は、調査情報の収集対象領域でないユーザ域２０２から、連続ゼロ領域を探索する。
【００５７】
なお、システム域２０１には、調査情報収集部１４０の処理を実現するプログラムの少なくとも一部が格納されるので、その記憶内容を保全する必要がある。このため、システム域２０１は、連続ゼロ領域の探索の対象領域から除外される。また、ユーザ域２０３からの部分領域の割り当てに関する管理情報の一部が、システム域２０１に格納されている場合もある。この場合、システム域２０１も調査情報の収集対象領域となるため、システム域２０１は、連続ゼロ領域の探索の対象領域から除外される。
【００５８】
領域設定部１４１は、ユーザ域２０２から探索された複数の連続ゼロ領域を論理的に結合し、結合された領域を作業領域２１０に設定する。収集処理部１４２は、ユーザ域２０３から収集した調査情報を、設定された作業領域２１０に一時的に格納した後、作業領域２１０から読み出して不揮発性メモリ１０４へ格納する。また、上記の管理情報がシステム域２０１に格納されている場合には、調査情報がシステム域２０１から収集されることもある。
【００５９】
なお、収集処理部１４２は、収集された調査情報に対して編集処理を施し、編集後の情報を不揮発性メモリ１０４へ格納してもよい。この場合、作業領域２１０は、編集処理のために使用されてもよい。
【００６０】
収集処理部１４２によって必要なすべての調査情報が収集され、不揮発性メモリ１０４へ格納されると、領域設定部１４１は、ユーザ域２０２から探索された連続ゼロ領域のすべてに、値“０”を書き込む。これにより、ユーザ域２０２の記憶内容は、作業領域２１０が確保されて使用されるより前の状態に戻る。
【００６１】
前述のように、ユーザ域２０２の制御データ域２０２ｂに記録された情報は、ストレージ制御装置１００の電源オフの際にリブート制御部１５０によって参照される。ユーザ域２０２における連続ゼロ領域が作業領域２１０として使用され、その使用後に連続ゼロ領域に値“０”が書き戻されることで、制御データ域２０２ｂに記録された情報が失われなくて済む。このため、ストレージ制御装置１００を正常に再起動させることができる。
【００６２】
なお、前述のように、リブート制御部１５０は、調査情報収集部１４０の処理が終了した後に、制御データ域２０２ｂに記録された情報を不揮発性メモリ１０４へ書き込む。このような処理順とすることで、リブート制御部１５０の処理を実現する既存のＢＩＯＳプログラムを、変更せずにそのまま使用できるようになる。
【００６３】
また、上記の例では、値“０”が所定数連続する領域を論理的に結合して作業領域を確保したが、他の例として、値“１”が所定数連続する領域を論理的に結合して作業領域を確保することもできる。ただし、値“０”がある程度連続して現れる領域には、有効なデータが書き込まれていない可能性が高い。このため、値“０”が所定数連続する領域を探索することで、例えば、調査情報収集部１４０の処理に異常が発生して、作業領域を元の状態に戻せなくなった場合でも、元のデータが破壊される可能性を低減できる。
【００６４】
図５は、作業領域管理テーブルに登録される情報の例を示す図である。作業領域管理テーブル１４３は、例えば、ＲＡＭ１０２のシステム域２０１に一時的に記録される。
作業領域管理テーブル１４３は、領域設定部１４１によって確保された作業領域に関する情報を管理するためのテーブル情報である。作業領域管理テーブル１４３には、領域設定部１４１によって探索された連続ゼロ領域の数だけのレコード１４３ａが登録される。
【００６５】
各レコード１４３ａは、領域ＩＤ、サイズおよび次アドレスの各項目を有する。領域ＩＤの項目には、対応する連続ゼロ領域を識別するための識別番号が登録される。サイズの項目には、対応する連続ゼロ領域のサイズが登録される。次アドレスの項目には、次のレコード１４３ａに対応する連続ゼロ領域の、ＲＡＭ１０２における先頭アドレスが登録される。
【００６６】
ここで、作業領域管理テーブル１４３における最後尾のレコード１４３ａの次アドレスの項目には、作業領域管理テーブル１４３における先頭のレコード１４３ａに対応する連続ゼロ領域の先頭アドレスが登録される。これにより、探索されたすべての連続ゼロ領域の位置情報が管理される。
【００６７】
次に、調査情報管理テーブル１４４に基づく、収集処理部１４２による調査情報の収集処理について説明する。調査情報管理テーブル１４４は、例えば、ＨＤＤ１０３にあらかじめ記憶され、ＨＤＤ１０３からＲＡＭ１０２に読み込まれて参照される。また、調査情報管理テーブル１４４は、ＲＡＭ１０２の分割領域ごとに用意される。そして、各調査情報管理テーブル１４４には、対応する分割領域について、収集すべき調査情報に関する情報が登録されている。
【００６８】
図６は、調査情報管理テーブルに登録される情報の例を示す図である。調査情報管理テーブル１４４には、対応する分割領域を識別するためのリソースＩＤが登録されている。また、調査情報管理テーブル１４４には、収集指示情報１４４ａおよび調査情報リスト１４４ｂが登録されている。
【００６９】
調査情報リスト１４４ｂには、収集すべき調査情報を示す調査情報ＩＤの一覧が登録される。また、各調査情報ＩＤには、調査情報のサイズが対応付けて登録されている。
調査情報リスト１４４ｂにおける調査情報の登録順は、収集の優先度が高い順とされる。調査情報は、収集処理部１４２により、優先度が高い順に収集される。優先度は、メモリリークの発生原因の調査のためにその調査情報が重要であり、かつ、調査情報のサイズが小さいほど、高く設定される。ここで、調査情報のサイズは、その調査情報の収集および格納の処理にどれだけの時間を要するかを示す。
【００７０】
調査情報としては、次のような情報が挙げられる。最も優先度が高い調査情報としては、ＯＳ、ドライバ、アプリケーションといったプログラムのレイヤごとの、分割領域に割り当てられたメモリサイズの情報がある。例えば、メモリリークが発生したユーザ域のメモリ領域を大量に使用しているレイヤがあった場合、そのレイヤでメモリリークの原因となる事象が発生している可能性がある。このため、レイヤごとの割り当てサイズの重要度は高く、その優先度も高く設定される。
【００７１】
また、その次に優先度が高い調査情報としては、タスクごとに分割領域に割り当てられたメモリサイズの情報がある。例えば、同じタスクがユーザ域の複数の部分領域を使用している場合、そのタスクでメモリリークの原因となる事象が発生している可能性がある。このため、タスクごとの割り当てサイズの重要度は高いが、レイヤごとの割り当てサイズと比較してデータサイズが大きくなる。このため、タスクごとの割り当てサイズの優先度は、レイヤごとの割り当てサイズより低く設定される。
【００７２】
また、その次に優先度が高い調査情報としては、プログラムごとに分割領域に割り当てられたメモリサイズの情報がある。ここで言うプログラムとは、例えば、アプリケーションプログラムに含まれる複数のプログラムのそれぞれを指す。例えば、１つの実行ファイルとして記述されるプログラムを指す。ここで、同じプログラムがユーザ域の複数の部分領域を使用している場合、そのプログラムにメモリリークの発生原因となるバグが存在している可能性がある。このため、プログラムごとの割り当てサイズの重要度は高いが、タスクごとの割り当てサイズと比較してデータサイズが大きくなる。このため、プログラムごとの割り当てサイズの優先度は、タスクごとの割り当てサイズより低く設定される。
【００７３】
なお、以上の３つの調査情報については、例えば、ユーザ域２０２については管理データ域２０２ａから、ユーザ域２０３については管理データ域２０３ａから、それぞれ収集することができる。
【００７４】
一方、最も優先度が低い調査情報としては、対応する分割領域全体の記憶内容を示すメモリダンプ情報がある。メモリダンプ情報のサイズは膨大であることから、メモリダンプ情報には最も低い優先度が設定される。
【００７５】
収集指示情報１４４ａには、メモリリークの発生時点での動作モードに応じて、どの優先度までの調査情報を収集すべきかを示す情報が登録される。収集指示情報１４４ａには、動作モードと優先度下限の各項目の組が、複数登録される。
【００７６】
本実施の形態では、ストレージ制御装置１００の動作モードとしては、通常運用モードと、デバッグモードとがある。通常運用モードは、ストレージ制御装置１００を用いて業務が行われる通常の状態で設定される動作モードである。デバッグモードは、デバッグを目的として動作するモードであり、業務時間外に設定される。
【００７７】
この場合、収集指示情報１４４ａには、通常運用モードとデバッグモードのそれぞれに対して、優先度下限が対応付けられる。優先度下限の項目には、最上位からどの優先度までの調査情報を収集するべきかを示す優先度の値が登録される。図６の例では、動作モードが通常運用モードである場合、優先度１〜４までの調査情報が収集される。一方、動作モードがデバッグモードである場合、優先度１〜７までの調査情報が収集される。
【００７８】
ここで、調査情報管理テーブル１４４には、通常運用モードの場合よりデバッグモードの方が多くの調査情報が収集されるように、情報が登録される。これは、次のような理由による。通常運用モードの場合、ストレージ制御装置１００を短時間で再起動させて業務を再開させる必要がある。このため、多くの調査情報を収集することよりも、収集される調査情報のサイズを小さくすることが優先される。一方、デバッグモードの場合、ストレージ制御装置１００を短時間で再起動させることより、メモリリークの発生原因を特定できることが優先されるので、通常運用モードの場合より多くの調査情報が収集される。
【００７９】
次に、図７は、確保された作業領域のサイズに応じた調査情報の収集および格納処理について説明するための図である。
領域設定部１４１によって確保される作業領域のサイズは、一定にはならない。このため、収集すべき調査情報の総サイズ（容量）が、確保された作業領域のサイズより大きい場合があり得る。この場合、収集処理部１４２は、確保された作業領域のサイズ分ごとに、作業領域の収集を行う。
【００８０】
図７の例では、領域設定部１４１により３つの連続ゼロ領域＃１，＃２，＃３が探索され、これらの連続ゼロ領域＃１，＃２，＃３を結合することで３．６ＫＢｙｔｅの作業領域２１０が確保されたものとする。一方、メモリリークが発生した分割領域に対応する調査情報管理テーブル１４４に基づき、収集すべき調査情報として、２ＫＢｙｔｅの調査情報＃１と、５ＫＢｙｔｅの調査情報＃２と、１０ＫＢｙｔｅの調査情報＃３と、８０ＫＢｙｔｅの調査情報＃４とが特定されたものとする。この場合、収集すべき調査情報の総サイズは９７ＫＢｙｔｅとなる。
【００８１】
収集処理部１４２は、優先度が高い調査情報から順にＲＡＭ１０２から収集するが、１回の収集による作業領域２１０への書き込みサイズを、３．６ＫＢｙｔｅとする。具体的には、収集処理部１４２は、まず、調査情報＃１と、調査情報＃２のうちの１．６ＫＢｙｔｅ分の情報とを収集して、作業領域２１０へ書き込んだ後、それらの情報を不揮発性メモリ１０４へ格納する。次に、収集処理部１４２は、調査情報＃２のうちの残りの３．４ＫＢｙｔｅ分の情報と、調査情報＃３のうちの０．２ＫＢｙｔｅ分の情報とを収集して、作業領域２１０へ書き込んだ後、それらの情報を不揮発性メモリ１０４へ格納する。
【００８２】
このような処理により、確保された作業領域のサイズが、収集すべき調査情報の総サイズより小さい場合でも、必要な調査情報を確実に収集して、不揮発性メモリ１０４へ格納することができる。
【００８３】
次に、ストレージ制御装置１００の処理についてフローチャートを用いて説明する。図８および図９は、ストレージ制御装置の処理手順の例を示すフローチャートである。
［ステップＳ１１］メモリリーク検出部１３０は、メモリ割り当て部１２０によるプログラムへの部分領域の割り当てが失敗するかを監視する。割り当て失敗が発生すると、メモリリーク検出部１３０は、メモリリークが発生したと判定する。このとき、メモリリーク検出部１３０は、メモリリークが発生した分割領域を調査情報収集部１４０に通知する。この後、ステップＳ１２の処理が実行される。
【００８４】
［ステップＳ１２］調査情報収集部１４０の領域設定部１４１は、メモリリーク検出部１３０から通知された、メモリリークが発生した分割領域に応じて、連続ゼロ領域の探索の対象とする分割領域を決定する。前述のように、連続ゼロ領域の探索の対象領域は、少なくとも、メモリリークが発生した分割領域以外の分割領域となる。また、システム域２０１も、連続ゼロ領域の探索対象からは除外される。
【００８５】
領域設定部１４１は、探索対象に決定した分割領域から、値“０”が所定数以上連続する連続ゼロ領域を探索する。領域設定部１４１は、例えば、値“０”が１００Ｂｙｔｅ分以上連続している領域を、連続ゼロ領域と判定する。領域設定部１４１は、探索された連続ゼロ領域に関する情報を、作業領域管理テーブル１４３に登録する。
【００８６】
［ステップＳ１３］収集処理部１４２は、作業領域管理テーブル１４３を参照して、探索されたすべての連続ゼロ領域の総サイズ、すなわち、確保された作業領域のサイズを計算する。
【００８７】
［ステップＳ１４］収集処理部１４２は、ストレージ制御装置１００の現在の動作モードを判別する。動作モードが通常運用モードである場合、ステップＳ１５の処理が実行され、動作モードがデバッグモードである場合、ステップＳ１６の処理が実行される。
【００８８】
［ステップＳ１５］収集処理部１４２は、メモリリークが発生した分割領域に対応する調査情報管理テーブル１４４を参照して、通常運用モードでの優先度上限を判別する。前述のように、優先度上限は、上位からどの優先度までの調査情報を収集すべきかを示すものである。
【００８９】
［ステップＳ１６］収集処理部１４２は、メモリリークが発生した分割領域に対応する調査情報管理テーブル１４４を参照して、デバッグモードでの優先度上限を判別する。
［ステップＳ１７］収集処理部１４２は、探索された連続ゼロ領域を結合して得られる作業領域として、最小限の領域が確保されたかを判定する。具体的には、収集処理部１４２は、ステップＳ１３で算出された作業領域のサイズが、所定のしきい値以上である場合に、最小限の領域が確保されたと判定する。最小限の領域が確保されたと判定された場合、ステップＳ１８の処理が実行され、最小限の領域が確保されていないと判定された場合、ステップＳ２３の処理が実行される。
【００９０】
このステップＳ１７では、確保された作業領域のサイズがしきい値未満である場合、作業領域が小さ過ぎるため、調査情報の収集処理効率が悪いと判断されて、調査情報を収集することなく、ストレージ制御装置１００の電源のオフ、オンが行われる。しきい値としては、例えば、メモリリークが発生した分割領域に対応する調査情報管理テーブル１４４に登録された調査情報のサイズのうち、優先度が最も高い調査情報のサイズが使用される。
【００９１】
次のステップＳ１８〜Ｓ２１では、メモリリークが発生した分割領域に対応する調査情報管理テーブル１４４に登録された調査情報が、優先度が高い順に収集される。また、登録された調査情報のうち、どの優先度の調査情報までを収集するかは、ステップＳ１５またはステップＳ１６の判別結果により決定される。
【００９２】
なお、ステップＳ１８〜Ｓ２１では、変数として“末尾アドレス”が使用される。変数“末尾アドレス”の初期値は“ＮＵＬＬ”である。また、変数“末尾アドレス”は、例えば、ＲＡＭ１０２のシステム域２０１に記録される。
【００９３】
［ステップＳ１８］収集処理部１４２は、ステップＳ１３で算出された作業領域のサイズ分だけ、調査情報をＲＡＭ１０２から収集して作業領域に書き込む。変数“末尾アドレス”に値が登録されている場合（すなわち、“ＮＵＬＬ”でない場合）には、ＲＡＭ１０２からの読み出し開始位置は、変数“末尾アドレス”に登録された値の次の位置となる。なお、収集処理部１４２は、作業領域管理テーブル１４３を参照して、書き込み先の作業領域を認識する。
【００９４】
［ステップＳ１９］収集処理部１４２は、ステップＳ１８でＲＡＭ１０２から読み出した領域の最終位置のアドレスによって、変数「末尾アドレス」を更新する。
［ステップＳ２０］収集処理部１４２は、ステップＳ１８で作業領域に書き込んだ調査情報を、不揮発性メモリ１０４へ書き込む。
【００９５】
［ステップＳ２１］収集処理部１４２は、収集すべきすべての調査情報の不揮発性メモリ１０４への書き込みが完了したかを判定する。書き込みが完了していない場合、ステップＳ１８の処理が実行され、書き込みが完了した場合、ステップＳ２２の処理が実行される。
【００９６】
［ステップＳ２２］領域設定部１４１は、ステップＳ１２で探索されたすべての連続ゼロ領域に、値“０”を書き込む。これにより、連続ゼロ領域は、作業領域に設定された状態から解放され、この連続ゼロ領域が属する分割領域が元の状態に戻る。
【００９７】
［ステップＳ２３］リブート制御部１５０は、ストレージ制御装置１００の電源をオフにした後、オンにする。なお、前述のように、リブート制御部１５０は、ユーザ域２０２内の制御データ域２０２ｂに記憶された構成情報およびステータス情報を、不揮発性メモリ１０４へ書き込み、その後にストレージ制御装置１００の電源をオフにする。そして、ストレージ制御装置１００の電源を再度オンにした後、その起動処理中に、不揮発性メモリ１０４へ書き込まれた構成情報およびステータス情報を参照する。
【００９８】
［ステップＳ２４］管理者の操作などにより、不揮発性メモリ１０４に書き込まれた調査情報が読み出される。読み出された調査情報は、メモリリークの発生原因の解析などに用いられる。
【００９９】
以上説明したストレージ制御装置１００では、メモリリークが発生した場合、装置の電源をオフにする前に、メモリリーク発生原因の調査のための調査情報が収集されて、不揮発性メモリ１０４へ格納される。このため、調査情報を確実に採取し、メモリリークの発生原因の解析に用いることができる。
【０１００】
また、ストレージ制御装置１００は、このような調査情報の収集および格納処理のための作業領域の一部を、メモリリークが発生した後に、ＲＡＭ１０２の記憶領域のうち、調査情報の収集対象領域以外の領域に設定する。そして、設定した作業領域を用いて調査情報の収集および格納処理を行う。これにより、メモリリークが発生していない正常動作時における、ＲＡＭ１０２の使用可能容量を増加させることができ、正常動作時の装置の性能を向上させることができる。また、作業領域が、調査情報の収集対象領域以外の領域に設定されることで、必要な調査情報を確実に収集することができる。すなわち、正常動作時における装置の性能に影響を与えずに、必要な調査情報を確実に収集できるようになる。
【０１０１】
また、作業領域は、連続ゼロ領域を論理的に結合した領域に設定される。これにより、作業領域が設定された分割領域を、調査情報の収集および格納処理の終了後に、元に戻すことができる。このため、例えば、ストレージ制御装置１００のリブートに必要な情報が格納された分割領域に、作業領域を設定した場合でも、その分割領域を元に戻してリブートを正常に実行できる。
【０１０２】
なお、上記の各実施の形態に示した装置（情報処理装置１、ストレージ制御装置１００）の処理機能は、コンピュータによって実現することができる。その場合、各装置が有すべき機能の処理内容を記述したプログラムが提供され、そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc-Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（Rewritable）などがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。
【０１０３】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１０４】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムまたはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０１０５】
以上の各実施の形態に関し、さらに以下の付記を開示する。
（付記１）  揮発性メモリと不揮発性メモリとを備える情報処理装置において、
処理の異常が発生したことを検知すると、前記揮発性メモリの記憶領域のうち、異常発生原因の調査のために使用される調査情報の収集対象領域を除く記憶領域に、作業領域を設定する領域設定部と、
前記調査情報を前記揮発性メモリから収集して前記不揮発性メモリへ格納する処理を、設定された前記作業領域を用いて実行する情報収集部と、
を有することを特徴とする情報処理装置。
【０１０６】
（付記２）  前記領域設定部は、前記揮発性メモリにおける前記収集対象領域を除く記憶領域から、所定数以上連続して所定値が記憶された連続領域を探索し、探索された前記連続領域に前記作業領域を設定し、前記情報収集部による前記調査情報の前記不揮発性メモリへの格納処理が完了すると、前記連続領域の全領域に前記所定値を書き戻すことを特徴とする付記１記載の情報処理装置。
【０１０７】
（付記３）  前記連続領域の全領域に前記所定値が書き戻された後、前記揮発性メモリにおける前記収集対象領域を除く記憶領域に記憶された情報を用いて、前記情報処理装置の電源をオフにした後オンにする処理を実行するリブート制御部をさらに有することを特徴とする付記２記載の情報処理装置。
【０１０８】
（付記４）  前記領域設定部は、探索された複数の前記連続領域を結合した記憶領域を、前記作業領域に設定することを特徴とする付記２または３記載の情報処理装置。
（付記５）  前記情報収集部は、収集すべき前記調査情報を、探索された複数の前記連続領域を結合した記憶領域のデータ容量分ごとに、前記揮発性メモリから収集して前記作業領域に一時的に格納し、当該作業領域に格納したデータを前記不揮発性メモリへ格納することを特徴とする付記４記載の情報処理装置。
【０１０９】
（付記６）  前記揮発性メモリから収集される複数の前記調査情報のそれぞれにあらかじめ優先度が付与され、
前記情報処理装置の動作モードごとに、どの優先度の前記調査情報まで収集すべきかを示す情報が管理情報に登録されており、
前記情報収集部は、前記処理の異常が発生したとき、その時点での前記情報処理装置の動作モードと前記管理情報とに基づいて、前記揮発性メモリから収集すべき前記調査情報を決定する、
ことを特徴とする付記１〜５のいずれか１つに記載の情報処理装置。
【０１１０】
（付記７）  前記領域設定部は、前記処理の異常としてメモリリークが発生したことを検知すると、前記揮発性メモリの記憶領域のうち、メモリリークが発生した領域を除く記憶領域に、前記作業領域を設定し、
前記情報収集部は、前記揮発性メモリの記憶領域のうち、メモリリークが発生した領域から前記調査情報を収集する、
ことを特徴とする付記１〜６のいずれか１つに記載の情報処理装置。
【０１１１】
（付記８）  揮発性メモリと不揮発性メモリとを備えるコンピュータが、
処理の異常が発生したことを検知すると、前記揮発性メモリの記憶領域のうち、異常発生原因の調査のために使用される調査情報の収集対象領域を除く記憶領域に、作業領域を設定し、
前記調査情報を前記揮発性メモリから収集して前記不揮発性メモリへ格納する処理を、設定された前記作業領域を用いて実行する、
ことを特徴とする情報収集方法。
【０１１２】
（付記９）  前記作業領域の設定では、前記揮発性メモリにおける前記収集対象領域を除く記憶領域から、所定数以上連続して所定値が記憶された連続領域を探索し、探索された前記連続領域に前記作業領域を設定し、
前記調査情報の前記不揮発性メモリへの格納処理が完了すると、前記連続領域の全領域に前記所定値を書き戻す、
ことを特徴とする付記８記載の情報収集方法。
【０１１３】
（付記１０）  前記連続領域の全領域に前記所定値が書き戻された後、前記揮発性メモリにおける前記収集対象領域を除く記憶領域に記憶された情報を用いて、前記情報処理装置の電源をオフにした後オンにする処理を実行する、
ことを特徴とする付記９記載の情報収集方法。
【０１１４】
（付記１１）  前記作業領域の設定では、探索された複数の前記連続領域を結合した記憶領域を、前記作業領域に設定することを特徴とする付記９または１０記載の情報収集方法。
【０１１５】
（付記１２）  前記調査情報の収集では、収集すべき前記調査情報を、探索された複数の前記連続領域を結合した記憶領域のデータ容量分ごとに、前記揮発性メモリから収集して前記作業領域に一時的に格納し、当該作業領域に格納したデータを前記不揮発性メモリへ格納することを特徴とする付記１１記載の情報収集方法。
【０１１６】
（付記１３）  前記揮発性メモリから収集される複数の前記調査情報のそれぞれにあらかじめ優先度が付与され、
前記情報処理装置の動作モードごとに、どの優先度の前記調査情報まで収集すべきかを示す情報が管理情報に登録されており、
前記調査情報の収集では、前記処理の異常が発生したとき、その時点での前記情報処理装置の動作モードと前記管理情報とに基づいて、前記揮発性メモリから収集すべき前記調査情報を決定する、
ことを特徴とする付記８〜１２のいずれか１つに記載の情報収集方法。
【０１１７】
（付記１４）  前記作業領域の設定では、前記処理の異常としてメモリリークが発生したことを検知すると、前記揮発性メモリの記憶領域のうち、メモリリークが発生した領域を除く記憶領域に、前記作業領域を設定し、
前記調査情報の収集では、前記揮発性メモリの記憶領域のうち、メモリリークが発生した領域から前記調査情報を収集する、
ことを特徴とする付記８〜１３のいずれか１つに記載の情報収集方法。
【０１１８】
（付記１５）  揮発性メモリと不揮発性メモリとを備えるコンピュータに、
処理の異常が発生したことを検知すると、前記揮発性メモリの記憶領域のうち、異常発生原因の調査のために使用される調査情報の収集対象領域を除く記憶領域に、作業領域を設定し、
前記調査情報を前記揮発性メモリから収集して前記不揮発性メモリへ格納する処理を、設定された前記作業領域を用いて実行する、
処理を実行させることを特徴とする情報収集プログラム。
【符号の説明】
【０１１９】
１  情報処理装置
１１  揮発性メモリ
１１ａ  作業領域
１２  不揮発性メモリ
１３  領域設定部
１４  情報収集部
２１  調査情報
【図１】
2015082279.tif 000003
【図２】
2015082279.tif 000004
【図３】
2015082279.tif 000005
【図４】
2015082279.tif 000006
【図５】
2015082279.tif 000007
【図６】
2015082279.tif 000008
【図７】
2015082279.tif 000009
【図８】
2015082279.tif 000010
【図９】
2015082279.tif 000011