IP Library Granted Patent US 8,856,767
Granted Patent B2
US 8,856,767 · App. 13/097,446 · Granted Oct 7, 2014

System and method for analyzing dynamic performance of complex 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 8,856,767
App. No.
13/097,446
Granted
Oct 7, 2014
Kind
B2
Abstract

A system and method for monitoring the performance and execution flow of a target application and generating a corresponding data model are provided. The system and method comprise attaching to a thread or process of a target application and tracking the execution of subroutines using instrumentation commands. Data representing the execution flow of the various subroutines, subroutine calls, and their performance is gathered and used to generate data models representing the threads and processes of the application. The data models are optionally merged and/or pruned. A visualization of the data models is generated indicating relevant points of interest within the target application's execution flow.

Claims (66)

1. A computer implemented method for extracting a data model of a target application's performance and execution flow so as to guide optimization of the target application, the method comprising:

attaching a profiler, using a computer, to the target application;

inserting, using a computer, at least one instrumentation command into a portion of binary code of the target application preceding a call of a subroutine;

incrementing, in a computer, a counter corresponding to a number of calls of the subroutine;

starting, in a computer, a timer corresponding to a time of execution for the call;

appending, in a computer, the call to a data structure, wherein the data structure tracks a call flow of the target application;

stopping, in a computer, the timer upon completion of the subroutine; and

building, in a computer, the data model using the data structure.

2. The computer implemented method of claim 1 , the method further comprising:

detecting, using a computer, that the call is a recursive call;

incrementing, in a computer, a counter corresponding to a number of levels of recursion;

pausing, in a computer, a prior timer corresponding to a most recent call of the subroutine; and

restarting, in a computer, the prior timer upon completion of the subroutine.

3. The computer implemented method of claim 1 , wherein the target application comprises at least one process, and the process is attached to the profiler.

4. The computer implemented method of claim 1 , wherein the target application comprises at least one thread, and the thread is attached to the profiler.

5. The computer implemented method of claim 1 , wherein the data model is a call graph and wherein the call graph corresponds to at least one of a thread or a process.

6. The computer implemented method of claim 1 , further comprising accessing a subroutine filter, and wherein the subroutine is specified in the subroutine filter.

7. The computer implemented method of claim 1 , further comprising generating at least one of a visualization and a summary of the data model.

8. The computer implemented method of claim 1 , further comprising:

receiving, at a computer, at least one related data model;

receiving, at a computer, relationship data corresponding to the data model and the related data model;

determining, in a computer, using the relationship data, a creating subroutine for each of the data model and the related data model;

partitioning, using a computer, for each of the data model and the related data model, a first subroutine into a plurality of subsets, wherein each subset corresponds to a nesting level, and each subset comprises at least one first subroutine;

merging, using a computer, the first subroutines in each subset; and

merging, using a computer, a plurality of invocations corresponding to each subroutine.

9. The computer implemented method of claim 1 , further comprising;

determining, using a computer, a threshold value;

deleting, using a computer, at least one omitted subroutine and at least one omitted subroutine call from the data model, wherein the subroutine and the subroutine call do not meet the threshold; and

connecting using a computer, at least one orphaned subroutine to at least one ancestor subroutine.

10. The computer implemented method of claim 1 , further comprising:

determining, using a computer, that the subroutine triggers an idle state;

starting an idle state timer; and

stopping the idle state timer upon completion of the subroutine.

11. A non-transitory computer readable medium that stores a set of instructions which, when executed by a computer, cause the computer to execute steps for extracting a data model of a target application's performance and execution flow so as to guide optimization of the target application, the steps comprising:

attaching a profiler, using a computer, to the target application;

inserting, using a computer, at least one instrumentation command into a portion of binary code of the target application preceding a call of a subroutine;

incrementing, in a computer, a counter corresponding to a number of calls of the subroutine;

starting, in a computer, a timer corresponding to a time of execution for the call;

appending, in a computer, the call to a data structure, wherein the data structure tracks a call flow of the target application;

stopping, in a computer, the timer upon completion of the subroutine; and

building, in a computer, the data model using the data structure.

12. The computer readable medium of claim 11 , the steps further comprising:

detecting, using a computer, that the call is a recursive call;

incrementing, in a computer, a counter corresponding to a number of levels of recursion;

pausing, in a computer, a prior timer corresponding to a most recent call of the subroutine; and

restarting, in a computer, the prior timer upon completion of the subroutine.

13. The computer readable medium of claim 11 , wherein the target application comprises at least one process, and the process is attached to the profiler.

14. The computer readable medium of claim 11 , wherein the target application comprises at least one thread, and the thread is attached to the profiler.

15. The computer readable medium of claim 11 , wherein the data model is a call graph and wherein the call graph corresponds to at least one of a thread or a process.

16. The computer readable medium of claim 11 , the steps further comprising accessing a subroutine filter, and wherein the subroutine is specified in the subroutine filter.

17. The computer readable medium of claim 11 , the steps further comprising generating at least one of a visualization and a summary of the data model.

18. The computer readable medium of claim 11 , the steps further comprising:

receiving, at a computer, at least one related data model;

receiving, at a computer, relationship data corresponding to the data model and the related data model;

determining, in a computer, using the relationship data, a creating subroutine for each of the data model and the related data model;

partitioning, using a computer, for each of the data model and the related data model, a first subroutine into a plurality of subsets, wherein each subset corresponds to a nesting level, and each subset comprises at least one first subroutine;

merging, using a computer, the first subroutines in each subset; and

merging, using a computer, a plurality of invocations corresponding to each subroutine.

19. The computer readable medium of claim 11 , the steps further comprising;

determining, using a computer, a threshold value;

deleting, using a computer, at least one omitted subroutine and at least one omitted subroutine call from the data model, wherein the subroutine and the subroutine call do not meet the threshold; and

connecting using a computer, at least one orphaned subroutine to at least one ancestor subroutine.

20. The computer readable medium of claim 11 , the steps further comprising:

determining, using a computer, that the subroutine triggers an idle state;

starting an idle state timer; and

stopping the idle state timer upon completion of the subroutine.

Assignments (9)
CORRECTIVE ASSIGNMENT TO CORRECT THE THE ASSIGNOR NAME PREVIOUSLY RECORDED AT REEL: 052853 FRAME: 0153. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Mar 29, 2021
From: R2 SOLUTIONS LLC
To: STARBOARD VALUE INTERMEDIATE FUND LP, AS COLLATERAL AGENT
Reel/Frame 056832/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE NAME PREVIOUSLY RECORDED ON REEL 053654 FRAME 0254. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST GRANTED PURSUANT TO THE PATENT SECURITY AGREEMENT PREVIOUSLY RECORDED. Recorded Dec 30, 2020
From: STARBOARD VALUE INTERMEDIATE FUND LP
To: R2 SOLUTIONS LLC
Reel/Frame 054981/0377 →
RELEASE OF SECURITY INTEREST IN PATENTS Recorded Jul 8, 2020
From: STARBOARD VALUE INTERMEDIATE FUND LP
To: ACACIA RESEARCH GROUP LLC; AMERICAN VEHICULAR SCIENCES LLC; BONUTTI SKELETAL INNOVATIONS LLC; CELLULAR COMMUNICATIONS EQUIPMENT LLC; INNOVATIVE DISPLAY TECHNOLOGIES LLC; LIFEPORT SCIENCES LLC; LIMESTONE MEMORY SYSTEMS LLC; MOBILE ENHANCEMENT SOLUTIONS LLC; MONARCH NETWORKING SOLUTIONS LLC; NEXUS DISPLAY TECHNOLOGIES LLC; PARTHENON UNIFIED MEMORY ARCHITECTURE LLC; R2 SOLUTIONS LLC; SAINT LAWRENCE COMMUNICATIONS LLC; STINGRAY IP SOLUTIONS LLC; SUPER INTERCONNECT TECHNOLOGIES LLC; TELECONFERENCE SYSTEMS LLC; UNIFICATION TECHNOLOGIES LLC
Reel/Frame 053654/0254 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 25, 2020
From: EXCALIBUR IP, LLC
To: R2 SOLUTIONS LLC
Reel/Frame 053459/0059 →
PATENT SECURITY AGREEMENT Recorded Jun 5, 2020
From: ACACIA RESEARCH GROUP LLC; AMERICAN VEHICULAR SCIENCES LLC; BONUTTI SKELETAL INNOVATIONS LLC; CELLULAR COMMUNICATIONS EQUIPMENT LLC; INNOVATIVE DISPLAY TECHNOLOGIES LLC; LIFEPORT SCIENCES LLC; LIMESTONE MEMORY SYSTEMS LLC; MERTON ACQUISITION HOLDCO LLC; MOBILE ENHANCEMENT SOLUTIONS LLC; MONARCH NETWORKING SOLUTIONS LLC; NEXUS DISPLAY TECHNOLOGIES LLC; PARTHENON UNIFIED MEMORY ARCHITECTURE LLC; R2 SOLUTIONS LLC; SAINT LAWRENCE COMMUNICATIONS LLC; STINGRAY IP SOLUTIONS LLC; SUPER INTERCONNECT TECHNOLOGIES LLC; TELECONFERENCE SYSTEMS LLC; UNIFICATION TECHNOLOGIES LLC
To: STARBOARD VALUE INTERMEDIATE FUND LP, AS COLLATERAL AGENT
Reel/Frame 052853/0153 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 3, 2016
From: YAHOO! INC.
To: EXCALIBUR IP, LLC
Reel/Frame 038950/0592 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 1, 2016
From: EXCALIBUR IP, LLC
To: YAHOO! INC.
Reel/Frame 038951/0295 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 18, 2016
From: YAHOO! INC.
To: EXCALIBUR IP, LLC
Reel/Frame 038383/0466 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 29, 2011
From: JALAN, ROHIT; KEJARIWAL, ARUN
To: YAHOO! INC.
Reel/Frame 026205/0175 →