System for monitoring compute system performance
First Claim
1. A computer implemented method for monitoring the performance of a computer system while the computer system is executing a program, the program in the form of a machine dependent executable instructions, comprising the steps of:
- translating the machine dependent executable instructions into a program module in the form of an intermediate language, the intermediate language having instructions independent of a particular computer system hardware architecture;
partitioning the program module into a plurality of basic program components;
tracing an execution flow through the plurality of basic program components using navigational routines;
while tracing the execution flow through the plurality of basic program components, inserting a call instruction in a specific program component, the call instruction to transfer execution control to a user analysis routine when the specific program component is executed in the computer system;
generating an instrumented machine dependent executable code from the modified plurality of basic program components after inserting the call instruction;
executing the instrumented machine dependent executable code in the computer system; and
collecting performance data of the computer system by the user analysis routine.
3 Assignments
0 Petitions
Accused Products
Abstract
A program for monitoring computer system performance includes a collection of source code modules in the form of a high level language. Each of the source code modules is compiled into a corresponding object code module. The object code modules are assembled into machine dependent code. The machine code is translated into a program module in the form of a machine independent register translation language. The program module is partitioned into basic program components. The basic program components include procedures, basic blocks within procedures, and instructions within basic blocks. Fundamental instrumentation routines identify, locate, and modify specific program components to be monitored. The modified basic program components are converted to an instrumented machine executable code to be executed in the computer system so that performance dam can be collected while the program is executing in the computer.
-
Citations
11 Claims
-
1. A computer implemented method for monitoring the performance of a computer system while the computer system is executing a program, the program in the form of a machine dependent executable instructions, comprising the steps of:
-
translating the machine dependent executable instructions into a program module in the form of an intermediate language, the intermediate language having instructions independent of a particular computer system hardware architecture; partitioning the program module into a plurality of basic program components; tracing an execution flow through the plurality of basic program components using navigational routines; while tracing the execution flow through the plurality of basic program components, inserting a call instruction in a specific program component, the call instruction to transfer execution control to a user analysis routine when the specific program component is executed in the computer system; generating an instrumented machine dependent executable code from the modified plurality of basic program components after inserting the call instruction; executing the instrumented machine dependent executable code in the computer system; and collecting performance data of the computer system by the user analysis routine. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. A system for monitoring the performance of a computer system while the computer system is executing a program, the program including a plurality of source code modules in the form of a high level language, comprising the means for:
-
a compiler for compiling the plurality of source code module into a plurality of object code modules; a linker for producing machine dependent executable code from the plurality of object code modules; means for translating the plurality of object code modules into a program module in the form of an intermediate language, the intermediate language having instructions independent of a particular computer system hardware architectures; means for partitioning the program module into a plurality of basic program components; navigational routines for tracing the execution flow through the plurality of basic program components prior to execution to locate a specific program component; an instrumentor to insert a call instruction in the specific program component, the call instruction to transfer execution;
control to a user analysis routine when the specific program component is executed in the computer;a code generator for generating instrumented machine executable code from the modified plurality of basic program components; a processor for executing the instrumented machine executable code; and the user analysis routine collecting performance data while the processor is executing the instrumented machine executable code.
-
-
8. A computer implemented method for collecting performance data of a computer system, the performance data including data states and execution states of the computer system, comprising:
-
translating a machine dependent executable code produced by a code generator into machine independent code; instrumenting the machine independent code to insert a call instruction in the machine independent code, the call instruction to reference a user analysis routine; generating an instrumented machine dependent executable code from the machine independent code including the call instruction; executing the instrumented machine dependent executable code in a processor of the computer system; and collecting the performance data of the computer system by the user analysis routine while executing the instrumented machine dependent executable code. - View Dependent Claims (9, 10, 11)
-
Specification