Use of execution flow shape to allow aggregate data reporting with full context in an application manager
First Claim
1. A computer-implemented method for monitoring an application running at a first computer system, comprising the computer-implemented steps of:
- receiving information from probes of instrumented byte code of the application, the information is used to provide a plurality of execution flows at the application, each of the plurality of execution flows comprising a sequence of invoked software components, the information identifies start and stop times of the invoked software components, and start and stop times of the execution flows;
categorizing the plurality of execution flows into a single execution flow shape selected from a plurality of execution flow shapes, so that different sequences of invoked software components of the plurality of execution flows are represented by a single sequence of software components of the single execution flow shape, the categorizing comprises, for each of the plurality of execution flows, calculating distances which represent how closely the execution flow matches each of the plurality of execution flow shapes and selecting the single execution flow shape based on a smallest distance among the distances;
calculating execution times of the invoked software components of the plurality of execution flows which correspond to the software components of the single sequence of software components based on the start and stop times of the invoked software components;
calculating execution times of the plurality of execution flows based on the start and stop times of the plurality of execution flows;
providing slowest and fastest execution times and at least one of a median and a mean execution time of the software components of the single sequence of software components based on the calculating of the execution times of the invoked software components, and providing slowest and fastest execution times and at least one of a median and a mean execution time of the single execution flow shape, based on the calculating of the execution times of the plurality of execution flows; and
reporting from the first computer system to a manager computer system;
(i) the single execution flow shape, (ii) the slowest and fastest execution times and the at least one of the median and the mean execution time, for the software components of the single sequence of software components, and (iii) the slowest and fastest execution times and the at least one of the median and the mean execution time of the single execution flow shape, wherein one execution flow of the plurality of execution flows is provided by performing lossy compression on an uncompressed execution flow to reduce the uncompressed execution flow to a simplified form comprising a reduced number of components, and the one execution flow and the uncompressed execution flow are discarded once the plurality of execution flows have been categorized so that the one execution flow and the uncompressed execution flow are not reported from the first computer system to the manager computer.
3 Assignments
0 Petitions
Accused Products
Abstract
Data relating to execution flows at a computer system is aggregated across multiple execution flows by categorizing each execution flow into an execution flow shape. The execution flows may represent sequences of software components that are invoked or other computer system resources that are consumed. The execution flow shapes are developed by observing and recording the execution flows at the computer system and applying lossy compression rules. Execution flows are categorized into an execution flow shape which is a closest match. The execution flow data may be aggregated by an agent at the computer system, and communicated to a manager for subsequent use. The aggregation combines the information from all execution flows into a small enough data set that can be reported without consuming unduly large processing overhead while still preserving as many of the interesting aspects of the execution flows as possible.
-
Citations
32 Claims
-
1. A computer-implemented method for monitoring an application running at a first computer system, comprising the computer-implemented steps of:
-
receiving information from probes of instrumented byte code of the application, the information is used to provide a plurality of execution flows at the application, each of the plurality of execution flows comprising a sequence of invoked software components, the information identifies start and stop times of the invoked software components, and start and stop times of the execution flows; categorizing the plurality of execution flows into a single execution flow shape selected from a plurality of execution flow shapes, so that different sequences of invoked software components of the plurality of execution flows are represented by a single sequence of software components of the single execution flow shape, the categorizing comprises, for each of the plurality of execution flows, calculating distances which represent how closely the execution flow matches each of the plurality of execution flow shapes and selecting the single execution flow shape based on a smallest distance among the distances; calculating execution times of the invoked software components of the plurality of execution flows which correspond to the software components of the single sequence of software components based on the start and stop times of the invoked software components; calculating execution times of the plurality of execution flows based on the start and stop times of the plurality of execution flows; providing slowest and fastest execution times and at least one of a median and a mean execution time of the software components of the single sequence of software components based on the calculating of the execution times of the invoked software components, and providing slowest and fastest execution times and at least one of a median and a mean execution time of the single execution flow shape, based on the calculating of the execution times of the plurality of execution flows; and reporting from the first computer system to a manager computer system;
(i) the single execution flow shape, (ii) the slowest and fastest execution times and the at least one of the median and the mean execution time, for the software components of the single sequence of software components, and (iii) the slowest and fastest execution times and the at least one of the median and the mean execution time of the single execution flow shape, wherein one execution flow of the plurality of execution flows is provided by performing lossy compression on an uncompressed execution flow to reduce the uncompressed execution flow to a simplified form comprising a reduced number of components, and the one execution flow and the uncompressed execution flow are discarded once the plurality of execution flows have been categorized so that the one execution flow and the uncompressed execution flow are not reported from the first computer system to the manager computer. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
-
-
13. A computer-implemented method for monitoring an application running at a computer system, comprising the computer-implemented steps of:
-
observing a plurality of execution flows at the application, the observing comprises receiving information from probes of instrumented byte code of the application, the information comprises data from the plurality of execution flows, the observing is performed by agent software running at the computer system; defining a plurality of execution flow shapes based on the observing, including a single execution flow shape which represents different execution flows of the plurality of execution flows which invoke different sequences of software components, each execution flow shape of the plurality of execution flow shapes comprise an ordered sequence of invoked software components, the single execution flow shape is a single ordered sequence of software components which represents different ordered sequences of the different execution flows, and the different ordered sequences have different invoked software components; categorizing the plurality of execution flows into a single execution flow shape selected from the plurality of execution flow shapes; calculating execution times of the invoked software components of the different execution flows which correspond to the software components of the single ordered sequence of software components based on start and stop times in the information of the invoked software components of the different execution flows; calculating execution times of the different execution flows based on start and stop times in the information of the different execution flows; and providing slowest and fastest execution times and at least one of a median and a mean execution time of the software components of the single ordered sequence of software components based on the calculating of the execution times of the invoked software components, and providing slowest and fastest execution times and at least one of a median and a mean execution time of the single execution flow shape based on the calculating execution times of the different execution flows, wherein one execution flow of the plurality of execution flows is provided by performing lossy compression on an uncompressed execution flow to reduce the uncompressed execution flow to a simplified form comprising a reduced number of components, and the one execution flow and the uncompressed execution flow are discarded once the plurality of execution flows have been categorized so that the one execution flow and the uncompressed execution flow are not reported from the computer system to a manager computer. - View Dependent Claims (14, 15, 16)
-
-
17. A computer-implemented method for monitoring an application running at a computer system, comprising the computer-implemented steps of:
-
receiving aggregated data from the computer system, agent software running at the computer system receives information from probes of instrumented byte code of the application, the aggregated data representing execution flows which were categorized by the agent software based on the information from the probes into a corresponding execution flow shape selected from a plurality of available execution flow shapes, including multiple different execution flows which were categorized into a single execution flow shape, the multiple different execution flows invoke different sequences of software components, such that different ordered sequences of the multiple different execution flows are categorized into a single ordered sequence of software components of the single execution flow shape, and the different ordered sequences have different invoked software components; the aggregated data comprising slowest and fastest execution times and at least one of a median and a mean execution time of the software components of the single ordered sequence of software components, and slowest and fastest execution times and at least one of a median and a mean execution time of the single execution flow shape; the slowest and fastest execution times and the at least one of the median and the mean execution time of the software components of the single ordered sequence of software components, are calculated from execution times of the software components of the multiple different execution flows which correspond to the software components of the single ordered sequence of software components based on start and stop times of the software components of the multiple different execution flows; the slowest and fastest execution times and at least one of the median and the mean execution time of the single execution flow shape, are calculated from execution times of the plurality of execution flows based on start and stop times of the plurality of execution flows; and storing the aggregated data for subsequent use, wherein one execution flow of the plurality of execution flows is provided by performing lossy compression on an uncompressed execution flow to reduce the uncompressed execution flow to a simplified form comprising a reduced number of components, and the one execution flow and the uncompressed execution flow are discarded once the execution flows have been categorized so that the one execution flow and the uncompressed execution flow are not reported from the computer system to a manager computer. - View Dependent Claims (18, 19, 20, 21, 22, 23, 24)
-
-
25. A non-transitory processor readable storage device comprising processor readable code embodied thereon for programming at least one processor to perform a method for monitoring an application running at a computer system, the method comprising:
-
observing a plurality of execution flows at the application, the observing comprises receiving information from probes of instrumented byte code of the application, the information comprises data from the plurality of execution flows, the observing is performed by agent software running at the computer system; defining a plurality of execution flow shapes based on the observing, the plurality of execution flow shapes comprising a single execution flow shape which represents different execution flows of the plurality of execution flows which invoke different sequences of software components, each execution flow shape of the plurality of execution flow shapes comprises an ordered sequence of invoked software components, the single execution flow shape is a single ordered sequence of software components which represents different ordered sequences of the different execution flows, and the different ordered sequences have different invoked software components; categorizing the plurality of execution flows into a single execution flow shape selected from the plurality of execution flow shapes; calculating execution times of the invoked software components of the different execution flows which correspond to the software components of the single ordered sequence of software components based on start and stop times in the information of the invoked software components of the different execution flows; calculating execution times of the different execution flows based on start and stop times in the information of the different execution flows; and providing slowest and fastest execution times and at least one of a median and a mean execution time of the software components of the single ordered sequence of software components based on the calculating execution times of the invoked software components, and providing slowest and fastest execution times and at least one of a median and a mean execution time of the single execution flow shape based on the calculating execution times of the different execution flows, wherein one execution flow of the plurality of execution flows is provided by performing lossy compression on an uncompressed execution flow to reduce the uncompressed execution flow to a simplified form comprising a reduced number of components, and the one execution flow and the uncompressed execution flow are discarded once the plurality of execution flows have been categorized so that the one execution flow and the uncompressed execution flow are not reported from the computer system to a manager computer. - View Dependent Claims (26, 27, 28, 29)
-
-
30. A computer-implemented method for monitoring an application running at a first computer system, comprising the computer-implemented steps of:
-
receiving information from probes of instrumented byte code of the application, the information is used to provide a plurality of execution flows at the application, each of the plurality of execution flows comprising;
a sequence which represents start and finish nodes for each component in a transaction, and a calling relationship between the components in the transaction, the plurality of execution flows comprise different sequences of start and finish nodes;categorizing the plurality of execution flows into a single execution flow shape selected from a plurality of execution flow shapes so that the plurality of execution flows are represented by the single execution flow shape and the different sequences of start and finish nodes are represented by a single sequence of start and finish nodes of the single execution flow shape; for each of the plurality of execution flows, calculating an execution time based on a first of the start nodes and a last of the finish nodes; providing slowest and fastest execution times and at least one of a median and a mean execution time of the single execution flow shape based on the calculating; and reporting from the first computer system to a manager computer system;
(i) the single execution flow shape, and (ii) the slowest and fastest execution times and the at least one of the median and the mean execution time of the single execution flow shape, wherein one execution flow of the plurality of execution flows is provided by performing lossy compression on an uncompressed execution flow to reduce the uncompressed execution flow to a simplified form comprising a reduced number of components, and the one execution flow and the uncompressed execution flow are discarded once the plurality of execution flows have been categorized so that the one execution flow and the uncompressed execution flow are not reported from the first computer system to the manager computer. - View Dependent Claims (31, 32)
-
Specification