IP Library Granted Patent US 10,114,728
Granted Patent B2
US 10,114,728 · App. 14/250,340 · Granted Oct 30, 2018

Dynamic function-level hardware performance profiling for application performance analysis

Inventors: Hui Zhang (Princeton Junction, NJ); Nipun Arora (Plainsboro, NJ); Junghwan Rhee (Princeton, NJ); Kai Ma (Princeton, NJ); Guofei Jiang (Princeton, NJ)
Assignee: NEC Corporation
G06F11/3636
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 10,114,728
App. No.
14/250,340
Granted
Oct 30, 2018
Kind
B2
Abstract

The invention is directed to a computer implemented method and a system that implements an application performance profiler with hardware performance event information. The profiler provides dynamic tracing of application programs, and offers fine-grained hardware performance event profiling at function levels. To control the perturbation on target applications, the profiler also includes a control mechanism to constraint the function profiling overhead within a budget configured by users.

Claims (35)

1. A system with a computer implementation of performance profiling for performance analysis, the system comprising:

a processor coupled to a non-transitory computer-readable storage medium, the processor being configured for:

inserting probe points, using an application instrumentation, into a target application program so that at run-time, performance profiling can be done by enabling those probe points;

profiling, using an application dynamic tracing, with selected targets and overhead budget, the target application performance during its execution; and

analyzing, using a performance data analyzer, the application performance data output by the application dynamic tracing;

wherein the application instrumentation, application dynamic tracing and performance data analyzer are configured to cooperate to selectively enable and disable dynamic function-level hardware performance profiling of hardware performance events and association of the hardware performance events with function calls for application performance analysis at a plurality of times on any subset of application functions and any subset of the hardware performance events;

wherein a profiling scope is specified by inputting the selected targets and the profiling is configured to begin upon execution of the target application or on demand by a user or an external process at any selected time during the execution of the target application, the selected targets including interested hardware performance events and interested application functions;

wherein the overhead budget is specified by a target overhead limit;

wherein the profiling ends after a specified time interval or upon termination of the target application;

wherein the application dynamic tracing comprises a function tracing for running the target application processes and threads through the probe points of the application instrumentation;

wherein the tracing function generates an index to a shared data table using a process or thread identification and a function identification; and

wherein the tracing function, if the probe point is for a beginning of the application function, uses available hardware performance counters to read current values of selected hardware performance events, and stores those values, and wherein the tracing function, if the probe point is for an ending of the application function, uses available hardware performance counters to read current values of selected hardware performance events, subtracting them by corresponding beginning values stored earlier for the same function of the same thread, and updating an event value attribute for each selected hardware event with a calculated value.

2. The system of claim 1 , wherein the application dynamic tracing comprises a profiling coordination for running a daemon process independent of the target application process.

3. The system of claim 2 , wherein the profiling coordination comprises taking an external input and initializing a shared control data structure and a shared data table.

4. The system of claim 3 , wherein the profiling coordination comprises, based on a logging frequency setting in the shared control data structure and a shared data table.

5. The system of claim 3 , wherein the profiling coordination comprises, based on an allocation frequency setting in the shared control data structure, a daemon process periodically resetting a profiling quota for each active function in the shared data table enabling periodic updating of overhead budget allocation.

6. The system of claim 1 , wherein the function tracing profiling coordination comprises taking an external input and initializing a shared control data structure and a shared data table.

7. The system of claim 1 , wherein the function tracing comprises running the tracing function in a probe point, including that when a target application runs into an enabled probe point in an application function, the target application jumps into the tracing function.

8. A computer implemented method for performance profiling to analyze application performance, the method comprising the steps of:

i) inserting probe points into a target application program so that at run-time performance profiling can be done by enabling those probe points;

ii) profiling the target application performance during its execution with selected targets and overhead budget; and

iii) analyzing the application performance data output by the application dynamic tracing;

wherein a profiling scope is specified by inputting the selected targets, the selected targets including interested hardware performance events and interested application functions;

wherein the overhead budget is specified by a target overhead limit;

wherein the profiling is configured to begin upon execution of the target application or on demand by a user or an external process at any selected time during the execution of the target application, and the profiling ends after a specified time interval or upon termination of the target application;

wherein steps i)-iii) cooperatively provide a platform for selectively enabling and disabling dynamic function-level hardware performance profiling of hardware performance events and association of the hardware performance events with function calls for application performance analysis at a plurality of times on any subset of application functions and any subset of the hardware performance events;

wherein step ii) comprises a function tracing for running the target application processes and threads through the probe points of the application instrumentation;

wherein the tracing function generates an index to a shared data table using a process or thread identification and a function identification; and

wherein the tracing function, if the probe point is for a beginning of the application function, uses available hardware performance counters to read current values of selected hardware performance events, and stores those values, and wherein the tracing function, if the probe point is for an ending of the application function, uses available hardware performance counters to read current values of selected hardware performance events, subtracting them by corresponding beginning values stored earlier for the same function of the same thread, and updating an event value attribute for each selected hardware event with a calculated value.

9. The method of claim 8 , wherein step ii) comprises a profiling coordination for running a daemon process independent of the target application process.

10. The method of claim 9 , wherein the profiling coordination comprise taking an external input and initializing a shared control data structure and a shared data table.

11. The method of claim 10 , wherein the profiling coordination comprises, based on a logging frequency setting in the shared control data, a daemon process periodically logs the shared data table content onto a performance file.

12. The method of claim 10 , wherein the profiling coordination comprises, based on an allocation frequency setting in the shared control data structure, a daemon process periodically resetting a profiling quota for each active function in the shared data table enabling periodic updating of overhead budget allocation.

13. The method of claim 8 , wherein the function tracing comprises running the racing function in a probe point, including that when a target application runs into an enabled probe point in an application function, the target application jumps into the tracing function.

14. The method of claim 8 , wherein the function tracing comprises running the racing function in a probe point, including that when a target application runs into an enabled probe point in an application function, the target application jumps into the tracing function.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 21, 2018
From: NEC LABORATORIES AMERICA, INC.
To: NEC CORPORATION
Reel/Frame 046818/0589 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 12, 2014
From: ZHANG, HUI; ARORA, NIPUN; RHEE, JUNGHWAN; MA, KAI; JIANG, GUOFEI
To: NEC LABORATORIES AMERICA, INC.
Reel/Frame 032869/0356 →
Continuity (2)
Provisional Application 61810811 · Apr 11, 2013
Related Publication 20140310561A1 · Oct 16, 2014