(57)【要約】【課題】  同時に２つ以上のプロセスをダンプし、コアファイルを生成する。【解決手段】  プロセス１１，１２，１３を同時に実行する。プロセス１１が共有メモリ１４，１５の取得または開放を要求すると、共有資源要求・開放命令監視部２０が関連プロセスリスト生成部３０に対してプロセスリストの生成もしくは変更を実行させる。プロセス１１において障害が発生すると、障害発生時状況保持部４０に障害発生が通知され、プロセスリストの調査を行う。プロセス１１が関連プロセスリストに所属している場合、障害発生時状況保持部４０はスケジューラ７０に対して関連プロセスをランキュー８０から外すように指示し、コアダンプ部６０に対してプロセス１１のコアファイルを生成する命令を送信する。【選択図】  図１
2005301570.tif 000002
【特許請求の範囲】
【請求項１】
一つ以上のプロセスが動作するコンピュータシステムにおける、同時に動作する２つ以上のプロセスのためのプロセスダンプ方法であって、
同時に動作する各プロセスからの共有資源の要求および解放命令を監視する共有資源要求・解放命令監視ステップと、
同一の共有資源を要求したプロセスを該共有資源に関する関連プロセスリストに属させ、解放したプロセスを該共有資源に関する関連プロセスリストから外す関連プロセスリスト生成ステップと、
任意の共有資源に関する関連プロセスリストに属する任意のプロセスに障害が発生した場合、障害が発生した瞬間の状況を保持する障害発生時状況保持ステップと、
該関連プロセスリストに属する全てのプロセスについてコアファイルの生成を行うコアダンプステップと
を有するプロセスダンプ方法。
【請求項２】
一つ以上のプロセスが動作するコンピュータシステムにおける、同時に動作する２つ以上のプロセスのためのプロセスダンプ方法であって、
同時に動作する各プロセスからの共有資源の要求および解放命令を監視する共有資源要求・解放命令監視ステップと、
同一の共有資源を要求したプロセスを該共有資源に関する関連プロセスリストに属させ、解放したプロセスを該共有資源に関する関連プロセスリストから外す関連プロセスリスト生成ステップと、
任意の共有資源に関する関連プロセスリストに属する任意のプロセスに障害が発生した場合、障害が発生した瞬間の状況を保持する障害発生時状況保持ステップと、
を有するプロセスダンプ方法。
【請求項３】
前記障害発生時状況保持ステップは、前記関連プロセスリスト全てをランキューから取り出してスリープさせるステップを含む、請求項１または２に記載のプロセスダンプ方法。
【請求項４】
一つ以上のプロセスが動作するコンピュータシステムにおける、同時に動作する２つ以上のプロセスのためのプロセスダンプ装置であって、
同時に動作する各プロセスからの共有資源の要求および解放命令を監視する共有資源要求・解放命令監視手段と、
同一の共有資源を要求したプロセスを該共有資源に関する関連プロセスリストに属させ、解放したプロセスを該共有資源に関する関連プロセスリストから外す関連プロセスリスト生成手段と、
任意の共有資源に関する関連プロセスリストに属する任意のプロセスに障害が発生した場合、障害が発生した瞬間の状況を保持する障害発生時状況保持手段と、
該関連プロセスリストに属する全てのプロセスについてコアファイルの生成を行うコアダンプ手段と
を有するプロセスダンプ装置。
【請求項５】
一つ以上のプロセスが動作するコンピュータシステムにおける、同時に動作する２つ以上のプロセスのためのプロセスダンプ装置であって、
同時に動作する各プロセスからの共有資源の要求および解放命令を監視する共有資源要求・解放命令監視手段と、
同一の共有資源を要求したプロセスを該共有資源に関する関連プロセスリストに属させ、解放したプロセスを該共有資源に関する関連プロセスリストから外す関連プロセスリスト生成手段と、
任意の共有資源に関する関連プロセスリストに属する任意のプロセスに障害が発生した場合、障害が発生した瞬間の状況を保持する障害発生時状況保持手段と、
を有するプロセスダンプ装置。
【請求項６】
前記障害発生時状況保持手段は、前記関連プロセスリスト全てをランキューから取り出してスリープさせる手段を含む、請求項４または５に記載のプロセスダンプ装置。
【請求項７】
請求項１から３のいずれかに記載のプロセスダンプ方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、１つ以上のプロセスが動作するコンピュータシステムにおける、同時に動作する２つ以上のプロセスのためのプロセスダンプ方法に関する。
【背景技術】
【０００２】
１つの動作中のプロセスに対してダンプコマンドを投入することにより、１つのプロセスに関するダンプイメージを取得し、例えばディスク装置のような記憶領域にコアファイルとして保存することができる。また異常終了した１つのプロセスについてのダンプイメージをコアファイルとして取得し、記憶装置に保存する。これらの手段により保存された１つのコアファイルをデバッグツールによって解析することにより、プログラムの異常動作を引き起こす原因を突き止めることができるが、同時に２つ以上のコアファイルを生成することはできなかった。
【非特許文献１】UNIX man pages: core (4）、http://mirrors.ccs.neu.edu/cgi-bin/unixhelp/man-cgi?core+4
【非特許文献２】Technical Reference: Base Operating System and Extensions, Volume 1、http://publib16.boulder.ibm.com/pseries/en.US/libs/basetrfl/coredump,htm
【発明の開示】
【発明が解決しようとする課題】
【０００３】
上述した従来の技術では、同時に２つ以上のプロセスに関するコアファイルを生成することはできず、デバッグツールを用いた解析の範囲も１つのプロセスだけに限られてしまうため、複数のプロセスが連携することが原因となって障害が発生する場合には障害原因を発見することは非常に困難である。大規模なサーバーマシンにおいては、常に多数のプロセスが関連しあいながら動作しているため、プロセスの連携に起因した障害が発生する確率も大きくなり、大規模なサーバーマシンを運用するためには同時に複数のプロセスのメモリイメージを取得しコアファイルを生成することによって、関連するプロセスに関する解析を行う必要がある。
【０００４】
本発明の目的は、同時に２つ以上のコアファイルを生成することができるプロセスダンプ方法、装置、およびプログラムを提供することにある。
【課題を解決するための手段】
【０００５】
本発明のプロセスダンプ方法は、
同時に動作する各プロセスからの共有資源の要求および解放命令を監視する共有資源要求・解放命令監視ステップと、
同一の共有資源を要求したプロセスを該共有資源に関する関連プロセスリストに属させ、解放したプロセスを該共有資源に関する関連プロセスリストから外す関連プロセスリスト生成ステップと、
任意の共有資源に関する関連プロセスリストに属する任意のプロセスに障害が発生した場合、障害が発生した瞬間の状況を保持する障害発生時状況保持ステップと、
該関連プロセスリストに属する全てのプロセスについてコアファイルの生成を行うコアダンプステップを有する。
【０００６】
本発明は、関連する複数のプロセスをグループとしてまとめて管理するためのプロセスリストを生成する機能をもち、関連プロセスリストに登録されたプロセスのうちの１つに障害が発生して異常終了した場合には、そのプロセスのコアファイルのみではなく、関連プロセスリストに登録されたすべてのプロセスについて、障害発生時の瞬間の状況を保持したままのコアファイルを生成する関連プロセスダンプ方法である。
【０００７】
これにより、複数の関連するプロセスのコアファイルを、障害の発生した瞬間における状況を保持したまま保存できることである。なお、コアダンプステップは場合により除いてもよい。
【０００８】
本発明のプロセスダンプ装置は、
同時に動作する各プロセスからの共有資源の要求および解放命令を監視する共有資源要求・解放命令監視手段と、
同一の共有資源を要求したプロセスを該共有資源に関する関連プロセスリストに属させ、解放したプロセスを該共有資源に関する関連プロセスリストから外す関連プロセスリスト生成手段と、
任意の共有資源に関する関連プロセスリストに属する任意のプロセスに障害が発生した場合、障害が発生した瞬間の状況を保持する障害発生時状況保持手段と、
該関連プロセスリストに属する全てのプロセスについてコアファイルの生成を行うコアダンプ生成手段を有する。
【０００９】
本発明は、例えばプロセスが共有メモリやメッセージキューなどの共有資源の要求に関する場合に発行するプロセス間通信を監視することによって、あらかじめ同一の共有資源を利用するプロセス同士を関連プロセスであるとしてグループにまとめておき、グループ単位での管理を行うことができる共有資源の要求および開放命令を監視する装置である。
【００１０】
すなわち、本発明は、プロセスに利用される共有資源の利用状態を監視し、その共有資源ごとに関連するプロセスを管理する。なお、コアダンプ生成手段は場合により除いてもよい。
【００１１】
本発明のプロセスダンププログラムは、共有資源の要求および開放命令を監視する手段によって発行された命令に基づいて、関連プロセスリストの生成および更新を行うための関連プロセスリスト生成プログラムである。
【００１２】
すなわち、本発明は、関連グループとして定義されたプロセスのプロセスＩＤおよびプロセスディスクリプタを共有資源ごとのプロセスリストとしてまとめ、関連プロセスリストに所属するプロセスにおいて障害が発生した場合に、関連するすべてのプロセスに関してコアファイルを生成するため、プロセスディスクリプタのアドレスを提供する。
【００１３】
本発明の実施態様によれば、関連プロセスリストに所属するプロセスのうちの１つが異常終了した時に、関連プロセスリストにもとづいて関連プロセス全ての動作を中止し、そのときの状況を保持したままのコアファイルを生成する。
【００１４】
すなわち、関連プロセスリストを参照し、プロセスの異常が発生した瞬間に、全ての動作に優先して関連プロセスを休止させるための命令を発行し、障害が発生した瞬間の状況を保持したまま関連プロセスのメモリイメージを取得し、コアファイルを生成する。
【発明の効果】
【００１５】
共有資源を同時利用する２つ以上の関連するプロセスが動作するコンピュータシステムにおいて、システム上で動作するプロセスに異常終了を伴うような障害が発生した場合に、障害が発生したプロセスのコアファイルだけでなく、共有資源を同時利用する１つ以上の関連するプロセスについてのコアファイルも生成することにより、アプリケーション同士の連携に起因するようなバグに関しての詳細なデバッグ情報を取得することができる。
【発明を実施するための最良の形態】
【００１６】
次に、本発明の実施の形態について図面を参照して説明する。
【００１７】
図１は本発明の一実施形態のシステム構成図である。
【００１８】
共有資源要求・開放命令監視部２０は、共有資源の要求および開放命令を監視する手段で、プロセス１１，１２，１３が発行した共有資源への要求を監視する。例えばプロセスがＩＰＣ（ｉｎｔｅｒｐｒｏｃｅｓｓ  ｃｏｍｍｕｎｉｃａｔｉｏｎ）資源である共有メモリ１４，１５を利用するための要求であるｓｈｍｇｅｔ（）を発行すると、それを監視していた共有資源要求・開放命令監視部２０がその発行命令を検知し、プロセスリスト５１，５２を調べることで同じ共有メモリを共有するプロセスが存在するかどうかを確認し、もし存在すれば同じ共有メモリを共有するプロセスリスト群にそのプロセスを追加するための命令を関連プロセスリスト生成部３０に送信し、存在しない場合はその共有メモリに関するプロセスリストを生成するための命令を関連プロセスリスト生成部３０に送信する。また、プロセス１１，１２，１３が共有メモリ１４，１５の解放命令であるｓｈｍｄｔ（）を発行すると、その解放命令を監視していた共有資源要求・開放命令監視部２０は、プロセスリスト５１，５２を参照することで解放されたプロセスがプロセスリスト５１，５２に所属していたかどうかを調べ、関連プロセスリスト５１，５２に登録されていればプロセスリスト５１，５２から除外するための命令を関連プロセスリスト生成部３０に送信する。
【００１９】
関連プロセスリスト生成部３０は、共有資源要求・開放命令監視部２０から発行された命令に従ってプロセスリストのプロセスＩＤおよびプロセスディスクリプタを登録するためのプロセスリスト５１，５２の作成、削除、および更新を行う。また、共有資源要求・開放命令監視部２０によりプロセスの削除命令を受けプロセスリスト５１，５２より該当プロセスを削除した後、プロセスリスト５１，５２に登録されたプロセスの数が０となったときは、プロセスリスト５１，５２自体を削除する。
【００２０】
障害発生時状況保持部４０は、プロセス１１において障害が発生した場合、プロセス１１からの障害通知を検知し、プロセス１１と関連するプロセスをすべてランキュー８０から外して休止状態にするための命令をスケジューラ７０に発行した後、コアダンプ部６０にコアファイル生成のための命令を送信する。
【００２１】
コアダンプ部６０は関連プロセスリストに属する全てのプロセスについてコアファイルの生成を行う手段であり、プロセス１１からの障害を検知した障害発生時状況保持部５０からのコアファイル生成命令を受けると、プロセスリスト５１からダンプ対象のプロセスＩＤおよびプロセスディスクリプタアドレスを調べることにより、プロセスリスト５１に所属する全ての関連プロセスのコアファイル９１，９２を生成する。
【００２２】
ディスク装置９０は、コアダンプ部６０によって生成されたコアファイル９１，９２を保存する。
【００２３】
図２は、本発明の実施形態を用いて関連プロセスダンプを実行するシーケンス図を示すものである。以下に流れを説明する。
【００２４】
３つのプロセス１１，１２，１３が同時に動作するコンピュータシステムにおいて、プロセス１１をそのほかのプロセス１２，１３と同時に実行する（ステップ１０１）。プロセス１１が共有資源の取得もしくは解放を要求した場合、共有資源要求・開放命令監視部２０が、関連プロセスリスト生成部３０に対して、プロセスリストの生成もしくは変更を実行させる（ステップ１０２〜１０５）。プロセス１１において障害が発生すると、障害発生時状況保持部４０に対して障害通知が発行され、障害発生時状況保持部４０はプロセスリストの調査を行う（ステップ１０６，１０７）。プロセス１１が関連プロセスリストに所属している場合、障害発生時状況保持部４０はスケジューラ７０に対して、関連プロセスをランキュー８０から外すように指示する（ステップ１０８，１０９）。コアダンプ部６０に対し、障害発生時状況保持部４０がプロセス１１のコアファイルを生成するように指示する（ステップ１１０）。コアダンプ部６０はまずプロセス１１についてのコアファイルを生成し、次にプロセス１１の関連プロセスが存在するかどうかを調査する（ステップ１１１）。関連プロセスが存在した場合、コアダンプ部６０は関連するプロセスのコアファイルも生成する（ステップ１１２，１１３）。通常動作に戻る（ステップ１１４）。
【００２５】
図３は、本実施形態において、共有資源が共有メモリである場合のプロセスリスト作成手順を示すものである。以下に流れを説明する。
【００２６】
プロセス１１が例えばｓｈｍｇｅｔ（）関数を呼び出してＩＰＣ共有メモリリージョンのＩＰＣ識別子を取得し、共有資源を獲得する（ステップ２０１）。共有資源要求・開放命令監視部２０により、プロセス１１がｓｈｍｇｅｔ（）の発行により共有資源を獲得したことを検知する（ステップ２０２）。共有資源要求・開放命令監視部２０は、既存のプロセスリスト内のＩＰＣ識別子から共有メモリ１４が獲得されたことを確認し、共有メモリ１４が共有されているプロセスリストから調べる（ステップ２０３，２０４，２０５）。共有資源１４が共有されている、すなわち当該ＩＰＣ識別子をキーとするプロセスリストがあることを確認し、既存のプロセス１１にプロセスＩＤおよびプロセスディスクリプタを登録する（ステップ２０５）。共有されていなければ、共有資源１４に関するプロセスリストを新たに生成する（ステップ２０６）。
【００２７】
表１は、プロセスＩＤとプロセスディスクリプタを要素とするプロセスリストファイルの構成例である。
【００２８】
【表１】
2005301570.tif 000003
【００２９】
図４は、関連プロセスリストに属する全てのプロセスについてコアダンプ部６０によりコアファイルが生成される手順を示したものである。以下に流れを説明する。
【００３０】
プロセス１１において障害が発生する（ステップ３０１）。障害発生時状況保持部４０が障害を検出し、プロセス１１がプロセスリスト５１，５２に登録されているかを調べる（ステップ３０２，３０３）。プロセス１１の関連プロセスが存在すれば、障害発生時状況保持部４０は関連プロセス全てをランキュー８０から外し、休止状態にする（ステップ３０４，３０５）。障害発生時状況保持部４０からコアダンプ部６０に対し、コアファイルの生成を命令する（ステップ３０６）。コアダンプ部６０により、まず障害の発生したプロセス１１についてのコアファイルが生成される（ステップ３０７）。障害の発生したプロセス１１がプロセスリスト５１に登録されている場合、プロセスリスト５１に登録されているプロセス１１以外の関連プロセスに関してもコアファイルを生成する（ステップ３０８，３０９）。通常の処理に戻る（ステップ３１０）。
【００３１】
なお、本発明のプロセスダンプ方法は専用のハードウェアにより実現されるもの以外に、その機能を実現するためのプログラムを、コンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行するものであってもよい。コンピュータ読み取り可能な記録媒体とは、フロッピーディスク、光磁気ディスク、ＣＤ−ＲＯＭ等の記録媒体、コンピュータシステムに内蔵されるハードディスク装置等の記録装置を指す。さらに、コンピュータ読み取り可能な記録媒体は、インターネットを介してプログラムを送信する場合のように、短時間の間、動的にプログラムを保持するもの（伝送媒体もしくは伝送波）、その場合のサーバとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含む。
【図面の簡単な説明】
【００３２】
【図１】本発明の一実施形態のシステム構成図である。
【図２】図１の実施形態を用いて関連プロセスダンプを実行する手順を示す図である。
【図３】図１の実施形態において、共有資源が共有メモリである場合のプロセスリスト作成手順を示す図である。
【図４】関連プロセスリストに属する全てのプロセスについてコアダンプ部６０によりコアファイルが生成される手順を示す図である。
【符号の説明】
【００３３】
１１，１２，１３    プロセス
１４，１５    共有メモリ
２０    共有資源要求・開放命令監視部
３０    関連プロセスリスト生成部
４０    障害発生時状況保持部
５１，５２    プロセスリスト
６０    コアダンプ部
７０    スケジューラ
８０    ランキュー
９０    ディスク装置
９１，９２    コアファイル
１０１〜１１４，２０１〜２０６，３０１〜３１０    ステップ
【図１】
2005301570.tif 000004
【図２】
2005301570.tif 000005
【図３】
2005301570.tif 000006
【図４】
2005301570.tif 000007