IP Library Granted Patent US 9,507,655
Granted Patent B2
US 9,507,655 · App. 14/530,443 · Granted Nov 29, 2016

Tracking asynchronous entry points for an application

Inventors: Suraj Puvvada (San Jose, CA); Ryan Ericson (San Francisco, CA)
Assignee: AppDynamics, Inc.
G06F9/547G06F9/466G06F9/54
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,507,655
App. No.
14/530,443
Granted
Nov 29, 2016
Kind
B2
Abstract

Asynchronous operations associated with a request such as synchronous threads, runnable elements, callable elements, and other invokable objects are tracked to determine the metrics about the request and operations. The present technology tracks the start and end of each asynchronous operation and maintains a counter which tracks the currently executing asynchronous operations. By monitoring the request, the start and end of each asynchronous operation associated with the request, and the number of asynchronous operations currently executing, the present technology may identify the end of a request by identifying when the last asynchronous operation associated with the request ends. In some instances, the present technology identifies the end of a request when a counter which tracks the number of asynchronous operations executing reaches a value of zero after the first asynchronous operation has already begun.

Claims (47)

1. A method for monitoring an application, comprising:

sampling a first thread to identify a begin segment method executed by the first thread;

extracting a context object from the begin segment;

inserting the context object into a first set of call data for the first thread;

sampling a second thread to identify an end method executed by the second thread, the second thread asynchronous form the first thread;

extracting a second context object from the end segment method;

reporting the first set of call data and a second set of call data to be merged based on the first context object and the second context object;

setting a cached state and partial call graph from a previous thread on the current execution thread.

2. The method of claim 1 , further comprising determining a second thread is an end segment for the first thread.

3. The method of claim 1 , further comprising caching the context object for the first thread.

4. The method of claim 1 , further comprising caching the call stack of the first thread.

5. The method of claim 1 , wherein the element is placed in the call stack below a start thread.

6. The method of claim 1 , further comprising:

determining that the first context object associated with the first thread matches the second context object associated with the second thread;

monitoring the second thread; and

inserting the context object into a second set of call data for the second thread.

7. A non-transitory computer readable storage medium having embodied thereon a program, the program being executable by a processor to perform a method for monitoring an application, the method comprising:

sampling a first thread to identify a begin segment method executed by the first thread;

extracting a context object from the begin segment;

inserting the context object into a first set of call data for the first thread;

sampling a second thread to identify an end segment executed by the second thread, the second thread asynchronous from the first thread;

extracting a second context object from the end segment; and

reporting the first set of call data and a second set of call data to be merged based on the first context object and the second context object;

setting a cached state and partial call graph from a previous thread on the current execution thread.

8. The non-transitory computer readable storage medium of claim 7 , further comprising determining a second thread is an end segment for the first thread.

9. The non-transitory computer readable storage medium of claim 7 , further comprising caching the context object for the first thread.

10. The non-transitory computer readable storage medium of claim 7 , further comprising caching the call stack of the first thread.

11. The non-transitory computer readable storage medium of claim 7 , wherein the element is placed in the call stack below a start thread.

12. The non-transitory computer readable storage medium of claim 7 , further comprising:

determining that the first context object associated with the first thread matches the second context object associated with the second thread;

monitoring the second thread; and

inserting the context object into a second set of call data for the second thread.

13. A system for monitoring an application, comprising:

a processor;

a memory; and

one or more modules stored in memory and executable by a processor to sample a first thread to identify a begin segment method executed by the first thread

extract a context object from the begin segment,

insert the context object element into a first set of call data for the first thread,

sample a second thread to identify an end executed by the second thread, the second thread asynchronous from the first thread,

extract a second context object from the end segment; and

report the first set of call data and a second set of call data to be merged based on the first context object and the second context object;

setting a cached state and partial call graph from a previous thread on the current execution thread.

14. The system of claim 13 , the one or more modules further executable to determine a second thread is an end segment for the first thread.

15. The system of claim 13 , the one or more modules further executable to cache the context object for the first thread.

16. The system of claim 13 , the one or more modules further executable to cache the call stack of the first thread.

17. The system of claim 13 , wherein the element is placed in the call stack below a start thread.

18. The system of claim 13 , the one or more modules further executable to determine that the first context object associated with the first thread matches the second context object associated with the second thread, monitor the second thread, and insert the context object into a second set of call data for the second thread.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 10, 2017
From: APPDYNAMICS LLC
To: CISCO TECHNOLOGY, INC.
Reel/Frame 044173/0050 →
CHANGE OF NAME Recorded Jun 23, 2017
From: APPDYNAMICS, INC.
To: APPDYNAMICS LLC
Reel/Frame 042964/0229 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 14, 2016
From: PUVVADA, SURAJ; ERICSON, RYAN
To: APPDYNAMICS, INC
Reel/Frame 038287/0621 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 28, 2015
From: PUVVADA, SURAJ; ERICSON, RYAN
To: APPDYNAMICS, INC.
Reel/Frame 036673/0459 →
Continuity (1)
Related Publication 20160124783A1 · May 5, 2016