IP Library Granted Patent US 10,365,903
Granted Patent B2
US 10,365,903 · App. 15/701,296 · Granted Jul 30, 2019

Framework for user-directed profile-driven optimizations

Inventors: Teresa Louise Johnson (Los Gatos, CA); Xinliang David Li (Palo Alto, CA)
Assignee: Google LLC
G06F8/443G06F8/4434G06F8/4441
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,365,903
App. No.
15/701,296
Granted
Jul 30, 2019
Kind
B2
Abstract

A method for using profiling to obtain application-specific, preferred parameter values for an application is disclosed. First, a parameter for which to obtain an application-specific value is identified. Code is then augmented for application-specific profiling of the parameter. The parameter is profiled and profile data is collected. The profile data is then analyzed to determine the application's preferred parameter value for the profile parameter.

Claims (45)

1. A method for using profiling to determine application-specific values for an application, the method comprising:

profiling, by a computer, one or more application-specific parameters for which to determine at least one application-specific value and collecting profile data by performing the operations of:

generating, by the computer, an instrumentation binary from an instrumentation build, the instrumentation binary containing at least one user-defined callback routine registered by the user in a profile initialization function;

executing, by the computer, a training run with one or more representative workloads using the instrumentation binary, the execution invoking the at least one user-defined callback routine to record the at least one application-specific value for the application in the collected profile data, wherein recording the at least one application-specific value includes averaging the one or more profiled application-specific parameters and recording the average of the one or more profiled application-specific parameters as the at least one application-specific value;

analyzing, by the computer, the collected profile data using a set of standard value profile transformations; and

generating, by the computer, a feedback-directed optimization (FDO) build using the collected profile data, the FDO build utilizing the at least one application-specific value for the profiled application-specific parameter recorded in the collected profile data by the invoked callback routine.

2. The method of claim 1 further comprising generating an instrumentation binary containing at least one user-defined analysis callback routine registered by the user in a profile initialization function, wherein the profile initialization function is specified using a special purpose declaration attribute.

3. The method of claim 1 wherein the profiling is per-class global value profiling.

4. The method of claim 1 wherein the profiling is per-site value profiling.

5. The method of claim 1 wherein the profiling is per-site object value profiling.

6. A method for per-class global parameter value profiling, the method comprising:

initializing, by a computer, within a user-defined profile instrumentation initialization routine, a counter to profile one or more parameter values and registering a profile handler function as a user-defined analysis call back routine;

generating, by the computer, an instrumentation binary from an instrumentation build, the instrumentation binary containing at least one user-defined analysis callback routine registered by the user in a profile initialization function;

executing, by the computer, a training run with one or more representative workloads using the instrumentation binary, the execution of the training run performing the operations of:

running, by the computer, a profile update function for updating the profiled parameter value in a code location where the counter's value should be updated; and

executing, by the computer, the profile handler function, registered as the user-defined analysis call back routine, to record a preferred parameter value of the profiled parameter values, wherein recording the preferred parameter value including averaging the one or more profiled parameter values and recording the average of the one or more parameter values as the preferred parameter value; and

generating a feedback-directed optimization (FDO) build using profile data collected during execution of the training run.

7. The method of claim 6 wherein the counter is allocated to one entry in a static counter array.

8. The method of claim 7 wherein the counter is allocated in the static counter array by using a compiler extension.

9. The method of claim 6 wherein profile counter address is specified by using a special purpose declaration attribute.

10. The method of claim 6 further comprising generating an instrumentation binary containing at least one user-defined analysis callback routine registered by the user in a profile initialization function, wherein the profile initialization function is specified using a special purpose declaration attribute.

11. The method of claim 6 wherein the profile handler function is registered using a GNU compiler collection (GCC) interface.

12. The method of claim 6 wherein the preferred parameter value of the profiled parameter values is recorded using a GNU compiler collection (GCC) interface.

13. A non-transitory computer-readable medium storing instructions, that when executed by one or more processors, cause the one or more processors to:

profile one or more application-specific parameters for which to determine at least one application-specific value and collecting profile data by performing the operations of:

generate an instrumentation binary from an instrumentation build, the instrumentation binary containing at least one user-defined callback routine registered by the user in a profile initialization function;

execute a training run with one or more representative workloads using the instrumentation binary, the execution invoking the at least one user-defined callback routine to record the at least one application-specific value for the application in the collected profile data, wherein recording the at least one application-specific value includes averaging the one or more profiled application-specific parameters and recording the average of the one or more profiled application-specific parameters as the at least one application-specific value;

analyze the collected profile data using a set of standard value profile transformations; and

generate a feedback-directed optimization (FDO) build using the collected profile data, the FDO build utilizing the at least one application-specific value for the profiled application-specific parameter recorded in the collected profile data by the invoked callback routine.

14. The non-transitory computer-readable medium of claim 13 , wherein the profiling is per-class global value profiling.

15. The non-transitory computer-readable medium of claim 13 , wherein the profiling is per-site value profiling.

16. The non-transitory computer-readable medium of claim 13 , wherein the profiling is per-site object value profiling.

17. The non-transitory computer-readable medium of claim 13 , wherein the one or more processors are further configured to generate an instrumentation binary containing at least one user-defined analysis callback routine registered by the user in a profile initialization function, wherein the profile initialization function is specified using a special purpose declaration attribute.

18. A non-transitory computer-readable medium storing instructions, that when executed by one or more processors, cause the one or more processors to:

initialize within a user-defined profile instrumentation initialization routine, a counter to profile one or more parameter values and registering a profile handler function as a user-defined analysis call back routine;

generate an instrumentation binary from an instrumentation build, the instrumentation binary containing at least one user-defined analysis callback routine registered by the user in a profile initialization function;

execute a training run with one or more representative workloads using the instrumentation binary, the execution of the training run performing the operations of:

run a profile update function for updating the profiled parameter value in a code location where the counter's value should be updated; and

execute the profile handler function, registered as the user-defined analysis call back routine, to record a preferred parameter value of the profiled parameter values, wherein recording the preferred parameter value including averaging the one or more profiled parameter values and recording the average of the one or more parameter values as the preferred parameter value; and

generate a feedback-directed optimization (FDO) build using profile data collected during execution of the training run.

19. The non-transitory computer-readable medium of claim 17 , wherein the counter is allocated to one entry in a static counter array.

20. The non-transitory computer-readable medium of claim 18 , wherein the counter is allocated in the static counter array by using a compiler extension.

21. The non-transitory computer-readable medium of claim 17 , wherein the one or more processors are further configured to generate an instrumentation binary containing at least one user-defined analysis callback routine registered by the user in a profile initialization function, wherein the profile initialization function is specified using a special purpose declaration attribute.

22. The non-transitory computer-readable medium of claim 17 , wherein the profile handler function is registered using a GNU compiler collection (GCC) interface.

23. The non-transitory computer-readable medium of claim 17 , wherein the preferred parameter value of the profiled parameter values is recorded using a GNU compiler collection (GCC) interface.

Assignments (2)
CHANGE OF NAME Recorded Oct 20, 2017
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 044567/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 12, 2017
From: JOHNSON, TERESA LOUISE; LI, XINLIANG DAVID
To: GOOGLE INC.
Reel/Frame 043564/0946 →
Continuity (2)
Continuation 13855557 · Apr 2, 2013
Related Publication 20180107464A1 · Apr 19, 2018