Execution flow shape compression for aggregate data reporting in an application manager
First Claim
1. A computer-implemented method for monitoring execution flows, comprising:
- observing an execution flow at a computer system, the execution flow comprises a sequence of invoked components, the sequence of invoked components comprises an ordered set of identifiers of the invoked components, and each invoked component is instrumented;
applying lossy compression rules to the ordered set of identifiers of the invoked components to provide a compressed sequence of invoked components, the ordered set of identifiers of the invoked components represents first and second iterations of a loop, and the applying lossy compression rules to the ordered set of identifiers of the invoked components comprises representing the first and second iterations of the loop by a single iteration of the loop in the compressed sequence of invoked components; and
defining an execution flow shape based on the compressed sequence of invoked components, the ordered set of identifiers of the invoked components identifies;
(a) a first instance of a first invoked component which represents the first invoked component starting execution in the first iteration of the loop, followed by (b) a first instance of a second invoked component which is called by the first instance of the first invoked component, followed by (c) a second instance of the first invoked component which represents the first invoked component finishing execution in the first iteration of the loop, and which represents the first invoked component starting execution in a second iteration of the loop, followed by (d) a second instance of the second invoked component which is called by the second instance of the first invoked component, followed by (e) a third instance of the first invoked component which represents the first invoked component finishing execution in the second iteration of the loop.
3 Assignments
0 Petitions
Accused Products
Abstract
Data relating to execution flows at a computer system is compressed and 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. The execution flow shapes are developed by observing the execution flows at the computer system and applying lossy compression rules, such as representing multiple iterations of a loop as a single iteration, skipping certain types of software components, such as those having a specified call stack depth, treating some of the software components as being optional, and ignoring recursive calls by the software components. The aggregation and compression allow the information from all execution flows to be combined 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
40 Claims
-
1. A computer-implemented method for monitoring execution flows, comprising:
-
observing an execution flow at a computer system, the execution flow comprises a sequence of invoked components, the sequence of invoked components comprises an ordered set of identifiers of the invoked components, and each invoked component is instrumented; applying lossy compression rules to the ordered set of identifiers of the invoked components to provide a compressed sequence of invoked components, the ordered set of identifiers of the invoked components represents first and second iterations of a loop, and the applying lossy compression rules to the ordered set of identifiers of the invoked components comprises representing the first and second iterations of the loop by a single iteration of the loop in the compressed sequence of invoked components; and defining an execution flow shape based on the compressed sequence of invoked components, the ordered set of identifiers of the invoked components identifies;
(a) a first instance of a first invoked component which represents the first invoked component starting execution in the first iteration of the loop, followed by (b) a first instance of a second invoked component which is called by the first instance of the first invoked component, followed by (c) a second instance of the first invoked component which represents the first invoked component finishing execution in the first iteration of the loop, and which represents the first invoked component starting execution in a second iteration of the loop, followed by (d) a second instance of the second invoked component which is called by the second instance of the first invoked component, followed by (e) a third instance of the first invoked component which represents the first invoked component finishing execution in the second iteration of the loop. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)
-
-
16. A computer-implemented method for monitoring execution flows, comprising:
-
observing a sequence of software components which are invoked for an execution flow at a computer system, identifiers of the invoked software components are provided in the sequence, and each invoked software component is instrumented; providing an ordered set of the invoked software components based on the observing; in the ordered set, choosing a first occurrence of a first chosen software component as a potential loop start component, and testing whether the first occurrence of the first chosen software component is actually a loop start component, the testing comprises the steps of;
(a) locating second and third occurrences of the first chosen software component in the ordered set, (b) determining whether the second occurrence of the first chosen software component represents an end of a first iteration of a loop and a start of a second iteration of the loop, and (c) determining whether the third occurrence of the first chosen software component represents an end of the second iteration of the loop;said step (b) comprises determining whether software components which are intermediate to the first and second occurrences of the first chosen software component are consistent with the first iteration of the loop, and said step (c) comprises determining whether software components which are intermediate to the second and third occurrences of the first chosen software component are consistent with the second iteration of the loop; and if the testing indicates that the first occurrence of the first chosen software component is actually a loop start component, collapsing the first and second iterations of the loop to a single iteration. - View Dependent Claims (17, 18, 19, 20, 21)
-
-
22. An apparatus for monitoring execution flows, comprising:
-
a storage device comprising processor readable code; and a processor in communication with the storage device, the processor executes the processor readable code to;
observe an execution flow at a computer system, the execution flow comprises a sequence of invoked components, the sequence of invoked components comprises an ordered set of identifiers of the invoked components, and each invoked component is instrumented;
apply lossy compression rules to the ordered set of identifiers of the invoked components to provide a compressed sequence of invoked components, the ordered set of identifiers of the invoked components represents first and second iterations of a loop, and the lossy compression rules represent the first and second iterations of the loop by a single iteration of the loop in the compressed sequence of invoked components; and
define an execution flow shape based on the compressed sequence of invoked components, the ordered set of identifiers of the invoked components identifies;
(a) a first instance of a first invoked component which represents the first invoked component starting execution in the first iteration of the loop, followed by (b) a first instance of a second invoked component which is called by the first instance of the first invoked component, followed by (c) a second instance of the first invoked component which represents the first invoked component finishing execution in the first iteration of the loop, and which represents the first invoked component starting execution in a second iteration of the loop, followed by (d) a second instance of the second invoked component which is called by the second instance of the first invoked component, followed by (e) a third instance of the first invoked component which represents the first invoked component finishing execution in the second iteration of the loop. - View Dependent Claims (23, 24, 25, 26, 27, 28)
-
-
29. A processor readable storage device comprising processor readable code embodied thereon which programs a processor to:
-
observe a plurality of execution flows at a computer system, each execution flow comprises a sequence of invoked components, the sequence of invoked components comprises an ordered set of the invoked components, and each invoked component is instrumented; apply lossy compression rules to the ordered set of the invoked components to provide a compressed sequence of invoked components, the ordered set of the invoked components represents first and second iterations of a loop, and the lossy compression rules represent the first and second iterations of the loop by a single iteration of the loop in the compressed sequence of invoked components; and define an execution flow shape based on the compressed sequence of invoked components, the ordered set of the invoked components identifies;
(a) a first instance of a first invoked component which represents the first invoked component starting execution in the first iteration of the loop, followed by (b) a first instance of a second invoked component which is called by the first instance of the first invoked component, followed by (c) a second instance of the first invoked component which represents the first invoked component finishing execution in the first iteration of the loop, and which represents the first invoked component starting execution in a second iteration of the loop, followed by (d) a second instance of the second invoked component which is called by the second instance of the first invoked component, followed by (e) a third instance of the first invoked component which represents the first invoked component finishing execution in the second iteration of the loop. - View Dependent Claims (30, 31, 32, 33, 34, 35, 36, 37, 38)
-
-
39. A computer-implemented method for monitoring execution flows, comprising:
-
observing a plurality of execution flows at a computer system, each execution flow comprises a sequence of invoked components, identifiers of the invoked components are provided in the sequences, and each invoked component is instrumented; recording the sequences of invoked components of the plurality of execution flows; for each recorded sequence of invoked components, applying lossy compression rules to the identifiers of the invoked components to provide a corresponding compressed sequence of invoked components, one of the recorded sequences of invoked components comprises an ordered set of invoked components which represents first and second instances of a loop, the ordered set comprises;
(a) a first instance of a first invoked component which represents the first invoked component starting execution in the first instance of the loop, followed by (b) a first instance of a second invoked component which is called by the first instance of the first invoked component, followed by (c) a second instance of the first invoked component which represents the first invoked component finishing execution in the first instance of the loop, and which represents the first invoked component starting execution in a second instance of the loop, followed by (d) a second instance of the second invoked component which is called by the second instance of the first invoked component, followed by (e) a third instance of the first invoked component which represents the first invoked component finishing execution in the second instance of the loop, and the lossy compression rules represent the first and second instances of the loop by a single instance of the loop in the compressed sequence of invoked components; anddefining a plurality of execution flow shapes based on the compressed sequences of invoked components.
-
-
40. An apparatus for monitoring execution flows, comprising:
-
at least one storage device; and at least one processor in communication with the at least one storage device, the at least one processor;
observes a plurality of execution flows at a computer system, each execution flow comprises a sequence of invoked components, identifiers of the invoked components are provided in the sequences, and each invoked component is instrumented;
records sequences of invoked components of the plurality of execution flows;
for each recorded sequence of invoked components, applies lossy compression rules to the identifiers of the invoked components to provide a corresponding compressed sequence of invoked components, one of the recorded sequences of invoked components comprises an ordered set of invoked components which represents first and second instances of a loop, the ordered set comprises;
(a) a first instance of a first invoked component which represents the first invoked component starting execution in the first instance of the loop, followed by (b) a first instance of a second invoked component which is called by the first instance of the first invoked component, followed by (c) a second instance of the first invoked component which represents the first invoked component finishing execution in the first instance of the loop, and which represents the first invoked component starting execution in a second instance of the loop, followed by (d) a second instance of the second invoked component which is called by the second instance of the first invoked component, followed by (e) a third instance of the first invoked component which represents the first invoked component finishing execution in the second instance of the loop, and the lossy compression rules represent the first and second instances of the loop by a single instance of the loop in the compressed sequence of invoked components; and
defines a plurality of execution flow shapes based on the compressed sequence of invoked components.
-
Specification