Method and apparatus for accurate profiling of computer programs
Patent 6934935 Issued on August 23, 2005. Estimated Expiration Date: April 25, 2020. Estimated Expiration Date is calculated based on simple USPTO term provisions. It does not account for terminal disclaimers, term adjustments, failure to pay maintenance fees, or other factors which might affect the term of a patent.
717/127, Monitoring program execution717/150, Loop compiling717/151, Optimization717/156, Using flow graph717/158, Including instrumentation and profiling717/130, Including instrumentation and profiling718/100, TASK MANAGEMENT OR CONTROL718/102Process scheduling
An object code expansion profiler equips a program for execution profiling by preprocessing the object code files of the program so as to add profiling monitoring code to the beginning of all or substantially all functions. The preprocessing includes, for each function, the steps of grouping the function's instructions into basic blocks, counting the number of cycles required to execute the instructions of the basic block, and inserting special monitoring code with the basic block. The special monitoring code is executed each time the basic block is executed, and updates the profiling information to reflect the number of cycles required to execute the basic block. Special handling is provided for profiling calls to the Operating System (OS). The resultant profiling information is converted into a call graph image most useful for human users. For each arc in the graph connecting a calling-function/parent-node to a called-function/child node, the displayed arc image has a width logarithmically proportional to the self+descendants time for the called function.
Other References
“Effective Simulation of Multiprogramming”, W.P. Dawkins et al., ACM SIGMETRICS Performance Evaluation Review, Proceedings of the conference on Measurement and modeling of computer systems, Apr. 1990, vol. 18 Issue 1.
“Profile Guided Code Positioning”, Karl Pettis and Robert C. Hansen, Hewlett-Packard Company, California Language Laboratory, Proceedings of the ACM SIGPLAN'90 Conference on Programming Language Design and implementation, Jun. 1990.
Graham et al., GPROF; “A Call Graph Execution Profiler,” p. 120-126 (1-16) 1982.
Hilfingen. “A Memory Allocation Profiler for C and Lisp Programs,” p. 223-47, 1988.
Ponder et al., “Inaccuracies in Program Profilers,” p. 459-467, 1987.
Graham et al., “An Execution Profiler for Modular Programs,” p. 671-685, Mar. 10, 1983.
Smith, Michael D., “Tracing With Pixie,” Apr. 4, 1991, Stanford University Technical Report No. CSL-TR-91-497, p. 1-29.
“Pixie”, UNIX man p. 1-2.
Larus, James R. et al., “Re-Writing Executable Files to Measure Program Behavior,” Mar. 25, 1992, Univ. of Wisconsin, Computer Science Dept.
Ball, Thomas, “Optimally Profiling and Tracing Programs,” Sep. 6, 1991, Univ. of Wisconsin, Computer Science Department.