Post Link Analysis and Optimization
Performance analysis and tuning are becoming increasingly important tasks as underlying hardware complexity increases. Over the years, the PAOT group has developed leading-edge technologies for performance analysis and optimization that enable better utilization of computer system architectural resources. The technologies are embodied in several contexts such as automatic performance optimization and tuning, binary instrumentation, and performance analysis via visualization. Our engagement with customers has resulted in significant performance improvements for many important enterprise applications and systems as well as in enhanced benchmarking measurements such as
SPEC CPU and TPC-C.
- Feedback Directed Program Restructuring (FDPR)
FDPR is a feedback-based post-link optimization tool. It optimizes the executable image of a program by collecting a program behavior profile while the program is used for a typical workload, and then creating a new version of the program that is optimized for that workload. The new program generated by FDPR typically runs faster and uses less real memory. FDPR performs global optimizations at the level of the entire executable. Since the executable to be optimized by FDPR is not re-linked, the compiler and linker conventions do not need to be preserved, thus allowing aggressive optimizations that are not usually available to optimizing compilers. The tool is suitable for very large programs and DLLs. The major optimizations of FDPR include global code and data reordering, function inlining, loop unrolling, inter-procedural register re-allocation, improved instruction scheduling, and data prefetching.
FDPR is currently available on the following platforms:
- AIX/POWER - a part of the operating system since AIX Version 5
- Linux for POWER - available from the IBM alphaWorks site
- z/OS and z/Linux - IBM internal prototype
- Linux/x86 - IBM internal prototype
- Binary Prober (BProber)
BProber is a post-link binary instrumentation technology for executable files running on the AIX and Linux for POWER platforms. The tool supports built-in code coverage and profiling capabilities, and enables instrumentation of a given executable file with user-supplied code. Code coverage data can be further imported to FoCuS for in-depth, GUI-based analysis. Profiling information can be loaded into Code Analyzer for performance analysis.
- Expert System for Tuning Optimizations (ESTO)
ESTO automates the process of identifying and tuning the optimal set of options to be used for an application with a large number of options and values. A typical use is to tune the optimization options used by a compiler for maximum performance of a specific application. The set of possible optimizations is usually very large, in the order of tens. In addition, some of the options require an additional parameter, which makes the selection process even more complex. As a result of this complexity, users tend to use default combination options, such as -O3. These combinations select a subset of the options that have shown a high performance for a large number of applications. Thus, in general, these options may not be the optimal set for a specific application executing its representative workload. ESTO is based on genetic algorithms.
- Code Analyzer
Code Analyzer is an Eclipse-based plug-in for viewing binary code in order to find performance problems.
To help the user focus on frequently executed areas in the code, Code Analyzer is able to read FDPR profile information and sample information (in XML format) generated by oprofile or tprof and to highlight the frequently executed areas. Code Analyzer can instrument executables and shared libraries to collect accurate frequency statistics. Code Analyzer displays various kinds of information for a given application such as assembly instructions, basic blocks, functions, CSECT modules, control flow graphs, hot loops, call graphs, and annotated code with performance comments. In addition, Code Analyzer can map binary code back to the corresponding source code, when source files are available. Code Analyzer is part of the Visual Performance Analyzer (VPA) tool suite, which includes additional performance analysis plug-ins.