JP2010129079A - 並行処理プロファイラを実装するシステム及び方法 - Google Patents

並行処理プロファイラを実装するシステム及び方法 Download PDF

Info

Publication number
JP2010129079A
JP2010129079A JP2009123371A JP2009123371A JP2010129079A JP 2010129079 A JP2010129079 A JP 2010129079A JP 2009123371 A JP2009123371 A JP 2009123371A JP 2009123371 A JP2009123371 A JP 2009123371A JP 2010129079 A JP2010129079 A JP 2010129079A
Authority
JP
Japan
Prior art keywords
computer
code
instrumentation
server
implemented method
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.)
Pending
Application number
JP2009123371A
Other languages
English (en)
Inventor
Samir A Zeort
サミル・エー・ゾルト
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.)
SAP SE
Original Assignee
SAP SE
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 SAP SE filed Critical SAP SE
Publication of JP2010129079A publication Critical patent/JP2010129079A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/815Virtual
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software

Abstract

【課題】一つの実施形態において、本発明は、ハードウェアクライアント−サーバ環境で実装されるコンピュータプログラムのボトルネックを測定するコンピュータ実装方法を含む。
【解決手段】方法は、ハードウェアクライアント−サーバ環境の測定をするために実行パラメータを定義することを含む。方法はまた、インストラメンテーションコードを含むためにコードブロックを修正することを含む。インストラメンテーションコードは、実行パラメータに関する。方法はまた、修正されたコードブロックをハードウェアクライアント−サーバ環境で実行することを含む。方法はまた、実行パラメータに関し、コードブロックを実行することから生じるインストラメンテーションデータを生成することを含む。方法はまた、生成されたインストラメンテーションデータを出力することを含む。
【選択図】図3

Description

本発明は、ボトルネックの測定に関し、具体的には、クライアント−サーバ環境のボトルネックを測定することに関する。
本明細書中で特に示す場合を除いて、このセクションで説明される手法は、本願の特許請求の範囲に対する先行技術ではなく、このセクションに包含されることによって従来技術であるとは認められない。
Java(登録商標)プログラミング言語は、シンプル、オブジェクト指向、分散、マルチスレッド、ダイナミック、アーキテクチャ中立、ポータブル、ハイパフォーマンス、ロバスト、及びセキュアの全てのバズワードによって特徴付けることができるハイレベル言語である。これらバズワードの各々に関する詳細は、James Gosling及びHenry McGiltonによる“The Java(登録商標) Language Environment”で見出される。
Java(登録商標)プログラミング言語において、ソースコードは、.java(登録商標)拡張子で終了するプレンテキストファイルに先ず書き込まれる。これらソースファイルはその後、java(登録商標)c等のJava(登録商標)コンパイラによって.classファイルへコンパイルされる。.classファイルは、物理プロセッサにネイティブなコードを含まず、代わりにバイトコードを含み、バイトコードは、Java(登録商標) Virtual Machine(Java(登録商標) VM)の機械言語である。ランチャツール(Java(登録商標).exe又はその他Java(登録商標)ランタイム環境)はその後、Java(登録商標) VMの場合にアプリケーションを動作する。
Java(登録商標) VMは、Java(登録商標)バイトコードをネイティブな命令に変換することによってアプリケーションを動作し、その命令は、コンピューティング装置の実際のオペレーティングシステム及びプロセッサに特有である。バイトコードがポータブルで設計される一方で、Java(登録商標) VMが実際のコンピューティング装置に特有なので、Java(登録商標) VMは、Java(登録商標)スタンダードと互換性を維持している各種タスクを実行するために修正されうる。
一般に、Java(登録商標)プログラムは、実行のためにクライアントへサーバによって提供されうる。Java(登録商標) Enterprise Editionによって提供されるようなクライアント−サーバエンタープライズ環境において、サーバはまた、クライアントによって実行されるJava(登録商標)プログラムと通信し、サーバによって実行されるデータベースアプリケーションとインタフェースするJava(登録商標)プログラムを実行しうる。これらJava(登録商標)プログラムは、クライアントがサーバによって記憶される情報にアクセスする時にボトルネックを含むことがある。例えば、ボトルネックは、サーバがクライアントによってアクセスされているデータをロックする時にサーバで発生することがある。これらボトルネックにより生じる遅延は、Java(登録商標)プログラムが複数のクライアントによって実行される時に増加することがある。
ボトルネックを測定する一つの方法は、以下の通りである。第1に、高負荷がサーバに提供される。これにより、拡張性の問題から生じるボトルネックを特定することを促進する。第2に、ソフトウェアが実行され、実際の待機時間が測定される。第3に、ボトルネックが特定され、取扱われる。第4に、実行、測定、特定及び取扱いからなる段階は、いくつかのボトルネックが他のボトルネックを隠しているかもしれないので、さらにボトルネックを特定するために反復して実行される。
上記方法では、多くの既存のシステムは、連続的にボトルネックを検出及び除去する。
また、ボトルネックは、Java(登録商標)言語の実装に限定されない。ボトルネックは、アクセスがデータ整合性を維持するよう調整されるその他分散型コンピューティング環境に存在しうる。
本発明の実施形態は、ハードウェアクライアント−サーバ環境のパフォーマンスを改善する。一つの実施形態において、本発明は、ハードウェアクライアント−サーバ環境で実装されるコンピュータプログラムのボトルネックを測定するコンピュータ実装方法を含む。方法は、ハードウェアクライアント−サーバ環境の測定のために実行パラメータを定義することを含む。方法はまた、インストラメンテーションコード(instrumentation code)を含むためにコードブロックを修正することを含む。インストラメンテーションコードは、実行パラメータに関する。方法はまた、修正されたコードブロックをハードウェアクライアント−サーバ環境で実行することを含む。方法はまた、実行パラメータに関し、コードブロックを実行することから生じるインストラメンテーションデータを生成することを含む。方法はまた、生成されたインストラメンテーションデータを出力することを含む。
この方法において、ボトルネックが測定でき、測定されたボトルネックを記憶でき、対象のボトルネックが特定でき、ハードウェアクライアント−サーバ環境の局面がボトルネックを取扱うために調整できる。何千もの同期点が検出され測定されることがあるので、ソーティングは有益であるが、それらの多くは、訂正を要求する問題を呈しない。
図1Aは、どのようにボトルネックがもう一つのボトルネックを隠すのかを示す。 図1Bは、どのようにボトルネックがもう一つのボトルネックを隠すのかを示す。 図2は、本発明の実施形態によるクライアント−サーバ環境のブロック図である。 図3は、本発明の実施形態によるボトルネック測定過程のフローチャートである。 図4は、本発明の実施形態によるボトルネックメトリクスを示す。 図5Aは、本発明の実施形態によるコードブロック修正の例を示す。 図5Bは、本発明の実施形態によるコードブロック修正の例を示す。 図6は、本発明の実施形態を実装するための例示的なコンピュータシステム及びネットワーク1400のブロック図である。 図7Aは、どのようにボトルネックがコンピュータプログラムシステムで検出及び除去されうるかを示す。 図7Bは、どのようにボトルネックがコンピュータプログラムシステムで検出及び除去されうるかを示す。 図7Cは、どのようにボトルネックがコンピュータプログラムシステムで検出及び除去されうるかを示す。 図8Aは、どのようにボトルネックが本発明の実施形態により測定されるかを示す。 図8Bは、どのようにボトルネックが本発明の実施形態により測定されるかを示す。
コンピュータプログラムのボトルネックを特定するための手法は、以下に説明される。以下の説明において、説明のために、複数の例及び特定の詳細は、本発明の完全な理解を提供するために示される。しかし、特許請求の範囲によって定義される本発明は、以下に説明するこれらの例における、又は他の特徴との組合せにおける、一部又は全ての特徴を含み、以下に説明する特徴及び概念の変更及び均等物をさらに含むことが当業者にとって明らかである。
一般に、ウェブサーバは、同時に複数の要求を扱うよう設計される。理想的には、サーバは、次々に要求をシリアル化しない。しかし、サーバのいくつかの要素は、同期を必要とするので(例えば、データ記憶ユニット)、サーバは、これら要求を同期化し、同期化したコードセグメントを互いに待機させる。そのような危険なセクション(critical section)は、“ボトルネック”と呼ばれる。2つの要求がそのようなセクションに入ることを希望する時、それらのうち1つのみが入り、その他が待機する。さらに要求が到着する場合、それらも待機する。これは、単一の要求(又は単一のルーチン)に対する“待機時間”と呼ばれることがある。また、危険なセクションがもう一つの危険なセクション内にある場合(“ネスティング”と呼ばれる)、その後要求は、内部セクションを待機しないので、“隠され「hidden」”たままである。任意のその他ネスト化された危険なセクションも、隠されたままである。
図1A〜1Bは、どのようにボトルネックがもう一つのボトルネックを隠しうるのかを示す。図1Aは、ボトルネックの隠しを示し、図1Bは、ボトルネックのシリアル化を示す。矢印は、同時に動作するサブプロセス、例えばJava(登録商標)スレッドを示し、それは、サーバによって処理されるクライアント要求に対応しうる。図1Aにおいて、ボトルネック12は、待機時間14をもたらし、ボトルネック16は、待機時間18をもたらす。ボトルネック12は、ボトルネック16を隠す。ボトルネック16は、ボトルネック12が特定され取扱われるまで現れない。図1Bにおいて、ボトルネック22は、待機時間24をもたらし、ボトルネック26は、待機時間28をもたらす。ボトルネック22は、ボトルネック26が待機時間及びコンテンションのような、任意の並行処理(concurrency)効果に関与しないように、ルーチンをシリアル化する。一度ボトルネック22が特定され取扱われた場合、ボトルネック26の待機時間28は、特定され取扱われうる。図7A〜7Cは、ボトルネックのシリアル化について、さらに詳細を提供する。
図7A〜7Cは、どのようにボトルネックがコンピュータプログラムシステムで検出され移動されうるのかを示す。図7Aは、パイプのように視覚化しうるコンピュータプログラムシステムにおける処理フロー700を示す。処理フロー700は、2つのボトルネックB1及びB2を有する。ボトルネックB1及びB2は、コンピュータプログラム同期点に対応しうる。
図7Bは、高処理負荷702が処理フロー700に適用されることを示す。ボトルネックB1は、処理負荷702を抑制する。ボトルネックB1は、点704及び点706で処理フロー700を測定して差異に注目することによって検出される。ボトルネックB2は、点706及び点708における処理フロー間の差異がないので、検出できないことが分かる。
図7Cは、(図7Bと比較して)ボトルネックB1が検出され移動された後の処理フロー700を示す。再び、高処理負荷702が処理フロー700に適用され、ここでボトルネックB2は、処理負荷702を抑制する。ボトルネックB2は、点706及び点708における処理フロー間の差異に注目することによって検出される。
図2は、本発明の実施形態によるクライアント−サーバ環境100のブロック図である。クライアント−サーバ環境100は、ネットワークを介して接続されたアプリケーションサーバ102、クライアント104、及びデータベースサーバ124を含む。クライアント−サーバ環境100は、“3階層アーキテクチャ”と呼ばれることがある。クライアント−サーバ環境100は、Java(登録商標) Enterprise Edition を実装しうる。クライアント−サーバ環境100のさらに特定のハードウェア詳細は、図6に示すことができる。
ネットワークは、ローカルエリアネットワーク、広域ネットワーク、又はインターネットのようなもう一つのネットワークタイプでもよい。
クライアント104は、仮想マシン112を実装する。仮想マシン112は、Java(登録商標)プログラムを実行するJava(登録商標) 仮想マシンでもよく、クライアント104は、アプリケーションサーバ102からそのプログラムを受取る。クライアントは、3階層アーキテクチャのうち“プレゼンテーション層”を実装しうる。一つのクライアント104より多くのクライアントが存在しうる。
アプリケーションサーバ102は、仮想マシン122、アプリケーション(コンピュータプログラム)128、及び並行処理プロファイラ130を実装する。仮想マシン122は、(以下に説明するように並行処理プロファイラ130によって修正されうる)アプリケーション128を実行する。仮想マシン122は、Java(登録商標)プログラムを実行するJava(登録商標)仮想マシンでもよい。一つ以上のコンピュータプログラム128は、実行のためにクライアント104に提供されてもよい。コンピュータプログラム128は、Java(登録商標)プログラムでもよい。アプリケーションサーバ102は、3階層アーキテクチャのうち“アプリケーション層”を実装しうる。一つより多いアプリケーションサーバ102が存在しうる。
データベースサーバ124は、データベース126を実装する。データベース126は、問合せされ、追加され、削除される等の基礎データを記憶する。データベースサーバ124は、3階層アーキテクチャのうち“データ層”を実装しうる。一つより多いデータベースサーバ124が存在しうる。
クライアント−サーバ環境100に対する日常の動作において、並行処理プロファイラ130が省略されてもよい。日常の動作の一例は、以下の通りである。データベース126は、会計データを記憶する。データベースサーバ124は、例えばデータベース126及びその他ハードウェア又はユーザインタフェース要素間をインタフェースし、データベース126にデータを追加し、データベースに問合せ又はその他データ操作を送信し、データベース126から情報を抽出し、表示又は報告等する。仮想マシン122は、例えばデータベースサーバ124とクライアント104との間をインタフェースし、プログラムを実行し、データベース126に追加されるデータをクライアント104から受取り、データ操作の要求をクライアント104から受取り、又は抽出された情報をクライアント104へ送信し、表示等する。仮想マシン122のこれらアクションは、コンピュータプログラム128を実行することによって制御される。仮想マシン122のこれらアクションは、ボトルネックに直面しうる。
並行処理プロファイラ130は、仮想マシン122がコンピュータプログラム128を実行する時に生じるボトルネックを検出するためにアプリケーションサーバ102に実装されてもよい。これらボトルネックは、データベースサーバ124に相互作用する時、又はデータベース126にアクセスする時、データロックから生じることがある。クライアント−サーバ環境において、これらボトルネックは、クライアント104との相互作用からも生じることがある。並行処理プロファイラ130の詳細は、以下に提供される。
図3は、本発明の実施形態によるボトルネックを測定する処理200のフローチャートである。処理200は、並行処理プロファイラ130によって実装されてもよい。並行処理プロファイラ130は、コンピュータプログラムを実行して処理200を実装してもよい。コンピュータプログラムは、コンピュータプログラム128とともに記憶されてもよい。処理200を実装するコンピュータプログラムは、Java(登録商標)言語で書き込まれてもよい。
ステップ202において、一つ以上の実行パラメータは、測定のために定義される。実行パラメータは、アプリケーションサーバ102が実行するコンピュータプログラム128に関する。実行パラメータは、並行(parallelism)、スループット、通し時間(through time)、極限スループット(limit throughput)、及び利用パラメータ(utilization parameter)を含んでもよい。実行パラメータは、コンピュータプログラム128のボトルネックに関する。実行パラメータは、以下により詳細に検討される。
ステップ204において、ボトルネックについて評価されるコンピュータプログラムは、インストラメンテーションコード(instrumentation code)を含むように修正される。コンピュータプログラムは、アプレット、階級、関数、手順、方法、オブジェクト、インタフェース、変数等のようなコードブロックを含む。インストラメンテーションコードは、実行パラメータがそのコードブロックについて測定されうるように一つ以上のコードブロックに追加される。
ステップ206において、修正されたコードブロックが実行される。アプリケーションサーバ102によって実装される時、並行処理プロファイラ130は、修正されたコードブロックを仮想マシン122に提供して実行する。
ステップ208において、修正されたコードブロックがステップ206で実行されると、インストラメンテーションデータが生成される。インストラメンテーションデータは、実行パラメータに対応し、修正されたコードブロックの実行によって生じる。インストラメンテーションデータは、位置識別子、スレッド識別子、モニタ識別子、入力時間、及び終了時間のような各ボトルネックに関する情報を含んでもよい。インストラメンテーションデータは、スループット測定、通し時間測定、極限スループット測定、及び利用測定のようなパフォーマンス情報を含んでもよい。
ステップ210において、インストラメンテーションデータが出力される。一つの実施形態によると、並行処理プロファイラ130は、クライアント104にインストラメンテーションデータを送信するように仮想マシン122を指示し、仮想マシン112は、ユーザが読むためにインストラメンテーションデータを表示するようクライアント104に命令する。インストラメンテーションデータは、重要なボトルネックが訂正又は除去のために簡単に特定されうるように利用測定のようなパラメータによって減少順序で記憶又はそうでなければ表示されてもよい。
クライアント−サーバ環境100、並行処理プロファイラ130、及び処理200に関する詳細は、以下に提供される。
ソフトウェアボトルネック
上記検討の通り、ボトルネックは、スループットの低下をもたらす。コンピュータプログラムにおいて、ボトルネックは、異なるルーチン間の同期点によって通常引起される。これらボトルネックは、新たなハードウェアを追加することによって解消できない論理的限界を示すので危険である。
コンピュータプログラムボトルネックの例は、並行処理ロック及びリソース限界を含む。並行処理ロックは、並行処理問題を防ぐために異なるルーチンで使用される。例は、ファイルを修正する前にファイル上に排他的(ライト)ロックを設定すること、及びファイルを読み取る前にファイル上に共有(リード)ロックを設定することである。リソース限界は、複数のルーチンが、制限された一組のリソースからリソースを得る時である。例は、一組の10個からなるデータベース接続を維持するプログラムである。プログラムは、同時に複数のクライアントに供することができるが、最大で10個のクライアントが、時間内におけるある時点で接続を使用することができる。
本発明の実施形態によると、拡張性の問題は、低負荷で分析される。大きく高価なハードウェハが不要である。
本発明の実施形態によると、全ての可能性のあるボトルネックは、リスト化される。隠されるボトルネックがない。
本発明の実施形態によると、ボトルネックは、最も重要なボトルネックから最も重要でないボトルネックへの順序で測定され記憶される。
図8A〜8Bは、どのようにボトルネックが本発明の実施形態により測定されるかを示す。図8Aは、図7Aと同一であり、処理フロー700、ボトルネックB1及びB2を示す。図8Bは、低処理負荷712を示す。一例として、低処理負荷712は、コンピュータプログラムを介して実行する単一のルーチンでもよい。単一のルーチンはその後使用され、ボトルネックをトレースし、そのメトリクスを記述する。一つのメトリックは、一度にボトルネックを通過できるルーチン数である。もう一つのメトリックは、単一のルーチンがボトルネックを通過するのに要する時間である。メトリクスは、以下に詳細に説明される。
ボトルネックメトリクスの定義
以下の例を検討する。小さなウェブサーバは、一つのデータベース接続を有する。複数の同時要求が以下続く。1.明示ロックを得る(要求はここで待機しうる)。2.接続を得る。3.データベース命令を実行する。例えば、約0.05秒間のSQL(構造化問合せ言語)動作。4.明示ロックを解除する。
1秒に7個の問合せの割合という負荷を仮定すると、以下の計算が導かれる。各動作は、0.05秒かかるので、1秒に最大で20個の動作が実行されうる(1/0.05=20)。現在負荷は、1秒に7個の動作なので、ボトルネックは、35%で“利用”される。付加が最大で1秒に20個の動作に到達する場合、利用が100%になる。
以下のメトリクスが定義される。並行[P]、スループット[T]、通し時間[Δt]、極限スループット[μT]、及び利用[U]。
並行[P]は、ボトルネック内で動作可能な最大ルーチン数である。メトリックは、コンピュータプログラム論理から暗示され、ハードウェア又は負荷に依存する必要がない。上記例において、1つの要求のみが時間内のある時点で接続に働きかけることができるので[P]=1である。N個の接続を有する場合、並行は、Nに等しくなる。故に、並行は、負荷に依存しないがボトルネックデザインに依存する。
スループット[T]は、ルーチンが1秒あたりにボトルネックを通過する数である、1秒あたりの動作数である。このメトリックは、負荷に依存する。通常、2重の負荷から2重のスループットを予期する。
通し時間[Δt]は、一つのルーチンがボトルネックを通過するのに必要な時間である。実施形態によると、通し時間は、非並行処理環境で測定される(即ち、一つのルーチン)。これにより、待機時間のような並行処理の副作用を含むことなく、“クリーン”な通し時間測定を可能にする。実施形態によると、低負荷は、並行処理プロファイラ130を動作する時に使用される。
極限スループット[μT]は、特定時間で実行されうる最大動作数である(例えば、1秒あたりの最大動作数)。極限スループットは、以下のように通し時間から導かれる。
Figure 2010129079
上記例において、[μT]=1/0.05=20動作(1秒あたり)である。
利用[U]は、スループット(測定された)及び極限スループット間の割合であり、以下の通りである。
Figure 2010129079
上記例において、[U]=7/20=35%である。スループットは、極限スループットよりも大きくなりえないので以下の通りである。
Figure 2010129079
図4は、これらボトルネックメトリクスを示す。通し時間[Δt]は、ボトルネック400の高さによって表される。並行[P]は、ボトルネック400の部分間の幅によって表される。スループット[T]は、ボトルネック400を通過するルーチン(矢印402)によって表される。
実施形態によると、並行処理プロファイラ130は、存在する全てのボトルネックと同数の利用を計算するために、上記定義されたメトリクスを測定する。並行処理プロファイラ130は、各コードブロックをインストラメント(instrument)し、一つ以上の以下の情報を記録する。
位置:これは、階級、方法、及びボトルネックの線番号である。
スレッド:これは、スレッド識別子である(ルーチン識別子)。
モニタ:これは、ルーチンが努めるリソースである(例えば、同期モニタ又はロック)。
入力時間:これは、スレッドがボトルネックに入る時間である。
終了時間:これは、スレッドがボトルネックから出る時間である。
コンピュータプログラムのインストラメンテーションは、バイトコードの修正を介して実行されうる。並行処理プロファイラ130がJava(登録商標)プログラムを測定する実施形態によると、同期化されたコードブロックは、図5A〜5Bに示す通り修正されうる。
図5A〜5Bは、本発明の実施形態によるコードブロック修正の一例を示す。図5Aは、修正前のコードブロックを示し、図5Bは、修正後のコードブロックを示す。Java(登録商標)実装において、モニタ入力及びモニタ終了命令は、Java(登録商標)同期ステートメントによって使用され、複数のスレッド間のオブジェクトに対するアクセスを調整する。各スレッドは、独自のトレースファイルを記述しているので、並行処理プロファイラ130によって引起されうる任意のコンテンションが回避される。

並行処理プロファイラ130の実施形態は、SPECjAppServerベンチマークアプリケーションのボトルネックを見つけるために使用され、拡張性を高める。(例えば、完全な拡張性によると、ハードウェアを二重にすれば、負荷機能「load capability」を二重にする。ボトルネックの存在は、拡張性を完全にするのを妨げるので、ボトルネックを特定及び除去することで拡張性を改善する。)並行処理プロファイラ130は、Java(登録商標)サーバ設定の全2値を変換し、それは、約350.jarファイルであった。有効動作は、トランザクション速度5で実行された(50HTTP[hypertext transfer protocol]クライアント及び15RMI[remote method invocation]クライアント)。(これらパラメータは、実行された負荷を示す負荷テストパラメータであり、例えばクライアントコンピュータ数に対応する。)並行処理プロファイラ130は、表1がトップレベル情報を要約する報告を生成した。
Figure 2010129079
報告の情報によると(例えば、表1)、コンフィギュレーションの専門家であればその後、アプリケーションサーバ102の何の局面がボトルネックに含まれうるのかを判断し、これら局面を調整し、パフォーマンスを改善することができる。おおまかに調整されうる局面は、コンフィギュレーション問題、プログラミング非効率等を含む。特に、コンフィギュレーションの専門家であれば、アプリケーションサーバ102を実装するのに用いるハードウェア要素、アプリケーションサーバ102によって実行されるコンピュータプログラムのプログラミング、仮想マシン122のコンフィギュレーション、データベースサーバ124によって実行されるコンピュータプログラムのプログラミング、Java(登録商標) Database Connectivity (JDBC) APIドライバのプログラミング、ネットワークのコンフィギュレーション等を調整することができる。
上記検討の通り、コードブロックが設置され、パフォーマンス測定は、(例えば)一つの要求/ルーチン(“トレーシングルーチン”と呼ばれる)を用いて実行される。そのようなトレーシングルーチンは、システム要素上の高負荷を要求しない。ボトルネックは、上記説明した測定メトリクスに従って測定される。一度ボトルネックが測定されると、最も重要なボトルネックを特定するために記憶されうる。その後、コンフィギュレーションの専門家は、所定量の努力で最もよい結果が達成されるように、重要なボトルネックへの取扱いについて必要に応じて集中できる。
図6は、本発明の実施形態を実装するための例示的なコンピュータシステム及びネットワーク1400のブロック図である。コンピュータシステム1410は、情報通信のためにバス1405又はその他通信メカニズム、及び情報処理のためにバス1405に接続されるプロセッサ1401を含む。コンピュータシステム1410はまた、プロセッサ1401によって実行されるべき情報及び指令を記憶するためにバス1405に接続されるメモリ1402を含み、それら情報及び指令には、上記説明した手法を実行するための情報及び指令が含まれる。このメモリはまた、プロセッサ1401によって実行されるべき指令の実行の間、一時的な変数又はその他中間情報を記憶するのに使用されうる。このメモリの可能な実装は、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、又はその両方でもよいが、それらに限定されない。記憶装置1403はまた、情報及び指令を記憶するために提供される。記憶装置の共通形式は例えば、ハードドライブ、磁気ディスク、光学ディスク、CD−ROM、DVD、フラッシュメモリ、USBメモリカード、又はコンピュータ読取可能な任意のその他媒体を含む。記憶装置1403は、例えば上記手法を実行し、又は構成概念を具現化するために、ソースコード、2進コード、又はソフトウェアファイルを含みうる。
コンピュータシステム1410は、コンピュータユーザに情報を表示するために、陰極線管(CRT)又は液晶ディスプレイ(LCD)のようなディスプレイ1412にバス1405を介して接続されうる。キーボード及び/又はマウスのような入力装置1411は、ユーザからプロセッサ1401に情報及び命令の選択を通信するために、バス1405に接続される。これら要素の組合せによりユーザは、システムと通信することができる。いくつかのシステムにおいて、バス1405は、複数の専用バスに分割されてもよい。
コンピュータシステム1410はまた、バス1405に接続されるネットワークインタフェース1404を含む。ネットワークインタフェース1404は、コンピュータシステム1410及びローカルネットワーク1420間で双方向データ通信を提供しうる。ネットワークインタフェース1404は、例えば電話線上にデータ通信接続を提供するためにデジタル加入者線(DSL)又はモデムでもよい。ネットワークインタフェースのもう一つの例は、互換LANにデータ通信接続を提供するためにローカルエリアネットワーク(LAN)カードである。無線リンクはまた、もう一つの例である。任意のそのような実装において、ネットワークインタフェース1404は、各種情報を示すデジタルデータストリームを伝える電気、電磁気、又は光学信号を送受信する。
コンピュータシステム1410は、ネットワークインタフェース1404を介してイントラネット又はインターネット1430へメッセージ又はその他インタフェースアクションを含む情報を送受信することができる。例えばインターネットにおいて、ソフトウェア要素又はサービスは、ネットワークにわたって複数の異なるコンピュータシステム1410又はサーバ1431、1432、1433、1434及び1435上に存在しうる。サーバ1431は、インターネット1430、ローカルネットワーク1420及びネットワークインタフェース1404を介してコンピュータシステム1410上の要素に一つの要素からアクション又はメッセージを送信してもよい。
コンピュータシステム及びネットワーク1400は、アプリケーションサーバ102、クライアント104及びデータベースサーバ124を実装するために使用されるハードウェアでもよい。
上記説明は、Java(登録商標)環境に注目しているが、類似の環境は、ABAPTM環境、C#環境、a.NETTM環境等の他の分散型コンピューティング環境においてボトルネックを特定及び測定するために実装されてもよい。
上記説明は、どのように本発明の局面が実装されうるのかの例に沿って、本発明の各種実施形態を示す。上記例及び実施形態は、実施形態のみであると見なされるべきでなく、特許請求の範囲によって定義される本発明の柔軟性及び利点を示すために提供される。上記開示及び特許請求の範囲に基づき、他の配列、実施形態、実装及び均等物は、当業者にとって明白であり、特許請求の範囲によって定義されるように本発明の精神及び範囲から逸脱することなく採用されうる。
202 同期ブロックにインストラメンテーションを追加
204 実行パラメータを定義
206 コードを実行
208 インストラメンテーションデータを記録
210 結果を表示

Claims (20)

  1. ハードウェアクライアント−サーバ環境で実装されるコンピュータプログラムのボトルネックを測定するコンピュータ実装方法であって、
    測定するために実行パラメータを定義し、
    インストラメンテーションコードを含むために複数のコードブロックの各コードブロックを修正し、インストラメンテーションコードは、実行パラメータに関し、
    修正された複数のコードブロックを実行し、
    実行パラメータに関し、複数のコードブロックを実行することから生じるインストラメンテーションデータを生成し、
    生成されたインストラメンテーションデータを出力する
    ことからなることを特徴とするコンピュータ実装方法。
  2. コンピュータプログラムは、ハードウェアサーバコンピュータによって記憶される情報にアクセスし、ハードウェアクライアントコンピュータによって実行される第2Java(登録商標)言語プログラムと相互作用する、ハードウェアサーバコンピュータによって実行される第1Java(登録商標)言語プログラムであることを特徴とする請求項1に記載のコンピュータ実装方法。
  3. コンピュータプログラムは、ハードウェアデータベースサーバと相互作用し、ハードウェアクライアントコンピュータによって実行される第2Java(登録商標)言語プログラムと相互作用する、ハードウェアアプリケーションサーバによって実行される第1Java(登録商標)言語プログラムであることを特徴とする請求項1に記載のコンピュータ実装方法。
  4. 各コードブロックを修正する段階は、
    複数のコードブロックの同期コードブロックを特定し、
    同期コードブロックの開始にモニタ入力命令を追加し、
    同期コードブロックの終了にモニタ終了命令を追加する
    ことからなることを特徴とする請求項1に記載のコンピュータ実装方法。
  5. 実行パラメータは、並行パラメータ、スループットパラメータ、通し時間パラメータ、極限スループットパラメータ、及び利用パラメータのうち少なくとも一つを含むことを特徴とする請求項1に記載のコンピュータ実装方法。
  6. 複数のコードブロックは、低負荷を有するハードウェアサーバコンピュータに従って実行されることを特徴とする請求項1に記載のコンピュータ実装方法。
  7. 実行する段階は、
    ハードウェアデータベースサーバコンピュータによって実装されるデータベースに記憶されるロックオン情報を得て、
    データベースへの接続を得て、
    情報へアクセスするデータベースコマンドを実行し、
    ロックを解除する
    ことからなることを特徴とする請求項1に記載のコンピュータ実装方法。
  8. インストラメンテーションデータは、位置識別子、スレッド識別子、モニタ識別子、入力時間、及び終了時間のうち少なくとも一つを含むことを特徴とする請求項1に記載のコンピュータ実装方法。
  9. インストラメンテーションデータは、位置識別子、スループット測定、通し時間測定、極限スループット測定、及び利用測定のうち少なくとも一つを含むことを特徴とする請求項1に記載のコンピュータ実装方法。
  10. インストラメンテーションデータは、減少順序で利用測定に従って出力されることを特徴とする請求項1に記載のコンピュータ実装方法。
  11. インストラメンテーションデータの出力に応答してユーザ入力に従って、ハードウェアクライアント−サーバ環境の局面を調整することをさらに具備することを特徴とする請求項1に記載のコンピュータ実装方法。
  12. インストラメンテーションデータの出力に応答してユーザ入力に従って、ハードウェアクライアント−サーバ環境のアプリケーションサーバの局面を調整することをさらに具備することを特徴とする請求項1に記載のコンピュータ実装方法。
  13. インストラメンテーションデータの出力に応答してユーザ入力に従って、ハードウェアクライアント−サーバ環境のアプリケーションサーバの仮想マシンの局面を調整することをさらに具備することを特徴とする請求項1に記載のコンピュータ実装方法。
  14. ハードウェアクライアント−サーバ環境で実装されるコンピュータプログラムのボトルネックを測定するための命令を実行する装置であって、
    複数のコードブロックを記憶するメモリと、
    測定するために実行パラメータを定義し、
    インストラメンテーションコードを含むために複数のコードブロックの各コードブロックを修正し、インストラメンテーションコードは、実行パラメータに関し、
    修正された複数のコードブロックを実行し、
    実行パラメータに関し、複数のコードブロックを実行することから生じるインストラメンテーションデータを生成し、
    生成されたインストラメンテーションデータを出力する
    ことを含む処理を実行するプロセッサと
    を具備することを特徴とする装置。
  15. プロセッサは、
    仮想マシンを実装し、仮想マシンは、修正された複数のコードブロックを実行することをさらに具備する処理を実行することを特徴とする請求項14に記載の装置。
  16. プロセッサは、
    仮想マシンを実装し、仮想マシンは、修正された複数のコードブロックを実行し、
    インストラメンテーションデータに応答してユーザ入力に従って仮想マシンの局面を調整する
    ことをさらに具備する処理を実行することを特徴とする請求項14に記載の装置。
  17. インストラメンテーションデータは、減少順序で利用測定に従って出力されることを特徴とする請求項14に記載の装置。
  18. ハードウェアクライアント−サーバ環境で実装されるコンピュータプログラムのボトルネックを測定するための処理を実行するためにデータ処理装置を制御する命令をその上に記録したコンピュータ読取可能な媒体であって、
    ハードウェアクライアント−サーバ環境を測定するために実行パラメータを定義し、
    インストラメンテーションコードを含むために複数のコードブロックの各コードブロックを修正し、インストラメンテーションコードは、実行パラメータに関し、
    修正された複数のコードブロックをハードウェアクライアント−サーバ環境で実行し、
    実行パラメータに関し、複数のコードブロックを実行することから生じるインストラメンテーションデータを生成し、
    生成されたインストラメンテーションデータを出力する
    ことからなることを特徴とするコンピュータ読取可能な媒体。
  19. 命令は、
    修正された複数のコードブロックを実行する仮想マシンを実装する
    ことをさらに具備する処理を実行するためにデータ処理装置を制御することを特徴とする請求項18に記載のコンピュータ読取可能な媒体。
  20. 命令は、
    修正された複数のコードブロックを実行する仮想マシンを実装し、
    インストラメンテーションデータに応答してユーザ入力に従って仮想マシンの局面を調整する
    ことをさらに具備する処理を実行するためにデータ処理装置を制御することを特徴とする請求項18に記載のコンピュータ読取可能な媒体。
JP2009123371A 2008-11-25 2009-05-21 並行処理プロファイラを実装するシステム及び方法 Pending JP2010129079A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US12/277,612 US8645922B2 (en) 2008-11-25 2008-11-25 System and method of implementing a concurrency profiler

Publications (1)

Publication Number Publication Date
JP2010129079A true JP2010129079A (ja) 2010-06-10

Family

ID=41226044

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009123371A Pending JP2010129079A (ja) 2008-11-25 2009-05-21 並行処理プロファイラを実装するシステム及び方法

Country Status (4)

Country Link
US (1) US8645922B2 (ja)
EP (1) EP2192491B1 (ja)
JP (1) JP2010129079A (ja)
CN (1) CN101753378B (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8954546B2 (en) 2013-01-25 2015-02-10 Concurix Corporation Tracing with a workload distributor
US20130283281A1 (en) 2013-02-12 2013-10-24 Concurix Corporation Deploying Trace Objectives using Cost Analyses
US8924941B2 (en) 2013-02-12 2014-12-30 Concurix Corporation Optimization analysis using similar frequencies
US8997063B2 (en) 2013-02-12 2015-03-31 Concurix Corporation Periodicity optimization in an automated tracing system
US20130219372A1 (en) 2013-03-15 2013-08-22 Concurix Corporation Runtime Settings Derived from Relationships Identified in Tracer Data
US9575874B2 (en) 2013-04-20 2017-02-21 Microsoft Technology Licensing, Llc Error list and bug report analysis for configuring an application tracer
US9292415B2 (en) 2013-09-04 2016-03-22 Microsoft Technology Licensing, Llc Module specific tracing in a shared module environment
EP3069241B1 (en) 2013-11-13 2018-08-15 Microsoft Technology Licensing, LLC Application execution path tracing with configurable origin definition
US9922088B2 (en) 2013-12-31 2018-03-20 Sybase, Inc. Cardinality estimation using spanning trees
US9952856B2 (en) 2014-08-01 2018-04-24 Sap Se Deploying mobile applications in a collaborative cloud environment
CN106293764B (zh) * 2016-08-22 2019-05-07 江苏电力信息技术有限公司 一种通过abap语法解析获取引用自定义对象的方法
US10042739B2 (en) 2016-09-29 2018-08-07 International Business Machines Corporation Real-time analytics of machine generated instrumentation data

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10293747A (ja) * 1997-04-18 1998-11-04 Nec Corp クライアント・サーバシステムの性能評価装置及び方式
JP2002082926A (ja) * 2000-09-06 2002-03-22 Nippon Telegr & Teleph Corp <Ntt> 分散アプリケーション試験・運用管理システム

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5668995A (en) * 1994-04-22 1997-09-16 Ncr Corporation Method and apparatus for capacity planning for multiprocessor computer systems in client/server environments
WO1996038733A1 (en) * 1995-06-02 1996-12-05 Pure Software, Inc. Remote monitoring of computer programs
US5819066A (en) * 1996-02-28 1998-10-06 Electronic Data Systems Corporation Application and method for benchmarking a database server
US5832484A (en) * 1996-07-02 1998-11-03 Sybase, Inc. Database system with methods for parallel lock management
JP3816612B2 (ja) * 1997-01-14 2006-08-30 富士通株式会社 ネットワーク管理装置
US6470464B2 (en) * 1999-02-23 2002-10-22 International Business Machines Corporation System and method for predicting computer system performance and for making recommendations for improving its performance
US6434613B1 (en) * 1999-02-23 2002-08-13 International Business Machines Corporation System and method for identifying latent computer system bottlenecks and for making recommendations for improving computer system performance
US6557035B1 (en) * 1999-03-30 2003-04-29 International Business Machines Corporation Rules-based method of and system for optimizing server hardware capacity and performance
US6449739B1 (en) * 1999-09-01 2002-09-10 Mercury Interactive Corporation Post-deployment monitoring of server performance
US6816874B1 (en) * 1999-09-10 2004-11-09 International Business Machines Corporation Method, system, and program for accessing performance data
US20030212987A1 (en) * 2001-02-28 2003-11-13 Demuth Steven J. Client container for building EJB-hosted java applications
US8326965B2 (en) * 2001-05-03 2012-12-04 Hewlett-Packard Development Company, L.P. Method and apparatus to extract the health of a service from a host machine
US6687702B2 (en) * 2001-06-15 2004-02-03 Sybass, Inc. Methodology providing high-speed shared memory access between database middle tier and database server
US7137120B2 (en) * 2001-12-17 2006-11-14 International Business Machines Corporation Dynamic diagnostic program for determining thread wait time
US7577951B2 (en) * 2002-05-30 2009-08-18 Hewlett-Packard Development Company, L.P. Performance of computer programs while they are running
US6792460B2 (en) * 2002-10-02 2004-09-14 Mercury Interactive Corporation System and methods for monitoring application server performance
JP4787460B2 (ja) * 2003-01-17 2011-10-05 日本電気株式会社 ソフトウェア・コンポーネントの性能測定を基にしたシステム性能予測方式および方法
US7493622B2 (en) * 2003-08-12 2009-02-17 Hewlett-Packard Development Company, L.P. Use of thread-local storage to propagate application context in Java 2 enterprise edition (J2EE) applications
WO2005017735A1 (ja) * 2003-08-19 2005-02-24 Fujitsu Limited ディスクアレイ装置におけるボトルネックを検出するシステムおよびプログラム
US7707557B1 (en) * 2003-12-30 2010-04-27 Sap Ag Execution of modified byte code for debugging, testing and/or monitoring of object oriented software
US7367025B1 (en) * 2003-12-30 2008-04-29 Sap Ag Byte code modification for testing, debugging and/or monitoring of virtual machine based software
US9582313B2 (en) * 2004-06-03 2017-02-28 Sap Se Connection resource system
US7676810B2 (en) * 2004-06-03 2010-03-09 Sap Ag Identification of execution context
US8010337B2 (en) * 2004-09-22 2011-08-30 Microsoft Corporation Predicting database system performance
JP4654707B2 (ja) * 2005-02-18 2011-03-23 日本電気株式会社 ボトルネック検出システム、測定対象サーバ、ボトルネック検出方法およびプログラム
JP2006277458A (ja) * 2005-03-30 2006-10-12 Hitachi Ltd リソース割当管理装置およびリソース割当方法
WO2006110937A1 (en) * 2005-04-21 2006-10-26 Waratek Pty Limited Modified computer architecture with coordinated objects
US20060271575A1 (en) * 2005-05-25 2006-11-30 Harris Steven T Clustered object state using field set operations
US20070061289A1 (en) * 2005-09-09 2007-03-15 Douglas Brown Validator and method for managing database system performance
US8402443B2 (en) * 2005-12-12 2013-03-19 dyna Trace software GmbH Method and system for automated analysis of the performance of remote method invocations in multi-tier applications using bytecode instrumentation
US9081605B2 (en) * 2007-03-27 2015-07-14 Nec Corporation Conflicting sub-process identification method, apparatus and computer program
CN101316185B (zh) * 2007-06-01 2011-05-18 阿里巴巴集团控股有限公司 一种基于日志文件的分析结果定位系统资源瓶颈的方法
US8225291B2 (en) * 2008-01-04 2012-07-17 International Business Machines Corporation Automated detection of application performance bottlenecks

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10293747A (ja) * 1997-04-18 1998-11-04 Nec Corp クライアント・サーバシステムの性能評価装置及び方式
JP2002082926A (ja) * 2000-09-06 2002-03-22 Nippon Telegr & Teleph Corp <Ntt> 分散アプリケーション試験・運用管理システム

Also Published As

Publication number Publication date
EP2192491B1 (en) 2012-08-29
CN101753378B (zh) 2014-07-30
US8645922B2 (en) 2014-02-04
US20100131945A1 (en) 2010-05-27
EP2192491A1 (en) 2010-06-02
CN101753378A (zh) 2010-06-23

Similar Documents

Publication Publication Date Title
JP2010129079A (ja) 並行処理プロファイラを実装するシステム及び方法
Bell et al. Paraprof: A portable, extensible, and scalable tool for parallel performance profile analysis
JP5249206B2 (ja) Api性能プロファイルを収集し報告するための自動化された方法およびシステム
US8694574B2 (en) Optimized settings in a configuration database with boundaries
US8776014B2 (en) Software build analysis
Trümper et al. Understanding complex multithreaded software systems by using trace visualization
US6609216B1 (en) Method for measuring performance of code sequences in a production system
US20080127109A1 (en) Method and system for generating and displaying function call tracker charts
US20100031252A1 (en) Method And System For Monitoring The Performance Of An Application And At Least One Storage Device For Storing Code Which Performs The Method
US10698962B2 (en) Analysis of data utilization
US10725889B2 (en) Testing multi-threaded applications
Kazi et al. JaViz: A client/server Java profiling tool
Cito et al. Interactive production performance feedback in the IDE
Kähkönen et al. LCT: A parallel distributed testing tool for multithreaded Java programs
Salhi et al. Open source in-memory data grid systems: Benchmarking hazelcast and infinispan
Reichelt et al. Towards solving the challenge of minimal overhead monitoring
US20160013989A1 (en) Service discovery and/or effort estimation in networked computing environments
Laaber et al. Performance testing in the cloud. How bad is it really?
Reiss et al. Visualizing threads, transactions and tasks
Kalmegh et al. Analyzing query performance and attributing blame for contentions in a cluster computing framework
Fruth et al. Tell-Tale Tail Latencies: Pitfalls and Perils in Database Benchmarking
Howell et al. Unpacking environmental dynamism: From operationalization to characterization
Bodner et al. Doppler: understanding serverless query execution
Göbel Mutebench: Turning OLTP-Bench into a multi-tenancy database benchmark framework
Wang et al. A framework for detecting anomalous services in OSGi-based applications

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100330

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111101

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120127

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120710

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120903

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20121010

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20121221

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140416