Coordinated application monitoring in a distributed computing environment
First Claim
1. A method for gathering data about an application comprising:
- intercepting execution control at a first communication point between a calling function and a called function for a cross execution context call to include call origin information in a request to perform the cross execution context call, said calling function being associated with a first execution context and said called function being associated with a second execution context;
extracting the call origin information prior to executing the called function at a second communication point; and
communicating at least one parameter between the called function and the calling function, said at least one parameter being associated with information about the cross execution context call.
7 Assignments
0 Petitions
Accused Products
Abstract
Techniques for gathering execution information about an application, such as a distributed application, are described. Key communication points in cross execution context calls, such as remote procedure calls, are determined and control is transferred to interception routines to insert and extract execution information. Outgoing remote procedure calls are intercepted on a client that inserts call origin information into the request sent to a server system. The server system intercepts and extracts the call origin information and additionally inserts other information in a response sent to the client system upon completion of a remote procedure call. In turn, the client system intercepts the response and extracts other performance information. On each client and server system, information is gathered by a reader and forwarded to a local collector. Program execution data may be collected and correlated for coordinated application monitoring.
468 Citations
49 Claims
-
1. A method for gathering data about an application comprising:
-
intercepting execution control at a first communication point between a calling function and a called function for a cross execution context call to include call origin information in a request to perform the cross execution context call, said calling function being associated with a first execution context and said called function being associated with a second execution context;
extracting the call origin information prior to executing the called function at a second communication point; and
communicating at least one parameter between the called function and the calling function, said at least one parameter being associated with information about the cross execution context call. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25)
instrumenting at least one portion of said application.
-
-
3. The method of claim 2, wherein said at least one portion includes compiled code.
-
4. The method of claim 2, wherein said at least one portion includes interpreted code techniques to perform machine executable instructions executed in a computer system.
-
5. The method of claim 4 wherein said at least one portion includes byte code.
-
6. The method of claim 1, further comprising:
-
associating the call origin information from a calling function with the call origin information extracted at a called function site for the cross execution context call;
storing a first portion of execution information associated with said calling function;
storing a second portion of execution information associated with said called function; and
correlating said first and second portions of execution information using said call origin information.
-
-
7. The method of claim 6, wherein said calling program is associated with a first computer system and said called program is associated with a second computer system.
-
8. The method of claim 7, further comprising:
routing a third portion of execution information between said second and said first computer systems in accordance with said call origin information.
-
9. The method of claim 1, wherein said call origin information is used to determine wire time of said cross execution context call, and the method further including determining wire time by:
-
determining a first time, T1, when the cross execution context call is initiated by the calling function;
determining a second time, T2, when a request for performing the cross execution context call is received at a computer system associated with said called function;
determining a third time, T3, when execution of machine executable code associated with the cross execution context call of the called function completes execution;
determining a fourth time, T4, when the calling function receives a response that the cross execution context call has completed;
determining a ratio, R, as a ratio of a first processor speed and a second processor speed, said first processor speed associated with a first computer system of said calling function, said second processor speed associated with a second computer system of said called function; and
determining wire time as represented by (T4−
T1)−
((T3−
T2))*R).
-
-
10. The method of claim 9, further including:
transmitting said second processor speed to said first computer system as return information included in a response from said second computer system that said cross execution context call is complete.
-
11. The method of claim 10, further comprising:
-
intercepting at a third communication point said response from said second computer system that said cross execution context call has completed; and
extracting said return information.
-
-
12. The method of claim 11, wherein said cross execution context call is a first cross execution context call, said calling function is a first calling function, and said called function is a first called function, and a second cross execution context call is made from a second calling function of said second computer system to a second called function of a third computer system, and the method further comprising:
-
transmitting system information about said first and said second computer systems to said third computer system; and
establishing a first communication channel between said third computer system and said second computer system and a second communication channel between said third computer system and said first computer system wherein, in said second communication channel, said second computer system is a proxy relaying messages between said first and said third computer systems.
-
-
13. The method of claim 12, wherein said first and second communication channels are used to facilitate communication between data collectors on each of said first, second and third computer systems.
-
14. The method of claim 13, further comprising:
using an additional communication channel for transmitting data in connection with the cross execution context call between the called function and the calling function.
-
15. The method of claim 14, further comprising:
establishing said first and second communication channels using data transmitted in connection with said cross execution context call.
-
16. The method of claim 13, further comprising:
-
requesting program execution data by a client system from at least one server system;
transmitting program execution data using at least one of said first and second communication channels to said client system; and
correlating, at said client system, said execution data from said at least one server system and said client system.
-
-
17. The method of claim 12, further comprising:
-
transmitting program execution information to said first computer system using said first and second communication channels;
correlating, at said first computer system, said program execution information for said application; and
determining at least one metric in accordance with said program execution information.
-
-
18. The method of claim 17, wherein said program execution information includes at least one of:
- code coverage information, error detection information, program tracing information, and performance information.
-
19. The method of claim 18, wherein said program execution information includes remote procedure call tracing.
-
20. The method of claim 9, further comprising:
communicating between said first and said second computer systems said at least one parameter wherein said at least one parameter is one of said first and second processor speeds.
-
21. The method of claim 1, further comprising:
-
transmitting program execution information to a first data gathering point associated with said calling function from a second data gathering point associated with said called function; and
correlating, at said first data gathering point, said program execution information for said application.
-
-
22. The method of claim 21, further comprising:
determining at least one metric in accordance with said program execution information.
-
23. The method of claim 1, wherein said first execution context and said second execution context are each associated with different threads of execution.
-
24. The method of claim 23, wherein said calling function is executed on a client computer and said called function is executed on a server computer.
-
25. The method of claim 24, wherein said cross execution context is a remote procedure call.
-
26. A computer program product for gathering data about an application comprising:
-
machine executable code for intercepting execution control at a first communication point between a calling function and a called function for a cross execution context call to include call origin information in a request to perform the cross execution context call, said calling function being associated with a first execution context and said called function being associated with a second execution context;
machine executable code for extracting the call origin information prior to executing the called function at a second communication point; and
machine executable code for communicating at least one parameter between the called function and the calling function, said at least one parameter being associated with information about the cross execution context call. - View Dependent Claims (27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47)
machine executable code for instrumenting at least one portion of said application.
-
-
28. The computer program product of claim 27, wherein said at least one portion includes compiled code.
-
29. The computer program product of claim 27, wherein said at least one portion includes interpreted code techniques to perform machine executable instructions executed in a computer system.
-
30. The computer program product of claim 29, wherein said at least one portion includes byte code.
-
31. The computer program product of claim 26, further comprising:
-
machine executable code for associating the call origin information from a calling function with the call origin information extracted at a called function site for the cross execution context call;
machine executable code for storing a first portion of execution information associated with said calling function;
machine executable code for storing a second portion of execution information associated with said called function; and
machine executable code for correlating said first and second portions of execution information using said call origin information.
-
-
32. The computer program product of claim 31, wherein said calling program is associated with a first computer system and said called program is associated with a second computer system.
-
33. The computer program product of claim 32, further comprising:
machine executable code for routing a third portion of execution information between said second and said first computer systems in accordance with said call origin information.
-
34. The computer program product of claim 26, wherein said call origin information is used to determine wire time of said cross execution context call, and the computer program product further including machine executable code for determining wire time by:
-
machine executable code for determining a first time, T1, when the cross execution context call is initiated by the calling function;
machine executable code for determining a second time, T2, when a request for performing the cross execution context call is received at a computer system associated with said called function;
machine executable code for determining a third time, T3, when execution of machine executable code associated with the cross execution context call of the called function completes execution;
machine executable code for determining a fourth time, T4, when the calling function receives a response that the cross execution context call has completed;
machine executable code for determining a ratio, R, as a ratio of a first processor speed and a second processor speed, said first processor speed associated with a first computer system of said calling function, said second processor speed associated with a second computer system of said called function; and
machine executable code for determining wire time as represented by (T4−
T1)−
((T3−
T2))*R).
-
-
35. The computer program product of claim 34, further including:
machine executable code for transmitting said second processor speed to said first computer system as return information included in a response from said second computer system that said cross execution context call is complete.
-
36. The computer program product of claim 35, further comprising:
-
machine executable code for intercepting at a third communication point said response from said second computer system that said cross execution context call has completed; and
machine executable code for extracting said return information.
-
-
37. The computer program product of claim 36, wherein said cross execution context call is a first cross execution context call, said calling function is a first calling function, and said called function is a first called function, and a second cross execution context call is made from a second calling function of said second computer system to a second called function of a third computer system, and the computer program product further comprising:
-
machine executable code for transmitting system information about said first and said second computer systems to said third computer system; and
machine executable code for establishing a first communication channel between said third computer system and said second computer system and a second communication channel between said third computer system and said first computer system wherein, in said second communication channel, said second computer system is a proxy relaying messages between said first and said third computer systems.
-
-
38. The computer program product of claim 37, wherein said first and second communication channels are used to facilitate communication between data collectors on each of said first, second and third computer systems.
-
39. The computer program product of claim 38, further comprising:
machine executable code for using an additional communication channel for transmitting data in connection with the cross execution context call between the called function and the calling function.
-
40. The computer program product of claim 39, further comprising:
machine executable code for establishing said first and second communication channels using data transmitted in connection with said cross execution context call.
-
41. The computer program product of claim 38, further comprising:
-
machine executable code for requesting program execution data by a client system from at least one server system;
machine executable code for transmitting program execution data using at least one of said first and second communication channels to said client system; and
machine executable code for correlating, at said client system, said execution data from said at least one server system and said client system.
-
-
42. The computer program product of claim 37, further comprising:
-
machine executable code for transmitting program execution information to said first computer system using said first and second communication channels;
machine executable code for correlating, at said first computer system, said program execution information for said application; and
machine executable code for determining at least one metric in accordance with said program execution information.
-
-
43. The computer program product of claim 42, wherein said program execution information includes at least one of:
- code coverage information, error detection information, program tracing information, and performance information.
-
44. The computer program product of claim 43, wherein said program execution information includes remote procedure call tracing.
-
45. The computer program product of claim 34, further comprising:
machine executable code for communicating between said first and said second computer systems said at least one parameter wherein said at least one parameter is one of said first and second processor speeds.
-
46. The computer program product of claim 26, further comprising:
-
machine executable code for transmitting program execution information to a first data gathering point associated with said calling function from a second data gathering point associated with said called function; and
machine executable code for correlating, at said first data gathering point, said program execution information for said application.
-
-
47. The computer program product of claim 46, further comprising:
-
machine executable code for determining at least one metric in accordance with said program execution information. 48;
. The computer program product of claim 26, wherein said first execution context and said second execution context are each associated with different threads of execution.
-
-
48. The computer program product of claim 48, further comprising:
-
machine executable code included in a client computer for executing the calling function; and
machine executable code included in a server for executing said called function.
-
-
49. The computer program product of claim 49, wherein said cross execution context is a remote procedure call.
Specification