IP Library Granted Patent US 9,323,652
Granted Patent B2
US 9,323,652 · App. 13/866,022 · Granted Apr 26, 2016

Iterative bottleneck detector for executing applications

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,323,652
App. No.
13/866,022
Granted
Apr 26, 2016
Kind
B2
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.

Claims (64)

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. The computer-implemented method of claim 1 , said first set of checkpoints and said second set of checkpoints being consecutive checkpoints.

3. The computer-implemented method of claim 1 further comprising: scanning said application to identify said first set of checkpoints.

4. The computer-implemented method of claim 3 , said first set of checkpoints being selected based on function calls with which the application is decorated.

5. The computer-implemented method of claim 4 , said function calls comprise changes made to at least one of source code, intermediate code, or binary code of the application.

6. The computer-implemented method of claim 4 , said first set of checkpoints being identified by analyzing source code for said application.

7. The computer-implemented method of claim 6 , said first set of checkpoints being identified using a label comprising at least a portion of a function name.

8. The computer-implemented method of claim 7 , said second set of checkpoints being identified using a label comprising at least a portion of a function name.

9. The computer-implemented method of claim 4 , said first set of checkpoints being identified by analyzing intermediate code for said application.

10. The computer-implemented method of claim 1 further comprising: executing a load generator while executing said application.

11. The computer-implemented method of claim 10 further comprising: determining a load factor for a plurality of said timestamps.

12. The computer-implemented method of claim 11 further comprising: correlating said load factor to said timestamps for each said checkpoint identifiers.

13. The computer-implemented method of claim 1 , said first set of checkpoints being manually inserted in said application.

14. The computer-implemented method of claim 13 , said second set of checkpoints being manually inserted in said application.

15. The computer-implemented method of claim 14 , said first set of checkpoints being selected from a plurality of checkpoints manually inserted in said application.

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.

17. The computing system of claim 16 , wherein said checkpoint inserter that scans source code of said application to identify locations for insertion of checkpoints.

18. The computing system of claim 16 , wherein said checkpoint inserter scans intermediate code of said application to identify locations for insertion of checkpoints.

19. The computing system of claim 16 , wherein each checkpoint function call is a call to an application programming interface for said analyzer.

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.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 20, 2015
From: CONCURIX CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 036139/0069 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 21, 2013
From: GARRETT, CHARLES D.; FRASER, CHRISTOPHER W.
To: CONCURIX CORPORATION
Reel/Frame 031836/0099 →