Iterative bottleneck detector for executing applications
First Claim
1. A computer-implemented method of analyzing workloads processed when executing an application in order to identify a bottleneck where time to execute a workload between two checkpoints increases at a greater rate than the load increases, and where the bottleneck is identified with a high degree of specificity even though a relatively small number of checkpoints is spread through the application, the computer-implemented method being performed by one or more processors executing computer executable instructions for the computer-implemented method, and the computer-implemented, method comprising:
- identifying a first set of checkpoints in the application;
for each of said first set of checkpoints, establishing a checkpoint function call that causes a checkpoint identifier and a timestamp to be captured;
executing said application in accordance with the workload;
capturing checkpoint identifiers, timestamps, and workload identifiers for the each of said first set of checkpoints;
identifying a bottleneck between said first set of checkpoints;
placing a second set of checkpoints between the checkpoints of said first set of checkpoints;
for said second set of checkpoints, establishing a checkpoint function call that causes a checkpoint identifier and a timestamp to be captured for the checkpoints of said second set of checkpoints;
executing said application in accordance with the workload;
capturing checkpoint identifiers, timestamps, and workload identifiers for each of the checkpoints of said second set of checkpoints;
determining that the bottleneck is between the checkpoints of the second set of checkpoints;
removing or turning off the checkpoints of the first set of checkpoints;
continuing to place successive sets of checkpoints between an immediately previous set of checkpoints and establishing a checkpoint function call that causes a checkpoint identifier and a timestamp to be captured for the checkpoints of each said successive set of checkpoints, with a spacing between newly placed checkpoints being smaller than a spacing between the previous set of checkpoints, then removing or turning off the checkpoints of the previous set of checkpoints; and
re-executing the application in accordance with the workload until the bottleneck is located with a desired degree of specificity.
2 Assignments
0 Petitions
Accused Products
Abstract
A bottleneck detector may use an iterative method to identify a bottleneck with specificity. An automated checkpoint inserter may place checkpoints in an application. When a bottleneck is detected in an area of an application, the first set of checkpoints may be removed and a new set of checkpoints may be placed in the area of the bottleneck. The process may iterate until a bottleneck may be identified with enough specificity to aid a developer or administrator of an application. In some cases, the process may identify a specific function or line of code where a bottleneck occurs.
-
Citations
20 Claims
-
1. A computer-implemented method of analyzing workloads processed when executing an application in order to identify a bottleneck where time to execute a workload between two checkpoints increases at a greater rate than the load increases, and where the bottleneck is identified with a high degree of specificity even though a relatively small number of checkpoints is spread through the application, the computer-implemented method being performed by one or more processors executing computer executable instructions for the computer-implemented method, and the computer-implemented, method comprising:
-
identifying a first set of checkpoints in the application; for each of said first set of checkpoints, establishing a checkpoint function call that causes a checkpoint identifier and a timestamp to be captured; executing said application in accordance with the workload; capturing checkpoint identifiers, timestamps, and workload identifiers for the each of said first set of checkpoints; identifying a bottleneck between said first set of checkpoints; placing a second set of checkpoints between the checkpoints of said first set of checkpoints; for said second set of checkpoints, establishing a checkpoint function call that causes a checkpoint identifier and a timestamp to be captured for the checkpoints of said second set of checkpoints; executing said application in accordance with the workload; capturing checkpoint identifiers, timestamps, and workload identifiers for each of the checkpoints of said second set of checkpoints; determining that the bottleneck is between the checkpoints of the second set of checkpoints; removing or turning off the checkpoints of the first set of checkpoints; continuing to place successive sets of checkpoints between an immediately previous set of checkpoints and establishing a checkpoint function call that causes a checkpoint identifier and a timestamp to be captured for the checkpoints of each said successive set of checkpoints, with a spacing between newly placed checkpoints being smaller than a spacing between the previous set of checkpoints, then removing or turning off the checkpoints of the previous set of checkpoints; and re-executing the application in accordance with the workload until the bottleneck is located with a desired degree of specificity. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)
-
-
16. A computing system comprising:
-
memory containing executable code; one or more processors, which, when executing the executable code, cause the computing system to be configured with a system architecture for analyzing workloads processed when executing an application in order to identify a bottleneck where time to execute a workload between two checkpoints increases at a greater rate than the workload increases, and where the bottleneck is identified with a high degree of specificity even though a relatively small number of checkpoints is spread through the application, and wherein the system architecture comprises; a workload generator that causes the application to execute in accordance with the workload; a checkpoint inserter that analyzes the application to identify a plurality of locations for checkpoints, and inserts a checkpoint function call that causes a checkpoint identifier and a timestamp to be captured for each inserted checkpoint; an analyzer that performs the following computer-implemented method; identifies a first set of checkpoints in the application; executes said application in accordance with the workload; captures checkpoint identifiers, timestamps, and workload identifiers for each of said first set of checkpoints; identifies a bottleneck between said first set of checkpoints; identifies a second set of checkpoints between the checkpoints of said first set of checkpoints; executes said application in accordance with the workload; captures checkpoint identifiers, timestamps, and workload identifiers for the checkpoints of said second set of checkpoints; determines that the bottleneck is between the checkpoints of the second set of checkpoints; removes or turns off the checkpoints of the first set of checkpoints; and continues to identify successive sets of checkpoints between an immediately previous set checkpoints and, with a spacing between newly placed checkpoints being smaller than a spacing between the previous set of checkpoints, then removing or turning off the checkpoints of the previous set of checkpoints; and re-executes the application in accordance with the workload until the bottleneck is located with a desired degree of specificity. - View Dependent Claims (17, 18, 19)
-
-
20. A computing system comprising:
-
one or more processors; memory containing executable instructions which, when executed by the one or more processors, cause the one or more processors to execute a computer-implemented method of analyzing workloads processed when executing an application in order to identify a bottleneck where time to execute a workload between two checkpoints increases at a greater rate than the workload increases, and where the bottleneck is identified with a high degree of specificity even though a relatively small number of checkpoints is spread through the application, and wherein the computer-implemented method comprises; identifying a first set of checkpoints in the application; for each of said first set of checkpoints, establishing a checkpoint function call that causes a checkpoint identifier and a timestamp to be captured; executing said application in accordance with the workload; capturing checkpoint identifiers, timestamps, and workload identifiers for the each of said first set of checkpoints; identifying a bottleneck between said first set of checkpoints; placing a second set of checkpoints between the checkpoints of said first set of checkpoints; for said second set of checkpoints, establishing a checkpoint function call that causes a checkpoint identifier and a timestamp to be captured for the checkpoints of said second set of checkpoints; executing said application in accordance with the workload; capturing the checkpoint identifiers, timestamps, and workload identifiers for each of the checkpoints of said second set of checkpoints; determining that the bottleneck is between the checkpoints of the second set of checkpoints; removing or turning off the checkpoints of the first set of checkpoints; continuing to place successive sets of checkpoints between an immediately previous set checkpoints and establishing a checkpoint function call that causes a checkpoint identifier and a timestamp to be captured for the checkpoints of each said successive set of checkpoints, with a spacing between newly placed checkpoints being smaller than a spacing between the previous set of checkpoints, then removing or turning off the checkpoints of the previous set of checkpoints; and re-executing the application in accordance with the workload until the bottleneck is located with a desired degree of specificity.
-
Specification