JP5392820B2 - 性能評価モデリングのための関数選択手法 - Google Patents

性能評価モデリングのための関数選択手法 Download PDF

Info

Publication number
JP5392820B2
JP5392820B2 JP2009039904A JP2009039904A JP5392820B2 JP 5392820 B2 JP5392820 B2 JP 5392820B2 JP 2009039904 A JP2009039904 A JP 2009039904A JP 2009039904 A JP2009039904 A JP 2009039904A JP 5392820 B2 JP5392820 B2 JP 5392820B2
Authority
JP
Japan
Prior art keywords
node
function
nodes
execution time
execution
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2009039904A
Other languages
English (en)
Other versions
JP2010198133A (ja
Inventor
康一 小野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2009039904A priority Critical patent/JP5392820B2/ja
Publication of JP2010198133A publication Critical patent/JP2010198133A/ja
Application granted granted Critical
Publication of JP5392820B2 publication Critical patent/JP5392820B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Description

本発明は、コンピュータ・システムの性能評価モデリングに関する。特にコンピュータ・システムのプログラム動作履歴(実行トレース)に基づいて性能評価により高く寄与する関数を自動的に選択する手法に関する。
従来、コンピュータ・システムの性能を評価する手法の分野において、アプリケーション・プログラム等の実行トレース(関数の呼び出し系列)に基づいて統一モデリング言語(Unified Modeling Language、UMLと略称)のシーケンス図を作成する手法や、イベントチャートを生成する技術が知られている。例えば、Rational Rose RealTime(登録商標)等のイベントチャートを生成するパッケージ製品が用いられている(非特許文献1)。
"Rational Rose Technical Developer"、[online]、日本IBM、平成20年11月13日、[平成20年11月21日検索]、インターネット、<URL:http://www-06.ibm.com/jp/software/rational/products/design/rosetech/>
しかし、従来技術又は関連技術の組み合わせにおいては、典型的には、評価対象のアプリケーションの実行トレースに含まれる個々の関数呼び出しが、逐一、メッセージ送受信に置き換えられる。更に、置き換えられたメッセージ送受信に基づいてシーケンス図等が出力される。一般的には、メッセージ送受信への置き換えの粒度は細かいので、業務用アプリケーション等の現実的なソフトウェア又はシステムの実行トレースを評価対象としてシーケンス図を生成すると、出力される図の規模は莫大なものとなる場合がある。このような巨大なシーケンス図からは、ユーザがシステム等の大まかな振る舞いを読み取ることは困難である。更に、システム性能に対するボトルネックをユーザが見出すことは困難であった。
システムの性能評価等において、対象とするシステムを分析レベルでモデリングするためには、システムの細かな振る舞いはシーケンス図から捨象し、抽象度の高い振る舞いを表現する必要がある。更に、分析レベルの実行可能モデルを作成するには、一つの実行トレースによる振る舞いを表現するのではなく、網羅的に取得した複数の実行トレースを全て包含する振る舞いを表現する必要がある。
発明者は、このような分析レベルでのモデリング手法を考案して別途出願した(特願2008−149498)。当該既出願に記載の方法においては、システムの細かな振る舞いを捨象した後の実行トレースのセットに基づいて、シーケンス図を得ることが可能である。
本発明は、前述の分析レベルでのモデリング手法の入力となり得る、システムの細かな振る舞いを捨象した実行トレースを作成する方法を提供することを目的とする。
本発明は上記課題に鑑み、以下のような解決手段を提供する。
本発明においては、評価対象のアプリケーション等の実行トレースから、一部の関数に限定して抜き出した実行トレースを得るための方法を提供し得る。本発明は、性能評価モデリングのための実行トレースに含まれる関数を選択するために、次のような選択基準を用い得る。
選択基準−1:選択した関数群の実行時間の総和が、個々の実行トレースについて、全体の所要時間に対して大半を占める(指定した比率以上になる)ようにする。すなわち、選択した関数群が実行時間に関して支配的であるようにする。
選択基準−2:実行時間以外に、メモリ使用量等に基づく選択基準も用いる。すなわち、所要時間又は使用メモリ量を定量的情報として扱い、当該定量的情報が所定の比率を超える条件で関数を選択する。定量的情報は比較可能な数値等の形態であればよく、形態に従って適切な単位を用い得る。
選択基準−3:選択する関数群の数には適切な範囲が設定される。選択する関数群が少なすぎると、例えば、メイン関数一つを選択すれば、形式的には全ての実行トレースに対して上記の選択基準が満たされるが、性能評価モデリングとしては意味がない。従って、トップレベルに近い関数は予め選択可能な対象から除外される必要がある。除外対象の関数を指定してもよい。これと逆に、選択する関数群が多すぎるとシステムの細かな振る舞いを捨象することにならない。選択した関数群の最大許容サイズを指定するか、又は関数呼び出しの最大深さを指定することにより、選択する関数群が過剰となることを防いでもよい。
選択基準−4:シーケンス図として意味がある表現になる必要がある。
選択基準−5:選択した関数のライフライン間は、Interaction(メッセージ送受)により連結可能である必要がある。すなわち、途中でInteractionが中断するような実行トレースを生成してはならない。このためには、ライフラインのオブジェクトを実装におけるモジュールに対応させ、モジュール間の呼び出し関係が実行トレースの中に必ず含まれるように関数群を決める必要がある。
本発明に係る方法は、前述の選択基準に基づく関数の選択のために、実行時間付きコールグラフ(CALL GRAPH)を用い得る。この実行時間付きコールグラフは、メイン関数を根とする木構造にあてはめることができ、次のような特徴を有する。
特徴−1:各ノードは関数の呼び出しを表す。
特徴−2:あるノード(関数)から呼び出される関数は、当該ノードの子ノードとして関連付ける。ここで、同一の子ノードの呼び出しが複数回あっても、一つの子ノードとして表す。
特徴−3:複数のノード(関数)から同じ子ノードへの呼び出しがある場合は、それぞれのノードに対する子ノードとして表す。
特徴−4:再帰的呼び出しがある場合は、再起的に呼び出されるノードは表現しない。すなわち、呼び出すノード(関数)の下に再帰的呼び出しを配置しない。
特徴−5:あるノード(関数)の全て呼び出しによる実行時間の総和を、対応するノードに関連付ける。
特徴−6:実行時間付きコールグラフは、網羅的に全ての関数呼び出しを表現しているか、あるいは、一部分を表現しているとする。
本発明に係る方法は、上述の実行時間付きコールグラフを、個々の実行トレースに対応して生成し得る。すなわち、実行時間付きコールグラフは実行トレースの個数だけ生成される。また、全てのグラフの形状は同一になる。すなわち、実行トレースによっては呼び出されない関数もあり得るが、その実行トレースに対応するグラフにおいては、その関数の呼び出し時間がゼロであったと見なすことにより、グラフの形状は同一になる。
本発明は、実行トレースを用いて性能評価を実施するシステム、システム開発環境、又はシステムモデリング技術等の、既存の技術と組み合わせることができ、そのように組み合わせた技術もまた、本発明の技術範囲に含まれる。同様に、本発明の技法を含む性能評価モデル又は性能評価システム等も、本発明の技術範囲に含まれる。更に、本発明の技法は、オブジェクトにアクセスするための諸段階を、FPGA(プログラム可能なゲートアレイ)、ASIC(特定用途向け集積回路)、これらと同等のハードウェアロジック素子、プログラム可能な集積回路、又はこれらの組み合わせが記憶し得るプログラムの形態、すなわちプログラム製品として提供し得る。具体的には、データ入出力、データバス、メモリバス、システムバス等を備えるカスタムLSI(大規模集積回路)の形態として、本発明に係る性能評価モデリングのための関数選択手段を提供でき、そのように集積回路に記憶されたプログラム製品の形態も、本発明の技術範囲に含まれる。
本発明によれば、実行時間付きコールグラフを用いて複数の関数の呼び出し関係を表現し、関数群の実行時間の総和が、個々の実行トレースについて、全体の所要時間に対して大半を占めるように、実行トレースに含める関数を選択することが可能になる。従って、本発明においては、システムの細かな振る舞いをシーケンス図から捨象し、抽象度の高い振る舞いを用いて、性能評価等の対象となるシステムを分析レベルでモデリングするための関数を選択することができる。また、本発明によれば、実行時間付きコールグラフを用いて、網羅的に取得した複数の実行トレースを全て包含するシステムの振る舞いを表現することが可能になる。従って、本発明の方法は、分析レベルでのモデリング手法のための入力になり得る、抽象度の高い実行トレースを得るための方法を提供することができる。これにより、本発明は、発明者による分析レベルでのモデリング手法のみならず、コンピュータ・システムの性能を評価するための既存の手法に用い得る入力データを生成することが可能になる。従って、例えば、当該既存の手法を含むシーケンス図又は状態遷移図等の作成方法を組み合わせることにより、抽象度の高いシーケンス図又は状態遷移図等を作成することが可能になる。
本発明の一実施形態に係る、関数選択方法の概略を表すフロー図である。 本発明の一実施形態に係る、実行時間付きコールグラフ100の例を示す図である。 本発明の一実施形態に係る、実行時間付きコールグラフ102の例を示す図である。 本発明の一実施形態に係る、モジュールを含む実行時間付きコールグラフ103の例を示す図である。 本発明の一実施形態に係る、異なるモジュールを含む実行時間付きコールグラフ104の例を示す図である。 本発明の一実施形態に係る、選択されたノードの情報を含む実行時間付きコールグラフ105の例を示す図である。 本発明の一実施形態に係る、同一モジュール内でのノード抽出のフロー図である。 本発明の一実施形態に係る、異なるモジュール内でのノード抽出のフロー図である。 本発明の一実施形態に係る、関数選択方法の実施装置のハードウェア構成を例示する図である。
以下、本発明の実施形態について式及び図を参照しながら説明する。なお、これらはあくまでも一例であって、本発明の技術的範囲はこれらに限られるものではない。
[関数選択方法の概略]
図1は、本発明の一実施形態に係る、関数選択方法の概略を表すフロー図である。本発明に係る関数選択方法は、コンピュータ装置等の実施手段を用いて、性能評価の対象であるシステムの動作から、所定の選択基準に従って当該システムの大まかな振る舞いを抽出する。一実施形態において、本発明に係る関数選択方法は、次のような諸段階を実施する。
ステップS110では、評価対象システムが観測される。評価対象システムは、性能評価の対象であるシステム又はプログラム等であり得る。
ステップS120では、実行トレースが生成される。当該実行トレースは、評価対象システムの動作に含まれる関数等のそれぞれが実行された記録であり得る。好適には、当該実行トレースは網羅的な記録である。典型的には、当該実行トレースは、関数等のそれぞれを実行の単位として、実行された関数を特定するための識別子又は関数名等の情報、関数等が実行された時刻、実行された時間の期間等の情報を適宜含み得る。
ステップS130では、観測対象関数を抽出する。すなわち、前段のステップS120において生成された実行トレースに含まれる関数の情報のうちから、評価対象システムの性能評価モデリングのための関数の情報が抽出される。本発明に係る関数選択方法においては、次のような選択基準を用い得る。
選択基準−1:選択した関数群の実行時間の総和が、個々の実行トレースについて、全体の所要時間に対して大半を占める(指定した比率以上になる)ようにする。すなわち、選択した関数群が実行時間に関して支配的であるようにする。
選択基準−2:実行時間以外に、メモリ使用量等に基づく選択基準も用いる。すなわち、所要時間又は使用メモリ量を定量的情報として扱い、当該定量的情報が所定の比率を超える条件で関数を選択する。定量的情報は比較可能な数値等の形態であればよく、形態に従って適切な単位を用い得る。例えば、所要時間は任意単位でもよく、実際の時間を秒単位で表してもよく、プロセッサ等の動作周期の数で表してもよく、全体の実行時間に対する比率で表してもよい。使用メモリ量は任意単位でもよく、バイト数で表してもよく、全体の記憶容量に対する比率で表してもよい。好適には、実行時間は[マイクロ秒単位]で表され、使用メモリ量は[メガバイト単位]で表される。
選択基準−3:選択する関数群の数には適切な範囲が設定される。選択する関数群が少なすぎると、例えば、メイン関数一つを選択すれば、形式的には全ての実行トレースに対して上記の選択基準が満たされるが、性能評価モデリングとしては意味がない。従って、トップレベルに近い関数は予め選択可能な対象から除外される必要がある。除外対象の関数を指定してもよい。これと逆に、選択する関数群が多すぎるとシステムの細かな振る舞いを捨象することにならない。選択した関数群の最大許容サイズを指定するか、又は関数呼び出しの最大深さを指定することにより、選択する関数群が過剰となることを防いでもよい。
選択基準−4:シーケンス図として意味がある表現になる必要がある。
選択基準−5:選択した関数のライフライン間は、Interaction(メッセージ送受)により連結可能である必要がある。すなわち、途中でInteractionが中断するような実行トレースを生成してはならない。このためには、ライフラインのオブジェクトを実装におけるモジュールに対応させ、モジュール間の呼び出し関係が実行トレースの中に必ず含まれるように関数群を決める必要がある。
ステップS140では、抽出した実行トレースを生成する。すなわち、前段のステップS130において抽出された、評価対象システムの性能評価モデリングのための関数の情報を用いて実行トレースが生成される。当該生成される実行トレースは、評価対象システムの細かな振る舞いを捨象し、大まかな振る舞いを含み得る。
このようにして、本発明に係る関数選択方法は、性能評価の対象であるシステムの動作から、所定の選択基準に従って当該システムの大まかな振る舞いを抽出することが可能になる。ステップS130における選択基準の詳細を含む本発明の動作の諸段階について、引き続き説明する。
[実行時間付きコールグラフの例]
図2は、本発明の一実施形態に係る、実行時間付きコールグラフ100の例を示す図である。図2に示す実行時間付きコールグラフ100は、木構造として表されている。当該木構造は、上位から下位に向かって、第1層181、第2層182、第3層183及び第4層184からなる。第1層181は木構造の根(ルート)であり得る。それぞれの層には木構造のノードが含まれる。それぞれのノードは、例えば性能評価の対象であるシステムの実行トレースにおいて識別された関数呼び出しであり得る。当該識別は、関数の名称又は識別子を含む任意の識別方法により識別される関数ごとに行われる。
本発明に係る実行時間付きコールグラフ100は、図1を用いて説明したステップS130の動作における選択基準に基づく関数の選択のために用いられる。実行時間付きコールグラフ100は、次のような特徴を有する。
特徴−1:各ノードは関数の呼び出しを表す。
特徴−2:あるノード(関数)から呼び出される関数は、当該ノードの子ノードとして関連付ける。ここで、同一の子ノードの呼び出しが複数回あっても、一つの子ノードとして表す。
特徴−3:複数のノード(関数)から同じ子ノードへの呼び出しがある場合は、それぞれのノードに対する子ノードとして表す。
特徴−4:再帰的呼び出しがある場合は、再起的に呼び出されるノードは表現しない。すなわち、呼び出すノード(関数)の下に再帰的呼び出しを配置しない。
特徴−5:あるノード(関数)の全て呼び出しによる実行時間の総和を、対応するノードに関連付ける。
特徴−6:実行時間付きコールグラフは、網羅的に全ての関数呼び出しを表現しているか、あるいは、一部分を表現しているとする。
図2に示す実行時間付きコールグラフ100は、最も上位の第1層181には根ノード110を含む。根ノード110は、例えば、アプリケーション・プログラム等に含まれるメイン関数(main)であり得る。図2の例においては、根ノード110に含まれるメイン関数に付随する時間が「74306(任意単位)」であることが示される。
図2に示す実行時間付きコールグラフ100は、第2層182にノード121及びノード122を含む。図2の例においては、ノード121は関数Aを含み、関数Aに付随する時間は「15539(任意単位)」であり、一方、ノード122は関数Bを含み、関数Bに付随する時間は「55676(任意単位)」であることが示される。これらのノード121及びノード122は、根ノード110から呼び出されるノードであり得る。他のノードについても同様であり、特に記載しない限り、各ノードには関数を識別するための情報及び付随する実行時間の情報が含まれる。
第2層182と同様に、他の第3層183及び第4層184についても、それぞれのノードは上位のノードから呼び出される。更に、下位に向かって呼び出すノードが関連付けられてもよい。
図2に示す実行時間付きコールグラフ100において、ノード141及びノード143は、いずれも関数Pを含むノードである。ノード141はノード133から呼び出され、ノード143はノード137から呼び出される。本発明に係る関数選択方法においては、複数のノード(関数)から呼び出される同一の子ノードは、それぞれのノードに対する子ノードとして表される。
一実施形態において、図2に示す実行時間付きコールグラフ100は、次のような規則に従う。
規則−1:一つの関数から呼び出される他の関数は、当該一つの関数に対する子ノードとして表される。同じ関数が複数回呼び出される場合も、同一の子ノードとして表される。
規則−2:異なる二つ以上の関数から呼び出される他の関数は、それぞれの子ノードとして表される。従って、第3層以下の層において、同一の名称又は識別子を有する関数が、異なる親ノードに対する子ノードとして表される場合がある。
規則−3:再帰的呼び出しがある場合は、再帰呼び出しされるノードを表さない。すなわち、再帰呼び出しする関数のノードの下には、再帰呼び出しされる関数のノードを配置しない。
規則−4:それぞれのノードには、名称又は識別子等により識別される関数の情報と、当該関数が全ての呼び出しにより実行された時間の長さ(実行時間)の情報を含む。
規則−5:実行時間付きコールグラフ100は、全ての関数呼び出しを含むか、又は一部分を含むものとする。
本発明に係る関数選択方法においては、前述のような規則に従って得られる実行時間付きコールグラフ100は、典型的には次のような性質を満たす。
性質−1:実行時間付きコールグラフ100は、非循環(acyclic)グラフであり得る。
性質−2:実行時間付きコールグラフ100に含まれる全てのノードについて、当該ノードに付随する実行時間は、その子ノードの実行時間の総和以上である。すなわち、実行時間は、次式で表される性質を有する。
Figure 0005392820
式中、n.timeは任意のノードnに付随する実行時間、n.subはノードnから呼び出されるノードの集合、sはノードnから呼び出されるノード、s.timeはノードsに付随する実行時間である。不等号は、本発明の実施形態に係る実行時間付きコールグラフ100が、必ずしも評価対象のシステムの全ての呼び出しを含むとは限らないことを表す。換言すれば、本発明に係る実行時間付きコールグラフ100においては、評価対象システムの細かな振る舞いを捨象し、大まかな振る舞いを情報として抽出し得る。
本発明に係る関数選択方法においては、このような実行時間付きコールグラフ100は、評価対象システム等の個々の実行トレースに対応して生成され得る。すなわち、実行時間付きコールグラフ100は、評価対象システム等の実行トレースの個数だけ生成され得る。また、このように生成される実行時間付きコールグラフ100の形は、いずれの実行トレースに対しても同一であり得る。実行トレースによっては呼び出されない関数もあり得るが、当該実行トレースに対応する実行時間付きコールグラフ100において、当該関数の呼出時間がゼロであったと見なすことにより、実行時間付きコールグラフ100の形は同一になり得る。
[関数選択方法の所定義]
表1に、本発明に係る関数選択方法において用い得る変数の名称と定義を例示する。
Figure 0005392820
表1に示すノードの個数の下限Kは、例えば、木構造に必ず含まれる根ノード1個を選択する自明な結果を避けるために用い得る。ノードの個数の上限Kは、例えば、木構造に含まれる全てのノードを選択する結果を避けるために用い得る。
一実施形態において、本発明に係る関数選択方法により生成される出力は、コールグラフを構成するノードの部分集合Sであり得る。当該出力は、次のような性質を有する。
性質−3:Sの要素数は、Kを超えてK未満であり得る。
性質−4:Sの各要素間には親子関係がない。
性質−5:Gに含まれる全てのグラフgについて、Sの全ノードの実行時間はT以上である。好適には、Sは十分に小さい集合であることが望ましいが、Sは最小の集合である必要はない。
[関数選択の手順]
本発明に係る関数選択方法においては、コールグラフの集合Gから、コールグラフの部分集合Sを生成するために、次のような手順を用い得る。
最初に、必須のノード集合Rを求める。必須のノード集合Rは、含まれるノードのいずれかが欠落する場合に、含まれるノードに付随する実行時間の総和が閾値Tを下回る集合であり得る。例えば、全てのグラフの実行時間を合計した一つの合計時間付きコールグラフGaを作成し、そのグラフGaに対して必須のノード集合Rを求めてもよい。このようにすることで、全てのグラフに対してそれぞれ必須のノード集合Rを求める場合に発生し得る手間を省いてもよい。
次いで、コールグラフの部分集合Sを生成するために、次の手順が実行され得る。
手順−1:コールグラフにおいて、必須のノード集合Rに含まれるノードの近傍にあり、かつ実行時間の数値が大きいノードの集合を、ノード候補集合αとする。
手順−2:ノードの個数の上限Kを超えない条件で、必須のノード集合Rにノード候補集合αを追加する。
手順−3:ノード候補集合αを追加した必須のノード集合Rが、前述の性質−3乃至5を満たす場合に、ノード候補集合αを追加した必須のノード集合を、コールグラフの部分集合Sとする。
このようにすることで、本発明に係る関数選択方法においては、前述の性質−3乃至5を満たすコールグラフの集合Sを生成することが可能になる。
[モジュール間の関係に基づく関数選択]
図3は、本発明の一実施形態に係る、実行時間付きコールグラフ102の例を示す図である。図3に示す実行時間付きコールグラフ102は、図2に示した実行時間付きコールグラフ100と同様に木構造として表され、上位から下位に向かって、第1層181、第2層182、第3層183、第4層184及び第5層185からなる。これに限定せず、本発明に係る関数選択方法においては、任意の数の層からなるコールグラフの各ノードに、それぞれの実行時間を関連付けて用いてもよい。
図3に例示する実行時間付きコールグラフ102は、例えば、第1層181に含まれるノード122は子ノードを有さないが、他のノード121、ノード123及びノード124は第2層182に含まれる子ノードを有するという特徴がある。更に下層の第2層182等についても同様であり、それぞれの層に含まれる個々のノードによっては、子ノードを有する場合もあり、有しない場合もある。
図4は、本発明の一実施形態に係る、モジュールを含む実行時間付きコールグラフ103の例を示す図である。図3と共通する箇所は説明を省略する。モジュールを含む実行時間付きコールグラフ103は、同一のモジュールに含まれるノードのうちから、本発明に係る関数選択方法において抽出されるノードを選択するために用い得る。
図4に例示する、モジュールを含む実行時間付きコールグラフ103には、モジュール201が設けられる。図4においては、モジュール201は、根ノード110、ノード121、及びノード122を含む。
まず、本発明の一実施形態に係るモジュール間の関係に基づく関数選択においては、同一モジュール内のノードから、関数選択に用いる特定のノードを親ノードとして選択する。すなわち、あるモジュールの範囲内を部分的な木構造と見なして、当該モジュールに含まれる個々のノードから、当該部分的な木構造の根ノードであり得るノードを選択する。図4に示すモジュール201においては、根ノード110はモジュール201内の親ノードであり、ノード121及びノード122はモジュール201内の子ノードであり得るので、根ノード110が選択される。
次いで、選択された親ノードの直下の層の子ノードのそれぞれに付随する実行時間を、値の大きな順に累積し、親ノードに付随する実行時間の閾値T以上になる最小個数の子ノードを抽出する。図4の例においては、ノード121、ノード122及びノード123を抽出することにより、これらのノードと関連付けられる関数の実行時間は、根ノード110と関連付けられるメイン関数の実行時間と閾値T(典型的には95%)との積を超え得る。従って、図4の例においては、ノード124を除き、第1層181に含まれる3個のノードが抽出され得る。
次いで、選択された親ノードの下層にあり、他のモジュールのノードに接続しているノードを除外する。図4の例においては、ノード121及びノード123が除外され得る。
このようにして、図4に例示するモジュールを含む実行時間付きコールグラフ103においては、同一のモジュール201に含まれる複数のノードのうちから、実行時間の合計が全実行時間の閾値を超える条件及び他のモジュールのノードに接続するものを除外する条件を用いて、関数選択のためのノードが抽出される。
図5は、本発明の一実施形態に係る、異なるモジュールを含む実行時間付きコールグラフ104の例を示す図である。図3及び図4と共通する箇所は説明を省略する。異なるモジュールを含む実行時間付きコールグラフ104は、複数のモジュールに含まれるノードのうちから、本発明に係る関数選択方法において抽出されるノードを選択するために用い得る。
図5に例示する、異なるモジュールを含む実行時間付きコールグラフ103には、モジュール201に加えて、モジュール202、モジュール203及びモジュール204が設けられる。モジュール202はノード131、ノード132及びノード140を含む。モジュール203はノード133及びノード134を含む。モジュール204はノード123、ノード124及びノード135乃至ノード139を含む。
まず、図4を用いてノードを抽出したモジュール201以外の他のモジュールに対して、あるモジュールから他の下位のモジュールの最上位にたどることのできるノードを選択する。例えば、ノード131、ノード133及びノード123が選択され得る(ノード124は、下位のモジュールの最上位ノードにたどることはできないため除外される)。それ以外のノードについて、あるモジュールのノードが1個も含まれていなければ、そのモジュール内の根ノードを選択する(木が複数である場合には複数の根ノード)が、図5に例示した各モジュールにおいては該当するものはない。
次いで、他の下位のモジュールに接続しているノードを除外し、残ったノードから、付随する実行時間の累積が、当該選択したノードの親ノードに付随する実行時間と閾値との積を超える条件で、選択したノードに付随する実行時間の値が大きいものを優先して抽出する。例えば、ノード132、ノード134、ノード137及びノード139から、付随する実行時間の値が最も大きいノード134が優先され得る。
このようにすることで、単一のモジュール201におけるノードの選択に加えて、モジュール201に隣り合う他のモジュール202、モジュール203及びモジュール204からノードを選択することができる。図5に示す各モジュールに含まれない他のノードに対しても、適宜モジュールを割り当て、上述の手順を用いることにより、ノード同士の関係及び実行時間の累積に基づいて、性能評価のための関数選択方法を実施することが可能になる。
図6は、本発明の一実施形態に係る、選択されたノードの情報を含む実行時間付きコールグラフ105の例を示す図である。選択されたノードの情報を含む実行時間付きコールグラフ105は、上述の図3乃至図5を用いて示した、ノード同士の関係及び実行時間の累積に基づく、性能評価のための関数選択方法の結果であり得る。
図6に示す選択されたノードの情報を含む実行時間付きコールグラフ105においては、ノードの選択においてノード同士の関係及び実行時間の累積を用いることを例示した。本発明に係る関数選択方法においては、これに限らず、図2に示した実行時間付きコールグラフ100が従う規則を満たす条件で生成されるコールグラフであれば、実行時間以外の情報を有するコールグラフに対して、システム性能評価のための関数選択を実施し得る。
例えば、各ノードに関連付けられる情報はメモリ使用量でもよく、本発明に係る関数選択方法はメモリ使用量付きコールグラフを用いて関数選択を実施してもよい。すなわち、全てのノードについて、当該ノードに付随する情報としてのメモリ使用量を、当該ノードの子ノードのメモリ使用量の総和以上として、本発明に係る関数選択方法を実施してもよい。このような条件は、次式のように表される。
Figure 0005392820
式中、n.memoryは任意のノードnに付随するメモリ使用量であり、s.memoryはノードsに付随するメモリ使用量である。
厳密には、メモリは割り当てられ、開放されるため、ある関数の中で割り当て及び開放が行われる場合があり、上式は必ずしも満たされない。しかし、メモリを割り当てる関数及び開放する関数が独立し、かつ、開放する関数が選択対象の範囲外であるなら、上式を満たすので、本発明に係る関数選択方法を用いることが可能となる。
図7は、本発明の一実施形態に係る、同一モジュール内でのノード抽出のフロー図である。図7に示すフロー図は、例えば図4に示したモジュールを含む実行時間付きコールグラフ103から、本発明に係る関数選択方法を用いてノードを抽出するために用い得る。
一実施形態において、図7に示す同一モジュール内でのノード抽出の諸段階は、次の動作を含む。
ステップS210:ノード集合Sを空集合とする。
ステップS220:開始ノードNsが属するモジュールMを求める。
ステップS230:Nsをルートノードとして、Mに属するノードのみで構成される部分木TrをコールグラフGから抽出する。
ステップS240:Trの各ノードnを深さ優先でたどる。
ステップS250:ノードnの時間にTを乗じ、n以下に要する時間の閾値Tpを求める。
ステップS260:ノードnの子ノードを時間の大きい順に並べる。
ステップS270:ノードnの子ノードcを1個取り出す。
ステップS280:cの子孫にM以外に属するノードが存在するかどうかを判定する。判定の結果が真である場合はステップS300に進み、偽である場合はステップS290に進む。
ステップS290:ノード集合Sに子ノードcを追加する。
ステップS300:変数tに子ノードcの時間を加算する。具体的には、変数tは個々の関数により費やされた時間の総和であり得る。
ステップS310:変数tが時間の閾値Tp以上であるかどうかを判定する。判定の結果が真である場合はステップS320に進み、偽である場合はステップS270に戻る。
ステップS320:全てのノードをたどったかどうかを判定する。判定の結果が真である場合はステップS330に進み、偽である場合はステップS240に戻る。
ステップS330:G、Tr、M、Tに基づいてノード集合Uを生成する。
ステップS340:ノード集合Sにノード集合Uを加える。
図8は、本発明の一実施形態に係る、異なるモジュール内でのノード抽出のフロー図である。図8に示すフロー図は、例えば図5に示した異なるモジュールを含む実行時間付きコールグラフ104から、本発明に係る関数選択方法を用いてノードを抽出するために用い得る。
一実施形態において、図8に示す異なるモジュール内でのノード抽出の諸段階は、次の動作を含む。
ステップS410:ノード集合Sを空集合とする。
ステップS420:Trのノード直下のノードで、Mに属さないノードの集合Snを求める。
ステップS430:Trのノードから呼ばれる、M以外のモジュールの集合Smを求める。
ステップS440:Trのノードから呼ばれ、かつ、Sm中のモジュールに属し、その子孫がそのノードの属するモジュール以外に属するノードを全てSに追加する。
ステップS450:Sn中のノードのうち、Sのノードが属するモジュールのいずれにも属さないものについて、Sn中のいずれのノードからも呼び出されないノードを全てSに追加する。
ステップS460:S中の全てのノードの親ノードの集合Spを求める。
ステップS470:ノード集合Uを空集合とする。
ステップS480:Spからノードpを1個取り出す。
ステップS490:全てのノードを取り出したかどうかを判定する。判定の結果が真である場合はステップS500に進み、偽である場合はステップS540に進む。
ステップS500:pの子ノードの集合C−child(p)を求める。
ステップS510:ノードpの時間にTを乗じて、p以下に要する時間の閾値Tpを求める。
ステップS520:Cに含まれるSとU中の全ノードの時間との総和tを求める。
ステップS530:t≧TpになるまでC中のノードcを時間の大きい順に取り出し、cをUに追加し、cの時間をtに加算する。このステップの後にはステップS480に戻る。
ステップS540:SにUを追加する。
ステップS550:Uに属する全てのノードNsについて、G、Ns、Tに基づくノード集合Vを生成し、VをSに追加する。
[関数選択装置のハードウェア構成]
図9は、本実施形態に係る、関数選択方法の実施装置のハードウェア構成を例示する図である。図9においては、関数選択装置を情報処理装置1000とし、そのハードウェア構成を例示する。以下は、コンピュータを典型とする情報処理装置として全般的な構成を説明するが、その環境に応じて必要最小限な構成を選択できることはいうまでもない。
情報処理装置1000は、CPU(Central Processing Unit)1010、バスライン1005、通信I/F1040、メインメモリ1050、BIOS(Basic Input Output System)1060、パラレルポート1080、USBポート1090、グラフィック・コントローラ1020、VRAM1024、音声プロセッサ1030、I/Oコントローラ1070、ならびにキーボード及びマウス・アダプタ1100等の入力手段を備える。I/Oコントローラ1070には、フレキシブル・ディスク(FD)ドライブ1072、ハードディスク1074、光ディスク・ドライブ1076、半導体メモリ1078等の記憶手段を接続することができる。
音声プロセッサ1030には、マイクロホン1036、増幅回路1032、及びスピーカ1034が接続される。また、グラフィック・コントローラ1020には、表示装置1022が接続されている。
BIOS1060は、情報処理装置1000の起動時にCPU1010が実行するブートプログラムや、情報処理装置1000のハードウェアに依存するプログラム等を格納する。FD(フレキシブル・ディスク)ドライブ1072は、フレキシブル・ディスク1071からプログラム又はデータを読み取り、I/Oコントローラ1070を介してメインメモリ1050又はハードディスク1074に提供する。図9には、情報処理装置1000の内部にハードディスク1074が含まれる例を示したが、バスライン1005又はI/Oコントローラ1070に外部機器接続用インタフェース(図示せず)を接続し、情報処理装置1000の外部にハードディスクを接続又は増設してもよい。
光ディスク・ドライブ1076としては、例えば、DVD−ROMドライブ、CD−ROMドライブ、DVD−RAMドライブ、BD(Blu−ray Disc)−ROMドライブ等を使用することができる。この際は各ドライブに対応した光ディスク1077を使用する必要がある。光ディスク・ドライブ1076は光ディスク1077からプログラム又はデータを読み取り、I/Oコントローラ1070を介してメインメモリ1050又はハードディスク1074に提供することもできる。
情報処理装置1000に提供されるコンピュータ・プログラムは、フレキシブル・ディスク1071、光ディスク1077、又はメモリーカード等の記録媒体に格納されて利用者によって提供される。このコンピュータ・プログラムは、I/Oコントローラ1070を介して、記録媒体から読み出され、又は通信I/F1040を介してダウンロードされることによって、情報処理装置1000にインストールされ実行される。コンピュータ・プログラムが情報処理装置に働きかけて行わせる動作は、既に説明した装置における動作と同一であるので省略する。
前述のコンピュータ・プログラムは、外部の記憶媒体に格納されてもよい。記憶媒体としてはフレキシブル・ディスク1071、光ディスク1077、又はメモリーカードの他に、MD等の光磁気記録媒体、テープ媒体を用いることができる。また、専用通信回線やインターネットに接続されたサーバシステムに設けたハードディスク又は光ディスク・ライブラリ等の記憶装置を記録媒体として使用し、通信回線を介してコンピュータ・プログラムを情報処理装置1000に提供してもよい。
以上の例は、情報処理装置1000について主に説明したが、コンピュータに、情報処理装置で説明した機能を有するプログラムをインストールして、そのコンピュータを情報処理装置として動作させることにより上記で説明した情報処理装置と同様な機能を実現することができる。
本装置は、ハードウェア、ソフトウェア、又はハードウェア及びソフトウェアの組み合わせとして実現可能である。ハードウェアとソフトウェアの組み合わせによる実施では、所定のプログラムを有するコンピュータ・システムでの実施が典型的な例として挙げられる。係る場合、該所定のプログラムが該コンピュータ・システムにロードされ実行されることにより、該プログラムは、コンピュータ・システムに本発明に係る処理を実行させる。このプログラムは、任意の言語、コード、又は表記によって表現可能な命令群から構成される。そのような命令群は、システムが特定の機能を直接実行すること、又は(1)他の言語、コード、もしくは表記への変換、(2)他の媒体への複製、のいずれか一方もしくは双方が行われた後に、実行することを可能にするものである。もちろん、本発明は、そのようなプログラム自体のみならず、プログラムを記録した媒体を含むプログラム製品もその範囲に含むものである。本発明の機能を実行するためのプログラムは、フレキシブル・ディスク、MO、CD−ROM、DVD、ハードディスク装置、ROM、RAM、フラッシュメモリ等の任意のコンピュータ可読媒体に格納することができる。係るプログラムは、コンピュータ可読媒体への格納のために、通信回線で接続する他のコンピュータ・システムからダウンロードしたり、他の媒体から複製したりすることができる。また、係るプログラムは、圧縮し、又は複数に分割して、単一又は複数の記録媒体に格納することもできる。
以上、本発明を実施形態に則して説明したが、本発明は上述した実施形態に限るものではない。また、本発明の実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、本発明の実施形態又は実施例に記載されたものに限定されるものではない。
100、102 実行時間付きコールグラフ
103 モジュールを含む実行時間付きコールグラフ
104 異なるモジュールを含む実行時間付きコールグラフ
105 選択されたノードの情報を含む実行時間付きコールグラフ
110 根ノード
120〜156 ノード
181〜185 第1層、第2層、第3層、第4層、第5層
201〜204 モジュール

Claims (8)

  1. コンピュータ・プログラムの動作履歴に含まれる実行された関数を抽出する方法であって、
    前記動作履歴を受け付けるステップと、
    前記受け付けた動作履歴に含まれる前記関数の呼び出し関係を用いて前記関数を木構造のノードに割り当てるステップと、
    実行時間又はメモリ使用量を定量的情報として扱い、前記関数に付随する前記定量的情報の合計が、抽出候補となっている関数全ての呼び出し元である関数に付随する前記定量的情報と所定の比率との積を超える条件で前記関数を抽出するステップと、を含む方法。
  2. 前記関数を抽出するステップは、前記関数の数が所定の下限を超え、かつ所定の上限を超えない条件で前記関数を抽出する、請求項1に記載の方法。
  3. 更に、前記抽出した前記関数を用いて実行トレースを生成するステップを含む、請求項1に記載の方法。
  4. 前記木構造のノードに割り当てるステップは、更に、前記関数と対応する前記定量的情報を、前記関数に関連付ける、請求項1に記載の方法。
  5. 更に、前記木構造のノードに含まれ、親ノード及び子ノードの関係を有するノードを含む部分的な木構造に対して、
    前記部分的な木構造に含まれる子ノードに付随する前記定量的情報を値の大きな順に累積するステップと、
    前記累積した前記定量的情報が、前記部分的な木構造に含まれる前記親ノードに付随する前記定量的情報と所定の比率との積を超える条件で、前記子ノードを抽出するステップと、
    前記部分的な木構造以外の木構造のノードに接続している前記子ノードを除外するステップと、を含む、請求項1に記載の方法。
  6. 更に、前記木構造のノードに含まれ、親ノード及び子ノードの関係を有するノードを含み、互いに排他的な複数の部分的な木構造に対して、
    ある部分的な木構造から、下位の他の部分的な木構造の親ノードにたどり得るノードを選択する第1選択ステップと、
    前記第1選択ステップにより選択されないノードから、前記複数の部分的な木構造ごとに、前記第1選択ステップにより選択されたノードが何もない部分的な木構造に含まれるノードを選択する第2選択ステップと、
    前記第1選択ステップにより選択されないノードから、前記選択されないノードに付随する前記定量的情報の合計が、前記部分的な木構造に含まれる前記親ノードに付随する前記定量的情報と所定の比率との積を超える条件で、前記選択されないノードを抽出するステップと、を含む、請求項1に記載の方法。
  7. コンピュータ・プログラムの動作履歴に含まれる実行された関数を抽出する方法であって、
    前記動作履歴を受け付けるステップと、
    前記受け付けた動作履歴に含まれる前記関数の呼び出し関係を用いて前記関数を木構造のノードに割り当てるステップと、
    前記関数に付随する前記関数の実行時間又はメモリ使用量の合計が、抽出候補となっている関数全ての呼び出し元である関数に付随する実行時間又はメモリ使用量と所定の比率との積を超える条件及び前記関数の数が所定の下限を超えかつ所定の上限を超えない条件に従って前記関数を抽出するステップと、
    前記抽出した前記関数を用いて実行トレースを生成するステップと、を含む、
    実行された関数を抽出する方法。
  8. 請求項1から7のいずれかに記載の方法の各ステップを、コンピュータを用いて実行するためのコンピュータ・プログラム。
JP2009039904A 2009-02-23 2009-02-23 性能評価モデリングのための関数選択手法 Expired - Fee Related JP5392820B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009039904A JP5392820B2 (ja) 2009-02-23 2009-02-23 性能評価モデリングのための関数選択手法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009039904A JP5392820B2 (ja) 2009-02-23 2009-02-23 性能評価モデリングのための関数選択手法

Publications (2)

Publication Number Publication Date
JP2010198133A JP2010198133A (ja) 2010-09-09
JP5392820B2 true JP5392820B2 (ja) 2014-01-22

Family

ID=42822828

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009039904A Expired - Fee Related JP5392820B2 (ja) 2009-02-23 2009-02-23 性能評価モデリングのための関数選択手法

Country Status (1)

Country Link
JP (1) JP5392820B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8938729B2 (en) * 2010-10-12 2015-01-20 Ca, Inc. Two pass automated application instrumentation
WO2012056569A1 (ja) * 2010-10-29 2012-05-03 株式会社日立製作所 性能測定方法、性能測定装置、及び、性能測定プログラム
US20140109070A1 (en) * 2012-10-11 2014-04-17 Tata Consultancy Services Limited System and method for configurable entry points generation and aiding validation in a software application
JP6437396B2 (ja) * 2015-08-20 2018-12-12 株式会社東芝 トレース情報管理システム、方法、及びプログラム

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07200368A (ja) * 1993-12-29 1995-08-04 Nec Corp モジュール単位の性能情報管理システム
US6002872A (en) * 1998-03-31 1999-12-14 International Machines Corporation Method and apparatus for structured profiling of data processing systems and applications
JPH11194935A (ja) * 1998-01-05 1999-07-21 Nec Commun Syst Ltd ソフトウェア構造解析システム
JP2006018477A (ja) * 2004-06-30 2006-01-19 Canon Software Inc シーケンス情報生成装置およびシーケンス情報生成方法およびプログラムおよび記録媒体
JPWO2008096632A1 (ja) * 2007-02-05 2010-05-20 日本電気株式会社 オブジェクト図表示装置、オブジェクト図表示方法、プログラム、及びコンピュータ読み取り可能な記録媒体

Also Published As

Publication number Publication date
JP2010198133A (ja) 2010-09-09

Similar Documents

Publication Publication Date Title
JP5629239B2 (ja) ソフトウェアの動作をテストする装置及び方法
US9208059B2 (en) ETL debugger
JP4736713B2 (ja) プロジェクトメンバーの選定を支援するシステムと方法
JP5708495B2 (ja) 辞書作成装置、単語収集方法、及び、プログラム
JP2005173788A (ja) オートノミック・コンピューティングシステム、実行環境制御方法及びプログラム
JP5392820B2 (ja) 性能評価モデリングのための関数選択手法
JP2019021232A (ja) 情報処理装置、情報処理方法および情報処理プログラム
JP6715420B2 (ja) データ量圧縮方法、装置、プログラム及びicチップ
JP2019530121A (ja) データ統合ジョブ変換
JP6309795B2 (ja) 情報処理装置、情報処理方法およびプログラム
CN111414619A (zh) 一种数据安全检测方法、装置、设备及可读存储介质
CN116560984A (zh) 一种基于调用依赖图的测试用例聚类分组方法
JP6536580B2 (ja) 文集合抽出システム、方法およびプログラム
WO2017028744A1 (zh) 一种用于确定待部署资源的方法和装置
CN104981775B (zh) 在Web服务的功能测试中提供上下文的方法、系统和介质
CN110597572B (zh) 一种服务调用关系分析方法和计算机系统
JPWO2012073333A1 (ja) 分析支援装置、分析支援方法、及び分析支援プログラム
JP2011159202A (ja) テスト項目生成方法及び装置及びプログラム
JP6580535B2 (ja) 開発支援システム及び方法
JP7196757B2 (ja) 分析支援プログラム、分析支援方法、分析支援装置および分析支援システム
JP6280859B2 (ja) 行動ネットワーク情報抽出装置、行動ネットワーク情報抽出方法及び行動ネットワーク情報抽出プログラム
JPWO2015182559A1 (ja) 情報分析システム、情報分析方法及び情報分析プログラム
JP6040138B2 (ja) 文書分類装置、文書分類方法および文書分類プログラム
JPWO2014054233A1 (ja) 情報システムの性能評価装置、方法およびプログラム
JP5605233B2 (ja) 解析装置、解析プログラム及び解析方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120111

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130709

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130710

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130830

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130924

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20130925

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131010

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees