IP Library Granted Patent US 7,490,147
Granted Patent B2
US 7,490,147 · App. 10/012,114 · Granted Feb 10, 2009

Method and apparatus for collecting performance data in a computer application

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 7,490,147
App. No.
10/012,114
Granted
Feb 10, 2009
Kind
B2
Abstract

The present invention is a method and apparatus for measuring the performance of a subroutine in a software application executing upon a computer system. When characterized as a method, a monitoring application operating according to the present invention first intercepts a call to a subroutine. The monitoring application then examines a system clock. If the clock is in a particular configuration, the monitoring application collects a first set of performance data. Next, the monitoring application passes control to the subroutine. When the subroutine completes, control is returned to the monitoring application. The monitoring application then collects a second set of performance data. The first and second sets of data are then compared to determine the performance characteristics of the subroutine. If the clock in not in the particular configuration, the monitoring application passes control to the subroutine in such a way that processing continues as it would if the monitoring program had never been called.

Claims (60)

1. A method for measuring the performance of a subroutine in a software application executing upon a computer system, comprising:

intercepting a call to the subroutine;

examining one or more preselected bits which comprise less than all bits of a system clock;

based on the examination of the one or more preselected bits of the system clock, determining using either hardware or software whether or not to collect a first and second set of performance data;

collecting the first set of performance data if a determination is made to collect performance data;

calling the subroutine;

collecting the second set of performance data after the subroutine finishes executing if the determination is made to collect performance data; and

comparing the first set of performance data to the second set of performance data if the determination is made to collect performance data, wherein the performance of the subroutine can be measured.

2. The method as recited in claim 1 , further comprising:

intercepting a second call to the subroutine;

examining the system clock a second time;

based on the second examination of the system clock, determining using either hardware or software whether or not to collect performance data for the second call to the subroutine;

setting registers and environmental variables; and

if a determination is made not to collect performance data, calling the subroutine without collecting performance data.

3. The method as recited in claim 2 , wherein the intercepting step further comprises substituting an address for a monitoring program for the address of the subroutine.

4. The method as recited in claim 1 , wherein the determining step further includes multiplying the number of possible combinations of the system clock by a user-supplied value specifying a percentage of time the subroutine is to be monitored.

5. The method as recited in claim 3 , further comprising the subroutine returning control to a monitoring program.

6. The method as recited in claim 3 , wherein the software application is an IBM Database 2 program.

7. A computer adapted to measure the performance of a subroutine in a software application executing upon the computer, wherein the computer comprises a second software program for obtaining performance data, wherein the second software program:

intercepts a first call to the subroutine;

examines one or more preselected bits of a system clock associated with the computer;

based on the examination of the one or more preselected bits which comprise less than all bits of the system clock, determines using either hardware or software whether or not to collect a first and second set of performance data;

collects the first set of performance data if a determination is made to collect performance data;

calls the subroutine;

collects the second set of performance data after the subroutine finishes executing if the determination is made to collect performance data; and

compares the first set of performance data to the second set of performance data if the determination is made to collect performance data, wherein the performance of the subroutine can be measured.

8. The computer as recited in claim 7 , wherein the second software program also:

intercepts a second call to the subroutine;

examines the system clock;

based on the examination of the system clock, determines using either hardware or software whether or not to collect performance data for the second call to the subroutine;

sets registers and environmental variables; and

if a determination is made not to collect performance data, calls the subroutine without collecting performance data.

9. The computer as recited in claim 8 , wherein the second software program substitutes an address for a monitoring program for the address of the subroutine as part of the intercepting step.

10. The computer as recited in claim 7 , wherein the determining step further includes the second software program multiplying the number of possible combinations of the system clock by a user-supplied value specifying a percentage of time the subroutine is to be monitored.

11. The computer as recited in claim 9 , wherein the second software program returns control to a monitoring program after the subroutine finishes executing.

12. The computer as recited in claim 9 , wherein the software application is an IBM Database 2 program.

13. A computer-readable storage medium comprising a computer software program for measuring the performance of a subroutine in a software application executing upon a computer, wherein the program comprises instructions for performing the following steps:

intercepting a first call to a subroutine of a software application;

examining one or more preselected bits which comprise less than all bits of a system clock associated with the computer;

based on the examination of the one or more preselected bits of the system clock, determining whether or not to collect a first and second set of performance data;

collecting the first set of performance data if a determination is made to collect performance data;

calling the subroutine;

collecting the second set of performance data after the subroutine finishes executing if the determination is made to collect performance data; and

comparing the first set of performance data to the second set of performance data if the determination is made to collect performance data, wherein the performance of the subroutine can be measured.

14. The computer-readable storage medium as recited in claim 13 , wherein the steps further comprise:

intercepting a second call to the subroutine;

examining the system clock;

based on the examination of the system clock, determining whether or not to collect performance data for the second call to the subroutine;

setting registers and environmental variables; and

calling the subroutine without collecting performance data if a determination is made not to collect performance data.

15. The computer-readable storage medium as recited in claim 14 , wherein the intercepting step further includes substituting an address for a monitoring program for the address of the subroutine.

16. The computer-readable storage medium as recited in claim 13 , wherein the determining step further includes multiplying the number of possible combinations of the system clock by a user-supplied value specifying a percentage of time the subroutine is to be monitored.

17. The computer-readable storage medium as recited in claim 15 , wherein the steps further comprise returning control to a monitoring program after the subroutine finishes executing.

18. The computer-readable storage medium as recited in claim 15 , wherein the software application is an IBM Database 2 program.

19. The method according to claim 1 wherein the one or more preselected bits of the system clock comprise a least significant bit of the system clock.

20. The method according to claim 1 wherein the one or more preselected bits of the system clock comprise a particular combination of any plurality of bits of the system clock.

21. The computer according to claim 7 wherein the one or more preselected bits of the system clock comprise a least significant bit of the system clock.

22. The computer according to claim 7 wherein the one or more preselected bits of the system clock comprise a particular combination of any plurality of bits of the system clock.

23. The computer-readable storage medium according to claim 13 wherein the one or more preselected bits of the system clock comprise a least significant bit of the system clock.

24. The computer-readable storage medium according to claim 13 wherein the one or more preselected bits of the system clock comprise a particular combination of any plurality of bits of the system clock.

Assignments (11)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (052854/0139) Recorded Aug 6, 2024
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: BMC SOFTWARE, INC.; BLADELOGIC, INC.
Reel/Frame 068339/0617 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (052844/0646) Recorded Aug 6, 2024
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: BMC SOFTWARE, INC.; BLADELOGIC, INC.
Reel/Frame 068339/0408 →
OMNIBUS ASSIGNMENT OF SECURITY INTERESTS IN PATENT COLLATERAL Recorded Mar 4, 2024
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS RESIGNING COLLATERAL AGENT
To: GOLDMAN SACHS BANK USA, AS SUCCESSOR COLLATERAL AGENT
Reel/Frame 066729/0889 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Feb 1, 2024
From: ALTER DOMUS (US) LLC
To: BMC SOFTWARE, INC.; BLADELOGIC, INC.
Reel/Frame 066567/0283 →
GRANT OF SECOND LIEN SECURITY INTEREST IN PATENT RIGHTS Recorded Sep 30, 2021
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: ALTER DOMUS (US) LLC
Reel/Frame 057683/0582 →
SECURITY INTEREST Recorded Jun 4, 2020
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052854/0139 →
SECURITY INTEREST Recorded Jun 4, 2020
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052844/0646 →
RELEASE OF PATENTS Recorded Oct 5, 2018
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: BMC SOFTWARE, INC.; BLADELOGIC, INC.; BMC ACQUISITION L.L.C.
Reel/Frame 047198/0468 →
SECURITY INTEREST Recorded Oct 2, 2018
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: CREDIT SUISSE, AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 047185/0744 →
SECURITY AGREEMENT Recorded Sep 11, 2013
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 031204/0225 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 26, 2002
From: PRICE, ROBERT ALLEN
To: BMC SOFTWARE, INC.
Reel/Frame 012659/0325 →