説明

解析装置、解析方法および解析プログラム

【課題】改善されたサンプリング方式を提供すること。
【解決手段】解析装置30は、プロセッサ11〜14から、プロセッサが実行中のプロセスと他のプロセスとの通信について、他のプロセスとの間の通信の際の自プロセスの待機時間をサンプリングしたサンプリングデータを取得する。サンプリングデータを取得した解析装置30は、複数のプロセスの各々について、他のプロセスとの間の自プロセスの待機時間の合計と、他のプロセスと自プロセスとの間の通信の際の他のプロセスの待機時間の合計を求め、その結果を解析して複数のプロセスに対する処理の配分状態を評価する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、解析装置、解析方法および解析プログラムに関する。
【背景技術】
【0002】
近年、複数のプロセッサをインターコネクト装置(Interconnect)を用いて接続したシステムである分散メモリ型マルチプロセッサが開発されている。分散メモリ型マルチプロセッサは、各プロセッサにそれぞれプロセスを割り当て、プロセス間でMPI(The Message Passing Interface Standard)などの通信ライブラリを使って相互に通信することで、全体の分散並列処理を行う。
【0003】
かかる分散並列処理では、各プロセスに負荷を適切に配分することで性能の向上が図られる。このため、分散メモリ型マルチプロセッサ並列計算機で動作するアプリケーションプログラム(分散並列処理プログラム)は、性能特性指標の項目として、負荷バランスの均一性を有する。この負荷バランスの均一性を簡易かつ精密に観測し、プログラムの性能特性を正確に分析することが期待される。
【0004】
分散並列処理プログラムの各プロセスは、それぞれ計算処理を行い、その後、相互に通信処理を行う。通信処理では、通信相手の計算処理が終わっていない場合には通信待ちが発生する。したがって、負荷バランスの均一性を測定するためには、通信待ちの発生状況を把握することが有効である。
【0005】
プログラムの性能分析手法としては、トレースログ方式やサンプリング方式が知られている。トレースログ方式は、プログラム実行時に、各種イベントが発生する度に時刻等の付随する情報とともにイベントの発生をログに出力する。そして、プログラムの走行後、ログを解析することで、各種性能分析を行う手法である。トレースログ方式は、各種イベントの発生時刻や回数を正確に記録することができる点が長所であるが、出力されるログの量が膨大であり、長時間にわたるプログラム実行を分析することができない。また、ログの出力自体が性能特性に影響する場合がある。
【0006】
サンプリング方式では、プログラム実行時に、一定の時間間隔ごとにプログラムの走行状況等が確認され、記録される。そして、プログラムの走行後、記録を統計的に解析することで各種性能分析がなされる。サンプリング方式は、トレースログ方式に比して記録の量を抑えることができ、長時間にわたるプログラム実行を分析することができる。また、外乱が少ないため、性能特性への影響も少ない。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開平5−250339号公報
【特許文献2】特開平6−59944号公報
【特許文献3】特開2004−341750号公報
【特許文献4】特開平6−83608号公報
【特許文献5】特開2007−207173号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
しかしながら、サンプリング方式では、各種イベントの発生時刻や回数を正確に知ることができない。従って、従来のサンプリング方式によるプログラムの性能分析では、通信待ち状況を悪化させている原因の特定も難しい。
【0009】
そこで、1つの側面では、本発明は、改善されたサンプリング方式を提供することを目的とする。
【課題を解決するための手段】
【0010】
1つの案では、解析装置、解析方法および解析プログラムは、分散並列処理される複数のプロセスの各々について、他のプロセスとの間の通信の際の自プロセスの待機時間をサンプリングしたサンプリングデータを取得し、サンプリングデータに基づいて、複数のプロセスの各々について、他のプロセスとの間の自プロセスの待機時間の合計と、他のプロセスと自プロセスとの間の通信の際の他のプロセスの待機時間の合計を求め、その結果を解析して複数のプロセスに対する処理の配分状態を評価する。
【発明の効果】
【0011】
本発明によれば、改善されたサンプリング方式を提供することができる。
【図面の簡単な説明】
【0012】
【図1】図1は、実施例に係る分散メモリ型マルチプロセッサ並列計算機の構成図である。
【図2】図2は、プロセス間の通信についての説明図である。
【図3】図3は、分散プロセスの処理についての説明図である。
【図4】図4は、サンプリングデータの比較例の説明図である。
【図5】図5は、サンプリングデータD0に対応する処理状態の説明図である。
【図6】図6は、プロセッサ11〜14における処理動作を説明するフローチャートである。
【図7】図7は、解析装置30の処理動作を説明するフローチャートである。
【図8】図8は、集計データD2の具体例の説明図である。
【図9】図9は、解析部33による解析についての説明図である。
【図10】図10は、関数ごとの評価を行う場合のプロセッサ11〜14における処理動作を説明するフローチャートである。
【図11】図11は、サンプリング(S600)の詳細について説明するフローチャートである。
【図12】図12は、関数について評価する場合の解析装置30の処理動作を説明するフローチャートである。
【図13】図13は、待ち状況マトリクス、関数毎マトリクス、集計マトリクスの具体例の説明図である。
【図14】図14は、集計マトリクスからの評価と修正指針の作成についての説明図である。
【発明を実施するための形態】
【0013】
以下に、本願の開示する解析装置、解析方法および解析プログラムを図面に基づいて詳細に説明する。なお、以下の具体的な実施例に本発明を限定するものではない。
【実施例】
【0014】
[システムの構成]
図1は、実施例に係る分散メモリ型マルチプロセッサ並列計算機の構成図である。図1に示した例では、プロセッサ11〜14がインターコネクト装置(interconnect)21に接続され、プロセッサ11〜14はインターコネクト装置21を介して相互に通信可能である。
【0015】
プロセッサ11〜14は、それぞれが1または複数のプロセスを実行する。図1に示した例では、プロセッサ11がアプリケーションプロセスPa1を実行し、プロセッサ12がアプリケーションプロセスPa2を実行している。同様に、プロセッサ13がアプリケーションプロセスPa3を実行し、プロセッサ14がアプリケーションプロセスPa4を実行している。
【0016】
アプリケーションプロセスPa1〜Pa4は、アプリケーションプログラムのプロセスを分散して割り当てたプロセスであり、プロセッサ11〜14によって並列して処理される。プロセッサ11〜14は、自らに配分されたプロセスを計算処理した後、インターコネクト装置21を介して通信し、処理を同期する。
【0017】
図2は、プロセス間の通信についての説明図である。図2に示した例では、プロセスPa1において、プロセスPa2に対する送信処理MPI_Sendが発生している。プロセスPa2は、プロセスPa1からの通信を受信処理MPI_Recvによって受信する。その後、同様に、プロセスPa2において、プロセスPa1に対する送信処理MPI_Sendが発生し、プロセスPa1は受信処理MPI_Recvによって受信をおこなっている。さらに、プロセスPa1とプロセスPa2でMPI_Barrierによる同期を行っている。
【0018】
図3は、分散プロセスの処理についての説明図である。図3に示した例では、プロセスPa1が自らに割り当てられた処理を80msかけて計算した後、20msの通信処理で同期している。これに対し、プロセスPa2は、自らに割り当てられた計算処理を40msで終了し、プロセスPa1の計算処理終了を待つ通信待ち状態が40ms発生している。
【0019】
同様に、プロセスPa3は、自らに割り当てられた計算処理を20msで終了し、プロセスPa1の計算処理終了を待つ通信待ち状態が60ms発生している。また、プロセスPa4は、自らに割り当てられた計算処理を60msで終了し、プロセスPa1の計算処理終了を待つ通信待ち状態が20ms発生している。
【0020】
図3に示した例では、プロセスPa1の計算処理が重いために、プロセスPa2〜Pa4が待たされる状態となっている。このため、プロセスPa1に割り当てていた処理を他のプロセスに割り当てることとすれば、負荷バランスを向上することができる。
【0021】
図4は、サンプリングデータの比較例の説明図である。図4に示したように、分散したプロセスPa1〜Pa4からサンプリングによって取得したサンプリングデータD0は、各プロセスの計算処理コスト、通信待ちコスト、通信処理コストを取得している。
【0022】
このサンプリングデータD0から、各プロセスが計算、通信待ち、通信処理にどれだけの時間を割いたかを知ることができる。図4に示した例では、プロセスPa3の計算処理コストが他のプロセスに比して高いため、プロセスPa3が各プロセスの通信待ち状況を乱していると考えることができる。しかし、プロセスPa3も通信待ちコストを持っており、他のプロセスの計算終了を待っていることから、他のプロセスによって処理が遅らさせている可能性もある。
【0023】
図5は、サンプリングデータD0に対応する処理状態の説明図である。図5に示した例では、1マスがサンプリングデータD0のコスト10に対応している。図5に示したように、同期タイミングt1までの間、プロセスPa4はコスト10の計算処理を実行し、コスト50の通信待ちをしている。同様に、同期タイミングt1までの間、プロセスPa1はコスト50の計算処理を実行し、コスト10の通信待ちをしている。また、同期タイミングt1までの間、プロセスPa2はコスト40の計算処理を実行し、コスト20の通信待ちをしており、プロセスPa3はコスト60の計算処理を実行している。
【0024】
同期タイミングt1から同期タイミングt2までの間、プロセスPa1〜Pa3は、コスト10の計算処理を実行し、コスト30の通信待ちをしている。そして、同期タイミングt1から同期タイミングt2までの間、プロセスPa4は、コスト40の計算処理を実行している。
【0025】
すなわち、図5に示した例では、プロセスPa3の計算コストが高く、全体の通信待ち状況を悪化させているものの、最も通信待ち状況に悪影響を与えているのは同期タイミングt1から同期タイミングt2までのプロセスPa4である。このように、負荷がばらつく、すなわち計算処理の量にブレがあることで、他のプロセスを待たせるプロセスが存在した場合、サンプリングデータD0が有する計算処理コスト、通信待ちコスト、通信処理コストのデータから通信待ち状況を正確に評価することができない。
【0026】
そこで、図1に示した解析装置30は、分散並列処理される複数のプロセスの各々について、他のプロセスとの間の通信の際の自プロセスの待機時間をサンプリングしたサンプリングデータを取得する。解析装置30は、取得したサンプリングデータに基づいて、複数のプロセスの各々について、他のプロセスとの間の自プロセスの待機時間の合計と、他のプロセスと自プロセスとの間の通信の際の他のプロセスの待機時間、すなわち被待機時間の合計を求める集計を行い、集計結果を解析して複数のプロセスに対する処理の配分状態を評価する。
【0027】
このため、図1に示したように、解析装置30は、インターコネクト装置21と接続し、インターコネクト装置21を介してプロセッサ11〜14と通信する。なお、図1では、解析装置30を一つの装置として実施する場合の構成を示したが、例えば、プロセッサ11〜14のいずれかが解析装置30の機能を実現するプログラムを実行してもよいし、解析用のプロセッサを別途接続してもよい。
【0028】
プロセッサ11は、アプリケーションプロセスPa1に加えてサンプリングスレッドPs1を実行する。同様に、プロセッサ12は、アプリケーションプロセスPa2に加えてサンプリングスレッドPs2を実行する。また、プロセッサ13はアプリケーションプロセスPa3に加えてサンプリングスレッドPs3を実行し、プロセッサ14はアプリケーションプロセスPa4に加えてサンプリングスレッドPs4を実行する。
【0029】
サンプリングスレッドPs1は、一定の時間間隔ごとにアプリケーションプロセスPa1の走行状況等を確認して記録する。この時、サンプリングスレッドPs1は、アプリケーションプロセスPa1が通信待ち状態に入ってから通信待ち状態が解除されるまでの間の時間コストを、通信相手ごとに積算してサンプリングデータD1aを作成する。
【0030】
図1に示した例では、サンプリングデータD1aは、送信先プロセスPa2に対する通信待ちコストが0、送信先プロセスPa3に対する通信待ちコストが10、送信先プロセスPa4に対する通信待ちコストが30であったことを示している。
【0031】
同様に、サンプリングスレッドPs2は、一定の時間間隔ごとにアプリケーションプロセスPa2の走行状況等を確認し、通信待ち状態に入ってから通信待ち状態が解除されるまでの間の時間コストを、通信相手ごとに積算してサンプリングデータD1bを作成する。
【0032】
また、サンプリングスレッドPs3は、一定の時間間隔ごとにアプリケーションプロセスPa3の走行状況等を確認し、通信待ち状態に入ってから通信待ち状態が解除されるまでの間の時間コストを、通信相手ごとに積算してサンプリングデータD1cを作成する。
【0033】
そして、サンプリングスレッドPs4は、一定の時間間隔ごとにアプリケーションプロセスPa4の走行状況等を確認し、通信待ち状態に入ってから通信待ち状態が解除されるまでの間の時間コストを、通信相手ごとに積算してサンプリングデータD1dを作成する。
【0034】
解析装置30は、データ取得部31、データ集計部32および解析部33を有する。データ取得部31は、サンプリングスレッドPs1〜Ps4からサンプリングデータD1a,D1b,D1c,D1dを取得する。
【0035】
データ集計部32は、サンプリングデータD1a,D1b,D1c,D1dを集計した集計データD2を作成する。この集計データD2から、プロセスPa1〜Pa4の各々について、他のプロセスとの通信を待機した待機時間と、他のプロセスに待機させた被待機時間とを求めることができる。
【0036】
解析部33は、集計データD2を解析してプロセスPa1〜Pa4に対する処理の配分状態を評価し、評価結果を出力する処理部である。
【0037】
[処理動作]
図6は、プロセッサ11〜14における処理動作を説明するフローチャートである。以下の説明では、プロセッサ11を例に説明を行なうが、プロセッサ12〜14についても同様である。
【0038】
まず、プロセッサ11は、アプリケーションプログラムから割り当てられたプロセスPa1を実行する。このプロセスPa1は、処理の開始時にサンプリングスレッドPs1を生成する(S101)。プロセッサ11は、プロセスPa1において計算処理を実行する(S102)とともに、サンプリングスレッドPs1によるサンプリングを実行する(S201)。
【0039】
プロセッサ11は、計算処理(S102)が終了した後、サンプリングスレッドPs1の消去を待ち(S103)、サンプリングデータD1aを出力して(S104)、処理を終了する。
【0040】
図7は、解析装置30の処理動作を説明するフローチャートである。図7に示したように、まず、データ取得部31がサンプリングデータD1a,D1b,D1c,D1dを取得し(S301)、データ集計部32は、サンプリングデータD1a,D1b,D1c,D1dを集計する(S302)。そして、解析部33は、集計データD2を解析して評価結果を出力し(S303)、処理を終了する。
【0041】
[データと処理の具体例]
図8は、集計データD2の具体例の説明図である。図8に示した集計データD2は、受信側のプロセスと送信側のプロセスについて通信待ちコストを示している。具体的には、受信側のプロセス、すなわちサンプリングしたプロセスがプロセスPa1について、送信先プロセスPa2に対する通信待ちコストが0、送信先プロセスPa3に対する通信待ちコストが10、送信先プロセスPa4に対する通信待ちコストが30である。
【0042】
また、受信側のプロセスPa2について、送信先プロセスPa1に対する通信待ちコストが10、送信先プロセスPa3に対する通信待ちコストが20、送信先プロセスPa4に対する通信待ちコストが30である。
【0043】
同様に、受信側のプロセスPa3について、送信先プロセスPa1に対する通信待ちコストが0、送信先プロセスPa2に対する通信待ちコストが0、送信先プロセスPa4に対する通信待ちコストが30である。
【0044】
そして、受信側のプロセスPa4について、送信先プロセスPa1に対する通信待ちコストが40、送信先プロセスPa2に対する通信待ちコストが30、送信先プロセスPa3に対する通信待ちコストが50である。
【0045】
この集計データD2の行の合計は、そのプロセスが他のプロセスとの通信を待機した待機時間の合計であり、集計データD2の列の合計は他のプロセスに待機させた被待機時間の合計となる。
【0046】
すなわち、図8に示した例では、プロセスPa1の待機時間の合計は40、プロセスPa2の待機時間の合計は40、プロセスPa3の待機時間の合計は30、プロセスPa4の待機時間の合計は120である。また、プロセスPa1の被待機時間の合計は50、プロセスPa2の被待機時間の合計は30、プロセスPa3の被待機時間の合計は80、プロセスPa4の被待機時間の合計は90である。
【0047】
行の合計値、すなわち受信側方向(横方向)のコストの合計値は、自プロセスが通信待ちした延べ時間の合計であり、値が大きいものは計算処理が軽かったことを示している。図8の例では、プロセスPa4の待機時間が120であり、プロセスPa4の負荷が他のプロセスに比して低い状態にあったことを示している。
【0048】
列の合計値、すなわち送信側方向(縦方向)のコストの合計値は、自プロセスが他のプロセスに通信待ちさせた延べ時間の合計であり、値が多いものは処理が重かったことを示している。図8の例では、プロセスPa4の被待機時間の合計が90であり、プロセスPa4は、他のプロセスに比して負荷が高い状態にあったことを示している。また、次に負荷が高かったプロセスはプロセスPa3である。
【0049】
この待機時間と被待機時間を総合的に判断すると、プロセスPa4は、負荷が低い場合と高い場合とのブレが他のプロセスに比して大きく、通信待ち状況に改善の余地が大きいこと、プロセスPa3は、負荷が高いため通信待ち状況の改善の余地があることが判る。
【0050】
図9は、解析部33による解析についての説明図である。図9の評価テーブルD3に示したように、待機時間のコストと被待機時間のコストがともに低い場合(L_L)、そのプロセスの計算処理は適切で、通信待ちが少ない。また、相手を待たせることもない。したがって、改善は不要である。
【0051】
待機時間のコストが低く、被待機時間のコストが高い場合(L_H)、そのプロセスは計算処理が多く、通信待ちが少ない。また、相手を待たせることが多い。このため、改善が必要であり、仕事を減らすことが望ましい。
【0052】
待機時間のコストが高く、被待機時間のコストが低い場合(H_L)、そのプロセスは、計算処理が少なく、通信待ちが多い。そして、相手を待たせることが少ない。すなわち、計算処理を行っていない時間が多いため、改善が必要であり、仕事を増加することが望ましい。
【0053】
待機時間のコストと被待機時間のコストがともに高い場合(H_H)、そのプロセスは、通信待ちが多く、相手を待たせることも多い。そのため、改善が必要であり、仕事量のブレを減らすことが望ましい。
【0054】
このように、解析装置30は、プロセスの待機時間と被待機時間からプロセス単位で負荷バランス、すなわち処理の配分状態の均一性を精度よく評価し、改善の指針を出力することが出来る。
【0055】
[関数の評価]
また、解析装置30は、サンプリング時にユーザ関数ごとに待ち時間を積算させることで、関数について評価を行うことも出来る。図10は、関数ごとの評価を行う場合のプロセッサ11〜14における処理動作を説明するフローチャートである。以下の説明では、プロセッサ11を例に説明を行なうが、プロセッサ12〜14についても同様である。
【0056】
プロセッサ11は、通信待ち処理を開始した場合に、通信待ちに入った時刻Tstを記録し(S401)、受信処理を行う(S402)。そして、受信が終了し、通信待ちが解除された場合に時刻Tendを記録し(S403)、時刻Tendと時刻Tstの差分である待ち時間を送信元ごとの待ち状況マトリクスに加算する(S404)。
【0057】
また、プロセッサ11は、アプリケーションプログラムから割り当てられたプロセスPa1を実行する際に、プロセスPa1からサンプリングスレッドPs1を生成する(S501)。プロセッサ11は、プロセスPa1において計算処理を実行する(S502)とともに、サンプリングスレッドPs1によるサンプリングを実行する(S600)。
【0058】
プロセッサ11は、プロセスPa1の計算処理(S502)が終了した後、サンプリングスレッドPs1の消去を待ち(S503)、サンプリングデータD1aを出力して(S504)、処理を終了する。
【0059】
図11は、サンプリング(S600)の詳細について説明するフローチャートである。図11に示したように、プロセッサ11は、プロセスPa1からサンプリングを行う(S601)度に、待ち状況マトリクスを参照する(S602)。そして、サンプリングがヒットしたユーザ関数の関数毎マトリクスに加算し(S603)、待ち状況マトリクスをゼロクリアする(S604)。関数別のサンプリングには、一例としてcall-graphプロファイリングなどを用いればよい。
【0060】
図12は、関数について評価する場合の解析装置30の処理動作を説明するフローチャートである。図12に示したように、まず、データ取得部31がサンプリングデータを取得し(S701)、データ集計部32が集計する(S702)。解析部33は、ユーザ関数ごとに関数毎マトリクスを解析し、受信時に要した延べ時間や、受信させた時の延べ時間を求めて、集計マトリクスを作成し(S703)、解析レポートを出力する(S704)。
【0061】
[データと処理の具体例]
図13は、待ち状況マトリクス、関数毎マトリクス、集計マトリクスの具体例の説明図である。図13に示した待ち状況マトリクスD4は、プロセスPa4の待ち状況を示すデータである。マトリクスD4は、送信側のプロセスPa1との通信でコスト40の通信待ちを行い、送信側のプロセスPa2との通信でコスト30の通信待ちを行い、送信側のプロセスPa3との通信でコスト50の通信待ちを行ったことを示している。
【0062】
図13に示した関数毎マトリクスD5は、プロセスPa4の関数ごとの待ち状況を示すデータである。関数毎マトリクスD5は、関数c1について、送信側のプロセスPa1との通信でコスト300の通信待ちを行い、送信側のプロセスPa2との通信でコスト10の通信待ちを行い、送信側のプロセスPa3との通信でコスト100の通信待ちを行ったことを示している。
【0063】
同様に、関数毎マトリクスD5は、関数c2について、送信側のプロセスPa1との通信でコスト100、送信側のプロセスPa2との通信でコスト300、送信側のプロセスPa3との通信でコスト200の通信待ちを行ったことを示している。
【0064】
また、関数毎マトリクスD5は、関数c3について、送信側のプロセスPa1との通信でコスト10、送信側のプロセスPa2との通信でコスト30、送信側のプロセスPa3との通信でコスト300の通信待ちを行ったことを示している。
【0065】
また、関数毎マトリクスD5は、関数c4について、送信側のプロセスPa1との通信でコスト400、送信側のプロセスPa2との通信でコスト300、送信側のプロセスPa3との通信でコスト500の通信待ちを行ったことを示している。
【0066】
解析装置30は、この関数毎マトリクスを各プロセスから取得し、関数ごとに集計して集計マトリクスを作成する。図13に示した集計マトリクスD6は、関数c3についての集計結果を例示したものである。
【0067】
集計マトリクスD6は、受信側のプロセスPa1について、送信先プロセスPa2に対する通信待ちコストが0、送信先プロセスPa3に対する通信待ちコストが100、送信先プロセスPa4に対する通信待ちコストが300である。
【0068】
また、受信側のプロセスPa2について、送信先プロセスPa1に対する通信待ちコストが100、送信先プロセスPa3に対する通信待ちコストが200、送信先プロセスPa4に対する通信待ちコストが300である。
【0069】
同様に、受信側のプロセスPa3について、送信先プロセスPa1に対する通信待ちコストが0、送信先プロセスPa2に対する通信待ちコストが0、送信先プロセスPa4に対する通信待ちコストが300である。
【0070】
そして、受信側のプロセスPa4について、送信先プロセスPa1に対する通信待ちコストが10、送信先プロセスPa2に対する通信待ちコストが30、送信先プロセスPa3に対する通信待ちコストが300である。
【0071】
したがって、関数c3についてプロセスPa1の待機時間の合計、すなわち行の合計は400、プロセスPa2の待機時間の合計は600、プロセスPa3の待機時間の合計は300、プロセスPa4の待機時間の合計は340となる。また、プロセスPa1の被待機時間の合計、すなわち列の合計は110、プロセスPa2の被待機時間の合計は30、プロセスPa3の被待機時間の合計は600、プロセスPa4の被待機時間の合計は900となる。
【0072】
図14は、集計マトリクスからの評価と修正指針の作成についての説明図である。集計マトリクスD6の待機時間と被待機時間から、関数ごとのプロセス評価D7を求めることが出来る。プロセス評価D7は、各関数についてプロセスの待機時間の合計が平均よりも低く、被待機時間の合計が平均よりも低い場合にL_L、待機時間の合計が平均よりも低く、被待機時間の合計が平均よりも高い場合にL_H、待機時間の合計が平均よりも高く、被待機時間の合計が平均よりも低い場合にH_L、待機時間の合計が平均よりも高く、被待機時間の合計が平均よりも高い場合にH_Hの値を取る。
【0073】
関数c3の例では、待機時間の合計の平均値が(400+600+300+340)/4で410となる。プロセスPa1は、待機時間の合計が400、被待機時間の合計が110であるので、L_L、プロセスPa2は、待機時間の合計が600、被待機時間の合計が30であるので、H_Lとなる。また、プロセスPa3は、待機時間の合計が300、被待機時間の合計が600であるので、L_H、プロセスPa4は、待機時間の合計が340、被待機時間の合計が900であるので、L_Hとなる。
【0074】
同様に、プロセス評価D7は、関数c1について、プロセスPa1〜Pa4でH_Hの値をとる。プロセス評価D7は、関数c2について、プロセスPa1でH_L、プロセスPa2でL_L、プロセスPa3でH_L、プロセスPa4でL_Lの値をとる。そして、プロセス評価D7は、関数c4について、プロセスPa1とプロセスPa2でH_H、プロセスPa3とプロセスPa4でL_Lの値をとる。
【0075】
プロセス全体としては、プロセスPa1とプロセスPa2がH_L、プロセスPa3とプロセスPa4がH_Hの値をとる。
【0076】
このプロセス評価D7から、解析装置30は、プロセス修正指針D8を作成する。L_Lについては修正が不要であり、L_Hについては仕事の減少が望ましく、H_Lについては仕事の増加が望ましく、H_Hについては仕事量のブレの減少が望ましい。
【0077】
このため、プロセス修正指針D8は、関数c1について、プロセスPa1〜Pa4に対するブレの減少を提示し、関数c2について、プロセスPa1とプロセスPa3に対する仕事増を提示する。また、プロセス修正指針D8は、関数c3について、プロセスPa2に対する仕事増と、プロセスPa3とプロセスPa4に対する仕事減を提示し、関数c4について、プロセスPa1とプロセスPa2に対するブレの減少を提示する。
【0078】
そして、プロセス修正指針D8は、プロセスPa1とプロセスPa2の全体に対して仕事増を提示し、プロセスPa3とプロセスPa4の全体に対してブレの減少を提示する。
【0079】
上述してきたように、本実施例にかかる解析装置30は、プロセッサ11〜14から、分散並列処理される複数のプロセスの各々について、他のプロセスとの間の通信の際の自プロセスの待機時間をサンプリングしたサンプリングデータを取得する。サンプリングデータを取得した解析装置30は、複数のプロセスの各々について、他のプロセスとの間の自プロセスの待機時間の合計と、他のプロセスと自プロセスとの間の通信の際の他のプロセスの待機時間の合計を求め、その結果を解析して複数のプロセスに対する処理の配分状態を評価する。このため、解析装置30は、負荷バランスを精度よく評価し、もって分散並列処理プログラムの性能向上に寄与することができる。
【0080】
なお、本実施例はあくまで一例であり、構成及び動作は適宜変更して実施することができる。例えば、本実施例では、4つのプロセッサを有するシステムを例示して説明を行ったが、任意の数のプロセッサを有するシステムに適用可能である。
【符号の説明】
【0081】
11〜14 プロセッサ
21 インターコネクト装置
30 解析装置
31 データ取得部
32 データ集計部
33 解析部
Pa1〜Pa4 プロセス
Ps1〜Ps4 サンプリングスレッド
D1a,D1b,D1c,D1d サンプリングデータ
D2 集計データ
D3 評価テーブル
D4 待ち状況マトリクス
D5 関数毎マトリクス
D6 集計マトリクス
D7 プロセス評価
D8 プロセス修正指針

【特許請求の範囲】
【請求項1】
分散並列処理される複数のプロセスの各々について、他のプロセスとの間の通信の際の自プロセスの待機時間をサンプリングしたサンプリングデータを取得する取得部と、
前記サンプリングデータに基づいて、前記複数のプロセスの各々について、他のプロセスとの間の自プロセスの待機時間の合計と、他のプロセスと自プロセスとの間の通信の際の他のプロセスの待機時間の合計を求める集計部と、
前記集計部による集計結果を解析して前記複数のプロセスに対する処理の配分状態を評価する解析部と
を備えたことを特徴とする解析装置。
【請求項2】
前記集計部は、サンプリング時に実行中であった関数ごとに前記他のプロセスとの間の自プロセスの待機時間の合計と、他のプロセスと自プロセスとの間の通信の際の他のプロセスの待機時間の合計を求め、前記解析部は前記関数ごとに処理の配分状態を評価することを特徴とする請求項1に記載の解析装置。
【請求項3】
前記解析部は、
前記他のプロセスとの間の自プロセスの待機時間の合計が他のプロセスよりも小さく、且つ前記他のプロセスと自プロセスとの間の通信の際の他のプロセスの待機時間の合計が他のプロセスに対して大きいプロセスについて、処理の配分量を削減すべきであると評価し、
前記他のプロセスとの間の自プロセスの待機時間の合計が他のプロセスよりも大きく、且つ前記他のプロセスと自プロセスとの間の通信の際の他のプロセスの待機時間の合計が他のプロセスに対して小さいプロセスについて処理の配分量を増加すべきであると評価し、
前記他のプロセスとの間の自プロセスの待機時間の合計が他のプロセスよりも大きく、且つ前記他のプロセスと自プロセスとの間の通信の際の他のプロセスの待機時間の合計が他のプロセスに対して大きいプロセスについて処理のばらつきを抑制すべきであると評価することを特徴とする請求項1または2に記載の解析装置。
【請求項4】
分散並列処理される複数のプロセスの各々について、他のプロセスとの間の通信の際の自プロセスの待機時間をサンプリングしたサンプリングデータを取得するステップと、
前記サンプリングデータに基づいて、前記複数のプロセスの各々について、他のプロセスとの間の自プロセスの待機時間の合計と、他のプロセスと自プロセスとの間の通信の際の他のプロセスの待機時間の合計を求める集計ステップと、
前記集計ステップによる集計結果を解析して前記複数のプロセスに対する処理の配分状態を評価するステップと
を含んだことを特徴とする解析方法。
【請求項5】
分散並列処理される複数のプロセスの各々について、他のプロセスとの間の通信の際の自プロセスの待機時間をサンプリングしたサンプリングデータを取得する手順と、
前記サンプリングデータに基づいて、前記複数のプロセスの各々について、他のプロセスとの間の自プロセスの待機時間の合計と、他のプロセスと自プロセスとの間の通信の際の他のプロセスの待機時間の合計を求める集計手順と、
前記集計手順による集計結果を解析して前記複数のプロセスに対する処理の配分状態を評価する手順と
をコンピュータに実行させることを特徴とする解析プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate


【公開番号】特開2011−203994(P2011−203994A)
【公開日】平成23年10月13日(2011.10.13)
【国際特許分類】
【出願番号】特願2010−70504(P2010−70504)
【出願日】平成22年3月25日(2010.3.25)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】