Method and system for automated analysis of the performance of remote method invocations in multi-tier applications using bytecode instrumentation

Information

  • Patent Application
  • 20070169055
  • Publication Number
    20070169055
  • Date Filed
    August 11, 2006
    18 years ago
  • Date Published
    July 19, 2007
    17 years ago
Abstract
Provided is a method and system for monitoring and diagnosing the performance of remote method invocations using bytecode instrumentation in distributed multi-tier applications. The provided method and system involves automated instrumentation of client application bytecode and server application bytecode with sensors for measuring performance of remote method invocations and operations performed during remote method invocations. Performance information is captured for each remote method invocation separately, allowing performance diagnosis of multithreaded execution of remote method invocations, so that throughput and response time information are accurate even when other threads perform remote method invocations concurrently. This makes the present invention suitable for performance diagnosis of remote method invocations on systems under load, such as found in production and load-testing environments. The captured performance metrics include throughput and response time information of remote method invocation, object serialization, and transport. The performance metrics are captured per remote method invocation. The above performance metrics enable developers and administrators to optimize their programming code for performance. Performance metrics are preferably further sent to a processing unit for storage, analysis, and correlation.
Description

BRIEF DESCRIPTION OF THE DRAWINGS


FIG. 1 illustrates a block diagram illustrating the principle components of a remote method invocation occurring between a client and a server and the preferred locations of injected remoting performance diagnostics sensors after instrumentation.



FIG. 2 illustrates how an instrumentation program may preferably use instrumentation meta-information for locating the methods that need to be instrumented and transformation logic that knows how to alter the bytecode for fulfilling desired sensor tasks.



FIG. 3 illustrates a preferable embodiment for instrumenting the original bytecode at load time.



FIG. 4 illustrates a preferable embodiment for instrumenting the original bytecode at run-time.



FIG. 5 provides flowcharts for the client side process of capturing performance metrics for a single remote method invocation.



FIG. 6 provides flowcharts for the server side process of capturing performance metrics for a single remote method invocation.



FIG. 7 illustrates the RPD-TLS that may be created for each thread and the sensors that access the TLS for storing captured performance metrics, for status and control, for correlation.



FIG. 8 illustrates the preferred groups of information within the thread local storage object that is used for capturing remote method invocation performance (RPD-TLS).



FIG. 9 illustrates remote performance diagnostics in accordance with the teachings of the present invention.



FIG. 10 illustrates a flow chart of the present invention.



FIG. 11 illustrates a flow chart of the present invention.


Claims
  • 1) A method for collecting performance metrics, comprising the steps of: intercepting a load request for an original bytecode;altering said original bytecode to form an altered bytecode at runtime without requiring start up;collecting said performance metrics by using said altered bytecode.
  • 2) A method for collecting performance metrics as in claim 1, wherein said altering step includes the step of injecting a sensor into said original bytecode.
  • 3) A method for collecting performance metrics as in claim 1, wherein said altering step is performed by an instrumentation engine to generate instrumented bytecode.
  • 4) A method for collecting performance metrics as in claim 3, wherein an agent receives said instrumented bytecode, and said instrumented bytecode replaces said original bytecode.
  • 5) A method for collecting performance metrics as in claim 1, wherein said original bytecode is retrieved from a repository.
  • 6) A method for collecting performance metrics is in claim 21, wherein the first type of sensor includes a remote method invocation sensor.
  • 7) A method for collecting performance metrics as in claim 22, wherein the second type of sensor includes a serialization sensor.
  • 8) A method for collecting performance metrics as in claim 23, wherein the third type of sensor includes a transport sensor.
  • 9) A method for collecting performance metrics as in claim 1, wherein said original bytecode in a distributed multi-tier application.
  • 10) A method for collecting performance metrics as in claim 1, wherein said performance metrics are captured for a remote method invocation.
  • 11) A system including at least one of a client or a server for collecting performance metrics, comprising: said system intercepting a load request for an original bytecode;said system altering said original bytecode to form an altered bytecode at runtime without requiring start up;said system collecting said performance metrics by using said altered bytecode.
  • 12) A system including at least one of a client or a server for collecting performance metrics as in claim 11, wherein said system injectes a sensor into said original bytecode.
  • 13) A system including at least one of a client or a server for collecting performance metrics as in claim 11, wherein said system includes an instrumentation engine to generate instrumented bytecode.
  • 14) A system including at least one of a client or a server for collecting performance metrics as in claim 13, wherein said system includes an agent to receive said instrumented bytecode, and said instrumented bytecode replaces said original bytecode.
  • 15) A system including at least one of a client or a server for collecting performance metrics as in claim 11, wherein said original bytecode is retrieved from a repository.
  • 16) A system including at least one of a client or a server for collecting performance metrics is in claim 24, wherein the first type of sensor includes a remote method invocation sensor.
  • 17) A system including at least one of a client or a server for collecting performance metrics as in claim 25, wherein the second type of sensor includes a serialization sensor.
  • 18) A system including at least one of a client or a server for collecting performance metrics as in claim 26, wherein the third type of sensor includes a transport sensor.
  • 19) A system including at least one of a client or a server for collecting performance metrics as in claim 11, wherein said original bytecode in a distributed multi-tier application.
  • 20) A system including at least one of a client or a server for collecting performance metrics as in claim 11, wherein said performance metrics are captured for a remote method invocation.
  • 21) A method for collecting performance metrics as in claim 1, wherein said collecting step includes the step of collecting a first portion of said performance metrics by a first type of sensor.
  • 22) A method for collecting performance metrics as in claim 21, wherein said collecting step includes the step of collecting a second portion of said performance metrics by a second type of sensor.
  • 23) A method for collecting performance metrics as in claim 22, wherein said collecting step includes the step of collecting a third portion of said performance metrics by a third type of sensor.
  • 24) A system including at least one of a client or a server for collecting performance metrics as in claim 11, wherein said system includes a first type of sensor to collect a first portion of said performance metrics.
  • 25) A system including at least one of a client or a server for collecting performance metrics as in claim 24, wherein said system includes a second type of sensor to collect a second portion of said performance metrics.
  • 26) A system including at least one of a client or a server for collecting performance metrics as in claim 25, wherein said system includes a third type of sensor to collect a third portion of said performance metrics.
Provisional Applications (1)
Number Date Country
60597576 Dec 2005 US