(57)【要約】【課題】  通信処理実行前に、当該通信処理の対象プロセス間で生じた処理時間の差異を測定することが出来ない。【解決手段】  本発明の一実施形態の測定プログラムは、コンピュータに、プロセスとして実行されて、第１の他プロセスと同期をとった後、当該同期の待ち時間の出力、および、当該第１の他プロセスとの第１の通信を行う測定処理を実行させる。【選択図】      図１
2009059316.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、プロセスとして実行されて、
第１の他プロセスと同期をとった後、当該同期の待ち時間の出力、および、前記第１の他プロセスとの第１の通信を行う測定処理を実行させる測定プログラム。
【請求項２】
前記コンピュータに、
前記第１の他のプロセス、および、前記同期後に前記第１のプロセスと第２の通信を行う第２の他のプロセスの両者と前記同期をとる前記測定処理を実行させる請求項１の測定プログラム。
【請求項３】
前記コンピュータに実行されるユーザ手続きから業務処理後に前記第１の通信を行う為に呼び出されるプログラム部品である、請求項１または２の何れかに記載の測定プログラム。
【請求項４】
分散並列アプリケーションに属する前記ユーザ手続きを、前記プロセス及び前記第１の他のプロセスとして各々実行する前記コンピュータに、前記ユーザ手続きの前記業務処理による演算結果を送信するメッセージパッシングとして前記第１の通信を実行させる請求項３に記載の測定プログラム。
【請求項５】
前記コンピュータに、前記待ち時間を前記ユーザ手続きおよび前記プロセス毎に累積させる請求項４の測定プログラム。
【請求項６】
請求項１乃至５の何れかひとつに記載の測定プログラムを実行する測定装置。
【請求項７】
コンピュータが、
第１の他プロセスと同期をとった後、当該同期の待ち時間の出力、および、前記第１の他プロセスとの第１の通信をプロセスとして実行する測定行程を有する測定方法。
【請求項８】
前記コンピュータが、
前記第１の他のプロセス、および、前記同期後に前記第１のプロセスと第２の通信を行う第２の他のプロセスの両者と前記同期をとる前記測定行程を有する請求項７の測定方法。
【請求項９】
前記測定行程は、前記コンピュータが、前記コンピュータが実行するユーザ手続きから業務処理後に前記第１の通信を行う為のプログラム部品を呼び出して実施する請求項７または８の何れかに記載の測定方法。
【請求項１０】
分散並列アプリケーションに属する前記ユーザ手続きを、前記プロセス及び前記第１の他のプロセスとして各々実行する前記コンピュータが、前記ユーザ手続きの前記業務処理による演算結果を送信するメッセージパッシングとして前記第１の通信を実行する請求項９に記載の測定方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、測定装置、測定プログラム、および、測定方法に関する。
【背景技術】
【０００２】
特許文献１は、プロセッサ上での手続き処理時間を測定する技術を開示する。特許文献２は、プロセスが、セマフォで待ち状態となっている時間を測定する技術を開示する。
【０００３】
【特許文献１】特開平１０−６３５５０号公報
【特許文献２】特開平１０−６３５１６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上述した特許文献は、何れも、コンピュータに、プロセスとして実行されて、他プロセスと同期をとった後、当該同期の待ち時間の出力、および、他プロセスとの通信を行う測定処理を実行させる測定プログラムを備えていない。従って、特許文献の技術は、各々単独にても、その組み合わせに於いても、通信処理実行前に当該通信処理対象プロセスの処理時間の差異に起因する同期の待ち時間を測定出来ないという課題がある。
【０００５】
本発明の目的は、上述した課題を解決する測定装置、測定プログラム、および、測定方法を提供することにある。
【課題を解決するための手段】
【０００６】
本発明の一実施形態の測定プログラムは、コンピュータに、プロセスとして実行されて、第１の他プロセスと同期をとった後、当該同期の待ち時間の出力、および、前記第１の他プロセスとの第１の通信を行う測定処理を実行させる。
【０００７】
本発明の一実施形態の測定方法は、コンピュータが、第１の他プロセスと同期をとった後、当該同期の待ち時間の出力、および、前記第１の他プロセスとの第１の通信をプロセスとして実行する測定行程を有する。
【発明の効果】
【０００８】
本発明は、通信処理実行前に、当該通信処理対象プロセス間で生じた処理時間の差異に起因する同期待ち時間を測定することが出来る。
【発明を実施するための最良の形態】
【０００９】
図１は、本発明の第１実施形態の測定装置１０を示す。測定装置１０は、例えば、複数のプロセッサ１１を備える並列処理コンピュータから構成される。プロセッサ１１の数は、一つでも構わない。
【００１０】
測定装置１０はプログラムを並列実行可能である。測定装置１０内で並列実行されるプログラムの制御単位はプロセス１２と呼ばれる。即ち、測定装置１０は、複数のプロセス１２を並列実行する。各プロセス１２は、何れかのプロセッサ１１によって実行される。プロセス１２は図示しない制御プログラムによって制御される。ここで、制御プログラムとは、UNIX（登録商標）、Linux等のＯＳ（Operating System）である。
【００１１】
測定装置１０は時計１３も包含する。時計１３は現在の時刻を示す。時刻の単位はミリ行単位程度が望ましいが、これに限られない。
【００１２】
測定装置１０は記憶装置１５と接続されている。記憶装置１５は、プロファイル格納域２０、分散並列アプリケーション３０、通信ライブラリ４０を包含する。分散並列アプリケーション３０は、測定装置１０が実行するプログラムである。通信ライブラリ４０は通信用のプログラム部品の集合である。
【００１３】
通信ライブラリ４０は、プログラム部品として測定プログラム４１と通信プログラム４２を備える。測定装置１０は入出力装置１６と接続されている。
【００１４】
図２は分散並列アプリケーション３０の構成を示す。分散並列アプリケーション３０は、通常複数のユーザ手続き３１から構成される。ユーザ手続き３１は、入れ子関係を有していても良い。ユーザ手続き３１は、業務処理プログラム３２と測定プログラム４１を包含する。
【００１５】
業務処理プログラム３２は、分散並列アプリケーション３０の業務目的を達成するために作成されたプログラム部分である。分散並列アプリケーション３０が、例えば、ある図形の面積を求めるものであれば、面積算出の為の処理を行うプログラムである。
【００１６】
一方、測定プログラム４１は、ユーザ手続き３１を実行するプロセス１２から呼び出されて業務処理プログラム３２ための通信および本発明の目的である測定を行う為のプログラムである。測定プログラム４１は、分散並列アプリケーション３０の作成時に、通信ライブラリ４０から取り出されて、ユーザ手続き３１に組み込まれている。例えば、分散並列アプリケーション３０のリンク編集時にリンカーが測定プログラム４１を組み込む。測定プログラム４１が、ユーザ手続き３１から起動された時にダイナミックリンク管理プログラムが組み込んでも良い。
【００１７】
なお、本発明にかかる測定を実施するときは、測定プログラム４１がユーザ手続き３１に組み込まれるが、通常の稼働時には通信プログラム４２が組み込まれる。通信プログラム４２は、ユーザ手続き３１を実行するプロセス１２から呼び出されて業務処理プログラム３２ための通信を行う。通信プログラム４２は、本発明の目的である測定は行わない。
【００１８】
分散並列アプリケーション３０は、測定装置１０の内部で、通常複数のプロセス１２に分散されて、並列に実行される。図３はこの様子を例示する。
【００１９】
先ず、ＯＳが、分散並列アプリケーション３０の開始点として指定されているユーザ手続き３１（例えば、Procedure A）をプロセス１２（例えば、Process0）として起動する。起動されたProcedure Aは、その業務処理プログラム３２を実行する。
【００２０】
Procedure Aの業務処理プログラム３２は、並列実行が可能な処理部分に達すると、Process０とは別のプロセス１２（例えば、Process１乃至ｎ）を生成する。生成するプロセス１２はひとつであっても複数であっても構わない。測定装置１０のプロセッサ１１は、生成したProcess０、および、生成されたProcess１乃至ｎを各々並列に実行する。
【００２１】
生成されたProcess１乃至ｎが実行するプログラム（例えば、Procedure.a1乃至an）は、生成時に指定されている。
【００２２】
Process1乃至nは、各々Procedure.a1乃至anの業務処理プログラム３２を実行し、その後、計算結果を送受信する為に測定プログラム４１を呼び出す。Process０も、業務処理プログラム３２が終了すると測定プログラム４１を呼び出す。
【００２３】
上記で呼び出された測定プログラム４１は、Process０乃至ｎの各プロセス１２の同期をとる。即ち、業務処理プログラム３２を実行し終えたプロセス１２は、まだ業務処理プログラム３２を実行し終えないプロセス１２を待ち合わせるのである。最後のプロセス１２が業務処理プログラム３２を実行し終えると、測定プログラム４１は、同期で各Process０乃至ｎの各プロセス１２に生じた待ち時間をプロファイル格納域２０に出力し、必要な通信を行う。
【００２４】
ここで、分散並列アプリケーション３０は、例えば、ある図形を複数の区分に分割し、各々の区分の面積積分を並列して実行し、最後に合算して当該図形の面積を求めるものであるとする。
【００２５】
具体的には、分散並列アプリケーション３０は、Process０乃至ｎの各プロセス１２の業務処理プログラム３２で各区分の面積を求め、各々の算出値をProcess０で合算するものとする。
【００２６】
この場合、上述の相互通信において、Process1乃至ｎの各プロセス１２は、各々の計算結果をPrecess0に送信する。Process０は、Process1乃至ｎの各プロセス１２から計算結果を受信する。
【００２７】
上述例の分散並列アプリケーション３０は、種々の方法で記載可能である。例えば、ＭＰＩ（Message-Passing  Interface）が用いられても良い。このとき、上記の通信はメッセージパッシングとして実現される。
【００２８】
なお、本発明を利用可能な分散並列アプリケーション３０はこの例に限られない。分散並列アプリケーション３０が、処理の一部を複数のプロセス１２で分散して並列に処理し、並列処理の結果を相互に授受するものであれば他のものでも構わない。
【００２９】
メッセージパッシングによる結果を送受信した後、通常Process１乃至ｎはProcess0からの消滅指示を受けたのち消滅する。Process０は、次のユーザ手続き３１を実行する。あるいは、ＯＳや他のユーザプログラムの制御を受けて、Procedure Aを繰り返し実行しても良い。
【００３０】
図４は、上述したプロセス１２相互間で同期を取るための同期表５０を示す。同期表５０は親ユーザ手続きID５１を包含する。親ユーザ手続きID５１は、同期対象となるプロセス１２を生成したユーザ手続き３１の識別子である。図３の例では、Procedure Aの識別子が親ユーザ手続きID５１である。
【００３１】
同期表５０は、さらに、同期対象となるプロセス１２の数分の、同期プロセスID５２、同期状態５３、待ち開始時刻５４を包含する。図３の例では、Process０乃至ｎについて各々同期プロセスID５２、同期状態５３、待ち開始時刻５４を包含する。同期状態５３は、同期プロセスID５２が示すプロセス１２の同期が完了したか未完了かを示す。
【００３２】
同期表５０は、測定装置１０の図示せぬメモリに格納される。
【００３３】
図５は測定プログラム４１のフローチャートである。前述したように、ユーザ手続き３１が測定プログラム４１を呼び出す。ユーザ手続き３１は、呼び出し時に、同期対象となるプロセス１２を生成したユーザ手続き３１の識別子や同期対象プロセス１２の識別子をパラメータとして与える。これらの情報は、同期表５０の親ユーザ手続きID５２や同期プロセスID５２に格納されたり、同期表５０の親ユーザ手続きID５２や同期プロセスID５２と比較されたりする。
【００３４】
これらの情報は、例えば、親ユーザ手続きID５１が示すユーザ手続き３１を実行する親のプロセス１２が、子のプロセス１２を生成したとき、または、その後に、親のプロセス１２と子のプロセス１２とで共有される。そして、各プロセス１２上で、ユーザ手続き３１が、測定プログラム４１にパラメータとして与える。
【００３５】
測定プログラム４１は、同期表５０がメモリ上にあるかを調べる（Ｓ５１）。これは、呼び出し時のパラメータで与えられたユーザ手続き３１の識別子と一致する親ユーザ手続きID５１を持つ同期表５０を検索することで行う。測定プログラム４１は、当該同期表５０が発見できなければ（Ｓ５１でＮ）、与えられたパラメータを基に同期表５０を作成する（Ｓ５Ｂ）。なお、同プログラムは、同期状態５３の初期値として同期未完了を示すように設定する。
【００３６】
同プログラムは、当該同期表５０が発見できれば（Ｓ５１でＹ）、他の全てのプロセス１２の同期が完了しているかを調べる（Ｓ５２）。これは、自らのプロセス１２以外のプロセス１２の同期状態５３が同期完了を示すか否かを調べることで行う。
【００３７】
少なくとも一つのプロセス１２で同期が完了していなければ（Ｓ５２でＮ）、即ち、他のプロセス１２について同期状態５３が同期未完了を示すものが存在すれば、同プログラムは、自らのプロセス１２の待ち開始時刻５４を設定する。これは、時計１３を読み込んで、待ち開始時刻５４に格納することで行う。
【００３８】
その後、同プログラムは、他のプロセス１２が同期するのを待ち合わせる（Ｓ５４）。他の全てのプロセス１２で同期が完了すると、当該待ち合わせが解除されて、同プログラムは、必要な通信を行って（Ｓ５５）終了する。即ち、同プログラムは、呼び出し元のユーザ手続き３１にリターンする。なお、必要な通信とは、メッセージパッシングによる、例えば、各プロセス１２の間の計算結果の送受信である。
【００３９】
他の全てのプロセス１２の同期が完了している場合（Ｓ５２でＹ）、同プログラムは、全てのプロセス１２の各々の同期待ち時間（測定値）を算出する（Ｓ５６）。これは、時計１３の現在値と、各プロセス１２の待ち開始時刻５４との差分を求めることで行う。なお、自らのプロセス１２の同期待ち時間は０である。
【００４０】
同プログラムは、このようにして求めた各プロセス１２の同期待ち時間をプロファイル格納域２０に出力する（Ｓ５７）。
【００４１】
同期待ち時間は、同期が完了する都度、新たなレコードとして出力しても良い。ユーザ手続き３１（例えば、Procedure A）が繰り返し実行される場合は、同期待ち時間は、同期が完了するたびに、各プロセス１２（例えば、Process０乃至ｎ）に累積しても良い。繰り返し実行結果を累積することは、同期待ち時間にたいする偶然の要素の影響を平滑化する。
【００４２】
同プログラムは、同期表５０を走査して、同期待ち合わせを行っている全ての他のプロセス１２の待ち合わせ解除を行う（Ｓ５８）。
【００４３】
その後、同プログラムは、同一ユーザ手続き３１の再実行に備えて、同期表５０の再初期設定を行う（Ｓ５９）。即ち同プログラムは、全ての同期状態５３が、同期未完了を示すように再設定する。その後、同プログラムは、必要な通信を行って（Ｓ５Ａ）終了する。なお、必要な通信とは、メッセージパッシングによる、例えば、各プロセス１２の間の計算結果の送受信である。
【００４４】
図６は、測定プログラム４１の通信処理のフローチャートである。この通信処理は、図５において、Ｓ５５、Ｓ５Ａの両ステップで行われる処理である。同処理の入力パラメータは、送受信の別、送受信対象のプロセス１２の識別子、および、送信メッセージ、あるいは受信メッセージ域である。これらのパラメータは、ユーザ手続き３１が測定プログラム４１を呼び出すときに与える。
【００４５】
同プログラムは、入力パラメータが送信を示す場合（Ｓ６１でＹ）、送信対象プロセス１２（Precess0）に、送信メッセージを送信する（S６２）。
【００４６】
同プログラムは、入力パラメータが受信を示す場合（Ｓ６１でN）、受信対象の全てのプロセス１２（Process１乃至n）から、メッセージを受信する（S６３）。
【００４７】
なお、図６は通信プログラム４２のフローチャートでもある。ユーザ手続き３１が、本発明にかかる測定を行わないときに、測定プログラム４１の代わりに通信プログラム４２を使用する。
【００４８】
図７は、測定プログラム４１がプロファイル格納域２０に出力した測定値を例示する。測定値は、同期対象となるプロセス１２を生成したユーザ手続き３１（Procedure A）毎に、同期対象プロセス１２毎の同期待ち時間を示す。この同期待ち時間は、同期毎の測定値である場合もあるし、同期が繰り返された場合の累積値である場合もあることは前述の通りである。業務処理プログラム３２の処理時間が長ければこの同期待ち時間は短く、逆に、業務処理プログラム３２の処理時間が短ければこの同期待ち時間は長くなる（図３）。従って、こも同期待ち時間により、各プロセス１２で実行される業務処理プログラム３２の処理時間差が解る。
【００４９】
図示しない表示ソフトウェアが、プロファイル格納域２０から測定値を読み込んで、例えば、入出力装置１６に表示する。
【００５０】
図８は本実施形態の特徴的部分を示す。図６は、コンピュータである測定装置１０に、プロセス１２として実行される測定プログラム４１を示す。同プログラムは、他のプロセス１２と同期をとった後、当該同期の待ち時間の出力、および、他のプロセス１２との通信を行う測定処理を実行させる。
【００５１】
本実施形態の効果は以下の通りである。
【００５２】
第１の効果は、業務処理プログラム３２によって生じる処理時間差が、高精度で測定できる点である。この処理時間差は、各プロセス１２で分散実行した業務処理プログラム３２の演算量の差異や実行時に利用する共有資源の競合度合いの違いにより生ずる。この測定の結果、より効率的な並列実行の為の性能チューニングが可能になる。具体的には、共用資源の増減や、各業務処理プログラム３２の各プロセス１２への割当の適正変更などが可能となる。
【００５３】
業務処理プログラム３２によって生じる処理時間差が高精度で測定できる理由は、当該プログラム実行後の通信前に、呼び出された測定プログラム４１内で、プロセス１２間同期をとって、同期待ち時間を測定するからである。
【００５４】
この測定により、プロセス１２の処理時間に含まれていた通信処理に依存して発生する通信待ち時間を測定値から排除して、業務処理プログラム３２の処理時間差の高精度な測定が出来る。
【００５５】
第２の効果は、業務処理プログラム３２によって生じる処理時間差を容易に測定できることである。その理由は、同期および同期待ち時間の測定手段を通信ライブラリ４０にプログラム部品として組み込んだからである。分散並列アプリケーション３０の測定用の実行形式ファイルが再リンクのみで作成可能となり、ソール修正および再コンパイルが不要になるからである。
【００５６】
本発明の第２実施形態は、以下の通りである。先ず、本実施形態では、ＯＳが分散並列アプリケーション３０を起動するときに、時計１３を読み出して、図示せぬ開始時刻格納域に格納する。
【００５７】
そして、最後に同期したプロセス１２で実行される測定プログラム４１が、通信の前に時計１３を読み出し、開始時刻格納域の時刻からの経過時間を算出する。そして同プログラムは、この算出値をプロファイル格納域２０に追加出力する（図５のＳ５９に追加）。
【００５８】
この算出された経過時間は、分散並列アプリケーション３０で最初に実行されたユーザ手続き３１について、最も処理時間を要したプロセス１２の実行時間を示すことになる。
【００５９】
本実施形態では、各プロセス１２の実行時間のばらつきを把握して、より適切な性能チューニングが可能となる。その理由は、この実行時間と、各プロセス１２の同期待ち時間から、各プロセス１２の実行時間を算出できるからである。
【００６０】
図９は、本実施形態の測定プログラム４１がプロファイル格納域２０に出力した測定値を例示する。この例では、Precess0、1、2の業務処理プログラム３２の実行時間が、各々、４．５秒、１．６秒、１３．０秒等と把握できる。
【図面の簡単な説明】
【００６１】
【図１】測定装置の全体構成を示す図である。
【図２】分散並列アプリケーションの構成を示す図である。
【図３】分散並列アプリケーションの実行の様子を示す図である。
【図４】同期表の構成を示す図である。
【図５】測定プログラムのフローチャートである。
【図６】測定プログラムの通信処理のフローチャートである。
【図７】測定結果を示す図である。
【図８】測定プログラムの構成を示す図である。
【図９】第２の実施形態の測定結果を示す図である。
【符号の説明】
【００６２】
１０    測定装置
１１    プロセッサ
１２    プロセス
１３    時計
１５    記憶装置
１６    入出力装置
２０    プロファイル格納域
３０    分散並列アプリケーション
３１    ユーザ手続き
３２    業務処理プログラム
４０    通信ライブラリ
４１    測定プログラム
４２    通信プログラム
５０    同期表
５１    親ユーザ手続きID
５２    同期プロセスID
５３    同期状態
５４    待ち開始時刻
【図１】
2009059316.tif 000003
【図２】
2009059316.tif 000004
【図３】
2009059316.tif 000005
【図４】
2009059316.tif 000006
【図５】
2009059316.tif 000007
【図６】
2009059316.tif 000008
【図７】
2009059316.tif 000009
【図８】
2009059316.tif 000010
【図９】
2009059316.tif 000011