IP Library Granted Patent US 9,189,364
Granted Patent B2
US 9,189,364 · App. 13/949,162 · Granted Nov 17, 2015

Selective monitoring of software 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,189,364
App. No.
13/949,162
Granted
Nov 17, 2015
Kind
B2
Abstract

An application monitoring system autonomously selects routines for performance monitoring based on characteristics of the content of the routines. These characteristics are preferably related to aspects of routines that are likely candidates for performance improvement, such as repetitive loops, event waits, synchronized blocks, and on. Routines that appear to be relatively un-improvable are excluded from initial monitoring, and routines that are subsequently determined to be relatively un-improvable, based on performance analysis and/or user feedback, are excluded from future monitoring. The determination of each routine's candidacy for monitoring is maintained over time, so that each subsequent monitoring session need not repeat the determinations. Changed routines are routinely re-monitored and/or re-assessed to affirm or modify the routine's candidacy for subsequent monitoring.

Claims (55)

1. A system comprising:

an analysis module configured to analyze routines within an application code and to assign respective monitoring candidacy measures to each of the routines based on respective content of the routines;

a selection module configured to select a routine from among the routines for monitoring based on the respective monitoring candidacy measures, and augment the application code with monitoring code configured to facilitate collection of performance data for the selected routine;

a memory configured to store the augmented application code and the respective monitoring candidacy measures between executions of the application code; and

a processor configured to execute the modules;

wherein the monitoring code comprises a monitoring identifier corresponding to the selected routine, the selection module is further configured to selectively change the monitoring identifier to enable or disable monitoring of the selected routine, and the system is configured to bypass the collection of the performance data for the selected routine when the monitoring of the selected routine is disabled.

2. The system of claim 1 , further comprising:

a performance analysis module configured to modify the monitoring candidacy measure assigned to the selected routine based on the performance data.

3. The system of claim 1 , wherein the selection module is further configured to selectively change the monitoring identifier based on changes to the monitoring candidacy measure assigned to the selected routine.

4. The system of claim 1 , further comprising:

a compiler configured to enhance the application code, wherein the analysis module is further configured to analyze the routines within the enhanced application code.

5. The system of claim 1 , wherein the analysis module is further configured to analyze the content of each of the routines for the presence of at least one of:

a loop;

a call to other routines;

a wait for an event; and

a synchronized block.

6. The system of claim 1 , wherein the analysis module is further configured to analyze only routines that have been added or changed since a prior execution of the application code from among the routines.

7. A monitoring system, comprising:

an analysis module configured to analyze routines within an application code to assign each routine a respective monitoring candidacy measure based on content of the routine, wherein the monitoring candidacy measure represents a potential for performance improvement of the respective routine;

a monitoring selection module configured to:

select a routine from among the routines to be monitored based on the monitoring candidacy measure assigned to the selected routine, and

augment the application code with monitoring code that facilitates collection of performance data for the selected routine;

a non-transitory memory that is configured to store the augmented application code; and

a processor configured to execute the modules, wherein the respective monitoring candidacy measure assigned to each routine is retained between executions of the application code, the monitoring code is configured to allow selective bypassing of the collection of performance data for the selected routine, based on an enabling parameter associated with the selected routine, and the monitoring selection module is further configured to selectively control the enabling parameter of the selected routine based on changes to the monitoring candidacy measure assigned to the selected routine.

8. The monitoring system of claim 7 , wherein the analysis module is further configured to analyze the content of each of the routines for the presence of at least one of:

a loop,

calls to other routines,

a wait for an event, and

a synchronized block.

9. The monitoring system of claim 7 , wherein the analysis module is configured to only analyze routines that have been added or changed since a prior execution of the application code from among the routines.

10. The monitoring system of claim 7 , further comprising:

a performance analysis module configured to modify the monitoring candidacy measure assigned to the selected routine based on the performance data for the selected routine.

11. The monitoring system of claim 10 , wherein the performance analysis module is further configured to modify the enabling parameter of the selected routine when the selected routine exhibits an average execution time that is below a given threshold.

12. The monitoring system of claim 10 , wherein the performance analysis module is further configured to modify the enabling parameter of the selected routine when the selected routine is executed at least a given number of times and exhibits an average execution time that is below a given threshold.

13. The monitoring system of claim 7 , wherein the monitoring code is configured to change the enabling parameter associated with the selected routine during execution of the augmented code and thereby cause bypass of the collection of the performance data for the selected routine.

14. The monitoring system of claim 7 , wherein the processor is further configured to execute the augmented code and thereby produce the performance data.

15. The monitoring system of claim 7 , further comprising:

a user interface configured to facilitate modification of the monitoring candidacy measure assigned to one of the routines by a user of the monitoring system.

16. A method comprising:

analyzing routines within an application code and assigning respective monitoring candidacy measures to each of the routines based on respective content of the routines, wherein the content comprises a sequence of instructions;

selecting a routine from among the routines for monitoring based on the respective monitoring candidacy measures;

augmenting the application code with monitoring code configured to facilitate collection of performance data for the selected routine;

storing the augmented application code and the respective monitoring candidacy measures in a memory between executions of the application code;

selectively changing a monitoring identifier associated with the selected routine based on changes to the monitoring candidacy measure assigned to the selected routine, the monitoring identifier enabling or disabling monitoring of the selected routine; and

bypassing the collection of performance data for the selected routine when the monitoring identifier has been changed to disable monitoring.

17. The method of claim 16 , further comprising:

accessing the monitoring identifier during execution of the augmented code,

wherein the bypassing occurs during execution of the augmented code.

18. The method of claim 16 , further comprising:

modifying the monitoring identifier based on the performance data for the selected routine.

19. The method of claim 16 , further comprising:

modifying the monitoring candidacy measure assigned to the selected routine based on the performance data for the selected routine.

20. The method of claim 19 , wherein the modifying is based on an average execution time of the selected routine.

21. The method of claim 16 , further comprising:

modifying the monitoring candidacy measure assigned to the selected routine based on input from a user interface.

Assignments (21)
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: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
To: RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
Reel/Frame 058593/0046 →
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 →
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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 7, 2019
From: OPNET TECHNOLOGIES LLC
To: RIVERBED TECHNOLOGY, INC.
Reel/Frame 048531/0409 →
CHANGE OF NAME Recorded Mar 5, 2019
From: OPNET TECHNOLOGIES, INC.
To: OPNET TECHNOLOGIES LLC
Reel/Frame 048510/0343 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 4, 2019
From: CROSBY, PETER ANTHONY
To: OPNET TECHNOLOGIES, INC.
Reel/Frame 048495/0044 →
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 →