Adaptive instrumentation through dynamic recompilation
First Claim
1. A computer system comprising:
- a processor;
a compiler; and
a profiler, wherein the profiler is configured to;
insert one or more instrumentation instructions in an application to form an instrumented application;
(i) execute the instrumented application;
(ii) detect a condition during execution of the instrumented application wherein execution of one or more instrumented portions of code in the instrumented application are exhibiting excessive performance latency; and
(iii) in response to detecting said condition;
identify the one or more instrumented portions of code within the application that corresponds to the detected condition; and
dynamically instrument the identified one or more instrumented portions of code during runtime by;
inserting one or more additional instrumentation instructions in the identified one or more instrumented portions of code; and
conveying a request for recompilation of the identified one or more instrumented portions of code with the additional one or more instrumentation instructions;
wherein the profiler is configured to repeat performance of (i), (ii), and (iii) as needed to identify a particular portion of the identified one or more instrumented portions of code which are contributing to the excessive performance latency.
9 Assignments
0 Petitions
Accused Products
Abstract
A system and method for instrumenting program instructions. A processing system includes a compiler and a profiler. The profiler is configured to instrument an application by inserting one or more instrumentation instructions in the application. During execution of the application, execution is monitored and a particular condition is detected. Responsive to the condition, a portion of the code which corresponds to the detected condition is identified. A request is conveyed for recompilation of code which corresponds to code. Prior to recompilation of the code, the profiler instruments the portion of code. Execution and monitoring of the execution continue, and instrumentation/recompilation may be repeated. Initially, relatively little of the application code may be instrumented. As execution and monitoring continues, more and more of the application code may be dynamically instrumented during execution.
-
Citations
20 Claims
-
1. A computer system comprising:
-
a processor; a compiler; and a profiler, wherein the profiler is configured to; insert one or more instrumentation instructions in an application to form an instrumented application; (i) execute the instrumented application; (ii) detect a condition during execution of the instrumented application wherein execution of one or more instrumented portions of code in the instrumented application are exhibiting excessive performance latency; and (iii) in response to detecting said condition; identify the one or more instrumented portions of code within the application that corresponds to the detected condition; and dynamically instrument the identified one or more instrumented portions of code during runtime by; inserting one or more additional instrumentation instructions in the identified one or more instrumented portions of code; and conveying a request for recompilation of the identified one or more instrumented portions of code with the additional one or more instrumentation instructions; wherein the profiler is configured to repeat performance of (i), (ii), and (iii) as needed to identify a particular portion of the identified one or more instrumented portions of code which are contributing to the excessive performance latency. - View Dependent Claims (2, 3, 4, 5, 6, 19, 20)
-
-
7. A method for dynamically instrumenting application code, the method comprising:
-
inserting one or more instrumentation instructions in an application to form an instrumented application; (i) executing the instrumented application; (ii) detecting a condition during execution of the instrumented application wherein execution one or more instrumented portions of code in the instrumented application are exhibiting excessive performance latency; and (iii) in response to detecting said condition; identifying the one or more instrumented portions of code within the application that that correspond to the detected condition; dynamically instrumenting the identified one or more instrumented portions of code during runtime by; inserting one or more additional instrumentation instructions in the identified one or more instrumented portions of code; and conveying a request for recompilation of the identified one or more instrumented portions of code with the additional one or more instrumentation instructions; repeating performance of (i), (ii), and (iii) as needed to identify a particular portion of the instrumented portion of the identified one or more instrumented portions of code which is contributing to the excessive performance latency. - View Dependent Claims (8, 9, 10, 11, 12)
-
-
13. A computer readable storage medium comprising program instructions, wherein when executed the program instructions are operable to:
-
insert one or more instrumentation instructions in an application to form an instrumented application; (i) execute the instrumented application; (ii) detect a condition during execution of the instrumented application wherein execution of one or more instrumented portions of code in the instrumented application are exhibiting excessive performance latency; and (iii) in response to detecting said condition; identify the one or more instrumented portions of code within the application that corresponds to the detected condition; and dynamically instrument the identified one or more instrumented portions of code during runtime by; inserting one or more additional instrumentation instructions in the identified one or more instrumented portions of code; and conveying a request for recompilation of the identified one or more instrumented portions of code with the additional one or more instrumentation instructions; wherein the profiler is configured to repeat performance of (i), (ii), and (iii) as needed to identify a particular portion of the identified one or more instrumented portions of code which are contributing to the excessive performance latency. - View Dependent Claims (14, 15, 16, 17, 18)
-
Specification