IP Library Granted Patent US 9,268,624
Granted Patent B2
US 9,268,624 · App. 13/965,605 · Granted Feb 23, 2016

Application monitoring of related activities across multiple threads

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,268,624
App. No.
13/965,605
Granted
Feb 23, 2016
Kind
B2
Abstract

Embodiments provide systems, methods, and computer program products for monitoring application performance in multithreaded environments. Monitoring data may be inserted into data structures that propagate and persist between threads involved in a processing event. Data related to specific methods executing on each thread may be output to a trace file. The trace file may be analyzed for application performance by associating the threads that contain the same tracking data from the propagated data structure.

Claims (62)

1. A method for monitoring performance of a thread processing a transaction, comprising:

determining, at a processing server, whether the thread is a parent thread or a child thread based on monitoring data in a call context of the thread;

inserting, by the processing server, an identifier into the call context when the thread is the parent thread that lacks an existing identifier, and allowing the thread to inherit the identifier from an active parent thread when the thread is the child thread; and

recording, to a trace file, tracked data comprising the identifier and relating to a method called by the thread while processing the transaction.

2. The method of claim 1 , further comprising:

receiving, at the processing server, a request from a user client to process the transaction;

initiating, at the processing server, the thread to process the transaction; and

outputting the trace file to a data warehouse for performance analysis.

3. The method of claim 1 , wherein the determining comprises:

interrogating the call context of the thread;

identifying the thread as the parent thread when the call context lacks the monitoring data;

identifying the thread as the parent thread when the call context includes the monitoring data comprising the existing identifier that equals a stored identifier for the thread; and

identifying the thread as the child thread when the call context includes the monitoring data comprising the existing identifier that does not equal the stored identifier for the thread.

4. The method of claim 1 , further comprising:

allocating a data structure in the processing server when the thread has not been detected previously by the processing server.

5. The method of claim 1 , wherein the recording comprises:

instrumenting application code utilized in processing the transaction; and

recording transaction data from the method within the instrumented application code as the tracked data.

6. The method of claim 5 , wherein the instrumenting comprises:

selecting the method for monitoring based on activities pre-designated as important for performance monitoring.

7. The method of claim 1 , wherein the identifier comprises a thread identifier and a transaction identifier.

8. A system for application performance monitoring in a processing server, comprising:

a processor configured to initiate a thread to process a transaction;

a monitoring module configured to:

determine whether the thread is a parent thread or a child thread based on monitoring data in a call context of the thread; and

insert an identifier into the call context when the thread is the parent thread that lacks an existing identifier, and allow the thread to inherit the identifier from an active parent thread when the thread is the child thread;

wherein the monitoring module is further configured to record, to a trace file, tracked data comprising the identifier and relating to a method called by the thread while processing the transaction.

9. The system of claim 8 , further comprising a transceiver configured to:

receive a request from a user client to process the transaction; and

output the trace file to a data warehouse for performance analysis.

10. The system of claim 8 , wherein the monitoring module is further configured to:

interrogate the call context of the thread;

identify the thread as the parent thread when the call context lacks the monitoring data;

identify the thread as the parent thread when the call context includes the monitoring data comprising the existing identifier that equals a stored identifier for the thread; and

identify the thread as the child thread when the call context includes the monitoring data comprising the existing identifier that does not equal the stored identifier for the thread.

11. The system of claim 8 , further comprising:

a memory, wherein the monitoring module is further configured to allocate a data structure in the memory when the thread has not been detected previously by the monitoring module.

12. The system of claim 8 , further comprising:

an instrumenting module configured to instrument application code utilized in processing the transaction;

wherein the monitoring module is further configured to record transaction data from the method within the instrumented application code to the trace file as the tracked data.

13. The system of claim 12 , wherein the instrumenting module is further configured to select the method for monitoring based on activities pre-designated as important for performance monitoring.

14. The system of claim 8 , wherein the identifier comprises a thread identifier and a transaction identifier.

15. A non-transitory computer-readable storage medium having control logic recorded thereon that, when executed by a processor, causes the processor to perform a method for monitoring performance of a thread processing a transaction in a processing server, the method comprising:

determining whether the thread is a parent thread or a child thread based on monitoring data in a call context of the thread;

inserting an identifier into the call context when the thread is the parent thread that lacks an existing identifier, and allowing the thread to inherit the identifier from an active parent thread when the thread is the child thread; and

recording, to a trace file, tracked data comprising the identifier and relating to a method called by the thread while processing the transaction.

16. The non-transitory computer-readable medium of claim 15 , further comprising:

receiving a request from a user client to process the transaction;

initiating the thread to process the transaction; and

outputting the trace file to a data warehouse for performance analysis.

17. The non-transitory computer-readable medium of claim 15 , wherein the determining comprises:

interrogating the call context of the thread;

identifying the thread as the parent thread when the call context lacks monitoring data;

identifying the thread as the parent thread when the call context includes the monitoring data comprising the existing identifier that equals a stored identifier for the thread; and

identifying the thread as the child thread when the call context includes the monitoring data comprising the existing identifier that does not equal the stored identifier for the thread.

18. The non-transitory computer-readable medium of claim 15 , further comprising:

allocating a data structure in the processing server when the processing server has not previously detected the thread.

19. The non-transitory computer-readable medium of claim 15 , wherein the recording comprises:

instrumenting application code utilized in processing the transaction; and

recording transaction data from the method within the instrumented application code as the tracked data.

20. The non-transitory computer-readable medium of claim 15 , wherein the instrumenting comprises:

selecting the method for monitoring based on activities pre-designated as important for performance monitoring.

Assignments (19)
RELEASE OF SECURITY INTEREST Recorded Aug 11, 2023
From: ALTER DOMUS (US) LLC, AS COLLATERAL AGENT
To: RIVERBED TECHNOLOGY, INC.; ATERNITY LLC; RIVERBED HOLDINGS, INC.
Reel/Frame 064673/0739 →
CHANGE OF NAME Recorded Feb 10, 2022
From: RIVERBED TECHNOLOGY, INC.
To: RIVERBED TECHNOLOGY LLC
Reel/Frame 059009/0906 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Dec 27, 2021
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS U.S. COLLATERAL AGENT
To: RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
Reel/Frame 058593/0169 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Dec 27, 2021
From: ALTER DOMUS (US) LLC, AS COLLATERAL AGENT
To: RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
Reel/Frame 058593/0108 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Dec 27, 2021
From: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
To: RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
Reel/Frame 058593/0046 →
SECURITY INTEREST Recorded Dec 10, 2021
From: RIVERBED TECHNOLOGY LLC (FORMERLY RIVERBED TECHNOLOGY, INC.); ATERNITY LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS U.S. COLLATERAL AGENT
Reel/Frame 058486/0216 →
PATENT SECURITY AGREEMENT Recorded Oct 27, 2021
From: RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 057943/0386 →
PATENT SECURITY AGREEMENT SUPPLEMENT - FIRST LIEN Recorded Oct 14, 2021
From: RIVERBED HOLDINGS, INC.; RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 057810/0502 →
PATENT SECURITY AGREEMENT SUPPLEMENT - SECOND LIEN Recorded Oct 14, 2021
From: RIVERBED HOLDINGS, INC.; RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
To: ALTER DOMUS (US) LLC, AS COLLATERAL AGENT
Reel/Frame 057810/0559 →
RELEASE OF SECURITY INTEREST IN PATENTS RECORED AT REEL 056397, FRAME 0750 Recorded Oct 13, 2021
From: MACQUARIE CAPITAL FUNDING LLC
To: RIVERBED HOLDINGS, INC.; RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
Reel/Frame 057983/0356 →
SECURITY INTEREST Recorded May 26, 2021
From: RIVERBED HOLDINGS, INC.; RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
To: MACQUARIE CAPITAL FUNDING LLC
Reel/Frame 056397/0750 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 30, 2020
From: RIVERBED TECHNOLOGY, INC.
To: ATERNITY LLC
Reel/Frame 054778/0540 →
CORRECTIVE ASSIGNMENT TO CORRECT THE CONVEYING PARTY NAME PREVIOUSLY RECORDED ON REEL 035521 FRAME 0069. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST IN PATENTS. Recorded Jun 2, 2015
From: JPMORGAN CHASE BANK, N.A.
To: RIVERBED TECHNOLOGY, INC.
Reel/Frame 035807/0680 →
SECURITY INTEREST Recorded May 1, 2015
From: RIVERBED TECHNOLOGY, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 035561/0363 →
RELEASE OF SECURITY INTEREST IN PATENTS Recorded Apr 28, 2015
From: BARCLAYS BANK PLC
To: RIVERBED TECHNOLOGY, INC.
Reel/Frame 035521/0069 →
PATENT SECURITY AGREEMENT Recorded Dec 27, 2013
From: RIVERBED TECHNOLOGY, INC.
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 032421/0162 →
RELEASE OF PATENT SECURITY INTEREST Recorded Dec 26, 2013
From: MORGAN STANLEY & CO. LLC, AS COLLATERAL AGENT
To: RIVERBED TECHNOLOGY, INC.
Reel/Frame 032113/0425 →
PATENT SECURITY AGREEMENT Recorded Sep 13, 2013
From: RIVERBED TECHNOLOGY, INC.
To: MORGAN STANLEY & CO. LLC
Reel/Frame 031216/0968 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 13, 2013
From: CROSBY, PETER ANTHONY; MEAGHER, ROBERT
To: RIVERBED TECHNOLOGY, INC.
Reel/Frame 030999/0259 →