JP2009540463A - Api性能プロファイルを収集し報告するための自動化された方法およびシステム - Google Patents

Api性能プロファイルを収集し報告するための自動化された方法およびシステム Download PDF

Info

Publication number
JP2009540463A
JP2009540463A JP2009515395A JP2009515395A JP2009540463A JP 2009540463 A JP2009540463 A JP 2009540463A JP 2009515395 A JP2009515395 A JP 2009515395A JP 2009515395 A JP2009515395 A JP 2009515395A JP 2009540463 A JP2009540463 A JP 2009540463A
Authority
JP
Japan
Prior art keywords
api
data
memory allocation
timing
computer
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.)
Granted
Application number
JP2009515395A
Other languages
English (en)
Other versions
JP5249206B2 (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.)
Microsoft Corp
Original Assignee
Microsoft 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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2009540463A publication Critical patent/JP2009540463A/ja
Application granted granted Critical
Publication of JP5249206B2 publication Critical patent/JP5249206B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • G06F11/3476Data logging
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • 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/3409Recording 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 for performance assessment
    • G06F11/3419Recording 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 for performance assessment by assessing time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/18Complex mathematical operations for evaluating statistical data, e.g. average values, frequency distributions, probability functions, regression analysis
    • 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/3452Performance evaluation by statistical analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • G06F11/3652Software debugging using additional hardware in-circuit-emulation [ICE] arrangements
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Algebra (AREA)
  • Probability & Statistics with Applications (AREA)
  • Databases & Information Systems (AREA)
  • Operations Research (AREA)
  • Evolutionary Biology (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Debugging And Monitoring (AREA)

Abstract

アプリケーションプログラミングインターフェース(API)の性能を測定する方法が、APIによって呼び出された機能のリストを生成するために、ターゲットAPIを選択し、選択されたAPIの機能呼出しのためのメモリ割当てを追跡するステップを含む。次いで、個々の機能がAPI内で別個に呼び出され、それぞれの機能についてのタイミングおよびメモリ割当てデータが収集され記録される。次いで、記録された結果が、log2メソッドに従ってバケット化され、特定のAPIの性能を示すために、APIユーザがアクセスできるようにされる。

Description

本発明は、アプリケーションプログラミングインターフェース(API)の性能を測定する方法に関する。
他の工学専門分野とは異なり、ソフトウェアエンジニアは、設計上の決定を行うときに照会することができる定量的情報をほとんど有していない。アプリケーションプログラミングインターフェース(API:Application Programming Interface)性能コストを列記したオムニバス形式のカタログ(omnibus catalog)はない。この場合、用語「API」は、ワシントン州Redmondの本件特許出願人から入手可能な「Windows(登録商標)オペレーティングシステムAPI」に見られるような機能のファミリーではなく、「InvalidateRect API」に見られるような単一の機能を指す。
さらに、この状況は、ほとんどのAPIがそのコストを単一の数によって特徴付けることができないという事実によって複雑になる。コストは、メモリ使用、CPU使用、I/Oのコストなどの多くの異なるやり方で測定することができ、それは、入力パラメータ、ならびにコンテキスト、およびもちろん、使用可能なハードウェアに依存することがある。その結果、一般に、APIの性能を特徴付ける試みは全くなされていない。これによって、エンジニアは、設計決定を行うときに使用可能なアプリオリな(a priori)手引きをもたないという恵まれない立場に置かれている。エンジニアは、プロトタイプを作成し、あるいはさらに悪いことには、コストに関する懸念事項を単に推測し、完全に無視し、またはうまく行くように単に願うことに頼らなければならない。これらの後者の選択は、非常によく見られることである。したがって、APIデータの収集は、API性能またはリソースコストについての有用な知識を提供するのに非常に望ましい。
したがって、APIの動作についての非常に正確なメモリ割当ておよび実行時間データを収集することが望ましい。一目的は、APIコンシューマの意図した用途に適したメモリおよびタイミング特性を特定のAPIコンポーネントが有しているかどうかに関して、決定することができるように、そのデータをAPIコンシューマに提供することであり得る。割当てとタイミングの両方が、機能がどのように使用されるかによって変化するので、データは、幅広い範囲の実在のシナリオについての割当ておよびタイミングの統計分布を反映し得ることが好ましい。この分布は「性能プロファイル」を構成することができ、この性能プロファイルは、APIの振舞いのトラブルシューティングと、コンシューマに対するこれらの特性の文書化との両方を行うために使用してもよい。
メモリ割当ては、ほぼ100%の精度で測定され得るが、実行時間の測定は、不安定さを伴う。測定自体は、実行時間全体のうちの一部を取り、その結果、データに歪みが生じる。これは、単一のプロファイリング実行で1組の相互依存する機能のタイミング特性を集める場合に特に当てはまる。コールツリーのより深くの機能呼出しの測定オーバーヘッドが累積し、コールツリーのより上位の機能の結果が変更される。たとえば、機能Aはタイトループ内で機能Bを何千回も呼び出し、同じランでAとBのタイミングが測定される場合、Bの累積の測定コストによって、Aの結果が劇的に変更されることがある。既存のツールは、累積の測定誤差を取り去ることによって問題に対処しようと試みるが、この手法は、統計的に有意な結果をもたらすことができていない。
一般に、既存のAPI測定法は、特定の実行に関する詳細なコスト情報を記録することができるプロファイリングツールのコンテキストで使用される。しかし、これらのシステムは、測定行為自体がコストの乱れを引き起こすので、オムニバス形式のデータ収集には適していない。それらは、単一のランでプログラム全体に関する情報をできるだけ多く得るように設計されている。様々な実行にわたる特定のAPIに関する情報を収集することが望ましい。本発明は、これらおよび他の問題に対処する。
この課題を解決するための手段は、下記の発明を実施するための最良の形態でさらに述べる選択された概念を簡略化された形で述べるために提供されている。この課題を解決するための手段は、特許請求された主題の主な特徴または本質的な特徴を識別することを意図しておらず、また特許請求された主題の範囲を限定するために使用することも意図していない。
一実施形態では、アプリケーションプログラミングインターフェース(API)の性能を測定する方法が、APIによって呼び出された機能のリストを生成するためにターゲットAPIを選択し、選択されたAPIの機能呼出しのためのメモリ割当てを追跡するステップを含む。次いで、タイミングおよびメモリ割当てデータを測定するために、個々の機能が別個に呼び出される。次いで、記録された結果が、log2メソッドに従ってバケット化され、特定のAPIの性能を示すために、APIユーザがアクセスできるようにされる。
別の一実施形態では、ユーザのマシン内に常駐するランダムに選択されたAPIの性能情報を収集する分散型の方法が、プロファイラシステムによって可能になる。プロファイラシステムは、自発的なユーザに配布され、ユーザのコンピュータ上のアプリケーションのAPI性能を非干渉ベースで測定する。収集されたデータは中央ストレージサービスに転送され、この中央ストレージサービスで、API情報が収集され、多くのAPIの性能を表す情報のバケットへと編成される。この情報は、ソフトウェア開発者など、一般的なAPIユーザが使用できるようにされる。
例示的な実施形態
API性能プロファイラ
一実施形態では、API性能プロファイルを収集し報告するための自動化された方法およびシステムが提供される。この実施形態は、アプリケーション開発の助けとするために開発者またはツールによって使用することができる性能プロファイルまたはフィンガープリントを生成するために、実行コードの非常に正確で経験的な観察値を収集することに焦点を当てている。この自動化された方法は、専門の性能プロファイラ、公に目に見えるすべての入口点についてのデータを生成するためにバイナリを網羅的に実行する自動化システム、解析ツールによって消費され得る形でこのデータを持続させるための機構、ならびに機能性能特性を理解する助けとするためにプロファイルをグラフィカルにレンダリングするためのシステムの使用を用いる。あるモードでは、プロファイラは、目に見えるAPIについての正確な実行時間情報を収集する。別のモードでは、プロファイラは、いずれかの機能を呼び出すと生じるメモリ割当てに関する詳細を収集する。
図1は、API性能を測定するためにコンピューティングプラットフォーム上で実行され得るAPIプロファイラのための例示的なソフトウェアアーキテクチャ100を示している。こうした一システムは、共通言語インフラストラクチャのためのECMA 335規格のMicrosoft(登録商標)CLR(商標)実装である。テスト対象のAPI 102は一般に、観察および記録のためにインストルメント化され得る(instrument)その場特性を示す。CLR(商標)と互換があり得るメモリ割当てプロファイラ104は、所与のAPI性能シナリオを実行し、そのメソッドへの機能呼出しが、割り当てられたバイト数のlog2の離散値をもたらした回数のカウントを記録する。メモリ割当てプロファイラは、包含的割当て値と排他的割当て値を別々に測定し記録する。包含的メモリ割当て値は、それが呼び出した機能によって割り当てられたメモリのすべてを含めた、機能によって割り当てられたバイト数である。排他的メモリ割当て値は、機能自体の一部であるコードのブロック内に割り当てられたバイト数である。
タイミングプロファイラ106は、CLR(商標)とも互換性があり、追加入力として指定された、メソッドのジャストインタイム(JIT:Just in Time)コンパイルにそれ自体をつなぐ。ランの間の追加のオーバーヘッドだけが、調査されている特定のメソッドへの呼出しのために生じており、他のメソッドへの呼出しのオーバーヘッドは生じないようなやり方で行われる。タイミングプロファイラは、テスト対象API 102に関するタイミング情報をも測定し記録する。
調整モジュール108は、入力として、所与のマネージドコードシナリオを実行するためのスクリプトを取り、スクリプトを使用してテスト対象API 102に対して割当てプロファイラ104をまず実行する。次いで、調整モジュールは、割当て段階でどのメソッドが実行されたかについての情報を使用して、タイミングプロファイラ106の下でシナリオを繰り返し再実行する。また調整モジュールは、タイミングプロファイラ106が、同じランにおいて相互依存する機能のタイミングを測定するように決して指示されないことを保証する。換言すると、調整モジュールは、同じ呼出しスタックに現れ得るいずれか2つの機能を同時に測定しないことによって、いずれの実行スレッド上においても多くて1つの測定が進行中であることを保証する。したがって、テスト対象API 102の真の性能を隠し得る2次機能は測定されず、記録されない。本発明の一態様では、同じ呼出しスタックに決して現れない機能が、同時に測定され記録されてもよい。たとえば、3の機能A、B、Cが与えられ、機能AとCだけが同じ呼出しスタックに現れる場合、AとCは、同時に測定されず、記録されない。しかし、機能AとBは、機能BとCと同様に、同時に記録することができる。
併合ツールモジュール110は、メモリ割当てプロファイラ104およびタイミングプロファイラ106のすべてのランからの結果を組み合わせて、各テスト対象API 102の単一の結果テーブル112にする。特定のテスト対象API 102の結果テーブルは、包含的および排他的メモリ割当てのlog2バケット化、ならびに実行時間のlog2バケット化を示すことができる。併合ツールモジュールは、テスト対象API 102の幅広い範囲の使用を表すテーブルを生成するために、複数の異なるランからの結果を組み合わせるのに使用することもできる。したがって、単一の実行統計、ならびに複数の呼出し統計が、テスト対象API 102に関して集められてもよい。
任意のテスト対象API 102の結果テーブル112データを各機能のヒストグラムにレンダリングするためのグラフィカルユーザインターフェース114は、開発者が、所与のテスト対象API 102を構成する機能の性能特性に関する推論を行うことを可能にする。一実施形態では、特定のテスト対象API 102の結果テーブル112内の集められたAPI性能情報は、log2メソッドを使用して大きさの順序に編成されまたはバケット化されてもよい。さらに、API性能プロファイルは、データの解析によって作成されてもよい。
これらの性能プロファイルは、API所有者とAPIコンシューマの両方に、有益な情報を伝達する。プロファイルは、たとえば、APIを使用し始めるためのスタートアップコストがあり、その後、後続の呼出しはメモリ消費を伴わないことを示し得る。別のプロファイルは、メモリ割当てと実行時間の両方が、API呼出しに提供されるデータに対する線形または他の関係で増加することを示し得る。これらのプロファイルは、API開発者へのAPI製品品質を保証し、または特定の所望の性能特性を満たすべき新しいAPIを開発するために解析し分類することができる。
非限定的な一実施例として、API Object.EqualsまたはGetHashCode()オーバーライドなど、性能の影響を受けやすいコードが、本発明の態様を使用して特徴付けられ、プロファイリングされ得る。開発者など、これらのAPIのユーザは、プロファイリングされたAPIがその設計において有する性能を予測するために、公表されたプロファイル情報にアクセスすることによってグッドデザインを実践することができる。
一部の実施形態では、図1のソフトウェアアーキテクチャモジュールは、ネットワーク接続されたコンピュータからのダウンロード、またはそれに限らないが、CD−ROMなどのコンピュータ読取り可能媒体を介して実行するためにコンピュータに提供されてもよい。ダウンロードの後、図1のコンピュータアーキテクチャまたはモジュールは、実行待機して、コンピュータRAMに常駐してもよい。
本発明の一態様では、APIプロファイラは、タイミングデータが、単一パスで達成され得る精度よりも高い精度で集められることを保証するために、同じAPI実行シナリオを通る複数のパスを使用することができる。図2は、APIプロファイラの例示的な方法を示すフローチャート200である。
最初、APIプロファイラに、特徴付けるべきターゲットAPIが与えられる(ステップ202)。次いで、メモリ割当てプロファイラは、APIによって呼び出されたすべての機能のメモリ割当てを追跡するモードで実行される(ステップ204)。その結果、テスト対象APIによって呼び出されたすべての機能のリストが生成される(ステップ206)。
このリストが取得されると、次いで、このシステムは、リスト内の各機能につき1回、シナリオを再実行し、他のすべての機能とは完全に別に各機能のタイミングを測定する(ステップ208)。それぞれの機能実行について、パラメータのタイミングおよびメモリ割当てデータが、APIプロファイラによって集められ、結果が記録される(ステップ210)。このステップは、所与のランで追跡されている個々の機能について生じるオーバーヘッドだけを測定する効果を有する。この利点は、コールツリーのより深くにある機能によってもたらされる累積誤差がないということである。
一代替実施形態では、この方法は、APIプロファイラが、単に割当て段階で機能リストを集めるのではなく、スタック上にどの機能が一緒に現れ得るか、またどの機能が現れ得ないか計算することもできるように一般化されてもよい。次いで、ラン当たり1つよりも多くの機能を測定し、依然として同じ高精度を保証することが可能になる。次いで、API実行からのメモリおよび割当て情報は、呼出しスタックグループと併合して、提示のための結果テーブルにすることができる。一実施形態では、提示は、各機能または機能群のヒストグラムによって行われてもよい。
個々のランからの性能が記録されると、提示のために、別個の結果が処理される(ステップ212)。このステップの一環として、APIプロファイラは、各機能への各呼出しについて現在のランで何が測定されているかに応じて実行時間または割当てバイトのlog2を追跡し続けることによって、タイミングおよびメモリ割当ての可能な値の範囲を表現してもよい。各log2エントリは、メモリ割当てまたは実行時間が同じlog2値を有する呼出しのバケットのカウントを増分するために使用される。次いで、別個のランのすべてからの結果が、一緒に併合される(ステップ212)。最終結果は、メモリ割当ておよびタイミングの各離散log2値のカウントを含む、シナリオにおけるすべての機能のテーブルである。幅広い範囲のシナリオにおけるAPIの機能のより代表的なビューを得るために、複数のシナリオからの結果を併合することも可能である。
非限定的な一実施形態では、API性能データ収集メソッドの擬似コードは、以下のとおりである。
Figure 2009540463
上記の擬似コード例では、タイミングおよび割当てのパラメータは、測定されるパラメータが測定プロセスによって過度に妨げを受けない限り、ディスクI/O、ネットワーク使用、またはAPIの影響を受ける他の任意のパラメータの測定を行うことができるように増大することもできる。
上記の例示的な擬似コードでは、log2(n)は、nの2を底とする対数より小さい、またはそれに等しい最大整数を意味することに留意されたい。バケット内のデータを特徴付けることは、APIの性能をバケット内に置くことをも含み得る。本質的に、測定されたパラメータは、「2のべき乗のバケット」をもたらすために、log2を使用して、切り捨てて最も近い整数に丸められる。これは、2進表現で最上位ビットの位置を見つけ、性能のカテゴリとして適切なバケットにデータを置くことによって実施することができる。さらに、測定されたパラメータの平均、中間および標準偏差などの基本統計値が計算され得るように、和、および平方和がバケット化される。こうした統計によって、ユーザに、測定されたAPIの性能に関する関連情報が提供される。
非限定的な実施例において、以下のプログラムを仮定する。
Figure 2009540463
APIデータプロファイラを使用して、プログラム全体が、割当てプロファイラによって実行され、以下の呼出しシーケンスを100回見る。
Figure 2009540463
その間、表1と同様に、以下のバケット化データが集められる。分かりやすくするために、表1には、機能A、BおよびCの割当てのカウントだけが示されている。これらの機能の和および平方和のバケット化計算は、同様のやり方で計算することができる。
Figure 2009540463
表1のバケットは、割り当てられたバイトのlog2で表現されており、またA、B、Cだけがそれぞれ、シナリオによって呼び出され、したがって、プログラムは、タイミングプロファイラを使用して3回、すなわち各機能につき1回再実行され得ることに留意されたい。第1のランでは、機能Aだけが実行される。Aへの300回の呼出しの間、実行に20から40の間のクロックサイクルを要し、表2の機能Aについて以下を得るたびにlog2を取り、バケットを増分することが観察されることに留意されたい。
Figure 2009540463
表2のバケットは、CPUサイクルのlog2で表現されている。次の2つのランで、BおよびCが、排他的に実行される。次いで、3つのランの併合が行われ得る。このプロセスは、研究所、開発環境、または実行時ユーザ環境内の多くのシナリオで実行されてもよく、収集されたデータはすべて、共通機能にバケットカウントを単に加えることによって一緒に併合されてもよい。これは、研究所、開発環境、または実行時ユーザ環境内で実行される1組の固定のシナリオからAPIプロファイルを構築する1つのやり方を表している。次いで、図1のユーザインターフェース114は、検査のためにバケット化されたデータをレンダリングするために使用されてもよい。
バケット化されたデータは好ましくは、測定され記録されたAPIデータに設計者がアクセスできるように公表される。たとえば、収集されたAPIデータは、リモートアクセスを有する中央データベースなど、中央位置に収集されてもよい。代わりに、APIデータは、コンピュータ読取り可能媒体または紙のカタログの形で作成され、ユーザに配布されてもよい。一般に知られている任意の公表および普及スキームが、公開のために使用されてもよい。
本発明の別の態様では、結果の理解が容易になるように、要約されたデータをユーザインターフェース上で視覚化することが遂行される。たとえば、収集され集約されたAPI測定データの結果は、各バケット内のカウントを要約するヒストグラムとして描かれてもよい。代わりに、結果は、より高コストのバケットに対応するホットエンド、およびより寒色のより安価なエンドに向かう色セグメントを有するカラースペクトルを使用して描かれてもよい。色の強度または棒の厚さは、そのバケット内のサンプルの数に対応する。
APIデータの分散型収集
本発明の一態様では、APIデータは、分散されたやり方で収集されてもよい。分散型APIデータ収集の一目的は、開発者およびユーザがいずれかの1つのAPIを使用するコストを査定する助けとするためにAPIの性能のデータベースを作成することである。データベースにデータを取り込むために「ユーザ環境(in the wild)」API性能の実際の測定値の統計的に興味深いサンプルを収集することが望ましい。データが取り込まれたデータベースは、一般的なハードウェア上で一般的な実際のアプリケーションにおいて観察される一般的な「性能コスト」を性能パラメータが反映している場合、価値が高くなる。したがって、ユーザマシン上で実際に使用されるAPIの性能が望ましい。次いで、このデータ収集プロセスを使用して、実行時間、メモリ割当ておよびディスクI/Oなど、様々な異なる「リソースコスト」の性能コストの特性分布を生成することができる。
ユーザマシン上でAPI性能を測定することに付随する性能コストまたはオーバーヘッドを最小限に抑えるために、少数のAPIだけが所与のいずれかのランで測定され、これらのAPIがランごとにランダムに選ばれることが望ましい。一般には、1度に1つのAPIだけが測定されてもよい。一実施形態では、APIデータ収集は、自発的なユーザオプトインに基づき、様々なシステム上で行うことができる。これによって、様々なハードウェア上で時間をかけて収集されたAPIのランダムサンプルが作成される。データは、中央サーバに合わせて周期的に更新することができ、この中央サーバでは、API性能のデータベースが、追加の匿名データを伴って増大する。
図3は、ユーザのコンピューティング装置上で実行されるAPIから分散データを収集するために使用され得る方法300のフローチャートである。ユーザは、データ収集に参加するために、APIデータの収集および提出を実施にする適切なプロファイラシステムプログラム、または1組のモジュールをまずインストールしなければならない。ユーザが、求められ、収集プロセスに同意し、またはそれを選ぶと仮定する。一実施形態では、多くのユーザは、収集スキームを選び、提供されるデータは、広範囲のAPIデータの集合をもたらす多様な1組のユーザ、アプリケーションおよびマシンのからのデータである。最初、ユーザは、非干渉ベースでAPIを測定することを可能にするために、APIプロファイラソフトウェアモジュールをダウンロードし、または別のやり方でインストールし構成する(ステップ302)。必要な実行可能ファイルは、インターネットからダウンロードし、ローカルにインストールしてもよく、あるいはCD−ROMまたは等価のプログラムデータ記憶媒体を介して取得してもよい。さらに、次いでAPIプロファイラは、インターネットから配信されたソフトウェアにとって通常通りにサービスを受ける。ステップ302は、1度だけ実施する必要があり、後続のすべてのデータ収集セッションは、ステップ304で開始することができる。
実際にデータを集めるために、データ収集システムは、ユーザがいずれかの実行可能プログラムを実行するときはいつでも、それ自体をアクチベートしなければならない。この時、APIプロファイラデータ収集システムは、監視するAPIをランダムに選び、データを収集する(ステップ304)。次いで、選択されたAPIへの呼出しがインターセプトされ、コストは、時間、ディスク操作、ネットワーク、メモリなど、1つまたは複数の次元で測定される。
一実施形態では、APIのランダム選択は、当業者には知られている技術を使用して行われてもよい。使用される特定のランダム選択技術は、APIプロファイラ収集ソフトウェアが実施される特定の実行時環境に依存してもよい。たとえば、NET(商標)共通言語ランタイム(CLR(商標):Common Language Runtime)では、メソッドがJITコンパイルされるたびに乱数を生成するために、ジャストインタイム(JIT)コンパイラの調整が行われてもよい。乱数が固定の閾値より小さい場合は、JITコンパイラは、メソッドへの呼出しが次いでインターセプトされ、APIプロファイラによって測定されるようにメソッドをインストルメント化してもよい。多くのこうしたランダム化選択技術が、所与の状況におけるAPI選択のために実装されてもよい。当業者は、本発明で目標とするために選択する特定の技術に基づいて、適切なランダム選択手法を選択し得る。
選択されたAPIへの機能呼出しのインターセプト技術もまた、当業者にはよく知られており、数多くある。類似のインターセプトは、新しいオペレーティングシステム内で「app compat shims」としても知られているアプリケーション互換性についての特別な振舞いを提供することが既に生じている。この同じシステムは、測定フックを挿入するために使用することができる。この場合もやはり、実際の測定が、既存のプロファイリングシステムによって既に使用されているよく知られている技術を使用して得られる。
データ収集の性能コストは好ましくは最小限に抑えられ、それを行うために使用される複数の技術があることに留意されたい。一実施例では、収集システムは、ユーザシステムへの影響を最小限に抑えるために、システム負荷または他の構成パラメータに基づいて、いずれかのデータの収集を控えてもよい。一実施例は、固定の少数のプログラムよりも多くのプログラムが同時にインストルメント化されることを防ぐシステムである。たとえば、せいぜい6つのバイナリのデータ収集が、1つの設定であってもよい。この数は、さらなるダウンロードによって動的に調整することができる。
選択されたAPIが測定された後、次いで、各プログラム実行の終わりに、要約され、収集されたデータは、後の提出に備えてディスクに書き込まれてもよい。収集されたデータの量が決定され、十分なデータが選択されたかどうか判定するためにテストされてもよい(ステップ306)。十分なデータが収集されている場合は、データは、たとえばネットワークを介して送信することによって中央サービスに提出されてもよい(ステップ308)。たとえば、記録されたデータが、配信されるべき適度なアップロード時間で妥当なデータバッチを可能にするのに適したサイズ(〜128k)に達する場合、ウェブサービスは、連絡を受けてもよく、ユーザの要約されたAPI性能情報が、中央サービスにアップロードされる。代わりに、より多くのAPI収集データがローカルに収集され得る場合、このプロセスは、ステップ304に戻ることができ、このステップ304では、次のAPIがランダムに選択される。
次いで、中央サービスは、所与のユーザが情報を与えた各APIに各カテゴリの新しいカウントおよびコストを加えることによってアップロード要求に応答してもよい。これは、新しいAPI性能データが中央サービス結果データベースに追加される集約(ステップ310)として知られている。したがって、結果データベースは、新しい情報で常に更新される。一実施形態では、バッチ処理を回避するために、付加的な統計の使用が用いられる。一実施形態では、「ユーザに呼び出されたユニークAPI平均」などの情報を追跡することは、結果の新しいバッチが追加されるたびに、時間のかかる既存データの再処理を必要とするので、これを行わないことが好ましい。
本発明の一態様では、中央データベースは、複数の媒体によってユーザに公表することができる(ステップ312)。たとえば、データベースは、インターネットまたは他のネットワーク接続を介して遠隔からアクセスしてもよい。ユーザが最新の性能コスト情報を有し得るように、データベース全体を周期的にリフレッシュすることが望ましい。すべてのユーザを同時に更新する必要があるとは限らず、また結果のデータベース全体を配信する必要があるとは限らない。一実施形態では、ユーザは単に、中央サービスの結果データベースの小さい部分に毎日照会することができ、ユーザは、コンテンツを増分的にリフレッシュしているデータを順に見る(rotate through)。任意選択で、ユーザが望むならば、結果データベース全体をダウンロード可能にすることができる。データベースをバイナリフォーマットで直接公表することに加えて、コンテンツは、以下に示されるように、様々なやり方で直接的および間接的に使用することができる。
本発明の一態様では、ユーザは、収集されたAPI性能データのコンシューマである(ステップ314)。ユーザは、多くの目的のために、様々なやり方でデータにアクセスしてもよい。有用な使用モードの例について、APIプロファイラシステムの有用性を示して、以下に概説する。
1)標準のAPI参照は、グラフィカルと、数字の形で詳細を見るのに使用可能な「ドリルダウン」との両方で表示する、APIプロファイラ結果データベースに含まれた情報を自動的に含む。
a.文書フォーマッティングシステムが、各APIの文書を作成する。
b.各APIについて、それが作成されるときに、API性能コスト要約を取得するためにAPIプロファイラデータに照会する。
c.性能コスト要約が、リンクと共に、グラフィカルな形で文書内に挿入され、このリンクは、収集されたAPI性能データのウェブベース公表において詳細な形で最新データまで「ドリルダウン」することを可能にする。
2)Microsoft(登録商標)Visual Studio(商標)システムのIntellisense(商標)特徴などの設計時間コーディング支援は、一般的なコストが直ちに目に見えるように、新しいAPI呼出しがコーディングされているとき、任意選択のドリルダウンを伴うグラフィカルな形のコスト要約を含むことができる。
a.このシステムは、1組の可能なAPI完了を引き起こす。
b.各完了について、このシステムは、収集されたAPIプロファイラデータに照会する。
c.システム表示はそれぞれ、APIプロファイラによって収集された情報からの要約をグラフィカルな形で提示する。
3)コードプロファイリングシステムの診断部分は、APIプロファイラによって収集されたデータに照会して、所与のいずれかのユーザのAPI使用が、一般的な使用パターンにコスト的に匹敵するかどうか確認する。トラブルシュート体験を向上させるために、異常なコストは、疑わしいとしてユーザに報告されてもよい。
a.プロファイル内の観察された各APIについて、このシステムは、APIプロファイラ結果に照会する。
b.それぞれのAPIについて、観察されたコスト分布が、「置換テスト」などの標準の統計方法を使用して、APIプロファイラ結果分布と比較される。
c.ユーザコスト分布がAPIプロファイラ収集データの分布よりも悪いという統計的証拠があることを統計法が示唆する場合、当該のAPIは、潜在的な改良点としてフラグが立てられ、調査のためにユーザに提示される。
i.提示は、それが呼出しスタック内に現れる場合にAPIを強調表示することによって、または
ii.こうしたAPIのリストの作成することによって、または
iii.観察された最高のコストをAPIが有するコンテキストを強調表示することによって行うことができる。
4)APIベンダは、これらの技術を使用して、顧客の一般的な使用およびコストに関する内部調査を作成して、それによってAPIの改良を目標とし、その成功を追跡してもよい。
a.コストの分布は、発生モジュール、名前空間またはその両方によって細分して、レポート形式で生成することができる。
b.次いで、これらの内訳は、計画作成のために、組織によって消費される。
本発明の一態様では、上記で言及されたように、APIプロファイラは好ましくは、ユーザシステムが測定されているときに低性能の影響が加えられるように動作する。単一のプログラム実行の間、測定されたいずれかの特定のAPIが何百万回も呼び出され、潜在的にはさらにハードウェア改良を伴い得ることを考慮すると、APIコストが、さらなる解析に適した経済的な形に保たれることが重要である。所与のセッションにおける測定対象の各APIに固定のサイズのエントリを有することが望ましい。しかし、大きな変化を伴うコスト分布を捕捉することも望ましい。これを達成するために、1つの手法では、正確なコストを捕捉するのではなく、分類された「バケット」内のコストカウントを追跡する。
上記に説明されたように、バケットは、性能またはリソースコストの、増加する各2のべき乗について作成される。それは、1、2、4、8以上のコストなどについて1つのバケットである。それぞれのコストバケットでは、中間値および分散値を増分的に計算することを実施するために、通常の統計累積が追跡される。すなわち、サンプルのカウント、コストの和、およびコストの平方の和が計算される。これらの値は、様々な精度で保持することができる。たとえば、カウントについては64ビットの整数、他の2つの各統計については倍精度浮動小数点数が使用される。さらに、全体の平均値および分散値が提供され得るように、すべてのサンプルについての合計カウント、累計、および平方の累計が維持される。この手法によって、必要な分布情報を依然として保ちながら、集約されたデータのコストが制限される。さらに、これらのデータはすべて加法的であり、したがって、単純な加算によって、異なるランまたは異なるコンピュータからのサンプルと容易に組み合わせることができる。
一実施形態では、測定された時間は好ましくは、サイクルカウントなど、使用可能な高分解能タイマの標準単位で維持される。これによって、計算時間が節約され、ディスクに残されている最高品質時間がもたらされる。
本発明の一態様として、コンピュータ読取り可能媒体、たとえば、それだけに限らないが、磁気記憶装置、CDおよびDVD媒体などの光学装置を使用して、上記に説明され、または本明細書に示唆された方法を実施することができるコンピュータプログラム命令を格納してもよい。こうしたコンピュータ媒体は、それが本発明の態様を実施することを可能にするために汎用コンピュータ上で使用する実行可能命令を保持すると考えられる。
本主題は、構造的特徴および/または方法論的行為に特有の言語で述べられているが、添付の請求項の範囲中に定義された本主題は、上述の特定の特徴または行為に必ずしも限定されないことを理解されたい。より正確に述べると、上述の特定の特徴または行為は、特許請求の範囲を実施する例示的な形として開示されている。
例示的なコンピューティング装置
図4および以下の説明は、媒体記憶装置とインターフェースするのに適したホストコンピュータについて簡潔に概説することを意図している。以下では汎用コンピュータについて説明されているが、これは、単一プロセッサの一例にすぎず、複数のプロセッサを備えたホストコンピュータの実施形態が、ネットワーク/バス相互運用性および相互作用を有するクライアントなどの他のコンピューティング装置と共に実装されてもよい。
必須ではないが、本発明の実施形態は、装置またはオブジェクトに関するサービスの開発者が使用するためにペレーティングシステムを介して実施し、および/またはアプリケーションソフトウェア内に含めることもできる。ソフトウェアは、クライアントワークステーション、サーバまたは他の装置など、1つまたは複数のコンピュータによって実行されているプログラムモジュールなどのコンピュータ実行可能命令の一般的な文脈で説明することができる。一般に、プログラムモジュールは、特定のタスクを実施し、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造体などを含む。一般に、プログラムモジュールの機能性は、様々な実施形態において要望に応じて組み合わせ、または分散させてもよい。さらに、本発明の様々な実施形態が他のコンピュータ構成で実施されてもよいことが当業者には理解されよう。使用に適し得るよく知られている他のコンピューティングシステム、環境および/または構成の例には、それだけに限らないが、パーソナルコンコンピュータ(PC:personal computer)、現金自動預け払い機、サーバコンピュータ、手持ち型またはラップトップ装置、マルチプロセッサシステム、マイクロプロセッサベースのシステム、プログラマブル家電、ネットワークPC、器具、照明、環境制御要素、ミニコンピュータ、メインフレームコンピュータなどが含まれる。本発明の実施形態は、通信ネットワーク/バスまたは他の伝送媒体を介してリンクされたリモート処理デバイスによってタスクが実施される分散コンピューティング環境内で実施することもできる。分散コンピューティング環境では、プログラムモジュールは、メモリ記憶装置を含めてローカルとリモートの両方のコンピュータ記憶媒体内に置くことができ、クライアントノードは、サーバノードとして振る舞うことができる。
図4を参照すると、例示的なホストコンピュータを実装するための例示的なシステムが、コンピュータシステム410の形の汎用コンピューティング装置を含んでいる。コンピュータシステム410の構成要素は、それだけに限らないが、処理装置420と、システムメモリ430と、システムメモリを含めて様々なシステム構成要素を処理装置420に結合するシステムバス421とを含んでもよい。システムバス421は、メモリバスまたはメモリコントローラ、周辺バスおよび様々なバスアーキテクチャのいずれかを使用したローカルバスを含めて、複数のタイプのバス構造のいずれかであり得る。
コンピュータシステム410は一般に、様々なコンピュータ読取り可能媒体を含む。コンピュータ読取り可能媒体は、コンピュータシステム410によってアクセスすることができる任意の使用可能な媒体を含むことができ、揮発性と不揮発性、取外し可能と取外し不可能の両方の媒体を含む。限定するためではなく、例を挙げると、コンピュータ読取り可能媒体には、コンピュータ記憶媒体および通信媒体が含まれ得る。コンピュータ記憶媒体は、コンピュータ読取り可能命令、データ構造体、プログラムモジュールまたは他のデータなどの情報を格納するための任意の方法または技術で実装された揮発性と不揮発性、取外し可能と取外し不可能の媒体を含む。コンピュータ記憶媒体には、それだけに限らないが、ランダムアクセスメモリ(RAM:Random Access Memory)、読取り専用メモリ(ROM:Read Only Memory)、電気的消去可能プログラマブル読取り専用メモリ(EEPROM:Electrically Erasable Programmable Read Only Memory)、フラッシュメモリまたは他のメモリ技術、コンパクトディスク読取り専用メモリ(CD−ROM:Compact Disk Read Only Memory)、再書き込み可能コンパクトディスク(CDRW:compact disc−rewritable)、デジタル多用途ディスク(DVD:digital versatile disk)または他の光ディスクス記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶または他の磁気記憶装置、あるいは所望の情報を格納するために使用することができ、またコンピュータシステム410によってアクセスすることができる任意の他の媒体が含まれる。
システムメモリ430は、読取り専用メモリ(ROM)431およびランダムアクセスメモリ(RAM)432など、揮発性および/または不揮発性メモリの形のコンピュータ記憶媒体を含む。起動時などにコンピュータシステム410内の要素間で情報を転送するのに役立つ基本ルーチンを含む基本入出力システム(BIOS:basic input/output system)433は一般に、ROM 431に格納される。RAM 432は一般に、処理装置420によって直ちにアクセス可能であり、および/またはそれによる操作を現在受けているデータおよび/またはプログラムモジュールを含む。限定するためではなく、例示するために、図4は、オペレーティングシステム433、アプリケーションプログラム435、他のプログラムモジュール436およびプログラムデータ437を示している。
コンピュータシステム410は、他の取外し可能/取外し不可能、揮発性/不揮発性のコンピュータ記憶媒体を含むこともできる。例示するためだけに、図4は、取外し不可能な不揮発性の磁気媒体から読み出しまたはそこに書き込むハードディスクドライブ431、取外し可能な不揮発性の磁気ディスク452から読み出しまたはそこに書き込む磁気ディスクドライブ451、およびCD−ROM、CDRW、DVDまたは他の光学媒体などの取外し可能な不揮発性の光ディスク456から読み出しまたはそこに書き込む光ディスクドライブ455を示している。例示的な動作環境で使用することができる他の取外し可能/取外し不可能、揮発性/不揮発性コンピュータ記憶媒体には、それだけに限らないが、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、ソリッドステートRAM、ソリッドステートROMなどが含まれる。ハードディスクドライブ441は一般に、インターフェース440などの取外し不可能メモリインターフェースを介してシステムバス421に接続され、磁気ディスクドライブ451および光ディスクドライブ455は一般に、インターフェース450などの取外し可能メモリインターフェースによってシステムバス421に接続される。
上記に説明され、図4に示されたドライブおよびその関連するコンピュータ記憶媒体は、コンピュータ読取り可能命令、データ構造体、プログラムモジュールおよびコンピュータシステム410のための他のデータの記憶域を提供する。図4では、たとえば、ハードディスクドライブ441は、オペレーティングシステム444、アプリケーションプログラム445、他のプログラムモジュール446およびプログラムデータ447を格納するように示されている。これらの構成要素は、オペレーティングシステム444、アプリケーションプログラム445、他のプログラムモジュール446およびプログラムデータ447と同じであっても、それとは異なっていてもよいことに留意されたい。オペレーティングシステム444、アプリケーションプログラム445、他のプログラムモジュール446およびプログラムデータ447は、少なくともそれらがそれぞれ異なるコピーであることを示すために、ここでは異なる番号が付けられている。
ユーザは、キーボード462、および一般にマウス、トラックボールまたはタッチパッドと呼ばれるポインティング装置461などの入力装置を介して、コンピュータシステム410にコマンドおよび情報を入力してもよい。他の入力装置(図示せず)は、マイクロホン、ジョイスティック、ゲームパッド、衛星放送アンテナ、スキャナなどを含み得る。これらおよび他の入力装置はしばしば、システムバス421に結合されたユーザ入力インターフェース460を介して処理装置420に接続されるが、パラレルポート、ゲームポートまたはユニバーサルシリアルバス(USB:universal serial bus)などの他のインターフェースおよびバス構造によって接続されてもよい。モニタ491、または他のタイプの表示装置もまた、ビデオインターフェース490などのインターフェースを介してシステムバス421に接続され、このビデオインターフェース490は、ビデオメモリ(図示せず)と通信してもよい。モニタ491に加えて、コンピュータシステムは、出力周辺インターフェース495を介して接続されてもよいスピーカ497およびプリンタ496など、他の周辺出力装置を含むこともできる。
コンピュータシステム410は、リモートコンピュータ480など、1つまたは複数のリモートコンピュータへの論理接続を使用して、ネットワーク化または分散された環境内で動作してもよい。リモートコンピュータ480は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイス、または他の一般的なネットワークノードとすることができ、また図4にはメモリ記憶装置481だけが示されているが、コンピュータ410に関して上記で説明した要素の多くまたはすべてを一般に含む。図4に示された論理接続は、ローカルエリアネットワーク(LAN:local area network)471と広域ネットワーク(WAN:wide area network)473とを含むが、他のネットワーク/バスを含むこともできる。こうしたネットワーキング環境は、家庭、オフィス、企業規模のコンピュータネットワーク、イントラネットおよびインターネットでは一般的である。
LANネットワーキング環境内で使用される場合は、コンピュータシステム410は、ネットワークインターフェースまたはアダプタ470を介してLAN 471に接続される。WANネットワーキング環境内で使用される場合は、コンピュータシステム410は一般に、モデム472、またはインターネットなどのWAN 473を介して通信を確立する他の手段を含む。内部にあっても、外部にあってもよいモデム472は、ユーザ入力インターフェース460または他の適切な機構を介してシステムバス421に接続されてもよい。ネットワーク化された環境では、コンピュータシステム410に関して示されたプログラムモジュール、またはその一部は、リモートメモリ記憶装置内に格納されてもよい。限定のためではなく、例示するために、図4は、メモリ装置481内に常駐するリモートアプリケーションプログラム485を示している。示されたネットワーク接続は例示的であり、コンピュータ間の通信リンクを確立する他の手段を使用してもよいことが理解されよう。
パーソナルコンピューティングおよびインターネットの収束に鑑みて、様々な分散コンピューティングフレームワークが開発され、また開発されている。個人およびビジネスユーザは同様に、アプリケーションおよびコンピュータ装置用のシームレスに相互運用可能なウェブ対応インターフェースが提供され、コンピコンピューティング活動がますますウェブブラウザまたはネットワーク指向になっている。
たとえば、本件特許出願人から入手可能なMICROSOFT(登録商標)の.NET(商標)プラットフォームは、サーバ、ウェブベースのデータストレージなどのビルディングブロックサービス、およびダウンロード可能なデバイスソフトウェアを含む。本明細書では例示的な実施形態についてコンピューティング装置上に常駐するソフトウェアに関連して説明しているが、本発明の一実施形態の1つまたは複数の部分は、オペレーティングシステム、アプリケーションプログラミングインターフェース(API)、あるいはコプロセッサ、表示装置および要求側オブジェクトのいずれかの間の「仲介」オブジェクトを介して、その操作が.NET(商標)の言語およびサービスのすべてによって実施され、その中でサポートされ、あるいはそれを介してアクセスされ、また他の分散コンピュータフレームワークにおいても同様であるように実装することもできる。
上記で言及したように、本発明の例示的な実施形態について様々なコンピューティング装置およびネットワークアーキテクチャに関連して説明したが、基礎となる概念は、API性能プロファイルを収集し報告するための方法を実施することが望ましいどんなコンピューティング装置またはシステムにも適用することができる。したがって、本発明の実施形態に関連して説明された諸方法およびシステムは、様々なアプリケーションおよび装置に適用することができる。本明細書では例示的なプログラミング言語、名前および実施例が、様々な選択肢を表す典型物として選ばれているが、これらの言語、名前および実施例は、限定的であることは意図されていない。本発明の実施形態によって達成される同じ、類似のまたは等価のシステムおよび方法を達成するオブジェクトコードを提供する多数のやり方があることが当業者には理解されよう。
本明細書で説明された様々な技術は、ハードウェアまたはソフトウェアに関連して、あるいは適切な場合には両方の組合せで実装することができる。したがって、本発明の方法および装置、または特定の態様またはその一部は、フロッピー(登録商標)ディスケット、CD−ROM、ハードドライブ、または他の任意のマシン読取り可能記憶媒体などの有形媒体で実施されたプログラムコード(すなわち命令)の形態を取ることができ、プログラムコードがコンピュータなどのマシン内にロードされ、マシンによって実行される場合、このマシンは、本発明を実施する装置となる。
本発明の態様について様々な図の好ましい実施形態に関連して説明してきたが、本発明から逸脱することなく本発明と同じ機能を実施するために、他の類似の実施形態が使用されてもよく、あるいは説明された諸実施形態に変更または追加を加えてもよいことを理解されたい。さらに、とりわけ無線ネットワーク化された装置の数が増大し続けているので、手持ち式装置のオペレーティングシステム、およびアプリケーション固有オペレーティングシステムを含めて様々なコンピュータプラットフォームが企図されていることを強調しておく。したがって、特許請求の範囲に記載された本発明は、いずれかの単一の実施形態に限定すべきではなく、添付の特許請求の範囲による広がりおよび範囲内で解釈すべきである。
APIプロファイラシステムの例示的なソフトウェアアーキテクチャを示すブロック図である。 本発明の態様による、APIを測定する例示的な方法を示す例示的なフローチャートである。 本発明の態様による、分散型API測定スキームの例示的な方法を示す例示的なフローチャートである。 例示的なホストコンピューティング環境を示すブロック図である。

Claims (19)

  1. アプリケーションプログラミングインターフェース(API)の性能を測定する方法であって、
    (a)測定するAPIのリストを作成するステップと、
    (b)前記リストから単一のターゲットアプリケーションプログラミングインターフェース(API)を選択するステップと、
    (c)前記ターゲットAPIへの呼出しをインターセプトし、タイミングおよびメモリ割当てデータを収集するステップと、
    (d)前記ターゲットAPIの前記タイミングおよびメモリ割当てデータを記録するステップであって、前記記録されたデータは記憶装置内に置かれるステップと、
    (e)測定された結果を併合して、前記収集されたタイミングおよびメモリ割当てデータのlog2を示すバケット化されたデータを含む結果テーブルにするステップと、
    (f)前記リスト内の各APIについてステップ(b)からステップ(e)を繰り返すステップと
    を備えることを特徴とする方法。
  2. 結果のデータベースを生成し、前記データベースをAPI性能データのユーザが使用できるようにするステップをさらに備えることを特徴とする請求項1に記載の方法。
  3. 各機能のヒストグラムを使用してグラフィカルユーザインターフェースを介して前記結果テーブルを提示するステップをさらに備えることを特徴とする請求項1に記載の方法。
  4. 前記ターゲットAPIによって呼び出された機能のリストを生成するステップであって、前記リストは、前記呼出しスタック上に決して同時に現れない機能を備える非干渉機能を備えるステップと、
    複数の非干渉機能についてのタイミングおよびメモリ割当てを同時に測定するステップと
    をさらに備えることを特徴とする請求項1に記載の方法。
  5. 前記非干渉機能の測定された実行結果を併合して、前記タイミングおよびメモリ割当てデータのlog2を示すバケット化されたデータを含む結果テーブルにするステップをさらに備えることを特徴とする請求項4に記載の方法。
  6. 各機能のヒストグラムを使用してグラフィカルユーザインターフェースを介して前記結果テーブルを提示するステップをさらに備えることを特徴とする請求項5に記載の方法。
  7. APIの性能を測定するプログラムは複数のユーザコンピュータ内に常駐し、
    記憶装置内の前記記録されたデータが閾値量を超えるかどうか確認するためにテストするステップと、
    前記閾値量を超えない場合は、メモリ割当ておよびタイミングデータを測定するユーザコンピュータ内の別のAPIを選択し、ステップ(b)からステップ(e)を繰り返すステップと、
    記憶装置内の前記記録されたデータが前記閾値量を超える場合は、記憶装置内の前記記録されたデータを中央サービス位置に提出するステップであって、前記中央サービス位置は記憶装置内にAPI測定データを有するステップと、
    中央記憶位置で、前記提出されたデータを記憶装置内の前記API測定データと集約するステップと、
    結果データベースを生成し、前記データベースをAPI性能データのユーザが使用可能とするステップとをさらに備えることを特徴とする請求項1に記載の方法。
  8. メモリ割当ておよびタイミングデータを測定するAPIを選択するステップは、ターゲットAPIを選択するために乱数発生器を使用するステップを備えることを特徴とする請求項1に記載の方法。
  9. アプリケーションプログラミングインターフェース(API)の性能データを取得するためのコンピュータシステムであって、
    ソフトウェア命令を実行するプロセッサを備え、前記ソフトウェア命令は、
    ターゲットのアプリケーションプログラミングインターフェース(API)のメモリ割当て測定値を生成する、前記APIによって機能が呼び出される回数を測定し記録するメモリ割当てプロファイラモジュールと、
    前記ターゲットAPIのタイミング測定値を生成する、前記APIに関連するタイミング情報を測定し記録するタイミングプロファイラモジュールと、
    前記ターゲットAPIの各呼出しごとに1回、前記メモリ割当てモジュールおよび前記タイミングプロファイラモジュールを実行し、同じ呼出しスタックに現れる2つのAPIを同時に測定することを回避する調整モジュールと、
    前記ターゲットAPIの前記メモリ割当て測定値と前記タイミング測定値とを組み合わせて、結果テーブルにする併合ツールモジュールと、
    前記結果テーブルのデータを、前記メモリ割当ておよびタイミング測定値のlog2バケット化による形で表示することができるユーザインターフェースモジュールと
    を備えることを特徴とするコンピュータシステム。
  10. 前記メモリ割当てプロファイラは、包含的メモリ割当て値と排他的メモリ割当て値を別々に測定し記録することを特徴とする請求項9に記載のコンピュータシステム。
  11. 前記ユーザインターフェースモジュールは、測定された各機能呼出しについて、前記結果テーブルのデータをヒストグラムの形へとレンダリングするグラフィカルユーザインターフェースをさらに備えることを特徴とする請求項9に記載のコンピュータシステム。
  12. アプリケーションプログラミングインターフェース(API)の性能データを取得する方法を実施するためのコンピュータ実行可能命令を含むコンピュータ読取り可能媒体であって、前記方法は、
    (a)測定するAPIのリストを作成するステップと、
    (b)前記リストから単一のターゲットAPIを選択するステップと、
    (c)前記ターゲットAPIへの呼出しをインターセプトし、タイミングおよびメモリ割当てデータを収集するステップと、
    (d)前記ターゲットAPIの前記タイミングおよびメモリ割当てデータを記録するステップであって、前記記録されたデータは記憶装置内に置かれるステップと、
    (e)測定された結果を併合して、前記収集されたタイミングおよびメモリ割当てデータのlog2を示すバケット化されたデータを含む結果テーブルにするステップと、
    (f)前記リスト内の各APIについてステップ(b)からステップ(e)を繰り返すステップと
    を備えることを特徴とするコンピュータ読取り可能媒体。
  13. 結果のデータベースを生成し、前記データベースをAPI性能データのユーザが使用できるようにするステップをさらに備えることを特徴とする請求項12に記載のコンピュータ読取り可能媒体。
  14. 各機能のヒストグラムを使用してグラフィカルユーザインターフェースを介して前記結果テーブルを提示するステップをさらに備えることを特徴とする請求項12に記載のコンピュータ読取り可能媒体。
  15. 前記ターゲットAPIによって呼び出された機能のリストを生成するステップであって、前記リストは、前記呼出しスタック上に決して同時に現れない機能を備える非干渉機能を備えるステップと、
    複数の非干渉機能についてのタイミングおよびメモリ割当てを同時に測定するステップと
    をさらに備えることを特徴とする請求項12に記載のコンピュータ読取り可能媒体。
  16. 前記非干渉機能の測定された実行結果を併合して、前記タイミングおよびメモリ割当てデータのlog2を示すバケット化されたデータを含む結果テーブルにするステップをさらに備えることを特徴とする請求項15に記載のコンピュータ読取り可能媒体。
  17. 各機能のヒストグラムを使用してグラフィカルユーザインターフェースを介して前記結果テーブルを提示するステップをさらに備えることを特徴とする請求項16に記載のコンピュータ読取り可能媒体。
  18. 記憶装置内の前記記録されたデータが閾値量を超えるかどうか確認するためにテストするステップと、
    前記閾値量を超えない場合は、メモリ割当ておよびタイミングデータを測定する別のAPIを選択し、ステップ(b)からステップ(e)を繰り返すステップと、
    記憶装置内の前記記録されたデータが前記閾値量を超える場合は、記憶装置内の前記記録されたデータを中央サービス位置に提出するステップであって、前記中央サービス位置は記憶装置内のAPI測定データを有する、ステップと、
    中央記憶位置で、前記提出されたデータを記憶装置内の前記API測定データと集約するステップと、
    結果データベースを生成し、前記データベースをAPI性能データのユーザが使用可能とするステップと
    をさらに備えることを特徴とする請求項12に記載のコンピュータ読取り可能媒体。
  19. メモリ割当ておよびタイミングデータを測定するAPIを選択するステップは、ターゲットAPIを選択するために乱数発生器を使用するステップを備えることを特徴とする請求項12に記載のコンピュータ読取り可能媒体。
JP2009515395A 2006-06-16 2007-05-08 Api性能プロファイルを収集し報告するための自動化された方法およびシステム Active JP5249206B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/454,714 2006-06-16
US11/454,714 US7895579B2 (en) 2006-06-16 2006-06-16 Automated method and system for collecting and reporting API performance profiles
PCT/US2007/011193 WO2007149156A2 (en) 2006-06-16 2007-05-08 An automated method and system for collecting and reporting api performance profiles

Publications (2)

Publication Number Publication Date
JP2009540463A true JP2009540463A (ja) 2009-11-19
JP5249206B2 JP5249206B2 (ja) 2013-07-31

Family

ID=38833905

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009515395A Active JP5249206B2 (ja) 2006-06-16 2007-05-08 Api性能プロファイルを収集し報告するための自動化された方法およびシステム

Country Status (6)

Country Link
US (2) US7895579B2 (ja)
EP (1) EP2035955B1 (ja)
JP (1) JP5249206B2 (ja)
KR (1) KR20090017586A (ja)
CN (1) CN101553802B (ja)
WO (1) WO2007149156A2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012118777A (ja) * 2010-12-01 2012-06-21 Ricoh Co Ltd 情報処理システム、情報処理装置、方法、プログラムおよび記録媒体
JP2014523022A (ja) * 2011-06-20 2014-09-08 マイクロソフト コーポレーション コンピュータにより実行される方法及びコンピュータシステム

Families Citing this family (69)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7266726B1 (en) 2003-11-24 2007-09-04 Time Warner Cable Inc. Methods and apparatus for event logging in an information network
US8302111B2 (en) 2003-11-24 2012-10-30 Time Warner Cable Inc. Methods and apparatus for hardware registration in a network device
US9213538B1 (en) 2004-02-06 2015-12-15 Time Warner Cable Enterprises Llc Methods and apparatus for display element management in an information network
US8078669B2 (en) 2004-02-18 2011-12-13 Time Warner Cable Inc. Media extension apparatus and methods for use in an information network
US7895579B2 (en) * 2006-06-16 2011-02-22 Microsoft Corporation Automated method and system for collecting and reporting API performance profiles
US7913233B2 (en) * 2006-09-28 2011-03-22 Bank Of America Corporation Performance analyzer
US8370818B2 (en) 2006-12-02 2013-02-05 Time Warner Cable Inc. Methods and apparatus for analyzing software interface usage
KR100921514B1 (ko) * 2006-12-05 2009-10-13 한국전자통신연구원 성능 예측 기능을 제공하는 소프트웨어 개발 장치 및 방법
US8713513B2 (en) * 2006-12-13 2014-04-29 Infosys Limited Evaluating programmer efficiency in maintaining software systems
US8117601B2 (en) * 2007-11-14 2012-02-14 Microsoft Corporation Internal test and manipulation of an application
US8549347B1 (en) 2010-12-20 2013-10-01 Amazon Technologies, Inc. Techniques for network replication
US8321843B2 (en) * 2009-02-09 2012-11-27 Tranxition Corporation Automatic analysis of an application's run-time settings
US8756564B2 (en) * 2009-05-29 2014-06-17 International Business Machines Corporation Techniques for providing environmental impact information associated with code
US8554811B2 (en) * 2009-11-10 2013-10-08 Microsoft Corporation Software routine fingerprints in performance data
CN102486731B (zh) * 2009-11-30 2015-12-09 国际商业机器公司 增强软件的软件调用栈的可视化的方法、设备和系统
US8645914B2 (en) 2010-01-22 2014-02-04 AgentSheets, Inc. Conversational programming
KR101635816B1 (ko) 2010-07-02 2016-07-04 삼성전자주식회사 결정적 프로그레스 인덱스를 이용한 스레드 프로그레스 트래킹 방법 및 장치
US8887122B2 (en) * 2010-11-23 2014-11-11 Red Hat, Inc. Find and track information of interface usage of software libraries by other software
US8938706B2 (en) * 2010-11-23 2015-01-20 Red Hat, Inc. Providing customized visualization of application binary interface/application programming interface-related information
US8776036B2 (en) 2010-11-23 2014-07-08 Red Hat, Inc. Determining support criteria for shared libraries based on their priority levels
US8863108B2 (en) * 2010-11-23 2014-10-14 Red Hat, Inc. Finding out if software will run on an operating system without installing that software
US8707276B2 (en) * 2011-01-07 2014-04-22 Mastercard International Incorporated Method and system for managing programmed applications in an open API environment
US9032204B2 (en) 2011-01-07 2015-05-12 Mastercard International Incorporated Methods and systems for providing a signed digital certificate in real time
US9083534B2 (en) 2011-01-07 2015-07-14 Mastercard International Incorporated Method and system for propagating a client identity
US9436534B2 (en) * 2011-01-17 2016-09-06 Infosys Limited Method and system for preemptive detection of occurrence of faulty conditions based on resource usage
CN102203730B (zh) * 2011-05-20 2013-10-02 华为技术有限公司 开放应用程序编程接口选择方法及设备
US8650550B2 (en) * 2011-06-07 2014-02-11 Blackberry Limited Methods and devices for controlling access to computing resources
US8924914B2 (en) * 2011-06-14 2014-12-30 Sap Se Application creation tool toolkit
US8862950B1 (en) * 2011-09-22 2014-10-14 Amazon Technologies, Inc. Testing the operation of an application programming interface
US20130205019A1 (en) * 2012-02-07 2013-08-08 William Oellermann Systems and methods for managing api interactions
US9183108B2 (en) * 2012-03-27 2015-11-10 Microsoft Technology Licensing, Llc Logical grouping of profile data
US8909770B2 (en) * 2012-06-04 2014-12-09 Brocade Communications Systems, Inc. Performance estimator for network devices
US20140068569A1 (en) * 2012-08-31 2014-03-06 Microsoft Corporation User directed profiling
US9015685B2 (en) 2013-03-01 2015-04-21 International Business Machines Corporation Code analysis for simulation efficiency improvement
US10843084B2 (en) * 2013-10-30 2020-11-24 Nvidia Corporation Method and system for gathering time-varying metrics
US9934122B2 (en) 2014-07-09 2018-04-03 Microsoft Technology Licensing, Llc Extracting rich performance analysis from simple time measurements
US9128729B1 (en) 2014-09-08 2015-09-08 Quanta Computer Inc. System and method for automatically configuring bios performance profiles
US9646092B2 (en) * 2014-10-10 2017-05-09 Adp, Llc Centralized application programming interface monitoring tool
US20160225042A1 (en) * 2015-02-02 2016-08-04 Linkedln Corporation Determining a cost of an application programming interface
US9846607B2 (en) 2015-03-12 2017-12-19 Nvidia Corporation Method and system for associating crash reports with end user analytics
CN106843824A (zh) * 2015-12-03 2017-06-13 财团法人工业技术研究院 图形用户界面的执行方法、追踪方法与电子装置
US10884761B2 (en) 2016-03-22 2021-01-05 Lenovo Enterprise Solutions (Singapore) Pte. Ltd Best performance delivery in heterogeneous computing unit environment
US10860499B2 (en) * 2016-03-22 2020-12-08 Lenovo Enterprise Solutions (Singapore) Pte. Ltd Dynamic memory management in workload acceleration
CN106027325B (zh) * 2016-05-10 2018-11-06 华中科技大学 一种网盘应用程序编程接口的测量方法和系统
US9892253B1 (en) * 2016-06-20 2018-02-13 Amazon Technologies, Inc. Buffer overflow exploit detection
CN106201864A (zh) * 2016-06-27 2016-12-07 乐视控股(北京)有限公司 一种应用程序编程接口api测试方法、装置及移动设备
US9871905B1 (en) * 2016-08-09 2018-01-16 Sprint Communications Company L.P. Systems and methods for customized delivery of virtually installed applications
CN106294157A (zh) * 2016-08-11 2017-01-04 浪潮(北京)电子信息产业有限公司 一种操作系统测试方法及装置
US9753745B1 (en) * 2016-08-17 2017-09-05 TCL Research America Inc. System and method for system function-flow optimization utilizing application programming interface (API) profiling
US10445151B1 (en) * 2016-09-14 2019-10-15 Google Llc Distributed API accounting
US9990135B2 (en) 2016-09-23 2018-06-05 Apple Inc. Providing memory usage analysis by attributing memory allocations to development components
US20180232442A1 (en) * 2017-02-16 2018-08-16 International Business Machines Corporation Web api recommendations
EP3635540A4 (en) * 2017-04-25 2021-02-24 Intento, Inc. INTENT-BASED API ORGANIZATION
US10776798B2 (en) * 2017-04-25 2020-09-15 Comscore, Inc. Device identification systems and methods
CN109710396B (zh) * 2017-10-26 2023-08-22 华为技术有限公司 一种信息采集及内存释放的方法及装置
US11716558B2 (en) 2018-04-16 2023-08-01 Charter Communications Operating, Llc Apparatus and methods for integrated high-capacity data and wireless network services
US10785017B2 (en) * 2018-04-24 2020-09-22 Microsoft Technology Licensing, Llc Mitigating timing attacks via dynamically scaled time dilation
US10891017B1 (en) 2018-08-25 2021-01-12 Sprint Communications Company L.P. Rotating icon selection and interaction software development kit (SDK)
US11129213B2 (en) 2018-10-12 2021-09-21 Charter Communications Operating, Llc Apparatus and methods for cell identification in wireless networks
US11129171B2 (en) 2019-02-27 2021-09-21 Charter Communications Operating, Llc Methods and apparatus for wireless signal maximization and management in a quasi-licensed wireless system
US10467062B1 (en) * 2019-03-11 2019-11-05 Coupang, Corp. Systems and methods for managing application programming interface information
CN109933508B (zh) * 2019-03-25 2023-02-24 北京百度网讯科技有限公司 用于发送信息的方法和装置
CN110457196B (zh) * 2019-08-16 2023-10-24 腾讯科技(深圳)有限公司 函数执行时间的获取方法及装置
US10936384B1 (en) * 2019-10-23 2021-03-02 Sap Se Performance testing of OData APIs
US11026205B2 (en) 2019-10-23 2021-06-01 Charter Communications Operating, Llc Methods and apparatus for device registration in a quasi-licensed wireless system
US10951738B1 (en) 2020-08-06 2021-03-16 Bank Of America Corporation Automatic API integration
US10956244B1 (en) * 2020-08-26 2021-03-23 Coupang Corp. Systems and methods for automated application programming interface evaluation and migration
CN112039913A (zh) * 2020-09-07 2020-12-04 上海浦东发展银行股份有限公司 一种服务端api调用方法、装置及存储介质
KR102617002B1 (ko) * 2022-11-28 2023-12-27 쿠팡 주식회사 애플리케이션의 성능을 측정하는 장치 및 방법

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08314771A (ja) * 1995-05-10 1996-11-29 Internatl Business Mach Corp <Ibm> アプリケーションの評価方法及びシステム
US20050071611A1 (en) * 2003-09-30 2005-03-31 International Business Machines Corporation Method and apparatus for counting data accesses and instruction executions that exceed a threshold
JP2005223847A (ja) * 2004-02-09 2005-08-18 Intelligent Cosmos Research Institute ネットワーク異常検出装置、ネットワーク異常検出方法およびネットワーク異常検出プログラム

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5732273A (en) * 1995-08-11 1998-03-24 Digital Equipment Corporation System for monitoring compute system performance
US5615323A (en) * 1994-11-04 1997-03-25 Concord Communications, Inc. Displaying resource performance and utilization information
US5748878A (en) * 1995-09-11 1998-05-05 Applied Microsystems, Inc. Method and apparatus for analyzing software executed in embedded systems
US5920719A (en) * 1995-11-06 1999-07-06 Apple Computer, Inc. Extensible performance statistics and tracing registration architecture
US6330008B1 (en) * 1997-02-24 2001-12-11 Torrent Systems, Inc. Apparatuses and methods for monitoring performance of parallel computing
US6839725B2 (en) 2000-05-16 2005-01-04 Sun Microsystems, Inc. Dynamic adaptive tenuring of objects
US7216160B2 (en) 2001-10-31 2007-05-08 Sun Microsystems, Inc. Server-based application monitoring through collection of application component and environmental statistics
GB0126310D0 (en) 2001-11-02 2002-01-02 Britax Aircraft Interiors Uk L Passenger seat
US7266810B2 (en) * 2002-04-09 2007-09-04 Hewlett-Packard Development Company, Lp. Runtime profiling of platform-independent software applications
US6965978B2 (en) * 2003-05-15 2005-11-15 Microsoft Corporation Memory tracking tool
US7457872B2 (en) * 2003-10-15 2008-11-25 Microsoft Corporation On-line service/application monitoring and reporting system
US7895579B2 (en) 2006-06-16 2011-02-22 Microsoft Corporation Automated method and system for collecting and reporting API performance profiles

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08314771A (ja) * 1995-05-10 1996-11-29 Internatl Business Mach Corp <Ibm> アプリケーションの評価方法及びシステム
US20050071611A1 (en) * 2003-09-30 2005-03-31 International Business Machines Corporation Method and apparatus for counting data accesses and instruction executions that exceed a threshold
JP2005223847A (ja) * 2004-02-09 2005-08-18 Intelligent Cosmos Research Institute ネットワーク異常検出装置、ネットワーク異常検出方法およびネットワーク異常検出プログラム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JPN6012036613; Shende, S., et al.: 'A Performance Interface for Component-Based Applications' Procedings of the International Parallel and Distributed Processing Symposium(IPDPS'03) , 20030426, ページ番号無し(全8頁), IEEE *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012118777A (ja) * 2010-12-01 2012-06-21 Ricoh Co Ltd 情報処理システム、情報処理装置、方法、プログラムおよび記録媒体
JP2014523022A (ja) * 2011-06-20 2014-09-08 マイクロソフト コーポレーション コンピュータにより実行される方法及びコンピュータシステム
US9785470B2 (en) 2011-06-20 2017-10-10 Microsoft Technology Licensing, Llc Memory management model and interface for unmodified applications

Also Published As

Publication number Publication date
US7895579B2 (en) 2011-02-22
WO2007149156A2 (en) 2007-12-27
CN101553802A (zh) 2009-10-07
EP2035955A4 (en) 2009-11-04
EP2035955A2 (en) 2009-03-18
JP5249206B2 (ja) 2013-07-31
KR20090017586A (ko) 2009-02-18
WO2007149156A3 (en) 2008-02-14
US20110113405A1 (en) 2011-05-12
US9027000B2 (en) 2015-05-05
EP2035955B1 (en) 2017-04-26
US20070294673A1 (en) 2007-12-20
CN101553802B (zh) 2013-02-13

Similar Documents

Publication Publication Date Title
JP5249206B2 (ja) Api性能プロファイルを収集し報告するための自動化された方法およびシステム
US8051332B2 (en) Exposing application performance counters for .NET applications through code instrumentation
Engel et al. Evaluation of microservice architectures: A metric and tool-based approach
US8938729B2 (en) Two pass automated application instrumentation
US9588820B2 (en) Cloud architecture recommender system using automated workload instrumentation
US8938719B2 (en) System and method for performance assurance of applications
Ren et al. Google-wide profiling: A continuous profiling infrastructure for data centers
US8578348B2 (en) System and method of cost oriented software profiling
Theisen et al. Approximating attack surfaces with stack traces
US20080127109A1 (en) Method and system for generating and displaying function call tracker charts
EP2192491B1 (en) System and method of implementing a concurrency profiler
Feitosa et al. Investigating the effect of design patterns on energy consumption
US20090307347A1 (en) Using Transaction Latency Profiles For Characterizing Application Updates
EP3021224A1 (en) Method and apparatus for producing a benchmark application for performance testing
Allier et al. Deriving coupling metrics from call graphs
Browne et al. Comprehensive, open‐source resource usage measurement and analysis for HPC systems
Arisholm Empirical assessment of the impact of structural properties on the changeability of object-oriented software
US20070168742A1 (en) Isolating code modules
Fedorova et al. Performance comprehension at WiredTiger
Diep et al. Probe distribution techniques to profile events in deployed software
Alcocer et al. Tracking performance failures with rizel
Staron et al. Metrics for software design and architectures
Arias et al. Constructing a resource usage view of a large and complex software-intensive system
Hansen Towards comparative profiling of parallel applications with pperfdb
Kvam et al. Cynical reengineering

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100304

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120704

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120713

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121015

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121109

RD13 Notification of appointment of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7433

Effective date: 20121211

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20121211

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130212

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: 20130312

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130411

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 5249206

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160419

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250