JP6479844B2 - 分散システムのメッセージフローを監視するための動的ボーダーライントレーシング - Google Patents

分散システムのメッセージフローを監視するための動的ボーダーライントレーシング Download PDF

Info

Publication number
JP6479844B2
JP6479844B2 JP2016556003A JP2016556003A JP6479844B2 JP 6479844 B2 JP6479844 B2 JP 6479844B2 JP 2016556003 A JP2016556003 A JP 2016556003A JP 2016556003 A JP2016556003 A JP 2016556003A JP 6479844 B2 JP6479844 B2 JP 6479844B2
Authority
JP
Japan
Prior art keywords
function
overriding
library
trampoline
tracing
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.)
Active
Application number
JP2016556003A
Other languages
English (en)
Other versions
JP2017511534A (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.)
NEC Laboratories America Inc
Original Assignee
NEC Laboratories America Inc
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 NEC Laboratories America Inc filed Critical NEC Laboratories America Inc
Publication of JP2017511534A publication Critical patent/JP2017511534A/ja
Application granted granted Critical
Publication of JP6479844B2 publication Critical patent/JP6479844B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Description

この出願は、2014年3月31日に出願された、「Method and Apparatus to do Dynamic Border Line Tracing for Tracking Message Flows Across Distributed Systems」と題する米国仮出願第61/972,539号を基礎とし、その開示の全てをここに取り込む。
本発明は、分散システム、特に分散システムのメッセージフローを監視(tracking)するための動的ボーダーライントレーシングに関する。
本明細書では、以下の文献を参照する。
[1].Tuxedo http://docs.oracle.com/cdE1526101/'tuxedo/docs11gr1/int/intatm.html.
[2].LD_PRELOAD http://www.linuxjournal.com/article/7795.
[3].Galen Hunt and Doug Brubacher, Detours: Binary Interception of Win32 Functions, in Third USENIX Windows NT Symposium, USENIX, July 1999.
[4].C.-K. Luk, R. Cohn, R. Muth, H. Patil, A. Klauser, G. Lowney, S. Wallace, V. J. Reddi, and K. Hazelwood. Pin: building customized program analysis tools with dynamic instrumentation. In Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation, PLDI '05, pages 190-200, New York, NY, USA, 2005. ACM.
[5].B. M. Cantrill, M. W. Shapiro, and A. H. Leventhal. Dynamic instrumentation of production systems. In Proceedings of the annual conference on USENIX Annual Technical Conference, ATEC '04, pages 2-2, Berkeley, CA, USA, 2004. USENIX Association.
[6].Eric Koskinen and John Jannotti. 2008. BorderPatrol: isolating events for black-box tracing. SIGOPS Oper. Syst. Rev. 42, 4 (April 2008), 191-203. DOI=10.1145/1357010.1352613 http://doi.acm.org/10.1145/1357010.1352613.
[7].Bryan Buck and Jeffrey K. Hollingsworth. 2000. An API for Runtime Code Patching. Int. J. High Perform. Comput. Appl. 14, 4 (November 2000), 317-329. DOI= 10.1177/109434200001400404 http://dx.doi.org/l0.1177/109434200001400404
[8].SystemTap http://sourcevvare.org/systemtap/.
[9].Arora, N.; Hui Zhang; Junghwan Rhee; Yoshihira, K.; Guofei Jiang, "iProbe: A lightweight user-level dynamic instrumentation tool," Automated Software Engineering (ASE), 2013 IEEE/ACM 28th International Conference on, vol., no., pp.742,745, 11-15 Nov. 2013.
分散システムにおいて正確なリクエストトレースを取得することは、困難なタスクとなることがある。システムコールログを用いてアプリケーションから提供される従来のログデータは、通常、エンドツーエンドのトランザクションフローを生成するには不十分である。アプリケーションからのトレースログにおける情報は、ユーザ要求データ、またはフローを生成できないほどに少ないデバッグデータのいずれかを含む。一方、システムコールは、低い階層構造であり、問題をデバッグするのに開発者にとって有用でないことが多い(通常、ユーザ空間情報がより有益である)。
分散アプリケーションでは、リクエストが数個のモジュールにおよび、実行フローが分散システム全域のノードにおけるモジュールに渡って多重化される。これらのモジュールは、通常、異なるチームによって書かれており、それらの間の通信(API関数)のクリアレイヤ(clear layer)を提供する。API関数をキャプチャすることは、高オーバヘッドを招くことのない、モジュール間通信を示す最適な粒度をもたらす。本発明では、この通信のレイヤを利用して、分散システムのトランザクションフローを生成することを目的とする。加えて、エンドツーエンドトランザクションフローの監視を示すために、メッセージキューイングシステム(例えば、Tuxedo[1])のアプローチから生成したメッセージログの分析を提示する。
動的インストルメンテーションは、よく研究されている分野であり、そのようなインストルメンテーション能力を提供するいくつかのツールが存在する([4]、[5])。これらのツールは、通常、高いオーバヘッドを有し、ソースコードへのアクセスを必要とすることもある。我々は、軽いブラックボックスメカニズムを必要とするため、ここでは、ソースコードのいかなる修正も無く、内部でインストルメンテーションのターンオン及びオフを可能にする動的インストルメンテーションの基礎としてiProbeを使用する。
動的ボーダーライントレーシングに最も近い研究は、BorderPatrol[6]である。Eric Koskinen and John Jannotti. 2008. BorderPatrol: isolating events for black-box tracing. SIGOPS Oper. Syst. Rev. 42, 4(April2008), 191203.DOI=10.1145/1357010.1352613, http://doi.acm.Org/l0.1145/1357010.1352613.を参照されたい。
BorderPatrolでは、APIライブラリをトレーシングすることを検討している。これらのAPIコールは、トランザクションフローを生成するためにブレッドクラム(breadcrumbs)として使用されることがある。しかしながら、我々のアプローチとは異なり、BorderPatrolは、システムライブラリAPIコールに注目しているが、いかなる動的インストルメンテーションファシリティを提供することはない。他の動的インストルメンテーションツールには、PIN[4]、dyninst[7]、SystemTap[8]、DTrace[5]等を含む。しかしながら、それらのツールは、超高オーバヘッドを有する、またはユーザ空間関数をキャプチャすることが不可能である。
したがって、分散システムのメッセージフローを監視する動的ボーダーライントレーシングが必要となる。
本発明は、分散システムにおいて、アプリケーションプログラムインタフェースAPIレベルでアプリケーションフローをトレーシングする分散システムのコントローラに関する。
前記トレーシングは、
ホットパッチングのためのプレースホルダを有するオーバライディングライブラリを生成し、トランポリン及びホットパッチノーオペレーション(NOP)をセットアップし、
アプリケーションの実行時における任意のステップにおいて、トリガオンされているインストルメンテーション前記アプリケーションをパッチし、
オーバライドインストルメンテーション関数で、全てにプロセス名が添えられて共有ログファイルで保存されている、関連するコールパラメータ及び戻り値をキャプチャし、
ホットパッチングを終了し、
インストルメンテーション期間が終了すると、分析のために全てのログをプッシュし、
トランザクションログを種々のAPIの境界から分析し、実行フローを再構成することを含む。
本発明の他の態様は、分散システムにおける動的インストルメンテーションをコンピュータで実行可能にするための命令が記録された記録媒体であって、
分散システムにおいて、アプリケーションプログラムインタフェースAPIレベルでアプリケーションフローをトレーシングさせるための命令が記録され、
前記トレーシングは、
ホットパッチングのためのプレースホルダを有するオーバライディングライブラリを生成し、トランポリン及びホットパッチノーオペレーション(NOP)をセットアップし、
アプリケーションの実行時における任意のステップにおいて、トリガオンされているインストルメンテーション前記アプリケーションをパッチし、
オーバライドインストルメンテーション関数で、全てにプロセス名が添えられて共有ログファイルで保存されている、関連するコールパラメータ及び戻り値をキャプチャし、
ホットパッチングを終了し、
インストルメンテーション期間が終了すると、分析のために全てのログをプッシュし、
トランザクションログを種々のAPIの境界から分析し、実行フローを再構成することを含む。
本発明のさらなる他の態様は、分散システムにおける動的インストルメンテーションを可能にするコンピュータで実行される方法であって、
分散システムにおいて、アプリケーションプログラムインタフェースAPIレベルでアプリケーションフローをトレーシングし、
前記トレーシングは、
ホットパッチングのためのプレースホルダを有するオーバライディングライブラリを生成し、トランポリン及びホットパッチノーオペレーション(NOP)をセットアップし、
アプリケーションの実行時における任意のステップにおいて、トリガオンされているインストルメンテーション前記アプリケーションをパッチし、
オーバライドインストルメンテーション関数で、全てにプロセス名が添えられて共有ログファイルで保存されている、関連するコールパラメータ及び戻り値をキャプチャし、
ホットパッチングを終了し、
インストルメンテーション期間が終了すると、分析のために全てのログをプッシュし、
トランザクションログを種々のAPIの境界から分析し、実行フローを再構成することを含む。
上述及び他の特徴、並びに利点は、本原理の実施形態の後述する詳細な説明を図面と併せて読めば、当業者にとって明らかになるであろう。
図1は、本発明の動的ボーダーライントレーシングのコンポーネントを示している。
図2は、ターゲットアプリケーションにおいて定義されたAPI関数を参照することでオーバライディングライブラリを生成することが必要なユーザを図示している。
図3は、本発明のオーバライディングラッパ関数及びホットパッチングの状態図である。
図4は、本発明の分析後のアーギュメント及び戻り値のキャプチャリングを示す図である。
図5は、分散システムのメッセージフローを監視する本発明の動的ボーダーライントレーシングを実行するコンピュータまたはコントローラの一例を示す図である。
本発明は、APIレベル(アプリケーションの境界)において、トランザクションフローを監視し、トランザクションフローを推定及び監視するためにブラックボックスアプローチを用いる、動的ボーダーライントレーシングと呼ばれる新しいモニタリングソリューションを提供する。このソリューションは、トレーシングを動的にターンオン/オフすることを可能にする動的インストルメンテーションツール、iProbe[9]と統合されている。
本発明のソリューションは、2つの態様、(1)動的ボーダーラインユーザ空間トレーシングと、(2)分析とを含む。動的ボーダーラインユーザ空間トレーシングでは、ソリューションは、ミドルウェアのターゲットとされるAPI関数を、該関数と同一のシグネチャのラッパでオーバライドするために、ライブラリインターポジション技術(例えば、LD_PRELOAD)を使用する。ラッパは、関数をインストルメントし、実行時間における出力をキャプチャすることを可能にする。加えて、iProbe[9]と呼ばれる、本出願人が先に提案した技術を修正することで、これを動的にキャプチャできる。分析では、当該ソリューションは、データ分析を我々のログに適用して、メッセージキューイングシステムのエンドツーエンドトレースを作成する。我々のツールは、種々のAPIを通じて渡されるメッセージコンテンツ及び戻り値をキャプチャし、それらをユーザレベルトランザクションと一意にリンクさせる。
動的ボーダーライントレーシングをアプリケーションに適用するプロセスは、広義には図1に示す5つのステップに分割できる。
1.初期化及びセットアップ:このステップは、全てのインストルメンテーションを初期化し、セットアップする。開発者は、オーバライディングライブラリを生成し、トランポリン及びホットパッチNOPをセットアップする必要がある。
2.ホットパッチ開始:アプリケーションの実行時における任意のステップを実行すると、該アプリケーション、トリガオンされているインストルメンテーションパッチできる。
3.インターセプト/オーバライド関数コールパラメータ及び戻り値:オーバライドインストルメンテーション関数は、関連するコールパラメータ及び戻り値をキャプチャし、それら全てをプロセス名と共に共有ログファイルに保存する。
4.ホットパッチ終了:インストルメンテーション期間が終了すると、本発明は、ホットパッチングを終了し、分析用に全てのログをプッシュできる。
5.トランザクションの分析及び相関付け:このステップは、トランザクションログを種々のAPIの境界から分析し、実行フローを再構成する。
ステップ1、初期化及びセットアップ:我々のアプローチで用いる第1のステップは、ホットパッチングのためのプレースホルダを有するオーバライディングライブラリを生成することである。図2を参照されたい。これは、アプリケーションを実行しているときにシームレスなインストルメンテーションを可能にする。オーバライディング関数は、ターゲット関数と完全に同一のシグネチャを有するラッパ関数であり、これらの関数は、元の関数を呼び出し、当該プロセスでは実際のロジックを修正することなく、実関数に渡されているアーギュメント及び戻り値をキャプチャすることが可能である。オーバライディングターゲット関数におけるキートリック(Key trick)は、動的にリンクされたライブラリの共有ライブラリのレイジーリンク(lazy linking)メカニズムである。
Linux(登録商標)における一例として、コマンドLD_PRELOADは、任意の他のシンボルがリンクされる前に実行可能なターゲットのシンボルライブラリへ、LD_PRELOADパスで定義された関数を事前にロードするよう動的リンカに指示する。これは、ライブラリに存在するシグネチャを有する任意のシンボルが呼び出される場合に、LD_PRELOADパスに存在する関数が、同一のシグネチャを有する他のシンボルよりも優先することを保証する。この技術を使用することで、トランポリン関数(実際の関数を呼び出すために中継点として働く媒介関数)を容易に構成できる。これは、トランポリン関数のボディから同一のシンボル名を有する次の関数を呼び出すことによって行われる。
図3における状態1及び2は、積分値を返す、ターゲット関数fooに関するトランポリン関数をどのように作成できるかを示している。ここで、トランポリン関数foo_wrapは、シンボルfooと同一のシグネチャ及び同一の名称を有し、オーバライディングライブラリに置かれる。我々は、オーバライディングライブラリから、fooと同一名称を有する次のシンボルを呼び出す。同時に、fooに渡される戻り値及びアーギュメント/パラメータを記録するためにロギング関数を使用する。
図3に示すように、状態3は、コールドパッチされたバイナリ(「ホットパッチング」の準備ができている)を示し、我々は、<NOP>命令(これは、最も一般的なx86 32ビット及び64ビットアーキテクチャでは、lengthが2の命令90である)を有するトランポリンにおけるロギング関数への呼出しを修正する。同時に、トランポリンにおけるログ関数の命令アドレス/オフセットをキャプチャし、それを「ColdPatch List」に保存する。
ステップ2のホットパッチ開始、ステップ3のインターセプト関数コールパラメータ及び戻り値、並びにステップ4のホットパッチ終了:ランタイム段階で、ロギング関数の呼出しから戻ってパッチするため、これらのオフセットを使用することで、インストルメンテーションを有効にする。インストルメンテーション期間が過ぎると、ロギング関数は<NOP>命令から戻ってパッチすることができる。
トランポリンベースのインストルメンテーションにおけるオーバヘッドの大部分は、実際にロギングすること、およびI/Oオペレーションを実行することでもたらされる。ロギングのコストを償却するために最適化されたメカニズムでさえも、いまだにオーバヘッドを完全に除去しない。我々の技術では、インストルメンテーションのロギングの態様を動的に有効にすることが可能であり、同時にソースコードまたはバイナリでさえ必要とする修正が存在しない。
ステップ5のトランザクションの分析及び相関付け:図4は、トランザクションと一意にリンクできるメッセージ識別子をキャプチャ及び生成するために動的ボーダーライントレーシングをどのように使用できるかを示している。トランポリン関数は、他のサービスへ送信されるメッセージコンテンツをハッシュすることでメッセージIDを生成する。ほとんどのメッセージベースのシステムでは、同一のコンテンツがエンドサービスプロセスに転送され、これがメッセージIDを用いてメッセージを一意に識別することを可能にし、同様のアプローチは、システムのトランザクション全体を監視するために、戻り値に適用できる。
代替メカニズムは、ターゲットミドルウェアによって内部で使用されるメッセージIDをキャプチャし、それを識別子として用いることである。しかしながら、これはシステムの少しのドメイン知識を必要とするため、識別子は容易に見つからないことがある。
本発明は、ハードウェア、ファームウェア、ソフトウェア、またはそれらの組み合わせによって実現される。好ましくは、本発明は、プロセッサ、データストレージシステム、揮発性及び不揮発性メモリおよび/またはストレージ素子、少なくとも1つの入力装置、並びに少なくとも1つの出力装置を備えるプログラム可能なコンピュータまたはコントローラによりコンピュータプログラムを実行することで実現される。さらなる詳細は、その開示の全てを取り込む、米国特許第8380557号で説明される。
一例として、本システムをサポートするコンピュータまたはコントローラについて、図5のブロック図を用いて説明する。本コンピュータまたはコントローラは、好ましくは、CPUバスに接続された、プロセッサ、ランダムアクセスメモリ(RAM)、プログラムメモリ(好ましくは、フラッシュROMのような書き換え可能なリードオンリーメモリ(ROM))及びインプット/アウトプット(INPUT/OUTPUT:I/O)コントローラを備える。本コンピュータまたはコントローラは、CPUバスによってハードディスクと接続されたハードドライブコントローラを備えていてもよい。ハードディスクは、本発明を実現するためのアプリケーションプログラムやデータを保存するために使用される。アプリケーションプログラムはRAMやROMで保存されていてもよい。I/Oコントローラは、I/OバスによりI/Oインタフェースと接続される。I/Oインタフェースは、シリアルリンク、ローカルエリアネットワーク、無線リンク及びパラレルリンク等の通信リンクを通じて、アナログまたはデジタル形式でデータを送受信する。I/Oバスには、ディスプレイ、キーボード及びポインティングデバイス(マウス)が接続されていてもよい。また、I/Oインタフェース、ディスプレイ、キーボード及びポインティングデバイス用に、セパレートコネクション(セパレートバス)を使用してもよい。プログラム可能な処理システムは、事前にプログラムされていてもよく、他のソース(例えば、フロッピーディスク、CD−ROM、あるいは他のコンピュータ)からプログラムをダウンロードすることでプログラム(または再プログラム)されてもよい。
コンピュータプログラムは、汎用または特別な目的を持つプログラム可能なコンピュータで読み取ることができる、機械で読み取り可能なストレージメディアまたは装置(例えば、プログラムメモリまたは磁気ディスク)に格納される。コンピュータプログラムは、ストレージメディアまたは装置から本明細書に記載された手順を実行するコンピュータで読み出される、該コンピュータの設定及び制御動作のためのものである。本発明のシステムには、本明細書に記載した機能を実行する、特定の及び事前に定義された方法でコンピュータに動作させるように構成されたコンピュータプログラムを含む、コンピュータで読み取り可能なストレージメディアも考慮される。
上述したように、以下は、本発明の動的ボーダーライントレーシングの有利な特徴の一部であることを理解できる。
低オーバヘッドのモニタリング。
LD_PRELOAD[2]、またはDETOURS[3]等のライブラリ介在アプローチの利用。
ブラックボックスモニタリング。我々は、APIシグネチャのみを知ればよく、いかなるソースコードも修正する必要がない。
インストルメンテーションがターンオンされないとき、またはインストルメントされないセグメントに影響がない(ゼロプローブ効果)。
容易な配備による独立したプラットフォーム(カーネル/特殊コンパイラ/VMまたはランタイムインタフェース等の変更なし)。
インストルメンテーションのユーザ定義範囲。
軽く、トランスペアレントな記録メカニズム。
ランタイム時における適用。したがって、アプリケーションを再起動する必要が無い。
ソースコードの修正が不要、またはバイナリインジェクションが不要。
動的ボーダーライントレーシングがその種の第1のツールであり、分散システムをトレーシングするのに有益な見識を提供すると考えられている。特に、我々のアプローチの新規性は、ライブラリ介在技術及びホットトレーシング技術を新しい手法で組み合わせて、アプリケーションボーダーにおいてAPI関数をインストルメントするのに低オーバヘッド技術を提供することにある。
オーバライディング動的ライブラリ関数の利点は、ソースコードのいかなる修正もなく、それを適用できることである。しかしながら、欠点は、関数がオーバライドされると、インストルメンテーションをターンオフできないことである。動的インストルメンテーションは、インストルメンテーションに起因するオーバヘッドを許容できないため、ほとんどの製造レベルのソフトウェアにとって非常に望ましい特徴である。ここで提示する技術では、ライブラリ介在の利点と、iProbeの新しく軽い動的インストルメンテーションの利点とを組み合わせる。同時に、両方の欠点を回避する。
上述した説明は、あらゆる点で説明的かつ例示的なものであり、制限的なものではないと理解されるべきであり、本明細書で開示する本発明の範囲は、詳細な説明から決定されるべきではなく、特許法で認められた最大限の広さに基づいて解釈される特許請求の範囲から決定されるべきである。本明細書で示し、説明した実施形態は、本原理に関する例示にすぎないこと、また当業者は、本発明の範囲及び主旨から逸脱することなく、様々な変更を実施してもよいと理解されるべきである。当業者は、本発明の範囲及び主旨から逸脱することなく、他の様々な特徴の組み合わせを実施できる。

Claims (18)

  1. 分散システムのためのコントローラであって、
    分散システムにおいて、アプリケーションプログラムインタフェースAPIレベルでアプリケーションフローをトレーシングし、
    前記トレーシングは、
    ホットパッチングのためのプレースホルダを有するオーバライディングライブラリを生成し、トランポリン及びホットパッチノーオペレーション(NOP)をセットアップし、
    アプリケーションの実行時における任意のステップにおいて、トリガオンされているインストルメンテーション前記アプリケーションをパッチし、
    オーバライドインストルメンテーション関数で、全てにプロセス名が添えられて共有ログファイルで保存されている、関連するコールパラメータ及び戻り値をキャプチャし、
    ホットパッチングを終了し、
    インストルメンテーション期間が終了すると、分析のために全てのログをプッシュし、
    トランザクションログを種々のAPIの境界から分析し、実行フローを再構成するコントローラ。
  2. 前記オーバライディングライブラリはオーバライディング関数を含み、
    前記オーバライディング関数は、ターゲット関数と完全に同一のシグネチャを有するラッパ関数であり、
    前記ラッパ関数は、前記プロセス名で特定されるプロセスでは実際のロジックを修正することなく、実関数に渡されているアーギュメント及び戻り値をキャプチャすることが可能であり、
    オーバライディングターゲット関数におけるキー態様は、動的にリンクされるライブラリの共有ライブラリのレイジーリンクを含む請求項1に記載のコントローラ。
  3. 前記トランポリンは、積分値を返すターゲット関数に関して作成できるトランポリン関数を含み、
    前記トランポリン関数は、前記ターゲット関数のシンボルと同一のシグネチャ及び同一の名称を有し、前記オーバライディングライブラリに置かれ、
    トレーシングアプリケーションは、前記オーバライディングライブラリから前記ターゲット関数と同一の名称を有する次のシンボルを呼び出し、同時に、前記ターゲット関数に渡される戻り値及びアーギュメント/パラメータをロギングするためにロギング関数を使用する、請求項1に記載のコントローラ。
  4. 前記オーバライディングライブラリの生成は、
    NOP命令を有するトランポリン関数と共にロギング関数を呼び出すために修正されたコールドパッチされたバイナリを含むコールドパッチされたリストを含み、同時に、前記トランポリンにおけるログ関数の命令アドレス/オフセットがキャプチャされる、請求項1に記載のコントローラ。
  5. トランポリンベースのインストルメンテーションにおけるオーバヘッドの大部分は、実際にロギングすること、およびI/Oオペレーションを実行することでもたらされ、
    ロギングのコストを償却するために最適化されたメカニズムでさえも、いまだにオーバヘッドを完全に除去せず、
    前記トレーシングするステップは、インストルメンテーションのロギングを動的に有効にするとともに、同時に、いずれかのソースコードに修正を必要としないことを含む、請求項1に記載のコントローラ。
  6. 前記トレーシングは、トランザクションと一意にリンクされるメッセージ識別子をキャプチャ及び生成することを含み、
    前記トランポリンからのトランポリン関数は、他のサービスに送信されているメッセージコンテンツをハッシュすることでメッセージ識別子を生成するとともに、ほとんどのメッセージベースのシステムでは、同一のコンテンツがエンドサービスプロセスに転送され、
    前記トレーシングは、メッセージ識別子を使用して、メッセージを一意に識別できる、請求項1に記載のコントローラ。
  7. 分散システムにおける動的インストルメンテーションをコンピュータで実行可能にするための命令が記録された記録媒体であって、
    分散システムにおいて、アプリケーションプログラムインタフェースAPIレベルでアプリケーションフローをトレーシングさせるための命令が記録され、
    前記トレーシングは、
    ホットパッチングのためのプレースホルダを有するオーバライディングライブラリを生成し、トランポリン及びホットパッチノーオペレーション(NOP)をセットアップし、
    アプリケーションの実行時における任意のステップにおいて、トリガオンされているインストルメンテーション前記アプリケーションをパッチし、
    オーバライドインストルメンテーション関数で、全てにプロセス名が添えられて共有ログファイルで保存されている、関連するコールパラメータ及び戻り値をキャプチャし、
    ホットパッチングを終了し、
    インストルメンテーション期間が終了すると、分析のために全てのログをプッシュし、
    トランザクションログを種々のAPIの境界から分析し、実行フローを再構成することを含む、記録媒体。
  8. 前記オーバライディングライブラリはオーバライディング関数を含み、
    前記オーバライディング関数は、ターゲット関数と完全に同一のシグネチャを有するラッパ関数であり、
    前記ラッパ関数は、前記プロセス名で特定されるプロセスでは実際のロジックを修正することなく、実関数に渡されているアーギュメント及び戻り値をキャプチャすることが可能であり、
    オーバライディングターゲット関数におけるキー態様は、動的にリンクされるライブラリの共有ライブラリのレイジーリンクを含む、請求項7に記載の記録媒体。
  9. 前記トランポリンは、積分値を返すターゲット関数に関して作成できるトランポリン関数を含み、
    前記トランポリン関数は、前記ターゲット関数のシンボルと同一のシグネチャ及び同一の名称を有し、前記オーバライディングライブラリに置かれ、
    トレーシングアプリケーションは、前記オーバライディングライブラリから前記ターゲット関数と同一の名称を有する次のシンボルを呼び出し、同時に、前記ターゲット関数に渡される戻り値及びアーギュメント/パラメータをロギングするためにロギング関数を使用する、請求項7に記載の記録媒体。
  10. 前記オーバライディングライブラリの生成は、
    NOP命令を有するトランポリン関数と共にロギング関数を呼び出すために修正されたコールドパッチされたバイナリを含むコールドパッチされたリストを含み、同時に、前記トランポリンにおけるログ関数の命令アドレス/オフセットがキャプチャされる、請求項7に記載の記録媒体。
  11. トランポリンベースのインストルメンテーションにおけるオーバヘッドの大部分は、実際にロギングすること、およびI/Oオペレーションを実行することでもたらされ、
    ロギングのコストを償却するために最適化されたメカニズムでさえも、いまだにオーバヘッドを完全に除去せず、
    前記トレーシングするステップは、インストルメンテーションのロギングを動的に有効にするとともに、同時に、いずれかのソースコードに修正を必要としないことを含む、請求項7に記載の記録媒体。
  12. 前記トレーシングは、トランザクションと一意にリンクされるメッセージ識別子をキャプチャ及び生成することを含み、
    前記トランポリンからのトランポリン関数は、他のサービスに送信されているメッセージコンテンツをハッシュすることでメッセージ識別子を生成するとともに、ほとんどのメッセージベースのシステムでは、同一のコンテンツがエンドサービスプロセスに転送され、
    前記トレーシングは、メッセージ識別子を使用して、メッセージを一意に識別できる、請求項7に記載の記録媒体。
  13. 分散システムにおける動的インストルメンテーションを可能にするコンピュータで実行される方法であって、
    分散システムにおいて、アプリケーションプログラムインタフェースAPIレベルでアプリケーションフローをトレーシングし、
    前記トレーシングは、
    ホットパッチングのためのプレースホルダを有するオーバライディングライブラリを生成し、トランポリン及びホットパッチノーオペレーション(NOP)をセットアップし、
    アプリケーションの実行時における任意のステップにおいて、トリガオンされているインストルメンテーション前記アプリケーションをパッチし、
    オーバライドインストルメンテーション関数で、全てにプロセス名が添えられて共有ログファイルで保存されている、関連するコールパラメータ及び戻り値をキャプチャし、
    ホットパッチングを終了し、
    インストルメンテーション期間が終了すると、分析のために全てのログをプッシュし、
    トランザクションログを種々のAPIの境界から分析し、実行フローを再構成することを含む、方法。
  14. 前記オーバライディングライブラリはオーバライディング関数を含み、
    前記オーバライディング関数は、ターゲット関数と完全に同一のシグネチャを有するラッパ関数であり、
    前記ラッパ関数は、前記プロセス名で特定されるプロセスでは実際のロジックを修正することなく、実関数に渡されているアーギュメント及び戻り値をキャプチャすることが可能であり、
    オーバライディングターゲット関数におけるキー態様は、動的にリンクされるライブラリの共有ライブラリのレイジーリンクを含む、請求項13に記載の方法。
  15. 前記トランポリンは、積分値を返すターゲット関数に関して作成できるトランポリン関数を含み、
    前記トランポリン関数は、前記ターゲット関数のシンボルと同一のシグネチャ及び同一の名称を有し、前記オーバライディングライブラリに置かれ、
    トレーシングアプリケーションは、前記オーバライディングライブラリから前記ターゲット関数と同一の名称を有する次のシンボルを呼び出し、同時に、前記ターゲット関数に渡される戻り値及びアーギュメント/パラメータをロギングするためにロギング関数を使用する、請求項13に記載の方法。
  16. 前記オーバライディングライブラリの生成は、
    NOP命令を有するトランポリン関数と共にロギング関数を呼び出すために修正されたコールドパッチされたバイナリを含むコールドパッチされたリストを含み、同時に、前記トランポリンにおけるログ関数の命令アドレス/オフセットがキャプチャされる、請求項13に記載の方法。
  17. トランポリンベースのインストルメンテーションにおけるオーバヘッドの大部分は、実際にロギングすること、およびI/Oオペレーションを実行することでもたらされ、
    ロギングのコストを償却するために最適化されたメカニズムでさえも、いまだにオーバヘッドを完全に除去せず、
    前記トレーシングするステップは、インストルメンテーションのロギングを動的に有効にするとともに、同時に、いずれかのソースコードに修正を必要としないことを含む、請求項13に記載の方法。
  18. 前記トレーシングは、トランザクションと一意にリンクされるメッセージ識別子をキャプチャ及び生成することを含み、
    前記トランポリンからのトランポリン関数は、他のサービスに送信されているメッセージコンテンツをハッシュすることでメッセージ識別子を生成するとともに、ほとんどのメッセージベースのシステムでは、同一のコンテンツがエンドサービスプロセスに転送され、
    前記トレーシングは、メッセージ識別子を使用して、メッセージを一意に識別できる、請求項13に記載の方法。
JP2016556003A 2014-03-31 2015-03-24 分散システムのメッセージフローを監視するための動的ボーダーライントレーシング Active JP6479844B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201461972539P 2014-03-31 2014-03-31
US61/972,539 2014-03-31
US14/665,519 2015-03-23
US14/665,519 US9535814B2 (en) 2014-03-31 2015-03-23 Dynamic border line tracing for tracking message flows across distributed systems
PCT/US2015/022116 WO2015153178A1 (en) 2014-03-31 2015-03-24 Dynamic border line tracing for tracking message flows across distributed systems

Publications (2)

Publication Number Publication Date
JP2017511534A JP2017511534A (ja) 2017-04-20
JP6479844B2 true JP6479844B2 (ja) 2019-03-06

Family

ID=54190554

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016556003A Active JP6479844B2 (ja) 2014-03-31 2015-03-24 分散システムのメッセージフローを監視するための動的ボーダーライントレーシング

Country Status (4)

Country Link
US (1) US9535814B2 (ja)
EP (1) EP3126960A4 (ja)
JP (1) JP6479844B2 (ja)
WO (1) WO2015153178A1 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10203970B2 (en) * 2015-10-30 2019-02-12 Cisco Technology, Inc. Dynamic configuration of native functions to intercept
EP3526667A4 (en) * 2016-10-11 2020-07-01 Green Hills Software, Inc. SYSTEMS AND METHODS FOR SUMMARY AND VISUALIZATION OF TRACE DATA
CN106909494A (zh) * 2017-02-28 2017-06-30 郑州云海信息技术有限公司 一种在基于linux平台的刀片服务器中实时显示bmc日志的方法
CN106909493A (zh) * 2017-02-28 2017-06-30 郑州云海信息技术有限公司 一种在基于windows平台的刀片服务器中实时显示bmc日志的方法
CN107423203A (zh) * 2017-04-19 2017-12-01 浙江大学 非侵入式Hadoop应用性能分析装置和方法
US10810099B2 (en) * 2017-09-11 2020-10-20 Internatinal Business Machines Corporation Cognitive in-memory API logging
US10416974B2 (en) 2017-10-06 2019-09-17 Chicago Mercantile Exchange Inc. Dynamic tracer message logging based on bottleneck detection
CN110471859A (zh) * 2019-09-12 2019-11-19 泰康保险集团股份有限公司 业务测试方法、装置、介质及电子设备
US11397568B2 (en) * 2019-12-10 2022-07-26 International Business Machines Corporation Escape analysis support for method redefinition
CN113721928B (zh) * 2021-11-02 2022-01-18 成都无糖信息技术有限公司 一种基于二进制分析的动态库裁剪方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6223339B1 (en) * 1998-09-08 2001-04-24 Hewlett-Packard Company System, method, and product for memory management in a dynamic translator
US6629123B1 (en) * 1998-10-02 2003-09-30 Microsoft Corporation Interception of unit creation requests by an automatic distributed partitioning system
JP4125053B2 (ja) * 2002-06-28 2008-07-23 キヤノン株式会社 ログ取得方法
US7389494B1 (en) * 2003-11-14 2008-06-17 Sun Microsystems, Inc. Mechanism for statically defined trace points with minimal disabled probe effect
JP2005346414A (ja) * 2004-06-03 2005-12-15 Fujitsu Ltd トレース処理プログラム、方法及び装置
US7770154B2 (en) * 2005-07-01 2010-08-03 Oracle International Corporation Lightweight highly available infrastructure to trace program execution
US8458263B1 (en) * 2007-03-27 2013-06-04 Emc Corporation Method and apparatus for electronic message archive verification
US8429619B2 (en) * 2007-07-03 2013-04-23 International Business Machines Corporation Executable high-level trace file generation system
US8935683B2 (en) * 2011-04-20 2015-01-13 Qualcomm Incorporated Inline function linking
US20130055033A1 (en) * 2011-08-22 2013-02-28 International Business Machines Corporation Hardware-assisted program trace collection with selectable call-signature capture
JP5800777B2 (ja) * 2012-08-21 2015-10-28 三菱電機株式会社 情報処理装置及び情報処理方法及びプログラム

Also Published As

Publication number Publication date
EP3126960A1 (en) 2017-02-08
WO2015153178A1 (en) 2015-10-08
US9535814B2 (en) 2017-01-03
JP2017511534A (ja) 2017-04-20
EP3126960A4 (en) 2018-02-21
US20150278069A1 (en) 2015-10-01

Similar Documents

Publication Publication Date Title
JP6479844B2 (ja) 分散システムのメッセージフローを監視するための動的ボーダーライントレーシング
Olivier et al. A binary-compatible unikernel
US20170255545A1 (en) Methods and systems of function-specific tracing
US9465717B2 (en) Native code profiler framework
JP2018073405A (ja) グラフ・リライティングを介したサーバレス・アプリケーションのデバッグの容易化
US8799889B2 (en) Application downloading
JP2015533007A5 (ja)
Wu et al. Automatically partition software into least privilege components using dynamic data dependency analysis
US11262993B2 (en) Application binary rewriting to reduce binary attack surface area
CN113196243A (zh) 使用编译器生成的仿真优化元数据改进仿真和跟踪性能
Mäki et al. Interface diversification in IoT operating systems
Pathak et al. Enabling automatic offloading of resource-intensive smartphone applications
Renner et al. A hardware in the loop benchmark suite to evaluate NIST LWC ciphers on microcontrollers
Park et al. GPUReplay: a 50-KB GPU stack for client ML
US9841960B2 (en) Dynamic provision of debuggable program code
Zamfir et al. Automating the debugging of datacenter applications with ADDA
Jain et al. DMTCP: fixing the single point of failure of the ROS master
Walla Live updating in Unikernels
Graubner et al. Dynalize: Dynamic analysis of mobile apps in a platform-as-a-service cloud
US11847433B2 (en) Source code editing combining edit and continue with hot reload
Pan et al. BAHK: flexible automated binary analysis method with the assistance of hardware and system kernel
RU2815369C1 (ru) Индексация и воспроизведение трассировок с переходом по времени с использованием диффграмм
Long et al. Scalable system environment caching and sharing for distributed virtual machines
JP7506736B2 (ja) ディフグラムを用いた時間遡及トレースの索引付け及び再現
US20130007517A1 (en) Checkpoint Recovery Utility for Programs and Compilers

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20161004

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171024

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20180117

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180209

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180529

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180817

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190206

R150 Certificate of patent or registration of utility model

Ref document number: 6479844

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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