(57)【特許請求の範囲】
【請求項１】
複数のプロセス間で通信を行い、処理を実行する情報処理装置であって、
プロセス間の通信にて、通信対象のプロセスでインバランスの発生による通信待ち合わせが発生したか否かを判別する判別手段と、
前記判別手段によって前記通信待ち合わせが発生したと判別されたときに前記通信待ち合わせが終了するまでの通信待ち合わせ時間を測定し、測定した前記通信待ち合わせ時間をプロセス間通信情報ファイルに記録するプロセス間通信情報記録手段とを備える情報処理装置。
【請求項２】
前記判別手段は、前記通信待ち合わせが発生したと判別した後、前記通信待ち合わせが終了したか否かを判別し、
前記プロセス間通信情報記録手段は、前記判別手段によって前記通信待ち合わせが発生したと判別されたときに前記通信待ち合わせが発生した時刻を取得し、前記判別手段によって前記通信待ち合わせが終了したと判別されたときに前記通信待ち合わせが終了した時刻を取得し、取得した前記通信待ち合わせが発生した時刻と前記通信待ち合わせが終了した時刻との時間差から、前記通信待ち合わせ時間を求める、請求項１に記載の情報処理装置。
【請求項３】
前記プロセス間通信情報記録手段は、前記プロセス間通信が終了するとデータ転送終了時刻を取得し、前記通信待ち合わせが終了した時刻と前記データ転送終了時刻との時間差から、データ転送所要時間を求め、求めた前記データ転送所要時間を前記プロセス間通信情報ファイルに記録する、請求項２に記載の情報処理装置。
【請求項４】
前記プロセス間通信情報記録手段は、前記プロセス間通信が終了すると、データサイズ及び通信対象プロセス情報を取得し、該取得した情報を前記プロセス間通信情報ファイルに記録する、請求項１乃至３の何れか一に記載の情報処理装置。
【請求項５】
前記複数のプロセスのそれぞれが、他のプロセスとの間で通信を行うプロセス間通信処理部を備えており、該プロセス間通信処理部内に、前記プロセス間通信情報記録手段を有する、請求項１乃至４の何れか一に記載の情報処理装置。
【請求項６】
複数のプロセス間で通信を行い、処理を実行する情報処理装置における通信情報採取方法であって、
前記情報処理装置が、プロセス間の通信にて、通信対象のプロセスでインバランスの発生による通信待ち合わせが発生したか否かを判別する判別ステップと、
前記情報処理装置が、前記判別ステップで前記通信待ち合わせが発生したと判別されたときに前記通信待ち合わせが終了するまでの通信待ち合わせ時間を測定し、測定した前記通信待ち合わせ時間をプロセス間通信情報ファイルに記録する記録ステップとを有する通信情報採取方法。
【請求項７】
前記判別ステップでは、前記通信待ち合わせが発生したと判別した後、前記通信待ち合わせが終了したか否かを判別し、
前記記録ステップでは、前記判別ステップで前記通信待ち合わせが発生したと判別されたときに前記通信待ち合わせが発生した時刻を取得し、前記判別ステップで前記通信待ち合わせが終了したと判別されたときに前記通信待ち合わせが終了した時刻を取得し、取得した前記通信待ち合わせが発生した時刻と前記通信待ち合わせが終了した時刻との時間差から、前記通信待ち合わせ時間を求める、請求項６に記載の通信情報採取方法。
【請求項８】
複数のプロセス間で通信を行い、処理を実行するコンピュータに、通信情報を採取する処理を実行させるプログラムであって、前記コンピュータに、
プロセス間の通信にて、通信対象のプロセスでインバランスの発生による通信待ち合わせが発生したか否かを判別する判別処理と、
前記判別処理で前記通信待ち合わせが発生したと判別されたときに前記通信待ち合わせが終了するまでの通信待ち合わせ時間を測定し、測定した前記通信待ち合わせ時間をプロセス間通信情報ファイルに記録する記録処理とを実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、通信情報採取方法、及び、プログラムに関し、更に詳しくは、複数プロセス間で通信を行い処理を実行する情報処理装置、並びに、そのような情報処理装置における通信情報採取方法及びプログラムに関する。
【背景技術】
【０００２】
複数のプロセスから構成されるメッセージパッシング型分散並列プログラムがある。メッセージパッシング型分散並列プログラムの実行において、各プロセスの処理量が均一ではないと（インバランスが発生していると）、後続のプロセス間通信において通信待合わせが発生し、プロセス間通信所要時間が増大する。これにより、プログラム全体の実行性能が低下する。プログラムの実行性能チューニングのために、インバランス発生箇所を特定し、改善する手法が採られている。インバランスの発生は、プロセス間所要時間が増大している箇所を検出することで検出可能である。
【０００３】
従来は、各プロセスの処理量が不均一となっている箇所を検出するために、プロセス間通信に関する情報を採取・保存し、プログラム実行終了後にその情報を解析している。すなわち、プログラムの実行開始時から終了まで、分散並列プログラムを構成する全てのプロセスについて、全てのプロセス間通信イベント情報（通信相手プロセス、通信データサイズ、通信所要時間など）を採取し、その情報をファイルに保存し、解析している。採取したプロセス間通信イベント情報の解析では、専用のツールを利用し、例えば、縦軸をプロセス、横軸を時間として、採取したプロセス間通信情報をグラフィカルに表示させ、送信側プロセスと受信側プロセスの対応状況、各プロセス間通信に要した時間等を目視により確認し、通信時間が長い箇所を特定している。
【０００４】
ここで、メッセージ交換型通信システムにて、通信待ち合わせを行う技術が、特許文献１に記載されている。特許文献１では、プロセス間での通信の発生、特に通信待合せの発生を監視し、その情報を採取する。次に通信待ち合わせが発生したときには、以前に発生した通信待ち合わせの状態を参照し、適切な待ち合わせ方式、すなわちビジーウェイト方式又はサスペンド方式の何れかを選択する。特許文献１では、このようにすることで、通信性能の低下を抑えつつ、通信待ち合わせ処理に必要なＣＰＵ資源の浪費を回避することができるとしている。
【０００５】
【特許文献１】特開２００１−１１７７８７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
上記した、プロセス間通信に関する情報を採取・保存し、プログラム実行終了後にその情報を解析する手法では、実行プロセス数が少ない場合や、実行が短時間で終了するプログラムでは、特に問題は発生しない。しかし、ＨＰＣ（High Performance Computing）分野のアプリケーションプログラム、特に大規模科学技術計算プログラムなどでは、プロセス数が多く、また、プログラムの実行が長時間にわたり、発生するプロセス間通信の数が膨大となる。このため、収集する情報が膨大となり、通信情報ファイルのサイズが巨大になることで、ファイルアクセスのコストが増大するという問題が発生する。また、解析を行う際に、プロセス間通信の発生状況を示すグラフィカル表示も複雑となり、目視による確認が困難となるという問題も発生する。
【０００７】
また、通信性能情報の採取に際しては、実行性能重視の観点から、通信中に性能情報採取用のコードなど、実行時のオーバーヘッドとなり実行性能低下の要因となる処理を組み込むことはできない。このため、情報採取の方法としては、ユーザプログラムから情報採取用手続き呼び出し、情報採取用手続きから実際にプロセス間通信を行う手続きを呼び出すラッパー式が一般的に採られている。この場合は、プロセス間通信を行う手続きとは別に、情報採取用の手続きを用意する必要がある。
【０００８】
特許文献１では、通信待合せ時間を採取している。しかし、特許文献１では、採取した通信待合せ時間は、通信待合せ方式の選択にのみ使用しており、これをファイルに書き出して、後の解析に用いることはしていない。従って、特許文献１に記載の技術では、プログラム実行後に、発生した通信待合せ時間の解析を行うことはできず、インバランス発生箇所を特定することはできない。
【０００９】
本発明は、発生するプロセス間通信が膨大な数となるケースについても、各プロセスの処理量が不均一になっている箇所を特定するための情報を、選択的、かつ、自動的に採取し保存できる通信情報採取方法、情報処理装置、及び、プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するために、本発明の情報処理装置は、複数のプロセス間で通信を行い、処理を実行する情報処理装置であって、プロセス間の通信にて、通信対象のプロセスでインバランスの発生による通信待ち合わせが発生したか否かを判別する判別手段と、前記判別手段によって前記通信待ち合わせが発生したと判別されたときに前記通信待ち合わせが終了するまでの通信待ち合わせ時間を測定し、測定した前記通信待ち合わせ時間をプロセス間通信情報ファイルに記録するプロセス間通信情報記録手段とを備えることを特徴とする。
【００１１】
本発明の通信情報採取方法は、複数のプロセス間で通信を行い、処理を実行する情報処理装置における通信情報採取方法であって、前記情報処理装置が、プロセス間の通信にて、通信対象のプロセスでインバランスの発生による通信待ち合わせが発生したか否かを判別する判別ステップと、前記情報処理装置が、前記判別ステップで前記通信待ち合わせが発生したと判別されたときに前記通信待ち合わせが終了するまでの通信待ち合わせ時間を測定し、測定した前記通信待ち合わせ時間をプロセス間通信情報ファイルに記録する記録ステップとを有することを特徴とする。
【００１２】
本発明のプログラムは、複数のプロセス間で通信を行い、処理を実行するコンピュータに、通信情報を採取する処理を実行させるプログラムであって、前記コンピュータに、プロセス間の通信にて、通信対象のプロセスでインバランスの発生による通信待ち合わせが発生したか否かを判別する判別処理と、前記判別処理で前記通信待ち合わせが発生したと判別されたときに前記通信待ち合わせが終了するまでの通信待ち合わせ時間を測定し、測定した前記通信待ち合わせ時間をプロセス間通信情報ファイルに記録する記録処理とを実行させることを特徴とする。
【発明の効果】
【００１３】
本発明の通信情報採取方法、情報処理装置、及び、プログラムは、発生するプロセス間通信が膨大な数となるケースについても、各プロセスの処理量が不均一になっている箇所を特定するための情報を、選択的、かつ、自動的に採取し保存できる。
【発明を実施するための最良の形態】
【００１４】
以下、図面を参照し、本発明の実施の形態を詳細に説明する。図１は、本発明の一実施形態の分散並列プログラムを示している。分散並列プログラム１０は、複数のプロセス１１−１〜１１−ｎを有する。プロセス１１−１〜１１−ｎは、プロセス間通信処理部１２−１〜１２−ｎを有する。プロセス間通信処理部１２−１〜１２−ｎは、プロセス間通信情報処理部１３−１〜１３−ｎを有する。分散並列プログラム１０は、サーバなどのコンピュータ（情報処理装置）に読み込まれ、コンピュータ上で各種の処理を実行する。
【００１５】
プロセス間通信処理部１２は、プロセス間通信処理を行う。プロセス間通信情報処理部１３は、プロセス間通信処理部１２がプロセス間通信を実施した際に、各種通信情報を採取し処理する。プロセス間通信情報処理部１３は、プロセス間で通信待ち合わせが発生したときにのみ、各種通信情報を採取する。プロセス間通信情報処理部１３が採取する通信情報は、通信待ち時間と、データ転送時間とを含む。プロセス間通信情報ファイル１４−１〜１４−ｎは、プロセス１１−１〜１１−ｎについて採取されたプロセス間通信情報を格納するファイルであり、プロセスごとに存在する。
【００１６】
図２に、動作手順を示す。分散並列プログラム１０を構成する各プロセス１１は、プロセス間通信処理部１２により、プロセス間通信手続きを実行する。プロセス間通信処理部１２は、通信対象のプロセス側で、通信開始の準備が整っているか否かを判定する（ステップＳ１）。通信対象プロセスで通信開始の準備が整っている場合は、プロセス間データ転送処理を実行し（ステップＳ２）、プロセス間通信手続きを終了する。このとき、プロセス間通信情報処理部１３による通信情報の収集は行わない。
【００１７】
プロセス間通信処理部１２は、通信対象プロセス側で通信開始の準備が整っていないと判断したときは、通信待ち合わせのロジックに移行する。通信待ち合わせのロジックにて、プロセス間通信情報処理部１３により、通信情報の採取を実施する。プロセス間通信情報処理部１３は、通信待ち合わせロジックへの移行時に、通信待ち合わせ開始時刻を採取する（ステップＳ３）。プロセス間通信処理部１２は、通信対象プロセス側で通信開始の準備が整っているか否かを再度確認し（ステップＳ４）、準備が整うまでステップＳ４を繰り返し実行して待機する。
【００１８】
プロセス間通信処理部１２が通信対象プロセスで通信開始の準備が整ったと判断すると、プロセス間通信情報処理部１３は、プロセス間待ち合わせ終了時刻を採取する（ステップＳ５）。ステップ３で採取した時刻とステップＳ５で採取した時刻との時間差が、通信待ち合わせ時間となる。プロセス間通信処理部１２は、プロセス間のデータ転送処理を実施する（ステップＳ６）。ステップＳ６のデータ転送処理は、ステップＳ２のデータ転送処理と同じ処理である。
【００１９】
データ転送処理の実施後、プロセス間通信情報処理部１３は、プロセス間データ転送処理の終了時刻を採取する（ステップＳ７）。ステップＳ５で採取した時刻とステップＳ７で採取した時刻との時間差が、データ転送所要時間となる。プロセス間通信情報処理部１３は、データサイズや通信相手プロセス情報などのその他の情報を採取する（ステップＳ８）。プロセス間通信情報処理部１３は、通信待ち合わせ時間、データ転送所要時間、及び、ステップＳ８で取得したその他の情報を、プロセス間通信情報ファイル１４に書き込む（ステップＳ９）。
【００２０】
図３に、ラッパー方式で採取される情報と本実施形態で採取される情報とを模式的に示す。ラッパー方式では、ユーザプログラム５１に通信情報採取用手続き５２を設け、通信情報採取用手続き５２が、通信手続き５３の前後で情報採取処理５４、５５を行うことで、情報を採取する。このようにして採取された情報は、データ転送時間と通信待ち時間とを含む。
【００２１】
ラッパー方式では、データ転送時間と通信待ち時間とを含む情報しか採取できないので、通信時間に占める通信待ち時間のみを選択的に採取することがでない。このため、通信待ちの発生は、通信時間全体から判断する必要がある。より詳細には、通信データサイズ、及び、プロセス間通信経路ごとに、あらかじめ、通信待ちが発生しない場合の理想的なデータ転送所要時間である基準時間を算出又は測定しておき、これと実際の通信所要時間とを比較して、所要時間が基準時間を上回るか否かで、通信待ちの発生を判断する必要がある。
【００２２】
本実施形態では、通信処理を行う通信手続き中（プロセス間通信処理部１２内）に、情報採取用コード（プロセス間通信情報処理部１３）を組み込み、通信待ちの発生を契機として情報採取を実施する。本実施形態では、通信待ちが発生した通信のみを対象に情報を採取することができるため、全てのプロセスについて全てのプロセス間通信イベント情報を採取する場合に比して、採取した情報をファイルに書き出すコスト、及び、ファイルサイズを大幅に削減することができる。従って、発生するプロセス間通信が膨大な数となるケースについても、各プロセスの処理量が不均一になっている箇所を特定するための情報を、選択的、かつ、自動的に採取し保存できる。
【００２３】
本実施形態では、プロセス間通信ごとに、通信待ち合わせ時間とデータ転送時間とを分離して採取する。通信待ち合わせ時間とデータ転送時間とを分離して採取することで、インバランス発生箇所を特定するために必要な情報を保存することができ、その後の解析に利用することができる。また、本実施形態では、通信待ちの発生を契機として情報採取を行っており、通信待ちが発生しない場合は、情報採取を行わないので、性能への影響も小さい。更に、ラッパー方式では、通信待ち発生を判断するために、通信データサイズ及び通信経路ごとに基準時間を保持する必要があった。本実施形態では、通信待ちの発生を契機として情報採取を行い、通信待ち時間は転送サイズや通信経路とは無関係であるので、ラッパー方式の場合と異なり、データ転送に要する基準時間を保持する必要はない。
【００２４】
以上、本発明をその好適な実施形態に基づいて説明したが、本発明の情報処理装置、通信情報採取方法、及び、プログラムは、上記実施形態にのみ限定されるものではなく、上記実施形態の構成から種々の修正及び変更を施したものも、本発明の範囲に含まれる。
【図面の簡単な説明】
【００２５】
【図１】本発明の分散並列プログラムを示すブロック図。
【図２】情報採取の動作手順を示すフローチャート。
【図３】ラッパー方式で採取される情報と本実施形態で採取される情報とを模式的に示すブロック図。
【符号の説明】
【００２６】
１０：分散並列プログラム
１１：プロセス
１２：プロセス間通信処理部
１３：プロセス間通信情報処理部
１４：プロセス間通信情報ファイル
【図１】
0004978504.tif 000002
【図２】
0004978504.tif 000003
【図３】
0004978504.tif 000004