IP Library Granted Patent US 8,527,959
Granted Patent B2
US 8,527,959 · App. 11/952,922 · Granted Sep 3, 2013

Binary programmable method for application performance data collection

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,527,959
App. No.
11/952,922
Granted
Sep 3, 2013
Kind
B2
Abstract

A method for application performance data collection includes steps or acts of: customizing a performance tool for collecting application performance data of an application; modifying the application by inserting the performance tool while the application does not need to be rebuilt from the source; executing the application; and collecting the application execution performance data such that only interesting data is collected. Customizing the performance tool proceeds by implementing at least one configurable tracing function that can be programmed by the user; compiling the function(s) into an object file; and inserting the object file into the performance tool using binary instrumentation.

Claims (73)

1. A method comprising steps of:

generating a performance tool for collecting user-specified application performance data of an application, said performance tool comprising configurable functions compiled into a dynamic linking library;

modifying the application to insert the performance tool into a binary executable of said application via binary instrumentation such that the application does not need to be rebuilt from a source;

wherein implementation is done at a binary level on a copy of an original binary executable using the binary instrumentation, without requiring re-linking of the application;

wherein original source code of the application and the original application binary executable are not modified;

executing the application; and

collecting dynamic performance data of the application during the execution of the application such that only interesting data is collected.

2. The method of claim 1 wherein the customizing step comprises steps of:

implementing at least one configurable tracing function that can be programmed by the user;

compiling the at least one configurable tracing function into an object file; and

inserting the object file into the performance tool using binary instrumentation.

3. The method of claim 2 wherein the implementing step comprises steps of:

implementing at least one tracing function selected from a group consisting of:

a function deciding whether and where an event should be recorded into an in-memory trace, a function deciding whether a process of a massively parallel program should write the in-memory trace to files; and

a function helping to calculate user-defined performance metrics;

utilizing utility functions to assist the implementation of the at least one tracing function; and

filtering the performance data for providing the user with an ability to focus on user-interested performance data when implementing the at least one tracing function.

4. The method of claim 2 wherein C/Fortran is used to implement at least one configurable tracing function.

5. The method of claim 3 wherein filtering the performance data comprises implementing filter functions ranging from a simple filter function for a default implementation to filter functions performing complicated tasks selected from a group consisting of: information selection, trace-target selection, detection of specific activities, and detection of patterns.

6. The method of claim 3 further comprising a step of building a time-ordered list of the tracing functions that are called.

7. The method of claim 5 wherein the detection of patterns comprises:

stopping event recording when a repeated sequence of function calls is detected; and

starting the event recording when a new sequence of function calls is detected.

8. The method of claim 1 further comprising a step of storing the collected dynamic performance data.

9. The method of claim 8 further comprising storing the collected dynamic performance data in a trace buffer.

10. The method of claim 1 wherein collecting the dynamic performance data comprises collecting the performance data from only selected code segments of the application rather than all code segments.

11. An information processing system comprising:

a data storage for storing performance data;

an input/output interface for communicating performance data results to a user;

a profiling/tracing library;

a memory having program code stored therein; and

a processor operatively connected to said memory for carrying out instructions in accordance with said stored program code; wherein said program code, when executed by said processor, causes said processor to:

generate a performance tool for collecting user-specified application performance data of an application, said performance tool comprising configurable functions compiled into a dynamic linking library;

modify the application to insert the performance tool into a binary executable of said application via binary instrumentation such that the application does not need to be rebuilt from a source;

wherein implementation is done at a binary level on a copy of an original binary executable using the binary instrumentation, without requiring re-linking of the application;

wherein original source code of the application and the original binary executable are not modified;

execute the application; and

collect dynamic performance data of the application during the execution of the application such that only interesting data is collected.

12. The information processing system of claim 11 wherein the data storage is a trace buffer.

13. The information processing system of claim 11 wherein the instructions further cause the processor to:

implement at least one configurable tracing function that can be programmed by the user;

compile the at least one configurable tracing function into an object file; and

insert the object file into the performance tool using binary instrumentation.

14. The information processing system of claim 13 wherein the implementing step comprises steps of:

implementing at least one tracing function selected from a group consisting of:

a function deciding whether and where an event should be recorded into an in-memory trace, a function deciding whether a process of a massively parallel program should write the in-memory trace to files; and a function helping to calculate user-defined performance metrics;

utilizing utility functions to assist the implementation of the at least one tracing function; and

filtering the performance data for providing the user with an ability to focus on user-interested performance data when implementing the at least one tracing function.

15. The information processing system of claim 14 wherein filtering the performance data comprises implementing filter functions ranging from a simple filter function for a default implementation to filter functions performing complicated tasks selected from a group consisting of: information selection, trace-target selection, detection of specific activities, and detection of patterns.

16. The information processing system of claim 15 wherein the detection of patterns comprises:

stopping event recording when a repeated sequence of function calls is detected; and

starting the event recording when a new sequence of function calls is detected.

17. A computer program product embodied on a non-transitory computer readable medium and comprising code that, when executed, causes a computer to perform the following:

generate a performance tool for collecting user-specified application performance data of an application, said performance tool comprising configurable functions compiled into a dynamic linking library;

modify the application to insert the performance tool into a binary executable of said application via binary instrumentation such that the application does not need to be rebuilt from a source;

wherein implementation is done at a binary level on a copy of an original binary executable using the binary instrumentation, without requiring re-linking of the application;

wherein original source code of the application and the original application binary executable are not modified;

execute the application; and

collect dynamic performance data of the application during the execution of the application such that only interesting data is collected.

18. The computer program product of claim 17 wherein the code further causes the computer to:

implement at least one configurable tracing function that can be programmed by the user;

compile the at least one configurable tracing function into an object file; and

insert the object file into the performance tool using binary instrumentation.

19. A system for obtaining services comprising:

a memory having program code stored therein;

a processor operatively connected to said memory for carrying out instructions in accordance with said stored program code; wherein said program code, when executed by said processor, causes said processor to:

generate a performance tool for collecting user-specified application performance data of an application, said performance tool comprising configurable functions compiled into a dynamic linking library;

modify the application to insert the performance tool into a binary executable of said application via binary instrumentation such that the application does not need to be rebuilt from a source;

wherein implementation is done at a binary level on a copy of an original binary executable using the binary instrumentation, without requiring re-linking of the application;

wherein original source code of the application and the original application binary executable are not modified;

execute the application;

collect dynamic performance data of the application during the execution of the application such that only interesting data is collected; and

present the collected performance data to a second user.

Assignments (2)
CONVEYOR IS ASSIGNING UNDIVIDED 50% INTEREST Recorded Nov 8, 2017
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: SERVICENOW, INC.; INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 044413/0124 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 18, 2012
From: CHUNG, I-HSIN; EKANADHAM, KATTAMURI; KLEPACKI, DAVID JOSEPH; SBARAGLIA, SIMONE; WALKUP, ROBERT EDWARD; WEN, HUI-FANG; YU, HAO
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 027552/0482 →