(57)【要約】【課題】  並列プログラムの大規模プロセス実行時にデッドロックが発生した場合、膨大なプロセスの中から、デッドロック発生の原因となった可能性のあるプロセスを効率的に絞り込むことを可能にするデバッグ装置等を提供する。【解決手段】  デバッグ装置１は、被デバッグプロセスへ、実行中の関数を一意に識別可能な関数識別子と、プロセスを一意に識別可能なプロセス識別子とを含むトレースバック情報を取得するように指示し、その指示に応じて取得されたトレースバック情報を受け取る制御部３と、制御部３で受け取るトレースバック情報を解析して、実行中の関数毎にプロセス識別子をグルーピングする解析部４と、解析部４により解析された情報を出力する出力部５とを備える。【選択図】      図１
2016099904.tif 000002
【特許請求の範囲】
【請求項１】
被デバッグプロセスへ、実行中の関数を一意に識別可能な関数識別子と、プロセスを一意に識別可能なプロセス識別子とを含むトレースバック情報を取得するように指示し、その指示に応じて取得された前記トレースバック情報を受け取る制御手段と、
前記制御手段で受け取る前記トレースバック情報を解析して、実行中の関数毎に前記プロセス識別子をグルーピングする解析手段と、
前記解析手段により解析された情報を出力する出力手段とを備える
デバッグ装置。
【請求項２】
前記出力手段は、関数ごとに、前記関数識別子と、その関数を実行しているプロセス数と、前記プロセス識別子とをグループとして出力する
ことを特徴とする請求項１に記載のデバッグ装置。
【請求項３】
前記出力手段は、前記グループを、その関数を実行しているプロセス数が少ない順に出力する
ことを特徴とする請求項１乃至２の何れか一項記載のデバッグ装置。
【請求項４】
前記出力手段は、前記グループを、その関数を実行しているプロセス数が多い順に出力する
ことを特徴とする請求項１乃至２の何れか一項記載のデバッグ装置。
【請求項５】
前記出力手段は、前記グループのうちで、あらかじめ定めた条件を満たすグループのみを、出力する
ことを特徴とする請求項１乃至４の何れか一項記載のデバッグ装置。
【請求項６】
前記制御手段は、前記被デバッグプロセスへ前記トレースバック情報を取得するように指示する前に、前記被デバッグプロセスの停止を指示する
ことを特徴とする請求項１乃至５の何れか一項記載のデバッグ装置。
【請求項７】
前記被デバッグプロセスと、
前記制御手段による指示を受けて前記被デバッグプロセスを停止する実行操作手段と、
前記制御手段による指示を受けて前記トレースバック情報を取得し、前記制御手段に送信する情報取得手段とを備える計算マシンと、
請求項１乃至６の何れか一項記載のデバッグ装置とを備える
デバッグシステム。
【請求項８】
被デバッグプロセスへ、実行中の関数を一意に識別可能な関数識別子と、プロセスを一意に識別可能なプロセス識別子とを含むトレースバック情報を取得するように指示し、その指示に応じて取得された前記トレースバック情報を受け取り、
そのトレースバック情報を解析して、実行中の関数毎に前記プロセス識別子をグルーピングした情報を出力する
デバッグ方法。
【請求項９】
被デバッグプロセスへ、実行中の関数を一意に識別可能な関数識別子と、プロセスを一意に識別可能なプロセス識別子とを含むトレースバック情報を取得するように指示し、その指示に応じて取得された前記トレースバック情報を受け取る制御機能と、
前記制御機能の指示を受け取る前記トレースバック情報を解析して、実行中の関数毎に前記プロセス識別子をグルーピングする解析機能と、
前記解析機能により解析された情報を出力する出力機能とを
コンピュータに実現させるコンピュータ・プログラム。
【請求項１０】
被デバッグプロセスと、前記被デバッグプロセスを停止するように指示を受けて、前記被デバッグプロセスを停止する実行操作機能と、
停止する前に実行中の関数を一意に識別可能な関数識別子と、プロセスを一意に識別可能なプロセス識別子とを含むトレースバック情報を取得するように指示を受けて、トレースバック情報を取得し、前記指示の送信元に対して、取得した情報を送信する情報取得機能とを
コンピュータに実現させるコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、並列プログラムをデバッグするデバッグ装置等に関する。
【背景技術】
【０００２】
コンピュータシステムを使って、膨大な量の計算を高速に行うＨＰＣ（Ｈｉｇｈ  Ｐｅｒｆｏｒｍａｎｃｅ  Ｃｏｍｐｕｔｉｎｇ）は、数万プロセスを用いて並列プログラムを実行することにより、実現されている。そのようなシステムにおいて、デッドロックが発生した場合に、その原因を究明するため、デッドロック発生の原因となったプロセスを特定することが求められる。しかし、膨大なプロセスの中から、デッドロック発生の原因となったプロセスを特定することは、容易なことではない。
【０００３】
各プロセスが連携して動作する並列プログラム実行における典型的なデッドロックケースは、全プロセスによる特定関数内での待ち合わせ処理において、一部のプロセスが当該関数に到達せずに他関数内に留まってしまうケースである。
【０００４】
デッドロック問題の調査方法として、特許文献１に開示のプログラムデバッキングシステムがある。これは、デッドロックが発生した時点で各プロセスが実行しているプログラムのステートメントと、そのステートメントにおいてアクセスしている変数を基に、複数のプロセスで共通にアクセスしている変数を抽出する。そして、その変数にアクセスしているプロセスをデッドロック発生の原因となったプロセスの候補とするという発明である。つまり、共通の変数にアクセスしているという観点から、デッドロック発生の原因となったプロセスを絞り込む手段を提供している。
【０００５】
特許文献２は、並列マシンのプロセッサごとに実行中の関数に関する動作情報を採取して表示する並列プログラム開発支援装置を開示している。本装置は、プロセッサという物理的なシステムリソースへの負荷分散状況を分析することにより、開発作業を支援する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特許第２０９０５６８号公報
【特許文献２】特開平０５−０８１２２１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１に開示の方式は、あるプロセスで実行中のステートメントについて、他プロセスではそのステートメントをすでに実行済みであり、他のステートメントの実行に移行してしまっている場合に、デッドロック候補のプロセスを適切に絞りこむことはできない。つまり、ある変数に関してロックをかけた後に、他の変数を含むステートメントを実行しているプロセスは、デッドロック発生の原因となったプロセスの候補として抽出されない。
【０００８】
特許文献２に開示の方式は、それぞれのプロセッサにおいて実行していたことを明らかにするが、一般的にプロセスは、一定時間毎にプロセッサへ動的に割り当てられるものであるので、プロセッサからプロセスを一意に特定することはできない。
【０００９】
そこで、本発明は、並列プログラムの大規模プロセス実行時にデッドロックが発生した場合、膨大なプロセスの中から、デッドロック発生の原因となった可能性のあるプロセスを効率的に絞り込むことを可能にするデバッグ装置等を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記の目的を達成すべく、本発明の一態様に係るデバッグ装置は、以下の構成を備える。
【００１１】
即ち、本発明の一態様に係るデバッグ装置は、
被デバッグプロセスへ、実行中の関数を一意に識別可能な関数識別子と、プロセスを一意に識別可能なプロセス識別子とを含むトレースバック情報を取得するように指示し、その指示に応じて取得された前記トレースバック情報を受け取る制御手段と、
前記制御手段で受け取る前記トレースバック情報を解析して、実行中の関数毎に前記プロセス識別子をグルーピングする解析手段と、
前記解析手段により解析された情報を出力する出力手段と
を備える。
【００１２】
同目的を達成する本発明の一態様に係るデバッグシステムは、
前記被デバッグプロセスと、
前記制御手段による指示を受けて前記被デバッグプロセスを停止する実行操作手段と、
前記制御手段による指示を受けて前記トレースバック情報を取得し、前記制御手段に送信する情報取得手段とを備える計算マシンと、
上述のデバッグ装置と
を備える。
【００１３】
同目的を達成する本発明の一態様に係るデバッグ方法は、
被デバッグプロセスへ、実行中の関数を一意に識別可能な関数識別子と、プロセスを一意に識別可能なプロセス識別子とを含むトレースバック情報を取得するように指示し、その指示に応じて取得された前記トレースバック情報を受け取り、
そのトレースバック情報を解析して、実行中の関数毎に前記プロセス識別子をグルーピングした情報を出力する。
【００１４】
更に、同目的は、上記構成を有するデバッグ装置、デバッグシステム、或いは、デバッグ方法を、コンピュータによって実現するコンピュータ・プログラム、及びそのコンピュータ・プログラムが格納されている、コンピュータ読み取り可能な記憶媒体によっても達成される。
【発明の効果】
【００１５】
本発明によれば、並列プログラムの大規模プロセス実行時にデッドロックが発生した場合、膨大なプロセスの中から、デッドロック発生の原因となった可能性のあるプロセスを効率的に絞り込むことができる。
【図面の簡単な説明】
【００１６】
【図１】本発明の第１の実施形態に係るデバッグ装置の構成を示すブロック図である。
【図２】本発明の第２の実施形態に係るデバッグシステムの構成を示すブロック図である。
【図３】本発明の第２の実施形態に係るデバッグシステムにおける処理を説明するフローチャートである。
【図４】本発明の第２の実施形態に係るトレースバック情報の一例を示す図である。
【図５】本発明の第２の実施形態に係るトレースバック解析情報の一例を示す図である。
【図６】本発明の第２の実施形態に係るトレースバック解析情報の表示内容の一例を示す図である。
【図７】本発明の第２の実施形態に係るデバッグ装置が計算マシンに設置された場合のデバッグシステムのブロック構成図である。
【図８】本発明の第２の実施形態に係るデバッグシステムにおいて情報表示加工部を追加した場合のブロック構成図である。
【図９】本発明の第１および第２の実施形態を実現可能なコンピュータ（情報処理装置）のハードウェア構成を例示的に説明する図である。
【発明を実施するための形態】
【００１７】
＜第１の実施形態＞
図１は、本発明の第１の実施形態に係るデバッグ装置の構成を示すブロック図である。本実施形態に係るデバッグ装置１は、制御部３と、解析部４と、出力部５とを備える。
【００１８】
制御部３は、デバッグ装置１に含まれる各部を制御する。制御部３は、さらに、デバッグ対象のプロセスである被デバッグプロセスへトレースバック情報を取得するように指示し、その指示に応じて取得された情報を受け取る。トレースバック情報は、実行中の関数を一意に識別可能な関数識別子と、プロセスを一意に識別可能なプロセス識別子とを含む。
【００１９】
解析部４は、制御部３が受け取ったトレースバック情報を解析して、実行中の関数毎にプロセス識別子をグルーピングする。
【００２０】
出力部１２は、解析部４により解析された情報を出力する。
【００２１】
以上、説明したように、第１の実施形態には、並列プログラムの大規模プロセス実行時にデッドロックが発生した場合、膨大なプロセスの中から、デッドロック発生の原因となった可能性のあるプロセスを効率的に絞り込むことができるという効果がある。
【００２２】
その理由は、実行中の関数ごとにプロセス識別子を出力することにより、同じ関数を実行しているプロセスを認識することを容易にするからである。
【００２３】
＜第２の実施形態＞
図２は、本発明の第２の実施形態に係るデバッグシステムの構成を示すブロック図である。ただし、図２に示す構成は、一例であって、本発明の実施形態は、図２に示すデバッグシステムに限定されない。
【００２４】
本実施形態に係るデバッグシステムは、デバッグ装置１０と、計算マシン２０＿１、２０＿２、・・・２０＿ｍ（ｍは自然数）とを含む。各計算機マシンとデバック装置１０は。ネットワーク３０を経由して接続される。計算マシン２０＿１、２０＿２、・・・２０＿ｍは、それぞれ同じ構成であるため、以下の説明では、計算マシンを特定しない場合に計算マシン２０と総称する。
【００２５】
デバッグ装置１０と計算マシン２０は、ネットワーク３０を介して通信を行う。ネットワーク３０は、無線ＬＡＮ、あるいは、有線ＬＡＮなどの一般的なネットワークを利用すればよい。
【００２６】
デバッグ装置１０は、入力部１１と、出力部１２と、制御部１３と、情報格納部１４と、情報解析部１５とを備える。
【００２７】
入力部１１は、デバッグ装置１０への操作指示を受け付ける。
【００２８】
出力部１２は、デバッグ情報を出力する。
【００２９】
制御部１３は、デバッグ装置１０の各部の全体制御を行う。制御部１３は、さらに、計算マシン２０へトレースバック情報を取得するように指示し、その指示に応じて取得された情報を受け取る。トレースバック情報は、例えば、実行中の関数名と、プロセス識別子とを含む。
【００３０】
情報格納部１４は、制御部１３が受け取ったトレースバック情報を格納する。
【００３１】
情報解析部１５は、情報格納部１４に格納されたトレースバック情報を解析して、実行中の関数毎にプロセス識別子をグルーピングする。
【００３２】
計算マシン２０は、実行操作部２１と、情報取得部２２と、制御部２３とを備える。
【００３３】
制御部２３は、１または複数のプロセス（被デバッグプロセス）を実行する。プロセスは、デバッグ対象である並列プログラムを実行する。
【００３４】
実行操作部２１は、制御部２３に対して、並列プログラムの実行を停止するように指示する。
【００３５】
情報取得部２２は、並列プログラムが停止したら、その並列プログラムを実行していた制御部２３のメモリやレジスタを参照して、トレースバック情報を取得する。そして、情報取得部２２は、取得したトレースバック情報を、制御部１３へ送信する。
【００３６】
次に、本実施形態の処理の流れについて図３を用いて説明する。図３は、本発明の第２の実施形態に係るデバッグシステムにおける処理を説明するフローチャートである。
【００３７】
初めに、入力部１１は、デバッグ装置１０の利用者から、計算マシン２０で実行中のプロセスにおいてトレースバック情報を取得させるための指示を受け取る（ステップＳ３０１）。入力部１１は、制御部１３に受け取った指示の内容を伝える。入力部１１は、操作ユニット、あるいは指示を受信するインタフェースであってもよい。
【００３８】
制御部１３は、その指示に従い、計算マシン２０の実行操作部２１へ被デバッグプロセスを停止するように指示する（ステップＳ３０２）。
【００３９】
実行操作部２１は、停止の指示に従い、計算マシン２０における被デバッグプロセスの実行を停止する。停止した後、実行操作部２１は、制御部１３へ被デバッグプロセスの停止操作が完了したことを通知する。計算マシン２０が複数台ある場合には、他の計算マシン２０の実行操作部２１においても同様に処理を行う。
【００４０】
制御部１３は、実行操作部２１から被デバッグプロセスの停止操作の完了通知を受信した後に、情報取得部２２に対してトレースバック情報を取得するように指示する。計算マシン２０が複数台ある場合には、他の計算マシン２０の実行操作部２１においても同様に処理を行う（ステップＳ３０３）。
【００４１】
情報取得部２２は、ステップＳ３０３の指示に基づき、自計算マシン２０の被デバッグプロセスのメモリおよびレジスタを参照してトレースバック情報をそれぞれ取得し、取得した情報を制御部１３へ送信する。トレースバック情報は、図４に示すように、実行中の関数名と、プロセス識別子とを含む。図４は、本発明の第２の実施形態に係るトレースバック情報の一例を示す図である。プロセス識別子は、例えば、ホスト名とプロセスＩＤのように、プロセスを一意に識別可能な識別子である。
【００４２】
制御部１３は、受信したトレースバック情報を情報格納部１４へ格納する（ステップＳ３０４）。
【００４３】
制御部１３は、情報解析部１５へ、情報格納部１４に格納したトレースバック情報を解析するように指示する（ステップＳ３０５）。
【００４４】
情報解析部１５は、情報格納部１４からトレースバック情報を取得して、取得した情報を解析する（ステップＳ３０６）。情報解析部１５は、トレースバック情報を、各プロセスにおいて実行中の関数毎に、その関数を実行しているプロセスをグループ分けする。そして、情報解析部１５は、図５に示すように、各グループ毎に実行中の関数名、グループ内のプロセス数、各プロセスに対応するプロセス識別子を格納する。図５は、本発明の第２の実施形態に係るトレースバック解析情報の一例を示す図である。グループは、実行中の関数毎に作成される。例えば、図５に示されるグループ１は、関数名１を実行しているプロセスに関する情報を集めて作成される。すなわち、グループ１は、実行中の関数名１と、関数名１を実行しているプロセス数１と、そのプロセスを表すプロセス数１個のプロセス識別子とを含む。情報解析部１５は、それらのグループの情報を、グループ内のプロセス数が少ない順にソートして並べ変える。並べ替えた情報を、情報解析部１５は、トレースバック解析情報として、制御部１３へ送信する。
【００４５】
制御部１３は、受信したトレースバック解析情報を出力部１２へ出力する（ステップＳ３０７)。図６は、本発明の第２の実施形態に係るトレースバック解析情報の表示内容の一例を示す図である。図６に示すように、同じ関数を実行しているプロセスを１つのグループとして、関数名と、グループ内のプロセス数と、各プロセスに対応するプロセス識別子とが表示されている。図６で一番上に表示されているグループは、関数名が「ＦｕｎｃｔｉｏｎＡＡＡ」である。このグループ内のプロセス数は、「２」である。そして、その２つのプロセスのプロセス識別子は、「ｒａｎｋ０」と、「ｒａｎｋ２」である。
【００４６】
ここまで、図２に示すように、デバッグ装置１０は、計算マシン２０とは別の場所に設置された装置であるとして説明してきた。しかし、図７に示すように、デバッグ装置１０は、計算マシン２０のいずれかのマシンに設置する構成も考えられる。図７は、本発明の第２の実施形態に係るデバッグ装置が計算マシン２０Ａに設置された場合のデバッグシステムのブロック構成図である。図７において、計算マシン２０Ａは、図２に示される計算マシン２０＿１にデバッグ装置１０が設置された場合の構成を示している。このような構成（計算マシン２０Ａ）とした場合の処理や効果は、図２に示す構成（計算マシン２０＿１）の場合から変更はないので、説明を省略する。
【００４７】
また、トレースバック解析情報の表示方法は、前述した方法に限定されない。
【００４８】
例えば、グループを表示する順序は、グループ内のプロセス数が多い順としてもよい。
【００４９】
あるいは、出力部１２は、すべてのグループを表示せずに、ある条件を満たすグループのみに絞って、表示してもよい。条件は、例えば、グループ内のプロセス数が、全プロセス数に対して、あらかじめ定めた割合以内のグループであることや、あらかじめ定めたプロセス数以内であることでもよい。また、出力部１２は、全グループ数に対してあらかじめ定めた割合以内のグループ数を表示してもよいし、表示するグループの個数をあらかじめ定めておいてもよい。
【００５０】
これらの表示を行うために、図８に示すように、情報表示加工部１６を備えてもよい。図８は、本発明の第２の実施形態に係るデバッグシステムにおいて情報表示加工部を追加した場合のブロック構成図である。情報表示加工部１６は、制御部１３が出力したトレースバック解析情報を表示するために加工する。そして、出力部１２は、情報表示加工部１６が加工した結果を基に、上述した表示方法による表示を行う。
【００５１】
以上、説明したように、第２の実施形態には、並列プログラムの大規模プロセス実行時にデッドロックが発生した場合、膨大なプロセスの中から、デッドロック発生の原因となった可能性のあるプロセスを効率的に絞り込むことができるという効果がある。
【００５２】
その理由は、同じ関数が動作していたプロセスが少ない順に、関数ごとにプロセス識別子を出力することにより、同じ関数を実行しているプロセスを認識することが容易になるからである。
【００５３】
（ハードウェア構成）
上述した実施形態において図１、図２、図７および図８に示した各部は、専用の装置によって実践してもよいが、ソフトウェアプログラムの機能（処理）単位（ソフトウェアモジュール）と捉えることができる。但し、これらの図面に示した各部の実装に際しては、様々な構成が想定され得る。このような場合のハードウェア環境の一例を、図９を参照して説明する。
【００５４】
図９は、本発明の第１および第２の実施形態を実現可能なコンピュータ（情報処理装置）のハードウェア構成を例示的に説明する図である。即ち、図９は、図１に示したデバッグ装置１、図２、図７および図８に示したデバッグ装置１０と計算マシン２０の全体または一部を実現可能なコンピュータ（情報処理装置）の構成であって、上述した実施形態における各機能を実現可能なハードウェア環境を表す。
【００５５】
図９に示した情報処理装置９０００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）９００１、ディスプレイ９００２、通信インタフェース（Ｉ／Ｆ）９００３、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）９００４、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）９００５、ハードディスク装置（ＨＤ）９００６を備え、これらがバス９００７を介して接続された構成を有する。ハードディスク装置（ＨＤ）９００６には、プログラム群９００６Ａと、各種の記憶情報９００６Ｂとが格納されている。プログラム群９００６Ａは、例えば、上述した図１、図２、図７および図８に示したデバッグ装置１、デバッグ装置１０および計算マシン２０の各ブロック（各部）に対応する機能を実現するためのコンピュータ・プログラムである。各種の記憶情報９００６Ｂは、例えば、図２、図７および図８に示した情報格納部１４である。通信インタフェース９００３は、ネットワーク９１００を介して外部装置と通信を実現する一般的な通信手段である。
【００５６】
そして、情報処理装置９０００は、前述の実施形態の説明において参照したブロック図、あるいは、フローチャートの機能を実現可能なコンピュータ・プログラムを、当該ハードウェアのＣＰＵ９００１が実行する。すなわち、ＣＰＵ９００１は、コンピュータ・プログラムを、図９に示す情報処理装置９０００のハードウェア資源を用いて実行することによって本発明の機能が達成される。具体的には、デバッグ装置１０と計算マシン２０を、情報処理装置９０００によって実現する場合、情報処理装置９０００は、図３に示すフローチャートの処理ステップを実行するためのコンピュータ・プログラムをＣＰＵ９００１が実行すればよい。また、情報処理装置９０００内に供給されたコンピュータ・プログラムは、読み書き可能なＲＡＭ９００５またはハードディスク装置９００６等の不揮発性の記憶デバイス（記憶媒体）に格納すればよい。
【００５７】
また、前記の場合において、当該装置内へのコンピュータ・プログラムの供給方法は、ＣＤ−ＲＯＭ等の各種記憶媒体を介して当該装置内にインストールする方法や、インターネット等のネットワーク９１００を介して外部からダウンロードする方法等のように、現在では一般的な手順を採用することができる。そして、このような場合において、本発明は、係るコンピュータ・プログラムを構成するコード或いは、そのコードが記録されたところの、コンピュータ読み取り可能な記憶媒体によって構成されると捉えることができる。
【符号の説明】
【００５８】
１    デバッグ装置
３    制御部
４    解析部
５    出力部
１０    デバッグ装置
１１    入力部
１２    出力部
１３    制御部
１４    情報格納部
１５    情報解析部
１６    情報表示加工部
２０、２０Ａ、２０＿１、２０＿２、２０＿ｍ    計算マシン
２１    実行操作部
２２    情報取得部
２３    制御部
９０００    情報処理装置（コンピュータ）
９００１    ＣＰＵ
９００２    ディスプレイ
９００３    通信インタフェース（Ｉ／Ｆ）
９００４    ＲＯＭ
９００５    ＲＡＭ
９００６    ハードディスク装置（ＨＤ）
９００６Ａ    プログラム群
９００６Ｂ    各種の記憶情報
９００７    バス
９１００    ネットワーク
【図１】
2016099904.tif 000003
【図２】
2016099904.tif 000004
【図３】
2016099904.tif 000005
【図４】
2016099904.tif 000006
【図５】
2016099904.tif 000007
【図６】
2016099904.tif 000008
【図７】
2016099904.tif 000009
【図８】
2016099904.tif 000010
【図９】
2016099904.tif 000011